[796] | 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
|
---|