Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: PSJOCDI

PSJOCDI.m

Go to the documentation of this file.
  1. PSJOCDI ;BIR/MV - DISPLAY DRUG INTERACTION ORDER CHECKS ;6 Jun 07 / 3:37 PM
  1. ;;5.0;INPATIENT MEDICATIONS;**181,260,252,257,281**;16 DEC 97;Build 113
  1. ;Reference to ^PSODRDU2 is supported by DBIA #2189
  1. ;Reference to ^PS(55 is supported by DBIA #2191
  1. ;
  1. DI ;
  1. NEW PSJDN,PSJDNM,PSJMON,PSJOCLST,PSJPON,PSJSEV,PSJHDR,PSJRDI,PSJ2,PSJONFLG,PSJCRTCL,PSJSORT,PSJGROUP,PSJCLINF,PSJDXOPT
  1. ;If interception occurred, display message to user
  1. ;
  1. ;Store VUID from Remote data in PSJRDI(PSJON)=VUID.
  1. D RDIVUID
  1. S PSJ2=0
  1. ;Loop through drug drug order checks output
  1. S PSJSEV="" F S PSJSEV=$O(^TMP($J,"PSJPRE","OUT","DRUGDRUG",PSJSEV)) Q:PSJSEV=""!($G(PSGORQF)) D
  1. . S PSJDNM="" F S PSJDNM=$O(^TMP($J,"PSJPRE","OUT","DRUGDRUG",PSJSEV,PSJDNM)) Q:PSJDNM=""!($G(PSGORQF)) D
  1. .. S PSJPON="" F S PSJPON=$O(^TMP($J,"PSJPRE","OUT","DRUGDRUG",PSJSEV,PSJDNM,PSJPON)) Q:PSJPON=""!($G(PSGORQF)) D
  1. ... S PSJCLINF="",PSJDXOPT=$S($G(PSJDGCK):"PROSPECTIVE",1:"PROFILE")
  1. ... S PSJCLINF="",PSJCLINF=$P($G(^TMP($J,"PSJPRE","IN",PSJDXOPT,PSJPON)),"^",7)
  1. ... F PSJDN=0:0 S PSJDN=$O(^TMP($J,"PSJPRE","OUT","DRUGDRUG",PSJSEV,PSJDNM,PSJPON,PSJDN)) Q:'PSJDN!($G(PSGORQF)) D SORTORD
  1. I $O(PSJOCLST(""))="" Q
  1. D CRITICAL
  1. D DSPLOC
  1. I $D(^TMP($J,"PSJPRE","OUT","DRUGDRUG","S")) D
  1. . W !,"*** REFER TO MONOGRAPH FOR SIGNIFICANT INTERACTION CLINICAL EFFECTS",!
  1. D LINE^PSJMISC("=",81)
  1. W !
  1. D MON^PSJMON(.PSJMON)
  1. D:$G(PSJONFLG)&('$D(PSJDGCK)) INTERV
  1. Q
  1. DSPLOC ;Display drug drug interaction - sorted by severity, prospective drug (50,.01), profile drug (VAgen name), package, seq#
  1. NEW PSJDN,PSJDNV,PSJPON,PSJP,PSJX,X,PSJXSEV,PSJXNM,PSJXNM1,PSJXSORT,PSJXDN,PSJSORT,PSJPSPEC,PSJPROFL,PSJ2,PSJSEV,PSJHDRS,PSJDSPON,PSJCLINF
  1. ;
  1. K PSJPAUSE
  1. I '$G(PSJDRGIF) D PAUSE^PSJMISC(1,0) W @IOF D LINE^PSJMISC("=",81) S PSJDEFLG=1
  1. ;Get the last drug in the sort list so a '=' line is printed instead of '.'
  1. S PSJLINE=".",PSJHDRS=""
  1. S PSJXSEV=$O(PSJOCLST(""),-1)
  1. S PSJXNM=$O(PSJOCLST(PSJXSEV,""),-1)
  1. S PSJXNM1=$O(PSJOCLST(PSJXSEV,PSJXNM,""),-1)
  1. S PSJXSORT=$O(PSJOCLST(PSJXSEV,PSJXNM,PSJXNM1,""),-1)
  1. S PSJXDN=$O(PSJOCLST(PSJXSEV,PSJXNM,PSJXNM1,PSJXSORT,""),-1)
  1. ;
  1. ;S PSJSEV="" F S PSJSEV=$O(PSJOCLST(PSJSEV)) Q:PSJSEV="" D
  1. ;Displaying Critical orders
  1. S PSJSEV="C"
  1. ;I $D(PSJCRTCL) D LINE^PSJMISC("=",81)
  1. F PSJSORT=0:0 S PSJSORT=$O(PSJCRTCL(PSJSORT)) Q:'PSJSORT D
  1. . F PSJGROUP=0:0 S PSJGROUP=$O(PSJCRTCL(PSJSORT,PSJGROUP)) Q:'PSJGROUP D
  1. .. S X=$G(PSJCRTCL(PSJSORT,PSJGROUP))
  1. .. D DSPCRTCL($P(X,U),$P(X,U,2))
  1. ;Displaying Significant orders
  1. K PSJDSPON
  1. S PSJSEV="S"
  1. S PSJPSPEC="" F S PSJPSPEC=$O(PSJOCLST(PSJSEV,PSJPSPEC)) Q:PSJPSPEC="" D
  1. . D LINE^PSJMISC("=",81)
  1. . F PSJSORT=0:0 S PSJSORT=$O(PSJOCLST(PSJSEV,PSJPSPEC,PSJSORT)) Q:'PSJSORT D
  1. .. F PSJ2=0:0 S PSJ2=$O(PSJOCLST(PSJSEV,PSJPSPEC,PSJSORT,PSJ2)) Q:'PSJ2 D
  1. ... S PSJDNV=PSJOCLST(PSJSEV,PSJPSPEC,PSJSORT,PSJ2)
  1. ... D DISPON
  1. . W !
  1. Q
  1. DSPCRTCL(PSJPSPEC,PSJPROFL) ;Display Critical orders
  1. NEW PSJSORT,PSJ2
  1. Q:$G(PSJPSPEC)=""
  1. Q:$G(PSJPROFL)=""
  1. F PSJSORT=0:0 S PSJSORT=$O(PSJOCLST("C",PSJPSPEC,PSJPROFL,PSJSORT)) Q:'PSJSORT D
  1. . F PSJ2=0:0 S PSJ2=$O(PSJOCLST("C",PSJPSPEC,PSJPROFL,PSJSORT,PSJ2)) Q:'PSJ2 D
  1. .. S PSJDNV=PSJOCLST("C",PSJPSPEC,PSJPROFL,PSJSORT,PSJ2)
  1. .. D DISPON
  1. Q
  1. DISPON ; Display orders & clin effects if applied.
  1. I ($Y+8)>IOSL D PAUSE^PSJMISC(1,0) W @IOF
  1. F X=1:1:11 S PSJP(X)=$P(PSJDNV,U,X)
  1. S PSJCLINF=$P(PSJDNV,U,12)
  1. I ($G(PSJHDR)'=$P(PSJDNV,U,3))!(PSJHDRS'=PSJSEV) S PSJHDR=$P(PSJDNV,U,3),PSJHDRS=PSJSEV K PSJDSPON D HDR(PSJHDR)
  1. I ($Y+8)>IOSL D PAUSE^PSJMISC(1,0) W @IOF
  1. I PSJSORT=10 D
  1. . S (PSJDRGIF,PSJONFLG)=1
  1. . I $P(PSJCLINF,";",2) D DISPCLN^PSJCLNOC(.PSJP,PSJCLINF) Q
  1. . D DSPDRG(PSJP(4),$P(PSJDNV,U,2),PSJCLINF)
  1. I ($Y+6)>IOSL D PAUSE^PSJMISC(1,0) W @IOF
  1. I PSJSORT>10 S (PSJDRGIF,PSJONFLG)=1 D ;PSJDRGIF - drug interaction displayed
  1. . I $D(PSJDSPON($P(PSJP(4),";",2))) Q
  1. . S PSJDSPON($P(PSJP(4),";",2))=""
  1. . I $P($P(PSJDNV,U,12),";",2) D DISPCLN^PSJCLNOC(.PSJP,PSJCLINF) Q
  1. . D EN^PSODRDU2(DFN,PSJP(4),"PSJPRE")
  1. I ($Y+6)>IOSL D PAUSE^PSJMISC(1,0) W @IOF
  1. DISPON2 ;
  1. I PSJSEV=PSJXSEV,(PSJPSPEC=PSJXNM),(PSJSORT=PSJXSORT),(PSJ2=PSJXDN) S PSJLINE="="
  1. I PSJSEV="C",$$DSPLCLIN(PSJ2) D CLIN(PSJP(5),PSJP(2),PSJP(4),PSJP(1),PSJLINE)
  1. I ($Y+6)>IOSL D PAUSE^PSJMISC() W @IOF
  1. Q
  1. SORTORD ;Sort drug drug output to display in order of: Inpatient, Active Rx, Remote Rx, Pending Rx, Non_VA
  1. NEW PDJDNV,PSJX
  1. S PSJDNV=$G(^TMP($J,"PSJPRE","OUT","DRUGDRUG",PSJSEV,PSJDNM,PSJPON,PSJDN))
  1. I $E(PSJPON,1,1)'="I" D
  1. . S PSJX=$E($P(PSJPON,";"),1,1)
  1. . D OCLST($S(PSJX["C":10,PSJX="O":20,PSJX="R":30,PSJX="P":40,PSJX="N":50,1:""),PSJCLINF)
  1. I $E(PSJPON,1,1)="I" D OCLST(10,PSJCLINF)
  1. Q
  1. OCLST(PSJ1,PSJCLINF) ;Sort orders into array to display later
  1. ;PSJOCLST(PSJSEV("C",PSJPSPEC,PSJPROFL,PSJ1-package,PSJ2)=P1...P6 (P1=SEQ NO, P2=Drug Name(Profile), P3=Drug Name(Prospective)
  1. ; (P4=Pharm order# ,P5=Severity, P6=P3 IEN)
  1. ;PSJOCLST(PSJSEV("S",PSJPSPEC,PSJ1-package,PSJ2)=P1...P12 (P1=SEQ NO, P2=Drug Name(Profile), P3=Drug Name(Prospective), P12=PSJCLINF
  1. ; (P4=Pharm order# ,P5=Severity, P6=P3 IEN)
  1. ;PSJSEV: Sort first by severity
  1. ;PSJ1: 10=PSJ Order
  1. ; 20=PSO Active Rx
  1. ; 30=Remote Rx
  1. ; 40=PSO pending
  1. ; 50=Non-VA
  1. ;PSJ2: A counter
  1. NEW PSJDNV,PSJMONTI,PSJMONV,PSJVAGEN,PSJON1,PSJON2,PSJONFG,PSJPSPEC,PSJPROFL
  1. Q:'$G(PSJ1)
  1. S PSJ2=$G(PSJ2)+1
  1. S PSJDNV=$G(^TMP($J,"PSJPRE","OUT","DRUGDRUG",PSJSEV,PSJDNM,PSJPON,PSJDN))
  1. S PSJPSPEC=$P(PSJDNV,U,4) S:PSJPSPEC="" PSJPSPEC="UNKNOWN DRUG NAME"
  1. ; Criticals are grouped by profile VAGEN name and then package type
  1. I PSJSEV="C" D
  1. . S PSJVAGEN=$$VAGEN^PSJMISC(+$P(PSJDNV,U,3)) I PSJVAGEN="" S PSJVAGEN=PSJDNM
  1. . S PSJOCLST(PSJSEV,PSJPSPEC,PSJVAGEN,PSJ1,PSJ2)=PSJDN_U_$G(PSJDNM)_U_$P(PSJDNV,U,4)_U_PSJPON_U_PSJSEV_U_$P(PSJDNV,U,2)_"^^^^^^"_PSJCLINF
  1. ; Significants are grouped by package type so Inpatient orders display first
  1. I PSJSEV="S" D
  1. . S PSJOCLST(PSJSEV,PSJPSPEC,PSJ1,PSJ2)=PSJDN_U_$G(PSJDNM)_U_$P(PSJDNV,U,4)_U_PSJPON_U_PSJSEV_U_$P(PSJDNV,U,2)_"^^^^^^"_PSJCLINF
  1. S PSJMONTI=$G(^TMP($J,"PSJPRE","OUT","DRUGDRUG",PSJSEV,PSJDNM,PSJPON,PSJDN,"PMON",3,0))
  1. S PSJMONTI=$P(PSJMONTI,"MONOGRAPH TITLE: ",2) Q:PSJMONTI=""
  1. S PSJVAGEN=$$VAGEN^PSJMISC(+$P(PSJDNV,U,3))
  1. I PSJVAGEN="",'+$P(PSJDNV,U,3) S PSJVAGEN=$$GENVUID^PSJMISC($G(PSJRDI(PSJPON)))
  1. Q:PSJVAGEN=""
  1. S PSJVAGEN=PSJVAGEN_"+"_$P(PSJDNV,U,4)
  1. S PSJMONV=$G(PSJMON(PSJVAGEN,PSJMONTI))
  1. I PSJMONTI]"" D
  1. . S $P(PSJMON(PSJVAGEN,PSJMONTI),U,1,7)=PSJDN_U_$G(PSJDNM)_U_+$P(PSJDNV,U,3)_U_$P(PSJDNV,U,4)_U_+$P(PSJDNV,U,2)_U_PSJPON_U_PSJSEV
  1. . S $P(PSJMON(PSJVAGEN,PSJMONTI),U,11)=PSJVAGEN
  1. I PSJMONV]"" D
  1. . I $P(PSJMONV,U,7)'=PSJSEV S $P(PSJMON(PSJVAGEN,PSJMONTI),U,9)=1
  1. . S PSJONFG=0
  1. . S PSJON1=$P($P(PSJMONV,U,6),";")
  1. . S PSJON2=$P(PSJPON,";")
  1. . I PSJON1="I",PSJON2'="I" S PSJONFG=1
  1. . I PSJON1'="I",PSJON2="I" S PSJONFG=1
  1. . I PSJONFG S $P(PSJMON(PSJVAGEN,PSJMONTI),U,10)=1
  1. K PSJON1,PSJON2,PSJONFG
  1. Q
  1. CLIN(PSJSEV,PSJDNM,PSJPON,PSJDN,PSJLINE) ;
  1. ;No longer need to display the clinical effect for Significant
  1. Q:PSJSEV="S"
  1. NEW PSJCLINV,PSJNDX,PSJX
  1. I $G(PSJLINE)="" S PSJLINE="."
  1. F PSJDNX=0:0 S PSJDNX=$O(^TMP($J,"PSJPRE","OUT","DRUGDRUG",PSJSEV,PSJDNM,PSJPON,PSJDNX)) Q:'PSJDNX D
  1. . S PSJCLINV=$G(^TMP($J,"PSJPRE","OUT","DRUGDRUG",PSJSEV,PSJDNM,PSJPON,PSJDNX,"CLIN"))
  1. . W !
  1. . S PSJX=$P(PSJCLINV,"CLINICAL EFFECTS: ",2) I ($Y+($L(PSJX)\65)+4)>IOSL D PAUSE^PSJMISC(1,0) W @IOF
  1. . D WRITE^PSJMISC(PSJX)
  1. W !
  1. I ($Y+8)>IOSL D PAUSE^PSJMISC(0,0) W @IOF
  1. Q
  1. INTERV ;Log intervention. Required for Critical.
  1. ;Critical interaction MUST log an intervention before continue with the order
  1. ;Only log one intervention for a prospective drug & log it for the higher severity
  1. NEW PSJSEV,PSJDD,PSJDN,PSJNDV,PSJTYPE,PSJINTVD,PSJPROFL
  1. K PSJDDSV,PSJINTVD
  1. ;Required intervention for each of the prospective drug with critical interactions
  1. F PSJSEV="C" Q:$G(PSGORQF) S PSJPSPEC="" F S PSJPSPEC=$O(PSJOCLST(PSJSEV,PSJPSPEC)) Q:PSJPSPEC="" D
  1. . S PSJPROFL="" F S PSJPROFL=$O(PSJOCLST(PSJSEV,PSJPSPEC,PSJPROFL)) Q:PSJPROFL="" D
  1. .. F PSJTYPE=0:0 S PSJTYPE=$O(PSJOCLST(PSJSEV,PSJPSPEC,PSJPROFL,PSJTYPE)) Q:'PSJTYPE D
  1. ... F PSJDN=0:0 S PSJDN=$O(PSJOCLST(PSJSEV,PSJPSPEC,PSJPROFL,PSJTYPE,PSJDN)) Q:'PSJDN Q:$G(PSGORQF) D
  1. .... S PSJNDV=$G(PSJOCLST(PSJSEV,PSJPSPEC,PSJPROFL,PSJTYPE,PSJDN)),PSJDD=$P(PSJNDV,U,6)
  1. .... ;I ($P($P(PSJNDV,U,4),";",1)="I"),('$D(PSJINTVD($P(PSJNDV,U,3)))) D
  1. .... I '$D(PSJINTVD($P(PSJNDV,U,3))) D
  1. ..... S (PSJINTVD($P(PSJNDV,U,3)))=""
  1. ..... D:'$D(PSJDGCK) RINTERV^PSJGMRA("CRITICAL DRUG INTERACTION",$P(PSJNDV,U,3))
  1. ;
  1. ; Optional intervention for each of the prospective drug(not the same as critical) with significant interactions
  1. F PSJSEV="S" Q:$G(PSGORQF) S PSJPSPEC="" F S PSJPSPEC=$O(PSJOCLST(PSJSEV,PSJPSPEC)) Q:PSJPSPEC="" D
  1. . F PSJTYPE=0:0 S PSJTYPE=$O(PSJOCLST(PSJSEV,PSJPSPEC,PSJTYPE)) Q:'PSJTYPE D
  1. .. F PSJDN=0:0 S PSJDN=$O(PSJOCLST(PSJSEV,PSJPSPEC,PSJTYPE,PSJDN)) Q:'PSJDN Q:$G(PSGORQF) D
  1. ... S PSJNDV=$G(PSJOCLST(PSJSEV,PSJPSPEC,PSJTYPE,PSJDN)),PSJDD=$P(PSJNDV,U,6)
  1. ... I '$D(PSJINTVD($P(PSJNDV,U,3))) D
  1. .... S (PSJINTVD($P(PSJNDV,U,3)))=""
  1. .... D:'$D(PSJDGCK) INTERV^PSJGMRA("SIGNIFICANT DRUG INTERACTION",$P(PSJNDV,U,3))
  1. Q
  1. HDR(PSJDNM) ;Display the intro text on drug interaction
  1. NEW PSJSTCK,PSJCNT SET PSJSTCK="",PSJCNT=0
  1. ;
  1. IF $G(PSJDGCK) FOR SET PSJCNT=$O(^TMP($J,"PSJPRE","IN","PROSPECTIVE",PSJCNT)) Q:PSJCNT=""!(PSJSTCK'="") D
  1. .IF PSJDNM=$P(^TMP($J,"PSJPRE","IN","PROSPECTIVE",PSJCNT),U,4) SET PSJSTCK=$$PSTAT(PSJCNT)
  1. IF $G(PSJSTCK)'="" D Q
  1. .W !,"This patient is receiving the following order(s) that have a "
  1. .W $S($G(PSJSEV)="C":"CRITICAL",$G(PSJSEV)="S":"SIGNIFICANT",1:"")_" Drug"
  1. .W !,"Interaction with "_$G(PSJDNM)_$G(PSJSTCK)_":",!
  1. IF '$G(PSJDGCK) D Q
  1. .W !,"This patient is receiving the following order(s) that have a "
  1. .W $S($G(PSJSEV)="C":"CRITICAL",$G(PSJSEV)="S":"SIGNIFICANT",1:"")_" Drug"
  1. .W !,"Interaction with "_$G(PSJDNM)_":",!
  1. Q
  1. PSTAT(PSJPONCK) ;**Display order status - CCR 5980
  1. NEW PSJONCK,PSJCNT,PSJIND,PSJCKOS,PSJCKST
  1. SET PSJCKOS="",PSJCKST="",PSJONCK=0,PSJCNT=0,PSJIND=""
  1. ;
  1. Q:'$G(PSJDGCK) PSJCKST
  1. ;
  1. IF $P(PSJPONCK,";",2)="" S PSJCKST=" (Prospective)" Q PSJCKST
  1. IF $P(PSJPONCK,";",1)="P" S PSJCKST=" (OP Pending)" Q PSJCKST
  1. IF $P(PSJPONCK,";",1)="O" D SET PSJCKST=" (Local Rx #"_$P(^PSRX($P(PSJPONCK,";",2),0),U,1)_" ("_PSJCKOS_"))" Q PSJCKST
  1. .IF $P(^PSRX($P(PSJPONCK,";",2),"STA"),U,1)=0 SET PSJCKOS="Active" Q
  1. .IF $P(^PSRX($P(PSJPONCK,";",2),"STA"),U,1)=1 SET PSJCKOS="Non-Verified" Q
  1. .IF $P(^PSRX($P(PSJPONCK,";",2),"STA"),U,1)=2 SET PSJCKOS="Refill" Q
  1. .IF $P(^PSRX($P(PSJPONCK,";",2),"STA"),U,1)=3 SET PSJCKOS="Hold" Q
  1. .IF $P(^PSRX($P(PSJPONCK,";",2),"STA"),U,1)=4 SET PSJCKOS="Drug Interactions" Q
  1. .IF $P(^PSRX($P(PSJPONCK,";",2),"STA"),U,1)=5 SET PSJCKOS="Suspended" Q
  1. .IF $P(^PSRX($P(PSJPONCK,";",2),"STA"),U,1)=10 SET PSJCKOS="Done" Q
  1. .IF $P(^PSRX($P(PSJPONCK,";",2),"STA"),U,1)=11 SET PSJCKOS="Expired" Q
  1. .IF $P(^PSRX($P(PSJPONCK,";",2),"STA"),U,1)=12 SET PSJCKOS="Discontinued" Q
  1. .IF $P(^PSRX($P(PSJPONCK,";",2),"STA"),U,1)=13 SET PSJCKOS="Deleted" Q
  1. .IF $P(^PSRX($P(PSJPONCK,";",2),"STA"),U,1)=14 SET PSJCKOS="Discontinued by provider" Q
  1. .IF $P(^PSRX($P(PSJPONCK,";",2),"STA"),U,1)=15 SET PSJCKOS="Discontinued (Edit)" Q
  1. .IF $P(^PSRX($P(PSJPONCK,";",2),"STA"),U,1)=16 SET PSJCKOS="Provider Hold" Q
  1. IF $P(PSJPONCK,";",1)="N" SET PSJCKST=" (Non-VA)" Q PSJCKST
  1. IF PSJCKST="" SET PSJCNT=$L($P(PSJPONCK,";",2)),PSJIND=$E($P(PSJPONCK,";",2),PSJCNT),PSJONCK=+$P(PSJPONCK,";",2)
  1. IF $G(PSJIND)="P" D Q PSJCKST
  1. .IF $P(^PS(53.1,PSJONCK,0),U,9)="A" SET PSJCKST=" (IP Active)" Q
  1. .IF $P(^PS(53.1,PSJONCK,0),U,9)="D" SET PSJCKST=" (IP Discontinued)" Q
  1. .IF $P(^PS(53.1,PSJONCK,0),U,9)="I" SET PSJCKST=" (IP Incomplete)" Q
  1. .IF $P(^PS(53.1,PSJONCK,0),U,9)="N" SET PSJCKST=" (IP Non-Verified)" Q
  1. .IF $P(^PS(53.1,PSJONCK,0),U,9)="U" SET PSJCKST=" (IP Unreleased)" Q
  1. .IF $P(^PS(53.1,PSJONCK,0),U,9)="P" SET PSJCKST=" (IP Pending)" Q
  1. IF $G(PSJIND)="U" D Q PSJCKST
  1. .IF $P(^PS(55,$G(DFN),5,PSJONCK,0),U,9)="A" SET PSJCKST=" (IP Active)" Q
  1. .IF $P(^PS(55,$G(DFN),5,PSJONCK,0),U,9)="D" SET PSJCKST=" (IP Discontinued)" Q
  1. .IF $P(^PS(55,$G(DFN),5,PSJONCK,0),U,9)="E" SET PSJCKST=" (IP Expired)" Q
  1. .IF $P(^PS(55,$G(DFN),5,PSJONCK,0),U,9)="H" SET PSJCKST=" (IP Hold)" Q
  1. .IF $P(^PS(55,$G(DFN),5,PSJONCK,0),U,9)="R" SET PSJCKST=" (IP Renewed)" Q
  1. .IF $P(^PS(55,$G(DFN),5,PSJONCK,0),U,9)="RE" SET PSJCKST=" (IP Reinstated)" Q
  1. .IF $P(^PS(55,$G(DFN),5,PSJONCK,0),U,9)="DE" SET PSJCKST=" (IP Discontinued (Edit))" Q
  1. .IF $P(^PS(55,$G(DFN),5,PSJONCK,0),U,9)="DR" SET PSJCKST=" (IP Discontinued (Renewal))" Q
  1. IF $G(PSJIND)="V" D Q PSJCKST
  1. .IF $P(^PS(55,$G(DFN),"IV",PSJONCK,0),U,17)="A" SET PSJCKST=" (IP Active)" Q
  1. .IF $P(^PS(55,$G(DFN),"IV",PSJONCK,0),U,17)="H" SET PSJCKST=" (IP Hold)" Q
  1. .IF $P(^PS(55,$G(DFN),"IV",PSJONCK,0),U,17)="R" SET PSJCKST=" (IP Renewed)" Q
  1. .IF $P(^PS(55,$G(DFN),"IV",PSJONCK,0),U,17)="D" SET PSJCKST=" (IP Discontinued)" Q
  1. .IF $P(^PS(55,$G(DFN),"IV",PSJONCK,0),U,17)="E" SET PSJCKST=" (IP Expired)" Q
  1. .IF $P(^PS(55,$G(DFN),"IV",PSJONCK,0),U,17)="P" SET PSJCKST=" (IP Purge)" Q
  1. .IF $P(^PS(55,$G(DFN),"IV",PSJONCK,0),U,17)="O" SET PSJCKST=" (IP On call)" Q
  1. .IF $P(^PS(55,$G(DFN),"IV",PSJONCK,0),U,17)="N" SET PSJCKST=" (IP Non-Verified)" Q
  1. Q PSJCKST
  1. ;
  1. DSPDRG(PSJPON,PSJDNM,PSJCLINF) ;Display order info or drug name from prospective. CCR 6454
  1. Q:$G(PSJPON)=""
  1. ;IF $G(PSJDGCK) NEW PSJSTCK SET PSJSTCK=$$PSTAT(PSJPON)
  1. ;IF $G(PSJDGCK),$G(PSJSTCK)'="" W !,?8,$G(PSJDNM)_$G(PSJSTCK),! Q
  1. I $P(PSJPON,";",3)="PROSPECTIVE" W !?8,$G(PSJDNM)_" (Prospective)",! Q
  1. I $D(PSJDSPON($P(PSJPON,";",2))) Q
  1. S PSJDSPON($P(PSJPON,";",2))=""
  1. I ($Y+8)>IOSL D PAUSE^PSJMISC(1,0) W @IOF
  1. D DSPORD^PSJOC($P(PSJPON,";",2),"",PSJCLINF)
  1. Q
  1. RDIVUID ;Loop thru the "IN" global to store the VUID for remote Rx
  1. NEW PSJPON,PSJVUID
  1. K PSJRDI
  1. S PSJPON=""
  1. F S PSJPON=$O(^TMP($J,"PSJPRE","IN","PROFILE",PSJPON)) Q:PSJPON="" I $E(PSJPON,1,1)="R" D
  1. . S PSJVUID=$P($G(^TMP($J,"PSJPRE","IN","PROFILE",PSJPON)),U,2)
  1. . S:+PSJVUID PSJRDI(PSJPON)=PSJVUID
  1. Q
  1. DSPLCLIN(PSJ2) ;If the next drug on the list is diff the flag to display the clin effects.
  1. NEW PSJCLINC,PSJCLINN,PSJDNVC,PSJDNVN,PSJPC,PSJPN,PSJ2N,PSJSORTN
  1. I $G(PSJ2)="" Q 0
  1. S PSJDNVC=PSJOCLST(PSJSEV,PSJPSPEC,PSJPROFL,PSJSORT,PSJ2)
  1. F X=1:1:10 S PSJPC(X)=$P(PSJDNVC,U,X)
  1. S PSJ2N=$O(PSJOCLST(PSJSEV,PSJPSPEC,PSJPROFL,PSJSORT,PSJ2))
  1. I 'PSJ2N S PSJSORTN=$O(PSJOCLST(PSJSEV,PSJPSPEC,PSJPROFL,PSJSORT)) Q:'PSJSORTN 1
  1. S PSJ2N=$O(PSJOCLST(PSJSEV,PSJPSPEC,PSJPROFL,PSJSORT,0)) Q:'PSJ2N 1
  1. S PSJDNVN=PSJOCLST(PSJSEV,PSJPSPEC,PSJPROFL,PSJSORT,PSJ2N)
  1. F X=1:1:10 S PSJPN(X)=$P(PSJDNVN,U,X)
  1. I $S(PSJPC(5)="":1,PSJPC(2)="":1,PSJPC(4)="":1,'+PSJPC(1):1,PSJPN(5)="":1,PSJPN(2)="":1,PSJPN(4)="":1,'+PSJPN(1):1,1:0) Q 0
  1. S PSJCLINC=$G(^TMP($J,"PSJPRE","OUT","DRUGDRUG",PSJPC(5),PSJPC(2),PSJPC(4),PSJPC(1),"CLIN"))
  1. S PSJCLINN=$G(^TMP($J,"PSJPRE","OUT","DRUGDRUG",PSJPN(5),PSJPN(2),PSJPN(4),PSJPN(1),"CLIN"))
  1. I (PSJCLINC'=PSJCLINN) Q 1
  1. Q 0
  1. CRITICAL ;
  1. NEW PSJGROUP,PSJNEXT
  1. S PSJGROUP=0,PSJNEXT=0
  1. S PSJSEV="C"
  1. S PSJPSPEC="" F S PSJPSPEC=$O(PSJOCLST(PSJSEV,PSJPSPEC)) Q:PSJPSPEC="" D
  1. . S PSJPROFL="" F S PSJPROFL=$O(PSJOCLST(PSJSEV,PSJPSPEC,PSJPROFL)) Q:PSJPROFL="" D
  1. .. S PSJNEXT=0
  1. .. S PSJGROUP=PSJGROUP+1
  1. .. F PSJSORT=0:0 S PSJSORT=$O(PSJOCLST(PSJSEV,PSJPSPEC,PSJPROFL,PSJSORT)) Q:'PSJSORT D
  1. ... Q:PSJNEXT
  1. ... F PSJ2=0:0 S PSJ2=$O(PSJOCLST(PSJSEV,PSJPSPEC,PSJPROFL,PSJSORT,PSJ2)) Q:'PSJ2 D
  1. .... Q:PSJNEXT
  1. .... S PSJCRTCL(PSJSORT,PSJGROUP)=PSJPSPEC_U_PSJPROFL_U_$P(PSJOCLST(PSJSEV,PSJPSPEC,PSJPROFL,PSJSORT,PSJ2),"^",12)
  1. .... S PSJNEXT=1
  1. Q