PSJPDV1 ;BIR/KKA-LIST PATIENTS ON SPECIFIC DRUGS (CONT.) ;15 May 98 / 9:28 AM
;;5.0; INPATIENT MEDICATIONS ;**3,33,58**;16 DEC 97
;
; Reference to ^PS(55 supported by DBIA #2191.
;
S PG=1,(PREVNM,TMPNM)="",(PREVWD,TMPWD)="",WFLG=0
REC ;write patient and order information
D HEADING G:$D(QFLG) DONE
I '$D(^TMP("PSJ",$J)) W !!,"NO DATA FOUND" G DONE
S FST="" F S FST=$O(^TMP("PSJ",$J,FST)) Q:FST=""!($D(QFLG)) S SND="" F S SND=$O(^TMP("PSJ",$J,FST,SND)) Q:SND=""!($D(QFLG)) S ORD="" F S ORD=$O(^TMP("PSJ",$J,FST,SND,ORD)) Q:'ORD!($D(QFLG)) D
.; naked ref below refers to line above
.S ND=^(ORD),PER=$S(PSJSRT="P":FST,1:SND),STD=$S(PSJSRT="P":SND,1:FST)
.S WFLG=0,(NM,TMPNM)=$P(PER,";"),(WARD,TMPWD)=$P(ND,"^",2) I PSJSRT="P" S:(TMPNM=PREVNM)&(TMPWD=PREVWD) NM="",WFLG=1 I TMPNM'=PREVNM S PREVNM=NM W !
.S:TMPWD'=PREVWD PREVWD=WARD S (PSGP,IEN)=$P(PER,";",2),PSJJORD=+ORD D:ORD["V" IVREC Q:$D(QFLG) D:ORD'["V" UDREC Q:$D(QFLG)
;
DONE K ADCNT,CONT,FST,JJ,LCNT,LN,ND3,ND3FLG,ND4,ON,OPI,ORD,P,PER,PG,PREVNM,PEVWD,PRIMD,PSJAD,PSJSOL,RSTFLG,SI,SND,SOLCNT,SSN,TMPNM,TMPWD,WCNT,WFLG,WRD,WARD,RMBD,PSJ,DRGI,DRGN,DRGT
Q
;
UDREC ;write Unit Dose record
N X,PSJ K ND3FLG
D DRGDISP^PSJLMUT1(PSGP,PSJJORD_"U",30,30,.PSJ,0)
S RSTFLG=2,SSN=$P(ND,U),WARD=$P(ND,U,2),RMBD=$P(ND,U,3)
D:$Y+5>IOSL HEADING Q:$D(QFLG)
W !!,NM,?32,PSJ(1),?68,$E($$ENDTC^PSGMI(STD),1,5),?75,$E($$ENDTC^PSGMI($P(ND,U,6)),1,5),! W:'WFLG SSN
N X F X=1:0 S X=$O(PSJ(X)) Q:'X W ?32,PSJ(X) D THEREST I RSTFLG>3&($X>32) W !
S WCNT=1,SI=$P($G(^PS(55,PSGP,5,PSJJORD,6)),"^") I SI]"" W:$X>31 ! F S WRD=$P(SI," ",WCNT) Q:$L(WRD)=0 S WCNT=WCNT+1 D
.I $X+$L(WRD)>79 W ! I 'WFLG&('$D(ND3FLG)) W $P(ND,"^",3) S ND3FLG=1
.W ?31," ",WRD
I 'WFLG&('$D(ND3FLG)) W !,$P(ND,"^",3)
K ND3FLG
Q
IVREC ;write IV record
D:$Y+5>IOSL HEADING Q:$D(QFLG)
N DRG,P,PSG,ON55,PSJ
S RSTFLG=1,SSN=$P(ND,U),WARD=$P(ND,U,2),RMBD=$P(ND,U,3)
S DFN=PSGP,ON=PSJJORD D GT55^PSIVORFB
W !!,NM
N X F X=0:0 S X=$O(DRG("AD",X)) Q:'X D NAME^PSIVUTL(DRG("AD",X),30,.PSJ,1) F JJ=0:0 S JJ=$O(PSJ(JJ)) Q:'JJ W ?32,PSJ(JJ) D THEREST I RSTFLG>3&($X>32) W !
N X,PSJ F X=0:0 S X=$O(DRG("SOL",X)) Q:'X D NAME^PSIVUTL(DRG("SOL",X),30,.PSJ,0) N JJ F JJ=0:0 S JJ=$O(PSJ(JJ)) Q:'JJ W:JJ=1 ?33,"in " W ?36,PSJ(JJ) D THEREST I RSTFLG>3&($X>31) W !
W ?32,$P(P("MR"),U,2)_" "_P(9)_" "_P(8) D THEREST
S OPI=$P(P("OPI"),"^") I OPI]"" W:$X>31 ! F X=1:1:$L(OPI," ") S Y=$P(OPI," ",X) D THEREST W:$X+$L(Y)>80 ! W ?32,Y," "
F Q:RSTFLG>3 D THEREST
Q
THEREST ;
I RSTFLG=1 W ?68,$E($$ENDTC^PSGMI(STD),1,5),?75,$E($$ENDTC^PSGMI(P(3)),1,5),! W:'WFLG SSN
I RSTFLG=2 W ! W:'WFLG WARD
I RSTFLG=3 S ND3FLG=1 W ! W:'WFLG RMBD
S RSTFLG=RSTFLG+1
Q
HEADING I $E(IOST)'="P" W !,"Press RETURN to continue ""^"" to exit: " R CONT:DTIME S:CONT["^" QFLG=1 Q:$D(QFLG)
W:$Y @IOF
S NM=TMPNM,WFLG=0
W !,$E($$ENDTC^PSGMI(DT),1,8),?70,"PAGE: ",PG S PG=PG+1
S LN="LISTING OF PATIENTS WITH ORDERS CONTAINING "_$S(PSJSL="V":"VA CLASS(ES) OF DRUGS",PSJSL="O":"ORDERABLE ITEM(S)",PSJSL="D":"DISPENSE DRUG(S)")_":"
W !! D LINE W !
S LN="" F S LN=$O(PSJSNM(LN)) Q:LN="" W ! D LINE
S LN="FROM "_$$ENDTC^PSGMI(PSJREPS)_" TO "_$$ENDTC^PSGMI(PSJREPF) W !! D LINE W !!
F X=1:1:80 W "-"
W !?68,"Start",?75,"Stop",!,"Patient",?32,"Order",?68,"Date",?75,"Date",!
F X=1:1:80 W "-"
Q
LINE ;
W ?(80-$L(LN))/2,LN Q
PSJPDV1 ;BIR/KKA-LIST PATIENTS ON SPECIFIC DRUGS (CONT.) ;15 May 98 / 9:28 AM
+1 ;;5.0; INPATIENT MEDICATIONS ;**3,33,58**;16 DEC 97
+2 ;
+3 ; Reference to ^PS(55 supported by DBIA #2191.
+4 ;
+5 SET PG=1
SET (PREVNM,TMPNM)=""
SET (PREVWD,TMPWD)=""
SET WFLG=0
REC ;write patient and order information
+1 DO HEADING
IF $DATA(QFLG)
GOTO DONE
+2 IF '$DATA(^TMP("PSJ",$JOB))
WRITE !!,"NO DATA FOUND"
GOTO DONE
+3 SET FST=""
FOR
SET FST=$ORDER(^TMP("PSJ",$JOB,FST))
IF FST=""!($DATA(QFLG))
QUIT
SET SND=""
FOR
SET SND=$ORDER(^TMP("PSJ",$JOB,FST,SND))
IF SND=""!($DATA(QFLG))
QUIT
SET ORD=""
FOR
SET ORD=$ORDER(^TMP("PSJ",$JOB,FST,SND,ORD))
IF 'ORD!($DATA(QFLG))
QUIT
Begin DoDot:1
+4 ; naked ref below refers to line above
+5 SET ND=^(ORD)
SET PER=$SELECT(PSJSRT="P":FST,1:SND)
SET STD=$SELECT(PSJSRT="P":SND,1:FST)
+6 SET WFLG=0
SET (NM,TMPNM)=$PIECE(PER,";")
SET (WARD,TMPWD)=$PIECE(ND,"^",2)
IF PSJSRT="P"
IF (TMPNM=PREVNM)&(TMPWD=PREVWD)
SET NM=""
SET WFLG=1
IF TMPNM'=PREVNM
SET PREVNM=NM
WRITE !
+7 IF TMPWD'=PREVWD
SET PREVWD=WARD
SET (PSGP,IEN)=$PIECE(PER,";",2)
SET PSJJORD=+ORD
IF ORD["V"
DO IVREC
IF $DATA(QFLG)
QUIT
IF ORD'["V"
DO UDREC
IF $DATA(QFLG)
QUIT
End DoDot:1
+8 ;
DONE KILL ADCNT,CONT,FST,JJ,LCNT,LN,ND3,ND3FLG,ND4,ON,OPI,ORD,P,PER,PG,PREVNM,PEVWD,PRIMD,PSJAD,PSJSOL,RSTFLG,SI,SND,SOLCNT,SSN,TMPNM,TMPWD,WCNT,WFLG,WRD,WARD,RMBD,PSJ,DRGI,DRGN,DRGT
+1 QUIT
+2 ;
UDREC ;write Unit Dose record
+1 NEW X,PSJ
KILL ND3FLG
+2 DO DRGDISP^PSJLMUT1(PSGP,PSJJORD_"U",30,30,.PSJ,0)
+3 SET RSTFLG=2
SET SSN=$PIECE(ND,U)
SET WARD=$PIECE(ND,U,2)
SET RMBD=$PIECE(ND,U,3)
+4 IF $Y+5>IOSL
DO HEADING
IF $DATA(QFLG)
QUIT
+5 WRITE !!,NM,?32,PSJ(1),?68,$EXTRACT($$ENDTC^PSGMI(STD),1,5),?75,$EXTRACT($$ENDTC^PSGMI($PIECE(ND,U,6)),1,5),!
IF 'WFLG
WRITE SSN
+6 NEW X
FOR X=1:0
SET X=$ORDER(PSJ(X))
IF 'X
QUIT
WRITE ?32,PSJ(X)
DO THEREST
IF RSTFLG>3&($X>32)
WRITE !
+7 SET WCNT=1
SET SI=$PIECE($GET(^PS(55,PSGP,5,PSJJORD,6)),"^")
IF SI]""
IF $X>31
WRITE !
FOR
SET WRD=$PIECE(SI," ",WCNT)
IF $LENGTH(WRD)=0
QUIT
SET WCNT=WCNT+1
Begin DoDot:1
+8 IF $X+$LENGTH(WRD)>79
WRITE !
IF 'WFLG&('$DATA(ND3FLG))
WRITE $PIECE(ND,"^",3)
SET ND3FLG=1
+9 WRITE ?31," ",WRD
End DoDot:1
+10 IF 'WFLG&('$DATA(ND3FLG))
WRITE !,$PIECE(ND,"^",3)
+11 KILL ND3FLG
+12 QUIT
IVREC ;write IV record
+1 IF $Y+5>IOSL
DO HEADING
IF $DATA(QFLG)
QUIT
+2 NEW DRG,P,PSG,ON55,PSJ
+3 SET RSTFLG=1
SET SSN=$PIECE(ND,U)
SET WARD=$PIECE(ND,U,2)
SET RMBD=$PIECE(ND,U,3)
+4 SET DFN=PSGP
SET ON=PSJJORD
DO GT55^PSIVORFB
+5 WRITE !!,NM
+6 NEW X
FOR X=0:0
SET X=$ORDER(DRG("AD",X))
IF 'X
QUIT
DO NAME^PSIVUTL(DRG("AD",X),30,.PSJ,1)
FOR JJ=0:0
SET JJ=$ORDER(PSJ(JJ))
IF 'JJ
QUIT
WRITE ?32,PSJ(JJ)
DO THEREST
IF RSTFLG>3&($X>32)
WRITE !
+7 NEW X,PSJ
FOR X=0:0
SET X=$ORDER(DRG("SOL",X))
IF 'X
QUIT
DO NAME^PSIVUTL(DRG("SOL",X),30,.PSJ,0)
NEW JJ
FOR JJ=0:0
SET JJ=$ORDER(PSJ(JJ))
IF 'JJ
QUIT
IF JJ=1
WRITE ?33,"in "
WRITE ?36,PSJ(JJ)
DO THEREST
IF RSTFLG>3&($X>31)
WRITE !
+8 WRITE ?32,$PIECE(P("MR"),U,2)_" "_P(9)_" "_P(8)
DO THEREST
+9 SET OPI=$PIECE(P("OPI"),"^")
IF OPI]""
IF $X>31
WRITE !
FOR X=1:1:$LENGTH(OPI," ")
SET Y=$PIECE(OPI," ",X)
DO THEREST
IF $X+$LENGTH(Y)>80
WRITE !
WRITE ?32,Y," "
+10 FOR
IF RSTFLG>3
QUIT
DO THEREST
+11 QUIT
THEREST ;
+1 IF RSTFLG=1
WRITE ?68,$EXTRACT($$ENDTC^PSGMI(STD),1,5),?75,$EXTRACT($$ENDTC^PSGMI(P(3)),1,5),!
IF 'WFLG
WRITE SSN
+2 IF RSTFLG=2
WRITE !
IF 'WFLG
WRITE WARD
+3 IF RSTFLG=3
SET ND3FLG=1
WRITE !
IF 'WFLG
WRITE RMBD
+4 SET RSTFLG=RSTFLG+1
+5 QUIT
HEADING IF $EXTRACT(IOST)'="P"
WRITE !,"Press RETURN to continue ""^"" to exit: "
READ CONT:DTIME
IF CONT["^"
SET QFLG=1
IF $DATA(QFLG)
QUIT
+1 IF $Y
WRITE @IOF
+2 SET NM=TMPNM
SET WFLG=0
+3 WRITE !,$EXTRACT($$ENDTC^PSGMI(DT),1,8),?70,"PAGE: ",PG
SET PG=PG+1
+4 SET LN="LISTING OF PATIENTS WITH ORDERS CONTAINING "_$SELECT(PSJSL="V":"VA CLASS(ES) OF DRUGS",PSJSL="O":"ORDERABLE ITEM(S)",PSJSL="D":"DISPENSE DRUG(S)")_":"
+5 WRITE !!
DO LINE
WRITE !
+6 SET LN=""
FOR
SET LN=$ORDER(PSJSNM(LN))
IF LN=""
QUIT
WRITE !
DO LINE
+7 SET LN="FROM "_$$ENDTC^PSGMI(PSJREPS)_" TO "_$$ENDTC^PSGMI(PSJREPF)
WRITE !!
DO LINE
WRITE !!
+8 FOR X=1:1:80
WRITE "-"
+9 WRITE !?68,"Start",?75,"Stop",!,"Patient",?32,"Order",?68,"Date",?75,"Date",!
+10 FOR X=1:1:80
WRITE "-"
+11 QUIT
LINE ;
+1 WRITE ?(80-$LENGTH(LN))/2,LN
QUIT