Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: IBCU7A

IBCU7A.m

Go to the documentation of this file.
  1. IBCU7A ;ALB/ARH - BILL PROCEDURE MANIPULATIONS ; 10-OCT-03
  1. ;;2.0;INTEGRATED BILLING;**245,287,483,564,619**;21-MAR-94;Build 34
  1. ;;Per VA Directive 6402, this routine should not be modified.
  1. ;
  1. ; Based on Reasonable Charges v2.0+, certain CPT codes should be reported in a certain way
  1. ; this set of routines manipulates the bill's procedure to conform to the charges and proper billing
  1. ;
  1. ; criteria: bill must be a Reasonable Charges bill
  1. ; charges must be v2.0 or greater
  1. ;
  1. ; called after bill created and populated to reset procedures
  1. ;
  1. PROC(IBIFN,EDIT) ; manipulate bill procedures base on charges and the clinical data
  1. ; EDIT is a flag for which manipulations should be completed, if true then only the charge significant manipulations are preformed
  1. N IB0,IBBCT,IBPBTYP S EDIT=$G(EDIT)
  1. I '$O(^DGCR(399,+$G(IBIFN),"CP",0)) Q
  1. S IB0=$G(^DGCR(399,+IBIFN,0)) Q:IB0="" S IBBCT=$P(IB0,U,27) Q:'IBBCT
  1. I +$P($G(^DGCR(399,+IBIFN,"U")),U,2)<$$VERSDT^IBCRU8(2) Q
  1. I '$$BILLRATE^IBCRU3($P(IB0,U,7),$P(IB0,U,5),$P(IB0,U,3),"RC") Q
  1. ;
  1. S IBPBTYP=$P($$RCDV^IBCRU8(+$P(IB0,U,22)),U,3) Q:'IBPBTYP
  1. ;
  1. I 'EDIT,IBPBTYP<3 D DELCLN(IBIFN) ; delete TC/26 component clinical procedures from bills
  1. I 'EDIT,IBPBTYP<3 D ADDCLN(IBIFN) ; add 26 modified clinical procedures to bill
  1. ;
  1. ; *483 - add TC modifier to procedures on a provider based facility bill if the only professional charge for the procedure is 26 modified
  1. ;I 'EDIT,IBPBTYP<3 D DELTC(IBIFN) ; delete all TC modifiers from institutional bills
  1. D MODTC(IBIFN)
  1. ;
  1. D MOD26(IBIFN) ; if only professional charge is a 26 charge then add or delete modifier 26 on procedure
  1. ;
  1. D BNDL^IBCU7A1(IBIFN) ; split or combine bundled procedures
  1. ;
  1. K ^UTILITY($J)
  1. Q
  1. ;
  1. ;
  1. ;
  1. DELTC(IBIFN) ; delete TC modifier from all procedures on RC v2.0+ Institutional bills
  1. N IB0,IBBCT,IBTC,IBBCPT,IBLN,IBEVDT,IBMODS,IBV2,IBCHANGE S IBCHANGE=0
  1. S IB0=$G(^DGCR(399,+$G(IBIFN),0)) Q:IB0="" S IBBCT=$P(IB0,U,27) I IBBCT'=1 Q
  1. S IBTC=+$$MOD^ICPTMOD("TC","E") Q:IBTC<1 S IBV2=$$VERSDT^IBCRU8(2)
  1. ;
  1. S IBBCPT=0 F S IBBCPT=$O(^DGCR(399,IBIFN,"CP",IBBCPT)) Q:'IBBCPT D
  1. . S IBLN=$G(^DGCR(399,IBIFN,"CP",IBBCPT,0)),IBEVDT=$P(IBLN,U,2) Q:IBLN'[";ICPT("
  1. . I IBEVDT<IBV2 Q
  1. . S IBMODS=","_$$GETMOD^IBEFUNC(IBIFN,IBBCPT)_","
  1. . I IBMODS[IBTC D DELMOD^IBCU73(IBIFN,IBBCPT,IBTC) S IBCHANGE=IBCHANGE+1
  1. I '$D(ZTQUEUED),'$G(IBAUTO),+IBCHANGE W !,"Modifier TC Deleted from all Procedures ("_IBCHANGE_")."
  1. Q
  1. ;
  1. DELCLN(IBIFN) ; remove clinical procedures from RC v2.0+ bills
  1. ; - remove from institutional bill any procedures with a 26 in the clinical data
  1. ; - remove from professional bill any procedures with a TC in the clinical data
  1. ; to delete a procedure the outpatient encounter pointer must match the clinical encounter
  1. ; (checks for non-modified procedure on bill in case modifier was manually removed)
  1. ;
  1. N IB0,IBBCT,IBMODE,IBMOD,IBX,IBLN,IBOE,IBCM,IBCPT,IBBCPT,IBLN1,IBFND,IBEND,IBV2,IBCHANGE S IBCHANGE=0
  1. S IB0=$G(^DGCR(399,+$G(IBIFN),0)) Q:IB0="" S IBBCT=$P(IB0,U,27) I 'IBBCT Q
  1. S IBMODE=$S(IBBCT=1:26,IBBCT=2:"TC",1:"") Q:IBMODE="" S IBV2=$$VERSDT^IBCRU8(2)
  1. S IBMOD=+$$MOD^ICPTMOD(IBMODE,"E") Q:IBMOD<1
  1. ;
  1. D GETSD^IBCU7U(IBIFN)
  1. S IBX=0 F S IBX=$O(^UTILITY($J,"CPT-CNT",IBX)) Q:'IBX D
  1. . S IBLN=$G(^UTILITY($J,"CPT-CNT",IBX)),(IBEND,IBFND)=0
  1. . I +$P(IBLN,U,2)<IBV2 Q
  1. . S IBOE=+$P(IBLN,U,11),IBCM=","_$P(IBLN,U,10)_","
  1. . ;
  1. . I IBCM[(","_IBMOD_",") D
  1. .. S IBCPT=+IBLN_";ICPT(",IBBCPT=0 F S IBBCPT=$O(^DGCR(399,IBIFN,"CP","B",IBCPT,IBBCPT)) Q:'IBBCPT D Q:IBEND
  1. ... S IBLN1=$G(^DGCR(399,IBIFN,"CP",IBBCPT,0))
  1. ... I IBOE=$P(IBLN1,U,20) S IBFND=IBBCPT I $O(^DGCR(399,IBIFN,"CP",IBBCPT,"MOD","C",IBMOD,0)) S IBEND=1
  1. .. I +IBFND,+$$DELCPT^IBCU7U(IBIFN,IBBCPT) S IBCHANGE=IBCHANGE+1
  1. I '$D(ZTQUEUED),'$G(IBAUTO),+IBCHANGE W !,"Modifier "_IBMODE_" Procedures Deleted ("_IBCHANGE_")."
  1. Q
  1. ;
  1. ADDCLN(IBIFN) ; add 26 modified clinical procedures to RC v2.0+ bills
  1. ; - add to professional bill any procedures with a 26 in the clinical data
  1. ; to add the clinical procedure the bill must not already have that procedure for the date
  1. ; (checks for non-modified procedure on bill in case modifier was manually removed)
  1. ;
  1. N IB0,IBBCT,IBMOD,IBX,IBLN,IBEVDT,IBCM,IBCPT,IBBCPT,IBLN1,IBFND,IBEND,IBV2,IBCHANGE S IBCHANGE=0
  1. S IB0=$G(^DGCR(399,+$G(IBIFN),0)) Q:IB0="" S IBBCT=$P(IB0,U,27) I IBBCT'=2 Q
  1. S IBMOD=+$$MOD^ICPTMOD("26","E") Q:IBMOD<1 S IBV2=$$VERSDT^IBCRU8(2)
  1. ;
  1. D GETSD^IBCU7U(IBIFN)
  1. S IBX=0 F S IBX=$O(^UTILITY($J,"CPT-CNT",IBX)) Q:'IBX D
  1. . S IBLN=$G(^UTILITY($J,"CPT-CNT",IBX)),(IBEND,IBFND)=0
  1. . S IBEVDT=+$P(IBLN,U,2),IBCM=","_$P(IBLN,U,10)_","
  1. . I IBEVDT<IBV2 Q
  1. . ;
  1. . I IBCM[(","_IBMOD_",") D
  1. .. S IBCPT=+IBLN_";ICPT(",IBBCPT=0 F S IBBCPT=$O(^DGCR(399,IBIFN,"CP","B",IBCPT,IBBCPT)) Q:'IBBCPT D Q:IBEND
  1. ... S IBLN1=$G(^DGCR(399,IBIFN,"CP",IBBCPT,0))
  1. ... I IBEVDT=$P(IBLN1,U,2) S IBFND=IBBCPT I $O(^DGCR(399,IBIFN,"CP",IBBCPT,"MOD","C",IBMOD,0)) S IBEND=1
  1. .. I 'IBFND,+$$ADDCPT^IBCU7U(IBIFN,IBLN) S IBCHANGE=IBCHANGE+1
  1. I '$D(ZTQUEUED),'$G(IBAUTO),+IBCHANGE W !,"Modifier 26 Procedures Added ("_IBCHANGE_")."
  1. Q
  1. ;
  1. MOD26(IBIFN) ; add/delete modifier 26 to procedure if that is the only professional charge available
  1. ; added on professional bill, deleted from institutional bill
  1. N IB0,IBBCT,IB26,IBBCPT,IBLN,IBEVDT,IBMODS,IBV2,IBCHANGE,IBCHGS S IBCHANGE=0
  1. S IB0=$G(^DGCR(399,+$G(IBIFN),0)) Q:IB0="" S IBBCT=$P(IB0,U,27) I 'IBBCT Q
  1. S IB26=+$$MOD^ICPTMOD("26","E") Q:IB26<1 S IBV2=$$VERSDT^IBCRU8(2)
  1. ;
  1. S IBBCPT=0 F S IBBCPT=$O(^DGCR(399,IBIFN,"CP",IBBCPT)) Q:'IBBCPT D
  1. . S IBLN=$G(^DGCR(399,IBIFN,"CP",IBBCPT,0)),IBEVDT=$P(IBLN,U,2) Q:IBLN'[";ICPT("
  1. . I IBEVDT<IBV2 Q
  1. . S IBMODS=","_$$GETMOD^IBEFUNC(IBIFN,IBBCPT)_","
  1. . ;
  1. . S IBCHGS=$$CHGMOD^IBCRCU1(IBIFN,+IBLN,IBEVDT,2) I (+IBCHGS'=1)!(+$P(IBCHGS,":",3)'=IB26) Q
  1. . ; *484
  1. . I IBBCT=1,$F(IBMODS,","_IB26_",") D DELMOD^IBCU73(IBIFN,IBBCPT,IB26) S IBCHANGE=IBCHANGE+1
  1. . I IBBCT=2,IBMODS'[IB26 D ADDMOD^IBCU73(IBIFN,IBBCPT,IB26) S IBCHANGE=IBCHANGE+1
  1. ;
  1. I '$D(ZTQUEUED),'$G(IBAUTO),+IBCHANGE W !,"Modifier 26 "_$S(IBBCT=1:"Deleted from",1:"Added to")_" Procedures ("_IBCHANGE_")."
  1. Q
  1. ;
  1. MODTC(IBIFN) ; add TC modifier to procedures on the institutional bill
  1. ; *564 remove TC modifier from procedures on the professional bill
  1. N IB0,IBBCT,IBCHGS,IBTC,IB26,IBBCPT,IBLN,IBEVDT,IBMODS,IBV2,IBCHANGE
  1. S IBCHANGE=0,IBV2=$$VERSDT^IBCRU8(2)
  1. S IB0=$G(^DGCR(399,+$G(IBIFN),0)) Q:IB0=""
  1. S IBBCT=$P(IB0,U,27) Q:'IBBCT
  1. S IBTC=+$$MOD^ICPTMOD("TC","E") Q:IBTC<1
  1. S IB26=+$$MOD^ICPTMOD("26","E") Q:IB26<1
  1. ;
  1. S IBBCPT=0 F S IBBCPT=$O(^DGCR(399,IBIFN,"CP",IBBCPT)) Q:'IBBCPT D
  1. . S IBLN=$G(^DGCR(399,IBIFN,"CP",IBBCPT,0)),IBEVDT=$P(IBLN,U,2) Q:IBLN'[";ICPT("
  1. . I IBEVDT<IBV2 Q
  1. . S IBMODS=","_$$GETMOD^IBEFUNC(IBIFN,IBBCPT)_","
  1. . S IBCHGS=$$CHGMOD^IBCRCU1(IBIFN,+IBLN,IBEVDT,2) I (+IBCHGS'=1)!(+$P(IBCHGS,":",3)'=IB26) Q
  1. . I IBBCT=2,$F(IBMODS,","_IBTC_",") D DELMOD^IBCU73(IBIFN,IBBCPT,IBTC) S IBCHANGE=IBCHANGE+1
  1. . I IBBCT=1,'$$MCRB(IBIFN),IBMODS'[IBTC D ADDMOD^IBCU73(IBIFN,IBBCPT,IBTC) S IBCHANGE=IBCHANGE+1
  1. I '$D(ZTQUEUED),'$G(IBAUTO),+IBCHANGE W !,"Modifier TC "_$S(IBBCT=2:"Deleted from",1:"Added to")_" Procedures ("_IBCHANGE_")."
  1. Q
  1. ;
  1. MCRB(IBIFN) ; *619 - no TC modifier for Medicare
  1. ; input-IBIFN, output-1 if payer sequence is primary and 1st or 2nd payer is Medicare, otherwise 0
  1. N IBMCR,IBCOB S IBMCR=0
  1. S IBCOB=$$COBN^IBCEF(IBIFN)
  1. I IBCOB=1 I ($$WNRBILL^IBEFUNC(IBIFN,1))!($$WNRBILL^IBEFUNC(IBIFN,2)) S IBMCR=1
  1. Q IBMCR
  1. ;
  1. ASK(IBIFN) ; ask if the bill procedure modifications should be executed
  1. N DIR,DIRUT,DUOUT,DTOUT,X,Y
  1. I '$O(^DGCR(399,+$G(IBIFN),"CP",0)) Q
  1. S DIR("?")="Enter Yes to apply the bill procedure modifications for charges."
  1. S DIR("?",1)="For Reasonable Charges some procedures must be billed in a certain way to"
  1. S DIR("?",2)="receive a charge. The bill procedure modifications apply rules to the bill"
  1. S DIR("?",3)="procedures to ensure the correct Reasonable Charge.",DIR("?",4)=""
  1. S DIR("?",5)="- Modifier 26 will be added/removed from procedures if it affects the charges."
  1. S DIR("?",6)="- Certain global procedures with no charge will be split into their component"
  1. S DIR("?",7)=" procedures which do have charges.",DIR("?",8)=""
  1. ;
  1. S DIR("A")="Apply Procedure Updates for Charges" W !!
  1. S DIR(0)="Y",DIR("B")="YES" D ^DIR K DIR,X I Y=1 D PROC(+IBIFN,1) W !
  1. Q