Merge lp:~jontai/openvista-gtm-integration/bug385353 into lp:openvista-gtm-integration
- bug385353
- Merge into mainline
Proposed by
Jon Tai
Status: | Merged | ||||
---|---|---|---|---|---|
Merged at revision: | not available | ||||
Proposed branch: | lp:~jontai/openvista-gtm-integration/bug385353 | ||||
Merge into: | lp:openvista-gtm-integration | ||||
Diff against target: | None lines | ||||
To merge this branch: | bzr merge lp:~jontai/openvista-gtm-integration/bug385353 | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
JSHER | Approve | ||
Review via email:
|
Commit message
Description of the change
To post a comment you must log in.
Revision history for this message

JSHER (joel-sher) : | # |
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === added file 'kids/MSC_GTM_INTEG_3.KID' |
2 | --- kids/MSC_GTM_INTEG_3.KID 1970-01-01 00:00:00 +0000 |
3 | +++ kids/MSC_GTM_INTEG_3.KID 2009-06-09 20:33:29 +0000 |
4 | @@ -0,0 +1,11860 @@ |
5 | +KIDS Distribution saved on Jun 09, 2009@13:32:21 |
6 | +VERSION 3 GTM, DISTRIBUTE ZU AS ZUGTM |
7 | +**KIDS**:MSC GTM INTEGRATION*1.0*3^ |
8 | + |
9 | +**INSTALL NAME** |
10 | +MSC GTM INTEGRATION*1.0*3 |
11 | +"BLD",7026,0) |
12 | +MSC GTM INTEGRATION*1.0*3^^0^3090609^y |
13 | +"BLD",7026,1,0) |
14 | +^^1^1^3090605^ |
15 | +"BLD",7026,1,1,0) |
16 | +SYSTEM STATUS AND JOBEXAM FOR GT.M |
17 | +"BLD",7026,4,0) |
18 | +^9.64PA^^ |
19 | +"BLD",7026,6.3) |
20 | +37 |
21 | +"BLD",7026,"INIT") |
22 | +POSTGTM^ZTMGRSET |
23 | +"BLD",7026,"KRN",0) |
24 | +^9.67PA^8989.52^19 |
25 | +"BLD",7026,"KRN",.4,0) |
26 | +.4 |
27 | +"BLD",7026,"KRN",.401,0) |
28 | +.401 |
29 | +"BLD",7026,"KRN",.402,0) |
30 | +.402 |
31 | +"BLD",7026,"KRN",.403,0) |
32 | +.403 |
33 | +"BLD",7026,"KRN",.403,"NM",0) |
34 | +^9.68A^2^2 |
35 | +"BLD",7026,"KRN",.403,"NM",1,0) |
36 | +MSCZJOBEXAM FILE #3.081^3.081^0 |
37 | +"BLD",7026,"KRN",.403,"NM",2,0) |
38 | +MSCZLOCK FILE #3.081^3.081^0 |
39 | +"BLD",7026,"KRN",.403,"NM","B","MSCZJOBEXAM FILE #3.081",1) |
40 | + |
41 | +"BLD",7026,"KRN",.403,"NM","B","MSCZLOCK FILE #3.081",2) |
42 | + |
43 | +"BLD",7026,"KRN",.5,0) |
44 | +.5 |
45 | +"BLD",7026,"KRN",.84,0) |
46 | +.84 |
47 | +"BLD",7026,"KRN",3.6,0) |
48 | +3.6 |
49 | +"BLD",7026,"KRN",3.8,0) |
50 | +3.8 |
51 | +"BLD",7026,"KRN",9.2,0) |
52 | +9.2 |
53 | +"BLD",7026,"KRN",9.2,"NM",0) |
54 | +^9.68A^^ |
55 | +"BLD",7026,"KRN",9.8,0) |
56 | +9.8 |
57 | +"BLD",7026,"KRN",9.8,"NM",0) |
58 | +^9.68A^49^41 |
59 | +"BLD",7026,"KRN",9.8,"NM",1,0) |
60 | +MSCZJOB^^0^B11312416 |
61 | +"BLD",7026,"KRN",9.8,"NM",4,0) |
62 | +MSCZJOBU^^0^B2386063 |
63 | +"BLD",7026,"KRN",9.8,"NM",5,0) |
64 | +ZIS4GTM^^0^B18512871 |
65 | +"BLD",7026,"KRN",9.8,"NM",7,0) |
66 | +XTER1A^^0^B29100251 |
67 | +"BLD",7026,"KRN",9.8,"NM",8,0) |
68 | +ZUGTM^^0^B9857255 |
69 | +"BLD",7026,"KRN",9.8,"NM",11,0) |
70 | +ZCD^^0^B16830436 |
71 | +"BLD",7026,"KRN",9.8,"NM",13,0) |
72 | +ZOSV2GTM^^0^B6700455 |
73 | +"BLD",7026,"KRN",9.8,"NM",14,0) |
74 | +ZOSFGUX^^0^B22118461 |
75 | +"BLD",7026,"KRN",9.8,"NM",15,0) |
76 | +ZISHGUX^^0^B36911880 |
77 | +"BLD",7026,"KRN",9.8,"NM",16,0) |
78 | +HLCSTCP1^^0^B29662559 |
79 | +"BLD",7026,"KRN",9.8,"NM",17,0) |
80 | +HLCSTCP^^0^B32434118 |
81 | +"BLD",7026,"KRN",9.8,"NM",18,0) |
82 | +HLCSLNCH^^0^B37355917 |
83 | +"BLD",7026,"KRN",9.8,"NM",19,0) |
84 | +XOBVLL^^0^B18012967 |
85 | +"BLD",7026,"KRN",9.8,"NM",20,0) |
86 | +XOBVRH^^0^B13028891 |
87 | +"BLD",7026,"KRN",9.8,"NM",21,0) |
88 | +XOBVSKT^^0^B19755798 |
89 | +"BLD",7026,"KRN",9.8,"NM",22,0) |
90 | +XOBVTCPL^^0^B13502099 |
91 | +"BLD",7026,"KRN",9.8,"NM",23,0) |
92 | +XWBTCPM^^0^B56922128 |
93 | +"BLD",7026,"KRN",9.8,"NM",24,0) |
94 | +ZTMGRSET^^0^B54320203 |
95 | +"BLD",7026,"KRN",9.8,"NM",25,0) |
96 | +ZISTCPS^^0^B18299533 |
97 | +"BLD",7026,"KRN",9.8,"NM",26,0) |
98 | +XPDR^^0^B52133395 |
99 | +"BLD",7026,"KRN",9.8,"NM",27,0) |
100 | +ZISFGUX^^1^ |
101 | +"BLD",7026,"KRN",9.8,"NM",28,0) |
102 | +ZTER^^0^B39678986 |
103 | +"BLD",7026,"KRN",9.8,"NM",29,0) |
104 | +ZSTARTGUX^^0^B140233 |
105 | +"BLD",7026,"KRN",9.8,"NM",31,0) |
106 | +MSCXUS3A^^0^B8005003 |
107 | +"BLD",7026,"KRN",9.8,"NM",32,0) |
108 | +RORHL7A^^0^B35660209 |
109 | +"BLD",7026,"KRN",9.8,"NM",33,0) |
110 | +ZOSVGUX^^0^B1197142 |
111 | +"BLD",7026,"KRN",9.8,"NM",34,0) |
112 | +DGMSTAPI^^0^B48539163 |
113 | +"BLD",7026,"KRN",9.8,"NM",35,0) |
114 | +GMRCA2^^0^B10634 |
115 | +"BLD",7026,"KRN",9.8,"NM",36,0) |
116 | +MAGDMEDL^^0^B3132920 |
117 | +"BLD",7026,"KRN",9.8,"NM",37,0) |
118 | +PRCSEA^^0^B66865498 |
119 | +"BLD",7026,"KRN",9.8,"NM",38,0) |
120 | +PSBOMH1^^0^B71152392 |
121 | +"BLD",7026,"KRN",9.8,"NM",39,0) |
122 | +PSBRPC2^^0^B44967923 |
123 | +"BLD",7026,"KRN",9.8,"NM",40,0) |
124 | +PXRMTMED^^0^B9970277 |
125 | +"BLD",7026,"KRN",9.8,"NM",41,0) |
126 | +VALMW3^^0^B21033865 |
127 | +"BLD",7026,"KRN",9.8,"NM",42,0) |
128 | +XQALSUR1^^0^B29675685 |
129 | +"BLD",7026,"KRN",9.8,"NM",43,0) |
130 | +XUMF5AU^^0^B76801793 |
131 | +"BLD",7026,"KRN",9.8,"NM",44,0) |
132 | +ZSTOPGUX^^0^B148072 |
133 | +"BLD",7026,"KRN",9.8,"NM",46,0) |
134 | +MSCZJOBS^^0^B3252583 |
135 | +"BLD",7026,"KRN",9.8,"NM",47,0) |
136 | +ZOSVONT^^0^B23474671 |
137 | +"BLD",7026,"KRN",9.8,"NM",48,0) |
138 | +ZISFGTM^^0^B9317180 |
139 | +"BLD",7026,"KRN",9.8,"NM",49,0) |
140 | +ZSSGUX^^0^B47435 |
141 | +"BLD",7026,"KRN",9.8,"NM","B","DGMSTAPI",34) |
142 | + |
143 | +"BLD",7026,"KRN",9.8,"NM","B","GMRCA2",35) |
144 | + |
145 | +"BLD",7026,"KRN",9.8,"NM","B","HLCSLNCH",18) |
146 | + |
147 | +"BLD",7026,"KRN",9.8,"NM","B","HLCSTCP",17) |
148 | + |
149 | +"BLD",7026,"KRN",9.8,"NM","B","HLCSTCP1",16) |
150 | + |
151 | +"BLD",7026,"KRN",9.8,"NM","B","MAGDMEDL",36) |
152 | + |
153 | +"BLD",7026,"KRN",9.8,"NM","B","MSCXUS3A",31) |
154 | + |
155 | +"BLD",7026,"KRN",9.8,"NM","B","MSCZJOB",1) |
156 | + |
157 | +"BLD",7026,"KRN",9.8,"NM","B","MSCZJOBS",46) |
158 | + |
159 | +"BLD",7026,"KRN",9.8,"NM","B","MSCZJOBU",4) |
160 | + |
161 | +"BLD",7026,"KRN",9.8,"NM","B","PRCSEA",37) |
162 | + |
163 | +"BLD",7026,"KRN",9.8,"NM","B","PSBOMH1",38) |
164 | + |
165 | +"BLD",7026,"KRN",9.8,"NM","B","PSBRPC2",39) |
166 | + |
167 | +"BLD",7026,"KRN",9.8,"NM","B","PXRMTMED",40) |
168 | + |
169 | +"BLD",7026,"KRN",9.8,"NM","B","RORHL7A",32) |
170 | + |
171 | +"BLD",7026,"KRN",9.8,"NM","B","VALMW3",41) |
172 | + |
173 | +"BLD",7026,"KRN",9.8,"NM","B","XOBVLL",19) |
174 | + |
175 | +"BLD",7026,"KRN",9.8,"NM","B","XOBVRH",20) |
176 | + |
177 | +"BLD",7026,"KRN",9.8,"NM","B","XOBVSKT",21) |
178 | + |
179 | +"BLD",7026,"KRN",9.8,"NM","B","XOBVTCPL",22) |
180 | + |
181 | +"BLD",7026,"KRN",9.8,"NM","B","XPDR",26) |
182 | + |
183 | +"BLD",7026,"KRN",9.8,"NM","B","XQALSUR1",42) |
184 | + |
185 | +"BLD",7026,"KRN",9.8,"NM","B","XTER1A",7) |
186 | + |
187 | +"BLD",7026,"KRN",9.8,"NM","B","XUMF5AU",43) |
188 | + |
189 | +"BLD",7026,"KRN",9.8,"NM","B","XWBTCPM",23) |
190 | + |
191 | +"BLD",7026,"KRN",9.8,"NM","B","ZCD",11) |
192 | + |
193 | +"BLD",7026,"KRN",9.8,"NM","B","ZIS4GTM",5) |
194 | + |
195 | +"BLD",7026,"KRN",9.8,"NM","B","ZISFGTM",48) |
196 | + |
197 | +"BLD",7026,"KRN",9.8,"NM","B","ZISFGUX",27) |
198 | + |
199 | +"BLD",7026,"KRN",9.8,"NM","B","ZISHGUX",15) |
200 | + |
201 | +"BLD",7026,"KRN",9.8,"NM","B","ZISTCPS",25) |
202 | + |
203 | +"BLD",7026,"KRN",9.8,"NM","B","ZOSFGUX",14) |
204 | + |
205 | +"BLD",7026,"KRN",9.8,"NM","B","ZOSV2GTM",13) |
206 | + |
207 | +"BLD",7026,"KRN",9.8,"NM","B","ZOSVGUX",33) |
208 | + |
209 | +"BLD",7026,"KRN",9.8,"NM","B","ZOSVONT",47) |
210 | + |
211 | +"BLD",7026,"KRN",9.8,"NM","B","ZSSGUX",49) |
212 | + |
213 | +"BLD",7026,"KRN",9.8,"NM","B","ZSTARTGUX",29) |
214 | + |
215 | +"BLD",7026,"KRN",9.8,"NM","B","ZSTOPGUX",44) |
216 | + |
217 | +"BLD",7026,"KRN",9.8,"NM","B","ZTER",28) |
218 | + |
219 | +"BLD",7026,"KRN",9.8,"NM","B","ZTMGRSET",24) |
220 | + |
221 | +"BLD",7026,"KRN",9.8,"NM","B","ZUGTM",8) |
222 | + |
223 | +"BLD",7026,"KRN",19,0) |
224 | +19 |
225 | +"BLD",7026,"KRN",19,"NM",0) |
226 | +^9.68A^2^2 |
227 | +"BLD",7026,"KRN",19,"NM",1,0) |
228 | +MSCZJOB^^0 |
229 | +"BLD",7026,"KRN",19,"NM",2,0) |
230 | +MSCZLOCK^^0 |
231 | +"BLD",7026,"KRN",19,"NM","B","MSCZJOB",1) |
232 | + |
233 | +"BLD",7026,"KRN",19,"NM","B","MSCZLOCK",2) |
234 | + |
235 | +"BLD",7026,"KRN",19.1,0) |
236 | +19.1 |
237 | +"BLD",7026,"KRN",101,0) |
238 | +101 |
239 | +"BLD",7026,"KRN",409.61,0) |
240 | +409.61 |
241 | +"BLD",7026,"KRN",771,0) |
242 | +771 |
243 | +"BLD",7026,"KRN",870,0) |
244 | +870 |
245 | +"BLD",7026,"KRN",8989.51,0) |
246 | +8989.51 |
247 | +"BLD",7026,"KRN",8989.52,0) |
248 | +8989.52 |
249 | +"BLD",7026,"KRN",8994,0) |
250 | +8994 |
251 | +"BLD",7026,"KRN","B",.4,.4) |
252 | + |
253 | +"BLD",7026,"KRN","B",.401,.401) |
254 | + |
255 | +"BLD",7026,"KRN","B",.402,.402) |
256 | + |
257 | +"BLD",7026,"KRN","B",.403,.403) |
258 | + |
259 | +"BLD",7026,"KRN","B",.5,.5) |
260 | + |
261 | +"BLD",7026,"KRN","B",.84,.84) |
262 | + |
263 | +"BLD",7026,"KRN","B",3.6,3.6) |
264 | + |
265 | +"BLD",7026,"KRN","B",3.8,3.8) |
266 | + |
267 | +"BLD",7026,"KRN","B",9.2,9.2) |
268 | + |
269 | +"BLD",7026,"KRN","B",9.8,9.8) |
270 | + |
271 | +"BLD",7026,"KRN","B",19,19) |
272 | + |
273 | +"BLD",7026,"KRN","B",19.1,19.1) |
274 | + |
275 | +"BLD",7026,"KRN","B",101,101) |
276 | + |
277 | +"BLD",7026,"KRN","B",409.61,409.61) |
278 | + |
279 | +"BLD",7026,"KRN","B",771,771) |
280 | + |
281 | +"BLD",7026,"KRN","B",870,870) |
282 | + |
283 | +"BLD",7026,"KRN","B",8989.51,8989.51) |
284 | + |
285 | +"BLD",7026,"KRN","B",8989.52,8989.52) |
286 | + |
287 | +"BLD",7026,"KRN","B",8994,8994) |
288 | + |
289 | +"BLD",7026,"MSC") |
290 | +/home/jon/MSC_GTM_INTEG_3.KID |
291 | +"BLD",7026,"MSCOM") |
292 | +VERSION 3 GTM, DISTRIBUTE ZU AS ZUGTM |
293 | +"BLD",7026,"PRE") |
294 | +MSCGUX53 |
295 | +"BLD",7026,"QUES",0) |
296 | +^9.62^^ |
297 | +"INIT") |
298 | +POSTGTM^ZTMGRSET |
299 | +"KRN",.403,121,-1) |
300 | +0^1 |
301 | +"KRN",.403,121,0) |
302 | +MSCZJOBEXAM^ ^@^^3070530.1755^^^3.081^0^1^1 |
303 | +"KRN",.403,121,12) |
304 | + |
305 | +"KRN",.403,121,21) |
306 | + |
307 | +"KRN",.403,121,40,0) |
308 | +^.4031I^3^3 |
309 | +"KRN",.403,121,40,1,0) |
310 | +1^^1,1^^^1^17,80 |
311 | +"KRN",.403,121,40,1,1) |
312 | +Page 1 |
313 | +"KRN",.403,121,40,1,40,0) |
314 | +^.4032IP^433^2 |
315 | +"KRN",.403,121,40,1,40,432,0) |
316 | +MSCZJOBEXAM^4^3,2^e |
317 | +"KRN",.403,121,40,1,40,432,2) |
318 | +13^^u^^1 |
319 | +"KRN",.403,121,40,1,40,432,"COMP MUL") |
320 | +D COMPMUL^MSCZJOB |
321 | +"KRN",.403,121,40,1,40,432,"COMP MUL PTR") |
322 | + |
323 | +"KRN",.403,121,40,1,40,433,0) |
324 | +MSCZJOBEXAM HDR^1^1,2^d |
325 | +"KRN",.403,121,40,2,0) |
326 | +2^^1,1^^^1^18,79 |
327 | +"KRN",.403,121,40,2,1) |
328 | +Page 2 |
329 | +"KRN",.403,121,40,2,40,0) |
330 | +^.4032IP^437^3 |
331 | +"KRN",.403,121,40,2,40,434,0) |
332 | +MSCZJOBEXAM 2^1^1,1^e |
333 | +"KRN",.403,121,40,2,40,435,0) |
334 | +MSCZJOBVARS^3^8,3^e |
335 | +"KRN",.403,121,40,2,40,435,2) |
336 | +9^^f^^1 |
337 | +"KRN",.403,121,40,2,40,435,"COMP MUL") |
338 | +D COMPVARS^MSCZJOB |
339 | +"KRN",.403,121,40,2,40,437,0) |
340 | +MSCZJOBSTACK^4^3,3^e |
341 | +"KRN",.403,121,40,2,40,437,2) |
342 | +3^ |
343 | +"KRN",.403,121,40,2,40,437,"COMP MUL") |
344 | +D COMPSTK^MSCZJOB |
345 | +"KRN",.403,121,40,3,0) |
346 | +3^^4,4^^^1^15,70 |
347 | +"KRN",.403,121,40,3,1) |
348 | +Page 3 |
349 | +"KRN",.403,121,40,3,40,0) |
350 | +^.4032IP^436^1 |
351 | +"KRN",.403,121,40,3,40,436,0) |
352 | +MSCZJOBLOCKS^1^2,3^e |
353 | +"KRN",.403,121,40,3,40,436,2) |
354 | +6^ |
355 | +"KRN",.403,121,40,3,40,436,"COMP MUL") |
356 | +D COMPLKS^MSCZJOB |
357 | +"KRN",.403,121,21400) |
358 | +1 |
359 | +"KRN",.403,122,-1) |
360 | +0^2 |
361 | +"KRN",.403,122,0) |
362 | +MSCZLOCK^ ^@^^3070530.1755^^^3.081^0^1^1 |
363 | +"KRN",.403,122,40,0) |
364 | +^.4031I^1^1 |
365 | +"KRN",.403,122,40,1,0) |
366 | +1^^1,1^^^0^17,80 |
367 | +"KRN",.403,122,40,1,1) |
368 | +Page 1 |
369 | +"KRN",.403,122,40,1,40,0) |
370 | +^.4032IP^439^2 |
371 | +"KRN",.403,122,40,1,40,438,0) |
372 | +MSCZLOCKEXAM^4^3,2^e |
373 | +"KRN",.403,122,40,1,40,438,2) |
374 | +13^^u^^1 |
375 | +"KRN",.403,122,40,1,40,438,"COMP MUL") |
376 | +D COMPLK^MSCZJOB |
377 | +"KRN",.403,122,40,1,40,439,0) |
378 | +MSCZJOBLOCK HDR^1^1,1^d |
379 | +"KRN",.404,432,0) |
380 | +MSCZJOBEXAM^3.081 |
381 | +"KRN",.404,432,40,0) |
382 | +^.4044I^5^5 |
383 | +"KRN",.404,432,40,1,0) |
384 | +1^^2^^JOB NUMBER |
385 | +"KRN",.404,432,40,1,2) |
386 | +1,2^6 |
387 | +"KRN",.404,432,40,1,3) |
388 | +!M |
389 | +"KRN",.404,432,40,1,3.1) |
390 | +S Y=$$JOB^MSCZJOB(D0) S:Y=$J Y=Y_"*" |
391 | +"KRN",.404,432,40,1,4) |
392 | +^^^2 |
393 | +"KRN",.404,432,40,1,10) |
394 | +S DDSSTACK=2,MSCJOBD0=D0,MSCJOBID=$P(MSCZJOB(D0),U) |
395 | +"KRN",.404,432,40,1,20) |
396 | +F |
397 | +"KRN",.404,432,40,2,0) |
398 | +2^^2^^DEVICE |
399 | +"KRN",.404,432,40,2,2) |
400 | +1,9^23 |
401 | +"KRN",.404,432,40,2,3) |
402 | +!M |
403 | +"KRN",.404,432,40,2,3.1) |
404 | +S Y=$$DEV^MSCZJOB(D0) |
405 | +"KRN",.404,432,40,2,4) |
406 | +^^^1 |
407 | +"KRN",.404,432,40,2,20) |
408 | +F |
409 | +"KRN",.404,432,40,3,0) |
410 | +4^^2^^NAMESPACE |
411 | +"KRN",.404,432,40,3,2) |
412 | +1,48^11 |
413 | +"KRN",.404,432,40,3,3) |
414 | +!M |
415 | +"KRN",.404,432,40,3,3.1) |
416 | +S Y=$$NSP^MSCZJOB(D0) |
417 | +"KRN",.404,432,40,3,4) |
418 | +^^^1 |
419 | +"KRN",.404,432,40,3,20) |
420 | +F |
421 | +"KRN",.404,432,40,4,0) |
422 | +5^^2^^ROUTINE |
423 | +"KRN",.404,432,40,4,2) |
424 | +1,60^18 |
425 | +"KRN",.404,432,40,4,3) |
426 | +!M |
427 | +"KRN",.404,432,40,4,3.1) |
428 | +S Y=$$ROUTINE^MSCZJOB(D0) |
429 | +"KRN",.404,432,40,4,4) |
430 | +^^^1 |
431 | +"KRN",.404,432,40,4,20) |
432 | +F^U |
433 | +"KRN",.404,432,40,5,0) |
434 | +3^^2^^USER |
435 | +"KRN",.404,432,40,5,2) |
436 | +1,33^14 |
437 | +"KRN",.404,432,40,5,3) |
438 | +!M |
439 | +"KRN",.404,432,40,5,3.1) |
440 | +S Y=$$USER^MSCZJOB(D0) |
441 | +"KRN",.404,432,40,5,4) |
442 | +^^^1 |
443 | +"KRN",.404,432,40,5,20) |
444 | +F |
445 | +"KRN",.404,433,0) |
446 | +MSCZJOBEXAM HDR^3.081^ |
447 | +"KRN",.404,433,40,0) |
448 | +^.4044I^2^2 |
449 | +"KRN",.404,433,40,1,0) |
450 | +1^Process Device User Namespace Routine ^1 |
451 | +"KRN",.404,433,40,1,2) |
452 | +^^2,1 |
453 | +"KRN",.404,433,40,2,0) |
454 | +2^!M^1 |
455 | +"KRN",.404,433,40,2,.1) |
456 | +S Y=$$GET1^DIQ(8989.3,1,.01) |
457 | +"KRN",.404,433,40,2,2) |
458 | +^^1,28 |
459 | +"KRN",.404,434,0) |
460 | +MSCZJOBEXAM 2^3.081 |
461 | +"KRN",.404,434,40,0) |
462 | +^.4044I^7^7 |
463 | +"KRN",.404,434,40,1,0) |
464 | +1^Job^2^^JOB NUMBER |
465 | +"KRN",.404,434,40,1,2) |
466 | +2,8^6^2,3 |
467 | +"KRN",.404,434,40,1,3) |
468 | +!M |
469 | +"KRN",.404,434,40,1,3.1) |
470 | +S Y=$$JOB^MSCZJOB(MSCJOBD0) |
471 | +"KRN",.404,434,40,1,20) |
472 | +N |
473 | +"KRN",.404,434,40,2,0) |
474 | +2^NSpace^2^^NAMESPACE |
475 | +"KRN",.404,434,40,2,2) |
476 | +2,24^11^2,16 |
477 | +"KRN",.404,434,40,2,3) |
478 | +!M |
479 | +"KRN",.404,434,40,2,3.1) |
480 | +S Y=$$NSP^MSCZJOB(MSCJOBD0) |
481 | +"KRN",.404,434,40,2,4) |
482 | +^^^2 |
483 | +"KRN",.404,434,40,2,20) |
484 | +F |
485 | +"KRN",.404,434,40,3,0) |
486 | +3^Routine^2 |
487 | +"KRN",.404,434,40,3,2) |
488 | +2,46^16^2,37 |
489 | +"KRN",.404,434,40,3,3) |
490 | +!M |
491 | +"KRN",.404,434,40,3,3.1) |
492 | +S Y=$$ROUTINE^MSCZJOB(MSCJOBD0) |
493 | +"KRN",.404,434,40,3,4) |
494 | +^^^2 |
495 | +"KRN",.404,434,40,3,20) |
496 | +F^U |
497 | +"KRN",.404,434,40,4,0) |
498 | +4^^2^^USER |
499 | +"KRN",.404,434,40,4,2) |
500 | +2,63^14 |
501 | +"KRN",.404,434,40,4,3) |
502 | +!M |
503 | +"KRN",.404,434,40,4,3.1) |
504 | +S Y=$$USER^MSCZJOB(MSCJOBD0) |
505 | +"KRN",.404,434,40,4,4) |
506 | +^^^2 |
507 | +"KRN",.404,434,40,4,20) |
508 | +F |
509 | +"KRN",.404,434,40,5,0) |
510 | +5^Device^2^^DEVICE |
511 | +"KRN",.404,434,40,5,2) |
512 | +3,24^38^3,16 |
513 | +"KRN",.404,434,40,5,3) |
514 | +!M |
515 | +"KRN",.404,434,40,5,3.1) |
516 | +S Y=$$DEV^MSCZJOB(MSCJOBD0) |
517 | +"KRN",.404,434,40,5,4) |
518 | +^^^1 |
519 | +"KRN",.404,434,40,5,20) |
520 | +F^U |
521 | +"KRN",.404,434,40,6,0) |
522 | +4.4^LOCKs^2^^LOCKS |
523 | +"KRN",.404,434,40,6,2) |
524 | +3,10^3^3,3 |
525 | +"KRN",.404,434,40,6,3) |
526 | +!M |
527 | +"KRN",.404,434,40,6,3.1) |
528 | +S Y=$$LOCKS^MSCZJOB |
529 | +"KRN",.404,434,40,6,10) |
530 | +S DDSSTACK=3 |
531 | +"KRN",.404,434,40,6,20) |
532 | +N |
533 | +"KRN",.404,434,40,7,0) |
534 | +6^KILL JOB?^2^^KILL |
535 | +"KRN",.404,434,40,7,2) |
536 | +3,74^3^3,63 |
537 | +"KRN",.404,434,40,7,13) |
538 | +N X,Y I DDSEXT="YES" D KILL^MSCZJOB(MSCJOBID) |
539 | +"KRN",.404,434,40,7,20) |
540 | +Y |
541 | +"KRN",.404,435,0) |
542 | +MSCZJOBVARS^3.081 |
543 | +"KRN",.404,435,40,0) |
544 | +^.4044I^3^3 |
545 | +"KRN",.404,435,40,1,0) |
546 | +1^^2^^VARIABLE NAME |
547 | +"KRN",.404,435,40,1,2) |
548 | +1,1^24 |
549 | +"KRN",.404,435,40,1,3) |
550 | +!M |
551 | +"KRN",.404,435,40,1,3.1) |
552 | +S Y=$P(@MSC@(MSCJOBID,"V",D0),"=") |
553 | +"KRN",.404,435,40,1,4) |
554 | +^^^2 |
555 | +"KRN",.404,435,40,1,20) |
556 | +F |
557 | +"KRN",.404,435,40,2,0) |
558 | +2^^2^^VALUE OF VARIABLE |
559 | +"KRN",.404,435,40,2,2) |
560 | +1,28^48 |
561 | +"KRN",.404,435,40,2,3) |
562 | +!M |
563 | +"KRN",.404,435,40,2,3.1) |
564 | +S Y=$P(@MSC@(MSCJOBID,"V",D0),"=",2,999) |
565 | +"KRN",.404,435,40,2,4) |
566 | +^^^2 |
567 | +"KRN",.404,435,40,2,20) |
568 | +F^U |
569 | +"KRN",.404,435,40,3,0) |
570 | +1.5^=^1 |
571 | +"KRN",.404,435,40,3,2) |
572 | +^^1,26 |
573 | +"KRN",.404,436,0) |
574 | +MSCZJOBLOCKS^3.081^ |
575 | +"KRN",.404,436,40,0) |
576 | +^.4044I^2^2 |
577 | +"KRN",.404,436,40,1,0) |
578 | +1^^2^^LOCKS |
579 | +"KRN",.404,436,40,1,2) |
580 | +2,1^47 |
581 | +"KRN",.404,436,40,1,3) |
582 | +!M |
583 | +"KRN",.404,436,40,1,3.1) |
584 | +S Y=@MSC@(MSCJOBID,"L",D0) |
585 | +"KRN",.404,436,40,1,4) |
586 | +^^^2 |
587 | +"KRN",.404,436,40,1,20) |
588 | +F^U |
589 | +"KRN",.404,436,40,2,0) |
590 | +2^UNLOCK?^2^^UNLOCK |
591 | +"KRN",.404,436,40,2,2) |
592 | +2,58^3^2,49^1 |
593 | +"KRN",.404,436,40,2,13) |
594 | +I DDSEXT="YES" D UNLOCK^MSCZJOB(D0) |
595 | +"KRN",.404,436,40,2,20) |
596 | +Y |
597 | +"KRN",.404,437,0) |
598 | +MSCZJOBSTACK^3.081 |
599 | +"KRN",.404,437,40,0) |
600 | +^.4044I^1^1 |
601 | +"KRN",.404,437,40,1,0) |
602 | +1^^2^^STACK |
603 | +"KRN",.404,437,40,1,2) |
604 | +2,1^75 |
605 | +"KRN",.404,437,40,1,3) |
606 | +!M |
607 | +"KRN",.404,437,40,1,3.1) |
608 | +S Y=$$STACK^MSCZJOB(D0) |
609 | +"KRN",.404,437,40,1,4) |
610 | +^^^2 |
611 | +"KRN",.404,437,40,1,20) |
612 | +F^U |
613 | +"KRN",.404,438,0) |
614 | +MSCZLOCKEXAM^3.081 |
615 | +"KRN",.404,438,40,0) |
616 | +^.4044I^5^5 |
617 | +"KRN",.404,438,40,1,0) |
618 | +1^^2^^JOB NUMBER |
619 | +"KRN",.404,438,40,1,2) |
620 | +1,2^6 |
621 | +"KRN",.404,438,40,1,3) |
622 | +!M |
623 | +"KRN",.404,438,40,1,3.1) |
624 | +S Y=$P($G(MSCZLK(D0)),U,5) S:Y=$J Y=Y_"*" |
625 | +"KRN",.404,438,40,1,4) |
626 | +^^^2 |
627 | +"KRN",.404,438,40,1,10) |
628 | +S DDSSTACK=2,MSCJOBD0=D0,MSCJOBID=$P(MSCZJOB(D0),U) |
629 | +"KRN",.404,438,40,1,20) |
630 | +F |
631 | +"KRN",.404,438,40,2,0) |
632 | +2^^2^^LOCK |
633 | +"KRN",.404,438,40,2,2) |
634 | +1,9^23 |
635 | +"KRN",.404,438,40,2,3) |
636 | +!M |
637 | +"KRN",.404,438,40,2,3.1) |
638 | +S Y=$TR($P($G(MSCZLK(D0)),U),"~") |
639 | +"KRN",.404,438,40,2,4) |
640 | +^^^1 |
641 | +"KRN",.404,438,40,2,20) |
642 | +F |
643 | +"KRN",.404,438,40,3,0) |
644 | +4^^2^^ROUTINE |
645 | +"KRN",.404,438,40,3,2) |
646 | +1,48^25 |
647 | +"KRN",.404,438,40,3,3) |
648 | +!M |
649 | +"KRN",.404,438,40,3,3.1) |
650 | +S Y=$TR($P($G(MSCZLK(D0)),U,3),$C(126),U) |
651 | +"KRN",.404,438,40,3,4) |
652 | +^^^1 |
653 | +"KRN",.404,438,40,3,20) |
654 | +F^U |
655 | +"KRN",.404,438,40,4,0) |
656 | +5^^2^^UNLOCK |
657 | +"KRN",.404,438,40,4,2) |
658 | +1,76^3 |
659 | +"KRN",.404,438,40,4,3) |
660 | +!M |
661 | +"KRN",.404,438,40,4,4) |
662 | +^^^0 |
663 | +"KRN",.404,438,40,4,13) |
664 | +I DDSEXT="YES" D UNL^MSCZJOB(D0) |
665 | +"KRN",.404,438,40,4,20) |
666 | +Y^U |
667 | +"KRN",.404,438,40,5,0) |
668 | +3^^2^^USER |
669 | +"KRN",.404,438,40,5,2) |
670 | +1,33^14 |
671 | +"KRN",.404,438,40,5,3) |
672 | +!M |
673 | +"KRN",.404,438,40,5,3.1) |
674 | +S Y=$P($G(MSCZLK(D0)),U,2) |
675 | +"KRN",.404,438,40,5,4) |
676 | +^^^1 |
677 | +"KRN",.404,438,40,5,20) |
678 | +F |
679 | +"KRN",.404,439,0) |
680 | +MSCZJOBLOCK HDR^3.081 |
681 | +"KRN",.404,439,40,0) |
682 | +^.4044I^2^2 |
683 | +"KRN",.404,439,40,1,0) |
684 | +1^Process Lock User Routine Unlock^1 |
685 | +"KRN",.404,439,40,1,2) |
686 | +^^2,1 |
687 | +"KRN",.404,439,40,2,0) |
688 | +2^!M^1 |
689 | +"KRN",.404,439,40,2,.1) |
690 | +S Y=$$GET1^DIQ(8989.3,1,.01) |
691 | +"KRN",.404,439,40,2,2) |
692 | +^^1,28 |
693 | +"KRN",19,14339,-1) |
694 | +0^1 |
695 | +"KRN",19,14339,0) |
696 | +MSCZJOB^JOB EXAMINE^^R^^^^^^^^ |
697 | +"KRN",19,14339,1,0) |
698 | +^^1^1^3070623^ |
699 | +"KRN",19,14339,1,1,0) |
700 | +DESIGNED FOR GT.M |
701 | +"KRN",19,14339,25) |
702 | +MSCZJOB |
703 | +"KRN",19,14339,"U") |
704 | +JOB EXAMINE |
705 | +"KRN",19,14340,-1) |
706 | +0^2 |
707 | +"KRN",19,14340,0) |
708 | +MSCZLOCK^LOCK EXAMINE^^R^^^^^^^^ |
709 | +"KRN",19,14340,1,0) |
710 | +^^1^1^3070623^ |
711 | +"KRN",19,14340,1,1,0) |
712 | +DESIGNED FOR GT.M |
713 | +"KRN",19,14340,25) |
714 | +LOCK^MSCZJOB |
715 | +"KRN",19,14340,"U") |
716 | +LOCK EXAMINE |
717 | +"MBREQ") |
718 | +0 |
719 | +"ORD",0,9.8) |
720 | +9.8;;1;RTNF^XPDTA;RTNE^XPDTA |
721 | +"ORD",0,9.8,0) |
722 | +ROUTINE |
723 | +"ORD",8,.403) |
724 | +.403;8;;;EDEOUT^DIFROMSO(.403,DA,"",XPDA);FPRE^DIFROMSI(.403,"",XPDA);EPRE^DIFROMSI(.403,DA,$E("N",$G(XPDNEW)),XPDA,"",OLDA);;EPOST^DIFROMSI(.403,DA,"",XPDA);DEL^DIFROMSK(.403,"",%) |
725 | +"ORD",8,.403,0) |
726 | +FORM |
727 | +"ORD",18,19) |
728 | +19;18;;;OPT^XPDTA;OPTF1^XPDIA;OPTE1^XPDIA;OPTF2^XPDIA;;OPTDEL^XPDIA |
729 | +"ORD",18,19,0) |
730 | +OPTION |
731 | +"PRE") |
732 | +MSCGUX53 |
733 | +"QUES","XPF1",0) |
734 | +Y |
735 | +"QUES","XPF1","??") |
736 | +^D REP^XPDH |
737 | +"QUES","XPF1","A") |
738 | +Shall I write over your |FLAG| File |
739 | +"QUES","XPF1","B") |
740 | +YES |
741 | +"QUES","XPF1","M") |
742 | +D XPF1^XPDIQ |
743 | +"QUES","XPF2",0) |
744 | +Y |
745 | +"QUES","XPF2","??") |
746 | +^D DTA^XPDH |
747 | +"QUES","XPF2","A") |
748 | +Want my data |FLAG| yours |
749 | +"QUES","XPF2","B") |
750 | +YES |
751 | +"QUES","XPF2","M") |
752 | +D XPF2^XPDIQ |
753 | +"QUES","XPI1",0) |
754 | +YO |
755 | +"QUES","XPI1","??") |
756 | +^D INHIBIT^XPDH |
757 | +"QUES","XPI1","A") |
758 | +Want KIDS to INHIBIT LOGONs during the install |
759 | +"QUES","XPI1","B") |
760 | +NO |
761 | +"QUES","XPI1","M") |
762 | +D XPI1^XPDIQ |
763 | +"QUES","XPM1",0) |
764 | +PO^VA(200,:EM |
765 | +"QUES","XPM1","??") |
766 | +^D MG^XPDH |
767 | +"QUES","XPM1","A") |
768 | +Enter the Coordinator for Mail Group '|FLAG|' |
769 | +"QUES","XPM1","B") |
770 | + |
771 | +"QUES","XPM1","M") |
772 | +D XPM1^XPDIQ |
773 | +"QUES","XPO1",0) |
774 | +Y |
775 | +"QUES","XPO1","??") |
776 | +^D MENU^XPDH |
777 | +"QUES","XPO1","A") |
778 | +Want KIDS to Rebuild Menu Trees Upon Completion of Install |
779 | +"QUES","XPO1","B") |
780 | +NO |
781 | +"QUES","XPO1","M") |
782 | +D XPO1^XPDIQ |
783 | +"QUES","XPZ1",0) |
784 | +Y |
785 | +"QUES","XPZ1","??") |
786 | +^D OPT^XPDH |
787 | +"QUES","XPZ1","A") |
788 | +Want to DISABLE Scheduled Options, Menu Options, and Protocols |
789 | +"QUES","XPZ1","B") |
790 | +NO |
791 | +"QUES","XPZ1","M") |
792 | +D XPZ1^XPDIQ |
793 | +"QUES","XPZ2",0) |
794 | +Y |
795 | +"QUES","XPZ2","??") |
796 | +^D RTN^XPDH |
797 | +"QUES","XPZ2","A") |
798 | +Want to MOVE routines to other CPUs |
799 | +"QUES","XPZ2","B") |
800 | +NO |
801 | +"QUES","XPZ2","M") |
802 | +D XPZ2^XPDIQ |
803 | +"RTN") |
804 | +42 |
805 | +"RTN","DGMSTAPI") |
806 | +0^34^B48539163 |
807 | +"RTN","DGMSTAPI",1,0) |
808 | +DGMSTAPI ;ALB/SCK,MSC/JDA - API's for Military Sexual Trauma ;29APR2009 |
809 | +"RTN","DGMSTAPI",2,0) |
810 | + ;;5.3;Registration;**195,243,308,353,379,443,700,JDA**;Aug 13, 1993 |
811 | +"RTN","DGMSTAPI",3,0) |
812 | + Q |
813 | +"RTN","DGMSTAPI",4,0) |
814 | + ; |
815 | +"RTN","DGMSTAPI",5,0) |
816 | +GETSTAT(DFN,DGDATE) ; Retrieves the current MST status for a patient |
817 | +"RTN","DGMSTAPI",6,0) |
818 | + ; |
819 | +"RTN","DGMSTAPI",7,0) |
820 | + ; Input |
821 | +"RTN","DGMSTAPI",8,0) |
822 | + ; DFN - IEN of patient in the PATIENT File (#2) |
823 | +"RTN","DGMSTAPI",9,0) |
824 | + ; DGDATE - Date for status lookup [OPTIONAL] |
825 | +"RTN","DGMSTAPI",10,0) |
826 | + ; |
827 | +"RTN","DGMSTAPI",11,0) |
828 | + ; Output |
829 | +"RTN","DGMSTAPI",12,0) |
830 | + ; DGMST - Format will depend on result of lookup |
831 | +"RTN","DGMSTAPI",13,0) |
832 | + ; |
833 | +"RTN","DGMSTAPI",14,0) |
834 | + ; If an entry is found then: |
835 | +"RTN","DGMSTAPI",15,0) |
836 | + ; DGMST returns a 7 piece data string, caret(^)-delimited: |
837 | +"RTN","DGMSTAPI",16,0) |
838 | + ; $P(1) = IEN of entry in MST HISTORY File (#29.11) |
839 | +"RTN","DGMSTAPI",17,0) |
840 | + ; $P(2) = Internal value of MST Status ("Y,N,D,U") |
841 | +"RTN","DGMSTAPI",18,0) |
842 | + ; $P(3) = Date of status change |
843 | +"RTN","DGMSTAPI",19,0) |
844 | + ; $P(4) = IEN of provider making determination, file (#200) |
845 | +"RTN","DGMSTAPI",20,0) |
846 | + ; $P(5) = IEN of user who entered status, file (#200) |
847 | +"RTN","DGMSTAPI",21,0) |
848 | + ; $P(6) = External format of MST Status |
849 | +"RTN","DGMSTAPI",22,0) |
850 | + ; $P(7) = IEN pointer of the INSTITUTION file (#4) |
851 | +"RTN","DGMSTAPI",23,0) |
852 | + ; |
853 | +"RTN","DGMSTAPI",24,0) |
854 | + ; If no MST History is found, then: |
855 | +"RTN","DGMSTAPI",25,0) |
856 | + ; DGMST = 0^U |
857 | +"RTN","DGMSTAPI",26,0) |
858 | + ; "U" = (Unknown) |
859 | +"RTN","DGMSTAPI",27,0) |
860 | + ; If an error occured in the GETS^DIQ lookup, then: |
861 | +"RTN","DGMSTAPI",28,0) |
862 | + ; DGMST = -1^^Error Code IEN |
863 | +"RTN","DGMSTAPI",29,0) |
864 | + ; (returned by GETS^DIQ call) |
865 | +"RTN","DGMSTAPI",30,0) |
866 | + ; |
867 | +"RTN","DGMSTAPI",31,0) |
868 | + ; Get most recent MST status entry for the patient from file using |
869 | +"RTN","DGMSTAPI",32,0) |
870 | + ; reverse $Order on the "APDT" x-ref. |
871 | +"RTN","DGMSTAPI",33,0) |
872 | + ; |
873 | +"RTN","DGMSTAPI",34,0) |
874 | + N DGMST,DGIEN,DGFDA,DGMSG |
875 | +"RTN","DGMSTAPI",35,0) |
876 | + S DFN=$G(DFN) |
877 | +"RTN","DGMSTAPI",36,0) |
878 | + I '+DFN!('$D(^DPT(DFN,0))) D G STATQ |
879 | +"RTN","DGMSTAPI",37,0) |
880 | + . S DGMST="-1" |
881 | +"RTN","DGMSTAPI",38,0) |
882 | + I '$D(^DGMS(29.11,"APDT",DFN)) D G STATQ |
883 | +"RTN","DGMSTAPI",39,0) |
884 | + .S DGMST="0^U" |
885 | +"RTN","DGMSTAPI",40,0) |
886 | + S DGDATE=$S(+$G(DGDATE)>0:DGDATE,1:$$NOW^XLFDT) |
887 | +"RTN","DGMSTAPI",41,0) |
888 | + I '$D(^DGMS(29.11,"APDT",DFN,DGDATE)) S DGDATE=$$DATE(DFN,DGDATE) |
889 | +"RTN","DGMSTAPI",42,0) |
890 | + I '+DGDATE D G STATQ |
891 | +"RTN","DGMSTAPI",43,0) |
892 | + . S DGMST="0^U" |
893 | +"RTN","DGMSTAPI",44,0) |
894 | + S DGIEN="" |
895 | +"RTN","DGMSTAPI",45,0) |
896 | + S DGIEN=+$O(^DGMS(29.11,"APDT",DFN,DGDATE,DGIEN),-1) |
897 | +"RTN","DGMSTAPI",46,0) |
898 | + ; |
899 | +"RTN","DGMSTAPI",47,0) |
900 | + ; Check for valid ien, if entry missing, return Unknown |
901 | +"RTN","DGMSTAPI",48,0) |
902 | + I +DGIEN'>0 D G STATQ |
903 | +"RTN","DGMSTAPI",49,0) |
904 | + . S DGMST="0^U" |
905 | +"RTN","DGMSTAPI",50,0) |
906 | + ; |
907 | +"RTN","DGMSTAPI",51,0) |
908 | + ; Retrieve data |
909 | +"RTN","DGMSTAPI",52,0) |
910 | + D GETS^DIQ(29.11,+DGIEN_",","*","IE","DGFDA","DGMSG") |
911 | +"RTN","DGMSTAPI",53,0) |
912 | + ; check for errors |
913 | +"RTN","DGMSTAPI",54,0) |
914 | + I $D(DGMSG) D G STATQ |
915 | +"RTN","DGMSTAPI",55,0) |
916 | + .S DGMST="-1^^"_$G(DGMSG("DIERR",1)) |
917 | +"RTN","DGMSTAPI",56,0) |
918 | + ; |
919 | +"RTN","DGMSTAPI",57,0) |
920 | + S DGMST=DGIEN_U_$G(DGFDA(29.11,+DGIEN_",",3,"I"))_U_$G(DGFDA(29.11,+DGIEN_",",.01,"I"))_U_$G(DGFDA(29.11,+DGIEN_",",4,"I"))_U_$G(DGFDA(29.11,+DGIEN_",",5,"I")) |
921 | +"RTN","DGMSTAPI",58,0) |
922 | + S DGMST=DGMST_U_$G(DGFDA(29.11,+DGIEN_",",3,"E")) |
923 | +"RTN","DGMSTAPI",59,0) |
924 | + S DGMST=DGMST_U_$S($G(DGFDA(29.11,+DGIEN_",",6,"I"))]"":$G(DGFDA(29.11,+DGIEN_",",6,"I")),1:$$SITE) |
925 | +"RTN","DGMSTAPI",60,0) |
926 | + ; |
927 | +"RTN","DGMSTAPI",61,0) |
928 | +STATQ Q $G(DGMST) |
929 | +"RTN","DGMSTAPI",62,0) |
930 | + ; |
931 | +"RTN","DGMSTAPI",63,0) |
932 | +NEWSTAT(DFN,DGSTAT,DGDATE,DGPROV,DGSITE,DGXMIT) ; MST HISTORY (#29.11) filer |
933 | +"RTN","DGMSTAPI",64,0) |
934 | + ; Callpoint to create a new MST HISTORY FILE (#29.11) entry. |
935 | +"RTN","DGMSTAPI",65,0) |
936 | + ; Will also queue HL7 message for HEC database updates. |
937 | +"RTN","DGMSTAPI",66,0) |
938 | + ; |
939 | +"RTN","DGMSTAPI",67,0) |
940 | + ; Input |
941 | +"RTN","DGMSTAPI",68,0) |
942 | + ; DFN - Patients DFN |
943 | +"RTN","DGMSTAPI",69,0) |
944 | + ; DGSTAT - MST Status code, "Y,N,D,U" |
945 | +"RTN","DGMSTAPI",70,0) |
946 | + ; DGDATE - Date of MST status change [default=NOW] |
947 | +"RTN","DGMSTAPI",71,0) |
948 | + ; DGPROV - IEN of Provider making determination, file (#200) |
949 | +"RTN","DGMSTAPI",72,0) |
950 | + ; DGSITE - IEN pointer of the INSTITUTION file (#4) |
951 | +"RTN","DGMSTAPI",73,0) |
952 | + ; DGXMIT - HL7 transmit flag [OPTIONAL] |
953 | +"RTN","DGMSTAPI",74,0) |
954 | + ; 0=don't queue a message |
955 | +"RTN","DGMSTAPI",75,0) |
956 | + ; 1=queue a message [default]) |
957 | +"RTN","DGMSTAPI",76,0) |
958 | + ; |
959 | +"RTN","DGMSTAPI",77,0) |
960 | + ; Output |
961 | +"RTN","DGMSTAPI",78,0) |
962 | + ; DGRSLT - Returns IEN of file (#29.11) entry if successful |
963 | +"RTN","DGMSTAPI",79,0) |
964 | + ; |
965 | +"RTN","DGMSTAPI",80,0) |
966 | + ; If no patient was defined, then: |
967 | +"RTN","DGMSTAPI",81,0) |
968 | + ; DGRSLT = -1^No patient defined |
969 | +"RTN","DGMSTAPI",82,0) |
970 | + ; |
971 | +"RTN","DGMSTAPI",83,0) |
972 | + ; If an error occured in the GETS^DIQ lookup, then: |
973 | +"RTN","DGMSTAPI",84,0) |
974 | + ; DGMST = -1^^Error Code IEN |
975 | +"RTN","DGMSTAPI",85,0) |
976 | + ; (returned by GETS^DIQ call) |
977 | +"RTN","DGMSTAPI",86,0) |
978 | + ; |
979 | +"RTN","DGMSTAPI",87,0) |
980 | + N DGFDA,DGMSG,DGERR,DGRSLT,MSTIEN |
981 | +"RTN","DGMSTAPI",88,0) |
982 | + S DFN=$G(DFN) |
983 | +"RTN","DGMSTAPI",89,0) |
984 | + I DFN']""!('$D(^DPT(DFN,0))) D G NEWQ |
985 | +"RTN","DGMSTAPI",90,0) |
986 | + . S DGRSLT="-1^No patient defined" |
987 | +"RTN","DGMSTAPI",91,0) |
988 | + ; |
989 | +"RTN","DGMSTAPI",92,0) |
990 | + S DGSTAT=$S($G(DGSTAT)]"":DGSTAT,1:"U") |
991 | +"RTN","DGMSTAPI",93,0) |
992 | + S DGDATE=$G(DGDATE) |
993 | +"RTN","DGMSTAPI",94,0) |
994 | + S DGPROV=$G(DGPROV) |
995 | +"RTN","DGMSTAPI",95,0) |
996 | + S DGSITE=$G(DGSITE) |
997 | +"RTN","DGMSTAPI",96,0) |
998 | + S DGXMIT=$S($G(DGXMIT)=0:DGXMIT,1:1) |
999 | +"RTN","DGMSTAPI",97,0) |
1000 | + S DGDATE=$S(+DGDATE>0:DGDATE,1:$$NOW^XLFDT) |
1001 | +"RTN","DGMSTAPI",98,0) |
1002 | + S DGSITE=$S(+DGSITE>0:DGSITE,1:$$SITE) |
1003 | +"RTN","DGMSTAPI",99,0) |
1004 | + ; |
1005 | +"RTN","DGMSTAPI",100,0) |
1006 | + I '$$CHANGE(DFN,DGSTAT,DGDATE) D G NEWQ |
1007 | +"RTN","DGMSTAPI",101,0) |
1008 | + . S DGRSLT="0" |
1009 | +"RTN","DGMSTAPI",102,0) |
1010 | + ; |
1011 | +"RTN","DGMSTAPI",103,0) |
1012 | + I '$$VALID(DFN,DGSTAT,DGDATE,DGPROV,DGSITE,.DGERR) D G NEWQ |
1013 | +"RTN","DGMSTAPI",104,0) |
1014 | + . S DGRSLT="-1^"_DGERR |
1015 | +"RTN","DGMSTAPI",105,0) |
1016 | + ; |
1017 | +"RTN","DGMSTAPI",106,0) |
1018 | + S DGFDA(1,29.11,"+1,",.01)=DGDATE |
1019 | +"RTN","DGMSTAPI",107,0) |
1020 | + S DGFDA(1,29.11,"+1,",2)=DFN |
1021 | +"RTN","DGMSTAPI",108,0) |
1022 | + S DGFDA(1,29.11,"+1,",3)=DGSTAT |
1023 | +"RTN","DGMSTAPI",109,0) |
1024 | + S DGFDA(1,29.11,"+1,",4)=DGPROV |
1025 | +"RTN","DGMSTAPI",110,0) |
1026 | + S DGFDA(1,29.11,"+1,",5)=DUZ |
1027 | +"RTN","DGMSTAPI",111,0) |
1028 | + S DGFDA(1,29.11,"+1,",6)=DGSITE |
1029 | +"RTN","DGMSTAPI",112,0) |
1030 | + ; |
1031 | +"RTN","DGMSTAPI",113,0) |
1032 | + D UPDATE^DIE("","DGFDA(1)","MSTIEN","DGERR") |
1033 | +"RTN","DGMSTAPI",114,0) |
1034 | + I $D(DGERR) D G NEWQ |
1035 | +"RTN","DGMSTAPI",115,0) |
1036 | + . S DGRSLT="-1^"_$G(DGERR("DIERR",1)) |
1037 | +"RTN","DGMSTAPI",116,0) |
1038 | + ; |
1039 | +"RTN","DGMSTAPI",117,0) |
1040 | + S DGRSLT=+MSTIEN(1) |
1041 | +"RTN","DGMSTAPI",118,0) |
1042 | + ; |
1043 | +"RTN","DGMSTAPI",119,0) |
1044 | + ; Callpoint to queue an entry that will trigger a HEC |
1045 | +"RTN","DGMSTAPI",120,0) |
1046 | + ; Enrollment Full Data Transmission (ORF/ORU~ZO7) HL7 message. |
1047 | +"RTN","DGMSTAPI",121,0) |
1048 | + ; The HL7 message will contain the following three MST data elments |
1049 | +"RTN","DGMSTAPI",122,0) |
1050 | + ; as part of the VA-Specific Eligibility ZEL segment: |
1051 | +"RTN","DGMSTAPI",123,0) |
1052 | + ; (23) - MST STATUS |
1053 | +"RTN","DGMSTAPI",124,0) |
1054 | + ; (24) - DATE MST STATUS CHANGED |
1055 | +"RTN","DGMSTAPI",125,0) |
1056 | + ; (25) - SITE DETERMINING MST STATUS |
1057 | +"RTN","DGMSTAPI",126,0) |
1058 | + ; |
1059 | +"RTN","DGMSTAPI",127,0) |
1060 | + I DGXMIT D |
1061 | +"RTN","DGMSTAPI",128,0) |
1062 | + . D SEND^DGMSTL1(DFN,"Z07") |
1063 | +"RTN","DGMSTAPI",129,0) |
1064 | + ; |
1065 | +"RTN","DGMSTAPI",130,0) |
1066 | +NEWQ Q $G(DGRSLT) |
1067 | +"RTN","DGMSTAPI",131,0) |
1068 | + ; |
1069 | +"RTN","DGMSTAPI",132,0) |
1070 | +DELMST(MSTIEN) ; Deletes the MST HISTORY File (#29.11) entry passed in. |
1071 | +"RTN","DGMSTAPI",133,0) |
1072 | + ; This call is not to be used except from inside the DG MST List |
1073 | +"RTN","DGMSTAPI",134,0) |
1074 | + ; Manager interface. |
1075 | +"RTN","DGMSTAPI",135,0) |
1076 | + ; |
1077 | +"RTN","DGMSTAPI",136,0) |
1078 | + ; Input |
1079 | +"RTN","DGMSTAPI",137,0) |
1080 | + ; MSTIEN - IEN of the entry in the MST HISTORY File (#29.11) |
1081 | +"RTN","DGMSTAPI",138,0) |
1082 | + ; |
1083 | +"RTN","DGMSTAPI",139,0) |
1084 | + ; Output |
1085 | +"RTN","DGMSTAPI",140,0) |
1086 | + ; If no IEN passed in, return -1 |
1087 | +"RTN","DGMSTAPI",141,0) |
1088 | + ; otherwise return 1 |
1089 | +"RTN","DGMSTAPI",142,0) |
1090 | + ; |
1091 | +"RTN","DGMSTAPI",143,0) |
1092 | + Q:'$G(MSTIEN) "-1^No entry to delete" |
1093 | +"RTN","DGMSTAPI",144,0) |
1094 | + ; |
1095 | +"RTN","DGMSTAPI",145,0) |
1096 | + N DA,XD |
1097 | +"RTN","DGMSTAPI",146,0) |
1098 | + S DA=+$G(MSTIEN) |
1099 | +"RTN","DGMSTAPI",147,0) |
1100 | + S DIK="^DGMS(29.11," |
1101 | +"RTN","DGMSTAPI",148,0) |
1102 | + D ^DIK K DIK |
1103 | +"RTN","DGMSTAPI",149,0) |
1104 | + Q 1 |
1105 | +"RTN","DGMSTAPI",150,0) |
1106 | + ; |
1107 | +"RTN","DGMSTAPI",151,0) |
1108 | +NAME(DA) ; Returns name from the VA NEW PERSON File using DIQ call |
1109 | +"RTN","DGMSTAPI",152,0) |
1110 | + ; |
1111 | +"RTN","DGMSTAPI",153,0) |
1112 | + N DGNAME,DGPROV,DIQ,DR,DIC |
1113 | +"RTN","DGMSTAPI",154,0) |
1114 | + I $G(DA)="" G NAMEQ |
1115 | +"RTN","DGMSTAPI",155,0) |
1116 | + S DIC=200,DR=".01",DIQ="DGPROV" |
1117 | +"RTN","DGMSTAPI",156,0) |
1118 | + D EN^DIQ1 |
1119 | +"RTN","DGMSTAPI",157,0) |
1120 | + S DGNAME=$G(DGPROV(200,DA,.01)) |
1121 | +"RTN","DGMSTAPI",158,0) |
1122 | +NAMEQ Q $G(DGNAME) |
1123 | +"RTN","DGMSTAPI",159,0) |
1124 | + ; |
1125 | +"RTN","DGMSTAPI",160,0) |
1126 | +CHANGE(DFN,DGSTAT,DGDATE) ;Did the Status OR Date change? |
1127 | +"RTN","DGMSTAPI",161,0) |
1128 | + ; Input |
1129 | +"RTN","DGMSTAPI",162,0) |
1130 | + ; DFN - Patients DFN |
1131 | +"RTN","DGMSTAPI",163,0) |
1132 | + ; DGSTAT - MST Status code, "Y,N,D,U" |
1133 | +"RTN","DGMSTAPI",164,0) |
1134 | + ; DGDATE - Date of MST Status Change (FM format) |
1135 | +"RTN","DGMSTAPI",165,0) |
1136 | + ; |
1137 | +"RTN","DGMSTAPI",166,0) |
1138 | + ; Output |
1139 | +"RTN","DGMSTAPI",167,0) |
1140 | + ; Returns 0 if no status change |
1141 | +"RTN","DGMSTAPI",168,0) |
1142 | + ; 1 if status changed |
1143 | +"RTN","DGMSTAPI",169,0) |
1144 | + ; |
1145 | +"RTN","DGMSTAPI",170,0) |
1146 | + N DGCHG,DGMST |
1147 | +"RTN","DGMSTAPI",171,0) |
1148 | + S DGCHG=0 |
1149 | +"RTN","DGMSTAPI",172,0) |
1150 | + I +$G(DFN)'>0!('$D(^DPT(DFN,0))) G CHNGQ |
1151 | +"RTN","DGMSTAPI",173,0) |
1152 | + S DGSTAT=$G(DGSTAT) |
1153 | +"RTN","DGMSTAPI",174,0) |
1154 | + I DGSTAT'?1A!("YNDU"'[DGSTAT) G CHNGQ |
1155 | +"RTN","DGMSTAPI",175,0) |
1156 | + S DGDATE=$G(DGDATE) |
1157 | +"RTN","DGMSTAPI",176,0) |
1158 | + I DGDATE="" G CHNGQ |
1159 | +"RTN","DGMSTAPI",177,0) |
1160 | + S DGMST=$$GETSTAT(DFN),DGMST=$G(DGMST) |
1161 | +"RTN","DGMSTAPI",178,0) |
1162 | + I +DGMST<1!($P(DGMST,U,2)'=$G(DGSTAT))!($P(DGMST,U,3)'=$G(DGDATE)) S DGCHG=1 |
1163 | +"RTN","DGMSTAPI",179,0) |
1164 | +CHNGQ Q DGCHG |
1165 | +"RTN","DGMSTAPI",180,0) |
1166 | + ; |
1167 | +"RTN","DGMSTAPI",181,0) |
1168 | +SITE(DGSITE) ;Convert a station number into a pointer to the |
1169 | +"RTN","DGMSTAPI",182,0) |
1170 | + ; INSTITUTION file (#4). If called with a null parameter then |
1171 | +"RTN","DGMSTAPI",183,0) |
1172 | + ; the pointer to the INSTITUTION file (#4) of the primary site |
1173 | +"RTN","DGMSTAPI",184,0) |
1174 | + ; will be returned. |
1175 | +"RTN","DGMSTAPI",185,0) |
1176 | + ; |
1177 | +"RTN","DGMSTAPI",186,0) |
1178 | + ; Input |
1179 | +"RTN","DGMSTAPI",187,0) |
1180 | + ; DGSITE - Station number (optional) |
1181 | +"RTN","DGMSTAPI",188,0) |
1182 | + ; |
1183 | +"RTN","DGMSTAPI",189,0) |
1184 | + ; Output |
1185 | +"RTN","DGMSTAPI",190,0) |
1186 | + ; Return Site IEN to INSTITUTION file (#4) |
1187 | +"RTN","DGMSTAPI",191,0) |
1188 | + ; |
1189 | +"RTN","DGMSTAPI",192,0) |
1190 | + S DGSITE=$G(DGSITE) |
1191 | +"RTN","DGMSTAPI",193,0) |
1192 | + I DGSITE]"",$D(^DIC(4,"D",DGSITE)) D |
1193 | +"RTN","DGMSTAPI",194,0) |
1194 | + . S DGSITE=$O(^DIC(4,"D",DGSITE,0)) |
1195 | +"RTN","DGMSTAPI",195,0) |
1196 | + E D |
1197 | +"RTN","DGMSTAPI",196,0) |
1198 | + . S DGSITE=$P($$SITE^VASITE,U) |
1199 | +"RTN","DGMSTAPI",197,0) |
1200 | + I +DGSITE'>0 S DGSITE="" |
1201 | +"RTN","DGMSTAPI",198,0) |
1202 | + Q DGSITE |
1203 | +"RTN","DGMSTAPI",199,0) |
1204 | + ; |
1205 | +"RTN","DGMSTAPI",200,0) |
1206 | +DATE(DFN,DGDT) ;Determine 'current' MST date |
1207 | +"RTN","DGMSTAPI",201,0) |
1208 | + ; |
1209 | +"RTN","DGMSTAPI",202,0) |
1210 | + ; Input |
1211 | +"RTN","DGMSTAPI",203,0) |
1212 | + ; DFN - Patient's DFN |
1213 | +"RTN","DGMSTAPI",204,0) |
1214 | + ; DGDT - FileMan format date |
1215 | +"RTN","DGMSTAPI",205,0) |
1216 | + ; |
1217 | +"RTN","DGMSTAPI",206,0) |
1218 | + ; Output |
1219 | +"RTN","DGMSTAPI",207,0) |
1220 | + ; Return MST effective date |
1221 | +"RTN","DGMSTAPI",208,0) |
1222 | + ; |
1223 | +"RTN","DGMSTAPI",209,0) |
1224 | + N DGMSTDT |
1225 | +"RTN","DGMSTAPI",210,0) |
1226 | + S DFN=$G(DFN) |
1227 | +"RTN","DGMSTAPI",211,0) |
1228 | + I '+DFN D G DATEQ |
1229 | +"RTN","DGMSTAPI",212,0) |
1230 | + . S DGMSTDT="" |
1231 | +"RTN","DGMSTAPI",213,0) |
1232 | + S DGDT=$S(+$G(DGDT)>0:DGDT,1:$$NOW^XLFDT) |
1233 | +"RTN","DGMSTAPI",214,0) |
1234 | + I $P(DGDT,".",2)="" S DGDT=DGDT_".999999" |
1235 | +"RTN","DGMSTAPI",215,0) |
1236 | + S DGMSTDT=$O(^DGMS(29.11,"APDT",DFN,DGDT),-1) |
1237 | +"RTN","DGMSTAPI",216,0) |
1238 | +DATEQ Q DGMSTDT |
1239 | +"RTN","DGMSTAPI",217,0) |
1240 | + ; |
1241 | +"RTN","DGMSTAPI",218,0) |
1242 | +VALID(DFN,DGSTAT,DGDATE,DGPROV,DGSITE,DGERR) ;Validate fields before filing |
1243 | +"RTN","DGMSTAPI",219,0) |
1244 | + ; Input: |
1245 | +"RTN","DGMSTAPI",220,0) |
1246 | + ; DFN - [REQUIRED] - ien of Patient |
1247 | +"RTN","DGMSTAPI",221,0) |
1248 | + ; DGSTAT - [REQUIRED] - MST Status code, "Y,N,D,U" |
1249 | +"RTN","DGMSTAPI",222,0) |
1250 | + ; DGDATE - [REQUIRED] - Date of MST status change[FileMan Internal] |
1251 | +"RTN","DGMSTAPI",223,0) |
1252 | + ; DGPROV - [optional] - IEN of Provider making determination |
1253 | +"RTN","DGMSTAPI",224,0) |
1254 | + ; DGSITE - [optional] - IEN pointer of the INSTITUTION file |
1255 | +"RTN","DGMSTAPI",225,0) |
1256 | + ; DGERR - [optional] - error parameter passed by reference |
1257 | +"RTN","DGMSTAPI",226,0) |
1258 | + ; Output: |
1259 | +"RTN","DGMSTAPI",227,0) |
1260 | + ; Function Value - Returns 1 - if validation checks passed |
1261 | +"RTN","DGMSTAPI",228,0) |
1262 | + ; 0 - if validation checks failed |
1263 | +"RTN","DGMSTAPI",229,0) |
1264 | + ; DGERR - an error message if validation checks fail |
1265 | +"RTN","DGMSTAPI",230,0) |
1266 | + ; init variables |
1267 | +"RTN","DGMSTAPI",231,0) |
1268 | + N I,DGFILE,DGFLD,DGMSG,DGSTR,DGVAL,DGVAR,DGX,VALID |
1269 | +"RTN","DGMSTAPI",232,0) |
1270 | + S DGFILE=29.11,VALID=1,DGMSG=" IS REQUIRED" |
1271 | +"RTN","DGMSTAPI",233,0) |
1272 | + ; Quit DO block if invalid condition found |
1273 | +"RTN","DGMSTAPI",234,0) |
1274 | + ; Check for [REQUIRED] fields |
1275 | +"RTN","DGMSTAPI",235,0) |
1276 | + D |
1277 | +"RTN","DGMSTAPI",236,0) |
1278 | + . I DFN="" D MSG(DGFILE,2,DGMSG,.DGERR) Q ;pat ien |
1279 | +"RTN","DGMSTAPI",237,0) |
1280 | + . I DGSTAT="" D MSG(DGFILE,3,DGMSG,.DGERR) Q ;mst status code |
1281 | +"RTN","DGMSTAPI",238,0) |
1282 | + . I DGDATE="" D MSG(DGFILE,.01,DGMSG,.DGERR) Q ;dt chg status |
1283 | +"RTN","DGMSTAPI",239,0) |
1284 | + .; |
1285 | +"RTN","DGMSTAPI",240,0) |
1286 | + .; Check for valid FIELD values |
1287 | +"RTN","DGMSTAPI",241,0) |
1288 | + . S DGMSG=" IS NOT VALID" |
1289 | +"RTN","DGMSTAPI",242,0) |
1290 | + .; need to strip off the 'seconds' to pass the CHK^DIE() call... |
1291 | +"RTN","DGMSTAPI",243,0) |
1292 | + . I DGDATE["." N DGSECS S DGSECS=$E($P(DGDATE,".",2),5,6) I DGSECS'="" I DGSECS<0!(DGSECS>60) D MSG(DGFILE,.01,DGMSG,.DGERR) Q |
1293 | +"RTN","DGMSTAPI",244,0) |
1294 | + . N DGDATEX S DGDATEX=DGDATE |
1295 | +"RTN","DGMSTAPI",245,0) |
1296 | + . I DGDATEX["." S DGDATEX=$P(DGDATEX,".")_"."_$E($P(DGDATEX,".",2),1,4) |
1297 | +"RTN","DGMSTAPI",246,0) |
1298 | + . I $E($P(DGDATEX,".",2),1,4)="0000" S DGDATEX=$P(DGDATEX,".")_".1" |
1299 | +"RTN","DGMSTAPI",247,0) |
1300 | + . S DGSTR=".01;DGDATEX^2;DFN^3;DGSTAT^4;DGPROV^5;DUZ^6;DGSITE" |
1301 | +"RTN","DGMSTAPI",248,0) |
1302 | + .; |
1303 | +"RTN","DGMSTAPI",249,0) |
1304 | + . F I=1:1:$L(DGSTR,U) S DGX=$P(DGSTR,U,I) Q:DGX="" D Q:'VALID |
1305 | +"RTN","DGMSTAPI",250,0) |
1306 | + .. S DGFLD=$P(DGX,";"),DGVAR=$P(DGX,";",2),DGVAL=@DGVAR |
1307 | +"RTN","DGMSTAPI",251,0) |
1308 | + .. Q:DGVAL="" |
1309 | +"RTN","DGMSTAPI",252,0) |
1310 | + .. S VALID=$$TESTVAL(DGFILE,DGFLD,DGVAL) |
1311 | +"RTN","DGMSTAPI",253,0) |
1312 | + .. D:'VALID MSG(DGFILE,DGFLD,DGMSG,.DGERR) |
1313 | +"RTN","DGMSTAPI",254,0) |
1314 | + Q VALID |
1315 | +"RTN","DGMSTAPI",255,0) |
1316 | + ; |
1317 | +"RTN","DGMSTAPI",256,0) |
1318 | +MSG(DGFIL,DGFLD,DGMSG,DGERR) ; error message setup |
1319 | +"RTN","DGMSTAPI",257,0) |
1320 | + ; Input: |
1321 | +"RTN","DGMSTAPI",258,0) |
1322 | + ; DGFIL - file number |
1323 | +"RTN","DGMSTAPI",259,0) |
1324 | + ; DGFLD - field number of file |
1325 | +"RTN","DGMSTAPI",260,0) |
1326 | + ; DGMSG - message type verbiage - " IS REQUIRED" or " IS NOT VALID" |
1327 | +"RTN","DGMSTAPI",261,0) |
1328 | + ; DGERR - error parameter passed by reference |
1329 | +"RTN","DGMSTAPI",262,0) |
1330 | + ; Output: |
1331 | +"RTN","DGMSTAPI",263,0) |
1332 | + ; DGERR - error message |
1333 | +"RTN","DGMSTAPI",264,0) |
1334 | + S DGERR=$$GET1^DID(DGFIL,DGFLD,,"LABEL")_DGMSG |
1335 | +"RTN","DGMSTAPI",265,0) |
1336 | + Q |
1337 | +"RTN","DGMSTAPI",266,0) |
1338 | + ; |
1339 | +"RTN","DGMSTAPI",267,0) |
1340 | +TESTVAL(DGFIL,DGFLD,DGVAL) ; Determine if a field value is valid. |
1341 | +"RTN","DGMSTAPI",268,0) |
1342 | + ; Input: |
1343 | +"RTN","DGMSTAPI",269,0) |
1344 | + ; DGFIL - file number |
1345 | +"RTN","DGMSTAPI",270,0) |
1346 | + ; DGFLD - field number of file |
1347 | +"RTN","DGMSTAPI",271,0) |
1348 | + ; DGVAL - field value to be validated |
1349 | +"RTN","DGMSTAPI",272,0) |
1350 | + ; Output: |
1351 | +"RTN","DGMSTAPI",273,0) |
1352 | + ; Function value: Returns 1 if field is valid |
1353 | +"RTN","DGMSTAPI",274,0) |
1354 | + ; 0 if validation fails |
1355 | +"RTN","DGMSTAPI",275,0) |
1356 | + N DGVALEX,DGRSLT,VALID |
1357 | +"RTN","DGMSTAPI",276,0) |
1358 | + S VALID=1 |
1359 | +"RTN","DGMSTAPI",277,0) |
1360 | + I DGVAL'="" D |
1361 | +"RTN","DGMSTAPI",278,0) |
1362 | + . S DGVALEX=$$EXTERNAL^DILFD(DGFIL,DGFLD,"F",DGVAL) |
1363 | +"RTN","DGMSTAPI",279,0) |
1364 | + . I DGVALEX="" S VALID=0 Q ; no external value, not valid |
1365 | +"RTN","DGMSTAPI",280,0) |
1366 | + . I $$GET1^DID(DGFIL,DGFLD,"","TYPE")'="POINTER" D |
1367 | +"RTN","DGMSTAPI",281,0) |
1368 | + .. D CHK^DIE(DGFIL,DGFLD,,DGVALEX,.DGRSLT) I DGRSLT="^" S VALID=0 |
1369 | +"RTN","DGMSTAPI",282,0) |
1370 | + Q VALID |
1371 | +"RTN","GMRCA2") |
1372 | +0^35^B10634 |
1373 | +"RTN","GMRCA2",1,0) |
1374 | +GMRCA2 ;SLC/KCM,DLT,MSC/JDA - Select prompt for processing actions ;27APR2009 |
1375 | +"RTN","GMRCA2",2,0) |
1376 | + ;;3.0;CONSULT/REQUEST TRACKING;**1,4,MSC**;DEC 27, 1997 |
1377 | +"RTN","GMRCA2",3,0) |
1378 | +SELECT(GMRCO) ; Select the consult to process |
1379 | +"RTN","GMRCA2",4,0) |
1380 | + ;This utility checks the GMRCO variable against the selection list |
1381 | +"RTN","GMRCA2",5,0) |
1382 | + ; Input variable used: |
1383 | +"RTN","GMRCA2",6,0) |
1384 | + ; BLK, LNCT, GMRCO |
1385 | +"RTN","GMRCA2",7,0) |
1386 | + ; GMRC("NMBR") |
1387 | +"RTN","GMRCA2",8,0) |
1388 | + ; Output variables returned: |
1389 | +"RTN","GMRCA2",9,0) |
1390 | + ; GMRCQUT=1 if no consult was selected |
1391 | +"RTN","GMRCA2",10,0) |
1392 | + ; GMRCQUT is not defined on return when selection made |
1393 | +"RTN","GMRCA2",11,0) |
1394 | + ; GMRCO= consult selected from list |
1395 | +"RTN","GMRCA2",12,0) |
1396 | +START |
1397 | +"RTN","GMRCA2",13,0) |
1398 | + K GMRCQUT,GMRCSEL |
1399 | +"RTN","GMRCA2",14,0) |
1400 | + N GMRCAGN |
1401 | +"RTN","GMRCA2",15,0) |
1402 | + I '$L($G(GMRCO)) D Q:$D(GMRCQUT) G:$D(GMRCAGN) START |
1403 | +"RTN","GMRCA2",16,0) |
1404 | + .;use the highlighted number if defined |
1405 | +"RTN","GMRCA2",17,0) |
1406 | + .I $D(GMRC("NMBR")) S GMRCSEL=GMRC("NMBR") |
1407 | +"RTN","GMRCA2",18,0) |
1408 | + .I '$D(GMRCSEL),$D(LNCT),LNCT=1 S GMRCSEL=LNCT |
1409 | +"RTN","GMRCA2",19,0) |
1410 | + .I $S('+$G(GMRCSEL):1,+GMRCSEL<1:1,+GMRCSEL>BLK:1,GMRCSEL="":1,1:0) K GMRCSEL D:+$G(GMRC("NMBR")) AGAIN^GMRCSLMV(GMRC("NMBR")) K GMRC("NMBR") |
1411 | +"RTN","GMRCA2",20,0) |
1412 | + .I '+$G(GMRCSEL) D SEL I $S($D(DTOUT):1,$D(DIROUT):1,$D(GMRCQUT):1,'+GMRCSEL:1,1:0) K GMRCSEL S GMRCQUT=1 Q |
1413 | +"RTN","GMRCA2",21,0) |
1414 | + .I $S(+GMRCSEL<1:1,GMRCSEL>BLK:1,1:0) W !,"Select a consult listed in the number range 1 to "_BLK S GMRCAGN=1 Q |
1415 | +"RTN","GMRCA2",22,0) |
1416 | + .S GMRCO=$O(^TMP("GMRCR",$J,"CS","AD",GMRCSEL,GMRCSEL,0)) |
1417 | +"RTN","GMRCA2",23,0) |
1418 | + .I '+GMRCO D |
1419 | +"RTN","GMRCA2",24,0) |
1420 | + .. S GMRCQUT=1 |
1421 | +"RTN","GMRCA2",25,0) |
1422 | + .. W !,$C(7),"Select a consult by entering its listed number between 1 and "_LNCT_"." |
1423 | +"RTN","GMRCA2",26,0) |
1424 | + .. K GMRCO,GMRCSEL |
1425 | +"RTN","GMRCA2",27,0) |
1426 | + . Q |
1427 | +"RTN","GMRCA2",28,0) |
1428 | + Q |
1429 | +"RTN","GMRCA2",29,0) |
1430 | + ; |
1431 | +"RTN","GMRCA2",30,0) |
1432 | +SEL ;Select order number(s) exit: GMRCSEL |
1433 | +"RTN","GMRCA2",31,0) |
1434 | + I $D(GMRC("NMBR")) S GMRCSEL=GMRC("NMBR") Q |
1435 | +"RTN","GMRCA2",32,0) |
1436 | + I '$D(^TMP("GMRCR",$J,"CS","AD")) W !,"No orders to select.",! S GMRCQUT=1,GMRCSEL="" Q |
1437 | +"RTN","GMRCA2",33,0) |
1438 | + I '$O(^TMP("GMRCR",$J,"CS","AD")),BLK=1 S GMRCSEL=BLK Q |
1439 | +"RTN","GMRCA2",34,0) |
1440 | + S GMRCSEL="" W !,"CHOOSE No. 1-",BLK,": " R X:DTIME S:X="^^" DIROUT=1 I '$T!(X["^") S (DTOUT,GMRCQUT)=1 Q |
1441 | +"RTN","GMRCA2",35,0) |
1442 | + I X["?" D SELHELP G SEL |
1443 | +"RTN","GMRCA2",36,0) |
1444 | + I X="" S GMRCQUT=1 Q |
1445 | +"RTN","GMRCA2",37,0) |
1446 | + I X'?.3N W $C(7)," ?? Enter the number from the far left of the list." G SEL |
1447 | +"RTN","GMRCA2",38,0) |
1448 | + I $S(X>BLK:1,X<1:1,1:0) D SELHELP G SEL |
1449 | +"RTN","GMRCA2",39,0) |
1450 | + S GMRCSEL=X |
1451 | +"RTN","GMRCA2",40,0) |
1452 | + Q |
1453 | +"RTN","GMRCA2",41,0) |
1454 | +SELHELP ;Help to select a valid entry |
1455 | +"RTN","GMRCA2",42,0) |
1456 | + W !,"Select a request by typing the number from the left column and pressing <ENTER>.",! |
1457 | +"RTN","GMRCA2",43,0) |
1458 | + Q |
1459 | +"RTN","GMRCA2",44,0) |
1460 | +UP ;Convert lower to upper case entry: X exit: X |
1461 | +"RTN","GMRCA2",45,0) |
1462 | + F %=1:1:$L(X) I $E(X,%)?1L S X=$E(X,1,%-1)_$C($A(X,%)-32)_$E(X,%+1,99) |
1463 | +"RTN","GMRCA2",46,0) |
1464 | + Q |
1465 | +"RTN","HLCSLNCH") |
1466 | +0^18^B37355917 |
1467 | +"RTN","HLCSLNCH",1,0) |
1468 | +HLCSLNCH ;ALB/MTC/JC MSC/JDA - START AND STOP THE LLP ;13APR2009 |
1469 | +"RTN","HLCSLNCH",2,0) |
1470 | + ;;1.6;HEALTH LEVEL SEVEN;**6,19,43,49,57,75,84,109,MSC**;Oct 13, 1995 |
1471 | +"RTN","HLCSLNCH",3,0) |
1472 | + ; |
1473 | +"RTN","HLCSLNCH",4,0) |
1474 | + ;This program is callable from a menu |
1475 | +"RTN","HLCSLNCH",5,0) |
1476 | + ;It allows the user to Start and Stop the Lower Layer |
1477 | +"RTN","HLCSLNCH",6,0) |
1478 | + ;Protocol in the Background or in the foreground |
1479 | +"RTN","HLCSLNCH",7,0) |
1480 | + ; |
1481 | +"RTN","HLCSLNCH",8,0) |
1482 | + ;Required or Optional INPUT PARAMETERS |
1483 | +"RTN","HLCSLNCH",9,0) |
1484 | + ; None |
1485 | +"RTN","HLCSLNCH",10,0) |
1486 | + ; |
1487 | +"RTN","HLCSLNCH",11,0) |
1488 | + ; |
1489 | +"RTN","HLCSLNCH",12,0) |
1490 | + ;Output variables |
1491 | +"RTN","HLCSLNCH",13,0) |
1492 | + ; HLDP=IEN of Logical Link in file #870 |
1493 | +"RTN","HLCSLNCH",14,0) |
1494 | + ;(optional)HLTRACE=if SET it launches the LLP in the Foreground |
1495 | +"RTN","HLCSLNCH",15,0) |
1496 | + ;(optional) ZTSK=if defined LLP was launched in the |
1497 | +"RTN","HLCSLNCH",16,0) |
1498 | + ;background |
1499 | +"RTN","HLCSLNCH",17,0) |
1500 | + ; |
1501 | +"RTN","HLCSLNCH",18,0) |
1502 | + ; |
1503 | +"RTN","HLCSLNCH",19,0) |
1504 | +START ; Start up the lower level protocol |
1505 | +"RTN","HLCSLNCH",20,0) |
1506 | + N DIC,DIRUT,DTOUT,DUOUT,HLDP,HLDAPP,HLJ,HLQUIT,HLTRACE |
1507 | +"RTN","HLCSLNCH",21,0) |
1508 | + N HLPARM0,HLPARM4,HLTYPTR,HLBGR,X,Y,ZTCPU,ZTSK,ZTRTN,ZTDESC |
1509 | +"RTN","HLCSLNCH",22,0) |
1510 | + W !!,"This option is used to launch the lower level protocol for the" |
1511 | +"RTN","HLCSLNCH",23,0) |
1512 | + W !,"appropriate device. Please select the node with which you want" |
1513 | +"RTN","HLCSLNCH",24,0) |
1514 | + W !,"to communicate",! |
1515 | +"RTN","HLCSLNCH",25,0) |
1516 | + S DIC="^HLCS(870,",DIC(0)="QEAMZ" D ^DIC G:Y<0 STARTQ |
1517 | +"RTN","HLCSLNCH",26,0) |
1518 | + S HLDP=+Y,HLDAPP=Y(0,0),HLTYPTR=+$P(Y(0),U,3),HLPARM0=Y(0) |
1519 | +"RTN","HLCSLNCH",27,0) |
1520 | + ;-- check if parameter have been setup |
1521 | +"RTN","HLCSLNCH",28,0) |
1522 | + ;-- check for LLP type |
1523 | +"RTN","HLCSLNCH",29,0) |
1524 | + I 'HLTYPTR W !,$C(7),"A Lower Layer Protocol must be selected before start-up can occur." G STARTQ |
1525 | +"RTN","HLCSLNCH",30,0) |
1526 | + ;-- get TCP information |
1527 | +"RTN","HLCSLNCH",31,0) |
1528 | + S HLPARM4=$G(^HLCS(870,HLDP,400)) |
1529 | +"RTN","HLCSLNCH",32,0) |
1530 | + ;-- get routine (background job for LLP) |
1531 | +"RTN","HLCSLNCH",33,0) |
1532 | + S HLBGR=$G(^HLCS(869.1,HLTYPTR,100)) |
1533 | +"RTN","HLCSLNCH",34,0) |
1534 | + ;-- get environment check routine (HLQUIT should be defined in fails) |
1535 | +"RTN","HLCSLNCH",35,0) |
1536 | + S HLENV=$G(^HLCS(869.1,HLTYPTR,200)) |
1537 | +"RTN","HLCSLNCH",36,0) |
1538 | + ; |
1539 | +"RTN","HLCSLNCH",37,0) |
1540 | + I HLBGR="" W !,$C(7),"No routine has been specified for this LLP." G STARTQ |
1541 | +"RTN","HLCSLNCH",38,0) |
1542 | + ; |
1543 | +"RTN","HLCSLNCH",39,0) |
1544 | + ;-- execute environment check routine if HLQUIT is defined then terminate |
1545 | +"RTN","HLCSLNCH",40,0) |
1546 | + I HLENV'="" X HLENV G:$D(HLQUIT) STARTQ |
1547 | +"RTN","HLCSLNCH",41,0) |
1548 | + ;Multi-Servers, only enable the link if not OpenM |
1549 | +"RTN","HLCSLNCH",42,0) |
1550 | + I $P(HLPARM4,U,3)="M",$$NOTMULTI D G STARTQ |
1551 | +"RTN","HLCSLNCH",43,0) |
1552 | + . W !,$C(7),"This LLP is a multi-threaded server. It is controlled by external service, i.e. TCPIP/UCX. You must use the external service to start this LLP." |
1553 | +"RTN","HLCSLNCH",44,0) |
1554 | + . Q |
1555 | +"RTN","HLCSLNCH",45,0) |
1556 | + ; |
1557 | +"RTN","HLCSLNCH",46,0) |
1558 | + I $P(HLPARM0,U,10) W !,$C(7),"The LLP was last started on ",$$DAT2^HLUTIL1($P(HLPARM0,U,10)),"." G STP1:$P(HLPARM0,U,5)'="Error" |
1559 | +"RTN","HLCSLNCH",47,0) |
1560 | + I $P(HLPARM0,U,11) W !,"The LLP was last shutdown on ",$$DAT2^HLUTIL1($P(HLPARM0,U,11)),"." |
1561 | +"RTN","HLCSLNCH",48,0) |
1562 | + I $P(HLPARM0,U,5)'="Error",'($P(HLPARM4,U,3)="C"&("N"[$P(HLPARM4,U,4))),$P(HLPARM0,U,10)]""&($P(HLPARM0,U,11)=""),$P(HLPARM0,U,12) W !,"The LLP appears to be online already !" |
1563 | +"RTN","HLCSLNCH",49,0) |
1564 | + I $$TASK^HLUTIL1($P(HLPARM0,U,12)) D G STARTQ |
1565 | +"RTN","HLCSLNCH",50,0) |
1566 | + . W !,$C(7),"NOTE: The lower level protocol for this application is already running." |
1567 | +"RTN","HLCSLNCH",51,0) |
1568 | + I $P(HLPARM4,U,3)="C"&("N"[$P(HLPARM4,U,4)) D G STARTQ |
1569 | +"RTN","HLCSLNCH",52,0) |
1570 | + .;4=status 9=Time Started, 10=Time Stopped, 11=Task Number |
1571 | +"RTN","HLCSLNCH",53,0) |
1572 | + .;14=Shutdown LLP, 3=Device Type, 18=Gross Errors |
1573 | +"RTN","HLCSLNCH",54,0) |
1574 | + .N HLJ,X |
1575 | +"RTN","HLCSLNCH",55,0) |
1576 | + .I $P(HLPARM0,U,15)=0 W !,"This LLP is already enabled!" Q |
1577 | +"RTN","HLCSLNCH",56,0) |
1578 | + .L +^HLCS(870,HLDP,0):2 |
1579 | +"RTN","HLCSLNCH",57,0) |
1580 | + .E W !,$C(7),"Unable to enable this LLP !" Q |
1581 | +"RTN","HLCSLNCH",58,0) |
1582 | + .S X="HLJ(870,"""_HLDP_","")" |
1583 | +"RTN","HLCSLNCH",59,0) |
1584 | + .S @X@(4)="Enabled",@X@(9)=$$NOW^XLFDT,@X@(14)=0 |
1585 | +"RTN","HLCSLNCH",60,0) |
1586 | + .D FILE^HLDIE("","HLJ","","START","HLCSLNCH") ;HL*1.6*109 |
1587 | +"RTN","HLCSLNCH",61,0) |
1588 | + .L -^HLCS(870,HLDP,0) |
1589 | +"RTN","HLCSLNCH",62,0) |
1590 | + .W !,"This LLP has been enabled!" |
1591 | +"RTN","HLCSLNCH",63,0) |
1592 | + .Q |
1593 | +"RTN","HLCSLNCH",64,0) |
1594 | + I $P(HLPARM4,U,6),$D(^%ZIS(14.7,+$P(HLPARM4,U,6),0)) S ZTCPU=$P(^(0),U) W !,"This LLP will start on node ",ZTCPU," if it is run in the Background.",! |
1595 | +"RTN","HLCSLNCH",65,0) |
1596 | + ; |
1597 | +"RTN","HLCSLNCH",66,0) |
1598 | + W ! S DIR(0)="SM^F:FOREGROUND;B:BACKGROUND;Q:QUIT" |
1599 | +"RTN","HLCSLNCH",67,0) |
1600 | + S DIR("A")="Method for running the receiver" |
1601 | +"RTN","HLCSLNCH",68,0) |
1602 | + S DIR("B")="B" |
1603 | +"RTN","HLCSLNCH",69,0) |
1604 | + S DIR("?",1)="Enter F for Foreground (and trace)" |
1605 | +"RTN","HLCSLNCH",70,0) |
1606 | + S DIR("?",2)=" B for Background (normal) or" |
1607 | +"RTN","HLCSLNCH",71,0) |
1608 | + S DIR("?")=" Q to quit without starting the receiver" |
1609 | +"RTN","HLCSLNCH",72,0) |
1610 | + D ^DIR K DIR |
1611 | +"RTN","HLCSLNCH",73,0) |
1612 | + Q:(Y=U)!(Y="Q") |
1613 | +"RTN","HLCSLNCH",74,0) |
1614 | + ; |
1615 | +"RTN","HLCSLNCH",75,0) |
1616 | + S HLX=$G(^HLCS(870,HLDP,0)) |
1617 | +"RTN","HLCSLNCH",76,0) |
1618 | + ;-- foreground |
1619 | +"RTN","HLCSLNCH",77,0) |
1620 | + I Y="F" S HLTRACE=1 D G STARTQ |
1621 | +"RTN","HLCSLNCH",78,0) |
1622 | + . X HLBGR |
1623 | +"RTN","HLCSLNCH",79,0) |
1624 | + ;-- background |
1625 | +"RTN","HLCSLNCH",80,0) |
1626 | + I Y="B" D G STARTQ |
1627 | +"RTN","HLCSLNCH",81,0) |
1628 | + . S ZTRTN=$P(HLBGR," ",2),HLTRACE="",ZTIO="",ZTDTH=$H |
1629 | +"RTN","HLCSLNCH",82,0) |
1630 | + . S ZTDESC=HLDAPP_" Low Level Protocol",ZTSAVE("HLDP")="" |
1631 | +"RTN","HLCSLNCH",83,0) |
1632 | + . D ^%ZTLOAD |
1633 | +"RTN","HLCSLNCH",84,0) |
1634 | + . W !,$S($D(ZTSK):"Job was queued as "_ZTSK_".",1:"Unable to queue job.") |
1635 | +"RTN","HLCSLNCH",85,0) |
1636 | + ; |
1637 | +"RTN","HLCSLNCH",86,0) |
1638 | + Q |
1639 | +"RTN","HLCSLNCH",87,0) |
1640 | + ; |
1641 | +"RTN","HLCSLNCH",88,0) |
1642 | + ; |
1643 | +"RTN","HLCSLNCH",89,0) |
1644 | +STARTQ ; |
1645 | +"RTN","HLCSLNCH",90,0) |
1646 | + I $G(POP) W !,?5,"-Unable to Open the Device !",!,!,?6,"Check that Port is Logged Out, and that the",!,?6,"Lower Level Protocol is not Already Running." |
1647 | +"RTN","HLCSLNCH",91,0) |
1648 | + Q |
1649 | +"RTN","HLCSLNCH",92,0) |
1650 | + ; |
1651 | +"RTN","HLCSLNCH",93,0) |
1652 | +STOP ; Shut down a lower level protocol.. |
1653 | +"RTN","HLCSLNCH",94,0) |
1654 | + N DIC,DIRUT,DTOUT,DUOUT,HLDP,HLDAPP,HLJ,HLPARM0,HLPARM4,X,Y |
1655 | +"RTN","HLCSLNCH",95,0) |
1656 | + W !!,"This option is used to shut down the lower level protocol for the" |
1657 | +"RTN","HLCSLNCH",96,0) |
1658 | + W !,"appropriate device. Please select the link which you would" |
1659 | +"RTN","HLCSLNCH",97,0) |
1660 | + W !,"like to shutdown.",! |
1661 | +"RTN","HLCSLNCH",98,0) |
1662 | + S DIC="^HLCS(870,",DIC(0)="QEAMZ" D ^DIC K DIC Q:Y<0 |
1663 | +"RTN","HLCSLNCH",99,0) |
1664 | + S HLDP=+Y,HLDAPP=Y(0,0),HLPARM0=Y(0),HLPARM4=$G(^HLCS(870,HLDP,400)) |
1665 | +"RTN","HLCSLNCH",100,0) |
1666 | + I $P(HLPARM4,U,3)="M",$$NOTMULTI D Q |
1667 | +"RTN","HLCSLNCH",101,0) |
1668 | + . W !,$C(7),"This LLP is a multi-threaded server. It is controlled by external service, i.e. UCX. You must use the external service to disable this LLP." |
1669 | +"RTN","HLCSLNCH",102,0) |
1670 | + . Q |
1671 | +"RTN","HLCSLNCH",103,0) |
1672 | + ; |
1673 | +"RTN","HLCSLNCH",104,0) |
1674 | + I $P(HLPARM0,U,15) W !,$C(7),"The lower level protocol is already ",$P(HLPARM0,U,5),"." Q |
1675 | +"RTN","HLCSLNCH",105,0) |
1676 | + I $P(HLPARM0,U,10) W !,$C(7),"The lower level protocol was started on ",$$DAT2^HLUTIL1($P(HLPARM0,U,10)),"." |
1677 | +"RTN","HLCSLNCH",106,0) |
1678 | +STP1 ; |
1679 | +"RTN","HLCSLNCH",107,0) |
1680 | + W ! S DIR(0)="Y",DIR("A")="Okay to shut down this job" D ^DIR K DIR |
1681 | +"RTN","HLCSLNCH",108,0) |
1682 | + I 'Y!($D(DIRUT))!($D(DUOUT)) W !!,"The job will not be shut down." Q |
1683 | +"RTN","HLCSLNCH",109,0) |
1684 | +S ; |
1685 | +"RTN","HLCSLNCH",110,0) |
1686 | + F L +^HLCS(870,HLDP,0):2 Q:$T |
1687 | +"RTN","HLCSLNCH",111,0) |
1688 | + ;4=status,10=Time Stopped,9=Time Started,11=Task Number,3=Device Type,14=shutdown |
1689 | +"RTN","HLCSLNCH",112,0) |
1690 | + S X="HLJ(870,"""_HLDP_","")",@X@(4)="Halting",@X@(10)=$$NOW^XLFDT,(@X@(11),@X@(9))="@",@X@(14)=1 |
1691 | +"RTN","HLCSLNCH",113,0) |
1692 | + I $P(HLPARM4,U,3)="C"&("N"[$P(HLPARM4,U,4)),'$P(HLPARM0,U,12) S @X@(4)="Shutdown" |
1693 | +"RTN","HLCSLNCH",114,0) |
1694 | + D FILE^HLDIE("","HLJ","","STOP","HLCSLNCH") ; HL*1.6*109 |
1695 | +"RTN","HLCSLNCH",115,0) |
1696 | + I ^%ZOSF("OS")["OpenM",(($P(HLPARM4,U,3)="M"&($$OS^%ZOSV'["VMS"))!($P(HLPARM4,U,3)="S")) D |
1697 | +"RTN","HLCSLNCH",116,0) |
1698 | + . ;pass task number to stop listener |
1699 | +"RTN","HLCSLNCH",117,0) |
1700 | + . S:$P(HLPARM0,U,12) X=$$ASKSTOP^%ZTLOAD(+$P(HLPARM0,U,12)) |
1701 | +"RTN","HLCSLNCH",118,0) |
1702 | + . D CALL^%ZISTCP($P(HLPARM4,U),$P(HLPARM4,U,2),10) |
1703 | +"RTN","HLCSLNCH",119,0) |
1704 | + . I POP D HOME^%ZIS U IO W !,"Unable to shutdown logical link!!!",$C(7),$C(7) Q |
1705 | +"RTN","HLCSLNCH",120,0) |
1706 | + . U IO W "**STOP**" |
1707 | +"RTN","HLCSLNCH",121,0) |
1708 | + . W ! |
1709 | +"RTN","HLCSLNCH",122,0) |
1710 | + . D CLOSE^%ZISTCP |
1711 | +"RTN","HLCSLNCH",123,0) |
1712 | + L -^HLCS(870,HLDP,0) |
1713 | +"RTN","HLCSLNCH",124,0) |
1714 | + W !,"The job for the "_HLDAPP_" Lower Level Protocol will be shut down." |
1715 | +"RTN","HLCSLNCH",125,0) |
1716 | + Q |
1717 | +"RTN","HLCSLNCH",126,0) |
1718 | + ; |
1719 | +"RTN","HLCSLNCH",127,0) |
1720 | +NOTMULTI() ; Returns 1 if implementation can't run multithreaded listener |
1721 | +"RTN","HLCSLNCH",128,0) |
1722 | + Q:^%ZOSF("OS")["GT.M" 0 |
1723 | +"RTN","HLCSLNCH",129,0) |
1724 | + Q $S(^%ZOSF("OS")'["OpenM":1,1:$$OS^%ZOSV["VMS") |
1725 | +"RTN","HLCSLNCH",130,0) |
1726 | +STOPQ Q |
1727 | +"RTN","HLCSTCP") |
1728 | +0^17^B32434118 |
1729 | +"RTN","HLCSTCP",1,0) |
1730 | +HLCSTCP ;SFIRMFO/TNV-ALB/JFP,PKE MSC/JDA - (TCP/IP) MLLP ;13APR2009 |
1731 | +"RTN","HLCSTCP",2,0) |
1732 | + ;;1.6;HEALTH LEVEL SEVEN;**19,43,49,57,58,64,84,109,MSC**;Oct 13, 1995 |
1733 | +"RTN","HLCSTCP",3,0) |
1734 | + ; |
1735 | +"RTN","HLCSTCP",4,0) |
1736 | + ; This is an implementation of the HL7 Minimal Lower Layer Protocol |
1737 | +"RTN","HLCSTCP",5,0) |
1738 | + ; |
1739 | +"RTN","HLCSTCP",6,0) |
1740 | + ;taskman entry/startup option, HLDP defined in menu entry, |
1741 | +"RTN","HLCSTCP",7,0) |
1742 | + Q:'$D(HLDP) |
1743 | +"RTN","HLCSTCP",8,0) |
1744 | + N HLCSOUT,HLDBACK,HLDBSIZE,HLDREAD,HLDRETR,HLRETRA,HLDWAIT,HLOS,HLTCPADD,HLTCPCS,HLTCPLNK,HLTCPORT,HLTCPRET,HLCSFAIL |
1745 | +"RTN","HLCSTCP",9,0) |
1746 | + ;HLCSOUT= 1-error |
1747 | +"RTN","HLCSTCP",10,0) |
1748 | + I '$$INIT D EXITS("Init Error") Q |
1749 | +"RTN","HLCSTCP",11,0) |
1750 | + ; Start the client |
1751 | +"RTN","HLCSTCP",12,0) |
1752 | + I $G(HLTCPCS)="C" D Q |
1753 | +"RTN","HLCSTCP",13,0) |
1754 | + . ; identify process for ^%SY |
1755 | +"RTN","HLCSTCP",14,0) |
1756 | + . D SETNM^%ZOSV($E("HLClnt:"_HLDP,1,15)) |
1757 | +"RTN","HLCSTCP",15,0) |
1758 | + . D ST1 |
1759 | +"RTN","HLCSTCP",16,0) |
1760 | + . F D ^HLCSTCP2 Q:$$STOP!$G(HLCSOUT) |
1761 | +"RTN","HLCSTCP",17,0) |
1762 | + . I $G(HLCSOUT)=1 D MON("Error") H 1 Q |
1763 | +"RTN","HLCSTCP",18,0) |
1764 | + . I $G(HLCSOUT)=2 D EXITS("Inactive") Q |
1765 | +"RTN","HLCSTCP",19,0) |
1766 | + . D EXITS("Shutdown") |
1767 | +"RTN","HLCSTCP",20,0) |
1768 | + ; |
1769 | +"RTN","HLCSTCP",21,0) |
1770 | + ; identify process for ^%SY |
1771 | +"RTN","HLCSTCP",22,0) |
1772 | + D SETNM^%ZOSV($E("HLSrv:"_HLDP,1,15)) |
1773 | +"RTN","HLCSTCP",23,0) |
1774 | + ;HLCSFAIL=1 port failed to open |
1775 | +"RTN","HLCSTCP",24,0) |
1776 | + S HLCSFAIL=1 |
1777 | +"RTN","HLCSTCP",25,0) |
1778 | + ;single threaded listener |
1779 | +"RTN","HLCSTCP",26,0) |
1780 | + I $G(HLTCPCS)="S" D Q |
1781 | +"RTN","HLCSTCP",27,0) |
1782 | + . D ST1,MON("Listen"),LISTEN^%ZISTCP(HLTCPORT,"SERVER^HLCSTCP("""_HLDP_""")","S ZISQUIT=$$STOP^HLCSTCP()") |
1783 | +"RTN","HLCSTCP",28,0) |
1784 | + . ;couldn't open listener port |
1785 | +"RTN","HLCSTCP",29,0) |
1786 | + . I HLCSFAIL D EXITS("Openfail") Q |
1787 | +"RTN","HLCSTCP",30,0) |
1788 | + ; |
1789 | +"RTN","HLCSTCP",31,0) |
1790 | + ;multi-threaded listener (OpenM or GT.M) |
1791 | +"RTN","HLCSTCP",32,0) |
1792 | + I $G(HLTCPCS)="M",(^%ZOSF("OS")["OpenM")!(^%ZOSF("OS")["GT.M") D Q |
1793 | +"RTN","HLCSTCP",33,0) |
1794 | + . D ST1,MON("Listen"),LISTEN^%ZISTCPS(HLTCPORT,"SERVERS^HLCSTCP("""_HLDP_""")") |
1795 | +"RTN","HLCSTCP",34,0) |
1796 | + Q |
1797 | +"RTN","HLCSTCP",35,0) |
1798 | + ; |
1799 | +"RTN","HLCSTCP",36,0) |
1800 | +SERVER(HLDP) ; single server using Taskman |
1801 | +"RTN","HLCSTCP",37,0) |
1802 | + S HLCSFAIL=0 |
1803 | +"RTN","HLCSTCP",38,0) |
1804 | + I '$$INIT D EXITS("Init error") Q |
1805 | +"RTN","HLCSTCP",39,0) |
1806 | + D ^HLCSTCP1 |
1807 | +"RTN","HLCSTCP",40,0) |
1808 | + I $$STOP D CLOSE^%ZISTCP,EXITS("Shutdown") S IO("C")="" Q |
1809 | +"RTN","HLCSTCP",41,0) |
1810 | + Q:$G(HLCSOUT)=1 |
1811 | +"RTN","HLCSTCP",42,0) |
1812 | + D MON("Idle") |
1813 | +"RTN","HLCSTCP",43,0) |
1814 | + Q |
1815 | +"RTN","HLCSTCP",44,0) |
1816 | + ; |
1817 | +"RTN","HLCSTCP",45,0) |
1818 | +SERVERS(HLDP) ; Multi-threaded server using Taskman |
1819 | +"RTN","HLCSTCP",46,0) |
1820 | + I '$$INIT D EXITS("Init error") Q |
1821 | +"RTN","HLCSTCP",47,0) |
1822 | + G LISTEN |
1823 | +"RTN","HLCSTCP",48,0) |
1824 | + ; |
1825 | +"RTN","HLCSTCP",49,0) |
1826 | + ;multiple process servers, called from an external utility |
1827 | +"RTN","HLCSTCP",50,0) |
1828 | +MSM ;MSM entry point, called from User-Defined Services |
1829 | +"RTN","HLCSTCP",51,0) |
1830 | + ;HLDP=ien in the HL LOWER LEVEL PROTOCOL PARAMETER file for the |
1831 | +"RTN","HLCSTCP",52,0) |
1832 | + ;HL7 Multi-Threaded SERVER |
1833 | +"RTN","HLCSTCP",53,0) |
1834 | + S (IO,IO(0))=$P |
1835 | +"RTN","HLCSTCP",54,0) |
1836 | + G LISTEN |
1837 | +"RTN","HLCSTCP",55,0) |
1838 | + ; |
1839 | +"RTN","HLCSTCP",56,0) |
1840 | +CACHEVMS(%) ;Cache'/VMS tcpip/ucx entry point, called from HLSEVEN.COM file, |
1841 | +"RTN","HLCSTCP",57,0) |
1842 | + ;listener, % = HLDP |
1843 | +"RTN","HLCSTCP",58,0) |
1844 | + I $G(%)="" D ^%ZTER Q |
1845 | +"RTN","HLCSTCP",59,0) |
1846 | + S (IO,IO(0))="SYS$NET",HLDP=% |
1847 | +"RTN","HLCSTCP",60,0) |
1848 | + ; **Cache'/VMS specific code** |
1849 | +"RTN","HLCSTCP",61,0) |
1850 | + O IO::5 E D MON("Openfail") Q |
1851 | +"RTN","HLCSTCP",62,0) |
1852 | + X "U IO:(::""-M"")" ;Packet mode like DSM |
1853 | +"RTN","HLCSTCP",63,0) |
1854 | + D LISTEN C IO Q |
1855 | +"RTN","HLCSTCP",64,0) |
1856 | + ; |
1857 | +"RTN","HLCSTCP",65,0) |
1858 | +EN ;vms ucx entry point, called from HLSEVEN.COM file, |
1859 | +"RTN","HLCSTCP",66,0) |
1860 | + ;listener, % = device^HLDP |
1861 | +"RTN","HLCSTCP",67,0) |
1862 | + I $G(%)="" D ^%ZTER Q |
1863 | +"RTN","HLCSTCP",68,0) |
1864 | + S (IO,IO(0))="SYS$NET",HLDP=$P(%,"^",2) |
1865 | +"RTN","HLCSTCP",69,0) |
1866 | + ; **VMS specific code, need to share device** |
1867 | +"RTN","HLCSTCP",70,0) |
1868 | + X "O IO:(TCPDEV):60" E D MON("Openfail") Q |
1869 | +"RTN","HLCSTCP",71,0) |
1870 | +LISTEN ; |
1871 | +"RTN","HLCSTCP",72,0) |
1872 | + N HLLSTN,HLCSOUT,HLDBACK,HLDBSIZE,HLDREAD,HLDRETR,HLRETRA,HLDWAIT,HLOS,HLTCPADD,HLTCPCS,HLTCPLNK,HLTCPORT,HLTCPRET,HLCSFAIL |
1873 | +"RTN","HLCSTCP",73,0) |
1874 | + I '$$INIT D ^%ZTER Q |
1875 | +"RTN","HLCSTCP",74,0) |
1876 | + ; identify process for ^%SY |
1877 | +"RTN","HLCSTCP",75,0) |
1878 | + D SETNM^%ZOSV($E("HLSrv:"_HLDP,1,15)) |
1879 | +"RTN","HLCSTCP",76,0) |
1880 | + ;HLLSTN used to identify a listener to tag MON |
1881 | +"RTN","HLCSTCP",77,0) |
1882 | + S HLLSTN=1 |
1883 | +"RTN","HLCSTCP",78,0) |
1884 | + ;increment job count, run server |
1885 | +"RTN","HLCSTCP",79,0) |
1886 | + D UPDT(1),^HLCSTCP1,EXITM |
1887 | +"RTN","HLCSTCP",80,0) |
1888 | + Q |
1889 | +"RTN","HLCSTCP",81,0) |
1890 | + ; |
1891 | +"RTN","HLCSTCP",82,0) |
1892 | +DCOPEN(HLDP) ;open direct connect - called from HLMA2 |
1893 | +"RTN","HLCSTCP",83,0) |
1894 | + Q:'$$INIT 0 |
1895 | +"RTN","HLCSTCP",84,0) |
1896 | + Q:HLTCPADD=""!(HLTCPORT="") 0 |
1897 | +"RTN","HLCSTCP",85,0) |
1898 | + Q:'$$OPEN^HLCSTCP2 0 |
1899 | +"RTN","HLCSTCP",86,0) |
1900 | + Q 1 |
1901 | +"RTN","HLCSTCP",87,0) |
1902 | + ; |
1903 | +"RTN","HLCSTCP",88,0) |
1904 | +INIT() ; Initialize Variables |
1905 | +"RTN","HLCSTCP",89,0) |
1906 | + ; HLDP should be set to the IEN or name of Logical Link, file 870 |
1907 | +"RTN","HLCSTCP",90,0) |
1908 | + S HLOS=$P($G(^%ZOSF("OS")),"^") |
1909 | +"RTN","HLCSTCP",91,0) |
1910 | + N DA,DIQUIET,DR,TMP,X,Y |
1911 | +"RTN","HLCSTCP",92,0) |
1912 | + S DIQUIET=1 |
1913 | +"RTN","HLCSTCP",93,0) |
1914 | + D DT^DICRW |
1915 | +"RTN","HLCSTCP",94,0) |
1916 | + I 'HLDP S HLDP=$O(^HLCS(870,"B",HLDP,0)) I 'HLDP Q 0 |
1917 | +"RTN","HLCSTCP",95,0) |
1918 | + S DA=HLDP |
1919 | +"RTN","HLCSTCP",96,0) |
1920 | + S DR="200.02;200.021;200.03;200.04;200.05;200.09;400.01;400.02;400.03;400.04;400.05" |
1921 | +"RTN","HLCSTCP",97,0) |
1922 | + D GETS^DIQ(870,DA,DR,"IN","TMP","TMP") |
1923 | +"RTN","HLCSTCP",98,0) |
1924 | + ; |
1925 | +"RTN","HLCSTCP",99,0) |
1926 | + I $D(TMP("DIERR")) QUIT 0 |
1927 | +"RTN","HLCSTCP",100,0) |
1928 | + ; -- re-transmit attempts |
1929 | +"RTN","HLCSTCP",101,0) |
1930 | + S HLDRETR=+$G(TMP(870,DA_",",200.02,"I")) |
1931 | +"RTN","HLCSTCP",102,0) |
1932 | + ; -- exceed re-transmit action |
1933 | +"RTN","HLCSTCP",103,0) |
1934 | + S HLRETRA=$G(TMP(870,DA_",",200.021,"I")) |
1935 | +"RTN","HLCSTCP",104,0) |
1936 | + ; -- block size |
1937 | +"RTN","HLCSTCP",105,0) |
1938 | + S HLDBSIZE=+$G(TMP(870,DA_",",200.03,"I")) |
1939 | +"RTN","HLCSTCP",106,0) |
1940 | + ; -- read timeout |
1941 | +"RTN","HLCSTCP",107,0) |
1942 | + S HLDREAD=+$G(TMP(870,DA_",",200.04,"I")) |
1943 | +"RTN","HLCSTCP",108,0) |
1944 | + ; -- ack timeout |
1945 | +"RTN","HLCSTCP",109,0) |
1946 | + S HLDBACK=+$G(TMP(870,DA_",",200.05,"I")) |
1947 | +"RTN","HLCSTCP",110,0) |
1948 | + ; -- uni-directional wait |
1949 | +"RTN","HLCSTCP",111,0) |
1950 | + S HLDWAIT=$G(TMP(870,DA_",",200.09,"I")) |
1951 | +"RTN","HLCSTCP",112,0) |
1952 | + ; -- tcp address |
1953 | +"RTN","HLCSTCP",113,0) |
1954 | + S HLTCPADD=$G(TMP(870,DA_",",400.01,"I")) |
1955 | +"RTN","HLCSTCP",114,0) |
1956 | + ; -- tcp port |
1957 | +"RTN","HLCSTCP",115,0) |
1958 | + S HLTCPORT=$G(TMP(870,DA_",",400.02,"I")) |
1959 | +"RTN","HLCSTCP",116,0) |
1960 | + ; -- tcp/ip service type |
1961 | +"RTN","HLCSTCP",117,0) |
1962 | + S HLTCPCS=$G(TMP(870,DA_",",400.03,"I")) |
1963 | +"RTN","HLCSTCP",118,0) |
1964 | + ; -- link persistence |
1965 | +"RTN","HLCSTCP",119,0) |
1966 | + S HLTCPLNK=$G(TMP(870,DA_",",400.04,"I")) |
1967 | +"RTN","HLCSTCP",120,0) |
1968 | + ; -- retention |
1969 | +"RTN","HLCSTCP",121,0) |
1970 | + S HLTCPRET=$G(TMP(870,DA_",",400.05,"I")) |
1971 | +"RTN","HLCSTCP",122,0) |
1972 | + ; |
1973 | +"RTN","HLCSTCP",123,0) |
1974 | + ; -- set defaults in case something's not set |
1975 | +"RTN","HLCSTCP",124,0) |
1976 | + S:HLDREAD=0 HLDREAD=10 |
1977 | +"RTN","HLCSTCP",125,0) |
1978 | + S:HLDBACK=0 HLDBACK=60 |
1979 | +"RTN","HLCSTCP",126,0) |
1980 | + S:HLDBSIZE=0 HLDBSIZE=245 |
1981 | +"RTN","HLCSTCP",127,0) |
1982 | + S:HLDRETR=0 HLDRETR=5 |
1983 | +"RTN","HLCSTCP",128,0) |
1984 | + S:HLTCPRET="" X=$P($$PARAM^HLCS2,U,12),HLTCPRET=$S(X:X,1:15) |
1985 | +"RTN","HLCSTCP",129,0) |
1986 | + ; |
1987 | +"RTN","HLCSTCP",130,0) |
1988 | + Q 1 |
1989 | +"RTN","HLCSTCP",131,0) |
1990 | + ; |
1991 | +"RTN","HLCSTCP",132,0) |
1992 | +ST1 ;record startup in 870 for single server |
1993 | +"RTN","HLCSTCP",133,0) |
1994 | + ;4=status 9=Time Started, 10=Time Stopped, 11=Task Number |
1995 | +"RTN","HLCSTCP",134,0) |
1996 | + ;14=Shutdown LLP, 3=LLP Online, 18=Gross Errors |
1997 | +"RTN","HLCSTCP",135,0) |
1998 | + N HLJ,X |
1999 | +"RTN","HLCSTCP",136,0) |
2000 | + F L +^HLCS(870,HLDP,0):2 Q:$T |
2001 | +"RTN","HLCSTCP",137,0) |
2002 | + S X="HLJ(870,"""_HLDP_","")" |
2003 | +"RTN","HLCSTCP",138,0) |
2004 | + S @X@(4)="Init",(@X@(10),@X@(18))="@",@X@(14)=0 |
2005 | +"RTN","HLCSTCP",139,0) |
2006 | + I HLTCPCS["C" S @X@(3)=$S(HLTCPLNK["Y":"PC",1:"NC") |
2007 | +"RTN","HLCSTCP",140,0) |
2008 | + E S @X@(3)=$S(HLTCPCS["S":"SS",HLTCPCS["M":"MS",1:"") |
2009 | +"RTN","HLCSTCP",141,0) |
2010 | + I @X@(3)'="NC" S @X@(9)=$$NOW^XLFDT |
2011 | +"RTN","HLCSTCP",142,0) |
2012 | + S:$G(ZTSK) @X@(11)=ZTSK |
2013 | +"RTN","HLCSTCP",143,0) |
2014 | + D FILE^HLDIE("","HLJ","","ST1","HLCSTCP") ;HL*1.6*109 |
2015 | +"RTN","HLCSTCP",144,0) |
2016 | + L -^HLCS(870,HLDP,0) |
2017 | +"RTN","HLCSTCP",145,0) |
2018 | + Q |
2019 | +"RTN","HLCSTCP",146,0) |
2020 | + ; |
2021 | +"RTN","HLCSTCP",147,0) |
2022 | +MON(Y) ;Display current state & check for shutdown |
2023 | +"RTN","HLCSTCP",148,0) |
2024 | + ;don't display for multiple server |
2025 | +"RTN","HLCSTCP",149,0) |
2026 | + Q:$G(HLLSTN) |
2027 | +"RTN","HLCSTCP",150,0) |
2028 | + F L +^HLCS(870,HLDP,0):2 Q:$T |
2029 | +"RTN","HLCSTCP",151,0) |
2030 | + S $P(^HLCS(870,HLDP,0),U,5)=Y |
2031 | +"RTN","HLCSTCP",152,0) |
2032 | + L -^HLCS(870,HLDP,0) |
2033 | +"RTN","HLCSTCP",153,0) |
2034 | + Q:'$D(HLTRACE) |
2035 | +"RTN","HLCSTCP",154,0) |
2036 | + N X U IO(0) |
2037 | +"RTN","HLCSTCP",155,0) |
2038 | + W !,"IN State: ",Y |
2039 | +"RTN","HLCSTCP",156,0) |
2040 | + I '$$STOP D |
2041 | +"RTN","HLCSTCP",157,0) |
2042 | + . R !,"Type Q to Quit: ",X#1:1 |
2043 | +"RTN","HLCSTCP",158,0) |
2044 | + . I $L(X),"Qq"[X S $P(^HLCS(870,HLDP,0),U,15)=1 |
2045 | +"RTN","HLCSTCP",159,0) |
2046 | + U IO |
2047 | +"RTN","HLCSTCP",160,0) |
2048 | + Q |
2049 | +"RTN","HLCSTCP",161,0) |
2050 | +UPDT(Y) ;update job count for multiple servers,X=1 increment |
2051 | +"RTN","HLCSTCP",162,0) |
2052 | + N HLJ,X |
2053 | +"RTN","HLCSTCP",163,0) |
2054 | + F L +^HLCS(870,HLDP,0):2 Q:$T |
2055 | +"RTN","HLCSTCP",164,0) |
2056 | + S X=+$P(^HLCS(870,HLDP,0),U,5),$P(^(0),U,5)=$S(Y:X+1,1:X-1)_" server" |
2057 | +"RTN","HLCSTCP",165,0) |
2058 | + ;if incrementing, set the Device Type field to Multi-Server |
2059 | +"RTN","HLCSTCP",166,0) |
2060 | + I X S HLJ(870,HLDP_",",3)="MS" D FILE^HLDIE("","HLJ","","UPDT","HLCSTCP") ;HL*1.6*109 |
2061 | +"RTN","HLCSTCP",167,0) |
2062 | + L -^HLCS(870,HLDP,0) |
2063 | +"RTN","HLCSTCP",168,0) |
2064 | + Q |
2065 | +"RTN","HLCSTCP",169,0) |
2066 | +STOP() ;stop flag set |
2067 | +"RTN","HLCSTCP",170,0) |
2068 | + N X |
2069 | +"RTN","HLCSTCP",171,0) |
2070 | + F L +^HLCS(870,HLDP,0):2 Q:$T |
2071 | +"RTN","HLCSTCP",172,0) |
2072 | + S X=+$P(^HLCS(870,HLDP,0),U,15) |
2073 | +"RTN","HLCSTCP",173,0) |
2074 | + L -^HLCS(870,HLDP,0) |
2075 | +"RTN","HLCSTCP",174,0) |
2076 | + Q X |
2077 | +"RTN","HLCSTCP",175,0) |
2078 | + ; |
2079 | +"RTN","HLCSTCP",176,0) |
2080 | +LLCNT(DP,Y,Z) ;update Logical Link counters |
2081 | +"RTN","HLCSTCP",177,0) |
2082 | + ;DP=ien of Logical Link in file 870 |
2083 | +"RTN","HLCSTCP",178,0) |
2084 | + ;Y: 1=msg rec, 2=msg proc, 3=msg to send, 4=msg sent |
2085 | +"RTN","HLCSTCP",179,0) |
2086 | + ;Z: ""=add to counter, 1=subtract from counter |
2087 | +"RTN","HLCSTCP",180,0) |
2088 | + Q:'$D(^HLCS(870,+$G(DP),0))!('$G(Y)) |
2089 | +"RTN","HLCSTCP",181,0) |
2090 | + N P,X |
2091 | +"RTN","HLCSTCP",182,0) |
2092 | + S P=$S(Y<3:"IN",1:"OUT")_" QUEUE "_$S(Y#2:"BACK",1:"FRONT")_" POINTER" |
2093 | +"RTN","HLCSTCP",183,0) |
2094 | + F L +^HLCS(870,DP,P):2 Q:$T |
2095 | +"RTN","HLCSTCP",184,0) |
2096 | + S X=+$G(^HLCS(870,DP,P)),^(P)=X+$S($G(Z):-1,1:1) |
2097 | +"RTN","HLCSTCP",185,0) |
2098 | + L -^HLCS(870,DP,P) |
2099 | +"RTN","HLCSTCP",186,0) |
2100 | + Q |
2101 | +"RTN","HLCSTCP",187,0) |
2102 | +SDFLD ; set Shutdown? field to yes |
2103 | +"RTN","HLCSTCP",188,0) |
2104 | + Q:'$G(HLDP) |
2105 | +"RTN","HLCSTCP",189,0) |
2106 | + N HLJ,X |
2107 | +"RTN","HLCSTCP",190,0) |
2108 | + F L +^HLCS(870,HLDP,0):2 Q:$T |
2109 | +"RTN","HLCSTCP",191,0) |
2110 | + ;14=Shutdown LLP? |
2111 | +"RTN","HLCSTCP",192,0) |
2112 | + S HLJ(870,HLDP_",",14)=1 |
2113 | +"RTN","HLCSTCP",193,0) |
2114 | + D FILE^HLDIE("","HLJ","","SDFLD","HLCSTCP") ;HL*1.6*109 |
2115 | +"RTN","HLCSTCP",194,0) |
2116 | + L -^HLCS(870,HLDP,0) |
2117 | +"RTN","HLCSTCP",195,0) |
2118 | + Q |
2119 | +"RTN","HLCSTCP",196,0) |
2120 | + ; |
2121 | +"RTN","HLCSTCP",197,0) |
2122 | +EXITS(Y) ; Single service shutdown and cleans up |
2123 | +"RTN","HLCSTCP",198,0) |
2124 | + N HLJ,X |
2125 | +"RTN","HLCSTCP",199,0) |
2126 | + F L +^HLCS(870,HLDP,0):2 Q:$T |
2127 | +"RTN","HLCSTCP",200,0) |
2128 | + ;4=status,10=Time Stopped,9=Time Started,11=Task Number |
2129 | +"RTN","HLCSTCP",201,0) |
2130 | + S X="HLJ(870,"""_HLDP_","")" |
2131 | +"RTN","HLCSTCP",202,0) |
2132 | + S @X@(4)=Y,@X@(11)="@" |
2133 | +"RTN","HLCSTCP",203,0) |
2134 | + S:$G(HLCSOUT)'=2 @X@(10)=$$NOW^XLFDT,@X@(9)="@" |
2135 | +"RTN","HLCSTCP",204,0) |
2136 | + D FILE^HLDIE("","HLJ","","EXITS","HLCSTCP") ; HL*1.6*109 |
2137 | +"RTN","HLCSTCP",205,0) |
2138 | + L -^HLCS(870,HLDP,0) |
2139 | +"RTN","HLCSTCP",206,0) |
2140 | + I $D(ZTQUEUED) S ZTREQ="@" |
2141 | +"RTN","HLCSTCP",207,0) |
2142 | + Q |
2143 | +"RTN","HLCSTCP",208,0) |
2144 | + ; |
2145 | +"RTN","HLCSTCP",209,0) |
2146 | +EXITM ;Multiple service shutdown and clean up |
2147 | +"RTN","HLCSTCP",210,0) |
2148 | + D UPDT(0) |
2149 | +"RTN","HLCSTCP",211,0) |
2150 | + I $D(ZTQUEUED) S ZTREQ="@" |
2151 | +"RTN","HLCSTCP",212,0) |
2152 | + Q |
2153 | +"RTN","HLCSTCP1") |
2154 | +0^16^B29662559 |
2155 | +"RTN","HLCSTCP1",1,0) |
2156 | +HLCSTCP1 ;SFIRMFO/RSD MSC/JDA - BI-DIRECTIONAL TCP ;13APR2009 |
2157 | +"RTN","HLCSTCP1",2,0) |
2158 | + ;;1.6;HEALTH LEVEL SEVEN;**19,43,57,64,71,MSC**;JUL 17,1995 |
2159 | +"RTN","HLCSTCP1",3,0) |
2160 | + ;Receiver |
2161 | +"RTN","HLCSTCP1",4,0) |
2162 | + ;connection is initiated by sender and listener accepts connection |
2163 | +"RTN","HLCSTCP1",5,0) |
2164 | + ;and calls this routine |
2165 | +"RTN","HLCSTCP1",6,0) |
2166 | + ; |
2167 | +"RTN","HLCSTCP1",7,0) |
2168 | + N $ETRAP,$ESTACK S $ETRAP="D ERROR^HLCSTCP1" |
2169 | +"RTN","HLCSTCP1",8,0) |
2170 | + N HLMIEN,HLASTMSG |
2171 | +"RTN","HLCSTCP1",9,0) |
2172 | + D MON^HLCSTCP("Open") |
2173 | +"RTN","HLCSTCP1",10,0) |
2174 | + K ^TMP("HLCSTCP",$J,0) |
2175 | +"RTN","HLCSTCP1",11,0) |
2176 | + S HLMIEN=0,HLASTMSG="" |
2177 | +"RTN","HLCSTCP1",12,0) |
2178 | + F D Q:$$STOP^HLCSTCP I 'HLMIEN D MON^HLCSTCP("Idle") H 3 |
2179 | +"RTN","HLCSTCP1",13,0) |
2180 | + . S HLMIEN=$$READ |
2181 | +"RTN","HLCSTCP1",14,0) |
2182 | + . Q:'HLMIEN |
2183 | +"RTN","HLCSTCP1",15,0) |
2184 | + . D PROCESS |
2185 | +"RTN","HLCSTCP1",16,0) |
2186 | + Q |
2187 | +"RTN","HLCSTCP1",17,0) |
2188 | + ; |
2189 | +"RTN","HLCSTCP1",18,0) |
2190 | +PROCESS ;check message and reply |
2191 | +"RTN","HLCSTCP1",19,0) |
2192 | + ;HLDP=LL in 870, update monitor, received msg. |
2193 | +"RTN","HLCSTCP1",20,0) |
2194 | + N HLTCP,HLTCPI,HLTCPO |
2195 | +"RTN","HLCSTCP1",21,0) |
2196 | + S HLTCP="",HLTCPO=HLDP,HLTCPI=+HLMIEN |
2197 | +"RTN","HLCSTCP1",22,0) |
2198 | + ;update monitor, msg. received |
2199 | +"RTN","HLCSTCP1",23,0) |
2200 | + D LLCNT^HLCSTCP(HLDP,1) |
2201 | +"RTN","HLCSTCP1",24,0) |
2202 | + D NEW^HLTP3(HLMIEN) |
2203 | +"RTN","HLCSTCP1",25,0) |
2204 | + ;update monitor, msg. processed |
2205 | +"RTN","HLCSTCP1",26,0) |
2206 | + D LLCNT^HLCSTCP(HLDP,2) |
2207 | +"RTN","HLCSTCP1",27,0) |
2208 | + Q |
2209 | +"RTN","HLCSTCP1",28,0) |
2210 | + ; |
2211 | +"RTN","HLCSTCP1",29,0) |
2212 | +READ() ;read 1 message, returns ien in 773^ien in 772 for message |
2213 | +"RTN","HLCSTCP1",30,0) |
2214 | + D MON^HLCSTCP("Reading") |
2215 | +"RTN","HLCSTCP1",31,0) |
2216 | + N HLDB,HLDT,HLDEND,HLACKWT,HLDSTRT,HLHDR,HLIND1,HLINE,HLMSG,HLRDOUT,HLRS,HLX,X |
2217 | +"RTN","HLCSTCP1",32,0) |
2218 | + ;HLDSTRT=start char., HLDEND=end char., HLRS=record seperator |
2219 | +"RTN","HLCSTCP1",33,0) |
2220 | + S HLDSTRT=$C(11),HLDEND=$C(28),HLRS=$C(13) |
2221 | +"RTN","HLCSTCP1",34,0) |
2222 | + ;HLRDOUT=exit read loop, HLINE=line count, HLIND1=ien 773^ien 772 |
2223 | +"RTN","HLCSTCP1",35,0) |
2224 | + ;HLHDR=have a header, ^TMP(...)=excess from last read, HLACKWT=wait for ack |
2225 | +"RTN","HLCSTCP1",36,0) |
2226 | + S (HLRDOUT,HLINE,HLIND1,HLHDR)=0,HLX=$G(^TMP("HLCSTCP",$J,0)),HLACKWT=HLDBACK |
2227 | +"RTN","HLCSTCP1",37,0) |
2228 | + K ^TMP("HLCSTCP",$J,0) |
2229 | +"RTN","HLCSTCP1",38,0) |
2230 | + F D RDBLK Q:HLRDOUT |
2231 | +"RTN","HLCSTCP1",39,0) |
2232 | + ;save any excess for next time |
2233 | +"RTN","HLCSTCP1",40,0) |
2234 | + S:$L(HLX) ^TMP("HLCSTCP",$J,0)=HLX |
2235 | +"RTN","HLCSTCP1",41,0) |
2236 | + I +HLIND1,'$P(HLIND1,U,3) D DELMSG(HLIND1) S HLIND1=0 |
2237 | +"RTN","HLCSTCP1",42,0) |
2238 | + Q HLIND1 |
2239 | +"RTN","HLCSTCP1",43,0) |
2240 | + ; |
2241 | +"RTN","HLCSTCP1",44,0) |
2242 | +RDBLK S HLDB=HLDBSIZE-$L(HLX) |
2243 | +"RTN","HLCSTCP1",45,0) |
2244 | + U IO D:$D ERROR R X#HLDB:HLDREAD ; MSC/JDA added check against $d |
2245 | +"RTN","HLCSTCP1",46,0) |
2246 | + ; timedout or error, check ack timeout, clean up |
2247 | +"RTN","HLCSTCP1",47,0) |
2248 | + I '$T,X="",HLX="" S HLACKWT=HLACKWT-HLDREAD D:HLACKWT<0&'HLHDR CLEAN Q |
2249 | +"RTN","HLCSTCP1",48,0) |
2250 | + ;data stream: <sb>dddd<cr><eb><cr> |
2251 | +"RTN","HLCSTCP1",49,0) |
2252 | + ;add incoming line to what wasn't processed in last read |
2253 | +"RTN","HLCSTCP1",50,0) |
2254 | + S HLX=$G(HLX)_X |
2255 | +"RTN","HLCSTCP1",51,0) |
2256 | + ; look for segment= <CR> |
2257 | +"RTN","HLCSTCP1",52,0) |
2258 | + F Q:HLX'[HLRS D Q:HLRDOUT |
2259 | +"RTN","HLCSTCP1",53,0) |
2260 | + . ; Get the first piece, save the rest of the line |
2261 | +"RTN","HLCSTCP1",54,0) |
2262 | + . S HLINE=HLINE+1,HLMSG(HLINE,0)=$P(HLX,HLRS),HLX=$P(HLX,HLRS,2,999) |
2263 | +"RTN","HLCSTCP1",55,0) |
2264 | + . ; check for start block, Quit if no ien |
2265 | +"RTN","HLCSTCP1",56,0) |
2266 | + . I HLMSG(HLINE,0)[HLDSTRT!HLHDR D Q |
2267 | +"RTN","HLCSTCP1",57,0) |
2268 | + .. D:HLMSG(HLINE,0)[HLDSTRT |
2269 | +"RTN","HLCSTCP1",58,0) |
2270 | + ... S X=$L(HLMSG(HLINE,0),HLDSTRT) |
2271 | +"RTN","HLCSTCP1",59,0) |
2272 | + ... S:X>2 HLMSG(HLINE,0)=HLDSTRT_$P(HLMSG(HLINE,0),HLDSTRT,X) |
2273 | +"RTN","HLCSTCP1",60,0) |
2274 | + ... S HLMSG(HLINE,0)=$P(HLMSG(HLINE,0),HLDSTRT,2) |
2275 | +"RTN","HLCSTCP1",61,0) |
2276 | + ... D RESET:(HLINE>1) |
2277 | +"RTN","HLCSTCP1",62,0) |
2278 | + .. ;ping message |
2279 | +"RTN","HLCSTCP1",63,0) |
2280 | + .. I $E(HLMSG(1,0),1,9)="MSH^PING^" D PING Q |
2281 | +"RTN","HLCSTCP1",64,0) |
2282 | + .. ; get next ien to store |
2283 | +"RTN","HLCSTCP1",65,0) |
2284 | + .. D MIEN |
2285 | +"RTN","HLCSTCP1",66,0) |
2286 | + .. K HLMSG |
2287 | +"RTN","HLCSTCP1",67,0) |
2288 | + .. S (HLINE,HLHDR)=0 |
2289 | +"RTN","HLCSTCP1",68,0) |
2290 | + . ; check for end block; HLMSG(HLINE) = <eb><cr> |
2291 | +"RTN","HLCSTCP1",69,0) |
2292 | + . I HLMSG(HLINE,0)[HLDEND D |
2293 | +"RTN","HLCSTCP1",70,0) |
2294 | + .. ;no msg. ien |
2295 | +"RTN","HLCSTCP1",71,0) |
2296 | + .. Q:'HLIND1 |
2297 | +"RTN","HLCSTCP1",72,0) |
2298 | + .. ; Kill just the last line |
2299 | +"RTN","HLCSTCP1",73,0) |
2300 | + .. K HLMSG(HLINE,0) S HLINE=HLINE-1 |
2301 | +"RTN","HLCSTCP1",74,0) |
2302 | + .. ; move into 772 |
2303 | +"RTN","HLCSTCP1",75,0) |
2304 | + .. D SAVE(.HLMSG,"^HL(772,"_+$P(HLIND1,U,2)_",""IN"")") |
2305 | +"RTN","HLCSTCP1",76,0) |
2306 | + .. ;mark that end block has been received |
2307 | +"RTN","HLCSTCP1",77,0) |
2308 | + .. ;HLIND1=ien in 773^ien in 772^1 if end block was received |
2309 | +"RTN","HLCSTCP1",78,0) |
2310 | + .. S $P(HLIND1,U,3)=1 |
2311 | +"RTN","HLCSTCP1",79,0) |
2312 | + .. ;reset variables for next message |
2313 | +"RTN","HLCSTCP1",80,0) |
2314 | + .. D CLEAN |
2315 | +"RTN","HLCSTCP1",81,0) |
2316 | + . ;add blank line for carriage return |
2317 | +"RTN","HLCSTCP1",82,0) |
2318 | + . I HLINE'=0,HLMSG(HLINE,0)]"" S HLINE=HLINE+1,HLMSG(HLINE,0)="" |
2319 | +"RTN","HLCSTCP1",83,0) |
2320 | + Q:HLRDOUT |
2321 | +"RTN","HLCSTCP1",84,0) |
2322 | + ;If the line is long and no <CR> move it into the array. |
2323 | +"RTN","HLCSTCP1",85,0) |
2324 | + I ($L(HLX)=HLDBSIZE),(HLX'[HLRS),(HLX'[HLDEND),(HLX'[HLDSTRT) D Q |
2325 | +"RTN","HLCSTCP1",86,0) |
2326 | + . S HLINE=HLINE+1,HLMSG(HLINE,0)=HLX,HLX="" |
2327 | +"RTN","HLCSTCP1",87,0) |
2328 | + ;have start block but no record seperator |
2329 | +"RTN","HLCSTCP1",88,0) |
2330 | + I HLX[HLDSTRT D Q |
2331 | +"RTN","HLCSTCP1",89,0) |
2332 | + . ;check for more than 1 start block |
2333 | +"RTN","HLCSTCP1",90,0) |
2334 | + . S X=$L(HLX,HLDSTRT) S:X>2 HLX=HLDSTRT_$P(HLX,HLDSTRT,X) |
2335 | +"RTN","HLCSTCP1",91,0) |
2336 | + . S:$L($P(HLX,HLDSTRT,2))>8 HLINE=HLINE+1,HLMSG(HLINE,0)=$P(HLX,HLDSTRT,2),HLX="",HLHDR=1 |
2337 | +"RTN","HLCSTCP1",92,0) |
2338 | + . D RESET:(HLHDR&(HLINE>1)) |
2339 | +"RTN","HLCSTCP1",93,0) |
2340 | + ;if no ien, then we don't have start block, reset |
2341 | +"RTN","HLCSTCP1",94,0) |
2342 | + I 'HLIND1 D CLEAN Q |
2343 | +"RTN","HLCSTCP1",95,0) |
2344 | + ; big message-merge from local to global every 100 lines |
2345 | +"RTN","HLCSTCP1",96,0) |
2346 | + I (HLINE-$O(HLMSG(0)))>100 D |
2347 | +"RTN","HLCSTCP1",97,0) |
2348 | + . M ^HL(772,+$P(HLIND1,U,2),"IN")=HLMSG |
2349 | +"RTN","HLCSTCP1",98,0) |
2350 | + . ; reset working array |
2351 | +"RTN","HLCSTCP1",99,0) |
2352 | + . K HLMSG |
2353 | +"RTN","HLCSTCP1",100,0) |
2354 | + Q |
2355 | +"RTN","HLCSTCP1",101,0) |
2356 | + ; |
2357 | +"RTN","HLCSTCP1",102,0) |
2358 | +SAVE(SRC,DEST) ;save into global & set top node |
2359 | +"RTN","HLCSTCP1",103,0) |
2360 | + ;SRC=source array (passed by ref.), DEST=destination global |
2361 | +"RTN","HLCSTCP1",104,0) |
2362 | + M @DEST=SRC |
2363 | +"RTN","HLCSTCP1",105,0) |
2364 | + S @DEST@(0)="^^"_HLINE_"^"_HLINE_"^"_DT_"^" |
2365 | +"RTN","HLCSTCP1",106,0) |
2366 | + Q |
2367 | +"RTN","HLCSTCP1",107,0) |
2368 | + ; |
2369 | +"RTN","HLCSTCP1",108,0) |
2370 | +DELMSG(HLMAMT) ;delete message from Message Administration/Message Text files. |
2371 | +"RTN","HLCSTCP1",109,0) |
2372 | + N DIK,DA |
2373 | +"RTN","HLCSTCP1",110,0) |
2374 | + S DA=+HLMAMT,DIK="^HLMA(" |
2375 | +"RTN","HLCSTCP1",111,0) |
2376 | + D ^DIK |
2377 | +"RTN","HLCSTCP1",112,0) |
2378 | + S DA=$P(HLMAMT,U,2),DIK="^HL(772," |
2379 | +"RTN","HLCSTCP1",113,0) |
2380 | + D ^DIK |
2381 | +"RTN","HLCSTCP1",114,0) |
2382 | + Q |
2383 | +"RTN","HLCSTCP1",115,0) |
2384 | +MIEN ; sets HLIND1=ien in 773^ien in 772 for message |
2385 | +"RTN","HLCSTCP1",116,0) |
2386 | + N HLMID,X |
2387 | +"RTN","HLCSTCP1",117,0) |
2388 | + I HLIND1 D |
2389 | +"RTN","HLCSTCP1",118,0) |
2390 | + . S:'$G(^HLMA(+HLIND1,0)) HLIND1=0 |
2391 | +"RTN","HLCSTCP1",119,0) |
2392 | + . S:'$G(^HL(772,+$P(HLIND1,U,2),0)) HLIND1=0 |
2393 | +"RTN","HLCSTCP1",120,0) |
2394 | + ;msg. id is 10th of MSH & 11th for BSH or FSH |
2395 | +"RTN","HLCSTCP1",121,0) |
2396 | + S X=10+($E(HLMSG(1,0),1,3)'="MSH"),HLMID=$$PMSH(.HLMSG,X) |
2397 | +"RTN","HLCSTCP1",122,0) |
2398 | + ;if HLIND1 is set, kill old message, use HLIND1 for new |
2399 | +"RTN","HLCSTCP1",123,0) |
2400 | + ;message, it means we never got end block for 1st msg. |
2401 | +"RTN","HLCSTCP1",124,0) |
2402 | + I HLIND1 D Q |
2403 | +"RTN","HLCSTCP1",125,0) |
2404 | + . ;get pointer to 772, kill header |
2405 | +"RTN","HLCSTCP1",126,0) |
2406 | + . K ^HLMA(+HLIND1,"MSH") |
2407 | +"RTN","HLCSTCP1",127,0) |
2408 | + . I $D(^HL(772,+$P(HLIND1,U,2),"IN")) K ^("IN") |
2409 | +"RTN","HLCSTCP1",128,0) |
2410 | + . S X=$$MAID^HLTF(+HLIND1,HLMID) |
2411 | +"RTN","HLCSTCP1",129,0) |
2412 | + . D SAVE(.HLMSG,"^HLMA("_+HLIND1_",""MSH"")") |
2413 | +"RTN","HLCSTCP1",130,0) |
2414 | + . S:$P(HLIND1,U,3) $P(HLIND1,U,3)="" |
2415 | +"RTN","HLCSTCP1",131,0) |
2416 | + D TCP^HLTF(.HLMID,.X,.HLDT) |
2417 | +"RTN","HLCSTCP1",132,0) |
2418 | + I 'X D Q |
2419 | +"RTN","HLCSTCP1",133,0) |
2420 | + . ;error - record and reset array |
2421 | +"RTN","HLCSTCP1",134,0) |
2422 | + . ;killing HLLSTN will allow MON^HLCSTCP to work with multi-server |
2423 | +"RTN","HLCSTCP1",135,0) |
2424 | + . D CLEAN K HLLSTN |
2425 | +"RTN","HLCSTCP1",136,0) |
2426 | + . ;error 100=LLP Could not Enqueue the Message, reset array |
2427 | +"RTN","HLCSTCP1",137,0) |
2428 | + . D MONITOR^HLCSDR2(100,19,HLDP),MON^HLCSTCP("ERROR") H 30 |
2429 | +"RTN","HLCSTCP1",138,0) |
2430 | + ;HLIND1=ien in 773^ien in 772 |
2431 | +"RTN","HLCSTCP1",139,0) |
2432 | + S HLIND1=X_U_+$G(^HLMA(X,0)) |
2433 | +"RTN","HLCSTCP1",140,0) |
2434 | + ;save MSH into 773 |
2435 | +"RTN","HLCSTCP1",141,0) |
2436 | + D SAVE(.HLMSG,"^HLMA("_+HLIND1_",""MSH"")") |
2437 | +"RTN","HLCSTCP1",142,0) |
2438 | + Q |
2439 | +"RTN","HLCSTCP1",143,0) |
2440 | + ; |
2441 | +"RTN","HLCSTCP1",144,0) |
2442 | +PMSH(MSH,P) ;get piece P from MSH array (passed by ref.) |
2443 | +"RTN","HLCSTCP1",145,0) |
2444 | + N FS,I,L,L1,L2,X,Y |
2445 | +"RTN","HLCSTCP1",146,0) |
2446 | + S FS=$E(MSH(1,0),4),(L2,Y)=0,X="" |
2447 | +"RTN","HLCSTCP1",147,0) |
2448 | + F I=1:1 S L1=$L($G(MSH(I,0)),FS),L=L1+Y-1 D Q:$L(X)!'$D(MSH(I,0)) |
2449 | +"RTN","HLCSTCP1",148,0) |
2450 | + . S:L1=1 L=L+1 |
2451 | +"RTN","HLCSTCP1",149,0) |
2452 | + . S:P'>L X=$P($G(MSH(I-1,0)),FS,P-L2)_$P($G(MSH(I,0)),FS,(P-Y)) |
2453 | +"RTN","HLCSTCP1",150,0) |
2454 | + . S L2=Y,Y=L |
2455 | +"RTN","HLCSTCP1",151,0) |
2456 | + Q X |
2457 | +"RTN","HLCSTCP1",152,0) |
2458 | + ; |
2459 | +"RTN","HLCSTCP1",153,0) |
2460 | +PING ;process PING message |
2461 | +"RTN","HLCSTCP1",154,0) |
2462 | + S X=HLMSG(1,0) |
2463 | +"RTN","HLCSTCP1",155,0) |
2464 | + I X[HLDEND U IO W X,! |
2465 | +"RTN","HLCSTCP1",156,0) |
2466 | +CLEAN ;reset var. for next message |
2467 | +"RTN","HLCSTCP1",157,0) |
2468 | + K HLMSG |
2469 | +"RTN","HLCSTCP1",158,0) |
2470 | + S HLINE=0,HLRDOUT=1 |
2471 | +"RTN","HLCSTCP1",159,0) |
2472 | + Q |
2473 | +"RTN","HLCSTCP1",160,0) |
2474 | + ; |
2475 | +"RTN","HLCSTCP1",161,0) |
2476 | +ERROR ; Error trap for disconnect error and return back to the read loop. |
2477 | +"RTN","HLCSTCP1",162,0) |
2478 | + S $ETRAP="D UNWIND^%ZTER" |
2479 | +"RTN","HLCSTCP1",163,0) |
2480 | + I $$EC^%ZOSV["READ"!($$EC^%ZOSV["NOTOPEN")!($$EC^%ZOSV["DEVNOTOPN") D UNWIND^%ZTER Q |
2481 | +"RTN","HLCSTCP1",164,0) |
2482 | + I $$EC^%ZOSV["WRITE" D CC("Wr-err") D UNWIND^%ZTER Q |
2483 | +"RTN","HLCSTCP1",165,0) |
2484 | + S HLCSOUT=1 D ^%ZTER,CC("Error") |
2485 | +"RTN","HLCSTCP1",166,0) |
2486 | + D UNWIND^%ZTER |
2487 | +"RTN","HLCSTCP1",167,0) |
2488 | + Q |
2489 | +"RTN","HLCSTCP1",168,0) |
2490 | + ; |
2491 | +"RTN","HLCSTCP1",169,0) |
2492 | +CC(X) ;cleanup and close |
2493 | +"RTN","HLCSTCP1",170,0) |
2494 | + D MON^HLCSTCP(X) |
2495 | +"RTN","HLCSTCP1",171,0) |
2496 | + H 2 |
2497 | +"RTN","HLCSTCP1",172,0) |
2498 | + Q |
2499 | +"RTN","HLCSTCP1",173,0) |
2500 | +RESET ;reset info as a result of no end block |
2501 | +"RTN","HLCSTCP1",174,0) |
2502 | + N % |
2503 | +"RTN","HLCSTCP1",175,0) |
2504 | + S HLMSG(1,0)=HLMSG(HLINE,0) |
2505 | +"RTN","HLCSTCP1",176,0) |
2506 | + F %=2:1:HLINE K HLMSG(%,0) |
2507 | +"RTN","HLCSTCP1",177,0) |
2508 | + S HLINE=1 |
2509 | +"RTN","HLCSTCP1",178,0) |
2510 | + Q |
2511 | +"RTN","MAGDMEDL") |
2512 | +0^36^B3132920 |
2513 | +"RTN","MAGDMEDL",1,0) |
2514 | +MAGDMEDL ;WOIFO/LB,MSC/JDA - Routine to look up entries in the Medicine files ;27APR2009 |
2515 | +"RTN","MAGDMEDL",2,0) |
2516 | + ;;3.0;IMAGING;**MSC**;Mar 01, 2002 |
2517 | +"RTN","MAGDMEDL",3,0) |
2518 | + ;; +---------------------------------------------------------------+ |
2519 | +"RTN","MAGDMEDL",4,0) |
2520 | + ;; | Property of the US Government. | |
2521 | +"RTN","MAGDMEDL",5,0) |
2522 | + ;; | No permission to copy or redistribute this software is given. | |
2523 | +"RTN","MAGDMEDL",6,0) |
2524 | + ;; | Use of unreleased versions of this software requires the user | |
2525 | +"RTN","MAGDMEDL",7,0) |
2526 | + ;; | to execute a written test agreement with the VistA Imaging | |
2527 | +"RTN","MAGDMEDL",8,0) |
2528 | + ;; | Development Office of the Department of Veterans Affairs, | |
2529 | +"RTN","MAGDMEDL",9,0) |
2530 | + ;; | telephone (301) 734-0100. | |
2531 | +"RTN","MAGDMEDL",10,0) |
2532 | + ;; | | |
2533 | +"RTN","MAGDMEDL",11,0) |
2534 | + ;; | The Food and Drug Administration classifies this software as | |
2535 | +"RTN","MAGDMEDL",12,0) |
2536 | + ;; | a medical device. As such, it may not be changed in any way. | |
2537 | +"RTN","MAGDMEDL",13,0) |
2538 | + ;; | Modifications to this software may result in an adulterated | |
2539 | +"RTN","MAGDMEDL",14,0) |
2540 | + ;; | medical device under 21CFR820, the use of which is considered | |
2541 | +"RTN","MAGDMEDL",15,0) |
2542 | + ;; | to be a violation of US Federal Statutes. | |
2543 | +"RTN","MAGDMEDL",16,0) |
2544 | + ;; +---------------------------------------------------------------+ |
2545 | +"RTN","MAGDMEDL",17,0) |
2546 | + ;; |
2547 | +"RTN","MAGDMEDL",18,0) |
2548 | + Q |
2549 | +"RTN","MAGDMEDL",19,0) |
2550 | +SELECT(ITEM,ARRAY) ; |
2551 | +"RTN","MAGDMEDL",20,0) |
2552 | + ; |
2553 | +"RTN","MAGDMEDL",21,0) |
2554 | +SELECT2 |
2555 | +"RTN","MAGDMEDL",22,0) |
2556 | + N CNT,DIR,DIROUT,DIRUT,ENTRY |
2557 | +"RTN","MAGDMEDL",23,0) |
2558 | + S CNT=+ARRAY |
2559 | +"RTN","MAGDMEDL",24,0) |
2560 | + I 'CNT Q 0 |
2561 | +"RTN","MAGDMEDL",25,0) |
2562 | + S DIR(0)="NO^1:"_CNT,DIR("A")="Select a Medicine Procedure" |
2563 | +"RTN","MAGDMEDL",26,0) |
2564 | + S DIR("T")=600 D ^DIR |
2565 | +"RTN","MAGDMEDL",27,0) |
2566 | + I $D(DIRUT)!($D(DIROUT)) Q 0 |
2567 | +"RTN","MAGDMEDL",28,0) |
2568 | + S ENTRY=+Y |
2569 | +"RTN","MAGDMEDL",29,0) |
2570 | + I '$D(ARRAY(ENTRY)) D G SELECT2 |
2571 | +"RTN","MAGDMEDL",30,0) |
2572 | + . W !,"Please select an entry or use '^' to exit" |
2573 | +"RTN","MAGDMEDL",31,0) |
2574 | + W !,"You have selected ",$P(ARRAY(ENTRY),"^"),"." |
2575 | +"RTN","MAGDMEDL",32,0) |
2576 | + Q $P(ARRAY(ENTRY),"^",2) |
2577 | +"RTN","MAGDMEDL",33,0) |
2578 | + ; |
2579 | +"RTN","MAGDMEDL",34,0) |
2580 | +LOOP(ARRAY,MAGPAT,SUB,CASEDT) ; |
2581 | +"RTN","MAGDMEDL",35,0) |
2582 | + ; MAGPAT = patient's dfn |
2583 | +"RTN","MAGDMEDL",36,0) |
2584 | + ; SUB = Medicine specialty |
2585 | +"RTN","MAGDMEDL",37,0) |
2586 | + ; CASEDT = case date |
2587 | +"RTN","MAGDMEDL",38,0) |
2588 | + ; array(0)= 1 or 0 ^ # entries found ^ message text |
2589 | +"RTN","MAGDMEDL",39,0) |
2590 | + ; array(#)= formatted out dislay without delimeters |
2591 | +"RTN","MAGDMEDL",40,0) |
2592 | + ; array(#,1) = internal stored values |
2593 | +"RTN","MAGDMEDL",41,0) |
2594 | + ; Variable MAGDIMG |
2595 | +"RTN","MAGDMEDL",42,0) |
2596 | + S ARRAY(0)="0^^No entries found" |
2597 | +"RTN","MAGDMEDL",43,0) |
2598 | + Q:'MAGPAT |
2599 | +"RTN","MAGDMEDL",44,0) |
2600 | + Q:'$D(MAGMC)#10 ;Array should be available. |
2601 | +"RTN","MAGDMEDL",45,0) |
2602 | + N BEG,CDT,CNT,DATA,DIOCM,EN,END,IMG,IMAGEPTR,MAGDIMG,PATIENT,PATNME,PRCNM,SSN,THEDT,X1,X2,X |
2603 | +"RTN","MAGDMEDL",46,0) |
2604 | + N IEN,II,IOUT,MAGMC,MEDFILE |
2605 | +"RTN","MAGDMEDL",47,0) |
2606 | + Q:'$$FIND1^DIC(2,,"A",MAGPAT,"","") |
2607 | +"RTN","MAGDMEDL",48,0) |
2608 | + S PATNME=$P(^DPT(MAGPAT,0),"^"),SSN=$P(^(0),"^",9) |
2609 | +"RTN","MAGDMEDL",49,0) |
2610 | + S PATIENT=PATNME_" "_SSN |
2611 | +"RTN","MAGDMEDL",50,0) |
2612 | + I 'CASEDT S CASEDT=DT |
2613 | +"RTN","MAGDMEDL",51,0) |
2614 | + S X1=CASEDT,X2=-3 D C^%DTC S BEG=X |
2615 | +"RTN","MAGDMEDL",52,0) |
2616 | + S END=CASEDT+.9999 |
2617 | +"RTN","MAGDMEDL",53,0) |
2618 | + S CNT=0,CDT=BEG-.001 |
2619 | +"RTN","MAGDMEDL",54,0) |
2620 | + F S CDT=$O(MAGMC(MAGPAT,SUB,CDT)) Q:'CDT!(CDT>END) D |
2621 | +"RTN","MAGDMEDL",55,0) |
2622 | + . S EN=0 F S EN=$O(MAGMC(MAGPAT,SUB,CDT,EN)) Q:'EN D |
2623 | +"RTN","MAGDMEDL",56,0) |
2624 | + . . S DATA=MAGMC(MAGPAT,SUB,CDT,EN) |
2625 | +"RTN","MAGDMEDL",57,0) |
2626 | + . . S PRCNM=$P(DATA,"^",2),PRC=SUB |
2627 | +"RTN","MAGDMEDL",58,0) |
2628 | + . . S THEDT=$P(DATA,"^"),IEN=$P(DATA,"^",5) |
2629 | +"RTN","MAGDMEDL",59,0) |
2630 | + . . I $D(MAGMC(MAGPAT,SUB,CDT,EN,2005)) S (IOUT,II)=0 D |
2631 | +"RTN","MAGDMEDL",60,0) |
2632 | + . . . F S II=$O(MAGMC(MAGPAT,SUB,CDT,EN,2005,II)) Q:'II!IOUT D |
2633 | +"RTN","MAGDMEDL",61,0) |
2634 | + . . . . S IMAGEPTR=MAGMC(MAGPAT,SUB,CDT,EN,2005,II) |
2635 | +"RTN","MAGDMEDL",62,0) |
2636 | + . . . . I '$D(^MAG(2005,IMAGEPTR)) S IMAGEPTR="" Q |
2637 | +"RTN","MAGDMEDL",63,0) |
2638 | + . . . . I '$D(^MAG(2005,IMAGEPTR,"PACS")) S IMAGEPTR="",IOUT=1 |
2639 | +"RTN","MAGDMEDL",64,0) |
2640 | + . . S MEDFILE=$P(DATA,"^",4),MEDFILE=$P(MEDFILE,"MCAR(",2) |
2641 | +"RTN","MAGDMEDL",65,0) |
2642 | + . . S DICOM="" D DICOMID^MAGDMEDI(.DICOM,MEDFILE,IEN,PRC,MAGPAT) |
2643 | +"RTN","MAGDMEDL",66,0) |
2644 | + . . I DICOM'="" D |
2645 | +"RTN","MAGDMEDL",67,0) |
2646 | + . . . S DICOM=$P(DICOM,":",2) |
2647 | +"RTN","MAGDMEDL",68,0) |
2648 | + . . . S CNT=CNT+1 |
2649 | +"RTN","MAGDMEDL",69,0) |
2650 | + . . . S ARRAY(CNT)=DICOM_" "_PRCNM_", "_THEDT_" "_PATIENT |
2651 | +"RTN","MAGDMEDL",70,0) |
2652 | + . . . S ARRAY(CNT,1)=DICOM_"^"_PATNME_"^"_SSN_"^"_EN_"^"_PRCNM_"^"_PRC_"^"_$G(IMAGEPTR)_"^"_MEDFILE |
2653 | +"RTN","MAGDMEDL",71,0) |
2654 | + I CNT S ARRAY(0)="1^"_CNT_"^Medicine file entries for "_PATIENT |
2655 | +"RTN","MAGDMEDL",72,0) |
2656 | + Q |
2657 | +"RTN","MAGDMEDL",73,0) |
2658 | +DISPLAY(ARRAY) ; |
2659 | +"RTN","MAGDMEDL",74,0) |
2660 | + ; Call routine needs to pass array in the following sequence |
2661 | +"RTN","MAGDMEDL",75,0) |
2662 | + ; ARRAY(0)= 1 or 0 ^ #entries ^ message |
2663 | +"RTN","MAGDMEDL",76,0) |
2664 | + ; ARRAY(#)= Formatted output to be displayed. |
2665 | +"RTN","MAGDMEDL",77,0) |
2666 | + ; Will set the RES variable for selected entry. |
2667 | +"RTN","MAGDMEDL",78,0) |
2668 | + I '$D(ARRAY(0)) Q 0 |
2669 | +"RTN","MAGDMEDL",79,0) |
2670 | + ; If only one entry return the subscript variable. |
2671 | +"RTN","MAGDMEDL",80,0) |
2672 | + I $P(ARRAY(0),"^",2)=1 Q 1 |
2673 | +"RTN","MAGDMEDL",81,0) |
2674 | + I $P(ARRAY(0),"^")'=1 Q 0 |
2675 | +"RTN","MAGDMEDL",82,0) |
2676 | + N ENTRY,ITEM,ITEMS,MSG,OUT,OUTPUT,RES |
2677 | +"RTN","MAGDMEDL",83,0) |
2678 | + S RES=0,MSG=$P(ARRAY(0),"^",3) |
2679 | +"RTN","MAGDMEDL",84,0) |
2680 | + S IOF="#,$C(27,91,72,27,91,74,8,8,8,8)",IO=0,IOSL=24,POP=0 |
2681 | +"RTN","MAGDMEDL",85,0) |
2682 | + D HEAD |
2683 | +"RTN","MAGDMEDL",86,0) |
2684 | + S (ENTRY,OUT)=0,ITEMS=$P(ARRAY(0),"^",2) |
2685 | +"RTN","MAGDMEDL",87,0) |
2686 | + F S ENTRY=$O(ARRAY(ENTRY)) Q:'ENTRY!OUT D |
2687 | +"RTN","MAGDMEDL",88,0) |
2688 | + . S OUTPUT=$G(ARRAY(ENTRY)) |
2689 | +"RTN","MAGDMEDL",89,0) |
2690 | + . D:$Y+3>IOSL HEAD D LINE |
2691 | +"RTN","MAGDMEDL",90,0) |
2692 | + . D:$Y+3>IOSL ASKQ |
2693 | +"RTN","MAGDMEDL",91,0) |
2694 | + I 'OUT D ASKQ S RES=ITEM |
2695 | +"RTN","MAGDMEDL",92,0) |
2696 | + Q RES |
2697 | +"RTN","MAGDMEDL",93,0) |
2698 | +HEAD ; |
2699 | +"RTN","MAGDMEDL",94,0) |
2700 | + W:$Y+3>IOSL @IOF W !,MSG |
2701 | +"RTN","MAGDMEDL",95,0) |
2702 | + Q |
2703 | +"RTN","MAGDMEDL",96,0) |
2704 | +LINE ; |
2705 | +"RTN","MAGDMEDL",97,0) |
2706 | + W !,ENTRY,".) "_OUTPUT |
2707 | +"RTN","MAGDMEDL",98,0) |
2708 | + Q |
2709 | +"RTN","MAGDMEDL",99,0) |
2710 | +ASKQ ; |
2711 | +"RTN","MAGDMEDL",100,0) |
2712 | + N X,Y,DIR |
2713 | +"RTN","MAGDMEDL",101,0) |
2714 | + S DIR(0)="L^1:"_$S('ENTRY:ITEMS,1:ENTRY) |
2715 | +"RTN","MAGDMEDL",102,0) |
2716 | + S DIR("T")=600,DIR("A")="Select an entry: " D ^DIR |
2717 | +"RTN","MAGDMEDL",103,0) |
2718 | + S ITEM=+Y |
2719 | +"RTN","MAGDMEDL",104,0) |
2720 | + Q:$D(DIRUT)!($D(DIROUT)) |
2721 | +"RTN","MAGDMEDL",105,0) |
2722 | + Q:'ITEM |
2723 | +"RTN","MAGDMEDL",106,0) |
2724 | + I '$D(ARRAY(ITEM)) W !,"Please select an entry or '^' to exit" G ASKQ |
2725 | +"RTN","MAGDMEDL",107,0) |
2726 | + W !,"You have selected ",$P($G(ARRAY(ITEM)),"^") |
2727 | +"RTN","MAGDMEDL",108,0) |
2728 | + S OUT=1 |
2729 | +"RTN","MAGDMEDL",109,0) |
2730 | + Q |
2731 | +"RTN","MAGDMEDL",110,0) |
2732 | +ASKMORE() ; |
2733 | +"RTN","MAGDMEDL",111,0) |
2734 | + N DIR,DATE,X,XX,Y |
2735 | +"RTN","MAGDMEDL",112,0) |
2736 | + Q:'$D(MAGPAT) |
2737 | +"RTN","MAGDMEDL",113,0) |
2738 | + Q:'$D(SUB) |
2739 | +"RTN","MAGDMEDL",114,0) |
2740 | + S DIR(0)="Y",DIR("B")="NO" |
2741 | +"RTN","MAGDMEDL",115,0) |
2742 | + S DIR("A")="Search further" |
2743 | +"RTN","MAGDMEDL",116,0) |
2744 | + D ^DIR K DIR |
2745 | +"RTN","MAGDMEDL",117,0) |
2746 | + I 'Y Q 0 |
2747 | +"RTN","MAGDMEDL",118,0) |
2748 | + W !,"Search will include 3 days prior to the day specified." |
2749 | +"RTN","MAGDMEDL",119,0) |
2750 | + S DIR(0)="D^::EXP" D ^DIR |
2751 | +"RTN","MAGDMEDL",120,0) |
2752 | + ; Y2K compliance all calls to %DT must have either past or future date |
2753 | +"RTN","MAGDMEDL",121,0) |
2754 | + I 'Y Q 0 |
2755 | +"RTN","MAGDMEDL",122,0) |
2756 | + S DATE=Y |
2757 | +"RTN","MAGDMEDL",123,0) |
2758 | + D LOOP(.XX,MAGPAT,SUB,DATE) |
2759 | +"RTN","MAGDMEDL",124,0) |
2760 | + I $D(XX(0)),$P(XX(0),"^")=0 D Q 0 |
2761 | +"RTN","MAGDMEDL",125,0) |
2762 | + . W "No entries found." |
2763 | +"RTN","MAGDMEDL",126,0) |
2764 | + Q 1 |
2765 | +"RTN","MSCGUX53") |
2766 | +0^^B360592 |
2767 | +"RTN","MSCGUX53",1,0) |
2768 | +MSCGUX53 ;MSC/JDS - ENVIRONMENT CHECK ; ; 29 Apr 2009 1:47 PM |
2769 | +"RTN","MSCGUX53",2,0) |
2770 | + ;;**MSC**; |
2771 | +"RTN","MSCGUX53",3,0) |
2772 | + I $G(^%ZOSF("OS"))'["GT.M" Q ;Not GTM |
2773 | +"RTN","MSCGUX53",4,0) |
2774 | + I $P($ZV,"V",2)<5.3 D MESS^XPDUL("GT.M version must be 5.3 or Greater") S XPDABORT=2 |
2775 | +"RTN","MSCGUX53",5,0) |
2776 | + |
2777 | +"RTN","MSCGUX53",6,0) |
2778 | + |
2779 | +"RTN","MSCGUX53",7,0) |
2780 | + |
2781 | +"RTN","MSCXUS3A") |
2782 | +0^31^B8005003 |
2783 | +"RTN","MSCXUS3A",1,0) |
2784 | +MSCXUS3A ;SF-ISC/STAFF MSC/JDS - CHANGE UCI'S ;30APR2009 |
2785 | +"RTN","MSCXUS3A",2,0) |
2786 | + ;;8.0;KERNEL;**13,282,MSC**;Jul 10, 1995 |
2787 | +"RTN","MSCXUS3A",3,0) |
2788 | + Q |
2789 | +"RTN","MSCXUS3A",4,0) |
2790 | + ;PICK A UCI TO SWITCH TO |
2791 | +"RTN","MSCXUS3A",5,0) |
2792 | +SWITCH ;Allow users that have the UCI fIeld In there NP fIle to swItch UCI's. |
2793 | +"RTN","MSCXUS3A",6,0) |
2794 | + W !!,"Switch UCI's optIon.",! |
2795 | +"RTN","MSCXUS3A",7,0) |
2796 | + ;I $$PROGMODE^%ZOSV() W !,$C(7),"No switching UCI's In Programmer Mode." Q |
2797 | +"RTN","MSCXUS3A",8,0) |
2798 | + N DIR,X,Y,PGM,%UCI,DEF,L,USERNAME |
2799 | +"RTN","MSCXUS3A",9,0) |
2800 | + S DEF="ZU" ;DEF is default routine to swItch to. |
2801 | +"RTN","MSCXUS3A",10,0) |
2802 | +UCI Q:'$G(DUZ) S USERNAME=$P($G(^VA(200,DUZ,0)),U) Q:USERNAME="" |
2803 | +"RTN","MSCXUS3A",11,0) |
2804 | + S DIR(0)="S^"_$$NSP(USERNAME) I DIR(0)'[";" W "YOU AREN'T A USER IN ANY OTHER NAMESPACE" Q |
2805 | +"RTN","MSCXUS3A",12,0) |
2806 | + S DIR("A")="Select NAMESPACE" |
2807 | +"RTN","MSCXUS3A",13,0) |
2808 | + D ^DIR K DIR I $D(DUOUT)!$D(DTOUT)!(U[X) Q |
2809 | +"RTN","MSCXUS3A",14,0) |
2810 | +SAME I X="" Q ;Didn't select anythIng. |
2811 | +"RTN","MSCXUS3A",15,0) |
2812 | + ;D PM |
2813 | +"RTN","MSCXUS3A",16,0) |
2814 | + S (X,%UCI)=Y(0) X ^%ZOSF("UCICHECK") I 0[Y G BAD |
2815 | +"RTN","MSCXUS3A",17,0) |
2816 | + K XQY0 S Y=$O(^[%UCI]VA(200,"B",USERNAME,0)) |
2817 | +"RTN","MSCXUS3A",18,0) |
2818 | + I Y S DIR=$P($G(^[%UCI]VA(200,Y,201)),U) |
2819 | +"RTN","MSCXUS3A",19,0) |
2820 | + I DIR,$P($G(^[%UCI]DIC(19,DIR,0)),U,4)="M" S DUZ=Y,XQY=DIR,(DEF,PGM)="%MSCXUCI" G NXT |
2821 | +"RTN","MSCXUS3A",20,0) |
2822 | +BAD W !,"UCI not found!" D SHOW G UCI |
2823 | +"RTN","MSCXUS3A",21,0) |
2824 | + ; |
2825 | +"RTN","MSCXUS3A",22,0) |
2826 | +NXT ;Here we go. |
2827 | +"RTN","MSCXUS3A",23,0) |
2828 | + D C^XUSCLEAN K ^XUTL("XQ",$J),^XUTL($J),^TMP($J),^UTILITY($J) |
2829 | +"RTN","MSCXUS3A",24,0) |
2830 | + K DA G GO^%MSCXUCI |
2831 | +"RTN","MSCXUS3A",25,0) |
2832 | + ; |
2833 | +"RTN","MSCXUS3A",26,0) |
2834 | + ; |
2835 | +"RTN","MSCXUS3A",27,0) |
2836 | +SHOW W ! S I=0,UC="",X=$S($D(^VA(200,DUZ,201)):+^(201),1:0) |
2837 | +"RTN","MSCXUS3A",28,0) |
2838 | + W !,"Enter ^ to return to your current menu, or select from:" |
2839 | +"RTN","MSCXUS3A",29,0) |
2840 | + F I=0:0 S I=$O(^VA(200,DUZ,.2,I)) Q:I'>0 D |
2841 | +"RTN","MSCXUS3A",30,0) |
2842 | + . W !,?5 S UC=$G(^VA(200,DUZ,.2,I,0)),X=$P(UC,U,1),UC=$P(UC,U,2,99) |
2843 | +"RTN","MSCXUS3A",31,0) |
2844 | + . I UC'[":" W I |
2845 | +"RTN","MSCXUS3A",32,0) |
2846 | + . D PM W ?10,X X ^%ZOSF("UCICHECK") I 0[Y W " -- Not currently a valId UCI!",$C(7) Q |
2847 | +"RTN","MSCXUS3A",33,0) |
2848 | + . W:UC]"" ":"_UC |
2849 | +"RTN","MSCXUS3A",34,0) |
2850 | + . Q |
2851 | +"RTN","MSCXUS3A",35,0) |
2852 | + Q |
2853 | +"RTN","MSCXUS3A",36,0) |
2854 | + ; |
2855 | +"RTN","MSCXUS3A",37,0) |
2856 | +PM I X="PROD"!(X="MGR") S X=^%ZOSF(X) |
2857 | +"RTN","MSCXUS3A",38,0) |
2858 | + Q |
2859 | +"RTN","MSCXUS3A",39,0) |
2860 | + ; |
2861 | +"RTN","MSCXUS3A",40,0) |
2862 | + ; |
2863 | +"RTN","MSCXUS3A",41,0) |
2864 | + ; |
2865 | +"RTN","MSCXUS3A",42,0) |
2866 | +NSP(USERNAME) ;LIST OTHER NAMESPACES WHERE THIS USER IS |
2867 | +"RTN","MSCXUS3A",43,0) |
2868 | + N X,L,I,Y |
2869 | +"RTN","MSCXUS3A",44,0) |
2870 | + X ^%ZOSF("UCI") S Y=$P(Y,",") I ^%ZOSF("OS")["GT.M" G GTMNSP |
2871 | +"RTN","MSCXUS3A",45,0) |
2872 | + f I=1:1:$zu(90,0) s L($zu(90,2,0,I))="" ;***CACHE-SPECIFIC FROM %NSP |
2873 | +"RTN","MSCXUS3A",46,0) |
2874 | + S (I,L,X)="" F S I=$O(L(I)) Q:I="" I I'=Y D ;NOT THE CURRENT ONE |
2875 | +"RTN","MSCXUS3A",47,0) |
2876 | + .N DUZ S DUZ=$O(^[I]VA(200,"B",USERNAME,0)) Q:'DUZ |
2877 | +"RTN","MSCXUS3A",48,0) |
2878 | + .I $P($G(^[I]VA(200,DUZ,0)),U,3)=""!'$G(^(201)) Q ;THEY MUST HAVE ACCESS CODE AND PRIMARY MENU OPTION OVER THERE |
2879 | +"RTN","MSCXUS3A",49,0) |
2880 | + .S L=L+1,X=X_L_":"_I_";" |
2881 | +"RTN","MSCXUS3A",50,0) |
2882 | + Q X |
2883 | +"RTN","MSCXUS3A",51,0) |
2884 | +GTMNSP ; |
2885 | +"RTN","MSCXUS3A",52,0) |
2886 | + N CURRENT S CURRENT=Y |
2887 | +"RTN","MSCXUS3A",53,0) |
2888 | + D LIST^ZCD() |
2889 | +"RTN","MSCXUS3A",54,0) |
2890 | + S (I,L,X)="" F S I=$O(Y(I)) Q:'I S A=Y(I) I A'=CURRENT D ;NOT THE CURRENT ONE |
2891 | +"RTN","MSCXUS3A",55,0) |
2892 | + .S A=$P($ZG,"/"_$$CURRENT^ZCD_"/")_"/"_A_"/"_$P($ZG,"/"_$$CURRENT^ZCD_"/",2) |
2893 | +"RTN","MSCXUS3A",56,0) |
2894 | + .N DUZ S DUZ=$O(^[A]VA(200,"B",USERNAME,0)) Q:'DUZ |
2895 | +"RTN","MSCXUS3A",57,0) |
2896 | + .I $P($G(^[A]VA(200,DUZ,0)),U,3)=""!'$G(^(201)) Q ;THEY MUST HAVE ACCESS CODE AND PRIMARY MENU OPTION OVER THERE |
2897 | +"RTN","MSCXUS3A",58,0) |
2898 | + .S L=L+1,X=X_L_":"_A_";" |
2899 | +"RTN","MSCXUS3A",59,0) |
2900 | + Q X |
2901 | +"RTN","MSCZJOB") |
2902 | +0^1^B11312416 |
2903 | +"RTN","MSCZJOB",1,0) |
2904 | +MSCZJOB ;GFT,JDS/MSC;1 MAY 2009 |
2905 | +"RTN","MSCZJOB",2,0) |
2906 | + ;;8.0;KERNEL;**MSC** |
2907 | +"RTN","MSCZJOB",3,0) |
2908 | + W !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
2909 | +"RTN","MSCZJOB",4,0) |
2910 | + N MSC |
2911 | +"RTN","MSCZJOB",5,0) |
2912 | +DDS ; |
2913 | +"RTN","MSCZJOB",6,0) |
2914 | + S DDSFILE=3.081,DR="[MSCZJOBEXAM]",DDSPARM="S" |
2915 | +"RTN","MSCZJOB",7,0) |
2916 | + D ^DDS Q |
2917 | +"RTN","MSCZJOB",8,0) |
2918 | + ; |
2919 | +"RTN","MSCZJOB",9,0) |
2920 | +UNLOCK(D0) ;FROM FIELD 2, PAGE 3: UNLOCK THE LOCK |
2921 | +"RTN","MSCZJOB",10,0) |
2922 | + N X,R S R=$G(@MSC@(MSCJOBID,"L",D0)) I R'["^" Q ;CAN'T SEE IT |
2923 | +"RTN","MSCZJOB",11,0) |
2924 | + S R=$P(R," ",2),X="L "_R D ^DIM Q:'$D(X) |
2925 | +"RTN","MSCZJOB",12,0) |
2926 | + D UNLOCK^MSCZJOBU(R) |
2927 | +"RTN","MSCZJOB",13,0) |
2928 | + Q |
2929 | +"RTN","MSCZJOB",14,0) |
2930 | + ; |
2931 | +"RTN","MSCZJOB",15,0) |
2932 | +KILL(J) ;FROM FIELD |
2933 | +"RTN","MSCZJOB",16,0) |
2934 | + D KILL^MSCZJOBU(J) |
2935 | +"RTN","MSCZJOB",17,0) |
2936 | + Q |
2937 | +"RTN","MSCZJOB",18,0) |
2938 | + ; |
2939 | +"RTN","MSCZJOB",19,0) |
2940 | +COMPMUL ;COMPUTED MULTIPLE FOR MSCZJOBEXAM BLOCK |
2941 | +"RTN","MSCZJOB",20,0) |
2942 | + N X,D0,J |
2943 | +"RTN","MSCZJOB",21,0) |
2944 | + S MSC="^TMP(""MSCZJOB"")" D POLL |
2945 | +"RTN","MSCZJOB",22,0) |
2946 | + F D0=0:0 S D0=$O(MSCZJOB(D0)) Q:'D0 D |
2947 | +"RTN","MSCZJOB",23,0) |
2948 | + .S MSCZJOB(D0)=MSCZJOB(D0)_U_$$DEV(D0)_U_$$USER(D0)_U_$$NSP(D0)_U_U_U_U_U_$$ROUTINE(D0) |
2949 | +"RTN","MSCZJOB",24,0) |
2950 | + .S X=MSCZJOB(D0) X DICMX |
2951 | +"RTN","MSCZJOB",25,0) |
2952 | + Q |
2953 | +"RTN","MSCZJOB",26,0) |
2954 | +JOB(D0) Q $P(MSCZJOB(D0),U) ;*** |
2955 | +"RTN","MSCZJOB",27,0) |
2956 | +DEV(D0) Q $$FIND(D0,"I","$PRINCIPAL") |
2957 | +"RTN","MSCZJOB",28,0) |
2958 | +NSP(D0) N N D Q N |
2959 | +"RTN","MSCZJOB",29,0) |
2960 | + .N L,P S N=$$FIND(D0,"I","$ZGBLDIR"),L=$L(N,"/") I L<2 Q |
2961 | +"RTN","MSCZJOB",30,0) |
2962 | + .F L=L-1:-1:2 S P=$P(N,"/",L) I P'[".",P'["globals" Q |
2963 | +"RTN","MSCZJOB",31,0) |
2964 | + .S P=1 I $P(N,"/")="" S P=2 |
2965 | +"RTN","MSCZJOB",32,0) |
2966 | + .S N=$P(N,"/",P,L) |
2967 | +"RTN","MSCZJOB",33,0) |
2968 | +USER(D0) Q $P($G(^VA(200,+$$FIND(D0,"V","DUZ"),0)),U) |
2969 | +"RTN","MSCZJOB",34,0) |
2970 | +ROUTINE(D0) Q $$FIND(D0,"V","%ZPOS") |
2971 | +"RTN","MSCZJOB",35,0) |
2972 | + ; |
2973 | +"RTN","MSCZJOB",36,0) |
2974 | +FIND(D0,ARR,KEY) N I,J,X S X="",J=+MSCZJOB(D0) |
2975 | +"RTN","MSCZJOB",37,0) |
2976 | + F I=0:0 S I=$O(@MSC@(J,ARR,I)) Q:'I I $P(^(I),KEY_"=")="" S X=$TR($P(^(I),"=",2),"""") Q |
2977 | +"RTN","MSCZJOB",38,0) |
2978 | + Q X |
2979 | +"RTN","MSCZJOB",39,0) |
2980 | + ; |
2981 | +"RTN","MSCZJOB",40,0) |
2982 | +COMPSTK ;COMPUTED MULTIPLE FOR MSCZJOBSTACK BLOCK |
2983 | +"RTN","MSCZJOB",41,0) |
2984 | + S MSC="^TMP(""MSCZJOB"")" K @MSC@(MSCJOBID) D POLL1 |
2985 | +"RTN","MSCZJOB",42,0) |
2986 | + N D0,J S J=MSCJOBID |
2987 | +"RTN","MSCZJOB",43,0) |
2988 | + F D0=1:1:$O(@MSC@(J,"S",""),-1) S X="" X DICMX |
2989 | +"RTN","MSCZJOB",44,0) |
2990 | + Q |
2991 | +"RTN","MSCZJOB",45,0) |
2992 | + ; |
2993 | +"RTN","MSCZJOB",46,0) |
2994 | +STACK(D0) N X S X=$G(@MSC@(MSCJOBID,"S",D0)) |
2995 | +"RTN","MSCZJOB",47,0) |
2996 | + Q X |
2997 | +"RTN","MSCZJOB",48,0) |
2998 | + ; |
2999 | +"RTN","MSCZJOB",49,0) |
3000 | +COMPVARS ;COMPUTED MULTIPLE FOR MSCZJOBVARS BLOCK |
3001 | +"RTN","MSCZJOB",50,0) |
3002 | + S MSC="^TMP(""MSCZJOB"")" K @MSC@(MSCJOBID) D POLL1 |
3003 | +"RTN","MSCZJOB",51,0) |
3004 | + N D0,J S J=MSCJOBID |
3005 | +"RTN","MSCZJOB",52,0) |
3006 | + F D0=1:1:$O(@MSC@(J,"V",""),-1) S X="" X DICMX |
3007 | +"RTN","MSCZJOB",53,0) |
3008 | + Q |
3009 | +"RTN","MSCZJOB",54,0) |
3010 | + ; |
3011 | +"RTN","MSCZJOB",55,0) |
3012 | +COMPLKS ;COMPUTED MULTIPLE FOR MSCZJOBLOCKS BLOCK |
3013 | +"RTN","MSCZJOB",56,0) |
3014 | + S MSC="^TMP(""MSCZJOB"")" D POLL1 |
3015 | +"RTN","MSCZJOB",57,0) |
3016 | + N D0 |
3017 | +"RTN","MSCZJOB",58,0) |
3018 | + F D0=1:1:$$LOCKS S X="" X DICMX |
3019 | +"RTN","MSCZJOB",59,0) |
3020 | + Q |
3021 | +"RTN","MSCZJOB",60,0) |
3022 | + ; |
3023 | +"RTN","MSCZJOB",61,0) |
3024 | +LOCKS() Q +$O(@MSC@(MSCJOBID,"L",""),-1) |
3025 | +"RTN","MSCZJOB",62,0) |
3026 | + ; |
3027 | +"RTN","MSCZJOB",63,0) |
3028 | +POLL K MSCZJOB ;D HLP^DDSUTL(" POLLING JOBS.....") |
3029 | +"RTN","MSCZJOB",64,0) |
3030 | + I $G(^%ZOSF("OS"))["GT.M" D |
3031 | +"RTN","MSCZJOB",65,0) |
3032 | + .K @MSC |
3033 | +"RTN","MSCZJOB",66,0) |
3034 | + .D INTRPT^MSCZJOBU("*") ;SETS UP ^TMP |
3035 | +"RTN","MSCZJOB",67,0) |
3036 | + .N MSCA,I D PIDS^MSCZJOBU(.MSCA) |
3037 | +"RTN","MSCZJOB",68,0) |
3038 | + .S MSCA="" F I=1:1 S MSCA=$O(MSCA(MSCA)) Q:'MSCA S MSCZJOB(I)=MSCA ;SETS UP LOCAL ARRAY |
3039 | +"RTN","MSCZJOB",69,0) |
3040 | + .H 1 ;WAIT FOR POLLING |
3041 | +"RTN","MSCZJOB",70,0) |
3042 | + D TEST |
3043 | +"RTN","MSCZJOB",71,0) |
3044 | + Q |
3045 | +"RTN","MSCZJOB",72,0) |
3046 | + ; |
3047 | +"RTN","MSCZJOB",73,0) |
3048 | +POLL1 Q:'$G(MSCJOBID) |
3049 | +"RTN","MSCZJOB",74,0) |
3050 | + I $G(^%ZOSF("OS"))["GT.M" D |
3051 | +"RTN","MSCZJOB",75,0) |
3052 | + .K @MSC@(MSCJOBID) |
3053 | +"RTN","MSCZJOB",76,0) |
3054 | + .D INTRPT^MSCZJOBU(MSCJOBID) ;SETS UP ^TMP(MSCZJOB) |
3055 | +"RTN","MSCZJOB",77,0) |
3056 | + .H 1 ;WAIT FOR POLLING |
3057 | +"RTN","MSCZJOB",78,0) |
3058 | + D TEST |
3059 | +"RTN","MSCZJOB",79,0) |
3060 | + Q |
3061 | +"RTN","MSCZJOB",80,0) |
3062 | + ; |
3063 | +"RTN","MSCZJOB",81,0) |
3064 | +TEST Q |
3065 | +"RTN","MSCZJOB",82,0) |
3066 | +COMPLK ;COMPUTED MULTIPLE FOR MSCZLOCK BLOCK |
3067 | +"RTN","MSCZJOB",83,0) |
3068 | + N X,D0,J |
3069 | +"RTN","MSCZJOB",84,0) |
3070 | + S MSC="^TMP(""MSCZJOB"")" D POLL S D0=0 |
3071 | +"RTN","MSCZJOB",85,0) |
3072 | + F K=0:0 S K=$O(MSCZJOB(K)) Q:'K D |
3073 | +"RTN","MSCZJOB",86,0) |
3074 | + .F J=0:0 S J=$O(^TMP("MSCZJOB",MSCZJOB(K),"L",J)) Q:'J S A=$TR(^(J),U,"~") D |
3075 | +"RTN","MSCZJOB",87,0) |
3076 | + ..S D0=D0+1,MSCZLK(D0)=$P(A,"LOCK ",2,9)_U_$$USER(K)_U_$TR($$ROUTINE(K),U,"~")_"^^"_MSCZJOB(K) |
3077 | +"RTN","MSCZJOB",88,0) |
3078 | + ..S X=MSCZLK(D0) X DICMX |
3079 | +"RTN","MSCZJOB",89,0) |
3080 | + Q |
3081 | +"RTN","MSCZJOB",90,0) |
3082 | +LOCK ; |
3083 | +"RTN","MSCZJOB",91,0) |
3084 | + S DDSFILE=3.081,DR="[MSCZLOCK]",DDSPARM="S" |
3085 | +"RTN","MSCZJOB",92,0) |
3086 | + D ^DDS Q |
3087 | +"RTN","MSCZJOB",93,0) |
3088 | +UNL(D0) ;FROM FIELD 2, PAGE 3: UNLOCK THE LOCK |
3089 | +"RTN","MSCZJOB",94,0) |
3090 | + N X,R S R=$P($G(MSCZLK(D0)),U),P=$P($G(MSCZLK(D0)),U,5) ;I R'["^" Q ;CAN'T SEE IT |
3091 | +"RTN","MSCZJOB",95,0) |
3092 | + S R=$P(R,"~",2),R="^"_$S(R'["(":$P(R," "),1:$P(R,")")_")"),X="L "_R D ^DIM Q:'$D(X) ;GOOD SYNTAX? |
3093 | +"RTN","MSCZJOB",96,0) |
3094 | + D UNLOCK^MSCZJOBU(R) |
3095 | +"RTN","MSCZJOBS") |
3096 | +0^46^B3252583 |
3097 | +"RTN","MSCZJOBS",1,0) |
3098 | +MSCZJOBS ;JKT/MSC - OpenVista System status ;27MAY2009 |
3099 | +"RTN","MSCZJOBS",2,0) |
3100 | + ;;8.0;KERNEL;**MSC** |
3101 | +"RTN","MSCZJOBS",3,0) |
3102 | + ; |
3103 | +"RTN","MSCZJOBS",4,0) |
3104 | +ALL D SS() Q |
3105 | +"RTN","MSCZJOBS",5,0) |
3106 | +THIS D SS(1) Q |
3107 | +"RTN","MSCZJOBS",6,0) |
3108 | + ; |
3109 | +"RTN","MSCZJOBS",7,0) |
3110 | +SS(THIS) ;Print GT.M mumps processes |
3111 | +"RTN","MSCZJOBS",8,0) |
3112 | + ; If THIS is true, only print processes associated with the current |
3113 | +"RTN","MSCZJOBS",9,0) |
3114 | + ; OpenVista instance |
3115 | +"RTN","MSCZJOBS",10,0) |
3116 | + ; |
3117 | +"RTN","MSCZJOBS",11,0) |
3118 | + Q:$G(^%ZOSF("OS"))'["GT.M" |
3119 | +"RTN","MSCZJOBS",12,0) |
3120 | + ; |
3121 | +"RTN","MSCZJOBS",13,0) |
3122 | + D INTRPT^MSCZJOBU("*") H .5 |
3123 | +"RTN","MSCZJOBS",14,0) |
3124 | + ; |
3125 | +"RTN","MSCZJOBS",15,0) |
3126 | + N DATETIME S DATETIME=$$HTE^XLFDT($H) |
3127 | +"RTN","MSCZJOBS",16,0) |
3128 | + W #!,?22,"OpenVista System Status" |
3129 | +"RTN","MSCZJOBS",17,0) |
3130 | + W !,?(34-($L(DATETIME)/2)\1),DATETIME |
3131 | +"RTN","MSCZJOBS",18,0) |
3132 | + W !!,?1,"Process",?12,"Device",?30,"Instance",?42,"Routine",?56,"User" |
3133 | +"RTN","MSCZJOBS",19,0) |
3134 | + ; |
3135 | +"RTN","MSCZJOBS",20,0) |
3136 | + N PID S PID="" |
3137 | +"RTN","MSCZJOBS",21,0) |
3138 | + D PIDS^MSCZJOBU(.PID) |
3139 | +"RTN","MSCZJOBS",22,0) |
3140 | + F S PID=$O(PID(PID)) Q:PID="" D |
3141 | +"RTN","MSCZJOBS",23,0) |
3142 | + . I $G(THIS) Q:$$INSTANCE(PID)'=$$CURRENT^ZCD() |
3143 | +"RTN","MSCZJOBS",24,0) |
3144 | + . W !,$$PID(PID) |
3145 | +"RTN","MSCZJOBS",25,0) |
3146 | + . W ?12,$$DEVICE(PID) |
3147 | +"RTN","MSCZJOBS",26,0) |
3148 | + . W ?30,$$INSTANCE(PID) |
3149 | +"RTN","MSCZJOBS",27,0) |
3150 | + . W ?42,$$ROUTINE(PID) |
3151 | +"RTN","MSCZJOBS",28,0) |
3152 | + . W ?56,$$USER(PID) |
3153 | +"RTN","MSCZJOBS",29,0) |
3154 | + ; |
3155 | +"RTN","MSCZJOBS",30,0) |
3156 | + W !! ZSY "uptime" |
3157 | +"RTN","MSCZJOBS",31,0) |
3158 | + Q |
3159 | +"RTN","MSCZJOBS",32,0) |
3160 | + ; |
3161 | +"RTN","MSCZJOBS",33,0) |
3162 | +PID(PID) ;Return process ID formatted for display |
3163 | +"RTN","MSCZJOBS",34,0) |
3164 | + Q $J(PID,8)_$S($J=PID:"*",1:"") |
3165 | +"RTN","MSCZJOBS",35,0) |
3166 | + ; |
3167 | +"RTN","MSCZJOBS",36,0) |
3168 | +DEVICE(PID) ;Return device |
3169 | +"RTN","MSCZJOBS",37,0) |
3170 | + Q $$FIND("^TMP(""MSCZJOB"")",PID,"I","$PRINCIPAL") |
3171 | +"RTN","MSCZJOBS",38,0) |
3172 | + ; |
3173 | +"RTN","MSCZJOBS",39,0) |
3174 | +INSTANCE(PID) ;Return name of OpenVista instance |
3175 | +"RTN","MSCZJOBS",40,0) |
3176 | + N ZG S ZG=$$FIND("^TMP(""MSCZJOB"")",PID,"I","$ZGBLDIR") |
3177 | +"RTN","MSCZJOBS",41,0) |
3178 | + Q $P(ZG,"/",$L(ZG,"/")-2) |
3179 | +"RTN","MSCZJOBS",42,0) |
3180 | + ; |
3181 | +"RTN","MSCZJOBS",43,0) |
3182 | +ROUTINE(PID) ;Return routine |
3183 | +"RTN","MSCZJOBS",44,0) |
3184 | + Q $P($$FIND("^TMP(""MSCZJOB"")",PID,"V","%ZPOS"),"^",2) |
3185 | +"RTN","MSCZJOBS",45,0) |
3186 | + ; |
3187 | +"RTN","MSCZJOBS",46,0) |
3188 | +USER(PID) ;Return OpenVista user |
3189 | +"RTN","MSCZJOBS",47,0) |
3190 | + N DUZ S DUZ=+$$FIND("^TMP(""MSCZJOB"")",PID,"V","DUZ") |
3191 | +"RTN","MSCZJOBS",48,0) |
3192 | + ; FIXME: this code is looking up the name of the person in *this* |
3193 | +"RTN","MSCZJOBS",49,0) |
3194 | + ; instance, which assumes that ^VA(200) is the same across databases |
3195 | +"RTN","MSCZJOBS",50,0) |
3196 | + Q $P($G(^VA(200,DUZ,0)),"^") |
3197 | +"RTN","MSCZJOBS",51,0) |
3198 | + ; |
3199 | +"RTN","MSCZJOBS",52,0) |
3200 | +FIND(NODE,PID,ARR,KEY) ;Return the value of a key in one of the ZSHOW arrays |
3201 | +"RTN","MSCZJOBS",53,0) |
3202 | + N I,X S I="",X="" |
3203 | +"RTN","MSCZJOBS",54,0) |
3204 | + F S I=$O(@NODE@(PID,ARR,I)) Q:'I I $P(^(I),KEY_"=")="" S X=$TR($P(^(I),"=",2),"""") Q |
3205 | +"RTN","MSCZJOBS",55,0) |
3206 | + Q X |
3207 | +"RTN","MSCZJOBU") |
3208 | +0^4^B2386063 |
3209 | +"RTN","MSCZJOBU",1,0) |
3210 | +MSCZJOBU ;RHL,JDS,JKT/MSC;20MAY2009 |
3211 | +"RTN","MSCZJOBU",2,0) |
3212 | + ;;8.0;KERNEL;**MSC** |
3213 | +"RTN","MSCZJOBU",3,0) |
3214 | + ; |
3215 | +"RTN","MSCZJOBU",4,0) |
3216 | + ; JOB EXAM UTILITIES FOR GT.M |
3217 | +"RTN","MSCZJOBU",5,0) |
3218 | + Q |
3219 | +"RTN","MSCZJOBU",6,0) |
3220 | +PIDS(XARY) ; GET ARRAY OF ALL MUMPS PROCESS |
3221 | +"RTN","MSCZJOBU",7,0) |
3222 | + ; XARY PASSED BY REFERENCE |
3223 | +"RTN","MSCZJOBU",8,0) |
3224 | + ; RETURNS XARY(PID)="" |
3225 | +"RTN","MSCZJOBU",9,0) |
3226 | + ; NOTE: Unix PID=$J for all mumps processes. |
3227 | +"RTN","MSCZJOBU",10,0) |
3228 | + ; |
3229 | +"RTN","MSCZJOBU",11,0) |
3230 | + N DEV |
3231 | +"RTN","MSCZJOBU",12,0) |
3232 | + S DEV="psdev" |
3233 | +"RTN","MSCZJOBU",13,0) |
3234 | + OPEN DEV:(COMM="ps -o pid= -C mumps")::"PIPE" U DEV |
3235 | +"RTN","MSCZJOBU",14,0) |
3236 | + ; |
3237 | +"RTN","MSCZJOBU",15,0) |
3238 | + N %I S %I=$I |
3239 | +"RTN","MSCZJOBU",16,0) |
3240 | + N %J ; $JOB |
3241 | +"RTN","MSCZJOBU",17,0) |
3242 | + F U DEV R %J U %I Q:%J="" D |
3243 | +"RTN","MSCZJOBU",18,0) |
3244 | + . F Q:$E(%J,1)'=" " S %J=$E(%J,2,999) ; strip leading spaces |
3245 | +"RTN","MSCZJOBU",19,0) |
3246 | + . S XARY(%J)="" |
3247 | +"RTN","MSCZJOBU",20,0) |
3248 | + ; |
3249 | +"RTN","MSCZJOBU",21,0) |
3250 | + C DEV |
3251 | +"RTN","MSCZJOBU",22,0) |
3252 | + Q |
3253 | +"RTN","MSCZJOBU",23,0) |
3254 | + ; |
3255 | +"RTN","MSCZJOBU",24,0) |
3256 | +INTRPT(PID) ; SEND mupip intrpt to process with PID |
3257 | +"RTN","MSCZJOBU",25,0) |
3258 | + ; WHICH CAUSES THE $ZINTERRUPT CODE TO BE EXECUTED. |
3259 | +"RTN","MSCZJOBU",26,0) |
3260 | + ; PID PASSED BY VALUE |
3261 | +"RTN","MSCZJOBU",27,0) |
3262 | + ; PID CAN BE A SINGLE PID, I.E. $J |
3263 | +"RTN","MSCZJOBU",28,0) |
3264 | + ; PID CAN BE A "*" WHICH SENDS AN INTERRUPT TO ALL MUMPS PROCESSES |
3265 | +"RTN","MSCZJOBU",29,0) |
3266 | + ; |
3267 | +"RTN","MSCZJOBU",30,0) |
3268 | + Q:$G(PID)'?1N.N&($G(PID)'="*") |
3269 | +"RTN","MSCZJOBU",31,0) |
3270 | + ; |
3271 | +"RTN","MSCZJOBU",32,0) |
3272 | + N CMD,DEV |
3273 | +"RTN","MSCZJOBU",33,0) |
3274 | + S CMD="gtmsignal -q "_$S(PID="*":"-a",1:PID) |
3275 | +"RTN","MSCZJOBU",34,0) |
3276 | + S DEV="gtmsignaldev" |
3277 | +"RTN","MSCZJOBU",35,0) |
3278 | + OPEN DEV:(COMM=CMD)::"PIPE" U DEV C DEV |
3279 | +"RTN","MSCZJOBU",36,0) |
3280 | + Q |
3281 | +"RTN","MSCZJOBU",37,0) |
3282 | + ; |
3283 | +"RTN","MSCZJOBU",38,0) |
3284 | +KILL(PID) ; Send mupip stop to process with PID |
3285 | +"RTN","MSCZJOBU",39,0) |
3286 | + ; PID PASSED BY VALUE |
3287 | +"RTN","MSCZJOBU",40,0) |
3288 | + ; PID CAN BE A SINGLE PID, I.E. $J |
3289 | +"RTN","MSCZJOBU",41,0) |
3290 | + ; |
3291 | +"RTN","MSCZJOBU",42,0) |
3292 | + Q:$G(PID)'?1N.N |
3293 | +"RTN","MSCZJOBU",43,0) |
3294 | + ; |
3295 | +"RTN","MSCZJOBU",44,0) |
3296 | + N DEV |
3297 | +"RTN","MSCZJOBU",45,0) |
3298 | + S DEV="gtmsignaldev" |
3299 | +"RTN","MSCZJOBU",46,0) |
3300 | + OPEN DEV:(COMM="gtmsignal -q -s "_PID)::"PIPE" U DEV C DEV |
3301 | +"RTN","MSCZJOBU",47,0) |
3302 | + Q |
3303 | +"RTN","MSCZJOBU",48,0) |
3304 | + ; |
3305 | +"RTN","MSCZJOBU",49,0) |
3306 | +UNLOCK(NODE) ; Use lke to remove lock on NODE. |
3307 | +"RTN","MSCZJOBU",50,0) |
3308 | + N CMD,DEV |
3309 | +"RTN","MSCZJOBU",51,0) |
3310 | + S CMD="lke clear -lock="""_NODE_""" -nointeractive -output=/dev/null" |
3311 | +"RTN","MSCZJOBU",52,0) |
3312 | + S DEV="lkedev" |
3313 | +"RTN","MSCZJOBU",53,0) |
3314 | + OPEN DEV:(COMM=CMD)::"PIPE" U DEV C DEV |
3315 | +"RTN","MSCZJOBU",54,0) |
3316 | + Q |
3317 | +"RTN","PRCSEA") |
3318 | +0^37^B66865498 |
3319 | +"RTN","PRCSEA",1,0) |
3320 | +PRCSEA ;WISC/SAW/DXH/BM/SC/DAP,MSC/JDA - CONTROL POINT ACTIVITY EDITS ;27APR2009 |
3321 | +"RTN","PRCSEA",2,0) |
3322 | +V ;;5.1;IFCAP;**81,MSC**;Oct 20, 2000 |
3323 | +"RTN","PRCSEA",3,0) |
3324 | + ;Per VHA Directive 10-93-142, this routine should not be modified. |
3325 | +"RTN","PRCSEA",4,0) |
3326 | + ; |
3327 | +"RTN","PRCSEA",5,0) |
3328 | + ;PRC*5.1*81 BMM 3/23/05 when a 2237 is canceled, in CT1, add code |
3329 | +"RTN","PRCSEA",6,0) |
3330 | + ;to update Audit file (#414.02), and send update message to |
3331 | +"RTN","PRCSEA",7,0) |
3332 | + ;DynaMed thru a call to rtn PRCVTCA. |
3333 | +"RTN","PRCSEA",8,0) |
3334 | + ; |
3335 | +"RTN","PRCSEA",9,0) |
3336 | +ENRS ;ENTER REQ |
3337 | +"RTN","PRCSEA",10,0) |
3338 | + S PRCSK=1,X3="H" |
3339 | +"RTN","PRCSEA",11,0) |
3340 | + D EN1F^PRCSUT(1) ; ask site,FY,QRTR,CP & set up PRC array, PRCSIP variable ; prc*5*197 |
3341 | +"RTN","PRCSEA",12,0) |
3342 | + G W2:'$D(PRC("SITE")),EXIT:Y<0 ; unauthorized user or '^' entered |
3343 | +"RTN","PRCSEA",13,0) |
3344 | + D W6 ; display help on transaction# format |
3345 | +"RTN","PRCSEA",14,0) |
3346 | +ENRS0 S DLAYGO=410,DIC="^PRCS(410,",DIC(0)="AELQ",D="H" |
3347 | +"RTN","PRCSEA",15,0) |
3348 | + S DIC("A")="Select TRANSACTION: " |
3349 | +"RTN","PRCSEA",16,0) |
3350 | + S DIC("S")="I '^(0),$P(^(0),U,3)'="""",$D(^PRCS(410,""H"",$P(^(0),U,3),+Y)),^(+Y)=DUZ!(^(+Y)="""")" ; only requests authored by user or unauthored will display on partial match |
3351 | +"RTN","PRCSEA",17,0) |
3352 | + D ^PRCSDIC ; lookup & preliminary validity checking |
3353 | +"RTN","PRCSEA",18,0) |
3354 | + K DLAYGO,DIC("A"),DIC("S") |
3355 | +"RTN","PRCSEA",19,0) |
3356 | + G:Y<0 EXIT |
3357 | +"RTN","PRCSEA",20,0) |
3358 | + I $P(Y,U,3)'=1 W $C(7)," Must be a new entry." G ENRS0 |
3359 | +"RTN","PRCSEA",21,0) |
3360 | + ;*81 Check site parameter to see if issue books are allowed |
3361 | +"RTN","PRCSEA",22,0) |
3362 | + D CKPRM^PRCSEB |
3363 | +"RTN","PRCSEA",23,0) |
3364 | + W !!,PRCVY,! |
3365 | +"RTN","PRCSEA",24,0) |
3366 | + S (PDA,T1,DA)=+Y |
3367 | +"RTN","PRCSEA",25,0) |
3368 | + L +^PRCS(410,DA):1 I $T=0 W !,"File is being accessed...try a different transaction number or try later" G ENRS0 |
3369 | +"RTN","PRCSEA",26,0) |
3370 | + S T(2)=$P(Y,U,2) |
3371 | +"RTN","PRCSEA",27,0) |
3372 | + D EN2A^PRCSUT3 ; saves CP,sta,substa,txn name,user,BBFY,RB stat,acct data in new txn (nodes 0,3,6,11 of file 410) |
3373 | +"RTN","PRCSEA",28,0) |
3374 | + S $P(^PRCS(410,DA,14),"^")=DUZ ; originator (entered by) |
3375 | +"RTN","PRCSEA",29,0) |
3376 | + S $P(^PRCS(410,DA,7),"^")=DUZ,$P(^PRCS(410,DA,7),"^",2)=$P($G(^VA(200,DUZ,20)),"^",3) ; requestor default |
3377 | +"RTN","PRCSEA",30,0) |
3378 | + I $G(PRCSIP) S $P(^PRCS(410,DA,0),"^",6)=PRCSIP,^PRCS(410,"AO",PRCSIP,DA)="" ; PRCSIP was set up in PRCSUT & is inventory distribution point |
3379 | +"RTN","PRCSEA",31,0) |
3380 | + S PRCS="" ; set PRCS=1 if CP is automated, i.e. it uses IFCAP to send requests to A&MM |
3381 | +"RTN","PRCSEA",32,0) |
3382 | + I $D(^PRC(420,PRC("SITE"),1,+PRC("CP"),0)) S:$P(^(0),"^",11)="Y" PRCS=1 |
3383 | +"RTN","PRCSEA",33,0) |
3384 | +TYPE ; |
3385 | +"RTN","PRCSEA",34,0) |
3386 | + W !!,"This transaction is assigned temporary transaction number: ",T(2) |
3387 | +"RTN","PRCSEA",35,0) |
3388 | + S DIC("A")="FORM TYPE: ",DIC="^PRCS(410.5,",DIC(0)="AEQZ" |
3389 | +"RTN","PRCSEA",36,0) |
3390 | + S DIC("S")=PRCVX ; only allow selection of 2237's |
3391 | +"RTN","PRCSEA",37,0) |
3392 | + D ^DIC |
3393 | +"RTN","PRCSEA",38,0) |
3394 | + S DA=PDA |
3395 | +"RTN","PRCSEA",39,0) |
3396 | + ;if user didn't enter a form type, go ask whether to backout and act |
3397 | +"RTN","PRCSEA",40,0) |
3398 | + ;accordingly: go let them re-enter a form type or exit |
3399 | +"RTN","PRCSEA",41,0) |
3400 | + I Y<0 G:'$$BACKOUT(T(2),DA) TYPE L -^PRCS(420,DA) G EXIT |
3401 | +"RTN","PRCSEA",42,0) |
3402 | + ; |
3403 | +"RTN","PRCSEA",43,0) |
3404 | + I Y<2 W "??" G TYPE |
3405 | +"RTN","PRCSEA",44,0) |
3406 | + K PRCVX,PRCVY |
3407 | +"RTN","PRCSEA",45,0) |
3408 | + S $P(^PRCS(410,DA,0),"^",4)=+Y,X=+Y ; form type |
3409 | +"RTN","PRCSEA",46,0) |
3410 | + ; if CP is not automated (file 420), user's response will be overwritten with non-recuring (type 2). Although user's selection is changed 'behind the scenes', |
3411 | +"RTN","PRCSEA",47,0) |
3412 | + ; the scenario is unlikely to occur because full implementation of IFCAP was made mandatory and sites are now automated. |
3413 | +"RTN","PRCSEA",48,0) |
3414 | + S:'PRCS&(X>2) $P(^PRCS(410,DA,0),"^",4)=2,X=2 |
3415 | +"RTN","PRCSEA",49,0) |
3416 | + K PRCSERR ; flag denoting item info is missing |
3417 | +"RTN","PRCSEA",50,0) |
3418 | + S DIC(0)="AEMQ",(DIC,DIE)="^PRCS(410," |
3419 | +"RTN","PRCSEA",51,0) |
3420 | + S (PRCSDR,DR)="["_$S(X=2:"PRCSEN2237S",X=3:"PRCSENPRS",X=4:"PRCSENR&NRS",1:"PRCSENIBS")_"]" |
3421 | +"RTN","PRCSEA",52,0) |
3422 | +EN1 K DTOUT,DUOUT,Y |
3423 | +"RTN","PRCSEA",53,0) |
3424 | + D ^DIE |
3425 | +"RTN","PRCSEA",54,0) |
3426 | + S DA=PDA |
3427 | +"RTN","PRCSEA",55,0) |
3428 | + I $D(Y)!($D(DTOUT)) D DOR L -^PRCS(410,DA) G EXIT |
3429 | +"RTN","PRCSEA",56,0) |
3430 | + D RL^PRCSUT1 ; sets up 'IT' & '10' nodes |
3431 | +"RTN","PRCSEA",57,0) |
3432 | + D ^PRCSCK I $D(PRCSERR),PRCSERR G EN1 ; missing required field ('item') |
3433 | +"RTN","PRCSEA",58,0) |
3434 | + D DOR ; populate date of request field if it is nil |
3435 | +"RTN","PRCSEA",59,0) |
3436 | + L -^PRCS(410,DA) |
3437 | +"RTN","PRCSEA",60,0) |
3438 | + S T="enter" D W5 G EXIT:%'=1 |
3439 | +"RTN","PRCSEA",61,0) |
3440 | + W !! K PRCS("SUB") |
3441 | +"RTN","PRCSEA",62,0) |
3442 | + G ENRS |
3443 | +"RTN","PRCSEA",63,0) |
3444 | + ; |
3445 | +"RTN","PRCSEA",64,0) |
3446 | +EDRS ;EDIT REQ |
3447 | +"RTN","PRCSEA",65,0) |
3448 | + ; following line commented out by PRC*5*140 - user responses not used to limit selection of txn and sometimes resulted in bad info being set into the selected txn |
3449 | +"RTN","PRCSEA",66,0) |
3450 | + ; S PRCSK=1 D EN1F^PRCSUT(1) G W2:'$D(PRC("SITE")),EXIT:Y<0 ; ask sta,FY,QRTR,CP ; prc*5*197 |
3451 | +"RTN","PRCSEA",67,0) |
3452 | + ; if the above line is reactivated, programmer should note that the transaction selected may not be of the same FY,QRTR,sta, subst, and CP specified by the user |
3453 | +"RTN","PRCSEA",68,0) |
3454 | + D W6 ; format doc for txn# |
3455 | +"RTN","PRCSEA",69,0) |
3456 | + S X3="H" S DIC="^PRCS(410,",DIC(0)="AEQ",D="H" |
3457 | +"RTN","PRCSEA",70,0) |
3458 | + S DIC("A")="Select TRANSACTION: " |
3459 | +"RTN","PRCSEA",71,0) |
3460 | + S DIC("S")="I '^(0),$P(^(0),U,3)'="""",$P(^(0),U,4)'=1,^PRCS(410,""H"",$P(^(0),U,3),+Y)=DUZ!(^(+Y)="""")" ; request must be authored by user or unauthored & cannot be a 1358 |
3461 | +"RTN","PRCSEA",72,0) |
3462 | + D ^PRCSDIC G EXIT:Y<0 K DIC("A"),DIC("S") |
3463 | +"RTN","PRCSEA",73,0) |
3464 | + S (PDA,DA,T1)=+Y |
3465 | +"RTN","PRCSEA",74,0) |
3466 | + L +^PRCS(410,DA):1 I $T=0 W !,"File is being accessed...please try later" G EDRS |
3467 | +"RTN","PRCSEA",75,0) |
3468 | + ; following line commented out in PRC*5*140 - PRCSUT3 needs PRC("SST") or MYY to do something, neither exists in this option |
3469 | +"RTN","PRCSEA",76,0) |
3470 | + ; D EN2B^PRCSUT3 |
3471 | +"RTN","PRCSEA",77,0) |
3472 | + S PRC("SITE")=+$P(^PRCS(410,PDA,0),"^",5) |
3473 | +"RTN","PRCSEA",78,0) |
3474 | + S PRC("CP")=$P(^PRCS(410,PDA,3),"^") |
3475 | +"RTN","PRCSEA",79,0) |
3476 | + I $P(^PRCS(410,PDA,0),"^",6)="" D ; prc*5*197 |
3477 | +"RTN","PRCSEA",80,0) |
3478 | + . N PRCSIP D IP^PRCSUT |
3479 | +"RTN","PRCSEA",81,0) |
3480 | + . I $D(PRCSIP) S $P(^PRC(410,DA,0),U,6)=PRCSIP |
3481 | +"RTN","PRCSEA",82,0) |
3482 | + S X=+$P(^PRCS(410,DA,0),"^",4) I X<1 D FORM |
3483 | +"RTN","PRCSEA",83,0) |
3484 | + ;*81 Check site parameter to see if Issue Books are allowed |
3485 | +"RTN","PRCSEA",84,0) |
3486 | + D CKPRM |
3487 | +"RTN","PRCSEA",85,0) |
3488 | + I PRCVD=1 S PRCVZ=1 |
3489 | +"RTN","PRCSEA",86,0) |
3490 | + I PRCVD'=1 S PRCVZ=0 |
3491 | +"RTN","PRCSEA",87,0) |
3492 | + W !,"The form type for this transaction is ",$P($G(^PRCS(410.5,X,0)),"^"),! |
3493 | +"RTN","PRCSEA",88,0) |
3494 | + I PRCVZ=1,X=5 W !,"All Supply Warehouse requests must be processed in the new Inventory System.",!!,"Please cancel this IFCAP issue book order." S T="edit" D W5 G:%'=1 EXIT W !! K PRCS("SUB") G EDRS |
3495 | +"RTN","PRCSEA",89,0) |
3496 | + ; |
3497 | +"RTN","PRCSEA",90,0) |
3498 | + S DIC(0)="AEMQ",(DIC,DIE)="^PRCS(410," |
3499 | +"RTN","PRCSEA",91,0) |
3500 | + ;P182--Modified next 3 lines to use new templates if supply fund FCP |
3501 | +"RTN","PRCSEA",92,0) |
3502 | + S (DR,PRCSDR)="["_$S(X=1:"PRCE NEW 1358S",X=2:"PRCSEN2237S",X=3:"PRCSENPRS",X=4:"PRCSENR&NRS",1:"PRCSENIBS")_"]" |
3503 | +"RTN","PRCSEA",93,0) |
3504 | +ED1 K DTOUT,DUOUT,Y |
3505 | +"RTN","PRCSEA",94,0) |
3506 | + D ^DIE |
3507 | +"RTN","PRCSEA",95,0) |
3508 | + S DA=PDA |
3509 | +"RTN","PRCSEA",96,0) |
3510 | + I $D(Y)!($D(DTOUT)) L -^PRCS(410,DA) G EXIT |
3511 | +"RTN","PRCSEA",97,0) |
3512 | + D RL^PRCSUT1 |
3513 | +"RTN","PRCSEA",98,0) |
3514 | + D ^PRCSCK I $D(PRCSERR),PRCSERR G ED1 |
3515 | +"RTN","PRCSEA",99,0) |
3516 | + K PRCSERR S $P(^PRCS(410,DA,14),"^")=DUZ |
3517 | +"RTN","PRCSEA",100,0) |
3518 | + L -^PRCS(410,DA) |
3519 | +"RTN","PRCSEA",101,0) |
3520 | + S T="edit" D W5 G EXIT:%'=1 |
3521 | +"RTN","PRCSEA",102,0) |
3522 | + W !! K PRCS("SUB") |
3523 | +"RTN","PRCSEA",103,0) |
3524 | + G EDRS |
3525 | +"RTN","PRCSEA",104,0) |
3526 | + ; |
3527 | +"RTN","PRCSEA",105,0) |
3528 | +CT ;CANCEL A (PERMANENT) TRANS |
3529 | +"RTN","PRCSEA",106,0) |
3530 | + D EN3^PRCSUT |
3531 | +"RTN","PRCSEA",107,0) |
3532 | + G W2:'$D(PRC("SITE")),EXIT:Y<0 |
3533 | +"RTN","PRCSEA",108,0) |
3534 | + S DIC="^PRCS(410,",DIC(0)="AEMQ" |
3535 | +"RTN","PRCSEA",109,0) |
3536 | + ;S DIC("S")="I $P(^(0),""^"",4)=.5!($S('$D(^(7)):1,1:$P(^(7),""^"",6)="""")) I +^(0)>0,$D(^(3)),+^(3)=+PRC(""CP""),$P(^(0),""^"",5)=PRC(""SITE"") I $D(^PRC(420,""A"",DUZ,PRC(""SITE""),+PRC(""CP""),1))!($D(^(2)))" |
3537 | +"RTN","PRCSEA",110,0) |
3538 | + S DIC("S")="I $P(^(0),U,2)=""O""!($P(^(0),U,2)=""A""&($P(^(0),U,4)=1)),$S('$D(^(7)):1,1:$P(^(7),""^"",6)=""""),$D(^(3)),+^(3)=+PRC(""CP""),$P(^(0),U,5)=PRC(""SITE"") I $D(^PRC(420,""A"",DUZ,PRC(""SITE""),+PRC(""CP""),1))!($D(^(2)))" |
3539 | +"RTN","PRCSEA",111,0) |
3540 | + S DIC("A")="Select TRANSACTION: " |
3541 | +"RTN","PRCSEA",112,0) |
3542 | + D ^PRCSDIC G EXIT:Y<0 K DIC("S"),DIC("A") |
3543 | +"RTN","PRCSEA",113,0) |
3544 | +CT1 W !,"Cancel this transaction" S %=2 D YN^DICN G CT1:%=0,EXIT:%'=1 |
3545 | +"RTN","PRCSEA",114,0) |
3546 | + S DA=+Y |
3547 | +"RTN","PRCSEA",115,0) |
3548 | + L +^PRCS(410,DA):1 I $T=0 W !,"File is being accessed...please try later" G CT |
3549 | +"RTN","PRCSEA",116,0) |
3550 | + S T=$P(^PRCS(410,DA,0),"^"),$P(^(11),"^",3)="",$P(^(0),"^",2)="CA",$P(^(5),"^")=0,$P(^(6),"^")=0 |
3551 | +"RTN","PRCSEA",117,0) |
3552 | + K ^PRCS(410,"F",+T_"-"_+PRC("CP")_"-"_$P(T,"-",5),DA),^PRCS(410,"F1",$P(T,"-",5)_"-"_+T_"-"_+PRC("CP"),DA),^PRCS(410,"AQ",1,DA) |
3553 | +"RTN","PRCSEA",118,0) |
3554 | + K ZX |
3555 | +"RTN","PRCSEA",119,0) |
3556 | + I $D(^PRCS(410,DA,4)) S ZX=^(4),X=$P(ZX,"^",8) F I=1,3,6,8 S $P(ZX,"^",I)=0 |
3557 | +"RTN","PRCSEA",120,0) |
3558 | + I $D(ZX) S ^PRCS(410,DA,4)=ZX K ZX |
3559 | +"RTN","PRCSEA",121,0) |
3560 | + I $D(^PRCS(410,DA,12,0)) S N=0 F I=0:0 S N=$O(^PRCS(410,DA,12,N)) Q:N'>0 S X=$P(^(N,0),"^",2) I X S DA(1)=DA,DA=N D TRANK^PRCSEZZ S DA=DA(1) |
3561 | +"RTN","PRCSEA",122,0) |
3562 | + D ERS410^PRC0G(DA_"^C") |
3563 | +"RTN","PRCSEA",123,0) |
3564 | + W !,"Enter comments for this cancellation",! |
3565 | +"RTN","PRCSEA",124,0) |
3566 | + S DIE=DIC,DR=60 |
3567 | +"RTN","PRCSEA",125,0) |
3568 | + D ^DIE |
3569 | +"RTN","PRCSEA",126,0) |
3570 | + ;PRC*5.1*81 if DM trx, update Audit file and send msg to DM |
3571 | +"RTN","PRCSEA",127,0) |
3572 | + D EN^PRCVTCA(DA) |
3573 | +"RTN","PRCSEA",128,0) |
3574 | + L -^PRCS(410,DA) |
3575 | +"RTN","PRCSEA",129,0) |
3576 | + I $D(^PRC(443,DA,0)) S DIK="^PRC(443," D ^DIK K DIK |
3577 | +"RTN","PRCSEA",130,0) |
3578 | + S T="cancel" D W4 G EXIT:%'=1 |
3579 | +"RTN","PRCSEA",131,0) |
3580 | + W !! G CT |
3581 | +"RTN","PRCSEA",132,0) |
3582 | + ; |
3583 | +"RTN","PRCSEA",133,0) |
3584 | +DT ;DELETE A (TEMPORARY) TRANS |
3585 | +"RTN","PRCSEA",134,0) |
3586 | + S X3="H" |
3587 | +"RTN","PRCSEA",135,0) |
3588 | + D W6 ; format doc for txn# |
3589 | +"RTN","PRCSEA",136,0) |
3590 | + S DIC="^PRCS(410,",DIC(0)="AEQ",DIC("A")="Select TRANSACTION: ",D="H" |
3591 | +"RTN","PRCSEA",137,0) |
3592 | + S DIC("S")="S W=$P(^(0),""^"",5),W(1)=+^(3) I '^(0),$P(^(0),""^"",3)'="""",^PRCS(410,""H"",$P(^(0),""^"",3),+Y)=DUZ!(^(+Y)="""")!($D(^PRC(420,""A"",DUZ,W,W(1),1)))!($D(^(2)))" |
3593 | +"RTN","PRCSEA",138,0) |
3594 | + D ^PRCSDIC G EXIT:Y<0 |
3595 | +"RTN","PRCSEA",139,0) |
3596 | + K DIC("S"),DIC("A") |
3597 | +"RTN","PRCSEA",140,0) |
3598 | + S DA=+Y |
3599 | +"RTN","PRCSEA",141,0) |
3600 | + L +^PRCS(410,DA):5 I $T=0 W !,"File is being accessed...please try later" G DT |
3601 | +"RTN","PRCSEA",142,0) |
3602 | +DT1 W !,"Delete this transaction" S %=2 D YN^DICN G DT1:%=0,EXIT:%'=1 |
3603 | +"RTN","PRCSEA",143,0) |
3604 | + ;The following line was commented out in patch 182; should NOT manually |
3605 | +"RTN","PRCSEA",144,0) |
3606 | + ;change or reset last assigned IEN # in node zero. |
3607 | +"RTN","PRCSEA",145,0) |
3608 | + ;S PRCSDA=$P(^PRCS(410,0),U,3),DIK=DIC |
3609 | +"RTN","PRCSEA",146,0) |
3610 | + S DIK=DIC |
3611 | +"RTN","PRCSEA",147,0) |
3612 | + W !,"Okay....." |
3613 | +"RTN","PRCSEA",148,0) |
3614 | + D ^DIK K DIK |
3615 | +"RTN","PRCSEA",149,0) |
3616 | + L -^PRCS(410,DA) |
3617 | +"RTN","PRCSEA",150,0) |
3618 | + ;The following line was commented out in patch 182; should NOT manually |
3619 | +"RTN","PRCSEA",151,0) |
3620 | + ;change or reset last assigned IEN # in node zero. |
3621 | +"RTN","PRCSEA",152,0) |
3622 | + ;S $P(^PRCS(410,0),U,3)=PRCSDA |
3623 | +"RTN","PRCSEA",153,0) |
3624 | + K PRCSDA |
3625 | +"RTN","PRCSEA",154,0) |
3626 | + W "It's deleted" |
3627 | +"RTN","PRCSEA",155,0) |
3628 | + S T="delete" D W4 G EXIT:%'=1 |
3629 | +"RTN","PRCSEA",156,0) |
3630 | + W !! G DT |
3631 | +"RTN","PRCSEA",157,0) |
3632 | + ; |
3633 | +"RTN","PRCSEA",158,0) |
3634 | + ; |
3635 | +"RTN","PRCSEA",159,0) |
3636 | +DOR ; Date of Request |
3637 | +"RTN","PRCSEA",160,0) |
3638 | + I $D(^PRCS(410,DA,1)),$P(^PRCS(410,DA,1),"^")'="" Q |
3639 | +"RTN","PRCSEA",161,0) |
3640 | + S %DT="X",X="T" D ^%DT S $P(^PRCS(410,DA,1),"^")=Y |
3641 | +"RTN","PRCSEA",162,0) |
3642 | + Q |
3643 | +"RTN","PRCSEA",163,0) |
3644 | +FORM ;*81 Allow user to change txn to a valid form and check site parameter to see if issue books are allowed |
3645 | +"RTN","PRCSEA",164,0) |
3646 | + D CKPRM |
3647 | +"RTN","PRCSEA",165,0) |
3648 | + I PRCVD=1 S PRCVX1="I Y>1&(Y<5)",PRCVY1="The Issue Book and NO FORM type are not valid in this option." |
3649 | +"RTN","PRCSEA",166,0) |
3650 | + I PRCVD'=1 S PRCVX1="I Y>1",PRCVY1="The NO FORM type is not valid in this option." |
3651 | +"RTN","PRCSEA",167,0) |
3652 | + W !,PRCVY1,! |
3653 | +"RTN","PRCSEA",168,0) |
3654 | + W !,"Please enter another form type",! |
3655 | +"RTN","PRCSEA",169,0) |
3656 | + S PRCSDAA=DA,DIC="^PRCS(410.5,",DIC("A")="FORM TYPE: ",DIC(0)="AEQZ" |
3657 | +"RTN","PRCSEA",170,0) |
3658 | + S DIC("S")=PRCVX1 |
3659 | +"RTN","PRCSEA",171,0) |
3660 | + D ^DIC |
3661 | +"RTN","PRCSEA",172,0) |
3662 | + S:Y=-1 Y=2 |
3663 | +"RTN","PRCSEA",173,0) |
3664 | + S DA=PRCSDAA,$P(^PRCS(410,DA,0),"^",4)=+Y,X=+Y |
3665 | +"RTN","PRCSEA",174,0) |
3666 | + K DIC,PRCVX1,PRCVY1,PRCVD |
3667 | +"RTN","PRCSEA",175,0) |
3668 | + Q |
3669 | +"RTN","PRCSEA",176,0) |
3670 | + ; |
3671 | +"RTN","PRCSEA",177,0) |
3672 | + ;Allow user the option of re entering a form type. If they decline, |
3673 | +"RTN","PRCSEA",178,0) |
3674 | + ;kill off the transaction and return 1; else return 0 |
3675 | +"RTN","PRCSEA",179,0) |
3676 | +BACKOUT(TRNNAME,TRNDA) ; |
3677 | +"RTN","PRCSEA",180,0) |
3678 | + N DIK,Y,%,DA |
3679 | +"RTN","PRCSEA",181,0) |
3680 | + F D Q:%'=0 |
3681 | +"RTN","PRCSEA",182,0) |
3682 | + . W !!,"WARNING: WITHOUT A FORM TYPE, TRANSACTION """,TRNNAME,""" WILL BE DELETED!",$C(7) |
3683 | +"RTN","PRCSEA",183,0) |
3684 | + . W !,"Are you sure you want to delete this transaction" S %=2 D YN^DICN |
3685 | +"RTN","PRCSEA",184,0) |
3686 | + . Q |
3687 | +"RTN","PRCSEA",185,0) |
3688 | + I %=2 Q 0 |
3689 | +"RTN","PRCSEA",186,0) |
3690 | + S DIK="^PRCS(410,",DA=TRNDA |
3691 | +"RTN","PRCSEA",187,0) |
3692 | + D ^DIK |
3693 | +"RTN","PRCSEA",188,0) |
3694 | + Q 1 |
3695 | +"RTN","PRCSEA",189,0) |
3696 | + ; |
3697 | +"RTN","PRCSEA",190,0) |
3698 | +W2 W !!,"You are not an authorized control point user.",!,"Contact control point official" R X:5 G EXIT |
3699 | +"RTN","PRCSEA",191,0) |
3700 | +W3 Q ; can this subroutine be deleted? commented out in patch PRC*5*140 |
3701 | +"RTN","PRCSEA",192,0) |
3702 | + W !!,"This transaction is assigned temporary transaction number: ",X Q |
3703 | +"RTN","PRCSEA",193,0) |
3704 | +W4 W !!,"Would you like to ",T," another transaction" S %=2 D YN^DICN G W4:%=0 Q |
3705 | +"RTN","PRCSEA",194,0) |
3706 | +W5 W !!,"Would you like to ",T," another request" S %=1 D YN^DICN G W5:%=0 Q |
3707 | +"RTN","PRCSEA",195,0) |
3708 | +W6 W !!,"For the transaction number, use an uppercase alpha as the first character,",!," and then 2-15 alphanumerics, as in 'ADP1'.",! Q |
3709 | +"RTN","PRCSEA",196,0) |
3710 | + ;*81 Site parameter pull |
3711 | +"RTN","PRCSEA",197,0) |
3712 | +CKPRM S PRCVD=$$GET^XPAR("SYS","PRCV COTS INVENTORY",1,"Q") |
3713 | +"RTN","PRCSEA",198,0) |
3714 | + Q |
3715 | +"RTN","PRCSEA",199,0) |
3716 | + ; |
3717 | +"RTN","PRCSEA",200,0) |
3718 | +EXIT K %,C,D,DA,DIC,DIE,DR,PRCS,PDA,PRCSL,T,X,Y,Z,T1,X3,TYPE,PRCVZ |
3719 | +"RTN","PRCSEA",201,0) |
3720 | + I $D(PRCSERR) K PRCSERR |
3721 | +"RTN","PRCSEA",202,0) |
3722 | + Q |
3723 | +"RTN","PSBOMH1") |
3724 | +0^38^B71152392 |
3725 | +"RTN","PSBOMH1",1,0) |
3726 | +PSBOMH1 ;BIRMINGHAM/EFC,MSC/JDA - MAH ;27APR2009 |
3727 | +"RTN","PSBOMH1",2,0) |
3728 | + ;;3.0;BAR CODE MED ADMIN;**6,3,9,11,26,MSC**;Mar 2004 |
3729 | +"RTN","PSBOMH1",3,0) |
3730 | + ; |
3731 | +"RTN","PSBOMH1",4,0) |
3732 | + ; Reference/IA |
3733 | +"RTN","PSBOMH1",5,0) |
3734 | + ; ^DILF/2054 |
3735 | +"RTN","PSBOMH1",6,0) |
3736 | + ; File 200/10060 |
3737 | +"RTN","PSBOMH1",7,0) |
3738 | + ; |
3739 | +"RTN","PSBOMH1",8,0) |
3740 | +EN ; |
3741 | +"RTN","PSBOMH1",9,0) |
3742 | + ; Load administrations |
3743 | +"RTN","PSBOMH1",10,0) |
3744 | + S (PSBORD,PSBIEN,PSBR1,PSBADIEN,PSBABR)="",PSBDT=PSBSTRT |
3745 | +"RTN","PSBOMH1",11,0) |
3746 | + K PSBTSA |
3747 | +"RTN","PSBOMH1",12,0) |
3748 | + F S PSBDT=$O(^PSB(53.79,"AADT",DFN,PSBDT)) Q:'PSBDT!(PSBDT>PSBSTOP) D |
3749 | +"RTN","PSBOMH1",13,0) |
3750 | + .F S PSBIEN=$O(^PSB(53.79,"AADT",DFN,PSBDT,PSBIEN)) Q:'PSBIEN Q:'$D(^PSB(53.79,PSBIEN)) L +^PSB(53.79,PSBIEN):3 I $P(^PSB(53.79,PSBIEN,0),U,9)]"" D L -^PSB(53.79,PSBIEN) |
3751 | +"RTN","PSBOMH1",14,0) |
3752 | + ..Q:'$P($G(^PSB(53.79,PSBIEN,0)),U,6) ; Bad IEN -no evnt dt |
3753 | +"RTN","PSBOMH1",15,0) |
3754 | + ..Q:$P(^PSB(53.79,PSBIEN,0),U,9)="N" ;NGiven |
3755 | +"RTN","PSBOMH1",16,0) |
3756 | + ..S PSBORD=$P($G(^PSB(53.79,PSBIEN,.1)),U,1) |
3757 | +"RTN","PSBOMH1",17,0) |
3758 | + ..; Continuous |
3759 | +"RTN","PSBOMH1",18,0) |
3760 | + ..D:$P($G(^PSB(53.79,PSBIEN,.1)),U,2)="C" |
3761 | +"RTN","PSBOMH1",19,0) |
3762 | + ...S X=PSBDT D H^%DTC S PSBWEEK=PSBAR(%H) D CLEAN^PSBVT,PSJ1^PSBVT($P(^PSB(53.79,PSBIEN,0),U,1),$P(^PSB(53.79,PSBIEN,.1),U,1)) |
3763 | +"RTN","PSBOMH1",20,0) |
3764 | + ...I $P(^PSB(53.79,PSBIEN,0),U,6)'=PSBDT,'$$IVPTAB^PSBVDLU3(PSBOTYP,PSBIVT,PSBISYR,PSBCHEMT,PSBMR) D D CLEAN^PSBVT Q ;chck IV audit |
3765 | +"RTN","PSBOMH1",21,0) |
3766 | + ....S PSBSIEN=PSBIEN |
3767 | +"RTN","PSBOMH1",22,0) |
3768 | + ....I $P(^PSB(53.79,PSBIEN,0),"^",10)]"" D BAGDTL^PSBRPC2(.PSBAUD,$P(^PSB(53.79,PSBIEN,0),U,10),$P(^PSB(53.79,PSBIEN,.1),U,1)) |
3769 | +"RTN","PSBOMH1",23,0) |
3770 | + ....S PSBIEN=PSBSIEN K PSBSIEN |
3771 | +"RTN","PSBOMH1",24,0) |
3772 | + ....S X=0 F S X=$O(PSBAUD(X)) Q:X="" I $P(PSBAUD(X),U,3)="" K PSBAUD(X) |
3773 | +"RTN","PSBOMH1",25,0) |
3774 | + ....S X=0 F S X=$O(PSBAUD(X)) Q:X="" Q:$P(PSBAUD(X),U,1)=PSBDT |
3775 | +"RTN","PSBOMH1",26,0) |
3776 | + ....I X="" K PSBAUD Q |
3777 | +"RTN","PSBOMH1",27,0) |
3778 | + ....I '$D(PSBAUD(X)) K PSBAUD Q |
3779 | +"RTN","PSBOMH1",28,0) |
3780 | + ....S PSBS=$P(PSBAUD(X),U,3) |
3781 | +"RTN","PSBOMH1",29,0) |
3782 | + ....I PSBS="GIVEN",$P($G(PSBAUD(X-1)),U,3)="NOT GIVEN" Q |
3783 | +"RTN","PSBOMH1",30,0) |
3784 | + ....I PSBS="NOT GIVEN" Q |
3785 | +"RTN","PSBOMH1",31,0) |
3786 | + ....S PSBS=$S(PSBS="INFUSING":"I",PSBS="GIVEN":"G",PSBS="COMPLETED":"C",PSBS="HELD":"H",PSBS="REFUSED":"R",PSBS="REMOVED":"RM",PSBS="STOPPED":"S",PSBS["MISSING":"M",1:"NOACTION") |
3787 | +"RTN","PSBOMH1",32,0) |
3788 | + ....D PSBSTIV^PSBOMH2 |
3789 | +"RTN","PSBOMH1",33,0) |
3790 | + ....S X=PSBDT_U_$P(PSBAUD(X),U,2)_U_PSBS_U_PSBIEN |
3791 | +"RTN","PSBOMH1",34,0) |
3792 | + ....S Y=$O(^TMP("PSB",$J,PSBWEEK,PSBORD,PSBDT\1,""),-1)+1 |
3793 | +"RTN","PSBOMH1",35,0) |
3794 | + ....S ^TMP("PSB",$J,PSBWEEK,PSBORD,PSBDT\1,Y)=X |
3795 | +"RTN","PSBOMH1",36,0) |
3796 | + ....S ^TMP("PSB",$J,PSBWEEK,PSBORD,PSBDT\1,0)=Y |
3797 | +"RTN","PSBOMH1",37,0) |
3798 | + ....D PSBOUT($P((X),"^",1),$P((X),"^",2)) |
3799 | +"RTN","PSBOMH1",38,0) |
3800 | + ....K PSBAUD |
3801 | +"RTN","PSBOMH1",39,0) |
3802 | + ...S PSBINIT=$$GET1^DIQ(53.79,PSBIEN_",","ACTION BY:INITIAL") |
3803 | +"RTN","PSBOMH1",40,0) |
3804 | + ...S PSBNAME=$$GET1^DIQ(53.79,PSBIEN_",","ACTION BY:NAME") |
3805 | +"RTN","PSBOMH1",41,0) |
3806 | + ...I PSBINIT="" S PSBINIT=99 |
3807 | +"RTN","PSBOMH1",42,0) |
3808 | + ...;get instrc info - audt log |
3809 | +"RTN","PSBOMH1",43,0) |
3810 | + ...I $D(^PSB(53.79,PSBIEN,.9,$P(PSBDT,"."))) D |
3811 | +"RTN","PSBOMH1",44,0) |
3812 | + ....D INSTR^PSBOMH |
3813 | +"RTN","PSBOMH1",45,0) |
3814 | + ....S ^TMP("PSB",$J,"LEGEND",PSBINIT,PSBNAME)="" |
3815 | +"RTN","PSBOMH1",46,0) |
3816 | + ...I PSBINIT[99 S PSBINIT="" |
3817 | +"RTN","PSBOMH1",47,0) |
3818 | + ...I $P(^PSB(53.79,PSBIEN,0),U,9)="G",PSBDT=$P(^PSB(53.79,PSBIEN,0),U,6) D PSBCK1^PSBOMH2("A") |
3819 | +"RTN","PSBOMH1",48,0) |
3820 | + ...I $P(^PSB(53.79,PSBIEN,0),U,9)'="G",PSBDT=$P(^PSB(53.79,PSBIEN,0),U,6) D PSBCK1^PSBOMH2("B") |
3821 | +"RTN","PSBOMH1",49,0) |
3822 | + ...I PSBDT'=$P(^PSB(53.79,PSBIEN,0),U,6),$P(^PSB(53.79,PSBIEN,0),U,9)="RM" D |
3823 | +"RTN","PSBOMH1",50,0) |
3824 | + ....D DDAUD |
3825 | +"RTN","PSBOMH1",51,0) |
3826 | + ....S I="" F S I=$O(PSBTAR(I),-1) Q:I="" I $P(PSBTAR(I),U,1)=PSBDT D |
3827 | +"RTN","PSBOMH1",52,0) |
3828 | + .....S PSBS=$P(PSBTAR(I),U,3) |
3829 | +"RTN","PSBOMH1",53,0) |
3830 | + .....I PSBS="GIVEN",$P($G(PSBTAR(I-1)),U,3)="NOT GIVEN" Q ; canceled - not given |
3831 | +"RTN","PSBOMH1",54,0) |
3832 | + .....I PSBS="NOT GIVEN" Q |
3833 | +"RTN","PSBOMH1",55,0) |
3834 | + .....S PSBS=$S(PSBS="INFUSING":"I",PSBS="GIVEN":"G",PSBS="COMPLETED":"C",PSBS="HELD":"H",PSBS="REFUSED":"R",PSBS="REMOVED":"RM",PSBS="STOPPED":"S",PSBS["MISSING":"M",1:"NO ACTION") |
3835 | +"RTN","PSBOMH1",56,0) |
3836 | + .....D PSBCTAR^PSBOMH2 |
3837 | +"RTN","PSBOMH1",57,0) |
3838 | + .....S X=$P(PSBTAR(I),U,1,2)_U_PSBS_U_PSBIEN |
3839 | +"RTN","PSBOMH1",58,0) |
3840 | + ...S Y=$O(^TMP("PSB",$J,PSBWEEK,PSBORD,PSBDT\1,""),-1)+1 |
3841 | +"RTN","PSBOMH1",59,0) |
3842 | + ...S ^TMP("PSB",$J,PSBWEEK,PSBORD,PSBDT\1,Y)=X |
3843 | +"RTN","PSBOMH1",60,0) |
3844 | + ...S ^TMP("PSB",$J,PSBWEEK,PSBORD,PSBDT\1,0)=Y |
3845 | +"RTN","PSBOMH1",61,0) |
3846 | + ...D PSBOUT($P((X),"^",1),$P((X),"^",2)) |
3847 | +"RTN","PSBOMH1",62,0) |
3848 | + ...Q |
3849 | +"RTN","PSBOMH1",63,0) |
3850 | + ..; 1-Time On Call or PRN |
3851 | +"RTN","PSBOMH1",64,0) |
3852 | + ..D:$P($G(^PSB(53.79,PSBIEN,.1)),U,2)'="C" |
3853 | +"RTN","PSBOMH1",65,0) |
3854 | + ...I PSBDT'=$$GET1^DIQ(53.79,PSBIEN_",",.06,"I") Q |
3855 | +"RTN","PSBOMH1",66,0) |
3856 | + ...S PSBINIT=$$GET1^DIQ(53.79,PSBIEN_",","ACTION BY:INITIAL") |
3857 | +"RTN","PSBOMH1",67,0) |
3858 | + ...S PSBNAME=$$GET1^DIQ(53.79,PSBIEN_",","ACTION BY:NAME") |
3859 | +"RTN","PSBOMH1",68,0) |
3860 | + ...I PSBINIT="" S PSBINIT=99 |
3861 | +"RTN","PSBOMH1",69,0) |
3862 | + ...S (PSBXA,PSBM)=1,(PSBZ,PSBT,PSBFLG)="" |
3863 | +"RTN","PSBOMH1",70,0) |
3864 | + ...I $$GET1^DIQ(53.79,PSBIEN_",",.09)="REMOVED" D |
3865 | +"RTN","PSBOMH1",71,0) |
3866 | + ....F I=1:1 S PSBXA=$O(^PSB(53.79,PSBIEN,.9,PSBXA)) Q:PSBXA="" I PSBXA?1.3N S PSBZ=PSBZ+1,PSBT(PSBZ)=^PSB(53.79,PSBIEN,.9,PSBXA,0) |
3867 | +"RTN","PSBOMH1",72,0) |
3868 | + ....F S=1:1 Q:PSBM<1 S PSBM=PSBZ-S I (PSBM>0) I (PSBT(PSBM)["GIVEN") S PSBFLG="1" S PRELINE1=$P(PSBT(PSBM),"'",2)_" "_$$GET1^DIQ(53.79,PSBIEN_",",.04)_" "_$E($P(PSBT(PSBM),"'",4),1,3) Q |
3869 | +"RTN","PSBOMH1",73,0) |
3870 | + ...I $D(^PSB(53.79,PSBIEN,.9,$P(PSBDT,"."))) D |
3871 | +"RTN","PSBOMH1",74,0) |
3872 | + ....D INSTR^PSBOMH |
3873 | +"RTN","PSBOMH1",75,0) |
3874 | + ....S ^TMP("PSB",$J,"LEGEND",PSBINIT,PSBNAME)="" |
3875 | +"RTN","PSBOMH1",76,0) |
3876 | + ...I '$D(^PSB(53.79,PSBIEN,.9,$P(PSBDT,"."))) D PSBOUT(PSBDT,PSBINIT) |
3877 | +"RTN","PSBOMH1",77,0) |
3878 | + ...S PSBLINE1=$$GET1^DIQ(53.79,PSBIEN_",",.09)_" "_$$GET1^DIQ(53.79,PSBIEN_",",.06)_" "_PSBINIT_" "_$$GET1^DIQ(53.79,PSBIEN_",",.21),PSBLINE2="" |
3879 | +"RTN","PSBOMH1",78,0) |
3880 | + ...I PSBINIT[99 S PSBINIT="" |
3881 | +"RTN","PSBOMH1",79,0) |
3882 | + ...D:$P($G(^PSB(53.79,PSBIEN,.1)),U,2)="P" |
3883 | +"RTN","PSBOMH1",80,0) |
3884 | + ....I $P($G(^PSB(53.79,PSBIEN,.2)),U,2)="" S PSBLINE2=" Results: <No PRN Results On File>" |
3885 | +"RTN","PSBOMH1",81,0) |
3886 | + ....E D |
3887 | +"RTN","PSBOMH1",82,0) |
3888 | + .....S PSBINIT=$$GET1^DIQ(53.79,PSBIEN_",","PRN EFFECTIVENESS ENTERED BY:INITIAL") |
3889 | +"RTN","PSBOMH1",83,0) |
3890 | + .....S PSBNAME=$$GET1^DIQ(53.79,PSBIEN_",","PRN EFFECTIVENESS ENTERED BY:NAME") |
3891 | +"RTN","PSBOMH1",84,0) |
3892 | + .....I PSBINIT="" S PSBINIT=99 |
3893 | +"RTN","PSBOMH1",85,0) |
3894 | + .....I $D(^PSB(53.79,PSBIEN,.9,$P(PSBDT,"."))) D |
3895 | +"RTN","PSBOMH1",86,0) |
3896 | + ......S PSBINIT=PSBINIT_"*",PSBNAME=PSBNAME_"/"_$P(^PSB(53.79,PSBIEN,.9,$P(PSBDT,"."),0),U,3)_" "_$$GET1^DIQ(53.79,PSBIEN_",",.24) |
3897 | +"RTN","PSBOMH1",87,0) |
3898 | + ......S ^TMP("PSB",$J,"LEGEND",PSBINIT,PSBNAME)="" |
3899 | +"RTN","PSBOMH1",88,0) |
3900 | + .....I '$D(^PSB(53.79,PSBIEN,.9,$P(PSBDT,"."))) D |
3901 | +"RTN","PSBOMH1",89,0) |
3902 | + ......D:$D(^PSB(53.79,PSBIEN,.9,0)) |
3903 | +"RTN","PSBOMH1",90,0) |
3904 | + .......S (PSBXA2,PSBFG)=0,PSBEFFDT=$P(^PSB(53.79,PSBIEN,.2),U,4) F S PSBXA2=$O(^PSB(53.79,PSBIEN,.9,PSBXA2)) Q:+PSBXA2'>0 D Q:PSBFG=1 |
3905 | +"RTN","PSBOMH1",91,0) |
3906 | + ........D:($P(^PSB(53.79,PSBIEN,.9,PSBXA2,0),U)=PSBEFFDT)&($P(^PSB(53.79,PSBIEN,.9,PSBXA2,0),U,3)["Instruct")&($P(^PSB(53.79,PSBIEN,.2),U,3)=$P(^PSB(53.79,PSBIEN,.9,PSBXA2,0),U,2)) |
3907 | +"RTN","PSBOMH1",92,0) |
3908 | + .........S PSBINIT=PSBINIT_"*",PSBNAME=PSBNAME_"/"_$P(^PSB(53.79,PSBIEN,.9,PSBXA2,0),U,3)_" "_$$GET1^DIQ(53.79,PSBIEN_",",.24) |
3909 | +"RTN","PSBOMH1",93,0) |
3910 | + .........S ^TMP("PSB",$J,"LEGEND",PSBINIT,PSBNAME)="",PSBFG=1 |
3911 | +"RTN","PSBOMH1",94,0) |
3912 | + .....S PSBLINE2=" Results: "_$$GET1^DIQ(53.79,PSBIEN_",",.22) |
3913 | +"RTN","PSBOMH1",95,0) |
3914 | + .....S PSBRTXTW=" Entered By "_PSBINIT_" on "_$$GET1^DIQ(53.79,PSBIEN_",",.24) |
3915 | +"RTN","PSBOMH1",96,0) |
3916 | + .....I PSBINIT[99 S PSBINIT="" |
3917 | +"RTN","PSBOMH1",97,0) |
3918 | + ...S X=PSBDT D H^%DTC F PSBWEEK=PSBAR(%H):-7 Q:$D(^TMP("PSB",$J,PSBWEEK,PSBORD,"AT",0))!('$D(PSBAR(PSBWEEK))) |
3919 | +"RTN","PSBOMH1",98,0) |
3920 | + ...S X=$O(^TMP("PSB",$J,PSBWEEK,PSBORD,"AT",""),-1)+1 |
3921 | +"RTN","PSBOMH1",99,0) |
3922 | + ...I PSBFLG="1" S ^TMP("PSB",$J,PSBWEEK,PSBORD,"AT",X)=PRELINE1 |
3923 | +"RTN","PSBOMH1",100,0) |
3924 | + ...S ^TMP("PSB",$J,PSBWEEK,PSBORD,"AT",X+1)=PSBLINE1 |
3925 | +"RTN","PSBOMH1",101,0) |
3926 | + ...I $G(PSBLINE2)]"" D |
3927 | +"RTN","PSBOMH1",102,0) |
3928 | + ....I $L(PSBLINE2)<90 S ^TMP("PSB",$J,PSBWEEK,PSBORD,"AT",X+2)=PSBLINE2 S:$$GET1^DIQ(53.79,PSBIEN_",",.24)'="" ^TMP("PSB",$J,PSBWEEK,PSBORD,"AT",X+3)=" "_PSBRTXTW |
3929 | +"RTN","PSBOMH1",103,0) |
3930 | + ....I $L(PSBLINE2)>90 D |
3931 | +"RTN","PSBOMH1",104,0) |
3932 | + .....S ^TMP("PSB",$J,PSBWEEK,PSBORD,"AT",X+2)=$E(PSBLINE2,1,90) |
3933 | +"RTN","PSBOMH1",105,0) |
3934 | + .....S ^TMP("PSB",$J,PSBWEEK,PSBORD,"AT",X+3)=" "_$E(PSBLINE2,91,161) |
3935 | +"RTN","PSBOMH1",106,0) |
3936 | + .....I $L(PSBLINE2)'>161 S ^TMP("PSB",$J,PSBWEEK,PSBORD,"AT",X+4)=" "_PSBRTXTW |
3937 | +"RTN","PSBOMH1",107,0) |
3938 | + .....I $L(PSBLINE2)>161 S ^TMP("PSB",$J,PSBWEEK,PSBORD,"AT",X+4)=" "_$E(PSBLINE2,162,200),^TMP("PSB",$J,PSBWEEK,PSBORD,"AT",X+5)=" "_PSBRTXTW |
3939 | +"RTN","PSBOMH1",108,0) |
3940 | + Q |
3941 | +"RTN","PSBOMH1",109,0) |
3942 | + ; |
3943 | +"RTN","PSBOMH1",110,0) |
3944 | +DDAUD ; audits for dispen drugs |
3945 | +"RTN","PSBOMH1",111,0) |
3946 | + ; |
3947 | +"RTN","PSBOMH1",112,0) |
3948 | + M PSBMLA=^PSB(53.79,PSBIEN) |
3949 | +"RTN","PSBOMH1",113,0) |
3950 | + S PSBGA="" I $D(PSBMLA(.9,0)) D |
3951 | +"RTN","PSBOMH1",114,0) |
3952 | + .F PSBX=1:1 Q:'$D(PSBMLA(.9,PSBX)) I ((PSBMLA(.9,PSBX,0)["ACTION STATUS")!(PSBMLA(.9,PSBX,0)["ADMINISTRATION STATUS")) D Q |
3953 | +"RTN","PSBOMH1",115,0) |
3954 | + ..I $D(PSBMLA(.9,PSBX-2,0)) D DT^DILF("ENPST",$P(PSBMLA(.9,PSBX-2,0),"'",2),.PSBDATE) |
3955 | +"RTN","PSBOMH1",116,0) |
3956 | + ..I '$D(PSBMLA(.9,PSBX-2,0)) S PSBDATE=$P(^PSB(53.79,PSBIEN,0),U,6) |
3957 | +"RTN","PSBOMH1",117,0) |
3958 | + ..S PSBTMP(10000000-PSBDATE,"B")=PSBDATE_U_$$INITIAL^PSBRPC2($P(PSBMLA(0),U,5))_U_$P(PSBMLA(.9,PSBX,0),"'",2) |
3959 | +"RTN","PSBOMH1",118,0) |
3960 | + ..S PSBGA=1 |
3961 | +"RTN","PSBOMH1",119,0) |
3962 | + .F PSBX=1:1 Q:'$D(PSBMLA(.9,PSBX)) I ((PSBMLA(.9,PSBX,0)["ACTION STATUS")!(PSBMLA(.9,PSBX,0)["ADMINISTRATION STATUS")) D |
3963 | +"RTN","PSBOMH1",120,0) |
3964 | + ..S PSBTMP(10000000-$P(PSBMLA(.9,PSBX,0),U,1),"B")=$P(PSBMLA(.9,PSBX,0),U,1)_U_$$INITIAL^PSBRPC2($P(PSBMLA(.9,PSBX,0),U,2))_U_$P($P(PSBMLA(.9,PSBX,0),U,3),"'",2) |
3965 | +"RTN","PSBOMH1",121,0) |
3966 | + ..S PSBGA=1 |
3967 | +"RTN","PSBOMH1",122,0) |
3968 | + I PSBGA'=1 S PSBTMP(10000000-$P(PSBMLA(0),U,6),"A")=$P(PSBMLA(0),U,6)_U_$$INITIAL^PSBRPC2($P(PSBMLA(0),U,7)) |
3969 | +"RTN","PSBOMH1",123,0) |
3970 | + S PSBQRY="PSBTMP",PSBCNT=1 F S PSBPQRY=PSBQRY S PSBQRY=$Q(@PSBQRY) Q:PSBQRY="" D ; does comment go with action |
3971 | +"RTN","PSBOMH1",124,0) |
3972 | + .I PSBPQRY="PSBTMP" S PSBTAR(PSBCNT)=@PSBQRY,PSBCNT=PSBCNT+1 Q ; no prev action |
3973 | +"RTN","PSBOMH1",125,0) |
3974 | + .I $QS(PSBPQRY,2)="C" S PSBTAR(PSBCNT)=@PSBQRY,PSBCNT=PSBCNT+1 Q ; prev line = comment |
3975 | +"RTN","PSBOMH1",126,0) |
3976 | + .I $QS(PSBQRY,2)="C",$E($P(@PSBPQRY,U,1),1,12)=$E($P(@PSBQRY,U,1),1,12),$P(@PSBPQRY,U,2)=$P(@PSBQRY,U,2) D Q |
3977 | +"RTN","PSBOMH1",127,0) |
3978 | + ..S X=$P(@PSBQRY,U,4) S:X[":" X=$P(X,":",2) S $P(PSBTAR(PSBCNT-1),U,4)=X Q |
3979 | +"RTN","PSBOMH1",128,0) |
3980 | + .S PSBTAR(PSBCNT)=@PSBQRY,PSBCNT=PSBCNT+1 |
3981 | +"RTN","PSBOMH1",129,0) |
3982 | + Q |
3983 | +"RTN","PSBOMH1",130,0) |
3984 | + ; |
3985 | +"RTN","PSBOMH1",131,0) |
3986 | +PSBOUT(PSBTET,PSBOT1) ; |
3987 | +"RTN","PSBOMH1",132,0) |
3988 | + I '$D(^PSB(53.79,PSBIEN,.9,0)) D PSBENT^PSBOMH2(PSBOT1) |
3989 | +"RTN","PSBOMH1",133,0) |
3990 | + S PSBIDA="" I $P(^PSB(53.79,PSBIEN,0),U,6)=PSBTET S PSBIDA=$P(^PSB(53.79,PSBIEN,0),U,7),PSBOT1=$P(^VA(200,PSBIDA,0),"^",2),PSBNAME=$P(^VA(200,PSBIDA,0),"^",1) |
3991 | +"RTN","PSBOMH1",134,0) |
3992 | + S PSBXA1=0 |
3993 | +"RTN","PSBOMH1",135,0) |
3994 | + F S PSBXA1=$O(^PSB(53.79,PSBIEN,.9,PSBXA1)) Q:+PSBXA1'>0 I PSBXA1'=0 D Q:$G(PSBOT1)["*" |
3995 | +"RTN","PSBOMH1",136,0) |
3996 | + .I $L(PSBXA1)<4 D |
3997 | +"RTN","PSBOMH1",137,0) |
3998 | + ..I $P(^PSB(53.79,PSBIEN,.9,PSBXA1,0),"^",1)=PSBTET D |
3999 | +"RTN","PSBOMH1",138,0) |
4000 | + ...S:$G(PSBIDA)="" PSBIDA=$P(^PSB(53.79,PSBIEN,.9,PSBXA1,0),"^",2),PSBOT1=$P(^VA(200,PSBIDA,0),"^",2),PSBNAME=$P(^VA(200,PSBIDA,0),"^",1) |
4001 | +"RTN","PSBOMH1",139,0) |
4002 | + ...I (PSBIDA=$P(^PSB(53.79,PSBIEN,.9,PSBXA1,0),"^",2)),$P(^PSB(53.79,PSBIEN,.9,PSBXA1,0),"^",3)["Instruct" D |
4003 | +"RTN","PSBOMH1",140,0) |
4004 | + ....S INSDD=$P(^PSB(53.79,PSBIEN,.9,PSBXA1,0),"^",1),Y=INSDD D DD^%DT S INSDD=Y |
4005 | +"RTN","PSBOMH1",141,0) |
4006 | + ....S PSBOT1=PSBOT1_"*",PSBNAME=PSBNAME_"/"_$P(^PSB(53.79,PSBIEN,.9,PSBXA1,0),U,3)_" "_INSDD |
4007 | +"RTN","PSBOMH1",142,0) |
4008 | + I $G(PSBIDA)="",$P(^PSB(53.79,PSBIEN,0),U,4)=PSBTET D |
4009 | +"RTN","PSBOMH1",143,0) |
4010 | + .S PSBIDA=$P(^PSB(53.79,PSBIEN,0),U,5),PSBOT1=$P(^VA(200,PSBIDA,0),"^",2),PSBNAME=$P(^VA(200,PSBIDA,0),"^",1) |
4011 | +"RTN","PSBOMH1",144,0) |
4012 | + I $G(PSBNAME)="" D |
4013 | +"RTN","PSBOMH1",145,0) |
4014 | + . S PSBIDA=$P(^PSB(53.79,PSBIEN,0),U,5),PSBOT1=$P(^VA(200,PSBIDA,0),"^",2),PSBNAME=$P(^VA(200,PSBIDA,0),"^",1) |
4015 | +"RTN","PSBOMH1",146,0) |
4016 | + I $G(PSBOT1)]""&($G(PSBNAME)]"") S ^TMP("PSB",$J,"LEGEND",PSBOT1,PSBNAME)="" ;MSC |
4017 | +"RTN","PSBOMH1",147,0) |
4018 | + Q |
4019 | +"RTN","PSBOMH1",148,0) |
4020 | + ; |
4021 | +"RTN","PSBRPC2") |
4022 | +0^39^B44967923 |
4023 | +"RTN","PSBRPC2",1,0) |
4024 | +PSBRPC2 ;BIRMINGHAM/EFC,MSC/JDA - BCMA RPC BROKER CALLS ;27APR2009 |
4025 | +"RTN","PSBRPC2",2,0) |
4026 | + ;;3.0;BAR CODE MED ADMIN;**6,3,16,MSC**;Mar 2004 |
4027 | +"RTN","PSBRPC2",3,0) |
4028 | + ; |
4029 | +"RTN","PSBRPC2",4,0) |
4030 | + ; Reference/IA |
4031 | +"RTN","PSBRPC2",5,0) |
4032 | + ; File 50/221 |
4033 | +"RTN","PSBRPC2",6,0) |
4034 | + ; File 52.6/436 |
4035 | +"RTN","PSBRPC2",7,0) |
4036 | + ; File 52.7/437 |
4037 | +"RTN","PSBRPC2",8,0) |
4038 | + ; File 200/10060 |
4039 | +"RTN","PSBRPC2",9,0) |
4040 | + ; |
4041 | +"RTN","PSBRPC2",10,0) |
4042 | +GETOHIST(RESULTS,DFN,PSBORD) ; |
4043 | +"RTN","PSBRPC2",11,0) |
4044 | + S RESULTS=$NAME(^TMP("PSB",$J)),PSB=0 |
4045 | +"RTN","PSBRPC2",12,0) |
4046 | + S ^TMP("PSB",$J,0)=1,^TMP("PSB",$J,1)="-1^No History On File" |
4047 | +"RTN","PSBRPC2",13,0) |
4048 | + D NOW^%DTC S PSBNOW=$P(%,".",1),PSBNOWZ=% |
4049 | +"RTN","PSBRPC2",14,0) |
4050 | + D EN^PSBPOIV(DFN,PSBORD) |
4051 | +"RTN","PSBRPC2",15,0) |
4052 | + S PSBUID=DFN_"V"_99999 F S PSBUID=$O(^TMP("PSBAR",$J,PSBUID),-1) Q:PSBUID="" D |
4053 | +"RTN","PSBRPC2",16,0) |
4054 | + .S PSBUIDS=^TMP("PSBAR",$J,PSBUID) |
4055 | +"RTN","PSBRPC2",17,0) |
4056 | + .I ((PSBOSTS="D")!(PSBOSTS="E")),$P(PSBUIDS,U,2)'="I",$P(PSBUIDS,U,2)'="S" Q ; only want the infusing bag on a dc'ed order |
4057 | +"RTN","PSBRPC2",18,0) |
4058 | + .I (PSBOSTS="A"),(PSBOSP<PSBNOWZ),$P(PSBUIDS,U,2)'="I",$P(PSBUIDS,U,2)'="S" S PSBOSTS="E" Q ; only want the infusing bag on an expired order |
4059 | +"RTN","PSBRPC2",19,0) |
4060 | + .I $P(PSBUIDS,U,2)'="" D Q ; get orders from med log (53.79) |
4061 | +"RTN","PSBRPC2",20,0) |
4062 | + ..S PSBMLOR=$P(PSBUIDS,U,4),PSBIEN=$O(^PSB(53.79,"AUID",DFN,PSBMLOR,PSBUID,"")) |
4063 | +"RTN","PSBRPC2",21,0) |
4064 | + ..S PSBLADT=$P(^PSB(53.79,PSBIEN,0),U,6) |
4065 | +"RTN","PSBRPC2",22,0) |
4066 | + ..S PSBLASTS=$P(^PSB(53.79,PSBIEN,0),U,9) |
4067 | +"RTN","PSBRPC2",23,0) |
4068 | + ..I PSBLASTS="M",$P(PSBUIDS,U,8)'="" Q |
4069 | +"RTN","PSBRPC2",24,0) |
4070 | + ..S PSBINJS=$P(^PSB(53.79,PSBIEN,.1),U,6) |
4071 | +"RTN","PSBRPC2",25,0) |
4072 | + ..S PSB=PSB+1,^TMP("PSB",$J,PSB)=PSBORD_U_PSBUID_U_PSBIEN_U_PSBLADT_U_PSBLASTS_U_PSBINJS |
4073 | +"RTN","PSBRPC2",26,0) |
4074 | + ..F PSBL=1:1 Q:'$D(^PSB(53.79,PSBIEN,.6,PSBL,0)) S PSB=PSB+1,^TMP("PSB",$J,PSB)="ADD^"_^PSB(53.79,PSBIEN,.6,PSBL,0) |
4075 | +"RTN","PSBRPC2",27,0) |
4076 | + ..F PSBL=1:1 Q:'$D(^PSB(53.79,PSBIEN,.7,PSBL,0)) S PSB=PSB+1,^TMP("PSB",$J,PSB)="SOL^"_^PSB(53.79,PSBIEN,.7,PSBL,0) |
4077 | +"RTN","PSBRPC2",28,0) |
4078 | + ..S PSB=PSB+1,^TMP("PSB",$J,PSB)="END" |
4079 | +"RTN","PSBRPC2",29,0) |
4080 | + .I $P(PSBUIDS,U,1)="I" Q ; IV parameters say bag is invalid |
4081 | +"RTN","PSBRPC2",30,0) |
4082 | + .I $P(PSBUIDS,U,8)'="",$P(PSBUIDS,U,2)'="I",$P(PSBUIDS,U,2)'="S" Q ; label has been reprinted/distroyed etc. - bag is not infusing or stopped |
4083 | +"RTN","PSBRPC2",31,0) |
4084 | + .S PSB=PSB+1,^TMP("PSB",$J,PSB)=$P(PSBUIDS,U,5)_U_PSBUID_U_U_PSBNOW_U_"A" |
4085 | +"RTN","PSBRPC2",32,0) |
4086 | + .S PSBUIDP=$P(PSBUIDS,U,10,999) |
4087 | +"RTN","PSBRPC2",33,0) |
4088 | + .F Y=3:1 S PSBMEDTY=$P(PSBUIDP,U,Y) Q:PSBMEDTY="" D |
4089 | +"RTN","PSBRPC2",34,0) |
4090 | + ..D CLEAN^PSBVT,PSJ1^PSBVT(DFN,$P(PSBUIDS,U,5)) |
4091 | +"RTN","PSBRPC2",35,0) |
4092 | + ..I $P(PSBMEDTY,";",1)="ADD" F Z=1:1 S PSBAD=$G(PSBADA(Z)) Q:PSBAD="" I $P(PSBADA(Z),U,2)=$P(PSBMEDTY,";",2) S PSB=PSB+1,^TMP("PSB",$J,PSB)=PSBADA(Z) Q |
4093 | +"RTN","PSBRPC2",36,0) |
4094 | + ..I $P(PSBMEDTY,";",1)="SOL" F Z=1:1 S PSBSOL=$G(PSBSOLA(Z)) Q:PSBSOL="" I $P(PSBSOLA(Z),U,2)=$P(PSBMEDTY,";",2) S PSB=PSB+1,^TMP("PSB",$J,PSB)=PSBSOLA(Z) Q |
4095 | +"RTN","PSBRPC2",37,0) |
4096 | + .D CLEAN^PSBVT,PSJ1^PSBVT(DFN,PSBORD) |
4097 | +"RTN","PSBRPC2",38,0) |
4098 | + .S PSB=PSB+1,^TMP("PSB",$J,PSB)="END" |
4099 | +"RTN","PSBRPC2",39,0) |
4100 | + F II=1:1 S I=$P(PSBONXS,U,II) Q:I="" D ; get ward stocks |
4101 | +"RTN","PSBRPC2",40,0) |
4102 | + .S PSBUID="" F S PSBUID=$O(^PSB(53.79,"AUID",DFN,I,PSBUID)) Q:PSBUID="" D |
4103 | +"RTN","PSBRPC2",41,0) |
4104 | + ..I PSBUID'["WS" Q ; not a ward stock |
4105 | +"RTN","PSBRPC2",42,0) |
4106 | + ..S PSBIEN=$O(^PSB(53.79,"AUID",DFN,I,PSBUID,"")) |
4107 | +"RTN","PSBRPC2",43,0) |
4108 | + ..S PSBLADT=$P(^PSB(53.79,PSBIEN,0),U,6) |
4109 | +"RTN","PSBRPC2",44,0) |
4110 | + ..S PSBLASTS=$P(^PSB(53.79,PSBIEN,0),U,9) |
4111 | +"RTN","PSBRPC2",45,0) |
4112 | + ..I PSBOSTS="D",PSBLASTS'="I",PSBLASTS'="S" Q ; want "not completed" on DC'ed orders |
4113 | +"RTN","PSBRPC2",46,0) |
4114 | + ..I (PSBOSTS="A"),(PSBOSP<PSBNOWZ),PSBLASTS'="I",PSBLASTS'="S" Q |
4115 | +"RTN","PSBRPC2",47,0) |
4116 | + ..S PSBINJS=$P(^PSB(53.79,PSBIEN,.1),U,6) |
4117 | +"RTN","PSBRPC2",48,0) |
4118 | + ..S PSB=PSB+1,^TMP("PSB",$J,PSB)=PSBORD_U_PSBUID_U_PSBIEN_U_PSBLADT_U_PSBLASTS_U_PSBINJS |
4119 | +"RTN","PSBRPC2",49,0) |
4120 | + ..F PSBL=1:1 Q:'$D(^PSB(53.79,PSBIEN,.6,PSBL,0)) S PSB=PSB+1,^TMP("PSB",$J,PSB)="ADD^"_^PSB(53.79,PSBIEN,.6,PSBL,0) |
4121 | +"RTN","PSBRPC2",50,0) |
4122 | + ..F PSBL=1:1 Q:'$D(^PSB(53.79,PSBIEN,.7,PSBL,0)) S PSB=PSB+1,^TMP("PSB",$J,PSB)="SOL^"_^PSB(53.79,PSBIEN,.7,PSBL,0) |
4123 | +"RTN","PSBRPC2",51,0) |
4124 | + ..S PSB=PSB+1,^TMP("PSB",$J,PSB)="END" |
4125 | +"RTN","PSBRPC2",52,0) |
4126 | + S ^TMP("PSB",$J,0)=PSB |
4127 | +"RTN","PSBRPC2",53,0) |
4128 | + K ^TMP("PSBAR",$J) |
4129 | +"RTN","PSBRPC2",54,0) |
4130 | + Q |
4131 | +"RTN","PSBRPC2",55,0) |
4132 | + ; |
4133 | +"RTN","PSBRPC2",56,0) |
4134 | +BAGDTL(RESULTS,PSBUID,PSBORD) ; bag detail |
4135 | +"RTN","PSBRPC2",57,0) |
4136 | + I '$G(DFN)!PSBUID S DFN=+PSBUID ;**GFT/MSC |
4137 | +"RTN","PSBRPC2",58,0) |
4138 | + S (PSBIEN,X)="" F S X=$O(^PSB(53.79,"AUID",DFN,X)) Q:X="" S:$D(^PSB(53.79,"AUID",DFN,X,PSBUID)) PSBIEN=$O(^PSB(53.79,"AUID",DFN,X,PSBUID,"")) Q:PSBIEN]"" |
4139 | +"RTN","PSBRPC2",59,0) |
4140 | + I PSBIEN'>0 S RESULTS(0)=1,RESULTS(1)="-1^No History On File" Q |
4141 | +"RTN","PSBRPC2",60,0) |
4142 | + M PSBMLA=^PSB(53.79,PSBIEN) |
4143 | +"RTN","PSBRPC2",61,0) |
4144 | + S X=$P(^PSB(53.79,PSBIEN,0),U,9) |
4145 | +"RTN","PSBRPC2",62,0) |
4146 | + S PSBLAC=$S(X="I":"INFUSING",X="G":"GIVEN",X="C":"COMPLETE",X="H":"HELD",X="R":"REFUSED",X="RM":"REMOVED",X="S":"STOPPED",X="M":"MISSING",1:"NO ACTION") |
4147 | +"RTN","PSBRPC2",63,0) |
4148 | + ; comments |
4149 | +"RTN","PSBRPC2",64,0) |
4150 | + S PSBX="0" F S PSBX=$O(PSBMLA(.3,PSBX)) Q:PSBX="" S PSBTMP(10000000-$P(PSBMLA(.3,PSBX,0),U,3),"C")=$P(PSBMLA(.3,PSBX,0),U,3)_U_$$INITIAL($P(PSBMLA(.3,PSBX,0),U,2))_U_U_$P(PSBMLA(.3,PSBX,0),U,1) |
4151 | +"RTN","PSBRPC2",65,0) |
4152 | + ; audit |
4153 | +"RTN","PSBRPC2",66,0) |
4154 | + S PSBGA="" I $D(PSBMLA(.9,0)) D |
4155 | +"RTN","PSBRPC2",67,0) |
4156 | + .S PSBX="0" F S PSBX=$O(PSBMLA(.9,PSBX)) Q:PSBX="" I ((PSBMLA(.9,PSBX,0)["ACTION STATUS")!(PSBMLA(.9,PSBX,0)["ADMINISTRATION STATUS")) D Q |
4157 | +"RTN","PSBRPC2",68,0) |
4158 | + ..S PSBDATE=$P(PSBMLA(0),U,4) I (PSBX-2)>0 D DT^DILF("ENPST",$P(PSBMLA(.9,PSBX-2,0),"'",2),.PSBDATE) |
4159 | +"RTN","PSBRPC2",69,0) |
4160 | + ..S PSBTMP(10000000-PSBDATE,"B")=PSBDATE_U_$$INITIAL($P(PSBMLA(0),U,5))_U_$P(PSBMLA(.9,PSBX,0),"'",2) |
4161 | +"RTN","PSBRPC2",70,0) |
4162 | + ..S PSBGA=1 |
4163 | +"RTN","PSBRPC2",71,0) |
4164 | + .S PSBX="0" F S PSBX=$O(PSBMLA(.9,PSBX)) Q:PSBX="" I ((PSBMLA(.9,PSBX,0)["ACTION STATUS")!(PSBMLA(.9,PSBX,0)["ADMINISTRATION STATUS")) D |
4165 | +"RTN","PSBRPC2",72,0) |
4166 | + ..S PSBTMP(10000000-$P(PSBMLA(.9,PSBX,0),U,1),"B")=$P(PSBMLA(.9,PSBX,0),U,1)_U_$$INITIAL($P(PSBMLA(.9,PSBX,0),U,2))_U_$P($P(PSBMLA(.9,PSBX,0),U,3),"'",2) |
4167 | +"RTN","PSBRPC2",73,0) |
4168 | + ..S PSBGA=1 |
4169 | +"RTN","PSBRPC2",74,0) |
4170 | + I PSBGA'=1 S PSBTMP(10000000-$P(PSBMLA(0),U,6),"A")=$P(PSBMLA(0),U,6)_U_$$INITIAL($P(PSBMLA(0),U,7))_U_PSBLAC |
4171 | +"RTN","PSBRPC2",75,0) |
4172 | + S PSBQRY="PSBTMP",PSBCNT=1 F S PSBPQRY=PSBQRY S PSBQRY=$Q(@PSBQRY) Q:PSBQRY="" D ; does comment go with action |
4173 | +"RTN","PSBRPC2",76,0) |
4174 | + .I PSBPQRY="PSBTMP" S RESULTS(PSBCNT)=@PSBQRY,PSBCNT=PSBCNT+1 Q ; no previous action |
4175 | +"RTN","PSBRPC2",77,0) |
4176 | + .I $QS(PSBPQRY,2)="C" S RESULTS(PSBCNT)=@PSBQRY,PSBCNT=PSBCNT+1 Q ; previous line is a comment |
4177 | +"RTN","PSBRPC2",78,0) |
4178 | + .I $QS(PSBQRY,2)="C",$E($P(@PSBPQRY,U,1),1,12)=$E($P(@PSBQRY,U,1),1,12),$P(@PSBPQRY,U,2)=$P(@PSBQRY,U,2) S X=$P(@PSBQRY,U,4),$P(RESULTS(PSBCNT-1),U,4)=X Q |
4179 | +"RTN","PSBRPC2",79,0) |
4180 | + .S RESULTS(PSBCNT)=@PSBQRY,PSBCNT=PSBCNT+1 |
4181 | +"RTN","PSBRPC2",80,0) |
4182 | + S RESULTS(0)=PSBCNT-1 |
4183 | +"RTN","PSBRPC2",81,0) |
4184 | + K PSBMLA,PSBIEN,PSBTMP,PSBQRY |
4185 | +"RTN","PSBRPC2",82,0) |
4186 | + Q |
4187 | +"RTN","PSBRPC2",83,0) |
4188 | + ; |
4189 | +"RTN","PSBRPC2",84,0) |
4190 | +INITIAL(PSBDUZ) ; |
4191 | +"RTN","PSBRPC2",85,0) |
4192 | + Q $$GET1^DIQ(200,PSBDUZ,"INITIAL") |
4193 | +"RTN","PSBRPC2",86,0) |
4194 | +SCANMED(RESULTS,PSBDIEN,PSBTAB) ; Lookup Medication |
4195 | +"RTN","PSBRPC2",87,0) |
4196 | + ; |
4197 | +"RTN","PSBRPC2",88,0) |
4198 | + ; RPC: PSB SCANMED |
4199 | +"RTN","PSBRPC2",89,0) |
4200 | + ; |
4201 | +"RTN","PSBRPC2",90,0) |
4202 | + ; Description: |
4203 | +"RTN","PSBRPC2",91,0) |
4204 | + ; Does a lookup on file 50 returns -1 on invalid lookup or |
4205 | +"RTN","PSBRPC2",92,0) |
4206 | + ; IEN^DrugName on success |
4207 | +"RTN","PSBRPC2",93,0) |
4208 | + ; |
4209 | +"RTN","PSBRPC2",94,0) |
4210 | + D NOW^%DTC S PSBDT=% |
4211 | +"RTN","PSBRPC2",95,0) |
4212 | + S PSBCNT=0 |
4213 | +"RTN","PSBRPC2",96,0) |
4214 | + I $L(PSBDIEN)>40 S PSBDIEN=$E(PSBDIEN,1,40) |
4215 | +"RTN","PSBRPC2",97,0) |
4216 | + S RESULTS(PSBCNT)=1 |
4217 | +"RTN","PSBRPC2",98,0) |
4218 | + S PSBCNT=PSBCNT+1,RESULTS(PSBCNT)="-1^Invalid Medication Lookup" |
4219 | +"RTN","PSBRPC2",99,0) |
4220 | + I $$GET^XPAR("DIV","PSB ROBOT RX"),PSBDIEN?1"3"15N!(PSBDIEN?1"3"17N),123[$E(PSBDIEN,12) S PSBDIEN=$E(PSBDIEN,2,11) |
4221 | +"RTN","PSBRPC2",100,0) |
4222 | + I PSBTAB="UDTAB" D Q |
4223 | +"RTN","PSBRPC2",101,0) |
4224 | + .S X=$$FIND1^DIC(50,"","AX",PSBDIEN,"B^C") |
4225 | +"RTN","PSBRPC2",102,0) |
4226 | + .I X<1 Q |
4227 | +"RTN","PSBRPC2",103,0) |
4228 | + .E S RESULTS(PSBCNT)="DD"_U_X_U_$$GET1^DIQ(50,X_",",.01) |
4229 | +"RTN","PSBRPC2",104,0) |
4230 | + ; |
4231 | +"RTN","PSBRPC2",105,0) |
4232 | + ; IV/IVPB ward stock scan |
4233 | +"RTN","PSBRPC2",106,0) |
4234 | + ; |
4235 | +"RTN","PSBRPC2",107,0) |
4236 | + S PSBDIEN=$$FIND1^DIC(50,"","AX",PSBDIEN,"B^C") I PSBDIEN<1 Q |
4237 | +"RTN","PSBRPC2",108,0) |
4238 | + S PSBOIT=$$GET1^DIQ(50,PSBDIEN,"PHARMACY ORDERABLE ITEM","I") |
4239 | +"RTN","PSBRPC2",109,0) |
4240 | + I $D(^PSDRUG("A527",PSBDIEN)) S X="" F S X=$O(^PSDRUG("A527",PSBDIEN,X)) Q:X="" D |
4241 | +"RTN","PSBRPC2",110,0) |
4242 | + .S PSBINACT=$$GET1^DIQ(52.7,X,8,"I") I PSBINACT]"",PSBINACT'>PSBDT Q |
4243 | +"RTN","PSBRPC2",111,0) |
4244 | + .S RESULTS(PSBCNT)="SOL"_U_X_U_$$GET1^DIQ(50,PSBDIEN_",",.01),PSBCNT=PSBCNT+1,RESULTS(0)=PSBCNT-1 |
4245 | +"RTN","PSBRPC2",112,0) |
4246 | + I $D(^PSDRUG("A526",PSBDIEN)) S X="" F S X=$O(^PSDRUG("A526",PSBDIEN,X)) Q:X="" D |
4247 | +"RTN","PSBRPC2",113,0) |
4248 | + .S PSBINACT=$$GET1^DIQ(52.6,X,12,"I") I PSBINACT]"",PSBINACT'>PSBDT Q |
4249 | +"RTN","PSBRPC2",114,0) |
4250 | + .S RESULTS(PSBCNT)="ADD"_U_X_U_$$GET1^DIQ(50,PSBDIEN_",",.01),PSBCNT=PSBCNT+1,RESULTS(0)=PSBCNT-1 |
4251 | +"RTN","PSBRPC2",115,0) |
4252 | + ; |
4253 | +"RTN","PSBRPC2",116,0) |
4254 | + I PSBTAB="PBTAB",$$FIND1^DIC(50,"","AX",PSBDIEN,"B^C")'<1 S X=$$FIND1^DIC(50,"","AX",PSBDIEN,"B^C"),RESULTS(PSBCNT)="DD"_U_X_U_$$GET1^DIQ(50,X_",",.01),PSBCNT=PSBCNT+1,RESULTS(0)=PSBCNT-1 |
4255 | +"RTN","PSBRPC2",117,0) |
4256 | + Q |
4257 | +"RTN","PSBRPC2",118,0) |
4258 | + ; |
4259 | +"RTN","PXRMTMED") |
4260 | +0^40^B9970277 |
4261 | +"RTN","PXRMTMED",1,0) |
4262 | +PXRMTMED ; SLC/PKR/PJH,MSC/JDA - Edit a reminder term. ;27APR2009 |
4263 | +"RTN","PXRMTMED",2,0) |
4264 | + ;;2.0;CLINICAL REMINDERS;**1,MSC**;Feb 04, 2005 |
4265 | +"RTN","PXRMTMED",3,0) |
4266 | + ; |
4267 | +"RTN","PXRMTMED",4,0) |
4268 | + ;======================================================= |
4269 | +"RTN","PXRMTMED",5,0) |
4270 | + N CS1,CS2,DA,DIC,DLAYGO,DTOUT,DUOUT,Y |
4271 | +"RTN","PXRMTMED",6,0) |
4272 | +GETNAME ;Get the name of the term to edit. |
4273 | +"RTN","PXRMTMED",7,0) |
4274 | + K DA,DIC,DLAYGO,DTOUT,DUOUT,Y |
4275 | +"RTN","PXRMTMED",8,0) |
4276 | + S DIC="^PXRMD(811.5," |
4277 | +"RTN","PXRMTMED",9,0) |
4278 | + S DIC(0)="AEMQL" |
4279 | +"RTN","PXRMTMED",10,0) |
4280 | + S DIC("A")="Select Reminder Term: " |
4281 | +"RTN","PXRMTMED",11,0) |
4282 | + S DLAYGO=811.5 |
4283 | +"RTN","PXRMTMED",12,0) |
4284 | + ;Set the starting place for additions. |
4285 | +"RTN","PXRMTMED",13,0) |
4286 | + D SETSTART^PXRMCOPY(DIC) |
4287 | +"RTN","PXRMTMED",14,0) |
4288 | + W ! |
4289 | +"RTN","PXRMTMED",15,0) |
4290 | + D ^DIC |
4291 | +"RTN","PXRMTMED",16,0) |
4292 | + I ($D(DTOUT))!($D(DUOUT)) Q |
4293 | +"RTN","PXRMTMED",17,0) |
4294 | + I Y=-1 G END |
4295 | +"RTN","PXRMTMED",18,0) |
4296 | + S DA=$P(Y,U,1) |
4297 | +"RTN","PXRMTMED",19,0) |
4298 | + S CS1=$$FILE^PXRMEXCS(811.5,DA) |
4299 | +"RTN","PXRMTMED",20,0) |
4300 | + D EDIT(DIC,DA) |
4301 | +"RTN","PXRMTMED",21,0) |
4302 | + I $G(DA)="" G GETNAME |
4303 | +"RTN","PXRMTMED",22,0) |
4304 | + S CS2=$$FILE^PXRMEXCS(811.5,DA) |
4305 | +"RTN","PXRMTMED",23,0) |
4306 | + I CS2=0 G GETNAME |
4307 | +"RTN","PXRMTMED",24,0) |
4308 | + I CS2'=CS1 D SEHIST^PXRMUTIL(811.5,DIC,DA) |
4309 | +"RTN","PXRMTMED",25,0) |
4310 | + G GETNAME |
4311 | +"RTN","PXRMTMED",26,0) |
4312 | +END ; |
4313 | +"RTN","PXRMTMED",27,0) |
4314 | + Q |
4315 | +"RTN","PXRMTMED",28,0) |
4316 | + ; |
4317 | +"RTN","PXRMTMED",29,0) |
4318 | + ;======================================================= |
4319 | +"RTN","PXRMTMED",30,0) |
4320 | +EDIT(ROOT,DA) ; |
4321 | +"RTN","PXRMTMED",31,0) |
4322 | + N CLASS,DIC,DIE,DR,DIDEL,PXRMTMD,RESULT,TCONT,Y |
4323 | +"RTN","PXRMTMED",32,0) |
4324 | + ;PXRMTMD is set by a xref on the .01 as a flag that the entire |
4325 | +"RTN","PXRMTMED",33,0) |
4326 | + ;entry is being deleted. |
4327 | +"RTN","PXRMTMED",34,0) |
4328 | + S CLASS=$P($G(^PXRMD(811.5,DA,100)),U,1) |
4329 | +"RTN","PXRMTMED",35,0) |
4330 | + S DIE=ROOT |
4331 | +"RTN","PXRMTMED",36,0) |
4332 | + I CLASS'="N"!(($G(PXRMINST)=1)&($G(DUZ(0))="@")) D |
4333 | +"RTN","PXRMTMED",37,0) |
4334 | + . S DR=".01" |
4335 | +"RTN","PXRMTMED",38,0) |
4336 | + . D ^DIE |
4337 | +"RTN","PXRMTMED",39,0) |
4338 | + . I $G(DA)'="" D CLASS(DA,DIE) |
4339 | +"RTN","PXRMTMED",40,0) |
4340 | + I $G(DA)="" Q |
4341 | +"RTN","PXRMTMED",41,0) |
4342 | + S TCONT=1 |
4343 | +"RTN","PXRMTMED",42,0) |
4344 | + F D FINDING(DIE,DA) Q:TCONT=0 |
4345 | +"RTN","PXRMTMED",43,0) |
4346 | + Q |
4347 | +"RTN","PXRMTMED",44,0) |
4348 | + ; |
4349 | +"RTN","PXRMTMED",45,0) |
4350 | + ;======================================================= |
4351 | +"RTN","PXRMTMED",46,0) |
4352 | +FINDING(DIE,DA,LIST) ; |
4353 | +"RTN","PXRMTMED",47,0) |
4354 | + N CFIEN,GLOB,IEN,LIST,NODE,WPIEN |
4355 | +"RTN","PXRMTMED",48,0) |
4356 | + N DEF,DEF1,DEF2,STATUS |
4357 | +"RTN","PXRMTMED",49,0) |
4358 | + S STATUS=0 |
4359 | +"RTN","PXRMTMED",50,0) |
4360 | + D DEF^PXRMRUTL("811.52",.DEF,.DEF1,.DEF2) |
4361 | +"RTN","PXRMTMED",51,0) |
4362 | + S NODE="^PXRMD(811.5)" |
4363 | +"RTN","PXRMTMED",52,0) |
4364 | + D LIST^PXRMREDT(NODE,DA,.LIST) |
4365 | +"RTN","PXRMTMED",53,0) |
4366 | + D DSPALL^PXRMREDF("T",NODE,DA,.LIST) |
4367 | +"RTN","PXRMTMED",54,0) |
4368 | + S DA(1)=DA |
4369 | +"RTN","PXRMTMED",55,0) |
4370 | + S IEN=DA |
4371 | +"RTN","PXRMTMED",56,0) |
4372 | + S DIC=DIE_DA(1)_",20," |
4373 | +"RTN","PXRMTMED",57,0) |
4374 | + S DIC(0)="QEAL" |
4375 | +"RTN","PXRMTMED",58,0) |
4376 | + S DIC("A")="Select Finding: " |
4377 | +"RTN","PXRMTMED",59,0) |
4378 | + D ^DIC I Y=-1 S DTOUT=1,TCONT=0 Q |
4379 | +"RTN","PXRMTMED",60,0) |
4380 | + S DIE=DIC |
4381 | +"RTN","PXRMTMED",61,0) |
4382 | + S DA=+Y,GLOB=$P($P(Y,U,2),";",2) Q:GLOB="" |
4383 | +"RTN","PXRMTMED",62,0) |
4384 | + I GLOB="PXRMD(811.4," S CFIEN=$P($P(Y,U,2),";",1) D |
4385 | +"RTN","PXRMTMED",63,0) |
4386 | + .I $D(^PXRMD(811.4,CFIEN,1))>0 D |
4387 | +"RTN","PXRMTMED",64,0) |
4388 | + ..W !!,"Computed Finding Description:" S WPIEN=0 |
4389 | +"RTN","PXRMTMED",65,0) |
4390 | + ..F S WPIEN=$O(^PXRMD(811.4,CFIEN,1,WPIEN)) Q:+WPIEN'>0 D |
4391 | +"RTN","PXRMTMED",66,0) |
4392 | + ...W !,$G(^PXRMD(811.4,CFIEN,1,WPIEN,0)) |
4393 | +"RTN","PXRMTMED",67,0) |
4394 | + .E W !!,"No description defined for this computed finding" |
4395 | +"RTN","PXRMTMED",68,0) |
4396 | + .W ! |
4397 | +"RTN","PXRMTMED",69,0) |
4398 | + W !,"Editing Finding Number: "_$G(DA) |
4399 | +"RTN","PXRMTMED",70,0) |
4400 | + ;Finding record fields |
4401 | +"RTN","PXRMTMED",71,0) |
4402 | + S DR=".01;9;12;17" |
4403 | +"RTN","PXRMTMED",72,0) |
4404 | + S DR=DR_";14;15;18" |
4405 | +"RTN","PXRMTMED",73,0) |
4406 | + I GLOB="PXRMD(811.4," S DR=DR_";26" |
4407 | +"RTN","PXRMTMED",74,0) |
4408 | + ;Taxonomy - use inactive problems |
4409 | +"RTN","PXRMTMED",75,0) |
4410 | + I GLOB="PXD(811.2," S DR=DR_";10",STATUS=1 |
4411 | +"RTN","PXRMTMED",76,0) |
4412 | + ;Health Factor - within category rank |
4413 | +"RTN","PXRMTMED",77,0) |
4414 | + I GLOB="AUTTHF(" S DR=DR_";11" |
4415 | +"RTN","PXRMTMED",78,0) |
4416 | + ;Mental Health - scale |
4417 | +"RTN","PXRMTMED",79,0) |
4418 | + I GLOB="YTT(601," S DR=DR_";13" |
4419 | +"RTN","PXRMTMED",80,0) |
4420 | + I GLOB="RAMIS(71,"!(GLOB="ORD(101.43,") S DR=DR_";16",STATUS=1 |
4421 | +"RTN","PXRMTMED",81,0) |
4422 | + ;Rx Type |
4423 | +"RTN","PXRMTMED",82,0) |
4424 | + I GLOB="PSDRUG("!(GLOB="PS(50.605,")!(GLOB="PSNDF(50.6,") S DR=DR_";16",STATUS=1 |
4425 | +"RTN","PXRMTMED",83,0) |
4426 | + ;Condition |
4427 | +"RTN","PXRMTMED",84,0) |
4428 | + ; |
4429 | +"RTN","PXRMTMED",85,0) |
4430 | + ;Edit finding record |
4431 | +"RTN","PXRMTMED",86,0) |
4432 | + D ^DIE |
4433 | +"RTN","PXRMTMED",87,0) |
4434 | + I STATUS=1,$D(DA)>0 D STATUS^PXRMSTA1(.DA,"T") |
4435 | +"RTN","PXRMTMED",88,0) |
4436 | + S $P(^PXRMD(811.5,IEN,20,0),U,3)=0 |
4437 | +"RTN","PXRMTMED",89,0) |
4438 | + Q |
4439 | +"RTN","PXRMTMED",90,0) |
4440 | + ; |
4441 | +"RTN","PXRMTMED",91,0) |
4442 | + ;======================================================= |
4443 | +"RTN","PXRMTMED",92,0) |
4444 | +CLASS(DA,DIE) ; |
4445 | +"RTN","PXRMTMED",93,0) |
4446 | + F D Q:RESULT'=0 |
4447 | +"RTN","PXRMTMED",94,0) |
4448 | + . N DR,RESULT,X,Y |
4449 | +"RTN","PXRMTMED",95,0) |
4450 | + . W ! |
4451 | +"RTN","PXRMTMED",96,0) |
4452 | + . S DR="100" D ^DIE I $D(Y) Q |
4453 | +"RTN","PXRMTMED",97,0) |
4454 | + . ;Sponsor |
4455 | +"RTN","PXRMTMED",98,0) |
4456 | + . S DR="101" D ^DIE I $D(Y) Q |
4457 | +"RTN","PXRMTMED",99,0) |
4458 | + . ;Make sure Class and Sponsor Class are in synch. |
4459 | +"RTN","PXRMTMED",100,0) |
4460 | + . S RESULT=$$VSPONSOR^PXRMINTR(X) |
4461 | +"RTN","PXRMTMED",101,0) |
4462 | + . Q |
4463 | +"RTN","PXRMTMED",102,0) |
4464 | + ;Review date, Usage |
4465 | +"RTN","PXRMTMED",103,0) |
4466 | + S DR="102;1" D ^DIE I $D(Y) Q |
4467 | +"RTN","PXRMTMED",104,0) |
4468 | + Q |
4469 | +"RTN","PXRMTMED",105,0) |
4470 | + ; |
4471 | +"RTN","RORHL7A") |
4472 | +0^32^B35660209 |
4473 | +"RTN","RORHL7A",1,0) |
4474 | +RORHL7A ;HCIOFO/SG MSC/JDS- HL7 UTILITIES ;30APR2009 |
4475 | +"RTN","RORHL7A",2,0) |
4476 | + ;;1.5;CLINICAL CASE REGISTRIES;;Feb 17, 2006 |
4477 | +"RTN","RORHL7A",3,0) |
4478 | + ; |
4479 | +"RTN","RORHL7A",4,0) |
4480 | + Q |
4481 | +"RTN","RORHL7A",5,0) |
4482 | + ; |
4483 | +"RTN","RORHL7A",6,0) |
4484 | + ;***** ADDS THE SEGMENT TO THE HL7 MESSAGE BUFFER |
4485 | +"RTN","RORHL7A",7,0) |
4486 | + ; |
4487 | +"RTN","RORHL7A",8,0) |
4488 | + ; SEG Complete HL7 segment |
4489 | +"RTN","RORHL7A",9,0) |
4490 | + ; |
4491 | +"RTN","RORHL7A",10,0) |
4492 | + ; The ADDSEGC^RORHL7A procedure adds the HL7 segment to the HL7 |
4493 | +"RTN","RORHL7A",11,0) |
4494 | + ; message buffer defined by the ROREXT("HL7BUF") parameter |
4495 | +"RTN","RORHL7A",12,0) |
4496 | + ; (the ^TMP("HLS",$J), by default). The <TAB>, <CR> and <LF> |
4497 | +"RTN","RORHL7A",13,0) |
4498 | + ; characters are replaced with spaces. Long segments are split |
4499 | +"RTN","RORHL7A",14,0) |
4500 | + ; among sub-nodes of the main segment node in the destination |
4501 | +"RTN","RORHL7A",15,0) |
4502 | + ; buffer. |
4503 | +"RTN","RORHL7A",16,0) |
4504 | + ; |
4505 | +"RTN","RORHL7A",17,0) |
4506 | + ; The RORHL array and some nodes of the ROREXT array must be |
4507 | +"RTN","RORHL7A",18,0) |
4508 | + ; initialized (either by the $$INIT^RORHL7 or manually) before |
4509 | +"RTN","RORHL7A",19,0) |
4510 | + ; calling this procedure. |
4511 | +"RTN","RORHL7A",20,0) |
4512 | + ; |
4513 | +"RTN","RORHL7A",21,0) |
4514 | +ADDSEGC(SEG) ; |
4515 | +"RTN","RORHL7A",22,0) |
4516 | + N I1,I2,MAXLEN,NODE,PTR,PTR1,SID,SL |
4517 | +"RTN","RORHL7A",23,0) |
4518 | + S NODE=ROREXT("HL7BUF"),PTR=$G(ROREXT("HL7PTR"))+1 |
4519 | +"RTN","RORHL7A",24,0) |
4520 | + S HLFS=RORHL("FS"),HLECH=RORHL("ECH") |
4521 | +"RTN","RORHL7A",25,0) |
4522 | + Q:$P(SEG,HLFS)="" ; Segment Name |
4523 | +"RTN","RORHL7A",26,0) |
4524 | + ;--- Assign the Set ID if necessary |
4525 | +"RTN","RORHL7A",27,0) |
4526 | + S SID=$$SETID($P(SEG,HLFS)) |
4527 | +"RTN","RORHL7A",28,0) |
4528 | + S:SID>0 $P(SEG,HLFS,2)=SID |
4529 | +"RTN","RORHL7A",29,0) |
4530 | + ;--- Remove empty trailing fields |
4531 | +"RTN","RORHL7A",30,0) |
4532 | + S I2=$L(SEG,HLFS) |
4533 | +"RTN","RORHL7A",31,0) |
4534 | + F I1=I2:-1:1 Q:$TR($P(SEG,HLFS,I1),HLECH)'="" |
4535 | +"RTN","RORHL7A",32,0) |
4536 | + S:I1<I2 $P(SEG,HLFS,I1+1,I2)="" |
4537 | +"RTN","RORHL7A",33,0) |
4538 | + ;--- Store the segment |
4539 | +"RTN","RORHL7A",34,0) |
4540 | + S SL=$L(SEG),MAXLEN=245 K @NODE@(PTR) |
4541 | +"RTN","RORHL7A",35,0) |
4542 | + S @NODE@(PTR)=$TR($E(SEG,1,MAXLEN),$C(9,10,13)," ") |
4543 | +"RTN","RORHL7A",36,0) |
4544 | + S ROREXT("HL7SIZE")=$G(ROREXT("HL7SIZE"))+SL+1 |
4545 | +"RTN","RORHL7A",37,0) |
4546 | + ;--- Split the segment into sub-nodes if necessary |
4547 | +"RTN","RORHL7A",38,0) |
4548 | + D:SL>MAXLEN |
4549 | +"RTN","RORHL7A",39,0) |
4550 | + . S I2=MAXLEN |
4551 | +"RTN","RORHL7A",40,0) |
4552 | + . F PTR1=1:1 S I1=I2+1,I2=I1+MAXLEN-1 Q:I1>SL D |
4553 | +"RTN","RORHL7A",41,0) |
4554 | + . . S @NODE@(PTR,PTR1)=$TR($E(SEG,I1,I2),$C(9,10,13)," ") |
4555 | +"RTN","RORHL7A",42,0) |
4556 | + ;--- Save the pointer |
4557 | +"RTN","RORHL7A",43,0) |
4558 | + S ROREXT("HL7PTR")=PTR |
4559 | +"RTN","RORHL7A",44,0) |
4560 | + Q |
4561 | +"RTN","RORHL7A",45,0) |
4562 | + ; |
4563 | +"RTN","RORHL7A",46,0) |
4564 | + ;***** ASSEMBLES THE SEGMENT AND ADDS IT TO THE HL7 MESSAGE BUFFER |
4565 | +"RTN","RORHL7A",47,0) |
4566 | + ; |
4567 | +"RTN","RORHL7A",48,0) |
4568 | + ; .FIELDS Reference to a local variable where the HL7 |
4569 | +"RTN","RORHL7A",49,0) |
4570 | + ; fields are stored |
4571 | +"RTN","RORHL7A",50,0) |
4572 | + ; |
4573 | +"RTN","RORHL7A",51,0) |
4574 | + ; FIELDS( |
4575 | +"RTN","RORHL7A",52,0) |
4576 | + ; 0) Segment name |
4577 | +"RTN","RORHL7A",53,0) |
4578 | + ; I, Field value |
4579 | +"RTN","RORHL7A",54,0) |
4580 | + ; i) Continuation of the value if it is |
4581 | +"RTN","RORHL7A",55,0) |
4582 | + ; ... longer than than 245 characters |
4583 | +"RTN","RORHL7A",56,0) |
4584 | + ; |
4585 | +"RTN","RORHL7A",57,0) |
4586 | + ; The ADDSEGF^RORHL7A procedure assembles the HL7 segment from |
4587 | +"RTN","RORHL7A",58,0) |
4588 | + ; provided field values and adds it to the HL7 message buffer |
4589 | +"RTN","RORHL7A",59,0) |
4590 | + ; defined by the ROREXT("HL7BUF") node (the ^TMP("HLS",$J), by |
4591 | +"RTN","RORHL7A",60,0) |
4592 | + ; default). The <TAB>, <CR> and <LF> characters are replaced with |
4593 | +"RTN","RORHL7A",61,0) |
4594 | + ; spaces. Long segments are split among sub-nodes of the main |
4595 | +"RTN","RORHL7A",62,0) |
4596 | + ; segment node in the destination buffer. |
4597 | +"RTN","RORHL7A",63,0) |
4598 | + ; |
4599 | +"RTN","RORHL7A",64,0) |
4600 | + ; The RORHL array and some nodes of the ROREXT array must be |
4601 | +"RTN","RORHL7A",65,0) |
4602 | + ; initialized (either by the $$INIT^RORHL7 or manually) before |
4603 | +"RTN","RORHL7A",66,0) |
4604 | + ; calling this procedure. |
4605 | +"RTN","RORHL7A",67,0) |
4606 | + ; |
4607 | +"RTN","RORHL7A",68,0) |
4608 | +ADDSEGF(FIELDS) ; |
4609 | +"RTN","RORHL7A",69,0) |
4610 | + ; RORBUF Temporary buffer for the segment construction |
4611 | +"RTN","RORHL7A",70,0) |
4612 | + ; RORIS Current continuation subscript in the HL7 buffer |
4613 | +"RTN","RORHL7A",71,0) |
4614 | + ; RORNODE Closed root of the HL7 message buffer |
4615 | +"RTN","RORHL7A",72,0) |
4616 | + ; RORPTR Current subscript in the HL7 message buffer |
4617 | +"RTN","RORHL7A",73,0) |
4618 | + ; RORSL Number of characters that can be appended to the |
4619 | +"RTN","RORHL7A",74,0) |
4620 | + ; RORBUF before it has to be emptied into the HL7 |
4621 | +"RTN","RORHL7A",75,0) |
4622 | + ; message buffer |
4623 | +"RTN","RORHL7A",76,0) |
4624 | + ; |
4625 | +"RTN","RORHL7A",77,0) |
4626 | + N FLD,I,LASTFLD,RORBUF,RORIS,RORNODE,RORPTR,RORSL |
4627 | +"RTN","RORHL7A",78,0) |
4628 | + Q:$G(FIELDS(0))="" ; Segment Name |
4629 | +"RTN","RORHL7A",79,0) |
4630 | + S RORNODE=ROREXT("HL7BUF"),RORPTR=$G(ROREXT("HL7PTR"))+1 |
4631 | +"RTN","RORHL7A",80,0) |
4632 | + S HLFS=RORHL("FS"),HLECH=RORHL("ECH") |
4633 | +"RTN","RORHL7A",81,0) |
4634 | + ;--- Assign the Set ID if necessary |
4635 | +"RTN","RORHL7A",82,0) |
4636 | + S I=$$SETID(FIELDS(0)) |
4637 | +"RTN","RORHL7A",83,0) |
4638 | + S:I>0 FIELDS(1)=I |
4639 | +"RTN","RORHL7A",84,0) |
4640 | + ;--- Remove empty trailing fields |
4641 | +"RTN","RORHL7A",85,0) |
4642 | + S I=$NA(FIELDS) |
4643 | +"RTN","RORHL7A",86,0) |
4644 | + N A,CNT F S I=$Q(@I) Q:I="" S CNT=$G(CNT)+1,A(CNT)=I I $TR(@I,HLECH)'="" K A,CNT |
4645 | +"RTN","RORHL7A",87,0) |
4646 | + F I=1:1 Q:'$D(A(I)) K @A(I) |
4647 | +"RTN","RORHL7A",88,0) |
4648 | + ;--- Initialize construction variables |
4649 | +"RTN","RORHL7A",89,0) |
4650 | + S RORBUF=FIELDS(0),I=$L(RORBUF) |
4651 | +"RTN","RORHL7A",90,0) |
4652 | + S ROREXT("HL7SIZE")=$G(ROREXT("HL7SIZE"))+I+1 |
4653 | +"RTN","RORHL7A",91,0) |
4654 | + S RORIS=0,RORSL=245-I |
4655 | +"RTN","RORHL7A",92,0) |
4656 | + ;--- Append the fields and store the segment |
4657 | +"RTN","RORHL7A",93,0) |
4658 | + S LASTFLD=+$O(FIELDS(" "),-1) |
4659 | +"RTN","RORHL7A",94,0) |
4660 | + F FLD=1:1:LASTFLD D |
4661 | +"RTN","RORHL7A",95,0) |
4662 | + . D APPEND(HLFS_$G(FIELDS(FLD))) |
4663 | +"RTN","RORHL7A",96,0) |
4664 | + . ;--- Process the field continuation nodes |
4665 | +"RTN","RORHL7A",97,0) |
4666 | + . S I="" |
4667 | +"RTN","RORHL7A",98,0) |
4668 | + . F S I=$O(FIELDS(FLD,I)) Q:I="" D APPEND(FIELDS(FLD,I)) |
4669 | +"RTN","RORHL7A",99,0) |
4670 | + ;--- Flush the buffer if necessary |
4671 | +"RTN","RORHL7A",100,0) |
4672 | + D:RORBUF'="" |
4673 | +"RTN","RORHL7A",101,0) |
4674 | + . I 'RORIS S @RORNODE@(RORPTR)=RORBUF Q |
4675 | +"RTN","RORHL7A",102,0) |
4676 | + . S @RORNODE@(RORPTR,RORIS)=RORBUF |
4677 | +"RTN","RORHL7A",103,0) |
4678 | + S ROREXT("HL7PTR")=RORPTR |
4679 | +"RTN","RORHL7A",104,0) |
4680 | + Q |
4681 | +"RTN","RORHL7A",105,0) |
4682 | + ; |
4683 | +"RTN","RORHL7A",106,0) |
4684 | + ;***** APPENDS THE FIELD VALUE TO THE HL7 SEGMENT |
4685 | +"RTN","RORHL7A",107,0) |
4686 | + ; |
4687 | +"RTN","RORHL7A",108,0) |
4688 | + ; VAL Value of the field (or its part) |
4689 | +"RTN","RORHL7A",109,0) |
4690 | + ; |
4691 | +"RTN","RORHL7A",110,0) |
4692 | + ; This is an internal function. Do not call it directly. |
4693 | +"RTN","RORHL7A",111,0) |
4694 | + ; |
4695 | +"RTN","RORHL7A",112,0) |
4696 | +APPEND(VAL) ; |
4697 | +"RTN","RORHL7A",113,0) |
4698 | + N BASE,L |
4699 | +"RTN","RORHL7A",114,0) |
4700 | + S VAL=$TR(VAL,$C(9,10,13)," "),L=$L(VAL) |
4701 | +"RTN","RORHL7A",115,0) |
4702 | + S ROREXT("HL7SIZE")=$G(ROREXT("HL7SIZE"))+L |
4703 | +"RTN","RORHL7A",116,0) |
4704 | + I L'>RORSL S RORBUF=RORBUF_VAL,RORSL=RORSL-L Q |
4705 | +"RTN","RORHL7A",117,0) |
4706 | + ;--- |
4707 | +"RTN","RORHL7A",118,0) |
4708 | + S RORBUF=RORBUF_$E(VAL,1,RORSL),L=L-RORSL |
4709 | +"RTN","RORHL7A",119,0) |
4710 | + S BASE=1 |
4711 | +"RTN","RORHL7A",120,0) |
4712 | + F D Q:L'>0 |
4713 | +"RTN","RORHL7A",121,0) |
4714 | + . I 'RORIS S @RORNODE@(RORPTR)=RORBUF |
4715 | +"RTN","RORHL7A",122,0) |
4716 | + . E S @RORNODE@(RORPTR,RORIS)=RORBUF |
4717 | +"RTN","RORHL7A",123,0) |
4718 | + . S BASE=BASE+RORSL,RORIS=RORIS+1,RORSL=245 |
4719 | +"RTN","RORHL7A",124,0) |
4720 | + . S RORBUF=$E(VAL,BASE,BASE+RORSL-1),L=L-RORSL |
4721 | +"RTN","RORHL7A",125,0) |
4722 | + S RORSL=-L |
4723 | +"RTN","RORHL7A",126,0) |
4724 | + Q |
4725 | +"RTN","RORHL7A",127,0) |
4726 | + ; |
4727 | +"RTN","RORHL7A",128,0) |
4728 | + ;***** RETURNS THE BHS SEGMENT |
4729 | +"RTN","RORHL7A",129,0) |
4730 | + ; |
4731 | +"RTN","RORHL7A",130,0) |
4732 | + ; BID Batch message ID |
4733 | +"RTN","RORHL7A",131,0) |
4734 | + ; |
4735 | +"RTN","RORHL7A",132,0) |
4736 | + ; [BDT] Batch message creation time in internal FileMan |
4737 | +"RTN","RORHL7A",133,0) |
4738 | + ; format (NOW by default) |
4739 | +"RTN","RORHL7A",134,0) |
4740 | + ; |
4741 | +"RTN","RORHL7A",135,0) |
4742 | + ; [COMMENT] Optional comment |
4743 | +"RTN","RORHL7A",136,0) |
4744 | + ; |
4745 | +"RTN","RORHL7A",137,0) |
4746 | + ; The RORHL local variable must be initialized by the $$INIT^RORHL7 |
4747 | +"RTN","RORHL7A",138,0) |
4748 | + ; function before calling this entry point. |
4749 | +"RTN","RORHL7A",139,0) |
4750 | + ; |
4751 | +"RTN","RORHL7A",140,0) |
4752 | +BHS(BID,BDT,COMMENT) ; |
4753 | +"RTN","RORHL7A",141,0) |
4754 | + N CS,SEG,TMP |
4755 | +"RTN","RORHL7A",142,0) |
4756 | + D BHS^HLFNC3(.RORHL,BID,.SEG) |
4757 | +"RTN","RORHL7A",143,0) |
4758 | + Q:$G(SEG)="" "" |
4759 | +"RTN","RORHL7A",144,0) |
4760 | + S HLFS=RORHL("FS"),HLECH=RORHL("ECH"),CS=$E(HLECH,1) |
4761 | +"RTN","RORHL7A",145,0) |
4762 | + ;--- Post-processing |
4763 | +"RTN","RORHL7A",146,0) |
4764 | + S SEG=SEG_$G(SEG(1)) |
4765 | +"RTN","RORHL7A",147,0) |
4766 | + S:$G(BDT)'>0 BDT=$$NOW^XLFDT |
4767 | +"RTN","RORHL7A",148,0) |
4768 | + S TMP=$E($P($$SITE^VASITE,U,3),1,3) |
4769 | +"RTN","RORHL7A",149,0) |
4770 | + S $P(SEG,HLFS,4)=TMP_CS_$G(^XMB("NETNAME"))_CS_"DNS" |
4771 | +"RTN","RORHL7A",150,0) |
4772 | + S $P(SEG,HLFS,5)="ROR AAC" |
4773 | +"RTN","RORHL7A",151,0) |
4774 | + S $P(SEG,HLFS,7)=$$FMTHL7^XLFDT(BDT) |
4775 | +"RTN","RORHL7A",152,0) |
4776 | + S TMP=$P(SEG,HLFS,9) |
4777 | +"RTN","RORHL7A",153,0) |
4778 | + S $P(TMP,CS,3)=$P(TMP,CS,3)_$E(HLECH,2)_$G(RORHL("ETN")) |
4779 | +"RTN","RORHL7A",154,0) |
4780 | + S $P(SEG,HLFS,9)=TMP |
4781 | +"RTN","RORHL7A",155,0) |
4782 | + S $P(SEG,HLFS,10)=$G(COMMENT) |
4783 | +"RTN","RORHL7A",156,0) |
4784 | + Q SEG |
4785 | +"RTN","RORHL7A",157,0) |
4786 | + ; |
4787 | +"RTN","RORHL7A",158,0) |
4788 | + ;***** RETURNS BTS SEGMENT |
4789 | +"RTN","RORHL7A",159,0) |
4790 | + ; |
4791 | +"RTN","RORHL7A",160,0) |
4792 | + ; MSGCNT Batch message count |
4793 | +"RTN","RORHL7A",161,0) |
4794 | + ; [COMMENT] Batch comment |
4795 | +"RTN","RORHL7A",162,0) |
4796 | + ; |
4797 | +"RTN","RORHL7A",163,0) |
4798 | + ; The RORHL variable must be initialized by the INIT^HLFNC2 before |
4799 | +"RTN","RORHL7A",164,0) |
4800 | + ; calling this entry point |
4801 | +"RTN","RORHL7A",165,0) |
4802 | + ; |
4803 | +"RTN","RORHL7A",166,0) |
4804 | +BTS(MSGCNT,COMMENT) ; |
4805 | +"RTN","RORHL7A",167,0) |
4806 | + Q "BTS"_RORHL("FS")_MSGCNT_RORHL("FS")_$G(COMMENT) |
4807 | +"RTN","RORHL7A",168,0) |
4808 | + ; |
4809 | +"RTN","RORHL7A",169,0) |
4810 | + ;***** LOADS THE HL7 FIELD (OR ITS PART) TO THE BUFFER |
4811 | +"RTN","RORHL7A",170,0) |
4812 | + ; |
4813 | +"RTN","RORHL7A",171,0) |
4814 | + ; VAL Value of the field (or its part) |
4815 | +"RTN","RORHL7A",172,0) |
4816 | + ; |
4817 | +"RTN","RORHL7A",173,0) |
4818 | + ; FLD Number of the field in the segment (piece number) |
4819 | +"RTN","RORHL7A",174,0) |
4820 | + ; |
4821 | +"RTN","RORHL7A",175,0) |
4822 | +FIELD(VAL,FLD) ; |
4823 | +"RTN","RORHL7A",176,0) |
4824 | + N BASE,L |
4825 | +"RTN","RORHL7A",177,0) |
4826 | + S:FLD>RORFLD RORFLD=FLD,RORIS=0,RORSL=245 |
4827 | +"RTN","RORHL7A",178,0) |
4828 | + S L=$L(VAL),BASE=1 |
4829 | +"RTN","RORHL7A",179,0) |
4830 | + F RORIS=RORIS:1 D Q:L'>0 |
4831 | +"RTN","RORHL7A",180,0) |
4832 | + . I 'RORIS S RORSEG(RORFLD)=$G(RORSEG(RORFLD))_$E(VAL,BASE,BASE+RORSL-1) |
4833 | +"RTN","RORHL7A",181,0) |
4834 | + . E S RORSEG(RORFLD,RORIS)=$G(RORSEG(RORFLD,RORIS))_$E(VAL,BASE,BASE+RORSL-1) |
4835 | +"RTN","RORHL7A",182,0) |
4836 | + . S BASE=BASE+RORSL,L=L-RORSL,RORSL=245 |
4837 | +"RTN","RORHL7A",183,0) |
4838 | + S RORSL=-L |
4839 | +"RTN","RORHL7A",184,0) |
4840 | + Q |
4841 | +"RTN","RORHL7A",185,0) |
4842 | + ; |
4843 | +"RTN","RORHL7A",186,0) |
4844 | + ;***** LOADS THE HL7 SEGMENT INTO THE RPOVIDED BUFFER |
4845 | +"RTN","RORHL7A",187,0) |
4846 | + ; |
4847 | +"RTN","RORHL7A",188,0) |
4848 | + ; .RORSEG Reference to a local variable where the HL7 |
4849 | +"RTN","RORHL7A",189,0) |
4850 | + ; fields will be stored. The fields are stored |
4851 | +"RTN","RORHL7A",190,0) |
4852 | + ; in the following format: |
4853 | +"RTN","RORHL7A",191,0) |
4854 | + ; |
4855 | +"RTN","RORHL7A",192,0) |
4856 | + ; RORSEG(FldNum)=FldVal |
4857 | +"RTN","RORHL7A",193,0) |
4858 | + ; |
4859 | +"RTN","RORHL7A",194,0) |
4860 | + ; If the value is longer that 245 characters then |
4861 | +"RTN","RORHL7A",195,0) |
4862 | + ; the continuation nodes are created: |
4863 | +"RTN","RORHL7A",196,0) |
4864 | + ; |
4865 | +"RTN","RORHL7A",197,0) |
4866 | + ; RORSEG(FldNum,#)=FldValCont |
4867 | +"RTN","RORHL7A",198,0) |
4868 | + ; |
4869 | +"RTN","RORHL7A",199,0) |
4870 | + ; ROR8SRC Closed root of the source buffer containing |
4871 | +"RTN","RORHL7A",200,0) |
4872 | + ; the HL7 segment |
4873 | +"RTN","RORHL7A",201,0) |
4874 | + ; |
4875 | +"RTN","RORHL7A",202,0) |
4876 | +LOADSEG(RORSEG,ROR8SRC) ; |
4877 | +"RTN","RORHL7A",203,0) |
4878 | + N BUF,FLD,I,IFL,NFL,RORFLD,RORIS,RORSL |
4879 | +"RTN","RORHL7A",204,0) |
4880 | + S HLFS=RORHL("FS") K RORSEG |
4881 | +"RTN","RORHL7A",205,0) |
4882 | + ;--- Process the main segment |
4883 | +"RTN","RORHL7A",206,0) |
4884 | + S BUF=$G(@ROR8SRC),NFL=$L(BUF,HLFS) |
4885 | +"RTN","RORHL7A",207,0) |
4886 | + F IFL=1:1:NFL S RORSEG(IFL-1)=$P(BUF,HLFS,IFL) |
4887 | +"RTN","RORHL7A",208,0) |
4888 | + Q:$D(@ROR8SRC)<10 |
4889 | +"RTN","RORHL7A",209,0) |
4890 | + ;--- Process the sub-segments |
4891 | +"RTN","RORHL7A",210,0) |
4892 | + S (FLD,RORFLD)=NFL-1,RORIS=0,RORSL=245-$L(RORSEG(FLD)) |
4893 | +"RTN","RORHL7A",211,0) |
4894 | + S I="" |
4895 | +"RTN","RORHL7A",212,0) |
4896 | + F S I=$O(@ROR8SRC@(I)) Q:I="" D |
4897 | +"RTN","RORHL7A",213,0) |
4898 | + . S BUF=@ROR8SRC@(I),NFL=$L(BUF,HLFS) |
4899 | +"RTN","RORHL7A",214,0) |
4900 | + . D FIELD($P(BUF,HLFS),FLD) |
4901 | +"RTN","RORHL7A",215,0) |
4902 | + . F IFL=2:1:NFL S FLD=FLD+1 D FIELD($P(BUF,HLFS,IFL),FLD) |
4903 | +"RTN","RORHL7A",216,0) |
4904 | + Q |
4905 | +"RTN","RORHL7A",217,0) |
4906 | + ; |
4907 | +"RTN","RORHL7A",218,0) |
4908 | + ;***** RETURNS TEXT EXPLANATIONS OF THE HL7 MESSAGE STATUS |
4909 | +"RTN","RORHL7A",219,0) |
4910 | + ; |
4911 | +"RTN","RORHL7A",220,0) |
4912 | + ; MSGST Status value returned by the $$MSGSTAT^HLUTIL |
4913 | +"RTN","RORHL7A",221,0) |
4914 | + ; |
4915 | +"RTN","RORHL7A",222,0) |
4916 | +MSGSTXT(MSGST) ; |
4917 | +"RTN","RORHL7A",223,0) |
4918 | + N ST S ST=+MSGST |
4919 | +"RTN","RORHL7A",224,0) |
4920 | + Q:'ST "Message does not exist" |
4921 | +"RTN","RORHL7A",225,0) |
4922 | + Q:ST=1 "Waiting in queue" |
4923 | +"RTN","RORHL7A",226,0) |
4924 | + Q:ST=1.5 "Opening connection" |
4925 | +"RTN","RORHL7A",227,0) |
4926 | + Q:ST=1.7 "Awaiting response" |
4927 | +"RTN","RORHL7A",228,0) |
4928 | + Q:ST=2 "Awaiting application ack" |
4929 | +"RTN","RORHL7A",229,0) |
4930 | + Q:ST=3 "Successfully completed" |
4931 | +"RTN","RORHL7A",230,0) |
4932 | + Q:ST=4 "Error" |
4933 | +"RTN","RORHL7A",231,0) |
4934 | + Q:ST=8 "Being generated" |
4935 | +"RTN","RORHL7A",232,0) |
4936 | + Q:ST=9 "Awaiting processing" |
4937 | +"RTN","RORHL7A",233,0) |
4938 | + Q "Unknown" |
4939 | +"RTN","RORHL7A",234,0) |
4940 | + ; |
4941 | +"RTN","RORHL7A",235,0) |
4942 | + ;***** ASSIGNS THE 'SET ID' |
4943 | +"RTN","RORHL7A",236,0) |
4944 | + ; |
4945 | +"RTN","RORHL7A",237,0) |
4946 | + ; SEGNAME Name of the HL7 segment |
4947 | +"RTN","RORHL7A",238,0) |
4948 | + ; [DISINC] Disable increment of the Set ID |
4949 | +"RTN","RORHL7A",239,0) |
4950 | + ; |
4951 | +"RTN","RORHL7A",240,0) |
4952 | + ; Return Values: |
4953 | +"RTN","RORHL7A",241,0) |
4954 | + ; "" Not required for this segment |
4955 | +"RTN","RORHL7A",242,0) |
4956 | + ; >0 Value for the Set ID field |
4957 | +"RTN","RORHL7A",243,0) |
4958 | + ; |
4959 | +"RTN","RORHL7A",244,0) |
4960 | +SETID(SEGNAME,DISINC) ; |
4961 | +"RTN","RORHL7A",245,0) |
4962 | + N SETID |
4963 | +"RTN","RORHL7A",246,0) |
4964 | + Q:$G(SEGNAME)="" "" |
4965 | +"RTN","RORHL7A",247,0) |
4966 | + S SETID=+$G(ROREXT("HL7SID",SEGNAME)) |
4967 | +"RTN","RORHL7A",248,0) |
4968 | + Q:SETID'>0 "" |
4969 | +"RTN","RORHL7A",249,0) |
4970 | + S:'$G(DISINC) ROREXT("HL7SID",SEGNAME)=SETID+1 |
4971 | +"RTN","RORHL7A",250,0) |
4972 | + Q SETID |
4973 | +"RTN","VALMW3") |
4974 | +0^41^B21033865 |
4975 | +"RTN","VALMW3",1,0) |
4976 | +VALMW3 ; ALB/MJK,MSC/JDA - Create transport routines for LM;27APR2009 |
4977 | +"RTN","VALMW3",2,0) |
4978 | + ;;1;List Manager;**MSC**;Aug 13, 1993 |
4979 | +"RTN","VALMW3",3,0) |
4980 | + ; |
4981 | +"RTN","VALMW3",4,0) |
4982 | +EN ; -- exporter main entry point |
4983 | +"RTN","VALMW3",5,0) |
4984 | + N VALMSYS,VALMNS,VALMROU,VALMAX |
4985 | +"RTN","VALMW3",6,0) |
4986 | + S U="^",DTIME=600 K ^UTILITY($J) |
4987 | +"RTN","VALMW3",7,0) |
4988 | + D HOME^%ZIS |
4989 | +"RTN","VALMW3",8,0) |
4990 | + W @IOF,!?20,"*** List Template Export Utility ***" |
4991 | +"RTN","VALMW3",9,0) |
4992 | + I '$$DUZ() G ENQ |
4993 | +"RTN","VALMW3",10,0) |
4994 | + S VALMSYS=$$OS() I VALMSYS="" G ENQ |
4995 | +"RTN","VALMW3",11,0) |
4996 | + S VALMNS=$$NS() I VALMNS="" G ENQ |
4997 | +"RTN","VALMW3",12,0) |
4998 | + S VALMROU=$$ROU(.VALMNS) I VALMROU="" G ENQ |
4999 | +"RTN","VALMW3",13,0) |
5000 | + S VALMAX=$$MAX() I 'VALMAX G ENQ |
The diff has been truncated for viewing.