| 1 | TMGNDF4E ;TMG/kst/FDA Import -- Copy Orderable --> OQV ;03/25/06
 | 
|---|
| 2 |          ;;1.0;TMG-LIB;**1**;11/21/07
 | 
|---|
| 3 |  
 | 
|---|
| 4 |  ;" FDA - NATIONAL DRUG FILES COMPILING FUNCTIONS
 | 
|---|
| 5 |  ;"      Copy of ORDERABLE ITEMS into ORDER QUICK VIEW file
 | 
|---|
| 6 |  ;"Kevin Toppenberg MD
 | 
|---|
| 7 |  ;"GNU General Public License (GPL) applies
 | 
|---|
| 8 |  ;"11-21-2006
 | 
|---|
| 9 |  
 | 
|---|
| 10 |  ;"=======================================================================
 | 
|---|
| 11 |  ;" API -- Public Functions.
 | 
|---|
| 12 |  ;"=======================================================================
 | 
|---|
| 13 |  ;"Menu
 | 
|---|
| 14 |  
 | 
|---|
| 15 |  ;"Sync2OQV -- ensure ALL ORDERABLE ITEMS (101.43) items are added to the ORDER QUICK VIEW (101.44)
 | 
|---|
| 16 |  ;"Fix1OQV(IEN101d43,Option) -- alter one entry in OQV file to reflect changes in ORDERABLE ITEM file (101.43)
 | 
|---|
| 17 |  
 | 
|---|
| 18 |  ;"=======================================================================
 | 
|---|
| 19 |  ;" Private Functions.
 | 
|---|
| 20 |  ;"=======================================================================
 | 
|---|
| 21 |  ;"MakeNewQOVS -- save the old QUICK ORDER VIEW set, and create a new one.
 | 
|---|
| 22 |  ;"Add(RxSet,pOI) -- add 'name' to ORWDSET O RX record in ORDER QUICK VIEW file
 | 
|---|
| 23 |  ;"KillPrior(RxSet) -- kill ALL records in the RxSet in 101.44
 | 
|---|
| 24 |  ;"Check4BadOQV -- Scan through all ORDER QUICK VIEWS cheking fro pointers to bad records
 | 
|---|
| 25 |  
 | 
|---|
| 26 |  ;"=======================================================================
 | 
|---|
| 27 |  
 | 
|---|
| 28 | Menu
 | 
|---|
| 29 |         new Menu,UsrSlct
 | 
|---|
| 30 |         set Menu(0)="Pick Option to Sync ORDER QUICK VIEW (OQV) (4E)"
 | 
|---|
| 31 |         set Menu(1)="Sync imports to ORDER QUICK VIEW."_$char(9)_"Sync2OQV"
 | 
|---|
| 32 |         set Menu(2)="Check for BAD entries in ORDER QUICK VIEW file"_$char(9)_"Check4BadOQV"
 | 
|---|
| 33 |         set Menu("P")="Prev Stage"_$char(9)_"Prev"
 | 
|---|
| 34 |         set Menu("N")="Next Stage"_$char(9)_"Next"
 | 
|---|
| 35 |  
 | 
|---|
| 36 | M1      write #
 | 
|---|
| 37 |         set UsrSlct=$$Menu^TMGUSRIF(.Menu,"^")
 | 
|---|
| 38 |  
 | 
|---|
| 39 |         if UsrSlct="Sync2OQV" do Sync2OQV goto M1
 | 
|---|
| 40 |         if UsrSlct="Check4BadOQV" do Check4BadOQV goto M1
 | 
|---|
| 41 |         if UsrSlct="Prev" goto Menu^TMGNDF4C  ;"quit can occur from there...
 | 
|---|
| 42 |         if UsrSlct="Next" goto Menu^TMGNDF4F  ;"quit can occur from there...
 | 
|---|
| 43 |         if UsrSlct="^" goto MenuDone
 | 
|---|
| 44 |         goto M1
 | 
|---|
| 45 |  
 | 
|---|
| 46 | MenuDone
 | 
|---|
| 47 |         quit
 | 
|---|
| 48 |  
 | 
|---|
| 49 |  
 | 
|---|
| 50 | Sync2OQV
 | 
|---|
| 51 |         ;"Purpose: To cycle through all items in the ORDERABLE ITEMS (101.43) file and
 | 
|---|
| 52 |         ;"         ensure that they have been added to the ORDER QUICK VIEW (101.44) file
 | 
|---|
| 53 |         ;"Result: none.
 | 
|---|
| 54 |  
 | 
|---|
| 55 |         ;"NOTE: This function will KILL prior entries in ORWD O RX record
 | 
|---|
| 56 |         ;"      There are no pointers IN to this file, so deleting will not
 | 
|---|
| 57 |         ;"      leave dangling pointers.
 | 
|---|
| 58 |  
 | 
|---|
| 59 |         ;"NOTE: this function must ensure that the drugs are put into 101.44
 | 
|---|
| 60 |         ;"      in alphabetical order
 | 
|---|
| 61 |         ;"      ALSO, drugs should be added both with their generic and brand names.
 | 
|---|
| 62 |  
 | 
|---|
| 63 |         ;"Here is an example of drugs that have been added 'properly'
 | 
|---|
| 64 |         ;"  1) ^ORD(101.44,16,20,0) = ^101.442PA^20^20
 | 
|---|
| 65 |         ;"  2) ^ORD(101.44,16,20,1,0) = 49^AMITRIPTYLINE TAB
 | 
|---|
| 66 |         ;"  3) ^ORD(101.44,16,20,2,0) = 53^CHLORPROMAZINE TAB
 | 
|---|
| 67 |         ;"  4) ^ORD(101.44,16,20,3,0) = 50^DIGOXIN TAB
 | 
|---|
| 68 |         ;"  5) ^ORD(101.44,16,20,4,0) = 44^DILTIAZEM TAB
 | 
|---|
| 69 |         ;"  6) ^ORD(101.44,16,20,5,0) = 49^ELAVIL     <AMITRIPTYLINE TAB >
 | 
|---|
| 70 |         ;"  7) ^ORD(101.44,16,20,6,0) = 49^ENDEP     <AMITRIPTYLINE TAB >
 | 
|---|
| 71 |         ;"  8) ^ORD(101.44,16,20,7,0) = 47^HCTZ     <HYDROCHLOROTHIZIDE TAB >
 | 
|---|
| 72 |         ;"  9) ^ORD(101.44,16,20,8,0) = 47^HYDROCHLOROTHIZIDE TAB
 | 
|---|
| 73 |         ;" 10) ^ORD(101.44,16,20,9,0) = 50^LANOXIN     <DIGOXIN TAB >
 | 
|---|
| 74 |         ;" 11) ^ORD(101.44,16,20,10,0) = 54^LEVOTHYROXINE TAB
 | 
|---|
| 75 |         ;" 12) ^ORD(101.44,16,20,11,0) = 54^LEVOXYL     <LEVOTHYROXINE TAB >
 | 
|---|
| 76 |         ;" 13) ^ORD(101.44,16,20,12,0) = 46^LISINOPRIL TAB
 | 
|---|
| 77 |         ;" 14) ^ORD(101.44,16,20,13,0) = 52^PRAZOSIN CAP,ORAL
 | 
|---|
| 78 |         ;" 15) ^ORD(101.44,16,20,14,0) = 46^PRINIVIL     <LISINOPRIL TAB >
 | 
|---|
| 79 |         ;" 16) ^ORD(101.44,16,20,15,0) = 48^SILDENAFIL TAB
 | 
|---|
| 80 |         ;" 17) ^ORD(101.44,16,20,16,0) = 54^SYNTHROID     <LEVOTHYROXINE TAB >
 | 
|---|
| 81 |         ;" 18) ^ORD(101.44,16,20,17,0) = 48^VIAGRA     <SILDENAFIL TAB >
 | 
|---|
| 82 |         ;" 19) ^ORD(101.44,16,20,18,0) = 46^ZESTRIL     <LISINOPRIL TAB >
 | 
|---|
| 83 |         ;" 20) ^ORD(101.44,16,20,19,0) = 20
 | 
|---|
| 84 |         ;"21) ^ORD(101.44,16,20,20,0) = 54
 | 
|---|
| 85 |         ;"22) ^ORD(101.44,16,20,"B",20,19) =
 | 
|---|
| 86 |         ;"23) ^ORD(101.44,16,20,"B",54,20) =
 | 
|---|
| 87 |         ;"24) ^ORD(101.44,16,20,"C","AMITRIPTYLINE TAB ",1) =
 | 
|---|
| 88 |         ;"25) ^ORD(101.44,16,20,"C","CHLORPROMAZINE TAB ",2) =
 | 
|---|
| 89 |         ;"26) ^ORD(101.44,16,20,"C","DIGOXIN TAB ",3) =
 | 
|---|
| 90 |         ;"27) ^ORD(101.44,16,20,"C","DILTIAZEM TAB ",4) =
 | 
|---|
| 91 |         ;"28) ^ORD(101.44,16,20,"C","ELAVIL     <AMITRIPTYLINE TAB >",5) =
 | 
|---|
| 92 |         ;"29) ^ORD(101.44,16,20,"C","ENDEP     <AMITRIPTYLINE TAB >",6) =
 | 
|---|
| 93 |         ;"30) ^ORD(101.44,16,20,"C","HCTZ     <HYDROCHLOROTHIZIDE TAB >",7) =
 | 
|---|
| 94 |         ;"31) ^ORD(101.44,16,20,"C","HYDROCHLOROTHIZIDE TAB ",8) =
 | 
|---|
| 95 |         ;"32) ^ORD(101.44,16,20,"C","LANOXIN     <DIGOXIN TAB >",9) =
 | 
|---|
| 96 |         ;"33) ^ORD(101.44,16,20,"C","LEVOTHYROXINE TAB ",10) =
 | 
|---|
| 97 |         ;"34) ^ORD(101.44,16,20,"C","LEVOXYL     <LEVOTHYROXINE TAB >",11) =
 | 
|---|
| 98 |         ;"35) ^ORD(101.44,16,20,"C","LISINOPRIL TAB ",12) =
 | 
|---|
| 99 |         ;"36) ^ORD(101.44,16,20,"C","PRAZOSIN CAP,ORAL ",13) =
 | 
|---|
| 100 |         ;"37) ^ORD(101.44,16,20,"C","PRINIVIL     <LISINOPRIL TAB >",14) =
 | 
|---|
| 101 |         ;"38) ^ORD(101.44,16,20,"C","SILDENAFIL TAB ",15) =
 | 
|---|
| 102 |         ;"39) ^ORD(101.44,16,20,"C","SYNTHROID     <LEVOTHYROXINE TAB >",16) =
 | 
|---|
| 103 |  
 | 
|---|
| 104 |         do MakeNewQOVS ;"Get a fresh order set to work in.
 | 
|---|
| 105 |  
 | 
|---|
| 106 |         set RxSet=$$GetOQVSet^TMGNDFUT
 | 
|---|
| 107 |         if RxSet'>0 do  goto AADone
 | 
|---|
| 108 |         . write "Can't find record 'ORWDSET O RX' in ORDER QUICK VIEW (101.44) file.",!
 | 
|---|
| 109 |         . write "Aborting.",!
 | 
|---|
| 110 |  
 | 
|---|
| 111 |         ;"Kill all prior display data in ORDER QUICK VIEW file: ORWDSET O RX record
 | 
|---|
| 112 |         do KillPrior(RxSet)
 | 
|---|
| 113 |  
 | 
|---|
| 114 |         new pAddArray set pAddArray=$name(^TMG("TMP","KILL","Add 101.44 Temp"))
 | 
|---|
| 115 |         kill @pAddArray
 | 
|---|
| 116 |  
 | 
|---|
| 117 |         write "Organizing drugs for addition to ORDER QUICK VIEW...",!
 | 
|---|
| 118 |         new Itr,IEN22706d9
 | 
|---|
| 119 |         new abort set abort=0
 | 
|---|
| 120 |         set IEN22706d9=$$ItrInit^TMGITR(22706.9,.Itr)
 | 
|---|
| 121 |         do PrepProgress^TMGITR(.Itr,20,0,"IEN22706d9")
 | 
|---|
| 122 |         if IEN22706d9'="" for  do  quit:(+$$ItrNext^TMGITR(.Itr,.IEN22706d9)'>0)!abort
 | 
|---|
| 123 |         . if $$UserAborted^TMGUSRIF set abort=1 quit
 | 
|---|
| 124 |         . if $piece($get(^TMG(22706.9,IEN22706d9,1)),"^",4)=1 quit ;" 1=skip
 | 
|---|
| 125 |         . new tIEN101d43,gIEN101d43
 | 
|---|
| 126 |         . set tIEN101d43=+$piece($get(^TMG(22706.9,IEN22706d9,8)),"^",5)
 | 
|---|
| 127 |         . set gIEN101d43=+$piece($get(^TMG(22706.9,IEN22706d9,8)),"^",6)
 | 
|---|
| 128 |         . if tIEN101d43>0 do
 | 
|---|
| 129 |         . . new name set name=$piece($get(^ORD(101.43,tIEN101d43,0)),"^",1)
 | 
|---|
| 130 |         . . if (name="")!(name="<DUPLICATE>") do KillOI^TMGNDFUT(tIEN101d43) quit
 | 
|---|
| 131 |         . . set @pAddArray@(name,tIEN101d43)=""
 | 
|---|
| 132 |         . . new SynIEN set SynIEN=0
 | 
|---|
| 133 |         . . for  set SynIEN=$order(^ORD(101.43,tIEN101d43,2,SynIEN)) quit:(+SynIEN'>0)  do
 | 
|---|
| 134 |         . . . new SynName set SynName=$get(^ORD(101.43,tIEN101d43,2,SynIEN,0))
 | 
|---|
| 135 |         . . . set SynName=$$Trim^TMGSTUTL(SynName)
 | 
|---|
| 136 |         . . . set SynName=SynName_" <"_name_">"
 | 
|---|
| 137 |         . . . set @pAddArray@(SynName,tIEN101d43)=""
 | 
|---|
| 138 |         . if gIEN101d43>0 do
 | 
|---|
| 139 |         . . new name set name=$piece($get(^ORD(101.43,gIEN101d43,0)),"^",1)
 | 
|---|
| 140 |         . . if (name="")!(name="<DUPLICATE>") do KillOI^TMGNDFUT(gIEN101d43) quit
 | 
|---|
| 141 |         . . set @pAddArray@(name,gIEN101d43)=""
 | 
|---|
| 142 |         . . new SynIEN set SynIEN=0
 | 
|---|
| 143 |         . . for  set SynIEN=$order(^ORD(101.43,gIEN101d43,2,SynIEN)) quit:(+SynIEN'>0)  do
 | 
|---|
| 144 |         . . . new SynName set SynName=$get(^ORD(101.43,gIEN101d43,2,SynIEN,0))
 | 
|---|
| 145 |         . . . set SynName=$$Trim^TMGSTUTL(SynName)
 | 
|---|
| 146 |         . . . set SynName=SynName_" <"_name_">"
 | 
|---|
| 147 |         . . . set @pAddArray@(SynName,gIEN101d43)=""
 | 
|---|
| 148 |         do ProgressDone^TMGITR(.Itr)
 | 
|---|
| 149 |         if abort=1 goto AADone
 | 
|---|
| 150 |  
 | 
|---|
| 151 |         ;"Now add all drugs
 | 
|---|
| 152 |         write "Adding drugs to ORDER QUICK VIEW...",!
 | 
|---|
| 153 |         new Itr,DispName
 | 
|---|
| 154 |         set abort=0
 | 
|---|
| 155 |         set DispName=$$ItrAInit^TMGITR(pAddArray,.Itr)
 | 
|---|
| 156 |         do PrepProgress^TMGITR(.Itr,20,1,"DispName")
 | 
|---|
| 157 |         if DispName'="" for  do  quit:($$ItrANext^TMGITR(.Itr,.DispName)="")!abort
 | 
|---|
| 158 |         . if $$UserAborted^TMGUSRIF set abort=1 quit
 | 
|---|
| 159 |         . new IEN set IEN=$order(@pAddArray@(DispName,""))
 | 
|---|
| 160 |         . set pOQV=$$Add(RxSet,IEN,DispName)
 | 
|---|
| 161 |         do ProgressDone^TMGITR(.Itr)
 | 
|---|
| 162 |  
 | 
|---|
| 163 | AADone
 | 
|---|
| 164 |         write "Done.",!
 | 
|---|
| 165 |         do PressToCont^TMGUSRIF
 | 
|---|
| 166 |         quit
 | 
|---|
| 167 |  
 | 
|---|
| 168 |  
 | 
|---|
| 169 | MakeNewQOVS
 | 
|---|
| 170 |         ;"Purpose: To save the old QUICK ORDER VIEW set, and create a new one.
 | 
|---|
| 171 |         ;"Note: Because the drugs have to be added to the file in alphabetical order,
 | 
|---|
| 172 |         ;"      it is required to create a NEW order set.  I will save the old one
 | 
|---|
| 173 |         ;"      for future reference.
 | 
|---|
| 174 |  
 | 
|---|
| 175 |         new DIC,X,Y,%,RxSet
 | 
|---|
| 176 |  
 | 
|---|
| 177 |         set RxSet=$$GetOQVSet^TMGNDFUT
 | 
|---|
| 178 |         if RxSet'>0 do  goto MNQSDone
 | 
|---|
| 179 |         . write "Can't find record 'ORWDSET O RX' in ORDER QUICK VIEW (101.44) file.",!
 | 
|---|
| 180 |         . write "Aborting.",!
 | 
|---|
| 181 |  
 | 
|---|
| 182 |         new nowS
 | 
|---|
| 183 |         do NOW^%DTC
 | 
|---|
| 184 |         S Y=X  ;"% current fileman date returned in X (no time)
 | 
|---|
| 185 |         D DD^%DT  ;"convert to external format.
 | 
|---|
| 186 |         set nowS=Y
 | 
|---|
| 187 |  
 | 
|---|
| 188 |         new newName set newName="ORWDSET O RX -- "_nowS
 | 
|---|
| 189 |         write "Saving old ORDER QUICK VIEW set as: ",newName,!
 | 
|---|
| 190 |         new TMGFDA,TMGMSG,TMGIEN
 | 
|---|
| 191 |         set TMGFDA(101.44,RxSet_",",.01)=newName
 | 
|---|
| 192 |         do FILE^DIE("K","TMGFDA","TMGMSG")
 | 
|---|
| 193 |         do ShowIfDIERR^TMGDEBUG(.TMGMSG)
 | 
|---|
| 194 |  
 | 
|---|
| 195 |         set TMGFDA(101.44,"+1,",.01)="ORWDSET O RX"
 | 
|---|
| 196 |         set TMGFDA(101.44,"+1,",6)="NOW"
 | 
|---|
| 197 |         do UPDATE^DIE("EK","TMGFDA","TMGIEN","TMGMSG")
 | 
|---|
| 198 |         do ShowIfDIERR^TMGDEBUG(.TMGMSG)
 | 
|---|
| 199 |  
 | 
|---|
| 200 | MNQSDone
 | 
|---|
| 201 |         quit
 | 
|---|
| 202 |  
 | 
|---|
| 203 |  
 | 
|---|
| 204 | Add(RxSet,pOI,RxName)
 | 
|---|
| 205 |         ;"Purpose: to add 'name' to ORWDSET O RX record in ORDER QUICK VIEW ('OQV')file
 | 
|---|
| 206 |         ;"Input: RxSet -- the record number in OQV to add records to.
 | 
|---|
| 207 |         ;"       pOI -- a pointer to (i.e. the IEN of) record in ORDERABLE ITEM (101.43) file
 | 
|---|
| 208 |         ;"       RxName -- The name to display in CPRS
 | 
|---|
| 209 |         ;"Results: returns the IEN of the new record.
 | 
|---|
| 210 |  
 | 
|---|
| 211 |         new TMGFDA,TMGMSG,TMGIEN,PriorErrorFound
 | 
|---|
| 212 |         new result set result=0
 | 
|---|
| 213 |  
 | 
|---|
| 214 |         if pOI=0 do  goto AdDone
 | 
|---|
| 215 |         . write !,"Skipping addition of ",RxName," because it doesn't",!
 | 
|---|
| 216 |         . write "seem linked to a PHARMACY ORDERABLE ITEM.",!
 | 
|---|
| 217 |         set TMGFDA(101.442,"+1,"_RxSet_",",.01)=pOI
 | 
|---|
| 218 |         set TMGFDA(101.442,"+1,"_RxSet_",",2)=RxName
 | 
|---|
| 219 |  
 | 
|---|
| 220 |         new $etrap set $etrap="write !,""ERROR TRAPPED."",! quit"
 | 
|---|
| 221 | Ad1     do UPDATE^DIE("S","TMGFDA","TMGIEN","TMGMSG")
 | 
|---|
| 222 |         if $$ShowIfError^TMGDBAPI(.TMGMSG,.PriorErrorFound) goto AdDone
 | 
|---|
| 223 |         set result=+$get(TMGIEN(1))
 | 
|---|
| 224 |  
 | 
|---|
| 225 | AdDone
 | 
|---|
| 226 |         quit result
 | 
|---|
| 227 |  
 | 
|---|
| 228 |  
 | 
|---|
| 229 | KillPrior(RxSet)
 | 
|---|
| 230 |         ;"Purpose: To kill ALL records in the RxSet in 101.44
 | 
|---|
| 231 |         ;"Note: I am fairly certain that no other files point to this file
 | 
|---|
| 232 |         ;"      (there are no pointers IN).  So I can just kill.
 | 
|---|
| 233 |         ;"      CAUTION: this might not be the right thing to do in another system.
 | 
|---|
| 234 |  
 | 
|---|
| 235 |         new temp merge temp=^ORD(101.44,RxSet,20,0)
 | 
|---|
| 236 |         kill ^ORD(101.44,RxSet,20)
 | 
|---|
| 237 |         merge ^ORD(101.44,RxSet,20,0)=temp
 | 
|---|
| 238 |         set $piece(^ORD(101.44,RxSet,20,0),"^",3)=0 ;"most recently assigned IEN
 | 
|---|
| 239 |         set $piece(^ORD(101.44,RxSet,20,0),"^",4)=0 ;"current total number of records
 | 
|---|
| 240 |  
 | 
|---|
| 241 |         quit
 | 
|---|
| 242 |  
 | 
|---|
| 243 |  
 | 
|---|
| 244 |  ;"==============================
 | 
|---|
| 245 | Fix1OQV(IEN101d43,Option)
 | 
|---|
| 246 |         ;"Purpose: to alter one entry in OQV file to reflect changes
 | 
|---|
| 247 |         ;"         in ORDERABLE ITEM file (101.43)
 | 
|---|
| 248 |         ;"Input: IEN101d43 -- IEN in ORDERABLE ITEM file (101.43)
 | 
|---|
| 249 |         ;"       Option -- OPTIONAL. Format:
 | 
|---|
| 250 |         ;"                  Option("FIX CHAIN")=1  <--- changes will be propigate forward
 | 
|---|
| 251 |         ;"                   to file POI, OI, OQV etc.
 | 
|---|
| 252 |         ;"                  OPTION("FIX CHAIN","IEN22706d9")=Source IEN
 | 
|---|
| 253 |         ;"                  Option("QUIET")=1 <-- supress text output
 | 
|---|
| 254 |         ;"                  Option("IEN50","TRADE")=IEN50 for Trade Name
 | 
|---|
| 255 |         ;"                  Option("IEN50","GENERIC")=IEN50 for Generic Name
 | 
|---|
| 256 |         ;"                  Option("DRUG NAME AND FORM","TRADE")=tradeNameAF
 | 
|---|
| 257 |         ;"                  Option("DRUG NAME AND FORM","GENERIC")=genericNameAF
 | 
|---|
| 258 |         ;"                  Option("IEN50.7","TRADE")=IEN50d7
 | 
|---|
| 259 |         ;"                  Option("IEN50.7","GENERIC")=IEN50d7
 | 
|---|
| 260 |         ;"                  Option("IEN101.43","TRADE")=IEN101d43
 | 
|---|
| 261 |         ;"                  Option("IEN101.43","GENERIC")=IEN101d43
 | 
|---|
| 262 |         ;"                  Option("DELETING")=1 <-- deleting chain (not IEN22706d9)
 | 
|---|
| 263 |         ;"NOTE: The entries in the OQV file have to be set up in ALPHABETICAL order.
 | 
|---|
| 264 |         ;"      This function will NOT reorder these.  If name is completely changed, then
 | 
|---|
| 265 |         ;"      it will likely appear out of alphabetical order.  This may hinder finding it.
 | 
|---|
| 266 |         ;"      -- Such a problem could be fixed by runnin: Sync2OQV^TMGNDF4E
 | 
|---|
| 267 |         ;"Result: 1 if error, 0 if OK.
 | 
|---|
| 268 |  
 | 
|---|
| 269 |         new result set result=0
 | 
|---|
| 270 |         new RxSet,quiet
 | 
|---|
| 271 |         set quiet=$get(Option("QUIET"))=1
 | 
|---|
| 272 |         set RxSet=$$GetOQVSet^TMGNDFUT(quiet)
 | 
|---|
| 273 |         if RxSet=0 goto F1OQVDone
 | 
|---|
| 274 |  
 | 
|---|
| 275 |         new OQVIENS set OQVIENS=$$GetOQVIENS^TMGNDFUT(IEN101d43,RxSet)
 | 
|---|
| 276 |         if OQVIENS=0 do   goto F1OQVDone
 | 
|---|
| 277 |         . if quiet quit
 | 
|---|
| 278 |         . write "Can't find link ORDERABLE ITEM--> ORDER QUICK VIEW (OQV).",!
 | 
|---|
| 279 |         . write "Try do a batch add of imports into OQV.",!
 | 
|---|
| 280 |         . write "Can't insert OQV with out reordering...",!
 | 
|---|
| 281 |  
 | 
|---|
| 282 |         new drugName set drugName=$piece($get(^ORD(101.43,IEN101d43,0)),"^",1)
 | 
|---|
| 283 |         if ($get(Option("DELETING"))=1)!(drugName="") set drugName="<DELETED>"
 | 
|---|
| 284 |  
 | 
|---|
| 285 |         new TMGFDA,TMGMSG
 | 
|---|
| 286 |         set TMGFDA(101.442,OQVIENS,2)=drugName
 | 
|---|
| 287 |         new temp set temp=$$TrimFDA^TMGDBAPI(.TMGFDA)
 | 
|---|
| 288 |         if $data(TMGFDA) do
 | 
|---|
| 289 |         . do FILE^DIE("KS","TMGFDA","TMGMSG")
 | 
|---|
| 290 |         . set result=$$ShowIfError^TMGDBAPI(.TMGMSG)  ;"show FM errors, even if quiet.
 | 
|---|
| 291 |  
 | 
|---|
| 292 | F1OQVDone
 | 
|---|
| 293 |         quit result
 | 
|---|
| 294 |  
 | 
|---|
| 295 |  
 | 
|---|
| 296 | Check4BadOQV
 | 
|---|
| 297 |         ;"Purpose: Scan through all ORDER QUICK VIEWS and see if any are pointing
 | 
|---|
| 298 |         ;"         to bad records
 | 
|---|
| 299 |  
 | 
|---|
| 300 |         new RxSet set RxSet=$$GetOQVSet^TMGNDFUT
 | 
|---|
| 301 |         if RxSet=0 goto C4BOQVDone
 | 
|---|
| 302 |         new totalCt set totalCt=0
 | 
|---|
| 303 |         new count set count=0
 | 
|---|
| 304 |  
 | 
|---|
| 305 |         new index set index=0
 | 
|---|
| 306 |         for  set index=$order(^ORD(101.44,RxSet,20,index)) quit:(+index'>0)  do
 | 
|---|
| 307 |         . set totalCt=totalCt+1
 | 
|---|
| 308 |         . new s set s=$get(^ORD(101.44,RxSet,20,index,0))
 | 
|---|
| 309 |         . new ptr set ptr=+s
 | 
|---|
| 310 |         . if ptr=0 quit
 | 
|---|
| 311 |         . new name set name=$piece(s,"^",2)
 | 
|---|
| 312 |         . if $piece($get(^ORD(101.43,ptr,0)),"^",1)'="" quit
 | 
|---|
| 313 |         . write !,"BAD: ",name,!
 | 
|---|
| 314 |         . write "OQV 101.44:#",index,",",RxSet,",  --> OI 101.43:#",ptr," which is empty",!
 | 
|---|
| 315 |         . do KillOQV^TMGNDFUT(index_","_RxSet_",")
 | 
|---|
| 316 |         . write "  ... deleted.",!
 | 
|---|
| 317 |         . set count=count+1
 | 
|---|
| 318 |  
 | 
|---|
| 319 |         write !,totalCt," entries scanned.",!
 | 
|---|
| 320 |         write count," bad entries found.",!
 | 
|---|
| 321 |         do PressToCont^TMGUSRIF
 | 
|---|
| 322 |  
 | 
|---|
| 323 | C4BOQVDone
 | 
|---|
| 324 |         quit
 | 
|---|
| 325 |  
 | 
|---|