- PSIVOD ;BIR/JCH-CREATE NEW IV ORDER FROM OLD ONE ;25 Nov 98 / 3:34 PM
- ;;5.0; INPATIENT MEDICATIONS ;**110,127**;16 DEC 97
- ;
- ; Reference to ^PS(55 is supported by DBIA 2191.
- ; Reference to ^ORX2 is supported by DBIA 867.
- ;
- COPY(DFN,OLDON) ;Ask to enter new order.
- N PSIVOORD,OLDP,PSIVCOPY,PSGCOPY M OLDP=P
- Q:'$$HIDDEN^PSJLMUTL("COPY") D ^PSJHVARS
- I $P($G(^PS(55,PSGP,"IV",+PSGORD,.2)),U,4)="D",'$P($G(^(4)),"^",3) D G Q
- .W !!,"Nurse verified orders with a priority of DONE may not be Copied." D PAUSE^VALM1 Q
- S PSGOEAV=$P(PSJSYSP0,U,9)&PSJSYSU S PSIVOORD=PSJORD
- D FULL^VALM1
- F W !!,"Do you want to copy this order" S %=2 D YN^DICN Q:% D CH
- G:%'=1 Q
- S P("RES")="N",PSIVAC="PN",P("PON")=ON55,PSIVUP=+$$GTPCI^PSIVUTL,PSJORD=ON55,PSGORD=PSJORD
- N OLDACT,PSIVCHG S OLDACT=PSGACT S PSGACT=PSGACT_"E",P(17)="N",(P("LOG"),P("LF"))="",P(21)="" K P("NAT")
- S:'$G(PSGDT) PSGDT=$$DATE^PSJUTL2() S P("LOG")=PSGDT,P("PRNTON")=""
- D ENT^PSIVCAL,ENSTOP^PSIVCAL S ND4="^^^^" F I=5,6,8,9 S $P(ND2,"^",I)=""
- S P(17)=$S($G(PSGOEAV):"A",1:"N") S P("CLRK")=DUZ_"^"_$P($G(^VA(200,+DUZ,0)),"^")
- S PSIVCHG=0,PSJNEWOE=0,PSIVCOPY=1,VALMBCK="Q" K PSIVACEP
- N PSGORD,ON,ON55,PSJORD D NEW55^PSIVORFB S (PSJORD,ON)=ON55,PSIVCOPY=2
- D EN^VALM("PSJ LM IV AC/EDIT")
- I $G(P("NAT"))=""&($G(PSJORNAT)="") D G Q
- .D FULL^VALM1 W !!,"Order not copied" D PAUSE^VALM1
- W !!,"...copying..."
- ;
- I '$G(PSGOEAV) D INMED
- ;
- D FULL^VALM1 W !!?5,"You are finished with the new order.",!,"The following ACTION prompt is for the original order." D PAUSE^VALM1
- Q ; Kill and exit.
- L:'$D(PSJOE) -^PS(53.45,DUZ) S PSJNKF=1 D Q^PSIV
- K FIL,I1,ND,PC,PDM,PSGDT,PSGID,PSGLMT,PSGSI,PSJNARC,PSIVAC,PSIVCHG,PSIVUP,PSIVX,PSJOPC
- S VALMBCK="R"
- I '$G(PSGDT) S PSGDT=$$DATE^PSJUTL2
- S PSGACT=$$ENACTION^PSGOE1(PSGP,PSIVOORD) ; resets PSGACT after copy
- D RESTORE^PSJHVARS
- K P M P=OLDP
- Q
- ;
- INMED ;
- K PSJACEPT S VALMBCK="Q",PSIVCOPY=2,PSIVCHG=0 ;D ACEDIT^PSJLIACT
- N ON55TMP,P21TMP S ON55TMP=ON55,P21TMP=$G(P(21)) S P(21)="" I $G(ON55)["P",($G(PSJORD)["V") S ON55=PSJORD
- D DEL55^PSIVORE2 I $G(ON55TMP)]"" S ON55=ON55TMP,P(21)=P21TMP
- ;S (PSJORNAT,P("NAT"))="W"
- ;D OK^PSIVORE
- D EN^VALM("PSJ LM IV INPT ACTIVE")
- L -^PS(55,DFN,"IV",+ON55) D ULK
- I $G(P("NAT"))="" D G Q
- .D FULL^VALM1 W !!,"Order not copied" D PAUSE^VALM1
- Q
- ULK ;
- Q:'$G(PSJLSORX) ;If NEW^PSIVORE did not lock, don't kill it here.
- NEW X S X=DFN_";DPT(" D ULK^ORX2 K PSJLSORX
- Q
- HK ;Queue job to print MAR labels generated for this patient.
- I PSGOP,PSGOP'=DFN D
- .N PSJACPF,PSJACNWP,PSJPWD,PSJSYSL,PSJSYSW,PSJSYSW0,DFN,VAIN,VAERR S DFN=PSGOP
- .D INP^VADPT S PSJPWD=+VAIN(4) I PSJPWD S PSJACPF=10 S PSJACPF=10 D WP^PSJAC D:$P(PSJSYSL,U,2)]"" ENQL^PSGLW
- S PSGOP=DFN
- Q
- ;
- SPSOL S SPSOL=0 F XXX=0:0 S XXX=$O(^PS(55,DFN,"IV",+ON55,"SOL",XXX)) Q:'XXX S SPSOL=SPSOL+$P(^(XXX,0),U,2)
- K XXX Q
- CH ;
- W !!?2,"Answer 'YES' to have a new, non-verified order created for this patient,"
- W !,"using the information from this order. (The START and STOP dates will be",!,"recalculated.) Enter 'NO' (or '^') to stop now."
- Q
- PSIVOD ;BIR/JCH-CREATE NEW IV ORDER FROM OLD ONE ;25 Nov 98 / 3:34 PM
- +1 ;;5.0; INPATIENT MEDICATIONS ;**110,127**;16 DEC 97
- +2 ;
- +3 ; Reference to ^PS(55 is supported by DBIA 2191.
- +4 ; Reference to ^ORX2 is supported by DBIA 867.
- +5 ;
- COPY(DFN,OLDON) ;Ask to enter new order.
- +1 NEW PSIVOORD,OLDP,PSIVCOPY,PSGCOPY
- MERGE OLDP=P
- +2 IF '$$HIDDEN^PSJLMUTL("COPY")
- QUIT
- DO ^PSJHVARS
- +3 IF $PIECE($GET(^PS(55,PSGP,"IV",+PSGORD,.2)),U,4)="D"
- IF '$PIECE($GET(^(4)),"^",3)
- Begin DoDot:1
- +4 WRITE !!,"Nurse verified orders with a priority of DONE may not be Copied."
- DO PAUSE^VALM1
- QUIT
- End DoDot:1
- GOTO Q
- +5 SET PSGOEAV=$PIECE(PSJSYSP0,U,9)&PSJSYSU
- SET PSIVOORD=PSJORD
- +6 DO FULL^VALM1
- +7 FOR
- WRITE !!,"Do you want to copy this order"
- SET %=2
- DO YN^DICN
- IF %
- QUIT
- DO CH
- +8 IF %'=1
- GOTO Q
- +9 SET P("RES")="N"
- SET PSIVAC="PN"
- SET P("PON")=ON55
- SET PSIVUP=+$$GTPCI^PSIVUTL
- SET PSJORD=ON55
- SET PSGORD=PSJORD
- +10 NEW OLDACT,PSIVCHG
- SET OLDACT=PSGACT
- SET PSGACT=PSGACT_"E"
- SET P(17)="N"
- SET (P("LOG"),P("LF"))=""
- SET P(21)=""
- KILL P("NAT")
- +11 IF '$GET(PSGDT)
- SET PSGDT=$$DATE^PSJUTL2()
- SET P("LOG")=PSGDT
- SET P("PRNTON")=""
- +12 DO ENT^PSIVCAL
- DO ENSTOP^PSIVCAL
- SET ND4="^^^^"
- FOR I=5,6,8,9
- SET $PIECE(ND2,"^",I)=""
- +13 SET P(17)=$SELECT($GET(PSGOEAV):"A",1:"N")
- SET P("CLRK")=DUZ_"^"_$PIECE($GET(^VA(200,+DUZ,0)),"^")
- +14 SET PSIVCHG=0
- SET PSJNEWOE=0
- SET PSIVCOPY=1
- SET VALMBCK="Q"
- KILL PSIVACEP
- +15 NEW PSGORD,ON,ON55,PSJORD
- DO NEW55^PSIVORFB
- SET (PSJORD,ON)=ON55
- SET PSIVCOPY=2
- +16 DO EN^VALM("PSJ LM IV AC/EDIT")
- +17 IF $GET(P("NAT"))=""&($GET(PSJORNAT)="")
- Begin DoDot:1
- +18 DO FULL^VALM1
- WRITE !!,"Order not copied"
- DO PAUSE^VALM1
- End DoDot:1
- GOTO Q
- +19 WRITE !!,"...copying..."
- +20 ;
- +21 IF '$GET(PSGOEAV)
- DO INMED
- +22 ;
- +23 DO FULL^VALM1
- WRITE !!?5,"You are finished with the new order.",!,"The following ACTION prompt is for the original order."
- DO PAUSE^VALM1
- Q ; Kill and exit.
- +1 IF '$DATA(PSJOE)
- LOCK -^PS(53.45,DUZ)
- SET PSJNKF=1
- DO Q^PSIV
- +2 KILL FIL,I1,ND,PC,PDM,PSGDT,PSGID,PSGLMT,PSGSI,PSJNARC,PSIVAC,PSIVCHG,PSIVUP,PSIVX,PSJOPC
- +3 SET VALMBCK="R"
- +4 IF '$GET(PSGDT)
- SET PSGDT=$$DATE^PSJUTL2
- +5 ; resets PSGACT after copy
- SET PSGACT=$$ENACTION^PSGOE1(PSGP,PSIVOORD)
- +6 DO RESTORE^PSJHVARS
- +7 KILL P
- MERGE P=OLDP
- +8 QUIT
- +9 ;
- INMED ;
- +1 ;D ACEDIT^PSJLIACT
- KILL PSJACEPT
- SET VALMBCK="Q"
- SET PSIVCOPY=2
- SET PSIVCHG=0
- +2 NEW ON55TMP,P21TMP
- SET ON55TMP=ON55
- SET P21TMP=$GET(P(21))
- SET P(21)=""
- IF $GET(ON55)["P"
- IF ($GET(PSJORD)["V")
- SET ON55=PSJORD
- +3 DO DEL55^PSIVORE2
- IF $GET(ON55TMP)]""
- SET ON55=ON55TMP
- SET P(21)=P21TMP
- +4 ;S (PSJORNAT,P("NAT"))="W"
- +5 ;D OK^PSIVORE
- +6 DO EN^VALM("PSJ LM IV INPT ACTIVE")
- +7 LOCK -^PS(55,DFN,"IV",+ON55)
- DO ULK
- +8 IF $GET(P("NAT"))=""
- Begin DoDot:1
- +9 DO FULL^VALM1
- WRITE !!,"Order not copied"
- DO PAUSE^VALM1
- End DoDot:1
- GOTO Q
- +10 QUIT
- ULK ;
- +1 ;If NEW^PSIVORE did not lock, don't kill it here.
- IF '$GET(PSJLSORX)
- QUIT
- +2 NEW X
- SET X=DFN_";DPT("
- DO ULK^ORX2
- KILL PSJLSORX
- +3 QUIT
- HK ;Queue job to print MAR labels generated for this patient.
- +1 IF PSGOP
- IF PSGOP'=DFN
- Begin DoDot:1
- +2 NEW PSJACPF,PSJACNWP,PSJPWD,PSJSYSL,PSJSYSW,PSJSYSW0,DFN,VAIN,VAERR
- SET DFN=PSGOP
- +3 DO INP^VADPT
- SET PSJPWD=+VAIN(4)
- IF PSJPWD
- SET PSJACPF=10
- SET PSJACPF=10
- DO WP^PSJAC
- IF $PIECE(PSJSYSL,U,2)]""
- DO ENQL^PSGLW
- End DoDot:1
- +4 SET PSGOP=DFN
- +5 QUIT
- +6 ;
- SPSOL SET SPSOL=0
- FOR XXX=0:0
- SET XXX=$ORDER(^PS(55,DFN,"IV",+ON55,"SOL",XXX))
- IF 'XXX
- QUIT
- SET SPSOL=SPSOL+$PIECE(^(XXX,0),U,2)
- +1 KILL XXX
- QUIT
- CH ;
- +1 WRITE !!?2,"Answer 'YES' to have a new, non-verified order created for this patient,"
- +2 WRITE !,"using the information from this order. (The START and STOP dates will be",!,"recalculated.) Enter 'NO' (or '^') to stop now."
- +3 QUIT