PSGOEVS ;BIR/CML3-SPEED VERIFY SELECTED ORDERS ;05 DEC 97 / 8:43 AM
 ;;5.0; INPATIENT MEDICATIONS ;**29,110**;16 DEC 97
 ;
 ; Reference to ^PS(55 is supported by DBIA 2191
 ; Reference to ^PSSLOCK is supported by DBIA #2789
 ;
EN ;
 I 'PSJSYSU W $C(7),!!,"THIS FUNCTION NOT AVAILABLE TO WARD STAFF." H 3 Q
 I '$D(PSJOCNT) W !!,"Speed verify is not available for IVs." H 3 Q
 W !,"Note: Only orders created by a RENEW can be speed verified."
 D FULL^VALM1
EN2 S PSGONV=PSJOCNT,PSJSPEED=1 D NOW^%DTC S PSGDT=+$E(%,1,2)
 S PSGONW="V",PSGLMT=PSGONV D ENWO^PSGON S PSJRB=X I "^"[X K X G DONE
 F PSGOEVS=1:1:PSGODDD F PSGOEVS1=1:1 S PSGOEVS2=$P(PSGODDD(PSGOEVS),",",PSGOEVS1) Q:'PSGOEVS2  D
 .S PSGORD=^TMP("PSJON",$J,PSGOEVS2)
 .I $$CHKIV Q
 .I $$CHKVER Q
 .;I '$$ACTIONS Q
 .N PSJCOM I $$CHKCOM Q
 .I '$$RENEWED Q
 .I $$FROMOERR Q
 .D VERIFY(PSJSPEED)
 ;
DONE ;
 K %,DA,N,PSGAL,PSGID,PSGLMT,PSGOD,PSGODDD,PSGOEVS,PSGOEVS1,PSGOEVS2
 K PSGONW,PSGORD,PSJRB,PSJRENEW,PSJSPEED
 N DIR S DIR(0)="E" D ^DIR
 Q
 ;
RENEWED() ;   was it created by a renew?
 S PSJRENEW=1
 I PSGORD'["P" D
 .S PSJRB=$G(^PS(55,PSGP,5,+PSGORD,.2))
 .S PSJRB=$$NAME(PSJRB)
 .W !!,"  ",PSGOEVS2,".  ",PSJRB
 .I $P(^PS(55,PSGP,5,+PSGORD,0),"^",24)'="R" D NOTREN Q
 E  I PSGORD["P" D
 .S PSJRB=$G(^PS(53.1,+PSGORD,.2))
 .S PSJRB=$$NAME(PSJRB)
 .W !!,"  ",PSGOEVS2,".  ",PSJRB
 .I $P(^PS(53.1,+PSGORD,0),"^",24)'="R" D NOTREN Q
 Q PSJRENEW
 ;
VERIFY(PSJSPEED) ;
 I '$$LS^PSSLOCK(PSGP,PSGORD) W !,"NO ACTION TAKEN ON ORDER",!  ; lock single order
 D GETUD^PSJLMGUD(PSGP,PSGORD),EN^PSGOEV(PSGORD)
 D UNL^PSSLOCK(PSGP,PSGORD)
 Q
 ;
CHKVER() ;   check if already verified
 I $D(^PS(55,PSGP,5,+PSGORD,4)),$P(^(4),"^",PSJSYSU) S N=$P(^(4),"^",+PSJSYSU),PSGOD=$P(^(4),"^",PSJSYSU+1)
 I  D VMSG H 2
 Q $T
 ;
CHKIV() ;   check if this order is an IV
 I PSGORD["V"
 I  W !,"  Order ",PSGOEVS2," is an IV order.",! H 2
 Q $T
CHKCOM() ;       Check if this order is a complex order
 S PSJCOM=0
 I PSGORD=+PSGORD S PSJCOM=PSGORD W !,"  Order ",PSGOEVS2," is part of a complex order series, No change made.",! H 2 Q PSJCOM
 S PSJCOM=$S(PSGORD["U":$P($G(^PS(55,PSGP,5,+PSGORD,.2)),U,8),1:$P($G(^PS(53.1,+PSGORD,.2)),U,8))
 I PSJCOM  W !,"  Order ",PSGOEVS2," is part of a complex order series, No change made.",! H 2
 Q PSJCOM
 ;
VMSG ;
 S N=$$ENNPN^PSGMI(N),PSJRB=$G(^PS(55,PSGP,5,+PSGORD,.2))
 S PSJRB=$$NAME(PSJRB)
 W !!,"  ",PSGOEVS2,".  ",PSJRB,!,"   was verified by ",N," on "
 W $$ENDTC^PSGMI(PSGOD),"."
 Q
NOTREN ;
 W !,"   was not created from a renew, No change made!" H 2
 S PSJRENEW=0
 Q
 ;
NAME(PSJRB)        ;
 I PSJRB S PSJRB=$$DRUGN_" "_$P(PSJRB,"^",2)
 E  S PSJRB="ORDERABLE ITEM - NOT FOUND"
 Q PSJRB
 ;
DRUGN() Q $P($$DRUGNAME^PSJLMUTL(PSGP,PSGORD),"^")
 ;
ACTIONS()    ;
 ;W !," ******  ",$$ENACTION^PSGOE1(PSGP,PSGORD)
 I $$ENACTION^PSGOE1(PSGP,PSGORD)["V"
 E  W !,PSGOEVS2,". CAN'T BE VERIFIED FOR SOME REASON!  ",PSGACT
 Q $T
 ;
FROMOERR()         ;  is it pending from OERR?
 I PSGORD["P"&($P($G(^PS(53.1,+PSGORD,0)),"^",9)="P")
 I  D
 .W !,"   is Pending from Order Entry/Results Reporting"
 .W ", No Change made." H 2
 Q $T
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSGOEVS   3190     printed  Sep 23, 2025@19:38:37                                                                                                                                                                                                     Page 2
PSGOEVS   ;BIR/CML3-SPEED VERIFY SELECTED ORDERS ;05 DEC 97 / 8:43 AM
 +1       ;;5.0; INPATIENT MEDICATIONS ;**29,110**;16 DEC 97
 +2       ;
 +3       ; Reference to ^PS(55 is supported by DBIA 2191
 +4       ; Reference to ^PSSLOCK is supported by DBIA #2789
 +5       ;
EN        ;
 +1        IF 'PSJSYSU
               WRITE $CHAR(7),!!,"THIS FUNCTION NOT AVAILABLE TO WARD STAFF."
               HANG 3
               QUIT 
 +2        IF '$DATA(PSJOCNT)
               WRITE !!,"Speed verify is not available for IVs."
               HANG 3
               QUIT 
 +3        WRITE !,"Note: Only orders created by a RENEW can be speed verified."
 +4        DO FULL^VALM1
EN2        SET PSGONV=PSJOCNT
           SET PSJSPEED=1
           DO NOW^%DTC
           SET PSGDT=+$EXTRACT(%,1,2)
 +1        SET PSGONW="V"
           SET PSGLMT=PSGONV
           DO ENWO^PSGON
           SET PSJRB=X
           IF "^"[X
               KILL X
               GOTO DONE
 +2        FOR PSGOEVS=1:1:PSGODDD
               FOR PSGOEVS1=1:1
                   SET PSGOEVS2=$PIECE(PSGODDD(PSGOEVS),",",PSGOEVS1)
                   if 'PSGOEVS2
                       QUIT 
                   Begin DoDot:1
 +3                    SET PSGORD=^TMP("PSJON",$JOB,PSGOEVS2)
 +4                    IF $$CHKIV
                           QUIT 
 +5                    IF $$CHKVER
                           QUIT 
 +6       ;I '$$ACTIONS Q
 +7                    NEW PSJCOM
                       IF $$CHKCOM
                           QUIT 
 +8                    IF '$$RENEWED
                           QUIT 
 +9                    IF $$FROMOERR
                           QUIT 
 +10                   DO VERIFY(PSJSPEED)
                   End DoDot:1
 +11      ;
DONE      ;
 +1        KILL %,DA,N,PSGAL,PSGID,PSGLMT,PSGOD,PSGODDD,PSGOEVS,PSGOEVS1,PSGOEVS2
 +2        KILL PSGONW,PSGORD,PSJRB,PSJRENEW,PSJSPEED
 +3        NEW DIR
           SET DIR(0)="E"
           DO ^DIR
 +4        QUIT 
 +5       ;
RENEWED() ;   was it created by a renew?
 +1        SET PSJRENEW=1
 +2        IF PSGORD'["P"
               Begin DoDot:1
 +3                SET PSJRB=$GET(^PS(55,PSGP,5,+PSGORD,.2))
 +4                SET PSJRB=$$NAME(PSJRB)
 +5                WRITE !!,"  ",PSGOEVS2,".  ",PSJRB
 +6                IF $PIECE(^PS(55,PSGP,5,+PSGORD,0),"^",24)'="R"
                       DO NOTREN
                       QUIT 
               End DoDot:1
 +7       IF '$TEST
               IF PSGORD["P"
                   Begin DoDot:1
 +8                    SET PSJRB=$GET(^PS(53.1,+PSGORD,.2))
 +9                    SET PSJRB=$$NAME(PSJRB)
 +10                   WRITE !!,"  ",PSGOEVS2,".  ",PSJRB
 +11                   IF $PIECE(^PS(53.1,+PSGORD,0),"^",24)'="R"
                           DO NOTREN
                           QUIT 
                   End DoDot:1
 +12       QUIT PSJRENEW
 +13      ;
VERIFY(PSJSPEED) ;
 +1       ; lock single order
           IF '$$LS^PSSLOCK(PSGP,PSGORD)
               WRITE !,"NO ACTION TAKEN ON ORDER",!
 +2        DO GETUD^PSJLMGUD(PSGP,PSGORD)
           DO EN^PSGOEV(PSGORD)
 +3        DO UNL^PSSLOCK(PSGP,PSGORD)
 +4        QUIT 
 +5       ;
CHKVER()  ;   check if already verified
 +1        IF $DATA(^PS(55,PSGP,5,+PSGORD,4))
               IF $PIECE(^(4),"^",PSJSYSU)
                   SET N=$PIECE(^(4),"^",+PSJSYSU)
                   SET PSGOD=$PIECE(^(4),"^",PSJSYSU+1)
 +2       IF $TEST
               DO VMSG
               HANG 2
 +3        QUIT $TEST
 +4       ;
CHKIV()   ;   check if this order is an IV
 +1        IF PSGORD["V"
 +2       IF $TEST
               WRITE !,"  Order ",PSGOEVS2," is an IV order.",!
               HANG 2
 +3        QUIT $TEST
CHKCOM()  ;       Check if this order is a complex order
 +1        SET PSJCOM=0
 +2        IF PSGORD=+PSGORD
               SET PSJCOM=PSGORD
               WRITE !,"  Order ",PSGOEVS2," is part of a complex order series, No change made.",!
               HANG 2
               QUIT PSJCOM
 +3        SET PSJCOM=$SELECT(PSGORD["U":$PIECE($GET(^PS(55,PSGP,5,+PSGORD,.2)),U,8),1:$PIECE($GET(^PS(53.1,+PSGORD,.2)),U,8))
 +4        IF PSJCOM
               WRITE !,"  Order ",PSGOEVS2," is part of a complex order series, No change made.",!
               HANG 2
 +5        QUIT PSJCOM
 +6       ;
VMSG      ;
 +1        SET N=$$ENNPN^PSGMI(N)
           SET PSJRB=$GET(^PS(55,PSGP,5,+PSGORD,.2))
 +2        SET PSJRB=$$NAME(PSJRB)
 +3        WRITE !!,"  ",PSGOEVS2,".  ",PSJRB,!,"   was verified by ",N," on "
 +4        WRITE $$ENDTC^PSGMI(PSGOD),"."
 +5        QUIT 
NOTREN    ;
 +1        WRITE !,"   was not created from a renew, No change made!"
           HANG 2
 +2        SET PSJRENEW=0
 +3        QUIT 
 +4       ;
NAME(PSJRB) ;
 +1        IF PSJRB
               SET PSJRB=$$DRUGN_" "_$P(PSJRB,"^",2)
 +2       IF '$TEST
               SET PSJRB="ORDERABLE ITEM - NOT FOUND"
 +3        QUIT PSJRB
 +4       ;
DRUGN()    QUIT $PIECE($$DRUGNAME^PSJLMUTL(PSGP,PSGORD),"^")
 +1       ;
ACTIONS() ;
 +1       ;W !," ******  ",$$ENACTION^PSGOE1(PSGP,PSGORD)
 +2        IF $$ENACTION^PSGOE1(PSGP,PSGORD)["V"
 +3       IF '$TEST
               WRITE !,PSGOEVS2,". CAN'T BE VERIFIED FOR SOME REASON!  ",PSGACT
 +4        QUIT $TEST
 +5       ;
FROMOERR() ;  is it pending from OERR?
 +1        IF PSGORD["P"&($PIECE($GET(^PS(53.1,+PSGORD,0)),"^",9)="P")
 +2       IF $TEST
               Begin DoDot:1
 +3                WRITE !,"   is Pending from Order Entry/Results Reporting"
 +4                WRITE ", No Change made."
                   HANG 2
               End DoDot:1
 +5        QUIT $TEST