[613] | 1 | IBCU7A ;ALB/ARH - BILL PROCEDURE MANIPULATIONS ; 10-OCT-03
|
---|
| 2 | ;;2.0;INTEGRATED BILLING;**245,287**;21-MAR-94
|
---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | ; Based on Reasonable Charges v2.0+, certain CPT codes should be reported in a certain way
|
---|
| 6 | ; this set of routines manipulates the bill's procedure to conform to the charges and proper billing
|
---|
| 7 | ;
|
---|
| 8 | ; criteria: bill must be a Reasonable Charges bill
|
---|
| 9 | ; charges must be v2.0 or greater
|
---|
| 10 | ;
|
---|
| 11 | ; called after bill created and populated to reset procedures
|
---|
| 12 | ;
|
---|
| 13 | PROC(IBIFN,EDIT) ; manipulate bill procedures base on charges and the clinical data
|
---|
| 14 | ; EDIT is a flag for which manipulations should be completed, if true then only the charge significant manipulations are preformed
|
---|
| 15 | N IB0,IBBCT,IBPBTYP S EDIT=$G(EDIT)
|
---|
| 16 | I '$O(^DGCR(399,+$G(IBIFN),"CP",0)) Q
|
---|
| 17 | S IB0=$G(^DGCR(399,+IBIFN,0)) Q:IB0="" S IBBCT=$P(IB0,U,27) Q:'IBBCT
|
---|
| 18 | I +$P($G(^DGCR(399,+IBIFN,"U")),U,2)<$$VERSDT^IBCRU8(2) Q
|
---|
| 19 | I '$$BILLRATE^IBCRU3($P(IB0,U,7),$P(IB0,U,5),$P(IB0,U,3),"RC") Q
|
---|
| 20 | ;
|
---|
| 21 | S IBPBTYP=$P($$RCDV^IBCRU8(+$P(IB0,U,22)),U,3) Q:'IBPBTYP
|
---|
| 22 | ;
|
---|
| 23 | I 'EDIT,IBPBTYP<3 D DELCLN(IBIFN) ; delete TC/26 component clinical procedures from bills
|
---|
| 24 | I 'EDIT,IBPBTYP<3 D ADDCLN(IBIFN) ; add 26 modified clinical procedures to bill
|
---|
| 25 | I 'EDIT,IBPBTYP<3 D DELTC(IBIFN) ; delete all TC modifiers from institutional bills
|
---|
| 26 | ;
|
---|
| 27 | D MOD26(IBIFN) ; if only professional charge is a 26 charge then add or delete modifier 26 on procedure
|
---|
| 28 | ;
|
---|
| 29 | D BNDL^IBCU7A1(IBIFN) ; split or combine bundled procedures
|
---|
| 30 | ;
|
---|
| 31 | K ^UTILITY($J)
|
---|
| 32 | Q
|
---|
| 33 | ;
|
---|
| 34 | ;
|
---|
| 35 | ;
|
---|
| 36 | DELTC(IBIFN) ; delete TC modifier from all procedures on RC v2.0+ Institutional bills
|
---|
| 37 | N IB0,IBBCT,IBTC,IBBCPT,IBLN,IBEVDT,IBMODS,IBV2,IBCHANGE S IBCHANGE=0
|
---|
| 38 | S IB0=$G(^DGCR(399,+$G(IBIFN),0)) Q:IB0="" S IBBCT=$P(IB0,U,27) I IBBCT'=1 Q
|
---|
| 39 | S IBTC=+$$MOD^ICPTMOD("TC","E") Q:IBTC<1 S IBV2=$$VERSDT^IBCRU8(2)
|
---|
| 40 | ;
|
---|
| 41 | S IBBCPT=0 F S IBBCPT=$O(^DGCR(399,IBIFN,"CP",IBBCPT)) Q:'IBBCPT D
|
---|
| 42 | . S IBLN=$G(^DGCR(399,IBIFN,"CP",IBBCPT,0)),IBEVDT=$P(IBLN,U,2) Q:IBLN'[";ICPT("
|
---|
| 43 | . I IBEVDT<IBV2 Q
|
---|
| 44 | . S IBMODS=","_$$GETMOD^IBEFUNC(IBIFN,IBBCPT)_","
|
---|
| 45 | . I IBMODS[IBTC D DELMOD^IBCU73(IBIFN,IBBCPT,IBTC) S IBCHANGE=IBCHANGE+1
|
---|
| 46 | I '$D(ZTQUEUED),'$G(IBAUTO),+IBCHANGE W !,"Modifier TC Deleted from all Procedures ("_IBCHANGE_")."
|
---|
| 47 | Q
|
---|
| 48 | ;
|
---|
| 49 | DELCLN(IBIFN) ; remove clinical procedures from RC v2.0+ bills
|
---|
| 50 | ; - remove from institutional bill any procedures with a 26 in the clincal data
|
---|
| 51 | ; - remove from professional bill any procedures with a TC in the clinical data
|
---|
| 52 | ; to delete a procedure the outpatient encounter pointer must match the clinical encounter
|
---|
| 53 | ; (checks for non-modified procedure on bill in case modifier was manually removed)
|
---|
| 54 | ;
|
---|
| 55 | N IB0,IBBCT,IBMODE,IBMOD,IBX,IBLN,IBOE,IBCM,IBCPT,IBBCPT,IBLN1,IBFND,IBEND,IBV2,IBCHANGE S IBCHANGE=0
|
---|
| 56 | S IB0=$G(^DGCR(399,+$G(IBIFN),0)) Q:IB0="" S IBBCT=$P(IB0,U,27) I 'IBBCT Q
|
---|
| 57 | S IBMODE=$S(IBBCT=1:26,IBBCT=2:"TC",1:"") Q:IBMODE="" S IBV2=$$VERSDT^IBCRU8(2)
|
---|
| 58 | S IBMOD=+$$MOD^ICPTMOD(IBMODE,"E") Q:IBMOD<1
|
---|
| 59 | ;
|
---|
| 60 | D GETSD^IBCU7U(IBIFN)
|
---|
| 61 | S IBX=0 F S IBX=$O(^UTILITY($J,"CPT-CNT",IBX)) Q:'IBX D
|
---|
| 62 | . S IBLN=$G(^UTILITY($J,"CPT-CNT",IBX)),(IBEND,IBFND)=0
|
---|
| 63 | . I +$P(IBLN,U,2)<IBV2 Q
|
---|
| 64 | . S IBOE=+$P(IBLN,U,11),IBCM=","_$P(IBLN,U,10)_","
|
---|
| 65 | . ;
|
---|
| 66 | . I IBCM[(","_IBMOD_",") D
|
---|
| 67 | .. S IBCPT=+IBLN_";ICPT(",IBBCPT=0 F S IBBCPT=$O(^DGCR(399,IBIFN,"CP","B",IBCPT,IBBCPT)) Q:'IBBCPT D Q:IBEND
|
---|
| 68 | ... S IBLN1=$G(^DGCR(399,IBIFN,"CP",IBBCPT,0))
|
---|
| 69 | ... I IBOE=$P(IBLN1,U,20) S IBFND=IBBCPT I $O(^DGCR(399,IBIFN,"CP",IBBCPT,"MOD","C",IBMOD,0)) S IBEND=1
|
---|
| 70 | .. I +IBFND,+$$DELCPT^IBCU7U(IBIFN,IBBCPT) S IBCHANGE=IBCHANGE+1
|
---|
| 71 | I '$D(ZTQUEUED),'$G(IBAUTO),+IBCHANGE W !,"Modifier "_IBMODE_" Procedures Deleted ("_IBCHANGE_")."
|
---|
| 72 | Q
|
---|
| 73 | ;
|
---|
| 74 | ADDCLN(IBIFN) ; add 26 modified clinical procedures to RC v2.0+ bills
|
---|
| 75 | ; - add to professional bill any procedures with a 26 in the clinical data
|
---|
| 76 | ; to add the clinical procedure the bill must not already have that procedure for the date
|
---|
| 77 | ; (checks for non-modified procedure on bill in case modifier was manually removed)
|
---|
| 78 | ;
|
---|
| 79 | N IB0,IBBCT,IBMOD,IBX,IBLN,IBEVDT,IBCM,IBCPT,IBBCPT,IBLN1,IBFND,IBEND,IBV2,IBCHANGE S IBCHANGE=0
|
---|
| 80 | S IB0=$G(^DGCR(399,+$G(IBIFN),0)) Q:IB0="" S IBBCT=$P(IB0,U,27) I IBBCT'=2 Q
|
---|
| 81 | S IBMOD=+$$MOD^ICPTMOD("26","E") Q:IBMOD<1 S IBV2=$$VERSDT^IBCRU8(2)
|
---|
| 82 | ;
|
---|
| 83 | D GETSD^IBCU7U(IBIFN)
|
---|
| 84 | S IBX=0 F S IBX=$O(^UTILITY($J,"CPT-CNT",IBX)) Q:'IBX D
|
---|
| 85 | . S IBLN=$G(^UTILITY($J,"CPT-CNT",IBX)),(IBEND,IBFND)=0
|
---|
| 86 | . S IBEVDT=+$P(IBLN,U,2),IBCM=","_$P(IBLN,U,10)_","
|
---|
| 87 | . I IBEVDT<IBV2 Q
|
---|
| 88 | . ;
|
---|
| 89 | . I IBCM[(","_IBMOD_",") D
|
---|
| 90 | .. S IBCPT=+IBLN_";ICPT(",IBBCPT=0 F S IBBCPT=$O(^DGCR(399,IBIFN,"CP","B",IBCPT,IBBCPT)) Q:'IBBCPT D Q:IBEND
|
---|
| 91 | ... S IBLN1=$G(^DGCR(399,IBIFN,"CP",IBBCPT,0))
|
---|
| 92 | ... I IBEVDT=$P(IBLN1,U,2) S IBFND=IBBCPT I $O(^DGCR(399,IBIFN,"CP",IBBCPT,"MOD","C",IBMOD,0)) S IBEND=1
|
---|
| 93 | .. I 'IBFND,+$$ADDCPT^IBCU7U(IBIFN,IBLN) S IBCHANGE=IBCHANGE+1
|
---|
| 94 | I '$D(ZTQUEUED),'$G(IBAUTO),+IBCHANGE W !,"Modifier 26 Procedures Added ("_IBCHANGE_")."
|
---|
| 95 | Q
|
---|
| 96 | ;
|
---|
| 97 | MOD26(IBIFN) ; add/delete modifier 26 to procedure if that is the only professional charge available
|
---|
| 98 | ; added on professional bill, deleted from institutional bill
|
---|
| 99 | N IB0,IBBCT,IB26,IBBCPT,IBLN,IBEVDT,IBMODS,IBV2,IBCHANGE,IBCHGS S IBCHANGE=0
|
---|
| 100 | S IB0=$G(^DGCR(399,+$G(IBIFN),0)) Q:IB0="" S IBBCT=$P(IB0,U,27) I 'IBBCT Q
|
---|
| 101 | S IB26=+$$MOD^ICPTMOD("26","E") Q:IB26<1 S IBV2=$$VERSDT^IBCRU8(2)
|
---|
| 102 | ;
|
---|
| 103 | S IBBCPT=0 F S IBBCPT=$O(^DGCR(399,IBIFN,"CP",IBBCPT)) Q:'IBBCPT D
|
---|
| 104 | . S IBLN=$G(^DGCR(399,IBIFN,"CP",IBBCPT,0)),IBEVDT=$P(IBLN,U,2) Q:IBLN'[";ICPT("
|
---|
| 105 | . I IBEVDT<IBV2 Q
|
---|
| 106 | . S IBMODS=","_$$GETMOD^IBEFUNC(IBIFN,IBBCPT)_","
|
---|
| 107 | . ;
|
---|
| 108 | . S IBCHGS=$$CHGMOD^IBCRCU1(IBIFN,+IBLN,IBEVDT,2) I (+IBCHGS'=1)!(+$P(IBCHGS,":",3)'=IB26) Q
|
---|
| 109 | . ;
|
---|
| 110 | . I IBBCT=1,IBMODS[IB26 D DELMOD^IBCU73(IBIFN,IBBCPT,IB26) S IBCHANGE=IBCHANGE+1
|
---|
| 111 | . I IBBCT=2,IBMODS'[IB26 D ADDMOD^IBCU73(IBIFN,IBBCPT,IB26) S IBCHANGE=IBCHANGE+1
|
---|
| 112 | ;
|
---|
| 113 | I '$D(ZTQUEUED),'$G(IBAUTO),+IBCHANGE W !,"Modifier 26 "_$S(IBBCT=1:"Deleted from",1:"Added to")_" Procedures ("_IBCHANGE_")."
|
---|
| 114 | Q
|
---|
| 115 | ;
|
---|
| 116 | ;
|
---|
| 117 | ASK(IBIFN) ; ask if the bill procedure modifications should be executed
|
---|
| 118 | N DIR,DIRUT,DUOUT,DTOUT,X,Y
|
---|
| 119 | I '$O(^DGCR(399,+$G(IBIFN),"CP",0)) Q
|
---|
| 120 | S DIR("?")="Enter Yes to apply the bill procedure modifications for charges."
|
---|
| 121 | S DIR("?",1)="For Reasonable Charges some procedures must be billed in a certain way to"
|
---|
| 122 | S DIR("?",2)="receive a charge. The bill procedure modifications apply rules to the bill"
|
---|
| 123 | S DIR("?",3)="procedures to ensure the correct Reasonable Charge.",DIR("?",4)=""
|
---|
| 124 | S DIR("?",5)="- Modifier 26 will be added/removed from procedures if it affects the charges."
|
---|
| 125 | S DIR("?",6)="- Certain global procedures with no charge will be split into their component"
|
---|
| 126 | S DIR("?",7)=" procedures which do have charges.",DIR("?",8)=""
|
---|
| 127 | ;
|
---|
| 128 | S DIR("A")="Apply Procedure Updates for Charges" W !!
|
---|
| 129 | S DIR(0)="Y",DIR("B")="YES" D ^DIR K DIR,X I Y=1 D PROC(+IBIFN,1) W !
|
---|
| 130 | Q
|
---|