Merge lp:~jontai/openvista-gtm-integration/phase1-alpha2-release-prep into lp:openvista-gtm-integration

Proposed by Jon Tai
Status: Merged
Merged at revision: not available
Proposed branch: lp:~jontai/openvista-gtm-integration/phase1-alpha2-release-prep
Merge into: lp:openvista-gtm-integration
Diff against target: None lines
To merge this branch: bzr merge lp:~jontai/openvista-gtm-integration/phase1-alpha2-release-prep
Reviewer Review Type Date Requested Status
OpenVista/GT.M Integration Team Pending
Review via email: mp+7197@code.launchpad.net
To post a comment you must log in.

Preview Diff

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

Subscribers

People subscribed via source and target branches