source: WorldVistAEHR/trunk/r/ORDER_ENTRY_RESULTS_REPORTING-OR-OCX--ORRC--ORRJ/OREVNTX1.m@ 619

Last change on this file since 619 was 613, checked in by George Lilly, 15 years ago

initial load of WorldVistAEHR

File size: 8.8 KB
Line 
1OREVNTX1 ; SLC/JLI - Event delayed orders RPC's ;9/19/02 13:35
2 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**141,165,149,243**;Dec 17, 1997;Build 242
3 ;
4PUTEVNT(ORY,DFN,EVT,ORIFN) ; Save new patient delayed events to file 100.2
5 S ORY=$$NEW^OREVNT(DFN,EVT,ORIFN)
6 Q
7 ;
8GTEVT(ORY,PTEVT) ; Return Event infomation based on PTEVT ptr #100.2
9 ;EVTID ptr #100.5
10 Q:'+PTEVT
11 N EVTID,EVTTYPE,EVTNAME,EVTDISP,EVTDLG,PRTEVT
12 S (EVTTYPE,EVTNAME,EVTDISP,PRTEVT)=""
13 S EVTDLG=0
14 I '$P(^ORE(100.2,+$G(PTEVT),0),U,2) Q
15 S EVTID=$$EVT^OREVNTX(PTEVT)
16 S PRTEVT=$P(^ORD(100.5,EVTID,0),U,12)
17 I PRTEVT S EVTTYPE=$P(^ORD(100.5,PRTEVT,0),U,2)
18 E S EVTTYPE=$P(^ORD(100.5,EVTID,0),U,2)
19 I $D(^ORD(100.5,EVTID,0)) D
20 . S EVTNAME=$P(^ORD(100.5,EVTID,0),U,1)
21 . S EVTDISP=$P(^ORD(100.5,EVTID,0),U,8)
22 . S EVTDLG=$P(^ORD(100.5,EVTID,0),U,4)
23 S ORY=EVTTYPE_U_EVTID_U_EVTNAME_U_EVTDISP_U_EVTDLG
24 Q
25GTEVT1(ORY,EVT) ; Return Event information based on EVT ptr #100.5
26 ;EVT ptr #100.5
27 Q:'+EVT
28 N EVTTYPE,EVTNAME,EVTDISP,EVTDLG,PRTEVT
29 S (EVTDLG,PRTEVT)=0
30 S PRTEVT=$P(^ORD(100.5,+EVT,0),U,12)
31 I PRTEVT>0 S EVTTYPE=$P(^ORD(100.5,PRTEVT,0),U,2)
32 E S EVTTYPE=$P(^ORD(100.5,+EVT,0),U,2)
33 S EVTNAME=$P($G(^ORD(100.5,+EVT,0)),U,1)
34 S EVTDISP=$P($G(^ORD(100.5,+EVT,0)),U,8)
35 S EVTDLG=$P($G(^ORD(100.5,+EVT,0)),U,4)
36 S ORY=EVTTYPE_U_EVT_U_EVTNAME_U_EVTDISP_U_EVTDLG
37 Q
38 ;
39EVT(ORY,PTEVT) ; Return Event ptr #100.5, given PTEVT ptr #100.2
40 Q:'+PTEVT
41 S ORY=$$EVT^OREVNTX(PTEVT)
42 Q
43 ;
44EXISTS(ORY,DFN,EVT) ;Returns PtEvtID ptr #100.2 if patient already has delayed orders
45 I '+EVT S ORY=0 Q
46 N PTEVT S (PTEVT,ORY)=0
47 S PTEVT=$O(^ORE(100.2,"AE",+DFN,+EVT,PTEVT))
48 I PTEVT>0 S ORY=PTEVT
49 Q
50 ;
51TYPEXT(ORY,DFN,EVT) ; does EVT has delayed orders?
52 ; 1 if Patient DFN has delayed orders for EVT
53 ; 2 if Parent/Sibling event has delayed orders
54 ; 0 if No delayed orders for EVT
55 Q:'+EVT
56 S ORY=$$EXISTS^OREVNTX(DFN,EVT)
57 Q
58 ;
59MATCH(ORY,DFN,EVT) ;If Pt's current data match selected event
60 ;DFN: patient DFN
61 ;EVT: ptr to #100.5
62 S ORY=0
63 Q:('+DFN)!('+EVT)
64 S ORY=$$MATCH^OREVNT(DFN,EVT)
65 N TS,TSNM
66 S TS=$S($G(ORTS):+ORTS,1:+$G(^DPT(DFN,.103)))
67 S TSNM=$P($G(^DIC(45.7,TS,0)),U)
68 S:ORY ORY=ORY_U_TSNM
69 Q
70 ;
71NAME(ORY,PTEVT) ; Return Event name from #100.5, given PTEVT ptr #100.2
72 I PTEVT'>0 S ORY="" Q
73 S ORY=$$NAME^OREVNTX(PTEVT)
74 Q
75 ;
76DIV(ORY,PTEVT) ; Return division for PTEVT ptr #100.2
77 Q:'+PTEVT
78 S ORY=$$DIV^OREVNTX(PTEVT)
79 Q
80 ;
81DIV1(ORY,EVT) ; Return division for EVT ptr #100.5
82 Q:'+EVT
83 S ORY=+$P($G(^ORD(100.5,+EVT,0)),U,3) S:ORY<1 ORY=+$G(DUZ(2))
84 Q
85 ;
86LOC(ORY,PTEVT) ; Return default hospital location ^SC( for PTEVT ptr #100.2
87 Q:'+PTEVT
88 S ORY=$$LOC^OREVNTX(PTEVT)
89 S ORY=+ORY
90 Q
91 ;
92LOC1(ORY,EVT) ; Return default hospital location ^SC( for EVT ptr #100.5
93 Q:'+EVT
94 S ORY=+$P($G(^ORD(100.5,+EVT,0)),U,9) S:ORY<1 ORY=+$G(ORL)
95 Q
96 ;
97CHGEVT(ORY,NEWEVT,ORIDS) ; Change order's event
98 N ORI
99 S ORI=0
100 F S ORI=$O(ORIDS(ORI)) Q:'+ORI D
101 . D CHGEVT^OREVNTX(+$G(ORIDS(ORI)),NEWEVT)
102 Q
103 ;
104EMPTY(ORY,PTEVT) ; Return 1 if PTEVT doesn't have any orders
105 Q:'+PTEVT
106 S ORY=$$EMPTY^OREVNTX(PTEVT)
107 Q
108 ;
109DELPTEVT(ORY,PTEVT) ; Delete Patient Event in #100.2
110 Q:'+PTEVT
111 D CANCEL^OREVNTX(PTEVT)
112 Q
113 ;
114UPDTOR(ORY,PTIFN,ORIFN,PTEVT) ; If delayed order was DCed, then update the EVENT and "AEVNT"
115 Q ;Don't ever need to do this!
116CURSPE(ORY,PTIFN) ; Return current treating specialty
117 Q:'PTIFN
118 N SPEC S SPEC=$$PT^DGPMOBS(PTIFN),ORY=""
119 I SPEC'<0 S ORY=$P(SPEC,U,3)_U_$P(SPEC,U,2)_U_$P(SPEC,U) ;name^ien^obs flag
120 Q
121DFLTEVT(ORY,PVIFN) ; Return default release event based on provider IFN
122 N CMEVTLST,IDX
123 S CMEVTLST="",IDX=0
124 D GETLST^OREV3(.CMEVTLST)
125 F S IDX=$O(CMEVTLST(IDX)) Q:'IDX D
126 . I $P($G(CMEVTLST(IDX)),U,2) S ORY=$P($G(CMEVTLST(IDX)),U) Q
127 Q
128CMEVTS(ORY,CLOC) ;Return common event list
129 N IDX,X0,X,LOC
130 S:CLOC>0 LOC=CLOC
131 S IDX=0,ORY=""
132 D GETLST^OREV3(.ORY)
133 F S IDX=$O(ORY(IDX)) Q:'IDX D
134 . S X0=""
135 . S:$L($G(^ORD(100.5,+ORY(IDX),0))) X0=$G(^(0))
136 . I '$L($P(X0,U,2)) D
137 .. S X=$P(X0,U,12) S:X $P(X0,U,2)=$P($G(^ORD(100.5,+X,0)),U,2)
138 . S:$L(X0) ORY(IDX)=+ORY(IDX)_U_X0
139 Q
140 ;
141DELDFLT(ORY,PVIFN) ; Delete default release event
142 Q:'PVIFN
143 N ORERR
144 S ORERR=""
145 D DEL^XPAR(PVIFN_";VA(200,","OREVNT DEFAULT",1,.ORERR)
146 Q
147WRLSTED(LST,LOC,EVTID) ; Return list of dialogs for writing event delayed orders
148 ; .Y(n): DlgName^ListBox Text
149WRLST1 N ANENT
150 S LOC=+$G(LOC)_";SC(" I 'LOC S LOC=""
151 S ANENT="ALL^USR.`"_DUZ_"^"_LOC_$S($G(^VA(200,DUZ,5)):"^SRV.`"_+$G(^(5)),1:"")
152 N MNU,SEQ,IEN,ITM,TXT,FID,DGRP,X,TYP
153 S MNU=$$GET^XPAR(ANENT,"ORWDX WRITE ORDERS EVENT LIST",EVTID,"I") Q:'MNU
154 S SEQ=0 F S SEQ=$O(^ORD(101.41,MNU,10,"B",SEQ)) Q:'SEQ D
155 . S IEN=0 F S IEN=$O(^ORD(101.41,MNU,10,"B",SEQ,IEN)) Q:'IEN D
156 . . S X=$G(^ORD(101.41,MNU,10,IEN,0)),ITM=+$P(X,U,2),TXT=$P(X,U,4)
157 . . S X=$G(^ORD(101.41,ITM,5)),FID=+$P(X,U,5)
158 . . S X=$G(^ORD(101.41,ITM,0)),TYP=$P(X,U,4),DGRP=+$P(X,U,5)
159 . . S:'$L(TXT) TXT=$P(X,U,2)
160 . . I TYP="M" S:'FID FID=1001
161 . . S LST(SEQ)=ITM_";"_FID_";"_DGRP_";"_TYP_U_TXT
162 Q
163 ;
164GETDLG(LST,DLGID) ; Return dialog infomation based on the DLGID
165 N DIEN,DFID,DTXT,DTYP,DGRP,X0,X5
166 S DLGID=+DLGID
167 Q:'DLGID
168 S X0=^ORD(101.41,DLGID,0),X5=$G(^(5))
169 S DGRP=+$P(X0,U,5),DFID=+$P(X5,U,5),DTXT=$P(X5,U,4),DTYP=$P(X0,U,4)
170 S:'$L(DTXT) DTXT=$P(X0,U,2)
171 I $P(X0,U,4)="M" S:'DFID DFID=1001
172 S LST=DLGID_";"_DFID_";"_DGRP_";"_DTYP_U_DTXT
173 Q
174DONE(LST,PTEVT) ; Terminate PTEvt
175 Q:'PTEVT
176 D DONE^OREVNTX(PTEVT)
177 D ACTLOG^OREVNTX(PTEVT,"MN")
178 Q
179SETDFLT(ORY,EVT) ;Set personal default event
180 N ERR,VAL S ERR=""
181 Q:'$D(^ORD(100.5,EVT,0))
182 S VAL=$P(^ORD(100.5,EVT,0),U)
183 D EN^XPAR(DUZ_";VA(200,","OREVNT DEFAULT",1,VAL,ERR)
184 S ORY=ERR
185 Q
186CPACT(ORY,EVT) ; Return True/False to display active orders for copy
187 ; EVT ptr to #100.5
188 Q:'EVT
189 S ORY=0
190 Q:'$D(^ORD(100.5,EVT,0))
191 S ORY=$P(^ORD(100.5,EVT,0),U,11)
192 Q
193PRMPTID(ORY,PRTNM) ;Return event prompt IEN for OR GTX EVENT
194 S:$D(^ORD(101.41,"B","OR GTX EVENT")) ORY=$O(^("OR GTX EVENT",0))
195 Q
196ISDCOD(ORY,ORIFN) ;True: the order need to be filtered out
197 N PAS,X3,X0,ORGRPLST,THEGRP,IDX,ODGRP
198 S (ORY,IDX)=0
199 Q:'$D(^OR(100,+ORIFN,0))
200 S X0=$G(^OR(100,+ORIFN,0))
201 S ODGRP=$P(X0,U,11)
202 D GETLST^XPAR(.ORGRPLST,"ALL","OREVNT EXCLUDE DGRP")
203 F S IDX=$O(ORGRPLST(IDX)) Q:'IDX!ORY D
204 . S THEGRP=$P($G(ORGRPLST(IDX)),U,2)
205 . I $$GRPCHK(THEGRP,ODGRP) S ORY=1
206 I ORY Q
207 S PAS=";1;"
208 S:$D(^OR(100,+ORIFN,3)) X3=^OR(100,+ORIFN,3)
209 S:(PAS'[(";"_$P(X3,U,3)_";")) ORY=0
210 Q
211DEFLTS(ORY,EVTID) ;Return default specialty for EVTID(#100.5)
212 Q:'+EVTID
213 N PRTEVT
214 S PRTEVT=0
215 S PRTEVT=$P(^ORD(100.5,+EVTID,0),U,12)
216 I PRTEVT>0 S EVTID=PRTEVT
217 S ORY=$$DEFTS^ORCDADT(EVTID)
218 Q
219 ;
220MULTS(ORY,EVTID) ;Return specialty list for the EVTID(#100.5)
221 Q:'+EVTID
222 N I,CNT,X,Y S (I,CNT)=0
223 N PRTEVT
224 S PRTEVT=0
225 S PRTEVT=$P(^ORD(100.5,+EVTID,0),U,12)
226 I PRTEVT>0 S EVTID=PRTEVT
227 F S I=$O(^ORD(100.5,+$G(EVTID),"TS",I)) Q:I<1 S X=+$G(^(I,0)) D
228 . S Y=$$GET1^DIQ(45.7,X_",",.01)
229 . S CNT=CNT+1,ORY(CNT)=X_U_Y
230 Q
231 ;
232PRTIDS(ORY,IDS) ;Return some prompt ids from #101.41
233 ; treating specialty Id^attending provider id
234 N IDX,ORTS,ORATT
235 S (ORY,ORTS,ORATT)=""
236 S IDX=$O(^ORD(101.41,"B","OR GTX TREATING SPECIALTY",0))
237 S:$D(^ORD(101.41,IDX,1)) ORTS=$P($G(^ORD(101.41,IDX,1)),U,2,3)
238 S IDX=$O(^ORD(101.41,"B","OR GTX PROVIDER",0))
239 S:$D(^ORD(101.41,IDX,1)) ORATT=$P($G(^ORD(101.41,IDX,1)),U,2,3)
240 S ORY=ORTS_"~"_ORATT
241 Q
242 ;
243DFLTDLG(ORY,EVTID) ;Return event default dialog IEN
244 S ORY=0
245 Q:'$D(^ORD(100.5,+EVTID,0))
246 S ORY=$P(^ORD(100.5,+EVTID,0),U,4)
247 Q
248AUTHMREL(ORY,USER) ;1: user can manual release delayed orders 0: can't
249 S ORY=$$CANREL^OREV3
250 Q
251HAVEPRT(ORY,PTEVT) ;return parent patient event from #100.2
252 Q:'+PTEVT
253 S ORY=""
254 S:$L($G(^ORE(100.2,PTEVT,1))) ORY=$P(^(1),U,5)
255 Q
256GRPCHK(DG,AGRP) ;If an order's group belong to DG group
257 N RST
258 S RST=0
259 N ORGRP
260 D GRP^ORQ1(DG)
261 S RST=$S($D(ORGRP(AGRP)):1,1:0)
262 Q RST
263ODPTEVID(ORY,ORID) ;Return PtEvtID based on the ORID
264 Q:'$D(^OR(100,+ORID,0))
265 S ORY=$P($G(^OR(100,+ORID,0)),U,17)
266 Q
267COMP(ORY,PTEVT) ;Return 1 or 0 if PTEVT completed or not
268 Q:'+PTEVT
269 S ORY=$$COMP^OREVNTX(+PTEVT)
270 Q
271ISHDORD(ORY,ORID) ;Return 1 if it's on-hold med order
272 Q:'+ORID
273 Q:'$D(^OR(100,+ORID,0))
274 N STS,HDSTS,ODGP,INPT,OUPT,MEDS,IVMD
275 S HDSTS=$O(^ORD(100.01,"B","HOLD",0))
276 S STS=$P($G(^OR(100,+ORID,3)),U,3)
277 S INPT=$O(^ORD(100.98,"B","UD RX",0))
278 S OUPT=$O(^ORD(100.98,"B","O RX",0))
279 S MEDS=$O(^ORD(100.98,"B","RX",0))
280 S IVMD=$O(^ORD(100.98,"B","IV RX",0))
281 S ODGP=$P(^OR(100,+ORID,0),U,11)
282 I (U_INPT_U_OUPT_U_MEDS_U_IVMD_U[U_ODGP_U),(HDSTS=STS) S ORY=1
283 Q
284ISPASS(ORY,PTEVTID,EVTTYPE) ;Return 1 if it's a pass event
285 S ORY=$$EVT^OREVNTX(PTEVTID)
286 S ORY=$P($G(^ORD(100.5,+ORY,0)),U,7)
287 I EVTTYPE="T",ORY,ORY<4 S ORY=1
288 E S ORY=0
289 Q
290ISPASS1(ORY,EVTID,EVTTYPE) ;Return 1 if it's a pass event
291 S ORY=$P($G(^ORD(100.5,+EVTID,0)),U,7)
292 I EVTTYPE="T",ORY,ORY<4 S ORY=1
293 E S ORY=0
294 Q
295DLGIEN(ORY,DLGNAME) ;Return Order Dialog IEN based on name
296 Q:'$D(^ORD(101.41,"B",DLGNAME))
297 S ORY=$O(^ORD(101.41,"B",DLGNAME,0))
298 Q
299GETSTS(ORY,ORDID) ;Return Order status
300 Q:'+ORDID
301 Q:'$D(^OR(100,+ORDID,0))
302 S ORY=$P($G(^OR(100,+ORDID,3)),U,3)
303 Q
Note: See TracBrowser for help on using the repository browser.