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