1 | PSGOE1 ;BIR/CML3-ACTION ON INPATIENT ORDERS ;10 Mar 99 / 10:54 AM
|
---|
2 | ;;5.0; INPATIENT MEDICATIONS ;**7,19,26,39,58,85,80,110,127,133,134**;16 DEC 97;Build 124
|
---|
3 | ;
|
---|
4 | ; Reference to ^PS(55 is supported by DBIA #2191.
|
---|
5 | ; Reference to ^PSDRUG( is supported by DBIA #2192.
|
---|
6 | ; Reference to EN1^ORCFLAG is supported by DBIA #3620.
|
---|
7 | ; Reference to AND^ORX8 is supported by DBIA #3632.
|
---|
8 | EN ;
|
---|
9 | K PSGDFLG,PSGPFLG S PSGOEA="^",PSGACT="",(PSGDI,PSGOENG,PSGPI,PSGRRF)=0
|
---|
10 | Q:'$G(DUZ)
|
---|
11 | D @$S(PSGORD["P":"NON",1:"ACT")
|
---|
12 | GO ;
|
---|
13 | K A,ND,PSGE,PSGR,ST,X,X1,X2,Y I $D(ORACTION) K PSGDI,PSGOENG,PSGPI Q
|
---|
14 | Q
|
---|
15 | ENACTION(PSGP,PSGORD) ;
|
---|
16 | ;Returns string identifying the actions allowed on this order.
|
---|
17 | D EN
|
---|
18 | Q PSGACT
|
---|
19 | DONE ;
|
---|
20 | I PSGORD["U"!(PSGORD["O") L -^PS(55,PSGP,5,+PSGORD)
|
---|
21 | E L -^PS(53.1,+PSGORD)
|
---|
22 | K C,PSGACT,PSGDFLG,PSGPFLG,PSGDI,PSGOENG,PSGPI,PSGRRF Q
|
---|
23 | B ; bypass
|
---|
24 | S PSGCANFL=1
|
---|
25 | Q
|
---|
26 | C ; copy an order (does NOT discontinue original order)
|
---|
27 | D ^PSGOD Q
|
---|
28 | D ; discontinue (or delete) an order
|
---|
29 | I PSGOEAV,'$D(PSGODF) D ENDS^PSGPO Q
|
---|
30 | D ENO^PSGOEC(PSGP,PSGORD) Q
|
---|
31 | E ; edit orders
|
---|
32 | D ^PSGOEE Q
|
---|
33 | F ; finish released orders
|
---|
34 | D ^PSGOEF Q
|
---|
35 | H(PSGP,PSGORD) ; hold
|
---|
36 | S X=$G(^PS(55,PSGP,5,+PSGORD,4)) I $P(X,U,12),$P(X,U,13) W $C(7),!!,"WARNING! THIS ORDER HAS BEEN MARKED FOR CANCELLATION."
|
---|
37 | I $P($G(^PS(55,PSGP,5,+PSGORD,0)),"^",9)="H" D ^PSGOEH0 Q
|
---|
38 | D ^PSGOEH1 Q
|
---|
39 | I ; mark (or unmark) a non-verified order as 'incomplete'
|
---|
40 | D ^PSGOEI Q
|
---|
41 | L ; display logs
|
---|
42 | D ^PSGOEL Q
|
---|
43 | N ; mark order as 'not to be given'
|
---|
44 | D ^PSGOENG Q
|
---|
45 | O ; Outpatient (discharge) med
|
---|
46 | W !!,"UNDER DEVELOPMENT, NOT CURRENTLY AVAILABLE."
|
---|
47 | Q
|
---|
48 | P ; print expanded view
|
---|
49 | D ^PSGVWP Q
|
---|
50 | R ; renew an order
|
---|
51 | I 'PSJSYSU,$D(^PS(55,PSGP,5,+PSGORD,4)),$P(^(4),"^",15),$P(^(4),"^",16) W !!,"THIS ORDER IS ALREADY MARKED FOR RENEWAL!" Q
|
---|
52 | I 'PSGRRF D ^PSGOER Q
|
---|
53 | D ^PSGOERI Q
|
---|
54 | S ; show the order again
|
---|
55 | D EN2^PSGVW Q
|
---|
56 | V ; verify an order
|
---|
57 | D EN^PSGOEV Q
|
---|
58 | ACT ;
|
---|
59 | S X=$G(^PS(55,PSGP,5,+PSGORD,0)),ND0=X,ND=$G(^(4)),ND2=$G(^(2)),PSGOENG=$P(X,"^",22),PSGR=$E("R",'PSGOENG),PSJCOM=$P($G(^PS(55,PSGP,5,+PSGORD,.2)),U,8)
|
---|
60 | I 'PSGOENG,PSJCOM S PSGR=$E("R",$$AND^ORX8(PSJCOM)) S:PSGR="R" PSGR=$E("R",$$RNEWOK^PSJUTL2(PSJCOM,PSGP))
|
---|
61 | S PSGR=$E("R",'$$EXPIRED^PSGOER(PSGP,PSGORD)) S PSGR=$E("R",$P(ND0,"^",7)'="O")
|
---|
62 | I $P(ND2,U,4)'>PSGDT D OLD Q
|
---|
63 | S PSGE="E" I '$D(PSGOETOF) S (PSGDFLG,PSGDI)='$$DDOK^PSGOE2("^PS(55,"_PSGP_",5,"_+PSGORD_",1,",+$G(^PS(55,PSGP,5,+PSGORD,.2))),PSGPFLG='$$OIOK^PSGOE2(+$G(^PS(55,PSGP,5,+PSGORD,.2)))
|
---|
64 | S:$P(X,"^",26) (PSGE,PSGR)=""
|
---|
65 | I '$D(PSGOETOF) S PSGPI=$P(X,"^",2) I PSGPI S PSGPI=$P($G(^VA(200,PSGPI,"PS")),"^",4) S:PSGPI PSGPI=PSGPI'>DT
|
---|
66 | S ST=$P(X,"^",9)="H"*4 S:ST (PSGE,PSGR)=""
|
---|
67 | N CMPOK S CMPOK=1 I $$COMPLEX^PSJOE(PSGP,PSGORD) S CMPOK=+$P(^PS(55,PSGP,5,+PSGORD,.2),"^",8)
|
---|
68 | S PSGACT="D"_$S('$G(CMPOK):"",1:PSGE)_$S($P(ND,"^",18+ST)&'$P(ND,"^",19+ST)&'$P(ND,"^",PSJSYSU):"",1:"H")_"L"_$S(ST:"",1:PSGR)
|
---|
69 | I PSJSYSU,'$P(ND,"^",+PSJSYSU) S PSGACT=PSGACT_"V"
|
---|
70 | I +PSJSYSU=3,$L($T(EN1^ORCFLAG)) S PSGACT=PSGACT_"G"
|
---|
71 | Q
|
---|
72 | OLD ;
|
---|
73 | S A=$P(ND0,"^",9),PSGACT=$E("H",A="H")_"L" I A'["D",A'["E" Q
|
---|
74 | I 'PSGOENG,($D(^XUSEC("PSJU MGR",DUZ))!$D(^XUSEC("PSJ RPHARM",DUZ))) S PSGACT="LN"
|
---|
75 | I PSJSYSU,'$P(ND,"^",+PSJSYSU) S:(A'["D")&($G(PSGPRIO)'="DONE") PSGACT="D"_PSGACT S PSGACT=PSGACT_"V" Q
|
---|
76 | Q:PSGR=""!'PSJPCAF D NOW^%DTC S (PSGDT,X1)=+$E(%,1,12),X2=-4 D C^%DTC I $S('$P(ND2,"^",4):1,1:$P(ND2,"^",4)'>X) Q
|
---|
77 | I A="E",$G(PSJPRI)'="D" S PSGACT=PSGACT_PSGR Q
|
---|
78 | I PSJSYSU,$P(ND,"^",11) S PSGACT=PSGACT_PSGR,PSGRRF=1
|
---|
79 | Q
|
---|
80 | NON ;
|
---|
81 | N XND,DRGPT,XND2
|
---|
82 | S (X,XND)=$G(^PS(53.1,+PSGORD,0)) I $P(X,"^",19),$D(^PS(55,PSGP,5,$P(X,"^",19))) L -^PS(53.1,+PSGORD) S PSGORD=$P(X,"^",19)_"U" G ACT
|
---|
83 | I $S($P(X,"^",26):1,$P(X,"^",9)["D":1,1:$P(X,"^",9)["E") S:$P(X,U,9)="P"&($P(X,U,26)) PSGACT="D" S:(+PSJSYSU=3)&($L($T(EN1^ORCFLAG))) PSGACT=PSGACT_"G" Q
|
---|
84 | I PSGORD["U" S PSGACT="DE" S:(+PSJSYSU=3)&($L($T(EN1^ORCFLAG))) PSGACT=PSGACT_"G" Q
|
---|
85 | I '$D(PSGOETOF) S (PSGDFLG,PSGDI)='$$DDOK^PSGOE2("^PS(53.1,"_+PSGORD_",1,",+$G(^PS(53.1,+PSGORD,.2))),PSGPFLG='$$OIOK^PSGOE2(+$G(^PS(53.1,+PSGORD,.2)))
|
---|
86 | S DRG=$$STUFFDD^PSGOE2 S:DRG ^PS(53.1,+PSGORD,1,0)="^53.11P^1^1",^PS(53.1,+PSGORD,1,1,0)=DRG,^PS(53.1,+PSGORD,1,"B",DRG,1)=""
|
---|
87 | F DRG=0:0 S DRG=$O(^PS(53.1,+PSGORD,1,DRG)) Q:'DRG S DRGPT=^(DRG,0) S INACTDT=$G(^PSDRUG(+DRGPT,"I")) I INACTDT,(INACTDT'>DT) S PSGDFLG=1
|
---|
88 | I $P(XND,U,9)="P" S PSGACT=$S(+PSJSYSU=3:"BDEF",$G(PSJRNF):"BDEF",1:"") S:(+PSJSYSU=3)&($L($T(EN1^ORCFLAG))) PSGACT=PSGACT_"G" Q
|
---|
89 | I '$D(PSGOETOF) S PSGPI=$P(XND,"^",2) I PSGPI S PSGPI=$P($G(^VA(200,PSGPI,"PS")),"^",4) S:PSGPI PSGPI=PSGPI'>DT
|
---|
90 | S PSGACT="DEI" I PSJSYSU,'PSGPI,$P(XND,"^",9)'="I" S PSGACT=PSGACT_"V"
|
---|
91 | S XND2=$G(^PS(53.1,+PSGORD,.2)) I $P(XND2,"^",8),$P(XND,"^",9)="P" S PSGACT=$TR(PSGACT,"V")
|
---|
92 | I +PSJSYSU=3,$L($T(EN1^ORCFLAG)) S PSGACT=PSGACT_"G"
|
---|
93 | I $P($G(PSGRDTX),U,2)]"",'$P($G(^PS(53.1,+PSGORD,2.5)),"^",2) S $P(^PS(53.1,+PSGORD,2.5),U,2)=$P(PSGRDTX,U,2)
|
---|
94 | Q
|
---|
95 | ACTO ;
|
---|
96 | S PSGACTO="" I $G(PSGACT)]"" F X=1:1:$L(PSGACT) S PSGACTO=PSGACTO_$S($E(PSGACT,X)="D":"DC",1:$E(PSGACT,X))_" "
|
---|
97 | S:PSGACTO]"" PSGACTO=$E(PSGACTO,1,$L(PSGACTO)-1) Q
|
---|