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