| 1 | TMGNDFUT ;TMG/kst/FDA Import -- Fix OQV Problems;11/20/07
 | 
|---|
| 2 |          ;;1.0;TMG-LIB;**1**;11/20/07
 | 
|---|
| 3 |  
 | 
|---|
| 4 |  ;" FDA - NATIONAL DRUG FILES COMPILING FUNCTIONS
 | 
|---|
| 5 |  ;"      Utility functions
 | 
|---|
| 6 |  
 | 
|---|
| 7 |  ;"Kevin Toppenberg MD
 | 
|---|
| 8 |  ;"GNU General Public License (GPL) applies
 | 
|---|
| 9 |  ;"10-15-2007
 | 
|---|
| 10 |  
 | 
|---|
| 11 |  ;"=======================================================================
 | 
|---|
| 12 |  ;" API -- Public Functions.
 | 
|---|
| 13 |  ;"=======================================================================
 | 
|---|
| 14 |  
 | 
|---|
| 15 |  ;"Edit50(IEN50) -- launch a screenman form that is designed to edit file 50 records
 | 
|---|
| 16 |  ;"Index101d44(RxSet,pIndex) -- index pointers from 101.44 --> 101.43
 | 
|---|
| 17 |  ;"GetOI(IEN50d7,Array) -- return linked IEN in the ORDERABLE ITEM file (101.43) from IEN50d7
 | 
|---|
| 18 |  ;"GetPOI(IEN101d43,POI) -- return linked IEN in PHARMACY ORDERABLE ITEM (POI) file (50.7)
 | 
|---|
| 19 |  ;"$$GetOQVIENS(IEN101d43,RxSet,Array) -- get IEN ORDER QUICK VIEW (101.44) for pointer to 101.43
 | 
|---|
| 20 |  ;"GetOIInfo(IEN101d43,Array) -- Get info about ORDERABLE ITEM (101.43) record
 | 
|---|
| 21 |  ;"ChkFixOI(Array) -- check and fix pointers into and out of OI record
 | 
|---|
| 22 |  ;"GetDRUGs(IEN50d7,IEN50Array,ActiveOnly) -- For a given IEN in PHARMACY ORDERABLE ITEM, return linked #50 IEN
 | 
|---|
| 23 |  ;"GetpDRUGs(IEN50d7,IEN50Array,ActiveOnly) -- For a given IEN in POI, return linked IEN to DRUG file (50)
 | 
|---|
| 24 |  ;"GetfdaIEN(IEN50) --  return the IEN in 22706.9 that points to IEN50
 | 
|---|
| 25 |  ;"GetFDA(IEN50,FDA) -- For a given IEN in DRUG file, return linked IEN in TMG FDA IMPORT COMPILED file (22706.9)
 | 
|---|
| 26 |  ;"Unlock50: Unlock fields needed to add data to 50
 | 
|---|
| 27 |  ;"Lock50: Return locks removed from Unlock50 in file 50
 | 
|---|
| 28 |  ;"GetpTMG(IEN50d7,TMGArray,ActiveOnly) IENs in 22706.9 pointing to POI (50.7) record
 | 
|---|
| 29 |  ;"Getp1TMG(IEN101d43,TMGArray,ActiveOnly) -- IENS in 22706.9 pointing to OI (101.43) record
 | 
|---|
| 30 |  ;"GetpPOI(IEN50d7,Array,ActiveOnly) -- return all IENs pointing to POI from 22706.9, 50, or 101.43
 | 
|---|
| 31 |  ;"GetpOI(IEN101d43,Array,ActiveOnly) --return all IENs pointing to OI from 22706.9, 50.7 101.44
 | 
|---|
| 32 |  ;"KillPOI(IEN50d7) -- remove a POI, along with ptrs from 50, 22706.9, 101.43
 | 
|---|
| 33 |  ;"KillOI(IEN101d43) -- remove an OI, along with ptrs to it from files 50.7, 22706.9, 101.44
 | 
|---|
| 34 |  ;"RedirOI(oldIEN,newIEN) -- redirect pointers in ORDERABLE ITEM file from oldIEN to newIEN
 | 
|---|
| 35 |  ;"FindPOI(DrugNAF) -- return IEN in PHARMACY ORDERABLE ITEM (50.7) matching drug name
 | 
|---|
| 36 |  ;"FindOI(DrugNAF) -- return IEN in ORDERABLE ITEM (101.43) matching drug name
 | 
|---|
| 37 |  ;"GetOQVSet(quiet) -- get the active RxSet in OQV file
 | 
|---|
| 38 |  ;"Kill50(IEN50,IEN22706d9,mode,quiet) --delete entry in file 50, and links to it from 22706.9
 | 
|---|
| 39 |  ;"$$OIInactive(IEN101d43) -- Return if record has a past-due inactive date
 | 
|---|
| 40 |  ;"$$IsImport(IEN50d7) -- determine if the POI record is one linked to a FDA import
 | 
|---|
| 41 |  ;"KillOQV(IENS) -- kill/inactivate entry in ORDER QUICK VIEW (101.44)
 | 
|---|
| 42 |  
 | 
|---|
| 43 |  ;"=======================================================================
 | 
|---|
| 44 |  ;" Private Functions.
 | 
|---|
| 45 |  ;"=======================================================================
 | 
|---|
| 46 |  
 | 
|---|
| 47 |  ;"=======================================================================
 | 
|---|
| 48 |  
 | 
|---|
| 49 |  
 | 
|---|
| 50 | Edit50(IEN50)
 | 
|---|
| 51 |         ;"Purpose: to launch a screenman form that is designed to edit file 50 records
 | 
|---|
| 52 |  
 | 
|---|
| 53 |  
 | 
|---|
| 54 |         new PSSZ set PSSZ=1 ;"allows editing of .01 field of file 50
 | 
|---|
| 55 |         if +IEN50>0 do LaunchScreenman^TMGMISC(50,103,IEN50,1) ;"launch screenman form
 | 
|---|
| 56 |         quit
 | 
|---|
| 57 |  
 | 
|---|
| 58 |  
 | 
|---|
| 59 |  
 | 
|---|
| 60 | Index101d44(RxSet,pIndex)
 | 
|---|
| 61 |         ;"Purpose: index pointers from 101.44 --> 101.43
 | 
|---|
| 62 |         ;"Input:  RxSet -the IEN in 101.44 containing ORWDSET O RX
 | 
|---|
| 63 |         ;"        pIndex: PASS BY NAME. An OUT PARAMETER.  Format:
 | 
|---|
| 64 |         ;"               @pIndex@(IEN101.43,IEN101.44)=""
 | 
|---|
| 65 |  
 | 
|---|
| 66 |         new Itr,subIEN
 | 
|---|
| 67 |         new abort set abort=0
 | 
|---|
| 68 |         write "Gathering list of links between ORDER QUICK VIEW --> ORDERABLE ITEM...",!
 | 
|---|
| 69 |         set subIEN=$$ItrAInit^TMGITR("^ORD(101.44,"_RxSet_",20)",.Itr)
 | 
|---|
| 70 |         do PrepProgress^TMGITR(.Itr,20,1,"subIEN")
 | 
|---|
| 71 |         if subIEN'="" for  do  quit:($$ItrANext^TMGITR(.Itr,.subIEN)="")!abort
 | 
|---|
| 72 |         . if $$UserAborted^TMGUSRIF set abort=1 quit
 | 
|---|
| 73 |         . new IEN101d43
 | 
|---|
| 74 |         . set IEN101d43=+$piece($get(^ORD(101.44,RxSet,20,subIEN,0)),"^",1)
 | 
|---|
| 75 |         . if IEN101d43=0 quit
 | 
|---|
| 76 |         . set @pIndex@(IEN101d43,subIEN)=1
 | 
|---|
| 77 |         do ProgressDone^TMGITR(.Itr)
 | 
|---|
| 78 |  
 | 
|---|
| 79 |         quit
 | 
|---|
| 80 |  
 | 
|---|
| 81 |  
 | 
|---|
| 82 |  
 | 
|---|
| 83 | GetOI(IEN50d7,Array)
 | 
|---|
| 84 |         ;"Purpose: for a given PHARAMCY ORDERABLE ITEM (50.7), return matching IEN
 | 
|---|
| 85 |         ;"         in the ORDERABLE ITEM file (101.43)
 | 
|---|
| 86 |         ;"Input:  IEN50d7 -- the IEN in 50.7
 | 
|---|
| 87 |         ;"       Array -- OPTIONAL.  PASS BY REFERNCE.  An OUT PARAMETER.
 | 
|---|
| 88 |         ;"          Will be filled with ALL pointers to 50d7.  Format:
 | 
|---|
| 89 |         ;"          Array(IEN)=""
 | 
|---|
| 90 |         ;"Results: the IEN in 101.43, or 0 if not found
 | 
|---|
| 91 |         ;"Note: If, for some reason, more than one record in 101.43 points to
 | 
|---|
| 92 |         ;"      the specified IEN50d7, then only the first one in the list will be
 | 
|---|
| 93 |         ;"      returned, but Array will return all
 | 
|---|
| 94 |  
 | 
|---|
| 95 |         new result set result=0
 | 
|---|
| 96 |         new tempS set tempS=IEN50d7_";99PSP"
 | 
|---|
| 97 |  
 | 
|---|
| 98 |         new IEN101d43 set IEN101d43=""
 | 
|---|
| 99 |         for  set IEN101d43=$order(^ORD(101.43,"ID",tempS,IEN101d43)) quit:(IEN101d43="")  do
 | 
|---|
| 100 |         . if +IEN101d43=0 quit
 | 
|---|
| 101 |         . if result=0 set result=IEN101d43
 | 
|---|
| 102 |         . set Array(IEN101d43)=""
 | 
|---|
| 103 |  
 | 
|---|
| 104 |         quit result
 | 
|---|
| 105 |  
 | 
|---|
| 106 |  
 | 
|---|
| 107 | GetPOI(IEN101d43)   ;" !! Note: this is a different function from GetpOI !!
 | 
|---|
| 108 |         ;"Purpose: for a given entry in ORDERABLE ITEM (101.43) file, return matching
 | 
|---|
| 109 |         ;"         IEN in PHARMACY ORDERABLE ITEM (POI) file (50.7)
 | 
|---|
| 110 |         ;"Input: IEN101d43 -- IEN in 101.43
 | 
|---|
| 111 |         ;"Output: bad pointers may be fixed.
 | 
|---|
| 112 |         ;"Result: returns IEN in 50.7, or -1 if NON-PHARMACY entry found, or 0 if problem
 | 
|---|
| 113 |  
 | 
|---|
| 114 |         new Array,result
 | 
|---|
| 115 |  
 | 
|---|
| 116 |         do GetOIInfo(IEN101d43,.Array)
 | 
|---|
| 117 |  
 | 
|---|
| 118 |         new tPOI,gPOI
 | 
|---|
| 119 |         set tPOI=+$get(Array("IEN 50.7 from 22706.9","TRADE"))
 | 
|---|
| 120 |         set gPOI=+$get(Array("IEN 50.7 from 22706.9","GENERIC"))
 | 
|---|
| 121 |         if (tPOI'=0)&(gPOI'=0)&(tPOI'=gPOI) do
 | 
|---|
| 122 |         . do ChkFixOI(.Array)
 | 
|---|
| 123 |  
 | 
|---|
| 124 |         set result=$get(Array("IEN 50.7 from 22706.9","GENERIC"))
 | 
|---|
| 125 |         if result="" set result=$get(Array("IEN 50.7 from 22706.9","TRADE"))
 | 
|---|
| 126 |         if result="" set result=$get(Array("IEN 50.7 from 101.43"))
 | 
|---|
| 127 |  
 | 
|---|
| 128 |         quit +result
 | 
|---|
| 129 |  
 | 
|---|
| 130 |  
 | 
|---|
| 131 | GetOIInfo(IEN101d43,Array)
 | 
|---|
| 132 |         ;"Purpose: for a given entry in ORDERABLE ITEM (101.43) file, return matching
 | 
|---|
| 133 |         ;"         IEN in PHARMACY ORDERABLE ITEM (POI) file (50.7)
 | 
|---|
| 134 |         ;"Input: IEN101d43 -- IEN in 101.43
 | 
|---|
| 135 |         ;"       Array -- OPTIONAL.  PASS BY REFERENCE.  An OUT PARAMETER.  Output format:
 | 
|---|
| 136 |         ;"           Array("IEN 101.43")=IEN
 | 
|---|
| 137 |         ;"           Array("IEN 101.43","NAME")=Name
 | 
|---|
| 138 |         ;"           Array("IEN 101.43","INACTIVE")=0 (or 1 if is inactivated)
 | 
|---|
| 139 |         ;"           Array("IEN 101.43","PACKAGE") = package ('99PSP' for pharmacy)
 | 
|---|
| 140 |         ;"           Array("IEN 101.44",IENS)=""
 | 
|---|
| 141 |         ;"           Array("IEN 50.7 from 22706.9","GENERIC")=IEN50d7
 | 
|---|
| 142 |         ;"           Array("IEN 50.7 from 22706.9","TRADE")=IEN50d7
 | 
|---|
| 143 |         ;"           Array("IEN 50.7 from 22706.9","GENERIC",IEN22706d9)=IEN50d7
 | 
|---|
| 144 |         ;"           Array("IEN 50.7 from 22706.9","TRADE",IEN22706d9)=IEN50d7
 | 
|---|
| 145 |         ;"           Array("IEN 50.7 from 101.43")=IEN50d7
 | 
|---|
| 146 |         ;"           Array("IEN 50.7 from 101.43","NAME")=Name of 50.7, or "<LINK IS NOT TO A DRUG>" if problem
 | 
|---|
| 147 |         ;"           Array("IEN 22706.9","GENERIC",IEN22706d9)=""
 | 
|---|
| 148 |         ;"           Array("IEN 22706.9","TRADE",IEN22706d9)=""
 | 
|---|
| 149 |         ;"Output: See Array above.
 | 
|---|
| 150 |         ;"Result: none
 | 
|---|
| 151 |  
 | 
|---|
| 152 |         new POIName set POIName=""
 | 
|---|
| 153 |         new IEN22706d9
 | 
|---|
| 154 |  
 | 
|---|
| 155 |         set Array("IEN 101.43")=IEN101d43
 | 
|---|
| 156 |         set Array("IEN 101.43","NAME")=$piece($get(^ORD(101.43,IEN101d43,0)),"^",1)
 | 
|---|
| 157 |         set Array("IEN 101.43","INACTIVE")=$$OIInactive(IEN101d43)
 | 
|---|
| 158 |  
 | 
|---|
| 159 |         set IEN22706d9=""
 | 
|---|
| 160 |         for  set IEN22706d9=+$order(^TMG(22706.9,"OIG",IEN101d43,IEN22706d9)) quit:(+IEN22706d9'>0)  do
 | 
|---|
| 161 |         . if +$piece($get(^TMG(22706.9,IEN22706d9,1)),"^",4)=1 quit  ;"1=SKIP
 | 
|---|
| 162 |         . new tempPtr set tempPtr=+$piece($get(^TMG(22706.9,IEN22706d9,8)),"^",4) ;" 8;4 =POI GENERIC LINK
 | 
|---|
| 163 |         . set Array("IEN 50.7 from 22706.9","GENERIC",IEN22706d9)=tempPtr
 | 
|---|
| 164 |         . set Array("IEN 22706.9","GENERIC",IEN22706d9)=""
 | 
|---|
| 165 |         . set Array("IEN 50.7 from 22706.9","GENERIC")=tempPtr
 | 
|---|
| 166 |  
 | 
|---|
| 167 |         set IEN22706d9=""
 | 
|---|
| 168 |         for  set IEN22706d9=+$order(^TMG(22706.9,"OIT",IEN101d43,IEN22706d9))  quit:(+IEN22706d9'>0)  do
 | 
|---|
| 169 |         . if +$piece($get(^TMG(22706.9,IEN22706d9,1)),"^",4)=1 quit  ;"1=SKIP
 | 
|---|
| 170 |         . new tempPtr set tempPtr=+$piece($get(^TMG(22706.9,IEN22706d9,8)),"^",3)  ;" 8;3 = POI TRADENAME LINK
 | 
|---|
| 171 |         . set Array("IEN 50.7 from 22706.9","TRADE",IEN22706d9)=tempPtr
 | 
|---|
| 172 |         . set Array("IEN 22706.9","TRADE",IEN22706d9)=""
 | 
|---|
| 173 |         . set Array("IEN 50.7 from 22706.9","TRADE")=tempPtr
 | 
|---|
| 174 |  
 | 
|---|
| 175 |         ;"Get direct pointer to 50.7
 | 
|---|
| 176 |         new ID set ID=$piece($get(^ORD(101.43,IEN101d43,0)),"^",2)
 | 
|---|
| 177 |         new pkg set pkg=$piece(ID,";",2)
 | 
|---|
| 178 |         set Array("IEN 101.43","PACKAGE")=pkg
 | 
|---|
| 179 |  
 | 
|---|
| 180 |         new IEN50d7
 | 
|---|
| 181 |         if pkg="99PSP" do
 | 
|---|
| 182 |         . set IEN50d7=+$piece(ID,";",1)
 | 
|---|
| 183 |         . set POIName=$piece($get(^PS(50.7,IEN50d7,0)),"^",1)
 | 
|---|
| 184 |         else  do  goto GPOIDone  ;"not a pharmacy item.
 | 
|---|
| 185 |         . set IEN50d7=0
 | 
|---|
| 186 |         . set POIName="<LINK IS NOT TO A DRUG>"
 | 
|---|
| 187 |         set Array("IEN 50.7 from 101.43")=IEN50d7
 | 
|---|
| 188 |         set Array("IEN 50.7 from 101.43","NAME")=POIName
 | 
|---|
| 189 |  
 | 
|---|
| 190 |         new IENS set IENS=$$GetOQVIENS(IEN101d43)
 | 
|---|
| 191 |         set Array("IEN 101.44",IENS)=""
 | 
|---|
| 192 |  
 | 
|---|
| 193 | GPOIDone
 | 
|---|
| 194 |         quit
 | 
|---|
| 195 |  
 | 
|---|
| 196 |  
 | 
|---|
| 197 | ChkFixOI(Array)  ;"NOTE: This function is not finished/debugged
 | 
|---|
| 198 |         ;"Purpose: to check and fix pointers into and out of OI record
 | 
|---|
| 199 |         ;"Input -- Array -- PASS BY REFERENCE.  An Array as created by GetOIInfo
 | 
|---|
| 200 |         ;"           Array("IEN 101.43")=IEN
 | 
|---|
| 201 |         ;"           Array("IEN 101.43","NAME")=Name
 | 
|---|
| 202 |         ;"           Array("IEN 101.43","INACTIVE")=0 (or 1 if is inactivated)
 | 
|---|
| 203 |         ;"           Array("IEN 101.43","PACKAGE") = package ('99PSP' for pharmacy)
 | 
|---|
| 204 |         ;"           Array("IEN 101.44",IENS)=""
 | 
|---|
| 205 |         ;"           Array("IEN 50.7 from 22706.9","GENERIC")=IEN50d7
 | 
|---|
| 206 |         ;"           Array("IEN 50.7 from 22706.9","TRADE")=IEN50d7
 | 
|---|
| 207 |         ;"           Array("IEN 50.7 from 22706.9","GENERIC",IEN22706d9)=IEN50d7
 | 
|---|
| 208 |         ;"           Array("IEN 50.7 from 22706.9","TRADE",IEN22706d9)=IEN50d7
 | 
|---|
| 209 |         ;"           Array("IEN 50.7 from 101.43")=IEN50d7
 | 
|---|
| 210 |         ;"           Array("IEN 50.7 from 101.43","NAME")=Name of 50.7, or "<LINK IS NOT TO A DRUG>" if problem
 | 
|---|
| 211 |         ;"           Array("IEN 22706.9","GENERIC",IEN22706d9)=""
 | 
|---|
| 212 |         ;"           Array("IEN 22706.9","TRADE",IEN22706d9)=""
 | 
|---|
| 213 |         ;"Result: none
 | 
|---|
| 214 |  
 | 
|---|
| 215 |         if $get(Array("IEN 101.43","INACTIVE"))=1 goto COIFDone
 | 
|---|
| 216 |  
 | 
|---|
| 217 |         new IEN101d43 set IEN101d43=+$get(Array("IEN 101.43"))
 | 
|---|
| 218 |         new IEN50d7a set IEN50d7a=+$get(Array("IEN 50.7 from 101.43"))
 | 
|---|
| 219 |         if IEN50d7a=0 do KillOI(IENE101d43) goto COIFDone
 | 
|---|
| 220 |  
 | 
|---|
| 221 |         new POIName set POIName=$get(Array("IEN 50.7 from 101.43","NAME"))
 | 
|---|
| 222 |         new OIName set OIName=$get(Array("IEN 101.43","NAME"))
 | 
|---|
| 223 |  
 | 
|---|
| 224 |         new tPOI,gPOI
 | 
|---|
| 225 |         set tPOI=+$get(Array("IEN 50.7 from 22706.9","TRADE"))
 | 
|---|
| 226 |         set gPOI=+$get(Array("IEN 50.7 from 22706.9","GENERIC"))
 | 
|---|
| 227 |         ;"For a given OI, see if there are two different POI's pointing to it via 22706.9
 | 
|---|
| 228 |         ;"There should be just TRADE ptrs or GENERIC ptrs, but not both.
 | 
|---|
| 229 |         if (tPOI'=0)&(gPOI'=0)&(tPOI'=gPOI) do  goto COIFDone  ;"we have crossed chains.
 | 
|---|
| 230 |         . ;"We need to make a new POI.  But which chain gets new one?
 | 
|---|
| 231 |         . new gPOIName,tPOIName,OIName
 | 
|---|
| 232 |         . set gPOIName=$piece($get(^PS(50.7,gPOI,0)),"^",1)
 | 
|---|
| 233 |         . set tPOIName=$piece($get(^PS(50.7,tPOI,0)),"^",1)
 | 
|---|
| 234 |         . set OIName=$piece($get(^ORD(101.43,IEN101d43,0)),"^",1)
 | 
|---|
| 235 |         . if gPOIName'=OIName do  ;"make a new OI for generic chain
 | 
|---|
| 236 |         . . new newOI set newOI=$$NewOI^TMGNDF4C(gPOIName)
 | 
|---|
| 237 |         . . if newOI=0 quit ;"error
 | 
|---|
| 238 |         . . new result set result=$$StuffOI^TMGNDF4C(newOI,gPOIName,,gPOI)
 | 
|---|
| 239 |         . . new IEN22706d9 set IEN22706d9=""
 | 
|---|
| 240 |         . . for  set IEN22706d9=$order(Array("IEN 50.7 from 22706.9","GENERIC",IEN22706d9)) quit:(IEN22706d9="")  do
 | 
|---|
| 241 |         . . . new TMGFDA,TMGMSG
 | 
|---|
| 242 |         . . . set TMGFDA(22706.9,IEN22706d9_",",5.711)=newOI
 | 
|---|
| 243 |         . . . do FILE^DIE("","TMGFDA","TMGMSG")
 | 
|---|
| 244 |         . . . do ShowIfDIERR^TMGDEBUG(.TMGMSG)
 | 
|---|
| 245 |         . if tPOIName'=OIName do  ;"make a new OI for trade chain
 | 
|---|
| 246 |         . . new newOI set newOI=$$NewOI^TMGNDF4C(tPOIName)
 | 
|---|
| 247 |         . . if newOI=0 quit ;"error
 | 
|---|
| 248 |         . . new result set result=$$StuffOI^TMGNDF4C(newOI,tPOIName,,tPOI)
 | 
|---|
| 249 |         . . new IEN22706d9 set IEN22706d9=""
 | 
|---|
| 250 |         . . for  set IEN22706d9=$order(Array("IEN 50.7 from 22706.9","TRADE",IEN22706d9)) quit:(IEN22706d9="")  do
 | 
|---|
| 251 |         . . . new TMGFDA,TMGMSG
 | 
|---|
| 252 |         . . . set TMGFDA(22706.9,IEN22706d9_",",5.611)=newOI
 | 
|---|
| 253 |         . . . do FILE^DIE("","TMGFDA","TMGMSG")
 | 
|---|
| 254 |         . . . do ShowIfDIERR^TMGDEBUG(.TMGMSG)
 | 
|---|
| 255 |  
 | 
|---|
| 256 |         if ($data(Array("IEN 50.7 from 22706.9","GENERIC"))=0)&($data(Array("IEN 50.7 from 22706.9","TRADE"))=0) do
 | 
|---|
| 257 |         . write "A linked record in 22706.9 NOT found pointing to 101.43 #",IEN101d43," (",OIName,")",!
 | 
|---|
| 258 |         else  do
 | 
|---|
| 259 |         . new TMGIEN set TMGIEN=""
 | 
|---|
| 260 |         . for  set TMGIEN=$order(Array("IEN 50.7 from 22706.9","GENERIC",TMGIEN)) quit:(TMGIEN="")  do
 | 
|---|
| 261 |         . . new IEN50d7 set IEN50d7=+$get(Array("IEN 50.7 from 22706.9","GENERIC",TMGIEN))
 | 
|---|
| 262 |         . . write "Linked record in 22706.9 #",TMGIEN," (GENERIC pointer) points to 50.7 #",IEN50d7,!
 | 
|---|
| 263 |         . set TMGIEN=""
 | 
|---|
| 264 |         . for  set TMGIEN=$order(Array("IEN 50.7 from 22706.9","TRADE",TMGIEN)) quit:(TMGIEN="")  do
 | 
|---|
| 265 |         . . new IEN50d7 set IEN50d7=+$get(Array("IEN 50.7 from 22706.9","TRADE",TMGIEN))
 | 
|---|
| 266 |         . . write "Linked record in 22706.9 #",TMGIEN," (TRADE pointer) points to 50.7 #",IEN50d7,!
 | 
|---|
| 267 |  
 | 
|---|
| 268 |         write "  101.43 #",IEN101d43," (",OIName,")",!
 | 
|---|
| 269 |         write "    points directly to 50.7 #",IEN50d7a," (",POIName,")",!
 | 
|---|
| 270 |         if (IEN50d7a'=0),$$IsImport^TMGNDF4B(IEN50d7a) do
 | 
|---|
| 271 |         . write "    and that IS an active import record.",!
 | 
|---|
| 272 |         . new IEN50Array
 | 
|---|
| 273 |         . do GetDRUGs^TMGNDF4F(IEN50d7a,.IEN50Array,1)
 | 
|---|
| 274 |         . write "    Pointed to by these active records:",!
 | 
|---|
| 275 |         . new name set name=""
 | 
|---|
| 276 |         . for  set name=$order(IEN50Array(name)) quit:(name="")  do
 | 
|---|
| 277 |         . . new IEN50 set IEN50=""
 | 
|---|
| 278 |         . . for  set IEN50=$order(IEN50Array(name,IEN50)) quit:(IEN50="")  do
 | 
|---|
| 279 |         . . . write "    #",IEN50,"  ",name,!
 | 
|---|
| 280 |         else  do
 | 
|---|
| 281 |         . write "    and that IS NOT active import record.",!
 | 
|---|
| 282 |         . do KillOI(IEN101d43)
 | 
|---|
| 283 |         . write "    .. Record in 101.43 deleted.",!
 | 
|---|
| 284 |  
 | 
|---|
| 285 | COIFDone
 | 
|---|
| 286 |         quit
 | 
|---|
| 287 |  
 | 
|---|
| 288 |  
 | 
|---|
| 289 |  
 | 
|---|
| 290 | GetDRUGs(IEN50d7,IEN50Array,ActiveOnly)
 | 
|---|
| 291 |         ;"Purpose: For a given IEN in PHARMACY ORDERABLE ITEM, return linked IEN to
 | 
|---|
| 292 |         ;"          DRUG file (50)
 | 
|---|
| 293 |         ;"Input: IEN50d7 -- IEN in file 50.7
 | 
|---|
| 294 |         ;"       IEN50Array -- PASS BY REFERENCE,  an OUT PARAMETER.  Format:
 | 
|---|
| 295 |         ;"              IEN50Array(Name,IEN50)=""  Name is from .01 field
 | 
|---|
| 296 |         ;"              IEN50Array(Name,IEN50)=""  Name is from .01 field
 | 
|---|
| 297 |         ;"       ActiveOnly -- OPTIONAL, Default=1
 | 
|---|
| 298 |         ;"result: none.
 | 
|---|
| 299 |  
 | 
|---|
| 300 |         if +$get(IEN50d7)=0 goto GDsDone
 | 
|---|
| 301 |         new tempA
 | 
|---|
| 302 |         merge tempA=^TMG(22706.9,"POIG",IEN50d7)
 | 
|---|
| 303 |         merge tempA=^TMG(22706.9,"POIT",IEN50d7)
 | 
|---|
| 304 |         new IEN22706d9 set IEN22706d9=""
 | 
|---|
| 305 |         for  set IEN22706d9=$order(tempA(IEN22706d9)) quit:(IEN22706d9="")  do
 | 
|---|
| 306 |         . if $piece($get(^TMG(22706.9,IEN22706d9,1)),"^",4)=1 do  quit; 1= SKIP
 | 
|---|
| 307 |         . . write "?? PHARMACY ORDERABLE ITEM #",IEN50d7," points to skipped record!",!
 | 
|---|
| 308 |         . new tIEN50,gIEN50
 | 
|---|
| 309 |         . set tIEN50=$piece($get(^TMG(22706.9,IEN22706d9,7)),"^",1)
 | 
|---|
| 310 |         . if tIEN50>0 do
 | 
|---|
| 311 |         . . new name set name=$piece($get(^PSDRUG(tIEN50,0)),"^",1)
 | 
|---|
| 312 |         . . set IEN50Array(name,tIEN50)=""
 | 
|---|
| 313 |         . set gIEN50=$piece($get(^TMG(22706.9,IEN22706d9,7)),"^",2)
 | 
|---|
| 314 |         . if gIEN50>0 do
 | 
|---|
| 315 |         . . new name set name=$piece($get(^PSDRUG(gIEN50,0)),"^",1)
 | 
|---|
| 316 |         . . set IEN50Array(name,gIEN50)=""
 | 
|---|
| 317 |  
 | 
|---|
| 318 |         ;"set ActiveOnly=1
 | 
|---|
| 319 |         ;"kill IEN50Array
 | 
|---|
| 320 |         ;"new temp merge temp=^PSDRUG("ASP",IEN50d7)
 | 
|---|
| 321 |         ;"new IEN set IEN=""
 | 
|---|
| 322 |         ;"for  set IEN=$order(temp(IEN)) quit:(IEN="")  do
 | 
|---|
| 323 |         ;". new Active set Active=($piece($get(^PSDRUG(IEN,"I")),"^",1)="")
 | 
|---|
| 324 |         ;". if ActiveOnly,(Active=0) quit
 | 
|---|
| 325 |         ;". new name set name=$$GET1^DIQ(50,IEN_",",.01) quit:(name="")
 | 
|---|
| 326 |         ;". ;"set name="(#"_IEN_") "_name
 | 
|---|
| 327 |         ;". new route set route=$$GET1^DIQ(50,IEN_",",62.02)
 | 
|---|
| 328 |         ;". if route'="" set name=name_" "_route
 | 
|---|
| 329 |         ;". set IEN50Array(name,IEN)=""
 | 
|---|
| 330 | GDsDone
 | 
|---|
| 331 |         quit
 | 
|---|
| 332 |  
 | 
|---|
| 333 |  
 | 
|---|
| 334 | GetpDRUGs(IEN50d7,IEN50Array,ActiveOnly)
 | 
|---|
| 335 |         ;"Purpose: For a given IEN in PHARMACY ORDERABLE ITEM, return linked IEN to
 | 
|---|
| 336 |         ;"          DRUG file (50)
 | 
|---|
| 337 |         ;"Input: IEN50d7 -- IEN in file 50.7
 | 
|---|
| 338 |         ;"       IEN50Array -- PASS BY REFERENCE,  an OUT PARAMETER.  Format:
 | 
|---|
| 339 |         ;"              IEN50Array(IEN50)=""
 | 
|---|
| 340 |         ;"              IEN50Array(IEN50)=""
 | 
|---|
| 341 |         ;"       ActiveOnly -- OPTIONAL, Default=1
 | 
|---|
| 342 |         ;"result: none.
 | 
|---|
| 343 |  
 | 
|---|
| 344 |         set ActiveOnly=$get(ActiveOnly,1)
 | 
|---|
| 345 |         new tempA
 | 
|---|
| 346 |         merge tempA=^TMG(22706.9,"POIG",IEN50d7)
 | 
|---|
| 347 |         merge tempA=^TMG(22706.9,"POIT",IEN50d7)
 | 
|---|
| 348 |         new IEN22706d9 set IEN22706d9=""
 | 
|---|
| 349 |         for  set IEN22706d9=$order(tempA(IEN22706d9)) quit:(IEN22706d9="")  do
 | 
|---|
| 350 |         . if $piece($get(^TMG(22706.9,IEN22706d9,1)),"^",4)=1 do  quit; 1= SKIP
 | 
|---|
| 351 |         . . if ActiveOnly=1 quit
 | 
|---|
| 352 |         . . write " Pointer to PHARMACY ORDERABLE ITEM #",IEN50d7," found in skipped 22706.9 #",IEN22706d9," record!",!
 | 
|---|
| 353 |         . new tIEN50,gIEN50
 | 
|---|
| 354 |         . set tIEN50=+$piece($get(^TMG(22706.9,IEN22706d9,7)),"^",1)
 | 
|---|
| 355 |         . if tIEN50>0 set IEN50Array(tIEN50)=""
 | 
|---|
| 356 |         . set gIEN50=+$piece($get(^TMG(22706.9,IEN22706d9,7)),"^",2)
 | 
|---|
| 357 |         . if gIEN50>0 set IEN50Array(gIEN50)=""
 | 
|---|
| 358 |  
 | 
|---|
| 359 |         ;"set ActiveOnly=1
 | 
|---|
| 360 |         ;"kill IEN50Array
 | 
|---|
| 361 |         ;"new temp merge temp=^PSDRUG("ASP",IEN50d7)
 | 
|---|
| 362 |         ;"new IEN set IEN=""
 | 
|---|
| 363 |         ;"for  set IEN=$order(temp(IEN)) quit:(IEN="")  do
 | 
|---|
| 364 |         ;". new Active set Active=($piece($get(^PSDRUG(IEN,"I")),"^",1)="")
 | 
|---|
| 365 |         ;". if ActiveOnly,(Active=0) quit
 | 
|---|
| 366 |         ;". set IEN50Array(IEN)=""
 | 
|---|
| 367 |  
 | 
|---|
| 368 |         quit
 | 
|---|
| 369 |  
 | 
|---|
| 370 |  
 | 
|---|
| 371 | GetfdaIEN(IEN50)
 | 
|---|
| 372 |         ;"Purpose: to return the pointer to the record in 22706.9 that points to IEN50
 | 
|---|
| 373 |         ;"Input: IEN50 -- IEN in 50
 | 
|---|
| 374 |         ;"Results: returns a pointer, or 0 if not found
 | 
|---|
| 375 |  
 | 
|---|
| 376 |         new result
 | 
|---|
| 377 |         set result=+$order(^TMG(22706.9,"DRUG",IEN50,""))
 | 
|---|
| 378 |         if result=0 set result=+$order(^TMG(22706.9,"DRUGT",IEN50,""))
 | 
|---|
| 379 |         quit result
 | 
|---|
| 380 |  
 | 
|---|
| 381 |  
 | 
|---|
| 382 | GetFDA(IEN50,FDA)
 | 
|---|
| 383 |         ;"Purpose: For a given IEN in DRUG file, return linked IEN in
 | 
|---|
| 384 |         ;"          TMG FDA IMPORT COMPILED file (22706.9)
 | 
|---|
| 385 |         ;"Input: IEN50 -- IEN in file 50 (DRUG)
 | 
|---|
| 386 |         ;"       FDA -- PASS BY REFERENCE,  an OUT PARAMETER.  Format:
 | 
|---|
| 387 |         ;"              FDA=IEN in 22706.9
 | 
|---|
| 388 |         ;"              FDA("NAME")=Name
 | 
|---|
| 389 |         ;"result: none.
 | 
|---|
| 390 |  
 | 
|---|
| 391 |         set FDA=$$GetfdaIEN(IEN50)
 | 
|---|
| 392 |         if FDA'=0 set FDA("NAME")=$$GET1^DIQ(22706.9,FDA_",",.04)
 | 
|---|
| 393 |         quit
 | 
|---|
| 394 |  
 | 
|---|
| 395 |  
 | 
|---|
| 396 | GetDRUGIEN(IEN50d7) ;" -- DEPRECIATED.  Use GetDRUGs^TMGNDFUT or GetpDRUGs^TMGNDFUT
 | 
|---|
| 397 |         ;"Purpose: get linked record in DRUG file (50) for given record in 50.7
 | 
|---|
| 398 |         ;"Input:IEN50d7 -- IEN in 50.7
 | 
|---|
| 399 |         ;"Results: IEN in 50, or 0 if not found
 | 
|---|
| 400 |         ;"NOTE: there may well be MULTIPLE records in 50 pointing to record in 50.7
 | 
|---|
| 401 |         ;"      This function will only return the FIRST.
 | 
|---|
| 402 |         ;"      GetDRUGs^TMGNDF4F(IEN50d7,IEN50Array,ActiveOnly) -- will return ALL entries.
 | 
|---|
| 403 |  
 | 
|---|
| 404 |         new result
 | 
|---|
| 405 |         set result=$order(^PSDRUG("ASP",IEN50d7,""))
 | 
|---|
| 406 |         quit result
 | 
|---|
| 407 |  
 | 
|---|
| 408 |  
 | 
|---|
| 409 | GetpTMG(IEN50d7,TMGArray,ActiveOnly)
 | 
|---|
| 410 |         ;"Purpose: For a given IEN in PHARMACY ORDERABLE ITEM, return all IENs
 | 
|---|
| 411 |         ;"          in 22706.9 pointing to this
 | 
|---|
| 412 |         ;"Input: IEN50d7 -- IEN in file 50.7
 | 
|---|
| 413 |         ;"       IENTMGArray -- PASS BY REFERENCE,  an OUT PARAMETER.  Format:
 | 
|---|
| 414 |         ;"              TMGArray(IEN22706d9)=""
 | 
|---|
| 415 |         ;"              TMGArray(IEN22706d9)=""
 | 
|---|
| 416 |         ;"       ActiveOnly -- OPTIONAL, Default=1  Only non-skipped records considered
 | 
|---|
| 417 |         ;"result: none.
 | 
|---|
| 418 |  
 | 
|---|
| 419 |         merge TMGArray=^TMG(22706.9,"POIG",IEN50d7)
 | 
|---|
| 420 |         merge TMGArray=^TMG(22706.9,"POIT",IEN50d7)
 | 
|---|
| 421 |  
 | 
|---|
| 422 |         if $get(ActiveOnly)=1 do
 | 
|---|
| 423 |         . new IEN22706d9 set IEN22706d9=""
 | 
|---|
| 424 |         . for  set IEN22706d9=$order(TMGArray(IEN22706d9)) quit:(IEN22706d9="")  do
 | 
|---|
| 425 |         . . if $piece($get(^TMG(22706.9,IEN22706d9,1)),"^",4)'=1 quit  ;"1=skip
 | 
|---|
| 426 |         . . kill TMGArray(IEN22706d9)
 | 
|---|
| 427 |  
 | 
|---|
| 428 |         quit
 | 
|---|
| 429 |  
 | 
|---|
| 430 |  
 | 
|---|
| 431 | Getp1TMG(IEN101d43,TMGArray,ActiveOnly)
 | 
|---|
| 432 |         ;"Purpose: For a given IEN in ORDERABLE ITEM, return all IENs
 | 
|---|
| 433 |         ;"          in 22706.9 pointing to this
 | 
|---|
| 434 |         ;"Input: IEN101d43 -- IEN in file 101.43
 | 
|---|
| 435 |         ;"       IENTMGArray -- PASS BY REFERENCE,  an OUT PARAMETER.  Format:
 | 
|---|
| 436 |         ;"              TMGArray(IEN22706d9)=""
 | 
|---|
| 437 |         ;"              TMGArray(IEN22706d9)=""
 | 
|---|
| 438 |         ;"       ActiveOnly -- OPTIONAL, Default=1  Only non-skipped records considered
 | 
|---|
| 439 |         ;"result: none.
 | 
|---|
| 440 |  
 | 
|---|
| 441 |         merge TMGArray=^TMG(22706.9,"OIG",IEN101d43)
 | 
|---|
| 442 |         merge TMGArray=^TMG(22706.9,"OIT",IEN101d43)
 | 
|---|
| 443 |  
 | 
|---|
| 444 |         if $get(ActiveOnly)=1 do
 | 
|---|
| 445 |         . new IEN22706d9 set IEN22706d9=""
 | 
|---|
| 446 |         . for  set IEN22706d9=$order(TMGArray(IEN22706d9)) quit:(IEN22706d9="")  do
 | 
|---|
| 447 |         . . if $piece($get(^TMG(22706.9,IEN22706d9,1)),"^",4)'=1 quit  ;"1=skip
 | 
|---|
| 448 |         . . kill TMGArray(IEN22706d9)
 | 
|---|
| 449 |  
 | 
|---|
| 450 |         quit
 | 
|---|
| 451 |  
 | 
|---|
| 452 | Unlock50
 | 
|---|
| 453 |         ;"Purpose: Unlock fields needed to add data to 50
 | 
|---|
| 454 |  
 | 
|---|
| 455 |         kill ^DD(50,20,8.5)
 | 
|---|
| 456 |         kill ^DD(50,20,9)
 | 
|---|
| 457 |  
 | 
|---|
| 458 |         kill ^DD(50,21,8.5)
 | 
|---|
| 459 |         kill ^DD(50,21,9)
 | 
|---|
| 460 |  
 | 
|---|
| 461 |         kill ^DD(50,22,8.5)
 | 
|---|
| 462 |         kill ^DD(50,22,9)
 | 
|---|
| 463 |  
 | 
|---|
| 464 |         kill ^DD(50,25,8.5)
 | 
|---|
| 465 |         kill ^DD(50,25,9)
 | 
|---|
| 466 |  
 | 
|---|
| 467 |         kill ^DD(50,29,8.5)
 | 
|---|
| 468 |         kill ^DD(50,29,9)
 | 
|---|
| 469 |  
 | 
|---|
| 470 |         kill ^DD(50,902,8.5)
 | 
|---|
| 471 |         kill ^DD(50,902,9)
 | 
|---|
| 472 |  
 | 
|---|
| 473 |         new node,nodeA,nodeB,node2
 | 
|---|
| 474 |         set node=$get(^DD(50,901,0))
 | 
|---|
| 475 |         set nodeA=$piece(node,"^",1,4)
 | 
|---|
| 476 |         set nodeB="K:+X'=X!(X>99999999)!(X<0)!(X?.E1"".""5N.N) X"
 | 
|---|
| 477 |         set node2=nodeA_"^"_nodeB
 | 
|---|
| 478 |         set ^DD(50,901,0)=node2
 | 
|---|
| 479 |  
 | 
|---|
| 480 |         quit
 | 
|---|
| 481 |  
 | 
|---|
| 482 | Lock50
 | 
|---|
| 483 |         ;"Purpose: Return locks removed from Unlock50 in file 50
 | 
|---|
| 484 |  
 | 
|---|
| 485 |         set ^DD(50,20,8.5)="^"
 | 
|---|
| 486 |         set ^DD(50,20,9)="^"
 | 
|---|
| 487 |  
 | 
|---|
| 488 |         set ^DD(50,21,8.5)="^"
 | 
|---|
| 489 |         set ^DD(50,21,9)="^"
 | 
|---|
| 490 |  
 | 
|---|
| 491 |         set ^DD(50,22,8.5)="^"
 | 
|---|
| 492 |         set ^DD(50,22,9)="^"
 | 
|---|
| 493 |  
 | 
|---|
| 494 |         set ^DD(50,25,8.5)="^"
 | 
|---|
| 495 |         set ^DD(50,25,9)="^"
 | 
|---|
| 496 |  
 | 
|---|
| 497 |         set ^DD(50,29,8.5)="^"
 | 
|---|
| 498 |         set ^DD(50,29,9)="^"
 | 
|---|
| 499 |  
 | 
|---|
| 500 |         set ^DD(50,902,8.5)="^"
 | 
|---|
| 501 |         set ^DD(50,902,9)="^"
 | 
|---|
| 502 |  
 | 
|---|
| 503 |         new node,nodeA,nodeB
 | 
|---|
| 504 |         set node=$get(^DD(50,901,0))
 | 
|---|
| 505 |         set nodeA=$piece(node,"^",1,4)
 | 
|---|
| 506 |         set nodeB="K:+X'=X!(X>99999999)!(X<0)!(X?.E1"".""5N.N)!('$P($G(^PSDRUG(DA,""DOS"")),""^"",2)) X"
 | 
|---|
| 507 |         set node2=nodeA_"^"_nodeB
 | 
|---|
| 508 |         set ^DD(50,901,0)=node2
 | 
|---|
| 509 |  
 | 
|---|
| 510 |         quit
 | 
|---|
| 511 |  
 | 
|---|
| 512 |  
 | 
|---|
| 513 | GetpPOI(IEN50d7,Array,ActiveOnly)  ;"!! NOTE: this is DIFFERENT from GetpOI or GetPOI!!
 | 
|---|
| 514 |         ;"Purpose: For a given IEN in PHARMACY ORDERABLE ITEM, return all IENs
 | 
|---|
| 515 |         ;"          pointing to this, from 22706.9, 50, or 101.43
 | 
|---|
| 516 |         ;"Input: IEN50d7 -- IEN in file 50.7
 | 
|---|
| 517 |         ;"       Array -- PASS BY REFERENCE,  an OUT PARAMETER.  Format:
 | 
|---|
| 518 |         ;"              Array(File,IENS,field)=""
 | 
|---|
| 519 |         ;"              Array(File,IENS,field)=""
 | 
|---|
| 520 |         ;"       ActiveOnly -- OPTIONAL, Default=1  Only non-skipped records considered
 | 
|---|
| 521 |         ;"        *** NOT FULLY IMPLEMENTED YET ***
 | 
|---|
| 522 |         ;"result: none.
 | 
|---|
| 523 |  
 | 
|---|
| 524 |         new TMGFDA,TMGMSG
 | 
|---|
| 525 |         set ActiveOnly=$get(ActiveOnly,0)
 | 
|---|
| 526 |  
 | 
|---|
| 527 |         ;"Get links in 50 to POI record (from 22706.9 Xref)
 | 
|---|
| 528 |         new IEN50Array
 | 
|---|
| 529 |         do GetpDRUGs(IEN50d7,.IEN50Array,0)
 | 
|---|
| 530 |         new IEN50 set IEN50=""
 | 
|---|
| 531 |         for  set IEN50=$order(IEN50Array(IEN50)) quit:(IEN50="")  do
 | 
|---|
| 532 |         . set Array(50,IEN50_",",2.1)=""
 | 
|---|
| 533 |  
 | 
|---|
| 534 |         ;"Get links in 50 to POI record (from 50 ASP Xref)
 | 
|---|
| 535 |         new temp merge temp=^PSDRUG("ASP",IEN50d7)
 | 
|---|
| 536 |         set IEN50=""
 | 
|---|
| 537 |         for  set IEN50=$order(temp(IEN50)) quit:(IEN50="")  do
 | 
|---|
| 538 |         . new Active set Active=($piece($get(^PSDRUG(IEN50,"I")),"^",1)="")
 | 
|---|
| 539 |         . if (ActiveOnly=1)&(Active=0) quit
 | 
|---|
| 540 |         . set Array(50,IEN50_",",2.1)=""
 | 
|---|
| 541 |  
 | 
|---|
| 542 |         ;"Get pointers in 22706.9 to POI record
 | 
|---|
| 543 |         new TMGArray
 | 
|---|
| 544 |         do GetpTMG(IEN50d7,.TMGArray,ActiveOnly)
 | 
|---|
| 545 |         new IEN22706d9 set IEN22706d9=""
 | 
|---|
| 546 |         for  set IEN22706d9=$order(TMGArray(IEN22706d9)) quit:(IEN22706d9="")  do
 | 
|---|
| 547 |         . if $piece($get(^TMG(22706.9,IEN22706d9,8)),"^",3)=IEN50d7 do
 | 
|---|
| 548 |         . . set Array(22706.9,IEN22706d9_",",5.61)=""
 | 
|---|
| 549 |         . if $piece($get(^TMG(22706.9,IEN22706d9,8)),"^",4)=IEN50d7 do
 | 
|---|
| 550 |         . . set Array(22706.9,IEN22706d9_",",5.71)=""
 | 
|---|
| 551 |  
 | 
|---|
| 552 |         ;"Get text pointers in 101.43 to POI record
 | 
|---|
| 553 |         new ID set ID=IEN50d7_";99PSP"
 | 
|---|
| 554 |         new IEN101d43 set IEN101d43=""
 | 
|---|
| 555 |         for  set IEN101d43=$order(^ORD(101.43,"ID",ID,IEN101d43)) quit:(IEN101d43="")  do
 | 
|---|
| 556 |         . set Array(101.43,IEN101d43_",",2)="@"
 | 
|---|
| 557 |  
 | 
|---|
| 558 |         quit
 | 
|---|
| 559 |  
 | 
|---|
| 560 |  
 | 
|---|
| 561 | GetpOI(IEN101d43,Array,ActiveOnly)  ;"!! NOTE: this is DIFFERENT from GetpPOI!!
 | 
|---|
| 562 |         ;"Purpose: For a given IEN in ORDERABLE ITEM, return all IENs
 | 
|---|
| 563 |         ;"          pointing to this, from 22706.9, 50.7 101.44
 | 
|---|
| 564 |         ;"Input: IEN101d43 -- IEN in file 101.43
 | 
|---|
| 565 |         ;"       Array -- PASS BY REFERENCE,  an OUT PARAMETER.  Format:
 | 
|---|
| 566 |         ;"              Array(File,IENS,field)=""
 | 
|---|
| 567 |         ;"              Array(File,IENS,field)=""
 | 
|---|
| 568 |         ;"              Array(File,IENS,"N/A")=""  for 50.7 'pointers'
 | 
|---|
| 569 |         ;"       ActiveOnly -- OPTIONAL, Default=1  Only non-skipped records considered
 | 
|---|
| 570 |         ;"        *** NOT FULLY IMPLEMENTED YET ***
 | 
|---|
| 571 |         ;"result: none.
 | 
|---|
| 572 |         ;"Note: there is no direct pointer 50.7 --> 101.43
 | 
|---|
| 573 |         ;"      Will use      101.43 <-- 22706.9 --> 50.7  to get 50.7 --> 101.43
 | 
|---|
| 574 |  
 | 
|---|
| 575 |         new TMGFDA,TMGMSG
 | 
|---|
| 576 |         set ActiveOnly=$get(ActiveOnly,0)
 | 
|---|
| 577 |  
 | 
|---|
| 578 |         ;"Get Pointers 101.44 --> 101.43
 | 
|---|
| 579 |         new all
 | 
|---|
| 580 |         if $$GetOQVIENS(IEN101d43,.all)>0 do
 | 
|---|
| 581 |         . new IENS set IENS=""
 | 
|---|
| 582 |         . for  set IENS=$order(all(IENS)) quit:(IENS="")  do
 | 
|---|
| 583 |         . . set Array(101.442,IENS,.01)=""
 | 
|---|
| 584 |  
 | 
|---|
| 585 |         ;"Get pointers in 22706.9 to 101.43/OI record
 | 
|---|
| 586 |         ;" use to create pseudo pointers 50.7 --> 101.43
 | 
|---|
| 587 |         new TMGArray
 | 
|---|
| 588 |         do Getp1TMG(IEN101d43,.TMGArray,ActiveOnly)
 | 
|---|
| 589 |         new IEN22706d9 set IEN22706d9=""
 | 
|---|
| 590 |         for  set IEN22706d9=$order(TMGArray(IEN22706d9)) quit:(IEN22706d9="")  do
 | 
|---|
| 591 |         . set IEN50d7=+$piece($get(^TMG(22706.9,IEN22706d9,8)),"^",3) ;"TRADE POI
 | 
|---|
| 592 |         . if IEN50d7>0 set Array(50.7,IEN50d7_",","N/A")=""
 | 
|---|
| 593 |         . set IEN50d7=+$piece($get(^TMG(22706.9,IEN22706d9,8)),"^",4) ;"GENERIC POI
 | 
|---|
| 594 |         . if IEN50d7>0 set Array(50.7,IEN50d7_",","N/A")=""
 | 
|---|
| 595 |  
 | 
|---|
| 596 |         ;"Get Pointers in 22706.9 --> 101.43
 | 
|---|
| 597 |         new IEN22706d9 set IEN22706d9=""
 | 
|---|
| 598 |         for  set IEN22706d9=$order(TMGArray(IEN22706d9)) quit:(IEN22706d9="")  do
 | 
|---|
| 599 |         . if $piece($get(^TMG(22706.9,IEN22706d9,8)),"^",5)=IEN101d43 do
 | 
|---|
| 600 |         . . set Array(22706.9,IEN22706d9_",",5.611)=""
 | 
|---|
| 601 |         . if $piece($get(^TMG(22706.9,IEN22706d9,8)),"^",6)=IEN101d43 do
 | 
|---|
| 602 |         . . set Array(22706.9,IEN22706d9_",",5.711)=""
 | 
|---|
| 603 |  
 | 
|---|
| 604 |         quit
 | 
|---|
| 605 |  
 | 
|---|
| 606 |  
 | 
|---|
| 607 | RedirOI(oldIEN,newIEN)
 | 
|---|
| 608 |         ;"Purpose: to redirect pointers to ORDERABLE ITEM file from oldIEN to newIEN
 | 
|---|
| 609 |         ;"Input: oldIEN -- IEN in ORDABLE ITEM (101.44) to switch FROM
 | 
|---|
| 610 |         ;"       newIEN -- IEN in ORDABLE ITEM (101.44) to switch TO
 | 
|---|
| 611 |         ;"results: none.
 | 
|---|
| 612 |  
 | 
|---|
| 613 |         new Array
 | 
|---|
| 614 |         do GetpOI(oldIEN,.Array)
 | 
|---|
| 615 |         ;"redirect pointers to this record held in other files (50.7, 22706.9, or 101.442)
 | 
|---|
| 616 |         new file set file=""
 | 
|---|
| 617 |         for  set file=$order(Array(file)) quit:(file="")  do
 | 
|---|
| 618 |         . new IENS set IENS=""
 | 
|---|
| 619 |         . for  set IENS=$order(Array(file,IENS)) quit:(IENS="")  do
 | 
|---|
| 620 |         . . new field set field=""
 | 
|---|
| 621 |         . . for  set field=$order(Array(file,IENS,field)) quit:(field="")  do
 | 
|---|
| 622 |         . . . if +field'=field quit   ;"avoid "N/A"
 | 
|---|
| 623 |         . . . new TMGFDA,TMGMSG
 | 
|---|
| 624 |         . . . set TMGFDA(file,IENS,field)=newIEN
 | 
|---|
| 625 |         . . . do FILE^DIE("","TMGFDA","TMGMSG")
 | 
|---|
| 626 |         . . . do ShowIfDIERR^TMGDEBUG(.TMGMSG)
 | 
|---|
| 627 |  
 | 
|---|
| 628 |         quit
 | 
|---|
| 629 |  
 | 
|---|
| 630 |  
 | 
|---|
| 631 | FindPOI(DrugNAF)
 | 
|---|
| 632 |         ;"Purpose: to return IEN in PHARMACY ORDERABLE ITEM (50.7) matching drug name
 | 
|---|
| 633 |         ;"Input: DrugNAF -- Drug name and form (e.g. LISINOPRIL TAB)
 | 
|---|
| 634 |         ;"results: IEN in 50.7, or 0 if not found
 | 
|---|
| 635 |         ;"Note: this will only return the FIRST such match.
 | 
|---|
| 636 |         ;"      Also, this is an EXACT match only.
 | 
|---|
| 637 |  
 | 
|---|
| 638 |         new result
 | 
|---|
| 639 |         set result=+$order(^PS(50.7,"B",DrugNAF,""))
 | 
|---|
| 640 |         quit result
 | 
|---|
| 641 |  
 | 
|---|
| 642 |  
 | 
|---|
| 643 | FindOI(DrugNAF)
 | 
|---|
| 644 |         ;"Purpose: to return IEN in ORDERABLE ITEM (101.43) matching drug name
 | 
|---|
| 645 |         ;"Input: DrugNAF -- Drug name and form (e.g. LISINOPRIL TAB)
 | 
|---|
| 646 |         ;"results: IEN in 101.43, or 0 if not found
 | 
|---|
| 647 |         ;"Note: this will only return the FIRST such match.
 | 
|---|
| 648 |         ;"      Also, this is an EXACT match only.
 | 
|---|
| 649 |  
 | 
|---|
| 650 |         new result
 | 
|---|
| 651 |         set result=+$order(^ORD(101.43,"B",DrugNAF,""))
 | 
|---|
| 652 |         quit result
 | 
|---|
| 653 |  
 | 
|---|
| 654 |  
 | 
|---|
| 655 | Kill50(IEN50,IEN22706d9,mode,quiet)
 | 
|---|
| 656 |         ;"Purpose: to delete entry in file 50, and also links to it from 22706.9
 | 
|---|
| 657 |         ;"Input: IEN50 -- IEN in file 50
 | 
|---|
| 658 |         ;"       IEN22706d9 -- IEn in 22706.9
 | 
|---|
| 659 |         ;"       mode -- OPTIONAL-- "TRADE" or "GENERIC"
 | 
|---|
| 660 |         ;"       quiet -- OPTIONAL  -- 1 = no message
 | 
|---|
| 661 |         ;"Results: none
 | 
|---|
| 662 |         ;"NOTE: Since file 50 is the head of a chain of drugs, it does not make
 | 
|---|
| 663 |         ;"      sense for 22706.9 to have a 0 pointer to 50, but still have pointers
 | 
|---|
| 664 |         ;"      to other entries in the chain (parts of which might be used by other
 | 
|---|
| 665 |         ;"      drugs).  So I will also delete pointers to 50.7 and 101.43
 | 
|---|
| 666 |         ;"      This could leave dangling records.  I guess I will have to deal
 | 
|---|
| 667 |         ;"      with this elsewhere.
 | 
|---|
| 668 |         ;"      -- I WILL be deleting records in 50.7 (if not pointed to by other drugs)
 | 
|---|
| 669 |  
 | 
|---|
| 670 |         set IEN50=+$get(IEN50)
 | 
|---|
| 671 |         if IEN50=0 goto K50Done
 | 
|---|
| 672 |  
 | 
|---|
| 673 |         set mode=$get(mode)
 | 
|---|
| 674 |         set quiet=$get(quiet)
 | 
|---|
| 675 |  
 | 
|---|
| 676 |         ;"Get pointer to next link in chain, before deleting this link
 | 
|---|
| 677 |         new IEN50d7  ;"50.7 =  PHARMACY ORDERABLE ITEM.
 | 
|---|
| 678 |         set IEN50d7=+$piece($get(^PSDRUG(IEN50,2)),"^",1)
 | 
|---|
| 679 |  
 | 
|---|
| 680 |         new TMGFDA,TMGMSG
 | 
|---|
| 681 |         if (IEN50>0)&($data(^PSDRUG(IEN50))>0) do
 | 
|---|
| 682 |         . set TMGFDA(50,IEN50_",",.01)="@"
 | 
|---|
| 683 |         . do FILE^DIE("K","TMGFDA","TMGMSG")
 | 
|---|
| 684 |         . do ShowIfDIERR^TMGDEBUG(.TMGMSG)
 | 
|---|
| 685 |         . if 'quiet write !,"DRUG entry (#",IEN50,") deleted: ",$get(DrugInfo("NAME",mode))
 | 
|---|
| 686 |  
 | 
|---|
| 687 |         if mode="" do
 | 
|---|
| 688 |         . new tIEN50 set tIEN50=+$piece($get(^TMG(22706.9,IEN22706d9,7)),"^",1)
 | 
|---|
| 689 |         . new gIEN50 set gIEN50=+$piece($get(^TMG(22706.9,IEN22706d9,7)),"^",2)
 | 
|---|
| 690 |         . if tIEN50=IEN50 set mode="TRADE" quit
 | 
|---|
| 691 |         . if gIEN50=IEN50 set mode="GENERIC" quit
 | 
|---|
| 692 |  
 | 
|---|
| 693 |         if mode="TRADE" do
 | 
|---|
| 694 |         . if +$piece($get(^TMG(22706.9,IEN22706d9,7)),"^",1)>0 do
 | 
|---|
| 695 |         . . set TMGFDA(22706.9,IEN22706d9_",",5.6)="@"
 | 
|---|
| 696 |         . . if 'quiet write "  Link to trade drug from import #",IEN22706d9," removed.",!
 | 
|---|
| 697 |         . if +$piece($get(^TMG(22706.9,IEN22706d9,8)),"^",3)>0 do
 | 
|---|
| 698 |         . . set TMGFDA(22706.9,IEN22706d9_",",5.61)="@"
 | 
|---|
| 699 |         . . if 'quiet write "  Link to trade POI from import #",IEN22706d9," removed.",!
 | 
|---|
| 700 |         . if +$piece($get(^TMG(22706.9,IEN22706d9,8)),"^",5)>0 do
 | 
|---|
| 701 |         . . set TMGFDA(22706.9,IEN22706d9_",",5.611)="@"
 | 
|---|
| 702 |         . . if 'quiet write "  Link to trade OI from import #",IEN22706d9," removed.",!
 | 
|---|
| 703 |         . new temp set temp=$$TrimFDA^TMGDBAPI(.TMGFDA)
 | 
|---|
| 704 |         . if $data(TMGFDA)=0 quit
 | 
|---|
| 705 |         . do FILE^DIE("K","TMGFDA","TMGMSG")
 | 
|---|
| 706 |         . do ShowIfDIERR^TMGDEBUG(.TMGMSG)
 | 
|---|
| 707 |  
 | 
|---|
| 708 |         if mode="GENERIC" do
 | 
|---|
| 709 |         . if +$piece($get(^TMG(22706.9,IEN22706d9,7)),"^",2)>0 do
 | 
|---|
| 710 |         . . set TMGFDA(22706.9,IEN22706d9_",",5.7)="@"
 | 
|---|
| 711 |         . . if 'quiet write "  Link to trade drug from import #",IEN22706d9," removed.",!
 | 
|---|
| 712 |         . if +$piece($get(^TMG(22706.9,IEN22706d9,8)),"^",4)>0 do
 | 
|---|
| 713 |         . . set TMGFDA(22706.9,IEN22706d9_",",5.71)="@"
 | 
|---|
| 714 |         . . if 'quiet write "  Link to generic POI from import #",IEN22706d9," removed.",!
 | 
|---|
| 715 |         . if +$piece($get(^TMG(22706.9,IEN22706d9,8)),"^",6)>0 do
 | 
|---|
| 716 |         . . set TMGFDA(22706.9,IEN22706d9_",",5.711)="@"
 | 
|---|
| 717 |         . . if 'quiet write "  Link to generic OI from import #",IEN22706d9," removed.",!
 | 
|---|
| 718 |         . new temp set temp=$$TrimFDA^TMGDBAPI(.TMGFDA)
 | 
|---|
| 719 |         . if $data(TMGFDA)=0 quit
 | 
|---|
| 720 |         . do FILE^DIE("K","TMGFDA","TMGMSG")
 | 
|---|
| 721 |         . do ShowIfDIERR^TMGDEBUG(.TMGMSG)
 | 
|---|
| 722 |  
 | 
|---|
| 723 |         ;"See if any other DRUGs(50) are pointing to POI (50.7).  If not kill POI
 | 
|---|
| 724 |         if $order(^PSDRUG("ASP",IEN50d7,""))="" do
 | 
|---|
| 725 |         .  do KillPOI(IEN50d7)  ;"will link forward to kill the rest of the chain
 | 
|---|
| 726 |  
 | 
|---|
| 727 | K50Done quit
 | 
|---|
| 728 |  
 | 
|---|
| 729 |  
 | 
|---|
| 730 | KillPOI(IEN50d7)
 | 
|---|
| 731 |         ;"Purpose: to remove a PHARMACY ORDERABLE ITEM (50.7), along with pointers
 | 
|---|
| 732 |         ;"         to it from files 50, 22706.9, 101.43
 | 
|---|
| 733 |         ;"NOTE: This function will also call subsequent functions to
 | 
|---|
| 734 |         ;"      kill records chained records in 101.43,101.44
 | 
|---|
| 735 |         ;"Results: none
 | 
|---|
| 736 |  
 | 
|---|
| 737 |         set IEN50d7=+$get(IEN50d7)
 | 
|---|
| 738 |         if IEN50d7=0 goto KPOIdone
 | 
|---|
| 739 |         ;"Get array of pointers to OI's from this POI record
 | 
|---|
| 740 |         new OIArray,temp
 | 
|---|
| 741 |         set temp=$$GetOI(IEN50d7,.OIArray)
 | 
|---|
| 742 |  
 | 
|---|
| 743 |         new Array
 | 
|---|
| 744 |         do GetpPOI(IEN50d7,.Array,0)
 | 
|---|
| 745 |  
 | 
|---|
| 746 |         new PSSZ set PSSZ=1  ;"Key for editing 50 (?)
 | 
|---|
| 747 |         do Unlock50   ;"if I relock here, may lock another function out.  Will leave unlocked
 | 
|---|
| 748 |  
 | 
|---|
| 749 |         ;"Delete pointers to this record held in other files (50, 22706.9, or 101.43)
 | 
|---|
| 750 |         new file set file=""
 | 
|---|
| 751 |         for  set file=$order(Array(file)) quit:(file="")  do
 | 
|---|
| 752 |         . if file=101.43 quit  ;"ignore these, to be handled below
 | 
|---|
| 753 |         . new IENS set IENS=""
 | 
|---|
| 754 |         . for  set IENS=$order(Array(file,IENS)) quit:(IENS="")  do
 | 
|---|
| 755 |         . . new field set field=""
 | 
|---|
| 756 |         . . for  set field=$order(Array(file,IENS,field)) quit:(field="")  do
 | 
|---|
| 757 |         . . . new TMGFDA,TMGMSG
 | 
|---|
| 758 |         . . . set TMGFDA(file,IENS,field)="@"
 | 
|---|
| 759 |         . . . do FILE^DIE("","TMGFDA","TMGMSG")
 | 
|---|
| 760 |         . . . do ShowIfDIERR^TMGDEBUG(.TMGMSG)
 | 
|---|
| 761 |  
 | 
|---|
| 762 |         ;"Delete the record itself.
 | 
|---|
| 763 |         if $data(^PS(50.7,IEN50d7))'=0 do
 | 
|---|
| 764 |         . new TMGFDA,TMGMSG
 | 
|---|
| 765 |         . set TMGFDA(50.7,IEN50d7_",",.01)="@"
 | 
|---|
| 766 |         . do FILE^DIE("","TMGFDA","TMGMSG")
 | 
|---|
| 767 |         . do ShowIfDIERR^TMGDEBUG(.TMGMSG)
 | 
|---|
| 768 |  
 | 
|---|
| 769 |         ;"Kill chained records in OI
 | 
|---|
| 770 |         new IEN101d43 set IEN101d43=""
 | 
|---|
| 771 |         for  set IEN101d43=$order(OIArray(IEN101d43)) quit:(IEN101d43="")  do
 | 
|---|
| 772 |         . do KillOI(IEN101d43) ;"Will chain forward to delete further records in chain.
 | 
|---|
| 773 |  
 | 
|---|
| 774 | KPOIdone
 | 
|---|
| 775 |         quit
 | 
|---|
| 776 |  
 | 
|---|
| 777 |  
 | 
|---|
| 778 | KillOI(IEN101d43)
 | 
|---|
| 779 |         ;"Purpose: to remove an ORDERABLE ITEM, along with pointers to it
 | 
|---|
| 780 |         ;"         from files 50.7, 22706.9, 101.44
 | 
|---|
| 781 |         ;"Results: none
 | 
|---|
| 782 |  
 | 
|---|
| 783 |         set IEN101d43=+$get(IEN101d43)
 | 
|---|
| 784 |         if IEN101d43=0 goto KOIDone
 | 
|---|
| 785 |  
 | 
|---|
| 786 |         new Array
 | 
|---|
| 787 |         do GetpOI(IEN101d43,.Array,0)
 | 
|---|
| 788 |  
 | 
|---|
| 789 |         ;"Delete pointers to this record held in other files (50.7, 22706.9, or 101.442)
 | 
|---|
| 790 |         new file set file=""
 | 
|---|
| 791 |         for  set file=$order(Array(file)) quit:(file="")  do
 | 
|---|
| 792 |         . if file=101.442 quit ;" ignore these... will handle below
 | 
|---|
| 793 |         . new IENS set IENS=""
 | 
|---|
| 794 |         . for  set IENS=$order(Array(file,IENS)) quit:(IENS="")  do
 | 
|---|
| 795 |         . . new field set field=""
 | 
|---|
| 796 |         . . for  set field=$order(Array(file,IENS,field)) quit:(field="")  do
 | 
|---|
| 797 |         . . . if +field'=field quit   ;"avoid "N/A"
 | 
|---|
| 798 |         . . . new TMGFDA,TMGMSG
 | 
|---|
| 799 |         . . . set TMGFDA(file,IENS,field)="@"
 | 
|---|
| 800 |         . . . do FILE^DIE("","TMGFDA","TMGMSG")
 | 
|---|
| 801 |         . . . do ShowIfDIERR^TMGDEBUG(.TMGMSG)
 | 
|---|
| 802 |  
 | 
|---|
| 803 |         ;"Delete record in 101.43
 | 
|---|
| 804 |         if $data(^ORD(101.43,IEN101d43))'=0 do
 | 
|---|
| 805 |         . new TMGFDA,TMGMSG
 | 
|---|
| 806 |         . set TMGFDA(101.43,IEN101d43_",",.01)="@"
 | 
|---|
| 807 |         . do FILE^DIE("","TMGFDA","TMGMSG")
 | 
|---|
| 808 |         . do ShowIfDIERR^TMGDEBUG(.TMGMSG)
 | 
|---|
| 809 |  
 | 
|---|
| 810 |         ;"Delete chained records in 101.44
 | 
|---|
| 811 |         new OQVIENS set OQVIENS=""
 | 
|---|
| 812 |         for  set OQVIENS=$order(Array(101.442,OQVIENS)) quit:(OQVIENS="")  do
 | 
|---|
| 813 |         . do KillOQV(OQVIENS)
 | 
|---|
| 814 |  
 | 
|---|
| 815 | KOIDone quit
 | 
|---|
| 816 |  
 | 
|---|
| 817 |  
 | 
|---|
| 818 | KillOQV(IENS)
 | 
|---|
| 819 |         ;"Purpose: to kill/inactivate entry in ORDER QUICK VIEW (101.44)
 | 
|---|
| 820 |         ;"Input:  IENS -- the IENS entry locating record to 'kill'
 | 
|---|
| 821 |         ;"Results: none
 | 
|---|
| 822 |         ;"Note: for now, I am not going to actually delete the record, just
 | 
|---|
| 823 |         ;"      mark it as deleted
 | 
|---|
| 824 |  
 | 
|---|
| 825 |         new TMGFDA,TMGMSG
 | 
|---|
| 826 |         set TMGFDA(101.442,IENS,.01)=0
 | 
|---|
| 827 |         set TMGFDA(101.442,IENS,2)="<DELETED>"
 | 
|---|
| 828 |         do FILE^DIE("","TMGFDA","TMGMSG")
 | 
|---|
| 829 |         do ShowIfDIERR^TMGDEBUG(.TMGMSG)
 | 
|---|
| 830 |  
 | 
|---|
| 831 |         quit
 | 
|---|
| 832 |  
 | 
|---|
| 833 |  
 | 
|---|
| 834 | GetOQVIENS(IEN101d43,RxSet,Array)
 | 
|---|
| 835 |         ;"Purpose: Scan in ORDER QUICK VIEW (101.44) for pointer to 101.43
 | 
|---|
| 836 |         ;"Input: IEN101d43 -- IEN in ORDERABLE ITEM (101.43) file
 | 
|---|
| 837 |         ;"       RxSet -- OPTIONAL -- the IEN of the ORWDSET O RX record in 101.44
 | 
|---|
| 838 |         ;"       Array -- OPTIONAL.  PASS BY REFERNCE.  An OUT PARAMETER.
 | 
|---|
| 839 |         ;"          Will be filled with ALL pointers to 101.43.  Format:
 | 
|---|
| 840 |         ;"          Array(IENS)=""
 | 
|---|
| 841 |         ;"Result: IENS pointing to Entry in OQV (e.g. '104,57,'), or 0 if not found
 | 
|---|
| 842 |  
 | 
|---|
| 843 |         ;"If there happened to be 2 pointers to 101.43, this would only return
 | 
|---|
| 844 |         ;"  the FIRST one, but Array will return all pointers.
 | 
|---|
| 845 |  
 | 
|---|
| 846 |         ;"On my initial run index was empty.  May need to programatically launch reindex in the future
 | 
|---|
| 847 |  
 | 
|---|
| 848 |         new result set result=0
 | 
|---|
| 849 |         if +$get(RxSet)=0 set RxSet=$$GetOQVSet
 | 
|---|
| 850 |         if RxSet=0 goto GPrDone
 | 
|---|
| 851 |  
 | 
|---|
| 852 |         new IENS set IENS=""
 | 
|---|
| 853 |         new OQVIEN set OQVIEN=""
 | 
|---|
| 854 |         for  set OQVIEN=$order(^ORD(101.44,RxSet,20,"B",IEN101d43,OQVIEN)) quit:(OQVIEN="")  do
 | 
|---|
| 855 |         . if +OQVIEN=0 quit
 | 
|---|
| 856 |         . new tempIENS set tempIENS=OQVIEN_","_RxSet_","
 | 
|---|
| 857 |         . if result=0 set result=tempIENS
 | 
|---|
| 858 |         . set Array(tempIENS)=""
 | 
|---|
| 859 |  
 | 
|---|
| 860 | GPrDone quit result
 | 
|---|
| 861 |  
 | 
|---|
| 862 |  
 | 
|---|
| 863 |  
 | 
|---|
| 864 | GetOQVSet(quiet)
 | 
|---|
| 865 |         ;"Purpose: get the active RxSet in ORDER QUICK VIEW (101.44)
 | 
|---|
| 866 |         ;"Input: quiet -- OPTIONAL.  If 1, then no error message
 | 
|---|
| 867 |         ;"results: returns RxSet, or 0 if problem.
 | 
|---|
| 868 |  
 | 
|---|
| 869 |         set quiet=+$get(quiet)
 | 
|---|
| 870 |         new DIC,X,Y
 | 
|---|
| 871 |         set DIC=101.44
 | 
|---|
| 872 |         set X="ORWDSET O RX"
 | 
|---|
| 873 |         do ^DIC
 | 
|---|
| 874 |         if +Y'>0 do
 | 
|---|
| 875 |         . if quiet quit
 | 
|---|
| 876 |         . write "Can't find record 'ORWDSET O RX' in ORDER QUICK VIEW (101.44) file.",!
 | 
|---|
| 877 |  
 | 
|---|
| 878 |         quit +Y
 | 
|---|
| 879 |  
 | 
|---|
| 880 |  
 | 
|---|
| 881 | OIInactive(IEN101d43)
 | 
|---|
| 882 |         ;"Purpose -- Return if record has a past-due inactive date
 | 
|---|
| 883 |         ;"Input: IEN101d43 -- IEn in 101.43
 | 
|---|
| 884 |         ;"Results: 0 -- not inactive, 1 is inactive
 | 
|---|
| 885 |  
 | 
|---|
| 886 |         new date set date=$piece($get(^ORD(101.43,IEN101d43,.1)),"^",1)
 | 
|---|
| 887 |         new pastInactiveDate set pastInactiveDate=0
 | 
|---|
| 888 |         if date'="" do
 | 
|---|
| 889 |         . new X,Y set X="NOW" do ^%DT ;"results in Y
 | 
|---|
| 890 |         . new X1,X2
 | 
|---|
| 891 |         . set X1=Y,X2=date
 | 
|---|
| 892 |         . do ^%DTC  ;"result is X=X1-X2   (X=NOW-InactiveDate) X>-1 means past inactive date
 | 
|---|
| 893 |         . set pastInactiveDate=(X>-1)
 | 
|---|
| 894 |  
 | 
|---|
| 895 |         quit pastInactiveDate
 | 
|---|
| 896 |  
 | 
|---|
| 897 |  
 | 
|---|
| 898 | IsImport(IEN50d7)
 | 
|---|
| 899 |         ;"Purpose: To determine if the POI record is one linked to a FDA import
 | 
|---|
| 900 |         ;"Input: IEN50d7 -- IEN in 50.7
 | 
|---|
| 901 |         ;"Results: 1 if linked to a DRUG entry that is linked to an NON-SKIPPED
 | 
|---|
| 902 |         ;"         record in 22706.9
 | 
|---|
| 903 |         ;"         0 otherwise
 | 
|---|
| 904 |         ;"Addendum: This function will be changed slightly, to such that it returns
 | 
|---|
| 905 |         ;"      1 if linked to an entry in 22706.9 that is NON-SKIPPED
 | 
|---|
| 906 |  
 | 
|---|
| 907 |         new result set result=0
 | 
|---|
| 908 |         new IEN22706d9 set IEN22706d9=""
 | 
|---|
| 909 |         for  set IEN22706d9=$order(^TMG(22706.9,"POIT",IEN50d7,IEN22706d9)) quit:(IEN22706d9="")!(result=1)  do
 | 
|---|
| 910 |         . if $piece($get(^TMG(22706.9,IEN22706d9,1)),"^",4)'=1 set result=1
 | 
|---|
| 911 |  
 | 
|---|
| 912 |         if result=1 goto IIDone
 | 
|---|
| 913 |  
 | 
|---|
| 914 |         for  set IEN22706d9=$order(^TMG(22706.9,"POIG",IEN50d7,IEN22706d9)) quit:(IEN22706d9="")!(result=1)  do
 | 
|---|
| 915 |         . if $piece($get(^TMG(22706.9,IEN22706d9,1)),"^",4)'=1 set result=1
 | 
|---|
| 916 |  
 | 
|---|
| 917 |         goto IIDone
 | 
|---|
| 918 |  
 | 
|---|
| 919 |         ;"==== old code, delete later
 | 
|---|
| 920 |         new result set result=0
 | 
|---|
| 921 |         new IEN50Array
 | 
|---|
| 922 |         do GetpDRUGs^TMGNDFUT(IEN50d7,.IEN50Array,1)
 | 
|---|
| 923 |         new IEN50 set IEN50=""
 | 
|---|
| 924 |         for  set IEN50=$order(IEN50Array(IEN50)) quit:(IEN50="")!(result=1)  do
 | 
|---|
| 925 |         . new fdaIEN set fdaIEN=$$GetfdaIEN^TMGNDFUT(IEN50) if fdaIEN'>0 quit
 | 
|---|
| 926 |         . if $piece($get(^TMG(22706.9,fdaIEN,1)),"^",4)'=1 set result=1
 | 
|---|
| 927 | IIDone
 | 
|---|
| 928 |         quit result
 | 
|---|
| 929 |  
 | 
|---|
| 930 |  
 | 
|---|