[613] | 1 | IBCEMRAA ;ALB/DSM - MEDICARE REMITTANCE ADVICE DETAIL-PART A ; 12/29/05 9:57am
|
---|
| 2 | ;;2.0;INTEGRATED BILLING;**155,323,349**;21-MAR-94;Build 46
|
---|
| 3 | ;;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | Q ; must call an entry point
|
---|
| 6 | ;
|
---|
| 7 | ; This routine prints MRA Report for UB-04 (Part A) Form Type
|
---|
| 8 | ;
|
---|
| 9 | MRA(IBIFN) ;;Module - Entry point to print ALL MRA reports, for a given IBIFN.
|
---|
| 10 | ; This entry point doesn't ask for a Bill Number, it must pass IBIFN as Input.
|
---|
| 11 | ; It will prompt the user for a device.
|
---|
| 12 | ;
|
---|
| 13 | ; Input IBIFN = ien of Bill Number (required)
|
---|
| 14 | ;
|
---|
| 15 | N IBQUIT,IBPGN S IBQUIT=0
|
---|
| 16 | D ENT1
|
---|
| 17 | Q ;MRA
|
---|
| 18 | ;
|
---|
| 19 | ENT ; Menu Option Entry Point
|
---|
| 20 | N IBQUIT,IBEOB,IBIFN,FRMTYP,IBPGN
|
---|
| 21 | S IBQUIT=0
|
---|
| 22 | D GETBIL I IBQUIT Q ;ENT
|
---|
| 23 | ;
|
---|
| 24 | ENT1 ; Prompt for a print device and print MRA Reports
|
---|
| 25 | D DEV^IBCEMRAX(IBIFN) I IBQUIT Q ; device handling ENT1
|
---|
| 26 | ;
|
---|
| 27 | PROC ; This section must have IBIFN defined
|
---|
| 28 | ; This section is called as both a foreground and a background process,
|
---|
| 29 | ; so all write stmts need to consider printing in both cases.
|
---|
| 30 | N FRMTYP,IEN,IBZDATA,INPAT
|
---|
| 31 | S IBQUIT=$G(IBQUIT)
|
---|
| 32 | S FRMTYP=$$FT^IBCEF(IBIFN) ;Form Type
|
---|
| 33 | S INPAT=$$INPAT^IBCEF(IBIFN) ;Inpatient Flag
|
---|
| 34 | ;
|
---|
| 35 | ; Get Service Line Level Data from 837 Extract - Make the appropriate call
|
---|
| 36 | ; based on the Bill's Form Type 3=UB-04 ; 2=CMS-1500
|
---|
| 37 | D ;
|
---|
| 38 | . I FRMTYP=2 D F^IBCEF("N-HCFA 1500 SERVICE LINE (EDI)","IBZDATA",,IBIFN) Q
|
---|
| 39 | . D F^IBCEF("N-UB-04 SERVICE LINE (EDI)","IBZDATA",,IBIFN)
|
---|
| 40 | ;
|
---|
| 41 | ; For a given IBIFN, print all MRA's on file for that Bill
|
---|
| 42 | S IEN=0
|
---|
| 43 | F S IEN=$O(^IBM(361.1,"B",IBIFN,IEN)) Q:'IEN D I IBQUIT Q
|
---|
| 44 | . I $P($G(^IBM(361.1,IEN,0)),U,4)'=1 Q ;not an MRA
|
---|
| 45 | . D PRNTMRA ; print an MRA
|
---|
| 46 | ;
|
---|
| 47 | ; Force a form feed at end of a printer report
|
---|
| 48 | I $E(IOST,1,2)'["C-" W @IOF
|
---|
| 49 | ; Pause on screen before exiting
|
---|
| 50 | I 'IBQUIT,$E(IOST,1,2)["C-" W ! S DIR("A")="Press RETURN to continue: ",DIR(0)="EA" D ^DIR K DIR
|
---|
| 51 | ;
|
---|
| 52 | ; Quit if called from a background process (ZTQUEUED defined)
|
---|
| 53 | I $D(ZTQUEUED) S ZTREQ="@" Q ;PROC
|
---|
| 54 | D ^%ZISC ; handle device closing before exiting
|
---|
| 55 | Q ;PROC
|
---|
| 56 | ;
|
---|
| 57 | PRNTMRA ; Print a single MRA
|
---|
| 58 | ; Input IEN - the ien# of EOB file (361.1); Required
|
---|
| 59 | S IBPGN=0
|
---|
| 60 | ; Print Part B - CMS-1500
|
---|
| 61 | I FRMTYP=2 D PRNT^IBCEMRAB Q ;PRNTMRA
|
---|
| 62 | ;
|
---|
| 63 | ; Print Part A - Institutional next
|
---|
| 64 | ; Claim Level
|
---|
| 65 | N RSNCD,NCVRCHRG,IBILL,IBILLU,IBCOINS,IBCTADJ,IBEOB,RMKS,IBFD,IBTD,IBDED,CLMADJ
|
---|
| 66 | I IBPGN>1 D PAUSE^IBCEMRAX I IBQUIT Q ;pause between EOB reports
|
---|
| 67 | D CLMDATA,CLMHDR I IBQUIT Q
|
---|
| 68 | D CLMPRNT
|
---|
| 69 | ;
|
---|
| 70 | ; Print Service Line Level Adjustments - check if exist
|
---|
| 71 | I $D(^IBM(361.1,IEN,15)) D I IBQUIT Q
|
---|
| 72 | . I ($Y+4)>IOSL D PAUSE^IBCEMRAX Q:IBQUIT W @IOF D CLMHDR
|
---|
| 73 | . D SRVHDR^IBCEMRAX,SRVDATA^IBCEMRAX
|
---|
| 74 | ;
|
---|
| 75 | ; Print Disclaimer
|
---|
| 76 | D DSCLMR^IBCEMRAX
|
---|
| 77 | Q ;PRTMRA
|
---|
| 78 | ;
|
---|
| 79 | GETBIL ; Prompt the user for a Bill#. Get INIFN and IBEOB.
|
---|
| 80 | ;
|
---|
| 81 | N DIC,Y W !
|
---|
| 82 | ; Access Explanation Of Benefits File #361.1
|
---|
| 83 | ; Screen: only allow access to EOB's of Type = 1 (Medicare MRA)
|
---|
| 84 | S DIC="^IBM(361.1,",DIC(0)="AEMQ",DIC("S")="I $P(^(0),U,4)=1"
|
---|
| 85 | S DIC("W")="D EOBLST^IBCEMU1(Y)" ; modify generic lister
|
---|
| 86 | D ^DIC
|
---|
| 87 | I Y<1!$D(DTOUT)!$D(DUOUT) S IBQUIT=1 Q ; GETBIL
|
---|
| 88 | S IBIFN=+$P(Y,U,2) ; get index to Bill file (#399)
|
---|
| 89 | Q ;GETBIL
|
---|
| 90 | ;
|
---|
| 91 | CLMDATA ; Get MRA Claim Level data of EOB file (#361.1)
|
---|
| 92 | N I,RCNT,GRPCD,GLVL,GLVLD,RLVL,RLVLD,RCDED,RCOINS,RCTADJ,RCNCVR,RCLMADJ,CLMLVL
|
---|
| 93 | F I=1:1:5 S @($P($T(TABLE+I),";",3))=$P($T(TABLE+I),";",4)
|
---|
| 94 | ;
|
---|
| 95 | ; Get Top Levels of EOB file (#361.1)
|
---|
| 96 | F I=0,1,3:1:6 S IBEOB(I)=$G(^IBM(361.1,IEN,I))
|
---|
| 97 | ;
|
---|
| 98 | ; Get Claim Level Remarks Code from appropriate levels of 361.1 based on
|
---|
| 99 | ; whether Bill is Outpatient or Inpatient.
|
---|
| 100 | D ;
|
---|
| 101 | . I INPAT S RMKS=IBEOB(5) Q ; Inpatient remarks code
|
---|
| 102 | . S RMKS=$P(IBEOB(3),U,3,7) ; Outpatient remarks code
|
---|
| 103 | ;
|
---|
| 104 | ; Get Group Level Data
|
---|
| 105 | ; RLVLD=reason_code^amount^quantity^reason text
|
---|
| 106 | ; CLMLVL=Claim Level Flag indicating where the displayed data is coming from
|
---|
| 107 | ; 1=Claim Level; 0=Line Level
|
---|
| 108 | ;
|
---|
| 109 | S (GLVL,RLVL,RCNT,NCVRCHRG,IBDED,IBCOINS,IBCTADJ,CLMADJ,CLMLVL)=0
|
---|
| 110 | F S GLVL=$O(^IBM(361.1,IEN,10,GLVL)) Q:'GLVL S GLVLD=^(GLVL,0) D ;
|
---|
| 111 | . S GRPCD=$P(GLVLD,U),RLVL=0
|
---|
| 112 | . F S RLVL=$O(^IBM(361.1,IEN,10,GLVL,1,RLVL)) Q:'RLVL S RLVLD=^(RLVL,0) D ;
|
---|
| 113 | . . S RSNCD=$P(RLVLD,U)
|
---|
| 114 | . . I GRPCD="PR",RSNCD="AAA" Q ;exception
|
---|
| 115 | . . I GRPCD="OA",RSNCD="AB3" Q ;exception
|
---|
| 116 | . . I GRPCD="LQ" Q ;exception
|
---|
| 117 | . . S RCNT=RCNT+1,RSNCD(RCNT)=RSNCD ;display
|
---|
| 118 | . . I RCLMADJ[(","_RSNCD_",") S CLMADJ=CLMADJ+$P(RLVLD,U,2),CLMLVL=1 ;Claim Adjustment
|
---|
| 119 | . . ; Get data from Claim Level: calculate Coinsurance, Contractual Adjustment,
|
---|
| 120 | . . ; Noncovered Charges and Deductible amounts
|
---|
| 121 | . . I GRPCD="PR",RCOINS[(","_RSNCD_",") S IBCOINS=$P(RLVLD,U,2),CLMLVL=1 Q
|
---|
| 122 | . . I GRPCD="PR",RCDED[(","_RSNCD_",") S IBDED=IBDED+$P(RLVLD,U,2),CLMLVL=1 Q
|
---|
| 123 | . . I GRPCD="CO" D ;
|
---|
| 124 | . . . I RCTADJ[(","_RSNCD_",") S IBCTADJ=IBCTADJ+$P(RLVLD,U,2),CLMLVL=1
|
---|
| 125 | . . . I RCNCVR'[(","_RSNCD_",") S NCVRCHRG=NCVRCHRG+$P(RLVLD,U,2),CLMLVL=1
|
---|
| 126 | ;
|
---|
| 127 | ; If no data was found at Claim Level, get data from Line Level
|
---|
| 128 | I 'CLMLVL D LINELVL^IBCEMRAX
|
---|
| 129 | S IBILL=$G(^DGCR(399,$P(IBEOB(0),U),0)),IBILLU=$G(^DGCR(399,$P(IBEOB(0),U),"U"))
|
---|
| 130 | S IBFD=$$FMTE^XLFDT($P(IBILLU,U),5),IBTD=$$FMTE^XLFDT($P(IBILLU,U,2),5)
|
---|
| 131 | ;
|
---|
| 132 | Q ;CLMDATA
|
---|
| 133 | ;
|
---|
| 134 | CLMHDR ; Print Claim Level Header
|
---|
| 135 | S IBPGN=IBPGN+1
|
---|
| 136 | I IBPGN=1,$E(IOST,1,2)["C-" W @IOF ; refresh terminal screen on 1st hdr
|
---|
| 137 | ;
|
---|
| 138 | ; Rows 1 to 3
|
---|
| 139 | W !,?108,"Medicare-equivalent",!?110,"Remittance Advice",!
|
---|
| 140 | N PRVDR,LVL,STATE
|
---|
| 141 | ; Retrieve the Provider data from IB Site Parameters file - ^IBE(350.9)
|
---|
| 142 | S PRVDR=$G(^IBE(350.9,1,2))
|
---|
| 143 | ; ProviderName^AgentCashierAddress^City^State^Zip
|
---|
| 144 | ;
|
---|
| 145 | F LVL=1:1:5 S PRVDR(LVL)=$P(PRVDR,U,LVL)
|
---|
| 146 | ; PRVDR(1) Provider Name (Agent Cashier Mail Symbol)
|
---|
| 147 | ; PRVDR(2) Agent Cashier Street Address
|
---|
| 148 | ; PRVDR(3) Agent Cashier City
|
---|
| 149 | ; PRVDR(4) Agent Cashier State
|
---|
| 150 | ; PRVDR(5) Agent Cashier Zip
|
---|
| 151 | ;
|
---|
| 152 | ; resolve the State File Pointer in PRVDR(4) & get State Abbreviation
|
---|
| 153 | S STATE=$S(PRVDR(4)'="":$P($G(^DIC(5,PRVDR(4),0)),U,2),1:"")
|
---|
| 154 | ; Row 4 to 15
|
---|
| 155 | W !!!,"DEPT OF VETERANS AFFAIRS"
|
---|
| 156 | W !,PRVDR(2),?103,"PROVIDER #:",?117,$P($G(^IBE(350.9,1,1)),U,5) ;Tax ID
|
---|
| 157 | W !,PRVDR(1),?103,"PAGE #:",?117,$J(IBPGN,3)
|
---|
| 158 | W !,PRVDR(3),", ",STATE," ",PRVDR(5),?103,"DATE: ",?117,$$FMTE^XLFDT($P(IBEOB(0),U,6),5)
|
---|
| 159 | W !!,"PATIENT NAME",?24,"PATIENT CNTRL NUMBER",?48,"RC",?52,"REM",?58,"DRG#",?72,"DRG OUT AMT"
|
---|
| 160 | W ?86,"COINSURANCE",?100,"PAT REFUND",?115,"CONTRACT ADJ"
|
---|
| 161 | W !,"HIC NUMBER",?24,"ICN NUMBER",?48,"RC",?52,"REM",?58,"OUTCD CAPCD",?72,"DRG CAP AMT"
|
---|
| 162 | W ?86,"COVD CHGS",?100,"ESRD NET ADJ",?115,"PER DIEM RTE"
|
---|
| 163 | W !,"FROM DT THRU DT",?24,"NACHG HICHG TOB",?48,"RC",?52,"REM",?58,"PROF COMP",?72,"MSP PAYMT"
|
---|
| 164 | W ?86,"NCOVD CHGS",?100,"INTEREST",?115,"PROC CD AMT"
|
---|
| 165 | W !,"CLM STATUS",?24,"COST COVDY NCOVDY",?48,"RC",?52,"REM",?58,"DRG AMT",?72,"DEDUCTIBLES"
|
---|
| 166 | W ?86,"DENIED CHGS",?100,"CLAIM ADJ",?115,"NET REIMB",!
|
---|
| 167 | Q ;CLMHDR
|
---|
| 168 | ;
|
---|
| 169 | CLMPRNT ; - Print Claim Level part of the Report
|
---|
| 170 | N PTNM,PTLEN,HIC
|
---|
| 171 | ; ROW 16
|
---|
| 172 | ; format and standardize patient name for display
|
---|
| 173 | S PTNM("FILE")=2,PTNM("IENS")=$P(IBILL,U,2),PTNM("FIELD")=.01,PTLEN=23
|
---|
| 174 | S PTNM=$$BLDNAME^XLFNAME(.PTNM,PTLEN)
|
---|
| 175 | I $P(IBEOB(6),U,1)'="" S PTNM=$E($P(IBEOB(6),U,1),1,PTLEN)
|
---|
| 176 | W !,PTNM
|
---|
| 177 | ; Account # (Bill #)
|
---|
| 178 | W ?24,$P($$SITE^VASITE,U,3),"-",$P(IBILL,U)
|
---|
| 179 | ; Reason Code,Remarks Code 1
|
---|
| 180 | W ?48,$G(RSNCD(1)),?52,$P(RMKS,U,1)
|
---|
| 181 | ; DRG Code Used
|
---|
| 182 | W ?58,$P(IBEOB(0),U,10)
|
---|
| 183 | ; Coinsurance, Contract Adjustment
|
---|
| 184 | W ?86,$J($G(IBCOINS),11,2),?115,$J($G(IBCTADJ),11,2)
|
---|
| 185 | ; ROW 17
|
---|
| 186 | ; HIC & ICN
|
---|
| 187 | S HIC=$S($P(IBEOB(6),U,2)'="":$P(IBEOB(6),U,2),$$WNRBILL^IBEFUNC(IBIFN,1):$P($G(^DGCR(399,$P(IBEOB(0),U),"I1")),U,2),1:$P($G(^DGCR(399,$P(IBEOB(0),U),"I2")),U,2))
|
---|
| 188 | W !,HIC,?24,$P(IBEOB(0),U,14)
|
---|
| 189 | ; Reason Code, Remarks Code 2
|
---|
| 190 | W ?48,$G(RSNCD(2)),?52,$P(RMKS,U,2)
|
---|
| 191 | ; covered charges
|
---|
| 192 | W ?86,$J($P(IBEOB(1),U,3),11,2)
|
---|
| 193 | ; Outpatient Reimbursement Rate
|
---|
| 194 | I 'INPAT W ?115,$J($P(IBEOB(3),U,1),11,2)
|
---|
| 195 | ; ROW 18
|
---|
| 196 | W !,IBFD,?12,IBTD
|
---|
| 197 | ; Type of Bill (=Location of Care_Bill Clasification_Frequency)
|
---|
| 198 | W ?38,$P(IBILL,U,24)_$P($G(^DGCR(399.1,$P(IBILL,U,25),0)),U,2)_$P(IBILL,U,26)
|
---|
| 199 | ; Reason Code,Remarks Code 3
|
---|
| 200 | W ?48,$G(RSNCD(3)),?52,$P(RMKS,U,3)
|
---|
| 201 | ; non-covered amount (Pt Responsibility)
|
---|
| 202 | W ?86,$J(NCVRCHRG,11,2)
|
---|
| 203 | ; Interest Amount
|
---|
| 204 | I $P(IBEOB(1),U,7) W ?100,$J($P(IBEOB(1),U,7),11,2)
|
---|
| 205 | ; Procedure code amount
|
---|
| 206 | W ?115,$J($P(IBEOB(3),U,2),11,2)
|
---|
| 207 | ; ROW 19
|
---|
| 208 | ; claim status
|
---|
| 209 | W !?6,$E($P(IBEOB(0),U,21),1,2)
|
---|
| 210 | ; M-Care Inp Cost Report Day Ct
|
---|
| 211 | W ?24,$P(IBEOB(4),U,14)
|
---|
| 212 | ; M-Care Inp Cov. Days/Visit Ct
|
---|
| 213 | W ?30,$P(IBEOB(4),U,1)
|
---|
| 214 | ; Medicare Non-Covered Days
|
---|
| 215 | W ?38,$P(IBEOB(4),U,19)
|
---|
| 216 | ; Reason Code,Remarks Code 4
|
---|
| 217 | W ?48,$G(RSNCD(4)),?52,$P(RMKS,U,4)
|
---|
| 218 | ; M-Care Inp Claim Drg Amt
|
---|
| 219 | W ?58,$J($P(IBEOB(4),U,3),11,2)
|
---|
| 220 | ; if Group Code is PR, print the sum of Reason Codes 1 and 66
|
---|
| 221 | W ?72,$J($G(IBDED),11,2)
|
---|
| 222 | ; Claim Adjustments
|
---|
| 223 | W ?100,$J($G(CLMADJ),10,2)
|
---|
| 224 | ; net reimburse
|
---|
| 225 | W ?115,$J($P(IBEOB(1),U,1),11,2)
|
---|
| 226 | ; Row 20
|
---|
| 227 | ; Reason Code,Remarks Code 5
|
---|
| 228 | W !?48,$G(RSNCD(5)),?52,$P(RMKS,U,5)
|
---|
| 229 | ;
|
---|
| 230 | Q ; CLMPRNT
|
---|
| 231 | TABLE ;;variable;list of Reason Codes w/leading & trailing commas; description;
|
---|
| 232 | ;;RCDED;,1,66,;reason code to calc deductible amount;
|
---|
| 233 | ;;RCOINS;,2,;reason code to calc coinsurance amount;
|
---|
| 234 | ;;RCTADJ;,A2,;reason codes to calc contract adjustment amount;
|
---|
| 235 | ;;RCNCVR;,1,2,23,42,45,66,70,71,89,94,97,118,A1,A2,B3,B6,;reason codes excluded from calc of noncovered charges amount;
|
---|
| 236 | ;;RCLMADJ;,42,45,70,94,97,122,A1,;reason codes to calc claim adj
|
---|
| 237 | ;
|
---|