installation bug fix
[openemr.git] / library / edihistory / edih_277_html.php
blobae5b44c1d325993c3207f802c3e622626f19730b
1 <?php
2 /*
3 * edih_277_html.php.php
4 *
5 * Copyright 2016 Kevin McCormick <kevin@kt61p>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
20 * MA 02110-1301, USA.
26 // require_once("$srcdir/edihistory/codes/edih_271_code_class.php");
29 /**
30 * Produce an html display of information in
31 * the x12 edi 271 eligibility report for a particular patient
33 * @uses edih_271_codes()
34 * @uses edih_format_money()
35 * @uses edih_format_date()
36 * @uses edih_format_percent()
38 * @param object edih_x12_file type 271
39 * @param string bht03 or clm01 reference for transaction
40 * @return string
42 function edih_277_transaction_html($obj277, $bht03, $accordion=false) {
43 // get the transaction segments
44 $trans = $obj277->edih_x12_transaction($bht03);
46 // get other necessary items
47 $de = $obj277->edih_delimiters()['e'];
48 $ds = $obj277->edih_delimiters()['s'];
49 $dr = $obj277->edih_delimiters()['r'];
50 $fn = $obj277->edih_filename();
51 //
52 if ( !is_array($trans) || !count($trans) ) {
53 $str_html = "<p>Did not find transaction $bht03 in $fn</p>".PHP_EOL;
54 return $str_html;
57 $cd27x = new edih_271_codes($ds, $dr);
59 $h3_lbl = '';
60 $str_html = "";
61 $hdr_html = "";
63 $hdr_html = "<table id=$bht03 class='h277' columns=4>";
64 $hdr_html .= "<caption>Claim Status</caption>".PHP_EOL;
65 $hdr_html .= "<thead>".PHP_EOL;
66 $hdr_html .= "<tr><th>Reference</th><th>Information</th><th colspan=2>$fn</th></tr>".PHP_EOL; //
67 $hdr_html .= "</thead>".PHP_EOL."<tbody>".PHP_EOL;
69 $src_html = "";
70 $rcv_html = "";
71 $prv_html = "";
72 $sbr_nm1_html = "";
73 $dep_nm1_html = "";
74 $sbr_stc_html = "";
75 $dep_stc_html = "";
77 $trns_ct = count($trans);
78 for($i=0; $i<$trns_ct; $i++) {
79 foreach($trans[$i] as $seg) {
81 $idtype = '';
82 $name = '';
84 $var = '';
85 $rej_reason = '';
86 $follow = '';
87 $addr = '';
88 // debug
89 // echo "$i loop: $loopid Segment: $seg".PHP_EOL;
91 if ( strncmp('BHT'.$de, $seg, 4) === 0 ) {
92 $loopid = 'Heading';
93 $sar = explode($de, $seg);
94 if (isset($sar[1])) {
95 if ($sar[1] == '0010') {
96 $elem01 = "Src, Rcv, Prv, Sbr, Dep";
97 } elseif ($sar[1] == '0085') {
98 $elem01 = "Src, Rcv, Prv, Pt";
99 } else {
100 $elem01 = "Not determined ({$sar[1]})";
102 } else {
103 $elem01 = '';
106 $elem02 = ( isset($sar[2]) && $sar[2] !== false) ? $cd27x->get_271_code('BHT02', $sar[2]) : "";
107 $elem03 = ( isset($sar[3]) && $sar[3]) ? $sar[3] : "";
108 $elem04 = ( isset($sar[4]) && $sar[4]) ? edih_format_date($sar[4]) : "";
109 $elem06 = ( isset($sar[6]) && $sar[6]) ? $cd27x->get_271_code('BHT06', $sar[6]) : "";
111 $hdr_html .= "<tr><td colspan=2><em>Reference:</em> $elem03</td><td colspan=2><em>Sequence:</em> $elem01</td></tr>".PHP_EOL;
112 $hdr_html .= "<tr><td colspan=2><em>Date:</em> $elem04</td><td colspan=2><em>Type:</em> $elem02</td>".PHP_EOL;
113 $hdr_html .= ($elem06) ? "<tr><td>&gt;</td><td colspan=3><em>Type:</em> $elem06</td></tr>".PHP_EOL : "";
115 $bht = $elem03;
116 continue;
119 if ( strncmp('HL'.$de, $seg, 3) === 0 ) {
120 $sar = explode($de, $seg);
121 $elem03 = ( isset($sar[3]) ) ? $sar[3] : "";
122 if ( $elem03 == '20') { // level code
123 $loopid = '2000A'; // info source (payer)
124 $cls = "src";
125 $src_html .= "<tr class='$cls'><td colspan=4><b>Information Source</b></td></tr>".PHP_EOL;
126 } elseif ($elem03 == '21') {
127 $loopid = '2000B'; // info receiver (clinic)
128 $cls = "rcv";
129 $rcv_html .= "<tr class='$cls'><td colspan=4><b>Information Receiver</b></td></tr>".PHP_EOL;
130 } elseif ($elem03 == '19') {
131 $loopid = '2000C'; // provider
132 $cls = "prv";
133 $has_eb = false;
134 $prv_html .= "<tr class='$cls'><td colspan=4><b>Provider</b></td></tr>".PHP_EOL;
135 } elseif ($elem03 == '22') {
136 $loopid = '2000D'; // subscriber
137 $cls = "sbr";
138 $sbr_nm1_html .= "<tr class='$cls'><td colspan=4><b>Subscriber</b></td></tr>".PHP_EOL;
139 } elseif ($elem03 == 'PT') {
140 $loopid = '2000D'; // patient in 277CA
141 $cls = "sbr";
142 $sbr_nm1_html .= "<tr class='$cls'><td colspan=4><b>Patient</b></td></tr>".PHP_EOL;
143 } elseif ($elem03 == '23') {
144 $loopid = '2000E'; // dependent
145 $cls = "dep";
146 $dep_nm1_html .= "<tr class='$cls'><td colspan=4><b>Dependent</b></td></tr>".PHP_EOL;
147 } else {
148 csv_edihist_log("edih_277_transaction_html: HL segment error $fn");
151 $qtystr = ''; // reset for QTY and AMT segments in 277CA
152 continue;
155 if ( strncmp('NM1'.$de, $seg, 4) === 0 ) {
156 $sar = explode($de, $seg);
158 $nm101 = ( isset($sar[1]) ) ? $sar[1] : '';
159 $descr = ($nm101) ? $cd27x->get_271_code('NM101', $nm101) : "";
161 $name = (isset($sar[3]) && $sar[3] ) ? $sar[3] : "";
162 $name .= (isset($sar[7]) && $sar[7]) ? " {$sar[7]}" : "";
163 $name .= (isset($sar[4]) && $sar[4]) ? ", {$sar[4]}" : "";
164 $name .= (isset($sar[5]) && $sar[5]) ? " {$sar[5]}" : "";
165 $nm109 = (isset($sar[9]) && $sar[9]) ? $sar[9] : "";
167 $nm108 = (isset($sar[8]) && $sar[8] ) ? $cd27x->get_271_code('NM108', $sar[8]) : "";
169 if ($loopid == '2000A') {
170 $src_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3 title='$descr'>$name</td></tr>" .PHP_EOL;
171 $src_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3 title='$descr'><em>$nm108</em> $nm109</td></tr>" .PHP_EOL;
172 $loopid = '2100A';
173 } elseif ($loopid == '2000B') {
174 $rcv_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3 title='$descr'>$name</td></tr>" .PHP_EOL;
175 $rcv_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3 title='$descr'><em>$nm108</em> $nm109</td></tr>" .PHP_EOL;
176 $loopid = '2100B';
177 } elseif ($loopid == '2000C') {
178 $prv_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3 title='$descr'>$name</td></tr>" .PHP_EOL;
179 $prv_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3 title='$descr'><em>$nm108</em> $nm109</td></tr>" .PHP_EOL;
180 $loopid = '2100C';
181 } elseif ($loopid == '2000D') {
182 $sbr_nm1_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3 title='$descr'>$name</td></tr>" .PHP_EOL;
183 $sbr_nm1_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3 title='$descr'><em>$nm108</em> $nm109</td></tr>" .PHP_EOL;
184 $h3_lbl = $name;
185 $loopid = '2100D';
186 } elseif ( $loopid == '2000E' ) {
187 $dep_nm1_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3 title='$descr'>$name</td></tr>" .PHP_EOL;
188 $dep_nm1_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3 title='$descr'><em>$nm108</em> $nm109</td></tr>" .PHP_EOL;
189 $h3_lbl = $name;
190 $loopid = '2100E';
193 continue;
195 // //
196 if ( strncmp('PER'.$de, $seg, 4) === 0 ) {
197 $sar = explode($de, $seg);
199 $elem01 = (isset($sar[1])) ? $sar[1] : '';
200 $elem02 = (isset($sar[2])) ? $sar[2] : '';
201 $elem03 = (isset($sar[3])) ? $cd27x->get_271_code('PER03', $sar[3]) : "";
202 $elem04 = (isset($sar[4])) ? $sar[4] : '';
203 $elem05 = (isset($sar[5])) ? $cd27x->get_271_code('PER03', $sar[5]) : "";
204 $elem06 = (isset($sar[6])) ? $sar[6] : '';
205 $elem07 = (isset($sar[7])) ? $cd27x->get_271_code('PER03', $sar[7]) : "";
206 $elem08 = (isset($sar[8])) ? $sar[8] : '';
207 $elem09 = (isset($sar[9])) ? $sar[9] : '';
209 if ($loopid == '2100A') {
210 $src_html .= "<tr class='$cls'><td colspan=2>$elem02</td><td colspan=2 title='$elem03 $elem05 $elem07'>$elem04 $elem06 $elem08</td></tr>" .PHP_EOL;
211 } else {
212 csv_edihist_log('edih_277_html: PER segment not in 2100A loop '.$fn);
215 continue;
218 if ( strncmp('TRN'.$de, $seg, 4) === 0 ) {
219 $sar = explode($de, $seg);
221 $elem01 = ( isset($sar[1]) && $sar[1] == "1" ) ? "Transaction Ref" : "Trace";
222 $elem02 = ( isset($sar[2]) ) ? $sar[2] : '';
223 $elem03 = ( isset($sar[3]) ) ? $sar[3] : '';
224 $elem04 = ( isset($sar[4]) ) ? $sar[4] : '';
226 if ($loopid == '2100B') {
227 $rcv_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3><em>$elem01</em> $elem02</td></tr>".PHP_EOL;
228 $loopid = '2200B';
229 } elseif ($loopid == '2100C') {
230 $prv_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3><em>$elem01</em> $elem02</td></tr>".PHP_EOL;
231 $loopid = '2200C';
232 } elseif ($loopid == '2100D') {
233 $sbr_stc_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3><em>$elem01</em> $elem02</td></tr>".PHP_EOL;
234 $h3_lbl = ($h3_lbl) ? $h3_lbl.' '.$elem02 : $h3_lbl;
235 $loopid = '2200D';
236 } elseif ($loopid == '2100E') {
237 $dep_stc_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3><em>$elem01</em> $elem02</td></tr>".PHP_EOL;
238 $h3_lbl = ($h3_lbl) ? $h3_lbl.' '.$elem02 : $h3_lbl;
239 $loopid = '2200E';
242 continue;
245 if ( strncmp('STC'.$de, $seg, 4) === 0 ) {
246 $sar = explode($de, $seg);
248 if ( isset($sar[1]) ) {
249 if ( strpos($sar[1], $ds) ) { // claim status category : claim status : entity identifier
250 $scda = explode($ds, $sar[1]);
251 $sc101 = ( isset($scda[0]) && $scda[0]) ? $cd27x->get_271_code('HCCSCC', $scda[0]) : "";
252 $sc102 = ( isset($scda[1]) && $scda[1]) ? $cd27x->get_271_code('HCCSC', $scda[1]) : "";
253 $sc103 = ( isset($scda[2]) && $scda[2]) ? $cd27x->get_271_code('NM101', $scda[2]) : "";
255 } else {
256 $stc01 = $sar[1];
258 $stc02 = (isset($sar[2]) && $sar[2]) ? edih_format_date($sar[2]) : ""; // status information date
259 $stc03 = ""; // action code
260 if (isset($sar[3])) {
261 if ($sar[3] == 'WQ') {
262 $stc03 = "Accepted";
263 } elseif ($sar[3] == 'F') {
264 $stc03 = "Final";
265 } elseif ($sar[3] == '15') {
266 $stc03 = "Correct/Resubmit";
267 } elseif ($sar[3] == 'U') {
268 $stc03 = "Rejected";
269 } else {
270 $stc03 = $sar[3];
273 $stc04 = (isset($sar[4]) && $sar[4]) ? edih_format_money($sar[4]) : ""; // billed amount
274 $stc05 = (isset($sar[5]) && $sar[5]) ? edih_format_money($sar[5]) : ""; // paid amount
275 $stc06 = (isset($sar[6]) && $sar[6]) ? edih_format_date($sar[6]) : ""; // payment date
276 //$stc07 not used
277 $stc08 = (isset($sar[8]) && $sar[8]) ? edih_format_date($sar[8]) : ""; // check issue date
278 $stc09 = (isset($sar[9]) && $sar[9]) ? $sar[9] : ""; // check or eft number
280 $stc10 = "";
281 if ( isset($sar[10]) && $sar[10]) { // claim status category : claim status : entity identifier
282 if ( strpos($sar[10], $ds) ) {
283 $scda = explode($ds, $sar[1]);
284 $sc201 = ( isset($scda[0]) && $scda[0]) ? $cd27x->get_271_code('HCCSCC', $scda[0]) : "";
285 $sc202 = ( isset($scda[1]) && $scda[1]) ? $cd27x->get_271_code('HCCSC', $scda[1]) : "";
286 $sc203 = ( isset($scda[2]) && $scda[2]) ? $cd27x->get_271_code('NM101', $scda[2]) : "";
287 $sc204 = ( isset($scda[3]) && $scda[3] = 'RA') ? "Rx Reject/Payment Codes" : "";
288 } else {
289 $stc10 = $sar[10];
293 $stc11 = "";
294 if ( isset($sar[11]) && $sar[11]) { // claim status category : claim status : entity identifier
295 if ( strpos($sar[10], $ds) ) {
296 $scda = explode($ds, $sar[1]);
297 $sc301 = ( isset($scda[0]) && $scda[0]) ? $cd27x->get_271_code('HCCSCC', $scda[0]) : "";
298 $sc302 = ( isset($scda[1]) && $scda[1]) ? $cd27x->get_271_code('HCCSC', $scda[1]) : "";
299 $sc303 = ( isset($scda[2]) && $scda[2]) ? $cd27x->get_271_code('NM101', $scda[2]) : "";
300 $sc304 = ( isset($scda[3]) && $scda[3] = 'RA') ? "Rx Reject/Payment Codes" : "";
301 } else {
302 $stc11 = $sar[10];
306 $stc12 = ( isset($sar[12]) && $sar[12]) ? $sar[12] : ""; // message
308 $stc_html = (isset($sc101)) ? "<tr class='$cls'><td>$stc03</td><td colspan=2>$sc101</td><td>$stc02 $stc04</td></tr>".PHP_EOL : "";
309 $stc_html .= (isset($sc102)) ? "<tr class='$cls'><td>&gt;</td><td colspan=3>$sc102</td></tr>".PHP_EOL : "";
310 $stc_html .= (isset($sc103) && $sc103) ? "<tr class='$cls'><td>&gt;</td><td colspan=3><em>Entity</em> $sc103</td></tr>".PHP_EOL : "";
311 $stc_html .= ($stc05 || $stc06 || $stc08 || $stc09) ? "<tr class='$cls'><td><em>Payment</em></td><td colspan=3>$stc05 $stc06 $stc08 $stc09</td></tr>".PHP_EOL : "";
312 $stc_html .= (isset($sc201)) ? "<tr class='$cls'><td>&gt;</td><td colspan=3>$sc201 $sc204</td></tr>".PHP_EOL : "";
313 $stc_html .= (isset($sc202)) ? "<tr class='$cls'><td>&gt;</td><td colspan=3>$sc202</td></tr>".PHP_EOL : "";
314 $stc_html .= (isset($sc203) && $sc203) ? "<tr class='$cls'><td>&gt;</td><td colspan=3><em>Entity</em> $sc203</td></tr>".PHP_EOL : "";
315 $stc_html .= (isset($sc301)) ? "<tr class='$cls'><td>&gt;</td><td colspan=3>$sc301 $sc304</td></tr>".PHP_EOL : "";
316 $stc_html .= (isset($sc302)) ? "<tr class='$cls'><td>&gt;</td><td colspan=3>$sc302</td></tr>".PHP_EOL : "";
317 $stc_html .= (isset($sc303) && $sc303) ? "<tr class='$cls'><td>&gt;</td><td colspan=3><em>Entity</em> $sc303</td></tr>".PHP_EOL : "";
318 $stc_html .= ($stc12) ?"<tr class='$cls'><td><em>Message</em></td><td colspan=3>$stc12</td></tr>".PHP_EOL : "";
320 if ($loopid == '2200B') {
321 $rcv_html .= $stc_html;
322 } elseif ($loopid == '2200C') {
323 $prv_html .= $stc_html;
324 } elseif ($loopid == '2200D') {
325 $sbr_stc_html .= $stc_html;
326 } elseif ($loopid == '2200E') {
327 $dep_stc_html .= $stc_html;
330 continue;
332 // in 277CA, expect QTY followed by AMT
333 // do not expect QTY or AMT in regular 277
334 if ( strncmp('QTY'.$de, $seg, 4) === 0 ) {
335 $sar = explode($de, $seg);
336 if ( isset($sar[1]) ) {
337 if ($sar[1] == '90' ) {
338 $qtystr = "Acknowledged Quantity ";
339 } elseif ($sar[1] == 'AA' ) {
340 $qtystr = "Unacknowledged Quantity ";
341 } elseif ($sar[1] == 'QA' ) {
342 $qtystr = "Quantity Approved ";
343 } elseif ($sar[1] == 'QC' ) {
344 $qtystr = "Quantity Disapproved ";
345 } else {
346 $qtystr = "Quantity ";
348 } else {
349 $qtystr = "";
352 $qtystr .= (isset($sar[2]) && $sar[2]) ? $sar[2] : "";
355 if ( strncmp('AMT'.$de, $seg, 4) === 0 ) {
356 $sar = explode($de, $seg);
357 // 277CA
358 $amtstr = (isset($sar[1]) && $sar[1] == 'YU') ? "Amt " :"Amt Rej ";
359 $amtstr .= (isset($sar[2]) && $sar[2]) ? edih_format_money($sar[2]) : "";
361 if ($loopid == '2200B') {
362 $rcv_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3>$qtystr $amtstr</td></tr>".PHP_EOL;
363 } elseif ($loopid == '2200C') {
364 $prv_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3>$qtystr $amtstr</td></tr>".PHP_EOL;
365 } elseif ($loopid == '2200D') {
366 $sbr_stc_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3>$qtystr $amtstr</td></tr>".PHP_EOL;
367 } elseif ($loopid == '2200E') {
368 $dep_stc_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3>$qtystr $amtstr</td></tr>".PHP_EOL;
370 $amtstr = '';
371 $qtystr = '';
373 continue;
376 if ( strncmp('REF'.$de, $seg, 4) === 0 ) {
377 $sar = explode($de, $seg);
380 $elem01 = (isset($sar[1])) ? $cd27x->get_271_code('REF', $sar[1]) : '';
381 $elem02 = (isset($sar[2])) ? $sar[2] : '';
382 $elem03 = (isset($sar[3])) ? $sar[2] : '';
384 if ($loopid == '2200B') {
385 $rcv_html .= "<tr class='$cls'><td>&gt;</td><td colspan=2><em>$elem01</em> $elem02</td><td>$elem03</td></tr>".PHP_EOL;
386 } elseif ($loopid == '2200C') {
387 $prv_html .= "<tr class='$cls'><td>&gt;</td><td colspan=2><em>$elem01</em> $elem02</td><td>$elem03</td></tr>".PHP_EOL;
388 } elseif ($loopid == '2200D' || $loopid == '2220D' ) {
389 $sbr_stc_html .= "<tr class='$cls'><td>&gt;</td><td colspan=2><em>$elem01</em> $elem02</td><td>$elem03</td></tr>".PHP_EOL;
390 } elseif ($loopid == '2200E' || $loopid == '2220E' ) {
391 $dep_stc_html .= "<tr class='$cls'><td>&gt;</td><td colspan=2><em>$elem01</em> $elem02</td><td>$elem03</td></tr>".PHP_EOL;
394 continue;
397 if ( strncmp('DTP'.$de, $seg, 4) === 0 ) {
399 $sar = explode($de, $seg);
400 $var = '';
402 $elem01 = (isset($sar[1]) && $sar[1]) ? $cd27x->get_271_code('DTP', $sar[1]) : "";
403 $elem02 = (isset($sar[2])) ? $sar[2] : '';
404 $elem03 = (isset($sar[3])) ? $sar[3] : '';
406 $idtype = ($elem01) ? $cd27x->get_271_code('DTP', $elem01) : "";
407 if ( $elem02 == 'D8' && $elem03) {
408 $var = edih_format_date($elem03);
409 } elseif ( $elem02 == 'RD8' && $elem03) {
410 $var = edih_format_date( substr($elem03, 0, 8) );
411 $var .= ' - '.edih_format_date( substr($elem03, -8) );
414 if ($loopid == '2200D' || $loopid == '2220D') {
415 $sbr_stc_html .= "<tr class='$cls'><td>&gt;</td><td>$elem01</td><td colspan=2>$var</td></tr>" .PHP_EOL;
416 } elseif ($loopid == '2200E' || $loopid == '2220E') {
417 $dep_stc_html .= "<tr class='$cls'><td>&gt;</td><td>$elem01</td><td colspan=2>$var</td></tr>" .PHP_EOL;
420 continue;
423 if ( strncmp('SVC'.$de, $seg, 4) === 0 ) {
425 $sar = explode($de, $seg);
427 $elem01 = ''; // composite procedure code source:code:modifier:modifier
428 if ( isset($sar[1]) && $sar[1]) {
429 // construct a code source code modifier string
430 if ( strpos($sar[1], $ds) ) {
431 $scda = explode($ds, $sar[1]);
432 reset($scda);
433 while ( list($key, $val) = each($scda) ) {
434 if ($key == 0 && $val) {
435 $elem01 = $cd27x->get_271_code('EB13',$val);
436 } else {
437 $elem01 .= " ".$val;
440 } else {
441 $elem01 = $sar[1];
445 $elem02 = (isset($sar[2]) && $sar[2]) ? edih_format_money($sar[2]) : ""; // billed amount
446 $elem03 = (isset($sar[3]) && $sar[3]) ? edih_format_money($sar[3]) : ""; // paid amount
447 $elem04 = (isset($sar[4]) && $sar[4]) ? $sar[4] : ""; // revenue code
448 $elem05 = (isset($sar[5]) && $sar[5]) ? $sar[5] : ""; // quantity
449 // $elem06 not used
450 $elem07 = (isset($sar[7]) && $sar[7]) ? $sar[7] : ""; // original unis of service
452 if ($loopid == '2200B') {
453 $rcv_html .= "<tr class='$cls'><td><em>Service</em></td><td>$elem01</td><td>$elem02</td><td>$elem04</td></tr>".PHP_EOL;
454 $rcv_html .= ($elem03 || $elem04) ? "<tr class='$cls'><td>&gt;</td><td colspan=3>$elem03 $elem04</td></tr>".PHP_EOL : "";
455 } elseif ($loopid == '2200D' || $loopid == '2220D') {
456 $sbr_stc_html .= "<tr class='$cls'><td><em>Service</em></td><td>$elem01</td><td colspan=2>$elem02 $elem04</td></tr>".PHP_EOL;
457 $sbr_stc_html .= ($elem03 || $elem04) ? "<tr class='$cls'><td>&gt;</td><td colspan=3>$elem03 $elem04</td></tr>".PHP_EOL : "";
458 } elseif ($loopid == '2200E' || $loopid == '2220E') {
459 $dep_stc_html .= "<tr class='$cls'><td><em>Service</em></td><td>$elem01</td><td colspan=2>$elem02 $elem04</td></tr>".PHP_EOL;
460 $dep_stc_html .= ($elem03 || $elem04) ? "<tr class='$cls'><td>&gt;</td><td colspan=3>$elem03 $elem04</td></tr>".PHP_EOL : "";
463 continue;
468 if ($accordion) {
469 $str_html .= "<h3>$bht $h3_lbl</h3>".PHP_EOL;
470 $str_html .= "<div id='ac_$bht'>".PHP_EOL;
472 $str_html .= ($hdr_html) ? $hdr_html : "";
473 $str_html .= ($src_html) ? $src_html : "";
474 $str_html .= ($rcv_html) ? $rcv_html : "";
475 $str_html .= ($prv_html) ? $prv_html : "";
476 $str_html .= ($sbr_nm1_html) ? $sbr_nm1_html : "";
477 $str_html .= ($sbr_stc_html) ? $sbr_stc_html : "";
478 $str_html .= ($dep_nm1_html) ? $dep_nm1_html : "";
479 $str_html .= ($dep_stc_html) ? $dep_stc_html : "";
480 $str_html .= "<tr><td colspan=4>&nbsp;</td></tr>".PHP_EOL;
481 $str_html .= "</tbody>".PHP_EOL."</table>".PHP_EOL;
483 if ($accordion) { $str_html .= "</div>".PHP_EOL; }
485 return $str_html;
489 * create a display for an individual claim status response
491 * @uses csv_check_x12_obj()
492 * @uses edih_277_transaction_html()
494 * @param string $filename the filename
495 * @param string $clm01 identifier from 837 CLM of BHT segment
497 * @return string either an error message or a table with the information from the response
499 function edih_277_html($filename, $bht03='') {
500 // create a display for an individual 277 response
501 $html_str = '';
503 if ( $filename ) {
504 $fn = $filename;
505 } else {
506 csv_edihist_log ("edih_277_html: called with no file arguments");
507 $html_str .= "Error, no file given<br />".PHP_EOL;
508 return $html_str;
511 if ($fn) {
512 $obj277 = csv_check_x12_obj($fn, 'f277');
513 if ($obj277 && 'edih_x12_file' == get_class($obj277) ) {
514 if ($bht03) {
515 // particular transaction
516 $html_str .= edih_277_transaction_html($obj277, $bht03);
517 } else {
518 // file contents
519 $env_ar = $obj277->edih_envelopes();
520 if (!isset($env_ar['ST'])) {
521 $html_str .= "<p>edih_277_html: file parse error, envelope error</p>".PHP_EOL;
522 $html_str .= $obj277->edih_message();
523 return $html_str;
524 } else {
525 $html_str .= "<div id='accordion'>".PHP_EOL;
528 foreach($env_ar['ST'] as $st) {
529 foreach($env_ar['GS'] as $gs){
530 if ($gs['icn'] != $st['icn']) {
531 continue;
532 } else {
533 $gs_date = edih_format_date($gs['date']);
534 $gs_sender = $gs['sender'];
535 break;
539 // get each transaction
540 foreach($st['bht03'] as $bht) {
541 //$html_str .= "<h3>$bht Claim Status <em>Date</em> $gs_date <em>Source</em> $gs_sender</h3>".PHP_EOL;
542 //$html_str .= "<div id='ac_$bht'>".PHP_EOL;
544 $html_str .= edih_277_transaction_html($obj277, $bht, true);
546 //$html_str .= "</div>".PHP_EOL;
549 $html_str .= "</div>".PHP_EOL;
552 } else {
553 $html_str .= "<p>$filename : file parse error</p>".PHP_EOL;
555 } else {
556 $html_str .= "Error with file name or file parsing <br />".PHP_EOL;
557 csv_edihist_log("edih_277_html: error in retreiving file object");
558 return $html_str;
561 return $html_str;