[613] | 1 | IBCEPTR ;ALB/ESG - Test Claim Messages Report ;28-JAN-2005
|
---|
| 2 | ;;2.0;INTEGRATED BILLING;**296,320,348,349**;21-MAR-94;Build 46
|
---|
| 3 | ;;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | ; eClaims Plus
|
---|
| 6 | ; Report on Test Claim Transmissions and Status Messages
|
---|
| 7 | ;
|
---|
| 8 | EN ; Entry Point
|
---|
| 9 | NEW STOP,IBRMETH,IBRDATA
|
---|
| 10 | D SELECT I STOP G EXIT
|
---|
| 11 | D DEVICE
|
---|
| 12 | EXIT ; Exit Point
|
---|
| 13 | Q
|
---|
| 14 | ;
|
---|
| 15 | SELECT ; Determine which claim#'s or batch#'s to report on
|
---|
| 16 | NEW DIC,DIR,X,Y,DIRUT,DTOUT,DUOUT,DIROUT,D
|
---|
| 17 | S STOP=0
|
---|
| 18 | W @IOF
|
---|
| 19 | W !!?23,"Test Claim EDI Transmission Report"
|
---|
| 20 | W !!?7,"This report will display EDI transmission data and returned status"
|
---|
| 21 | W !?7,"message data for selected test claims. You may select test claims"
|
---|
| 22 | W !?7,"by claim number or by batch number or you may search for claims that"
|
---|
| 23 | W !?7,"were transmitted within a date range.",!
|
---|
| 24 | S DIR(0)="SO^C:Claim;B:Batch;D:Date Range (Date Transmitted)"
|
---|
| 25 | S DIR("A")="Selection Method",DIR("B")="D"
|
---|
| 26 | D ^DIR K DIR
|
---|
| 27 | I $D(DIRUT) S STOP=1 G SELECTX
|
---|
| 28 | S IBRMETH=Y
|
---|
| 29 | I IBRMETH'="C",IBRMETH'="B",IBRMETH'="D" S STOP=1 G SELECTX
|
---|
| 30 | ;
|
---|
| 31 | K IBRDATA
|
---|
| 32 | I IBRMETH="C" D
|
---|
| 33 | . F D Q:Y'>0
|
---|
| 34 | .. W !
|
---|
| 35 | .. S DIC("A")="Test Claim: "
|
---|
| 36 | .. I $O(IBRDATA("")) S DIC("A")="Another Test Claim: "
|
---|
| 37 | .. S DIC("W")="D CLMLST^IBCEPTR(Y)"
|
---|
| 38 | .. S DIC=361.4,DIC(0)="AEMQ",D="B" D MIX^DIC1
|
---|
| 39 | .. Q:Y'>0
|
---|
| 40 | .. S IBRDATA(+Y)=""
|
---|
| 41 | .. Q
|
---|
| 42 | . Q
|
---|
| 43 | ;
|
---|
| 44 | I IBRMETH="B" D
|
---|
| 45 | . F D Q:Y'>0
|
---|
| 46 | .. W !
|
---|
| 47 | .. S DIC("A")="Test Batch: "
|
---|
| 48 | .. I $O(IBRDATA("")) S DIC("A")="Another Test Batch: "
|
---|
| 49 | .. S DIC("S")="I $P(^(0),U,14),$O(^IBM(361.4,""C"",+Y,0))"
|
---|
| 50 | .. S DIC=364.1,DIC(0)="AEMQ",D="B^C" D MIX^DIC1
|
---|
| 51 | .. Q:Y'>0
|
---|
| 52 | .. S IBRDATA(+Y)=""
|
---|
| 53 | .. Q
|
---|
| 54 | . Q
|
---|
| 55 | ;
|
---|
| 56 | I IBRMETH="D" D
|
---|
| 57 | . W !
|
---|
| 58 | . S DIR(0)="DAO^:"_DT_":AEX",DIR("A")=" Earliest Date Claims Transmitted: "
|
---|
| 59 | . D ^DIR K DIR
|
---|
| 60 | . I $D(DIRUT)!'Y Q
|
---|
| 61 | . S IBRDATA(1)=Y
|
---|
| 62 | . W !
|
---|
| 63 | . S DIR(0)="DAO^"_Y_":"_DT_":AEX",DIR("A")=" Latest Date Claims Transmitted: ",DIR("B")="Today"
|
---|
| 64 | . D ^DIR K DIR
|
---|
| 65 | . I $D(DIRUT)!'Y Q
|
---|
| 66 | . S IBRDATA(2)=Y
|
---|
| 67 | . Q
|
---|
| 68 | ;
|
---|
| 69 | I '$O(IBRDATA("")) S STOP=1 G SELECTX
|
---|
| 70 | I IBRMETH="D",'$G(IBRDATA(1)) S STOP=1 G SELECTX
|
---|
| 71 | I IBRMETH="D",'$G(IBRDATA(2)) S STOP=1 G SELECTX
|
---|
| 72 | ;
|
---|
| 73 | SELECTX ;
|
---|
| 74 | Q
|
---|
| 75 | ;
|
---|
| 76 | DEVICE ; standard device selection
|
---|
| 77 | NEW ZTRTN,ZTDESC,ZTSAVE,POP
|
---|
| 78 | W !!!,"This report is 80 characters wide.",!
|
---|
| 79 | S ZTRTN="COMPILE^IBCEPTR"
|
---|
| 80 | S ZTDESC="Test Claim EDI Transmission Report"
|
---|
| 81 | S ZTSAVE("IBRMETH")=""
|
---|
| 82 | S ZTSAVE("IBRDATA")=""
|
---|
| 83 | D EN^XUTMDEVQ(ZTRTN,ZTDESC,.ZTSAVE,"QM")
|
---|
| 84 | DEVX ;
|
---|
| 85 | Q
|
---|
| 86 | ;
|
---|
| 87 | COMPILE ; compile the data into a scratch global
|
---|
| 88 | NEW RTN,EXTBCH,IBIFN,BCHIEN,TXDATM
|
---|
| 89 | S RTN="IBCEPTR"
|
---|
| 90 | KILL ^TMP($J,RTN) ; init scratch global
|
---|
| 91 | ;
|
---|
| 92 | I IBRMETH="C" D ; claim search
|
---|
| 93 | . S EXTBCH=0
|
---|
| 94 | . S IBIFN=0
|
---|
| 95 | . F S IBIFN=$O(IBRDATA(IBIFN)) Q:'IBIFN D STORE(IBIFN)
|
---|
| 96 | . Q
|
---|
| 97 | ;
|
---|
| 98 | I IBRMETH="B" D ; batch search
|
---|
| 99 | . S BCHIEN=0
|
---|
| 100 | . F S BCHIEN=$O(IBRDATA(BCHIEN)) Q:'BCHIEN D
|
---|
| 101 | .. S EXTBCH=$P($G(^IBA(364.1,BCHIEN,0)),U,1)
|
---|
| 102 | .. I EXTBCH="" S EXTBCH="~unknown"
|
---|
| 103 | .. S IBIFN=0
|
---|
| 104 | .. F S IBIFN=$O(^IBM(361.4,"C",BCHIEN,IBIFN)) Q:'IBIFN D STORE(IBIFN)
|
---|
| 105 | .. Q
|
---|
| 106 | . Q
|
---|
| 107 | ;
|
---|
| 108 | I IBRMETH="D" D ; date range search
|
---|
| 109 | . S EXTBCH=0
|
---|
| 110 | . S TXDATM=$O(^IBM(361.4,"ATD",IBRDATA(1)),-1)
|
---|
| 111 | . F S TXDATM=$O(^IBM(361.4,"ATD",TXDATM)) Q:'TXDATM Q:(TXDATM\1)>IBRDATA(2) D
|
---|
| 112 | .. S IBIFN=0
|
---|
| 113 | .. F S IBIFN=$O(^IBM(361.4,"ATD",TXDATM,IBIFN)) Q:'IBIFN D STORE(IBIFN)
|
---|
| 114 | .. Q
|
---|
| 115 | . Q
|
---|
| 116 | ;
|
---|
| 117 | D PRINT ; print the report
|
---|
| 118 | D ^%ZISC ; close the device
|
---|
| 119 | KILL ^TMP($J,RTN) ; clean up scratch global
|
---|
| 120 | I $D(ZTQUEUED) S ZTREQ="@" ; purge the task record
|
---|
| 121 | COMPX ;
|
---|
| 122 | Q
|
---|
| 123 | ;
|
---|
| 124 | STORE(IBIFN) ; Input = internal bill#; continue compilation
|
---|
| 125 | NEW IB0,CLAIM,IBRTXD0,TXIEN,SMIEN,DATA,TXDTM
|
---|
| 126 | S IB0=$G(^DGCR(399,IBIFN,0))
|
---|
| 127 | S CLAIM=$P(IB0,U,1) ; external claim#
|
---|
| 128 | I CLAIM="" S CLAIM="~unknown"
|
---|
| 129 | S IBRTXD0=99999999 ; initial value for earliest transmission date
|
---|
| 130 | ;
|
---|
| 131 | I IBRMETH="C" D ; claim search for transmission data (all)
|
---|
| 132 | . S TXIEN=0
|
---|
| 133 | . F S TXIEN=$O(^IBM(361.4,IBIFN,1,TXIEN)) Q:'TXIEN D STORETX(IBIFN,TXIEN)
|
---|
| 134 | . Q
|
---|
| 135 | ;
|
---|
| 136 | I IBRMETH="B" D ; batch search for transmission data ("C" x-ref)
|
---|
| 137 | . S TXIEN=0
|
---|
| 138 | . F S TXIEN=$O(^IBM(361.4,"C",BCHIEN,IBIFN,TXIEN)) Q:'TXIEN D STORETX(IBIFN,TXIEN)
|
---|
| 139 | . Q
|
---|
| 140 | ;
|
---|
| 141 | I IBRMETH="D" D ; date range search for transmission data ("ATD" xref)
|
---|
| 142 | . S TXIEN=0
|
---|
| 143 | . F S TXIEN=$O(^IBM(361.4,"ATD",TXDATM,IBIFN,TXIEN)) Q:'TXIEN D STORETX(IBIFN,TXIEN)
|
---|
| 144 | . Q
|
---|
| 145 | ;
|
---|
| 146 | ; loop thru all returned messages for claim
|
---|
| 147 | S SMIEN=0
|
---|
| 148 | F S SMIEN=$O(^IBM(361.4,IBIFN,2,SMIEN)) Q:'SMIEN D
|
---|
| 149 | . S DATA=$G(^IBM(361.4,IBIFN,2,SMIEN,0)) Q:DATA="" ; received msg data
|
---|
| 150 | . S TXDTM=$P(DATA,U,1) Q:'TXDTM ; msg rec'd date/time
|
---|
| 151 | . ;
|
---|
| 152 | . ; Batch only: if this status message was received before the
|
---|
| 153 | . ; earliest transmission for this batch, then don't include it
|
---|
| 154 | . I IBRMETH="B",TXDTM'>IBRTXD0 Q
|
---|
| 155 | . ;
|
---|
| 156 | . ; Date range search only: make sure the date/time the status message
|
---|
| 157 | . ; was received is inside the user specified date range for this report
|
---|
| 158 | . I IBRMETH="D",(TXDTM\1)<IBRDATA(1) Q ; rec'd too early
|
---|
| 159 | . I IBRMETH="D",(TXDTM\1)>IBRDATA(2) Q ; rec'd too late
|
---|
| 160 | . ;
|
---|
| 161 | . ; store it
|
---|
| 162 | . M ^TMP($J,RTN,EXTBCH,CLAIM,TXDTM,2,SMIEN)=^IBM(361.4,IBIFN,2,SMIEN)
|
---|
| 163 | . Q
|
---|
| 164 | STOREX ;
|
---|
| 165 | Q
|
---|
| 166 | ;
|
---|
| 167 | STORETX(IBIFN,TXIEN) ; store transmission info
|
---|
| 168 | NEW DATA,TXDTM
|
---|
| 169 | S DATA=$G(^IBM(361.4,IBIFN,1,TXIEN,0))
|
---|
| 170 | I DATA="" G STTXXX
|
---|
| 171 | S TXDTM=$P(DATA,U,1) ; transmit date/time
|
---|
| 172 | I 'TXDTM G STTXXX
|
---|
| 173 | I TXDTM<IBRTXD0 S IBRTXD0=TXDTM
|
---|
| 174 | ;
|
---|
| 175 | ; store it
|
---|
| 176 | M ^TMP($J,RTN,EXTBCH,CLAIM,TXDTM,1,TXIEN)=^IBM(361.4,IBIFN,1,TXIEN)
|
---|
| 177 | STTXXX ;
|
---|
| 178 | Q
|
---|
| 179 | ;
|
---|
| 180 | PRINT ; print the report to the specified device
|
---|
| 181 | NEW MAXCNT,CRT,PAGECNT,STOP,DIR,X,Y,DIRUT,DUOUT,DTOUT,DIROUT
|
---|
| 182 | NEW BATCH,CLAIM,IBIFN,CLMD,TXD,TYPE,IEN
|
---|
| 183 | I IOST["C-" S MAXCNT=IOSL-3,CRT=1
|
---|
| 184 | E S MAXCNT=IOSL-6,CRT=0
|
---|
| 185 | S PAGECNT=0,STOP=0
|
---|
| 186 | ;
|
---|
| 187 | I '$D(^TMP($J,RTN)) D HEADER W !!!?5,"No Data Found"
|
---|
| 188 | ;
|
---|
| 189 | S BATCH=""
|
---|
| 190 | F S BATCH=$O(^TMP($J,RTN,BATCH)) Q:BATCH="" D Q:STOP
|
---|
| 191 | . D HEADER Q:STOP
|
---|
| 192 | . I BATCH'=0 W !!,"Batch#: ",BATCH
|
---|
| 193 | . S CLAIM=""
|
---|
| 194 | . F S CLAIM=$O(^TMP($J,RTN,BATCH,CLAIM)) Q:CLAIM="" D Q:STOP
|
---|
| 195 | .. I $Y+2>MAXCNT!'PAGECNT D HEADER Q:STOP
|
---|
| 196 | .. I BATCH=0 W !
|
---|
| 197 | .. W !,"Claim#: ",CLAIM
|
---|
| 198 | .. S IBIFN=+$O(^DGCR(399,"B",CLAIM,""))
|
---|
| 199 | .. I IBIFN S CLMD=$$BT(IBIFN) W ?18,$E($P(CLMD,U,3),1,20),?40,"(",$P(CLMD,U,1),")"
|
---|
| 200 | .. W !,$$RJ^XLFSTR("",80,"-")
|
---|
| 201 | .. ;
|
---|
| 202 | .. S TXD=0
|
---|
| 203 | .. F S TXD=$O(^TMP($J,RTN,BATCH,CLAIM,TXD)) Q:'TXD!STOP S TYPE=0 F S TYPE=$O(^TMP($J,RTN,BATCH,CLAIM,TXD,TYPE)) Q:'TYPE!STOP S IEN=0 F S IEN=$O(^TMP($J,RTN,BATCH,CLAIM,TXD,TYPE,IEN)) Q:'IEN!STOP D Q:STOP
|
---|
| 204 | ... I TYPE=1 D TXPRT
|
---|
| 205 | ... I TYPE=2 D SMPRT
|
---|
| 206 | ... Q
|
---|
| 207 | .. Q
|
---|
| 208 | . Q
|
---|
| 209 | ;
|
---|
| 210 | I STOP G PRINTX
|
---|
| 211 | I $Y+2>MAXCNT!'PAGECNT D HEADER I STOP G PRINTX
|
---|
| 212 | W !!?5,"*** End of Report ***"
|
---|
| 213 | I CRT,'$D(ZTQUEUED) S DIR(0)="E" D ^DIR K DIR
|
---|
| 214 | PRINTX ;
|
---|
| 215 | Q
|
---|
| 216 | ;
|
---|
| 217 | TXPRT ; print transmission information
|
---|
| 218 | NEW DATA,TXDTM,EXTBCH,TXBY,INSIEN,PAYER,PSEQ,INZ
|
---|
| 219 | S DATA=$G(^TMP($J,RTN,BATCH,CLAIM,TXD,TYPE,IEN,0)) I DATA="" G TXPRTX
|
---|
| 220 | S TXDTM=$$FMTE^XLFDT($P(DATA,U,1),"5Z")
|
---|
| 221 | S EXTBCH=$$EXTERNAL^DILFD(361.41,.02,,$P(DATA,U,2)) ; batch
|
---|
| 222 | S TXBY=$$EXTERNAL^DILFD(361.41,.03,,$P(DATA,U,3)) ; who tx
|
---|
| 223 | S INSIEN=+$$FINDINS^IBCEF1(IBIFN,$P(DATA,U,4)) ; insurance
|
---|
| 224 | S INZ=$$INSADD^IBCNSC02(INSIEN) ; ins name/addr
|
---|
| 225 | S PAYER=$P(INZ,U,1) ; ins name
|
---|
| 226 | S PSEQ=$TR($P(DATA,U,4),"123","PST") ; payer seq
|
---|
| 227 | ;
|
---|
| 228 | I $Y+2>MAXCNT!'PAGECNT D HEADER I STOP G TXPRTX
|
---|
| 229 | W !,"Transmission Information"
|
---|
| 230 | W !?1,TXDTM,?22,"Bch#",+$E(EXTBCH,4,99),?33,$E(TXBY,1,15),?50,$E(PAYER,1,20)," (",PSEQ,")"
|
---|
| 231 | ; display address info if not Medicare
|
---|
| 232 | I '$$MCRWNR^IBEFUNC(INSIEN) W !?50,$E($P(INZ,U,2),1,15),",",$E($P(INZ,U,3),1,11),",",$E($P(INZ,U,4),1,2)
|
---|
| 233 | W !
|
---|
| 234 | TXPRTX ;
|
---|
| 235 | Q
|
---|
| 236 | ;
|
---|
| 237 | SMPRT ; print returned status message information
|
---|
| 238 | NEW DATA,TXDTM,SEVERITY,Z
|
---|
| 239 | S DATA=$G(^TMP($J,RTN,BATCH,CLAIM,TXD,TYPE,IEN,0)) I DATA="" G SMPRTX
|
---|
| 240 | S TXDTM=$$FMTE^XLFDT($P(DATA,U,1),"5Z")
|
---|
| 241 | S SEVERITY=$$EXTERNAL^DILFD(361.42,.02,,$P(DATA,U,2)) ; msg severity
|
---|
| 242 | ;
|
---|
| 243 | I $Y+2>MAXCNT!'PAGECNT D HEADER I STOP G SMPRTX
|
---|
| 244 | W !,"Status Message Information"
|
---|
| 245 | W !?1,TXDTM,?22,SEVERITY,?65,"Msg#",$P(DATA,U,3)
|
---|
| 246 | S Z=0
|
---|
| 247 | F S Z=$O(^TMP($J,RTN,BATCH,CLAIM,TXD,TYPE,IEN,1,Z)) Q:'Z D Q:STOP
|
---|
| 248 | . I $Y+1>MAXCNT!'PAGECNT D HEADER Q:STOP
|
---|
| 249 | . W !?2,$G(^TMP($J,RTN,BATCH,CLAIM,TXD,TYPE,IEN,1,Z,0))
|
---|
| 250 | . Q
|
---|
| 251 | W !
|
---|
| 252 | SMPRTX ;
|
---|
| 253 | Q
|
---|
| 254 | ;
|
---|
| 255 | HEADER ; page break and header
|
---|
| 256 | NEW LIN,HDR,TAB
|
---|
| 257 | S STOP=0
|
---|
| 258 | I CRT,PAGECNT>0,'$D(ZTQUEUED) D I STOP G HEADX
|
---|
| 259 | . I MAXCNT<51 F LIN=1:1:(MAXCNT-$Y) W !
|
---|
| 260 | . S DIR(0)="E" D ^DIR K DIR
|
---|
| 261 | . I 'Y S STOP=1 Q
|
---|
| 262 | . Q
|
---|
| 263 | ;
|
---|
| 264 | S PAGECNT=PAGECNT+1
|
---|
| 265 | W @IOF,!
|
---|
| 266 | ;
|
---|
| 267 | W "Test Claim EDI Transmission Report"
|
---|
| 268 | S HDR="Page: "_PAGECNT,TAB=80-$L(HDR)-1
|
---|
| 269 | W ?TAB,HDR
|
---|
| 270 | W !,"Selected ",$S(IBRMETH="B":"Batches",IBRMETH="C":"Claims",1:"Date Range")
|
---|
| 271 | S HDR=$$FMTE^XLFDT($$NOW^XLFDT,"1Z"),TAB=80-$L(HDR)-1
|
---|
| 272 | W ?TAB,HDR
|
---|
| 273 | W !,$$RJ^XLFSTR("",80,"=")
|
---|
| 274 | ;
|
---|
| 275 | ; check for a stop request
|
---|
| 276 | I $D(ZTQUEUED),$$S^%ZTLOAD() D G HEADX
|
---|
| 277 | . S (ZTSTOP,STOP)=1
|
---|
| 278 | . W !!!?5,"*** Report Halted by TaskManager Request ***"
|
---|
| 279 | . Q
|
---|
| 280 | ;
|
---|
| 281 | HEADX ;
|
---|
| 282 | Q
|
---|
| 283 | ;
|
---|
| 284 | BT(IBIFN) ; bill type and info
|
---|
| 285 | ; [1] TYPE (form type, charge type, inp/outp)
|
---|
| 286 | ; [2] claim#
|
---|
| 287 | ; [3] patient name
|
---|
| 288 | NEW TYPE,IB0,F,C,S S TYPE=""
|
---|
| 289 | S IB0=$G(^DGCR(399,+$G(IBIFN),0)) I IB0="" Q ""
|
---|
| 290 | S F=$P(IB0,U,19),F=$S(F=2:"1500",1:"UB04")
|
---|
| 291 | S C=$P(IB0,U,27),C=$S(C=1:"Inst",1:"Prof")
|
---|
| 292 | S S=$$INPAT^IBCEF(IBIFN),S=$S(S=1:"Inpat",1:"Outpat")
|
---|
| 293 | S TYPE=F_", "_C_", "_S
|
---|
| 294 | Q TYPE_U_$P(IB0,U,1)_U_$P($G(^DPT(+$P(IB0,U,2),0)),U,1)
|
---|
| 295 | ;
|
---|
| 296 | CLMLST(IBIFN) ; DIC lister
|
---|
| 297 | NEW TYPE,LTD,N1,N2
|
---|
| 298 | S TYPE=$P($$BT(IBIFN),U,1)
|
---|
| 299 | S LTD=$$FMTE^XLFDT($P($G(^IBM(361.4,IBIFN,0)),U,2),"2Z")
|
---|
| 300 | S N1=+$P($G(^IBM(361.4,IBIFN,1,0)),U,4) ; # transmissions
|
---|
| 301 | S N2=+$P($G(^IBM(361.4,IBIFN,2,0)),U,4) ; # return messages
|
---|
| 302 | W " ",TYPE,?34," ",LTD,?45," ",N1," Transmission",$S(N1'=1:"s",1:"")
|
---|
| 303 | W ?63," ",N2," Message",$S(N2'=1:"s",1:"")
|
---|
| 304 | CLMLSTX ;
|
---|
| 305 | Q
|
---|
| 306 | ;
|
---|