PSJHL5 ;BIR/LDT - ACTIONS ON HL7 MESSAGES FROM OE/RR ;Oct 02, 2018@09:01
 ;;5.0;INPATIENT MEDICATIONS ;**1,28,39,40,42,84,85,95,80,173,134,181,259,339,319**;16 DEC 97;Build 31
 ;
 ; Reference to ^PS(55 is supported by DBIA# 2191.
 ; Reference to EN^ORERR is supported by DBIA# 2187.
 ; Reference to NURV^ALPBCBU is supported by DBIA# 4120.
 ; Reference to UNESC^ORHLESC is supported by DBIA# 4922
 ;
ASSIGN ; number assigned, update ORDERS FILE ENTRY
 S RXORDER=RXORDER_"0)"
 I '$P($G(@RXORDER),U) S ORDCON="Invalid Pharmacy order number/Number Assign Msg" S X="ORERR" X ^%ZOSF("TEST") I  D EN^ORERR(ORDCON,.PSJMSG) Q
 Q:'$P($G(@RXORDER),U)
 I RXON["P",PSJHLDFN'=$P($G(@(RXORDER)),U,15) S ORDCON="Patient does not match/Number Assign Msg" S X="ORERR" X ^%ZOSF("TEST") I  D EN^ORERR(ORDCON,.PSJMSG) Q
 I RXON["P",PSJHLDFN'=$P($G(@(RXORDER)),U,15) Q
 S $P(@RXORDER,"^",21)=PSJORDER
 Q
 ;
NURSEACK ;Nurse Acknowledgement of Pending Orders
 I '$P($G(@(RXORDER_"0)")),U) S ORDCON="Invalid Pharmacy order number/Nurse Acknowledgement Msg" S X="ORERR" X ^%ZOSF("TEST") I  D EN^ORERR(ORDCON,.PSJMSG) Q
 Q:'$P($G(@(RXORDER_"0)")),U)
 I RXON["P",PSJHLDFN'=$P($G(@(RXORDER_"0)")),U,15) S ORDCON="Patient does not match/Nurse Acknowledgement Msg" S X="ORERR" X ^%ZOSF("TEST") I  D EN^ORERR(ORDCON,.PSJMSG) Q
 I RXON["P",PSJHLDFN'=$P($G(@(RXORDER_"0)")),U,15) Q
 ;I RXON["P" N STATUS S STATUS=$P($G(@(RXORDER_"0)")),U,9) D:STATUS="N" EN^PSJHLV(PSJHLDFN,RXON)
 ; rbd PSJ*5*319 Nurse Verification logic allow Activation
 ;   if FINISHed by Nurse having PSJ RNFINISH or PSJI RNFINISH keys
 N AREC,ARECNUM,ARECTOT,ASTR,FINKEY,FNCODE,FNFLAG,FNNURSE,RXTYPE
 S ASTR=$C(34)_"A"_$C(34)
 I RXON["P" N STATUS S STATUS=$P($G(@(RXORDER_"0)")),U,9) S FNFLAG=0 D  D:FNFLAG EN^PSJHLV(PSJHLDFN,RXON) K:$D(FINKEY) PSJSYSP
 . S RXTYPE=$P($G(@(RXORDER_"0)")),U,4)
 . I "^U^I^F^H^"[(U_RXTYPE_U) D
 .. S FINKEY=$S(RXTYPE="U":"PSJ RNFINISH",1:"PSJI RNFINISH")
 .. I FINKEY="PSJI RNFINISH" S:'$D(PSJSYSP) PSJSYSP=+NURSEACK
 .. S ARECTOT=$P($G(@(RXORDER_ASTR_",0)")),U,4)
 .. F ARECNUM=ARECTOT:-1:1 D
 ... S AREC=$G(@(RXORDER_ASTR_","_ARECNUM_",0)")) I AREC]"" D
 .... S FNCODE=$P(AREC,U,3),FNNURSE=$P(AREC,U,2)
 .... I FNCODE=22000,$D(^XUSEC(FINKEY,FNNURSE)) S FNFLAG=1
 I RXON["P" N STATUS S STATUS=$P($G(@(RXORDER_"0)")),U,9) Q:STATUS="A"
 N DIE,DA
 S DIE=$S(RXON["N"!(RXON["P"):"^PS(53.1,",RXON["V":"^PS(55,"_PSJHLDFN_",""IV"",",1:"^PS(55,"_PSJHLDFN_",5,"),DA=+RXON,DA(1)=PSJHLDFN
 S DR="16////"_NURSEACK_";17////"_ACKDATE S:RXON["U" DR=DR_";51////1" S:RXON["V" DR=DR_";143////1",PSIVACT=""
 I RXON["U" D NEWUDAL^PSGAL5(PSJHLDFN,RXON,22010)
 I RXON["P" D NEWNVAL^PSGAL5(RXON,22010)
 S PSGNVF=1 D ^DIE
 I RXON["V" NEW ON55,DFN,PSIVAL,PSIVREA,PSIVLN K PSIVACT D
 . S ON55=RXON,DFN=PSJHLDFN,PSIVAL="ORDER VERIFIED BY NURSE",PSIVALT="",PSIVREA="V"
 . D LOG^PSIVORAL
 D:RXON["P" EN^PSJLOI(PSJHLDFN,RXON) D:RXON["U" EN2^PSJLOI(PSJHLDFN,RXON)
 K:RXON["U" ^PS(55,"ANV",PSJHLDFN,+RXON)
 I $T(NURV^ALPBCBU)'="" D NURV^ALPBCBU(PSJHLDFN,RXON)
 Q
 ;
EDIT ;Edit orders thru OE/RR
 N DA,DR,DIE,PREORDER,STPDT,PSIVACT,PSIVALT,ON55,PSIVREA,PSIVALCK,P,PSJFLD1,PSJFLD2,PSJFLD3
 S PREORDER=$S((PREON["N")!(PREON["P"):"^PS(53.1,"_+PREON_",2)",PREON["V":"^PS(55,"_PSJHLDFN_",""IV"","_+PREON_",0)",1:"^PS(55,"_PSJHLDFN_",5,"_+PREON_",2)")
 S STPDT=$S(PREON["V":$P($G(@PREORDER),"^",3),1:$P($G(@PREORDER),"^",4))
 D NOW^%DTC
 S DIE=$S(PREON["N"!(PREON["P"):"^PS(53.1,",PREON["V":"^PS(55,"_PSJHLDFN_",""IV"",",1:"^PS(55,"_PSJHLDFN_",5,"),DA=+PREON,DA(1)=+PSJHLDFN
 S PSJFLD1="100////D;157////DF;116////^S X=STPDT;123////E;114////"_PSJORDER_";.03////"_%
 S PSJFLD2="25////"_%_";28////DE;107////E;105////"_PSJORDER_";32////"_STPDT
 S PSJFLD3="25////"_STPDT_";28////DE;136////DF;107////E;105////"_PSJORDER_";34////"_%
 S DR=$S(PREON["V":PSJFLD1,((PREON["P")!(PREON["N")):PSJFLD2,1:PSJFLD3)
 I PREON["U"!(PREON["A") S PSGAL("C")=4100 D ^PSGAL5
 I PREON["V" S PSIVACT=1,PSIVALT=2,ON55=PREON,PSIVREA="D",PSIVALCK="STOP",P(3)=STPDT
 D ^DIE,AUE^PSJHL6(PSJHLDFN,PREON)
 I PREON["V" N DFN S DFN=PSJHLDFN D LOG^PSIVORAL
 S PSJHLMTN="ORM",PSOC=$S((PREON["N")!(PREON["P"):"OC",1:"OD") D EN1^PSJHL2(PSJHLDFN,PSOC,PREON) S PSJHLMTN="ORR",PSOC="XO"
 Q
 ;
EDITCK ;Check to see if PSJHLDFN passed matches PSJHLDFN in pending order.
 I (PREON["N")!(PREON["P"),PSJHLDFN'=$P($G(^PS(53.1,+PREON,0)),U,15) D
 . S ORDCON="Patient does not match/Edit Msg" S X="ORERR" X ^%ZOSF("TEST") I  D EN^ORERR(ORDCON,.PSJMSG)
 . D EN1^PSJHLERR(PSJHLDFN,"UX",$P(ORDER,"^"),ORDCON) S QFLG=1
 Q
 ;
STATUS ;Check status of an order in response to a send order status request from CPRS.
 N STATUS,STPDT,NODE,NODE2
 S NODE=$G(@(RXORDER_"0)")),NODE2=$G(@(RXORDER_"2)"))
 I 'NODE S PSREASON="Invalid Pharmacy order number" D  Q
 .S X="ORERR" X ^%ZOSF("TEST") I  D EN^ORERR(PSREASON_"/Status Check",.PSJMSG)
 .D EN1^PSJHLERR(PSJHLDFN,"DE",$P(ORDER,U),PSREASON)
 S $P(@(RXORDER_"0)"),"^",21)=$P(ORDER,"^")
 S STATUS=$S(RXON["V":$P(NODE,"^",17),1:$P(NODE,"^",9))
 S STPDT=$S(RXON["V":$P(NODE,"^",3),1:$P(NODE2,"^",4))
 D NOW^%DTC I RXON'["P" I "DEH"'[STATUS I STPDT'>% D EXPIR^PSJHL6 Q
 D EN1^PSJHL2(PSJHLDFN,"SC",RXON)
 Q
 ;
FLAG ;Flag/Unflag orders
 I '$P($G(@(RXORDER_"0)")),U) S ORDCON="Invalid Pharmacy order number/Flag Msg" S X="ORERR" X ^%ZOSF("TEST") I  D EN^ORERR(ORDCON,.PSJMSG) Q
 Q:'$P($G(@(RXORDER_"0)")),U)
 S DIE=$S(RXON["N"!(RXON["P"):"^PS(53.1,",RXON["V":"^PS(55,"_PSJHLDFN_",""IV"",",1:"^PS(55,"_PSJHLDFN_",5,"),DA=+RXON,DA(1)=PSJHLDFN
 S DR=$S(PSJFLAG="FL":$S(RXON["V":"148////1",1:"124////1"),1:$S(RXON["V":"148////@",1:"124////@"))
 D ^DIE
 I $G(FLCMNT)]"" S FLCMNT=$$UNESC^ORHLESC(FLCMNT)
 I RXON["U" S FLCMNT="COMMENTS: "_FLCMNT S:$L(FLCMNT)>52 FLCMNT=$E(FLCMNT,1,49)_"..." D NEWUDAL^PSGAL5(PSJHLDFN,+RXON,$S((PSJFLAG="FL")&(PSJYN="PHR"):7000,(PSJFLAG="UF")&(PSJYN="PHR"):7010,(PSJFLAG="FL")&(PSJYN=""):7020,1:7030),FLCMNT)
 I RXON["V" N DFN,ON55,PSIVREA,PSIVAL S DFN=PSJHLDFN S PSIVALT="",ON55=RXON,PSIVREA=$S(PSJFLAG="FL":"G",1:"UG"),PSIVAL=$S(PSJYN="PHR":"FLAGGED BY PHARMACIST ",1:"FLAGGED BY CPRS ")_FLCMNT D LOG^PSIVORAL
 I RXON["P" S FLCMNT="COMMENTS: "_FLCMNT S:$L(FLCMNT)>52 FLCMNT=$E(FLCMNT,1,49)_"..." D NEWNVAL^PSGAL5(+RXON,$S((PSJFLAG="FL")&(PSJYN="PHR"):7000,(PSJFLAG="UF")&(PSJYN="PHR"):7010,(PSJFLAG="FL")&(PSJYN=""):7020,1:7030),FLCMNT)
 ;The ... on Unit Dose and Pending orders is because of the limitations in the DD of 53.1.
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSJHL5   6466     printed  Sep 23, 2025@19:43:07                                                                                                                                                                                                      Page 2
PSJHL5    ;BIR/LDT - ACTIONS ON HL7 MESSAGES FROM OE/RR ;Oct 02, 2018@09:01
 +1       ;;5.0;INPATIENT MEDICATIONS ;**1,28,39,40,42,84,85,95,80,173,134,181,259,339,319**;16 DEC 97;Build 31
 +2       ;
 +3       ; Reference to ^PS(55 is supported by DBIA# 2191.
 +4       ; Reference to EN^ORERR is supported by DBIA# 2187.
 +5       ; Reference to NURV^ALPBCBU is supported by DBIA# 4120.
 +6       ; Reference to UNESC^ORHLESC is supported by DBIA# 4922
 +7       ;
ASSIGN    ; number assigned, update ORDERS FILE ENTRY
 +1        SET RXORDER=RXORDER_"0)"
 +2        IF '$PIECE($GET(@RXORDER),U)
               SET ORDCON="Invalid Pharmacy order number/Number Assign Msg"
               SET X="ORERR"
               XECUTE ^%ZOSF("TEST")
              IF $TEST
                   DO EN^ORERR(ORDCON,.PSJMSG)
                   QUIT 
 +3        if '$PIECE($GET(@RXORDER),U)
               QUIT 
 +4        IF RXON["P"
               IF PSJHLDFN'=$PIECE($GET(@(RXORDER)),U,15)
                   SET ORDCON="Patient does not match/Number Assign Msg"
                   SET X="ORERR"
                   XECUTE ^%ZOSF("TEST")
                  IF $TEST
                       DO EN^ORERR(ORDCON,.PSJMSG)
                       QUIT 
 +5        IF RXON["P"
               IF PSJHLDFN'=$PIECE($GET(@(RXORDER)),U,15)
                   QUIT 
 +6        SET $PIECE(@RXORDER,"^",21)=PSJORDER
 +7        QUIT 
 +8       ;
NURSEACK  ;Nurse Acknowledgement of Pending Orders
 +1        IF '$PIECE($GET(@(RXORDER_"0)")),U)
               SET ORDCON="Invalid Pharmacy order number/Nurse Acknowledgement Msg"
               SET X="ORERR"
               XECUTE ^%ZOSF("TEST")
              IF $TEST
                   DO EN^ORERR(ORDCON,.PSJMSG)
                   QUIT 
 +2        if '$PIECE($GET(@(RXORDER_"0)")),U)
               QUIT 
 +3        IF RXON["P"
               IF PSJHLDFN'=$PIECE($GET(@(RXORDER_"0)")),U,15)
                   SET ORDCON="Patient does not match/Nurse Acknowledgement Msg"
                   SET X="ORERR"
                   XECUTE ^%ZOSF("TEST")
                  IF $TEST
                       DO EN^ORERR(ORDCON,.PSJMSG)
                       QUIT 
 +4        IF RXON["P"
               IF PSJHLDFN'=$PIECE($GET(@(RXORDER_"0)")),U,15)
                   QUIT 
 +5       ;I RXON["P" N STATUS S STATUS=$P($G(@(RXORDER_"0)")),U,9) D:STATUS="N" EN^PSJHLV(PSJHLDFN,RXON)
 +6       ; rbd PSJ*5*319 Nurse Verification logic allow Activation
 +7       ;   if FINISHed by Nurse having PSJ RNFINISH or PSJI RNFINISH keys
 +8        NEW AREC,ARECNUM,ARECTOT,ASTR,FINKEY,FNCODE,FNFLAG,FNNURSE,RXTYPE
 +9        SET ASTR=$CHAR(34)_"A"_$CHAR(34)
 +10       IF RXON["P"
               NEW STATUS
               SET STATUS=$PIECE($GET(@(RXORDER_"0)")),U,9)
               SET FNFLAG=0
               Begin DoDot:1
 +11               SET RXTYPE=$PIECE($GET(@(RXORDER_"0)")),U,4)
 +12               IF "^U^I^F^H^"[(U_RXTYPE_U)
                       Begin DoDot:2
 +13                       SET FINKEY=$SELECT(RXTYPE="U":"PSJ RNFINISH",1:"PSJI RNFINISH")
 +14                       IF FINKEY="PSJI RNFINISH"
                               if '$DATA(PSJSYSP)
                                   SET PSJSYSP=+NURSEACK
 +15                       SET ARECTOT=$PIECE($GET(@(RXORDER_ASTR_",0)")),U,4)
 +16                       FOR ARECNUM=ARECTOT:-1:1
                               Begin DoDot:3
 +17                               SET AREC=$GET(@(RXORDER_ASTR_","_ARECNUM_",0)"))
                                   IF AREC]""
                                       Begin DoDot:4
 +18                                       SET FNCODE=$PIECE(AREC,U,3)
                                           SET FNNURSE=$PIECE(AREC,U,2)
 +19                                       IF FNCODE=22000
                                               IF $DATA(^XUSEC(FINKEY,FNNURSE))
                                                   SET FNFLAG=1
                                       End DoDot:4
                               End DoDot:3
                       End DoDot:2
               End DoDot:1
               if FNFLAG
                   DO EN^PSJHLV(PSJHLDFN,RXON)
               if $DATA(FINKEY)
                   KILL PSJSYSP
 +20       IF RXON["P"
               NEW STATUS
               SET STATUS=$PIECE($GET(@(RXORDER_"0)")),U,9)
               if STATUS="A"
                   QUIT 
 +21       NEW DIE,DA
 +22       SET DIE=$SELECT(RXON["N"!(RXON["P"):"^PS(53.1,",RXON["V":"^PS(55,"_PSJHLDFN_",""IV"",",1:"^PS(55,"_PSJHLDFN_",5,")
           SET DA=+RXON
           SET DA(1)=PSJHLDFN
 +23       SET DR="16////"_NURSEACK_";17////"_ACKDATE
           if RXON["U"
               SET DR=DR_";51////1"
           if RXON["V"
               SET DR=DR_";143////1"
               SET PSIVACT=""
 +24       IF RXON["U"
               DO NEWUDAL^PSGAL5(PSJHLDFN,RXON,22010)
 +25       IF RXON["P"
               DO NEWNVAL^PSGAL5(RXON,22010)
 +26       SET PSGNVF=1
           DO ^DIE
 +27       IF RXON["V"
               NEW ON55,DFN,PSIVAL,PSIVREA,PSIVLN
               KILL PSIVACT
               Begin DoDot:1
 +28               SET ON55=RXON
                   SET DFN=PSJHLDFN
                   SET PSIVAL="ORDER VERIFIED BY NURSE"
                   SET PSIVALT=""
                   SET PSIVREA="V"
 +29               DO LOG^PSIVORAL
               End DoDot:1
 +30       if RXON["P"
               DO EN^PSJLOI(PSJHLDFN,RXON)
           if RXON["U"
               DO EN2^PSJLOI(PSJHLDFN,RXON)
 +31       if RXON["U"
               KILL ^PS(55,"ANV",PSJHLDFN,+RXON)
 +32       IF $TEXT(NURV^ALPBCBU)'=""
               DO NURV^ALPBCBU(PSJHLDFN,RXON)
 +33       QUIT 
 +34      ;
EDIT      ;Edit orders thru OE/RR
 +1        NEW DA,DR,DIE,PREORDER,STPDT,PSIVACT,PSIVALT,ON55,PSIVREA,PSIVALCK,P,PSJFLD1,PSJFLD2,PSJFLD3
 +2        SET PREORDER=$SELECT((PREON["N")!(PREON["P"):"^PS(53.1,"_+PREON_",2)",PREON["V":"^PS(55,"_PSJHLDFN_",""IV"","_+PREON_",0)",1:"^PS(55,"_PSJHLDFN_",5,"_+PREON_",2)")
 +3        SET STPDT=$SELECT(PREON["V":$PIECE($GET(@PREORDER),"^",3),1:$PIECE($GET(@PREORDER),"^",4))
 +4        DO NOW^%DTC
 +5        SET DIE=$SELECT(PREON["N"!(PREON["P"):"^PS(53.1,",PREON["V":"^PS(55,"_PSJHLDFN_",""IV"",",1:"^PS(55,"_PSJHLDFN_",5,")
           SET DA=+PREON
           SET DA(1)=+PSJHLDFN
 +6        SET PSJFLD1="100////D;157////DF;116////^S X=STPDT;123////E;114////"_PSJORDER_";.03////"_%
 +7        SET PSJFLD2="25////"_%_";28////DE;107////E;105////"_PSJORDER_";32////"_STPDT
 +8        SET PSJFLD3="25////"_STPDT_";28////DE;136////DF;107////E;105////"_PSJORDER_";34////"_%
 +9        SET DR=$SELECT(PREON["V":PSJFLD1,((PREON["P")!(PREON["N")):PSJFLD2,1:PSJFLD3)
 +10       IF PREON["U"!(PREON["A")
               SET PSGAL("C")=4100
               DO ^PSGAL5
 +11       IF PREON["V"
               SET PSIVACT=1
               SET PSIVALT=2
               SET ON55=PREON
               SET PSIVREA="D"
               SET PSIVALCK="STOP"
               SET P(3)=STPDT
 +12       DO ^DIE
           DO AUE^PSJHL6(PSJHLDFN,PREON)
 +13       IF PREON["V"
               NEW DFN
               SET DFN=PSJHLDFN
               DO LOG^PSIVORAL
 +14       SET PSJHLMTN="ORM"
           SET PSOC=$SELECT((PREON["N")!(PREON["P"):"OC",1:"OD")
           DO EN1^PSJHL2(PSJHLDFN,PSOC,PREON)
           SET PSJHLMTN="ORR"
           SET PSOC="XO"
 +15       QUIT 
 +16      ;
EDITCK    ;Check to see if PSJHLDFN passed matches PSJHLDFN in pending order.
 +1        IF (PREON["N")!(PREON["P")
               IF PSJHLDFN'=$PIECE($GET(^PS(53.1,+PREON,0)),U,15)
                   Begin DoDot:1
 +2                    SET ORDCON="Patient does not match/Edit Msg"
                       SET X="ORERR"
                       XECUTE ^%ZOSF("TEST")
                      IF $TEST
                           DO EN^ORERR(ORDCON,.PSJMSG)
 +3                    DO EN1^PSJHLERR(PSJHLDFN,"UX",$PIECE(ORDER,"^"),ORDCON)
                       SET QFLG=1
                   End DoDot:1
 +4        QUIT 
 +5       ;
STATUS    ;Check status of an order in response to a send order status request from CPRS.
 +1        NEW STATUS,STPDT,NODE,NODE2
 +2        SET NODE=$GET(@(RXORDER_"0)"))
           SET NODE2=$GET(@(RXORDER_"2)"))
 +3        IF 'NODE
               SET PSREASON="Invalid Pharmacy order number"
               Begin DoDot:1
 +4                SET X="ORERR"
                   XECUTE ^%ZOSF("TEST")
                  IF $TEST
                       DO EN^ORERR(PSREASON_"/Status Check",.PSJMSG)
 +5                DO EN1^PSJHLERR(PSJHLDFN,"DE",$PIECE(ORDER,U),PSREASON)
               End DoDot:1
               QUIT 
 +6        SET $PIECE(@(RXORDER_"0)"),"^",21)=$PIECE(ORDER,"^")
 +7        SET STATUS=$SELECT(RXON["V":$PIECE(NODE,"^",17),1:$PIECE(NODE,"^",9))
 +8        SET STPDT=$SELECT(RXON["V":$PIECE(NODE,"^",3),1:$PIECE(NODE2,"^",4))
 +9        DO NOW^%DTC
           IF RXON'["P"
               IF "DEH"'[STATUS
                   IF STPDT'>%
                       DO EXPIR^PSJHL6
                       QUIT 
 +10       DO EN1^PSJHL2(PSJHLDFN,"SC",RXON)
 +11       QUIT 
 +12      ;
FLAG      ;Flag/Unflag orders
 +1        IF '$PIECE($GET(@(RXORDER_"0)")),U)
               SET ORDCON="Invalid Pharmacy order number/Flag Msg"
               SET X="ORERR"
               XECUTE ^%ZOSF("TEST")
              IF $TEST
                   DO EN^ORERR(ORDCON,.PSJMSG)
                   QUIT 
 +2        if '$PIECE($GET(@(RXORDER_"0)")),U)
               QUIT 
 +3        SET DIE=$SELECT(RXON["N"!(RXON["P"):"^PS(53.1,",RXON["V":"^PS(55,"_PSJHLDFN_",""IV"",",1:"^PS(55,"_PSJHLDFN_",5,")
           SET DA=+RXON
           SET DA(1)=PSJHLDFN
 +4        SET DR=$SELECT(PSJFLAG="FL":$SELECT(RXON["V":"148////1",1:"124////1"),1:$SELECT(RXON["V":"148////@",1:"124////@"))
 +5        DO ^DIE
 +6        IF $GET(FLCMNT)]""
               SET FLCMNT=$$UNESC^ORHLESC(FLCMNT)
 +7        IF RXON["U"
               SET FLCMNT="COMMENTS: "_FLCMNT
               if $LENGTH(FLCMNT)>52
                   SET FLCMNT=$EXTRACT(FLCMNT,1,49)_"..."
               DO NEWUDAL^PSGAL5(PSJHLDFN,+RXON,$SELECT((PSJFLAG="FL")&(PSJYN="PHR"):7000,(PSJFLAG="UF")&(PSJYN="PHR"):7010,(PSJFLAG="FL")&(PSJYN=""):7020,1:7030),FLCMNT)
 +8        IF RXON["V"
               NEW DFN,ON55,PSIVREA,PSIVAL
               SET DFN=PSJHLDFN
               SET PSIVALT=""
               SET ON55=RXON
               SET PSIVREA=$SELECT(PSJFLAG="FL":"G",1:"UG")
               SET PSIVAL=$SELECT(PSJYN="PHR":"FLAGGED BY PHARMACIST ",1:"FLAGGED BY CPRS ")_FLCMNT
               DO LOG^PSIVORAL
 +9        IF RXON["P"
               SET FLCMNT="COMMENTS: "_FLCMNT
               if $LENGTH(FLCMNT)>52
                   SET FLCMNT=$EXTRACT(FLCMNT,1,49)_"..."
               DO NEWNVAL^PSGAL5(+RXON,$SELECT((PSJFLAG="FL")&(PSJYN="PHR"):7000,(PSJFLAG="UF")&(PSJYN="PHR"):7010,(PSJFLAG="FL")&(PSJYN=""):7020,1:7030),FLCMNT)
 +10      ;The ... on Unit Dose and Pending orders is because of the limitations in the DD of 53.1.
 +11       QUIT