IBCRHBRA ;ALB/ARH - RATES: UPLOAD RC V1 CPT 2000 CHARGES ; 10-OCT-2000
;;2.0;INTEGRATED BILLING;**138,169**;21-MAR-94
;;Per VHA Directive 10-93-142, this routine should not be modified.
;
; add CPT 2000 Replacement Codes to RC v1
; these are new codes that directly replace codes that have been inactivated, the charges for the old code
; can be used as the charge for the new code
;
CPT2000 ; add CPT replacement codes to RC charge sets, use the current charge of the CPT they are replacing
N IBI,IBLN,IBOLD,IBNEW,IBITM,IBCI,IBCIN,IBCS,IBCSN,IBCNT,IB2000DT,X,Y,DIC,IBENDDT S IBCNT=0
S IB2000DT=3000201
S IBENDDT=$$VERSEDT^IBCRHBRV(1)
;
I '$D(ZTQUEUED) W !!,"Adding CPT 2000 Replacement Charges for RC v1 ... "
F IBI=1:1 S IBLN=$P($T(F2000+IBI),";;",2) Q:IBLN="" I $E(IBLN,1)'=" " D
. ;
. S IBOLD=$P(IBLN,U,1) I IBOLD'?5N Q
. S IBNEW=$P(IBLN,U,2) I IBNEW'?5N Q
. ;
. S IBITM=IBOLD_";ICPT(",IBCI=0 F S IBCI=$O(^IBA(363.2,"B",IBITM,IBCI)) Q:'IBCI D
.. ;
.. S IBCIN=$G(^IBA(363.2,+IBCI,0)) I $P(IBCIN,U,3)'=2990901,$P(IBCIN,U,3)'=2981001 Q
.. S IBCS=$P(IBCIN,U,2),IBCSN=$G(^IBE(363.1,+IBCS,0)) I '$$CSRC(IBCS) Q
.. ;
.. D DEL(IBCS,IBNEW,IB2000DT,$P(IBCIN,U,5))
.. I $$EXISTS(IBCS,IBNEW,IB2000DT,$P(IBCIN,U,5)) Q
.. ;
.. I $$ADDCI^IBCREF(IBCS,IBNEW,IB2000DT,$P(IBCIN,U,5),$P(IBCIN,U,6),$P(IBCIN,U,7),IBENDDT) S IBCNT=IBCNT+1
;
I '$D(ZTQUEUED) W IBCNT," charges added."
Q
;
EXISTS(IBCS,IBITM,IBEFFDT,IBCHG) ; return ifn of charge item if this charge exists
N IBX,IBCI S IBX=0
I +$G(IBCS),+$G(IBITM),+$G(IBEFFDT),+$G(IBCHG) D
. S IBCI=0 F S IBCI=$O(^IBA(363.2,"AIVDTS"_IBCS,IBITM,-IBEFFDT,IBCI)) Q:'IBCI D Q:+IBX
.. I $P($G(^IBA(363.2,+IBCI,0)),U,5)=IBCHG S IBX=IBCI
Q IBX
;
DEL(IBCS,IBITM,IBEFFDT,IBCHG) ; delete any existing charges the site may have added to the charge sets for the New CPT replacement codes
; the charge to be deleted must be effective before RC v1.1 and it must not be the correct replacement,
; ie. delete any v1 charge for the item in a CS that does not match the date/charge passed in
N IBDT,IBCI,IBCIN,IBCNT,X,Y,DIC,DIK,DA S IBCNT=0 I '$G(IBEFFDT)!('$G(IBCHG)) Q
;
S IBDT="" F S IBDT=$O(^IBA(363.2,"AIVDTS"_+$G(IBCS),+$G(IBITM),IBDT)) Q:IBDT="" D
. I -IBDT>3000701 Q
. ;
. S IBCI=0 F S IBCI=$O(^IBA(363.2,"AIVDTS"_IBCS,IBITM,IBDT,IBCI)) Q:'IBCI D
.. S IBCIN=$G(^IBA(363.2,+IBCI,0)) I -IBDT=IBEFFDT,IBCHG=$P(IBCIN,U,5) Q
.. ;
.. S DA=IBCI,DIK="^IBA(363.2," D ^DIK K DA,DIK S IBCNT=IBCNT+1
;
Q
;
CSRC(IBCS) ; return true if the Charge Set is Reasonable Charges and CPT based
N IBX,IBCSN,IBBRN S IBX=0
I +$G(IBCS) S IBCSN=$G(^IBE(363.1,+IBCS,0))
I $G(IBCSN)'="" S IBBRN=$G(^IBE(363.3,+$P(IBCSN,U,2),0))
;
I $G(IBBRN)'="",$E(IBBRN,1,3)="RC ",$P(IBBRN,U,4)=2 S IBX=1
;
Q IBX
;
;
F2000 ; old^new CPTs
;;32001^32997
;;56300^49320
;;56301^58670
;;56302^58671
;;56303^58662
;;56304^58660
;;56305^49321
;;56306^49322
;;56307^58661
;;56308^58550
;;56309^58551
;;56310^44200
;;56311^38570
;;56312^38571
;;56313^38572
;;56314^49323
;;56315^44970
;;56316^49650
;;56317^49651
;;56318^54690
;;56320^55550
;;56322^43651
;;56323^43652
;;56324^47570
;;56340^47562
;;56341^47563
;;56342^47564
;;56343^58673
;;56344^58672
;;56346^43653
;;56348^44202
;;56349^43280
;;56350^58555
;;56351^58558
;;56352^58559
;;56353^58560
;;56354^58561
;;56355^58562
;;56356^58563
;;56362^47560
;;56363^47561
;;64442^64475
;;64443^64476
;;80049^80048
;;80054^80053
;;80058^80076
;;80059^80074
;;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HIBCRHBRA 3608 printed Sep 02, 2024@19:04:33 Page 2
IBCRHBRA ;ALB/ARH - RATES: UPLOAD RC V1 CPT 2000 CHARGES ; 10-OCT-2000
+1 ;;2.0;INTEGRATED BILLING;**138,169**;21-MAR-94
+2 ;;Per VHA Directive 10-93-142, this routine should not be modified.
+3 ;
+4 ; add CPT 2000 Replacement Codes to RC v1
+5 ; these are new codes that directly replace codes that have been inactivated, the charges for the old code
+6 ; can be used as the charge for the new code
+7 ;
CPT2000 ; add CPT replacement codes to RC charge sets, use the current charge of the CPT they are replacing
+1 NEW IBI,IBLN,IBOLD,IBNEW,IBITM,IBCI,IBCIN,IBCS,IBCSN,IBCNT,IB2000DT,X,Y,DIC,IBENDDT
SET IBCNT=0
+2 SET IB2000DT=3000201
+3 SET IBENDDT=$$VERSEDT^IBCRHBRV(1)
+4 ;
+5 IF '$DATA(ZTQUEUED)
WRITE !!,"Adding CPT 2000 Replacement Charges for RC v1 ... "
+6 FOR IBI=1:1
SET IBLN=$PIECE($TEXT(F2000+IBI),";;",2)
if IBLN=""
QUIT
IF $EXTRACT(IBLN,1)'=" "
Begin DoDot:1
+7 ;
+8 SET IBOLD=$PIECE(IBLN,U,1)
IF IBOLD'?5N
QUIT
+9 SET IBNEW=$PIECE(IBLN,U,2)
IF IBNEW'?5N
QUIT
+10 ;
+11 SET IBITM=IBOLD_";ICPT("
SET IBCI=0
FOR
SET IBCI=$ORDER(^IBA(363.2,"B",IBITM,IBCI))
if 'IBCI
QUIT
Begin DoDot:2
+12 ;
+13 SET IBCIN=$GET(^IBA(363.2,+IBCI,0))
IF $PIECE(IBCIN,U,3)'=2990901
IF $PIECE(IBCIN,U,3)'=2981001
QUIT
+14 SET IBCS=$PIECE(IBCIN,U,2)
SET IBCSN=$GET(^IBE(363.1,+IBCS,0))
IF '$$CSRC(IBCS)
QUIT
+15 ;
+16 DO DEL(IBCS,IBNEW,IB2000DT,$PIECE(IBCIN,U,5))
+17 IF $$EXISTS(IBCS,IBNEW,IB2000DT,$PIECE(IBCIN,U,5))
QUIT
+18 ;
+19 IF $$ADDCI^IBCREF(IBCS,IBNEW,IB2000DT,$PIECE(IBCIN,U,5),$PIECE(IBCIN,U,6),$PIECE(IBCIN,U,7),IBENDDT)
SET IBCNT=IBCNT+1
End DoDot:2
End DoDot:1
+20 ;
+21 IF '$DATA(ZTQUEUED)
WRITE IBCNT," charges added."
+22 QUIT
+23 ;
EXISTS(IBCS,IBITM,IBEFFDT,IBCHG) ; return ifn of charge item if this charge exists
+1 NEW IBX,IBCI
SET IBX=0
+2 IF +$GET(IBCS)
IF +$GET(IBITM)
IF +$GET(IBEFFDT)
IF +$GET(IBCHG)
Begin DoDot:1
+3 SET IBCI=0
FOR
SET IBCI=$ORDER(^IBA(363.2,"AIVDTS"_IBCS,IBITM,-IBEFFDT,IBCI))
if 'IBCI
QUIT
Begin DoDot:2
+4 IF $PIECE($GET(^IBA(363.2,+IBCI,0)),U,5)=IBCHG
SET IBX=IBCI
End DoDot:2
if +IBX
QUIT
End DoDot:1
+5 QUIT IBX
+6 ;
DEL(IBCS,IBITM,IBEFFDT,IBCHG) ; delete any existing charges the site may have added to the charge sets for the New CPT replacement codes
+1 ; the charge to be deleted must be effective before RC v1.1 and it must not be the correct replacement,
+2 ; ie. delete any v1 charge for the item in a CS that does not match the date/charge passed in
+3 NEW IBDT,IBCI,IBCIN,IBCNT,X,Y,DIC,DIK,DA
SET IBCNT=0
IF '$GET(IBEFFDT)!('$GET(IBCHG))
QUIT
+4 ;
+5 SET IBDT=""
FOR
SET IBDT=$ORDER(^IBA(363.2,"AIVDTS"_+$GET(IBCS),+$GET(IBITM),IBDT))
if IBDT=""
QUIT
Begin DoDot:1
+6 IF -IBDT>3000701
QUIT
+7 ;
+8 SET IBCI=0
FOR
SET IBCI=$ORDER(^IBA(363.2,"AIVDTS"_IBCS,IBITM,IBDT,IBCI))
if 'IBCI
QUIT
Begin DoDot:2
+9 SET IBCIN=$GET(^IBA(363.2,+IBCI,0))
IF -IBDT=IBEFFDT
IF IBCHG=$PIECE(IBCIN,U,5)
QUIT
+10 ;
+11 SET DA=IBCI
SET DIK="^IBA(363.2,"
DO ^DIK
KILL DA,DIK
SET IBCNT=IBCNT+1
End DoDot:2
End DoDot:1
+12 ;
+13 QUIT
+14 ;
CSRC(IBCS) ; return true if the Charge Set is Reasonable Charges and CPT based
+1 NEW IBX,IBCSN,IBBRN
SET IBX=0
+2 IF +$GET(IBCS)
SET IBCSN=$GET(^IBE(363.1,+IBCS,0))
+3 IF $GET(IBCSN)'=""
SET IBBRN=$GET(^IBE(363.3,+$PIECE(IBCSN,U,2),0))
+4 ;
+5 IF $GET(IBBRN)'=""
IF $EXTRACT(IBBRN,1,3)="RC "
IF $PIECE(IBBRN,U,4)=2
SET IBX=1
+6 ;
+7 QUIT IBX
+8 ;
+9 ;
F2000 ; old^new CPTs
+1 ;;32001^32997
+2 ;;56300^49320
+3 ;;56301^58670
+4 ;;56302^58671
+5 ;;56303^58662
+6 ;;56304^58660
+7 ;;56305^49321
+8 ;;56306^49322
+9 ;;56307^58661
+10 ;;56308^58550
+11 ;;56309^58551
+12 ;;56310^44200
+13 ;;56311^38570
+14 ;;56312^38571
+15 ;;56313^38572
+16 ;;56314^49323
+17 ;;56315^44970
+18 ;;56316^49650
+19 ;;56317^49651
+20 ;;56318^54690
+21 ;;56320^55550
+22 ;;56322^43651
+23 ;;56323^43652
+24 ;;56324^47570
+25 ;;56340^47562
+26 ;;56341^47563
+27 ;;56342^47564
+28 ;;56343^58673
+29 ;;56344^58672
+30 ;;56346^43653
+31 ;;56348^44202
+32 ;;56349^43280
+33 ;;56350^58555
+34 ;;56351^58558
+35 ;;56352^58559
+36 ;;56353^58560
+37 ;;56354^58561
+38 ;;56355^58562
+39 ;;56356^58563
+40 ;;56362^47560
+41 ;;56363^47561
+42 ;;64442^64475
+43 ;;64443^64476
+44 ;;80049^80048
+45 ;;80054^80053
+46 ;;80058^80076
+47 ;;80059^80074
+48 ;;