PSIVMAN ;BIR/RGY,PR-COMPILE MAN LST FROM WRD LIST ;27 NOV 95 / 12:57 PM
;;5.0; INPATIENT MEDICATIONS ;;16 DEC 97
;
START S Y=1 W !!,"Run manufacturing list for DATE: TODAY//" R X:DTIME G:'$T Q S:X="" X="T" G Q:X["^" I X'["?" S %DT="EX" D ^%DT
G:Y<1 START
I X["?" S HELP="MLL" D ^PSIVHLP S X="?" D ^%DT G START
S PSIVDT=Y\1 D ^PSIVWL1 G:'$D(PSIVOD)!('$D(PSIVCD)) Q
I PSIVPR'=ION D QUE G Q
DEQ ;MANUFACTURING LIST START HERE
L +^PS(55,"PSIVWLM",PSIVSN):1 E W:$Y @IOF W !!,"****WARNING --- MANUFACTURING LIST NOT RUN****" G Q
S PSIVT="" F I=0:0 S PSIVT=$O(PSIVOD(PSIVT)) Q:PSIVT="" K ^PS(55,"PSIVWLM",PSIVSN,PSIVT_PSIVOD(PSIVT)) S WRD="",PSIVGL1="PSIVWLM",PSIVGL2=PSIVT_PSIVOD(PSIVT) F I=0:0 S WRD=$O(^PS(55,"PSIVWL",PSIVSN,WRD)) Q:WRD="" D RGY
S PSIVTTM="" F JJ=0:0 S PSIVTTM=$O(PSIVOD(PSIVTTM)) Q:PSIVTTM="" S PSIVGL2=PSIVTTM_PSIVOD(PSIVTTM) D ENT^PSIVMAN1
Q L -^PS(55,"PSIVWLM",PSIVSN) W:'$D(PSIVPR)&($Y) @IOF S:$D(ZTQUEUED) ZTREQ="@"
K D,DA,JJ,JJ1,NOFLG,ON,P,PSCT,PSIVDT,PSIVOD,PSIVMT,PSIVGL1,PSIVGL2,PSIVSL,WRD,PSIVT,PSIVTTM,%,%T,%DT,DFN,I,X,Y,ZTM,ZTSK,ADD,PSIV1,PSIV,IOP,PSIVCD,PSIVT,TOTAL,VAERR,Z D ENIVKV^PSGSETU Q
RGY F DFN=0:0 S DFN=$O(^PS(55,"PSIVWL",PSIVSN,WRD,PSIVT_PSIVOD(PSIVT),DFN)) Q:'DFN D RGY1
Q
RGY1 F ON=0:0 S ON=$O(^PS(55,"PSIVWL",PSIVSN,WRD,PSIVT_PSIVOD(PSIVT),DFN,ON)) Q:'ON S PSIVTTM=+^(ON)_"^"_WRD I PSIVTTM D SETP I "EOHPD"'[P(17) D ENS
Q
SETP S Y=^PS(55,DFN,"IV",ON,0) F X=1:1:23 S P(X)=$P(Y,"^",X)
Q
QUE S ZTIO=PSIVPR,ZTDESC="PRINT IV MANUFACTURING LIST",ZTRTN="DEQ^PSIVMAN",PSIVT="" F I=0:0 S PSIVT=$O(PSIVMT(PSIVT)) Q:PSIVT="" S (ZTSAVE("PSIVCD("""_PSIVT_""")"),ZTSAVE("PSIVMT("""_PSIVT_""")"),ZTSAVE("PSIVOD("""_PSIVT_""")"))=""
F X="PSIVSN","PSIVDT","PSIVSITE","PSJSYSW0","PSJSYSP0","PSJSYSU" S ZTSAVE(X)=""
D ^%ZTLOAD W:$D(ZTSK) !,"Queued." Q
;
ENS ;
S P(4)=$P(^PS(55,DFN,"IV",ON,0),"^",4)
SETS S PSIVSOL=$S($D(^(+$O(^PS(55,DFN,"IV",ON,"SOL",0)),0)):^(0),1:"zz7") I PSIVSOL S PSIVSOL=$S($D(^PS(52.7,+PSIVSOL,0)):$E($P(^(0),"^"),1,10)_"^"_$P(PSIVSOL,"^",2),1:+PSIVSOL)_"^"_7_";"_+PSIVSOL
;
SETA S PSIVADD=$S($D(^(+$O(^PS(55,DFN,"IV",ON,"AD",0)),0)):^(0),1:"zz6") I PSIVADD S PSIVADD=$S($D(^PS(52.6,+PSIVADD,0)):$E($P(^(0),"^"),1,10)_"^"_$P(PSIVADD,"^",2),1:+PSIVADD)_"^"_6_";"_+PSIVADD
S ^(0)=$S($D(^PS(55,PSIVGL1,PSIVSN,PSIVGL2,P(4),$S("PS"[P(4)!(P(23)="P"!(P(23)="S")):PSIVADD,1:PSIVSOL),0)):+^(0),1:0)+PSIVTTM,^($S("PS"[P(4)!(P(23)="P"!(P(23)="S")):PSIVSOL,1:PSIVADD),DFN,ON)=PSIVTTM
K PSIVTTM,PSIVADD,PSIVSOL Q
PSIVMAN ;BIR/RGY,PR-COMPILE MAN LST FROM WRD LIST ;27 NOV 95 / 12:57 PM
+1 ;;5.0; INPATIENT MEDICATIONS ;;16 DEC 97
+2 ;
START SET Y=1
WRITE !!,"Run manufacturing list for DATE: TODAY//"
READ X:DTIME
IF '$TEST
GOTO Q
IF X=""
SET X="T"
IF X["^"
GOTO Q
IF X'["?"
SET %DT="EX"
DO ^%DT
+1 IF Y<1
GOTO START
+2 IF X["?"
SET HELP="MLL"
DO ^PSIVHLP
SET X="?"
DO ^%DT
GOTO START
+3 SET PSIVDT=Y\1
DO ^PSIVWL1
IF '$DATA(PSIVOD)!('$DATA(PSIVCD))
GOTO Q
+4 IF PSIVPR'=ION
DO QUE
GOTO Q
DEQ ;MANUFACTURING LIST START HERE
+1 LOCK +^PS(55,"PSIVWLM",PSIVSN):1
IF '$TEST
IF $Y
WRITE @IOF
WRITE !!,"****WARNING --- MANUFACTURING LIST NOT RUN****"
GOTO Q
+2 SET PSIVT=""
FOR I=0:0
SET PSIVT=$ORDER(PSIVOD(PSIVT))
IF PSIVT=""
QUIT
KILL ^PS(55,"PSIVWLM",PSIVSN,PSIVT_PSIVOD(PSIVT))
SET WRD=""
SET PSIVGL1="PSIVWLM"
SET PSIVGL2=PSIVT_PSIVOD(PSIVT)
FOR I=0:0
SET WRD=$ORDER(^PS(55,"PSIVWL",PSIVSN,WRD))
IF WRD=""
QUIT
DO RGY
+3 SET PSIVTTM=""
FOR JJ=0:0
SET PSIVTTM=$ORDER(PSIVOD(PSIVTTM))
IF PSIVTTM=""
QUIT
SET PSIVGL2=PSIVTTM_PSIVOD(PSIVTTM)
DO ENT^PSIVMAN1
Q LOCK -^PS(55,"PSIVWLM",PSIVSN)
IF '$DATA(PSIVPR)&($Y)
WRITE @IOF
IF $DATA(ZTQUEUED)
SET ZTREQ="@"
+1 KILL D,DA,JJ,JJ1,NOFLG,ON,P,PSCT,PSIVDT,PSIVOD,PSIVMT,PSIVGL1,PSIVGL2,PSIVSL,WRD,PSIVT,PSIVTTM,%,%T,%DT,DFN,I,X,Y,ZTM,ZTSK,ADD,PSIV1,PSIV,IOP,PSIVCD,PSIVT,TOTAL,VAERR,Z
DO ENIVKV^PSGSETU
QUIT
RGY FOR DFN=0:0
SET DFN=$ORDER(^PS(55,"PSIVWL",PSIVSN,WRD,PSIVT_PSIVOD(PSIVT),DFN))
IF 'DFN
QUIT
DO RGY1
+1 QUIT
RGY1 FOR ON=0:0
SET ON=$ORDER(^PS(55,"PSIVWL",PSIVSN,WRD,PSIVT_PSIVOD(PSIVT),DFN,ON))
IF 'ON
QUIT
SET PSIVTTM=+^(ON)_"^"_WRD
IF PSIVTTM
DO SETP
IF "EOHPD"'[P(17)
DO ENS
+1 QUIT
SETP SET Y=^PS(55,DFN,"IV",ON,0)
FOR X=1:1:23
SET P(X)=$PIECE(Y,"^",X)
+1 QUIT
QUE SET ZTIO=PSIVPR
SET ZTDESC="PRINT IV MANUFACTURING LIST"
SET ZTRTN="DEQ^PSIVMAN"
SET PSIVT=""
FOR I=0:0
SET PSIVT=$ORDER(PSIVMT(PSIVT))
IF PSIVT=""
QUIT
SET (ZTSAVE("PSIVCD("""_PSIVT_""")"),ZTSAVE("PSIVMT("""_PSIVT_""")"),ZTSAVE("PSIVOD("""_PSIVT_""")"))=""
+1 FOR X="PSIVSN","PSIVDT","PSIVSITE","PSJSYSW0","PSJSYSP0","PSJSYSU"
SET ZTSAVE(X)=""
+2 DO ^%ZTLOAD
IF $DATA(ZTSK)
WRITE !,"Queued."
QUIT
+3 ;
ENS ;
+1 SET P(4)=$PIECE(^PS(55,DFN,"IV",ON,0),"^",4)
SETS SET PSIVSOL=$SELECT($DATA(^(+$ORDER(^PS(55,DFN,"IV",ON,"SOL",0)),0)):^(0),1:"zz7")
IF PSIVSOL
SET PSIVSOL=$SELECT($DATA(^PS(52.7,+PSIVSOL,0)):$EXTRACT($PIECE(^(0),"^"),1,10)_"^"_$PIECE(PSIVSOL,"^",2),1:+PSIVSOL)_"^"_7_";"_+PSIVSOL
+1 ;
SETA SET PSIVADD=$SELECT($DATA(^(+$ORDER(^PS(55,DFN,"IV",ON,"AD",0)),0)):^(0),1:"zz6")
IF PSIVADD
SET PSIVADD=$SELECT($DATA(^PS(52.6,+PSIVADD,0)):$EXTRACT($PIECE(^(0),"^"),1,10)_"^"_$PIECE(PSIVADD,"^",2),1:+PSIVADD)_"^"_6_";"_+PSIVADD
+1 SET ^(0)=$SELECT($DATA(^PS(55,PSIVGL1,PSIVSN,PSIVGL2,P(4),$SELECT("PS"[P(4)!(P(23)="P"!(P(23)="S")):PSIVADD,1:PSIVSOL),0)):+^(0),1:0)+PSIVTTM
SET ^($SELECT("PS"[P(4)!(P(23)="P"!(P(23)="S")):PSIVSOL,1:PSIVADD),DFN,ON)=PSIVTTM
+2 KILL PSIVTTM,PSIVADD,PSIVSOL
QUIT