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