1 | TMGNDF4A ;TMG/kst/FDA Import: Create POI's from DRUGs ;03/25/06
|
---|
2 | ;;1.0;TMG-LIB;**1**;11/21/06
|
---|
3 |
|
---|
4 | ;" FDA - NATIONAL DRUG FILES COMPILING FUNCTIONS
|
---|
5 | ;" Creation of records in file 50.7 (PHARMACY ORDERABLE ITEM file)
|
---|
6 | ;" from all records stored in file 50 (DRUG file)
|
---|
7 | ;"Kevin Toppenberg MD
|
---|
8 | ;"GNU General Public License (GPL) applies
|
---|
9 | ;"11-21-2006
|
---|
10 |
|
---|
11 | ;"=======================================================================
|
---|
12 | ;" API -- Public Functions.
|
---|
13 | ;"=======================================================================
|
---|
14 | ;"Menu
|
---|
15 |
|
---|
16 | ;"=======================================================================
|
---|
17 | ;" Private Functions.
|
---|
18 | ;"=======================================================================
|
---|
19 | ;"InactivatePOIs -- inactivate all POI (entries in PHARMACY ORDERABLE ITEMS)
|
---|
20 | ;"ActivatePOI(IEN50d7) -- remove the inactivation date that is automatically added
|
---|
21 | ;"HandlePOIErr -- error handler for ActivatePOI
|
---|
22 |
|
---|
23 | ;"SyncAllTMG -- Add all relevent TMG entries into POI
|
---|
24 | ;"AddFromTMG(IEN) -- Add/Update ONE entry in POI file
|
---|
25 | ;"Do1POI(DrugNAF,IEN50,IEN50d606,IEN51d2) -- add/refresh one POI entry.
|
---|
26 |
|
---|
27 | ;"=============================================================================
|
---|
28 | ;"=============================================================================
|
---|
29 |
|
---|
30 | Menu
|
---|
31 | new Menu,UsrSlct
|
---|
32 | set Menu(0)="Pick Option to Sync to PHARMACY ORDERABLE ITEMS (4A)"
|
---|
33 | set Menu(1)="Sync Non-Skipped Imports to PHARMACY ORDERABLE ITEMS."_$char(9)_"SyncDRUGs"
|
---|
34 | ;"set Menu(2)="Activate all PHARMACY ORDERABLE ITEMS (do after syncing)"_$char(9)_"ActivateAll"
|
---|
35 | set Menu(3)="Kill all previous PHARMACY ORDERABLE ITEMS (only if needed!)"_$char(9)_"KillAll"
|
---|
36 | set Menu("P")="Prev Stage"_$char(9)_"Prev"
|
---|
37 | set Menu("N")="Next Stage"_$char(9)_"Next"
|
---|
38 |
|
---|
39 | M1 write #
|
---|
40 | set UsrSlct=$$Menu^TMGUSRIF(.Menu,"^")
|
---|
41 |
|
---|
42 | if UsrSlct="SyncDRUGs" do SyncAllTMG goto M1
|
---|
43 | ;"if UsrSlct="ActivateAll" do ActivAll goto M1
|
---|
44 | if UsrSlct="KillAll" do KillPOIs goto M1
|
---|
45 | if UsrSlct="Prev" goto Menu^TMGNDF3E ;"quit can occur from there...
|
---|
46 | if UsrSlct="Next" goto Menu^TMGNDF4B ;"quit can occur from there...
|
---|
47 | if UsrSlct="^" goto MenuDone
|
---|
48 | goto M1
|
---|
49 |
|
---|
50 | MenuDone
|
---|
51 | quit
|
---|
52 |
|
---|
53 |
|
---|
54 | ;"=============================================================================
|
---|
55 | ;"File 50.7 (PHARMACY ORDERABLE ITEM):
|
---|
56 | ;"
|
---|
57 | ;" **A record in 50.7 should be created first.
|
---|
58 | ;" .01 field should be the generic name of the drug.
|
---|
59 | ;" When the record is created, an entry in fle 101.43 (ORDERABLE ITEM) will automatically be made.
|
---|
60 | ;" Also, a record in in ORDER QUICK VIEW will also be created (but it is incomplete--see below.)
|
---|
61 | ;" Note: new drugs may not be added unless PSEDITNM>0. So to setup a drug in fileman,
|
---|
62 | ;" set PSEDITNM=1 from the command-line, then DO D^DI to get into Fileman with vars intact.
|
---|
63 | ;" In the MED ROUTE field, the input transform does not allow an input of "ORAL". (If left
|
---|
64 | ;" blank ORAL will be shown in CPRS)
|
---|
65 | ;" This file can hold the synonyms of a drug etc.
|
---|
66 | ;" When this record is created, for some reason it is automatically given the current
|
---|
67 | ;" date in the INACTIVE DAT
|
---|
68 | ;"Purpose: to Ask E field--meaning it is created in an inactive state. One must
|
---|
69 | ;" go back and edit the record a second time to remove the entry from this field.
|
---|
70 | ;" File 101.43 (ORDERABLE ITEM), field ID holds a text pointer to this file, e.g.
|
---|
71 | ;" '10;99PSP' <---- 10 is IEN in file #50.7
|
---|
72 | ;" There is no pointer field from file 50.7 up to file 50. The link is FROM file #50
|
---|
73 | ;" TO #50.7 (via file #50's field 2.1(PHARMACY ORDERABLE ITEM)). HOWEVER, File #50.7's
|
---|
74 | ;" "ASP" cross-reference for the field "PHARMACY ORDERABLE ITEM (#2.1) i.e.
|
---|
75 | ;" ^PSDRUG("ASP",+ID,*), contains list of linked records in file #50
|
---|
76 |
|
---|
77 | ;"=================================================================
|
---|
78 |
|
---|
79 | SyncAllTMG
|
---|
80 | ;"Purpose: Sync/Add all relevent TMG entries into POI
|
---|
81 | ;"Input:none
|
---|
82 | ;"results: none
|
---|
83 |
|
---|
84 | new IEN,Itr
|
---|
85 | new abort set abort=0
|
---|
86 | new result set result=0
|
---|
87 | new repeatNeeded set repeatNeeded=0
|
---|
88 |
|
---|
89 | SATL1 set IEN=$$ItrInit^TMGITR(22706.9,.Itr)
|
---|
90 | do PrepProgress^TMGITR(.Itr,20,0,"IEN")
|
---|
91 | if IEN'="" for do quit:($$ItrNext^TMGITR(.Itr,.IEN)'>0)!(abort=1)
|
---|
92 | . if $$UserAborted^TMGUSRIF set abort=1 quit
|
---|
93 | . new Option
|
---|
94 | . set Option("CUR MODE")="TRADE"
|
---|
95 | . set result=$$POIFromTMG(IEN,.Option) ;"screen for skip will occur in function
|
---|
96 | . if result=-1 set repeatNeeded=1
|
---|
97 | . set Option("CUR MODE")="GENERIC"
|
---|
98 | . set result=$$POIFromTMG(IEN,.Option) ;"screen for skip will occur in function
|
---|
99 | . if result=-1 set repeatNeeded=1
|
---|
100 |
|
---|
101 | new % set %=2
|
---|
102 | if repeatNeeded do
|
---|
103 | . write !,"Error found and repeat scan needed.",!
|
---|
104 | . write "Repeat scan now" do YN^DICN write !
|
---|
105 | else do
|
---|
106 | . write !
|
---|
107 | . do PressToCont^TMGUSRIF
|
---|
108 | if %=1 goto SATL1
|
---|
109 |
|
---|
110 | quit
|
---|
111 |
|
---|
112 |
|
---|
113 | POIFromTMG(IEN22706d9,Option)
|
---|
114 | ;"Purpose: to Add/Update/(or delete) ONE entry in POI (50.7) file
|
---|
115 | ;"Input: IEN22706d9 -- IEN in 22706.9
|
---|
116 | ;" Option -- NON-OPTIONAL part. Format:
|
---|
117 | ;" Option("CUR MODE")="TRADE" or "GENERIC"
|
---|
118 | ;" Option -- OPTIONAL. Format:
|
---|
119 | ;" Option("FIX CHAIN")=1 <--- changes will be propigate forward
|
---|
120 | ;" to file POI, OI, OQV etc.
|
---|
121 | ;" OPTION("FIX CHAIN","IEN22706d9")=Source IEN
|
---|
122 | ;" Option("IEN50","TRADE")=IEN50 for Trade Name
|
---|
123 | ;" Option("IEN50","GENERIC")=IEN50 for Generic Name
|
---|
124 | ;" Option("CUR MODE")="TRADE" or "GENERIC"
|
---|
125 | ;" Option("QUIET")=1 <-- supress text output
|
---|
126 | ;" Option("DELETING")=1 <-- deleting chain (not IEN22706d9)
|
---|
127 |
|
---|
128 | ;"NOTE: This function does DOES screen for skipped entries, and skips
|
---|
129 | ;" proccessing. BUT, if Deleting, then it is NOT skipped
|
---|
130 | ;"Output: POI records will be added or refreshed (or deleted)
|
---|
131 | ;"Result: 1=OK, 0=Error, -1 process repeat requested
|
---|
132 |
|
---|
133 | new result set result=1
|
---|
134 | new repeatNeeded set repeatNeeded=0
|
---|
135 | new TMGA,TMGMSG
|
---|
136 | new IEN50d606,IEN51d2,IEN50d7
|
---|
137 |
|
---|
138 | if $get(Option("DELETING"))'=1,$piece($get(^TMG(22706.9,IEN22706d9,1)),"^",4)=1 goto AFTMGDone ;"1=SKIP
|
---|
139 | if +$get(IEN22706d9)=0 goto AFTMGDone
|
---|
140 |
|
---|
141 | new mode set mode=$get(Option("CUR MODE"))
|
---|
142 | if mode="" set result=0 goto AFTMGDone
|
---|
143 | new field,node,pce
|
---|
144 | if mode="GENERIC" set field=5.71,node=8,pce=4 ;"5.71= POI ptr Generic
|
---|
145 | else if mode="TRADE" set field=5.61,node=8,pce=3 ;"5.61 = POI ptr Trade
|
---|
146 |
|
---|
147 | do LoadOption^TMGNDF4C(IEN22706d9,.Option)
|
---|
148 |
|
---|
149 | set IEN50d606=$piece($get(^TMG(22706.9,IEN22706d9,0)),"^",7)
|
---|
150 | set IEN51d2=$piece($get(^TMG(22706.9,IEN22706d9,7)),"^",7)
|
---|
151 | new IEN50 set IEN50=+$get(Option("IEN50",mode))
|
---|
152 | if IEN50=0 set result=0 goto AFTM2
|
---|
153 |
|
---|
154 | new DrugNAF set DrugNAF=$get(Option("DRUG NAME AND FORM",mode))
|
---|
155 | if (DrugNAF="<DUPLICATE>")!(DrugNAF="") goto AFTM2 ;"skip these...
|
---|
156 |
|
---|
157 | set IEN50d7=+$get(Option("IEN50.7",mode))
|
---|
158 |
|
---|
159 | if $get(Option("DELETING"))=1 do goto AFTMGDone
|
---|
160 | . do KillPOI^TMGNDFUT(IEN50d7)
|
---|
161 | . set Option("IEN50.7",mode)=""
|
---|
162 |
|
---|
163 | if IEN50d7=0 set IEN50d7=$$FindPOI^TMGNDFUT(DrugNAF)
|
---|
164 | if IEN50d7=0 do if IEN50d7=0 set result=0 goto AFTM2
|
---|
165 | . new TMGFDA,TMGIEN,TMGMSG
|
---|
166 | . new PSEDITNM set PSEDITNM=1 ;"a key to allow editing data
|
---|
167 | . set TMGFDA(50.7,"+1,",.01)=DrugNAF
|
---|
168 | . set TMGFDA(50.7,"+1,",.02)=IEN50d606
|
---|
169 | . set TMGFDA(50.7,"+1,",.06)=IEN51d2
|
---|
170 | . set TMGFDA(50.7,"+1,",.07)="R"
|
---|
171 | . do UPDATE^DIE("","TMGFDA","TMGIEN","TMGMSG")
|
---|
172 | . if $data(TMGMSG("DIERR")) do
|
---|
173 | . . set result=0
|
---|
174 | . . do ShowIfDIERR^TMGDEBUG(.TMGMSG)
|
---|
175 | . else set IEN50d7=+$get(TMGIEN(1))
|
---|
176 | else do
|
---|
177 | . new TMGFDA,TMGIEN,TMGMSG
|
---|
178 | . new PSEDITNM set PSEDITNM=1 ;"a key to allow editing data
|
---|
179 | . set TMGFDA(50.7,IEN50d7_",",.01)=DrugNAF
|
---|
180 | . set TMGFDA(50.7,IEN50d7_",",.02)=IEN50d606
|
---|
181 | . set TMGFDA(50.7,IEN50d7_",",.06)=IEN51d2
|
---|
182 | . set TMGFDA(50.7,IEN50d7_",",.07)="R"
|
---|
183 | . new temp set temp=$$TrimFDA^TMGDBAPI(.TMGFDA)
|
---|
184 | . if $data(TMGFDA)=0 quit
|
---|
185 | . do FILE^DIE("S","TMGFDA","TMGMSG")
|
---|
186 | . if $data(TMGMSG("DIERR")) do
|
---|
187 | . . set result=0
|
---|
188 | . . do ShowIfDIERR^TMGDEBUG(.TMGMSG)
|
---|
189 | . . if $get(TMGMSG("DIERR",1))=601 do ;"601 --> [record doesn't exist]
|
---|
190 | . . . write "Dangling pointer found & removed. ** RUN ENTIRE PROCESS AGAIN **",!
|
---|
191 | . . . set IEN50d7=0
|
---|
192 | . . . new TMGFDA,TMGMSG
|
---|
193 | . . . set TMGFDA(22706.9,IEN22706d9_",",field)="@"
|
---|
194 | . . . do FILE^DIE("S","TMGFDA","TMGMSG")
|
---|
195 | . . . do ShowIfDIERR^TMGDEBUG(.TMGMSG)
|
---|
196 | . . . kill TMGFDA,TMGMSG
|
---|
197 | . . . set TMGFDA(50,IEN50_",",2.1)="@"
|
---|
198 | . . . do FILE^DIE("S","TMGFDA","TMGMSG")
|
---|
199 | . . . set repeatNeeded=1
|
---|
200 | . . . set result=-1
|
---|
201 | . . . if $data(TMGMSG("DIERR")) do
|
---|
202 | . . . . if $data(TMGMSG("DIERR","E",120))>0 set result="" quit ;"ignore error if #120 (hook) present.
|
---|
203 | . . . . do ShowIfDIERR^TMGDEBUG(.TMGMSG)
|
---|
204 |
|
---|
205 | set Option("IEN50.7",mode)=IEN50d7
|
---|
206 |
|
---|
207 | ;"Ensure pointer to POI stored in TMG IMPORT COMPILED
|
---|
208 | if +$piece($get(^TMG(22706.9,IEN22706d9,node)),"^",pce)'=IEN50d7 do
|
---|
209 | . new TMGFDA,TMGMSG
|
---|
210 | . set TMGFDA(22706.9,IEN22706d9_",",field)=IEN50d7
|
---|
211 | . do FILE^DIE("","TMGFDA","TMGMSG")
|
---|
212 | . do ShowIfDIERR^TMGDEBUG(.TMGMSG)
|
---|
213 | . set Option("IEN50.7",mode)=IEN50d7
|
---|
214 |
|
---|
215 | ;"Ensure pointer to POI stored in DRUG file, field 2.1
|
---|
216 | if +$piece($get(^PSDRUG(IEN50,2)),"^",1)'=IEN50d7 do
|
---|
217 | . new TMGFDA,TMGMSG
|
---|
218 | . set TMGFDA(50,IEN50_",",2.1)=IEN50d7
|
---|
219 | . do FILE^DIE("S","TMGFDA","TMGMSG")
|
---|
220 | . set result=0
|
---|
221 | . if $data(TMGMSG("DIERR")) do
|
---|
222 | . . if $data(TMGMSG("DIERR","E",120))>0 set result="" quit ;"ignore error if #120 (hook) present.
|
---|
223 | . . do ShowIfDIERR^TMGDEBUG(.TMGMSG)
|
---|
224 |
|
---|
225 | AFTM2
|
---|
226 | if $get(Option("FIX CHAIN"))=1 do ;"pass message forward for fix
|
---|
227 | . do Activ1TMG^TMGNDF4B(IEN22706d9)
|
---|
228 | . new temp set temp=$$OIFromTMG^TMGNDF4C(IEN22706d9,.Option) ;" <-- more chaining from this
|
---|
229 | . ;"if $get(Option("DELETING"))=1 do
|
---|
230 | . ;". new IEN50 set IEN50=+$get(Option("IEN50",mode))
|
---|
231 | . ;". if IEN50=0 write "?? 1 -- In POIFromTMG^TMGNDF4A.",! quit
|
---|
232 | . ;". new IEN50d7 set IEN50d7=+$get(Option("IEN50d7",mode))
|
---|
233 | . ;". if IEN50d7=0 set IEN50d7=+$piece(^PSDRUG(IEN50,2),"^",1) ;"try a second way
|
---|
234 | . ;". if IEN50d7=0 write "?? 2 -- In POIFromTMG^TMGNDF4A.",! quit
|
---|
235 | . ;". new numRef set numRef=$$ListCt^TMGMISC($name(^PSDRUG("ASP",IEN50d7)))
|
---|
236 | . ;". if numRef>1 quit ;"don't kill POI if another drug in 50 points to it
|
---|
237 | . ;". new TMGFDA,TMGMSG,TMGIEN
|
---|
238 | . ;". new PSEDITNM set PSEDITNM=1 ;"a key to allow editing data
|
---|
239 | . ;". set TMGFDA(50.7,IEN50d7_",",.01)="@" ;"delete pointer from file 50
|
---|
240 | . ;". do FILE^DIE("EK","TMGFDA","TMGMSG")
|
---|
241 | . ;". if $$ShowIfError^TMGDBAPI(.TMGMSG) quit
|
---|
242 | . ;". ;"Now delete from TMG IMPORT COMPILED
|
---|
243 | . ;". new field
|
---|
244 | . ;". if mode="GENERIC" set field=5.71
|
---|
245 | . ;". else if mode="TRADE" set field=5.61
|
---|
246 | . ;". else write "Can't delete pointer to 50.7 from 22706.9.",!,"Can't determine if GENERIC or TRADE mode.",! quit
|
---|
247 | . ;". set TMGFDA(22706.9,IEN22706d9_",",field)="@" ;"delete pointer from TMG IMPORT COMPILED
|
---|
248 | . ;". do FILE^DIE("EK","TMGFDA","TMGMSG")
|
---|
249 | . ;". if $$ShowIfError^TMGDBAPI(.TMGMSG) quit
|
---|
250 |
|
---|
251 | AFTMGDone
|
---|
252 | if repeatNeeded=1 set result=-1
|
---|
253 | quit result
|
---|
254 |
|
---|
255 | ;" === Do1POI is old -- delete later...
|
---|
256 | Do1POI(IEN22706d9,IEN50d606,IEN51d2,Option)
|
---|
257 | ;"Purpose: add/refresh one PHARMACY ORDERABLE ITEM (POI) entry.
|
---|
258 | ;"Input: IEN22706d9 -- IEN in 22706.9
|
---|
259 | ;" IEN50d606 -- IEN in 50.606
|
---|
260 | ;" IEN51d2 -- IEN in 51.2
|
---|
261 | ;" Option -- NON-OPTIONAL PART. Format:
|
---|
262 | ;" Option("CUR MODE")="TRADE" or "GENERIC"
|
---|
263 | ;" Option("IEN50.7","TRADE")=IEN50.7 for Trade Name
|
---|
264 | ;" Option("IEN50.7","GENERIC")=IEN50.7 for Generic Name
|
---|
265 | ;" Option("DRUG NAME AND FORM","TRADE")=Trade Name and Form
|
---|
266 | ;" Option("DRUG NAME AND FORM","GENERIC")=Generic Name and Form
|
---|
267 | ;" Option("IEN50","TRADE")=IEN50 for Trade Name
|
---|
268 | ;" Option("IEN50","GENERIC")=IEN50 for Generic Name
|
---|
269 | ;" Option -- OPTIONAL. Format:
|
---|
270 | ;" Option("FIX CHAIN")=1 <--- changes will be propigate forward
|
---|
271 | ;" to file POI, OI, OQV etc.
|
---|
272 | ;" OPTION("FIX CHAIN","IEN22706d9")=Source IEN
|
---|
273 | ;" Option("QUIET")=1 <-- supress text output
|
---|
274 | ;" Option("DELETING")=1 <-- deleting chain (not IEN22706d9)
|
---|
275 | ;"Result: IEN50d7 if OK, -1 =Error, -2 process repeat requested
|
---|
276 |
|
---|
277 | new result set result="" ;"default to null
|
---|
278 | new TMGA,TMGMSG
|
---|
279 | new IEN50d7 set IEN50d7=-1 ;"default to error
|
---|
280 | new mode set mode=$get(Option("CUR MODE"))
|
---|
281 | if mode="" write "ERROR: in Do1POI^TMGNDF4A. Mode not supplied.",! goto D1PDone
|
---|
282 | new DrugNAF set DrugNAF=$get(Option("DRUG NAME AND FORM",mode))
|
---|
283 | if (DrugNAF="<DUPLICATE>")!(DrugNAF="") goto D1PDone ;"skip these...
|
---|
284 | new IEN50 set IEN50=+$get(Option("IEN50",mode)) if IEN50=0 set result=-1 goto D1PDone
|
---|
285 | new IEN50d7 set IEN50d7=+$get(Option("IEN50.7",mode))
|
---|
286 | new field,node,pce
|
---|
287 | if mode="GENERIC" set field=5.71,node=8,pce=4 ;"5.71= POI ptr Generic
|
---|
288 | else if mode="TRADE" set field=5.61,node=8,pce=3 ;"5.61 = POI ptr Trade
|
---|
289 |
|
---|
290 | if IEN50d7=0 set IEN50d7=$$FindPOI^TMGNDFUT(DrugNAF)
|
---|
291 | if IEN50d7=0 do
|
---|
292 | . new TMGFDA,TMGIEN,TMGMSG
|
---|
293 | . new PSEDITNM set PSEDITNM=1 ;"a key to allow editing data
|
---|
294 | . set TMGFDA(50.7,"+1,",.01)=DrugNAF
|
---|
295 | . set TMGFDA(50.7,"+1,",.02)=IEN50d606
|
---|
296 | . set TMGFDA(50.7,"+1,",.06)=IEN51d2
|
---|
297 | . set TMGFDA(50.7,"+1,",.07)="R"
|
---|
298 | . do UPDATE^DIE("","TMGFDA","TMGIEN","TMGMSG")
|
---|
299 | . if $data(TMGMSG("DIERR")) do
|
---|
300 | . . set result=-1
|
---|
301 | . . do ShowIfDIERR^TMGDEBUG(.TMGMSG)
|
---|
302 | . else set IEN50d7=+$get(TMGIEN(1))
|
---|
303 | else do
|
---|
304 | . new TMGFDA,TMGIEN,TMGMSG
|
---|
305 | . new PSEDITNM set PSEDITNM=1 ;"a key to allow editing data
|
---|
306 | . set TMGFDA(50.7,IEN50d7_",",.01)=DrugNAF
|
---|
307 | . set TMGFDA(50.7,IEN50d7_",",.02)=IEN50d606
|
---|
308 | . set TMGFDA(50.7,IEN50d7_",",.06)=IEN51d2
|
---|
309 | . set TMGFDA(50.7,IEN50d7_",",.07)="R"
|
---|
310 | . new temp set temp=$$TrimFDA^TMGDBAPI(.TMGFDA)
|
---|
311 | . if $data(TMGFDA)=0 quit
|
---|
312 | . do FILE^DIE("S","TMGFDA","TMGMSG")
|
---|
313 | . if $data(TMGMSG("DIERR")) do
|
---|
314 | . . set result=-1
|
---|
315 | . . do ShowIfDIERR^TMGDEBUG(.TMGMSG)
|
---|
316 | . . if $get(TMGMSG("DIERR",1))=601 do ;"601 --> [record doesn't exist]
|
---|
317 | . . . write "Dangling pointer found & removed. ** RUN ENTIRE PROCESS AGAIN **",!
|
---|
318 | . . . set IEN50d7=0
|
---|
319 | . . . new TMGFDA,TMGMSG
|
---|
320 | . . . set TMGFDA(22706.9,IEN22706d9_",",field)="@"
|
---|
321 | . . . do FILE^DIE("S","TMGFDA","TMGMSG")
|
---|
322 | . . . do ShowIfDIERR^TMGDEBUG(.TMGMSG)
|
---|
323 | . . . kill TMGFDA,TMGMSG
|
---|
324 | . . . set TMGFDA(50,IEN50_",",2.1)="@"
|
---|
325 | . . . do FILE^DIE("S","TMGFDA","TMGMSG")
|
---|
326 | . . . set result=-1
|
---|
327 | . . . if $data(TMGMSG("DIERR")) do
|
---|
328 | . . . . if $data(TMGMSG("DIERR","E",120))>0 set result="" quit ;"ignore error if #120 (hook) present.
|
---|
329 | . . . . do ShowIfDIERR^TMGDEBUG(.TMGMSG)
|
---|
330 |
|
---|
331 | if +IEN50d7=0 set result=-1 goto D1PDone
|
---|
332 |
|
---|
333 | ;"if +$get(Option("IEN50.7",mode))=0 do
|
---|
334 | ;". new TMGFDA,TMGMSG
|
---|
335 | ;". set TMGFDA(22706.9,IEN22706d9_",",field)=IEN50d7
|
---|
336 | ;". do FILE^DIE("S","TMGFDA","TMGMSG")
|
---|
337 | ;". do ShowIfDIERR^TMGDEBUG(.TMGMSG)
|
---|
338 | ;". set Option("IEN50.7",mode)=IEN50d7
|
---|
339 |
|
---|
340 | ;"Store pointer to POI in TMG IMPORT COMPILED
|
---|
341 | if +$piece($get(^TMG(22706.9,IEN22706d9,node)),"^",pce)'=IEN50d7 do
|
---|
342 | . new TMGFDA,TMGMSG
|
---|
343 | . set TMGFDA(22706.9,IEN22706d9_",",field)=IEN50d7
|
---|
344 | . do FILE^DIE("","TMGFDA","TMGMSG")
|
---|
345 | . do ShowIfDIERR^TMGDEBUG(.TMGMSG)
|
---|
346 | . set Option("IEN50.7",mode)=IEN50d7
|
---|
347 |
|
---|
348 | if +$piece($get(^PSDRUG(IEN50,2)),"^",1)'=IEN50d7 do
|
---|
349 | . new TMGFDA,TMGMSG
|
---|
350 | . set TMGFDA(50,IEN50_",",2.1)=IEN50d7
|
---|
351 | . do FILE^DIE("S","TMGFDA","TMGMSG")
|
---|
352 | . set result=-1
|
---|
353 | . if $data(TMGMSG("DIERR")) do
|
---|
354 | . . if $data(TMGMSG("DIERR","E",120))>0 set result="" quit ;"ignore error if #120 (hook) present.
|
---|
355 | . . do ShowIfDIERR^TMGDEBUG(.TMGMSG)
|
---|
356 |
|
---|
357 | D1PDone
|
---|
358 | if result="" set result=IEN50d7
|
---|
359 | quit result
|
---|
360 |
|
---|
361 | ;"=================================================================
|
---|
362 | ;"=================================================================
|
---|
363 |
|
---|
364 |
|
---|
365 | InactivatePOIs
|
---|
366 | ;"Purpose: To inactivate all POI (entries in PHARMACY ORDERABLE ITEMS)
|
---|
367 | ;" This will prevent left-over entries from a prior run to cause problems
|
---|
368 |
|
---|
369 | new Itr,IEN
|
---|
370 | new abort set abort=0
|
---|
371 | write "Inactivating all prior PHARMACY ORDERABLE ITEMS...",!
|
---|
372 | set IEN=$$ItrInit^TMGITR(50.7,.Itr)
|
---|
373 | do PrepProgress^TMGITR(.Itr,20,0,"IEN")
|
---|
374 | if IEN'="" for do quit:($$ItrNext^TMGITR(.Itr,.IEN)'>0)!abort
|
---|
375 | . if $$UserAborted^TMGUSRIF set abort=1 quit
|
---|
376 | . new TMGFDA,TMGMSG
|
---|
377 | . set TMGFDA(50.7,IEN_",",.04)="NOW"
|
---|
378 | . do FILE^DIE("KE","TMGFDA","TMGMSG")
|
---|
379 | . do ShowIfDIERR^TMGDEBUG(.TMGMSG)
|
---|
380 | do ProgressDone^TMGITR(.Itr)
|
---|
381 |
|
---|
382 | quit
|
---|
383 |
|
---|
384 |
|
---|
385 | ActivAll
|
---|
386 | ;"DISABLED... THIS SHOULD BE DONE IN TMENDF4B...
|
---|
387 |
|
---|
388 | ;"Purpose: to activate all POI's
|
---|
389 |
|
---|
390 | new Itr,IEN
|
---|
391 | new abort set abort=0
|
---|
392 | set IEN=$$ItrInit^TMGITR(50.7,.Itr)
|
---|
393 | do PrepProgress^TMGITR(.Itr,20,0,"IEN")
|
---|
394 | if IEN'="" for do quit:(+$$ItrNext^TMGITR(.Itr,.IEN)'>0)!abort
|
---|
395 | . if $$UserAborted^TMGUSRIF set abort=1 quit
|
---|
396 | . new temp
|
---|
397 | . set temp=$$ActivatePOI(IEN)
|
---|
398 | do ProgressDone^TMGITR(.Itr)
|
---|
399 |
|
---|
400 | quit
|
---|
401 |
|
---|
402 |
|
---|
403 |
|
---|
404 | ActivatePOI(IEN50d7)
|
---|
405 | ;"Purpose: to remove the inactivation date that is automatically
|
---|
406 | ;" added with editing of the POI record
|
---|
407 | ;"result: 1 = OK, 0=error
|
---|
408 |
|
---|
409 | new result set result=1
|
---|
410 |
|
---|
411 | new TMGFDA,TMGMSG
|
---|
412 | set TMGFDA(50.7,IEN50d7_",",.04)="@" ;"delete inactivation date field value
|
---|
413 | do
|
---|
414 | . new $etrap set $etrap="do HandlePOIErr^TMGNDF4A quit"
|
---|
415 | . do FILE^DIE("ES","TMGFDA","TMGMSG")
|
---|
416 | if $data(TMGMSG("DIERR"))'=0 do goto APOIDone
|
---|
417 | . do ShowDIERR^TMGDEBUG(.TMGMSG,.PriorErrorFound)
|
---|
418 | . set result=0
|
---|
419 | . write "Error occurred in function ActivatePOI",!
|
---|
420 | . zwr TMGFDA
|
---|
421 | APOIDone
|
---|
422 | quit result
|
---|
423 |
|
---|
424 |
|
---|
425 | HandlePOIErr
|
---|
426 | ;"Purpose: An error handler for ActivatePOI
|
---|
427 | set $ECODE=""
|
---|
428 | if result=0 quit
|
---|
429 | set result=0
|
---|
430 | write "Error encountered activating Pharmacy Orderable Item: "
|
---|
431 | write $piece($get(^PS(50.7,IEN50d7,0)),"^",1)," (#",IEN50d7,")",!
|
---|
432 | ;"Note: below won't set needed xrefs etc.
|
---|
433 | ;"set $piece(^PS(50.7,IEN50d7,0),"^",4)=""
|
---|
434 | ;"write "Fixed with low-level removal of inactivation date.",!
|
---|
435 | quit
|
---|
436 |
|
---|
437 |
|
---|
438 |
|
---|
439 | KillPOIs
|
---|
440 | ;"Purpose: to kill all POI's, do allow fresh start (after errors)
|
---|
441 |
|
---|
442 | new % set %=2
|
---|
443 | write "Are you sure you want to perminantly KILL all PHARMACY ORDERABLE ITEMS"
|
---|
444 | do YN^DICN
|
---|
445 | if %'=1 goto KPOIDone
|
---|
446 |
|
---|
447 | new Itr,IEN50d7
|
---|
448 | new abort set abort=0
|
---|
449 | set IEN50d7=$$ItrInit^TMGITR(50.7,.Itr)
|
---|
450 | do PrepProgress^TMGITR(.Itr,2,0,"IEN50d7")
|
---|
451 | if IEN50d7'="" for do quit:(+$$ItrNext^TMGITR(.Itr,.IEN50d7)'>0)!abort
|
---|
452 | . if $$UserAborted^TMGUSRIF set abort=1 quit
|
---|
453 | . do KillPOI^TMGNDFUT(IEN50d7)
|
---|
454 | do ProgressDone^TMGITR(.Itr)
|
---|
455 |
|
---|
456 | KPOIDone
|
---|
457 | quit
|
---|