| 1 | TMGIMPORT ;TMG/kst/Code for importing from legacy MEDIC PMS ;03/25/06
 | 
|---|
| 2 |          ;;1.0;TMG-LIB;**1**;11/01/04
 | 
|---|
| 3 | 
 | 
|---|
| 4 | ;"Custom functions for importing data from legacy MEDIC system
 | 
|---|
| 5 | 
 | 
|---|
| 6 | ImportLabels
 | 
|---|
| 7 |         ;"Purpose: To import a file with patient name, DOB etc, and
 | 
|---|
| 8 |         ;"register all these patients
 | 
|---|
| 9 |         ;
 | 
|---|
| 10 |         ;"This is an example entry:
 | 
|---|
| 11 |         ;"------------------------
 | 
|---|
| 12 |         ;"ADAM R JONES
 | 
|---|
| 13 |         ;"123 JONESS CREEK RD
 | 
|---|
| 14 |         ;"GREENEVILLE     TN 37743
 | 
|---|
| 15 |         ;"423 666 6666   423 666 6667
 | 
|---|
| 16 |         ;"  123456  05151971M 040302
 | 
|---|
| 17 | 
 | 
|---|
| 18 | 
 | 
|---|
| 19 | 
 | 
|---|
| 20 |         new TMGDEBUG set TMGDEBUG=0  ;"Note: user could change this at runtime...
 | 
|---|
| 21 |         new DBIndent set DBIndent=0
 | 
|---|
| 22 |         new PriorErrorFound set PriorErrorFound=0
 | 
|---|
| 23 | 
 | 
|---|
| 24 |         new cGUI set cGUI="GUI"
 | 
|---|
| 25 |         new cCHUI set cCHUI="CHUI"
 | 
|---|
| 26 |         new cRoll set cRoll="Roll-n-Scroll"
 | 
|---|
| 27 |         new DModes
 | 
|---|
| 28 |         new cDialog set cDialog="UseDialog"
 | 
|---|
| 29 |         set DModes(0)="x"
 | 
|---|
| 30 |         set DModes(1)=cGUI
 | 
|---|
| 31 |         set DModes(2)=cCHUI
 | 
|---|
| 32 |         set DModes(3)=cRoll
 | 
|---|
| 33 |         set DModes(4)="x"
 | 
|---|
| 34 | 
 | 
|---|
| 35 |         new cTrue set cTrue=1
 | 
|---|
| 36 |         new cFalse set cFalse=0
 | 
|---|
| 37 |         new cdbNone set cdbNone=0
 | 
|---|
| 38 |         new cdbToScrn set cdbToScrn=1
 | 
|---|
| 39 |         new cdbToFile set cdbToFile=2
 | 
|---|
| 40 |         new cdbToTail set cdbToTail=3
 | 
|---|
| 41 | 
 | 
|---|
| 42 |         new cdbAbort set cdbAbort=-1
 | 
|---|
| 43 |         new cOKToCont set cOKToCont=1
 | 
|---|
| 44 |         new cAbort set cAbort=0
 | 
|---|
| 45 | 
 | 
|---|
| 46 |         new cName set cName="01. NAME"
 | 
|---|
| 47 |         new cDOB set cDOB="02. DOB"
 | 
|---|
| 48 |         new cSex set cSex="03. SEX"
 | 
|---|
| 49 |         new cStrAddr set cStrAddr="04. STREET ADDRESS"
 | 
|---|
| 50 |         new cCity set cCity="05. CITY"
 | 
|---|
| 51 |         new cState set cState="06. STATE"
 | 
|---|
| 52 |         new cZip set cZip="07. ZIP"
 | 
|---|
| 53 |         new cPhone1 set cPhone1="08. PHONE-1"
 | 
|---|
| 54 |         new cPhone2 set cPhone2="09. PHONE-2"
 | 
|---|
| 55 |         new cDateReg set cDateReg="10. DATE REGISTERED"
 | 
|---|
| 56 |         new cChartNum set cChartNum="11. CHARTNUM"
 | 
|---|
| 57 | 
 | 
|---|
| 58 |         new Filename
 | 
|---|
| 59 |         new DebugFPath
 | 
|---|
| 60 |         new DebugFName
 | 
|---|
| 61 |         new DebugFile
 | 
|---|
| 62 |         new LabelArray,PLabelArray
 | 
|---|
| 63 |         new FileHandle
 | 
|---|
| 64 |         new UserPath,UserFName
 | 
|---|
| 65 | 
 | 
|---|
| 66 |         new result
 | 
|---|
| 67 |         new FileSpec
 | 
|---|
| 68 | 
 | 
|---|
| 69 |         new line set line=""
 | 
|---|
| 70 | 
 | 
|---|
| 71 |         do DebugEntry^TMGDEBUG(.DBIndent,"Main Run")
 | 
|---|
| 72 | 
 | 
|---|
| 73 |         ;"A local code login function.
 | 
|---|
| 74 |         if $$XUP^TMGXUP()=0 do  goto RunDone
 | 
|---|
| 75 |         . do ShowError^TMGDEBUG(.PriorErrorFound,"Error setting up a user privilages for configuration.")
 | 
|---|
| 76 | 
 | 
|---|
| 77 |         ;"------------------------------------------------------------------------------------
 | 
|---|
| 78 |         if ($data(DispMode)#10=0)!($get(DispMode)>3)!($get(DispMode)<1) do
 | 
|---|
| 79 |         . set DispMode=$$GetDispMode()
 | 
|---|
| 80 |         set DispMode=DModes(DispMode)
 | 
|---|
| 81 |         if DispMode="x" goto RunDone
 | 
|---|
| 82 |         set DispMode(cDialog)=(DispMode'=cRoll)
 | 
|---|
| 83 |         if ($data(DebugMode)#10=0)!($get(DebugMode)<0)!($get(DebugMode)>3)!(($get(DebugMode)=1)&(DispMode'=cGUI)) do
 | 
|---|
| 84 |         . set TMGDEBUG=$$GetDebugMode^TMGDEBUG(cdbNone)
 | 
|---|
| 85 |         else  do
 | 
|---|
| 86 |         . set TMGDEBUG=DebugMode
 | 
|---|
| 87 |         if TMGDEBUG=cdbAbort goto RunDone
 | 
|---|
| 88 | 
 | 
|---|
| 89 |         do
 | 
|---|
| 90 |         . new DefPath set DefPath="/tmp/"
 | 
|---|
| 91 |         . new DefName set DefName="M_Import_DebugLog.tmp"
 | 
|---|
| 92 |         . new DefFName set DefFName=DefPath_DefName
 | 
|---|
| 93 |         . do OpenLogFile^TMGDEBUG(DefPath,DefName)
 | 
|---|
| 94 |         . if TMGDEBUG=cdbToTail do
 | 
|---|
| 95 |         . . set result=$$Tail^TMGXDLG(DefFName,0,0,0)
 | 
|---|
| 96 | 
 | 
|---|
| 97 |         ;"------------------------------------------------------------------------------------
 | 
|---|
| 98 |         if ($data(UserPath)#10=0)!($data(UserFName)#10=0) do
 | 
|---|
| 99 |         . set result=$$GetFName(.UserPath,.UserFName)
 | 
|---|
| 100 |         . if result=cAbort do PopupBox^TMGUSRIF("<!> No file selected.","Come back again soon!")
 | 
|---|
| 101 |         else  do
 | 
|---|
| 102 |         . set result=cOKToCont
 | 
|---|
| 103 |         if (result=cAbort)!($data(UserPath)=0)!($data(UserFName)=0) goto RunDone
 | 
|---|
| 104 |         set Filename=UserPath_"/"_UserFName
 | 
|---|
| 105 |         ;"------------------------------------------------------------------------------------
 | 
|---|
| 106 | 
 | 
|---|
| 107 |         ;new Array
 | 
|---|
| 108 |         new InFile,RecNum,EOF
 | 
|---|
| 109 |         new counter set counter=0
 | 
|---|
| 110 | 
 | 
|---|
| 111 |         write "Please be patient...",!,!
 | 
|---|
| 112 | 
 | 
|---|
| 113 |         set InFile=Filename
 | 
|---|
| 114 |         open InFile:readonly:2
 | 
|---|
| 115 |         else  do  goto QLoad
 | 
|---|
| 116 |         . do ShowError^TMGDEBUG(.PriorErrorFound,"Error opening file: ",UserPath_"/"_UserFName)
 | 
|---|
| 117 | 
 | 
|---|
| 118 |         for RecNum=1:1  do  quit:EOF
 | 
|---|
| 119 |         . ;"set EOF=$$GetRecord(.Array,RecNum)
 | 
|---|
| 120 |         . set EOF=$$GetRecord(.Array,1)
 | 
|---|
| 121 |         . set ArrayP=$name(Array(1))
 | 
|---|
| 122 |         . do ParseRecord(ArrayP,.Parsed)
 | 
|---|
| 123 |         . if $$ScreenParsed(.Parsed)=cOKToCont do
 | 
|---|
| 124 |         . . if $$FileParsed(.Parsed)=cOKToCont do
 | 
|---|
| 125 |         . . . write "."
 | 
|---|
| 126 |         . . else  do
 | 
|---|
| 127 |         . . . write "!"
 | 
|---|
| 128 |         . else  write "X"
 | 
|---|
| 129 |         . set counter=counter+1
 | 
|---|
| 130 |         . if $get(TMGDEBUG)>0 do DebugMsg^TMGDEBUG(DBIndent,"Counter=",counter)
 | 
|---|
| 131 |         . if counter=80 do
 | 
|---|
| 132 |         . . ;"write @IOF
 | 
|---|
| 133 |         . . write !,RecNum," records processed so far.",!
 | 
|---|
| 134 |         . . set counter=0
 | 
|---|
| 135 |         . ;"write "hit key.."
 | 
|---|
| 136 |         . read *KeyPress:0
 | 
|---|
| 137 |         . if KeyPress=27 set EOF=1
 | 
|---|
| 138 |         . if $get(TMGDEBUG)>0 do DebugMsg^TMGDEBUG(DBIndent,"End of loop.  EOF=",EOF)
 | 
|---|
| 139 | 
 | 
|---|
| 140 |         close InFile
 | 
|---|
| 141 | 
 | 
|---|
| 142 |         write !,!,RecNum," Records processed.",!,!
 | 
|---|
| 143 | 
 | 
|---|
| 144 |         goto RunDone
 | 
|---|
| 145 | 
 | 
|---|
| 146 | RunDone
 | 
|---|
| 147 |         write "Goodbye",!,!
 | 
|---|
| 148 | 
 | 
|---|
| 149 |         if $get(TMGDEBUG)>0 do DebugExit^TMGDEBUG(.DBIndent,"Main Run")
 | 
|---|
| 150 | 
 | 
|---|
| 151 |         quit
 | 
|---|
| 152 | 
 | 
|---|
| 153 | 
 | 
|---|
| 154 | 
 | 
|---|
| 155 | 
 | 
|---|
| 156 | GetFName(Path,Filename)
 | 
|---|
| 157 |         ;"Purpose: Interact with user to get path and filename
 | 
|---|
| 158 |         ;"Input: Path--should be passed by reference, used to pass back result
 | 
|---|
| 159 |         ;"       Filename--should be passed by reference, used to pass back result
 | 
|---|
| 160 |         ;"Output: Results passed in Path and Filename
 | 
|---|
| 161 |         ;"        Function will result in 0 if user 'cancelled', 1 otherwise
 | 
|---|
| 162 | 
 | 
|---|
| 163 |         new result set result=cAbort
 | 
|---|
| 164 |         new FullNamePath
 | 
|---|
| 165 |         new PathNode
 | 
|---|
| 166 |         set Path="/"
 | 
|---|
| 167 |         set Filename=""
 | 
|---|
| 168 | 
 | 
|---|
| 169 |         if $get(TMGDEBUG)>0 do DebugEntry^TMGDEBUG(.DBIndent,"GetFName")
 | 
|---|
| 170 | 
 | 
|---|
| 171 |         if DispMode=cRoll goto GFNRoll
 | 
|---|
| 172 | 
 | 
|---|
| 173 |         if $get(TMGDEBUG)>0 do DebugMsg^TMGDEBUG(DBIndent,"Calling $$FileSel()")
 | 
|---|
| 174 |         set FullNamePath=$$FileSel^TMGXDLG("Please select script to process . . .","~/MedicLabels")
 | 
|---|
| 175 |         if $get(TMGDEBUG)>0 do DebugMsg^TMGDEBUG(DBIndent,"Results=",FullNamePath)
 | 
|---|
| 176 |         if FullNamePath="" goto GFNDone  ;"result=cAbort still --> cancelled.
 | 
|---|
| 177 | 
 | 
|---|
| 178 |         ;"Separate path from filename
 | 
|---|
| 179 | GFNL1
 | 
|---|
| 180 |         if '(FullNamePath["/") set Filename=FullNamePath goto GFNL2
 | 
|---|
| 181 |         set PathNode=$piece(FullNamePath,"/",1)
 | 
|---|
| 182 |         set Path=Path_PathNode_"/"
 | 
|---|
| 183 |         set $piece(FullNamePath,"/",1)=""
 | 
|---|
| 184 |         set FullNamePath=$extract(FullNamePath,2,255)
 | 
|---|
| 185 |         goto GFNL1
 | 
|---|
| 186 | GFNL2
 | 
|---|
| 187 |         set result=cOKToCont
 | 
|---|
| 188 |         goto GFNDone
 | 
|---|
| 189 | 
 | 
|---|
| 190 | GFNRoll
 | 
|---|
| 191 |         new DefFName set DefFName="MedicLabels"
 | 
|---|
| 192 |         new DefPath set DefPath="/home/kdt0p"
 | 
|---|
| 193 |         ;"write !,"------------------------------------------",!
 | 
|---|
| 194 |         write !
 | 
|---|
| 195 |         write "Enter filename with path:",!
 | 
|---|
| 196 |         write "    ['^'] = Abort",!
 | 
|---|
| 197 |         write "  [Enter] = '",DefPath,"/",DefFName,"'",!
 | 
|---|
| 198 |         write "> "
 | 
|---|
| 199 |         read Filename:240
 | 
|---|
| 200 |         write !
 | 
|---|
| 201 |         if Filename="^" goto GFNDone
 | 
|---|
| 202 |         if Filename="" do
 | 
|---|
| 203 |         . set Filename=DefFName
 | 
|---|
| 204 |         . set Path=DefPath
 | 
|---|
| 205 |         . write "Using default: ",Path,"/",Filename,!,!,!
 | 
|---|
| 206 |         set result=cOKToCont
 | 
|---|
| 207 | 
 | 
|---|
| 208 | GFNDone
 | 
|---|
| 209 |         if $get(TMGDEBUG)>0 do DebugExit^TMGDEBUG(.DBIndent,"GetFName")
 | 
|---|
| 210 |         quit result
 | 
|---|
| 211 | 
 | 
|---|
| 212 | 
 | 
|---|
| 213 | 
 | 
|---|
| 214 | 
 | 
|---|
| 215 | 
 | 
|---|
| 216 | GetDispMode()
 | 
|---|
| 217 |         ;"Purpose: To determine with form of input user wants
 | 
|---|
| 218 |         ;"Results: 1=GUI,2=CHUI,3=RollNScroll,0=abort
 | 
|---|
| 219 |         new Input
 | 
|---|
| 220 |         new result set result=cAbort
 | 
|---|
| 221 |         new Default set Default=3
 | 
|---|
| 222 | 
 | 
|---|
| 223 |         if $get(TMGDEBUG)>0 do DebugEntry^TMGDEBUG(.DBIndent,"GetDispMode")
 | 
|---|
| 224 | 
 | 
|---|
| 225 |         write "Select interface option:",!
 | 
|---|
| 226 |         write "    0. Quit. (Goodbye!)",!
 | 
|---|
| 227 |         write "    1. Linux X graphics/ 'GUI' (Recommended)",!
 | 
|---|
| 228 |         write "    2. Text graphics / 'CHUI' (Incomplete)",!
 | 
|---|
| 229 |         write "    3. Line-by-Line / 'Roll-and-scroll'",!
 | 
|---|
| 230 | 
 | 
|---|
| 231 |         write "Enter option number ("_Default_"): "
 | 
|---|
| 232 |         read Input,!
 | 
|---|
| 233 |         if Input="" do
 | 
|---|
| 234 |         . ;"write "Defaulting to: ",Default,!
 | 
|---|
| 235 |         . set Input=Default
 | 
|---|
| 236 |         else  if +Input>4 do
 | 
|---|
| 237 |         . set Input=Default
 | 
|---|
| 238 | 
 | 
|---|
| 239 |         set result=+Input
 | 
|---|
| 240 |         if (Input=1)!(Input=2) do
 | 
|---|
| 241 |         . do SetupConsts^TMGXDLG()
 | 
|---|
| 242 |         . do SetGUI^TMGXDLG(Input=1)
 | 
|---|
| 243 |         ;"if Input=2 do  goto GIMDone
 | 
|---|
| 244 |         ;". do SetupConsts^TMGXDLG()
 | 
|---|
| 245 |         ;". do SetGUI^TMGXDLG(0)
 | 
|---|
| 246 | 
 | 
|---|
| 247 | GIMDone
 | 
|---|
| 248 |         if $get(TMGDEBUG)>0 do DebugMsg^TMGDEBUG(DBIndent,"Display mode set at: ",result)
 | 
|---|
| 249 |         if $get(TMGDEBUG)>0 do DebugExit^TMGDEBUG(.DBIndent,"GetDispMode")
 | 
|---|
| 250 |         quit result
 | 
|---|
| 251 | 
 | 
|---|
| 252 | 
 | 
|---|
| 253 | LogSkipped
 | 
|---|
| 254 | 
 | 
|---|
| 255 |         use OutFile
 | 
|---|
| 256 | 
 | 
|---|
| 257 | 
 | 
|---|
| 258 | 
 | 
|---|
| 259 | GetRecord(Array,RecNum)
 | 
|---|
| 260 |         ;"Purpose:
 | 
|---|
| 261 |         ;"
 | 
|---|
| 262 | 
 | 
|---|
| 263 |         if $get(TMGDEBUG)>0 do DebugEntry^TMGDEBUG(.DBIndent,"GetRecord")
 | 
|---|
| 264 | 
 | 
|---|
| 265 |         new done,i
 | 
|---|
| 266 |         new BlankLine set BlankLine=""
 | 
|---|
| 267 |         new Parsed,ArrayP
 | 
|---|
| 268 | 
 | 
|---|
| 269 |         use InFile
 | 
|---|
| 270 | 
 | 
|---|
| 271 |         for i=1:1:6 do  quit:($zeof)
 | 
|---|
| 272 |         . if line="" read line
 | 
|---|
| 273 |         . set Array(RecNum,i)=line
 | 
|---|
| 274 |         . set line=""
 | 
|---|
| 275 |         . if $zeof quit
 | 
|---|
| 276 |         . ;"read BlankLine  ;"read and discard blank line
 | 
|---|
| 277 |         . ;"if BlankLine'="" set line=BlankLine
 | 
|---|
| 278 | 
 | 
|---|
| 279 |         ;"for  do  quit:($zeof)!(line'="")
 | 
|---|
| 280 |         ;". read line
 | 
|---|
| 281 |         ;". set line=$$Trim^TMGSTUTL(line)
 | 
|---|
| 282 | 
 | 
|---|
| 283 |         use 0
 | 
|---|
| 284 | 
 | 
|---|
| 285 | QLoad
 | 
|---|
| 286 |         if $get(TMGDEBUG)>0 do DebugExit^TMGDEBUG(.DBIndent,"GetRecord")
 | 
|---|
| 287 |         quit $zeof
 | 
|---|
| 288 | 
 | 
|---|
| 289 | 
 | 
|---|
| 290 | 
 | 
|---|
| 291 | ParseRecord(ArrayP,Parsed)
 | 
|---|
| 292 | 
 | 
|---|
| 293 |         if $get(TMGDEBUG)>0 do DebugEntry^TMGDEBUG(.DBIndent,"ParseRecord")
 | 
|---|
| 294 | 
 | 
|---|
| 295 |         new s,s1,s2
 | 
|---|
| 296 |         new NameArray
 | 
|---|
| 297 |         new MaxNode,i
 | 
|---|
| 298 | 
 | 
|---|
| 299 |         kill Parsed
 | 
|---|
| 300 | 
 | 
|---|
| 301 |         ;"temp
 | 
|---|
| 302 |         new tempDEBUG set tempDEBUG=$get(TMGDEBUG)
 | 
|---|
| 303 |         set TMGDEBUG=0
 | 
|---|
| 304 | 
 | 
|---|
| 305 |         set s=$get(@ArrayP@(1))
 | 
|---|
| 306 |         ;"if $get(TMGDEBUG)>0 do DebugMsg^TMGDEBUG(DBIndent,"Init Name Line=",s)
 | 
|---|
| 307 |         if s'="" do
 | 
|---|
| 308 |         . new Suffix set Suffix=""
 | 
|---|
| 309 |         . do CleaveToArray^TMGSTUTL(s," ",.NameArray,1)
 | 
|---|
| 310 |         . if $get(NameArray(1))="BABY" quit
 | 
|---|
| 311 |         . set MaxNode=+$get(NameArray("MAXNODE"))
 | 
|---|
| 312 |         . if MaxNode'>0 do  quit
 | 
|---|
| 313 |         . . if $get(TMGDEBUG)>0 do DebugMsg^TMGDEBUG(DBIndent,"Error after CleaveToArray.  Here is NameArray:")
 | 
|---|
| 314 |         . . if $get(TMGDEBUG)>0 do ArrayDump^TMGDEBUG("NameArray")
 | 
|---|
| 315 |         . if (NameArray(MaxNode)="JR")!(NameArray(MaxNode)="SR") do
 | 
|---|
| 316 |         . . set Suffix=NameArray(MaxNode)
 | 
|---|
| 317 |         . . kill NameArray(MaxNode)
 | 
|---|
| 318 |         . . set MaxNode=MaxNode-1
 | 
|---|
| 319 |         . set s1=NameArray(MaxNode)_","
 | 
|---|
| 320 |         . for i=1:1:MaxNode-1 do
 | 
|---|
| 321 |         . . set s1=s1_NameArray(i)_" "
 | 
|---|
| 322 |         . set s1=s1_Suffix
 | 
|---|
| 323 |         . set s1=$$Trim^TMGSTUTL(s1)
 | 
|---|
| 324 |         . if $extract(s1,1,2)="ZZ" set s1=""   ;"DROP ZZ NAMES
 | 
|---|
| 325 |         . if (s1'["0")&(s1'["1")&(s1'["2")&(s1'["3")&(s1'["4")&(s1'["5")&(s1'["6")&(s1'["7")&(s1'["8")&(s1'["9") do
 | 
|---|
| 326 |         . . ;"if $get(TMGDEBUG)>0 do DebugMsg^TMGDEBUG(DBIndent,"final Name Line=",s1)
 | 
|---|
| 327 |         . . if s1'="" set Parsed(cName)=s1
 | 
|---|
| 328 | 
 | 
|---|
| 329 |         set s=$get(@ArrayP@(2))
 | 
|---|
| 330 |         set s2=$$Trim^TMGSTUTL(s)
 | 
|---|
| 331 |         if $length(s2)>34 set s2=$extract(s2,1,34)
 | 
|---|
| 332 |         if $length(s2)<3 set s2=""
 | 
|---|
| 333 |         if s2'="" set Parsed(cStrAddr)=s2
 | 
|---|
| 334 | 
 | 
|---|
| 335 |         set s=$get(@ArrayP@(3))
 | 
|---|
| 336 |         set s1=$extract(s,1,16)
 | 
|---|
| 337 |         set s2=$$Trim^TMGSTUTL(s1)
 | 
|---|
| 338 |         if s2'="" set Parsed(cCity)=s2
 | 
|---|
| 339 | 
 | 
|---|
| 340 |         set s1=$extract(s,17,18)
 | 
|---|
| 341 |         set s2=$$Trim^TMGSTUTL(s1)
 | 
|---|
| 342 |         if $length(s2)'=2 set s2=""
 | 
|---|
| 343 |         if s2'="" set Parsed(cState)=s2
 | 
|---|
| 344 | 
 | 
|---|
| 345 |         set s1=$extract(s,19,256)
 | 
|---|
| 346 |         set s2=$$Trim^TMGSTUTL(s1)
 | 
|---|
| 347 |         if s2'="" set Parsed(cZip)=s2
 | 
|---|
| 348 | 
 | 
|---|
| 349 |         set s=$get(@ArrayP@(4))
 | 
|---|
| 350 |         set s2=$$Trim^TMGSTUTL($extract(s,1,12))
 | 
|---|
| 351 |         if s2="000 000 0000" set s2=""
 | 
|---|
| 352 |         if s2'="" set Parsed(cPhone1)=s2
 | 
|---|
| 353 |         set s2=$$Trim^TMGSTUTL($extract(s,16,27))
 | 
|---|
| 354 |         if s2="000 000 0000" set s2=""
 | 
|---|
| 355 |         if s2'="" set Parsed(cPhone2)=s2
 | 
|---|
| 356 | 
 | 
|---|
| 357 |         set s=$get(@ArrayP@(5))
 | 
|---|
| 358 |         set s1=$extract(s,1,10)
 | 
|---|
| 359 |         set s2=$$Trim^TMGSTUTL(s1)
 | 
|---|
| 360 |         set s2=$translate(s2,"DPWCI\*","")  ;"Clean off alpha characters -- not needed.
 | 
|---|
| 361 |         if $extract(s2,1,2)="ZZ" set s2=""
 | 
|---|
| 362 |         if s2'="" set Parsed(cChartNum)=s2
 | 
|---|
| 363 | 
 | 
|---|
| 364 |         set s1=$extract(s,11,18)
 | 
|---|
| 365 |         set s1=$$FixDate(s1)
 | 
|---|
| 366 |         if s1'="" set Parsed(cDOB)=s1
 | 
|---|
| 367 | 
 | 
|---|
| 368 |         set s1=$extract(s,19,19)
 | 
|---|
| 369 |         if (s1'="M")&(s1'="F") do
 | 
|---|
| 370 |         . set s1="M"    ;"NOTE, I AM SETTING ALL UNKNOWN SEX's TO MALE
 | 
|---|
| 371 |         if s1'="" set Parsed(cSex)=s1
 | 
|---|
| 372 | 
 | 
|---|
| 373 |         set s1=$extract(s,21,26)
 | 
|---|
| 374 |         set s1=$$FixDate(s1)
 | 
|---|
| 375 |         if s1'="" set Parsed(cDateReg)=s1
 | 
|---|
| 376 | 
 | 
|---|
| 377 |         ;"temp
 | 
|---|
| 378 |         set TMGDEBUG=tempDEBUG
 | 
|---|
| 379 | 
 | 
|---|
| 380 |         if $get(TMGDEBUG)>0 do DebugExit^TMGDEBUG(.DBIndent,"ParseRecord")
 | 
|---|
| 381 | 
 | 
|---|
| 382 |         quit
 | 
|---|
| 383 | 
 | 
|---|
| 384 | 
 | 
|---|
| 385 | FixDate(Date)
 | 
|---|
| 386 | 
 | 
|---|
| 387 |         new Month,Day,Year
 | 
|---|
| 388 |         new result set result=""
 | 
|---|
| 389 | 
 | 
|---|
| 390 |         set Date=$$Trim^TMGSTUTL(Date)
 | 
|---|
| 391 |         set Month=$$Trim^TMGSTUTL($extract(Date,1,2))
 | 
|---|
| 392 |         if +Month>0 do
 | 
|---|
| 393 |         . set result=Month
 | 
|---|
| 394 |         . set Day=$$Trim^TMGSTUTL($extract(Date,3,4))
 | 
|---|
| 395 |         . if +Day>0 do
 | 
|---|
| 396 |         . . set result=result_"/"_Day
 | 
|---|
| 397 |         . . set Year=$$Trim^TMGSTUTL($extract(Date,5,8))
 | 
|---|
| 398 |         . . if +Year>0 do
 | 
|---|
| 399 |         . . . set result=result_"/"_Year
 | 
|---|
| 400 | 
 | 
|---|
| 401 |         quit result
 | 
|---|
| 402 | 
 | 
|---|
| 403 | 
 | 
|---|
| 404 | ScreenParsed(Parsed)
 | 
|---|
| 405 |         ;"Purpose: Screen record.  If not appropriate for filing, then
 | 
|---|
| 406 |         ;"        Parsed(*) is emptied
 | 
|---|
| 407 |         ;"Result: 0 if Parsed is ok to file, 1 if killed
 | 
|---|
| 408 | 
 | 
|---|
| 409 |         if $get(Parsed(cName))="" do  goto SPKill
 | 
|---|
| 410 |         . if $get(TMGDEBUG)>0 do DebugMsg^TMGDEBUG(DBIndent,"No name found!")
 | 
|---|
| 411 |         if $get(Parsed(cChartNum))="" do  goto SPKill
 | 
|---|
| 412 |         . if $get(TMGDEBUG)>0 do DebugMsg^TMGDEBUG(DBIndent,"No chart number found!")
 | 
|---|
| 413 |         if $get(Parsed(cDOB))="" do  goto SPKill
 | 
|---|
| 414 |         . if $get(TMGDEBUG)>0 do DebugMsg^TMGDEBUG(DBIndent,"No DOB found!")
 | 
|---|
| 415 | 
 | 
|---|
| 416 |         quit cOKToCont
 | 
|---|
| 417 | 
 | 
|---|
| 418 | SPKill
 | 
|---|
| 419 |         if $get(TMGDEBUG)>0 do DebugMsg^TMGDEBUG(DBIndent,"Killing Parsed.  Here it is first...")
 | 
|---|
| 420 |         if $get(TMGDEBUG)>0 do ArrayDump^TMGDEBUG("Parsed")
 | 
|---|
| 421 |         kill Parsed
 | 
|---|
| 422 |         quit cAbort
 | 
|---|
| 423 | 
 | 
|---|
| 424 | 
 | 
|---|
| 425 | 
 | 
|---|
| 426 | FileParsed(Parsed)
 | 
|---|
| 427 | 
 | 
|---|
| 428 |         if $get(TMGDEBUG)>0 do DebugEntry^TMGDEBUG(.DBIndent,"FileParsed")
 | 
|---|
| 429 | 
 | 
|---|
| 430 |         new cOKToCont set cOKToCont=1
 | 
|---|
| 431 |         new cAbort set cAbort=0
 | 
|---|
| 432 |         new cFile set cFile="FILE"
 | 
|---|
| 433 |         new cEntries set cEntries="Entries"
 | 
|---|
| 434 |         new cMatchThis set cMatchThis="MATCHTHIS"                  ;"MatchThis"
 | 
|---|
| 435 | 
 | 
|---|
| 436 |         new result set result=cOKToCont
 | 
|---|
| 437 |         new Data
 | 
|---|
| 438 | 
 | 
|---|
| 439 |         ;"The Data array will be filed with data. (An example)
 | 
|---|
| 440 |         ;"        Data(0,cFile)="1234.1" <-- "NEW PERSON" Note conversion
 | 
|---|
| 441 |         ;"        Data(0,cFile,cGlobal)="^DIC(200)"  <-- note, NOT "^DIC(200,"
 | 
|---|
| 442 |         ;"        Data(0,cRecNum)=2  <-- only if user-specified.
 | 
|---|
| 443 |         ;"        Data(0,cEntries)=1
 | 
|---|
| 444 |         ;"        Data(1,".01")="MyData1"
 | 
|---|
| 445 |         ;"        Data(1,".01",cMatchValue)="MyData1"
 | 
|---|
| 446 |         ;"        Data(1,".01",cFlags)=any flags given (only present if user specified)
 | 
|---|
| 447 |         ;"        Data(1,".02")="Bill"
 | 
|---|
| 448 |         ;"        Data(1,".02",cMatchValue)="John"
 | 
|---|
| 449 |         ;"        Data(1,".03")="MyData3"
 | 
|---|
| 450 |         ;"        Data(1,".04")="MyData4"
 | 
|---|
| 451 |         ;"        Data(1,".06")="MyData5"  <-- note "NAME" was converted to ".06"
 | 
|---|
| 452 |         ;"        Data(1,".07",0,cEntries)=2    <-- "ITEM" converted to ".07"
 | 
|---|
| 453 |         ;"        Data(1,".07",0,cParentIENS)=",10033,"
 | 
|---|
| 454 |         ;"        Data(1,".07",1,".01")="SubEntry1"
 | 
|---|
| 455 |         ;"        Data(1,".07",1,".02")="SE1"
 | 
|---|
| 456 |         ;"        Data(1,".07",1,".03")="'Some Info'"
 | 
|---|
| 457 |         ;"        Data(1,".07",2,".01")="SubEntry2"
 | 
|---|
| 458 |         ;"        Data(1,".07",2,".02")="SE2"
 | 
|---|
| 459 |         ;"        Data(1,".07",2,".04",0,cEntries)=1    ;"TEXT converted to .04
 | 
|---|
| 460 |         ;"        Data(1,".07",2,".04",0,cParentIENS)=",3,10033,"
 | 
|---|
| 461 |         ;"        Data(1,".07",2,".04",1,".01")="JD"
 | 
|---|
| 462 |         ;"        Data(1,".07",2,".04",1,".02")="DOE,JOHN"
 | 
|---|
| 463 | 
 | 
|---|
| 464 | 
 | 
|---|
| 465 |         if $get(Parsed(cName))="" do  goto UploadDone
 | 
|---|
| 466 |         . if $get(TMGDEBUG)>0 do DebugMsg^TMGDEBUG(DBIndent,"No name found!")
 | 
|---|
| 467 |         . set result=cAbort
 | 
|---|
| 468 | 
 | 
|---|
| 469 |         set Data(0,cFile)=2  ;"file 2=PATIENT file
 | 
|---|
| 470 |         set Data(0,cEntries)=1
 | 
|---|
| 471 |         if $data(Parsed(cName)) do
 | 
|---|
| 472 |         . set Data(1,.01)=Parsed(cName)
 | 
|---|
| 473 |         . set Data(1,.01,cMatchThis)=1
 | 
|---|
| 474 |         if $data(Parsed(cSex)) set Data(1,.02)=Parsed(cSex)
 | 
|---|
| 475 |         if $data(Parsed(cDOB)) set Data(1,.03)=Parsed(cDOB)
 | 
|---|
| 476 |         ;"if $data(Parsed(cDateReg)) set Data(1,.097)=Parsed(cDateReg)  ;".097 = DATE ENTERED INTO FILE
 | 
|---|
| 477 |         if $data(Parsed(cStrAddr)) set Data(1,.111)=Parsed(cStrAddr)  ;".111 = STREED ADDRESS [LINE 1]
 | 
|---|
| 478 |         if $data(Parsed(cZip)) set Data(1,.1112)=Parsed(cZip)     ;".1112 = ZIP+4
 | 
|---|
| 479 |         if $data(Parsed(cCity)) set Data(1,.114)=Parsed(cCity)
 | 
|---|
| 480 |         if $data(Parsed(cState)) set Data(1,.115)=Parsed(cState)
 | 
|---|
| 481 |         if $data(Parsed(cPhone1)) set Data(1,.131)=Parsed(cPhone1)   ;".131 = PHONE NUMBER [RESIDENCE]
 | 
|---|
| 482 |         if $data(Parsed(cPhone2)) set Data(1,.132)=Parsed(cPhone2)   ;".132 = PHONE NUMBER [WORK]
 | 
|---|
| 483 |         if $data(Parsed(cChartNum)) set Data(1,22700)=Parsed(cChartNum);"22700 =  MEDIC ACCOUNT NUMBER
 | 
|---|
| 484 | 
 | 
|---|
| 485 | 
 | 
|---|
| 486 |         new result
 | 
|---|
| 487 | 
 | 
|---|
| 488 |         new tempDebug set tempDebug=TMGDEBUG
 | 
|---|
| 489 |         set TMGDEBUG=0  ;"DISALLOW DEBUG OF UPLOAD -- TOO MUCH INFORMATION!
 | 
|---|
| 490 |         set result=$$UploadData^TMGDBAPI(.Data)
 | 
|---|
| 491 |         set TMGDEBUG=tempDebug
 | 
|---|
| 492 | 
 | 
|---|
| 493 |         if result=cAbort do
 | 
|---|
| 494 |         . if $get(TMGDEBUG)>0 do DebugMsg^TMGDEBUG(DBIndent,"Error uploading record")
 | 
|---|
| 495 |         . if $get(TMGDEBUG)>0 do ArrayDump^TMGDEBUG("Data")
 | 
|---|
| 496 | 
 | 
|---|
| 497 | UploadDone
 | 
|---|
| 498 | 
 | 
|---|
| 499 |         if result=cAbort do
 | 
|---|
| 500 |         . if $get(TMGDEBUG)>0 do DebugMsg^TMGDEBUG(DBIndent,"This record not uploaded")
 | 
|---|
| 501 |         . if $get(TMGDEBUG)>0 do ArrayDump^TMGDEBUG("Parsed")
 | 
|---|
| 502 | 
 | 
|---|
| 503 |         if $get(TMGDEBUG)>0 do DebugExit^TMGDEBUG(.DBIndent,"FileParsed")
 | 
|---|
| 504 | 
 | 
|---|
| 505 |         quit result
 | 
|---|
| 506 | 
 | 
|---|
| 507 | 
 | 
|---|
| 508 |         ;"=====================================================================================
 | 
|---|
| 509 | 
 | 
|---|
| 510 | Purge
 | 
|---|
| 511 |         ;"ENTRY POINT...
 | 
|---|
| 512 |         ;"Purge: Purge duplicate records
 | 
|---|
| 513 |         new index
 | 
|---|
| 514 |         new CurPt
 | 
|---|
| 515 |         new Count set Count=0
 | 
|---|
| 516 |         new Inc set Inc=0
 | 
|---|
| 517 | 
 | 
|---|
| 518 |         kill ^TMP("TMG","DUPLICATE")
 | 
|---|
| 519 |         set ^TMP("TMG","DUPLICATE","NEXT")=1
 | 
|---|
| 520 | 
 | 
|---|
| 521 |         write !,!,"Starting to check for duplicate entries.",!,!
 | 
|---|
| 522 |         set index=$order(^DPT(0))
 | 
|---|
| 523 | 
 | 
|---|
| 524 |         for  do  quit:index=""
 | 
|---|
| 525 |         . set CurPt=$piece($get(^DPT(index,0)),"^",1)
 | 
|---|
| 526 |         . set index=$order(^DPT(index))
 | 
|---|
| 527 |         . set Count=Count+1
 | 
|---|
| 528 |         . set Inc=Inc+1
 | 
|---|
| 529 |         . if Inc>999 do
 | 
|---|
| 530 |         . . write !,Count," records processed so far. (",Count/69758*100,"%)",!
 | 
|---|
| 531 |         . . set Inc=0
 | 
|---|
| 532 |         . if CurPt="" quit
 | 
|---|
| 533 |         . ;"write "Considering ",CurPt,!
 | 
|---|
| 534 |         . write "."
 | 
|---|
| 535 |         . new lname,fname,PtName
 | 
|---|
| 536 |         . set lname=$piece(CurPt,",",1)
 | 
|---|
| 537 |         . set fname=$piece(CurPt,",",2)
 | 
|---|
| 538 |         . set fname=$extract(fname,1,3) ;"only check first 3 letters of first name
 | 
|---|
| 539 |         . set PtName=lname_","_fname
 | 
|---|
| 540 |         . ;"--------
 | 
|---|
| 541 |         . new Matches,TMGMsg
 | 
|---|
| 542 |         . new FileNumber,IENS,Fields,Flags,MatchValue,ScreenCode
 | 
|---|
| 543 |         . set FileNumber=2
 | 
|---|
| 544 |         . set IENS=""
 | 
|---|
| 545 |         . set Fields="@;.01;.02;.03;.09;22700"
 | 
|---|
| 546 |         . set Flags=""
 | 
|---|
| 547 |         . set MatchValue=PtName
 | 
|---|
| 548 |         . set ScreenCode=""
 | 
|---|
| 549 |         . ;"Call FIND^DIC
 | 
|---|
| 550 |         . ;"FILE,IENS,FIELDS,FLAGS,VALUE,NUMBER,INDEXES,SCREEN,IDENTIFIER,TARGET_ROOT,MSG_ROOTS
 | 
|---|
| 551 |         . do FIND^DIC(FileNumber,$get(IENS),Fields,Flags,MatchValue,"*",,ScreenCode,,"Matches","TMGMsg")
 | 
|---|
| 552 |         . ;"======================================================
 | 
|---|
| 553 |         . if $data(Matches("DILIST",0))'=0 do
 | 
|---|
| 554 |         . . new NumMatches set NumMatches=$piece(Matches("DILIST",0),"^",1)
 | 
|---|
| 555 |         . . if NumMatches>1 do
 | 
|---|
| 556 |         . . . if $$DoComp(.Matches)>0 do
 | 
|---|
| 557 |         . . . . ;"write "*** Multiple entries found!",!
 | 
|---|
| 558 |         . read *KeyPress:0
 | 
|---|
| 559 |         . if KeyPress=27 do  quit:index=""
 | 
|---|
| 560 |         . . new Answer
 | 
|---|
| 561 |         . . write !
 | 
|---|
| 562 |         . . read "Do yu want to quit (y/n)?",Answer
 | 
|---|
| 563 |         . . if Answer="y" set index=""
 | 
|---|
| 564 |         . . write !,!
 | 
|---|
| 565 | 
 | 
|---|
| 566 |         zwr ^TMP("TMG","DUPLICATE",*)
 | 
|---|
| 567 | 
 | 
|---|
| 568 |         quit
 | 
|---|
| 569 | 
 | 
|---|
| 570 | DoComp(Matches)
 | 
|---|
| 571 |         ;"Purpose: to find duplicate entries
 | 
|---|
| 572 |         ;"result 0=no duplicates, 1=duplicate  2=exact match found (and killed)
 | 
|---|
| 573 | 
 | 
|---|
| 574 |         new index1,index2
 | 
|---|
| 575 |         new result set result=0
 | 
|---|
| 576 | 
 | 
|---|
| 577 |         new MaxCount set MaxCount=$piece(Matches("DILIST",0),"^",1)
 | 
|---|
| 578 |         for index1=1:1:(MaxCount-1) do  quit:(result>0)
 | 
|---|
| 579 |         . new A
 | 
|---|
| 580 |         . merge A=Matches("DILIST","ID",index1)
 | 
|---|
| 581 |         . set A("IEN")=Matches("DILIST",2,index1)
 | 
|---|
| 582 |         . for index2=index1+1:1:MaxCount do  quit:(result>0)
 | 
|---|
| 583 |         . . new B
 | 
|---|
| 584 |         . . merge B=Matches("DILIST","ID",index2)
 | 
|---|
| 585 |         . . set B("IEN")=Matches("DILIST",2,index2)
 | 
|---|
| 586 |         . . set result=$$CompRecs(.A,.B)
 | 
|---|
| 587 |         . . if result>0 do
 | 
|---|
| 588 |         . . . ;"write !,"Duplicate found.",!
 | 
|---|
| 589 |         . . . new NextI set NextI=^TMP("TMG","DUPLICATE","NEXT")
 | 
|---|
| 590 |         . . . merge ^TMP("TMG","DUPLICATE",NextI,"A")=A
 | 
|---|
| 591 |         . . . merge ^TMP("TMG","DUPLICATE",NextI,"B")=B
 | 
|---|
| 592 |         . . . set ^TMP("TMG","DUPLICATE","NEXT")=NextI+1
 | 
|---|
| 593 |         . . . if result=1 do
 | 
|---|
| 594 |         . . . . new KeepRec set KeepRec=$$WhichToKeep(.A,.B)
 | 
|---|
| 595 |         . . . . if KeepRec=1 do MergeAIntoB(B("IEN"),A("IEN"))  ;"Keep A & Kill B,
 | 
|---|
| 596 |         . . . . if KeepRec=2 do MergeAIntoB(A("IEN"),B("IEN"))  ;"Keep B & Kill A,
 | 
|---|
| 597 |         . . . . if KeepRec=3 do
 | 
|---|
| 598 |         . . . . . do KillRec(B("IEN"))
 | 
|---|
| 599 |         . . . . . do KillRec(A("IEN"))
 | 
|---|
| 600 |         . . . . else  write "?",KeepRec
 | 
|---|
| 601 |         . . . if result=2 do  ;"exact match
 | 
|---|
| 602 |         . . . . do KillRec(B("IEN"))
 | 
|---|
| 603 | 
 | 
|---|
| 604 |         quit result
 | 
|---|
| 605 | 
 | 
|---|
| 606 | 
 | 
|---|
| 607 | WhichToKeep(A,B)
 | 
|---|
| 608 |         ;"Purpose: Decide if to keep A or B
 | 
|---|
| 609 |         ;"ONLY LOOKS AT NAME
 | 
|---|
| 610 |         ;"Result: 0=Keep both
 | 
|---|
| 611 |         ;"          1=Keep A & Kill B,
 | 
|---|
| 612 |         ;"          2=Keep B & Kill A,
 | 
|---|
| 613 |         ;"          3=Kill both,
 | 
|---|
| 614 | 
 | 
|---|
| 615 |         new NameA,NameB
 | 
|---|
| 616 |         set NameA=$get(A(.01))
 | 
|---|
| 617 |         set NameB=$get(B(.01))
 | 
|---|
| 618 |         new lenA,lenB
 | 
|---|
| 619 |         set lenA=$length(NameA)
 | 
|---|
| 620 |         set lenB=$length(NameB)
 | 
|---|
| 621 |         new result set result=0
 | 
|---|
| 622 | 
 | 
|---|
| 623 |         if NameA["ZZ" set result=2  ;"(Kill A)
 | 
|---|
| 624 |         if NameB["ZZ" do
 | 
|---|
| 625 |         . if result=2 set result=3  ;"Kill (A & B)
 | 
|---|
| 626 |         . else  set result=2        ;"(Kill A)
 | 
|---|
| 627 |         if result>0 goto WTKDone
 | 
|---|
| 628 | 
 | 
|---|
| 629 |         new aIEN,bIEN
 | 
|---|
| 630 |         set aIEN=$get(A("IEN"))
 | 
|---|
| 631 |         set bIEN=$get(B("IEN"))
 | 
|---|
| 632 | 
 | 
|---|
| 633 |         ;"Because record A or B might have already been killed as part of another set,
 | 
|---|
| 634 |         ;"  Don't kill either if one already deleted.
 | 
|---|
| 635 |         if $data(^TMP("TMG","KILLED",aIEN))>0 set result=3 W "%" goto WTKDone  ;"no killing
 | 
|---|
| 636 |         if $data(^TMP("TMG","KILLED",bIEN))>0 set result=3 W "%" goto WTKDone  ;"no killing
 | 
|---|
| 637 | 
 | 
|---|
| 638 |         new AMainName,AInitial
 | 
|---|
| 639 |         new BMainName,BInitial
 | 
|---|
| 640 |         set AMainName=$piece(NameA," ",1)
 | 
|---|
| 641 |         set BMainName=$piece(NameB," ",1)
 | 
|---|
| 642 |         set AInitial=$piece(NameA," ",2)
 | 
|---|
| 643 |         set BInitial=$piece(NameB," ",2)
 | 
|---|
| 644 | 
 | 
|---|
| 645 |         if (lenA>lenB)&($extract(NameA,1,lenB)=NameB) set result=1  ;"kill B
 | 
|---|
| 646 |         else  if (lenB>lenA)&($extract(NameB,1,lenA)=NameA) set result=2  ;"kill A
 | 
|---|
| 647 |         else  if NameA=NameB do
 | 
|---|
| 648 |         . set result=1
 | 
|---|
| 649 |         else  if (AMainName=BMainName)&($length(AInitial)=1)&($length(BInitial)=1) do
 | 
|---|
| 650 |         . ;"Names only differ by a one letter middle initial.
 | 
|---|
| 651 |         . ;"Arbitrarily kill B
 | 
|---|
| 652 |         . set result=1
 | 
|---|
| 653 |         else  do
 | 
|---|
| 654 |         . new Answer
 | 
|---|
| 655 |         . write !,"Which record to KILL?",!
 | 
|---|
| 656 |         . write "a --> Kill: ",NameA,!
 | 
|---|
| 657 |         . write "b --> Kill: ",NameB,!
 | 
|---|
| 658 |         . write "x. --> Kill ",NameA,", but remember as ALIAS for ",NameB,!
 | 
|---|
| 659 |         . write "y. --> Kill ",NameB,", but remember as ALIAS for ",NameA,!
 | 
|---|
| 660 |         . write "^ --> KEEP BOTH",!
 | 
|---|
| 661 |         . read Answer
 | 
|---|
| 662 |         . if Answer="x" do AddAlias(NameA,bIEN) set Answer="a"
 | 
|---|
| 663 |         . if Answer="y" do AddAlias(NameB,aIEN) set Answer="b"
 | 
|---|
| 664 |         . if Answer="a" set result=2
 | 
|---|
| 665 |         . if Answer="b" set result=1
 | 
|---|
| 666 | 
 | 
|---|
| 667 | WTKDone
 | 
|---|
| 668 |         ;"if result=0 do
 | 
|---|
| 669 |         ;". zwr A(*)
 | 
|---|
| 670 |         ;". zwr B(*)
 | 
|---|
| 671 |         ;". new temp
 | 
|---|
| 672 |         ;". read "Hit Enter",temp
 | 
|---|
| 673 |         quit result
 | 
|---|
| 674 | 
 | 
|---|
| 675 | 
 | 
|---|
| 676 | AddAlias(AName,IEN)
 | 
|---|
| 677 |         ;"Put Alias Name into record IEN
 | 
|---|
| 678 |         new SubFNum set SubFNum=2.01  ;"Field 1 (alias) in File 2
 | 
|---|
| 679 | 
 | 
|---|
| 680 |         new TMGFDA,TMGMsg
 | 
|---|
| 681 | 
 | 
|---|
| 682 |         if $get(AName)'="" do
 | 
|---|
| 683 |         . set TMGFDA(SubFNum,"?+1,"_IEN_",",.01)=AName
 | 
|---|
| 684 |         . do UPDATE^DIE("EK","TMGFDA","TMGMsg")
 | 
|---|
| 685 |         . if $data(TMGMsg("DILIST")) zwr TMGMsg(*)
 | 
|---|
| 686 |         . set ^TMP("TMG","ALIAS-ADDED",IEN)=AName
 | 
|---|
| 687 |         quit
 | 
|---|
| 688 | 
 | 
|---|
| 689 | 
 | 
|---|
| 690 | MergeAIntoB(DelRecN,SaveRecN)
 | 
|---|
| 691 |         ;"Put Chat number from record to be deleted into Saved record
 | 
|---|
| 692 |         ;"  THEN delete the deletable record
 | 
|---|
| 693 |         new ChartNum
 | 
|---|
| 694 |         new TMGFDA
 | 
|---|
| 695 |         new SubFNum set SubFNum=2.227005  ;"Field 22700.5 in File 2
 | 
|---|
| 696 | 
 | 
|---|
| 697 |         set ChartNum=$piece($get(^DPT(DelRecN,"TMG")),"^",1)
 | 
|---|
| 698 | 
 | 
|---|
| 699 |         if +ChartNum>0 do
 | 
|---|
| 700 |         . set TMGFDA(SubFNum,"?+1,"_SaveRecN_",",.01)=ChartNum
 | 
|---|
| 701 |         . do UPDATE^DIE("EK","TMGFDA","TMGMsg")
 | 
|---|
| 702 |         . if $data(TMGMsg("DILIST")) zwr TMGMsg(*)
 | 
|---|
| 703 | 
 | 
|---|
| 704 |         do KillRec(DelRecN)
 | 
|---|
| 705 | 
 | 
|---|
| 706 |         quit
 | 
|---|
| 707 | 
 | 
|---|
| 708 | 
 | 
|---|
| 709 | 
 | 
|---|
| 710 | KillRec(IEN)
 | 
|---|
| 711 |         new TMGFDA
 | 
|---|
| 712 |         write "#[",IEN,"]"
 | 
|---|
| 713 |         merge ^TMP("TMG","KILLED",IEN)=^DPT(IEN)
 | 
|---|
| 714 | 
 | 
|---|
| 715 |         set TMGFDA(2,IEN_",",.01)="@"
 | 
|---|
| 716 |         do FILE^DIE("EK","TMGFDA","TMGMsg")
 | 
|---|
| 717 |         write "#"
 | 
|---|
| 718 |         if $data(TMGMsg("DILIST")) write !,! zwr TMGMsg(*)
 | 
|---|
| 719 |         quit
 | 
|---|
| 720 | 
 | 
|---|
| 721 | 
 | 
|---|
| 722 | CompRecs(A,B)
 | 
|---|
| 723 |         new result set result=0
 | 
|---|
| 724 | 
 | 
|---|
| 725 |         if $get(A(.03))=$get(B(.03)) do
 | 
|---|
| 726 |         . if $get(A(.02))=$get(B(.02)) do
 | 
|---|
| 727 |         . . set result=1
 | 
|---|
| 728 |         . . if $get(A(.01))=$get(B(.01)) do
 | 
|---|
| 729 |         . . . if $get(A(.09))=$get(B(.09)) do
 | 
|---|
| 730 |         . . . . set result=2  ;"exact match
 | 
|---|
| 731 | 
 | 
|---|
| 732 | 
 | 
|---|
| 733 |         quit result
 | 
|---|
| 734 | 
 | 
|---|
| 735 | 
 | 
|---|
| 736 | FixFName(CurPt)
 | 
|---|
| 737 | 
 | 
|---|
| 738 |         new lname,fname,PtName
 | 
|---|
| 739 |         set lname=$piece(CurPt,",",1)
 | 
|---|
| 740 |         set fname=$piece(CurPt,",",2)
 | 
|---|
| 741 |         new name set name=$$FixName(.lname,.fname)
 | 
|---|
| 742 | 
 | 
|---|
| 743 |         quit name
 | 
|---|
| 744 | 
 | 
|---|
| 745 | 
 | 
|---|
| 746 | FixName(lname,fname)
 | 
|---|
| 747 |         ;"Purpose:  change III,ALLEN J BROWN to BROWN,ALLEN J III
 | 
|---|
| 748 |         ;"Results: returns BROWN,ALLEN J III
 | 
|---|
| 749 |         new NameArray
 | 
|---|
| 750 |         new MaxNode
 | 
|---|
| 751 |         new Suffix set Suffix=lname
 | 
|---|
| 752 |         new i,s
 | 
|---|
| 753 | 
 | 
|---|
| 754 |         set s=fname set fname=""
 | 
|---|
| 755 |         do CleaveToArray^TMGSTUTL(s," ",.NameArray,1)
 | 
|---|
| 756 |         set MaxNode=+$get(NameArray("MAXNODE"))
 | 
|---|
| 757 |         if MaxNode=0 goto FixDone
 | 
|---|
| 758 |         set lname=NameArray(MaxNode)
 | 
|---|
| 759 |         for i=1:1:MaxNode-1 do
 | 
|---|
| 760 |         . set fname=fname_NameArray(i)_" "
 | 
|---|
| 761 |         set fname=fname_Suffix
 | 
|---|
| 762 | 
 | 
|---|
| 763 |         new result
 | 
|---|
| 764 |         set result=lname_","_fname
 | 
|---|
| 765 | 
 | 
|---|
| 766 | FixDone
 | 
|---|
| 767 |         quit result
 | 
|---|
| 768 | 
 | 
|---|
| 769 | 
 | 
|---|
| 770 | 
 | 
|---|
| 771 | FixAllNames
 | 
|---|
| 772 |         ;"ENTRY POINT...
 | 
|---|
| 773 |         ;"Purge: To change all names that erroneously have a last name of "SR","JR","III","II"
 | 
|---|
| 774 |         new index
 | 
|---|
| 775 |         new PtName,index
 | 
|---|
| 776 | 
 | 
|---|
| 777 |         ;new Matches,TMGMsg
 | 
|---|
| 778 |         new FileNumber,IENS,Fields,Flags,MatchValue,ScreenCode
 | 
|---|
| 779 |         set FileNumber=2
 | 
|---|
| 780 |         set IENS=""
 | 
|---|
| 781 |         set Fields="@;.01;.02;.03;.09;22700"
 | 
|---|
| 782 |         set Flags=""
 | 
|---|
| 783 |         set ScreenCode=""
 | 
|---|
| 784 | 
 | 
|---|
| 785 |         for PtName="JR,","SR,","III,","II" do
 | 
|---|
| 786 |         . write "Looking for patients with a last name of: ",PtName,!
 | 
|---|
| 787 |         . set MatchValue=PtName
 | 
|---|
| 788 |         . ;"Call FIND^DIC
 | 
|---|
| 789 |         . ;"FILE,IENS,FIELDS,FLAGS,VALUE,NUMBER,INDEXES,SCREEN,IDENTIFIER,TARGET_ROOT,MSG_ROOTS
 | 
|---|
| 790 |         . do FIND^DIC(FileNumber,IENS,Fields,Flags,MatchValue,"*",,ScreenCode,,"Matches","TMGMsg")
 | 
|---|
| 791 |         . ;"======================================================
 | 
|---|
| 792 |         . if $data(Matches("DILIST",0))'=0 do
 | 
|---|
| 793 |         . . ;"write "Here are the names found:",!
 | 
|---|
| 794 |         . . ;"zwr Matches("DILIST",*)
 | 
|---|
| 795 |         . . new NumMatches set NumMatches=$piece(Matches("DILIST",0),"^",1)
 | 
|---|
| 796 |         . . write "Found "_NumMatches_" matches.",!
 | 
|---|
| 797 |         . . if NumMatches>1 for index=1:1:NumMatches do
 | 
|---|
| 798 |         . . . write "index=",index,!
 | 
|---|
| 799 |         . . . new IEN set IEN=Matches("DILIST",2,index)
 | 
|---|
| 800 |         . . . write "IEN=",IEN,!
 | 
|---|
| 801 |         . . . new OldName set OldName=$piece($get(^DPT(IEN,0)),"^",1)
 | 
|---|
| 802 |         . . . write "OldName=",OldName,!
 | 
|---|
| 803 |         . . . new NewName set NewName=$$FixFName(OldName)
 | 
|---|
| 804 |         . . . new IENS set IENS=IEN_","
 | 
|---|
| 805 |         . . . write "Changing "_OldName_" to "_NewName,!
 | 
|---|
| 806 |         . . . ;new TMGFDA
 | 
|---|
| 807 |         . . . set TMGFDA(FileNumber,IENS,.01)=NewName
 | 
|---|
| 808 |         . . . kill TMGMsg
 | 
|---|
| 809 |         . . . write "Calling FILE^DIE",!
 | 
|---|
| 810 |         . . . write "TMGFDA:",!
 | 
|---|
| 811 |         . . . zwr TMGFDA(*)
 | 
|---|
| 812 |         . . . do FILE^DIE("EK","TMGFDA","TMGMsg")
 | 
|---|
| 813 |         . . . write "Done Calling FILE^DIE",!
 | 
|---|
| 814 |         . . . if $data(TMGMsg) zwr TMGMsg(*)
 | 
|---|
| 815 | 
 | 
|---|
| 816 |         write !,!,!,"Done!",!
 | 
|---|
| 817 | 
 | 
|---|
| 818 |         quit
 | 
|---|
| 819 | 
 | 
|---|