PSIVLBL1 ;BIR/RGY-PRINT LABEL FROM WARD LIST ;24 Aug 2001  3:59 PM
 ;;5.0;INPATIENT MEDICATIONS;**69,58,81,97,104,279**;16 DEC 97;Build 150
 ;
 ; Reference to ^PS(55 is supported by DBIA 2191.
 ; Reference to ^%DT is supported by DBIA 10003.
 ; Reference to ^%ZIS is supported by DBIA 10086.
 ; Reference to ^%ZTLOAD is supported by DBIA 10063.
 ; Reference to ^DICN is supported by DBIA 10009.
 ; Reference to ^DIR is supported by DBIA 10026.
 ; Reference to ^VALM1 is supported by DBIA 10116.
 ;
START S Y=1 W !!,"Schedule labels for DATE: TODAY//" R X:DTIME S:'$T X="^" S:X="" X="T" Q:X["^"  I X'["?" S %DT="EX" D ^%DT
 G:Y<1 START
 I X["?" S HELP="LBL1" D ^PSIVHLP S X="?" D ^%DT G START
ASK S PSIVDT=Y\1 D ^PSIVWL1 G QUIT:'$D(PSIVOD)!('$D(PSIVCD))
 I PSIVPL'=ION D QUE G QUIT
DEQ ;
 L +^PS(55,"PSIVWL",PSIVSN):1 E  W:$Y @IOF W !!,"**** WARNING --- LABELS NOT",!,"   RUN, WARD LIST IN PROGRESS" G QUIT
 S PSIVT="" F PSIVLBL1=0:0 S PSIVT=$O(PSIVOD(PSIVT)) Q:PSIVT=""  S WRD="" D @("LBL"_$S($D(^PS(55,"PSIVWLM",PSIVSN,PSIVT_PSIVOD(PSIVT))):"M",1:"W"))
 I $G(PSJRPFLG) D
 . W !!,"*** NOTE ***"
 . W !!,"Schedule labels had already printed for the selected manufacturing time."
 . W !,"Please use the Reprint Scheduled Labels option instead.",!
 . K PSJRPFLG
QUIT L -^PS(55,"PSIVWL",PSIVSN) S:$D(ZTQUEUED) ZTREQ="@" K %,%DT,%T,D,DFN,I,JJ,NOFLG,ON,P,PSCT,PSIV,PSIVCD,PSIVDT,PSIVDOSE,PSIVMT,PSIVOD,PSIVNOL,PSIVT,VAERR,WRD,X,X1,X2,Y,Z,ZTSK,OIX1,OIX2
 Q
LBLM ;
 N OIX1,OIX2 I '$D(^PS(55,"PSIVWLM",PSIVSN,PSIVT_PSIVOD(PSIVT),PSIVT)) D DESC(PSIVT) Q
 S OIX1=0 F  S OIX1=$O(^PS(55,"PSIVWLM",PSIVSN,PSIVT_PSIVOD(PSIVT),PSIVT,OIX1)) Q:OIX1=""  S OIX2=0 F  S OIX2=$O(^PS(55,"PSIVWLM",PSIVSN,PSIVT_PSIVOD(PSIVT),PSIVT,OIX1,OIX2)) Q:OIX2=""  D LBLM1
 K JX Q
LBLM1 ;
 S NOFLG=1 N DFNX,ONX
 S DFNX=0 F  S DFNX=$O(^PS(55,"PSIVWLM",PSIVSN,PSIVT_PSIVOD(PSIVT),PSIVT,OIX1,OIX2,DFNX)) Q:'DFNX  D
 . S DFN=+DFNX D ENIV^PSJAC S DFN=DFNX,ONX=0 F  S ONX=$O(^PS(55,"PSIVWLM",PSIVSN,PSIVT_PSIVOD(PSIVT),PSIVT,OIX1,OIX2,DFN,ONX)) Q:'ONX  D
 .. S ON=+ONX,WRD=$P(^(+ON),"^",2),X1=OIX1,X2=OIX2 D MEOW
 ; naked reference on line above refers to the ^PS(55,"PSIVWLM" reference on the line preceding the naked reference
 D:NOFLG DESC(PSIVT)
 Q
LBLW ; loop through ward lists
 N DFNX,ONX,WRDX
 S NOFLG=1 S WRDX=0 F  S WRDX=$O(^PS(55,"PSIVWL",PSIVSN,WRDX)) Q:WRDX=""  D
 . S WRD=WRDX S DFNX=0 F  S DFNX=$O(^PS(55,"PSIVWL",PSIVSN,WRD,PSIVT_PSIVOD(PSIVT),DFNX)) Q:'DFNX  D
 .. S DFN=+DFNX D ENIV^PSJAC S DFN=DFNX S ONX=0 F  S ONX=$O(^PS(55,"PSIVWL",PSIVSN,WRD,PSIVT_PSIVOD(PSIVT),DFN,ONX)) Q:'ONX  S ON=+ONX D MEOW
 D:NOFLG DESC(PSIVT)
 Q
MEOWRPT ;Reprint from man/ward list
 I '$O(^PS(55,"PSIVWL",PSIVSN,WRD,PSIVT_PSIVOD(PSIVT),DFN,+ON,0)) D MEOW Q
 S PSIVWMFL=1 ;this flag indicate prt/reprt from war/man list
 NEW PSJID,PSIVOID,PSIVID,X,XX
 F PSJID=0:0 S PSJID=$O(^PS(55,"PSIVWL",PSIVSN,WRD,PSIVT_PSIVOD(PSIVT),DFN,+ON,PSJID)) Q:'PSJID  D REPRT
 ;
 ; Kill old ID and set newly reprinted ID.
 ;
 F X=0:0 S X=$O(PSIVOID(X)) Q:'X  D
 . K ^PS(55,"PSIVWL",PSIVSN,WRD,PSIVT_PSIVOD(PSIVT),DFN,+ON,X)
 F X=0:0 S X=$O(PSIVID(X)) Q:'X  D
 . S ^PS(55,"PSIVWL",PSIVSN,WRD,PSIVT_PSIVOD(PSIVT),DFN,+ON,X)=""
 K PSIVWMFL,PSIVOID,PSIVID
 Q
REPRT ; Reprint labels using existing bcma ID
 S PSIVOID(PSJID)=""
 NEW PSJLB S XX=$G(^PS(55,DFN,"IVBCMA",PSJID,0)) Q:XX=""
 F X=1:1:9 S PSJLB(X)=$P(XX,U,X)
 I $S(PSJLB(4)="C":1,PSJLB(4)="G":1,PSJLB(4)="I":1,PSJLB(7)'="":1,PSJLB(9):1,1:0) Q
 S PSIVCTD=0,PSIVCT=1,PSIVNOL=1,P(4)=$P(^PS(55,DFN,"IV",+ON,0),"^",4)
 D REPRT^PSIVLBRP(DFN_"V"_PSJID)
 Q
MEOW ; Print labels
 S PSIVCT=1,PSIVNOL=+^PS(55,"PSIVWL",PSIVSN,WRD,PSIVT_PSIVOD(PSIVT),DFN,+ON),P16=$P(^(+ON),"^",3),PSIVDOSE=$P(^(+ON),"^",2) I '$P(^(+ON),"^",4) S $P(^(+ON),"^",4)=1 K PSIVCT
 I PSIVNOL=0 K PSIVDOSE,PSIVCT,PSIVWMFL,PSIVID Q
 N PSJSCH,PSJST,A,PSJOK
 S PSJSCH=$P(^PS(55,DFN,"IV",+ON,0),"^",9),PSJST=$$ONE^PSJBCMA(DFN,ON,PSJSCH)
 S PSJOK=1 I PSJST="O" S A=0 F  S A=$O(^PS(55,DFN,"IV",+ON,"LAB",A)) Q:A=""  I $P($G(^(A,0)),"^",3)=1 S PSJOK=0 Q
 Q:'PSJOK
 Q:"HOD"[$P(^PS(55,DFN,"IV",+ON,0),"^",17)
 I $O(^PS(55,"PSIVWL",PSIVSN,WRD,PSIVT_PSIVOD(PSIVT),DFN,ON,0)) D  Q
 . S NOFLG=0,PSJRPFLG=1
 S PSIVWMFL=1
 S IONOFF="",P(4)=$P(^PS(55,DFN,"IV",+ON,0),"^",4),ACTION=1,TRACK=2 D ^PSIVLTR D ^PSIVHYPL:P(4)="H",^PSIVLABL:"APSC"[P(4)
 I $D(PSIVID) S X=0 F  S X=$O(PSIVID(X)) Q:'X  D
 . S ^PS(55,"PSIVWL",PSIVSN,WRD,PSIVT_PSIVOD(PSIVT),DFN,ON,X)=""
 S NOFLG=0
 K PSIVDOSE,PSIVCT,PSIVWMFL,PSIVID Q
 ;
QUE S ZTIO=PSIVPL,ZTDESC="PRINT SCHEDULED IV LABELS",ZTRTN="DEQ^PSIVLBL1",PSIVT="",ZTSAVE("PSJSYSP0")=""
 F I=0:0 S PSIVT=$O(PSIVMT(PSIVT)) Q:PSIVT=""  S (ZTSAVE("PSIVCD("""_PSIVT_""")"),ZTSAVE("PSIVMT("""_PSIVT_""")"),ZTSAVE("PSIVOD("""_PSIVT_""")"))=""
 F X="PSIVSN","PSIVSITE","PSJSYSW0","PSJSYSU","IONOFF" S ZTSAVE(X)=""
 D ^%ZTLOAD W:$D(ZTSK) !,"Queued." Q
 ;
ENLBLI ;Print individual labels.
 D FULL^VALM1
 S PSJORD=ON D ENNH^PSIVORV2(ON)
 I ON'["V" W !!,$C(7),$C(7),"You may not print labels for a pending order." W ! K DIR S DIR(0)="E" D ^DIR K DIR G Q
A1 ;
 I "EDP"[$P(^PS(55,DFN,"IV",+ON,0),U,17) W !,$C(7),$C(7),"WARNING, this order is not active.",!,"Continue" S %=2 D YN^DICN G:%=2!(%=-1) Q G:%=0 A1
 D PAUSE^VALM1
 S PSIVLBTP=1,PSJMORE=0 D EN^VALM("PSJ LM IV LABELS") G Q
LBLBEG R !!,"Number of labels to print: ",X:DTIME Q:'$T!("^"[X)  S:X["?" HELP="NOL" D:X["?" ^PSIVHLP1 G:X["?" LBLBEG K:X'=+X!(X>10)!(X<1)!(X?.E1"."1N.N) X W:'$D(X) $C(7),$C(7),"??" G:'$D(X) LBLBEG S PSIVNOL=+X,PSIVCT=1
 ;
USAGE ;
 W !,"Count as daily usage" S %=1 D YN^DICN G:%=-1 Q K:%=1 PSIVCT I %=0 S HELP="NCILBL" D ^PSIVHLP1 G USAGE
 S P16=$S('$D(PSIVCT):$P(^PS(55,DFN,"IV",+ON,0),"^",16),1:0) S:'$D(PSIVCT) $P(^(0),"^",16)=P16+X
 S IONOFF="",IOP=PSIVPL,%ZIS="NQ" D ^%ZIS G:POP Q I IO=IO(0),($E(IOST)="C") W !!! D DEQIA,Q D HOME^%ZIS Q
 D HOME^%ZIS
 W ! S ZTDTH=$H,ZTIO=PSIVPL,ZTDESC="PRINT INDIVIDUAL IV LABELS",ZTRTN="DEQIA^PSIVLBL1" F X="IONOFF","P16","PSIVAC","PSIVNOL","PSIVSN","PSIVSITE","DFN","ON","PSJSYSW0","PSJSYSU","PSJSYSP0" S ZTSAVE(X)=""
 S:$D(PSIVCT) ZTSAVE("PSIVCT")="" D ^%ZTLOAD W:$D(ZTSK) !,"Queued."
Q ;K %,IONOFF,ON,ORNS,ORPV,ORSTOP,ORSTRT,ORSTS,ORVP,P,PSIVC,PSIVREA,J,N,N2,ORIFN,P17,SCHED,PSIVDOSE,PSIVNOL,PSIVNOW,VAERR
 K %,IONOFF,ORNS,ORPV,ORSTOP,ORSTRT,ORSTS,ORVP,PSIVC,PSIVREA,J,N,N2,ORIFN,P17,SCHED,PSIVDOSE,PSIVNOL,PSIVNOW,VAERR
 Q
DEQIA ;
 K PSIVDOSE S P(4)=$P(^PS(55,DFN,"IV",+ON,0),"^",4)
 S ACTION=1,TRACK=1 D ^PSIVLTR
 ;
 D ^PSIVHYPL:P(4)="H",^PSIVLABL:"APSC"[P(4) S:$D(ZTQUEUED) ZTREQ="@"
 Q
DESC(X) ;Expand the IV type.
 NEW XX,Y,DESC,X1,X2 S Y=$$CODES^PSIVUTL(X,55.01,.04)
 S XX="***NO "_Y_" DATA***"
 NEW MARX D TXT^PSGMUTL(XX,$P(PSIVSITE,U,13))
 F XX=1:1:(+PSIVSITE+$P(PSIVSITE,U,16))  W:XX>2 $G(MARX(XX-2)) W !
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSIVLBL1   6809     printed  Sep 23, 2025@19:40:27                                                                                                                                                                                                    Page 2
PSIVLBL1  ;BIR/RGY-PRINT LABEL FROM WARD LIST ;24 Aug 2001  3:59 PM
 +1       ;;5.0;INPATIENT MEDICATIONS;**69,58,81,97,104,279**;16 DEC 97;Build 150
 +2       ;
 +3       ; Reference to ^PS(55 is supported by DBIA 2191.
 +4       ; Reference to ^%DT is supported by DBIA 10003.
 +5       ; Reference to ^%ZIS is supported by DBIA 10086.
 +6       ; Reference to ^%ZTLOAD is supported by DBIA 10063.
 +7       ; Reference to ^DICN is supported by DBIA 10009.
 +8       ; Reference to ^DIR is supported by DBIA 10026.
 +9       ; Reference to ^VALM1 is supported by DBIA 10116.
 +10      ;
START      SET Y=1
           WRITE !!,"Schedule labels for DATE: TODAY//"
           READ X:DTIME
           if '$TEST
               SET X="^"
           if X=""
               SET X="T"
           if X["^"
               QUIT 
           IF X'["?"
               SET %DT="EX"
               DO ^%DT
 +1        if Y<1
               GOTO START
 +2        IF X["?"
               SET HELP="LBL1"
               DO ^PSIVHLP
               SET X="?"
               DO ^%DT
               GOTO START
ASK        SET PSIVDT=Y\1
           DO ^PSIVWL1
           if '$DATA(PSIVOD)!('$DATA(PSIVCD))
               GOTO QUIT
 +1        IF PSIVPL'=ION
               DO QUE
               GOTO QUIT
DEQ       ;
 +1        LOCK +^PS(55,"PSIVWL",PSIVSN):1
          IF '$TEST
               if $Y
                   WRITE @IOF
               WRITE !!,"**** WARNING --- LABELS NOT",!,"   RUN, WARD LIST IN PROGRESS"
               GOTO QUIT
 +2        SET PSIVT=""
           FOR PSIVLBL1=0:0
               SET PSIVT=$ORDER(PSIVOD(PSIVT))
               if PSIVT=""
                   QUIT 
               SET WRD=""
               DO @("LBL"_$SELECT($DATA(^PS(55,"PSIVWLM",PSIVSN,PSIVT_PSIVOD(PSIVT))):"M",1:"W"))
 +3        IF $GET(PSJRPFLG)
               Begin DoDot:1
 +4                WRITE !!,"*** NOTE ***"
 +5                WRITE !!,"Schedule labels had already printed for the selected manufacturing time."
 +6                WRITE !,"Please use the Reprint Scheduled Labels option instead.",!
 +7                KILL PSJRPFLG
               End DoDot:1
QUIT       LOCK -^PS(55,"PSIVWL",PSIVSN)
           if $DATA(ZTQUEUED)
               SET ZTREQ="@"
           KILL %,%DT,%T,D,DFN,I,JJ,NOFLG,ON,P,PSCT,PSIV,PSIVCD,PSIVDT,PSIVDOSE,PSIVMT,PSIVOD,PSIVNOL,PSIVT,VAERR,WRD,X,X1,X2,Y,Z,ZTSK,OIX1,OIX2
 +1        QUIT 
LBLM      ;
 +1        NEW OIX1,OIX2
           IF '$DATA(^PS(55,"PSIVWLM",PSIVSN,PSIVT_PSIVOD(PSIVT),PSIVT))
               DO DESC(PSIVT)
               QUIT 
 +2        SET OIX1=0
           FOR 
               SET OIX1=$ORDER(^PS(55,"PSIVWLM",PSIVSN,PSIVT_PSIVOD(PSIVT),PSIVT,OIX1))
               if OIX1=""
                   QUIT 
               SET OIX2=0
               FOR 
                   SET OIX2=$ORDER(^PS(55,"PSIVWLM",PSIVSN,PSIVT_PSIVOD(PSIVT),PSIVT,OIX1,OIX2))
                   if OIX2=""
                       QUIT 
                   DO LBLM1
 +3        KILL JX
           QUIT 
LBLM1     ;
 +1        SET NOFLG=1
           NEW DFNX,ONX
 +2        SET DFNX=0
           FOR 
               SET DFNX=$ORDER(^PS(55,"PSIVWLM",PSIVSN,PSIVT_PSIVOD(PSIVT),PSIVT,OIX1,OIX2,DFNX))
               if 'DFNX
                   QUIT 
               Begin DoDot:1
 +3                SET DFN=+DFNX
                   DO ENIV^PSJAC
                   SET DFN=DFNX
                   SET ONX=0
                   FOR 
                       SET ONX=$ORDER(^PS(55,"PSIVWLM",PSIVSN,PSIVT_PSIVOD(PSIVT),PSIVT,OIX1,OIX2,DFN,ONX))
                       if 'ONX
                           QUIT 
                       Begin DoDot:2
 +4                        SET ON=+ONX
                           SET WRD=$PIECE(^(+ON),"^",2)
                           SET X1=OIX1
                           SET X2=OIX2
                           DO MEOW
                       End DoDot:2
               End DoDot:1
 +5       ; naked reference on line above refers to the ^PS(55,"PSIVWLM" reference on the line preceding the naked reference
 +6        if NOFLG
               DO DESC(PSIVT)
 +7        QUIT 
LBLW      ; loop through ward lists
 +1        NEW DFNX,ONX,WRDX
 +2        SET NOFLG=1
           SET WRDX=0
           FOR 
               SET WRDX=$ORDER(^PS(55,"PSIVWL",PSIVSN,WRDX))
               if WRDX=""
                   QUIT 
               Begin DoDot:1
 +3                SET WRD=WRDX
                   SET DFNX=0
                   FOR 
                       SET DFNX=$ORDER(^PS(55,"PSIVWL",PSIVSN,WRD,PSIVT_PSIVOD(PSIVT),DFNX))
                       if 'DFNX
                           QUIT 
                       Begin DoDot:2
 +4                        SET DFN=+DFNX
                           DO ENIV^PSJAC
                           SET DFN=DFNX
                           SET ONX=0
                           FOR 
                               SET ONX=$ORDER(^PS(55,"PSIVWL",PSIVSN,WRD,PSIVT_PSIVOD(PSIVT),DFN,ONX))
                               if 'ONX
                                   QUIT 
                               SET ON=+ONX
                               DO MEOW
                       End DoDot:2
               End DoDot:1
 +5        if NOFLG
               DO DESC(PSIVT)
 +6        QUIT 
MEOWRPT   ;Reprint from man/ward list
 +1        IF '$ORDER(^PS(55,"PSIVWL",PSIVSN,WRD,PSIVT_PSIVOD(PSIVT),DFN,+ON,0))
               DO MEOW
               QUIT 
 +2       ;this flag indicate prt/reprt from war/man list
           SET PSIVWMFL=1
 +3        NEW PSJID,PSIVOID,PSIVID,X,XX
 +4        FOR PSJID=0:0
               SET PSJID=$ORDER(^PS(55,"PSIVWL",PSIVSN,WRD,PSIVT_PSIVOD(PSIVT),DFN,+ON,PSJID))
               if 'PSJID
                   QUIT 
               DO REPRT
 +5       ;
 +6       ; Kill old ID and set newly reprinted ID.
 +7       ;
 +8        FOR X=0:0
               SET X=$ORDER(PSIVOID(X))
               if 'X
                   QUIT 
               Begin DoDot:1
 +9                KILL ^PS(55,"PSIVWL",PSIVSN,WRD,PSIVT_PSIVOD(PSIVT),DFN,+ON,X)
               End DoDot:1
 +10       FOR X=0:0
               SET X=$ORDER(PSIVID(X))
               if 'X
                   QUIT 
               Begin DoDot:1
 +11               SET ^PS(55,"PSIVWL",PSIVSN,WRD,PSIVT_PSIVOD(PSIVT),DFN,+ON,X)=""
               End DoDot:1
 +12       KILL PSIVWMFL,PSIVOID,PSIVID
 +13       QUIT 
REPRT     ; Reprint labels using existing bcma ID
 +1        SET PSIVOID(PSJID)=""
 +2        NEW PSJLB
           SET XX=$GET(^PS(55,DFN,"IVBCMA",PSJID,0))
           if XX=""
               QUIT 
 +3        FOR X=1:1:9
               SET PSJLB(X)=$PIECE(XX,U,X)
 +4        IF $SELECT(PSJLB(4)="C":1,PSJLB(4)="G":1,PSJLB(4)="I":1,PSJLB(7)'="":1,PSJLB(9):1,1:0)
               QUIT 
 +5        SET PSIVCTD=0
           SET PSIVCT=1
           SET PSIVNOL=1
           SET P(4)=$PIECE(^PS(55,DFN,"IV",+ON,0),"^",4)
 +6        DO REPRT^PSIVLBRP(DFN_"V"_PSJID)
 +7        QUIT 
MEOW      ; Print labels
 +1        SET PSIVCT=1
           SET PSIVNOL=+^PS(55,"PSIVWL",PSIVSN,WRD,PSIVT_PSIVOD(PSIVT),DFN,+ON)
           SET P16=$PIECE(^(+ON),"^",3)
           SET PSIVDOSE=$PIECE(^(+ON),"^",2)
           IF '$PIECE(^(+ON),"^",4)
               SET $PIECE(^(+ON),"^",4)=1
               KILL PSIVCT
 +2        IF PSIVNOL=0
               KILL PSIVDOSE,PSIVCT,PSIVWMFL,PSIVID
               QUIT 
 +3        NEW PSJSCH,PSJST,A,PSJOK
 +4        SET PSJSCH=$PIECE(^PS(55,DFN,"IV",+ON,0),"^",9)
           SET PSJST=$$ONE^PSJBCMA(DFN,ON,PSJSCH)
 +5        SET PSJOK=1
           IF PSJST="O"
               SET A=0
               FOR 
                   SET A=$ORDER(^PS(55,DFN,"IV",+ON,"LAB",A))
                   if A=""
                       QUIT 
                   IF $PIECE($GET(^(A,0)),"^",3)=1
                       SET PSJOK=0
                       QUIT 
 +6        if 'PSJOK
               QUIT 
 +7        if "HOD"[$PIECE(^PS(55,DFN,"IV",+ON,0),"^",17)
               QUIT 
 +8        IF $ORDER(^PS(55,"PSIVWL",PSIVSN,WRD,PSIVT_PSIVOD(PSIVT),DFN,ON,0))
               Begin DoDot:1
 +9                SET NOFLG=0
                   SET PSJRPFLG=1
               End DoDot:1
               QUIT 
 +10       SET PSIVWMFL=1
 +11       SET IONOFF=""
           SET P(4)=$PIECE(^PS(55,DFN,"IV",+ON,0),"^",4)
           SET ACTION=1
           SET TRACK=2
           DO ^PSIVLTR
           if P(4)="H"
               DO ^PSIVHYPL
           if "APSC"[P(4)
               DO ^PSIVLABL
 +12       IF $DATA(PSIVID)
               SET X=0
               FOR 
                   SET X=$ORDER(PSIVID(X))
                   if 'X
                       QUIT 
                   Begin DoDot:1
 +13                   SET ^PS(55,"PSIVWL",PSIVSN,WRD,PSIVT_PSIVOD(PSIVT),DFN,ON,X)=""
                   End DoDot:1
 +14       SET NOFLG=0
 +15       KILL PSIVDOSE,PSIVCT,PSIVWMFL,PSIVID
           QUIT 
 +16      ;
QUE        SET ZTIO=PSIVPL
           SET ZTDESC="PRINT SCHEDULED IV LABELS"
           SET ZTRTN="DEQ^PSIVLBL1"
           SET PSIVT=""
           SET ZTSAVE("PSJSYSP0")=""
 +1        FOR I=0:0
               SET PSIVT=$ORDER(PSIVMT(PSIVT))
               if PSIVT=""
                   QUIT 
               SET (ZTSAVE("PSIVCD("""_PSIVT_""")"),ZTSAVE("PSIVMT("""_PSIVT_""")"),ZTSAVE("PSIVOD("""_PSIVT_""")"))=""
 +2        FOR X="PSIVSN","PSIVSITE","PSJSYSW0","PSJSYSU","IONOFF"
               SET ZTSAVE(X)=""
 +3        DO ^%ZTLOAD
           if $DATA(ZTSK)
               WRITE !,"Queued."
           QUIT 
 +4       ;
ENLBLI    ;Print individual labels.
 +1        DO FULL^VALM1
 +2        SET PSJORD=ON
           DO ENNH^PSIVORV2(ON)
 +3        IF ON'["V"
               WRITE !!,$CHAR(7),$CHAR(7),"You may not print labels for a pending order."
               WRITE !
               KILL DIR
               SET DIR(0)="E"
               DO ^DIR
               KILL DIR
               GOTO Q
A1        ;
 +1        IF "EDP"[$PIECE(^PS(55,DFN,"IV",+ON,0),U,17)
               WRITE !,$CHAR(7),$CHAR(7),"WARNING, this order is not active.",!,"Continue"
               SET %=2
               DO YN^DICN
               if %=2!(%=-1)
                   GOTO Q
               if %=0
                   GOTO A1
 +2        DO PAUSE^VALM1
 +3        SET PSIVLBTP=1
           SET PSJMORE=0
           DO EN^VALM("PSJ LM IV LABELS")
           GOTO Q
LBLBEG     READ !!,"Number of labels to print: ",X:DTIME
           if '$TEST!("^"[X)
               QUIT 
           if X["?"
               SET HELP="NOL"
           if X["?"
               DO ^PSIVHLP1
           if X["?"
               GOTO LBLBEG
           if X'=+X!(X>10)!(X<1)!(X?.E1"."1N.N)
               KILL X
           if '$DATA(X)
               WRITE $CHAR(7),$CHAR(7),"??"
           if '$DATA(X)
               GOTO LBLBEG
           SET PSIVNOL=+X
           SET PSIVCT=1
 +1       ;
USAGE     ;
 +1        WRITE !,"Count as daily usage"
           SET %=1
           DO YN^DICN
           if %=-1
               GOTO Q
           if %=1
               KILL PSIVCT
           IF %=0
               SET HELP="NCILBL"
               DO ^PSIVHLP1
               GOTO USAGE
 +2        SET P16=$SELECT('$DATA(PSIVCT):$PIECE(^PS(55,DFN,"IV",+ON,0),"^",16),1:0)
           if '$DATA(PSIVCT)
               SET $PIECE(^(0),"^",16)=P16+X
 +3        SET IONOFF=""
           SET IOP=PSIVPL
           SET %ZIS="NQ"
           DO ^%ZIS
           if POP
               GOTO Q
           IF IO=IO(0)
               IF ($EXTRACT(IOST)="C")
                   WRITE !!!
                   DO DEQIA
                   DO Q
                   DO HOME^%ZIS
                   QUIT 
 +4        DO HOME^%ZIS
 +5        WRITE !
           SET ZTDTH=$HOROLOG
           SET ZTIO=PSIVPL
           SET ZTDESC="PRINT INDIVIDUAL IV LABELS"
           SET ZTRTN="DEQIA^PSIVLBL1"
           FOR X="IONOFF","P16","PSIVAC","PSIVNOL","PSIVSN","PSIVSITE","DFN","ON","PSJSYSW0","PSJSYSU","PSJSYSP0"
               SET ZTSAVE(X)=""
 +6        if $DATA(PSIVCT)
               SET ZTSAVE("PSIVCT")=""
           DO ^%ZTLOAD
           if $DATA(ZTSK)
               WRITE !,"Queued."
Q         ;K %,IONOFF,ON,ORNS,ORPV,ORSTOP,ORSTRT,ORSTS,ORVP,P,PSIVC,PSIVREA,J,N,N2,ORIFN,P17,SCHED,PSIVDOSE,PSIVNOL,PSIVNOW,VAERR
 +1        KILL %,IONOFF,ORNS,ORPV,ORSTOP,ORSTRT,ORSTS,ORVP,PSIVC,PSIVREA,J,N,N2,ORIFN,P17,SCHED,PSIVDOSE,PSIVNOL,PSIVNOW,VAERR
 +2        QUIT 
DEQIA     ;
 +1        KILL PSIVDOSE
           SET P(4)=$PIECE(^PS(55,DFN,"IV",+ON,0),"^",4)
 +2        SET ACTION=1
           SET TRACK=1
           DO ^PSIVLTR
 +3       ;
 +4        if P(4)="H"
               DO ^PSIVHYPL
           if "APSC"[P(4)
               DO ^PSIVLABL
           if $DATA(ZTQUEUED)
               SET ZTREQ="@"
 +5        QUIT 
DESC(X)   ;Expand the IV type.
 +1        NEW XX,Y,DESC,X1,X2
           SET Y=$$CODES^PSIVUTL(X,55.01,.04)
 +2        SET XX="***NO "_Y_" DATA***"
 +3        NEW MARX
           DO TXT^PSGMUTL(XX,$PIECE(PSIVSITE,U,13))
 +4        FOR XX=1:1:(+PSIVSITE+$PIECE(PSIVSITE,U,16))
               if XX>2
                   WRITE $GET(MARX(XX-2))
               WRITE !
 +5        QUIT