| 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 | 
|---|