| 1 | TMGNDF4D ;TMG/kst/FDA Import: Activate POI's ;03/25/06
 | 
|---|
| 2 |          ;;1.0;TMG-LIB;**1**;11/21/06
 | 
|---|
| 3 |  
 | 
|---|
| 4 |  ;" FDA - NATIONAL DRUG FILES COMPILING FUNCTIONS
 | 
|---|
| 5 |  ;"      Activation of records in PHARMACY ORDERABLE ITEM file
 | 
|---|
| 6 |  ;"Kevin Toppenberg MD
 | 
|---|
| 7 |  ;"GNU General Public License (GPL) applies
 | 
|---|
| 8 |  ;"11-21-2006
 | 
|---|
| 9 |  
 | 
|---|
| 10 |  
 | 
|---|
| 11 |  ;"NOTE: 3/9/07 --DON'T USE THIS FUNCTION.  IT IS HANDLED IN TMGNDF4C.
 | 
|---|
| 12 |  
 | 
|---|
| 13 |  ;"=======================================================================
 | 
|---|
| 14 |  ;" API -- Public Functions.
 | 
|---|
| 15 |  ;"=======================================================================
 | 
|---|
| 16 |  ;"ActivAll -- to remove the inactive date for all records in 101.43
 | 
|---|
| 17 |  
 | 
|---|
| 18 |  ;"=======================================================================
 | 
|---|
| 19 |  ;" Private Functions.
 | 
|---|
| 20 |  ;"=======================================================================
 | 
|---|
| 21 |  ;"ActivDate(DateAfter) -- remove inactive date if inactive date on/after DateAfter
 | 
|---|
| 22 |  ;"XFormOff  -- remove restrinction in input transform that prevents deletion.
 | 
|---|
| 23 |  ;"XFormOn -- restore the input transform to field .04 in file 50.7
 | 
|---|
| 24 |  ;"SetXForm(code) -- remove the old input transform, and replace with code
 | 
|---|
| 25 |  
 | 
|---|
| 26 |  
 | 
|---|
| 27 |  ;"=======================================================================
 | 
|---|
| 28 |  
 | 
|---|
| 29 | ActivAll
 | 
|---|
| 30 |         ;"Purpose: To active ALL records
 | 
|---|
| 31 |  
 | 
|---|
| 32 |         new date,%T,X,Y
 | 
|---|
| 33 |         set X="1/1/1960"
 | 
|---|
| 34 |         do ^%DT
 | 
|---|
| 35 |         set date=Y
 | 
|---|
| 36 |         if date>-1 do ActivDate(date)
 | 
|---|
| 37 |  
 | 
|---|
| 38 |         write "Done.",!
 | 
|---|
| 39 |         quit
 | 
|---|
| 40 |  
 | 
|---|
| 41 |  
 | 
|---|
| 42 | ActivDate(DateAfter)
 | 
|---|
| 43 |         ;"Purpose: To remove inactive date for all records in ORDERABLE ITEM
 | 
|---|
| 44 |         ;"         having an inactive date on/after DateAfter
 | 
|---|
| 45 |         ;"Input: DateAfter -- the date to compare the inactive date with.  If the
 | 
|---|
| 46 |         ;"                   inactive date is on/after DateAfter, then inactive date
 | 
|---|
| 47 |         ;"                   will be deleted.
 | 
|---|
| 48 |         ;"                   ** Must be in Fileman Date format
 | 
|---|
| 49 |  
 | 
|---|
| 50 |         do XFormOff
 | 
|---|
| 51 |  
 | 
|---|
| 52 |         new Itr,IEN,Date,Y,X
 | 
|---|
| 53 |         new abort set abort=-5
 | 
|---|
| 54 |         set IEN=$$ItrInit^TMGITR(101.43,.Itr)
 | 
|---|
| 55 |         do PrepProgress^TMGITR(.Itr,20,0,"IEN")
 | 
|---|
| 56 |         if IEN'="" for  do  quit:($$ItrNext^TMGITR(.Itr,.IEN)'>0)!(abort>0)
 | 
|---|
| 57 |         . set abort=abort+$$Activ1(IEN,DateAfter)
 | 
|---|
| 58 |         do ProgressDone^TMGITR(.Itr)
 | 
|---|
| 59 |  
 | 
|---|
| 60 |         do XFormOn
 | 
|---|
| 61 |         kill TMGXFORM
 | 
|---|
| 62 |  
 | 
|---|
| 63 |         quit
 | 
|---|
| 64 |  
 | 
|---|
| 65 |  
 | 
|---|
| 66 | Activ1(IEN101d43,DateAfter)
 | 
|---|
| 67 |         ;"Purpose: To remove inactive date for all records in ORDERABLE ITEM
 | 
|---|
| 68 |         ;"         having an inactive date on/after DateAfter
 | 
|---|
| 69 |         ;"Input: IEN101d43 -- IEN in 101.43
 | 
|---|
| 70 |         ;"       DateAfter -- the date to compare the inactive date with.  If the
 | 
|---|
| 71 |         ;"                   inactive date is on/after DateAfter, then inactive date
 | 
|---|
| 72 |         ;"                   will be deleted.
 | 
|---|
| 73 |         ;"                   ** Must be in Fileman Date format
 | 
|---|
| 74 |         ;"NOTE: XFormOff should be called before this function, and when
 | 
|---|
| 75 |         ;"      all mods are done, XFormOn should be called.
 | 
|---|
| 76 |         ;"Results: 0 is OK, 1 if error
 | 
|---|
| 77 |  
 | 
|---|
| 78 |         new Itr,IEN,Date,Y,X
 | 
|---|
| 79 |         new result set result=0
 | 
|---|
| 80 |  
 | 
|---|
| 81 |         new X2 set X2=$piece($get(^ORD(101.43,IEN,.1)),"^",1)  ;".1;1 --> inactive date
 | 
|---|
| 82 |         if X2="" goto A1Done
 | 
|---|
| 83 |         new X1 set X1=DateAfter
 | 
|---|
| 84 |         do ^%DTC
 | 
|---|
| 85 |         new TMGFDA,TMGMSG
 | 
|---|
| 86 |         set TMGFDA(101.43,IEN_",",.1)=""  ;"kill inactive date
 | 
|---|
| 87 |         new $etrap set $etrap="W ""??ERROR TRAPPED??"",! Q"
 | 
|---|
| 88 |         do FILE^DIE("","TMGFDA","TMGMSG")
 | 
|---|
| 89 |         new PriorErrorFound
 | 
|---|
| 90 |         if $$ShowIfError^TMGDBAPI(.TMGMSG,.PriorErrorFound) goto A1Done
 | 
|---|
| 91 |         set X2=$piece($get(^ORD(101.43,IEN,.1)),"^",1)  ;".1;1 --> inactive date
 | 
|---|
| 92 |         if X2'="" do
 | 
|---|
| 93 |         . write "Deletion of 101.43 inactivation date FAILED. [",X2,"]",!
 | 
|---|
| 94 |         . set result=1
 | 
|---|
| 95 |  
 | 
|---|
| 96 | A1Done
 | 
|---|
| 97 |         quit result
 | 
|---|
| 98 |  
 | 
|---|
| 99 |  
 | 
|---|
| 100 |  
 | 
|---|
| 101 | DoFromTMG(IEN,Option)
 | 
|---|
| 102 |         ;"Purpose: to activate ONE entry in ORDERABLE ITEM (101.43) file, linked from 22706.9
 | 
|---|
| 103 |         ;"Input:  IEN -- IEN in 22706.9
 | 
|---|
| 104 |         ;"        Option -- OPTIONAL. Format:
 | 
|---|
| 105 |         ;"                  Option("FIX CHAIN")=1  <--- changes will be propigate forward
 | 
|---|
| 106 |         ;"                   to file POI, OI, OQV etc.
 | 
|---|
| 107 |         ;"                  OPTION("FIX CHAIN","IEN22706d9")=Source IEN
 | 
|---|
| 108 |         ;"                  Option("QUIET")=1 <-- supress text output
 | 
|---|
| 109 |  
 | 
|---|
| 110 |         ;"Output: OI records will be added or refreshed.
 | 
|---|
| 111 |         ;"Result: 1=Modified, 0=not modified
 | 
|---|
| 112 |  
 | 
|---|
| 113 |         new result set result=0
 | 
|---|
| 114 |         if +$get(IEN)=0 goto DFTMGDone
 | 
|---|
| 115 |  
 | 
|---|
| 116 |         new tradePtr,genericPtr
 | 
|---|
| 117 |  
 | 
|---|
| 118 |         new date,%T,X,Y
 | 
|---|
| 119 |         set X="1/1/1960"
 | 
|---|
| 120 |         do ^%DT
 | 
|---|
| 121 |         set date=Y
 | 
|---|
| 122 |         do XFormOff
 | 
|---|
| 123 |  
 | 
|---|
| 124 |         ;"Get 22706.9 --> 50 --> 50.7 --> 101.43
 | 
|---|
| 125 |         set tradePtr=+$piece($get(^TMG(22706.9,IEN,7)),"^",1)   ;" a IEN50d7 ptr
 | 
|---|
| 126 |         set genericPtr=+$piece($get(^TMG(22706.9,IEN,7)),"^",2) ;" a IEN50d7 ptr
 | 
|---|
| 127 |         if tradePtr'=0 do
 | 
|---|
| 128 |         . new IEN50d7 set IEN50d7=+$piece($get(^PSDRUG(tradePtr,2)),"^",1) ;"2;1 = fld 2.1 to POI
 | 
|---|
| 129 |         . if IEN50d7=0 quit
 | 
|---|
| 130 |         . new IEN101d43 set IEN101d43=$$GetOI^TMGNDFUT(IEN50d7)
 | 
|---|
| 131 |         . if IEN101d43=0 quit
 | 
|---|
| 132 |         . do Activ1(IEN101d43,date)
 | 
|---|
| 133 |         . if $get(Option("FIX CHAIN"))=1 do
 | 
|---|
| 134 |         . . do Fix1OQV^TMGNDF4E(IEN101d43,.Option)
 | 
|---|
| 135 |  
 | 
|---|
| 136 |         if genericPtr'=0 do
 | 
|---|
| 137 |         . new IEN50d7 set IEN50d7=$piece($get(^PSDRUG(genericPtr,2)),"^",1) ;"2;1 = fld 2.1 to POI
 | 
|---|
| 138 |         . if IEN50d7=0 quit
 | 
|---|
| 139 |         . new IEN101d43 set IEN101d43=$$GetOI^TMGNDF4C(IEN50d7)
 | 
|---|
| 140 |         . if IEN101d43=0 quit
 | 
|---|
| 141 |         . do Activ1(IEN101d43,date)
 | 
|---|
| 142 |         . if $get(Option("FIX CHAIN"))=1 do
 | 
|---|
| 143 |         . . do Fix1OQV^TMGNDF4E(IEN101d43,.Option)
 | 
|---|
| 144 |  
 | 
|---|
| 145 |         do XFormOn
 | 
|---|
| 146 |  
 | 
|---|
| 147 | DFTMGDone
 | 
|---|
| 148 |         quit result
 | 
|---|
| 149 |  
 | 
|---|
| 150 |  
 | 
|---|
| 151 |  
 | 
|---|
| 152 | XFormOff
 | 
|---|
| 153 |         ;"Purpose: to remove restrinction in input transform that prevents deletion.
 | 
|---|
| 154 |  
 | 
|---|
| 155 |         ;"new TMGXFORM  ;NOTE: NO new -- will be killed later
 | 
|---|
| 156 |         set TMGXFORM=$piece($get(^ORD(101.43,.1,0)),"^",5,99)
 | 
|---|
| 157 |         merge ^TMG("TMP","XREF",101.43,.1,1)=^DD(101.43,.1,1)
 | 
|---|
| 158 |         kill ^DD(101.43,.1,1)  ;"kill off the screening xref code
 | 
|---|
| 159 |         do SetXForm("W !,X,! S %DT=""E"" D ^%DT S X=Y S:Y<1 X=""""")
 | 
|---|
| 160 |  
 | 
|---|
| 161 |         quit
 | 
|---|
| 162 |  
 | 
|---|
| 163 |  
 | 
|---|
| 164 | XFormOn
 | 
|---|
| 165 |         ;"Purpose: to restore the input transform to field .04 in file 50.7
 | 
|---|
| 166 |  
 | 
|---|
| 167 |         set TMGXFORM=$get(TMGXFORM,"S %DT=""ESTX"" D ^%DT S X=Y K:Y<1 X")
 | 
|---|
| 168 |         do SetXForm(TMGXFORM)
 | 
|---|
| 169 |         kill ^DD(101.43,.1,1)
 | 
|---|
| 170 |         merge ^DD(101.43,.1,1)=^TMG("TMP","XREF",101.43,.1,1) ;"restore screening xref code
 | 
|---|
| 171 |         quit
 | 
|---|
| 172 |  
 | 
|---|
| 173 |  
 | 
|---|
| 174 | SetXForm(code)
 | 
|---|
| 175 |         ;"Purpose: to remove the old input transform, and replace with code
 | 
|---|
| 176 |  
 | 
|---|
| 177 |         set $piece(^DD(101.43,.1,0),"^",5,99)=""  ;"clear out old stuff
 | 
|---|
| 178 |         set $piece(^DD(101.43,.1,0),"^",5)=code
 | 
|---|
| 179 |         ;"zwr ^DD(50.7,.04,0)
 | 
|---|
| 180 |         quit
 | 
|---|