RMPRPS35 ;HINCIO/ODJ - HCPCS Update Utilities ; 3/25/04 12:27pm
;;3.0;PROSTHETICS;**58,69,76,77,84**,FEB 09,1996
Q
;
; RVD 2/12/02 patch #76 - replace a list of deactivated for 2003 HCPCS
;
; RVD 4/25/02 patch #69 - replace a list of deactivated HCPCS.
; files (661.1 and 661.3)
; RVD patch #77 - Convert old HCPCS to new/replacement HCPCS in PIP.
; - old HCPCS not included in patch #76
; - Remove inactive flag.
;
; AAC 3/26/04 - Patch 84: Convert old HCPCS to new/replacement HCPCS in PIP.
; Replace all CPT Codes with pointer 104840 - code A9900 begin with 1/1/04
; Update all Modifier codes with null
;
; HCPCD - Change HCPCS code in files 660, 664, 664.1, 665, 665.72
; 661.2 and 661.3
; Only to be run if users off the system
; Used where the same HCPCS code has duplicate records.
; Inputs:
; RMPRHPF - IEN of HCPCS to delete
; RMPRHPT - IEN of HCPCS to copy deleted HCPCS to
;
HCPCD(RMPRHPF,RMPRHPT) ;
N RMPRI,RMPRFDA,RMPRFME,RMPRIEN,RMPRS,RMPR65P,RMPRJ,RMPRPTP
N RMPRO1,RMPRO2,RMPRO3,RMPRO4,RMPR641P,RMPR64P,X,Y,DA
;
; Start with file 660 using the H x-ref.
S RMPRI=""
F S RMPRI=$O(^RMPR(660,"H",RMPRHPF,RMPRI)) Q:RMPRI="" D
. ;
. ; Get pointer to 665 and update HCPCS multiples
. S RMPR65P=$P($G(^RMPR(660,RMPRI,0)),"^",2)
. S RMHCIT=$P($G(^RMPR(660,RMPRI,2)),"^",1)
. I RMPR65P'="" D
.. ;
.. ; Update 665.194 multiple
.. Q:'$D(^RMPR(665,RMPR65P,0))
.. S RMPRPTP=$P(^RMPR(665,RMPR65P,0),"^",1)
.. S RMPRJ=0
.. F S RMPRJ=$O(^RMPR(665,RMPR65P,"RMPOC",RMPRJ)) Q:'RMPRJ D
... Q:$P($G(^RMPR(665,RMPR65P,"RMPOC",RMPRJ,0)),"^",7)'=RMPRHPF
... S RMPRIEN=RMPRJ_","_RMPR65P_","
... K RMPRFDA,RMPRFME
... S RMPRFDA(665.194,RMPRIEN,6)=RMPRHPT
... D FILE^DIE("","RMPRFDA","RMPRFME")
... Q
.. ;
.. ; Update 665.723191 multiple
.. S RMPRO1=0
.. F S RMPRO1=$O(^RMPO(665.72,RMPRO1)) Q:'+RMPRO1 D
... S RMPRO2=0
... F S RMPRO2=$O(^RMPO(665.72,RMPRO1,1,RMPRO2)) Q:'+RMPRO2 D
.... S RMPRO3=0
.... F S RMPRO3=$O(^RMPO(665.72,RMPRO1,1,RMPRO2,1,RMPRO3)) Q:'+RMPRO3 D
..... I $D(^RMPO(665.72,RMPRO1,1,RMPRO2,1,RMPRO3,"V",RMPRPTP)) D
...... S RMPRO4=0
...... F S RMPRO4=$O(^RMPO(665.72,RMPRO1,1,RMPRO2,1,RMPRO3,"V",RMPRPTP,1,RMPRO4)) Q:'+RMPRO4 D
....... Q:$P($G(^RMPO(665.72,RMPRO1,1,RMPRO2,1,RMPRO3,"V",RMPRPTP,1,RMPRO4,0)),"^",2)'=RMPRHPF
....... S RMPRIEN=RMPRO4_","_RMPRPTP_","_RMPRO3_","_RMPRO2_","_RMPRO1_","
....... K RMPRFME,RMPRFDA
....... S RMPRFDA(665.723191,RMPRIEN,2)=RMPRHPT
....... D FILE^DIE("","RMPRFDA","RMPRFME")
....... Q
...... Q
..... Q
.... Q
... Q
.. Q
. ;
. ; Update to 664.1 and 664 HCPCS multiples
. S RMPRPTP=RMPR65P ;patient pointer
. I RMPRPTP'="" D
.. ;
.. ; Update 664.16 multiple
.. S RMPR641P=""
.. F S RMPR641P=$O(^RMPR(664.1,"D",RMPRPTP,RMPR641P)) Q:RMPR641P="" D
... S RMPRJ=0
... F S RMPRJ=$O(^RMPR(664.1,RMPR641P,2,RMPRJ)) Q:'+RMPRJ D
.... Q:$P($G(^RMPR(664.1,RMPR641P,2,RMPRJ,2)),"^",1)'=RMPRHPF
.... S RMPRIEN=RMPRJ_","_RMPR641P_","
.... K RMPRFDA,RMPRFME
.... S RMPRFDA(664.16,RMPRIEN,13)=RMPRHPT
.... D FILE^DIE("","RMPRFDA","RMPRFME")
.... Q
... Q
.. Q
. S RMPRPTP=RMPR65P ;patient pointer same as 665 pointer
. I RMPRPTP'="" D
.. ;
.. ; Update 664.02 multiple
.. S RMPR64P=""
.. F S RMPR64P=$O(^RMPR(664,"C",RMPRPTP,RMPR64P)) Q:RMPR64P="" D
... S RMPRJ=0
... F S RMPRJ=$O(^RMPR(664,RMPR64P,1,RMPRJ)) Q:'+RMPRJ D
.... Q:$P($G(^RMPR(664,RMPR64P,1,RMPRJ,0)),"^",16)'=RMPRHPF
.... K RMPRFDA,RMPRFME
.... S RMPRIEN=RMPRJ_","_RMPR64P_","
.... S RMPRFDA(664.02,RMPRIEN,16)=RMPRHPT
.... D FILE^DIE("","RMPRFDA","RMPRFME")
.... Q
... Q
.. Q
. ;
. ; finally update the 660 file
. K RMPRFDA,RMPRFME
. S RMPRIEN=RMPRI_","
. S RMPRFDA(660,RMPRIEN,4.5)=RMPRHPT
. S RMPRFDA(660,RMPRIEN,37)=RMPRHPT_"-"_$P(RMHCIT,"-",2)
. D FILE^DIE("","RMPRFDA","RMPRFME")
. Q
;
; Update PIP files 661.2 and 661.3
HCPCDP S RMPRI=""
F S RMPRI=$O(^RMPR(661.2,"D",RMPRHPF,RMPRI)) Q:RMPRI="" D
. K RMPRFDA,RMPRFME
. S RMPRIEN=RMPRI_","
. S RMPRFDA(661.2,RMPRIEN,3)=RMPRHPT
. D FILE^DIE("","RMPRFDA","RMPRFME")
. Q
S RMPRI=0
F S RMPRI=$O(^RMPR(661.3,RMPRI)) Q:'+RMPRI D
. S RMPRJ=0
. F S RMPRJ=$O(^RMPR(661.3,RMPRI,1,RMPRJ)) Q:'+RMPRJ D
.. Q:$P($G(^RMPR(661.3,RMPRI,1,RMPRJ,0)),"^",1)'=RMPRHPF
.. K RMPRFDA,RMPRFME
.. S RMPRIEN=RMPRJ_","_RMPRI_","
.. S RMPRFDA(661.31,RMPRIEN,.01)=RMPRHPT
.. D FILE^DIE("","RMPRFDA","RMPRFME")
.. Q
. Q
K RMPRFDA,RMPRFME
S RMPRIEN=RMPRHPF_","
S RMPRFDA(661.1,RMPRIEN,.01)="@"
D FILE^DIE("","RMPRFDA","RMPRFME")
HCPCDX Q
;
; ITEM - move Item records from 661.1 from old to new HCPCS
;
; Inputs:
; RMPRHPO - Old HCPCS code being replaced
; RMPRHPN - New HCPCS code
;
ITEM(RMPRHPO,RMPRHPN) ;
N RMPRHPOI,RMPRHPNI,RMPRJ,RMPRFDA,RMPRFME,RMPRIEN,X,Y,DA,RMPRIENA,RMPRK
N RMPRL,RMPRS,RMPRITEM,RMPRIFLG,RML,RMPRIN,RMPRIO
K ^TMP($J,"RM")
S RMPRHPOI=$O(^RMPR(661.1,"B",RMPRHPO,"")) ;old HCPCS ien
S RMPRHPNI=$O(^RMPR(661.1,"B",RMPRHPN,"")) ;new HCPCS ien
Q:'$G(RMPRHPNI)!'$G(RMPRHPOI)
G:$D(^RMPR(661.2,"D",RMPRHPNI)) ITEMX ;quit if Items already on new HCPCS and PIP.
S RMPRIFLG=0
I $P($G(^RMPR(661.1,RMPRHPOI,0)),"^",9)'="" S RMPRIFLG=1
;
; Loop on items and copy to new HCPCS
S RML=0
;S RMPRIEN="+1,"_RMPRHPNI_","
S (RMPRJ,RMPRN)=0
I $D(^RMPR(661.1,RMPRHPNI,3,0)) S RMPRN=$P(^RMPR(661.1,RMPRHPNI,3,0),U,3)
S RMPRIENA=RMPRN
F S RMPRJ=$O(^RMPR(661.1,RMPRHPOI,3,RMPRJ)) Q:'+RMPRJ D
. K RMPRFDA,RMPRFME,DIE
. I RMPRN=0 S RMPRIENA=RMPRJ
. I RMPRN>0 S RMPRIENA=RMPRIENA+1
. S RML=RML+1
. S RMPRIEN="+"_RML_","_RMPRHPNI_","
. S RMPRFDA(661.12,RMPRIEN,.01)=$P(^RMPR(661.1,RMPRHPOI,3,RMPRJ,0),"^",1)
. I $L(RMPRFDA(661.12,RMPRIEN,.01))>30 S RMPRFDA(661.12,RMPRIEN,.01)=$E(RMPRFDA(661.12,RMPRIEN,.01),1,30)
.;don't create an entry if it's already been created.
. Q:$D(^RMPR(661.1,RMPRHPNI,3,"B",RMPRFDA(661.12,RMPRIEN,.01)))
. S ^TMP($J,"RM",RMPRJ)=RMPRIENA
. D UPDATE^DIE("","RMPRFDA","RMPRIENA","RMPRFME")
. Q
;
; Update 661.3 file
S RMPRJ=""
F S RMPRJ=$O(^RMPR(661.3,"C",RMPRHPOI,RMPRJ)) Q:RMPRJ="" D
. S RMPRK=""
. F S RMPRK=$O(^RMPR(661.3,"C",RMPRHPOI,RMPRJ,RMPRK)) Q:RMPRK="" D
.. S RMPRL=0
.. F S RMPRL=$O(^RMPR(661.3,RMPRJ,1,RMPRK,1,RMPRL)) Q:'+RMPRL D
... S RMPRS=^RMPR(661.3,RMPRJ,1,RMPRK,1,RMPRL,0)
... S RMPRITEM=$P(RMPRS,"^",1)
... S RMPRIO=$P(RMPRITEM,"-",2)
... Q:'$D(^TMP($J,"RM",RMPRIO))
... S RMPRIN=^TMP($J,"RM",RMPRIO)
... Q:'$G(RMPRIN)
... S $P(RMPRITEM,"-",1)=RMPRHPN
... S $P(RMPRITEM,"-",2)=RMPRIN
... S RMPRIEN=RMPRL_","_RMPRK_","_RMPRJ_","
... K RMPRFDA,RMPRFME
... S RMPRFDA(661.312,RMPRIEN,.01)=RMPRITEM
... D FILE^DIE("","RMPRFDA","RMPRFME")
... Q
.. S RMPRIEN=RMPRK_","_RMPRJ_","
.. K RMPRFDA,RMPRFME
.. S RMPRFDA(661.31,RMPRIEN,.01)=RMPRHPNI
.. D FILE^DIE("","RMPRFDA","RMPRFME")
.. S RMPRIFLG=1
.. Q
. Q
I RMPRIFLG D
. K RMPRFDA,RMPRFME
. S RMPRIEN=RMPRHPNI_","
. S RMPRFDA(661.1,RMPRIEN,10)=1
. D FILE^DIE("","RMPRFDA","RMPRFME")
. Q
;
; Update PIP files 661.2
S RMPRI=""
F S RMPRI=$O(^RMPR(661.2,"D",RMPRHPOI,RMPRI)) Q:RMPRI="" D
. Q:'$D(^RMPR(661.2,RMPRI,0))
. S RMHCIT=$P(^RMPR(661.2,RMPRI,0),U,9)
. K RMPRFDA,RMPRFME
. S RMPRIEN=RMPRI_","
. S RMPRFDA(661.2,RMPRIEN,3)=RMPRHPNI
. S RMPRFDA(661.2,RMPRIEN,9)=RMPRHPN_"-"_$P(RMHCIT,"-",2)
. D FILE^DIE("","RMPRFDA","RMPRFME")
. Q
;
ITEMX Q
;
; PATCH58 -
; 1 - Repoint duplicate HCPCS
; 2 - Copy item and current inventory to new HCPCS for specified list
; (patch 58 only)
PATCH58 N RMPRA,RMPRI
I '$D(IO("Q")) D
. W !!,"Repointing specified duplicate HCPCS...",!
. Q
D HCPCD(170,133) ;E0277
I '$D(IO("Q")) D
. W !!,"Repointing complete.",!
. Q
;
;for next update, change RMPRA() local array to the HCPCS that need
;to be replaced.
PAT76 ; Set up array and replace HCPCS
S U="^"
I '$D(IO("Q")) D
. W !!,"Replacing the following HCPCS...",!
. Q
;patch #58 - replacement code
;K RMPRA
;S RMPRA(1)="K0182^A7018"
;S RMPRA(2)="K0269^E0572"
S RMFLG61=""
I '$D(^RMPR(661.6)),'$D(^RMPR(661.7)),'$D(^RMPR(661.9)) S RMFLG61=1 D CONV35^RMPRPS36
;F RMI=0:0 S RMI=$O(^RMPR(661.1,"RMPR",RMI)) Q:RMI'>0 D
;.S RMHCDA=^RMPR(661.1,"RMPR",RMI)
;.S RMHOLD=$P(RMHCDA,U,1),RMHNEW=$P(RMHCDA,U,2)
;.I '$D(IO("Q")) D
;..W !,RMHOLD," with ",RMHNEW
;.D ITEM(RMHOLD,RMHNEW)
;.Q
I '$D(IO("Q")) D
. W !!,"HCPCS replacement complete.",!
. Q
Q
CFLG ;remove calculation flag.
W !!,"Removing the Calculation flag.....",!
F RMPRI=1:1:66 S RMPRY=$P($T(FLG+RMPRI),";",4) Q:RMPRY'>0 D
.S $P(^RMPR(661.1,RMPRY,0),U,8)=""
W !!,"Done Removing Calculation flag!!!",!
Q
FLG ;REMOVE calculation flag of the ff HCPCS:
;;E1038;3884
;;E1050;264
;;E1060;265
;;E1070;269
;;E1083;271
;;E1084;270
;;E1085;272
;;E1086;273
;;E1087;274
;;E1088;275
;;E1089;276
;;E1090;277
;;E1092;278
;;E1093;279
;;E1100;280
;;E1110;281
;;E1130;282
;;E1140;283
;;E1150;284
;;E1160;285
;;E1161;3885
;;E1170;286
;;E1171;287
;;E1172;288
;;E1180;289
;;E1190;290
;;E1195;291
;;E1200;292
;;E1210;293
;;E1211;294
;;E1212;295
;;E1213;296
;;E1220;297
;;E1221;298
;;E1222;299
;;E1223;300
;;E1224;301
;;E1225;302
;;E1226;303
;;E1227;304
;;E1228;305
;;E1230;306
;;E1240;307
;;E1250;308
;;E1260;309
;;E1270;310
;;E1280;311
;;E1285;312
;;E1290;313
;;E1295;314
;;E1296;315
;;E1297;316
;;E1298;317
;;K0001;339
;;K0002;340
;;K0003;341
;;K0004;342
;;K0005;343
;;K0006;344
;;K0007;345
;;K0009;347
;;K0010;348
;;K0011;349
;;K0012;350
;;K0014;352
;;END
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HRMPRPS35 9890 printed Oct 16, 2024@18:38:06 Page 2
RMPRPS35 ;HINCIO/ODJ - HCPCS Update Utilities ; 3/25/04 12:27pm
+1 ;;3.0;PROSTHETICS;**58,69,76,77,84**,FEB 09,1996
+2 QUIT
+3 ;
+4 ; RVD 2/12/02 patch #76 - replace a list of deactivated for 2003 HCPCS
+5 ;
+6 ; RVD 4/25/02 patch #69 - replace a list of deactivated HCPCS.
+7 ; files (661.1 and 661.3)
+8 ; RVD patch #77 - Convert old HCPCS to new/replacement HCPCS in PIP.
+9 ; - old HCPCS not included in patch #76
+10 ; - Remove inactive flag.
+11 ;
+12 ; AAC 3/26/04 - Patch 84: Convert old HCPCS to new/replacement HCPCS in PIP.
+13 ; Replace all CPT Codes with pointer 104840 - code A9900 begin with 1/1/04
+14 ; Update all Modifier codes with null
+15 ;
+16 ; HCPCD - Change HCPCS code in files 660, 664, 664.1, 665, 665.72
+17 ; 661.2 and 661.3
+18 ; Only to be run if users off the system
+19 ; Used where the same HCPCS code has duplicate records.
+20 ; Inputs:
+21 ; RMPRHPF - IEN of HCPCS to delete
+22 ; RMPRHPT - IEN of HCPCS to copy deleted HCPCS to
+23 ;
HCPCD(RMPRHPF,RMPRHPT) ;
+1 NEW RMPRI,RMPRFDA,RMPRFME,RMPRIEN,RMPRS,RMPR65P,RMPRJ,RMPRPTP
+2 NEW RMPRO1,RMPRO2,RMPRO3,RMPRO4,RMPR641P,RMPR64P,X,Y,DA
+3 ;
+4 ; Start with file 660 using the H x-ref.
+5 SET RMPRI=""
+6 FOR
SET RMPRI=$ORDER(^RMPR(660,"H",RMPRHPF,RMPRI))
if RMPRI=""
QUIT
Begin DoDot:1
+7 ;
+8 ; Get pointer to 665 and update HCPCS multiples
+9 SET RMPR65P=$PIECE($GET(^RMPR(660,RMPRI,0)),"^",2)
+10 SET RMHCIT=$PIECE($GET(^RMPR(660,RMPRI,2)),"^",1)
+11 IF RMPR65P'=""
Begin DoDot:2
+12 ;
+13 ; Update 665.194 multiple
+14 if '$DATA(^RMPR(665,RMPR65P,0))
QUIT
+15 SET RMPRPTP=$PIECE(^RMPR(665,RMPR65P,0),"^",1)
+16 SET RMPRJ=0
+17 FOR
SET RMPRJ=$ORDER(^RMPR(665,RMPR65P,"RMPOC",RMPRJ))
if 'RMPRJ
QUIT
Begin DoDot:3
+18 if $PIECE($GET(^RMPR(665,RMPR65P,"RMPOC",RMPRJ,0)),"^",7)'=RMPRHPF
QUIT
+19 SET RMPRIEN=RMPRJ_","_RMPR65P_","
+20 KILL RMPRFDA,RMPRFME
+21 SET RMPRFDA(665.194,RMPRIEN,6)=RMPRHPT
+22 DO FILE^DIE("","RMPRFDA","RMPRFME")
+23 QUIT
End DoDot:3
+24 ;
+25 ; Update 665.723191 multiple
+26 SET RMPRO1=0
+27 FOR
SET RMPRO1=$ORDER(^RMPO(665.72,RMPRO1))
if '+RMPRO1
QUIT
Begin DoDot:3
+28 SET RMPRO2=0
+29 FOR
SET RMPRO2=$ORDER(^RMPO(665.72,RMPRO1,1,RMPRO2))
if '+RMPRO2
QUIT
Begin DoDot:4
+30 SET RMPRO3=0
+31 FOR
SET RMPRO3=$ORDER(^RMPO(665.72,RMPRO1,1,RMPRO2,1,RMPRO3))
if '+RMPRO3
QUIT
Begin DoDot:5
+32 IF $DATA(^RMPO(665.72,RMPRO1,1,RMPRO2,1,RMPRO3,"V",RMPRPTP))
Begin DoDot:6
+33 SET RMPRO4=0
+34 FOR
SET RMPRO4=$ORDER(^RMPO(665.72,RMPRO1,1,RMPRO2,1,RMPRO3,"V",RMPRPTP,1,RMPRO4))
if '+RMPRO4
QUIT
Begin DoDot:7
+35 if $PIECE($GET(^RMPO(665.72,RMPRO1,1,RMPRO2,1,RMPRO3,"V",RMPRPTP,1,RMPRO4,0)),"^",2)'=RMPRHPF
QUIT
+36 SET RMPRIEN=RMPRO4_","_RMPRPTP_","_RMPRO3_","_RMPRO2_","_RMPRO1_","
+37 KILL RMPRFME,RMPRFDA
+38 SET RMPRFDA(665.723191,RMPRIEN,2)=RMPRHPT
+39 DO FILE^DIE("","RMPRFDA","RMPRFME")
+40 QUIT
End DoDot:7
+41 QUIT
End DoDot:6
+42 QUIT
End DoDot:5
+43 QUIT
End DoDot:4
+44 QUIT
End DoDot:3
+45 QUIT
End DoDot:2
+46 ;
+47 ; Update to 664.1 and 664 HCPCS multiples
+48 ;patient pointer
SET RMPRPTP=RMPR65P
+49 IF RMPRPTP'=""
Begin DoDot:2
+50 ;
+51 ; Update 664.16 multiple
+52 SET RMPR641P=""
+53 FOR
SET RMPR641P=$ORDER(^RMPR(664.1,"D",RMPRPTP,RMPR641P))
if RMPR641P=""
QUIT
Begin DoDot:3
+54 SET RMPRJ=0
+55 FOR
SET RMPRJ=$ORDER(^RMPR(664.1,RMPR641P,2,RMPRJ))
if '+RMPRJ
QUIT
Begin DoDot:4
+56 if $PIECE($GET(^RMPR(664.1,RMPR641P,2,RMPRJ,2)),"^",1)'=RMPRHPF
QUIT
+57 SET RMPRIEN=RMPRJ_","_RMPR641P_","
+58 KILL RMPRFDA,RMPRFME
+59 SET RMPRFDA(664.16,RMPRIEN,13)=RMPRHPT
+60 DO FILE^DIE("","RMPRFDA","RMPRFME")
+61 QUIT
End DoDot:4
+62 QUIT
End DoDot:3
+63 QUIT
End DoDot:2
+64 ;patient pointer same as 665 pointer
SET RMPRPTP=RMPR65P
+65 IF RMPRPTP'=""
Begin DoDot:2
+66 ;
+67 ; Update 664.02 multiple
+68 SET RMPR64P=""
+69 FOR
SET RMPR64P=$ORDER(^RMPR(664,"C",RMPRPTP,RMPR64P))
if RMPR64P=""
QUIT
Begin DoDot:3
+70 SET RMPRJ=0
+71 FOR
SET RMPRJ=$ORDER(^RMPR(664,RMPR64P,1,RMPRJ))
if '+RMPRJ
QUIT
Begin DoDot:4
+72 if $PIECE($GET(^RMPR(664,RMPR64P,1,RMPRJ,0)),"^",16)'=RMPRHPF
QUIT
+73 KILL RMPRFDA,RMPRFME
+74 SET RMPRIEN=RMPRJ_","_RMPR64P_","
+75 SET RMPRFDA(664.02,RMPRIEN,16)=RMPRHPT
+76 DO FILE^DIE("","RMPRFDA","RMPRFME")
+77 QUIT
End DoDot:4
+78 QUIT
End DoDot:3
+79 QUIT
End DoDot:2
+80 ;
+81 ; finally update the 660 file
+82 KILL RMPRFDA,RMPRFME
+83 SET RMPRIEN=RMPRI_","
+84 SET RMPRFDA(660,RMPRIEN,4.5)=RMPRHPT
+85 SET RMPRFDA(660,RMPRIEN,37)=RMPRHPT_"-"_$PIECE(RMHCIT,"-",2)
+86 DO FILE^DIE("","RMPRFDA","RMPRFME")
+87 QUIT
End DoDot:1
+88 ;
+89 ; Update PIP files 661.2 and 661.3
HCPCDP SET RMPRI=""
+1 FOR
SET RMPRI=$ORDER(^RMPR(661.2,"D",RMPRHPF,RMPRI))
if RMPRI=""
QUIT
Begin DoDot:1
+2 KILL RMPRFDA,RMPRFME
+3 SET RMPRIEN=RMPRI_","
+4 SET RMPRFDA(661.2,RMPRIEN,3)=RMPRHPT
+5 DO FILE^DIE("","RMPRFDA","RMPRFME")
+6 QUIT
End DoDot:1
+7 SET RMPRI=0
+8 FOR
SET RMPRI=$ORDER(^RMPR(661.3,RMPRI))
if '+RMPRI
QUIT
Begin DoDot:1
+9 SET RMPRJ=0
+10 FOR
SET RMPRJ=$ORDER(^RMPR(661.3,RMPRI,1,RMPRJ))
if '+RMPRJ
QUIT
Begin DoDot:2
+11 if $PIECE($GET(^RMPR(661.3,RMPRI,1,RMPRJ,0)),"^",1)'=RMPRHPF
QUIT
+12 KILL RMPRFDA,RMPRFME
+13 SET RMPRIEN=RMPRJ_","_RMPRI_","
+14 SET RMPRFDA(661.31,RMPRIEN,.01)=RMPRHPT
+15 DO FILE^DIE("","RMPRFDA","RMPRFME")
+16 QUIT
End DoDot:2
+17 QUIT
End DoDot:1
+18 KILL RMPRFDA,RMPRFME
+19 SET RMPRIEN=RMPRHPF_","
+20 SET RMPRFDA(661.1,RMPRIEN,.01)="@"
+21 DO FILE^DIE("","RMPRFDA","RMPRFME")
HCPCDX QUIT
+1 ;
+2 ; ITEM - move Item records from 661.1 from old to new HCPCS
+3 ;
+4 ; Inputs:
+5 ; RMPRHPO - Old HCPCS code being replaced
+6 ; RMPRHPN - New HCPCS code
+7 ;
ITEM(RMPRHPO,RMPRHPN) ;
+1 NEW RMPRHPOI,RMPRHPNI,RMPRJ,RMPRFDA,RMPRFME,RMPRIEN,X,Y,DA,RMPRIENA,RMPRK
+2 NEW RMPRL,RMPRS,RMPRITEM,RMPRIFLG,RML,RMPRIN,RMPRIO
+3 KILL ^TMP($JOB,"RM")
+4 ;old HCPCS ien
SET RMPRHPOI=$ORDER(^RMPR(661.1,"B",RMPRHPO,""))
+5 ;new HCPCS ien
SET RMPRHPNI=$ORDER(^RMPR(661.1,"B",RMPRHPN,""))
+6 if '$GET(RMPRHPNI)!'$GET(RMPRHPOI)
QUIT
+7 ;quit if Items already on new HCPCS and PIP.
if $DATA(^RMPR(661.2,"D",RMPRHPNI))
GOTO ITEMX
+8 SET RMPRIFLG=0
+9 IF $PIECE($GET(^RMPR(661.1,RMPRHPOI,0)),"^",9)'=""
SET RMPRIFLG=1
+10 ;
+11 ; Loop on items and copy to new HCPCS
+12 SET RML=0
+13 ;S RMPRIEN="+1,"_RMPRHPNI_","
+14 SET (RMPRJ,RMPRN)=0
+15 IF $DATA(^RMPR(661.1,RMPRHPNI,3,0))
SET RMPRN=$PIECE(^RMPR(661.1,RMPRHPNI,3,0),U,3)
+16 SET RMPRIENA=RMPRN
+17 FOR
SET RMPRJ=$ORDER(^RMPR(661.1,RMPRHPOI,3,RMPRJ))
if '+RMPRJ
QUIT
Begin DoDot:1
+18 KILL RMPRFDA,RMPRFME,DIE
+19 IF RMPRN=0
SET RMPRIENA=RMPRJ
+20 IF RMPRN>0
SET RMPRIENA=RMPRIENA+1
+21 SET RML=RML+1
+22 SET RMPRIEN="+"_RML_","_RMPRHPNI_","
+23 SET RMPRFDA(661.12,RMPRIEN,.01)=$PIECE(^RMPR(661.1,RMPRHPOI,3,RMPRJ,0),"^",1)
+24 IF $LENGTH(RMPRFDA(661.12,RMPRIEN,.01))>30
SET RMPRFDA(661.12,RMPRIEN,.01)=$EXTRACT(RMPRFDA(661.12,RMPRIEN,.01),1,30)
+25 ;don't create an entry if it's already been created.
+26 if $DATA(^RMPR(661.1,RMPRHPNI,3,"B",RMPRFDA(661.12,RMPRIEN,.01)))
QUIT
+27 SET ^TMP($JOB,"RM",RMPRJ)=RMPRIENA
+28 DO UPDATE^DIE("","RMPRFDA","RMPRIENA","RMPRFME")
+29 QUIT
End DoDot:1
+30 ;
+31 ; Update 661.3 file
+32 SET RMPRJ=""
+33 FOR
SET RMPRJ=$ORDER(^RMPR(661.3,"C",RMPRHPOI,RMPRJ))
if RMPRJ=""
QUIT
Begin DoDot:1
+34 SET RMPRK=""
+35 FOR
SET RMPRK=$ORDER(^RMPR(661.3,"C",RMPRHPOI,RMPRJ,RMPRK))
if RMPRK=""
QUIT
Begin DoDot:2
+36 SET RMPRL=0
+37 FOR
SET RMPRL=$ORDER(^RMPR(661.3,RMPRJ,1,RMPRK,1,RMPRL))
if '+RMPRL
QUIT
Begin DoDot:3
+38 SET RMPRS=^RMPR(661.3,RMPRJ,1,RMPRK,1,RMPRL,0)
+39 SET RMPRITEM=$PIECE(RMPRS,"^",1)
+40 SET RMPRIO=$PIECE(RMPRITEM,"-",2)
+41 if '$DATA(^TMP($JOB,"RM",RMPRIO))
QUIT
+42 SET RMPRIN=^TMP($JOB,"RM",RMPRIO)
+43 if '$GET(RMPRIN)
QUIT
+44 SET $PIECE(RMPRITEM,"-",1)=RMPRHPN
+45 SET $PIECE(RMPRITEM,"-",2)=RMPRIN
+46 SET RMPRIEN=RMPRL_","_RMPRK_","_RMPRJ_","
+47 KILL RMPRFDA,RMPRFME
+48 SET RMPRFDA(661.312,RMPRIEN,.01)=RMPRITEM
+49 DO FILE^DIE("","RMPRFDA","RMPRFME")
+50 QUIT
End DoDot:3
+51 SET RMPRIEN=RMPRK_","_RMPRJ_","
+52 KILL RMPRFDA,RMPRFME
+53 SET RMPRFDA(661.31,RMPRIEN,.01)=RMPRHPNI
+54 DO FILE^DIE("","RMPRFDA","RMPRFME")
+55 SET RMPRIFLG=1
+56 QUIT
End DoDot:2
+57 QUIT
End DoDot:1
+58 IF RMPRIFLG
Begin DoDot:1
+59 KILL RMPRFDA,RMPRFME
+60 SET RMPRIEN=RMPRHPNI_","
+61 SET RMPRFDA(661.1,RMPRIEN,10)=1
+62 DO FILE^DIE("","RMPRFDA","RMPRFME")
+63 QUIT
End DoDot:1
+64 ;
+65 ; Update PIP files 661.2
+66 SET RMPRI=""
+67 FOR
SET RMPRI=$ORDER(^RMPR(661.2,"D",RMPRHPOI,RMPRI))
if RMPRI=""
QUIT
Begin DoDot:1
+68 if '$DATA(^RMPR(661.2,RMPRI,0))
QUIT
+69 SET RMHCIT=$PIECE(^RMPR(661.2,RMPRI,0),U,9)
+70 KILL RMPRFDA,RMPRFME
+71 SET RMPRIEN=RMPRI_","
+72 SET RMPRFDA(661.2,RMPRIEN,3)=RMPRHPNI
+73 SET RMPRFDA(661.2,RMPRIEN,9)=RMPRHPN_"-"_$PIECE(RMHCIT,"-",2)
+74 DO FILE^DIE("","RMPRFDA","RMPRFME")
+75 QUIT
End DoDot:1
+76 ;
ITEMX QUIT
+1 ;
+2 ; PATCH58 -
+3 ; 1 - Repoint duplicate HCPCS
+4 ; 2 - Copy item and current inventory to new HCPCS for specified list
+5 ; (patch 58 only)
PATCH58 NEW RMPRA,RMPRI
+1 IF '$DATA(IO("Q"))
Begin DoDot:1
+2 WRITE !!,"Repointing specified duplicate HCPCS...",!
+3 QUIT
End DoDot:1
+4 ;E0277
DO HCPCD(170,133)
+5 IF '$DATA(IO("Q"))
Begin DoDot:1
+6 WRITE !!,"Repointing complete.",!
+7 QUIT
End DoDot:1
+8 ;
+9 ;for next update, change RMPRA() local array to the HCPCS that need
+10 ;to be replaced.
PAT76 ; Set up array and replace HCPCS
+1 SET U="^"
+2 IF '$DATA(IO("Q"))
Begin DoDot:1
+3 WRITE !!,"Replacing the following HCPCS...",!
+4 QUIT
End DoDot:1
+5 ;patch #58 - replacement code
+6 ;K RMPRA
+7 ;S RMPRA(1)="K0182^A7018"
+8 ;S RMPRA(2)="K0269^E0572"
+9 SET RMFLG61=""
+10 IF '$DATA(^RMPR(661.6))
IF '$DATA(^RMPR(661.7))
IF '$DATA(^RMPR(661.9))
SET RMFLG61=1
DO CONV35^RMPRPS36
+11 ;F RMI=0:0 S RMI=$O(^RMPR(661.1,"RMPR",RMI)) Q:RMI'>0 D
+12 ;.S RMHCDA=^RMPR(661.1,"RMPR",RMI)
+13 ;.S RMHOLD=$P(RMHCDA,U,1),RMHNEW=$P(RMHCDA,U,2)
+14 ;.I '$D(IO("Q")) D
+15 ;..W !,RMHOLD," with ",RMHNEW
+16 ;.D ITEM(RMHOLD,RMHNEW)
+17 ;.Q
+18 IF '$DATA(IO("Q"))
Begin DoDot:1
+19 WRITE !!,"HCPCS replacement complete.",!
+20 QUIT
End DoDot:1
+21 QUIT
CFLG ;remove calculation flag.
+1 WRITE !!,"Removing the Calculation flag.....",!
+2 FOR RMPRI=1:1:66
SET RMPRY=$PIECE($TEXT(FLG+RMPRI),";",4)
if RMPRY'>0
QUIT
Begin DoDot:1
+3 SET $PIECE(^RMPR(661.1,RMPRY,0),U,8)=""
End DoDot:1
+4 WRITE !!,"Done Removing Calculation flag!!!",!
+5 QUIT
FLG ;REMOVE calculation flag of the ff HCPCS:
+1 ;;E1038;3884
+2 ;;E1050;264
+3 ;;E1060;265
+4 ;;E1070;269
+5 ;;E1083;271
+6 ;;E1084;270
+7 ;;E1085;272
+8 ;;E1086;273
+9 ;;E1087;274
+10 ;;E1088;275
+11 ;;E1089;276
+12 ;;E1090;277
+13 ;;E1092;278
+14 ;;E1093;279
+15 ;;E1100;280
+16 ;;E1110;281
+17 ;;E1130;282
+18 ;;E1140;283
+19 ;;E1150;284
+20 ;;E1160;285
+21 ;;E1161;3885
+22 ;;E1170;286
+23 ;;E1171;287
+24 ;;E1172;288
+25 ;;E1180;289
+26 ;;E1190;290
+27 ;;E1195;291
+28 ;;E1200;292
+29 ;;E1210;293
+30 ;;E1211;294
+31 ;;E1212;295
+32 ;;E1213;296
+33 ;;E1220;297
+34 ;;E1221;298
+35 ;;E1222;299
+36 ;;E1223;300
+37 ;;E1224;301
+38 ;;E1225;302
+39 ;;E1226;303
+40 ;;E1227;304
+41 ;;E1228;305
+42 ;;E1230;306
+43 ;;E1240;307
+44 ;;E1250;308
+45 ;;E1260;309
+46 ;;E1270;310
+47 ;;E1280;311
+48 ;;E1285;312
+49 ;;E1290;313
+50 ;;E1295;314
+51 ;;E1296;315
+52 ;;E1297;316
+53 ;;E1298;317
+54 ;;K0001;339
+55 ;;K0002;340
+56 ;;K0003;341
+57 ;;K0004;342
+58 ;;K0005;343
+59 ;;K0006;344
+60 ;;K0007;345
+61 ;;K0009;347
+62 ;;K0010;348
+63 ;;K0011;349
+64 ;;K0012;350
+65 ;;K0014;352
+66 ;;END