PSJCLOR2 ;BIR/JCH - BUILD CLINIC ORDER LM HEADERS ; 2/28/12 9:11am
;;5.0;INPATIENT MEDICATIONS;**275,279,315,256,387**;16 DEC 97;Build 1
;;Per VHA Directive 2004-038, this routine should not be modified.
; Reference to ^PS(55 is supported by DBIA 2191
; Reference to CWAD^ORQPT2 is supported by DBIA 2831
; Reference to ^SC( is supported by DBIA 10040
; Reference to BSA^PSSDSAPI supported by DBIA #5425
; Reference to LS^PSSLOCK supported by DBIA #2789
; Reference to UNL^PSSLOCK supported by DBIA #2789
;
HDR(DFN) ; -- list screen header
; input: DFN := ifn of pat
; output: VALMHDR() := hdr array
;
K VAIN,VADM,GMRA,PSJACNWP,PSJ,VAERR,VA,X
S PSJACNWP=1 D ENBOTH^PSJAC
D HDRO(DFN)
S PSJ=" Sex: "_$P(PSJPSEX,U,2),VALMHDR(4)=$$SETSTR^VALM1($S(PSJPDD:"Last ",1:" ")_"Admitted: "_$P($G(PSJPAD),U,2),PSJ,45,23)
S PSJ=" Dx: "_$G(PSJPDX)
S:PSJPDD VALMHDR(5)=$$SETSTR^VALM1("Discharged: "_$E($P(PSJPDD,U,2),1,8),PSJ,48,26)
S:'PSJPDD VALMHDR(5)=$$SETSTR^VALM1("Last transferred: "_$$ENDTC^PSGMI(PSJPTD),PSJ,42,26)
;
; Display CrCl/BSA - show serum creatinine if CrCl can't be calculated
S PSJBSA=$$BSA^PSSDSAPI(DFN),PSJBSA=$P(PSJBSA,"^",3),PSJBSA=$S(PSJBSA'>0:"__________",1:$J(PSJBSA,4,2))
; RSLT -- DATE^CRCL^Serum Creatinine -- Ex. 11/25/11^68.7^1.1
S RSLT=$$CRCL^PSJLMHED(DFN)
; Display format of CrCL and Creatinine results updated - PSJ*5.0*387
I ($P($G(RSLT),"^",2)["Not Found")&($P($G(RSLT),"^",3)<.01) S ZDSPL=" CrCL: "_$P(RSLT,"^",2)_" (CREAT: Not Found)"
I ($P($G(RSLT),"^",2)["Not Found")&($P($G(RSLT),"^",3)>=.01) S ZDSPL=" CrCL: "_$P(RSLT,"^",2)_" (CREAT: "_$P($G(RSLT),"^",3)_"mg/dL "_$P($G(RSLT),"^")_")"
I ($P($G(RSLT),"^",2)'["Not Found")&($P($G(RSLT),"^",3)<.01) S ZDSPL=" CrCL: "_$P(RSLT,"^",2)_" (CREAT: Not Found)"
I ($P($G(RSLT),"^",2)'["Not Found")&($P($G(RSLT),"^",3)>=.01) S ZDSPL=" CrCL: "_$P(RSLT,"^",2)_"(est.)"_" (CREAT: "_$P($G(RSLT),"^",3)_"mg/dL "_$P($G(RSLT),"^")_")"
S PSJDB=$G(ZDSPL),VALMHDR(6)=$$SETSTR^VALM1("BSA (m2): "_$G(PSJBSA),PSJDB,50,23) K PSJBSA,ZDSPL,RSLT
Q
;
HDRO(DFN) ; Standardized part of profile header.
N PSJCLIN,PSJAPPT,PSJCLINN,RMORDT S (PSJCLIN,PSJAPPT)=0,(RMORDT,PSJCLINN)="" I $G(PSJORD) D
. S PSJCLIN=$S($G(PSJORD)["V":$G(^PS(55,DFN,"IV",+PSJORD,"DSS")),$G(PSJORD)["U":$G(^PS(55,DFN,5,+PSJORD,8)),$G(PSJORD)["P":$G(^PS(53.1,+PSJORD,"DSS")),1:"")
. S:PSJCLIN PSJAPPT=$P($G(PSJCLIN),U,2) I PSJCLIN,PSJAPPT S PSJCLINN=$P($G(^SC(+PSJCLIN,0)),U)
K VALMHDR I PSJCLINN]"" S PSJ=VADM(1),PSJ=$$SETSTR^VALM1(" Clinic: "_PSJCLINN,PSJ,28,26)
I PSJCLINN="" S PSJ=VADM(1),PSJ=$$SETSTR^VALM1($S('PSJPDD:" ",1:"Last ")_"Ward: "_PSJPWDN,PSJ,30,18)
S X=$$CWAD^ORQPT2(DFN)
S:X]"" X=$G(IORVON)_X_$G(IORVOFF),PSJ=$$SETSTR^VALM1(X,PSJ,80-$L(X),80) S VALMHDR(1)=PSJ
S PSJ=" PID: "_$P(PSJPSSN,U,2)
S RMORDT=$S($G(PSJPDD):"Last ",1:" ")_"Room-Bed: "_$G(PSJPRB)
I PSJCLINN]"",PSJAPPT S RMORDT="Clinic Date: "_$$ENDTC^PSGMI(PSJAPPT),RMORDT=$P(RMORDT," ")_" "_$P(RMORDT," ",2)
S PSJ=$$SETSTR^VALM1(RMORDT,PSJ,26,28),VALMHDR(2)=$$SETSTR^VALM1("Ht(cm): "_PSJPHT_" "_PSJPHTD,PSJ,55,25)
S PSJ=" DOB: "_$P($P(PSJPDOB,U,2)," ")_" ("_PSJPAGE_")",VALMHDR(3)=$$SETSTR^VALM1("Wt(kg): "_PSJPWT_" "_PSJPWTD,PSJ,55,25)
Q
;
INIT(PSJPROT) ; -- init bld vars
; PSJPROT=1:UD ONLY; 2:IV ONLY; 3:BOTH
K PSJUDPRF,^TMP("PSJ",$J),^TMP("PSJON",$J),^TMP("PSJPRO",$J),^TMP("PSJCLOR",$J) D FULL^VALM1
N TMPCLIN,DFN,UDU S PSJVALQ=0,TMPCLIN="",DFN=PSGP,PSGSSAV=PSGSS,UDU=$S($P(PSJSYSU,";",3)>1:3,1:1)
S:PSJPROT=1 PSJUDPRF=1
D KILL^VALM10(),EN^PSJCLOR3(PSJPROT)
I '$D(^TMP("PSJ",$J)) W !!,?22,"NO CLINIC ORDERS FOUND." S VALMQUIT=1,PSJVALQ=1 D PAUSE^PSJLMUTL Q
S PSJLN=1,PSJEN=1 S PSJCLIN="" F S PSJCLIN=$O(^TMP("PSJ",$J,PSJCLIN)) Q:PSJCLIN="" S PSJTF=0,PSJC="" F S PSJC=$O(^TMP("PSJ",$J,PSJCLIN,PSJC)) Q:PSJC="" D
.N PSJF S PSJF="^PS("_$S("AO"[PSJC:"55,"_PSGP_",5,",PSJC="DF":"55,"_PSGP_",5,",1:"53.1,")
.I TMPCLIN'=PSJCLIN D TF S PSJTF=$E(PSJC,1),TMPCLIN=PSJCLIN ;DAM 8-29-07 Added Q:PSJC="CB" Q:PSJC="O"
.S PSJST="" F S PSJST=$O(^TMP("PSJ",$J,PSJCLIN,PSJC,PSJST)) Q:PSJST="" D
..S PSJS="" F S PSJS=$O(^TMP("PSJ",$J,PSJCLIN,PSJC,PSJST,PSJS)) Q:PSJS="" Q:PSJC="CB" Q:PSJC="O" Q:PSJC="DF" D ON ;DAM 8-29-07 Added Q:PSJC="CB" Q:PSJC="O"
.;
.;DAM 8-29-07 New code to place Pending Orders after Pending Renewal Orders on the roll and scroll display. Non-Active Orders appear last.
S PSJCLIN="" F S PSJCLIN=$O(^TMP("PSJ",$J,PSJCLIN)) Q:PSJCLIN="" S PSJTF=0,PSJC="" F S PSJC=$O(^TMP("PSJ",$J,PSJCLIN,PSJC)) Q:PSJC="" D
. N PSJF S PSJF="^PS("_$S("AO"[PSJC:"55,"_PSGP_",5,",PSJC="DF":"55,"_PSGP_",5,",1:"53.1,")
. I PSJC="CB" I TMPCLIN'=PSJCLIN D TF S PSJTF=$E(PSJC,1),TMPCLIN=PSJCLIN ;These are Pending Orders
. I PSJC="CB" S PSJST="" F S PSJST=$O(^TMP("PSJ",$J,PSJCLIN,PSJC,PSJST)) Q:PSJST="" D
. . S PSJS="" F S PSJS=$O(^TMP("PSJ",$J,PSJCLIN,PSJC,PSJST,PSJS)) Q:PSJS="" D ON
. I PSJC="DF" I TMPCLIN'=PSJCLIN D TF S PSJTF=$E(PSJC,1),TMPCLIN=PSJCLIN ;These are recently DC Orders (mv)
. I PSJC="DF" S PSJST="" F S PSJST=$O(^TMP("PSJ",$J,PSJCLIN,PSJC,PSJST)) Q:PSJST="" D
. . S PSJS="" F S PSJS=$O(^TMP("PSJ",$J,PSJCLIN,PSJC,PSJST,PSJS)) Q:PSJS="" D ON
. I PSJC="O" I TMPCLIN'=PSJCLIN D TF S PSJTF=$E(PSJC,1),TMPCLIN=PSJCLIN ;These are Non-Active Orders
. I PSJC="O" S PSJST="" F S PSJST=$O(^TMP("PSJ",$J,PSJCLIN,PSJC,PSJST)) Q:PSJST="" D
. . S PSJS="" F S PSJS=$O(^TMP("PSJ",$J,PSJCLIN,PSJC,PSJST,PSJS)) Q:PSJS="" D ON
.; END DAM changes
.;
S VALMCNT=PSJLN-1
DONE ;
K ^TMP("PSJCLOR",$J) M ^TMP("PSJCLOR",$J)=^TMP("PSJON",$J)
K PSJC,PSJEN,PSJLN,PSJST,PSJS,CNT,PSJPRI,^TMP("PSJ",$J),PSGSSAV,PSJDCEXP,PSJL,PSJON,PSJOS,PSJTF
Q
ON ; Set order number into ^TMP
N PSJCLORD S PSJCLORD=1
S PSJSCHT=$S(PSJOS:PSJS,1:PSJST)
S PSJO="" F FQ=0:0 S PSJO=$O(^TMP("PSJ",$J,PSJCLIN,PSJC,PSJST,PSJS,PSJO)) Q:PSJO="" S DN=^(PSJO) D
.N PRJPRI S PSJPRI=$S(PSJO["V":$P($G(^PS(55,PSGP,"IV",+PSJO,.2)),"^",4),PSJO["U":$P($G(^PS(55,PSGP,5,+PSJO,.2)),"^",4),1:$P($G(^PS(53.1,+PSJO,.2)),"^",4))
.S ^TMP("PSJON",$J,PSJEN)=PSJO,PSJL=$J(PSJEN,4) D @$S(PSJO["V":"PIV^PSJLMPRI(PSGP,PSJO,PSJF,DN)",PSJO["U":"PUD^PSJLMPRU(PSGP,PSJO,PSJF,DN)",1:"PIV^PSJLMPRI(PSGP,PSJO,PSJF,DN)") S ^TMP("PSJPRO",$J,0)=PSJEN,PSJEN=PSJEN+1
.S ^TMP("PSJON",$J)=+$O(^TMP("PSJON",$J,""),-1)
K DN,FQ,PSJSCHT
Q
TF ; Set up order type header
NEW PSJDFHDR
I $D(^TMP("PSJ",$J,PSJCLIN)) D
.S PSJDCEXP=$$RECDCEXP^PSJP()
.S PSJDFHDR="RECENTLY DISCONTINUED/EXPIRED (LAST "_+$G(PSJDCEXP)_" HOURS)"
.N C,X,Y S C=PSJC,Y="",$P(Y," -",40)=""
.S X=PSJCLIN
.I $G(PSJCLIN)]"" S X=PSJCLIN
.S ^TMP("PSJPRO",$J,PSJLN,0)=$E($E(Y,1,(80-$L(X))/2)_" "_X_$E(Y,1,(80-$L(X))/2),1,80),PSJLN=PSJLN+1
Q
TEST ; Headers
N X,Y S Y="",$P(Y," -",40)=""
F X="A C T I V E","P E N D I N G R E N E W A L S","P E N D I N G ","N O N - V E R I F I E D","N O N - A C T I V E" W !,$E($E(Y,1,(80-$L(X))/2)_" "_X_$E(Y,1,(80-$L(X))/2),1,80)
Q
VWDETAIL(PSGP) ;
N VAIN,VADM,PSJLM,PSGPRF,PSJPRP,PSJSYSL,DFN D ENCV^PSGSETU
S DFN=PSGP D ^PSJAC D INIT^PSJCLOR2(3)
S PSGPRF="",PSJPRP="P",PSJPR=0,PSJON=+$G(^TMP("PSJON",$J)) D FULL^VALM1,ENVW
D DONEVD
Q
ENVW ; ask user to select or view any of the orders shown
S (PSGONC,PSGONR,PSGONV)=0,PSGLMT=PSJON S:$D(PSJPRF) PSGPRF=1
N PSJXDIR S PSJXDIR=$P($G(XQORNOD(0)),"=",2) I PSJXDIR S X=$E(PSJXDIR,1,$L(PSJXDIR)-1) D ENCHK^PSGON
I '$G(PSJXDIR) D ENASR^PSGON
K PSGPRF
G:X["^" DONEVD I X]"" S PSGOEA=""
K PSJDLW
I F PSJOE=1:1:PSGODDD S PSGOE=PSJOE F PSJOE1=1:1:$L(PSGODDD(PSJOE),",")-1 S PSJOE2=$P(PSGODDD(PSJOE),",",PSJOE1),(PSGORD,PSJORD)=^TMP("PSJON",$J,PSJOE2) G:$D(PSJDLW) DONEVD D
.I PSJORD=+PSJORD N PSJO,PSJO1 S PSJO=PSJORD,PSJO1=0 F S PSJO1=$O(^PS(53.1,"ACX",PSJO,PSJO1)) Q:'PSJO1 Q:$D(PSJDLW) S PSJORD=PSJO1_"P",PSGOEA="" D GODO(PSJORD) S PSJORD=""
.Q:PSJORD="" S PSGOEA="" D GODO(PSJORD)
Q
;
GODO(PSJORD) ;
D GODO^PSJOE0
Q
DONEVD ; Kill variables
K DTOUT,PSGONC,PSGONR,PSGONV,PSGODDD,PSGOE,PSGOEA,PSJL,PSJOE,PSJOE1,PSJOE2,PSJON,PSJPR,PSJPRF
Q
;
NEWORDER(PSGP,PSGORD,PSGNWSD,PSGOEAV) ;
N PSGSD,PSGOEEF,PSGOFD,PSGNEFD,PSGOSD,PSGFD,PSGAT,PSGFDN S PSGOEEF(10)=1,PSJNOLOK=0
K DIR I '$$LS^PSSLOCK(DFN,PSGORD) W !,"NO ACTION TAKEN ON ORDER",! D CONT^PSJOE0 S PSJNOLOK=1 Q
I $D(^PS(53.45,+$G(PSJSYSP),5)) N PSJFSI S PSJFSI=1 D FILESI^PSJBCMA5(DFN,PSGORD) N SIARRAY S SIARRAY="" D
.I PSGORD["P" M SIARRAY=^PS(53.1,+PSGORD,15) D NEWNVAL^PSGAL5(PSGORD,6000,"SPECIAL INSTRUCTIONS",,.SIARRAY)
.I PSGORD["U" M SIARRAY=^PS(55,DFN,5,+PSGORD,15) D NEWUDAL^PSGAL5(DFN,PSGORD,6000,"SPECIAL INSTRUCTIONS",,.SIARRAY)
I PSGORD["P" S PSJCOM=+$P($G(^PS(53.1,+PSGORD,.2)),"^",8) I PSJCOM D NEW^PSJCOM1 Q
;
I PSGORD["P"!(PSGORD["U") D
.N PSGST,PSGSCH,PSGNESD,ND,ND2,ND2P1,PSJEDFLD,I ;*315
.F I=0,2 S ND(I)=$S($G(PSGORD)["P":$G(^PS(53.1,+PSGORD,I)),$G(PSGORD)["U":$G(^PS(55,+$G(PSGP),5,+PSGORD,I)),$G(PSJTMPON)["V":$G(^PS(55,+$G(PSGP),"IV",+PSGORD,I)),1:"")
.S PSGNESD=PSGNWSD,PSGSCH=$S(PSGORD["P"!(PSGORD["U"):$P(ND(2),"^"),PSGORD["V":$P(ND(0),"^",9),1:"")
.S PSGST=$S(PSGORD["P"!(PSGORD["U"):$P(ND(0),"^",7),1:""),(PSGFD,PSGOFD)=$S(PSGORD["V":$P(ND(0),"^",3),1:$P(ND(2),"^",4)),(PSGSD,PSGOSD)=$S(PSGORD["V":$P(ND(0),"^",2),1:$P(ND(2),"^",2))
.S PSGNEFD="" D ENFD^PSGNE3(PSGNWSD) S PSGFD=$S($G(PSGRDTX(+PSGORD,"PSGFD")):PSGRDTX(+PSGORD,"PSGFD"),1:PSGNEFD)
.I $G(PSGNEFD),(PSGNEFD<PSGNWSD) W $C(7),!?5,"*** THE START DATE CANNOT BE AFTER THE STOP DATE! ***" S PSJQMSG=1 Q
.S PSJEDFLD=$S(PSGORD["P":25,1:34) S PSGOEEF(PSJEDFLD)=1
;
I PSGORD["U" D Q
.N TMPNEFD S TMPNEFD=$G(PSGNEFD) S PSGOEEWF="^PS(55,"_PSGP_",5,"_+PSGORD_"," S (ND,ND0)=$G(@(PSGOEEWF_"0)")),ND2=$G(^(2)),ND2P1=$G(^(2.1)) ;*315
.D EN2^PSGOEEW
.S PSGOORD=PSGORD S (PSGNESD,SD,PSGSD)=PSGNWSD I ($G(TMPNEFD)'="") S (PSGNEFD,PSGFD)=TMPNEFD,PSGFDN=$$ENDD^PSGMI(PSGNEFD)_U_$$ENDTC^PSGMI(PSGNEFD)
.S PSGOFD=$P(^PS(55,PSGP,5,+PSGORD,2),"^",4),PSGOEENO=1,PSJOCL=+$G(^PS(55,PSGP,5,+PSGORD,8))
.W !,"START DATE/TIME: ",$$ENDD^PSGMI(PSGSD) D A34^PSJCLOR4
.S PSJNOO=$$ENNOO^PSJUTL5("E") I PSJNOO<0 W " No changes made to this order!" D CONT^PSJOE0 Q
.N PSJOCL,PSGOEENO S PSGOEENO=1,PSJOCL=+$G(^PS(55,PSGP,5,+PSGORD,8))
.D NEW^PSGOEE
.Q
;
I PSGORD["P" D
.N DR,PSJTMPFD,P S DR="10////^S X=PSGSD;" S:$G(PSGOEEF(25)) DR=DR_"25////^S X=PSGFD;" S DR=DR_"W ""."";"
.S PSJTMPFD=PSGFD
.D GETUD^PSJLMGUD(PSGP,PSGORD) N PSGNESD,PSGPDRG,PSJOCL S PSGPDRG=PSGPD,PSJOCL=+$G(^PS(53.1,+PSGORD,"DSS")) S:$G(PSGOEEF(25)) (PSGNEFD,PSGFD)=PSJTMPFD,PSGFDN=$$ENDD^PSGMI(PSGNEFD)_U_$$ENDTC^PSGMI(PSGNEFD)
.Q:'$G(PSJOCL) S PSGS0Y=PSGAT,(PSGNESD,PSGSD)=PSGNWSD,PSGPDRG=PSGPD,PSGPDRGN=PSGPDN,PSGOEE="E"
.W !,"START DATE/TIME: ",$$ENDD^PSGMI(PSGSD) D A25NV^PSJCLOR4
.N PSGOEENO S PSGOEENO=0 D UPD^PSGOEE
.D EN1^PSJHL2(PSGP,"XX",PSGORD)
;
I PSGORD["V" D
.N ON55,ND,ND2,ND0,PSIVCHG,PSIVSYSP,P,PSJSTRDF,PSJSTPDF,PSJINIV S PSGOEEWF="^PS(55,"_PSGP_",""IV"","_+PSGORD_",",PSIVCHG=1
.I '$G(XQORNOD),$G(PSJTMPXQ) N XQORNOD S XQORNOD=PSJTMPXQ
.S XQORNOD(0)="^^E"
.S PSJSYSW0=$G(PSJSYSW0) ; Initialize/restore PSJSYSW0 ward parameters. Killed at exit in ENKV^PSGSETU.
.I $G(PSGOEAV),'$P(PSJSYSP0,U,9) S PSIVSYSP=PSJSYSP0 N PSJSYSP0 S PSJSYSP0=PSIVSYSP,$P(PSJSYSP0,"^",9)=1
.S (ND,ND0)=$G(@(PSGOEEWF_"0)")),ND2=$G(^(2)),ON55=PSGORD
.D GT55^PSIVORFB S P(2)=PSGNWSD D ENSTOP^PSIVCAL
.W !,"START DATE/TIME: ",$$ENDD^PSGMI(P(2))
.D A25V^PSJCLOR4(PSGP,PSGORD)
.D NEWORD^PSIVOPT1
.S PSJORL=$$ENORL^PSJUTL($G(VAIN(4))) S ON=ON55,OD=P(2) D:ON["V" EN^PSIVORE D EN1^PSJHL2(DFN,"SN",ON55,"NEW ORDER")
.N TMPOLD S TMPOLD=$S(ON55["P":$P($G(^PS(53.1,+ON55,0)),"^",25),ON55["V":$P($G(^PS(55,PSGP,"IV",+ON55,2)),"^",5),1:"") I TMPOLD D
..I TMPOLD["V",$D(^PS(55,PSGP,"IV",+TMPOLD,10,1)) N LN S LN=+$O(^PS(55,PSGP,"IV",+TMPOLD,10,""),-1) D
...S:ON55["P" ^PS(53.1,+ON55,16,0)="^53.1136^"_LN_"^"_LN S:ON55["V" ^PS(55,PSGP,"IV",+ON55,10,0)="^55.1154^"_LN_"^"_LN
...S LN=0 F S LN=$O(^PS(55,PSGP,"IV",+TMPOLD,10,LN)) Q:'LN S:ON55["P" ^PS(53.1,+ON55,16,LN,0)=^PS(55,PSGP,"IV",+TMPOLD,10,LN,0) S:ON55["V" ^PS(55,PSGP,"IV",+ON55,10,LN,0)=^PS(55,PSGP,"IV",+TMPOLD,10,LN,0)
.;
I $G(PSJFSI)=1 I $$GETSI^PSJBCMA5(DFN,PSGORD) D FILESI^PSJBCMA5(DFN,$S($G(PSGOORD):PSGOORD,1:PSGORD))
I 'PSGOEAV,($G(PSGORD)["P"),'$G(^PS(53.1,+PSGORD,2.5)),$G(^PS(53.1,+PSGORD,0)) D
. N DUR S DUR=$$GETDUR^PSJLIVMD(PSGP,PSGORD,$S(PSGORD["P":"P",1:5),1) I DUR]"" K DA,DR,DIE S DIE="^PS(53.1,",DA=+PSGORD,DR="116////"_DUR D ^DIE
D NEWCLN^PSJCLOR5
D UNL^PSSLOCK(PSGP,PSGORD) I $G(PSGOORD) D UNL^PSSLOCK(PSGP,PSGOORD)
Q
;
DSPORD(PSGP,TMPORDER,PSJORDAR) ; Display order summary
D DSPORD^PSJCLOR5(PSGP,TMPORDER,.PSJORDAR)
Q
;
HDRDT ; Header Date Range
Q:'$G(PSJBEG)!'($G(PSJEND)) I $G(PSJTMPED),$P(PSJTMPED,"^",2) S PSJEND=$S($P(PSJTMPED,"^",2)'=$G(PSGP):+PSJTMPED,1:+PSJEND)
S VALMHDR(6)=" CLINIC ORDERS: "_$$FMTE^XLFDT(+$G(PSJBEG))_" to "_$$FMTE^XLFDT(+$G(PSJEND))
Q
;
CHGDT ; Change date range
N TMPBEG,TMPEND S TMPBEG=+PSJBEG,TMPEND=+PSJEND
D BEGDT I '$G(PSJBEG) S PSJBEG=+TMPBEG
D ENDDT(PSJBEG) I '$G(PSJEND) S PSJEND=+TMPEND
D INIT^PSJCLOR2(3) S VALMBCK="R" D HDR^PSJLMHED($S($G(DFN):DFN,1:$G(PSGP))) D HDRDT^PSJCLOR2
Q
BEGDT ; begin date
I '$G(PSJTMPBG) S PSJTMPBG=+PSJBEG_"^"_PSGP
W !!?5,"Search for CLINIC Medication Orders with a Start Date/Time"
W !?5,"within the date range selected below: "
W ! K %DT S %DT("A")="Begin Search Date: ",%DT="TAE",%DT("B")=$P($$FMTE^XLFDT(PSJBEG,1),"@")
D ^%DT Q:Y<0!($D(DTOUT)) S (%DT(0),PSJBEG)=Y
Q
ENDDT(BEG) ; end date
I $G(BEG) S $P(BEG,".",2)=24
I '$G(PSJTMPED) S PSJTMPED=+PSJEND_"^"_PSGP
W ! K DIR S DIR(0)="DA^"_BEG_"::TAE",DIR("A")="End Search Date: ",DIR("B")=$$FMTE^XLFDT(BEG) D ^DIR
S PSJEND=$S($G(Y):Y,1:BEG) I '$P(PSJEND,".",2) S PSJEND=Y_".24"
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSJCLOR2 13982 printed Oct 16, 2024@18:07:11 Page 2
PSJCLOR2 ;BIR/JCH - BUILD CLINIC ORDER LM HEADERS ; 2/28/12 9:11am
+1 ;;5.0;INPATIENT MEDICATIONS;**275,279,315,256,387**;16 DEC 97;Build 1
+2 ;;Per VHA Directive 2004-038, this routine should not be modified.
+3 ; Reference to ^PS(55 is supported by DBIA 2191
+4 ; Reference to CWAD^ORQPT2 is supported by DBIA 2831
+5 ; Reference to ^SC( is supported by DBIA 10040
+6 ; Reference to BSA^PSSDSAPI supported by DBIA #5425
+7 ; Reference to LS^PSSLOCK supported by DBIA #2789
+8 ; Reference to UNL^PSSLOCK supported by DBIA #2789
+9 ;
HDR(DFN) ; -- list screen header
+1 ; input: DFN := ifn of pat
+2 ; output: VALMHDR() := hdr array
+3 ;
+4 KILL VAIN,VADM,GMRA,PSJACNWP,PSJ,VAERR,VA,X
+5 SET PSJACNWP=1
DO ENBOTH^PSJAC
+6 DO HDRO(DFN)
+7 SET PSJ=" Sex: "_$PIECE(PSJPSEX,U,2)
SET VALMHDR(4)=$$SETSTR^VALM1($SELECT(PSJPDD:"Last ",1:" ")_"Admitted: "_$PIECE($GET(PSJPAD),U,2),PSJ,45,23)
+8 SET PSJ=" Dx: "_$GET(PSJPDX)
+9 if PSJPDD
SET VALMHDR(5)=$$SETSTR^VALM1("Discharged: "_$EXTRACT($PIECE(PSJPDD,U,2),1,8),PSJ,48,26)
+10 if 'PSJPDD
SET VALMHDR(5)=$$SETSTR^VALM1("Last transferred: "_$$ENDTC^PSGMI(PSJPTD),PSJ,42,26)
+11 ;
+12 ; Display CrCl/BSA - show serum creatinine if CrCl can't be calculated
+13 SET PSJBSA=$$BSA^PSSDSAPI(DFN)
SET PSJBSA=$PIECE(PSJBSA,"^",3)
SET PSJBSA=$SELECT(PSJBSA'>0:"__________",1:$JUSTIFY(PSJBSA,4,2))
+14 ; RSLT -- DATE^CRCL^Serum Creatinine -- Ex. 11/25/11^68.7^1.1
+15 SET RSLT=$$CRCL^PSJLMHED(DFN)
+16 ; Display format of CrCL and Creatinine results updated - PSJ*5.0*387
+17 IF ($PIECE($GET(RSLT),"^",2)["Not Found")&($PIECE($GET(RSLT),"^",3)<.01)
SET ZDSPL=" CrCL: "_$PIECE(RSLT,"^",2)_" (CREAT: Not Found)"
+18 IF ($PIECE($GET(RSLT),"^",2)["Not Found")&($PIECE($GET(RSLT),"^",3)>=.01)
SET ZDSPL=" CrCL: "_$PIECE(RSLT,"^",2)_" (CREAT: "_$PIECE($GET(RSLT),"^",3)_"mg/dL "_$PIECE($GET(RSLT),"^")_")"
+19 IF ($PIECE($GET(RSLT),"^",2)'["Not Found")&($PIECE($GET(RSLT),"^",3)<.01)
SET ZDSPL=" CrCL: "_$PIECE(RSLT,"^",2)_" (CREAT: Not Found)"
+20 IF ($PIECE($GET(RSLT),"^",2)'["Not Found")&($PIECE($GET(RSLT),"^",3)>=.01)
SET ZDSPL=" CrCL: "_$PIECE(RSLT,"^",2)_"(est.)"_" (CREAT: "_$PIECE($GET(RSLT),"^",3)_"mg/dL "_$PIECE($GET(RSLT),"^")_")"
+21 SET PSJDB=$GET(ZDSPL)
SET VALMHDR(6)=$$SETSTR^VALM1("BSA (m2): "_$GET(PSJBSA),PSJDB,50,23)
KILL PSJBSA,ZDSPL,RSLT
+22 QUIT
+23 ;
HDRO(DFN) ; Standardized part of profile header.
+1 NEW PSJCLIN,PSJAPPT,PSJCLINN,RMORDT
SET (PSJCLIN,PSJAPPT)=0
SET (RMORDT,PSJCLINN)=""
IF $GET(PSJORD)
Begin DoDot:1
+2 SET PSJCLIN=$SELECT($GET(PSJORD)["V":$GET(^PS(55,DFN,"IV",+PSJORD,"DSS")),$GET(PSJORD)["U":$GET(^PS(55,DFN,5,+PSJORD,8)),$GET(PSJORD)["P":$GET(^PS(53.1,+PSJORD,"DSS")),1:"")
+3 if PSJCLIN
SET PSJAPPT=$PIECE($GET(PSJCLIN),U,2)
IF PSJCLIN
IF PSJAPPT
SET PSJCLINN=$PIECE($GET(^SC(+PSJCLIN,0)),U)
End DoDot:1
+4 KILL VALMHDR
IF PSJCLINN]""
SET PSJ=VADM(1)
SET PSJ=$$SETSTR^VALM1(" Clinic: "_PSJCLINN,PSJ,28,26)
+5 IF PSJCLINN=""
SET PSJ=VADM(1)
SET PSJ=$$SETSTR^VALM1($SELECT('PSJPDD:" ",1:"Last ")_"Ward: "_PSJPWDN,PSJ,30,18)
+6 SET X=$$CWAD^ORQPT2(DFN)
+7 if X]""
SET X=$GET(IORVON)_X_$GET(IORVOFF)
SET PSJ=$$SETSTR^VALM1(X,PSJ,80-$LENGTH(X),80)
SET VALMHDR(1)=PSJ
+8 SET PSJ=" PID: "_$PIECE(PSJPSSN,U,2)
+9 SET RMORDT=$SELECT($GET(PSJPDD):"Last ",1:" ")_"Room-Bed: "_$GET(PSJPRB)
+10 IF PSJCLINN]""
IF PSJAPPT
SET RMORDT="Clinic Date: "_$$ENDTC^PSGMI(PSJAPPT)
SET RMORDT=$PIECE(RMORDT," ")_" "_$PIECE(RMORDT," ",2)
+11 SET PSJ=$$SETSTR^VALM1(RMORDT,PSJ,26,28)
SET VALMHDR(2)=$$SETSTR^VALM1("Ht(cm): "_PSJPHT_" "_PSJPHTD,PSJ,55,25)
+12 SET PSJ=" DOB: "_$PIECE($PIECE(PSJPDOB,U,2)," ")_" ("_PSJPAGE_")"
SET VALMHDR(3)=$$SETSTR^VALM1("Wt(kg): "_PSJPWT_" "_PSJPWTD,PSJ,55,25)
+13 QUIT
+14 ;
INIT(PSJPROT) ; -- init bld vars
+1 ; PSJPROT=1:UD ONLY; 2:IV ONLY; 3:BOTH
+2 KILL PSJUDPRF,^TMP("PSJ",$JOB),^TMP("PSJON",$JOB),^TMP("PSJPRO",$JOB),^TMP("PSJCLOR",$JOB)
DO FULL^VALM1
+3 NEW TMPCLIN,DFN,UDU
SET PSJVALQ=0
SET TMPCLIN=""
SET DFN=PSGP
SET PSGSSAV=PSGSS
SET UDU=$SELECT($PIECE(PSJSYSU,";",3)>1:3,1:1)
+4 if PSJPROT=1
SET PSJUDPRF=1
+5 DO KILL^VALM10()
DO EN^PSJCLOR3(PSJPROT)
+6 IF '$DATA(^TMP("PSJ",$JOB))
WRITE !!,?22,"NO CLINIC ORDERS FOUND."
SET VALMQUIT=1
SET PSJVALQ=1
DO PAUSE^PSJLMUTL
QUIT
+7 SET PSJLN=1
SET PSJEN=1
SET PSJCLIN=""
FOR
SET PSJCLIN=$ORDER(^TMP("PSJ",$JOB,PSJCLIN))
if PSJCLIN=""
QUIT
SET PSJTF=0
SET PSJC=""
FOR
SET PSJC=$ORDER(^TMP("PSJ",$JOB,PSJCLIN,PSJC))
if PSJC=""
QUIT
Begin DoDot:1
+8 NEW PSJF
SET PSJF="^PS("_$SELECT("AO"[PSJC:"55,"_PSGP_",5,",PSJC="DF":"55,"_PSGP_",5,",1:"53.1,")
+9 ;DAM 8-29-07 Added Q:PSJC="CB" Q:PSJC="O"
IF TMPCLIN'=PSJCLIN
DO TF
SET PSJTF=$EXTRACT(PSJC,1)
SET TMPCLIN=PSJCLIN
+10 SET PSJST=""
FOR
SET PSJST=$ORDER(^TMP("PSJ",$JOB,PSJCLIN,PSJC,PSJST))
if PSJST=""
QUIT
Begin DoDot:2
+11 ;DAM 8-29-07 Added Q:PSJC="CB" Q:PSJC="O"
SET PSJS=""
FOR
SET PSJS=$ORDER(^TMP("PSJ",$JOB,PSJCLIN,PSJC,PSJST,PSJS))
if PSJS=""
QUIT
if PSJC="CB"
QUIT
if PSJC="O"
QUIT
if PSJC="DF"
QUIT
DO ON
End DoDot:2
+12 ;
+13 ;DAM 8-29-07 New code to place Pending Orders after Pending Renewal Orders on the roll and scroll display. Non-Active Orders appear last.
End DoDot:1
+14 SET PSJCLIN=""
FOR
SET PSJCLIN=$ORDER(^TMP("PSJ",$JOB,PSJCLIN))
if PSJCLIN=""
QUIT
SET PSJTF=0
SET PSJC=""
FOR
SET PSJC=$ORDER(^TMP("PSJ",$JOB,PSJCLIN,PSJC))
if PSJC=""
QUIT
Begin DoDot:1
+15 NEW PSJF
SET PSJF="^PS("_$SELECT("AO"[PSJC:"55,"_PSGP_",5,",PSJC="DF":"55,"_PSGP_",5,",1:"53.1,")
+16 ;These are Pending Orders
IF PSJC="CB"
IF TMPCLIN'=PSJCLIN
DO TF
SET PSJTF=$EXTRACT(PSJC,1)
SET TMPCLIN=PSJCLIN
+17 IF PSJC="CB"
SET PSJST=""
FOR
SET PSJST=$ORDER(^TMP("PSJ",$JOB,PSJCLIN,PSJC,PSJST))
if PSJST=""
QUIT
Begin DoDot:2
+18 SET PSJS=""
FOR
SET PSJS=$ORDER(^TMP("PSJ",$JOB,PSJCLIN,PSJC,PSJST,PSJS))
if PSJS=""
QUIT
DO ON
End DoDot:2
+19 ;These are recently DC Orders (mv)
IF PSJC="DF"
IF TMPCLIN'=PSJCLIN
DO TF
SET PSJTF=$EXTRACT(PSJC,1)
SET TMPCLIN=PSJCLIN
+20 IF PSJC="DF"
SET PSJST=""
FOR
SET PSJST=$ORDER(^TMP("PSJ",$JOB,PSJCLIN,PSJC,PSJST))
if PSJST=""
QUIT
Begin DoDot:2
+21 SET PSJS=""
FOR
SET PSJS=$ORDER(^TMP("PSJ",$JOB,PSJCLIN,PSJC,PSJST,PSJS))
if PSJS=""
QUIT
DO ON
End DoDot:2
+22 ;These are Non-Active Orders
IF PSJC="O"
IF TMPCLIN'=PSJCLIN
DO TF
SET PSJTF=$EXTRACT(PSJC,1)
SET TMPCLIN=PSJCLIN
+23 IF PSJC="O"
SET PSJST=""
FOR
SET PSJST=$ORDER(^TMP("PSJ",$JOB,PSJCLIN,PSJC,PSJST))
if PSJST=""
QUIT
Begin DoDot:2
+24 SET PSJS=""
FOR
SET PSJS=$ORDER(^TMP("PSJ",$JOB,PSJCLIN,PSJC,PSJST,PSJS))
if PSJS=""
QUIT
DO ON
End DoDot:2
+25 ; END DAM changes
+26 ;
End DoDot:1
+27 SET VALMCNT=PSJLN-1
DONE ;
+1 KILL ^TMP("PSJCLOR",$JOB)
MERGE ^TMP("PSJCLOR",$JOB)=^TMP("PSJON",$JOB)
+2 KILL PSJC,PSJEN,PSJLN,PSJST,PSJS,CNT,PSJPRI,^TMP("PSJ",$JOB),PSGSSAV,PSJDCEXP,PSJL,PSJON,PSJOS,PSJTF
+3 QUIT
ON ; Set order number into ^TMP
+1 NEW PSJCLORD
SET PSJCLORD=1
+2 SET PSJSCHT=$SELECT(PSJOS:PSJS,1:PSJST)
+3 SET PSJO=""
FOR FQ=0:0
SET PSJO=$ORDER(^TMP("PSJ",$JOB,PSJCLIN,PSJC,PSJST,PSJS,PSJO))
if PSJO=""
QUIT
SET DN=^(PSJO)
Begin DoDot:1
+4 NEW PRJPRI
SET PSJPRI=$SELECT(PSJO["V":$PIECE($GET(^PS(55,PSGP,"IV",+PSJO,.2)),"^",4),PSJO["U":$PIECE($GET(^PS(55,PSGP,5,+PSJO,.2)),"^",4),1:$PIECE($GET(^PS(53.1,+PSJO,.2)),"^",4))
+5 SET ^TMP("PSJON",$JOB,PSJEN)=PSJO
SET PSJL=$JUSTIFY(PSJEN,4)
DO @$SELECT(PSJO["V":"PIV^PSJLMPRI(PSGP,PSJO,PSJF,DN)",PSJO["U":"PUD^PSJLMPRU(PSGP,PSJO,PSJF,DN)",1:"PIV^PSJLMPRI(PSGP,PSJO,PSJF,DN)")
SET ^TMP("PSJPRO",$JOB,0)=PSJEN
SET PSJEN=PSJEN+1
+6 SET ^TMP("PSJON",$JOB)=+$ORDER(^TMP("PSJON",$JOB,""),-1)
End DoDot:1
+7 KILL DN,FQ,PSJSCHT
+8 QUIT
TF ; Set up order type header
+1 NEW PSJDFHDR
+2 IF $DATA(^TMP("PSJ",$JOB,PSJCLIN))
Begin DoDot:1
+3 SET PSJDCEXP=$$RECDCEXP^PSJP()
+4 SET PSJDFHDR="RECENTLY DISCONTINUED/EXPIRED (LAST "_+$GET(PSJDCEXP)_" HOURS)"
+5 NEW C,X,Y
SET C=PSJC
SET Y=""
SET $PIECE(Y," -",40)=""
+6 SET X=PSJCLIN
+7 IF $GET(PSJCLIN)]""
SET X=PSJCLIN
+8 SET ^TMP("PSJPRO",$JOB,PSJLN,0)=$EXTRACT($EXTRACT(Y,1,(80-$LENGTH(X))/2)_" "_X_$EXTRACT(Y,1,(80-$LENGTH(X))/2),1,80)
SET PSJLN=PSJLN+1
End DoDot:1
+9 QUIT
TEST ; Headers
+1 NEW X,Y
SET Y=""
SET $PIECE(Y," -",40)=""
+2 FOR X="A C T I V E","P E N D I N G R E N E W A L S","P E N D I N G ","N O N - V E R I F I E D","N O N - A C T I V E"
WRITE !,$EXTRACT($EXTRACT(Y,1,(80-$LENGTH(X))/2)_" "_X_$EXTRACT(Y,1,(80-$LENGTH(X))/2),1,80)
+3 QUIT
VWDETAIL(PSGP) ;
+1 NEW VAIN,VADM,PSJLM,PSGPRF,PSJPRP,PSJSYSL,DFN
DO ENCV^PSGSETU
+2 SET DFN=PSGP
DO ^PSJAC
DO INIT^PSJCLOR2(3)
+3 SET PSGPRF=""
SET PSJPRP="P"
SET PSJPR=0
SET PSJON=+$GET(^TMP("PSJON",$JOB))
DO FULL^VALM1
DO ENVW
+4 DO DONEVD
+5 QUIT
ENVW ; ask user to select or view any of the orders shown
+1 SET (PSGONC,PSGONR,PSGONV)=0
SET PSGLMT=PSJON
if $DATA(PSJPRF)
SET PSGPRF=1
+2 NEW PSJXDIR
SET PSJXDIR=$PIECE($GET(XQORNOD(0)),"=",2)
IF PSJXDIR
SET X=$EXTRACT(PSJXDIR,1,$LENGTH(PSJXDIR)-1)
DO ENCHK^PSGON
+3 IF '$GET(PSJXDIR)
DO ENASR^PSGON
+4 KILL PSGPRF
+5 if X["^"
GOTO DONEVD
IF X]""
SET PSGOEA=""
+6 KILL PSJDLW
+7 IF $TEST
FOR PSJOE=1:1:PSGODDD
SET PSGOE=PSJOE
FOR PSJOE1=1:1:$LENGTH(PSGODDD(PSJOE),",")-1
SET PSJOE2=$PIECE(PSGODDD(PSJOE),",",PSJOE1)
SET (PSGORD,PSJORD)=^TMP("PSJON",$JOB,PSJOE2)
if $DATA(PSJDLW)
GOTO DONEVD
Begin DoDot:1
+8 IF PSJORD=+PSJORD
NEW PSJO,PSJO1
SET PSJO=PSJORD
SET PSJO1=0
FOR
SET PSJO1=$ORDER(^PS(53.1,"ACX",PSJO,PSJO1))
if 'PSJO1
QUIT
if $DATA(PSJDLW)
QUIT
SET PSJORD=PSJO1_"P"
SET PSGOEA=""
DO GODO(PSJORD)
SET PSJORD=""
+9 if PSJORD=""
QUIT
SET PSGOEA=""
DO GODO(PSJORD)
End DoDot:1
+10 QUIT
+11 ;
GODO(PSJORD) ;
+1 DO GODO^PSJOE0
+2 QUIT
DONEVD ; Kill variables
+1 KILL DTOUT,PSGONC,PSGONR,PSGONV,PSGODDD,PSGOE,PSGOEA,PSJL,PSJOE,PSJOE1,PSJOE2,PSJON,PSJPR,PSJPRF
+2 QUIT
+3 ;
NEWORDER(PSGP,PSGORD,PSGNWSD,PSGOEAV) ;
+1 NEW PSGSD,PSGOEEF,PSGOFD,PSGNEFD,PSGOSD,PSGFD,PSGAT,PSGFDN
SET PSGOEEF(10)=1
SET PSJNOLOK=0
+2 KILL DIR
IF '$$LS^PSSLOCK(DFN,PSGORD)
WRITE !,"NO ACTION TAKEN ON ORDER",!
DO CONT^PSJOE0
SET PSJNOLOK=1
QUIT
+3 IF $DATA(^PS(53.45,+$GET(PSJSYSP),5))
NEW PSJFSI
SET PSJFSI=1
DO FILESI^PSJBCMA5(DFN,PSGORD)
NEW SIARRAY
SET SIARRAY=""
Begin DoDot:1
+4 IF PSGORD["P"
MERGE SIARRAY=^PS(53.1,+PSGORD,15)
DO NEWNVAL^PSGAL5(PSGORD,6000,"SPECIAL INSTRUCTIONS",,.SIARRAY)
+5 IF PSGORD["U"
MERGE SIARRAY=^PS(55,DFN,5,+PSGORD,15)
DO NEWUDAL^PSGAL5(DFN,PSGORD,6000,"SPECIAL INSTRUCTIONS",,.SIARRAY)
End DoDot:1
+6 IF PSGORD["P"
SET PSJCOM=+$PIECE($GET(^PS(53.1,+PSGORD,.2)),"^",8)
IF PSJCOM
DO NEW^PSJCOM1
QUIT
+7 ;
+8 IF PSGORD["P"!(PSGORD["U")
Begin DoDot:1
+9 ;*315
NEW PSGST,PSGSCH,PSGNESD,ND,ND2,ND2P1,PSJEDFLD,I
+10 FOR I=0,2
SET ND(I)=$SELECT($GET(PSGORD)["P":$GET(^PS(53.1,+PSGORD,I)),$GET(PSGORD)["U":$GET(^PS(55,+$GET(PSGP),5,+PSGORD,I)),$GET(PSJTMPON)["V":$GET(^PS(55,+$GET(PSGP),"IV",+PSGORD,I)),1:"")
+11 SET PSGNESD=PSGNWSD
SET PSGSCH=$SELECT(PSGORD["P"!(PSGORD["U"):$PIECE(ND(2),"^"),PSGORD["V":$PIECE(ND(0),"^",9),1:"")
+12 SET PSGST=$SELECT(PSGORD["P"!(PSGORD["U"):$PIECE(ND(0),"^",7),1:"")
SET (PSGFD,PSGOFD)=$SELECT(PSGORD["V":$PIECE(ND(0),"^",3),1:$PIECE(ND(2),"^",4))
SET (PSGSD,PSGOSD)=$SELECT(PSGORD["V":$PIECE(ND(0),"^",2),1:$PIECE(ND(2),"^",2))
+13 SET PSGNEFD=""
DO ENFD^PSGNE3(PSGNWSD)
SET PSGFD=$SELECT($GET(PSGRDTX(+PSGORD,"PSGFD")):PSGRDTX(+PSGORD,"PSGFD"),1:PSGNEFD)
+14 IF $GET(PSGNEFD)
IF (PSGNEFD<PSGNWSD)
WRITE $CHAR(7),!?5,"*** THE START DATE CANNOT BE AFTER THE STOP DATE! ***"
SET PSJQMSG=1
QUIT
+15 SET PSJEDFLD=$SELECT(PSGORD["P":25,1:34)
SET PSGOEEF(PSJEDFLD)=1
End DoDot:1
+16 ;
+17 IF PSGORD["U"
Begin DoDot:1
+18 ;*315
NEW TMPNEFD
SET TMPNEFD=$GET(PSGNEFD)
SET PSGOEEWF="^PS(55,"_PSGP_",5,"_+PSGORD_","
SET (ND,ND0)=$GET(@(PSGOEEWF_"0)"))
SET ND2=$GET(^(2))
SET ND2P1=$GET(^(2.1))
+19 DO EN2^PSGOEEW
+20 SET PSGOORD=PSGORD
SET (PSGNESD,SD,PSGSD)=PSGNWSD
IF ($GET(TMPNEFD)'="")
SET (PSGNEFD,PSGFD)=TMPNEFD
SET PSGFDN=$$ENDD^PSGMI(PSGNEFD)_U_$$ENDTC^PSGMI(PSGNEFD)
+21 SET PSGOFD=$PIECE(^PS(55,PSGP,5,+PSGORD,2),"^",4)
SET PSGOEENO=1
SET PSJOCL=+$GET(^PS(55,PSGP,5,+PSGORD,8))
+22 WRITE !,"START DATE/TIME: ",$$ENDD^PSGMI(PSGSD)
DO A34^PSJCLOR4
+23 SET PSJNOO=$$ENNOO^PSJUTL5("E")
IF PSJNOO<0
WRITE " No changes made to this order!"
DO CONT^PSJOE0
QUIT
+24 NEW PSJOCL,PSGOEENO
SET PSGOEENO=1
SET PSJOCL=+$GET(^PS(55,PSGP,5,+PSGORD,8))
+25 DO NEW^PSGOEE
+26 QUIT
End DoDot:1
QUIT
+27 ;
+28 IF PSGORD["P"
Begin DoDot:1
+29 NEW DR,PSJTMPFD,P
SET DR="10////^S X=PSGSD;"
if $GET(PSGOEEF(25))
SET DR=DR_"25////^S X=PSGFD;"
SET DR=DR_"W ""."";"
+30 SET PSJTMPFD=PSGFD
+31 DO GETUD^PSJLMGUD(PSGP,PSGORD)
NEW PSGNESD,PSGPDRG,PSJOCL
SET PSGPDRG=PSGPD
SET PSJOCL=+$GET(^PS(53.1,+PSGORD,"DSS"))
if $GET(PSGOEEF(25))
SET (PSGNEFD,PSGFD)=PSJTMPFD
SET PSGFDN=$$ENDD^PSGMI(PSGNEFD)_U_$$ENDTC^PSGMI(PSGNEFD)
+32 if '$GET(PSJOCL)
QUIT
SET PSGS0Y=PSGAT
SET (PSGNESD,PSGSD)=PSGNWSD
SET PSGPDRG=PSGPD
SET PSGPDRGN=PSGPDN
SET PSGOEE="E"
+33 WRITE !,"START DATE/TIME: ",$$ENDD^PSGMI(PSGSD)
DO A25NV^PSJCLOR4
+34 NEW PSGOEENO
SET PSGOEENO=0
DO UPD^PSGOEE
+35 DO EN1^PSJHL2(PSGP,"XX",PSGORD)
End DoDot:1
+36 ;
+37 IF PSGORD["V"
Begin DoDot:1
+38 NEW ON55,ND,ND2,ND0,PSIVCHG,PSIVSYSP,P,PSJSTRDF,PSJSTPDF,PSJINIV
SET PSGOEEWF="^PS(55,"_PSGP_",""IV"","_+PSGORD_","
SET PSIVCHG=1
+39 IF '$GET(XQORNOD)
IF $GET(PSJTMPXQ)
NEW XQORNOD
SET XQORNOD=PSJTMPXQ
+40 SET XQORNOD(0)="^^E"
+41 ; Initialize/restore PSJSYSW0 ward parameters. Killed at exit in ENKV^PSGSETU.
SET PSJSYSW0=$GET(PSJSYSW0)
+42 IF $GET(PSGOEAV)
IF '$PIECE(PSJSYSP0,U,9)
SET PSIVSYSP=PSJSYSP0
NEW PSJSYSP0
SET PSJSYSP0=PSIVSYSP
SET $PIECE(PSJSYSP0,"^",9)=1
+43 SET (ND,ND0)=$GET(@(PSGOEEWF_"0)"))
SET ND2=$GET(^(2))
SET ON55=PSGORD
+44 DO GT55^PSIVORFB
SET P(2)=PSGNWSD
DO ENSTOP^PSIVCAL
+45 WRITE !,"START DATE/TIME: ",$$ENDD^PSGMI(P(2))
+46 DO A25V^PSJCLOR4(PSGP,PSGORD)
+47 DO NEWORD^PSIVOPT1
+48 SET PSJORL=$$ENORL^PSJUTL($GET(VAIN(4)))
SET ON=ON55
SET OD=P(2)
if ON["V"
DO EN^PSIVORE
DO EN1^PSJHL2(DFN,"SN",ON55,"NEW ORDER")
+49 NEW TMPOLD
SET TMPOLD=$SELECT(ON55["P":$PIECE($GET(^PS(53.1,+ON55,0)),"^",25),ON55["V":$PIECE($GET(^PS(55,PSGP,"IV",+ON55,2)),"^",5),1:"")
IF TMPOLD
Begin DoDot:2
+50 IF TMPOLD["V"
IF $DATA(^PS(55,PSGP,"IV",+TMPOLD,10,1))
NEW LN
SET LN=+$ORDER(^PS(55,PSGP,"IV",+TMPOLD,10,""),-1)
Begin DoDot:3
+51 if ON55["P"
SET ^PS(53.1,+ON55,16,0)="^53.1136^"_LN_"^"_LN
if ON55["V"
SET ^PS(55,PSGP,"IV",+ON55,10,0)="^55.1154^"_LN_"^"_LN
+52 SET LN=0
FOR
SET LN=$ORDER(^PS(55,PSGP,"IV",+TMPOLD,10,LN))
if 'LN
QUIT
if ON55["P"
SET ^PS(53.1,+ON55,16,LN,0)=^PS(55,PSGP,"IV",+TMPOLD,10,LN,0)
if ON55["V"
SET ^PS(55,PSGP,"IV",+ON55,10,LN,0)=^PS(55,PSGP,"IV",+TMPOLD,10,LN,0)
End DoDot:3
End DoDot:2
+53 ;
End DoDot:1
+54 IF $GET(PSJFSI)=1
IF $$GETSI^PSJBCMA5(DFN,PSGORD)
DO FILESI^PSJBCMA5(DFN,$SELECT($GET(PSGOORD):PSGOORD,1:PSGORD))
+55 IF 'PSGOEAV
IF ($GET(PSGORD)["P")
IF '$GET(^PS(53.1,+PSGORD,2.5))
IF $GET(^PS(53.1,+PSGORD,0))
Begin DoDot:1
+56 NEW DUR
SET DUR=$$GETDUR^PSJLIVMD(PSGP,PSGORD,$SELECT(PSGORD["P":"P",1:5),1)
IF DUR]""
KILL DA,DR,DIE
SET DIE="^PS(53.1,"
SET DA=+PSGORD
SET DR="116////"_DUR
DO ^DIE
End DoDot:1
+57 DO NEWCLN^PSJCLOR5
+58 DO UNL^PSSLOCK(PSGP,PSGORD)
IF $GET(PSGOORD)
DO UNL^PSSLOCK(PSGP,PSGOORD)
+59 QUIT
+60 ;
DSPORD(PSGP,TMPORDER,PSJORDAR) ; Display order summary
+1 DO DSPORD^PSJCLOR5(PSGP,TMPORDER,.PSJORDAR)
+2 QUIT
+3 ;
HDRDT ; Header Date Range
+1 if '$GET(PSJBEG)!'($GET(PSJEND))
QUIT
IF $GET(PSJTMPED)
IF $PIECE(PSJTMPED,"^",2)
SET PSJEND=$SELECT($PIECE(PSJTMPED,"^",2)'=$GET(PSGP):+PSJTMPED,1:+PSJEND)
+2 SET VALMHDR(6)=" CLINIC ORDERS: "_$$FMTE^XLFDT(+$GET(PSJBEG))_" to "_$$FMTE^XLFDT(+$GET(PSJEND))
+3 QUIT
+4 ;
CHGDT ; Change date range
+1 NEW TMPBEG,TMPEND
SET TMPBEG=+PSJBEG
SET TMPEND=+PSJEND
+2 DO BEGDT
IF '$GET(PSJBEG)
SET PSJBEG=+TMPBEG
+3 DO ENDDT(PSJBEG)
IF '$GET(PSJEND)
SET PSJEND=+TMPEND
+4 DO INIT^PSJCLOR2(3)
SET VALMBCK="R"
DO HDR^PSJLMHED($SELECT($GET(DFN):DFN,1:$GET(PSGP)))
DO HDRDT^PSJCLOR2
+5 QUIT
BEGDT ; begin date
+1 IF '$GET(PSJTMPBG)
SET PSJTMPBG=+PSJBEG_"^"_PSGP
+2 WRITE !!?5,"Search for CLINIC Medication Orders with a Start Date/Time"
+3 WRITE !?5,"within the date range selected below: "
+4 WRITE !
KILL %DT
SET %DT("A")="Begin Search Date: "
SET %DT="TAE"
SET %DT("B")=$PIECE($$FMTE^XLFDT(PSJBEG,1),"@")
+5 DO ^%DT
if Y<0!($DATA(DTOUT))
QUIT
SET (%DT(0),PSJBEG)=Y
+6 QUIT
ENDDT(BEG) ; end date
+1 IF $GET(BEG)
SET $PIECE(BEG,".",2)=24
+2 IF '$GET(PSJTMPED)
SET PSJTMPED=+PSJEND_"^"_PSGP
+3 WRITE !
KILL DIR
SET DIR(0)="DA^"_BEG_"::TAE"
SET DIR("A")="End Search Date: "
SET DIR("B")=$$FMTE^XLFDT(BEG)
DO ^DIR
+4 SET PSJEND=$SELECT($GET(Y):Y,1:BEG)
IF '$PIECE(PSJEND,".",2)
SET PSJEND=Y_".24"
+5 QUIT