EDI history module, version 2.(take 3)
[openemr.git] / library / edihistory / edih_271_html.php
blob03ba78f0dcce390df59e5b2dcfb197bd60d46765
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) {
44 $trans = $obj271->edih_x12_transaction($bht03);
45 if ( empty($trans) || !count($trans) ) {
46 $str_html = "<p>Did not find transaction $bht03 in ".$obj271->edih_filename()."</p>";
47 return $str_html;
49 $de = $obj271->edih_delimiters()['e'];
50 $ds = $obj271->edih_delimiters()['s'];
51 $dr = $obj271->edih_delimiters()['r'];
52 $fn = $obj271->edih_filename();
54 $cd271 = new edih_271_codes($ds, $dr);
56 $str_html = "";
58 $hdr_html = "<table id=$bht03 class='h271' columns=4><caption>Eligibility Benefit Response</caption>".PHP_EOL;
59 $hdr_html .= "<thead>".PHP_EOL;
60 $hdr_html .= "<tr><th>Reference</th><th colspan=2>Information</th><th colspan=2>$fn</th></tr>".PHP_EOL;
61 $hdr_html .= "</thead>".PHP_EOL."<tbody>".PHP_EOL;
62 $src_html = "";
63 $rcv_html = "";
64 $sbr_nm1_html = "";
65 $dep_nm1_html = "";
66 $sbr_ref_html = "";
67 $dep_ref_html = "";
68 $sbr_eb_html = "";
69 $dep_eb_html = "";
71 $ebct = 0;
73 $trns_ct = count($trans);
74 for($i=0; $i<$trns_ct; $i++) {
75 foreach($trans[$i] as $seg) {
77 $idtype = '';
78 $name = '';
79 $var = '';
80 $rej_reason = '';
81 $follow = '';
82 $addr = '';
84 if ( strncmp('BHT'.$de, $seg, 4) === 0 ) {
85 $loopid = 'Heading';
86 $sar = explode($de, $seg);
87 $bht01 = ( isset($sar[1]) && $sar[1] == '022') ? "Src, Rcv, Sbr, Dep" : "Order unspecified";
88 $bht02 = ( isset($sar[2]) && $sar[2] == '11') ? "Response" : "Confirmation";
89 $bht03 = ( isset($sar[3]) && $sar[3]) ? $sar[3] : "";
90 $bht04 = ( isset($sar[4]) && $sar[4]) ? edih_format_date($sar[4]) : "";
92 $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;
93 continue;
96 if ( strncmp('HL'.$de, $seg, 3) === 0 ) {
97 $sar = explode($de, $seg);
98 if ($sar[3] == '20') { // level code
99 $loopid = '2000A'; // info source (payer)
100 $src_html .= "<tr><td colspan=4><b>Information Source</b></td></tr>".PHP_EOL;
101 } elseif ($sar[3] == '21') {
102 $loopid = '2000B'; // info receiver (clinic)
103 $rcv_html .= "<tr><td colspan=4><b>Information Receiver</b></td></tr>".PHP_EOL;
104 } elseif ($sar[3] == '22') {
105 $loopid = '2000C'; // subscriber
106 $has_eb = false;
107 $sbr_nm1_html .= "<tr><td colspan=4><b>Subscriber</b></td></tr>".PHP_EOL;
108 } elseif ($sar[3] == '23') {
109 $loopid = '2000D'; // dependent
110 $has_eb = false;
111 $dep_nm1_html .= "<tr><td colspan=4><b>Dependent</b></td></tr>".PHP_EOL;
114 $ebct = 0;
115 continue;
118 if ( strncmp('AAA'.$de, $seg, 4) === 0 ) {
119 // rejection
120 $sar = explode($de, $seg);
121 $rej_reason = $cd271->get_271_code('AAA03', $sar[3]);
122 $follow = $cd271->get_271_code('AAA04', $sar[4]);
123 if ($loopid == '2000A') {
124 $src_html .= "<tr><td><em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL;
125 } elseif ($loopid == '2000B') {
126 $rcv_html .= "<tr><td><em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL;
127 } elseif ($loopid == '2000C') {
128 $sbr_nm1_html .= "<tr><td><em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL;
129 } elseif ($loopid == '2000D') {
130 $dep_nm1_html .= "<tr><td><em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL;
131 } elseif ($loopid == '2110C') {
132 $sbr_eb_html .= "<tr class=$cls><td><em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL;
133 } elseif ($loopid == '2110D') {
134 $dep_eb_html .= "<tr class=$cls><td><em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL;
135 } else {
136 $hdr_html .= "<tr><td>$loopid <em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL;
138 continue;
141 if ( strncmp('NM1'.$de, $seg, 4) === 0 ) {
142 $sar = explode($de, $seg);
144 $descr = (isset($sar[1]) && $sar[1] ) ? $cd271->get_271_code('NM101', $sar[1]) : "";
146 $name = (isset($sar[3]) && $sar[3] ) ? $sar[3] : "";
147 $name .= (isset($sar[7]) && $sar[7]) ? " {$sar[7]}" : "";
148 $name .= (isset($sar[4]) && $sar[4]) ? ", {$sar[4]}" : "";
149 $name .= (isset($sar[5]) && $sar[5]) ? " {$sar[5]}" : "";
150 $name .= (isset($sar[7]) && $sar[7]) ? " {$sar[7]}" : "";
152 $idtype = (isset($sar[8]) && $sar[8] ) ? $cd271->get_271_code('NM108', $sar[8]) : "";
153 $nm109 = (isset($sar[9]) && $sar[9]) ? $sar[9] : "";
155 if ($loopid == '2000A') {
156 $src_html .= "<tr><td title='$idtype'>$nm109</td><td colspan=3 title='$descr'>$name</td></tr>" .PHP_EOL;
157 $loopid = '2100A';
158 } elseif ($loopid == '2000B') {
159 $rcv_html .= "<tr><td title='$idtype'>$nm109</td><td colspan=3 title='$descr'>$name</td></tr>" .PHP_EOL;
160 $loopid = '2100B';
161 } elseif ($loopid == '2000C') {
162 $sbr_nm1_html .= "<tr><td title='$idtype'>$nm109</td><td colspan=3 title='$descr'>$name</td></tr>" .PHP_EOL;
163 $loopid = '2100C';
164 } elseif ($loopid == '2000D') {
165 $dep_nm1_html .= "<tr><td title='$idtype'>$nm109</td><td colspan=3 title='$descr'>$name</td></tr>" .PHP_EOL;
166 $loopid = '2100D';
167 } elseif ($loopid == '2120C') {
168 $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;
169 } elseif ($loopid == '2120D') {
170 $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;
173 continue;
176 if ( strncmp('PER'.$de, $seg, 4) === 0 ) {
177 $sar = explode($de, $seg);
178 $per02 = (isset($sar[2]) && $sar[2]) ? $sar[2] : '';
179 $idtype = (isset($sar[3]) && $sar[3]) ? $cd271->get_271_code('PER03', $sar[3]) : "";
180 $per04 = (isset($sar[4]) && $sar[2]) ? $sar[4] : '';
181 if ($loopid == '2100A') {
182 $src_html .= "<tr><td colspan=3>$per02</td><td title='$idtype'>$per04</td></tr>" .PHP_EOL;
183 } elseif ($loopid == '2120C') {
184 $sbr_eb_html .= "<tr class=$cls><td>&gt;</td><td title='$idtype'>$per04</td><td colspan=2>$per02</td></tr>" .PHP_EOL;
185 } elseif ($loopid == '2120D') {
186 $dep_eb_html .= "<tr class=$cls><td>&gt;</td><td title='$idtype'>$per04</td><td colspan=2>$per02</td></tr>" .PHP_EOL;
189 continue;
192 if ( strncmp('N3'.$de, $seg, 3) === 0 ) {
193 $sar = explode($de, $seg);
194 $addr = (isset($sar[1])) ? $sar[1] : "";
195 $addr .= (isset($sar[2])) ? " {$sar[2]}" : "";
196 if ($loopid == '2100C') {
197 $sbr_nm1_html .= "<tr><td>&gt;</td><td colspan=3>$addr</td></tr>" .PHP_EOL;
198 } elseif ($loopid == '2100D') {
199 $dep_nm1_html .= "<tr><td>&gt;</td><td colspan=3>$addr</td></tr>" .PHP_EOL;
200 } elseif ($loopid == '2120C') {
201 $sbr_eb_html .= "<tr class=$cls><td>&gt;</td><td colspan=3>$addr</td></tr>" .PHP_EOL;
202 } elseif ($loopid == '2120D') {
203 $dep_eb_html .= "<tr class=$cls><td>&gt;</td><td colspan=3>$addr</td></tr>" .PHP_EOL;
205 continue;
208 if ( strncmp('N4'.$de, $seg, 3) === 0 ) {
209 $sar = explode($de, $seg);
210 if ($loopid == '2100C') {
211 $sbr_nm1_html .= "<tr><td>&gt;</td><td colspan=3>{$sar[1]} {$sar[2]} {$sar[3]}</td></tr>" .PHP_EOL;
212 } elseif ($loopid == '2100D') {
213 $dep_nm1_html .= "<tr><td>&gt;</td><td colspan=3>{$sar[1]} {$sar[2]} {$sar[3]}</td></tr>" .PHP_EOL;
214 } elseif ($loopid == '2120C') {
215 $sbr_eb_html .= "<tr class=$cls><td>&gt;</td><td colspan=3>{$sar[1]} {$sar[2]} {$sar[3]}</td></tr>" .PHP_EOL;
216 } elseif ($loopid == '2120D') {
217 $dep_eb_html .= "<tr class=$cls><td>&gt;</td><td colspan=3>{$sar[1]} {$sar[2]} {$sar[3]}</td></tr>" .PHP_EOL;
219 continue;
222 if ( strncmp('PRV'.$de, $seg, 4) === 0 ) {
223 $sar = explode($de, $seg);
224 $idtype = ($sar[1]) ? $cd271->get_271_code('PRV', $sar[1]) : "";
225 if ($loopid == '2100B') {
226 $src_html .= "<tr><td colspan=3>{$sar[2]}</td><td title='$idtype'>{$sar[3]}</td></tr>" .PHP_EOL;
227 } elseif ($loopid == '2100C') {
228 $sbr_nm1_html .= "<tr><td title='$idtype'>{$sar[3]}</td><td colspan=3>{$sar[2]}</td></tr>" .PHP_EOL;
229 } elseif ($loopid == '2100D') {
230 $dep_nm1_html .= "<tr><td title='$idtype'>{$sar[3]}</td><td colspan=3>{$sar[2]}</td></tr>" .PHP_EOL;
231 } elseif ($loopid == '2120C') {
232 $sbr_eb_html .= "<tr class=$cls><td>&gt;</td><td title='$idtype'>{$sar[3]}</td><td colspan=2>{$sar[2]}</td></tr>" .PHP_EOL;
233 } elseif ($loopid == '2120D') {
234 $dep_eb_html .= "<tr class=$cls><td>&gt;</td><td title='$idtype'>{$sar[3]}</td><td colspan=2>{$sar[2]}</td></tr>" .PHP_EOL;
237 continue;
240 if ( strncmp('DMG'.$de, $seg, 4) === 0 ) {
241 $sar = explode($de, $seg);
242 $dmg02 = (isset($sar[2]) && $sar[2]) ? edih_format_date($sar[2]) : "";
243 if (isset($sar[3]) && $sar[3]) {
244 if ($sar[3] == 'M') {
245 $dmg03 = "Male";
246 } elseif ($sar[3] == 'F') {
247 $dmg03 = "Female";
248 } else {
249 $dmg03 = "Unknown";
252 if ($loopid == '2100C') {
253 $sbr_nm1_html .= "<tr><td>&gt;</td><td>$dmg03</td><td colspan=2><em>Date of Birth</em> $dmg02</td></tr>" .PHP_EOL;
254 } elseif ($loopid == '2100D') {
255 $dep_nm1_html .= "<tr><td>&gt;</td><td>$dmg03</td><td colspan=2><em>Date of Birth</em> $dmg02</td></tr>" .PHP_EOL;
257 continue;
259 if ( strncmp('INS'.$de, $seg, 4) === 0 ) {
260 $sar = explode($de, $seg);
261 $ins01 = (isset($sar[1]) && $sar[1] == 'Y') ? "Subscriber" : "Dependent";
262 $ins02 = (isset($sar[2]) && $sar[2]) ? $cd271->get_271_code('INS02', $sar[2]) : "";
263 $ins03 = (isset($sar[3]) && $sar[3]) ? $sar[3] : "";
264 $ins04 = (isset($sar[4]) && $sar[4] == '25') ? "<b>Information changed</b>" : "";
265 $ins17 = (isset($sar[17]) && $sar[17]) ? $sar[17] : "";
267 if ($loopid == '2100C') {
268 $sbr_nm1_html .= "<tr><td>&gt;</td><td>$ins01 $ins17</td><td>$ins02</td><td>$ins03 $ins04</td></tr>" .PHP_EOL;
269 } elseif ($loopid == '2100D') {
270 $dep_nm1_html .= "<tr><td>&gt;</td><td>$ins01 $ins17</td><td>$ins02</td><td>$ins03 $ins04</td></tr>" .PHP_EOL;
272 continue;
274 if ( strncmp('DTP'.$de, $seg, 4) === 0 ) {
276 $sar = explode($de, $seg);
277 $var = '';
278 $dtp01 = (isset($sar[1])) ? $sar[1] : '';
279 $dtp02 = (isset($sar[2])) ? $sar[2] : '';
280 $dtp03 = (isset($sar[3])) ? $sar[3] : '';
282 $idtype = ($dtp01) ? $cd271->get_271_code('DTP', $dtp01) : "";
283 if ( $dtp02 == 'D8' && $dtp03) {
284 $var = edih_format_date($dtp03);
285 } elseif ( $dtp02 == 'RD8' && $dtp03) {
286 $var = edih_format_date( substr($dtp03, 0, 8) );
287 $var .= ' - '.edih_format_date( substr($dtp03, -8) );
289 if ($loopid == '2100C') {
290 $sbr_nm1_html .= "<tr><td>&gt;</td><td>$idtype</td><td colspan=2>$var</td></tr>" .PHP_EOL;
291 } elseif ($loopid == '2100D') {
292 $dep_nm1_html .= "<tr><td>&gt;</td><td>$idtype</td><td colspan=2>$var</td></tr>" .PHP_EOL;
293 } elseif ($loopid == '2110C') {
294 $sbr_eb_html .= "<tr class=$cls><td>&gt;</td><td>$idtype</td><td colspan=2>$var</td></tr>" .PHP_EOL;
295 } elseif ($loopid == '2110D') {
296 $dep_eb_html .= "<tr class=$cls><td>&gt;</td><td>$idtype</td><td colspan=2>$var</td></tr>" .PHP_EOL;
298 continue;
301 if ( strncmp('MPI'.$de, $seg, 4) === 0 ) {
302 $sar = explode($de, $seg);
303 $idtype = (isset($sar[1]) && $sar[1]) ? $cd271->get_271_code('MPI', $sar[1]) : "";
304 $idtype .= (isset($sar[2]) && $sar[2]) ? $cd271->get_271_code('MPI', $sar[2]) : "";
305 $idtype .= (isset($sar[3]) && $sar[3]) ? $cd271->get_271_code('MPI', 'SB'.$sar[3]) : "";
306 if ( isset($sar[7]) && isset($sar[8]) ) {
307 if ($sar[7] == 'D8') {
308 $var = edih_format_date($sar[8]);
309 } elseif ($sar[7] == 'RD8') {
310 $var = edih_format_date( substr($sar[8], 0, 8) );
311 $var .= ' - '.edih_format_date( substr($sar[8], -8) );
314 if ($loopid == '2100C') {
315 $sbr_nm1_html .= "<tr><td colspan=3>$idtype</td><td>$var</td></tr>" .PHP_EOL;
316 } elseif ($loopid == '2100D') {
317 $dep_nm1_html .= "<tr><td colspan=3>$idtype</td><td>$var</td></tr>" .PHP_EOL;
319 continue;
322 if ( strncmp('EB'.$de, $seg, 3) === 0 ) {
324 $ebct++;
325 $cls = ($ebct % 2) ? 'ebe' : 'ebo';
326 $sar = explode($de, $seg);
328 $eb01 = $cd271->get_271_code('EB01', $sar[1]); // eligibility or benefit
329 $eb02 = (isset($sar[2]) && $sar[2]) ? $cd271->get_271_code('EB02', $sar[2]) : ''; // coverage level
330 $eb03 = (isset($sar[3]) && $sar[3]) ? $cd271->get_271_code('EB03', $sar[3]) : ''; // service type
331 $eb04 = (isset($sar[4]) && $sar[4]) ? $cd271->get_271_code('EB04', $sar[4]) : ''; // insurance type
332 $eb05 = (isset($sar[5]) && $sar[5]) ? $sar[5] : ''; // descriptive (plan name)
333 $eb06 = (isset($sar[6]) && $sar[6]) ? $cd271->get_271_code('EB06', $sar[6]) : ''; // time qualifier
334 $eb07 = (isset($sar[7]) && strlen($sar[7])) ? edih_format_money($sar[7]) : ''; // monetary amount
335 $eb08 = (isset($sar[8]) && $sar[8]) ? edih_format_percent($sar[8]) : ''; // percentage amount
336 $eb09 = (isset($sar[9]) && $sar[9]) ? $cd271->get_271_code('EB09', $sar[9]) : ''; // Quantity qualifier
337 $eb10 = (isset($sar[10]) && $sar[10]) ? $sar[10] : ''; // quantity
338 $eb11 = (isset($sar[11]) && $sar[11]) ? $cd271->get_271_code('EB11', $sar[11]) : ''; // authorization required?
339 $eb12 = (isset($sar[12]) && $sar[12]) ? $cd271->get_271_code('EB12', $sar[12]) : ''; // in network?
340 $eb13 = "";
341 if (isset($sar[13]) && strpos($sar[13], $ds)) { // composite procedure ID
342 $eb13ar = explode($ds, $sar[13]);
343 reset($eb13ar);
344 while( list($k, $v) = each($eb13ar) ) {
345 if ($k == 0) {
346 $eb13 = $cd271->get_271_code('EB13', $v);
347 } else {
348 $eb13 .= " ".$v;
351 } else {
352 $eb13 = ($sar[13]) ? "<em>Procedure</em> $eb13" : "";
354 $eb14 = "";
355 if (isset($sar[14])) {
356 if (strpos($sar[14], $ds)) { // composite diagnosis pointer
357 $eb14 = str_replace($ds, " | ",$sar[14]) ;
358 } else {
359 $eb14 = $sar[14];
361 $eb14 = ($eb14) ? "<em>Pointers</em> $eb14" : "";
363 // if LS - LE segments loop should be 2110C or 2110D
364 if ($loopid == '2100C' || $loopid == '2110C') {
365 $loopid = '2110C';
366 if ( strpos('|A|B', $sar[1]) !== false ) {
367 $sbr_eb_html .= "<tr class=$cls><td>$eb01</td><td>$eb07 $eb08</td><td colspan=2>$eb02 $eb03 $eb04 $eb06</td></tr>" .PHP_EOL;
368 } elseif ( strpos('|C|G|J|Y', $sar[1]) !== false ) {
369 $sbr_eb_html .= "<tr class=$cls><td>$eb01</td><td>$eb02</td><td>$eb06 $eb07</td><td>$eb03 $eb04</td></tr>" .PHP_EOL;
370 } elseif ( strpos('|E|F|', $sar[1]) !== false ) {
371 $sbr_eb_html .= "<tr class=$cls><td>$eb01</td><td>$eb02</td><td colspan=2>$eb03 $eb04 $eb06</td></tr>" .PHP_EOL;
372 } else {
373 $sbr_eb_html .= "<tr class=$cls><td>$eb01</td><td>$eb02</td><td colspan=3>$eb07 $eb08 $eb03 $eb04 $eb06</td></tr>" .PHP_EOL;
375 $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 : "";
376 $sbr_eb_html .= ($eb13 || $eb14) ? "<tr class=$cls><td>&gt;</td><td colspan=3>$eb13 $eb14 </td></tr>".PHP_EOL : "";
377 $sbr_eb_html .= ($eb05) ? "<tr class=$cls><td>&gt;</td><td colspan=3>$eb05</td></tr>".PHP_EOL : "";
378 } elseif ($loopid == '2100D' || $loopid == '2110D') {
379 $loopid = '2110D';
380 if (strpos('|A|B', $eb01) && !$eb02) {
381 $dep_eb_html .= "<tr class=$cls><td>$eb01</td><td>$ebo7 $eb08</td><td colspan=2>$eb03 $eb04 $eb06</td></tr>" .PHP_EOL;
382 } elseif (strpos('|C|G|J|Y', $eb01) ) {
383 $dep_eb_html .= "<tr class=$cls><td>$eb01</td><td>$eb02</td><td>$eb07 $eb08</td><td>$eb11 $eb12</td></tr>" .PHP_EOL;
384 } elseif (strpos('|E|F|', $eb01) ) {
385 $dep_eb_html .= "<tr class=$cls><td>$eb01</td><td>$eb02</td><td colspan=2>$eb03 $eb04 $eb06 </td></tr>" .PHP_EOL;
386 } else {
387 $dep_eb_html .= "<tr class=$cls><td>$eb01</td><td>$eb02</td><td colspan=3>$eb07 $eb08 $eb03 $eb04 $eb06 </td></tr>" .PHP_EOL;
389 $dep_eb_html .= ($eb09 || $eb10 || $eb11 || $eb12) ? "<tr class=$cls><td>&gt;</td><td colspan=3>$eb09 $eb10 $eb11 $eb12</td></tr>".PHP_EOL : "";
390 $dep_eb_html .= ($eb13 || $eb14) ? "<tr class=$cls><td>&gt;</td><td colspan=3>$eb13 $eb14 </td></tr>".PHP_EOL : "";
391 $dep_eb_html .= ($eb05) ? "<tr class=$cls><td>&gt;</td><td colspan=3>$eb05</td></tr>".PHP_EOL : "";
393 continue;
396 if ( strncmp('HSD'.$de, $seg, 4) === 0 ) {
397 $sar = explode($de, $seg);
399 $hsd01 = (isset($sar[1]) && $sar[1]) ? $cd271->get_271_code('HSD01', $sar[1]) : ''; // quantity qualifier
400 $hsd02 = (isset($sar[2]) && $sar[2]) ? $sar[2] : ''; // numeric quantity
401 $hsd03 = (isset($sar[3]) && $sar[3]) ? $cd271->get_271_code('HSD01', $sar[3]) : ''; // measurement unit
402 $hsd04 = (isset($sar[4]) && $sar[4]) ? $sar[4] : ''; // sample selection modulus
403 $hsd05 = (isset($sar[5]) && $sar[5]) ? $cd271->get_271_code('EB06', $sar[5]) : ''; // time period qualifier
404 $hsd06 = (isset($sar[6]) && $sar[6]) ? $sar[6] : ''; // number of periods
405 $hsd07 = (isset($sar[7]) && $sar[7]) ? $cd271->get_271_code('HSD07', $sar[7]) : ''; // delivery
406 $hsd08 = (isset($sar[8]) && $sar[8]) ? $cd271->get_271_code('HSD08', $sar[8]) : ''; // delivery
408 if ($loopid == '2110C') {
409 $sbr_eb_html .= "<tr class=$cls><td>&gt;</td><td>$hsd01 : $hsd02</td><td>$hsd03 : $hsd04</td><td>$hsd05 : $hsd06</td></tr>" .PHP_EOL;
410 $sbr_eb_html .= ($hsd07 || $hsd08) ? "<tr class=$cls><td>&gt;</td><td colspan=3>$hsd07 $hsd08</td></tr>".PHP_EOL : '';
411 } elseif ($loopid == '2110D') {
412 $dep_eb_html .= "<tr class=$cls><td>&gt;</td><td>$hsd01 : $hsd02</td><td>$hsd03 : $hsd04</td><td>$hsd05 : $hsd06</td></tr>" .PHP_EOL;
413 $dep_eb_html .= ($hsd07 || $hsd08) ? "<tr class=$cls><td>&gt;</td><td colspan=3>$hsd07 $hsd08</td></tr>".PHP_EOL : '';
415 continue;
417 if ( strncmp('REF'.$de, $seg, 4) === 0 ) {
418 $sar = explode($de, $seg);
420 $ref01 = (isset($sar[1]) && $sar[1]) ? $cd271->get_271_code('REF', $sar[1]) : ''; // identification qualifier
421 $ref02 = (isset($sar[2]) && $sar[2]) ? $sar[2] : ''; // identification value
422 $ref03 = (isset($sar[3]) && $sar[3]) ? $sar[3] : ''; // description
424 if ($loopid == '2100C') {
425 $sbr_ref_html .= "<tr><td>&gt;</td><td colspan=2>$ref03</td><td>$ref01 $ref02 </td></tr>" .PHP_EOL;
426 } elseif ($loopid == '2100D') {
427 $dep_ref_html .= "<tr><td>&gt;</td><td colspan=2>$ref03</td><td>$ref01 $ref02</td></tr>" .PHP_EOL;
428 } elseif ($loopid == '2110C') {
429 $sbr_eb_html .= "<tr class=$cls><td>&gt;</td><td colspan=2>$ref03</td><td>$ref01 $ref02</td></tr>" .PHP_EOL;
430 } elseif ($loopid == '2110D') {
431 $dep_eb_html .= "<tr class=$cls><td>&gt;</td><td colspan=2>$ref03</td><td>$ref01 $ref02</td></tr>" .PHP_EOL;
433 continue;
435 if ( strncmp('MSG'.$de, $seg, 4) === 0 ) {
436 $sar = explode($de, $seg);
437 $msg01 = (isset($sar[1]) && $sar[1]) ? $sar[1] : '';
438 if ($msg01 && $loopid == '2110C') {
439 $sbr_eb_html .= "<tr class=$cls><td>&gt;</td><td colspan=3>$msg01</td></tr>" .PHP_EOL;
440 } elseif ($msg01 && $loopid == '2110D') {
441 $dep_eb_html .= "<tr class=$cls><td>&gt;</td><td colspan=3>$msg01</td></tr>" .PHP_EOL;
443 continue;
445 if ( strncmp('III'.$de, $seg, 4) === 0 && ($loopid == '2110C' || $loopid == '2110D') ) {
446 $sar = explode($de, $seg);
447 if (isset($sar[1]) && ($sar[1] == 'GR' || $sar[1] == 'NI') ) {
448 $iii02 = (isset($sar[2]) && $sar[2]) ? $cd271->get_271_code('IIIGR', $sar[2]) : '';
449 } else {
450 $iii02 = (isset($sar[2]) && $sar[2]) ? $cd271->get_271_code('POS', $sar[2]) : '';
452 $iii03 = (isset($sar[3]) && $sar[3]) ? $sar[3] : '';
454 if ($loopid == '2110C') {
455 $sbr_eb_html .= "<tr class=$cls><td>&gt;</td><td colspan=3>$iii02</td></tr>" .PHP_EOL;
456 $sbr_eb_html .= ($iii03) ? "<tr class=$cls><td>&gt;</td><td colspan=3>$iii03</td></tr>" .PHP_EOL : '';
457 } elseif ($loopid == '2110D') {
458 $dep_eb_html .= "<tr class=$cls><td>&gt;</td><td colspan=3>$iii02</td></tr>" .PHP_EOL;
459 $dep_eb_html .= ($iii03) ? "<tr class=$cls><td>&gt;</td><td colspan=3>$iii03</td></tr>" .PHP_EOL : '';
461 continue;
464 if ( strncmp('LS'.$de, $seg, 3) === 0 ) {
465 if ($loopid == '2110C' ) { $loopid = '2120C'; }
466 if ($loopid == '2110D') { $loopid = '2120D'; }
467 continue;
469 if ( strncmp('LE'.$de, $seg, 3) === 0 ) {
470 if ($loopid == '2120C' ) { $loopid = '2100C'; }
471 if ($loopid == '2120D') { $loopid = '2100D'; }
472 continue;
477 $str_html .= $hdr_html;
478 $str_html .= ($src_html) ? $src_html : "";
479 $str_html .= ($rcv_html) ? $rcv_html : "";
480 $str_html .= ($sbr_nm1_html) ? $sbr_nm1_html : "";
481 $str_html .= $sbr_ref_html;
482 $str_html .= $sbr_eb_html;
483 $str_html .= ($dep_nm1_html) ? $dep_nm1_html : "";
484 $str_html .= $dep_ref_html;
485 $str_html .= $dep_eb_html;
486 $str_html .= "<tr><td colspan=4>&nbsp;</td></tr>".PHP_EOL;
487 $str_html .= "</tbody>".PHP_EOL."</table>".PHP_EOL;
490 return $str_html;
494 * create a display for an individual claim status response
496 * @uses csv_check_x12_obj()
497 * @uses edih_271_transaction_html()
499 * @param string $filename the filename
500 * @param string $bht03 identifier from 837 CLM or BHT segment
502 * @return string either an error message or an html table
504 function edih_271_html($filename, $bht03='' ) {
505 // create a display for an individual 277 response
506 $html_str = '';
508 if ( $filename ) {
509 $obj271 = csv_check_x12_obj($filename, 'f271');
510 if ( 'edih_x12_file' == get_class($obj271) ) {
511 if ($bht03) {
512 // particular transaction
513 $html_str .= edih_271_transaction_html($obj271, $bht03);
514 } else {
515 // file contents
516 $env_ar = $obj271->edih_envelopes();
517 if (!isset($env_ar['ST'])) {
518 $html_str .= "<p>edih_271_html: file parse error, envelope error</p>".PHP_EOL;
519 $html_str .= $obj271->edih_message();
520 return $html_str;
521 } else {
522 $html_str .= "<div id='accordion'>".PHP_EOL;
525 foreach($env_ar['ST'] as $st) {
526 foreach($env_ar['GS'] as $gs){
527 if ($gs['icn'] != $st['icn']) { continue; }
528 if ($gs['gsn'] == $st['gsn']) {
529 $gs_date = edih_format_date($gs['date']);
530 $gs_sender = $gs['sender'];
531 break;
535 // get each transaction
536 foreach($st['bht03'] as $bht) {
537 $html_str .= "<h3>$bht Benefit Eligibility</h3>".PHP_EOL;
538 $html_str .= "<div id='ac_$bht'>".PHP_EOL;
540 $html_str .= edih_271_transaction_html($obj271, $bht);
542 $html_str .= "</div>".PHP_EOL;
544 $html_str .= "</div>".PHP_EOL;
548 } else {
549 $html_str .= "<p>edih_271_html: file parse error</p>".PHP_EOL;
551 } else {
552 csv_edihist_log ("edih_271_html: error in file arguments");
553 $html_str .= "Error: invalid file name<br />".PHP_EOL;
554 return $html_str;
557 return $html_str;