1 | TMGNDF3E ;TMG/kst/FDA Import: Inactivate unwanted DRUGs ;03/25/06
|
---|
2 | ;;1.0;TMG-LIB;**1**;11/21/06
|
---|
3 |
|
---|
4 | ;" FDA - NATIONAL DRUG FILES COMPILING FUNCTIONS
|
---|
5 | ;" Inactivate DRUG entries not linked to import.
|
---|
6 | ;"Kevin Toppenberg MD
|
---|
7 | ;"GNU General Public License (GPL) applies
|
---|
8 | ;"11-21-2006
|
---|
9 |
|
---|
10 | ;"=======================================================================
|
---|
11 | ;" API -- Public Functions.
|
---|
12 | ;"=======================================================================
|
---|
13 | ;"Menu
|
---|
14 | ;"=======================================================================
|
---|
15 |
|
---|
16 | ;"=======================================================================
|
---|
17 | ;" Private Functions.
|
---|
18 | ;"=======================================================================
|
---|
19 |
|
---|
20 | Menu
|
---|
21 | ;"Purpose: Provide menu to entry points of main routines
|
---|
22 |
|
---|
23 | new Menu,UsrSlct
|
---|
24 | set Menu(0)="Pick Option for Inactivate unused DRUG file entries (3E)"
|
---|
25 | set Menu(1)="Inactivate DRUG entries not linked to import"_$char(9)_"InactivateUnused"
|
---|
26 | set Menu(2)="Kill DRUG entries not linked to import (CAUTION!)"_$char(9)_"KillUnused"
|
---|
27 | set Menu(3)="View DRUG entries that ARE linked to import"_$char(9)_"BrowseUsed"
|
---|
28 | set Menu(4)="Review DRUG entries for bad imports"_$char(9)_"CheckForBad"
|
---|
29 | set Menu("P")="Prev Stage"_$char(9)_"Prev"
|
---|
30 | set Menu("N")="Next Stage"_$char(9)_"Next"
|
---|
31 |
|
---|
32 | MC1 write #
|
---|
33 | set UsrSlct=$$Menu^TMGUSRIF(.Menu,"^")
|
---|
34 | if UsrSlct="^" goto MCDone
|
---|
35 | if UsrSlct=0 set UsrSlct=""
|
---|
36 |
|
---|
37 | if UsrSlct="InactivateUnused" do InactivateUnused goto MC1
|
---|
38 | if UsrSlct="KillUnused" do KillUnused goto MC1
|
---|
39 | if UsrSlct="BrowseUsed" do BrowseUsed goto MC1
|
---|
40 | if UsrSlct="CheckForBad" do ReviewForBad goto MC1
|
---|
41 | if UsrSlct="Prev" goto Menu^TMGNDF3D ;"quit can occur from there...
|
---|
42 | if UsrSlct="Next" goto Menu^TMGNDF4A ;"quit can occur from there...
|
---|
43 | goto MC1
|
---|
44 |
|
---|
45 | MCDone
|
---|
46 | quit
|
---|
47 |
|
---|
48 | ;"=======================================================================
|
---|
49 |
|
---|
50 | InactivateUnused
|
---|
51 | ;"Purpose: To cycle through all DRUG entries and inactivate those
|
---|
52 | ;" not linked to a non-skipped entry in 22706.9 (TMG FDA IMPORT COMPILED)
|
---|
53 | ;"Input: none
|
---|
54 | ;"Results: none.
|
---|
55 |
|
---|
56 | new count set count=0
|
---|
57 | new OnlyTMG set OnlyTMG=1
|
---|
58 | new % set %=1
|
---|
59 | write !,!,"When scanning through records in the DRUG file,",!
|
---|
60 | write "should just entries that this FDA import process",!
|
---|
61 | write "has added (for example, on a previous run), or ",!
|
---|
62 | write "should ALL entries be considered for inactivation?",!
|
---|
63 | write "Inactivate ONLY former FDA imports" do YN^DICN write !
|
---|
64 | if %=-1 goto IUDone
|
---|
65 | if %=1 goto IU2
|
---|
66 | set %=1
|
---|
67 | write "Inactivate ALL DRUG entries" do YN^DICN write !
|
---|
68 | if %'=1 goto IUDone
|
---|
69 | set OnlyTMG=0
|
---|
70 |
|
---|
71 | IU2 new Itr,IEN
|
---|
72 | new abort set abort=0
|
---|
73 | set IEN=$$ItrInit^TMGITR(50,.Itr)
|
---|
74 | write !,"Scanning DRUG entries to find entries to inactivate...",!
|
---|
75 | do PrepProgress^TMGITR(.Itr,20,0,"IEN")
|
---|
76 | if IEN'="" for do quit:($$ItrNext^TMGITR(.Itr,.IEN)'>0)!abort
|
---|
77 | . if $$UserAborted^TMGUSRIF set abort=1 quit
|
---|
78 | . if (OnlyTMG=1),($$TMGAdded(IEN)=0) quit
|
---|
79 | . new fdaIEN set fdaIEN=+$$GetfdaIEN^TMGNDFUT(IEN)
|
---|
80 | . if (fdaIEN'>0)&(OnlyTMG=1) quit
|
---|
81 | . if (fdaIEN>0),($piece($get(^TMG(22706.9,fdaIEN,1)),"^",4)'=1) quit ;" 1=SKIP
|
---|
82 | . new InactiveDate set InactiveDate=$$GET1^DIQ(50,IEN_",",100)
|
---|
83 | . if InactiveDate'="" quit ;"already inactivated.
|
---|
84 | . ;"write "Inactivate-->",$$GET1^DIQ(50,IEN_",",.01),!
|
---|
85 | . do AddMsg^TMGNDF3C(IEN,"TMG INACTIV D/T NO FDA") ;"Add a message in the Activity log field
|
---|
86 | . new TMGFDA,TMGMSG
|
---|
87 | . set TMGFDA(50,IEN_",",100)="NOW"
|
---|
88 | . do FILE^DIE("KE","TMGFDA","TMGMSG")
|
---|
89 | . do ShowIfDIERR^TMGDEBUG(.TMGMSG)
|
---|
90 | . set count=count+1
|
---|
91 | do ProgressDone^TMGITR(.Itr)
|
---|
92 |
|
---|
93 | IUDone
|
---|
94 | write count," entries inactivated.",!
|
---|
95 | do PressToCont^TMGUSRIF
|
---|
96 | quit
|
---|
97 |
|
---|
98 |
|
---|
99 | KillUnused
|
---|
100 | ;"Purpose: To cycle through all DRUG entries and kill those
|
---|
101 | ;" not linked to a non-skipped entry in 22706.9 (TMG FDA IMPORT COMPILED)
|
---|
102 | ;"Input: none
|
---|
103 | ;"Results: none.
|
---|
104 |
|
---|
105 | new count set count=0
|
---|
106 |
|
---|
107 | write !,!
|
---|
108 | write "**********************************************************",!
|
---|
109 | write "NOTICE: * IMPORTANT *",!
|
---|
110 | write "This process could delete drugs that are referenced",!
|
---|
111 | write "by an active medical record. As such that would be",!
|
---|
112 | write "an alteration of a record (i.e. illegal).",!,!
|
---|
113 | write "This process should only be used during initial",!
|
---|
114 | write "installation of the drug files (i.e. during debugging etc.)",!,!
|
---|
115 | write "**********************************************************",!
|
---|
116 | write "If you want to continue, type: 'I UNDERSTAND'",!
|
---|
117 | new temp
|
---|
118 | read "> ",temp:($get(DTIME,3600)),!
|
---|
119 | if temp'="I UNDERSTAND" goto KUDone
|
---|
120 |
|
---|
121 | new Itr,IEN
|
---|
122 | new abort set abort=0
|
---|
123 | set IEN=$$ItrInit^TMGITR(50,.Itr)
|
---|
124 | write !,"Scanning DRUG entries to find unused entries to delete...",!
|
---|
125 | do PrepProgress^TMGITR(.Itr,20,0,"IEN")
|
---|
126 | if IEN'="" for do quit:($$ItrNext^TMGITR(.Itr,.IEN)'>0)!abort
|
---|
127 | . if $$UserAborted^TMGUSRIF set abort=1 quit
|
---|
128 | . new fdaIEN set fdaIEN=+$$GetfdaIEN^TMGNDFUT(IEN)
|
---|
129 | . if (fdaIEN>0),($piece($get(^TMG(22706.9,fdaIEN,1)),"^",4)'=1) quit ;" 1=SKIP
|
---|
130 | . new TMGFDA,TMGMSG
|
---|
131 | . set TMGFDA(50,IEN_",",.01)="@" ;"delete record
|
---|
132 | . do FILE^DIE("KE","TMGFDA","TMGMSG")
|
---|
133 | . do ShowIfDIERR^TMGDEBUG(.TMGMSG)
|
---|
134 | . set count=count+1
|
---|
135 | do ProgressDone^TMGITR(.Itr)
|
---|
136 |
|
---|
137 | KUDone
|
---|
138 | write count," unlinked entries deleted.",!
|
---|
139 | do PressToCont^TMGUSRIF
|
---|
140 | quit
|
---|
141 |
|
---|
142 |
|
---|
143 |
|
---|
144 | TMGAdded(IEN50)
|
---|
145 | ;"Purpose: to determine if the record in 50 is one that this TMG code added.
|
---|
146 | ;"Input: IEN50 -- IEN in file 50
|
---|
147 | ;"Results: 1 if TMG added, 0 otherwise.
|
---|
148 |
|
---|
149 | new result set result=0
|
---|
150 | new idx set idx=0
|
---|
151 | for set idx=$order(^PSDRUG(IEN50,4,idx)) quit:(idx="")!(result=1) do
|
---|
152 | . new msg set msg=$piece($get(^PSDRUG(IEN50,4,idx,0)),"^",5)
|
---|
153 | . if $extract(msg,1,3)="TMG" set result=1
|
---|
154 | quit result
|
---|
155 |
|
---|
156 | ;"========================
|
---|
157 | GetUsed(pList,pSource)
|
---|
158 | ;"Purpose: to Get a list of DRUG entries that are linked to from an import that is not SKIPPED
|
---|
159 | ;"Input: pList -- PASS BY NAME. An OUT PARAMETER. Format:
|
---|
160 | ;" @pList@(IEN50)=""
|
---|
161 | ;" @pList@(IEN50)=""
|
---|
162 | ;" pSource -- OPTIONAL. PASS BY NAME. an OUT PARAMETER. Format:
|
---|
163 | ;" @pSource@(IEN50,IEN22706d9)=""
|
---|
164 | ;" @pSource@(IEN50,IEN22706d9)=""
|
---|
165 | ;"Results: None
|
---|
166 |
|
---|
167 | new Itr,IEN
|
---|
168 | new temp
|
---|
169 | set pSource=$get(pSource,"temp")
|
---|
170 | new abort set abort=0
|
---|
171 | set IEN=$$ItrInit^TMGITR(22706.9,.Itr)
|
---|
172 | write !,"Scanning DRUG entries to Browse/View...",!
|
---|
173 | do PrepProgress^TMGITR(.Itr,20,0,"IEN")
|
---|
174 | if IEN'="" for do quit:($$ItrNext^TMGITR(.Itr,.IEN)'>0)!abort
|
---|
175 | . if $$UserAborted^TMGUSRIF set abort=1 quit
|
---|
176 | . if $piece($get(^TMG(22706.9,IEN,1)),"^",4)=1 quit ;" 1=SKIP
|
---|
177 | . new gIEN,tIEN
|
---|
178 | . set tIEN=+$piece($get(^TMG(22706.9,IEN,7)),"^",1)
|
---|
179 | . set gIEN=+$piece($get(^TMG(22706.9,IEN,7)),"^",1)
|
---|
180 | . if tIEN>0 set @pList@(tIEN)="",@pSource@(tIEN,IEN)=""
|
---|
181 | . if gIEN>0 set @pList@(gIEN)="",@pSource@(gIEN,IEN)=""
|
---|
182 |
|
---|
183 | quit
|
---|
184 |
|
---|
185 | BrowseUsed
|
---|
186 | ;"Purpose: To Browse DRUG entries that are linked to a used import (not skipped)
|
---|
187 |
|
---|
188 | new List
|
---|
189 | new Options,IEN
|
---|
190 |
|
---|
191 | set Options("FIELDS",1)=".01^GENERIC NAME^41"
|
---|
192 | set Options("FIELDS",1,"NO EDIT")=1 ;"i.e. show for browsing, but don't allow edit
|
---|
193 | set Options("FIELDS",2)="31^NDC^16"
|
---|
194 | set Options("FIELDS",2,"NO EDIT")=1 ;"i.e. show for browsing, but don't allow edit
|
---|
195 | set Options("FIELDS","MAX NUM")=2
|
---|
196 | set Options("FILE")="50^DRUG"
|
---|
197 |
|
---|
198 | do GetUsed($name(Options("IEN LIST")))
|
---|
199 |
|
---|
200 | new temp
|
---|
201 | set temp=$$SELED^TMGSELED(.Options)
|
---|
202 |
|
---|
203 | BUDone quit
|
---|
204 |
|
---|
205 |
|
---|
206 | ;"=======================================
|
---|
207 | ReviewForBad
|
---|
208 | ;"Purpose: To review DRUG entries for bad imports
|
---|
209 | ;"Input: none
|
---|
210 | ;"Output: ...
|
---|
211 |
|
---|
212 | ;"Results: None
|
---|
213 |
|
---|
214 | new List
|
---|
215 | new IEN50List,IEN50,IEN22706d9,SrcList
|
---|
216 | new IENTMGList
|
---|
217 | new resultList
|
---|
218 |
|
---|
219 | do GetUsed("IEN50List","SrcList")
|
---|
220 |
|
---|
221 | do IENSelector^TMGUSRIF("IEN50List","resultList",50,".01",40,"Select any bad names to investigate them. [ESC][ESC] to exit",".01")
|
---|
222 |
|
---|
223 | new Options
|
---|
224 |
|
---|
225 | set IEN50=""
|
---|
226 | for set IEN50=$order(resultList(IEN50)) quit:(IEN50="") do
|
---|
227 | . set IEN22706d9=$order(^TMG(22706.9,"DRUGT",IEN50,""))
|
---|
228 | . if IEN22706d9'="" set Options("IEN LIST",IEN22706d9)=""
|
---|
229 | . set IEN22706d9=$order(^TMG(22706.9,"DRUG",IEN50,""))
|
---|
230 | . if IEN22706d9'="" set Options("IEN LIST",IEN22706d9)=""
|
---|
231 |
|
---|
232 | set Options("FIELDS",1)=".055^TRADE NAME & FORM - 40^35"
|
---|
233 | set Options("FIELDS",1,"NO EDIT")=1 ;"i.e. show for browsing, but don't allow edit
|
---|
234 | set Options("FIELDS",2)=".075^,@pSource@(tIEN,IEN)=""^35"
|
---|
235 | set Options("FIELDS",2,"NO EDIT")=1 ;"i.e. show for browsing, but don't allow edit
|
---|
236 | set Options("FIELDS",3)="6^SKIP THIS RECORD^5"
|
---|
237 | set Options("FIELDS","MAX NUM")=3
|
---|
238 | set Options("FILE")="22706.9^TMG FDA IMPORT COMPILED"
|
---|
239 |
|
---|
240 | new temp
|
---|
241 | set temp=$$SELED^TMGSELED(.Options)
|
---|
242 |
|
---|
243 | quit
|
---|