1 | IBCESRV2 ;ALB/TMP - Server based Auto-update utilities - IB EDI ;03/05/96
|
---|
2 | ;;2.0;INTEGRATED BILLING;**137,191,155,296**;21-MAR-94
|
---|
3 | Q
|
---|
4 | ;
|
---|
5 | CON837 ; Confirmation of 837 batch - auto update
|
---|
6 | ;Input expected: IBTDA = the ien of the message entry in file 364.2
|
---|
7 | ;
|
---|
8 | N IB0,IBBDA,IBBILL,IBMSG,IBFLAG,IBTYP,IBBST,DR,DA,DIE,Z
|
---|
9 | Q:'$G(IBTDA)
|
---|
10 | S IB0=$G(^IBA(364.2,IBTDA,0)),IBBDA=+$P(IB0,U,4) ;Batch ien
|
---|
11 | S IBTYP=$P($G(^IBE(364.3,+$P(IB0,U,2),0)),U)
|
---|
12 | ;
|
---|
13 | Q:IBTYP'["837REC"
|
---|
14 | ;
|
---|
15 | I $P(IB0,U,14) D UPDTEST^IBCEPTM(IBTDA) Q ; Test claim message from claim resubmitted claim
|
---|
16 | ;
|
---|
17 | ; Austin receipt is '837REC0',
|
---|
18 | ; other non-payer confirmations are '837REC1',
|
---|
19 | ; payer confirmations are '837REC2'
|
---|
20 | S IBTYP=+$P(IBTYP,"837REC",2)
|
---|
21 | S IBBST=$P($G(^IBA(364.1,IBBDA,0)),U,2)
|
---|
22 | ;
|
---|
23 | I $S(IBBST?1"A"1N:IBTYP<+$P(IBBST,"A",2),1:0) D Q
|
---|
24 | . ;Don't allow status to go backwards
|
---|
25 | . D DELMSG(IBTDA)
|
---|
26 | ;
|
---|
27 | D UPDCONF(IBBDA,IBTDA,IBTYP,1)
|
---|
28 | ;
|
---|
29 | Q
|
---|
30 | ;
|
---|
31 | BILLSTAC(IBBILL,IBTYP) ;Change status of transmit bill
|
---|
32 | ; IBBILL = the ien of the entry in file 364 to update
|
---|
33 | ; IBTYP = code for new status (see field 364;.03 for details)
|
---|
34 | ;
|
---|
35 | N IBSTAT,DIE,DA,DR,X,Y
|
---|
36 | ;
|
---|
37 | S IBSTAT=$P($G(^IBA(364,IBBILL,0)),U,3)
|
---|
38 | ;
|
---|
39 | Q:IBSTAT=IBTYP!(IBTYP="") ;Status hasn't changed or new status is null
|
---|
40 | Q:"CREZ"[IBSTAT ;Don't update status of completed transmit record
|
---|
41 | ;
|
---|
42 | ; Don't allow the status to go backwards
|
---|
43 | I $E(IBSTAT)="A","PX"[IBTYP Q
|
---|
44 | I $E(IBSTAT)="A",$E(IBTYP)="A",$P(IBTYP,"A",2)<$P(IBSTAT,"A",2) Q
|
---|
45 | ;
|
---|
46 | S DIE="^IBA(364,",DA=IBBILL,DR=".03////"_IBTYP_";.04///NOW" D ^DIE
|
---|
47 | Q
|
---|
48 | ;
|
---|
49 | REJ837 ; Rejections 837
|
---|
50 | ;Input IBTDA = the ien of the message entry in file 364.2
|
---|
51 | ;
|
---|
52 | Q:'$G(IBTDA)
|
---|
53 | ;
|
---|
54 | D UPDREJ(+$P($G(^IBA(364.2,IBTDA,0)),U,4),IBTDA)
|
---|
55 | Q
|
---|
56 | ;
|
---|
57 | DELMSG(IBTDA) ;
|
---|
58 | ; Delete message after it successfully updates the database.
|
---|
59 | ; IBTDA = the ien of the message in file 364.2
|
---|
60 | D TRADEL^IBCESRV1(IBTDA)
|
---|
61 | Q
|
---|
62 | ;
|
---|
63 | BILLSTAR(IBBILL,IBTDA) ;Change status of transmit bill and bill on rejection
|
---|
64 | ; IBBILL = ien of bill (399)
|
---|
65 | ; IBTDA = ien of error message
|
---|
66 | ;
|
---|
67 | N DR,DIE,DA,IBSTAT,IBDA,IBCBH
|
---|
68 | ;
|
---|
69 | S IBDA=$S($P($G(^IBA(364.2,IBTDA,0)),U,5):$P(^(0),U,5),1:+$O(^IBA(364,"B",IBBILL,""),-1))
|
---|
70 | S IBSTAT=$P($G(^IBA(364,IBDA,0)),U,3),IBCBH=$P($G(^DGCR(399,IBBILL,0)),U,21)
|
---|
71 | ;
|
---|
72 | Q:"CREZ"[IBSTAT ;Don't update status of completed transmit record
|
---|
73 | ;
|
---|
74 | I IBSTAT'="E" S DIE="^IBA(364,",DA=IBDA,DR=".03////E;.04///NOW;.05////"_IBTDA D ^DIE
|
---|
75 | ;
|
---|
76 | ; Don't process further if only testing transmission with insurance co
|
---|
77 | Q:+$G(^DIC(36,+$P($G(^DGCR(399,IBBILL,"I"_($F("PST",IBCBH)-1))),U),3))=2
|
---|
78 | ;
|
---|
79 | ; Suspend bill if waiting for MRA - allows it to be edited
|
---|
80 | ;I $P($G(^DGCR(399,IBBILL,0)),U,13)=2,$$NEEDMRA^IBEFUNC(IBBILL)="1N" S DIE="^DGCR(399,",DA=IBBILL,DR=".13////6" D:DA ^DIE
|
---|
81 | Q
|
---|
82 | ;
|
---|
83 | UPDMSG(IBTDA,STAT,UPD) ; Update msg with status of 'P','U' or delete message
|
---|
84 | ; STAT = 'P' 'U' for pending or updating, 'R' to delete
|
---|
85 | ; UPD = flag that says update the data base updated field (.12) if 1
|
---|
86 | ;
|
---|
87 | N DIE,DA,DR
|
---|
88 | ;
|
---|
89 | I STAT="R" D DELMSG(IBTDA) Q
|
---|
90 | ;
|
---|
91 | I $P($G(^IBA(364.2,IBTDA,0)),U,6)'=STAT D
|
---|
92 | . S DR=".06////"_STAT_$S($G(UPD):".12////1",1:"")
|
---|
93 | . S DIE="^IBA(364.2,",DA=IBTDA
|
---|
94 | . I $G(^IBA(364.2,DA,0)) D ^DIE
|
---|
95 | Q
|
---|
96 | ;
|
---|
97 | STOREM(IBTDA,IBTEXT,IBE) ;Store message text in file 364.2
|
---|
98 | ; INPUT:
|
---|
99 | ; IBTDA = ien in file 364 message field entry #IBTDA
|
---|
100 | ; IBTEXT = name of the array where the message text is retrieved from
|
---|
101 | ; or "@" to delete the text from the message field
|
---|
102 | ; OUTPUT:
|
---|
103 | ; IBE = array of errors (IBE("DIERR")) returned, pass by reference
|
---|
104 | ;
|
---|
105 | N IBZ,X,Y
|
---|
106 | ;
|
---|
107 | Q:$S($G(IBTEXT)="@":0,1:$D(@IBTEXT)<10)
|
---|
108 | ;
|
---|
109 | K IBE("DIERR")
|
---|
110 | ;
|
---|
111 | F IBZ=1:1:20 D WP^DIE(364.2,IBTDA_",",2,"AK",""_IBTEXT_"","IBE") Q:$S('$D(IBE("DIERR")):1,+IBE("DIERR")=1:$G(IBE("DIERR",1))'=110,1:1) K IBE("DIERR") H .5 ; On lock error, retry up to 20 times
|
---|
112 | Q
|
---|
113 | ;
|
---|
114 | CKRES(IBBDA,IBDEF,IBLIST) ;Chk to see if the batch file can be updated to
|
---|
115 | ; completely resubmitted based on finding all bills in it
|
---|
116 | ; having a status of cancelled, resubmitted, deleted or closed
|
---|
117 | ; or if none of these statuses, they at least have a transmission
|
---|
118 | ; record for the same bill created at a later date/time.
|
---|
119 | ;
|
---|
120 | ; IBBDA : Batch # ien in file 364.1
|
---|
121 | ; IBDEF : Default to set the batch status to.
|
---|
122 | ; 0 or undefined, status will set to 0 (NOT INCOMPLETE)
|
---|
123 | ; if no incomplete submissions found
|
---|
124 | ; 1 status will set to 1 (INCOMPLETE)
|
---|
125 | ; if any incomplete submissions found
|
---|
126 | ; -1 status will not be updated
|
---|
127 | ; IBLIST : If passed by reference and IBLIST=1, returns list of bill
|
---|
128 | ; #'s not resubmitted in IBLIST(ien of file 364)=""
|
---|
129 | ;
|
---|
130 | N IB,IBINC,IBBILL,DIE,DR,DA,Z,Z0
|
---|
131 | ;
|
---|
132 | S IBDEF=+$G(IBDEF),IBINC=0
|
---|
133 | Q:$S('$G(IBBDA):1,IBDEF'<0:'$P($G(^IBA(364.1,IBBDA,0)),U,10),1:0)
|
---|
134 | ;
|
---|
135 | I $G(IBLIST) K IBLIST S IBLIST=1
|
---|
136 | S IB="" F S IB=$O(^IBA(364,"ABAST",IBBDA,IB)) Q:IB="" I "CRDZ"'[IB D Q:'$G(IBLIST)
|
---|
137 | . S Z=0 F S Z=$O(^IBA(364,"ABAST",IBBDA,IB,Z)) Q:'Z D
|
---|
138 | .. S Z0=($$LAST364^IBCEF4(+$G(^IBA(364,Z,0)))=Z)
|
---|
139 | .. I Z0,'$G(IBLIST) S IBINC=1 Q
|
---|
140 | .. I $G(IBLIST),Z0 S IBLIST(Z)=""
|
---|
141 | ;
|
---|
142 | I $S('IBDEF:'IBINC,IBDEF>0:IBINC,1:0) S DA=IBBDA,DIE="^IBA(364.1,",DR=".1////"_IBDEF D ^DIE
|
---|
143 | ;
|
---|
144 | Q
|
---|
145 | ;
|
---|
146 | UPDCONF(IBBDA,IBTDA,IBTYP,IBAUTO) ; Add status msgs to STATUS file #361
|
---|
147 | ; Update data base from confirmation msg
|
---|
148 | ; IBBDA = ien of batch
|
---|
149 | ; IBTDA = ien of message
|
---|
150 | ; IBTYP = type of message
|
---|
151 | ; (0=Austin confirmation, 1=confirmation by non-payer
|
---|
152 | ; 2=confirmation by payer)
|
---|
153 | ; IBAUTO = flag for update mode
|
---|
154 | ; 0 or null : manual 1 : auto
|
---|
155 | ; ^TMP("IBCONF",$J,bill ien)="" where bill ien is the internal entry
|
---|
156 | ; number of any bills in file 364 to be excluded from the
|
---|
157 | ; confirmation due to reported errors
|
---|
158 | ;
|
---|
159 | N IBBILL,IBIDA,PRCASV,DA,DIE,DR,IBFLAG,IB0,IBS
|
---|
160 | ;
|
---|
161 | D UPDMSG(IBTDA,"U",0)
|
---|
162 | ;
|
---|
163 | S IB0=$G(^IBA(364.2,IBTDA,0))
|
---|
164 | S IBS="A"_IBTYP
|
---|
165 | ;
|
---|
166 | S IBBILL="" F S IBBILL=$O(^IBA(364,"ABABI",+IBBDA,IBBILL)) Q:'IBBILL D
|
---|
167 | . Q:$D(^TMP("IBCONF",$J,IBBILL)) ;Bill was rejected
|
---|
168 | . ;Update status of all valid bills in a batch
|
---|
169 | . S IBIDA=0 F S IBIDA=$O(^IBA(364,"ABABI",IBBDA,IBBILL,IBIDA)) Q:'IBIDA D
|
---|
170 | .. D BILLSTAC(IBIDA,IBS)
|
---|
171 | . ;
|
---|
172 | . I 'IBTYP D
|
---|
173 | .. S DR="20///N0W"
|
---|
174 | .. S:$P($G(^DGCR(399,IBBILL,"TX")),U,5)="1N" DR=DR_";24///1R"
|
---|
175 | .. S DA=IBBILL,DIE="^DGCR(399," D ^DIE
|
---|
176 | ;
|
---|
177 | I 'IBTYP D DELMSG(IBTDA)
|
---|
178 | ;
|
---|
179 | I 'IBBDA,$P(IB0,U,5) D
|
---|
180 | . N IB
|
---|
181 | . S IB=$P($G(^IBA(364,+$P(IB0,U,5),0)),U,2) ; batch
|
---|
182 | . D BILLSTAC($P(IB0,U,5),IBS) ;Upd individual transmitted bill entry
|
---|
183 | . I $G(^IBA(364.1,+IB,0)),$P($G(^(0)),U,2)'="A0" S DIE="^IBA(364.1,",DA=+IB,DR=".02////A0" D ^DIE
|
---|
184 | ;
|
---|
185 | I IBBDA,$P($G(^IBA(364.1,+IBBDA,0)),U,2)'=IBS D
|
---|
186 | . S DA=IBBDA,DIE="^IBA(364.1,"
|
---|
187 | . S DR=".02////"_IBS_$S($G(IBFLAG)'="":";.06////"_IBFLAG,1:"")_";1.05////"_$P(IB0,U,10)_";1.06///NOW"
|
---|
188 | . D ^DIE
|
---|
189 | ;
|
---|
190 | ; Add message to bill status file 361 for bill
|
---|
191 | I IBTYP D UPD361^IBCEST(IBTDA)
|
---|
192 | ;
|
---|
193 | S ZTREQ="@"
|
---|
194 | K ^TMP("IBCONF",$J)
|
---|
195 | Q
|
---|
196 | ;
|
---|
197 | UPDREJ(IBBDA,IBTDA) ; Update data base from rejection msg
|
---|
198 | ; IBBDA = ien of batch
|
---|
199 | ; IBTDA = ien of message
|
---|
200 | ;
|
---|
201 | N DA,DR,DIE,IBBILL,IBTBILL,IB0
|
---|
202 | ;
|
---|
203 | D UPDMSG(IBTDA,"U",0)
|
---|
204 | ;
|
---|
205 | S IB0=$G(^IBA(364.2,IBTDA,0)),IBTBILL=+$P(IB0,U,5),IBBILL=+$G(^IBA(364,IBTBILL,0))
|
---|
206 | ;
|
---|
207 | I $P(IB0,U,14) D UPDTEST^IBCEPTM(IBTDA) Q ; Test claim message from claim resubmission - store in test msg file instead
|
---|
208 | ;
|
---|
209 | I IBBILL D BILLSTAR(IBBILL,IBTDA) ;Update individual bill
|
---|
210 | ;
|
---|
211 | I IBBDA,'IBBILL D
|
---|
212 | . S DA=IBBDA,DIE="^IBA(364.1,"
|
---|
213 | . S DR=".11////"_IBTDA_";.06////1;1.05////"_$P(IB0,U,10)_";1.06///NOW;.05////1"
|
---|
214 | . D ^DIE ;Batch Rejected
|
---|
215 | .;
|
---|
216 | . ;Update status of all bills in batch, bill file
|
---|
217 | . F S IBBILL=$O(^IBA(364,"ABABI",IBBDA,IBBILL)) Q:'IBBILL D BILLSTAR(IBBILL,IBTDA)
|
---|
218 | ;
|
---|
219 | ;Add message to bill status file 361 for bill
|
---|
220 | D UPD361^IBCEST(IBTDA)
|
---|
221 | ;
|
---|
222 | S ZTREQ="@"
|
---|
223 | Q
|
---|
224 | ;
|
---|
225 | MAILIT ; Mails the report text (bulletin) to the IB EDI SUPERVISOR mail grp;
|
---|
226 | N IB0,IBHD,IBL,IBZ,IBOK,XMTO,XMSUBJ,XMBODY,XMDUZ,XMZ,Z
|
---|
227 | K ^TMP("IBMSG",$J),^TMP("IBMSGH",$J)
|
---|
228 | Q:'$G(IBTDA) ;Assume this exists and is the IEN of the message in 364.2
|
---|
229 | S (IBL,IBZ,IBHD)=0,IBOK=1
|
---|
230 | F S IBZ=$O(^IBA(364.2,IBTDA,2,IBZ)) Q:'IBZ S IB0=$G(^(IBZ,0)) D
|
---|
231 | . Q:$P(IB0,U)="REPORT"!($E(IB0,1,4)="99^$")
|
---|
232 | . ;
|
---|
233 | . I $P(IB0,U)="SUBJECT" D Q
|
---|
234 | .. I $O(^TMP("IBMSG",$J,0)) D SEND(.IBOK) ; send last report
|
---|
235 | .. S ^TMP("IBMSGH",$J)=$P(IB0,"SUBJECT^",2)
|
---|
236 | . ;
|
---|
237 | . I $E(IB0,1,18)="*** NEW PAGE ***" D Q
|
---|
238 | .. F Z=1:1:5 S IBL=IBL+1,^TMP("IBMSG",$J,IBL)=" "
|
---|
239 | .. S ^TMP("IBMSG",$J,IBL)="*** END OF PAGE ***"
|
---|
240 | .. F Z=1,2 S IBL=IBL+1,^TMP("IBMSG",$J,IBL)=" "
|
---|
241 | . S IBL=IBL+1,^TMP("IBMSG",$J,IBL)=IB0
|
---|
242 | . ;
|
---|
243 | I $O(^TMP("IBMSG",$J,0)) D SEND(.IBOK)
|
---|
244 | I IBOK D DELMSG($G(IBTDA))
|
---|
245 | K ^TMP("IBMSG",$J),^TMP($J,"IBMSGH",$J)
|
---|
246 | Q
|
---|
247 | ;
|
---|
248 | SEND(IBOK) ; Send actual message for 1 report
|
---|
249 | ;
|
---|
250 | N XMSUBJ,XMBODY,XMTO,XMZ,XMDUZ
|
---|
251 | S XMSUBJ=$G(^TMP("IBMSGH",$J)),XMBODY="^TMP(""IBMSG"",$J)",XMTO("I:G.IB EDI SUPERVISOR")=""
|
---|
252 | D SENDMSG^XMXAPI(,$E(XMSUBJ,1,65),XMBODY,.XMTO,,.XMZ)
|
---|
253 | I '$G(XMZ) S IBOK=0
|
---|
254 | K ^TMP("IBMSG",$J),^TMP("IBMSGH",$J)
|
---|
255 | Q
|
---|
256 | ;
|
---|