PSOORUT3 ;ISC-BHAM/SAB-build listman screen continued ;12/07/95 18:12
;;7.0;OUTPATIENT PHARMACY;**5,25,243,700,770**;DEC 1997;Build 145
;
;Reference to MAIN^TIUEDIT supported by IA# 2410
;Reference to RESET^VALM4 supported by IA# 2334
;bulids allergy/adverse reactions list
F DR=0:0 S DR=$O(GMRAL(DR)) Q:'DR S ^TMP($J,"AL",$S($P(GMRAL(DR),"^",4):1,1:2),$S('$P(GMRAL(DR),"^",5):1,1:2),$P(GMRAL(DR),"^",7),$P(GMRAL(DR),"^",2))=""
S IEN=IEN+1,^TMP("PSOPI",$J,IEN,0)="Allergies "
S:$O(^TMP($J,"AL",1,1,""))]"" IEN=IEN+1,^TMP("PSOPI",$J,IEN,0)=" Verified: "
S (DR,TY)="" F I=0:0 S TY=$O(^TMP($J,"AL",1,1,TY)) Q:TY="" F D=0:0 S DR=$O(^TMP($J,"AL",1,1,TY,DR)) Q:DR="" D
.S:$L(^TMP("PSOPI",$J,IEN,0)_DR_", ")>80 IEN=IEN+1,$P(^TMP("PSOPI",$J,IEN,0)," ",14)=" " S ^TMP("PSOPI",$J,IEN,0)=$G(^TMP("PSOPI",$J,IEN,0))_DR_", "
S:$O(^TMP($J,"AL",2,1,""))]"" IEN=IEN+1,^TMP("PSOPI",$J,IEN,0)="Non-Verified: "
S (DR,TY)="" F I=0:0 S TY=$O(^TMP($J,"AL",2,1,TY)) Q:TY="" F D=0:0 S DR=$O(^TMP($J,"AL",2,1,TY,DR)) Q:DR="" D
.S:$L(^TMP("PSOPI",$J,IEN,0)_DR_", ")>80 IEN=IEN+1,$P(^TMP("PSOPI",$J,IEN,0)," ",14)=" " S ^TMP("PSOPI",$J,IEN,0)=$G(^TMP("PSOPI",$J,IEN,0))_DR_", "
D REMOTE^PSOORUT2
S IEN=IEN+1,^TMP("PSOPI",$J,IEN,0)=" "
S IEN=IEN+1,^TMP("PSOPI",$J,IEN,0)="Adverse Reactions "
S:$O(^TMP($J,"AL",1,2,""))]"" IEN=IEN+1,^TMP("PSOPI",$J,IEN,0)=" Verified: "
S (DR,TY)="" F I=0:0 S TY=$O(^TMP($J,"AL",1,2,TY)) Q:TY="" F D=0:0 S DR=$O(^TMP($J,"AL",1,2,TY,DR)) Q:DR="" D
.S:$L(^TMP("PSOPI",$J,IEN,0)_DR_", ")>80 IEN=IEN+1,$P(^TMP("PSOPI",$J,IEN,0)," ",14)=" " S ^TMP("PSOPI",$J,IEN,0)=$G(^TMP("PSOPI",$J,IEN,0))_DR_", "
S:$O(^TMP($J,"AL",2,2,""))]"" IEN=IEN+1,^TMP("PSOPI",$J,IEN,0)="Non-Verified: "
S (DR,TY)="" F I=0:0 S TY=$O(^TMP($J,"AL",2,2,TY)) Q:TY="" F D=0:0 S DR=$O(^TMP($J,"AL",2,2,TY,DR)) Q:DR="" D
.S:$L(^TMP("PSOPI",$J,IEN,0)_DR_", ")>80 IEN=IEN+1,$P(^TMP("PSOPI",$J,IEN,0)," ",15)=" " S ^TMP("PSOPI",$J,IEN,0)=$G(^TMP("PSOPI",$J,IEN,0))_DR_", "
K TY,D,I,GMRA,GMRAL,DR,AD,ADL,^TMP($J,"AL")
Q
PRONTE ;entry point to enter a progress note DBIA 220
I $T(MAIN^TIUEDIT)]"" D FULL^VALM1,MAIN^TIUEDIT(3,.TIUDA,PSODFN,"","","","",1) Q
S VALMSG="Progress Notes NOT Available.",VALMBCK=""
Q
DPLYOR ;displays status of patient's orders
S PSOHA=1,(EXT,DTME,RX,OLDT)="",(CNT,CNT1,RXNYM)=0
S X=PSODFN,DIC=2,DIC(0)="ZN" D ^DIC K DIC S NAM=$G(Y(0,0)),NNUM=PSODFN
D BING^PSOBGMG3 S VALMBCK="R" K PSOHA
W ! S DIR(0)="E",DIR("A")="Press Return to Continue" D ^DIR
K DIR,DIRUT,DTOUT,DUOUT
Q
A ;resizes list area (Called from PSO PENDING ORDER MENU - HEADER field)
I $D(^XUSEC("PSO ERX WORKLOAD RPH",DUZ)),$P(XQY0,"^")="PSO LMOE FINISH",$G(NAME)="PSO LM ACTIVE ORDERS" S XQORM("B")="NP"
S PSOBM=$S(VALMMENU:20,1:21) D RES
Q
B ;resizes list area (Called from PSO LM ACCEPT MENU - HEADER field)
S PSOBM=21 D RES
Q
RES ; Resize
; Some users use 48-line on their Terminal Emulator to strech Listman body
I $D(^%ZOSF("ZVX")) Q
;
I VALM("BM")'=PSOBM S VALMBCK="R" D
. S VALM("BM")=PSOBM,VALM("LINES")=(PSOBM-VALM("TM"))+1 I +$G(VALMCC) D RESET^VALM4
Q
;
HASACTPO(PATIEN) ; Checks whether the Patient has Active Pending Orders (skips Orders flagged by the current user)
; Input: PATIEN - Pointer to the PATIENT file (#2)
;Output: HASACTPO - 1:Patient has active PO(s) | 0:No active/not flagged PO(s)
;
N HASACTPO,ORD
I '$D(^PS(52.41,"P",+$G(PATIEN))) Q 0
S HASACTPO=0
S ORD=0 F S ORD=$O(^PS(52.41,"P",PATIEN,ORD)) Q:'ORD D I HASACTPO Q
. I ",NW,RNW,"'[(","_$$GET1^DIQ(52.41,ORD,2,"I")_",") Q
. I $$GET1^DIQ(52.41,ORD,34,"I")=DUZ Q ; Order is flagged by the current user
. S HASACTPO=1
Q HASACTPO
;
CHECKCLN(CLN) ; WP Clinic DIC Selection Screen
; Input: CLN - Pointer to CLINIC file (#44)
;Output: CHECKCLN - 1: Include Clinic | 0: Screen Clinic out
N PSONPTRX,PSOINPTR
I '$G(CLN)!'$G(PSOPINST) Q 0
I $P($G(^SC(CLN,0)),"^",4),$P($G(^(0)),"^",4)'=$G(PSOPINST) Q 0
I $P($G(^SC(CLN,0)),"^",4) Q 1
S PSONPTRX=$P($G(^SC(CLN,0)),"^",15)
I '$G(PSONPTRX) S PSONPTRX=+$O(^DG(40.8,0))
S PSOINPTR=+$$SITE^VASITE(DT,PSONPTRX) I PSOINPTR'=$G(PSOPINST) Q 0
Q 1
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSOORUT3 4180 printed Aug 26, 2025@22:48:32 Page 2
PSOORUT3 ;ISC-BHAM/SAB-build listman screen continued ;12/07/95 18:12
+1 ;;7.0;OUTPATIENT PHARMACY;**5,25,243,700,770**;DEC 1997;Build 145
+2 ;
+3 ;Reference to MAIN^TIUEDIT supported by IA# 2410
+4 ;Reference to RESET^VALM4 supported by IA# 2334
+5 ;bulids allergy/adverse reactions list
+6 FOR DR=0:0
SET DR=$ORDER(GMRAL(DR))
if 'DR
QUIT
SET ^TMP($JOB,"AL",$SELECT($PIECE(GMRAL(DR),"^",4):1,1:2),$SELECT('$PIECE(GMRAL(DR),"^",5):1,1:2),$PIECE(GMRAL(DR),"^",7),$PIECE(GMRAL(DR),"^",2))=""
+7 SET IEN=IEN+1
SET ^TMP("PSOPI",$JOB,IEN,0)="Allergies "
+8 if $ORDER(^TMP($JOB,"AL",1,1,""))]""
SET IEN=IEN+1
SET ^TMP("PSOPI",$JOB,IEN,0)=" Verified: "
+9 SET (DR,TY)=""
FOR I=0:0
SET TY=$ORDER(^TMP($JOB,"AL",1,1,TY))
if TY=""
QUIT
FOR D=0:0
SET DR=$ORDER(^TMP($JOB,"AL",1,1,TY,DR))
if DR=""
QUIT
Begin DoDot:1
+10 if $LENGTH(^TMP("PSOPI",$JOB,IEN,0)_DR_", ")>80
SET IEN=IEN+1
SET $PIECE(^TMP("PSOPI",$JOB,IEN,0)," ",14)=" "
SET ^TMP("PSOPI",$JOB,IEN,0)=$GET(^TMP("PSOPI",$JOB,IEN,0))_DR_", "
End DoDot:1
+11 if $ORDER(^TMP($JOB,"AL",2,1,""))]""
SET IEN=IEN+1
SET ^TMP("PSOPI",$JOB,IEN,0)="Non-Verified: "
+12 SET (DR,TY)=""
FOR I=0:0
SET TY=$ORDER(^TMP($JOB,"AL",2,1,TY))
if TY=""
QUIT
FOR D=0:0
SET DR=$ORDER(^TMP($JOB,"AL",2,1,TY,DR))
if DR=""
QUIT
Begin DoDot:1
+13 if $LENGTH(^TMP("PSOPI",$JOB,IEN,0)_DR_", ")>80
SET IEN=IEN+1
SET $PIECE(^TMP("PSOPI",$JOB,IEN,0)," ",14)=" "
SET ^TMP("PSOPI",$JOB,IEN,0)=$GET(^TMP("PSOPI",$JOB,IEN,0))_DR_", "
End DoDot:1
+14 DO REMOTE^PSOORUT2
+15 SET IEN=IEN+1
SET ^TMP("PSOPI",$JOB,IEN,0)=" "
+16 SET IEN=IEN+1
SET ^TMP("PSOPI",$JOB,IEN,0)="Adverse Reactions "
+17 if $ORDER(^TMP($JOB,"AL",1,2,""))]""
SET IEN=IEN+1
SET ^TMP("PSOPI",$JOB,IEN,0)=" Verified: "
+18 SET (DR,TY)=""
FOR I=0:0
SET TY=$ORDER(^TMP($JOB,"AL",1,2,TY))
if TY=""
QUIT
FOR D=0:0
SET DR=$ORDER(^TMP($JOB,"AL",1,2,TY,DR))
if DR=""
QUIT
Begin DoDot:1
+19 if $LENGTH(^TMP("PSOPI",$JOB,IEN,0)_DR_", ")>80
SET IEN=IEN+1
SET $PIECE(^TMP("PSOPI",$JOB,IEN,0)," ",14)=" "
SET ^TMP("PSOPI",$JOB,IEN,0)=$GET(^TMP("PSOPI",$JOB,IEN,0))_DR_", "
End DoDot:1
+20 if $ORDER(^TMP($JOB,"AL",2,2,""))]""
SET IEN=IEN+1
SET ^TMP("PSOPI",$JOB,IEN,0)="Non-Verified: "
+21 SET (DR,TY)=""
FOR I=0:0
SET TY=$ORDER(^TMP($JOB,"AL",2,2,TY))
if TY=""
QUIT
FOR D=0:0
SET DR=$ORDER(^TMP($JOB,"AL",2,2,TY,DR))
if DR=""
QUIT
Begin DoDot:1
+22 if $LENGTH(^TMP("PSOPI",$JOB,IEN,0)_DR_", ")>80
SET IEN=IEN+1
SET $PIECE(^TMP("PSOPI",$JOB,IEN,0)," ",15)=" "
SET ^TMP("PSOPI",$JOB,IEN,0)=$GET(^TMP("PSOPI",$JOB,IEN,0))_DR_", "
End DoDot:1
+23 KILL TY,D,I,GMRA,GMRAL,DR,AD,ADL,^TMP($JOB,"AL")
+24 QUIT
PRONTE ;entry point to enter a progress note DBIA 220
+1 IF $TEXT(MAIN^TIUEDIT)]""
DO FULL^VALM1
DO MAIN^TIUEDIT(3,.TIUDA,PSODFN,"","","","",1)
QUIT
+2 SET VALMSG="Progress Notes NOT Available."
SET VALMBCK=""
+3 QUIT
DPLYOR ;displays status of patient's orders
+1 SET PSOHA=1
SET (EXT,DTME,RX,OLDT)=""
SET (CNT,CNT1,RXNYM)=0
+2 SET X=PSODFN
SET DIC=2
SET DIC(0)="ZN"
DO ^DIC
KILL DIC
SET NAM=$GET(Y(0,0))
SET NNUM=PSODFN
+3 DO BING^PSOBGMG3
SET VALMBCK="R"
KILL PSOHA
+4 WRITE !
SET DIR(0)="E"
SET DIR("A")="Press Return to Continue"
DO ^DIR
+5 KILL DIR,DIRUT,DTOUT,DUOUT
+6 QUIT
A ;resizes list area (Called from PSO PENDING ORDER MENU - HEADER field)
+1 IF $DATA(^XUSEC("PSO ERX WORKLOAD RPH",DUZ))
IF $PIECE(XQY0,"^")="PSO LMOE FINISH"
IF $GET(NAME)="PSO LM ACTIVE ORDERS"
SET XQORM("B")="NP"
+2 SET PSOBM=$SELECT(VALMMENU:20,1:21)
DO RES
+3 QUIT
B ;resizes list area (Called from PSO LM ACCEPT MENU - HEADER field)
+1 SET PSOBM=21
DO RES
+2 QUIT
RES ; Resize
+1 ; Some users use 48-line on their Terminal Emulator to strech Listman body
+2 IF $DATA(^%ZOSF("ZVX"))
QUIT
+3 ;
+4 IF VALM("BM")'=PSOBM
SET VALMBCK="R"
Begin DoDot:1
+5 SET VALM("BM")=PSOBM
SET VALM("LINES")=(PSOBM-VALM("TM"))+1
IF +$GET(VALMCC)
DO RESET^VALM4
End DoDot:1
+6 QUIT
+7 ;
HASACTPO(PATIEN) ; Checks whether the Patient has Active Pending Orders (skips Orders flagged by the current user)
+1 ; Input: PATIEN - Pointer to the PATIENT file (#2)
+2 ;Output: HASACTPO - 1:Patient has active PO(s) | 0:No active/not flagged PO(s)
+3 ;
+4 NEW HASACTPO,ORD
+5 IF '$DATA(^PS(52.41,"P",+$GET(PATIEN)))
QUIT 0
+6 SET HASACTPO=0
+7 SET ORD=0
FOR
SET ORD=$ORDER(^PS(52.41,"P",PATIEN,ORD))
if 'ORD
QUIT
Begin DoDot:1
+8 IF ",NW,RNW,"'[(","_$$GET1^DIQ(52.41,ORD,2,"I")_",")
QUIT
+9 ; Order is flagged by the current user
IF $$GET1^DIQ(52.41,ORD,34,"I")=DUZ
QUIT
+10 SET HASACTPO=1
End DoDot:1
IF HASACTPO
QUIT
+11 QUIT HASACTPO
+12 ;
CHECKCLN(CLN) ; WP Clinic DIC Selection Screen
+1 ; Input: CLN - Pointer to CLINIC file (#44)
+2 ;Output: CHECKCLN - 1: Include Clinic | 0: Screen Clinic out
+3 NEW PSONPTRX,PSOINPTR
+4 IF '$GET(CLN)!'$GET(PSOPINST)
QUIT 0
+5 IF $PIECE($GET(^SC(CLN,0)),"^",4)
IF $PIECE($GET(^(0)),"^",4)'=$GET(PSOPINST)
QUIT 0
+6 IF $PIECE($GET(^SC(CLN,0)),"^",4)
QUIT 1
+7 SET PSONPTRX=$PIECE($GET(^SC(CLN,0)),"^",15)
+8 IF '$GET(PSONPTRX)
SET PSONPTRX=+$ORDER(^DG(40.8,0))
+9 SET PSOINPTR=+$$SITE^VASITE(DT,PSONPTRX)
IF PSOINPTR'=$GET(PSOPINST)
QUIT 0
+10 QUIT 1