POS default selection for encounter (#1088)
[openemr.git] / library / edihistory / edih_271_html.php
blob72ae0a812571fc6907944b79805a88d94032d076
1 <?php
2 /*
3 * edih_271_html.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_271_transaction_html($obj271, $bht03)
45 $trans = $obj271->edih_x12_transaction($bht03);
46 if (empty($trans) || !count($trans)) {
47 $str_html = "<p>Did not find transaction $bht03 in ".$obj271->edih_filename()."</p>";
48 return $str_html;
51 $de = $obj271->edih_delimiters()['e'];
52 $ds = $obj271->edih_delimiters()['s'];
53 $dr = $obj271->edih_delimiters()['r'];
54 $fn = $obj271->edih_filename();
56 $cd271 = new edih_271_codes($ds, $dr);
58 $str_html = "";
60 $hdr_html = "<table id=$bht03 class='h271' columns=4><caption>Eligibility Benefit Response</caption>".PHP_EOL;
61 $hdr_html .= "<thead>".PHP_EOL;
62 $hdr_html .= "<tr><th>Reference</th><th colspan=2>Information</th><th colspan=2>$fn</th></tr>".PHP_EOL;
63 $hdr_html .= "</thead>".PHP_EOL."<tbody>".PHP_EOL;
64 $src_html = "";
65 $rcv_html = "";
66 $sbr_nm1_html = "";
67 $dep_nm1_html = "";
68 $sbr_ref_html = "";
69 $dep_ref_html = "";
70 $sbr_eb_html = "";
71 $dep_eb_html = "";
73 $ebct = 0;
75 $trns_ct = count($trans);
76 for ($i=0; $i<$trns_ct; $i++) {
77 foreach ($trans[$i] as $seg) {
79 $idtype = '';
80 $name = '';
81 $var = '';
82 $rej_reason = '';
83 $follow = '';
84 $addr = '';
86 if (strncmp('BHT'.$de, $seg, 4) === 0) {
87 $loopid = 'Heading';
88 $sar = explode($de, $seg);
89 $bht01 = ( isset($sar[1]) && $sar[1] == '022') ? "Src, Rcv, Sbr, Dep" : "Order unspecified";
90 $bht02 = ( isset($sar[2]) && $sar[2] == '11') ? "Response" : "Confirmation";
91 $bht03 = ( isset($sar[3]) && $sar[3]) ? $sar[3] : "";
92 $bht04 = ( isset($sar[4]) && $sar[4]) ? edih_format_date($sar[4]) : "";
94 $hdr_html .= "<tr><td><em>Reference:</em> $bht03</td><td><em>Date:</em> $bht04</td><td><em>Type:</em> $bht02</td><td>$bht01</td></tr>" .PHP_EOL;
95 continue;
99 if (strncmp('HL'.$de, $seg, 3) === 0) {
100 $sar = explode($de, $seg);
101 if ($sar[3] == '20') { // level code
102 $loopid = '2000A'; // info source (payer)
103 $src_html .= "<tr><td colspan=4><b>Information Source</b></td></tr>".PHP_EOL;
104 } elseif ($sar[3] == '21') {
105 $loopid = '2000B'; // info receiver (clinic)
106 $rcv_html .= "<tr><td colspan=4><b>Information Receiver</b></td></tr>".PHP_EOL;
107 } elseif ($sar[3] == '22') {
108 $loopid = '2000C'; // subscriber
109 $has_eb = false;
110 $sbr_nm1_html .= "<tr><td colspan=4><b>Subscriber</b></td></tr>".PHP_EOL;
111 } elseif ($sar[3] == '23') {
112 $loopid = '2000D'; // dependent
113 $has_eb = false;
114 $dep_nm1_html .= "<tr><td colspan=4><b>Dependent</b></td></tr>".PHP_EOL;
118 $ebct = 0;
119 continue;
123 if (strncmp('AAA'.$de, $seg, 4) === 0) {
124 // rejection
125 $sar = explode($de, $seg);
126 $rej_reason = $cd271->get_271_code('AAA03', $sar[3]);
127 $follow = $cd271->get_271_code('AAA04', $sar[4]);
128 if ($loopid == '2000A') {
129 $src_html .= "<tr><td><em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL;
130 } elseif ($loopid == '2000B') {
131 $rcv_html .= "<tr><td><em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL;
132 } elseif ($loopid == '2000C') {
133 $sbr_nm1_html .= "<tr><td><em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL;
134 } elseif ($loopid == '2000D') {
135 $dep_nm1_html .= "<tr><td><em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL;
136 } elseif ($loopid == '2110C') {
137 $sbr_eb_html .= "<tr class=$cls><td><em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL;
138 } elseif ($loopid == '2110D') {
139 $dep_eb_html .= "<tr class=$cls><td><em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL;
140 } else {
141 $hdr_html .= "<tr><td>$loopid <em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL;
144 continue;
147 if (strncmp('NM1'.$de, $seg, 4) === 0) {
148 $sar = explode($de, $seg);
150 $descr = (isset($sar[1]) && $sar[1] ) ? $cd271->get_271_code('NM101', $sar[1]) : "";
152 $name = (isset($sar[3]) && $sar[3] ) ? $sar[3] : "";
153 $name .= (isset($sar[7]) && $sar[7]) ? " {$sar[7]}" : "";
154 $name .= (isset($sar[4]) && $sar[4]) ? ", {$sar[4]}" : "";
155 $name .= (isset($sar[5]) && $sar[5]) ? " {$sar[5]}" : "";
156 $name .= (isset($sar[7]) && $sar[7]) ? " {$sar[7]}" : "";
158 $idtype = (isset($sar[8]) && $sar[8] ) ? $cd271->get_271_code('NM108', $sar[8]) : "";
159 $nm109 = (isset($sar[9]) && $sar[9]) ? $sar[9] : "";
161 if ($loopid == '2000A') {
162 $src_html .= "<tr><td title='$idtype'>$nm109</td><td colspan=3 title='$descr'>$name</td></tr>" .PHP_EOL;
163 $loopid = '2100A';
164 } elseif ($loopid == '2000B') {
165 $rcv_html .= "<tr><td title='$idtype'>$nm109</td><td colspan=3 title='$descr'>$name</td></tr>" .PHP_EOL;
166 $loopid = '2100B';
167 } elseif ($loopid == '2000C') {
168 $sbr_nm1_html .= "<tr><td title='$idtype'>$nm109</td><td colspan=3 title='$descr'>$name</td></tr>" .PHP_EOL;
169 $loopid = '2100C';
170 } elseif ($loopid == '2000D') {
171 $dep_nm1_html .= "<tr><td title='$idtype'>$nm109</td><td colspan=3 title='$descr'>$name</td></tr>" .PHP_EOL;
172 $loopid = '2100D';
173 } elseif ($loopid == '2120C') {
174 $sbr_eb_html .= "<tr class=$cls><td>&gt;</td><td title='$idtype'>$nm109</td><td colspan=2 title='$descr'>$descr $name</td></tr>" .PHP_EOL;
175 } elseif ($loopid == '2120D') {
176 $dep_eb_html .= "<tr class=$cls><td>&gt;</td><td title='$idtype'>$nm109</td><td colspan=2 title='$descr'>$descr $name</td></tr>" .PHP_EOL;
180 continue;
184 if (strncmp('PER'.$de, $seg, 4) === 0) {
185 $sar = explode($de, $seg);
186 $per02 = (isset($sar[2]) && $sar[2]) ? $sar[2] : '';
187 $idtype = (isset($sar[3]) && $sar[3]) ? $cd271->get_271_code('PER03', $sar[3]) : "";
188 $per04 = (isset($sar[4]) && $sar[2]) ? $sar[4] : '';
189 if ($loopid == '2100A') {
190 $src_html .= "<tr><td colspan=3>$per02</td><td title='$idtype'>$per04</td></tr>" .PHP_EOL;
191 } elseif ($loopid == '2120C') {
192 $sbr_eb_html .= "<tr class=$cls><td>&gt;</td><td title='$idtype'>$per04</td><td colspan=2>$per02</td></tr>" .PHP_EOL;
193 } elseif ($loopid == '2120D') {
194 $dep_eb_html .= "<tr class=$cls><td>&gt;</td><td title='$idtype'>$per04</td><td colspan=2>$per02</td></tr>" .PHP_EOL;
198 continue;
202 if (strncmp('N3'.$de, $seg, 3) === 0) {
203 $sar = explode($de, $seg);
204 $addr = (isset($sar[1])) ? $sar[1] : "";
205 $addr .= (isset($sar[2])) ? " {$sar[2]}" : "";
206 if ($loopid == '2100C') {
207 $sbr_nm1_html .= "<tr><td>&gt;</td><td colspan=3>$addr</td></tr>" .PHP_EOL;
208 } elseif ($loopid == '2100D') {
209 $dep_nm1_html .= "<tr><td>&gt;</td><td colspan=3>$addr</td></tr>" .PHP_EOL;
210 } elseif ($loopid == '2120C') {
211 $sbr_eb_html .= "<tr class=$cls><td>&gt;</td><td colspan=3>$addr</td></tr>" .PHP_EOL;
212 } elseif ($loopid == '2120D') {
213 $dep_eb_html .= "<tr class=$cls><td>&gt;</td><td colspan=3>$addr</td></tr>" .PHP_EOL;
216 continue;
220 if (strncmp('N4'.$de, $seg, 3) === 0) {
221 $sar = explode($de, $seg);
222 if ($loopid == '2100C') {
223 $sbr_nm1_html .= "<tr><td>&gt;</td><td colspan=3>{$sar[1]} {$sar[2]} {$sar[3]}</td></tr>" .PHP_EOL;
224 } elseif ($loopid == '2100D') {
225 $dep_nm1_html .= "<tr><td>&gt;</td><td colspan=3>{$sar[1]} {$sar[2]} {$sar[3]}</td></tr>" .PHP_EOL;
226 } elseif ($loopid == '2120C') {
227 $sbr_eb_html .= "<tr class=$cls><td>&gt;</td><td colspan=3>{$sar[1]} {$sar[2]} {$sar[3]}</td></tr>" .PHP_EOL;
228 } elseif ($loopid == '2120D') {
229 $dep_eb_html .= "<tr class=$cls><td>&gt;</td><td colspan=3>{$sar[1]} {$sar[2]} {$sar[3]}</td></tr>" .PHP_EOL;
232 continue;
236 if (strncmp('PRV'.$de, $seg, 4) === 0) {
237 $sar = explode($de, $seg);
238 $idtype = ($sar[1]) ? $cd271->get_271_code('PRV', $sar[1]) : "";
239 if ($loopid == '2100B') {
240 $src_html .= "<tr><td colspan=3>{$sar[2]}</td><td title='$idtype'>{$sar[3]}</td></tr>" .PHP_EOL;
241 } elseif ($loopid == '2100C') {
242 $sbr_nm1_html .= "<tr><td title='$idtype'>{$sar[3]}</td><td colspan=3>{$sar[2]}</td></tr>" .PHP_EOL;
243 } elseif ($loopid == '2100D') {
244 $dep_nm1_html .= "<tr><td title='$idtype'>{$sar[3]}</td><td colspan=3>{$sar[2]}</td></tr>" .PHP_EOL;
245 } elseif ($loopid == '2120C') {
246 $sbr_eb_html .= "<tr class=$cls><td>&gt;</td><td title='$idtype'>{$sar[3]}</td><td colspan=2>{$sar[2]}</td></tr>" .PHP_EOL;
247 } elseif ($loopid == '2120D') {
248 $dep_eb_html .= "<tr class=$cls><td>&gt;</td><td title='$idtype'>{$sar[3]}</td><td colspan=2>{$sar[2]}</td></tr>" .PHP_EOL;
252 continue;
256 if (strncmp('DMG'.$de, $seg, 4) === 0) {
257 $sar = explode($de, $seg);
258 $dmg02 = (isset($sar[2]) && $sar[2]) ? edih_format_date($sar[2]) : "";
259 if (isset($sar[3]) && $sar[3]) {
260 if ($sar[3] == 'M') {
261 $dmg03 = "Male";
262 } elseif ($sar[3] == 'F') {
263 $dmg03 = "Female";
264 } else {
265 $dmg03 = "Unknown";
269 if ($loopid == '2100C') {
270 $sbr_nm1_html .= "<tr><td>&gt;</td><td>$dmg03</td><td colspan=2><em>Date of Birth</em> $dmg02</td></tr>" .PHP_EOL;
271 } elseif ($loopid == '2100D') {
272 $dep_nm1_html .= "<tr><td>&gt;</td><td>$dmg03</td><td colspan=2><em>Date of Birth</em> $dmg02</td></tr>" .PHP_EOL;
275 continue;
278 if (strncmp('INS'.$de, $seg, 4) === 0) {
279 $sar = explode($de, $seg);
280 $ins01 = (isset($sar[1]) && $sar[1] == 'Y') ? "Subscriber" : "Dependent";
281 $ins02 = (isset($sar[2]) && $sar[2]) ? $cd271->get_271_code('INS02', $sar[2]) : "";
282 $ins03 = (isset($sar[3]) && $sar[3]) ? $sar[3] : "";
283 $ins04 = (isset($sar[4]) && $sar[4] == '25') ? "<b>Information changed</b>" : "";
284 $ins17 = (isset($sar[17]) && $sar[17]) ? $sar[17] : "";
286 if ($loopid == '2100C') {
287 $sbr_nm1_html .= "<tr><td>&gt;</td><td>$ins01 $ins17</td><td>$ins02</td><td>$ins03 $ins04</td></tr>" .PHP_EOL;
288 } elseif ($loopid == '2100D') {
289 $dep_nm1_html .= "<tr><td>&gt;</td><td>$ins01 $ins17</td><td>$ins02</td><td>$ins03 $ins04</td></tr>" .PHP_EOL;
292 continue;
295 if (strncmp('DTP'.$de, $seg, 4) === 0) {
297 $sar = explode($de, $seg);
298 $var = '';
299 $dtp01 = (isset($sar[1])) ? $sar[1] : '';
300 $dtp02 = (isset($sar[2])) ? $sar[2] : '';
301 $dtp03 = (isset($sar[3])) ? $sar[3] : '';
303 $idtype = ($dtp01) ? $cd271->get_271_code('DTP', $dtp01) : "";
304 if ($dtp02 == 'D8' && $dtp03) {
305 $var = edih_format_date($dtp03);
306 } elseif ($dtp02 == 'RD8' && $dtp03) {
307 $var = edih_format_date(substr($dtp03, 0, 8));
308 $var .= ' - '.edih_format_date(substr($dtp03, -8));
311 if ($loopid == '2100C') {
312 $sbr_nm1_html .= "<tr><td>&gt;</td><td>$idtype</td><td colspan=2>$var</td></tr>" .PHP_EOL;
313 } elseif ($loopid == '2100D') {
314 $dep_nm1_html .= "<tr><td>&gt;</td><td>$idtype</td><td colspan=2>$var</td></tr>" .PHP_EOL;
315 } elseif ($loopid == '2110C') {
316 $sbr_eb_html .= "<tr class=$cls><td>&gt;</td><td>$idtype</td><td colspan=2>$var</td></tr>" .PHP_EOL;
317 } elseif ($loopid == '2110D') {
318 $dep_eb_html .= "<tr class=$cls><td>&gt;</td><td>$idtype</td><td colspan=2>$var</td></tr>" .PHP_EOL;
321 continue;
325 if (strncmp('MPI'.$de, $seg, 4) === 0) {
326 $sar = explode($de, $seg);
327 $idtype = (isset($sar[1]) && $sar[1]) ? $cd271->get_271_code('MPI', $sar[1]) : "";
328 $idtype .= (isset($sar[2]) && $sar[2]) ? $cd271->get_271_code('MPI', $sar[2]) : "";
329 $idtype .= (isset($sar[3]) && $sar[3]) ? $cd271->get_271_code('MPI', 'SB'.$sar[3]) : "";
330 if (isset($sar[7]) && isset($sar[8])) {
331 if ($sar[7] == 'D8') {
332 $var = edih_format_date($sar[8]);
333 } elseif ($sar[7] == 'RD8') {
334 $var = edih_format_date(substr($sar[8], 0, 8));
335 $var .= ' - '.edih_format_date(substr($sar[8], -8));
339 if ($loopid == '2100C') {
340 $sbr_nm1_html .= "<tr><td colspan=3>$idtype</td><td>$var</td></tr>" .PHP_EOL;
341 } elseif ($loopid == '2100D') {
342 $dep_nm1_html .= "<tr><td colspan=3>$idtype</td><td>$var</td></tr>" .PHP_EOL;
345 continue;
349 if (strncmp('EB'.$de, $seg, 3) === 0) {
351 $ebct++;
352 $cls = ($ebct % 2) ? 'ebe' : 'ebo';
353 $sar = explode($de, $seg);
355 $eb01 = $cd271->get_271_code('EB01', $sar[1]); // eligibility or benefit
356 $eb02 = (isset($sar[2]) && $sar[2]) ? $cd271->get_271_code('EB02', $sar[2]) : ''; // coverage level
357 $eb03 = (isset($sar[3]) && $sar[3]) ? $cd271->get_271_code('EB03', $sar[3]) : ''; // service type
358 $eb04 = (isset($sar[4]) && $sar[4]) ? $cd271->get_271_code('EB04', $sar[4]) : ''; // insurance type
359 $eb05 = (isset($sar[5]) && $sar[5]) ? $sar[5] : ''; // descriptive (plan name)
360 $eb06 = (isset($sar[6]) && $sar[6]) ? $cd271->get_271_code('EB06', $sar[6]) : ''; // time qualifier
361 $eb07 = (isset($sar[7]) && strlen($sar[7])) ? edih_format_money($sar[7]) : ''; // monetary amount
362 $eb08 = (isset($sar[8]) && $sar[8]) ? edih_format_percent($sar[8]) : ''; // percentage amount
363 $eb09 = (isset($sar[9]) && $sar[9]) ? $cd271->get_271_code('EB09', $sar[9]) : ''; // Quantity qualifier
364 $eb10 = (isset($sar[10]) && $sar[10]) ? $sar[10] : ''; // quantity
365 $eb11 = (isset($sar[11]) && $sar[11]) ? $cd271->get_271_code('EB11', $sar[11]) : ''; // authorization required?
366 $eb12 = (isset($sar[12]) && $sar[12]) ? $cd271->get_271_code('EB12', $sar[12]) : ''; // in network?
367 $eb13 = "";
368 if (isset($sar[13]) && strpos($sar[13], $ds)) { // composite procedure ID
369 $eb13ar = explode($ds, $sar[13]);
370 reset($eb13ar);
371 while (list($k, $v) = each($eb13ar)) {
372 if ($k == 0) {
373 $eb13 = $cd271->get_271_code('EB13', $v);
374 } else {
375 $eb13 .= " ".$v;
378 } else {
379 $eb13 = ($sar[13]) ? "<em>Procedure</em> $eb13" : "";
382 $eb14 = "";
383 if (isset($sar[14])) {
384 if (strpos($sar[14], $ds)) { // composite diagnosis pointer
385 $eb14 = str_replace($ds, " | ", $sar[14]) ;
386 } else {
387 $eb14 = $sar[14];
390 $eb14 = ($eb14) ? "<em>Pointers</em> $eb14" : "";
393 // if LS - LE segments loop should be 2110C or 2110D
394 if ($loopid == '2100C' || $loopid == '2110C') {
395 $loopid = '2110C';
396 if (strpos('|A|B', $sar[1]) !== false) {
397 $sbr_eb_html .= "<tr class=$cls><td>$eb01</td><td>$eb07 $eb08</td><td colspan=2>$eb02 $eb03 $eb04 $eb06</td></tr>" .PHP_EOL;
398 } elseif (strpos('|C|G|J|Y', $sar[1]) !== false) {
399 $sbr_eb_html .= "<tr class=$cls><td>$eb01</td><td>$eb02</td><td>$eb06 $eb07</td><td>$eb03 $eb04</td></tr>" .PHP_EOL;
400 } elseif (strpos('|E|F|', $sar[1]) !== false) {
401 $sbr_eb_html .= "<tr class=$cls><td>$eb01</td><td>$eb02</td><td colspan=2>$eb03 $eb04 $eb06</td></tr>" .PHP_EOL;
402 } else {
403 $sbr_eb_html .= "<tr class=$cls><td>$eb01</td><td>$eb02</td><td colspan=3>$eb07 $eb08 $eb03 $eb04 $eb06</td></tr>" .PHP_EOL;
406 $sbr_eb_html .= ($eb09 || $eb10 || $eb11 || $eb12) ? "<tr class=$cls><td colspan=2>&gt;</td><td colspan=2>$eb09 $eb10 $eb11 $eb12</td></tr>".PHP_EOL : "";
407 $sbr_eb_html .= ($eb13 || $eb14) ? "<tr class=$cls><td>&gt;</td><td colspan=3>$eb13 $eb14 </td></tr>".PHP_EOL : "";
408 $sbr_eb_html .= ($eb05) ? "<tr class=$cls><td>&gt;</td><td colspan=3>$eb05</td></tr>".PHP_EOL : "";
409 } elseif ($loopid == '2100D' || $loopid == '2110D') {
410 $loopid = '2110D';
411 if (strpos('|A|B', $eb01) && !$eb02) {
412 $dep_eb_html .= "<tr class=$cls><td>$eb01</td><td>$ebo7 $eb08</td><td colspan=2>$eb03 $eb04 $eb06</td></tr>" .PHP_EOL;
413 } elseif (strpos('|C|G|J|Y', $eb01)) {
414 $dep_eb_html .= "<tr class=$cls><td>$eb01</td><td>$eb02</td><td>$eb07 $eb08</td><td>$eb11 $eb12</td></tr>" .PHP_EOL;
415 } elseif (strpos('|E|F|', $eb01)) {
416 $dep_eb_html .= "<tr class=$cls><td>$eb01</td><td>$eb02</td><td colspan=2>$eb03 $eb04 $eb06 </td></tr>" .PHP_EOL;
417 } else {
418 $dep_eb_html .= "<tr class=$cls><td>$eb01</td><td>$eb02</td><td colspan=3>$eb07 $eb08 $eb03 $eb04 $eb06 </td></tr>" .PHP_EOL;
421 $dep_eb_html .= ($eb09 || $eb10 || $eb11 || $eb12) ? "<tr class=$cls><td>&gt;</td><td colspan=3>$eb09 $eb10 $eb11 $eb12</td></tr>".PHP_EOL : "";
422 $dep_eb_html .= ($eb13 || $eb14) ? "<tr class=$cls><td>&gt;</td><td colspan=3>$eb13 $eb14 </td></tr>".PHP_EOL : "";
423 $dep_eb_html .= ($eb05) ? "<tr class=$cls><td>&gt;</td><td colspan=3>$eb05</td></tr>".PHP_EOL : "";
426 continue;
430 if (strncmp('HSD'.$de, $seg, 4) === 0) {
431 $sar = explode($de, $seg);
433 $hsd01 = (isset($sar[1]) && $sar[1]) ? $cd271->get_271_code('HSD01', $sar[1]) : ''; // quantity qualifier
434 $hsd02 = (isset($sar[2]) && $sar[2]) ? $sar[2] : ''; // numeric quantity
435 $hsd03 = (isset($sar[3]) && $sar[3]) ? $cd271->get_271_code('HSD01', $sar[3]) : ''; // measurement unit
436 $hsd04 = (isset($sar[4]) && $sar[4]) ? $sar[4] : ''; // sample selection modulus
437 $hsd05 = (isset($sar[5]) && $sar[5]) ? $cd271->get_271_code('EB06', $sar[5]) : ''; // time period qualifier
438 $hsd06 = (isset($sar[6]) && $sar[6]) ? $sar[6] : ''; // number of periods
439 $hsd07 = (isset($sar[7]) && $sar[7]) ? $cd271->get_271_code('HSD07', $sar[7]) : ''; // delivery
440 $hsd08 = (isset($sar[8]) && $sar[8]) ? $cd271->get_271_code('HSD08', $sar[8]) : ''; // delivery
442 if ($loopid == '2110C') {
443 $sbr_eb_html .= "<tr class=$cls><td>&gt;</td><td>$hsd01 : $hsd02</td><td>$hsd03 : $hsd04</td><td>$hsd05 : $hsd06</td></tr>" .PHP_EOL;
444 $sbr_eb_html .= ($hsd07 || $hsd08) ? "<tr class=$cls><td>&gt;</td><td colspan=3>$hsd07 $hsd08</td></tr>".PHP_EOL : '';
445 } elseif ($loopid == '2110D') {
446 $dep_eb_html .= "<tr class=$cls><td>&gt;</td><td>$hsd01 : $hsd02</td><td>$hsd03 : $hsd04</td><td>$hsd05 : $hsd06</td></tr>" .PHP_EOL;
447 $dep_eb_html .= ($hsd07 || $hsd08) ? "<tr class=$cls><td>&gt;</td><td colspan=3>$hsd07 $hsd08</td></tr>".PHP_EOL : '';
450 continue;
453 if (strncmp('REF'.$de, $seg, 4) === 0) {
454 $sar = explode($de, $seg);
456 $ref01 = (isset($sar[1]) && $sar[1]) ? $cd271->get_271_code('REF', $sar[1]) : ''; // identification qualifier
457 $ref02 = (isset($sar[2]) && $sar[2]) ? $sar[2] : ''; // identification value
458 $ref03 = (isset($sar[3]) && $sar[3]) ? $sar[3] : ''; // description
460 if ($loopid == '2100C') {
461 $sbr_ref_html .= "<tr><td>&gt;</td><td colspan=2>$ref03</td><td>$ref01 $ref02 </td></tr>" .PHP_EOL;
462 } elseif ($loopid == '2100D') {
463 $dep_ref_html .= "<tr><td>&gt;</td><td colspan=2>$ref03</td><td>$ref01 $ref02</td></tr>" .PHP_EOL;
464 } elseif ($loopid == '2110C') {
465 $sbr_eb_html .= "<tr class=$cls><td>&gt;</td><td colspan=2>$ref03</td><td>$ref01 $ref02</td></tr>" .PHP_EOL;
466 } elseif ($loopid == '2110D') {
467 $dep_eb_html .= "<tr class=$cls><td>&gt;</td><td colspan=2>$ref03</td><td>$ref01 $ref02</td></tr>" .PHP_EOL;
470 continue;
473 if (strncmp('MSG'.$de, $seg, 4) === 0) {
474 $sar = explode($de, $seg);
475 $msg01 = (isset($sar[1]) && $sar[1]) ? $sar[1] : '';
476 if ($msg01 && $loopid == '2110C') {
477 $sbr_eb_html .= "<tr class=$cls><td>&gt;</td><td colspan=3>$msg01</td></tr>" .PHP_EOL;
478 } elseif ($msg01 && $loopid == '2110D') {
479 $dep_eb_html .= "<tr class=$cls><td>&gt;</td><td colspan=3>$msg01</td></tr>" .PHP_EOL;
482 continue;
485 if (strncmp('III'.$de, $seg, 4) === 0 && ($loopid == '2110C' || $loopid == '2110D')) {
486 $sar = explode($de, $seg);
487 if (isset($sar[1]) && ($sar[1] == 'GR' || $sar[1] == 'NI')) {
488 $iii02 = (isset($sar[2]) && $sar[2]) ? $cd271->get_271_code('IIIGR', $sar[2]) : '';
489 } else {
490 $iii02 = (isset($sar[2]) && $sar[2]) ? $cd271->get_271_code('POS', $sar[2]) : '';
493 $iii03 = (isset($sar[3]) && $sar[3]) ? $sar[3] : '';
495 if ($loopid == '2110C') {
496 $sbr_eb_html .= "<tr class=$cls><td>&gt;</td><td colspan=3>$iii02</td></tr>" .PHP_EOL;
497 $sbr_eb_html .= ($iii03) ? "<tr class=$cls><td>&gt;</td><td colspan=3>$iii03</td></tr>" .PHP_EOL : '';
498 } elseif ($loopid == '2110D') {
499 $dep_eb_html .= "<tr class=$cls><td>&gt;</td><td colspan=3>$iii02</td></tr>" .PHP_EOL;
500 $dep_eb_html .= ($iii03) ? "<tr class=$cls><td>&gt;</td><td colspan=3>$iii03</td></tr>" .PHP_EOL : '';
503 continue;
507 if (strncmp('LS'.$de, $seg, 3) === 0) {
508 if ($loopid == '2110C') {
509 $loopid = '2120C';
512 if ($loopid == '2110D') {
513 $loopid = '2120D';
516 continue;
519 if (strncmp('LE'.$de, $seg, 3) === 0) {
520 if ($loopid == '2120C') {
521 $loopid = '2100C';
524 if ($loopid == '2120D') {
525 $loopid = '2100D';
528 continue;
535 $str_html .= $hdr_html;
536 $str_html .= ($src_html) ? $src_html : "";
537 $str_html .= ($rcv_html) ? $rcv_html : "";
538 $str_html .= ($sbr_nm1_html) ? $sbr_nm1_html : "";
539 $str_html .= $sbr_ref_html;
540 $str_html .= $sbr_eb_html;
541 $str_html .= ($dep_nm1_html) ? $dep_nm1_html : "";
542 $str_html .= $dep_ref_html;
543 $str_html .= $dep_eb_html;
544 $str_html .= "<tr><td colspan=4>&nbsp;</td></tr>".PHP_EOL;
545 $str_html .= "</tbody>".PHP_EOL."</table>".PHP_EOL;
549 return $str_html;
553 * create a display for an individual claim status response
555 * @uses csv_check_x12_obj()
556 * @uses edih_271_transaction_html()
558 * @param string $filename the filename
559 * @param string $bht03 identifier from 837 CLM or BHT segment
561 * @return string either an error message or an html table
563 function edih_271_html($filename, $bht03 = '')
565 // create a display for an individual 277 response
566 $html_str = '';
568 if ($filename) {
569 $obj271 = csv_check_x12_obj($filename, 'f271');
570 if ('edih_x12_file' == get_class($obj271)) {
571 if ($bht03) {
572 // particular transaction
573 $html_str .= edih_271_transaction_html($obj271, $bht03);
574 } else {
575 // file contents
576 $env_ar = $obj271->edih_envelopes();
577 if (!isset($env_ar['ST'])) {
578 $html_str .= "<p>edih_271_html: file parse error, envelope error</p>".PHP_EOL;
579 $html_str .= $obj271->edih_message();
580 return $html_str;
581 } else {
582 $html_str .= "<div id='accordion'>".PHP_EOL;
585 foreach ($env_ar['ST'] as $st) {
586 foreach ($env_ar['GS'] as $gs) {
587 if ($gs['icn'] != $st['icn']) {
588 continue;
591 if ($gs['gsn'] == $st['gsn']) {
592 $gs_date = edih_format_date($gs['date']);
593 $gs_sender = $gs['sender'];
594 break;
599 // get each transaction
600 foreach ($st['bht03'] as $bht) {
601 $html_str .= "<h3>$bht Benefit Eligibility</h3>".PHP_EOL;
602 $html_str .= "<div id='ac_$bht'>".PHP_EOL;
604 $html_str .= edih_271_transaction_html($obj271, $bht);
606 $html_str .= "</div>".PHP_EOL;
609 $html_str .= "</div>".PHP_EOL;
612 } else {
613 $html_str .= "<p>edih_271_html: file parse error</p>".PHP_EOL;
615 } else {
616 csv_edihist_log("edih_271_html: error in file arguments");
617 $html_str .= "Error: invalid file name<br />".PHP_EOL;
618 return $html_str;
622 return $html_str;