Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: PSGOE9

PSGOE9.m

Go to the documentation of this file.
  1. PSGOE9 ;BIR/CML3 - EDIT ORDERS IN 55 ; 7/6/11 9:45am
  1. ;;5.0;INPATIENT MEDICATIONS ;**11,47,50,72,110,111,188,192,207,113,223,269,315,338,352,366,380**;16 DEC 97;Build 10
  1. ;;Per VHA Directive 2004-038, this routine should not be modified.
  1. ; Reference to ^PS(50.7 is supported by DBIA# 2180
  1. ; Reference to ^PS(51.1 is supported by DBIA 2177
  1. ; Reference to ^PS(51.2 is supported by DBIA# 2178
  1. ; Reference to ^PS(55 is supported by DBIA #2191
  1. ; Reference to ^PSDRUG is supported by DBIA# 2192
  1. ;
  1. 101 ; Orderable Item (AKA primary drug)
  1. S MSG=0,PSGF2=101,PSGOOPD=PSGPD,PSGOOPDN=PSGPDN S:PSGOEEF(PSGF2) BACK="101^PSGOE9"
  1. I $G(PSGOROE1)'=1 S %=1 W !!,$C(7),"WARNING! If you change the drug of an order, the Dosage Ordered and Dispense",!,"Drug(s) are deleted." F W !,"Do you wish to continue" S %=2 D YN^DICN Q:% D DH^PSGOE8
  1. I %'=1 G DONE
  1. A101 ;
  1. I $G(PSJORD),$G(PSGP) I $$COMPLEX^PSJOE(PSGP,PSJORD) S PSGOEE=0 D G DONE
  1. . W !!?5,"Orderable Item may not be edited for active complex orders." D PAUSE^VALM1
  1. W !,"ORDERABLE ITEM: ",$S(PSGPD:PSGPDN_"// ",1:"") R X:DTIME I X="^"!'$T W:'$T $C(7) S PSGOEE=0 G DONE
  1. I X="",PSGPD S X=PSGPDN I PSGPD'=PSGPDN,$D(^PS(50.7,PSGPD,0)) G DONE
  1. I $S(X="@":1,X]"":0,1:'PSGPD) W $C(7)," (Required)" S X="?" D ENHLP^PSGOEM(55.06,101) G A101
  1. I X?1."?" D ENHLP^PSGOEM(55.06,101)
  1. I $E(X)="^" D ENFF^PSGOE92 G:Y>0 @Y G A101
  1. ;BHW;PSJ*5.0*192;Modify ^DIC call to use MIX^DIC and only B/C cross-references
  1. K DIC,D S DIC="^PS(50.7,",DIC(0)="EMQZ",DIC("S")="I $$ENOISC^PSJUTL(Y,""U"")",D="B^C" D MIX^DIC1 K DIC,D I Y'>0 G A101
  1. I +Y=PSGPD G DONE ;PSJ*5*269 - No change to Orderable Item
  1. F S %=2 D DH^PSGOE8,YN^DICN Q:%
  1. I %'=1 G A101
  1. S (PSGPDRG,PSGPD)=+Y,(PSGPDN,PSGPDRGN)=$$OINAME^PSJLMUTL(PSGPDRG)
  1. S PSGNEDFD=$$GTNEDFD^PSGOE7("U",PSGPDRG)
  1. S PSGPDNX=1,PSGPD=+Y,PSGPDN=$$OINAME^PSJLMUTL(PSGPD),PSGDO="" K ^PS(53.45,PSJSYSP,2) S X=$O(^PSDRUG("ASP",PSGPD,0)) I X,'$O(^(X)) S ^PS(53.45,PSJSYSP,2,0)="^53.4502P^1^1",^(1,0)=X,^PS(53.45,PSJSYSP,2,"B",X,1)="" G DONE
  1. D ENDRG^PSGOEF1(PSGPD,0)
  1. I $S($D(DTOUT):1,$D(DUOUT):1,$D(DIRUT):1,1:0) S PSGOROE1=1 G DONE
  1. ;G DONE
  1. ;
  1. 109 ; dosage ordered
  1. S MSG=0,PSGF2=109 S:$G(PSGOEEF(PSGF2)) BACK="109^PSGOE9"
  1. A109 ;
  1. I $G(PSJORD),$G(PSGP) I $$COMPLEX^PSJOE(PSGP,PSJORD) S PSGOEE=0 D G DONE
  1. . W !!?5,"Dosage may not be edited for active complex orders." D PAUSE^VALM1
  1. D EDITDOSE^PSJDOSE S X=PSGDO G DONE
  1. W !,"DOSAGE ORDERED: ",$S(PSGDO]"":PSGDO_"// ",1:"") R X:DTIME I X="^"!'$T W:'$T $C(7) S PSGOEE=0 G DONE
  1. I X=""&(PSGDO]"") S X=PSGDO
  1. I $$CHECK^PSGOE8(PSJSYSP)&(X="")&(PSGDO']"") W $C(7)," (Required) " G A109
  1. I $$CHECK^PSGOE8(PSJSYSP)&(X="@") W $C(7)," (Required)" G A109
  1. I '$$CHECK^PSGOE8(PSJSYSP)&(X="@") S PSGDO="" G DONE
  1. I X?1."?" D ENHLP^PSGOEM(55.06,109) G A109
  1. I $E(X)="^" D ENFF^PSGOE92 G:Y>0 @Y G A109
  1. I $E(X,$L(X))=" " F S X=$E(X,1,$L(X)-1) Q:$E(X,$L(X))'=" "
  1. I $S(X?.E1C.E:1,$L(X)>20:1,X="":0,X["^":1,X?1.P:1,1:X=+X) W $C(7)," ",$S(X?1.P!(X=""):"(Required)",1:"??") D ENHLP^PSGOEM(55.06,109) G A109
  1. S PSGDO=X G DONE
  1. ;
  1. 3 ; med route
  1. N PSGS0XT
  1. S MSG=0,PSGF2=3 S:PSGOEEF(PSGF2) BACK="3^PSGOE9"
  1. A3 I $G(PSJORD),$G(PSGP) I $$COMPLEX^PSJOE(PSGP,PSJORD) S PSGOEE=0 D G DONE
  1. . W !!?5,"Med Route may not be edited for active complex orders." D PAUSE^VALM1
  1. W !,"MED ROUTE: ",$S(PSGMR:PSGMRN_"// ",1:"") R X:DTIME I X="^"!'$T W:'$T $C(7) S PSGOEE=0 G DONE
  1. I X="",PSGMR S X=PSGMRN I PSGMR'=PSGMRN,$D(^PS(51.2,PSGMR,0)) W " "_$P(^(0),"^",3) G DONE
  1. I $S(X="@":1,X]"":0,1:'PSGMR) W $C(7)," (Required)" S X="?" D ENHLP^PSGOEM(55.06,3) G A3
  1. I X="?" D MRSL^PSGOE4 ;*366
  1. I X?1."?" D ENHLP^PSGOEM(55.06,3)
  1. I $E(X)="^" D ENFF^PSGOE92 G:Y>0 @Y G A3
  1. D CKMRSL^PSGOE4 ;*366
  1. K DIC S DIC="^PS(51.2,",DIC(0)="EMQZX",DIC("S")="I $P(^(0),""^"",4)" D ^DIC K DIC I Y'>0 G A3
  1. S PSGMR=+Y,PSGMRN=Y(0,0) G DONE
  1. ;
  1. 7 ; schedule type
  1. S MSG=0,PSGF2=7 S:PSGOEEF(PSGF2) BACK="7^PSGOE9"
  1. A7 I $G(PSGP),$G(PSGORD) I $$COMPLEX^PSJOE(PSGP,PSGORD) D
  1. . N X,Y,PARENT,P2ND S P2ND=$S(PSGORD["U":$G(^PS(55,PSGP,5,+PSGORD,.2)),1:$G(^PS(53.1,+PSGORD,.2))),PARENT=$P(P2ND,"^",8)
  1. . I PARENT D FULL^VALM1 W !!?5,"This order is part of a complex order. Please review the following ",!?5,"associated orders before changing this order." D CMPLX^PSJCOM1(PSGP,PARENT,PSGORD)
  1. W !,"SCHEDULE TYPE: "_$S(PSGSTN]"":PSGSTN_"// ",1:"") R X:DTIME S X=$TR(X,"coprocf","COPROCF") I X="^"!'$T S PSGOEE=0 W $C(7) G DONE
  1. I X="" S X=PSGST,PSGSTN=$$ENSTN^PSGMI(X) W:PSGSTN]"" " ",PSGSTN G DONE
  1. S:X="F" X="R"
  1. I ",?,??,C,O,OC,P,R,"'[(","_X_",") W " ??" G A7
  1. I $$PRNOK^PSGS0($G(PSGSCH)),X="C" W " ??" G A7
  1. I X="@"!(X?1."?") W:X="@" $C(7)," (Required)" S:X="@" X="?" D ENHLP^PSGOEM(55.06,7) G A7
  1. I $E(X)="^" D ENFF^PSGOE92 G:Y>0 @Y G A7
  1. ;*223 Don't allow O sched type on C orders
  1. I X="O",$$SCHTP^PSGOE8(PSGSCH)'="O" W !," SCHEDULE ("_PSGSCH_") is not a ONE TIME Schedule." G A7
  1. ;*269 Don't allow C sched type on O orders
  1. I X="C",$$SCHTP^PSGOE8(PSGSCH)="O" W !," SCHEDULE ("_PSGSCH_") is not a CONTINUOUS Schedule." G A7
  1. S PSGOST=PSGST
  1. S PSGST=X,PSGSTN=$$ENSTN^PSGMI(X) W:PSGSTN]"" " ",PSGSTN
  1. I X="P",$G(PSGAT)]"" S PSGOAT=PSGAT S PSGAT="" D
  1. .W !!,"NOTE: This change in schedule type also changes the ADMIN TIMES.",!
  1. .S MSG=1,PSGOEEF(39)=1
  1. .I $G(PSJNEWOE) D PAUSE^VALM1
  1. G DONE
  1. ;
  1. 26 ; schedule
  1. S MSG=0,PSGF2=26 S:PSGOEEF(PSGF2) BACK="26^PSGOE9"
  1. A26 I $G(PSJORD),$G(PSGP) I $$COMPLEX^PSJOE(PSGP,PSJORD) S PSGOEE=0 D G DONE
  1. . W !!?5,"Schedule may not be edited for active complex orders." D PAUSE^VALM1
  1. W !,"SCHEDULE: ",$S(PSGSCH]"":PSGSCH_"// ",1:"") R X:DTIME I X="^"!'$T W:'$T $C(7) S PSGOEE=0 G DONE
  1. S:X="" X=PSGSCH,PSGSCH="" I "@"[X W $C(7)," (Required)" S X="?" D ENHLP^PSGOEM(55.06,26) G A26
  1. S DOW=0 I $$DOW^PSIVUTL($$ENLU^PSGMI(X)) S DOW=1
  1. I X?1."?" D ENHLP^PSGOEM(55.06,26) G A26
  1. I $E(X)="^" D ENFF^PSGOE92 G:Y>0 @Y G A26
  1. ;BHW;PSJ*5*188;Add flag and IEN return variable for PSGS0 (PSJ*5*134), Highlight Admin Times if they changed.
  1. N PSJSLUP,PSGSFLG S PSJSLUP=1,PSGSFLG=1 D EN^PSGS0 I '$D(X) W $C(7)," ??" S X="?" D ENHLP^PSGOEM(55.06,26) G A26
  1. I X'=PSGSCH D
  1. . N XX
  1. . K PSGDUR,PSGRMVT,PSGRMV,ND2P1 ;*315 Removal times are tied to ADMIN times.
  1. . S PSGSCH=X
  1. . I PSGS0Y'=PSGAT S PSGAT=PSGS0Y ;Change so that any schedule change will adjust the type and default the admin times - DRF
  1. . D ;Change schedule type to agree with schedule
  1. .. I $G(DOW) S PSGST="C",PSGSTN=$$ENSTN^PSGMI(PSGST) Q
  1. .. I (PSGSCH[" PRN")!(PSGSCH="PRN") I $$PRNOK^PSGS0(PSGSCH) S PSGOST=PSGST,PSGST="P",PSGSTN=$$ENSTN^PSGMI(PSGST) Q
  1. .. I '$G(PSGSCIEN),PSGSCH]"" S XX=+$O(^PS(51.1,"AC","PSJ",PSGSCH,0)),PSGSCIEN=XX ;PSGSCIEN should be set by call to EN^PSGS0
  1. .. S PSGST=$P($G(^PS(51.1,PSGSCIEN,0)),"^",5) I PSGST="D" S PSGST="C" ;DOW schedules are converted to Continuous
  1. .. S PSGSTN=$$ENSTN^PSGMI(PSGST)
  1. . W !!,"NOTE: This change in schedule also changes the ADMIN TIMES and SCHEDULE TYPE.",!
  1. . S MSG=1,PSGOEEF(39)=1
  1. . I ($G(PSGRF)>1),PSGST="C" D
  1. .. S PSGF2=41,BACK="41^PSGOE91",PSGOEEF(PSGF2)=1 D 41^PSGOE91 S BACK="26^PSGOE9",PSGF2=26,PSGOAT=PSGAT ;*315 Prompt for Admin to get DOA
  1. ..Q
  1. . I $G(PSJNEWOE) D PAUSE^VALM1
  1. I PSGST="O" S PSGOEEF(7)=1 I +$G(PSGRF) S PSGOEEF(34)=1 D 34^PSGOE91 S PSGF2=26
  1. ;
  1. DONE ;
  1. I PSGOEE G:'$G(PSGOEEF(PSGF2)) @BACK S PSGOEE=PSGOEEF(PSGF2)
  1. K F,F0,PSGF2 Q
  1. ;
  1. DEL ; delete entry
  1. W !?3,"SURE YOU WANT TO DELETE" S %=0 D YN^DICN I %'=1 W $C(7)," <NOTHING DELETED>"
  1. Q