| 1 | RMPRPIUG ;HINCIO/ODJ - CONVERT OLD PIP TO NEW PIP ;7/30/02  08:19
 | 
|---|
| 2 |  ;;3.0;PROSTHETICS;**61**;Feb 09, 1996
 | 
|---|
| 3 |  Q
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 |  ;***** CONV - Convert old PIP files to the new design (start)
 | 
|---|
| 6 |  ;             Should be run as post init in patch 61
 | 
|---|
| 7 |  ;             No re-start allowed and all Prosthetic Inventory
 | 
|---|
| 8 |  ;             menu options including Stock Issue and quick edit
 | 
|---|
| 9 |  ;             should be disabled.
 | 
|---|
| 10 |  ;             If conversion needs to be re-run then you must call
 | 
|---|
| 11 |  ;             KILL^RMPRPIXZ before running this utility.
 | 
|---|
| 12 |  ;
 | 
|---|
| 13 | CONV I $D(^RMPR(661.5,"B")) D  G CONVX ;don't convert if 661.5 has a rec
 | 
|---|
| 14 |  . I '$D(IO("Q")) D
 | 
|---|
| 15 |  .. W !!
 | 
|---|
| 16 |  .. W "** File 661.5 already exists, aborting conversion, please log NOIS"
 | 
|---|
| 17 |  .. Q
 | 
|---|
| 18 |  . Q
 | 
|---|
| 19 | DUZ S RMPRDUZ=$$GETUSR^RMPRPIU0(DUZ)
 | 
|---|
| 20 |  I RMPRDUZ="" D  G CONVX ;need valid DUZ
 | 
|---|
| 21 |  . I '$D(IO("Q")) D
 | 
|---|
| 22 |  .. W !!
 | 
|---|
| 23 |  .. W "** Need valid DUZ variable set"
 | 
|---|
| 24 |  .. Q
 | 
|---|
| 25 |  . Q
 | 
|---|
| 26 |  I '$D(IO("Q")) D
 | 
|---|
| 27 |  . W !,"PIP Old to New file conversion starting."
 | 
|---|
| 28 |  . Q
 | 
|---|
| 29 |  K ^TMP($J)
 | 
|---|
| 30 |  D LOCN^RMPRPIUJ ; create locations (old to new map in ^TMP($J,"LOCN")
 | 
|---|
| 31 |  D CONV^RMPRPIUI ; create commercial items that exist in 661.3
 | 
|---|
| 32 |  D CONV1A        ; create current inventory (from 661.3)
 | 
|---|
| 33 |  D CONV^RMPRPIUH ; create issues (from 660 and 661.2)
 | 
|---|
| 34 |  D REC^RMPRPIUK  ; create initial balancing reconciliations
 | 
|---|
| 35 |  D BAL^RMPRPIUK  ; create balance history (661.9)
 | 
|---|
| 36 |  D UNIT^RMPRPIUJ  ; update unit of issue (661.7)
 | 
|---|
| 37 |  K ^TMP($J)
 | 
|---|
| 38 | RENDX S DIK="^RMPR(661.11," D IXALL^DIK
 | 
|---|
| 39 |  I '$D(IO("Q")) D
 | 
|---|
| 40 |  . W !,"PIP Old to New file conversion complete.",!
 | 
|---|
| 41 |  . Q
 | 
|---|
| 42 | CONVX Q
 | 
|---|
| 43 |  ;
 | 
|---|
| 44 |  ; Convert current inventory based on file 661.3
 | 
|---|
| 45 |  ; Main Loop on location
 | 
|---|
| 46 | CONV1A N RMPRL,RMPRHREC,RMPRERR,RMPR5,RMPRI,RMPRREC,RMPRITM,X,Y,DA,RMPRSS
 | 
|---|
| 47 |  N RMPRH,RMPRHIEN,RMPR4,RMPR6,RMPR,RMPR11,RMPRSRC,RMPRTODT,RMPR41
 | 
|---|
| 48 |  I '$D(IO("Q")) D
 | 
|---|
| 49 |  . W !,"Creating Current Inventory - file 661.7 "
 | 
|---|
| 50 |  . Q
 | 
|---|
| 51 |  D NOW^%DTC S RMPRTODT=$P(%,".",1)
 | 
|---|
| 52 |  S RMPRL=0
 | 
|---|
| 53 | CONV1 S RMPRL=$O(^RMPR(661.3,RMPRL))
 | 
|---|
| 54 |  I '+RMPRL G CONV1AX
 | 
|---|
| 55 |  I '$D(^TMP($J,"LOCN",RMPRL)) G CONV1
 | 
|---|
| 56 |  S RMPR5("IEN")=^TMP($J,"LOCN",RMPRL)
 | 
|---|
| 57 |  S RMPRREC=^RMPR(661.3,RMPRL,0)
 | 
|---|
| 58 |  S RMPR5("STATION")=$P(RMPRREC,"^",3)
 | 
|---|
| 59 |  ;
 | 
|---|
| 60 |  ; Loop on the HCPCS node in 661.3
 | 
|---|
| 61 |  K ^TMP($J,"H")
 | 
|---|
| 62 |  S RMPRH=0
 | 
|---|
| 63 | CONV2 S RMPRH=$O(^RMPR(661.3,RMPRL,1,RMPRH))
 | 
|---|
| 64 |  I '$D(IO("Q")) D
 | 
|---|
| 65 |  . W:$X=79 ! W "."
 | 
|---|
| 66 |  . Q
 | 
|---|
| 67 |  I '+RMPRH D  G CONV1
 | 
|---|
| 68 |  . D TMPH(.RMPR5)
 | 
|---|
| 69 |  . K ^TMP($J,"H")
 | 
|---|
| 70 |  . Q
 | 
|---|
| 71 |  S RMPRREC=$G(^RMPR(661.3,RMPRL,1,RMPRH,0))
 | 
|---|
| 72 |  S RMPRHIEN=$P(RMPRREC,"^",1) ;ien to 661.1
 | 
|---|
| 73 |  I RMPRHIEN="" G CONV2 ;ignore if null 661.1 ptr
 | 
|---|
| 74 |  I '$D(^RMPR(661.1,RMPRHIEN,0)) G CONV2 ;ignore if bad ptr
 | 
|---|
| 75 |  S RMPRHREC=^RMPR(661.1,RMPRHIEN,0)
 | 
|---|
| 76 |  K RMPR11
 | 
|---|
| 77 |  S RMPR11("STATION")=RMPR5("STATION")
 | 
|---|
| 78 |  S RMPR11("STATION IEN")=RMPR5("STATION")
 | 
|---|
| 79 |  S RMPR11("HCPCS")=$P(RMPRHREC,"^",1) ;get HCPCS code from 661.1
 | 
|---|
| 80 |  I RMPR11("HCPCS")="" G CONV2 ;ignore if null HCPCS code
 | 
|---|
| 81 |  ;
 | 
|---|
| 82 |  ; Loop on HCPCS Item node in 661.3
 | 
|---|
| 83 |  S RMPRI=0
 | 
|---|
| 84 | CONV3 S RMPRI=$O(^RMPR(661.3,RMPRL,1,RMPRH,1,RMPRI))
 | 
|---|
| 85 |  I '+RMPRI G CONV2
 | 
|---|
| 86 |  S RMPRREC=$G(^RMPR(661.3,RMPRL,1,RMPRH,1,RMPRI,0))
 | 
|---|
| 87 |  I $P($P(RMPRREC,"^",1),"-",1)'=RMPR11("HCPCS") G CONV3 ;bad HCPCS
 | 
|---|
| 88 |  S RMPR11("SOURCE")="C"
 | 
|---|
| 89 |  I $P(RMPRREC,"^",9)="V" S RMPR11("SOURCE")="V"
 | 
|---|
| 90 |  S RMPRITM=$P($P(RMPRREC,"^",1),"-",2)
 | 
|---|
| 91 |  I RMPRITM="" G CONV3
 | 
|---|
| 92 |  S RMPR11("UNIT")=$P(RMPRREC,"^",4)
 | 
|---|
| 93 |  S RMPR7("UNIT")=$P(RMPRREC,"^",4)
 | 
|---|
| 94 |  K RMPR6
 | 
|---|
| 95 |  S RMPR6("QUANTITY")=+$P(RMPRREC,"^",2)
 | 
|---|
| 96 |  S RMPR6("VALUE")=+$P(RMPRREC,"^",3)
 | 
|---|
| 97 |  S RMPR6("VALUE")=$J(RMPR6("VALUE"),0,2)
 | 
|---|
| 98 |  S RMPR6("VENDOR IEN")=$P(RMPRREC,"^",5)
 | 
|---|
| 99 |  K RMPR4
 | 
|---|
| 100 |  S RMPR4("RE-ORDER QTY")=+$P(RMPRREC,"^",6)
 | 
|---|
| 101 |  K RMPR41
 | 
|---|
| 102 |  S RMPR41("ORDER QTY")=+$P(RMPRREC,"^",11)
 | 
|---|
| 103 |  D GETITM^RMPRPIUH(.RMPR11,RMPRHIEN,RMPRITM)
 | 
|---|
| 104 |  ;
 | 
|---|
| 105 |  ; Create HCPCS Item Re-Order record 661.4
 | 
|---|
| 106 |  I '$D(^RMPR(661.4,"ASLHI",RMPR11("STATION IEN"),RMPR5("IEN"),RMPR11("HCPCS"),RMPR11("ITEM"))) D
 | 
|---|
| 107 |  . S RMPRERR=$$CRE^RMPRPIX4(.RMPR4,.RMPR11,.RMPR5)
 | 
|---|
| 108 |  . Q
 | 
|---|
| 109 |  ;
 | 
|---|
| 110 |  ; Save in Temp global for later update
 | 
|---|
| 111 |  I RMPR6("VENDOR IEN")="" G CONV3
 | 
|---|
| 112 |  I $D(^TMP($J,"H",RMPR11("HCPCS"),RMPR11("ITEM"),RMPR6("VENDOR IEN"))) D
 | 
|---|
| 113 |  . S RMPRSS=^TMP($J,"H",RMPR11("HCPCS"),RMPR11("ITEM"),RMPR6("VENDOR IEN"))
 | 
|---|
| 114 |  . S $P(RMPRSS,"^",1)=$P(RMPRSS,"^",1)+RMPR6("QUANTITY")
 | 
|---|
| 115 |  . S $P(RMPRSS,"^",2)=$P(RMPRSS,"^",2)+RMPR6("VALUE")
 | 
|---|
| 116 |  . Q
 | 
|---|
| 117 |  E  D
 | 
|---|
| 118 |  . S RMPRSS=RMPR6("QUANTITY")
 | 
|---|
| 119 |  . S $P(RMPRSS,"^",2)=RMPR6("VALUE")
 | 
|---|
| 120 |  . Q
 | 
|---|
| 121 |  S RMPRSS=RMPRSS_U_$G(RMPR11("UNIT"))
 | 
|---|
| 122 |  S ^TMP($J,"H",RMPR11("HCPCS"),RMPR11("ITEM"),RMPR6("VENDOR IEN"))=RMPRSS
 | 
|---|
| 123 |  ;
 | 
|---|
| 124 |  ; If there is an order quantity then save it to file 661.41
 | 
|---|
| 125 |  I RMPR41("ORDER QTY")>0 D
 | 
|---|
| 126 |  . S RMPR41("VENDOR")=RMPR6("VENDOR IEN")
 | 
|---|
| 127 |  . S RMPR41("DATE ORDER")=RMPRTODT
 | 
|---|
| 128 |  . S RMPR41("STATUS")="O"
 | 
|---|
| 129 |  . S RMPRERR=$$CRE^RMPRPIXN(.RMPR41,.RMPR11)
 | 
|---|
| 130 |  . Q
 | 
|---|
| 131 |  G CONV3 ;next item in 661.3
 | 
|---|
| 132 |  ;
 | 
|---|
| 133 |  ; Process the ^TMP($J,"H") global just created
 | 
|---|
| 134 | TMPH(RMPR5) ;
 | 
|---|
| 135 |  N RMPRH,RMPRI,RMPRV,RMPR,RMPR11,RMPRERR,RMPRSS,RMPR6,RMPRUCST
 | 
|---|
| 136 |  S RMPRH=""
 | 
|---|
| 137 |  F  S RMPRH=$O(^TMP($J,"H",RMPRH)) Q:RMPRH=""  D
 | 
|---|
| 138 |  . S RMPRI=""
 | 
|---|
| 139 |  . F  S RMPRI=$O(^TMP($J,"H",RMPRH,RMPRI)) Q:RMPRI=""  D
 | 
|---|
| 140 |  .. S RMPRV=""
 | 
|---|
| 141 |  .. F  S RMPRV=$O(^TMP($J,"H",RMPRH,RMPRI,RMPRV)) Q:RMPRV=""  D
 | 
|---|
| 142 |  ... S RMPRSS=^TMP($J,"H",RMPRH,RMPRI,RMPRV)
 | 
|---|
| 143 |  ... K RMPR6
 | 
|---|
| 144 |  ... S RMPR6("QUANTITY")=+$P(RMPRSS,"^",1)
 | 
|---|
| 145 |  ... S RMPR6("VALUE")=+$P(RMPRSS,"^",2)
 | 
|---|
| 146 |  ... S RMPR6("UNIT")=+$P(RMPRSS,"^",3)
 | 
|---|
| 147 |  ... S RMPR6("VENDOR IEN")=RMPRV
 | 
|---|
| 148 |  ... K RMPR11
 | 
|---|
| 149 |  ... S RMPR11("STATION")=RMPR5("STATION")
 | 
|---|
| 150 |  ... S RMPR11("STATION IEN")=RMPR5("STATION")
 | 
|---|
| 151 |  ... S RMPR11("HCPCS")=RMPRH
 | 
|---|
| 152 |  ... S RMPR11("ITEM")=RMPRI
 | 
|---|
| 153 |  ... S RMPR11("UNIT")=$P(RMPRSS,U,3)
 | 
|---|
| 154 |  ... ;
 | 
|---|
| 155 |  ... ; If quantity<0 then create a reconciliation gain
 | 
|---|
| 156 |  ... ; of the amount followed by a 0 reconciliation
 | 
|---|
| 157 |  ... I RMPR6("QUANTITY")<0 D
 | 
|---|
| 158 |  .... K RMPR
 | 
|---|
| 159 |  .... S RMPR("QUANTITY")=0-RMPR6("QUANTITY")
 | 
|---|
| 160 |  .... S RMPR("VALUE")=$S(RMPR6("VALUE")<0:0-RMPR6("VALUE"),1:RMPR6("VALUE"))
 | 
|---|
| 161 |  .... S RMPR("NEW UNIT COST")=$J(RMPR("VALUE")/RMPR("QUANTITY"),0,2)
 | 
|---|
| 162 |  .... S RMPRUCST=RMPR("NEW UNIT COST")
 | 
|---|
| 163 |  .... S RMPR("VENDOR IEN")=RMPR6("VENDOR IEN")
 | 
|---|
| 164 |  .... S RMPRERR=$$REC^RMPRPIU9(.RMPR,.RMPR11,.RMPR5)
 | 
|---|
| 165 |  .... K RMPR
 | 
|---|
| 166 |  .... S RMPR("QUANTITY")=0
 | 
|---|
| 167 |  .... S RMPR("VENDOR IEN")=RMPR6("VENDOR IEN")
 | 
|---|
| 168 |  .... S RMPR("NEW UNIT COST")=RMPRUCST
 | 
|---|
| 169 |  .... S RMPRERR=$$REC^RMPRPIU9(.RMPR,.RMPR11,.RMPR5)
 | 
|---|
| 170 |  .... Q
 | 
|---|
| 171 |  ... ;
 | 
|---|
| 172 |  ... ; If +VE qty. just record as a gain
 | 
|---|
| 173 |  ... E  D
 | 
|---|
| 174 |  .... S:RMPR6("VALUE")<0 RMPR6("VALUE")=0-RMPR6("VALUE")
 | 
|---|
| 175 |  .... S RMPR6("NEW UNIT COST")=0
 | 
|---|
| 176 |  .... S:RMPR6("QUANTITY") RMPR6("NEW UNIT COST")=$J(RMPR6("VALUE")/RMPR6("QUANTITY"),0,2)
 | 
|---|
| 177 |  .... S RMPRERR=$$REC^RMPRPIU9(.RMPR6,.RMPR11,.RMPR5)
 | 
|---|
| 178 |  .... Q
 | 
|---|
| 179 |  ... Q
 | 
|---|
| 180 |  .. Q
 | 
|---|
| 181 |  . Q
 | 
|---|
| 182 | TMPHX K ^TMP($J,"H")
 | 
|---|
| 183 |  Q
 | 
|---|
| 184 |  ;
 | 
|---|
| 185 |  ;exit
 | 
|---|
| 186 | CONV1AX K ^TMP($J,"H")
 | 
|---|
| 187 |  Q
 | 
|---|