[796] | 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
|
---|