- PSIVRD ;BIR/PR,MLM-HANDLE QUICK RET/DES ENTRY ;29 SEP 97 / 11:17 AM
- ;;5.0;INPATIENT MEDICATIONS;**38,58,88,279,407**;16 DEC 97;Build 26
- ; ;
- ; Reference to ^PS(55 is supported by DBIA 2191
- ;
- EN ; Entry point to enter returns/destroyed items.
- D ^PSIVXU Q:$D(XQUIT)!($G(DONE)) F D ENGETP^PSIV Q:DFN<0 D EN1 ;P407 Added DONE
- Q K ACTION,D,DFN,DIC,DIR,DRG,DRGI,DRGN,E,E1,HELP,I,I1,JJ,LABELS,MXMN,ON,ON55,ONCNT,P,PS,PSGDT,PSGID,PSGP,PSGLMT,PSGODDD,PSIVAC,PSIVC,PSIVNOL,PSIVNOW,PSIVON
- K PSIVPL,PSIVPR,PSIVSITE,PSIVUP,PSIVX,PSJORIFN,PSJORL,PSJHT,PSJPWT,PSJSYSL,PSJSYSU,PSJSYSW,PSJSYSW0,Q,UL80,VA,VADM,VAIN,VAERR,PSIVNU,PSIVOV1,PSIVOV2,PSIVSN,RDFLAG,RDWARD,X,XQUIT,Y
- Q
- ;
- EN1 ;
- S PSIVBR="D PROCESS^PSIVRD" D ENCHS1^PSIV
- Q
- EN1OLD ;
- ;S PSIVAC="RD" D ENNB^PSIVACT I P("PT")'="N" D GTORDRS Q
- ORDNO ;
- F R !!,"Enter the order number(s) to be processed: ",PSIVNU:DTIME Q:"^"[PSIVNU D READ
- Q
- ;
- READ ; Read order no.s, no profile.
- N DONE I '$T!(PSIVNU="^")!(PSIVNU="") S PSIVNU="" Q
- I PSIVNU["?" W !!,"Enter order number(s) separated by a comma e.g. 2,4,5,6.",! Q
- I PSIVNU[" " W $C(7),$C(7),"??",!! Q
- F I=1:1:$L(PSIVNU,",") S ON=$P(PSIVNU,",",I) D
- .I $L(ON)'>0 W $C(7),$C(7),"??",!! S DONE=1
- .F JJ=1:1:$L(ON) Q:$G(DONE) I $A($E(ON,JJ))<48!($A($E(ON,JJ))>57) W !!,$C(7),$C(7),"Order ",ON," is invalid.",!! S DONE=1
- I '$G(DONE) F I=1:1:$L(PSIVNU,",") S ON=$P(PSIVNU,",",I) I '$D(^PS(55,DFN,"IV",+ON,0)) W !!,$C(7),$C(7),"Order number ",+ON," does not exist for this patient.",! S DONE=1
- I '$G(DONE) D NOW^%DTC S PSIVNOW=% F ONCNT=1:1:$L(PSIVNU,",") D S ON=9999999999-$P(PSIVNU,",",ONCNT) D OV1
- .S X=$G(^PS(55,DFN,"IV",+ON,0)) I $P(X,U,3)<PSIVNOW,("AR"[$P(X,U,17)) S $P(^PS(55,DFN,"IV",+ON,0),U,17)="E" D EXPIR^PSIVOE
- Q
- ;**********************************************************
- ;* GTORDRS, ASK, OV subroutines are no longer use in 5.0. *
- ;**********************************************************
- GTORDRS ;Needs PSIVBR (Branch point)
- S IOP="HOME" D ^%ZIS K %ZIS,IOP Q:P("PT")="N"
- D ^PSIVPRO Q:X="^" I X]"" G OV
- ASK Q:PS<1 W !!,"Choose 1-",PS,": " R X:DTIME S:'$T X="^" Q:"^"[X
- I X?1."?" S HELP="CHSE" D ^PSIVHLP D:X?2."?" H2^PSGON G ASK
- S PSGLMT=PS D ^PSGON G:'$D(X) ASK
- OV ;
- W ! F PSIVOV1=1:1:PSGODDD F PSIVOV2=1:1:$L(PSGODDD(PSIVOV1),",")-1 S ON=+$P(PSGODDD(PSIVOV1),",",PSIVOV2),ON=$S($D(^TMP("PSIV",$J,"AB",ON)):^(ON),$D(^TMP("PSIV",$J,"NB",ON)):^(ON),$D(^TMP("PSIV",$J,"XB",ON)):^(ON),1:"") Q:'ON D OV1
- Q
- OV1 ;
- S (ON,ON55,P("PON"))=9999999999-ON_"V" K PSIVNUM D GT55^PSIVORFB,ENNONUM^PSIVORV2(DFN,ON)
- D PROCESS1
- Q
- ;
- PROCESS ;
- D FULL^VALM1
- S PSJORD=ON D ENNH^PSIVORV2(ON)
- PROCESS1 ;
- I '$D(^PS(55,DFN,"IV",+ON,9)) W !!,$C(7),$C(7),"No labels have been dispensed for this order." N DIR S DIR(0)="E" D ^DIR Q
- I $P(^PS(55,DFN,"IV",+ON,2),U,2)'=PSIVSN W !!,"WARNING ",$C(7),$C(7),$C(7),"This order is in a different IV room",!," from the one in which you are entering returned/destroyed!" S E1=$P(^(2),U,2),E=PSIVSN
- D PAUSE^VALM1
- S PSIVLBTP=2,PSJMORE=0,RDFLAG="ON" D EN^VALM("PSJ LM IV RETURN LABELS")
- Q
- ;
- ;S RDFLAG="ON",X="Was this bottle RECYCLED or DESTROYED or CANCELLED ?^R^^RECYCLED,DESTROYED,CANCELLED" D ENQ^PSIV Q:X=U I X["?" S HELP="RTDS" D ^PSIVHLP1 G PROCESS1
- ;W ! S Y=$E(X),PSIVC=$S(Y="R":2,Y="D":3,1:4)
- ;
- WARD ;Get the ward to associate returns or destroyed with.
- I '$D(PSJIDLST) W !,"No labels are available" D PAUSE^VALM1 Q
- K DIC I $D(^DPT(DFN,.1)) S DIC("B")=^DPT(DFN,.1)
- S DIC("A")="Enter ward or ^OUTPATIENT: ",DIC(0)="AEQ",DIC=42,D="B" D IX^DIC G:X="^"!(X="") KILL I $P("^OUTPATIENT",X)="" W $P("^OUTPATIENT",X,2) S RDWARD=.5 G WARD1
- S:Y>0 RDWARD=+Y I Y<0 G WARD
- ;
- WARD1 ;
- NEW PSIVCTD S PSIVCTD=""
- S PSJY=$$PROMPT^PSIVLBRP()
- Q:PSJY=""
- S PSIVNOL=0
- F PSJSEL=1:1 S PSJSEL1=$P(PSJY,",",PSJSEL) Q:PSJSEL1="" S PSIVNOL=PSIVNOL+1
- F PSJSEL=1:1 S PSJSEL1=$P(PSJY,",",PSJSEL) Q:PSJSEL1="" D
- . S PSJID=$G(PSJIDLST(PSJSEL1)) Q:PSJID=""
- . S PSJIDNO=$P(PSJID,"V",2) D NOW^%DTC
- . K DA,DR,DIE,DIC
- . S DA=PSJIDNO,DA(1)=DFN,DIE="^PS(55,"_DA(1)_",""IVBCMA"","
- . S DR="4////"_%_";5////"_$S(PSIVC=2:"RC",PSIVC=3:"DT",1:"CA")_";9////"_% D ^DIE
- . K DA,DR,DIE,DIC
- S LABELS=PSIVNOL,ACTION=$S(PSIVC=2:2,PSIVC=3:3,1:4) D ^PSIVLTR,^PSIVSTAT W "...Done."
- Q
- NRD ;Ask number of bottles/bags
- Q
- ;NO LONGER USE
- S MXMN=$P(^PS(55,DFN,"IV",+ON,9),U,3)
- NRD1 ;
- Q
- ;NO LONGER USE
- R !,"Number of bottles: ",X:DTIME W:'$T $C(7) S:'$T X="^" G:"^"[X KILL I X?1."?" S HELP="REDT" D ^PSIVHLP G NRD1
- I $S($E(X,$E(X)="-"+1,$L(X))'?1.N:1,X<-50:1,X>MXMN:1,1:'X) W $C(7)," ??" G NRD1
- ;
- S PSIVNOL=+X,LABELS=PSIVNOL,ACTION=$S(PSIVC=2:2,PSIVC=3:3,1:4) D ^PSIVLTR,^PSIVSTAT W "...Done."
- ;
- KILL ;
- Q
- ;NO LONGER USE
- W:"^"[X $C(7),"NO ACTION TAKEN" K D,LABELS,MXMN,X,Y,PSIVNOL,HELP,DIC,RDFLAG,PSIVC
- S VALMBCK="R"
- Q
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSIVRD 4860 printed Feb 18, 2025@23:31:19 Page 2
- PSIVRD ;BIR/PR,MLM-HANDLE QUICK RET/DES ENTRY ;29 SEP 97 / 11:17 AM
- +1 ;;5.0;INPATIENT MEDICATIONS;**38,58,88,279,407**;16 DEC 97;Build 26
- +2 ; ;
- +3 ; Reference to ^PS(55 is supported by DBIA 2191
- +4 ;
- EN ; Entry point to enter returns/destroyed items.
- +1 ;P407 Added DONE
- DO ^PSIVXU
- if $DATA(XQUIT)!($GET(DONE))
- QUIT
- FOR
- DO ENGETP^PSIV
- if DFN<0
- QUIT
- DO EN1
- Q KILL ACTION,D,DFN,DIC,DIR,DRG,DRGI,DRGN,E,E1,HELP,I,I1,JJ,LABELS,MXMN,ON,ON55,ONCNT,P,PS,PSGDT,PSGID,PSGP,PSGLMT,PSGODDD,PSIVAC,PSIVC,PSIVNOL,PSIVNOW,PSIVON
- +1 KILL PSIVPL,PSIVPR,PSIVSITE,PSIVUP,PSIVX,PSJORIFN,PSJORL,PSJHT,PSJPWT,PSJSYSL,PSJSYSU,PSJSYSW,PSJSYSW0,Q,UL80,VA,VADM,VAIN,VAERR,PSIVNU,PSIVOV1,PSIVOV2,PSIVSN,RDFLAG,RDWARD,X,XQUIT,Y
- +2 QUIT
- +3 ;
- EN1 ;
- +1 SET PSIVBR="D PROCESS^PSIVRD"
- DO ENCHS1^PSIV
- +2 QUIT
- EN1OLD ;
- +1 ;S PSIVAC="RD" D ENNB^PSIVACT I P("PT")'="N" D GTORDRS Q
- ORDNO ;
- +1 FOR
- READ !!,"Enter the order number(s) to be processed: ",PSIVNU:DTIME
- if "^"[PSIVNU
- QUIT
- DO READ
- +2 QUIT
- +3 ;
- READ ; Read order no.s, no profile.
- +1 NEW DONE
- IF '$TEST!(PSIVNU="^")!(PSIVNU="")
- SET PSIVNU=""
- QUIT
- +2 IF PSIVNU["?"
- WRITE !!,"Enter order number(s) separated by a comma e.g. 2,4,5,6.",!
- QUIT
- +3 IF PSIVNU[" "
- WRITE $CHAR(7),$CHAR(7),"??",!!
- QUIT
- +4 FOR I=1:1:$LENGTH(PSIVNU,",")
- SET ON=$PIECE(PSIVNU,",",I)
- Begin DoDot:1
- +5 IF $LENGTH(ON)'>0
- WRITE $CHAR(7),$CHAR(7),"??",!!
- SET DONE=1
- +6 FOR JJ=1:1:$LENGTH(ON)
- if $GET(DONE)
- QUIT
- IF $ASCII($EXTRACT(ON,JJ))<48!($ASCII($EXTRACT(ON,JJ))>57)
- WRITE !!,$CHAR(7),$CHAR(7),"Order ",ON," is invalid.",!!
- SET DONE=1
- End DoDot:1
- +7 IF '$GET(DONE)
- FOR I=1:1:$LENGTH(PSIVNU,",")
- SET ON=$PIECE(PSIVNU,",",I)
- IF '$DATA(^PS(55,DFN,"IV",+ON,0))
- WRITE !!,$CHAR(7),$CHAR(7),"Order number ",+ON," does not exist for this patient.",!
- SET DONE=1
- +8 IF '$GET(DONE)
- DO NOW^%DTC
- SET PSIVNOW=%
- FOR ONCNT=1:1:$LENGTH(PSIVNU,",")
- Begin DoDot:1
- +9 SET X=$GET(^PS(55,DFN,"IV",+ON,0))
- IF $PIECE(X,U,3)<PSIVNOW
- IF ("AR"[$PIECE(X,U,17))
- SET $PIECE(^PS(55,DFN,"IV",+ON,0),U,17)="E"
- DO EXPIR^PSIVOE
- End DoDot:1
- SET ON=9999999999-$PIECE(PSIVNU,",",ONCNT)
- DO OV1
- +10 QUIT
- +11 ;**********************************************************
- +12 ;* GTORDRS, ASK, OV subroutines are no longer use in 5.0. *
- +13 ;**********************************************************
- GTORDRS ;Needs PSIVBR (Branch point)
- +1 SET IOP="HOME"
- DO ^%ZIS
- KILL %ZIS,IOP
- if P("PT")="N"
- QUIT
- +2 DO ^PSIVPRO
- if X="^"
- QUIT
- IF X]""
- GOTO OV
- ASK if PS<1
- QUIT
- WRITE !!,"Choose 1-",PS,": "
- READ X:DTIME
- if '$TEST
- SET X="^"
- if "^"[X
- QUIT
- +1 IF X?1."?"
- SET HELP="CHSE"
- DO ^PSIVHLP
- if X?2."?"
- DO H2^PSGON
- GOTO ASK
- +2 SET PSGLMT=PS
- DO ^PSGON
- if '$DATA(X)
- GOTO ASK
- OV ;
- +1 WRITE !
- FOR PSIVOV1=1:1:PSGODDD
- FOR PSIVOV2=1:1:$LENGTH(PSGODDD(PSIVOV1),",")-1
- SET ON=+$PIECE(PSGODDD(PSIVOV1),",",PSIVOV2)
- SET ON=$SELECT($DATA(^TMP("PSIV",$JOB,"AB",ON)):^(ON),$DATA(^TMP("PSIV",$JOB,"NB",ON)):^(ON),$DATA(^TMP("PSIV",$JOB,"XB",ON)):^(ON),1:"")
- if 'ON
- QUIT
- DO OV1
- +2 QUIT
- OV1 ;
- +1 SET (ON,ON55,P("PON"))=9999999999-ON_"V"
- KILL PSIVNUM
- DO GT55^PSIVORFB
- DO ENNONUM^PSIVORV2(DFN,ON)
- +2 DO PROCESS1
- +3 QUIT
- +4 ;
- PROCESS ;
- +1 DO FULL^VALM1
- +2 SET PSJORD=ON
- DO ENNH^PSIVORV2(ON)
- PROCESS1 ;
- +1 IF '$DATA(^PS(55,DFN,"IV",+ON,9))
- WRITE !!,$CHAR(7),$CHAR(7),"No labels have been dispensed for this order."
- NEW DIR
- SET DIR(0)="E"
- DO ^DIR
- QUIT
- +2 IF $PIECE(^PS(55,DFN,"IV",+ON,2),U,2)'=PSIVSN
- WRITE !!,"WARNING ",$CHAR(7),$CHAR(7),$CHAR(7),"This order is in a different IV room",!," from the one in which you are entering returned/destroyed!"
- SET E1=$PIECE(^(2),U,2)
- SET E=PSIVSN
- +3 DO PAUSE^VALM1
- +4 SET PSIVLBTP=2
- SET PSJMORE=0
- SET RDFLAG="ON"
- DO EN^VALM("PSJ LM IV RETURN LABELS")
- +5 QUIT
- +6 ;
- +7 ;S RDFLAG="ON",X="Was this bottle RECYCLED or DESTROYED or CANCELLED ?^R^^RECYCLED,DESTROYED,CANCELLED" D ENQ^PSIV Q:X=U I X["?" S HELP="RTDS" D ^PSIVHLP1 G PROCESS1
- +8 ;W ! S Y=$E(X),PSIVC=$S(Y="R":2,Y="D":3,1:4)
- +9 ;
- WARD ;Get the ward to associate returns or destroyed with.
- +1 IF '$DATA(PSJIDLST)
- WRITE !,"No labels are available"
- DO PAUSE^VALM1
- QUIT
- +2 KILL DIC
- IF $DATA(^DPT(DFN,.1))
- SET DIC("B")=^DPT(DFN,.1)
- +3 SET DIC("A")="Enter ward or ^OUTPATIENT: "
- SET DIC(0)="AEQ"
- SET DIC=42
- SET D="B"
- DO IX^DIC
- if X="^"!(X="")
- GOTO KILL
- IF $PIECE("^OUTPATIENT",X)=""
- WRITE $PIECE("^OUTPATIENT",X,2)
- SET RDWARD=.5
- GOTO WARD1
- +4 if Y>0
- SET RDWARD=+Y
- IF Y<0
- GOTO WARD
- +5 ;
- WARD1 ;
- +1 NEW PSIVCTD
- SET PSIVCTD=""
- +2 SET PSJY=$$PROMPT^PSIVLBRP()
- +3 if PSJY=""
- QUIT
- +4 SET PSIVNOL=0
- +5 FOR PSJSEL=1:1
- SET PSJSEL1=$PIECE(PSJY,",",PSJSEL)
- if PSJSEL1=""
- QUIT
- SET PSIVNOL=PSIVNOL+1
- +6 FOR PSJSEL=1:1
- SET PSJSEL1=$PIECE(PSJY,",",PSJSEL)
- if PSJSEL1=""
- QUIT
- Begin DoDot:1
- +7 SET PSJID=$GET(PSJIDLST(PSJSEL1))
- if PSJID=""
- QUIT
- +8 SET PSJIDNO=$PIECE(PSJID,"V",2)
- DO NOW^%DTC
- +9 KILL DA,DR,DIE,DIC
- +10 SET DA=PSJIDNO
- SET DA(1)=DFN
- SET DIE="^PS(55,"_DA(1)_",""IVBCMA"","
- +11 SET DR="4////"_%_";5////"_$SELECT(PSIVC=2:"RC",PSIVC=3:"DT",1:"CA")_";9////"_%
- DO ^DIE
- +12 KILL DA,DR,DIE,DIC
- End DoDot:1
- +13 SET LABELS=PSIVNOL
- SET ACTION=$SELECT(PSIVC=2:2,PSIVC=3:3,1:4)
- DO ^PSIVLTR
- DO ^PSIVSTAT
- WRITE "...Done."
- +14 QUIT
- NRD ;Ask number of bottles/bags
- +1 QUIT
- +2 ;NO LONGER USE
- +3 SET MXMN=$PIECE(^PS(55,DFN,"IV",+ON,9),U,3)
- NRD1 ;
- +1 QUIT
- +2 ;NO LONGER USE
- +3 READ !,"Number of bottles: ",X:DTIME
- if '$TEST
- WRITE $CHAR(7)
- if '$TEST
- SET X="^"
- if "^"[X
- GOTO KILL
- IF X?1."?"
- SET HELP="REDT"
- DO ^PSIVHLP
- GOTO NRD1
- +4 IF $SELECT($EXTRACT(X,$EXTRACT(X)="-"+1,$LENGTH(X))'?1.N:1,X<-50:1,X>MXMN:1,1:'X)
- WRITE $CHAR(7)," ??"
- GOTO NRD1
- +5 ;
- +6 SET PSIVNOL=+X
- SET LABELS=PSIVNOL
- SET ACTION=$SELECT(PSIVC=2:2,PSIVC=3:3,1:4)
- DO ^PSIVLTR
- DO ^PSIVSTAT
- WRITE "...Done."
- +7 ;
- KILL ;
- +1 QUIT
- +2 ;NO LONGER USE
- +3 if "^"[X
- WRITE $CHAR(7),"NO ACTION TAKEN"
- KILL D,LABELS,MXMN,X,Y,PSIVNOL,HELP,DIC,RDFLAG,PSIVC
- +4 SET VALMBCK="R"
- +5 QUIT