PSJCLOR5 ;BIR/JCH - INPATIENT MEDICATIONS UTILITIES FOR CLINIC ORDERS ;25 SEP 97 / 7:43 AM
;;5.0;INPATIENT MEDICATIONS;**275,315**;16 DEC 97;Build 73
;;Per VHA Directive 2004-038, this routine should not be modified.
; Reference to ^PS(55 is supported by DBIA# 2191
; Reference to ^PS(50.7 is supported by DBIA 2180.
; Reference to ^PS(51.2 is supported by DBIA 2178.
; Reference to ^PS(52.6 is supported by DBIA 1231.
; Reference to ^PS(52.7 is supported by DBIA 2173.
;
DSPORD(PSGP,TMPORDER,PSJORDAR) ; Display order summary
N NDP2,PSJOINM,TMPSTOP,ND0,ND2,ND2P1,NDP1,TMPSTARE,TMPSOL1,PSJBLANK S ND0=$S(TMPORDER["U":$G(^PS(55,PSGP,5,+TMPORDER,0)),TMPORDER["P":$G(^PS(53.1,+TMPORDER,0)),TMPORDER["V":$G(^PS(55,PSGP,"IV",+TMPORDER,0)),1:"") ;*315
S ND2=$S(TMPORDER["U":$G(^PS(55,PSGP,5,+TMPORDER,2)),TMPORDER["P":$G(^PS(53.1,+TMPORDER,2)),TMPORDER["V":$G(^PS(55,PSGP,"IV",+TMPORDER,2)),1:""),TMPSTOP=$P(ND2,"^",4)
S NDP2=$S(TMPORDER["U":$G(^PS(55,PSGP,5,+TMPORDER,.2)),TMPORDER["P":$G(^PS(53.1,+TMPORDER,.2)),TMPORDER["V":$G(^PS(55,PSGP,"IV",+TMPORDER,.2)),1:"")
S ND2P1=$S(TMPORDER["U":$G(^PS(55,PSGP,5,+TMPORDER,2.1)),TMPORDER["P":$G(^PS(53.1,+TMPORDER,2.1)),1:"") ;*315 DRP
I TMPORDER["V" S TMPSOL1=$G(^PS(55,PSGP,"IV",+TMPORDER,"SOL",1,0)),TMPSTOP=$P(ND0,"^",3)
S TMPSTARE=$S(TMPORDER["P"!(TMPORDER["U"):$$FMTE^XLFDT($P(ND2,"^",2),2),TMPORDER["V":$$FMTE^XLFDT($P(ND0,"^",2),2),1:"") I TMPSTARE D
.S TMPSTARE=$P(TMPSTARE,"@"),TMPSTOP=$P($$FMTE^XLFDT(TMPSTOP,2),"@") F TMPDT="TMPSTARE","TMPSTOP" N PSJPCNT,PSJPCV S PSJPCNT=0 F PSJPCNT=1:1 S PSJPCV=$P(@(TMPDT),"/",PSJPCNT) Q:(PSJPCV="") I PSJPCV,(PSJPCV<10) D
..S $P(@(TMPDT),"/",PSJPCNT)=0_+PSJPCV
.S TMPSTARE=TMPSTARE_" "_TMPSTOP
I '$G(PSJORDAR) D
.I TMPORDER'["V" S PSJOINM=$P($G(^PS(50.7,+$P(NDP2,"^"),0)),"^") W !?5,$S(PSJOINM]"":PSJOINM,1:"DRUG NAME NOT FOUND") W ?50,TMPSTARE D
..W !?8," Give: ",$P(NDP2,"^",2)," ",$P($G(^PS(51.2,+$P(ND0,"^",3),0)),"^",3)," ",$P(ND2,"^")
.I TMPORDER["V" D
..N PSIVACNT,PSJINDNT,AD,ADINT,ADEXT S AD=0 F PSIVACNT=1:1 S AD=$O(^PS(55,PSGP,"IV",+TMPORDER,"AD",AD)) Q:AD="" S ADINT=$G(^(AD,0)),AD(0)=$G(AD(0))+1 I ADINT W !?5,$P($G(^PS(52.6,+ADINT,0)),"^") I (PSIVACNT=1) W ?50,TMPSTARE
..S PSJINDNT=$S($G(ADINT):8,1:4)
..W !?PSJINDNT W " in ",$P($G(^PS(52.7,+$G(TMPSOL1),0)),"^")," ",$P(TMPSOL1,"^",2)," ",$P(ND0,"^",8),?50,$S('$G(ADINT):TMPSTARE,1:"")
I $G(PSJORDAR) S $P(PSJBLANK," ",75)=" " D
.I TMPORDER'["V" S PSJORDAR(1)=" "_$P($G(^PS(50.7,+$P(NDP2,"^"),0)),"^") D
..S PSJORDAR(1)=PSJORDAR(1)_$E(PSJBLANK,1,49-$L(PSJORDAR(1)))_TMPSTARE
..S PSJORDAR(2)=$E(PSJBLANK,1,8)_"Give: "_$P(NDP2,"^",2)_" "_$P($G(^PS(51.2,+$P(ND0,"^",3),0)),"^",3)_" "_$P(ND2,"^")
.I TMPORDER["V" N AD,ADINT,ADEXT,PSJINDNT,PAD1,PAD2 S $P(PAD1," ",75)=" " D
..N II S II=1,AD=0 F S AD=$O(^PS(55,PSGP,"IV",+TMPORDER,"AD",AD)) Q:AD="" D
...S ADINT=$G(^(AD,0)) I ADINT S ADEXT=$P($G(^PS(52.6,+ADINT,0)),"^") S AD(0)=$G(AD(0))+1,PSJORDAR(AD(0))=" "_ADEXT S PSJORDAR(AD(0))=PSJORDAR(AD(0))_$E(PSJBLANK,1,49-$L(PSJORDAR(AD(0))))_$S(II=1:TMPSTARE,1:""),II=II+1
..S PSJINDNT=$S($G(ADINT):8,1:4)
..S AD(0)=$G(AD(0))+1 S PSJORDAR(AD(0))=$E(PSJBLANK,1,PSJINDNT)_" in "_$P($G(^PS(52.7,+$G(TMPSOL1),0)),"^")_" "_$P(TMPSOL1,"^",2)_" "_$P(ND0,"^",8) D
...S PSJORDAR(AD(0))=$E(PSJORDAR(AD(0)),1,49) S PAD2=49-$L(PSJORDAR(AD(0))),PAD2=$E(PAD1,1,PAD2) S PSJORDAR(AD(0))=PSJORDAR(AD(0))_$S('$G(ADINT):PAD2_TMPSTARE,1:"")
Q
ORDCHK ; Check for conflicts among selected orders
N PSJHOLD,PSJSELOR,PSJREVDN,PSJOROR,PSJOROR2,PSJCOMFL,TMPSELX,TMPSELX2,TMPSELCO,TMPSELCO1,TMPSELCO2,PSJONCAL,PSJMRR
S PSJSELOR=$S($G(TMPSELOR):TMPSELOR,1:$P($G(Y(1)),"=",2)) Q:'PSJSELOR I $E(PSJSELOR,$L(PSJSELOR))'="," S PSJSELOR=PSJSELOR_","
D NOW^%DTC S PSGDT=+$E(%,1,12),PSJCOMFL="",PSJONCAL=""
S TMPCNT=0,TMPSEL=0,PSJTMPON="" F TMPCNT=1:1:($L(PSJSELOR,",")) Q:'TMPCNT D
.S TMPSEL=$P(PSJSELOR,",",TMPCNT) Q:'TMPSEL S PSJTMPON=$G(^TMP("PSJON",$J,TMPSEL)) Q:'PSJTMPON
.N STAT S STAT=$S(PSJTMPON["U":$P($G(^PS(55,PSGP,5,+PSJTMPON,0)),"^",9),PSJTMPON["V":$P($G(^PS(55,PSGP,"IV",+PSJTMPON,0)),"^",17),1:"")
.I STAT="H" S PSJHOLD(PSJTMPON)=TMPSEL
.;*315 Begin changes
.I PSJTMPON["U",$P($G(^PS(55,PSGP,5,+PSJTMPON,2.1)),U,4)>1 S PSJMRR(TMPSEL)=PSJTMPON
.Q
S TMPSELCO=PSJSELOR
;
I $D(PSJMRR)>1 D FULL^VALM1 D
.N PSJMRRCNT,PSJDASH1,TMPARRAY S $P(PSJDASH1,"-",75)="-"
.W !!,"The following orders you have selected may have a specified removal event and",!," cannot be edited via this option."
.W !,"Use the Inpatient Order entry option to modify these orders"
.W !!,"Orders for Medications that require removal:",?45,"Current Start / Stop Dates",!,PSJDASH1
.S TMPSEL=0 ;Display disallowed orders
.F PSJMRRCNT=1:1 S TMPSEL=$O(PSJMRR(TMPSEL)) Q:'TMPSEL D
..I '(PSJMRRCNT#8) N DIR W ! D CONT^PSJOE0,CLEAR^VALM1,FULL^VALM1 W !!,"Orders for Medications that require removal (CONTINUED):",?45,"Current Start / Stop Dates",!,PSJDASH1
..D DSPORD^PSJCLOR2(PSGP,PSJMRR(TMPSEL))
..Q ;Build selection array
.F TMPCNT=1:1:$L(TMPSELCO,",") D
..S TMPARRAY(TMPCNT)=$P(TMPSELCO,",",TMPCNT)
..S TMPSEL=0
..F S TMPSEL=$O(PSJMRR(TMPSEL)) Q:'TMPSEL D
...I $G(TMPARRAY(TMPCNT))=TMPSEL K TMPARRAY(TMPCNT) ; If the selection is in disallowed array kill it.
...Q
..Q
.S TMPSEL="" K TMPSELCO
.S TMPSEL=$NA(TMPARRAY) F TMPCNT=1:1 S TMPSEL=$Q(@TMPSEL) Q:TMPSEL="" S $P(TMPSELCO,",",TMPCNT)=@TMPSEL ; rebuild selection string
.N DIR W ! D CONT^PSJOE0 W !
.Q
;
S (PSJSELOR,TMPSELOR)=TMPSELCO
;end *315 changes
;
I $D(PSJHOLD)>1 D FULL^VALM1 D
.N PSJDASH1 S $P(PSJDASH1,"-",75)="-"
.W !!," ON HOLD orders cannot be edited - no changes will be applied",!," to any of the following ON HOLD orders:"
.W !,"ON HOLD orders:",?45,"Current Start / Stop Dates",!,PSJDASH1
.N PSJOHCT S PSJOROR2="" F PSJOHCT=1:1 S PSJOROR2=$O(PSJHOLD(PSJOROR2)) Q:'PSJOROR2 D
..I '(PSJOHCT#8) N DIR W ! D CONT^PSJOE0,CLEAR^VALM1,FULL^VALM1 W !!,"ON HOLD orders (CONTINUED):",?45,"Current Start / Stop Dates",!,PSJDASH1
..D DSPORD^PSJCLOR2(PSGP,PSJOROR2)
..I PSJHOLD(PSJOROR2)=$P(TMPSELCO,",") S TMPSELCO=$P(TMPSELCO,PSJHOLD(PSJOROR2)_",",2) Q
..S TMPSELCO1=$P(TMPSELCO,","_PSJHOLD(PSJOROR2)_","),TMPSELCO2=$P(TMPSELCO,","_PSJHOLD(PSJOROR2)_",",2) S TMPSELCO=TMPSELCO1_$S(TMPSELCO2]"":","_TMPSELCO2,1:"")
.N DIR W ! D CONT^PSJOE0 W !
S (PSJSELOR,TMPSELOR)=TMPSELCO
S TMPCNT=0,TMPSEL=0,PSJTMPON="" F TMPCNT=1:1:($L(PSJSELOR,",")) Q:'TMPCNT D
.S TMPSEL=$P(PSJSELOR,",",TMPCNT) Q:'TMPSEL S PSJTMPON=$G(^TMP("PSJON",$J,TMPSEL)) Q:'PSJTMPON
.N STAT S STAT=$S(PSJTMPON["U":$P($G(^PS(55,PSGP,5,+PSJTMPON,0)),"^",9),PSJTMPON["V":$P($G(^PS(55,PSGP,"IV",+PSJTMPON,0)),"^",17),1:"")
.I STAT="O" S PSJONCAL(PSJTMPON)=TMPSEL
S TMPSELCO=PSJSELOR
I $D(PSJONCAL)>1 D FULL^VALM1 D
.N PSJOCCNT,PSJDASH1 S $P(PSJDASH1,"-",75)="-"
.W !!," Orders with ON CALL Status cannot be edited - no changes will be applied",!," to any of the following orders with ON CALL status:"
.W !,"ON CALL Status orders:",?45,"Current Start / Stop Dates",!,PSJDASH1
.S PSJOROR2="" F PSJOCCNT=1:1 S PSJOROR2=$O(PSJONCAL(PSJOROR2)) Q:'PSJOROR2 D
..I '(PSJOCCNT#8) N DIR W ! D CONT^PSJOE0,CLEAR^VALM1,FULL^VALM1 W !!,"ON CALL Status orders (CONTINUED):",?45,"Current Start / Stop Dates",!,PSJDASH1
..D DSPORD^PSJCLOR2(PSGP,PSJOROR2)
..I PSJONCAL(PSJOROR2)=$P(TMPSELCO,",") S TMPSELCO=$P(TMPSELCO,PSJONCAL(PSJOROR2)_",",2) Q
..S TMPSELCO1=$P(TMPSELCO,","_PSJONCAL(PSJOROR2)_","),TMPSELCO2=$P(TMPSELCO,","_PSJONCAL(PSJOROR2)_",",2) S TMPSELCO=TMPSELCO1_$S(TMPSELCO2]"":","_TMPSELCO2,1:"")
.N DIR W ! D CONT^PSJOE0 W !
S (PSJSELOR,TMPSELOR)=TMPSELCO
S TMPCNT=0,TMPSEL=0,PSJTMPON="" F TMPCNT=1:1:($L(PSJSELOR,",")) Q:'TMPCNT D
.S TMPSEL=$P(PSJSELOR,",",TMPCNT) Q:'TMPSEL S PSJTMPON=$G(^TMP("PSJON",$J,TMPSEL)) Q:'PSJTMPON
.I (PSJTMPON=+PSJTMPON),$D(^PS(53.1,"ACX",PSJTMPON)) S PSJCOMFL="P",PSJOROR="" F S PSJOROR=$O(^PS(53.1,"ACX",PSJTMPON,PSJOROR)) Q:'PSJOROR S PSJCOMFL(PSJOROR_"P")=TMPSEL
.I PSJCOMFL="" S PSJOROR=$S(PSJTMPON["U":$P($G(^PS(55,PSGP,5,+PSJTMPON,.2)),"^",8),PSJTMPON["V":$P($G(^PS(55,PSGP,"IV",+PSJTMPON,.2)),"^",8),1:"") Q:'PSJOROR D
..S PSJCOMFL(PSJTMPON)=TMPSEL
S TMPSELCO=PSJSELOR
I $D(PSJCOMFL)>1 D FULL^VALM1 D
.N PSJDASH1 S $P(PSJDASH1,"-",75)="-"
.W !!," Complex Orders cannot be edited - no changes will be applied",!," to any of the following Complex order components:"
.W !,"Complex Component (Child) Orders:",?45,"Current Start / Stop Dates",!,PSJDASH1
.N PSJCOMCT S PSJOROR2="" F PSJCOMCT=1:1 S PSJOROR2=$O(PSJCOMFL(PSJOROR2)) Q:'PSJOROR2 D
..I '(PSJCOMCT#8) N DIR W ! D CONT^PSJOE0,CLEAR^VALM1,FULL^VALM1 W !!,"Complex orders (CONTINUED):",?45,"Current Start / Stop Dates",!,PSJDASH1
..D DSPORD^PSJCLOR2(PSGP,PSJOROR2)
..I PSJCOMFL(PSJOROR2)=$P(TMPSELCO,",") S TMPSELCO=$P(TMPSELCO,PSJCOMFL(PSJOROR2)_",",2) Q
..S TMPSELCO1=$P(TMPSELCO,","_PSJCOMFL(PSJOROR2)_","),TMPSELCO2=$P(TMPSELCO,","_PSJCOMFL(PSJOROR2)_",",2) S TMPSELCO=TMPSELCO1_$S(TMPSELCO2]"":","_TMPSELCO2,1:"")
.W ! N DIR D CONT^PSJOE0 W !
S (PSJSELOR,TMPSELOR)=TMPSELCO
N TMPNEWSD,TMPSEL,TMPCLN,TMPCLNAR,PSJSTPDT,PSJTMPON,TMPCNT S PSJSTPDT="" S PSJQMSG=0,PSJABORT=0
I ('$G(PSGOEAV)&(+$G(PSJSYSU)=3))!(+$G(PSJSYSU)'=3) S TMPCNT=0,TMPSEL=0,PSJTMPON="" F TMPCNT=1:1:($L(PSJSELOR,",")) Q:'TMPCNT!$G(PSJREVFY)!$G(PSJREVDN) D
.S TMPSEL=$P(PSJSELOR,",",TMPCNT) Q:'TMPSEL S PSJTMPON=$G(^TMP("PSJON",$J,TMPSEL)) Q:'PSJTMPON
.I PSJTMPON["V"!(PSJTMPON["U") S PSJREVFY=$S(+PSJSYSU=3:$$PSJREVFY^PSJCLOR1(),1:$$SURE^PSJCLOR1()),PSJREVDN=1
I $G(DUOUT)!($G(PSJREVFY)<0) S PSJABORT=2 Q
;
S TMPCNT=0,TMPSEL=0,PSJTMPON="" F TMPCNT=1:1:($L(PSJSELOR,",")) Q:'TMPCNT S TMPSEL=$P(PSJSELOR,",",TMPCNT) Q:'TMPSEL S PSJTMPON=$G(^TMP("PSJON",$J,TMPSEL)) Q:'PSJTMPON D
.N ND0,ND2,NDP1 S ND0=$S(PSJTMPON["U":$G(^PS(55,PSGP,5,+PSJTMPON,0)),PSJTMPON["P":$G(^PS(53.1,+PSJTMPON,0)),PSJTMPON["V":$G(^PS(55,PSGP,"IV",+PSJTMPON,0)),1:"")
.S ND2=$S(PSJTMPON["U":$G(^PS(55,PSGP,5,+PSJTMPON,2)),PSJTMPON["P":$G(^PS(53.1,+PSJTMPON,2)),PSJTMPON["V":$G(^PS(55,PSGP,"IV",+PSJTMPON,2)),1:"")
.S ND2P1=$S(PSJTMPON["U":$G(^PS(55,PSGP,5,+PSJTMPON,2.1)),PSJTMPON["P":$G(^PS(53.1,+PSJTMPON,2.1)),1:"") ;*315
.S TMPSTR=$S(PSJTMPON["P"!(PSJTMPON["U"):$P(ND2,"^",2),PSJTMPON["V":$P(ND0,"^",2),1:"") S TMPSTR($P(TMPSTR,"."))=""
.S TMPCLN=$S(PSJTMPON["P":+$G(^PS(53.1,+PSJTMPON,"DSS")),PSJTMPON["U":+$G(^PS(55,+$G(PSGP),5,+PSJTMPON,8)),PSJTMPON["V":+$G(^PS(55,$G(PSGP),"IV",+PSJTMPON,"DSS")),1:"")
.Q:'TMPCLN I $O(TMPCLNAR("")),$O(TMPCLNAR(""))'=TMPCLN S PSJABORT=1
.S TMPCLNAR(+TMPCLN)=""
S TMPSTR="" F S TMPSTR=$O(TMPSTR(TMPSTR)) Q:'TMPSTR S TMPSTR(0)=$G(TMPSTR(0))+1
I $G(PSJABORT)!($G(TMPSTR(0))>1) D
.K DIR S DIR("A",1)=" You have selected orders"_$S($G(PSJABORT):" from different clinics",1:" with different Start Date/Times")_" "
.I $G(PSJABORT)&($G(TMPSTR(0))>1) S DIR("A",2)=" and with different Start Date/Times."
.S DIR("A",3)="",DIR("A",4)=""
.W ! N X,Y S DIR("A")="Do you want to continue",DIR(0)="Y" D ^DIR S PSJABORT=$S(Y>0:1,1:2)
Q
;
NEWCLN ; Clean up Order variables
K PSGNEDFD,PSGOEE,PSGOEEWF,PSGOORD,PSGPD,PSGPDN,PSGPDRGN,PSGRDTX,PSGS0Y,PSJCOM,PSJL,PSJNOO,PSJQMSG
K PSJTMPON,VALMBCK,VALMCNT,VALMQUIT
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSJCLOR5 11317 printed Dec 13, 2024@02:06:27 Page 2
PSJCLOR5 ;BIR/JCH - INPATIENT MEDICATIONS UTILITIES FOR CLINIC ORDERS ;25 SEP 97 / 7:43 AM
+1 ;;5.0;INPATIENT MEDICATIONS;**275,315**;16 DEC 97;Build 73
+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 ^PS(50.7 is supported by DBIA 2180.
+5 ; Reference to ^PS(51.2 is supported by DBIA 2178.
+6 ; Reference to ^PS(52.6 is supported by DBIA 1231.
+7 ; Reference to ^PS(52.7 is supported by DBIA 2173.
+8 ;
DSPORD(PSGP,TMPORDER,PSJORDAR) ; Display order summary
+1 ;*315
NEW NDP2,PSJOINM,TMPSTOP,ND0,ND2,ND2P1,NDP1,TMPSTARE,TMPSOL1,PSJBLANK
SET ND0=$SELECT(TMPORDER["U":$GET(^PS(55,PSGP,5,+TMPORDER,0)),TMPORDER["P":$GET(^PS(53.1,+TMPORDER,0)),TMPORDER["V":$GET(^PS(55,PSGP,"IV",+TMPORDER,0)),1:"")
+2 SET ND2=$SELECT(TMPORDER["U":$GET(^PS(55,PSGP,5,+TMPORDER,2)),TMPORDER["P":$GET(^PS(53.1,+TMPORDER,2)),TMPORDER["V":$GET(^PS(55,PSGP,"IV",+TMPORDER,2)),1:"")
SET TMPSTOP=$PIECE(ND2,"^",4)
+3 SET NDP2=$SELECT(TMPORDER["U":$GET(^PS(55,PSGP,5,+TMPORDER,.2)),TMPORDER["P":$GET(^PS(53.1,+TMPORDER,.2)),TMPORDER["V":$GET(^PS(55,PSGP,"IV",+TMPORDER,.2)),1:"")
+4 ;*315 DRP
SET ND2P1=$SELECT(TMPORDER["U":$GET(^PS(55,PSGP,5,+TMPORDER,2.1)),TMPORDER["P":$GET(^PS(53.1,+TMPORDER,2.1)),1:"")
+5 IF TMPORDER["V"
SET TMPSOL1=$GET(^PS(55,PSGP,"IV",+TMPORDER,"SOL",1,0))
SET TMPSTOP=$PIECE(ND0,"^",3)
+6 SET TMPSTARE=$SELECT(TMPORDER["P"!(TMPORDER["U"):$$FMTE^XLFDT($PIECE(ND2,"^",2),2),TMPORDER["V":$$FMTE^XLFDT($PIECE(ND0,"^",2),2),1:"")
IF TMPSTARE
Begin DoDot:1
+7 SET TMPSTARE=$PIECE(TMPSTARE,"@")
SET TMPSTOP=$PIECE($$FMTE^XLFDT(TMPSTOP,2),"@")
FOR TMPDT="TMPSTARE","TMPSTOP"
NEW PSJPCNT,PSJPCV
SET PSJPCNT=0
FOR PSJPCNT=1:1
SET PSJPCV=$PIECE(@(TMPDT),"/",PSJPCNT)
if (PSJPCV="")
QUIT
IF PSJPCV
IF (PSJPCV<10)
Begin DoDot:2
+8 SET $PIECE(@(TMPDT),"/",PSJPCNT)=0_+PSJPCV
End DoDot:2
+9 SET TMPSTARE=TMPSTARE_" "_TMPSTOP
End DoDot:1
+10 IF '$GET(PSJORDAR)
Begin DoDot:1
+11 IF TMPORDER'["V"
SET PSJOINM=$PIECE($GET(^PS(50.7,+$PIECE(NDP2,"^"),0)),"^")
WRITE !?5,$SELECT(PSJOINM]"":PSJOINM,1:"DRUG NAME NOT FOUND")
WRITE ?50,TMPSTARE
Begin DoDot:2
+12 WRITE !?8," Give: ",$PIECE(NDP2,"^",2)," ",$PIECE($GET(^PS(51.2,+$PIECE(ND0,"^",3),0)),"^",3)," ",$PIECE(ND2,"^")
End DoDot:2
+13 IF TMPORDER["V"
Begin DoDot:2
+14 NEW PSIVACNT,PSJINDNT,AD,ADINT,ADEXT
SET AD=0
FOR PSIVACNT=1:1
SET AD=$ORDER(^PS(55,PSGP,"IV",+TMPORDER,"AD",AD))
if AD=""
QUIT
SET ADINT=$GET(^(AD,0))
SET AD(0)=$GET(AD(0))+1
IF ADINT
WRITE !?5,$PIECE($GET(^PS(52.6,+ADINT,0)),"^")
IF (PSIVACNT=1)
WRITE ?50,TMPSTARE
+15 SET PSJINDNT=$SELECT($GET(ADINT):8,1:4)
+16 WRITE !?PSJINDNT
WRITE " in ",$PIECE($GET(^PS(52.7,+$GET(TMPSOL1),0)),"^")," ",$PIECE(TMPSOL1,"^",2)," ",$PIECE(ND0,"^",8),?50,$SELECT('$GET(ADINT):TMPSTARE,1:"")
End DoDot:2
End DoDot:1
+17 IF $GET(PSJORDAR)
SET $PIECE(PSJBLANK," ",75)=" "
Begin DoDot:1
+18 IF TMPORDER'["V"
SET PSJORDAR(1)=" "_$PIECE($GET(^PS(50.7,+$PIECE(NDP2,"^"),0)),"^")
Begin DoDot:2
+19 SET PSJORDAR(1)=PSJORDAR(1)_$EXTRACT(PSJBLANK,1,49-$LENGTH(PSJORDAR(1)))_TMPSTARE
+20 SET PSJORDAR(2)=$EXTRACT(PSJBLANK,1,8)_"Give: "_$PIECE(NDP2,"^",2)_" "_$PIECE($GET(^PS(51.2,+$PIECE(ND0,"^",3),0)),"^",3)_" "_$PIECE(ND2,"^")
End DoDot:2
+21 IF TMPORDER["V"
NEW AD,ADINT,ADEXT,PSJINDNT,PAD1,PAD2
SET $PIECE(PAD1," ",75)=" "
Begin DoDot:2
+22 NEW II
SET II=1
SET AD=0
FOR
SET AD=$ORDER(^PS(55,PSGP,"IV",+TMPORDER,"AD",AD))
if AD=""
QUIT
Begin DoDot:3
+23 SET ADINT=$GET(^(AD,0))
IF ADINT
SET ADEXT=$PIECE($GET(^PS(52.6,+ADINT,0)),"^")
SET AD(0)=$GET(AD(0))+1
SET PSJORDAR(AD(0))=" "_ADEXT
SET PSJORDAR(AD(0))=PSJORDAR(AD(0))_$EXTRACT(PSJBLANK,1,49-$LENGTH(PSJORDAR(AD(0))))_$SELECT(II=1:TMPSTARE,1:"")
SET II=II+1
End DoDot:3
+24 SET PSJINDNT=$SELECT($GET(ADINT):8,1:4)
+25 SET AD(0)=$GET(AD(0))+1
SET PSJORDAR(AD(0))=$EXTRACT(PSJBLANK,1,PSJINDNT)_" in "_$PIECE($GET(^PS(52.7,+$GET(TMPSOL1),0)),"^")_" "_$PIECE(TMPSOL1,"^",2)_" "_$PIECE(ND0,"^",8)
Begin DoDot:3
+26 SET PSJORDAR(AD(0))=$EXTRACT(PSJORDAR(AD(0)),1,49)
SET PAD2=49-$LENGTH(PSJORDAR(AD(0)))
SET PAD2=$EXTRACT(PAD1,1,PAD2)
SET PSJORDAR(AD(0))=PSJORDAR(AD(0))_$SELECT('$GET(ADINT):PAD2_TMPSTARE,1:"")
End DoDot:3
End DoDot:2
End DoDot:1
+27 QUIT
ORDCHK ; Check for conflicts among selected orders
+1 NEW PSJHOLD,PSJSELOR,PSJREVDN,PSJOROR,PSJOROR2,PSJCOMFL,TMPSELX,TMPSELX2,TMPSELCO,TMPSELCO1,TMPSELCO2,PSJONCAL,PSJMRR
+2 SET PSJSELOR=$SELECT($GET(TMPSELOR):TMPSELOR,1:$PIECE($GET(Y(1)),"=",2))
if 'PSJSELOR
QUIT
IF $EXTRACT(PSJSELOR,$LENGTH(PSJSELOR))'=","
SET PSJSELOR=PSJSELOR_","
+3 DO NOW^%DTC
SET PSGDT=+$EXTRACT(%,1,12)
SET PSJCOMFL=""
SET PSJONCAL=""
+4 SET TMPCNT=0
SET TMPSEL=0
SET PSJTMPON=""
FOR TMPCNT=1:1:($LENGTH(PSJSELOR,","))
if 'TMPCNT
QUIT
Begin DoDot:1
+5 SET TMPSEL=$PIECE(PSJSELOR,",",TMPCNT)
if 'TMPSEL
QUIT
SET PSJTMPON=$GET(^TMP("PSJON",$JOB,TMPSEL))
if 'PSJTMPON
QUIT
+6 NEW STAT
SET STAT=$SELECT(PSJTMPON["U":$PIECE($GET(^PS(55,PSGP,5,+PSJTMPON,0)),"^",9),PSJTMPON["V":$PIECE($GET(^PS(55,PSGP,"IV",+PSJTMPON,0)),"^",17),1:"")
+7 IF STAT="H"
SET PSJHOLD(PSJTMPON)=TMPSEL
+8 ;*315 Begin changes
+9 IF PSJTMPON["U"
IF $PIECE($GET(^PS(55,PSGP,5,+PSJTMPON,2.1)),U,4)>1
SET PSJMRR(TMPSEL)=PSJTMPON
+10 QUIT
End DoDot:1
+11 SET TMPSELCO=PSJSELOR
+12 ;
+13 IF $DATA(PSJMRR)>1
DO FULL^VALM1
Begin DoDot:1
+14 NEW PSJMRRCNT,PSJDASH1,TMPARRAY
SET $PIECE(PSJDASH1,"-",75)="-"
+15 WRITE !!,"The following orders you have selected may have a specified removal event and",!," cannot be edited via this option."
+16 WRITE !,"Use the Inpatient Order entry option to modify these orders"
+17 WRITE !!,"Orders for Medications that require removal:",?45,"Current Start / Stop Dates",!,PSJDASH1
+18 ;Display disallowed orders
SET TMPSEL=0
+19 FOR PSJMRRCNT=1:1
SET TMPSEL=$ORDER(PSJMRR(TMPSEL))
if 'TMPSEL
QUIT
Begin DoDot:2
+20 IF '(PSJMRRCNT#8)
NEW DIR
WRITE !
DO CONT^PSJOE0
DO CLEAR^VALM1
DO FULL^VALM1
WRITE !!,"Orders for Medications that require removal (CONTINUED):",?45,"Current Start / Stop Dates",!,PSJDASH1
+21 DO DSPORD^PSJCLOR2(PSGP,PSJMRR(TMPSEL))
+22 ;Build selection array
QUIT
End DoDot:2
+23 FOR TMPCNT=1:1:$LENGTH(TMPSELCO,",")
Begin DoDot:2
+24 SET TMPARRAY(TMPCNT)=$PIECE(TMPSELCO,",",TMPCNT)
+25 SET TMPSEL=0
+26 FOR
SET TMPSEL=$ORDER(PSJMRR(TMPSEL))
if 'TMPSEL
QUIT
Begin DoDot:3
+27 ; If the selection is in disallowed array kill it.
IF $GET(TMPARRAY(TMPCNT))=TMPSEL
KILL TMPARRAY(TMPCNT)
+28 QUIT
End DoDot:3
+29 QUIT
End DoDot:2
+30 SET TMPSEL=""
KILL TMPSELCO
+31 ; rebuild selection string
SET TMPSEL=$NAME(TMPARRAY)
FOR TMPCNT=1:1
SET TMPSEL=$QUERY(@TMPSEL)
if TMPSEL=""
QUIT
SET $PIECE(TMPSELCO,",",TMPCNT)=@TMPSEL
+32 NEW DIR
WRITE !
DO CONT^PSJOE0
WRITE !
+33 QUIT
End DoDot:1
+34 ;
+35 SET (PSJSELOR,TMPSELOR)=TMPSELCO
+36 ;end *315 changes
+37 ;
+38 IF $DATA(PSJHOLD)>1
DO FULL^VALM1
Begin DoDot:1
+39 NEW PSJDASH1
SET $PIECE(PSJDASH1,"-",75)="-"
+40 WRITE !!," ON HOLD orders cannot be edited - no changes will be applied",!," to any of the following ON HOLD orders:"
+41 WRITE !,"ON HOLD orders:",?45,"Current Start / Stop Dates",!,PSJDASH1
+42 NEW PSJOHCT
SET PSJOROR2=""
FOR PSJOHCT=1:1
SET PSJOROR2=$ORDER(PSJHOLD(PSJOROR2))
if 'PSJOROR2
QUIT
Begin DoDot:2
+43 IF '(PSJOHCT#8)
NEW DIR
WRITE !
DO CONT^PSJOE0
DO CLEAR^VALM1
DO FULL^VALM1
WRITE !!,"ON HOLD orders (CONTINUED):",?45,"Current Start / Stop Dates",!,PSJDASH1
+44 DO DSPORD^PSJCLOR2(PSGP,PSJOROR2)
+45 IF PSJHOLD(PSJOROR2)=$PIECE(TMPSELCO,",")
SET TMPSELCO=$PIECE(TMPSELCO,PSJHOLD(PSJOROR2)_",",2)
QUIT
+46 SET TMPSELCO1=$PIECE(TMPSELCO,","_PSJHOLD(PSJOROR2)_",")
SET TMPSELCO2=$PIECE(TMPSELCO,","_PSJHOLD(PSJOROR2)_",",2)
SET TMPSELCO=TMPSELCO1_$SELECT(TMPSELCO2]"":","_TMPSELCO2,1:"")
End DoDot:2
+47 NEW DIR
WRITE !
DO CONT^PSJOE0
WRITE !
End DoDot:1
+48 SET (PSJSELOR,TMPSELOR)=TMPSELCO
+49 SET TMPCNT=0
SET TMPSEL=0
SET PSJTMPON=""
FOR TMPCNT=1:1:($LENGTH(PSJSELOR,","))
if 'TMPCNT
QUIT
Begin DoDot:1
+50 SET TMPSEL=$PIECE(PSJSELOR,",",TMPCNT)
if 'TMPSEL
QUIT
SET PSJTMPON=$GET(^TMP("PSJON",$JOB,TMPSEL))
if 'PSJTMPON
QUIT
+51 NEW STAT
SET STAT=$SELECT(PSJTMPON["U":$PIECE($GET(^PS(55,PSGP,5,+PSJTMPON,0)),"^",9),PSJTMPON["V":$PIECE($GET(^PS(55,PSGP,"IV",+PSJTMPON,0)),"^",17),1:"")
+52 IF STAT="O"
SET PSJONCAL(PSJTMPON)=TMPSEL
End DoDot:1
+53 SET TMPSELCO=PSJSELOR
+54 IF $DATA(PSJONCAL)>1
DO FULL^VALM1
Begin DoDot:1
+55 NEW PSJOCCNT,PSJDASH1
SET $PIECE(PSJDASH1,"-",75)="-"
+56 WRITE !!," Orders with ON CALL Status cannot be edited - no changes will be applied",!," to any of the following orders with ON CALL status:"
+57 WRITE !,"ON CALL Status orders:",?45,"Current Start / Stop Dates",!,PSJDASH1
+58 SET PSJOROR2=""
FOR PSJOCCNT=1:1
SET PSJOROR2=$ORDER(PSJONCAL(PSJOROR2))
if 'PSJOROR2
QUIT
Begin DoDot:2
+59 IF '(PSJOCCNT#8)
NEW DIR
WRITE !
DO CONT^PSJOE0
DO CLEAR^VALM1
DO FULL^VALM1
WRITE !!,"ON CALL Status orders (CONTINUED):",?45,"Current Start / Stop Dates",!,PSJDASH1
+60 DO DSPORD^PSJCLOR2(PSGP,PSJOROR2)
+61 IF PSJONCAL(PSJOROR2)=$PIECE(TMPSELCO,",")
SET TMPSELCO=$PIECE(TMPSELCO,PSJONCAL(PSJOROR2)_",",2)
QUIT
+62 SET TMPSELCO1=$PIECE(TMPSELCO,","_PSJONCAL(PSJOROR2)_",")
SET TMPSELCO2=$PIECE(TMPSELCO,","_PSJONCAL(PSJOROR2)_",",2)
SET TMPSELCO=TMPSELCO1_$SELECT(TMPSELCO2]"":","_TMPSELCO2,1:"")
End DoDot:2
+63 NEW DIR
WRITE !
DO CONT^PSJOE0
WRITE !
End DoDot:1
+64 SET (PSJSELOR,TMPSELOR)=TMPSELCO
+65 SET TMPCNT=0
SET TMPSEL=0
SET PSJTMPON=""
FOR TMPCNT=1:1:($LENGTH(PSJSELOR,","))
if 'TMPCNT
QUIT
Begin DoDot:1
+66 SET TMPSEL=$PIECE(PSJSELOR,",",TMPCNT)
if 'TMPSEL
QUIT
SET PSJTMPON=$GET(^TMP("PSJON",$JOB,TMPSEL))
if 'PSJTMPON
QUIT
+67 IF (PSJTMPON=+PSJTMPON)
IF $DATA(^PS(53.1,"ACX",PSJTMPON))
SET PSJCOMFL="P"
SET PSJOROR=""
FOR
SET PSJOROR=$ORDER(^PS(53.1,"ACX",PSJTMPON,PSJOROR))
if 'PSJOROR
QUIT
SET PSJCOMFL(PSJOROR_"P")=TMPSEL
+68 IF PSJCOMFL=""
SET PSJOROR=$SELECT(PSJTMPON["U":$PIECE($GET(^PS(55,PSGP,5,+PSJTMPON,.2)),"^",8),PSJTMPON["V":$PIECE($GET(^PS(55,PSGP,"IV",+PSJTMPON,.2)),"^",8),1:"")
if 'PSJOROR
QUIT
Begin DoDot:2
+69 SET PSJCOMFL(PSJTMPON)=TMPSEL
End DoDot:2
End DoDot:1
+70 SET TMPSELCO=PSJSELOR
+71 IF $DATA(PSJCOMFL)>1
DO FULL^VALM1
Begin DoDot:1
+72 NEW PSJDASH1
SET $PIECE(PSJDASH1,"-",75)="-"
+73 WRITE !!," Complex Orders cannot be edited - no changes will be applied",!," to any of the following Complex order components:"
+74 WRITE !,"Complex Component (Child) Orders:",?45,"Current Start / Stop Dates",!,PSJDASH1
+75 NEW PSJCOMCT
SET PSJOROR2=""
FOR PSJCOMCT=1:1
SET PSJOROR2=$ORDER(PSJCOMFL(PSJOROR2))
if 'PSJOROR2
QUIT
Begin DoDot:2
+76 IF '(PSJCOMCT#8)
NEW DIR
WRITE !
DO CONT^PSJOE0
DO CLEAR^VALM1
DO FULL^VALM1
WRITE !!,"Complex orders (CONTINUED):",?45,"Current Start / Stop Dates",!,PSJDASH1
+77 DO DSPORD^PSJCLOR2(PSGP,PSJOROR2)
+78 IF PSJCOMFL(PSJOROR2)=$PIECE(TMPSELCO,",")
SET TMPSELCO=$PIECE(TMPSELCO,PSJCOMFL(PSJOROR2)_",",2)
QUIT
+79 SET TMPSELCO1=$PIECE(TMPSELCO,","_PSJCOMFL(PSJOROR2)_",")
SET TMPSELCO2=$PIECE(TMPSELCO,","_PSJCOMFL(PSJOROR2)_",",2)
SET TMPSELCO=TMPSELCO1_$SELECT(TMPSELCO2]"":","_TMPSELCO2,1:"")
End DoDot:2
+80 WRITE !
NEW DIR
DO CONT^PSJOE0
WRITE !
End DoDot:1
+81 SET (PSJSELOR,TMPSELOR)=TMPSELCO
+82 NEW TMPNEWSD,TMPSEL,TMPCLN,TMPCLNAR,PSJSTPDT,PSJTMPON,TMPCNT
SET PSJSTPDT=""
SET PSJQMSG=0
SET PSJABORT=0
+83 IF ('$GET(PSGOEAV)&(+$GET(PSJSYSU)=3))!(+$GET(PSJSYSU)'=3)
SET TMPCNT=0
SET TMPSEL=0
SET PSJTMPON=""
FOR TMPCNT=1:1:($LENGTH(PSJSELOR,","))
if 'TMPCNT!$GET(PSJREVFY)!$GET(PSJREVDN)
QUIT
Begin DoDot:1
+84 SET TMPSEL=$PIECE(PSJSELOR,",",TMPCNT)
if 'TMPSEL
QUIT
SET PSJTMPON=$GET(^TMP("PSJON",$JOB,TMPSEL))
if 'PSJTMPON
QUIT
+85 IF PSJTMPON["V"!(PSJTMPON["U")
SET PSJREVFY=$SELECT(+PSJSYSU=3:$$PSJREVFY^PSJCLOR1(),1:$$SURE^PSJCLOR1())
SET PSJREVDN=1
End DoDot:1
+86 IF $GET(DUOUT)!($GET(PSJREVFY)<0)
SET PSJABORT=2
QUIT
+87 ;
+88 SET TMPCNT=0
SET TMPSEL=0
SET PSJTMPON=""
FOR TMPCNT=1:1:($LENGTH(PSJSELOR,","))
if 'TMPCNT
QUIT
SET TMPSEL=$PIECE(PSJSELOR,",",TMPCNT)
if 'TMPSEL
QUIT
SET PSJTMPON=$GET(^TMP("PSJON",$JOB,TMPSEL))
if 'PSJTMPON
QUIT
Begin DoDot:1
+89 NEW ND0,ND2,NDP1
SET ND0=$SELECT(PSJTMPON["U":$GET(^PS(55,PSGP,5,+PSJTMPON,0)),PSJTMPON["P":$GET(^PS(53.1,+PSJTMPON,0)),PSJTMPON["V":$GET(^PS(55,PSGP,"IV",+PSJTMPON,0)),1:"")
+90 SET ND2=$SELECT(PSJTMPON["U":$GET(^PS(55,PSGP,5,+PSJTMPON,2)),PSJTMPON["P":$GET(^PS(53.1,+PSJTMPON,2)),PSJTMPON["V":$GET(^PS(55,PSGP,"IV",+PSJTMPON,2)),1:"")
+91 ;*315
SET ND2P1=$SELECT(PSJTMPON["U":$GET(^PS(55,PSGP,5,+PSJTMPON,2.1)),PSJTMPON["P":$GET(^PS(53.1,+PSJTMPON,2.1)),1:"")
+92 SET TMPSTR=$SELECT(PSJTMPON["P"!(PSJTMPON["U"):$PIECE(ND2,"^",2),PSJTMPON["V":$PIECE(ND0,"^",2),1:"")
SET TMPSTR($PIECE(TMPSTR,"."))=""
+93 SET TMPCLN=$SELECT(PSJTMPON["P":+$GET(^PS(53.1,+PSJTMPON,"DSS")),PSJTMPON["U":+$GET(^PS(55,+$GET(PSGP),5,+PSJTMPON,8)),PSJTMPON["V":+$GET(^PS(55,$GET(PSGP),"IV",+PSJTMPON,"DSS")),1:"")
+94 if 'TMPCLN
QUIT
IF $ORDER(TMPCLNAR(""))
IF $ORDER(TMPCLNAR(""))'=TMPCLN
SET PSJABORT=1
+95 SET TMPCLNAR(+TMPCLN)=""
End DoDot:1
+96 SET TMPSTR=""
FOR
SET TMPSTR=$ORDER(TMPSTR(TMPSTR))
if 'TMPSTR
QUIT
SET TMPSTR(0)=$GET(TMPSTR(0))+1
+97 IF $GET(PSJABORT)!($GET(TMPSTR(0))>1)
Begin DoDot:1
+98 KILL DIR
SET DIR("A",1)=" You have selected orders"_$SELECT($GET(PSJABORT):" from different clinics",1:" with different Start Date/Times")_" "
+99 IF $GET(PSJABORT)&($GET(TMPSTR(0))>1)
SET DIR("A",2)=" and with different Start Date/Times."
+100 SET DIR("A",3)=""
SET DIR("A",4)=""
+101 WRITE !
NEW X,Y
SET DIR("A")="Do you want to continue"
SET DIR(0)="Y"
DO ^DIR
SET PSJABORT=$SELECT(Y>0:1,1:2)
End DoDot:1
+102 QUIT
+103 ;
NEWCLN ; Clean up Order variables
+1 KILL PSGNEDFD,PSGOEE,PSGOEEWF,PSGOORD,PSGPD,PSGPDN,PSGPDRGN,PSGRDTX,PSGS0Y,PSJCOM,PSJL,PSJNOO,PSJQMSG
+2 KILL PSJTMPON,VALMBCK,VALMCNT,VALMQUIT
+3 QUIT