| [613] | 1 | IBCCCB ;ALB/ARH - COPY BILL FOR COB ; 2/13/06 10:46am
 | 
|---|
 | 2 |  ;;2.0;INTEGRATED BILLING;**80,106,51,151,137,182,155,323**;21-MAR-94
 | 
|---|
 | 3 |  ;;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
 | 4 |  ;
 | 
|---|
 | 5 |  ; Copy bill for COB w/out cancelling, update some flds
 | 
|---|
 | 6 |  ; Primary->Secondary->Tertiary
 | 
|---|
 | 7 | ASK ;
 | 
|---|
 | 8 |  S IBCBCOPY=1 ; flag that copy function entered thru Copy COB option
 | 
|---|
 | 9 |  ;
 | 
|---|
 | 10 |  D KVAR S IBCAN=2,IBU="UNSPECIFIED"
 | 
|---|
 | 11 |  ;
 | 
|---|
 | 12 |  S IBX=$$PB^IBJTU2 S:+IBX=2 IBIFN=$P(IBX,U,2) I +IBX=1 S DFN=$P(IBX,U,2),IBV=1,IBAC=5 D DATE^IBCB
 | 
|---|
 | 13 |  I '$G(IBIFN) G EXIT
 | 
|---|
 | 14 |  ;
 | 
|---|
 | 15 |  ; Restrict access to this process for REQUEST MRA bills in 2 Cases:
 | 
|---|
 | 16 |  ; 1. No MRA EOB's on File for bill
 | 
|---|
 | 17 |  I $P($G(^DGCR(399,IBIFN,0)),U,13)=2,'$$CHK^IBCEMU1(IBIFN) D  G ASK
 | 
|---|
 | 18 |  . W !!?4,"This bill is in a status of REQUEST MRA and it has No MRA EOB's"
 | 
|---|
 | 19 |  . W !?4,"on file.  Access to this bill is restricted."
 | 
|---|
 | 20 |  ;
 | 
|---|
 | 21 |  ; 2. At least one MRA EOB appears on the MRA management worklist
 | 
|---|
 | 22 |  I $P($G(^DGCR(399,IBIFN,0)),U,13)=2,$$MRAWL^IBCEMU2(IBIFN) D  G ASK
 | 
|---|
 | 23 |  . W !!?4,"This bill is in a status of REQUEST MRA and it does appear on the"
 | 
|---|
 | 24 |  . W !?4,"MRA Management Work List.  Please use the 'MRA Management Menu' options"
 | 
|---|
 | 25 |  . W !?4,"for all processing related to this bill."
 | 
|---|
 | 26 |  . Q
 | 
|---|
 | 27 |  ;
 | 
|---|
 | 28 |  ; If MRA is Activated and bill is in Entered/Not Reviewed status and current insurance Co. is WNR -->
 | 
|---|
 | 29 |  ; ask if user wants to continue
 | 
|---|
 | 30 |  I $$EDIACTV^IBCEF4(2),$P($G(^DGCR(399,IBIFN,0)),U,13)=1,$$MCRWNR^IBEFUNC(+$$CURR^IBCEF2(IBIFN)) D  I 'Y G ASK
 | 
|---|
 | 31 |  . W !!?4,"This bill is in a status of ENTERED/NOT REVIEWED and current payer is "
 | 
|---|
 | 32 |  . W !?4,"MEDICARE (WNR). No MRA has been requested for this bill."
 | 
|---|
 | 33 |  . S DIR(0)="YA",DIR("B")="NO",DIR("A")="    Are you sure you want to continue to process this bill?: "
 | 
|---|
 | 34 |  . D ^DIR K DIR
 | 
|---|
 | 35 |  ;
 | 
|---|
 | 36 |  ; Display related bills
 | 
|---|
 | 37 |  D DSPRB^IBCCCB0(IBIFN)
 | 
|---|
 | 38 |  ;
 | 
|---|
 | 39 | CHKB ; Entrypoint-COB processing via EDI's COB Mgmt
 | 
|---|
 | 40 |  ; Ask if final EOB was received for previous bill
 | 
|---|
 | 41 |  I '$$FINALEOB^IBCCCB0(IBIFN) S IBSECHK=1
 | 
|---|
 | 42 |  I $G(IBSECHK)=1,$$MCRONBIL^IBEFUNC(IBIFN) G EXIT
 | 
|---|
 | 43 |  ;
 | 
|---|
 | 44 |  ; Warn if previous bill not at least authorized
 | 
|---|
 | 45 |  I '$$MCRONBIL^IBEFUNC(IBIFN) I '$$COBOK^IBCCCB0(IBIFN) G EXIT
 | 
|---|
 | 46 |  ;
 | 
|---|
 | 47 | CHKB1 ; Entry point for Automatic/Silent COB Processing.
 | 
|---|
 | 48 |  ; No writes or reads can occur from this point forward if variable
 | 
|---|
 | 49 |  ; IBSILENT=1.  Any and all error messages should be processed with
 | 
|---|
 | 50 |  ; the ERROR procedure below.
 | 
|---|
 | 51 |  ;
 | 
|---|
 | 52 |  S IBX=$G(^DGCR(399,+IBIFN,0)),DFN=$P(IBX,U,2),IBDT=$P(IBX,U,3)\1,IBER=""
 | 
|---|
 | 53 |  I IBCAN>1 D NOPTF^IBCB2 I 'IBAC1 D NOPTF1^IBCB2 G ASK1
 | 
|---|
 | 54 |  ;
 | 
|---|
 | 55 |  F IBI=0,"S","U1","M","MP","M1" S IB(IBI)=$G(^DGCR(399,IBIFN,IBI))
 | 
|---|
 | 56 |  I IB(0)="" S IBER="Invalid Bill Number" D ERROR G ASK1
 | 
|---|
 | 57 |  ;
 | 
|---|
 | 58 |  ; check to see if the bill has been cancelled
 | 
|---|
 | 59 |  I $P(IB("S"),U,16),$P(IB("S"),U,17) D  G ASK1
 | 
|---|
 | 60 |  . N WHO
 | 
|---|
 | 61 |  . S IBER="This bill was cancelled on "
 | 
|---|
 | 62 |  . S IBER=IBER_$$FMTE^XLFDT($P(IB("S"),U,17),"1Z")_" by "
 | 
|---|
 | 63 |  . S WHO="UNSPECIFIED"
 | 
|---|
 | 64 |  . I $P(IB("S"),U,18) S WHO=$P($G(^VA(200,$P(IB("S"),U,18),0)),U,1)
 | 
|---|
 | 65 |  . S IBER=IBER_WHO_"."
 | 
|---|
 | 66 |  . D ERROR
 | 
|---|
 | 67 |  . Q
 | 
|---|
 | 68 |  ;
 | 
|---|
 | 69 |  S IBCOB=$$COB^IBCEF(IBIFN),IBCOBN=$TR(IBCOB,"PSTA","12")
 | 
|---|
 | 70 |  S IBMRAIO=+$$CURR^IBCEF2(IBIFN),IBMRAO=$$MCRWNR^IBEFUNC(IBMRAIO)
 | 
|---|
 | 71 |  S IBNMOLD=$S(IBCOB="P":"Primary",IBCOB="S":"Secondary",IBCOB="T":"Tertiary",IBCOB="A":"Patient",1:"")_$S(IBMRAO:"-MRA Only",1:"")
 | 
|---|
 | 72 |  S IBINSOLD=$G(^DIC(36,$S(IB("MP"):+IB("MP"),IBMRAO:IBMRAIO,1:0),0))
 | 
|---|
 | 73 |  ;
 | 
|---|
 | 74 | NEXTP ; If current bill=MEDICARE WNR and valid 'next payer', use same
 | 
|---|
 | 75 |  ;  bill for new payer
 | 
|---|
 | 76 |  ; If next valid 'payer' is ins co or MEDICARE WNR, create new bill
 | 
|---|
 | 77 |  S IBCOBN=IBCOBN+1,IBNM=$S(IBCOBN=2:"Secondary Payer",IBCOBN=3:"Tertiary Payer",1:"")
 | 
|---|
 | 78 |  ;
 | 
|---|
 | 79 |  I IBNM="" S IBER=$P(IB(0),U,1)_" is a "_IBNMOLD_" bill, there is no next bill in the series." D ERROR G ASK1
 | 
|---|
 | 80 |  ;
 | 
|---|
 | 81 |  S IBX=+$P(IB("M1"),U,(4+IBCOBN)),IBY=$G(^DGCR(399,+IBX,0)),IBCOBIL(+IBIFN)=""
 | 
|---|
 | 82 |  ;
 | 
|---|
 | 83 |  I $P(IBY,U,13)=7 S IBER="The "_$P(IBNM," ",1)_" bill "_$P(IBY,U,1)_" has been cancelled." D ERROR S IBX=""
 | 
|---|
 | 84 |  ;
 | 
|---|
 | 85 |  I +IBX,$D(IBCOBIL(+IBX)) S IBER="Next bill in series can not be determined." D ERROR G ASK1
 | 
|---|
 | 86 |  I +IBX S IBER=$P(IBNM," ",1)_" bill already defined for this series: "_$P(IBY,U,1) D ERROR S IBIFN=IBX G ASK1
 | 
|---|
 | 87 |  ;
 | 
|---|
 | 88 |  S IBINSN=$P(IB("M"),U,IBCOBN) I 'IBINSN S IBER="There is no "_IBNM_" for "_$P(IB(0),U,1)_"." D ERROR G ASK1
 | 
|---|
 | 89 |  S IBINS=$G(^DIC(36,+IBINSN,0)) I IBINS="" S IBER="The "_IBNM_" for "_$P(IB(0),U,1)_" is not a valid Insurance Co." D ERROR G ASK1
 | 
|---|
 | 90 |  ;
 | 
|---|
 | 91 |  S IBMRA=0
 | 
|---|
 | 92 |  I $P(IBINS,U,2)="N" S IBQ=0 D  G:IBQ NEXTP
 | 
|---|
 | 93 |  . I $$MCRWNR^IBEFUNC(IBINSN) D  Q
 | 
|---|
 | 94 |  .. ; Check if a valid tert ins if MCR WNR secondary
 | 
|---|
 | 95 |  .. I IBCOBN'>2 D
 | 
|---|
 | 96 |  ... N Z
 | 
|---|
 | 97 |  ... S Z=+$P(IB("M"),U,IBCOBN+1)
 | 
|---|
 | 98 |  ... I Z,$D(^DIC(36,Z,0)),$P(^(0),U,2)'="N" S IBMRA=1,IBNM=$P(IBNM," ")_"-MRA.Only"
 | 
|---|
 | 99 |  .. I 'IBMRA S IBER="MEDICARE will not reimburse and no further valid insurance for bill" D ERROR S IBQ=1
 | 
|---|
 | 100 |  . S IBER=$P(IB(0),U,1)_" "_IBNM_", "_$P(IBINS,U,1)_", will not Reimburse" D ERROR S IBQ=1
 | 
|---|
 | 101 |  ;
 | 
|---|
 | 102 |  ; If processing in silent mode, skip over the following reads
 | 
|---|
 | 103 |  I $G(IBSILENT) G SKIP
 | 
|---|
 | 104 |  ;
 | 
|---|
 | 105 |  W !!
 | 
|---|
 | 106 |  S DIR("?")="Enter Yes to "_$S('$G(IBMRAO):"create a new bill in the bill series for this care.  The new bill will be the "_$P(IBNM," ")_" bill ",1:"enter the MRA information and change the payer to the "_$P($P(IBNM,"-")," ")_" payer ")
 | 
|---|
 | 107 |  S DIR("?")=DIR("?")_$S('IBMRA:"with the "_IBNM_" responsible for payment.",1:"and will request an MRA from MEDICARE.")
 | 
|---|
 | 108 |  S DIR(0)="YO",DIR("A")=$S('$G(IBMRAO):"Copy "_$P(IB(0),U,1)_" for a bill to the ",1:"Change payer on bill "_$P(IB(0),U,1)_" to ")_IBNM_", "_$P(IBINS,U,1) D ^DIR K DIR I Y'=1 S IBSECHK=1 G ASK1
 | 
|---|
 | 109 |  ;
 | 
|---|
 | 110 |  W !
 | 
|---|
 | 111 |  S IBQ=0
 | 
|---|
 | 112 |  I '$G(IBMRAO) D  G:IBQ ASK1
 | 
|---|
 | 113 |  . N Z
 | 
|---|
 | 114 |  . S DIR("?")="Enter the amount of the payment from the payer of the "_IBNMOLD_" bill."
 | 
|---|
 | 115 |  . S DIR("?")=DIR("?")_"  This will be added to the new bill as a prior payment and subtracted from the charges due for the new bill."
 | 
|---|
 | 116 |  . S DIR("A")="Prior Payment from "_$P(IB(0),U,1)_" "_IBNMOLD_" Payer, "_$P(IBINSOLD,U,1)_": "
 | 
|---|
 | 117 |  . S Z=$$EOBTOT^IBCEU1(IBIFN,$$COBN^IBCEF(IBIFN))
 | 
|---|
 | 118 |  . S:Z DIR("B")=Z
 | 
|---|
 | 119 |  . S DIR(0)="NOA^0:99999999:2"
 | 
|---|
 | 120 |  . D ^DIR K DIR I Y=""!$D(DIRUT) S IBQ=1
 | 
|---|
 | 121 |  . K IBCOB
 | 
|---|
 | 122 |  . S IBCOB("U2",IBCOBN+2)=Y
 | 
|---|
 | 123 |  . Q
 | 
|---|
 | 124 |  ;
 | 
|---|
 | 125 | SKIP ; Jump here if skipping over the preceeding reads
 | 
|---|
 | 126 |  ;
 | 
|---|
 | 127 |  ; If payer is Medicare (WNR) update payer sequence and quit
 | 
|---|
 | 128 |  I IBMRAO D  G END
 | 
|---|
 | 129 |  . N IBPRTOT,IBTOTCHG,IBPTRESP
 | 
|---|
 | 130 |  . S IBTOTCHG=0
 | 
|---|
 | 131 |  . ; Get Total Charges from BILLS/CLAIMS (#399) file
 | 
|---|
 | 132 |  . S IBTOTCHG=$P($G(^DGCR(399,IBIFN,"U1")),U,1)
 | 
|---|
 | 133 |  . ; Calculate Patient Responsibility for Bill
 | 
|---|
 | 134 |  . S IBPTRESP=$$PREOBTOT^IBCEU0(IBIFN)
 | 
|---|
 | 135 |  . ; Calculate Patient Primary/Secondary Prior Payment (field 218 or 219 of File 399)
 | 
|---|
 | 136 |  . ; These fields are stored in DGCR(399,IBIFN,"U2") pieces 4 and 5 respectively
 | 
|---|
 | 137 |  . ; Calculate: Prior Payment= Total Submitted Charges - Patient Responsibility
 | 
|---|
 | 138 |  . S IBPRTOT=IBTOTCHG-IBPTRESP
 | 
|---|
 | 139 |  . I IBPRTOT<0 S IBPRTOT=0      ; don't allow negative prior payment or offset
 | 
|---|
 | 140 |  . S IBCOB("U2",IBCOBN+2)=IBPRTOT
 | 
|---|
 | 141 |  . D COBCHG^IBCCC2(IBIFN,IBMRAIO,.IBCOB)
 | 
|---|
 | 142 |  . D STAT^IBCEMU2(IBIFN,1.5,1)     ; mra eob status update
 | 
|---|
 | 143 |  . I $G(IBSILENT) S IBERRMSG=""
 | 
|---|
 | 144 |  . Q
 | 
|---|
 | 145 |  ;
 | 
|---|
 | 146 |  ; We should NOT get to here in silent mode .... just in case
 | 
|---|
 | 147 |  I $G(IBSILENT) G END    ; currently only MCRWNR in silent mode
 | 
|---|
 | 148 |  ;
 | 
|---|
 | 149 |  ; Payer is not Medicare (WNR) - Perform additional steps
 | 
|---|
 | 150 |  S IBCOB(0,15)=""
 | 
|---|
 | 151 |  S IBCOB(0,21)=$S(IBCOBN=2:"S",IBCOBN=3:"T",1:"")
 | 
|---|
 | 152 |  I IBCOB(0,21)="" G END
 | 
|---|
 | 153 |  S IBCOB("M1",IBCOBN+3)=IBIFN
 | 
|---|
 | 154 |  S IBIDS(.15)=IBIFN
 | 
|---|
 | 155 |  D KVAR
 | 
|---|
 | 156 |  G STEP2^IBCCC
 | 
|---|
 | 157 |  ;
 | 
|---|
 | 158 | END ;
 | 
|---|
 | 159 |  Q
 | 
|---|
 | 160 |  ;
 | 
|---|
 | 161 |  ;
 | 
|---|
 | 162 | ASK1 ; If entering thru EDI COB processing, don't ask for new bill, quit
 | 
|---|
 | 163 |  I $G(IBCBASK) G EXIT
 | 
|---|
 | 164 |  G ASK
 | 
|---|
 | 165 |  ;
 | 
|---|
 | 166 | ERROR ; Display/Save error message
 | 
|---|
 | 167 |  I '$G(IBSILENT) W !,IBER,!
 | 
|---|
 | 168 |  E  S IBERRMSG=IBER
 | 
|---|
 | 169 |  S IBER=""
 | 
|---|
 | 170 |  I $D(IBSECHK) S IBSECHK=1
 | 
|---|
 | 171 |  Q
 | 
|---|
 | 172 |  ;
 | 
|---|
 | 173 | EXIT K IBCAN,IBCOB,IBU
 | 
|---|
 | 174 | KVAR K IBX,IBY,IBI,IBIFN,DFN,IBDT,IB,IBCOBN,IBNMOLD,IBINSOLD,IBNM,IBINSN,IBINS,IBER,DIR,IBAC,IBAC1,IBV,X,Y,IBDATA,IBT,IBND0,DIRUT,IBCOBIL,IBMRA,IBMRAI,IBMRAO,IBMRAIO,IBCBCOPY
 | 
|---|
 | 175 |  K ^UTILITY($J)
 | 
|---|
 | 176 |  Q
 | 
|---|
 | 177 |  ;
 | 
|---|
 | 178 | DSPRB(IBIFN) ; display related bills
 | 
|---|
 | 179 |  ;
 | 
|---|
 | 180 |  D DSPRB^IBCCCB0(IBIFN) ; Code moved for size too big
 | 
|---|
 | 181 |  Q
 | 
|---|
 | 182 |  ;
 | 
|---|
 | 183 |  ; ==============
 | 
|---|
 | 184 |  ; 
 | 
|---|
 | 185 |  ; Copy a bill for Reasonable Charges without cancelling it, update certain fields
 | 
|---|
 | 186 |  ;
 | 
|---|
 | 187 |  ; there is always both inpt inst (created first) and prof charges, always need both bills
 | 
|---|
 | 188 |  ; there may be both outpt inst (created first) and prof charges, may not need both bills
 | 
|---|
 | 189 |  ; if billing by episode rather than by day (current standard) then may need multiple prof bills per day
 | 
|---|
 | 190 |  ; 
 | 
|---|
 | 191 |  ; Inst bills are copied to create prof Bills automatically
 | 
|---|
 | 192 |  ; Subsequent prof bills may be created if the user wants them
 | 
|---|
 | 193 |  ;
 | 
|---|
 | 194 |  ; Only the first bill in the COB series of bills should be copied for the next prof bill
 | 
|---|
 | 195 |  ; The primary inst bill should be copied to get the secondary inst bill
 | 
|---|
 | 196 |  ; The primary prof bill should be copied to get the secondary prof bill
 | 
|---|
 | 197 |  ;
 | 
|---|
 | 198 | CTCOPY(IBIFN,IBMRA) ; based on the type of bill, copy without cancelling
 | 
|---|
 | 199 |  ; IBMRA = 1 if an MRA bill and copy for prof components is desired
 | 
|---|
 | 200 |  ;
 | 
|---|
 | 201 |  D CTCOPY^IBCCCB0(IBIFN,$G(IBMRA)) ;Moved due to routine size
 | 
|---|
 | 202 |  Q
 | 
|---|
 | 203 |  ;
 | 
|---|