Highway to PSR2
[openemr.git] / library / edihistory / edih_278_html.php
blob8e8f257adbba09e4d657b388795582a6ffdcda44
1 <?php
2 /*
3 * test_278_parse.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 * HTML display of x12 278 file
30 * SV3 and TOO segments (Dental) are ignored
32 * @uses edih_271_codes()
34 * @param object edih_x12_file
35 * $param string BHT03 value to identify transaction
36 * @return string
38 function edih_278_transaction_html($obj278, $bht03)
41 $trans = $obj278->edih_x12_transaction($bht03);
42 if (empty($trans)) {
43 $str_html = $obj278->edih_message();
44 return $str_html;
47 $de = $obj278->edih_delimiters()['e'];
48 $ds = $obj278->edih_delimiters()['s'];
49 $dr = $obj278->edih_delimiters()['r'];
50 $fn = $obj278->edih_filename();
52 $cd27x = new edih_271_codes($ds, $dr);
54 $cls ='';
55 $capstr = 'Services Review (Cert/Auth)';
57 $hdr_html = "<table class='h278' columns=4><caption>$capstr</caption>";
58 $hdr_html .= "<thead><tr><th>Reference</th><th>Information</th><th colspan=2>$fn</th></tr></thead>".PHP_EOL;
59 $hdr_html .= "<tbody>".PHP_EOL;
60 $str_html = "";
61 $src_html = "";
62 $rcv_html = "";
63 $sbr_nm1_html = "";
64 $dep_nm1_html = "";
65 $evt_html = "";
66 $svc_html = "";
68 $trns_ct = count($trans);
69 for ($i=0; $i<$trns_ct; $i++) {
70 foreach ($trans[$i] as $seg) {
72 $idtype = '';
73 $name = '';
74 $var = '';
75 $rej_reason = '';
76 $follow = '';
77 $addr = '';
78 // debug
80 if (strncmp('BHT'.$de, $seg, 4) === 0) {
81 $loopid = 'Heading';
82 $sar = explode($de, $seg);
83 $elem01 = ($sar[1] == '0007') ? "Src, Rcvr, Sbr, Dep, Evt, Svc" : "Not determined";
85 $elem02 = ( isset($sar[2]) && $sar[2] !== false) ? $cd27x->get_271_code('BHT02', $sar[2]) : "";
87 $elem03 = (isset($sar[3]) ) ? $sar[3] : '';
88 $elem04 = (isset($sar[4]) ) ? edih_format_date($sar[4]) : '';
90 $elem06 = (isset($sar[6]) && $sar[6]) ? $cd27x->get_271_code('BHT06', $sar[6]) : "";
92 $hdr_html .= "<tr><td colspan=2><em>Transaction ID:</em> $elem03 </td><td colspan=2><em>Sequence:</em> $elem01</td></tr>".PHP_EOL;
93 if ($elem06) {
94 $hdr_html .= "<tr><td colspan=2><em>Transaction Date:</em> $elem04 </td><td colspan=2>$elem02 <em>Type:</em> $elem06</td></tr>".PHP_EOL;
95 } else {
96 $hdr_html .= "<tr><td colspan=2><em>Transaction Date:</em> $elem04 </td><td colspan=2><em>Type:</em> $elem02</td></tr>".PHP_EOL;
100 continue;
103 //'src''rcv'sbr''dep''evt''svc''
104 if (strncmp($seg, 'HL'.$de, 3) === 0) {
105 $sar = explode($de, $seg);
106 $hl = $sar[1];
107 $hlpc = $sar[2]; // parent code
108 $hllc = $sar[3];
109 $hlcc = (isset($sar[4])) ? $sar[4] : ''; // child code
110 if ($sar[3] == '20') { // level code
111 $loopid = '2000A';
112 $cls = 'src'; // info source (payer)
113 $src_html .= "<tr class='$cls'><td colspan=4><b>Information Source</b></td></tr>".PHP_EOL;
114 } elseif ($sar[3] == '21') {
115 $loopid = '2000B';
116 $cls = 'rcv'; // info receiver (clinic)
117 $rcv_html .= "<tr class='$cls'><td colspan=4><b>Information Receiver</b></td></tr>".PHP_EOL;
118 } elseif ($sar[3] == '22') {
119 $loopid = '2000C'; // subscriber
120 $cls = 'sbr';
121 $sbr_nm1_html .= "<tr class='$cls'><td colspan=4><b>Subscriber</b></td></tr>".PHP_EOL;
122 } elseif ($sar[3] == '23') {
123 $loopid = '2000D'; // dependent
124 $cls = 'dep';
125 $dep_nm1_html .= "<tr class='$cls'><td colspan=4><b>Dependent</b></td></tr>".PHP_EOL;
126 } elseif ($sar[3] == 'EV') {
127 $loopid = '2000E'; // patient event
128 $cls = 'evt';
129 $evt_html .= "<tr class='$cls'><td colspan=4><b>Patient Event</b></td></tr>".PHP_EOL;
130 } elseif ($sar[3] == 'SS') {
131 $loopid = '2000F'; // service
132 $cls = 'svc';
133 $svc_html .= "<tr class='$cls'><td colspan=4><b>Service</b></td></tr>".PHP_EOL;
137 continue;
140 if (strncmp('NM1'.$de, $seg, 4) === 0) {
141 $sar = explode($de, $seg);
143 $nm101 = ( isset($sar[1]) ) ? $sar[1] : '';
144 $descr = ($nm101) ? $cd27x->get_271_code('NM101', $nm101) : "";
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 $nm109 = (isset($sar[9]) && $sar[9]) ? $sar[9] : "";
152 $idtype = (isset($sar[8]) && $sar[8] ) ? $cd27x->get_271_code('NM108', $sar[8]) : "";
154 if ($loopid == '2000A') {
155 $src_html .= "<tr class='$cls'><td title='$idtype'>$nm109</td><td colspan=3 title='$descr'>$name</td></tr>" .PHP_EOL;
156 $loopid = '2010A';
157 } elseif ($loopid == '2000B') {
158 $rcv_html .= "<tr class='$cls'><td title='$idtype'>$nm109</td><td colspan=3 title='$descr'>$name</td></tr>" .PHP_EOL;
159 $loopid = '2010B';
160 } elseif ($loopid == '2000C') {
161 $sbr_nm1_html .= "<tr class='$cls'><td title='$idtype'>$nm109</td><td colspan=3 title='$descr'>$name</td></tr>" .PHP_EOL;
162 $loopid = '2010C';
163 } elseif ($loopid == '2000D') {
164 $dep_nm1_html .= "<tr class='$cls'><td title='$idtype'>$nm109</td><td colspan=3 title='$descr'>$name</td></tr>" .PHP_EOL;
165 $loopid = '2010D';
166 } elseif ($loopid == '2000E' || strpos($loopid, '010E')) {
167 $loopid = (strpos('|71|72|73|77|AAJ|DD|DK|DN|FA|G3|P3|QB|QV|SJ', $nm101) ) ? '2010EA' : $loopid;
168 $loopid = (strpos('|45|FS|ND|PW|R3', $nm101) ) ? '2010EB' : $loopid;
169 $loopid = ($nm101 == 'L5') ? '2010EC' : $loopid;
170 $evt_html .= "<tr class='$cls'><td title='$idtype'>$nm109</td><td colspan=3 title='$descr'>$descr $name</td></tr>" .PHP_EOL;
171 } elseif ($loopid == '2000F' || strpos($loopid, '010F')) {
172 $loopid = (strpos('|71|72|73|77|AAJ|DD|DK|DN|FA|G3|P3|QB|QV|SJ', $nm101) ) ? '2010FA' : $loopid;
173 $loopid = ($nm101 == 'L5') ? '2010FB' : $loopid;
174 $svc_html .= "<tr class='$cls'><td title='$idtype'>$nm109</td><td colspan=3 title='$descr'>$descr $name</td></tr>" .PHP_EOL;
178 continue;
182 if (strncmp('N3'.$de, $seg, 3) === 0) {
183 $sar = explode($de, $seg);
184 $addr = (isset($sar[1])) ? $sar[1] : "";
185 $addr .= (isset($sar[2])) ? " {$sar[2]}" : "";
187 if ($loopid == '2010B') {
188 $rcv_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3>$addr</td></tr>" .PHP_EOL;
189 } elseif ($loopid == '2010C') {
190 $sbr_nm1_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3>$addr</td></tr>" .PHP_EOL;
191 } elseif ($loopid == '2010D') {
192 $dep_nm1_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3>$addr</td></tr>" .PHP_EOL;
193 } elseif ($loopid == '2010EA' || $loopid == '2010EC') {
194 $evt_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3>$addr</td></tr>" .PHP_EOL;
195 } elseif ($loopid == '2010FA') {
196 $svc_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3>$addr</td></tr>" .PHP_EOL;
199 continue;
203 if (strncmp('N4'.$de, $seg, 3) === 0) {
204 $sar = explode($de, $seg);
205 if ($loopid == '2010B') {
206 $rcv_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3>{$sar[1]} {$sar[2]} {$sar[3]}</td></tr>" .PHP_EOL;
207 } elseif ($loopid == '2010C') {
208 $sbr_nm1_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3>{$sar[1]} {$sar[2]} {$sar[3]}</td></tr>" .PHP_EOL;
209 } elseif ($loopid == '2010D') {
210 $dep_nm1_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3>{$sar[1]} {$sar[2]} {$sar[3]}</td></tr>" .PHP_EOL;
211 } elseif ($loopid == '2010EA' || $loopid == '2010EC') {
212 $evt_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3>{$sar[1]} {$sar[2]} {$sar[3]}</td></tr>" .PHP_EOL;
213 } elseif ($loopid == '2010FA' || $loopid == '2010FB') {
214 $svc_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3>{$sar[1]} {$sar[2]} {$sar[3]}</td></tr>" .PHP_EOL;
217 continue;
220 // //
221 if (strncmp('PER'.$de, $seg, 4) === 0) {
222 $sar = explode($de, $seg);
223 $elem01 = (isset($sar[1])) ? $sar[1] : '';
224 $elem02 = (isset($sar[2])) ? $sar[2] : '';
225 $elem03 = (isset($sar[3])) ? $cd27x->get_271_code('PER03', $sar[3]) : "";
226 $elem04 = (isset($sar[4])) ? $sar[4] : '';
227 $elem05 = (isset($sar[5])) ? $cd27x->get_271_code('PER03', $sar[5]) : "";
228 $elem06 = (isset($sar[6])) ? $sar[6] : '';
229 $elem07 = (isset($sar[7])) ? $cd27x->get_271_code('PER03', $sar[7]) : "";
230 $elem08 = (isset($sar[8])) ? $sar[8] : '';
231 $elem09 = (isset($sar[9])) ? $sar[9] : '';
233 $idtype = ($sar[3]) ? $cd27x->get_271_code('PER03', $sar[3]) : "";
234 if ($loopid == '2010A') {
235 $src_html .= "<tr class='$cls'><td colspan=2>$elem02</td><td colspan=2 title='$elem03 $elem05 $elem07'>$elem04 $elem06 $elem08</td></tr>" .PHP_EOL;
236 } elseif ($loopid == '2010B') {
237 $rcv_html .= "<tr class='$cls'><td colspan=2>$elem02</td><td colspan=2 title='$elem03 $elem05 $elem07'>$elem04 $elem06 $elem08</td></tr>" .PHP_EOL;
238 } elseif ($loopid == '2010EA') {
239 $evt_html .= "<tr class='$cls'><td colspan=2>$elem02</td><td colspan=2 title='$elem03 $elem05 $elem07'>$elem04 $elem06 $elem08</td></tr>" .PHP_EOL;
240 } elseif ($loopid == '2010FA') {
241 $svc_html .="<tr class='$cls'><td colspan=2>$elem02</td><td colspan=2 title='$elem03 $elem05 $elem07'>$elem04 $elem06 $elem08</td></tr>" .PHP_EOL;
245 continue;
249 if (strncmp('AAA'.$de, $seg, 4) === 0) {
250 // rejection
251 $sar = explode($de, $seg);
252 $rej_reason = $cd27x->get_271_code('AAA03', $sar[3]);
253 $follow = $cd27x->get_271_code('AAA04', $sar[4]);
254 if ($loopid == '2000A') {
255 $src_html .= "<tr class='$cls'><td><em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL;
256 } elseif ($loopid == '2010A') {
257 $src_html .= "<tr class='$cls'><td><em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL;
258 } elseif ($loopid == '2000B') {
259 $rcv_html .= "<tr class='$cls'><td><em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL;
260 } elseif ($loopid == '2010B') {
261 $sbr_eb_html .= "<tr class='$cls'><td><em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL;
262 } elseif ($loopid == '2000C') {
263 $sbr_nm1_html .= "<tr class='$cls'><td><em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL;
264 } elseif ($loopid == '2010C') {
265 $sbr_eb_html .= "<tr class='$cls'><td><em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL;
266 } elseif ($loopid == '2000D') {
267 $dep_nm1_html .= "<tr class='$cls'><td><em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL;
268 } elseif ($loopid == '2010D') {
269 $dep_eb_html .= "<tr class='$cls'><td><em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL;
270 } elseif ($loopid == '2010EA' || $loopid == '2010EC') {
271 $evt_html .= "<tr class='$cls'><td><em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL;
272 } elseif ($loopid == '2010FA') {
273 $svc_html .= "<tr class='$cls'><td><em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL;
274 } else {
275 $hdr_html .= "<tr class='$cls'><td>$loopid <em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL;
278 continue;
282 if (strncmp('TRN'.$de, $seg, 4) === 0) {
283 // trace identifier
284 $sar = explode($de, $seg);
285 $elem01 = ( isset($sar[1]) ) ? $sar[1] : '';
286 $elem02 = ( isset($sar[2]) ) ? $sar[2] : '';
287 $elem03 = ( isset($sar[3]) ) ? $sar[3] : '';
288 $elem04 = ( isset($sar[4]) ) ? $sar[4] : '';
290 $trctp = ($elem01 == '2') ? 'Reference ' : 'Current ';
291 if ($loopid == '2000E') {
292 $evt_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3><em>$trctp tracking no:</em> $elem02 (by $elem03 $elem04)</td></tr>" .PHP_EOL;
293 } elseif ($loopid == '2000F') {
294 $svc_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3><em>$trctp tracking no:</em> $elem02 (by $elem03 $elem04)</td></tr>" .PHP_EOL;
297 continue;
302 if (strncmp('UM'.$de, $seg, 3) === 0) {
303 $sar = explode($de, $seg);
305 $elem01 = (isset($sar[1])) ? $cd27x->get_271_code('UM01', $sar[1]) : '';
306 $elem02 = (isset($sar[2])) ? $cd27x->get_271_code('UM02', $sar[2]) : '';
307 $elem03 = (isset($sar[3])) ? $cd27x->get_271_code('EB03', $sar[3]) : '';
308 $elem04 = (isset($sar[4])) ? $sar[4] : '';
309 $elem04a = '';
310 if (strpos($elem04, $ds)) {
311 $elem04_ar = explode($ds, $elem04);
312 if (isset($elem04_ar[1]) && $elem04_ar[1] == 'B') {
313 $elem04a .= (isset($elem04_ar[0])) ? $cd27x->get_271_code('POS', $elem04_ar[0]) : '';
314 } else {
315 $elem04a = $elem04;
319 /* UM05 -- not used
320 $elem05 = (isset($sar[5])) ? $sar[5] : '';
321 $elem05a = '';
322 if (strpos($elem05, $ds) {
323 $elem05_ar = explode($ds, $elem05);
324 $elem05a .= (isset($elem05_ar[0])) ? $cd27x->get_271_code('POS', $elem05_ar[0]) : '';
325 $elem05a .= (isset($elem05_ar[1])) ? $cd27x->get_271_code('POS', $elem05_ar[1]) : '';
326 $elem05a .= (isset($elem05_ar[2])) ? $cd27x->get_271_code('POS', $elem05_ar[2]) : '';
327 $elem05a .= (isset($elem05_ar[3])) ? 'State Code: '.$elem05_ar[3] : '';
328 $elem05a .= (isset($elem05_ar[3])) ? 'Country Code: '.$elem05_ar[4] : '';
329 } else {
330 $elem05a .= $elem05;
333 * */
334 $elem06 = (isset($sar[6])) ? $cd27x->get_271_code('UM06', $sar[6]) : '';
335 // UM07 UM08 not used
336 //$elem07 = (isset($sar[7])) ? $cd27x->get_271_code('UM07', $sar[7]) : '';
337 //$elem08 = (isset($sar[8])) ? $cd27x->get_271_code('UM08', $sar[8]) : '';
339 if ($loopid == '2000E') {
340 $evt_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3>$elem01 <em>Certification Type:</em> $elem02</td></tr>".PHP_EOL;
341 $evt_html .= ($elem03 || $elem04a || $elem06) ? "<tr class='$cls'><td>&gt;</td><td colspan=3>$elem03 $elem04a ($elem06)</td></tr>".PHP_EOL : "";
342 } elseif ($loopid == '2000F') {
343 $svc_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3>$elem01 <em>Certification Type:</em> $elem02</td></tr>".PHP_EOL;
344 $svc_html .= ($elem03 || $elem04a || $elem06) ? "<tr class='$cls'><td>&gt;</td><td colspan=3>$elem03 $elem04a ($elem06)</td></tr>".PHP_EOL : "";
347 continue;
351 if (strncmp('HCR'.$de, $seg, 4) === 0) {
353 $sar = explode($de, $seg);
355 $elem01 = (isset($sar[1]) && $sar[1]) ? $cd27x->get_271_code('HCR01', $sar[1]) : '';
356 $elem02 = (isset($sar[2]) && $sar[2]) ? "<em>Reference: </em>".$sar[2] : '';
357 $elem03 = (isset($sar[3]) && $sar[3]) ? $cd27x->get_271_code('HCR03', $sar[3]) : '';
358 $elem04 = (isset($sar[4]) && $sar[4]) ? $cd27x->get_271_code('HCR04', $sar[4]) : ''; {
359 $elem04 = ($elem04) ? "<em>2nd Surgical Opinion:</em> $elem04" : "";
362 if ($loopid == '2000E') {
363 $evt_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3>$elem01 $elem02</td></tr>".PHP_EOL;
364 $evt_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3>$elem03</td></tr>".PHP_EOL;
365 $evt_html .= ($elem04) ? "<tr class='$cls'><td>&gt;</td><td colspan=3>$elem04</td></tr>".PHP_EOL : "";
366 } elseif ($loopid == '2000F') {
367 $svc_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3>$elem01 $elem02</td></tr>".PHP_EOL;
368 $svc_html .= "<tr class='$cls'><td>&gt;</td><td colspan=3>$elem03</td></tr>".PHP_EOL;
369 $svc_html .= ($elem04) ? "<tr class='$cls'><td>&gt;</td><td colspan=3>$elem04</td></tr>".PHP_EOL : "";
373 continue;
377 if (strncmp('REF'.$de, $seg, 4) === 0) {
379 $sar = explode($de, $seg);
381 $elem01 = (isset($sar[1])) ? $cd27x->get_271_code('REF', $sar[1]) : '';
382 $elem02 = (isset($sar[2])) ? $sar[2] : '';
383 $elem03 = (isset($sar[3])) ? $sar[2] : '';
385 if ($loopid == '2010B') {
386 $rcv_html .= "<tr class='$cls'><td>&gt;</td><td colspan=2><em>$elem01</em> $elem02</td><td>$elem03</td></tr>".PHP_EOL;
387 } elseif ($loopid == '2010C') {
388 $sbr_nm1_html .= "<tr class='$cls'><td>&gt;</td><td colspan=2><em>$elem01</em> $elem02</td><td>$elem03</td></tr>".PHP_EOL;
389 } elseif ($loopid == '2010D') {
390 $dep_nm1_html .= "<tr class='$cls'><td>&gt;</td><td colspan=2><em>$elem01</em> $elem02</td><td>$elem03</td></tr>".PHP_EOL;
391 } elseif ($loopid == '2000E') {
392 $evt_html .= "<tr class='$cls'><td>&gt;</td><td colspan=2><em>$elem01</em> $elem02</td><td>$elem03</td></tr>".PHP_EOL;
393 } elseif ($loopid == '2010E') {
394 $evt_html .= "<tr class='$cls'><td>&gt;</td><td colspan=2><em>$elem01</em> $elem02</td><td>$elem03</td></tr>".PHP_EOL;
395 } elseif ($loopid == '2000F') {
396 $svc_html .= "<tr class='$cls'><td>&gt;</td><td colspan=2><em>$elem01</em> $elem02</td><td>$elem03</td></tr>".PHP_EOL;
397 } elseif ($loopid == '2010FA') {
398 $svc_html .= "<tr class='$cls'><td>&gt;</td><td colspan=2><em>$elem01</em> $elem02</td><td>$elem03</td></tr>".PHP_EOL;
402 continue;
406 if (strncmp('DMG'.$de, $seg, 4) === 0) {
407 $sar = explode($de, $seg);
408 $elem02 = (isset($sar[2]) && $sar[2]) ? edih_format_date($sar[2]) : "";
409 if (isset($sar[3]) && $sar[3]) {
410 if ($sar[3] == 'M') {
411 $elem03 = "Male";
412 } elseif ($sar[3] == 'F') {
413 $elem03 = "Female";
414 } else {
415 $elem03 = "Unknown";
419 if ($loopid == '2010C') {
420 $sbr_nm1_html .= "<tr class='$cls'><td>&gt;</td><td>$elem03</td><td colspan=2><em>Date of Birth</em> $elem02</td></tr>" .PHP_EOL;
421 } elseif ($loopid == '2010D') {
422 $dep_nm1_html .= "<tr class='$cls'><td>&gt;</td><td>$elem03</td><td colspan=2><em>Date of Birth</em> $elem02</td></tr>" .PHP_EOL;
425 continue;
429 if (strncmp('INS'.$de, $seg, 4) === 0) {
430 $sar = explode($de, $seg);
431 $elem01 = (isset($sar[1]) && $sar[1] == 'Y') ? "Subscriber" : "Dependent";
432 $elem02 = (isset($sar[2]) && $sar[2]) ? $cd27x->get_271_code('INS02', $sar[2]) : "";
433 $elem03 = (isset($sar[3]) && $sar[3]) ? $sar[3] : "";
434 $elem04 = (isset($sar[4]) && $sar[4] == '25') ? "<b>Information changed</b>" : "";
435 $elem17 = (isset($sar[17]) && $sar[17]) ? $sar[17] : "";
437 if ($loopid == '2010C') {
438 $sbr_nm1_html .= "<tr class='$cls'><td>&gt;</td><td>$elem01 $elem17</td><td>$elem02</td><td>$elem03 $elem04</td></tr>" .PHP_EOL;
439 } elseif ($loopid == '2010D') {
440 $dep_nm1_html .= "<tr class='$cls'><td>&gt;</td><td>$elem01 $elem17</td><td>$elem02</td><td>$elem03 $elem04</td></tr>" .PHP_EOL;
443 continue;
447 if (strncmp('DTP'.$de, $seg, 4) === 0) {
449 $sar = explode($de, $seg);
450 $var = '';
451 $elem01 = (isset($sar[1])) ? $sar[1] : '';
452 $elem02 = (isset($sar[2])) ? $sar[2] : '';
453 $elem03 = (isset($sar[3])) ? $sar[3] : '';
455 $idtype = ($elem01) ? $cd27x->get_271_code('DTP', $elem01) : "";
456 if ($elem02 == 'D8' && $elem03) {
457 $var = edih_format_date($elem03);
458 } elseif ($elem02 == 'RD8' && $elem03) {
459 $var = edih_format_date(substr($elem03, 0, 8));
460 $var .= ' - '.edih_format_date(substr($elem03, -8));
463 if ($loopid == '2000E') {
464 $evt_html .= "<tr class='$cls'><td>&gt;</td><td>$idtype</td><td colspan=2>$var</td></tr>" .PHP_EOL;
465 } elseif ($loopid == '2000F') {
466 $svc_html .= "<tr class='$cls'><td>&gt;</td><td>$idtype</td><td colspan=2>$var</td></tr>" .PHP_EOL;
469 continue;
473 if (strncmp('HI'.$de, $seg, 3) === 0) {
474 // This is the Health Care Information Codes segment
475 // -- to give all information in the segment, we need to
476 // lookup all the code values ICD-9, ICD-10, LOINC, DRG, etc.
477 // -- At this time, give the code source and code, with dates if any
479 $sar = explode($de, $seg);
481 $hi_str = '';
482 $tr_str = '';
483 foreach ($sar as $hi) {
484 if (strpos($hi, $ds)) {
485 $a = explode($ds, $hi);
486 $hi_str .= (isset($a[0]) && $a[0]) ? $cd27x->get_271_code('HI01', $a[0]) : "";
487 $hi_str .= (isset($a[1]) && $a[1]) ? '[ '.$a[1].' ]' : '[]';
488 if (isset($a[2]) && isset($a[3])) {
489 $hi_str .= ($a[2] == 'D8') ? ' '.edih_format_date($a[3]) : '';
490 $hi_str .= ($a[2] == 'RD8') ? edih_format_date(substr($a[3], 0, 8)) : "";
491 $hi_str .= ($a[2] == 'RD8') ? edih_format_date(substr($a[3], -8)) : "";
493 } else {
494 $hi_str .= $hi.' ';
497 $tr_str .= "<tr class='$cls'><td><em>Codes</em></td><td colspan=3>$hi_str</td></tr>".PHP_EOL;
501 if ($loopid == '2000E') {
502 $evt_html .= $tr_str;
503 } elseif ($loopid == '2000F') {
504 $svc_html .= $tr_str;
508 continue;
512 if (strncmp('HSD'.$de, $seg, 4) === 0) {
513 // Health Care Services Delivery
514 $sar = explode($de, $seg);
516 $id = "Services Delivery";
517 $tr_str = '';
518 $elem01 = (isset($sar[1]) && $sar[1]) ? $cd27x->get_271_code('HSD01', $sar[1]) : ''; // quantity qualifier
519 $elem02 = (isset($sar[2]) && $sar[2]) ? $sar[2] : ''; // numeric quantity
520 $elem03 = (isset($sar[3]) && $sar[3]) ? $cd27x->get_271_code('HSD01', $sar[3]) : ''; // measurement unit
521 $elem04 = (isset($sar[4]) && $sar[4]) ? $sar[4] : ''; // sample selection modulus
522 $elem05 = (isset($sar[5]) && $sar[5]) ? $cd27x->get_271_code('EB06', $sar[5]) : ''; // time period qualifier
523 $elem06 = (isset($sar[6]) && $sar[6]) ? $sar[6] : ''; // number of periods
524 $elem07 = (isset($sar[7]) && $sar[7]) ? $cd27x->get_271_code('HSD07', $sar[7]) : ''; // delivery
525 $elem08 = (isset($sar[8]) && $sar[8]) ? $cd27x->get_271_code('HSD08', $sar[8]) : ''; // delivery
527 if (($elem01 || $elem02) && !$elem08) {
528 $tr_str .= ($elem03 && $elem04 && $elem06) ? "<tr class='$cls'><td><em>$id</em></td><td colspan=3>$elem02 $elem01 per every $elem04 $elem03 for $elem06 $elem05 $elem07</td></tr>".PHP_EOL : "";
529 $tr_str .= ($elem03 && $elem04 && !$elem06) ? "<tr class='$cls'><td><em>$id</em></td><td colspan=3>$elem02 $elem01 per every $elem04 $elem03 $elem07</td></tr>".PHP_EOL : "";
530 $tr_str .= ($elem03 && !$elem04 && $elem06) ? "<tr class='$cls'><td><em>$id</em></td><td colspan=3>$elem02 $elem01 for $elem06 $elem05 $elem07</td></tr>".PHP_EOL : "";
531 $tr_str .= ($elem03 && !$elem04 && !$elem06) ? "<tr class='$cls'><td><em>$id</em></td><td colspan=3>$elem02 $elem01 $elem07</td></tr>".PHP_EOL : "";
532 } else {
533 $tr_str .= "<tr class='$cls'><td><em>$id</em></td><td colspan=3>$elem02 $elem01 $elem07 $elem08</td></tr>" .PHP_EOL;
537 if ($loopid == '2000E') {
538 $evt_html .= $tr_str;
539 } elseif ($loopid == '2000F') {
540 $svc_html .= $tr_str;
543 continue;
547 if (strncmp('CRC'.$de, $seg, 4) === 0) {
548 // Certification
549 $sar = explode($de, $seg);
551 $elem01 = (isset($sar[1]) && $sar[1]) ? $cd27x->get_271_code('CRC01', $sar[1]) : ''; // certification type code
552 $elem02 = (isset($sar[2]) && $sar[2]) ? $cd27x->get_271_code('HCR04', $sar[2]) : ''; // condition indicater
553 $elem03 = (isset($sar[3]) && $sar[3]) ? $cd27x->get_271_code('CRC03', $sar[3]) : ''; // condition descripter
554 $elem04 = (isset($sar[4]) && $sar[4]) ? $cd27x->get_271_code('CRC03', $sar[4]) : ''; // condition descripter
555 $elem05 = (isset($sar[5]) && $sar[5]) ? $cd27x->get_271_code('CRC03', $sar[5]) : ''; // condition descripter
556 $elem06 = (isset($sar[6]) && $sar[6]) ? $cd27x->get_271_code('CRC03', $sar[6]) : ''; // condition descripter
557 $elem07 = (isset($sar[7]) && $sar[7]) ? $cd27x->get_271_code('CRC03', $sar[7]) : ''; // condition descripter
559 $evt_html .= ($elem01) ? "<tr class='$cls'><td><em>$elem01</em></td><td colspan=3><em>Conditions Apply:</em> $elem02</td></tr>".PHP_EOL : "";
560 $evt_html .= ($elem03) ? "<tr class='$cls'><td>&gt;</td><td colspan=3>$elem03</td></tr>".PHP_EOL : "";
561 $evt_html .= ($elem04) ? "<tr class='$cls'><td>&gt;</td><td colspan=3>$elem04</td></tr>".PHP_EOL : "";
562 $evt_html .= ($elem05) ? "<tr class='$cls'><td>&gt;</td><td colspan=3>$elem05</td></tr>".PHP_EOL : "";
563 $evt_html .= ($elem06) ? "<tr class='$cls'><td>&gt;</td><td colspan=3>$elem06</td></tr>".PHP_EOL : "";
564 $evt_html .= ($elem07) ? "<tr class='$cls'><td>&gt;</td><td colspan=3>$elem07</td></tr>".PHP_EOL : "";
566 continue;
570 if (strncmp('CL1'.$de, $seg, 4) === 0) {
572 $sar = explode($de, $seg);
574 $tr_str = '';
575 $elem01 = (isset($sar[1]) && $sar[1]) ? $cd27x->get_271_code('CL101', $sar[1]) : ''; // admission type code
576 $elem02 = (isset($sar[2]) && $sar[2]) ? $cd27x->get_271_code('CL102', $sar[2]) : ''; // admission source code
577 $elem03 = (isset($sar[3]) && $sar[3]) ? $cd27x->get_271_code('CL103', $sar[3]) : ''; // patient status code
579 $tr_str .= "<tr class='$cls'><td><em>Hospital</em> </td><td colspan=3>$elem01 $elem02</td></tr>".PHP_EOL;
580 $tr_str .= ($elem03) ? "<tr class='$cls'><td>&gt;</td><td colspan=3>$elem03</td></tr>".PHP_EOL : "";
582 if ($loopid == '2000E') {
583 $evt_html .= $tr_str;
584 } elseif ($loopid == '2000F') {
585 $svc_html .= $tr_str;
588 continue;
592 if (strncmp('CR1'.$de, $seg, 4) === 0) {
593 // ambulance
594 $sar = explode($de, $seg);
596 $elem03 = (isset($sar[3]) && $sar[3]) ? $cd27x->get_271_code('CR103', $sar[3]) : ''; // ambulance transit code
597 if (isset($sar[5])) {
598 if ($sar[5] == 'DH') {
599 $elem05 = "miles";
600 } elseif ($sar[5] == 'DK') {
601 $elem05 = "kilometers";
602 } else {
603 $elem05 = "";
605 } else {
606 $elem05 = "";
609 $elem06 = (isset($sar[6])) ? $sar[6] : "";
611 $evt_html .= "<tr class='$cls'><td><em>Ambulance:</em></td><td colspan=3>$elem03 $elem06 $elem05</td></tr>".PHP_EOL;
613 continue;
617 if (strncmp('CR2'.$de, $seg, 4) === 0) {
618 // spinal manipulation
619 $sar = explode($de, $seg);
621 $elem01 = (isset($sar[1]) && $sar[1]) ? $sar[1] : "";
622 $elem02 = (isset($sar[2]) && $sar[2]) ? $sar[2] : "";
623 $elem03 = (isset($sar[3]) && $sar[3]) ? $cd27x->get_271_code('CR203', $sar[3]) : ""; // spinal code
624 $elem04 = (isset($sar[4]) && $sar[4]) ? $cd27x->get_271_code('CR203', $sar[4]) : ""; // spinal code
625 $elem04 = ($elem04) ? "-- ".$elem04 : "";
626 // elem05 -- elem12 not used
628 $evt_html .= "<tr class='$cls'><td><em>Spinal:</em></td><td colspan=3> $elem01 $elem02 $elem03 $elem04</td></tr>".PHP_EOL;
630 continue;
634 if (strncmp('CR5'.$de, $seg, 4) === 0) {
635 // oxygen
636 $sar = explode($de, $seg);
638 $tr_str = '';
639 $elem03 = (isset($sar[3]) && $sar[3]) ? $cd27x->get_271_code('CR503', $sar[3]) : ""; // oxygen code
640 $elem04 = (isset($sar[4]) && $sar[4]) ? $cd27x->get_271_code('CR503', $sar[4]) : ""; // oxygen code
641 $elem06 = (isset($sar[6]) && $sar[6]) ? "Flow (lpm): ".$sar[6] : "";
642 $elem07 = (isset($sar[7]) && $sar[7]) ? "Times/day: ".$sar[7] : "";
643 $elem08 = (isset($sar[8]) && $sar[8]) ? "Hours: ".$sar[8] : "";
644 $elem09 = (isset($sar[9]) && $sar[9]) ? $sar[9] : "";
645 $elem16 = (isset($sar[16]) && $sar[16]) ? "Flow (lpm): ".$sar[16] : "";
646 $elem17 = (isset($sar[17]) && $sar[17]) ? $cd27x->get_271_code('CR517', $sar[17]) : "";
647 $elem18 = (isset($sar[18]) && $sar[18]) ? $cd27x->get_271_code('CR503', $sar[18]) : "";
649 $title = "Descriptors and Rates/times per edi guide. <b>Do not rely on these!</b>".PHP_EOL;
650 $t2 = "Descriptors per edi companion guide. <b>Do not rely on these!</b>".PHP_EOL;
652 $tr_str .= "<tr class='$cls'><td><em>Oxygen</em></td><td colspan=3><b>You must independently verify this information!</b></td></tr>".PHP_EOL;
653 $tr_str .= "<tr class='$cls'><td>&gt;</td><td colspan=3>$title</td></tr>".PHP_EOL;
654 $tr_str .= ($elem03 || $elem04 ) ? "<tr class='$cls'><td>&gt;</td><td colspan=3 title='$t2'><em>Equipment Type: </em>$elem03 $elem04</td></tr>".PHP_EOL : "";
655 $tr_str .= ($elem06 || $elem07 || $elem08) ? "<tr class='$cls'><td>&gt;</td><td colspan=3 title='$title'>$elem06 $elem07 $elem08</td></tr>".PHP_EOL : "";
656 $tr_str .= ($elem09) ? "<tr class='$cls'><td>&gt;</td><td colspan=3><em>Therapist: </em>$elem09</td></tr>".PHP_EOL : "";
657 $tr_str .= ($elem16) ? "<tr class='$cls'><td>&gt;</td><td colspan=3 title='$title'>$elem16</td></tr>".PHP_EOL : "";
658 $tr_str .= ($elem17) ? "<tr class='$cls'><td>&gt;</td><td colspan=3 title='$t2'><em>Delivery: </em>$elem17</td></tr>".PHP_EOL : "";
659 $tr_str .= ($elem18) ? "<tr class='$cls'><td>&gt;</td><td colspan=3 title='$t2'><em>Equipment Type: </em>$elem18</td></tr>".PHP_EOL : "";
661 $evt_html .= $tr_str;
663 continue;
667 if (strncmp('CR6'.$de, $seg, 4) === 0) {
668 // oxygen
669 $sar = explode($de, $seg);
671 $elem01 = (isset($sar[1]) && $sar[1]) ? $cd27x->get_271_code('UM07', $sar[1]) : ""; // patient condition code
672 $elem02 = (isset($sar[2]) && $sar[2]) ? edih_format_date($sar[2]) : ""; // HH start date
673 $elem03 = (isset($sar[3]) && $sar[3]) ? $sar[3] : "";
674 $elem04 = (isset($sar[4]) && $sar[4]) ? $sar[4] : "";
675 if ($elem03 == 'D8' && $elem04) {
676 $elem04 = edih_format_date($elem04);
677 } elseif ($elem03 == 'RD8' && $elem04) {
678 $var = edih_format_date(substr($dtp03, 0, 8));
679 $elem04 = $var.' - '.edih_format_date(substr($elem04, -8));
682 $elem07 = (isset($sar[7]) && $sar[7]) ? $cd27x->get_271_code('HCR04', $sar[8]) : "";
683 $elem08 = (isset($sar[8]) && $sar[8]) ? $cd27x->get_271_code('CR608', $sar[8]) : ""; // certification type code
685 $evt_html .= "<tr class='$cls'><td><em>Home Health</em></td><td><em>HH Began</em> $elem02</td><td colspan=2>$elem01</td></tr>".PHP_EOL;
686 $evt_html .= ($elem03 || $elem04) ? "<tr class='$cls'><td>&gt;</td><td colspan=2><em>Period</em> $elem04</td><td>(MCR) $elem07</td></tr>".PHP_EOL : "";
687 $evt_html .= ($elem08) ? "<tr class='$cls'><td>&gt;</td><td colspan=2><em>Period</em> $elem08</td><td>(MCR) $elem05</td></tr>".PHP_EOL : "";
689 continue;
693 if (strncmp('PWK'.$de, $seg, 4) === 0) {
694 // paperwork
695 $sar = explode($de, $seg);
697 $tr_str = '';
699 $elem01 = (isset($sar[1]) && $sar[1]) ? $cd27x->get_271_code('PWK01', $sar[1]) : ""; // paperwork code
700 $elem02 = (isset($sar[2]) && $sar[2]) ? $cd27x->get_271_code('PWK02', $sar[2]) : ""; // delivery code
701 $elem05 = (isset($sar[5]) && $sar[5] == 'AC') ? "Attachment Control Number" : "";
702 $elem06 = (isset($sar[6]) && $sar[6]) ? $sar[6] : "";
703 $elem07 = (isset($sar[7]) && $sar[7]) ? $sar[7] : "";
705 $tr_str .= "<tr class='$cls'><td><em>Paperwork</em></td><td colspan=3>$elem01 $elem02</td></tr>".PHP_EOL;
706 $tr_str .= ($elem05) ? "<tr class='$cls'><td>&gt;</td><td colspan=3>$elem05 $elem06</td></tr>".PHP_EOL : "";
707 $tr_str .= ($elem07) ? "<tr class='$cls'><td>&gt;</td><td colspan=3>$elem07</td></tr>".PHP_EOL : "";
709 if ($loopid == '2000E') {
710 $evt_html .= $tr_str;
711 } elseif ($loopid == '2000F') {
712 $svc_html .= $tr_str;
715 continue;
719 if (strncmp('MSG'.$de, $seg, 4) === 0) {
720 // paperwork
721 $sar = explode($de, $seg);
723 $elem01 = (isset($sar[1]) && $sar[1]) ? $sar[1] : "";
725 if ($loopid == '2000E') {
726 $evt_html .= ($elem01) ? "<tr class='$cls'><td><em>Message</em></td><td colspan=3>$elem01</td></tr>".PHP_EOL : "";
727 } elseif ($loopid == '2000F') {
728 $svc_html .= ($elem01) ? "<tr class='$cls'><td><em>Message</em></td><td colspan=3>$elem01</td></tr>".PHP_EOL : "";
731 continue;
735 if (strncmp('SV1'.$de, $seg, 4) === 0) {
736 // professional services
737 $sar = explode($de, $seg);
740 $elem01 = '';
741 if (isset($sar[1]) && strpos($sar[1], $ds)) {
742 $ar01 = explode($ds, $sar[1]);
743 $ct = count($ar01);
744 $elem01 = (isset($ar01[0]) && $ar01[0]) ? $cd27x->get_271_code('SV101', $ar01[0]) : "";
746 if ($ct == 8) {
747 $ct = 7;
748 $elem01 .= " ".$ar01[1]." -- ".$ar01[8];
749 } else {
750 $elem01 .= " ".$ar01[1];
753 if ($elem01 && $ct > 2) {
754 for ($i=2; $i<$ct;
755 $i++) {
756 $elem01 .= ' '.$ar01[$i];
759 } elseif (isset($sar[1]) && $sar[1]) {
760 $elem01 = $sar[1];
763 $elem02 = (isset($sar[2]) && $sar[2]) ? edih_format_money($sar[2]) : "";
764 $elem03 = (isset($sar[3]) && $sar[3]) ? $cd27x->get_271_code('SV103', $sar[3]) : "";
765 $elem04 = (isset($sar[4]) && $sar[4]) ? $sar[4] : "";
766 $elem11 = (isset($sar[11]) && $sar[11]) ? $cd27x->get_271_code('HCR04', $sar[11]) : "";
767 $elem20 = (isset($sar[20]) && $sar[20]) ? $cd27x->get_271_code('SV120', $sar[20]) : "";
769 $elem11 = ($elem11) ? "<em>EPSDT</em> ".$elem11 : "";
771 $svc_html .= ($elem01) ? "<tr class='$cls'><td><em>Professional Svc</em></td><td colspan=3>$elem01 $elem02</td></tr>".PHP_EOL : "";
772 $svc_html .= ($elem03 ||$elem04 || $elem11) ? "<tr class='$cls'><td>&gt;</td><td colspan=3>$elem03 $elem04 $elem11</td></tr>".PHP_EOL : "";
773 $svc_html .= ($elem20) ? "<tr class='$cls'><td>&gt;</td><td colspan=3>$elem20</td></tr>".PHP_EOL : "";
775 continue;
779 if (strncmp('SV2'.$de, $seg, 4) === 0) {
780 // paperwork
781 $sar = explode($de, $seg);
784 $elem01 = '';
785 if (isset($sar[1]) && strpos($sar[1], $ds)) {
786 $ar01 = explode($ds, $sar[1]);
787 $ct = count($ar01);
788 $elem01 = (isset($ar01[0]) && $ar01[0]) ? $cd27x->get_271_code('SV101', $ar01[0]) : "";
790 if ($ct == 8) {
791 $ct = 7;
792 $elem01 .= " ".$ar01[1]." -- ".$ar01[8];
793 } else {
794 $elem01 .= " ".$ar01[1];
797 if ($elem01 && count($ar01) > 2) {
798 for ($i=2; $i<$ct;
799 $i++) {
800 $elem01 .= ' '.$ar01[$i];
803 } elseif (isset($sar[1]) && $sar[1]) {
804 $elem01 = $sar[1];
807 $elem02 = (isset($sar[2]) && $sar[2]) ? edih_format_money($sar[2]) : "";
808 $elem03 = (isset($sar[3]) && $sar[3]) ? $cd27x->get_271_code('SV103', $ar01[3]) : "";
809 $elem04 = (isset($sar[4]) && $sar[4]) ? $sar[4] : "";
810 $elem05 = (isset($sar[5]) && $sar[5]) ? $sar[5] : "";
811 $elem06 = (isset($sar[6]) && $sar[6]) ? edih_format_money($sar[6]) : "";
812 $elem10 = (isset($sar[20]) && $sar[20]) ? $cd27x->get_271_code('SV120', $ar01[20]) : "";
814 $svc_html .= ($elem01) ? "<tr class='$cls'><td><em>Inst Service</em></td><td colspan=3>$elem01 $elem02</td></tr>".PHP_EOL : "";
815 $svc_html .= ($elem03 ||$elem04) ? "<tr class='$cls'><td>&gt;</td><td colspan=3>$elem03 $elem04 $elem05 $elem06</td></tr>".PHP_EOL : "";
816 $svc_html .= ($elem10) ? "<tr class='$cls'><td>&gt;</td><td colspan=3>$elem10</td></tr>".PHP_EOL : "";
818 continue;
823 $str_html .= $hdr_html;
824 $str_html .= ($src_html) ? $src_html : "";
825 $str_html .= ($rcv_html) ? $rcv_html : "";
826 $str_html .= ($sbr_nm1_html) ? $sbr_nm1_html : "";
827 $str_html .= ($dep_nm1_html) ? $dep_nm1_html : "";
828 $str_html .= ($evt_html) ? $evt_html : "";
829 $str_html .= ($svc_html) ? $svc_html : "";
830 $str_html .= "<tr><td colspan=4>&nbsp;</td></tr>".PHP_EOL;
831 $str_html .= "</tbody>".PHP_EOL."</table>".PHP_EOL;
835 return $str_html;
839 * create a display for an individual authorization response
841 * @uses csv_check_x12_obj()
842 * @uses edih_278_transaction_html
844 * @param string $filename the filename
845 * @param string $bht03 identifier from 837 CLM or27 BHT segment
847 * @return string either an error message or an html table
849 function edih_278_html($filename, $bht03 = '')
851 // create a display for an individual 277 response
852 $html_str = '';
854 if (!$filename) {
855 csv_edihist_log("edih_278_html: called with no file arguments");
856 $html_str .= "Error, no file given<br />".PHP_EOL;
857 return $html_str;
858 } else {
859 $obj278 = csv_check_x12_obj($filename, 'f278');
860 if ($obj278 && 'edih_x12_file' == get_class($obj278)) {
861 if ($bht03) {
862 // particular transaction
863 $html_str .= edih_278_transaction_html($obj278, $bht03);
864 } else {
865 // file contents
866 $env_ar = $obj278->edih_envelopes();
867 if (!isset($env_ar['ST'])) {
868 $html_str .= "<p>edih_278_html: file parse error, envelope error</p>".PHP_EOL;
869 $html_str .= $obj278->edih_message();
870 return $html_str;
871 } else {
872 $html_str .= "<div id='accordion'>".PHP_EOL;
875 foreach ($env_ar['ST'] as $st) {
876 foreach ($env_ar['GS'] as $gs) {
877 if ($gs['icn'] != $st['icn']) {
878 continue;
881 if ($gs['gsn'] == $st['gsn']) {
882 $gs_date = edih_format_date($gs['date']);
883 $gs_sender = $gs['sender'];
884 break;
889 // get each transaction
890 foreach ($st['bht03'] as $bht) {
891 $html_str .= "<h3>$bht Services Review</h3>".PHP_EOL;
892 $html_str .= "<div id='ac_$bht'>".PHP_EOL;
894 $html_str .= edih_278_transaction_html($obj278, $bht);
896 $html_str .= "</div>".PHP_EOL;
899 $html_str .= "</div>".PHP_EOL;
902 } else {
903 csv_edihist_log("edih_278_html: error in retreiving file object");
904 $html_str .= "<p>x12 278 file parse error</p>".PHP_EOL;
909 return $html_str;