PSJLIORD ;BIR/MV-INPATIENT ORDER ENTRY FOR IV ;10 Mar 98 / 4:19 PM
 ;;5.0;INPATIENT MEDICATIONS;**1,16,29,58,85,110,149,267**;16 DEC 97;Build 158
 ;
 ; Reference to ^PS(55 is supported by DBIA #2191.
 ; Reference to EN1^ORCFLAG is supported by DBIA #3620.
 ; Reference to AND^ORX8 is supported by DBIA #3632.
 ;
EN(DFN,PSJORD) ; Display order with numbers.
 ;N ON,ON55,P,PSIVAC,PSGEBN,PSGLI,PSJSTAR
 N ON55,P,PSIVAC,PSGEBN,PSGLI,PSJSTAR K ^PS(53.45,+$G(PSJSYSP),6)
 D UDVARS
 S (PSGEBN,PSGLI)=""
 ;* S PSIVAC="C" S (P("PON"),ON,ON55)=+PSJORD_"V"
 S PSIVAC="E" S (P("PON"),ON,ON55)=+PSJORD_"V"
 S PSIVUP=+$$GTPCI^PSIVUTL D GT55^PSIVORFB
 D:'$D(P("OT")) GTOT^PSIVUTL(P(4))
 NEW PSJL
 N PSIVNUM S PSIVNUM=1
 ;;I $E(P("OT"))'="F" S PSJSTAR="(1)^(4)^(5)^(6)^(7)^(9)^(10)"
 I $E(P("OT"))="I" S PSJSTAR="(1)^(4)^(5)^(6)^(7)^(9)^(10)"
 E  S PSJSTAR="(1)^(2)^(3)^(4)^(5)^(6)^(7)^(9)" D GTDATA^PSJLIFN
 NEW PSGACT D PSGACT
 ;* Only allow activity logs for non pharmacist/RN personel if coming
 ;* from the Non-verify/pending option.
 I '+$P(PSJSYSU,";"),$G(PSJPNV) S PSGACT="L"
 D EN^VALM("PSJ LM IV INPT ACTIVE") ; Call to EN^PSJLIVMD
 S VALMBCK="Q"
 K ^PS(53.45,+$G(PSJSYSP),6)
 Q
 ;
PSGACT ;Setup selectable actions based on order's status
 S (X,XKEYS)=$$CHKKEYS()
 N PSGR S PSGACT=""
 S PSJCOM=$P($G(^PS(55,DFN,"IV",+ON55,.2)),U,8)
 I PSJCOM S PSGR=0
 I PSJCOM S PSGR=$$AND^ORX8(PSJCOM) S:PSGR=1 PSGR=$$RNEWOK^PSJUTL2(PSJCOM,DFN)
 I 'PSJCOM S PSGR='$$EXPIRED^PSGOER(DFN,ON55)
 S X=XKEYS
 ;I P(17)="A" S PSGACT=$S(PSJCOM:"L",1:"EL") S:+X PSGACT=PSGACT_"DO"_$S(P(10):"",1:"H")_$S(PSGR:"R",1:"")
 ;I P(17)="A" S PSGACT="L" S:+X PSGACT=$S(P(10):"DROL",1:"DHROL")
 I P(17)="A" S PSGACT="EL" S:+X PSGACT=PSGACT_"DO"_$S(P(10):"",1:"H")_$S(PSGR:"R",1:"")
 I P(17)="H" S PSGACT="L" S:+X PSGACT=$S(P(10):"DL",1:"DHL")
 I P(17)="R" S PSGACT="L" ;S:+X PSGACT="DL"  PSJ*5*149
 I P(17)="D" S PSGACT="L"
 I P(17)="D"&P(12) S PSGACT="L" S:+X PSGACT="L"_$S(PSGR:"R",1:"")
 I P(17)="E" S PSGACT="L" D:+X
 . I $P($G(^PS(55,DFN,"IV",+ON55,.2)),U,4)="D" Q
 . S PSGACT="L"_$S($P($G(^PS(55,DFN,"IV",+ON55,2)),U,6):"",PSGR:"R",1:"")
 I P(17)="O" S PSGACT="L" S:+X PSGACT="DOL"
 I P(17)="N" S PSGACT="EL" S:+X PSGACT="DELV"
 S PSGACT=PSGACT_$P(X,U,2)
 Q
UDVARS ;* Remove un-use variables.
 K PSGCANFL,PSGDI,PSGDO,PSGEB,PSGEBN,PSGFD,PSGFDN,PSHSM,PSGLI
 K PSGLIN,PSGLMT,PSGMR,PSGMRN,PSGNEF,PSGOAT
 K PSGODO,PSGODT,PSGOEA,PSGOEAV,PSGOEEWF,PSGOENG,PSGOFD,PSGOFDN
 K PSGOHSM,PSGOINST,PSGOMR,PSGOMRN,PSGONC,PSGOPD,PSGOPDN,PSGOPR
 K PSGOPRN,PSGOSCH,PSGOSD,PSGOSDN,PSGOSI,PSGOSM,PSGOST,PSGOSTN
 K PSGPD,PSGPDN,PSGPI,PSGPR,PSGPRIO,PSGPRN,PSGPTMP,PSGRRF,PSGS0XT
 K PSGS0Y,PSGSCH,PSGSD,PSGSDN,PSGSI,PSGSM,PSGST,PSGSTAT,PSGSTN
 K PSGEFN,PSGOEFN,PSGOEEF,PSGOEEG,PSGOEEND,PSGPDRG,PSGPDRGN
 K PSGNESDO,PSGNODE,PSGOEDMR,PSGOEPR,PSGPEN,PSGPENWS
 Q
CHKKEYS()  ;* Check for users' key to set up appropriate actions
 ;Output:
 ;  X=a^b
 ;  a=1 for either RN or Pharmacist; 0 for other
 ;  b="V" if not verified by key owner
 S XX=$G(^PS(55,DFN,"IV",+ON,4)),X=0
 I +PSJSYSU=3 S X=1 D
 . I '+$P(XX,U,4) S $P(X,U,2)="V"
 . I $L($T(EN1^ORCFLAG)) S $P(X,U,2)=$P(X,U,2)_"G"
 I +PSJSYSU=1 S X=1 D
 . I '+XX S $P(X,U,2)="V"
 Q X
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSJLIORD   3245     printed  Sep 23, 2025@19:43:28                                                                                                                                                                                                    Page 2
PSJLIORD  ;BIR/MV-INPATIENT ORDER ENTRY FOR IV ;10 Mar 98 / 4:19 PM
 +1       ;;5.0;INPATIENT MEDICATIONS;**1,16,29,58,85,110,149,267**;16 DEC 97;Build 158
 +2       ;
 +3       ; Reference to ^PS(55 is supported by DBIA #2191.
 +4       ; Reference to EN1^ORCFLAG is supported by DBIA #3620.
 +5       ; Reference to AND^ORX8 is supported by DBIA #3632.
 +6       ;
EN(DFN,PSJORD) ; Display order with numbers.
 +1       ;N ON,ON55,P,PSIVAC,PSGEBN,PSGLI,PSJSTAR
 +2        NEW ON55,P,PSIVAC,PSGEBN,PSGLI,PSJSTAR
           KILL ^PS(53.45,+$GET(PSJSYSP),6)
 +3        DO UDVARS
 +4        SET (PSGEBN,PSGLI)=""
 +5       ;* S PSIVAC="C" S (P("PON"),ON,ON55)=+PSJORD_"V"
 +6        SET PSIVAC="E"
           SET (P("PON"),ON,ON55)=+PSJORD_"V"
 +7        SET PSIVUP=+$$GTPCI^PSIVUTL
           DO GT55^PSIVORFB
 +8        if '$DATA(P("OT"))
               DO GTOT^PSIVUTL(P(4))
 +9        NEW PSJL
 +10       NEW PSIVNUM
           SET PSIVNUM=1
 +11      ;;I $E(P("OT"))'="F" S PSJSTAR="(1)^(4)^(5)^(6)^(7)^(9)^(10)"
 +12       IF $EXTRACT(P("OT"))="I"
               SET PSJSTAR="(1)^(4)^(5)^(6)^(7)^(9)^(10)"
 +13      IF '$TEST
               SET PSJSTAR="(1)^(2)^(3)^(4)^(5)^(6)^(7)^(9)"
               DO GTDATA^PSJLIFN
 +14       NEW PSGACT
           DO PSGACT
 +15      ;* Only allow activity logs for non pharmacist/RN personel if coming
 +16      ;* from the Non-verify/pending option.
 +17       IF '+$PIECE(PSJSYSU,";")
               IF $GET(PSJPNV)
                   SET PSGACT="L"
 +18      ; Call to EN^PSJLIVMD
           DO EN^VALM("PSJ LM IV INPT ACTIVE")
 +19       SET VALMBCK="Q"
 +20       KILL ^PS(53.45,+$GET(PSJSYSP),6)
 +21       QUIT 
 +22      ;
PSGACT    ;Setup selectable actions based on order's status
 +1        SET (X,XKEYS)=$$CHKKEYS()
 +2        NEW PSGR
           SET PSGACT=""
 +3        SET PSJCOM=$PIECE($GET(^PS(55,DFN,"IV",+ON55,.2)),U,8)
 +4        IF PSJCOM
               SET PSGR=0
 +5        IF PSJCOM
               SET PSGR=$$AND^ORX8(PSJCOM)
               if PSGR=1
                   SET PSGR=$$RNEWOK^PSJUTL2(PSJCOM,DFN)
 +6        IF 'PSJCOM
               SET PSGR='$$EXPIRED^PSGOER(DFN,ON55)
 +7        SET X=XKEYS
 +8       ;I P(17)="A" S PSGACT=$S(PSJCOM:"L",1:"EL") S:+X PSGACT=PSGACT_"DO"_$S(P(10):"",1:"H")_$S(PSGR:"R",1:"")
 +9       ;I P(17)="A" S PSGACT="L" S:+X PSGACT=$S(P(10):"DROL",1:"DHROL")
 +10       IF P(17)="A"
               SET PSGACT="EL"
               if +X
                   SET PSGACT=PSGACT_"DO"_$SELECT(P(10):"",1:"H")_$SELECT(PSGR:"R",1:"")
 +11       IF P(17)="H"
               SET PSGACT="L"
               if +X
                   SET PSGACT=$SELECT(P(10):"DL",1:"DHL")
 +12      ;S:+X PSGACT="DL"  PSJ*5*149
           IF P(17)="R"
               SET PSGACT="L"
 +13       IF P(17)="D"
               SET PSGACT="L"
 +14       IF P(17)="D"&P(12)
               SET PSGACT="L"
               if +X
                   SET PSGACT="L"_$SELECT(PSGR:"R",1:"")
 +15       IF P(17)="E"
               SET PSGACT="L"
               if +X
                   Begin DoDot:1
 +16                   IF $PIECE($GET(^PS(55,DFN,"IV",+ON55,.2)),U,4)="D"
                           QUIT 
 +17                   SET PSGACT="L"_$SELECT($PIECE($GET(^PS(55,DFN,"IV",+ON55,2)),U,6):"",PSGR:"R",1:"")
                   End DoDot:1
 +18       IF P(17)="O"
               SET PSGACT="L"
               if +X
                   SET PSGACT="DOL"
 +19       IF P(17)="N"
               SET PSGACT="EL"
               if +X
                   SET PSGACT="DELV"
 +20       SET PSGACT=PSGACT_$PIECE(X,U,2)
 +21       QUIT 
UDVARS    ;* Remove un-use variables.
 +1        KILL PSGCANFL,PSGDI,PSGDO,PSGEB,PSGEBN,PSGFD,PSGFDN,PSHSM,PSGLI
 +2        KILL PSGLIN,PSGLMT,PSGMR,PSGMRN,PSGNEF,PSGOAT
 +3        KILL PSGODO,PSGODT,PSGOEA,PSGOEAV,PSGOEEWF,PSGOENG,PSGOFD,PSGOFDN
 +4        KILL PSGOHSM,PSGOINST,PSGOMR,PSGOMRN,PSGONC,PSGOPD,PSGOPDN,PSGOPR
 +5        KILL PSGOPRN,PSGOSCH,PSGOSD,PSGOSDN,PSGOSI,PSGOSM,PSGOST,PSGOSTN
 +6        KILL PSGPD,PSGPDN,PSGPI,PSGPR,PSGPRIO,PSGPRN,PSGPTMP,PSGRRF,PSGS0XT
 +7        KILL PSGS0Y,PSGSCH,PSGSD,PSGSDN,PSGSI,PSGSM,PSGST,PSGSTAT,PSGSTN
 +8        KILL PSGEFN,PSGOEFN,PSGOEEF,PSGOEEG,PSGOEEND,PSGPDRG,PSGPDRGN
 +9        KILL PSGNESDO,PSGNODE,PSGOEDMR,PSGOEPR,PSGPEN,PSGPENWS
 +10       QUIT 
CHKKEYS() ;* Check for users' key to set up appropriate actions
 +1       ;Output:
 +2       ;  X=a^b
 +3       ;  a=1 for either RN or Pharmacist; 0 for other
 +4       ;  b="V" if not verified by key owner
 +5        SET XX=$GET(^PS(55,DFN,"IV",+ON,4))
           SET X=0
 +6        IF +PSJSYSU=3
               SET X=1
               Begin DoDot:1
 +7                IF '+$PIECE(XX,U,4)
                       SET $PIECE(X,U,2)="V"
 +8                IF $LENGTH($TEXT(EN1^ORCFLAG))
                       SET $PIECE(X,U,2)=$PIECE(X,U,2)_"G"
               End DoDot:1
 +9        IF +PSJSYSU=1
               SET X=1
               Begin DoDot:1
 +10               IF '+XX
                       SET $PIECE(X,U,2)="V"
               End DoDot:1
 +11       QUIT X