Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: RMPRPIUG

RMPRPIUG.m

Go to the documentation of this file.
RMPRPIUG ;HINCIO/ODJ - CONVERT OLD PIP TO NEW PIP ;7/30/02  08:19
 ;;3.0;PROSTHETICS;**61**;Feb 09, 1996
 Q
 ;
 ;***** CONV - Convert old PIP files to the new design (start)
 ;             Should be run as post init in patch 61
 ;             No re-start allowed and all Prosthetic Inventory
 ;             menu options including Stock Issue and quick edit
 ;             should be disabled.
 ;             If conversion needs to be re-run then you must call
 ;             KILL^RMPRPIXZ before running this utility.
 ;
CONV I $D(^RMPR(661.5,"B")) D  G CONVX ;don't convert if 661.5 has a rec
 . I '$D(IO("Q")) D
 .. W !!
 .. W "** File 661.5 already exists, aborting conversion, please log NOIS"
 .. Q
 . Q
DUZ S RMPRDUZ=$$GETUSR^RMPRPIU0(DUZ)
 I RMPRDUZ="" D  G CONVX ;need valid DUZ
 . I '$D(IO("Q")) D
 .. W !!
 .. W "** Need valid DUZ variable set"
 .. Q
 . Q
 I '$D(IO("Q")) D
 . W !,"PIP Old to New file conversion starting."
 . Q
 K ^TMP($J)
 D LOCN^RMPRPIUJ ; create locations (old to new map in ^TMP($J,"LOCN")
 D CONV^RMPRPIUI ; create commercial items that exist in 661.3
 D CONV1A        ; create current inventory (from 661.3)
 D CONV^RMPRPIUH ; create issues (from 660 and 661.2)
 D REC^RMPRPIUK  ; create initial balancing reconciliations
 D BAL^RMPRPIUK  ; create balance history (661.9)
 D UNIT^RMPRPIUJ  ; update unit of issue (661.7)
 K ^TMP($J)
RENDX S DIK="^RMPR(661.11," D IXALL^DIK
 I '$D(IO("Q")) D
 . W !,"PIP Old to New file conversion complete.",!
 . Q
CONVX Q
 ;
 ; Convert current inventory based on file 661.3
 ; Main Loop on location
CONV1A N RMPRL,RMPRHREC,RMPRERR,RMPR5,RMPRI,RMPRREC,RMPRITM,X,Y,DA,RMPRSS
 N RMPRH,RMPRHIEN,RMPR4,RMPR6,RMPR,RMPR11,RMPRSRC,RMPRTODT,RMPR41
 I '$D(IO("Q")) D
 . W !,"Creating Current Inventory - file 661.7 "
 . Q
 D NOW^%DTC S RMPRTODT=$P(%,".",1)
 S RMPRL=0
CONV1 S RMPRL=$O(^RMPR(661.3,RMPRL))
 I '+RMPRL G CONV1AX
 I '$D(^TMP($J,"LOCN",RMPRL)) G CONV1
 S RMPR5("IEN")=^TMP($J,"LOCN",RMPRL)
 S RMPRREC=^RMPR(661.3,RMPRL,0)
 S RMPR5("STATION")=$P(RMPRREC,"^",3)
 ;
 ; Loop on the HCPCS node in 661.3
 K ^TMP($J,"H")
 S RMPRH=0
CONV2 S RMPRH=$O(^RMPR(661.3,RMPRL,1,RMPRH))
 I '$D(IO("Q")) D
 . W:$X=79 ! W "."
 . Q
 I '+RMPRH D  G CONV1
 . D TMPH(.RMPR5)
 . K ^TMP($J,"H")
 . Q
 S RMPRREC=$G(^RMPR(661.3,RMPRL,1,RMPRH,0))
 S RMPRHIEN=$P(RMPRREC,"^",1) ;ien to 661.1
 I RMPRHIEN="" G CONV2 ;ignore if null 661.1 ptr
 I '$D(^RMPR(661.1,RMPRHIEN,0)) G CONV2 ;ignore if bad ptr
 S RMPRHREC=^RMPR(661.1,RMPRHIEN,0)
 K RMPR11
 S RMPR11("STATION")=RMPR5("STATION")
 S RMPR11("STATION IEN")=RMPR5("STATION")
 S RMPR11("HCPCS")=$P(RMPRHREC,"^",1) ;get HCPCS code from 661.1
 I RMPR11("HCPCS")="" G CONV2 ;ignore if null HCPCS code
 ;
 ; Loop on HCPCS Item node in 661.3
 S RMPRI=0
CONV3 S RMPRI=$O(^RMPR(661.3,RMPRL,1,RMPRH,1,RMPRI))
 I '+RMPRI G CONV2
 S RMPRREC=$G(^RMPR(661.3,RMPRL,1,RMPRH,1,RMPRI,0))
 I $P($P(RMPRREC,"^",1),"-",1)'=RMPR11("HCPCS") G CONV3 ;bad HCPCS
 S RMPR11("SOURCE")="C"
 I $P(RMPRREC,"^",9)="V" S RMPR11("SOURCE")="V"
 S RMPRITM=$P($P(RMPRREC,"^",1),"-",2)
 I RMPRITM="" G CONV3
 S RMPR11("UNIT")=$P(RMPRREC,"^",4)
 S RMPR7("UNIT")=$P(RMPRREC,"^",4)
 K RMPR6
 S RMPR6("QUANTITY")=+$P(RMPRREC,"^",2)
 S RMPR6("VALUE")=+$P(RMPRREC,"^",3)
 S RMPR6("VALUE")=$J(RMPR6("VALUE"),0,2)
 S RMPR6("VENDOR IEN")=$P(RMPRREC,"^",5)
 K RMPR4
 S RMPR4("RE-ORDER QTY")=+$P(RMPRREC,"^",6)
 K RMPR41
 S RMPR41("ORDER QTY")=+$P(RMPRREC,"^",11)
 D GETITM^RMPRPIUH(.RMPR11,RMPRHIEN,RMPRITM)
 ;
 ; Create HCPCS Item Re-Order record 661.4
 I '$D(^RMPR(661.4,"ASLHI",RMPR11("STATION IEN"),RMPR5("IEN"),RMPR11("HCPCS"),RMPR11("ITEM"))) D
 . S RMPRERR=$$CRE^RMPRPIX4(.RMPR4,.RMPR11,.RMPR5)
 . Q
 ;
 ; Save in Temp global for later update
 I RMPR6("VENDOR IEN")="" G CONV3
 I $D(^TMP($J,"H",RMPR11("HCPCS"),RMPR11("ITEM"),RMPR6("VENDOR IEN"))) D
 . S RMPRSS=^TMP($J,"H",RMPR11("HCPCS"),RMPR11("ITEM"),RMPR6("VENDOR IEN"))
 . S $P(RMPRSS,"^",1)=$P(RMPRSS,"^",1)+RMPR6("QUANTITY")
 . S $P(RMPRSS,"^",2)=$P(RMPRSS,"^",2)+RMPR6("VALUE")
 . Q
 E  D
 . S RMPRSS=RMPR6("QUANTITY")
 . S $P(RMPRSS,"^",2)=RMPR6("VALUE")
 . Q
 S RMPRSS=RMPRSS_U_$G(RMPR11("UNIT"))
 S ^TMP($J,"H",RMPR11("HCPCS"),RMPR11("ITEM"),RMPR6("VENDOR IEN"))=RMPRSS
 ;
 ; If there is an order quantity then save it to file 661.41
 I RMPR41("ORDER QTY")>0 D
 . S RMPR41("VENDOR")=RMPR6("VENDOR IEN")
 . S RMPR41("DATE ORDER")=RMPRTODT
 . S RMPR41("STATUS")="O"
 . S RMPRERR=$$CRE^RMPRPIXN(.RMPR41,.RMPR11)
 . Q
 G CONV3 ;next item in 661.3
 ;
 ; Process the ^TMP($J,"H") global just created
TMPH(RMPR5) ;
 N RMPRH,RMPRI,RMPRV,RMPR,RMPR11,RMPRERR,RMPRSS,RMPR6,RMPRUCST
 S RMPRH=""
 F  S RMPRH=$O(^TMP($J,"H",RMPRH)) Q:RMPRH=""  D
 . S RMPRI=""
 . F  S RMPRI=$O(^TMP($J,"H",RMPRH,RMPRI)) Q:RMPRI=""  D
 .. S RMPRV=""
 .. F  S RMPRV=$O(^TMP($J,"H",RMPRH,RMPRI,RMPRV)) Q:RMPRV=""  D
 ... S RMPRSS=^TMP($J,"H",RMPRH,RMPRI,RMPRV)
 ... K RMPR6
 ... S RMPR6("QUANTITY")=+$P(RMPRSS,"^",1)
 ... S RMPR6("VALUE")=+$P(RMPRSS,"^",2)
 ... S RMPR6("UNIT")=+$P(RMPRSS,"^",3)
 ... S RMPR6("VENDOR IEN")=RMPRV
 ... K RMPR11
 ... S RMPR11("STATION")=RMPR5("STATION")
 ... S RMPR11("STATION IEN")=RMPR5("STATION")
 ... S RMPR11("HCPCS")=RMPRH
 ... S RMPR11("ITEM")=RMPRI
 ... S RMPR11("UNIT")=$P(RMPRSS,U,3)
 ... ;
 ... ; If quantity<0 then create a reconciliation gain
 ... ; of the amount followed by a 0 reconciliation
 ... I RMPR6("QUANTITY")<0 D
 .... K RMPR
 .... S RMPR("QUANTITY")=0-RMPR6("QUANTITY")
 .... S RMPR("VALUE")=$S(RMPR6("VALUE")<0:0-RMPR6("VALUE"),1:RMPR6("VALUE"))
 .... S RMPR("NEW UNIT COST")=$J(RMPR("VALUE")/RMPR("QUANTITY"),0,2)
 .... S RMPRUCST=RMPR("NEW UNIT COST")
 .... S RMPR("VENDOR IEN")=RMPR6("VENDOR IEN")
 .... S RMPRERR=$$REC^RMPRPIU9(.RMPR,.RMPR11,.RMPR5)
 .... K RMPR
 .... S RMPR("QUANTITY")=0
 .... S RMPR("VENDOR IEN")=RMPR6("VENDOR IEN")
 .... S RMPR("NEW UNIT COST")=RMPRUCST
 .... S RMPRERR=$$REC^RMPRPIU9(.RMPR,.RMPR11,.RMPR5)
 .... Q
 ... ;
 ... ; If +VE qty. just record as a gain
 ... E  D
 .... S:RMPR6("VALUE")<0 RMPR6("VALUE")=0-RMPR6("VALUE")
 .... S RMPR6("NEW UNIT COST")=0
 .... S:RMPR6("QUANTITY") RMPR6("NEW UNIT COST")=$J(RMPR6("VALUE")/RMPR6("QUANTITY"),0,2)
 .... S RMPRERR=$$REC^RMPRPIU9(.RMPR6,.RMPR11,.RMPR5)
 .... Q
 ... Q
 .. Q
 . Q
TMPHX K ^TMP($J,"H")
 Q
 ;
 ;exit
CONV1AX K ^TMP($J,"H")
 Q