| 1 | TMGNDF2C ;TMG/kst/FDA Import: Fill VA GENERIC entries;03/25/06
 | 
|---|
| 2 |          ;;1.0;TMG-LIB;**1**;11/21/06
 | 
|---|
| 3 | 
 | 
|---|
| 4 |  ;" FDA - NATIONAL DRUG FILES COMPILING FUNCTIONS
 | 
|---|
| 5 |  ;"      -- FILLING VA GENERIC FILE WITH NEW VALUES
 | 
|---|
| 6 |  ;"      -- and linking field .08 (VA GENERIC) in file TMG FDA IMPORT with links to apprpriate values.
 | 
|---|
| 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 |  ;"FillGenerics  --  scan TMG FDA IMPORT file and make sure that all of the GENERIC NAMEs
 | 
|---|
| 17 |  ;"      have been added into the VA GENERIC file, or that a link exists between a
 | 
|---|
| 18 |  ;"      GENERIC name and an existing VA GENERIC name.
 | 
|---|
| 19 |  ;"      Then use this data and fill in field .08 in file TMG FDA IMPORT COMPILED
 | 
|---|
| 20 | 
 | 
|---|
| 21 |  ;"=======================================================================
 | 
|---|
| 22 |  ;" Private Functions.
 | 
|---|
| 23 |  ;"=======================================================================
 | 
|---|
| 24 |  ;"CheckGenerics(Results)
 | 
|---|
| 25 |  ;"Rescan(Array,Label,number)
 | 
|---|
| 26 |  ;"FindSimGenerics(Generic,Array)
 | 
|---|
| 27 |  ;"NarrowGenMatches(Generic,Array)
 | 
|---|
| 28 |  ;"FindGenContain(name,Array)
 | 
|---|
| 29 |  ;"Scan4Generics(Array)
 | 
|---|
| 30 |  ;"Unlock50dot6
 | 
|---|
| 31 |  ;"Lock50dot6
 | 
|---|
| 32 |  ;"ShowList(Array,Label)
 | 
|---|
| 33 |  ;"ProcessList(Array) -- handle adding generic names, returning a list of linkages
 | 
|---|
| 34 |  ;"HandleAdds(Array) -- handle adding those entries in Array that need to be added to VA GENERIC file.
 | 
|---|
| 35 |  ;"Remove(Array,Label,Num,EndNum) -- remove name(s) from Array of additions to VA GENERIC file
 | 
|---|
| 36 |  ;"CustLookup(Array,Label,Num) -- manually link entry in Array to an existing entry in VA GENERIC file
 | 
|---|
| 37 |  ;"DoAdds(Array,Label,Num,EndNum) -- extract name(s) from Array and add to VA GENERIC file, via Add1Generic
 | 
|---|
| 38 |  ;"Add1Generic(Name) -- add on entry to the VA GENERIC FILE
 | 
|---|
| 39 |  ;"HandleQAdds(Array) -- review 'Uncertain Matches' node of Array and allow user to specify whether
 | 
|---|
| 40 |  ;"DoLinks(Array,Num,EndNum) -- change a link from the "Uncertain Matches" node, to a formal link
 | 
|---|
| 41 |  ;"DoMltLink(Array,Num,TMGGeneric) -- interact with user and pick which link (amoung multiple)
 | 
|---|
| 42 |  ;"FillCompFile(Array) -- fill in field .08 in file TMG FDA IMPORT COMPILED
 | 
|---|
| 43 | 
 | 
|---|
| 44 |  ;"=======================================================================
 | 
|---|
| 45 |  ;"=======================================================================
 | 
|---|
| 46 | 
 | 
|---|
| 47 | Menu
 | 
|---|
| 48 |         ;"Purpose: Provide menu to entry points of main routines
 | 
|---|
| 49 | 
 | 
|---|
| 50 |         new Menu,UsrSlct
 | 
|---|
| 51 |         set Menu(0)="Pick Option for filling VA GENERIC entries (2C)"
 | 
|---|
| 52 |         set Menu(1)="Ensure link between import GENERIC name, and VA GENERIC name"_$char(9)_"FillGenerics"
 | 
|---|
| 53 |         set Menu("P")="Prev Stage"_$char(9)_"Prev"
 | 
|---|
| 54 |         set Menu("N")="Next Stage"_$char(9)_"Next"
 | 
|---|
| 55 | 
 | 
|---|
| 56 | MC1     write #
 | 
|---|
| 57 |         set UsrSlct=$$Menu^TMGUSRIF(.Menu,"^")
 | 
|---|
| 58 |         if UsrSlct="^" goto MCDone
 | 
|---|
| 59 |         if UsrSlct=0 set UsrSlct=""
 | 
|---|
| 60 | 
 | 
|---|
| 61 |         if UsrSlct="FillGenerics" do FillGenerics goto MC1
 | 
|---|
| 62 |         if UsrSlct="Prev" goto Menu^TMGNDF2A  ;"quit can occur from there...
 | 
|---|
| 63 |         if UsrSlct="Next" goto Menu^TMGNDF2E  ;"quit can occur from there...
 | 
|---|
| 64 |         goto MC1
 | 
|---|
| 65 | 
 | 
|---|
| 66 | MCDone
 | 
|---|
| 67 |         quit
 | 
|---|
| 68 | 
 | 
|---|
| 69 | 
 | 
|---|
| 70 | FillGenerics
 | 
|---|
| 71 |         ;"Purpose: To scan TMG FDA IMPORT file and make sure that all of the GENERIC NAMEs
 | 
|---|
| 72 |         ;"      have been added into the VA GENERIC file, or that a link exists between a
 | 
|---|
| 73 |         ;"      GENERIC name and an existing VA GENERIC name.
 | 
|---|
| 74 |         ;"      Then use this data and fill in field .08 in file TMG FDA IMPORT COMPILED
 | 
|---|
| 75 | 
 | 
|---|
| 76 |         new list
 | 
|---|
| 77 | 
 | 
|---|
| 78 |         write #
 | 
|---|
| 79 |         write "======================================================",!
 | 
|---|
| 80 |         write "Link FDA import entries to entries in VA GENERIC file",!
 | 
|---|
| 81 |         write "======================================================",!,!
 | 
|---|
| 82 |         new list
 | 
|---|
| 83 |         if $data(^TMG("templist")) do
 | 
|---|
| 84 |         . write "Data from another work run found.  Continue to use this"
 | 
|---|
| 85 |         . new % set %=1 do YN^DICN write !
 | 
|---|
| 86 |         . if %=1 merge list=^TMG("templist")
 | 
|---|
| 87 |         . if %=2 do
 | 
|---|
| 88 |         . . write "Delete old data from prior run"
 | 
|---|
| 89 |         . . set %=2 do YN^DICN write !
 | 
|---|
| 90 |         . . if %=1 kill ^TMG("templist"),list
 | 
|---|
| 91 |         . . do CheckGenerics(.list)
 | 
|---|
| 92 |         else  do CheckGenerics(.list)
 | 
|---|
| 93 |         kill ^TMG("templist")
 | 
|---|
| 94 | 
 | 
|---|
| 95 |         if $data(list)=0 goto FGDone
 | 
|---|
| 96 | 
 | 
|---|
| 97 |         do ProcessList(.list)
 | 
|---|
| 98 |         merge ^TMG("templist")=list
 | 
|---|
| 99 |         write "Use data to fill in VA GENERIC field in TMG FDA IMPORT COMPILED now"
 | 
|---|
| 100 |         set %=1 do YN^DICN write !
 | 
|---|
| 101 |         if %=1 do FillCompFile(.list)
 | 
|---|
| 102 | 
 | 
|---|
| 103 | FGDone
 | 
|---|
| 104 |         write "Goodbye.",!
 | 
|---|
| 105 |         quit
 | 
|---|
| 106 | 
 | 
|---|
| 107 | 
 | 
|---|
| 108 | CheckGenerics(Results)
 | 
|---|
| 109 |         ;"Purpose: To scan TMG FDA IMPORT file and make sure that all of the GENERIC NAMEs
 | 
|---|
| 110 |         ;"      have been added into the VA GENERIC file, or that a link exists between a
 | 
|---|
| 111 |         ;"      GENERIC NAME and an existing VA GENERIC name.
 | 
|---|
| 112 |         ;"Input: Results -- PASS BY REFERENCE, and OUT PARAMETER.  Returns array with results.
 | 
|---|
| 113 | 
 | 
|---|
| 114 |         new Array,i
 | 
|---|
| 115 |         write "Collecting list of imports not linked to a VA GENERIC entry.",!
 | 
|---|
| 116 |         do Scan4Generics(.Array) ;"note: result Array will not include SKIPPED records
 | 
|---|
| 117 |         if $data(Array)=0 do  goto CGDone
 | 
|---|
| 118 |         . write "No unmatched entries found--great!",!
 | 
|---|
| 119 | 
 | 
|---|
| 120 |         write "Processing GENERIC names...",!
 | 
|---|
| 121 | 
 | 
|---|
| 122 |         new DIC,X,Y
 | 
|---|
| 123 |         set DIC=50.6
 | 
|---|
| 124 |         set DIC(0)="M" ;"multiple index, LAYGO (add if not found)
 | 
|---|
| 125 | 
 | 
|---|
| 126 |         new abort set abort=0
 | 
|---|
| 127 |         new temp set temp=""
 | 
|---|
| 128 |         new count set count=1
 | 
|---|
| 129 |         new TMGGeneric
 | 
|---|
| 130 |         new Itr,i
 | 
|---|
| 131 |         set i=$$ItrAInit^TMGITR("Array",.Itr)
 | 
|---|
| 132 |         do PrepProgress^TMGITR(.Itr,20,1,"i")
 | 
|---|
| 133 |         if i'="" for  do  quit:($$ItrANext^TMGITR(.Itr,.i)="")!abort
 | 
|---|
| 134 |         . set X=i,TMGGeneric=i
 | 
|---|
| 135 |         . set DIC(0)="M" do ^DIC
 | 
|---|
| 136 |         . if Y=-1 do
 | 
|---|
| 137 |         . . set DIC(0)="MX"
 | 
|---|
| 138 |         . . do ^DIC
 | 
|---|
| 139 |         . if Y=-1 do
 | 
|---|
| 140 |         . . if $data(^PSNDF(50.6,"B",X)) do
 | 
|---|
| 141 |         . . . new IEN set IEN=+$order(^PSNDF(50.6,"B",X,""))
 | 
|---|
| 142 |         . . . if IEN'>0 write "?? IEN for ",X," is NULL??",! quit
 | 
|---|
| 143 |         . . . set Y=IEN_"^"_X  ;"only get first match
 | 
|---|
| 144 |         . if +Y>0 do  quit
 | 
|---|
| 145 |         . . set Results("Uncertain Matches",count,TMGGeneric,$piece(Y,"^",2))=Y
 | 
|---|
| 146 |         . . set count=count+1
 | 
|---|
| 147 |         . new list
 | 
|---|
| 148 |         . do FindSimGenerics(TMGGeneric,.list)
 | 
|---|
| 149 |         . if $data(list) do
 | 
|---|
| 150 |         . . merge Results("Uncertain Matches",count,TMGGeneric)=list
 | 
|---|
| 151 |         . . set count=count+1  ;"is this right???
 | 
|---|
| 152 |         . else  do
 | 
|---|
| 153 |         . . set Results("Should Add",count,TMGGeneric)=""
 | 
|---|
| 154 |         . . set count=count+1
 | 
|---|
| 155 |         do ProgressDone^TMGITR(.Itr)
 | 
|---|
| 156 | 
 | 
|---|
| 157 | CGDone
 | 
|---|
| 158 |         quit
 | 
|---|
| 159 | 
 | 
|---|
| 160 | Rescan(Array,Label,number)
 | 
|---|
| 161 |         ;"Purpose: to allow rescan of one entry
 | 
|---|
| 162 |         ;"Input: Array -- PASS BY REFERENCE -- Array with drug lists, as used by CheckGenerics
 | 
|---|
| 163 |         ;"       Label -- i.e. "Uncertain Matches", or "Should Add"
 | 
|---|
| 164 |         ;"       number -- the number of the listing to rescan
 | 
|---|
| 165 |         ;"      NOTE: This affects Results from a global scope
 | 
|---|
| 166 |         ;"              ??? Was this intended ???
 | 
|---|
| 167 |         ;"Output:
 | 
|---|
| 168 |         ;"results: none
 | 
|---|
| 169 | 
 | 
|---|
| 170 |         new DIC,X,Y
 | 
|---|
| 171 |         set DIC=50.6
 | 
|---|
| 172 |         set DIC(0)="M" ;"multiple index, LAYGO (add if not found)
 | 
|---|
| 173 | 
 | 
|---|
| 174 |         set X=$order(Array(Label,number,""))
 | 
|---|
| 175 |         if X'="" do
 | 
|---|
| 176 |         . do ^DIC
 | 
|---|
| 177 |         . if +Y'>0 do
 | 
|---|
| 178 |         . . new list
 | 
|---|
| 179 |         . . do FindSimGenerics(X,.list)
 | 
|---|
| 180 |         . . if $data(list) do
 | 
|---|
| 181 |         . . . merge Results("Uncertain Matches",number,X)=list
 | 
|---|
| 182 |         . . else  do
 | 
|---|
| 183 |         . . . set Results("Should Add",number,X)=""
 | 
|---|
| 184 |         . else  set Results(X)=Y
 | 
|---|
| 185 | 
 | 
|---|
| 186 |         quit
 | 
|---|
| 187 | 
 | 
|---|
| 188 | 
 | 
|---|
| 189 | FindSimGenerics(Generic,Array)
 | 
|---|
| 190 |         ;"Purpose: to scan VA GENERIC file and return an array of similar entries.
 | 
|---|
| 191 |         ;"Input: Generic: the name of the generic drug name to scan for
 | 
|---|
| 192 |         ;"       Array: PASS BY REFERENCE, and OUT PARAMETER -- prior entries are killed
 | 
|---|
| 193 |         ;"Result: none (output is in Array)
 | 
|---|
| 194 | 
 | 
|---|
| 195 |         new i,i2,s
 | 
|---|
| 196 |         kill Array
 | 
|---|
| 197 |         new NumRxs
 | 
|---|
| 198 |         set NumRxs=$length(Generic,"/")
 | 
|---|
| 199 | 
 | 
|---|
| 200 |         set i2=$order(^PSNDF(50.6,0))
 | 
|---|
| 201 |         if i2'="" for  do  quit:(i2="")
 | 
|---|
| 202 |         . new VAGeneric set VAGeneric=$piece($get(^PSNDF(50.6,i2,0)),"^",1)
 | 
|---|
| 203 |         . new IEN set IEN=i2
 | 
|---|
| 204 |         . set i2=$order(^PSNDF(50.6,i2))
 | 
|---|
| 205 |         . if NumRxs'=$length(VAGeneric,"/") quit
 | 
|---|
| 206 |         . new temp set temp=VAGeneric
 | 
|---|
| 207 |         . for i=1:1:NumRxs do  quit:(s="")!(temp="")
 | 
|---|
| 208 |         . . set s=$piece(Generic,"/",i)
 | 
|---|
| 209 |         . . set s=$piece(s," ",1)  ;"get first word of multi-word drug name
 | 
|---|
| 210 |         . . if s="" quit
 | 
|---|
| 211 |         . . if $extract(VAGeneric,1,$length(s))'=s set temp=""
 | 
|---|
| 212 |         . if temp'="" do
 | 
|---|
| 213 |         . . set Array(VAGeneric)=IEN_"^"_VAGeneric
 | 
|---|
| 214 | 
 | 
|---|
| 215 |         new count
 | 
|---|
| 216 |         set count=$$ListCt^TMGMISC("Array")
 | 
|---|
| 217 |         if count>1 do
 | 
|---|
| 218 |         . do NarrowGenMatches(Generic,.Array)
 | 
|---|
| 219 |         . if (($$ListCt^TMGMISC("Array")/count)>0.5)&(count>5) do  ;"i.e. no improvement
 | 
|---|
| 220 |         . . kill Array
 | 
|---|
| 221 | 
 | 
|---|
| 222 |         quit
 | 
|---|
| 223 | 
 | 
|---|
| 224 | 
 | 
|---|
| 225 | NarrowGenMatches(Generic,Array,DivCh)
 | 
|---|
| 226 |         ;"Purpose: To take a number of matches, and weed out bad matches (narrow down the list).
 | 
|---|
| 227 |         ;"Input: Generic -- Name of Generic name that ideal match should equal
 | 
|---|
| 228 |         ;"       Array -- PASS BY REFERENCE, the array that needs trimming.
 | 
|---|
| 229 |         ;"       DivCH -- OPTIONAL, default="/"
 | 
|---|
| 230 |         ;"Output: Array will be thinned if possible.
 | 
|---|
| 231 |         ;"Results: none
 | 
|---|
| 232 | 
 | 
|---|
| 233 |         new i,j,result
 | 
|---|
| 234 |         new MaxScore set MaxScore=0
 | 
|---|
| 235 |         set DivCh=$get(DivCh,"/")
 | 
|---|
| 236 | 
 | 
|---|
| 237 |         set i=$order(Array(""))
 | 
|---|
| 238 |         if i'="" for  do  quit:(i="")
 | 
|---|
| 239 |         . new score set score=0
 | 
|---|
| 240 |         . for j=1:1:$length(i,DivCh) do
 | 
|---|
| 241 |         . . new GenIgd,ArrayIgd
 | 
|---|
| 242 |         . . set GenIgd=$piece(Generic,DivCh,j)
 | 
|---|
| 243 |         . . set ArrayIgd=$piece(i,DivCh,j)
 | 
|---|
| 244 |         . . set score=score+$$Comp2Strs^TMGSTUTL(GenIgd,ArrayIgd)
 | 
|---|
| 245 |         . if score>MaxScore set MaxScore=score
 | 
|---|
| 246 |         . if score'<MaxScore do
 | 
|---|
| 247 |         . . set result(score,i)=""
 | 
|---|
| 248 |         . set i=$order(Array(i))
 | 
|---|
| 249 | 
 | 
|---|
| 250 |         new output,count
 | 
|---|
| 251 |         set score=0,count=0
 | 
|---|
| 252 |         set i=$order(result(""),-1)
 | 
|---|
| 253 |         if i'="" for  do  quit:(i="")
 | 
|---|
| 254 |         . if (i'<score) do
 | 
|---|
| 255 |         . . set j=$order(result(i,""),-1)
 | 
|---|
| 256 |         . . if j'="" for  do  quit:(j="")
 | 
|---|
| 257 |         . . . set output(j)=$get(Array(j))
 | 
|---|
| 258 |         . . . set j=$order(result(i,j),-1)
 | 
|---|
| 259 |         . . set score=i
 | 
|---|
| 260 |         . set i=$order(result(i),-1)
 | 
|---|
| 261 | 
 | 
|---|
| 262 |         kill Array
 | 
|---|
| 263 |         merge Array=output
 | 
|---|
| 264 | 
 | 
|---|
| 265 |         quit
 | 
|---|
| 266 | 
 | 
|---|
| 267 | 
 | 
|---|
| 268 | FindGenContain(name,Array)
 | 
|---|
| 269 |         ;"Purpose to scan the VA GENERIC file and return a list off all entries containing name
 | 
|---|
| 270 |         ;"Input -- name: the string to scan for
 | 
|---|
| 271 |         ;"         Array: PASS BY REFERENCE, and OUT PARAMETER  (prior entries are killed
 | 
|---|
| 272 |         ;"Results: none
 | 
|---|
| 273 | 
 | 
|---|
| 274 |         kill Array
 | 
|---|
| 275 |         new i
 | 
|---|
| 276 |         set i=$order(^PSNDF(50.6,0))
 | 
|---|
| 277 |         if i'="" for  do  quit:(i="")
 | 
|---|
| 278 |         . new VAGeneric set VAGeneric=$piece($get(^PSNDF(50.6,i,0)),"^",1)
 | 
|---|
| 279 |         . if VAGeneric[name set Array(VAGeneric)=""
 | 
|---|
| 280 |         . set i=$order(^PSNDF(50.6,i))
 | 
|---|
| 281 | 
 | 
|---|
| 282 |         quit
 | 
|---|
| 283 | 
 | 
|---|
| 284 | 
 | 
|---|
| 285 | Scan4Generics(Array)
 | 
|---|
| 286 |         ;"Purpose: To scan TMG FDA IMPORT file and collect all the GENERICS NAME entries into the array
 | 
|---|
| 287 |         ;"       It collects all instances were GENERIC NAME is provided, but VAGeneric pointer is NULL
 | 
|---|
| 288 |         ;"Input -- Array -- PASS BY REFERENCE.  An Out parameter
 | 
|---|
| 289 |         ;"Results -- the Array is filled with names of GENERICS NAME
 | 
|---|
| 290 |         ;"              Array(GenericName)=""
 | 
|---|
| 291 |         ;"              Array(GenericName)=""
 | 
|---|
| 292 |         ;"Note: This will only return GENERICS NAMEs when there is NO entry already in field
 | 
|---|
| 293 |         ;"      .08 (VA GENERIC)
 | 
|---|
| 294 |         ;"      This will skip records marked to be skipped.
 | 
|---|
| 295 | 
 | 
|---|
| 296 |         new name,VAGeneric
 | 
|---|
| 297 |         new Itr,IEN
 | 
|---|
| 298 |         set IEN=$$ItrInit^TMGITR(22706.9,.Itr)
 | 
|---|
| 299 |         do PrepProgress^TMGITR(.Itr,20,0,"IEN")
 | 
|---|
| 300 |         if IEN'="" for  do  quit:($$ItrNext^TMGITR(.Itr,.IEN)'>0)
 | 
|---|
| 301 |         . if $piece($get(^TMG(22706.9,IEN,1)),"^",4)=1 quit ;"1=SKIP
 | 
|---|
| 302 |         . set name=$piece($get(^TMG(22706.9,IEN,0)),"^",6) ;"get field#.07, GENERIC NAME
 | 
|---|
| 303 |         . set VAGeneric=$piece($get(^TMG(22706.9,IEN,1)),"^",3) ;"get field#.08, VA GENERIC
 | 
|---|
| 304 |         . if (+name'=name)&(name'="")&(+VAGeneric=0) do
 | 
|---|
| 305 |         . . set Array(name)=""
 | 
|---|
| 306 |         do ProgressDone^TMGITR(.Itr)
 | 
|---|
| 307 | 
 | 
|---|
| 308 |         quit
 | 
|---|
| 309 | 
 | 
|---|
| 310 | 
 | 
|---|
| 311 | ScanNoGenerics(Array)
 | 
|---|
| 312 |         ;"Purpose: To scan TMG FDA IMPORT file and collect all entries into the array
 | 
|---|
| 313 |         ;"         where there is NO GENERIC NAME is provided, and VAGeneric pointer is NULL
 | 
|---|
| 314 |         ;"Input -- Array -- PASS BY REFERENCE.  An Out parameter
 | 
|---|
| 315 |         ;"Results -- the Array is filled with names of drugs missing GENERICS NAME & VAGeneric Ptr
 | 
|---|
| 316 |         ;"      This will skip records marked to be skipped.
 | 
|---|
| 317 | 
 | 
|---|
| 318 |         new IEN
 | 
|---|
| 319 |         new name,VAGeneric
 | 
|---|
| 320 | 
 | 
|---|
| 321 |         set IEN=$order(^TMG(22706.9,""))
 | 
|---|
| 322 |         if IEN'="" for  do  quit:(+IEN'>0)
 | 
|---|
| 323 |         . new skip set skip=$piece($get(^TMG(22706.9,IEN,1)),"^",4)
 | 
|---|
| 324 |         . if skip=0 do
 | 
|---|
| 325 |         . . set name=$piece($get(^TMG(22706.9,IEN,0)),"^",6) ;"get field#.07, GENERIC NAME
 | 
|---|
| 326 |         . . set VAGeneric=$piece($get(^TMG(22706.9,IEN,1)),"^",3) ;"get field#.08, VA GENERIC
 | 
|---|
| 327 |         . . if (name="")&(+VAGeneric=0) do
 | 
|---|
| 328 |         . . . if name["ALLERGENIC EXTRACT" quit  ;"skip all these... I don't want them
 | 
|---|
| 329 |         . . . new tradeName set tradeName=$piece($get(^TMG(22706.9,IEN,0)),"^",4) ;"get field#.05, TRADENAME
 | 
|---|
| 330 |         . . . set Array(tradeName)=""
 | 
|---|
| 331 |         . set IEN=$order(^TMG(22706.9,IEN))
 | 
|---|
| 332 | 
 | 
|---|
| 333 |         quit
 | 
|---|
| 334 | 
 | 
|---|
| 335 | 
 | 
|---|
| 336 | 
 | 
|---|
| 337 | Unlock50dot6
 | 
|---|
| 338 |         ;"note: could just set DUZ(0)="^" and not remove this...
 | 
|---|
| 339 |         ;"Purpose: to remove the write restrictions for file 50.6
 | 
|---|
| 340 | 
 | 
|---|
| 341 |         new Lbl set Lbl="50.6"
 | 
|---|
| 342 |         do SavKilRef(Lbl,$name(^DIC(50.6,0,"LAYGO")))
 | 
|---|
| 343 |         do SavKilRef(Lbl,$name(^DIC(50.6,0,"WR")))
 | 
|---|
| 344 |         do SavKilRef(Lbl,$name(^DIC(50.6,0,"DEL")))
 | 
|---|
| 345 |         do SavKilRef(Lbl,$name(^DD(50.6,.01,9)))
 | 
|---|
| 346 |         do SavKilRef(Lbl,$name(^DD(50.6,.01,"DEL",.01,0)))
 | 
|---|
| 347 |         set XUMF=1  ;"a secret programmer's key
 | 
|---|
| 348 |         set XPDGREF=1
 | 
|---|
| 349 | 
 | 
|---|
| 350 |         quit
 | 
|---|
| 351 | 
 | 
|---|
| 352 | 
 | 
|---|
| 353 | Lock50dot6
 | 
|---|
| 354 |         ;"Purpose: to restore the write restrictions for file 50.6
 | 
|---|
| 355 | 
 | 
|---|
| 356 |         do RestoreSK("50.6")
 | 
|---|
| 357 |         ;"set ^DIC(50.6,0,"LAYGO")="^"
 | 
|---|
| 358 |         ;"set ^DIC(50.6,0,"WR")="^"
 | 
|---|
| 359 |         ;"set ^DIC(50.6,0,"DEL")="^"
 | 
|---|
| 360 |         ;"set ^DD(50.6,.01,9)="^"
 | 
|---|
| 361 |         ;"set ^DD(50.6,.01,"DEL",.01,0)="I 1 D EN^DDIOL(""DELETIONS ARE NOT ALLOWED"")"
 | 
|---|
| 362 |         kill XUMF
 | 
|---|
| 363 |         kill XPDGREF
 | 
|---|
| 364 | 
 | 
|---|
| 365 |         quit
 | 
|---|
| 366 | 
 | 
|---|
| 367 | SavKilRef(Label,Ref)
 | 
|---|
| 368 |         if ($get(Label)="")!($get(Ref)="") quit
 | 
|---|
| 369 |         kill ^TMG("BAK",Label,Ref)
 | 
|---|
| 370 |         merge ^TMG("BAK",Label,Ref)=@Ref
 | 
|---|
| 371 |         kill @Ref
 | 
|---|
| 372 |         quit
 | 
|---|
| 373 | 
 | 
|---|
| 374 | RestoreSK(Label)
 | 
|---|
| 375 |         if ($get(Label)="") quit
 | 
|---|
| 376 |         new Ref set Ref=""
 | 
|---|
| 377 |         for  set Ref=$order(^TMG("BAK",Label,Ref)) quit:(Ref="")  do
 | 
|---|
| 378 |         . merge @Ref=^TMG("BAK",Label,Ref)
 | 
|---|
| 379 |         . kill ^TMG("BAK",Label,Ref)
 | 
|---|
| 380 |         quit
 | 
|---|
| 381 | 
 | 
|---|
| 382 | ShowList(Array,Label)
 | 
|---|
| 383 |         ;"Purpose: To display the list generated by CheckGenerics
 | 
|---|
| 384 |         ;"Input: Array -- the array containing the data
 | 
|---|
| 385 |         ;"       Label -- the name of the node to display
 | 
|---|
| 386 | 
 | 
|---|
| 387 |         new count,ingredient,value,first
 | 
|---|
| 388 |         new someShown set someShown=0
 | 
|---|
| 389 |         set count=$order(Array(Label,""))
 | 
|---|
| 390 |         if count'="" for  do  quit:(count="")
 | 
|---|
| 391 |         . new TMGGeneric,VAGeneric
 | 
|---|
| 392 |         . set TMGGeneric=$order(Array(Label,count,""))
 | 
|---|
| 393 |         . set first=1
 | 
|---|
| 394 |         . set someShown=1
 | 
|---|
| 395 |         . set VAGeneric=$order(Array(Label,count,TMGGeneric,""))
 | 
|---|
| 396 |         . if VAGeneric'="" for  do  quit:(VAGeneric="")
 | 
|---|
| 397 |         . . new next set next=$order(Array(Label,count,TMGGeneric,VAGeneric))
 | 
|---|
| 398 |         . . if first=1 do
 | 
|---|
| 399 |         . . . if next'="" do
 | 
|---|
| 400 |         . . . . write count,". ",TMGGeneric," ---> (multiple)",!
 | 
|---|
| 401 |         . . . . write "                    ---> ",VAGeneric,!
 | 
|---|
| 402 |         . . . else  do
 | 
|---|
| 403 |         . . . . write count,". ",TMGGeneric," ---> ",VAGeneric,!
 | 
|---|
| 404 |         . . . set first=0
 | 
|---|
| 405 |         . . else  write "                    ---> ",VAGeneric,!
 | 
|---|
| 406 |         . . set VAGeneric=$order(Array(Label,count,TMGGeneric,VAGeneric))
 | 
|---|
| 407 |         . else  do
 | 
|---|
| 408 |         . . write count,". ",TMGGeneric,!
 | 
|---|
| 409 |         . set count=$order(Array(Label,count))
 | 
|---|
| 410 | 
 | 
|---|
| 411 |         if someShown=0 do
 | 
|---|
| 412 |         . write "  --- (List is Empty) ---",!
 | 
|---|
| 413 | 
 | 
|---|
| 414 |         quit
 | 
|---|
| 415 | 
 | 
|---|
| 416 | ProcessList(Array)
 | 
|---|
| 417 |         ;"Purpose: After list of linkages between GENERIC NAMEs and VA GENERIC names
 | 
|---|
| 418 |         ;"      is created by CheckGenerics(), then this function will handle adding those
 | 
|---|
| 419 |         ;"      generic names that need adding, and returning a list of linkages to use those
 | 
|---|
| 420 |         ;"      cases there an entry already exists that is not exactly the same, but will be
 | 
|---|
| 421 |         ;"      used as equivalent.
 | 
|---|
| 422 |         ;"Input: Array -- PASS BY REFERENCE  the array generated by CheckGenerics
 | 
|---|
| 423 |         ;"              Results are passed back in Array
 | 
|---|
| 424 |         ;"              Array(GENERIC NAME)=IEN in VA GENERIC file
 | 
|---|
| 425 |         ;"              Array(GENERIC NAME)=IEN in VA GENERIC file
 | 
|---|
| 426 |         ;"Results: none
 | 
|---|
| 427 | 
 | 
|---|
| 428 |         new datafound,abort
 | 
|---|
| 429 |         set abort=0
 | 
|---|
| 430 | 
 | 
|---|
| 431 |         for  do  quit:(datafound=0)!(abort=1)
 | 
|---|
| 432 |         . set datafound=0
 | 
|---|
| 433 |         . if $data(Array("Should Add"))>0 do  quit:(abort=1)
 | 
|---|
| 434 |         . . set datafound=1
 | 
|---|
| 435 |         . . write !!,"There are entries that should be added to the VA GENERIC file",!
 | 
|---|
| 436 |         . . write "Process now (^ to abort)"
 | 
|---|
| 437 |         . . new % set %=1 ;"default to YES
 | 
|---|
| 438 |         . . do YN^DICN write !
 | 
|---|
| 439 |         . . if %=-1 set abort=1 quit
 | 
|---|
| 440 |         . . if %=1 do HandleAdds(.Array)
 | 
|---|
| 441 |         . if $data(Array("Uncertain Matches"))>0 do
 | 
|---|
| 442 |         . . set datafound=1
 | 
|---|
| 443 |         . . write !!,"There are presumed linkages that need approval.",!
 | 
|---|
| 444 |         . . write "Process now (^ to abort)"
 | 
|---|
| 445 |         . . new % set %=1 ;"default to YES
 | 
|---|
| 446 |         . . do YN^DICN write !
 | 
|---|
| 447 |         . . if %'=1 set abort=1 quit
 | 
|---|
| 448 |         . . do HandleQAdds(.Array)
 | 
|---|
| 449 | 
 | 
|---|
| 450 |         quit
 | 
|---|
| 451 | 
 | 
|---|
| 452 | 
 | 
|---|
| 453 | HandleAdds(Array)
 | 
|---|
| 454 |         ;"Purpose: To handle adding those entries in Array that need to be added to VA GENERIC file.
 | 
|---|
| 455 |         ;"Input: Array -- PASS BY REFERENCE  the array generated by CheckGenerics
 | 
|---|
| 456 |         ;"              Results are passed back in Array
 | 
|---|
| 457 |         ;"              Array(GENERIC NAME)=IEN in VA GENERIC file
 | 
|---|
| 458 |         ;"              Array(GENERIC NAME)=IEN in VA GENERIC file
 | 
|---|
| 459 |         ;"Output: results returned in Array, as above.
 | 
|---|
| 460 |         ;"Results: none
 | 
|---|
| 461 | 
 | 
|---|
| 462 |         do Unlock50dot6
 | 
|---|
| 463 | 
 | 
|---|
| 464 |         new done set done=0
 | 
|---|
| 465 |         new input set input="R"
 | 
|---|
| 466 | 
 | 
|---|
| 467 |         for  do  quit:(done=1)
 | 
|---|
| 468 |         . if input="R" do
 | 
|---|
| 469 |         . . write !!
 | 
|---|
| 470 |         . . write "-------------------------------------------------------------------",!
 | 
|---|
| 471 |         . . write "Specify which GENERIC names are OK for ADDITION to VA GENERIC file",!
 | 
|---|
| 472 |         . . write "-------------------------------------------------------------------",!
 | 
|---|
| 473 |         . . do ShowList(.Array,"Should Add")
 | 
|---|
| 474 |         . . write "-------------------------------------------------------------------",!
 | 
|---|
| 475 |         . . write "Specify which GENERIC names are OK for ADDITION to VA GENERIC file",!
 | 
|---|
| 476 |         . . write "-------------------------------------------------------------------",!
 | 
|---|
| 477 |         . write "  R to refresh, L lookup, ? for instructions",!
 | 
|---|
| 478 |         . write "  # or #-#, ^ to continue, X remove from list",!
 | 
|---|
| 479 |         . write "Enter number(s) to ACCEPT (or codes listed above): ^//"
 | 
|---|
| 480 |         . read input,!
 | 
|---|
| 481 |         . if input="" set input="^"
 | 
|---|
| 482 |         . set input=$$UP^XLFSTR(input)
 | 
|---|
| 483 |         . if input="^" set done=1
 | 
|---|
| 484 |         . if (input="?") do
 | 
|---|
| 485 |         . . ;"do ShowInstructions
 | 
|---|
| 486 |         . . set input="R"
 | 
|---|
| 487 |         . if +input=input do
 | 
|---|
| 488 |         . . do DoAdds(.Array,"Should Add",+input)
 | 
|---|
| 489 |         . . set input="R"
 | 
|---|
| 490 |         . if input["-" do
 | 
|---|
| 491 |         . . new N1,N2
 | 
|---|
| 492 |         . . set N1=$piece(input,"-",1)
 | 
|---|
| 493 |         . . set N2=$piece(input,"-",2)
 | 
|---|
| 494 |         . . do DoAdds(.Array,"Should Add",N1,N2)
 | 
|---|
| 495 |         . . set input="R"
 | 
|---|
| 496 |         . if input="L" do
 | 
|---|
| 497 |         . . read "Enter number to lookup manually: ",input,!
 | 
|---|
| 498 |         . . do CustLookup(.Array,"Should Add",+input)
 | 
|---|
| 499 |         . . set input="R"
 | 
|---|
| 500 |         . if input="X" do
 | 
|---|
| 501 |         . . read "Enter number(s) to REMOVE from list: ",input,!
 | 
|---|
| 502 |         . . if +input=input do
 | 
|---|
| 503 |         . . . do Remove(.Array,"Should Add",+input)
 | 
|---|
| 504 |         . . if input["-" do
 | 
|---|
| 505 |         . . . new N1,N2
 | 
|---|
| 506 |         . . . set N1=$piece(input,"-",1)
 | 
|---|
| 507 |         . . . set N2=$piece(input,"-",2)
 | 
|---|
| 508 |         . . . do Remove(.Array,"Should Add",N1,N2)
 | 
|---|
| 509 |         . . set input="R"
 | 
|---|
| 510 | 
 | 
|---|
| 511 |         do Lock50dot6
 | 
|---|
| 512 |         quit
 | 
|---|
| 513 | 
 | 
|---|
| 514 | 
 | 
|---|
| 515 | Remove(Array,Label,Num,EndNum)
 | 
|---|
| 516 |         ;"Purpose: To remove name(s) from Array of additions to VA GENERIC file
 | 
|---|
| 517 |         ;"Input: Array -- PASS BY REFERENCE, array holding data, As created by CheckGenerics()
 | 
|---|
| 518 |         ;"       Label -- the section of the array to extract from (i.e. "Already Present", or "Should Add" etc.)
 | 
|---|
| 519 |         ;"       Num -- entry number to add
 | 
|---|
| 520 |         ;"       EndNum -- OPTIONAL.  If supplied, then range of Num-EndNum are all added.
 | 
|---|
| 521 |         ;"Output:  Those values that are removed are changed to a different node, i.e.
 | 
|---|
| 522 |         ;"              Array("Should Add",count,Generic)=""
 | 
|---|
| 523 |         ;"Results: none
 | 
|---|
| 524 | 
 | 
|---|
| 525 |         set EndNum=$get(EndNum,Num)
 | 
|---|
| 526 |         new i,Generic,Y
 | 
|---|
| 527 | 
 | 
|---|
| 528 |         for i=Num:1:EndNum do
 | 
|---|
| 529 |         . set Generic=$order(Array(Label,i,""))
 | 
|---|
| 530 |         . if Generic'="" do
 | 
|---|
| 531 |         . . ;"set Array("Rescan",i,Generic)=""
 | 
|---|
| 532 |         . . set Array("Should Add",i,Generic)=""
 | 
|---|
| 533 |         . . kill Array(Label,i)
 | 
|---|
| 534 | 
 | 
|---|
| 535 |         quit
 | 
|---|
| 536 | 
 | 
|---|
| 537 | 
 | 
|---|
| 538 | CustLookup(Array,Label,Num)
 | 
|---|
| 539 |         ;"Purpose: To manually link entry in Array to an existing entry in VA GENERIC file
 | 
|---|
| 540 |         ;"Input: Array -- PASS BY REFERENCE, array holding data, As created by CheckGenerics()
 | 
|---|
| 541 |         ;"               Results are passed back in Array
 | 
|---|
| 542 |         ;"              Array(GENERIC NAME)=IEN in VA GENERIC file^Name
 | 
|---|
| 543 |         ;"              Array(GENERIC NAME)=IEN in VA GENERIC file^Name
 | 
|---|
| 544 |         ;"       Label -- the section of the array to extract from (i.e. "Already Present", or "Should Add" etc.)
 | 
|---|
| 545 |         ;"       Num -- entry number to add
 | 
|---|
| 546 |         ;"Results: none
 | 
|---|
| 547 | 
 | 
|---|
| 548 |         new DIC,X,Y,Generic
 | 
|---|
| 549 |         set DIC=50.6
 | 
|---|
| 550 |         set DIC(0)="AEQM"
 | 
|---|
| 551 | 
 | 
|---|
| 552 |         set Generic=$order(Array(Label,Num,""))
 | 
|---|
| 553 |         if Generic'="" do
 | 
|---|
| 554 |         . write !,"Look up an entry to match with: ",Generic
 | 
|---|
| 555 |         . do ^DIC
 | 
|---|
| 556 |         . if +Y>0 do
 | 
|---|
| 557 |         . . kill Array(Label,Num,Generic)
 | 
|---|
| 558 |         . . set Array(Generic)=Y
 | 
|---|
| 559 | 
 | 
|---|
| 560 |         quit
 | 
|---|
| 561 | 
 | 
|---|
| 562 | 
 | 
|---|
| 563 | DoAdds(Array,Label,Num,EndNum)
 | 
|---|
| 564 |         ;"Purpose: To extract name(s) from Array and add to VA GENERIC file, via Add1Generic
 | 
|---|
| 565 |         ;"Input: Array -- PASS BY REFERENCE, array holding data, As created by CheckGenerics()
 | 
|---|
| 566 |         ;"       Results -- PASS BY REFERENCE.  An OUT array to received results
 | 
|---|
| 567 |         ;"              Results(GENERIC NAME)=IEN in VA GENERIC file^Name
 | 
|---|
| 568 |         ;"              Results(GENERIC NAME)=IEN in VA GENERIC file^Name
 | 
|---|
| 569 |         ;"       Label -- the section of the array to extract from (i.e. "Already Present", or "Should Add" etc.)
 | 
|---|
| 570 |         ;"       Num -- entry number to add
 | 
|---|
| 571 |         ;"       EndNum -- OPTIONAL.  If supplied, then range of Num-EndNum are all added.
 | 
|---|
| 572 |         ;"Results: none
 | 
|---|
| 573 | 
 | 
|---|
| 574 |         set EndNum=$get(EndNum,Num)
 | 
|---|
| 575 |         new i,Generic,Y
 | 
|---|
| 576 | 
 | 
|---|
| 577 |         for i=Num:1:EndNum do
 | 
|---|
| 578 |         . set Generic=$order(Array(Label,i,""))
 | 
|---|
| 579 |         . if Generic'="" do
 | 
|---|
| 580 |         . . set Y=$$Add1Generic(Generic)
 | 
|---|
| 581 |         . . if +Y>0 do
 | 
|---|
| 582 |         . . . set Array(Generic)=Y
 | 
|---|
| 583 |         . . . kill Array(Label,i,Generic)
 | 
|---|
| 584 |         . . . ;"set Array("Already Present",i,Generic)=Y
 | 
|---|
| 585 | 
 | 
|---|
| 586 |         quit
 | 
|---|
| 587 | 
 | 
|---|
| 588 | 
 | 
|---|
| 589 | Add1Generic(Name)
 | 
|---|
| 590 |         ;"Purpose: To add on entry to the VA GENERIC FILE
 | 
|---|
| 591 |         ;"Input: the name of the genric to be added.  Should be 3-64 characters in length
 | 
|---|
| 592 |         ;"Results: returns the added entry: IEN^NAME, or -1 if Fileman error
 | 
|---|
| 593 |         ;"Note: This function assumes that the file as been UNLOCKED via Unlock50dot6
 | 
|---|
| 594 | 
 | 
|---|
| 595 |         new X,DIC
 | 
|---|
| 596 |         set DIC=50.6
 | 
|---|
| 597 |         set DIC(0)="XL"
 | 
|---|
| 598 |         set X=Name
 | 
|---|
| 599 |         do ^DIC
 | 
|---|
| 600 | 
 | 
|---|
| 601 |         quit Y
 | 
|---|
| 602 | 
 | 
|---|
| 603 | 
 | 
|---|
| 604 |  ;"--------------------------------
 | 
|---|
| 605 | 
 | 
|---|
| 606 | HandleQAdds(Array)
 | 
|---|
| 607 |         ;"Purpose: To review 'Uncertain Matches' node of Array and allow user to specify whether
 | 
|---|
| 608 |         ;"      to accept equivilence of match, or to disallow link and add new GENERIC name.
 | 
|---|
| 609 |         ;"Input: Array -- PASS BY REFERENCE  the array generated by CheckGenerics
 | 
|---|
| 610 |         ;"              Results are passed back in Array
 | 
|---|
| 611 |         ;"              Array(GENERIC NAME)=IEN in VA GENERIC file
 | 
|---|
| 612 |         ;"              Array(GENERIC NAME)=IEN in VA GENERIC file
 | 
|---|
| 613 |         ;"              Array(GENERIC NAME)=IEN in VA GENERIC file
 | 
|---|
| 614 |         ;"Output: results returned in Results array, as above.
 | 
|---|
| 615 |         ;"Results: none
 | 
|---|
| 616 | 
 | 
|---|
| 617 |         do Unlock50dot6
 | 
|---|
| 618 | 
 | 
|---|
| 619 |         new done set done=0
 | 
|---|
| 620 |         new input set input="R"
 | 
|---|
| 621 | 
 | 
|---|
| 622 |         for  do  quit:(done=1)
 | 
|---|
| 623 |         . if input="R" do
 | 
|---|
| 624 |         . . write !!
 | 
|---|
| 625 |         . . write "-------------------------------------------------------------------",!
 | 
|---|
| 626 |         . . write "Specify which links between New --> Existing GENERIC names are OK",!
 | 
|---|
| 627 |         . . write "-------------------------------------------------------------------",!
 | 
|---|
| 628 |         . . do ShowList(.Array,"Uncertain Matches")
 | 
|---|
| 629 |         . . write "-------------------------------------------------------------------",!
 | 
|---|
| 630 |         . . write "Specify which links between New --> Existing GENERIC names are OK",!
 | 
|---|
| 631 |         . . write "-------------------------------------------------------------------",!
 | 
|---|
| 632 |         . write "  R to refresh, ? for instructions",!
 | 
|---|
| 633 |         . write "  # or #-#, ^ to continue, X remove from list",!
 | 
|---|
| 634 |         . write "Enter number(s) to ACCEPT (or codes listed above): ^//"
 | 
|---|
| 635 |         . read input,!
 | 
|---|
| 636 |         . if input="" set input="^"
 | 
|---|
| 637 |         . set input=$$UP^XLFSTR(input)
 | 
|---|
| 638 |         . if input="^" set done=1
 | 
|---|
| 639 |         . if (input="?") do
 | 
|---|
| 640 |         . . ;"do ShowInstructions
 | 
|---|
| 641 |         . . set input="R"
 | 
|---|
| 642 |         . if +input=input do
 | 
|---|
| 643 |         . . do DoLinks(.Array,+input)
 | 
|---|
| 644 |         . . set input="R"
 | 
|---|
| 645 |         . if input["-" do
 | 
|---|
| 646 |         . . new N1,N2
 | 
|---|
| 647 |         . . set N1=$piece(input,"-",1)
 | 
|---|
| 648 |         . . set N2=$piece(input,"-",2)
 | 
|---|
| 649 |         . . do DoLinks(.Array,N1,N2)
 | 
|---|
| 650 |         . . set input="R"
 | 
|---|
| 651 |         . if input="S" do
 | 
|---|
| 652 |         . . read "Enter number to re-SCAN: ",input,!
 | 
|---|
| 653 |         . . if +input=input do
 | 
|---|
| 654 |         . . . do Rescan(.Array,"Uncertain Matches",+input)
 | 
|---|
| 655 |         . if input="X" do
 | 
|---|
| 656 |         . . read "Enter number(s) to REMOVE from list: ",input,!
 | 
|---|
| 657 |         . . if +input=input do
 | 
|---|
| 658 |         . . . do Remove(.Array,"Uncertain Matches",+input)
 | 
|---|
| 659 |         . . if input["-" do
 | 
|---|
| 660 |         . . . new N1,N2
 | 
|---|
| 661 |         . . . set N1=$piece(input,"-",1)
 | 
|---|
| 662 |         . . . set N2=$piece(input,"-",2)
 | 
|---|
| 663 |         . . . ;"do Remove(.Array,"Uncertain Matches",N1,N2)
 | 
|---|
| 664 |         . . set input="R"
 | 
|---|
| 665 | 
 | 
|---|
| 666 |         do Lock50dot6
 | 
|---|
| 667 |         quit
 | 
|---|
| 668 | 
 | 
|---|
| 669 | 
 | 
|---|
| 670 | DoLinks(Array,Num,EndNum)
 | 
|---|
| 671 |         ;"Purpose: To change a link from the "Uncertain Matches" node, to a formal link
 | 
|---|
| 672 |         ;"Input: Array -- PASS BY REFERENCE  the array generated by CheckGenerics
 | 
|---|
| 673 |         ;"              Results are passed back in Array
 | 
|---|
| 674 |         ;"              Array(GENERIC NAME)=IEN in VA GENERIC file^Name
 | 
|---|
| 675 |         ;"              Array(GENERIC NAME)=IEN in VA GENERIC file^Name
 | 
|---|
| 676 |         ;"              Array(GENERIC NAME)=IEN in VA GENERIC file^Name
 | 
|---|
| 677 |         ;"       Num -- entry number to add
 | 
|---|
| 678 |         ;"       EndNum -- OPTIONAL.  If supplied, then range of Num-EndNum are all added.
 | 
|---|
| 679 |         ;"Results: none
 | 
|---|
| 680 | 
 | 
|---|
| 681 |         set EndNum=$get(EndNum,Num)
 | 
|---|
| 682 |         new i,TMGGeneric,VAGeneric,Y
 | 
|---|
| 683 | 
 | 
|---|
| 684 |         for i=Num:1:EndNum do
 | 
|---|
| 685 |         . set TMGGeneric=$order(Array("Uncertain Matches",i,""))
 | 
|---|
| 686 |         . if TMGGeneric'="" do
 | 
|---|
| 687 |         . . if $data(Array("Uncertain Matches",i,TMGGeneric))>0 do
 | 
|---|
| 688 |         . . . set VAGeneric=$order(Array("Uncertain Matches",i,TMGGeneric,""))
 | 
|---|
| 689 |         . . . set Y=$get(Array("Uncertain Matches",i,TMGGeneric,VAGeneric))
 | 
|---|
| 690 |         . . else  do  ;"pick from multiple options.
 | 
|---|
| 691 |         . . . set Y=$$DoMltLink(.Array,i,TMGGeneric)
 | 
|---|
| 692 |         . . if +Y>0 do
 | 
|---|
| 693 |         . . . ;"kill Array("Uncertain Matches",i,TMGGeneric,VAGeneric)
 | 
|---|
| 694 |         . . . kill Array("Uncertain Matches",i,TMGGeneric)
 | 
|---|
| 695 |         . . . set Array(TMGGeneric)=Y
 | 
|---|
| 696 | 
 | 
|---|
| 697 |         quit
 | 
|---|
| 698 | 
 | 
|---|
| 699 | DoMltLink(Array,Num,TMGGeneric)
 | 
|---|
| 700 |         ;"Purpose: To interact with user and pick which link (amoung multiple)
 | 
|---|
| 701 |         ;"Input: Array -- PASS BY REFERENCE. Array as created by CheckGenerics
 | 
|---|
| 702 |         ;"       Num -- The number in the "Uncertain Matches" to pick amoung.
 | 
|---|
| 703 |         ;"       TMGGeneric -- the Generic Name for to look for a match to
 | 
|---|
| 704 |         ;"Results: The selected link: i.e. IEN^Name, or "" if not found
 | 
|---|
| 705 | 
 | 
|---|
| 706 | 
 | 
|---|
| 707 |         new VAGeneric,j,tempResults
 | 
|---|
| 708 |         new name,input,result
 | 
|---|
| 709 |         new NumAnswers set NumAnswers=0
 | 
|---|
| 710 | 
 | 
|---|
| 711 |         set VAGeneric=$order(Array("Uncertain Matches",Num,TMGGeneric,""))
 | 
|---|
| 712 |         if VAGeneric'="" for j=1:1 do  quit:(VAGeneric="")
 | 
|---|
| 713 |         . set tempResults(j)=$get(Array("Uncertain Matches",Num,TMGGeneric,VAGeneric))
 | 
|---|
| 714 |         . set NumAnswers=j
 | 
|---|
| 715 |         . set VAGeneric=$order(Array("Uncertain Matches",Num,TMGGeneric,VAGeneric))
 | 
|---|
| 716 | 
 | 
|---|
| 717 |         if NumAnswers=1 set result=$get(tempResult(1)) goto DMLDone
 | 
|---|
| 718 | 
 | 
|---|
| 719 |         write "Please select match for ",TMGGeneric,!
 | 
|---|
| 720 |         for j=1:1 do  quit:(name="")
 | 
|---|
| 721 |         . set name=$get(tempResult(j))
 | 
|---|
| 722 |         . if name="" quit
 | 
|---|
| 723 |         . write "   ",j,".  ",$piece(name,"^",2),!
 | 
|---|
| 724 | 
 | 
|---|
| 725 |         read "Enter number of match (^ to quit): ^// ",input,!
 | 
|---|
| 726 |         set result=$get(tempResult(+input))
 | 
|---|
| 727 | 
 | 
|---|
| 728 | DMLDone
 | 
|---|
| 729 |         quit result
 | 
|---|
| 730 | 
 | 
|---|
| 731 | 
 | 
|---|
| 732 |  ;"===========================================================================
 | 
|---|
| 733 | 
 | 
|---|
| 734 | FillCompFile(Array)
 | 
|---|
| 735 |         ;"Purpose: To take the list (generated in FillGenerics(), with its linkages
 | 
|---|
| 736 |         ;"         between new drug names and existing drug name data, and fill
 | 
|---|
| 737 |         ;"         in field .08 in file TMG FDA IMPORT COMPILED
 | 
|---|
| 738 |         ;"Input: Array -- PASS BY REFERENCE.  List of linkages between names.
 | 
|---|
| 739 |         ;"              Array(GENERIC NAME)=IEN in VA GENERIC file^Name
 | 
|---|
| 740 |         ;"              Array(GENERIC NAME)=IEN in VA GENERIC file^Name
 | 
|---|
| 741 |         ;"              Array(GENERIC NAME)=IEN in VA GENERIC file^Name
 | 
|---|
| 742 |         ;"Output: Data is put into TMG FDA IMPORT COMPILED
 | 
|---|
| 743 |         ;"Results: none
 | 
|---|
| 744 | 
 | 
|---|
| 745 |         write "Filling field .08 (VA GENERIC) in file TMG FDA IMPORT COMPILED",!
 | 
|---|
| 746 |         write "based on data from field .07 (GENERIC NAME)...",!
 | 
|---|
| 747 | 
 | 
|---|
| 748 |         new TMGGeneric,VAGeneric
 | 
|---|
| 749 |         new IEN,oldval
 | 
|---|
| 750 |         new count set count=0
 | 
|---|
| 751 | 
 | 
|---|
| 752 |         new Itr,IEN
 | 
|---|
| 753 |         set IEN=$$ItrInit^TMGITR(22706.9,.Itr)
 | 
|---|
| 754 |         do PrepProgress^TMGITR(.Itr,20,0,"IEN")
 | 
|---|
| 755 |         if IEN'="" for  do  quit:($$ItrNext^TMGITR(.Itr,.IEN)'>0)
 | 
|---|
| 756 |         . if $piece($get(^TMG(22706.9,IEN,1)),"^",4)=1 quit ;"1=SKIP
 | 
|---|
| 757 |         . set TMGGeneric=$piece($get(^TMG(22706.9,IEN,0)),"^",6)  ;"0;6 --> field .07, GENERIC NAME
 | 
|---|
| 758 |         . set oldval=$piece($get(^TMG(22706.9,IEN,1)),"^",3) ;"1;3 --> field .08, VA GENERIC
 | 
|---|
| 759 |         . if (+oldval'=0)!(TMGGeneric="") quit
 | 
|---|
| 760 |         . set VAGeneric=$get(Array(TMGGeneric))
 | 
|---|
| 761 |         . if +VAGeneric>0 do
 | 
|---|
| 762 |         . . if +VAGeneric'=oldval do
 | 
|---|
| 763 |         . . new TMGFDA,TMGMSG
 | 
|---|
| 764 |         . . set TMGFDA(22706.9,IEN_",",.08)=+VAGeneric
 | 
|---|
| 765 |         . . do FILE^DIE("K","TMGFDA","TMGMSG")
 | 
|---|
| 766 |         . . do ShowIfDIERR^TMGDEBUG(.TMGMSG)
 | 
|---|
| 767 |         . . set count=count+1
 | 
|---|
| 768 |         . . ;"write "Stored ",$piece(VAGeneric,"^",2)," in record# ",IEN,!
 | 
|---|
| 769 |         . else  do
 | 
|---|
| 770 |         . . write !,"Can't find entry for: ",TMGGeneric,!
 | 
|---|
| 771 |         do ProgressDone^TMGITR(.Itr)
 | 
|---|
| 772 |         write count," records modified.",!
 | 
|---|
| 773 | 
 | 
|---|
| 774 |         quit
 | 
|---|
| 775 | 
 | 
|---|
| 776 | 
 | 
|---|
| 777 | 
 | 
|---|