- PSGCAPP ;BIR/CML3-PRINT DATA FOR ACTION PROFILE ;05 Oct 98 / 10:21 AM
- ;;5.0;INPATIENT MEDICATIONS;**8,20,60,111,149,169,275,301**;16 DEC 97;Build 3
- LOOP ;
- N PSJCLIN1
- D NOW^%DTC S PSGDT=%,PSGPDT=$$ENDTC2^PSGMI(PSGDT),CML=IO'=IO(0)!($E(IOST,1,2)'="C-")
- U IO I '$D(^TMP($J)) D G DONE
- .W:$Y @IOF W !?26,"UNIT DOSE ACTION PROFILE #2",?62,PSGPDT,!?10,"NO ",$S(PSGAPO="E":"EXPIRING",1:"ACTIVE")," ORDERS FOUND FOR ",$S(PSGSS="G":"WARD GROUP: "_PSGAPWGN,PSGSS="W":"WARD: "_PSGAPWDN,1:"PATIENT(S) SELECTED"),"."
- S (LN,LINE,ALN,S1,WD,PN)="",$P(LN,"_",19)="",$P(LINE,"-",81)="",$P(ALN," -",18)="",ALN=ALN_" A C T I V E"_ALN
- S PSGVAMC=$$SITE^PSGMMAR2(80)
- F S (PS1,S1,PSJTEAM)=$O(^TMP($J,S1)) Q:S1=""!$D(PSJDLW) S:S1="zz" (PS1,PSJTEAM)="NOT FOUND" F S WD=$O(^TMP($J,S1,WD)) Q:WD=""!$D(PSJDLW) D
- . F S PN=$O(^TMP($J,S1,WD,PN)) Q:PN=""!$D(PSJDLW) S PI=$G(^(PN)) S:PI="" PI=$G(^TMP($J,S1,"zz",PN)) S:((PI="")&$P($G(PN),"^",2)) PI=$$SETPI^PSGCAP0($P(PN,"^",2)) D H1
- ;
- DONE ;PSJ*5*149 Add WD1 to killed variables.
- W:CML&($Y) @IOF K AD,ALN,CML,DF,LINE,LN,MF,N,PG,PI,PPN,PS1,PSGPDT,RCT,RF,PID,TD,WD,PSJDLW,PSGVAMC,WD1,PSJCNTR,PSJAMO Q
- ;
- H1 ; first header for patient
- ; PSJ*5*149 Use WD1 to preserve value of WD
- N WD1
- I $P(WD,"^")="zz",($P(WD,"^",2)]"") I ($P(WD,"^",2)'=$P($G(PSJCLIN1),"^",2)) S PSJCLIN1=WD D
- .N MIDLEN,SIDLEN S MIDLEN=$L($P(PSJCLIN1,"^",2)) S SIDLEN=((81-MIDLEN)\2)
- .S (LN,LINE,ALN)="",$P(LN,"_",(SIDLEN\2))="",$P(LINE,"-",81)="",$P(ALN," -",(SIDLEN\2))="",ALN=ALN_$P(PSJCLIN1,"^",2)_ALN
- I $G(WD)="zz" S WD1=WD N WD S WD="*NF*"
- D ^PSGCAPP0
- S WD=$G(WD1,WD)
- END ;
- S (ON,DRG)="" F S DRG=$O(^TMP($J,S1,WD,PN,DRG)) Q:DRG="" F S ON=$O(^TMP($J,S1,WD,PN,DRG,ON)) Q:ON="" S ND=^(ON),SI=$G(^(ON,1)) D NP:$Y+12>IOSL Q:$D(PSJDLW) D ORDP
- ; Check for orders in other locations for the same patient; ensure all of one patient's orders display in the same section of the report
- N WD2,PN2,DRG2,ON2 S WD2="" F S WD2=$O(^TMP($J,S1,WD2)) Q:WD2="" I WD2'=WD S PN2="" F S PN2=$O(^TMP($J,S1,WD2,PN2)) Q:PN2="" I PN2=PN S (WD2(WD2),DRG2)="" F S DRG2=$O(^TMP($J,S1,WD2,PN2,DRG2)) Q:DRG2="" D
- .S ON2="" F S ON2=$O(^TMP($J,S1,WD2,PN2,DRG2,ON2)) Q:ON2="" N WD,DRG,ON S WD=WD2,DRG=DRG2,ON=ON2 S ND=^(ON),SI=$G(^(ON,1)) D NP Q:$D(PSJDLW) D ORDP
- ; Remove the previously printed orders from the 'other' locations so they are not printed again later
- N TMPWD S TMPWD="" F S TMPWD=$O(WD2(TMPWD)) Q:TMPWD="" K ^TMP($J,S1,TMPWD,PN)
- Q:$D(PSJDLW)
- I $D(^PS(53.1,"AC",PSGP)) W !!?13,"******** THIS PATIENT HAS NON-VERIFIED ORDERS. ********"
- S DF=1 W:'$D(PSJDLW) !!?16,LN,?40,LN_LN,!?16,"Date AND Time",?40,"PROVIDER'S SIGNATURE"
- D:$Y+10>IOSL NP1 W:'$D(PSJDLW) !!!?10,"MULTIDISCIPLINARY REVIEW",!?16,"(WHEN APPROPRIATE)",?40,LN_LN,!?40,"PHARMACIST'S SIGNATURE"
- D:$Y+6>IOSL NP1 W:'$D(PSJDLW) !!?40,LN_LN,!?40,"NURSE'S SIGNATURE"
- ; PSJ*5*169 Standardize AMO section to 10 lines.
- N PSJCNTR,PSJAMO
- I IOSL-$Y>10 D
- . W !!?3,"ADDITIONAL MEDICATION ORDERS:"
- . F PSJCNTR=1:1:10 W !!,LINE S PSJAMO=0 I $Y+9>IOSL S PSJAMO=1 D NP1
- I W:'$D(PSJDLW) !!?16,LN,?40,LN_LN,!?16,"Date AND Time",?40,"PROVIDER'S SIGNATURE",!
- E F Q=$Y+5:1:IOSL-1 W !
- W:'$D(PSJDLW) !?2,PPN,?40,PID,?78-$L(PDOB),PDOB Q
- ;
- ORDP ;
- S N=N+1 I ON["V" D PRT^PSGCAPIV(ON) Q
- N X,PSG S PSGP=$P(PN,U,2)
- D DRGDISP^PSJLMUT1(+PSGP,+ON_"U",39,69,.PSG,0)
- S SM=$P(ND,"^",5),NF=$P(ND,"^",6),DCU=$P(ND,"^",7),DCU=$S($E(DCU)=".":"0"_DCU,'DCU:"0.00",1:DCU) W !,$J(N,3)
- W ?5,PSG(1),?46,$P(DRG,"^"),?49,$P(ND,"^",2),?55,$P(ND,"^",3),?61,$P(ND,"^") I NF!SM!$P(ND,"^",4) W ?65 W:NF "NF " W:$P(ND,"^",4) "WS " W:SM $E("HSM",SM,3)
- N X F X=1:0 S X=$O(PSG(X)) Q:'X W !?5,PSG(X)
- I SI]"" W !?8,"Special Instructions: " F X=1:1:$L(SI," ") S Y=$P(SI," ",X) W:$X+$L(Y)>78 !?31 W Y," "
- ORDP1 ;*** Also being called from ^PSGCAPIV. PSJ*5*169 Don't allow RENEW on one-time orders.
- W !!?5,"__TAKE NO ACTION __DISCONTINUE "_$S($P(DRG,"^")="O"!($G(QST)="O"):" ",1:"__RENEW")_" COST/DOSE: ",DCU,!?2,"------------------------------------------------------------------------",! Q
- ;
- NP ;
- W:'$D(PSJDLW) !!?16,LN,?40,LN_LN,!?16,"Date AND Time",?40,"PROVIDER'S SIGNATURE"
- ;
- NP1 ;
- Q:$D(PSJDLW)
- I $E(IOST,1)="C" K DIR S DIR(0)="E" D ^DIR K DIR I $D(DTOUT)!$D(DUOUT) S PSJDLW=1 Q
- F Q=$Y:1:IOSL-4 W !
- I '$G(PG),$P($G(PI),"^",3) S (N,DF)=0,PSEX=$P(PI,"^"),PDOB=$P(PI,"^",2),PID=$P(PI,"^",3),RB=$P(PI,"^",5),AD=$P(PI,"^",6),TD=$P(PI,"^",7),WT=$P(PI,"^",8),WTD=$P(PI,"^",9),HT=$P(PI,"^",10),HTD=$P(PI,"^",11),PPN=$P(PI,"^",12),PSGP=$P(PN,"^",2) D
- .S PAGE=$P(PDOB,";",2),PDOB=$P(PDOB,";"),PG=1
- ;* S PG=PG+1 W !?2,PPN,?40,PID,?78-$L(PDOB),PDOB W:$Y @IOF W !?28,"UNIT DOSE ACTION PROFILE #2",?73-$L(PG),"Page: "_PG,!?1,PPN,?40,PID,?60,PDOB I DF W !!,LINE Q
- S PG=$G(PG)+1 W !?2,PPN,?40,PID,?78-$L(PDOB),PDOB W:$Y @IOF
- W !?26,"UNIT DOSE ACTION PROFILE #2",?73-$L(PG),"Page: "_PG
- W !?+PSGVAMC,$P(PSGVAMC,U,2)
- W !?1,PPN,?40,PID,?60,PDOB
- I DF D Q
- . I $G(PSJAMO)=1 W !!,"ADDITIONAL MEDICATION ORDERS (CONTINUED):",! Q
- . W !!,LINE
- ; Make sure orders always have correct profile heading - ACTIVE for Inpatient orders, clinic name for Clinic Orders
- I ($$CLINIC^PSJO1($P(PN,"^",2),+ON_"U")]"") N ALN S ALN="" S $P(ALN," -",18)="",ALN=ALN_$$CLINIC^PSJO1($P(PN,"^",2),+ON_"U")_ALN
- I ($$CLINIC^PSJO1($P(PN,"^",2),+ON_"U")=""),$G(PSJPWD) N ALN S ALN="" S $P(ALN," -",18)="",ALN=ALN_" A C T I V E"_ALN
- W !!," No. Action",?16,"Drug",?46,"ST Start Stop Status/Info",!,ALN
- Q
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSGCAPP 5508 printed Feb 18, 2025@23:27:19 Page 2
- PSGCAPP ;BIR/CML3-PRINT DATA FOR ACTION PROFILE ;05 Oct 98 / 10:21 AM
- +1 ;;5.0;INPATIENT MEDICATIONS;**8,20,60,111,149,169,275,301**;16 DEC 97;Build 3
- LOOP ;
- +1 NEW PSJCLIN1
- +2 DO NOW^%DTC
- SET PSGDT=%
- SET PSGPDT=$$ENDTC2^PSGMI(PSGDT)
- SET CML=IO'=IO(0)!($EXTRACT(IOST,1,2)'="C-")
- +3 USE IO
- IF '$DATA(^TMP($JOB))
- Begin DoDot:1
- +4 if $Y
- WRITE @IOF
- WRITE !?26,"UNIT DOSE ACTION PROFILE #2",?62,PSGPDT,!?10,"NO ",$SELECT(PSGAPO="E":"EXPIRING",1:"ACTIVE")," ORDERS FOUND FOR ",$SELECT(PSGSS="G":"WARD GROUP: "_PSGAPWGN,PSGSS="W":"WARD: "_PSGAPWDN,1:"PATIENT(S) SELECTED"),"."
- End DoDot:1
- GOTO DONE
- +5 SET (LN,LINE,ALN,S1,WD,PN)=""
- SET $PIECE(LN,"_",19)=""
- SET $PIECE(LINE,"-",81)=""
- SET $PIECE(ALN," -",18)=""
- SET ALN=ALN_" A C T I V E"_ALN
- +6 SET PSGVAMC=$$SITE^PSGMMAR2(80)
- +7 FOR
- SET (PS1,S1,PSJTEAM)=$ORDER(^TMP($JOB,S1))
- if S1=""!$DATA(PSJDLW)
- QUIT
- if S1="zz"
- SET (PS1,PSJTEAM)="NOT FOUND"
- FOR
- SET WD=$ORDER(^TMP($JOB,S1,WD))
- if WD=""!$DATA(PSJDLW)
- QUIT
- Begin DoDot:1
- +8 FOR
- SET PN=$ORDER(^TMP($JOB,S1,WD,PN))
- if PN=""!$DATA(PSJDLW)
- QUIT
- SET PI=$GET(^(PN))
- if PI=""
- SET PI=$GET(^TMP($JOB,S1,"zz",PN))
- if ((PI="")&$PIECE($GET(PN),"^",2))
- SET PI=$$SETPI^PSGCAP0($PIECE(PN,"^",2))
- DO H1
- End DoDot:1
- +9 ;
- DONE ;PSJ*5*149 Add WD1 to killed variables.
- +1 if CML&($Y)
- WRITE @IOF
- KILL AD,ALN,CML,DF,LINE,LN,MF,N,PG,PI,PPN,PS1,PSGPDT,RCT,RF,PID,TD,WD,PSJDLW,PSGVAMC,WD1,PSJCNTR,PSJAMO
- QUIT
- +2 ;
- H1 ; first header for patient
- +1 ; PSJ*5*149 Use WD1 to preserve value of WD
- +2 NEW WD1
- +3 IF $PIECE(WD,"^")="zz"
- IF ($PIECE(WD,"^",2)]"")
- IF ($PIECE(WD,"^",2)'=$PIECE($GET(PSJCLIN1),"^",2))
- SET PSJCLIN1=WD
- Begin DoDot:1
- +4 NEW MIDLEN,SIDLEN
- SET MIDLEN=$LENGTH($PIECE(PSJCLIN1,"^",2))
- SET SIDLEN=((81-MIDLEN)\2)
- +5 SET (LN,LINE,ALN)=""
- SET $PIECE(LN,"_",(SIDLEN\2))=""
- SET $PIECE(LINE,"-",81)=""
- SET $PIECE(ALN," -",(SIDLEN\2))=""
- SET ALN=ALN_$PIECE(PSJCLIN1,"^",2)_ALN
- End DoDot:1
- +6 IF $GET(WD)="zz"
- SET WD1=WD
- NEW WD
- SET WD="*NF*"
- +7 DO ^PSGCAPP0
- +8 SET WD=$GET(WD1,WD)
- END ;
- +1 SET (ON,DRG)=""
- FOR
- SET DRG=$ORDER(^TMP($JOB,S1,WD,PN,DRG))
- if DRG=""
- QUIT
- FOR
- SET ON=$ORDER(^TMP($JOB,S1,WD,PN,DRG,ON))
- if ON=""
- QUIT
- SET ND=^(ON)
- SET SI=$GET(^(ON,1))
- if $Y+12>IOSL
- DO NP
- if $DATA(PSJDLW)
- QUIT
- DO ORDP
- +2 ; Check for orders in other locations for the same patient; ensure all of one patient's orders display in the same section of the report
- +3 NEW WD2,PN2,DRG2,ON2
- SET WD2=""
- FOR
- SET WD2=$ORDER(^TMP($JOB,S1,WD2))
- if WD2=""
- QUIT
- IF WD2'=WD
- SET PN2=""
- FOR
- SET PN2=$ORDER(^TMP($JOB,S1,WD2,PN2))
- if PN2=""
- QUIT
- IF PN2=PN
- SET (WD2(WD2),DRG2)=""
- FOR
- SET DRG2=$ORDER(^TMP($JOB,S1,WD2,PN2,DRG2))
- if DRG2=""
- QUIT
- Begin DoDot:1
- +4 SET ON2=""
- FOR
- SET ON2=$ORDER(^TMP($JOB,S1,WD2,PN2,DRG2,ON2))
- if ON2=""
- QUIT
- NEW WD,DRG,ON
- SET WD=WD2
- SET DRG=DRG2
- SET ON=ON2
- SET ND=^(ON)
- SET SI=$GET(^(ON,1))
- DO NP
- if $DATA(PSJDLW)
- QUIT
- DO ORDP
- End DoDot:1
- +5 ; Remove the previously printed orders from the 'other' locations so they are not printed again later
- +6 NEW TMPWD
- SET TMPWD=""
- FOR
- SET TMPWD=$ORDER(WD2(TMPWD))
- if TMPWD=""
- QUIT
- KILL ^TMP($JOB,S1,TMPWD,PN)
- +7 if $DATA(PSJDLW)
- QUIT
- +8 IF $DATA(^PS(53.1,"AC",PSGP))
- WRITE !!?13,"******** THIS PATIENT HAS NON-VERIFIED ORDERS. ********"
- +9 SET DF=1
- if '$DATA(PSJDLW)
- WRITE !!?16,LN,?40,LN_LN,!?16,"Date AND Time",?40,"PROVIDER'S SIGNATURE"
- +10 if $Y+10>IOSL
- DO NP1
- if '$DATA(PSJDLW)
- WRITE !!!?10,"MULTIDISCIPLINARY REVIEW",!?16,"(WHEN APPROPRIATE)",?40,LN_LN,!?40,"PHARMACIST'S SIGNATURE"
- +11 if $Y+6>IOSL
- DO NP1
- if '$DATA(PSJDLW)
- WRITE !!?40,LN_LN,!?40,"NURSE'S SIGNATURE"
- +12 ; PSJ*5*169 Standardize AMO section to 10 lines.
- +13 NEW PSJCNTR,PSJAMO
- +14 IF IOSL-$Y>10
- Begin DoDot:1
- +15 WRITE !!?3,"ADDITIONAL MEDICATION ORDERS:"
- +16 FOR PSJCNTR=1:1:10
- WRITE !!,LINE
- SET PSJAMO=0
- IF $Y+9>IOSL
- SET PSJAMO=1
- DO NP1
- End DoDot:1
- +17 IF $TEST
- if '$DATA(PSJDLW)
- WRITE !!?16,LN,?40,LN_LN,!?16,"Date AND Time",?40,"PROVIDER'S SIGNATURE",!
- +18 IF '$TEST
- FOR Q=$Y+5:1:IOSL-1
- WRITE !
- +19 if '$DATA(PSJDLW)
- WRITE !?2,PPN,?40,PID,?78-$LENGTH(PDOB),PDOB
- QUIT
- +20 ;
- ORDP ;
- +1 SET N=N+1
- IF ON["V"
- DO PRT^PSGCAPIV(ON)
- QUIT
- +2 NEW X,PSG
- SET PSGP=$PIECE(PN,U,2)
- +3 DO DRGDISP^PSJLMUT1(+PSGP,+ON_"U",39,69,.PSG,0)
- +4 SET SM=$PIECE(ND,"^",5)
- SET NF=$PIECE(ND,"^",6)
- SET DCU=$PIECE(ND,"^",7)
- SET DCU=$SELECT($EXTRACT(DCU)=".":"0"_DCU,'DCU:"0.00",1:DCU)
- WRITE !,$JUSTIFY(N,3)
- +5 WRITE ?5,PSG(1),?46,$PIECE(DRG,"^"),?49,$PIECE(ND,"^",2),?55,$PIECE(ND,"^",3),?61,$PIECE(ND,"^")
- IF NF!SM!$PIECE(ND,"^",4)
- WRITE ?65
- if NF
- WRITE "NF "
- if $PIECE(ND,"^",4)
- WRITE "WS "
- if SM
- WRITE $EXTRACT("HSM",SM,3)
- +6 NEW X
- FOR X=1:0
- SET X=$ORDER(PSG(X))
- if 'X
- QUIT
- WRITE !?5,PSG(X)
- +7 IF SI]""
- WRITE !?8,"Special Instructions: "
- FOR X=1:1:$LENGTH(SI," ")
- SET Y=$PIECE(SI," ",X)
- if $X+$LENGTH(Y)>78
- WRITE !?31
- WRITE Y," "
- ORDP1 ;*** Also being called from ^PSGCAPIV. PSJ*5*169 Don't allow RENEW on one-time orders.
- +1 WRITE !!?5,"__TAKE NO ACTION __DISCONTINUE "_$SELECT($PIECE(DRG,"^")="O"!($GET(QST)="O"):" ",1:"__RENEW")_" COST/DOSE: ",DCU,!?2,"------------------------------------------------------------------------",!
- QUIT
- +2 ;
- NP ;
- +1 if '$DATA(PSJDLW)
- WRITE !!?16,LN,?40,LN_LN,!?16,"Date AND Time",?40,"PROVIDER'S SIGNATURE"
- +2 ;
- NP1 ;
- +1 if $DATA(PSJDLW)
- QUIT
- +2 IF $EXTRACT(IOST,1)="C"
- KILL DIR
- SET DIR(0)="E"
- DO ^DIR
- KILL DIR
- IF $DATA(DTOUT)!$DATA(DUOUT)
- SET PSJDLW=1
- QUIT
- +3 FOR Q=$Y:1:IOSL-4
- WRITE !
- +4 IF '$GET(PG)
- IF $PIECE($GET(PI),"^",3)
- SET (N,DF)=0
- SET PSEX=$PIECE(PI,"^")
- SET PDOB=$PIECE(PI,"^",2)
- SET PID=$PIECE(PI,"^",3)
- SET RB=$PIECE(PI,"^",5)
- SET AD=$PIECE(PI,"^",6)
- SET TD=$PIECE(PI,"^",7)
- SET WT=$PIECE(PI,"^",8)
- SET WTD=$PIECE(PI,"^",9)
- SET HT=$PIECE(PI,"^",10)
- SET HTD=$PIECE(PI,"^",11)
- SET PPN=$PIECE(PI,"^",12)
- SET PSGP=$PIECE(PN,"^",2)
- Begin DoDot:1
- +5 SET PAGE=$PIECE(PDOB,";",2)
- SET PDOB=$PIECE(PDOB,";")
- SET PG=1
- End DoDot:1
- +6 ;* S PG=PG+1 W !?2,PPN,?40,PID,?78-$L(PDOB),PDOB W:$Y @IOF W !?28,"UNIT DOSE ACTION PROFILE #2",?73-$L(PG),"Page: "_PG,!?1,PPN,?40,PID,?60,PDOB I DF W !!,LINE Q
- +7 SET PG=$GET(PG)+1
- WRITE !?2,PPN,?40,PID,?78-$LENGTH(PDOB),PDOB
- if $Y
- WRITE @IOF
- +8 WRITE !?26,"UNIT DOSE ACTION PROFILE #2",?73-$LENGTH(PG),"Page: "_PG
- +9 WRITE !?+PSGVAMC,$PIECE(PSGVAMC,U,2)
- +10 WRITE !?1,PPN,?40,PID,?60,PDOB
- +11 IF DF
- Begin DoDot:1
- +12 IF $GET(PSJAMO)=1
- WRITE !!,"ADDITIONAL MEDICATION ORDERS (CONTINUED):",!
- QUIT
- +13 WRITE !!,LINE
- End DoDot:1
- QUIT
- +14 ; Make sure orders always have correct profile heading - ACTIVE for Inpatient orders, clinic name for Clinic Orders
- +15 IF ($$CLINIC^PSJO1($PIECE(PN,"^",2),+ON_"U")]"")
- NEW ALN
- SET ALN=""
- SET $PIECE(ALN," -",18)=""
- SET ALN=ALN_$$CLINIC^PSJO1($PIECE(PN,"^",2),+ON_"U")_ALN
- +16 IF ($$CLINIC^PSJO1($PIECE(PN,"^",2),+ON_"U")="")
- IF $GET(PSJPWD)
- NEW ALN
- SET ALN=""
- SET $PIECE(ALN," -",18)=""
- SET ALN=ALN_" A C T I V E"_ALN
- +17 WRITE !!," No. Action",?16,"Drug",?46,"ST Start Stop Status/Info",!,ALN
- +18 QUIT