5 * Copyright 2016 Kevin McCormick <kevin@kt61p>
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,
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
38 function edih_278_transaction_html($obj278, $bht03) {
40 $trans = $obj278->edih_x12_transaction($bht03);
41 if ( empty($trans) ) {
42 $str_html = $obj278->edih_message();
45 $de = $obj278->edih_delimiters()['e'];
46 $ds = $obj278->edih_delimiters()['s'];
47 $dr = $obj278->edih_delimiters()['r'];
48 $fn = $obj278->edih_filename();
50 $cd27x = new edih_271_codes($ds, $dr);
53 $capstr = 'Services Review (Cert/Auth)';
55 $hdr_html = "<table class='h278' columns=4><caption>$capstr</caption>";
56 $hdr_html .= "<thead><tr><th>Reference</th><th>Information</th><th colspan=2>$fn</th></tr></thead>".PHP_EOL
;
57 $hdr_html .= "<tbody>".PHP_EOL
;
66 $trns_ct = count($trans);
67 for($i=0; $i<$trns_ct; $i++
) {
68 foreach($trans[$i] as $seg) {
78 if ( strncmp('BHT'.$de, $seg, 4) === 0 ) {
80 $sar = explode($de, $seg);
81 $elem01 = ($sar[1] == '0007') ?
"Src, Rcvr, Sbr, Dep, Evt, Svc" : "Not determined";
83 $elem02 = ( isset($sar[2]) && $sar[2] !== false) ?
$cd27x->get_271_code('BHT02', $sar[2]) : "";
85 $elem03 = (isset($sar[3]) ) ?
$sar[3] : '';
86 $elem04 = (isset($sar[4]) ) ?
edih_format_date($sar[4]) : '';
88 $elem06 = (isset($sar[6]) && $sar[6]) ?
$cd27x->get_271_code('BHT06', $sar[6]) : "";
90 $hdr_html .= "<tr><td colspan=2><em>Transaction ID:</em> $elem03 </td><td colspan=2><em>Sequence:</em> $elem01</td></tr>".PHP_EOL
;
92 $hdr_html .= "<tr><td colspan=2><em>Transaction Date:</em> $elem04 </td><td colspan=2>$elem02 <em>Type:</em> $elem06</td></tr>".PHP_EOL
;
94 $hdr_html .= "<tr><td colspan=2><em>Transaction Date:</em> $elem04 </td><td colspan=2><em>Type:</em> $elem02</td></tr>".PHP_EOL
;
99 //'src''rcv'sbr''dep''evt''svc''
100 if (strncmp($seg, 'HL'.$de, 3) === 0 ) {
101 $sar = explode($de, $seg);
103 $hlpc = $sar[2]; // parent code
105 $hlcc = (isset($sar[4])) ?
$sar[4] : ''; // child code
106 if ($sar[3] == '20') { // level code
108 $cls = 'src'; // info source (payer)
109 $src_html .= "<tr class='$cls'><td colspan=4><b>Information Source</b></td></tr>".PHP_EOL
;
110 } elseif ($sar[3] == '21') {
112 $cls = 'rcv'; // info receiver (clinic)
113 $rcv_html .= "<tr class='$cls'><td colspan=4><b>Information Receiver</b></td></tr>".PHP_EOL
;
114 } elseif ($sar[3] == '22') {
115 $loopid = '2000C'; // subscriber
117 $sbr_nm1_html .= "<tr class='$cls'><td colspan=4><b>Subscriber</b></td></tr>".PHP_EOL
;
118 } elseif ($sar[3] == '23') {
119 $loopid = '2000D'; // dependent
121 $dep_nm1_html .= "<tr class='$cls'><td colspan=4><b>Dependent</b></td></tr>".PHP_EOL
;
122 } elseif ($sar[3] == 'EV') {
123 $loopid = '2000E'; // patient event
125 $evt_html .= "<tr class='$cls'><td colspan=4><b>Patient Event</b></td></tr>".PHP_EOL
;
126 } elseif ($sar[3] == 'SS') {
127 $loopid = '2000F'; // service
129 $svc_html .= "<tr class='$cls'><td colspan=4><b>Service</b></td></tr>".PHP_EOL
;
134 if ( strncmp('NM1'.$de, $seg, 4) === 0 ) {
135 $sar = explode($de, $seg);
137 $nm101 = ( isset($sar[1]) ) ?
$sar[1] : '';
138 $descr = ($nm101) ?
$cd27x->get_271_code('NM101', $nm101) : "";
140 $name = (isset($sar[3]) && $sar[3] ) ?
$sar[3] : "";
141 $name .= (isset($sar[7]) && $sar[7]) ?
" {$sar[7]}" : "";
142 $name .= (isset($sar[4]) && $sar[4]) ?
", {$sar[4]}" : "";
143 $name .= (isset($sar[5]) && $sar[5]) ?
" {$sar[5]}" : "";
144 $nm109 = (isset($sar[9]) && $sar[9]) ?
$sar[9] : "";
146 $idtype = (isset($sar[8]) && $sar[8] ) ?
$cd27x->get_271_code('NM108', $sar[8]) : "";
148 if ($loopid == '2000A') {
149 $src_html .= "<tr class='$cls'><td title='$idtype'>$nm109</td><td colspan=3 title='$descr'>$name</td></tr>" .PHP_EOL
;
151 } elseif ($loopid == '2000B') {
152 $rcv_html .= "<tr class='$cls'><td title='$idtype'>$nm109</td><td colspan=3 title='$descr'>$name</td></tr>" .PHP_EOL
;
154 } elseif ($loopid == '2000C') {
155 $sbr_nm1_html .= "<tr class='$cls'><td title='$idtype'>$nm109</td><td colspan=3 title='$descr'>$name</td></tr>" .PHP_EOL
;
157 } elseif ($loopid == '2000D') {
158 $dep_nm1_html .= "<tr class='$cls'><td title='$idtype'>$nm109</td><td colspan=3 title='$descr'>$name</td></tr>" .PHP_EOL
;
160 } elseif ( $loopid == '2000E' ||
strpos($loopid, '010E') ) {
161 $loopid = (strpos('|71|72|73|77|AAJ|DD|DK|DN|FA|G3|P3|QB|QV|SJ', $nm101) ) ?
'2010EA' : $loopid;
162 $loopid = (strpos('|45|FS|ND|PW|R3', $nm101) ) ?
'2010EB' : $loopid;
163 $loopid = ($nm101 == 'L5') ?
'2010EC' : $loopid;
164 $evt_html .= "<tr class='$cls'><td title='$idtype'>$nm109</td><td colspan=3 title='$descr'>$descr $name</td></tr>" .PHP_EOL
;
165 } elseif ( $loopid == '2000F' ||
strpos($loopid, '010F') ) {
166 $loopid = (strpos('|71|72|73|77|AAJ|DD|DK|DN|FA|G3|P3|QB|QV|SJ', $nm101) ) ?
'2010FA' : $loopid;
167 $loopid = ($nm101 == 'L5') ?
'2010FB' : $loopid;
168 $svc_html .= "<tr class='$cls'><td title='$idtype'>$nm109</td><td colspan=3 title='$descr'>$descr $name</td></tr>" .PHP_EOL
;
174 if ( strncmp('N3'.$de, $seg, 3) === 0 ) {
175 $sar = explode($de, $seg);
176 $addr = (isset($sar[1])) ?
$sar[1] : "";
177 $addr .= (isset($sar[2])) ?
" {$sar[2]}" : "";
179 if ($loopid == '2010B') {
180 $rcv_html .= "<tr class='$cls'><td>></td><td colspan=3>$addr</td></tr>" .PHP_EOL
;
181 } elseif ($loopid == '2010C') {
182 $sbr_nm1_html .= "<tr class='$cls'><td>></td><td colspan=3>$addr</td></tr>" .PHP_EOL
;
183 } elseif ($loopid == '2010D') {
184 $dep_nm1_html .= "<tr class='$cls'><td>></td><td colspan=3>$addr</td></tr>" .PHP_EOL
;
185 } elseif ($loopid == '2010EA' ||
$loopid == '2010EC') {
186 $evt_html .= "<tr class='$cls'><td>></td><td colspan=3>$addr</td></tr>" .PHP_EOL
;
187 } elseif ($loopid == '2010FA') {
188 $svc_html .= "<tr class='$cls'><td>></td><td colspan=3>$addr</td></tr>" .PHP_EOL
;
193 if ( strncmp('N4'.$de, $seg, 3) === 0 ) {
194 $sar = explode($de, $seg);
195 if ($loopid == '2010B') {
196 $rcv_html .= "<tr class='$cls'><td>></td><td colspan=3>{$sar[1]} {$sar[2]} {$sar[3]}</td></tr>" .PHP_EOL
;
197 } elseif ($loopid == '2010C') {
198 $sbr_nm1_html .= "<tr class='$cls'><td>></td><td colspan=3>{$sar[1]} {$sar[2]} {$sar[3]}</td></tr>" .PHP_EOL
;
199 } elseif ($loopid == '2010D') {
200 $dep_nm1_html .= "<tr class='$cls'><td>></td><td colspan=3>{$sar[1]} {$sar[2]} {$sar[3]}</td></tr>" .PHP_EOL
;
201 } elseif ($loopid == '2010EA' ||
$loopid == '2010EC') {
202 $evt_html .= "<tr class='$cls'><td>></td><td colspan=3>{$sar[1]} {$sar[2]} {$sar[3]}</td></tr>" .PHP_EOL
;
203 } elseif ($loopid == '2010FA' ||
$loopid == '2010FB') {
204 $svc_html .= "<tr class='$cls'><td>></td><td colspan=3>{$sar[1]} {$sar[2]} {$sar[3]}</td></tr>" .PHP_EOL
;
209 if ( strncmp('PER'.$de, $seg, 4) === 0 ) {
210 $sar = explode($de, $seg);
211 $elem01 = (isset($sar[1])) ?
$sar[1] : '';
212 $elem02 = (isset($sar[2])) ?
$sar[2] : '';
213 $elem03 = (isset($sar[3])) ?
$cd27x->get_271_code('PER03', $sar[3]) : "";
214 $elem04 = (isset($sar[4])) ?
$sar[4] : '';
215 $elem05 = (isset($sar[5])) ?
$cd27x->get_271_code('PER03', $sar[5]) : "";
216 $elem06 = (isset($sar[6])) ?
$sar[6] : '';
217 $elem07 = (isset($sar[7])) ?
$cd27x->get_271_code('PER03', $sar[7]) : "";
218 $elem08 = (isset($sar[8])) ?
$sar[8] : '';
219 $elem09 = (isset($sar[9])) ?
$sar[9] : '';
221 $idtype = ($sar[3]) ?
$cd27x->get_271_code('PER03', $sar[3]) : "";
222 if ($loopid == '2010A') {
223 $src_html .= "<tr class='$cls'><td colspan=2>$elem02</td><td colspan=2 title='$elem03 $elem05 $elem07'>$elem04 $elem06 $elem08</td></tr>" .PHP_EOL
;
224 } elseif ($loopid == '2010B') {
225 $rcv_html .= "<tr class='$cls'><td colspan=2>$elem02</td><td colspan=2 title='$elem03 $elem05 $elem07'>$elem04 $elem06 $elem08</td></tr>" .PHP_EOL
;
226 } elseif ($loopid == '2010EA') {
227 $evt_html .= "<tr class='$cls'><td colspan=2>$elem02</td><td colspan=2 title='$elem03 $elem05 $elem07'>$elem04 $elem06 $elem08</td></tr>" .PHP_EOL
;
228 } elseif ($loopid == '2010FA') {
229 $svc_html .="<tr class='$cls'><td colspan=2>$elem02</td><td colspan=2 title='$elem03 $elem05 $elem07'>$elem04 $elem06 $elem08</td></tr>" .PHP_EOL
;
235 if ( strncmp('AAA'.$de, $seg, 4) === 0 ) {
237 $sar = explode($de, $seg);
238 $rej_reason = $cd27x->get_271_code('AAA03', $sar[3]);
239 $follow = $cd27x->get_271_code('AAA04', $sar[4]);
240 if ($loopid == '2000A') {
241 $src_html .= "<tr class='$cls'><td><em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL
;
242 } elseif ($loopid == '2010A') {
243 $src_html .= "<tr class='$cls'><td><em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL
;
244 } elseif ($loopid == '2000B') {
245 $rcv_html .= "<tr class='$cls'><td><em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL
;
246 } elseif ($loopid == '2010B') {
247 $sbr_eb_html .= "<tr class='$cls'><td><em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL
;
248 } elseif ($loopid == '2000C') {
249 $sbr_nm1_html .= "<tr class='$cls'><td><em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL
;
250 } elseif ($loopid == '2010C') {
251 $sbr_eb_html .= "<tr class='$cls'><td><em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL
;
252 } elseif ($loopid == '2000D') {
253 $dep_nm1_html .= "<tr class='$cls'><td><em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL
;
254 } elseif ($loopid == '2010D') {
255 $dep_eb_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 == '2010EA' ||
$loopid == '2010EC') {
257 $evt_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 == '2010FA') {
259 $svc_html .= "<tr class='$cls'><td><em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL
;
261 $hdr_html .= "<tr class='$cls'><td>$loopid <em><b>Rejection:</b></em></td><td colspan=3 title='$follow'>$rej_reason</td></tr>" .PHP_EOL
;
266 if ( strncmp('TRN'.$de, $seg, 4) === 0 ) {
268 $sar = explode($de, $seg);
269 $elem01 = ( isset($sar[1]) ) ?
$sar[1] : '';
270 $elem02 = ( isset($sar[2]) ) ?
$sar[2] : '';
271 $elem03 = ( isset($sar[3]) ) ?
$sar[3] : '';
272 $elem04 = ( isset($sar[4]) ) ?
$sar[4] : '';
274 $trctp = ($elem01 == '2') ?
'Reference ' : 'Current ';
275 if ($loopid == '2000E') {
276 $evt_html .= "<tr class='$cls'><td>></td><td colspan=3><em>$trctp tracking no:</em> $elem02 (by $elem03 $elem04)</td></tr>" .PHP_EOL
;
277 } elseif ($loopid == '2000F') {
278 $svc_html .= "<tr class='$cls'><td>></td><td colspan=3><em>$trctp tracking no:</em> $elem02 (by $elem03 $elem04)</td></tr>" .PHP_EOL
;
284 if ( strncmp('UM'.$de, $seg, 3) === 0 ) {
285 $sar = explode($de, $seg);
287 $elem01 = (isset($sar[1])) ?
$cd27x->get_271_code('UM01', $sar[1]) : '';
288 $elem02 = (isset($sar[2])) ?
$cd27x->get_271_code('UM02', $sar[2]) : '';
289 $elem03 = (isset($sar[3])) ?
$cd27x->get_271_code('EB03', $sar[3]) : '';
290 $elem04 = (isset($sar[4])) ?
$sar[4] : '';
292 if ( strpos($elem04, $ds) ) {
293 $elem04_ar = explode($ds, $elem04);
294 if ( isset($elem04_ar[1]) && $elem04_ar[1] == 'B' ) {
295 $elem04a .= (isset($elem04_ar[0])) ?
$cd27x->get_271_code('POS', $elem04_ar[0]) : '';
301 $elem05 = (isset($sar[5])) ? $sar[5] : '';
303 if (strpos($elem05, $ds) {
304 $elem05_ar = explode($ds, $elem05);
305 $elem05a .= (isset($elem05_ar[0])) ? $cd27x->get_271_code('POS', $elem05_ar[0]) : '';
306 $elem05a .= (isset($elem05_ar[1])) ? $cd27x->get_271_code('POS', $elem05_ar[1]) : '';
307 $elem05a .= (isset($elem05_ar[2])) ? $cd27x->get_271_code('POS', $elem05_ar[2]) : '';
308 $elem05a .= (isset($elem05_ar[3])) ? 'State Code: '.$elem05_ar[3] : '';
309 $elem05a .= (isset($elem05_ar[3])) ? 'Country Code: '.$elem05_ar[4] : '';
315 $elem06 = (isset($sar[6])) ?
$cd27x->get_271_code('UM06', $sar[6]) : '';
316 // UM07 UM08 not used
317 //$elem07 = (isset($sar[7])) ? $cd27x->get_271_code('UM07', $sar[7]) : '';
318 //$elem08 = (isset($sar[8])) ? $cd27x->get_271_code('UM08', $sar[8]) : '';
320 if ($loopid == '2000E' ) {
321 $evt_html .= "<tr class='$cls'><td>></td><td colspan=3>$elem01 <em>Certification Type:</em> $elem02</td></tr>".PHP_EOL
;
322 $evt_html .= ($elem03 ||
$elem04a ||
$elem06) ?
"<tr class='$cls'><td>></td><td colspan=3>$elem03 $elem04a ($elem06)</td></tr>".PHP_EOL
: "";
323 } elseif ($loopid == '2000F' ) {
324 $svc_html .= "<tr class='$cls'><td>></td><td colspan=3>$elem01 <em>Certification Type:</em> $elem02</td></tr>".PHP_EOL
;
325 $svc_html .= ($elem03 ||
$elem04a ||
$elem06) ?
"<tr class='$cls'><td>></td><td colspan=3>$elem03 $elem04a ($elem06)</td></tr>".PHP_EOL
: "";
330 if ( strncmp('HCR'.$de, $seg, 4) === 0 ) {
332 $sar = explode($de, $seg);
334 $elem01 = (isset($sar[1]) && $sar[1]) ?
$cd27x->get_271_code('HCR01', $sar[1]) : '';
335 $elem02 = (isset($sar[2]) && $sar[2]) ?
"<em>Reference: </em>".$sar[2] : '';
336 $elem03 = (isset($sar[3]) && $sar[3]) ?
$cd27x->get_271_code('HCR03', $sar[3]) : '';
337 $elem04 = (isset($sar[4]) && $sar[4]) ?
$cd27x->get_271_code('HCR04', $sar[4]) : ''; {
338 $elem04 = ($elem04) ?
"<em>2nd Surgical Opinion:</em> $elem04" : "";
341 if ($loopid == '2000E' ) {
342 $evt_html .= "<tr class='$cls'><td>></td><td colspan=3>$elem01 $elem02</td></tr>".PHP_EOL
;
343 $evt_html .= "<tr class='$cls'><td>></td><td colspan=3>$elem03</td></tr>".PHP_EOL
;
344 $evt_html .= ($elem04) ?
"<tr class='$cls'><td>></td><td colspan=3>$elem04</td></tr>".PHP_EOL
: "";
345 } elseif ($loopid == '2000F' ) {
346 $svc_html .= "<tr class='$cls'><td>></td><td colspan=3>$elem01 $elem02</td></tr>".PHP_EOL
;
347 $svc_html .= "<tr class='$cls'><td>></td><td colspan=3>$elem03</td></tr>".PHP_EOL
;
348 $svc_html .= ($elem04) ?
"<tr class='$cls'><td>></td><td colspan=3>$elem04</td></tr>".PHP_EOL
: "";
354 if ( strncmp('REF'.$de, $seg, 4) === 0 ) {
356 $sar = explode($de, $seg);
358 $elem01 = (isset($sar[1])) ?
$cd27x->get_271_code('REF', $sar[1]) : '';
359 $elem02 = (isset($sar[2])) ?
$sar[2] : '';
360 $elem03 = (isset($sar[3])) ?
$sar[2] : '';
362 if ($loopid == '2010B' ) {
363 $rcv_html .= "<tr class='$cls'><td>></td><td colspan=2><em>$elem01</em> $elem02</td><td>$elem03</td></tr>".PHP_EOL
;
364 } elseif ($loopid == '2010C' ) {
365 $sbr_nm1_html .= "<tr class='$cls'><td>></td><td colspan=2><em>$elem01</em> $elem02</td><td>$elem03</td></tr>".PHP_EOL
;
366 } elseif ($loopid == '2010D' ) {
367 $dep_nm1_html .= "<tr class='$cls'><td>></td><td colspan=2><em>$elem01</em> $elem02</td><td>$elem03</td></tr>".PHP_EOL
;
368 } elseif ($loopid == '2000E' ) {
369 $evt_html .= "<tr class='$cls'><td>></td><td colspan=2><em>$elem01</em> $elem02</td><td>$elem03</td></tr>".PHP_EOL
;
370 } elseif ($loopid == '2010E' ) {
371 $evt_html .= "<tr class='$cls'><td>></td><td colspan=2><em>$elem01</em> $elem02</td><td>$elem03</td></tr>".PHP_EOL
;
372 } elseif ($loopid == '2000F' ) {
373 $svc_html .= "<tr class='$cls'><td>></td><td colspan=2><em>$elem01</em> $elem02</td><td>$elem03</td></tr>".PHP_EOL
;
374 }elseif ($loopid == '2010FA' ) {
375 $svc_html .= "<tr class='$cls'><td>></td><td colspan=2><em>$elem01</em> $elem02</td><td>$elem03</td></tr>".PHP_EOL
;
381 if ( strncmp('DMG'.$de, $seg, 4) === 0 ) {
382 $sar = explode($de, $seg);
383 $elem02 = (isset($sar[2]) && $sar[2]) ?
edih_format_date($sar[2]) : "";
384 if (isset($sar[3]) && $sar[3]) {
385 if ($sar[3] == 'M') {
387 } elseif ($sar[3] == 'F') {
393 if ($loopid == '2010C') {
394 $sbr_nm1_html .= "<tr class='$cls'><td>></td><td>$elem03</td><td colspan=2><em>Date of Birth</em> $elem02</td></tr>" .PHP_EOL
;
395 } elseif ($loopid == '2010D') {
396 $dep_nm1_html .= "<tr class='$cls'><td>></td><td>$elem03</td><td colspan=2><em>Date of Birth</em> $elem02</td></tr>" .PHP_EOL
;
401 if ( strncmp('INS'.$de, $seg, 4) === 0 ) {
402 $sar = explode($de, $seg);
403 $elem01 = (isset($sar[1]) && $sar[1] == 'Y') ?
"Subscriber" : "Dependent";
404 $elem02 = (isset($sar[2]) && $sar[2]) ?
$cd27x->get_271_code('INS02', $sar[2]) : "";
405 $elem03 = (isset($sar[3]) && $sar[3]) ?
$sar[3] : "";
406 $elem04 = (isset($sar[4]) && $sar[4] == '25') ?
"<b>Information changed</b>" : "";
407 $elem17 = (isset($sar[17]) && $sar[17]) ?
$sar[17] : "";
409 if ($loopid == '2010C') {
410 $sbr_nm1_html .= "<tr class='$cls'><td>></td><td>$elem01 $elem17</td><td>$elem02</td><td>$elem03 $elem04</td></tr>" .PHP_EOL
;
411 } elseif ($loopid == '2010D') {
412 $dep_nm1_html .= "<tr class='$cls'><td>></td><td>$elem01 $elem17</td><td>$elem02</td><td>$elem03 $elem04</td></tr>" .PHP_EOL
;
417 if ( strncmp('DTP'.$de, $seg, 4) === 0 ) {
419 $sar = explode($de, $seg);
421 $elem01 = (isset($sar[1])) ?
$sar[1] : '';
422 $elem02 = (isset($sar[2])) ?
$sar[2] : '';
423 $elem03 = (isset($sar[3])) ?
$sar[3] : '';
425 $idtype = ($elem01) ?
$cd27x->get_271_code('DTP', $elem01) : "";
426 if ( $elem02 == 'D8' && $elem03) {
427 $var = edih_format_date($elem03);
428 } elseif ( $elem02 == 'RD8' && $elem03) {
429 $var = edih_format_date( substr($elem03, 0, 8) );
430 $var .= ' - '.edih_format_date( substr($elem03, -8) );
432 if ($loopid == '2000E') {
433 $evt_html .= "<tr class='$cls'><td>></td><td>$idtype</td><td colspan=2>$var</td></tr>" .PHP_EOL
;
434 } elseif ($loopid == '2000F') {
435 $svc_html .= "<tr class='$cls'><td>></td><td>$idtype</td><td colspan=2>$var</td></tr>" .PHP_EOL
;
440 if ( strncmp('HI'.$de, $seg, 3) === 0 ) {
441 // This is the Health Care Information Codes segment
442 // -- to give all information in the segment, we need to
443 // lookup all the code values ICD-9, ICD-10, LOINC, DRG, etc.
444 // -- At this time, give the code source and code, with dates if any
446 $sar = explode($de, $seg);
450 foreach($sar as $hi) {
451 if ( strpos($hi, $ds) ) {
452 $a = explode($ds, $hi);
453 $hi_str .= (isset($a[0]) && $a[0]) ?
$cd27x->get_271_code('HI01', $a[0]) : "";
454 $hi_str .= (isset($a[1]) && $a[1]) ?
'[ '.$a[1].' ]' : '[]';
455 if (isset($a[2]) && isset($a[3]) ) {
456 $hi_str .= ($a[2] == 'D8') ?
' '.edih_format_date($a[3]) : '';
457 $hi_str .= ($a[2] == 'RD8') ?
edih_format_date( substr($a[3], 0, 8) ) : "";
458 $hi_str .= ($a[2] == 'RD8') ?
edih_format_date( substr($a[3], -8) ) : "";
463 $tr_str .= "<tr class='$cls'><td><em>Codes</em></td><td colspan=3>$hi_str</td></tr>".PHP_EOL
;
466 if ($loopid == '2000E') {
467 $evt_html .= $tr_str;
468 } elseif ($loopid == '2000F') {
469 $svc_html .= $tr_str;
475 if ( strncmp('HSD'.$de, $seg, 4) === 0 ) {
476 // Health Care Services Delivery
477 $sar = explode($de, $seg);
479 $id = "Services Delivery";
481 $elem01 = (isset($sar[1]) && $sar[1]) ?
$cd27x->get_271_code('HSD01', $sar[1]) : ''; // quantity qualifier
482 $elem02 = (isset($sar[2]) && $sar[2]) ?
$sar[2] : ''; // numeric quantity
483 $elem03 = (isset($sar[3]) && $sar[3]) ?
$cd27x->get_271_code('HSD01', $sar[3]) : ''; // measurement unit
484 $elem04 = (isset($sar[4]) && $sar[4]) ?
$sar[4] : ''; // sample selection modulus
485 $elem05 = (isset($sar[5]) && $sar[5]) ?
$cd27x->get_271_code('EB06', $sar[5]) : ''; // time period qualifier
486 $elem06 = (isset($sar[6]) && $sar[6]) ?
$sar[6] : ''; // number of periods
487 $elem07 = (isset($sar[7]) && $sar[7]) ?
$cd27x->get_271_code('HSD07', $sar[7]) : ''; // delivery
488 $elem08 = (isset($sar[8]) && $sar[8]) ?
$cd27x->get_271_code('HSD08', $sar[8]) : ''; // delivery
490 if ( ($elem01 ||
$elem02) && !$elem08 ) {
491 $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
: "";
492 $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
: "";
493 $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
: "";
494 $tr_str .= ($elem03 && !$elem04 && !$elem06) ?
"<tr class='$cls'><td><em>$id</em></td><td colspan=3>$elem02 $elem01 $elem07</td></tr>".PHP_EOL
: "";
496 $tr_str .= "<tr class='$cls'><td><em>$id</em></td><td colspan=3>$elem02 $elem01 $elem07 $elem08</td></tr>" .PHP_EOL
;
499 if ($loopid == '2000E') {
500 $evt_html .= $tr_str;
501 } elseif ($loopid == '2000F') {
502 $svc_html .= $tr_str;
507 if ( strncmp('CRC'.$de, $seg, 4) === 0 ) {
509 $sar = explode($de, $seg);
511 $elem01 = (isset($sar[1]) && $sar[1]) ?
$cd27x->get_271_code('CRC01', $sar[1]) : ''; // certification type code
512 $elem02 = (isset($sar[2]) && $sar[2]) ?
$cd27x->get_271_code('HCR04', $sar[2]) : ''; // condition indicater
513 $elem03 = (isset($sar[3]) && $sar[3]) ?
$cd27x->get_271_code('CRC03', $sar[3]) : ''; // condition descripter
514 $elem04 = (isset($sar[4]) && $sar[4]) ?
$cd27x->get_271_code('CRC03', $sar[4]) : ''; // condition descripter
515 $elem05 = (isset($sar[5]) && $sar[5]) ?
$cd27x->get_271_code('CRC03', $sar[5]) : ''; // condition descripter
516 $elem06 = (isset($sar[6]) && $sar[6]) ?
$cd27x->get_271_code('CRC03', $sar[6]) : ''; // condition descripter
517 $elem07 = (isset($sar[7]) && $sar[7]) ?
$cd27x->get_271_code('CRC03', $sar[7]) : ''; // condition descripter
519 $evt_html .= ($elem01) ?
"<tr class='$cls'><td><em>$elem01</em></td><td colspan=3><em>Conditions Apply:</em> $elem02</td></tr>".PHP_EOL
: "";
520 $evt_html .= ($elem03) ?
"<tr class='$cls'><td>></td><td colspan=3>$elem03</td></tr>".PHP_EOL
: "";
521 $evt_html .= ($elem04) ?
"<tr class='$cls'><td>></td><td colspan=3>$elem04</td></tr>".PHP_EOL
: "";
522 $evt_html .= ($elem05) ?
"<tr class='$cls'><td>></td><td colspan=3>$elem05</td></tr>".PHP_EOL
: "";
523 $evt_html .= ($elem06) ?
"<tr class='$cls'><td>></td><td colspan=3>$elem06</td></tr>".PHP_EOL
: "";
524 $evt_html .= ($elem07) ?
"<tr class='$cls'><td>></td><td colspan=3>$elem07</td></tr>".PHP_EOL
: "";
529 if ( strncmp('CL1'.$de, $seg, 4) === 0 ) {
531 $sar = explode($de, $seg);
534 $elem01 = (isset($sar[1]) && $sar[1]) ?
$cd27x->get_271_code('CL101', $sar[1]) : ''; // admission type code
535 $elem02 = (isset($sar[2]) && $sar[2]) ?
$cd27x->get_271_code('CL102', $sar[2]) : ''; // admission source code
536 $elem03 = (isset($sar[3]) && $sar[3]) ?
$cd27x->get_271_code('CL103', $sar[3]) : ''; // patient status code
538 $tr_str .= "<tr class='$cls'><td><em>Hospital</em> </td><td colspan=3>$elem01 $elem02</td></tr>".PHP_EOL
;
539 $tr_str .= ($elem03) ?
"<tr class='$cls'><td>></td><td colspan=3>$elem03</td></tr>".PHP_EOL
: "";
541 if ($loopid == '2000E') {
542 $evt_html .= $tr_str;
543 } elseif ($loopid == '2000F') {
544 $svc_html .= $tr_str;
549 if ( strncmp('CR1'.$de, $seg, 4) === 0 ) {
551 $sar = explode($de, $seg);
553 $elem03 = (isset($sar[3]) && $sar[3]) ?
$cd27x->get_271_code('CR103', $sar[3]) : ''; // ambulance transit code
554 if ( isset($sar[5]) ) {
555 if ($sar[5] == 'DH') {
557 } elseif ($sar[5] == 'DK') {
558 $elem05 = "kilometers";
565 $elem06 = (isset($sar[6])) ?
$sar[6] : "";
567 $evt_html .= "<tr class='$cls'><td><em>Ambulance:</em></td><td colspan=3>$elem03 $elem06 $elem05</td></tr>".PHP_EOL
;
572 if ( strncmp('CR2'.$de, $seg, 4) === 0 ) {
573 // spinal manipulation
574 $sar = explode($de, $seg);
576 $elem01 = (isset($sar[1]) && $sar[1]) ?
$sar[1] : "";
577 $elem02 = (isset($sar[2]) && $sar[2]) ?
$sar[2] : "";
578 $elem03 = (isset($sar[3]) && $sar[3]) ?
$cd27x->get_271_code('CR203', $sar[3]) : ""; // spinal code
579 $elem04 = (isset($sar[4]) && $sar[4]) ?
$cd27x->get_271_code('CR203', $sar[4]) : ""; // spinal code
580 $elem04 = ($elem04) ?
"-- ".$elem04 : "";
581 // elem05 -- elem12 not used
583 $evt_html .= "<tr class='$cls'><td><em>Spinal:</em></td><td colspan=3> $elem01 $elem02 $elem03 $elem04</td></tr>".PHP_EOL
;
588 if ( strncmp('CR5'.$de, $seg, 4) === 0 ) {
590 $sar = explode($de, $seg);
593 $elem03 = (isset($sar[3]) && $sar[3]) ?
$cd27x->get_271_code('CR503', $sar[3]) : ""; // oxygen code
594 $elem04 = (isset($sar[4]) && $sar[4]) ?
$cd27x->get_271_code('CR503', $sar[4]) : ""; // oxygen code
595 $elem06 = (isset($sar[6]) && $sar[6]) ?
"Flow (lpm): ".$sar[6] : "";
596 $elem07 = (isset($sar[7]) && $sar[7]) ?
"Times/day: ".$sar[7] : "";
597 $elem08 = (isset($sar[8]) && $sar[8]) ?
"Hours: ".$sar[8] : "";
598 $elem09 = (isset($sar[9]) && $sar[9]) ?
$sar[9] : "";
599 $elem16 = (isset($sar[16]) && $sar[16]) ?
"Flow (lpm): ".$sar[16] : "";
600 $elem17 = (isset($sar[17]) && $sar[17]) ?
$cd27x->get_271_code('CR517', $sar[17]) : "";
601 $elem18 = (isset($sar[18]) && $sar[18]) ?
$cd27x->get_271_code('CR503', $sar[18]) : "";
603 $title = "Descriptors and Rates/times per edi guide. <b>Do not rely on these!</b>".PHP_EOL
;
604 $t2 = "Descriptors per edi companion guide. <b>Do not rely on these!</b>".PHP_EOL
;
606 $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
;
607 $tr_str .= "<tr class='$cls'><td>></td><td colspan=3>$title</td></tr>".PHP_EOL
;
608 $tr_str .= ($elem03 ||
$elem04 ) ?
"<tr class='$cls'><td>></td><td colspan=3 title='$t2'><em>Equipment Type: </em>$elem03 $elem04</td></tr>".PHP_EOL
: "";
609 $tr_str .= ($elem06 ||
$elem07 ||
$elem08) ?
"<tr class='$cls'><td>></td><td colspan=3 title='$title'>$elem06 $elem07 $elem08</td></tr>".PHP_EOL
: "";
610 $tr_str .= ($elem09) ?
"<tr class='$cls'><td>></td><td colspan=3><em>Therapist: </em>$elem09</td></tr>".PHP_EOL
: "";
611 $tr_str .= ($elem16) ?
"<tr class='$cls'><td>></td><td colspan=3 title='$title'>$elem16</td></tr>".PHP_EOL
: "";
612 $tr_str .= ($elem17) ?
"<tr class='$cls'><td>></td><td colspan=3 title='$t2'><em>Delivery: </em>$elem17</td></tr>".PHP_EOL
: "";
613 $tr_str .= ($elem18) ?
"<tr class='$cls'><td>></td><td colspan=3 title='$t2'><em>Equipment Type: </em>$elem18</td></tr>".PHP_EOL
: "";
615 $evt_html .= $tr_str;
620 if ( strncmp('CR6'.$de, $seg, 4) === 0 ) {
622 $sar = explode($de, $seg);
624 $elem01 = (isset($sar[1]) && $sar[1]) ?
$cd27x->get_271_code('UM07', $sar[1]) : ""; // patient condition code
625 $elem02 = (isset($sar[2]) && $sar[2]) ?
edih_format_date($sar[2]) : ""; // HH start date
626 $elem03 = (isset($sar[3]) && $sar[3]) ?
$sar[3] : "";
627 $elem04 = (isset($sar[4]) && $sar[4]) ?
$sar[4] : "";
628 if ( $elem03 == 'D8' && $elem04) {
629 $elem04 = edih_format_date($elem04);
630 } elseif ( $elem03 == 'RD8' && $elem04) {
631 $var = edih_format_date( substr($dtp03, 0, 8) );
632 $elem04 = $var.' - '.edih_format_date( substr($elem04, -8) );
634 $elem07 = (isset($sar[7]) && $sar[7]) ?
$cd27x->get_271_code('HCR04', $sar[8]) : "";
635 $elem08 = (isset($sar[8]) && $sar[8]) ?
$cd27x->get_271_code('CR608', $sar[8]) : ""; // certification type code
637 $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
;
638 $evt_html .= ($elem03 ||
$elem04) ?
"<tr class='$cls'><td>></td><td colspan=2><em>Period</em> $elem04</td><td>(MCR) $elem07</td></tr>".PHP_EOL
: "";
639 $evt_html .= ($elem08) ?
"<tr class='$cls'><td>></td><td colspan=2><em>Period</em> $elem08</td><td>(MCR) $elem05</td></tr>".PHP_EOL
: "";
644 if ( strncmp('PWK'.$de, $seg, 4) === 0 ) {
646 $sar = explode($de, $seg);
650 $elem01 = (isset($sar[1]) && $sar[1]) ?
$cd27x->get_271_code('PWK01', $sar[1]) : ""; // paperwork code
651 $elem02 = (isset($sar[2]) && $sar[2]) ?
$cd27x->get_271_code('PWK02', $sar[2]) : ""; // delivery code
652 $elem05 = (isset($sar[5]) && $sar[5] == 'AC') ?
"Attachment Control Number" : "";
653 $elem06 = (isset($sar[6]) && $sar[6]) ?
$sar[6] : "";
654 $elem07 = (isset($sar[7]) && $sar[7]) ?
$sar[7] : "";
656 $tr_str .= "<tr class='$cls'><td><em>Paperwork</em></td><td colspan=3>$elem01 $elem02</td></tr>".PHP_EOL
;
657 $tr_str .= ($elem05) ?
"<tr class='$cls'><td>></td><td colspan=3>$elem05 $elem06</td></tr>".PHP_EOL
: "";
658 $tr_str .= ($elem07) ?
"<tr class='$cls'><td>></td><td colspan=3>$elem07</td></tr>".PHP_EOL
: "";
660 if ($loopid == '2000E') {
661 $evt_html .= $tr_str;
662 } elseif ($loopid == '2000F') {
663 $svc_html .= $tr_str;
668 if ( strncmp('MSG'.$de, $seg, 4) === 0 ) {
670 $sar = explode($de, $seg);
672 $elem01 = (isset($sar[1]) && $sar[1]) ?
$sar[1] : "";
674 if ($loopid == '2000E') {
675 $evt_html .= ($elem01) ?
"<tr class='$cls'><td><em>Message</em></td><td colspan=3>$elem01</td></tr>".PHP_EOL
: "";
676 } elseif ($loopid == '2000F') {
677 $svc_html .= ($elem01) ?
"<tr class='$cls'><td><em>Message</em></td><td colspan=3>$elem01</td></tr>".PHP_EOL
: "";
682 if ( strncmp('SV1'.$de, $seg, 4) === 0 ) {
683 // professional services
684 $sar = explode($de, $seg);
688 if ( isset($sar[1]) && strpos($sar[1], $ds ) ) {
689 $ar01 = explode($ds, $sar[1]);
691 $elem01 = (isset($ar01[0]) && $ar01[0]) ?
$cd27x->get_271_code('SV101', $ar01[0]) : "";
695 $elem01 .= " ".$ar01[1]." -- ".$ar01[8];
697 $elem01 .= " ".$ar01[1];
700 if ($elem01 && $ct > 2) {
701 for ($i=2; $i<$ct; $i++
) { $elem01 .= ' '.$ar01[$i]; }
703 } elseif (isset($sar[1]) && $sar[1]) {
706 $elem02 = (isset($sar[2]) && $sar[2]) ?
edih_format_money($sar[2]) : "";
707 $elem03 = (isset($sar[3]) && $sar[3]) ?
$cd27x->get_271_code('SV103', $sar[3]) : "";
708 $elem04 = (isset($sar[4]) && $sar[4]) ?
$sar[4] : "";
709 $elem11 = (isset($sar[11]) && $sar[11]) ?
$cd27x->get_271_code('HCR04', $sar[11]) : "";
710 $elem20 = (isset($sar[20]) && $sar[20]) ?
$cd27x->get_271_code('SV120', $sar[20]) : "";
712 $elem11 = ($elem11) ?
"<em>EPSDT</em> ".$elem11 : "";
714 $svc_html .= ($elem01) ?
"<tr class='$cls'><td><em>Professional Svc</em></td><td colspan=3>$elem01 $elem02</td></tr>".PHP_EOL
: "";
715 $svc_html .= ($elem03 ||
$elem04 ||
$elem11) ?
"<tr class='$cls'><td>></td><td colspan=3>$elem03 $elem04 $elem11</td></tr>".PHP_EOL
: "";
716 $svc_html .= ($elem20) ?
"<tr class='$cls'><td>></td><td colspan=3>$elem20</td></tr>".PHP_EOL
: "";
721 if ( strncmp('SV2'.$de, $seg, 4) === 0 ) {
723 $sar = explode($de, $seg);
727 if ( isset($sar[1]) && strpos($sar[1], $ds ) ) {
728 $ar01 = explode($ds, $sar[1]);
730 $elem01 = (isset($ar01[0]) && $ar01[0]) ?
$cd27x->get_271_code('SV101', $ar01[0]) : "";
734 $elem01 .= " ".$ar01[1]." -- ".$ar01[8];
736 $elem01 .= " ".$ar01[1];
739 if ($elem01 && count($ar01) > 2) {
740 for ($i=2; $i<$ct; $i++
) { $elem01 .= ' '.$ar01[$i]; }
742 } elseif (isset($sar[1]) && $sar[1]) {
745 $elem02 = (isset($sar[2]) && $sar[2]) ?
edih_format_money($sar[2]) : "";
746 $elem03 = (isset($sar[3]) && $sar[3]) ?
$cd27x->get_271_code('SV103', $ar01[3]) : "";
747 $elem04 = (isset($sar[4]) && $sar[4]) ?
$sar[4] : "";
748 $elem05 = (isset($sar[5]) && $sar[5]) ?
$sar[5] : "";
749 $elem06 = (isset($sar[6]) && $sar[6]) ?
edih_format_money($sar[6]) : "";
750 $elem10 = (isset($sar[20]) && $sar[20]) ?
$cd27x->get_271_code('SV120', $ar01[20]) : "";
752 $svc_html .= ($elem01) ?
"<tr class='$cls'><td><em>Inst Service</em></td><td colspan=3>$elem01 $elem02</td></tr>".PHP_EOL
: "";
753 $svc_html .= ($elem03 ||
$elem04) ?
"<tr class='$cls'><td>></td><td colspan=3>$elem03 $elem04 $elem05 $elem06</td></tr>".PHP_EOL
: "";
754 $svc_html .= ($elem10) ?
"<tr class='$cls'><td>></td><td colspan=3>$elem10</td></tr>".PHP_EOL
: "";
760 $str_html .= $hdr_html;
761 $str_html .= ($src_html) ?
$src_html : "";
762 $str_html .= ($rcv_html) ?
$rcv_html : "";
763 $str_html .= ($sbr_nm1_html) ?
$sbr_nm1_html : "";
764 $str_html .= ($dep_nm1_html) ?
$dep_nm1_html : "";
765 $str_html .= ($evt_html) ?
$evt_html : "";
766 $str_html .= ($svc_html) ?
$svc_html : "";
767 $str_html .= "<tr><td colspan=4> </td></tr>".PHP_EOL
;
768 $str_html .= "</tbody>".PHP_EOL
."</table>".PHP_EOL
;
775 * create a display for an individual authorization response
777 * @uses csv_check_x12_obj()
778 * @uses edih_278_transaction_html
780 * @param string $filename the filename
781 * @param string $bht03 identifier from 837 CLM or27 BHT segment
783 * @return string either an error message or an html table
785 function edih_278_html($filename, $bht03='' ) {
786 // create a display for an individual 277 response
790 csv_edihist_log ("edih_278_html: called with no file arguments");
791 $html_str .= "Error, no file given<br />".PHP_EOL
;
794 $obj278 = csv_check_x12_obj($filename, 'f278');
795 if ($obj278 && 'edih_x12_file' == get_class($obj278) ) {
797 // particular transaction
798 $html_str .= edih_278_transaction_html($obj278, $bht03);
801 $env_ar = $obj278->edih_envelopes();
802 if (!isset($env_ar['ST'])) {
803 $html_str .= "<p>edih_278_html: file parse error, envelope error</p>".PHP_EOL
;
804 $html_str .= $obj278->edih_message();
807 $html_str .= "<div id='accordion'>".PHP_EOL
;
809 foreach($env_ar['ST'] as $st) {
810 foreach($env_ar['GS'] as $gs){
811 if ($gs['icn'] != $st['icn']) { continue; }
812 if ($gs['gsn'] == $st['gsn']) {
813 $gs_date = edih_format_date($gs['date']);
814 $gs_sender = $gs['sender'];
819 // get each transaction
820 foreach($st['bht03'] as $bht) {
821 $html_str .= "<h3>$bht Services Review</h3>".PHP_EOL
;
822 $html_str .= "<div id='ac_$bht'>".PHP_EOL
;
824 $html_str .= edih_278_transaction_html($obj278, $bht);
826 $html_str .= "</div>".PHP_EOL
;
828 $html_str .= "</div>".PHP_EOL
;
832 csv_edihist_log("edih_278_html: error in retreiving file object");
833 $html_str .= "<p>x12 278 file parse error</p>".PHP_EOL
;