fix: set default x12 partner for item in billing manager (#7513)
[openemr.git] / library / edihistory / edih_278_html.php
blob2383efe7a58ddbb69174e67a89cf303d45019426
1 <?php
3 /*
4 * test_278_parse.php
6 * Copyright 2016 Kevin McCormick <kevin@kt61p>
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
21 * MA 02110-1301, USA.
27 //require_once("$srcdir/edihistory/codes/edih_271_code_class.php");
30 * HTML display of x12 278 file
31 * SV3 and TOO segments (Dental) are ignored
33 * @uses edih_271_codes()
35 * @param object edih_x12_file
36 * $param string BHT03 value to identify transaction
37 * @return string
39 function edih_278_transaction_html($obj278, $bht03)
42 $trans = $obj278->edih_x12_transaction($bht03);
43 if (empty($trans)) {
44 $str_html = $obj278->edih_message();
45 return $str_html;
48 $de = $obj278->edih_delimiters()['e'];
49 $ds = $obj278->edih_delimiters()['s'];
50 $dr = $obj278->edih_delimiters()['r'];
51 $fn = $obj278->edih_filename();
53 $cd27x = new edih_271_codes($ds, $dr);
55 $cls = '';
56 $capstr = 'Services Review (Cert/Auth)';
58 $hdr_html = "<table class='h278' columns=4><caption>" . text($capstr) . "</caption>";
59 $hdr_html .= "<thead><tr><th>Reference</th><th>Information</th><th colspan=2>" . text($fn) . "</th></tr></thead>" . PHP_EOL;
60 $hdr_html .= "<tbody>" . PHP_EOL;
61 $str_html = "";
62 $src_html = "";
63 $rcv_html = "";
64 $sbr_nm1_html = "";
65 $dep_nm1_html = "";
66 $evt_html = "";
67 $svc_html = "";
69 $trns_ct = count($trans);
70 for ($i = 0; $i < $trns_ct; $i++) {
71 foreach ($trans[$i] as $seg) {
73 $idtype = '';
74 $name = '';
75 $var = '';
76 $rej_reason = '';
77 $follow = '';
78 $addr = '';
79 // debug
81 if (strncmp('BHT' . $de, $seg, 4) === 0) {
82 $loopid = 'Heading';
83 $sar = explode($de, $seg);
84 $elem01 = ($sar[1] == '0007') ? "Src, Rcvr, Sbr, Dep, Evt, Svc" : "Not determined";
86 $elem02 = ( isset($sar[2]) && $sar[2] !== false) ? $cd27x->get_271_code('BHT02', $sar[2]) : "";
88 $elem03 = (isset($sar[3]) ) ? $sar[3] : '';
89 $elem04 = (isset($sar[4]) ) ? edih_format_date($sar[4]) : '';
91 $elem06 = (isset($sar[6]) && $sar[6]) ? $cd27x->get_271_code('BHT06', $sar[6]) : "";
93 $hdr_html .= "<tr><td colspan=2><em>Transaction ID:</em> " . text($elem03) . " </td><td colspan=2><em>Sequence:</em> " . text($elem01) . "</td></tr>" . PHP_EOL;
94 if ($elem06) {
95 $hdr_html .= "<tr><td colspan=2><em>Transaction Date:</em> " . text($elem04) . " </td><td colspan=2>" . text($elem02) . " <em>Type:</em> " . text($elem06) . "</td></tr>" . PHP_EOL;
96 } else {
97 $hdr_html .= "<tr><td colspan=2><em>Transaction Date:</em> " . text($elem04) . " </td><td colspan=2><em>Type:</em> " . text($elem02) . "</td></tr>" . PHP_EOL;
101 continue;
104 //'src''rcv'sbr''dep''evt''svc''
105 if (strncmp($seg, 'HL' . $de, 3) === 0) {
106 $sar = explode($de, $seg);
107 $hl = $sar[1];
108 $hlpc = $sar[2]; // parent code
109 $hllc = $sar[3];
110 $hlcc = (isset($sar[4])) ? $sar[4] : ''; // child code
111 if ($sar[3] == '20') { // level code
112 $loopid = '2000A';
113 $cls = 'src'; // info source (payer)
114 $src_html .= "<tr class='" . attr($cls) . "'><td colspan=4><b>Information Source</b></td></tr>" . PHP_EOL;
115 } elseif ($sar[3] == '21') {
116 $loopid = '2000B';
117 $cls = 'rcv'; // info receiver (clinic)
118 $rcv_html .= "<tr class='" . attr($cls) . "'><td colspan=4><b>Information Receiver</b></td></tr>" . PHP_EOL;
119 } elseif ($sar[3] == '22') {
120 $loopid = '2000C'; // subscriber
121 $cls = 'sbr';
122 $sbr_nm1_html .= "<tr class='" . attr($cls) . "'><td colspan=4><b>Subscriber</b></td></tr>" . PHP_EOL;
123 } elseif ($sar[3] == '23') {
124 $loopid = '2000D'; // dependent
125 $cls = 'dep';
126 $dep_nm1_html .= "<tr class='" . attr($cls) . "'><td colspan=4><b>Dependent</b></td></tr>" . PHP_EOL;
127 } elseif ($sar[3] == 'EV') {
128 $loopid = '2000E'; // patient event
129 $cls = 'evt';
130 $evt_html .= "<tr class='" . attr($cls) . "'><td colspan=4><b>Patient Event</b></td></tr>" . PHP_EOL;
131 } elseif ($sar[3] == 'SS') {
132 $loopid = '2000F'; // service
133 $cls = 'svc';
134 $svc_html .= "<tr class='" . attr($cls) . "'><td colspan=4><b>Service</b></td></tr>" . PHP_EOL;
138 continue;
141 if (strncmp('NM1' . $de, $seg, 4) === 0) {
142 $sar = explode($de, $seg);
144 $nm101 = ( isset($sar[1]) ) ? $sar[1] : '';
145 $descr = ($nm101) ? $cd27x->get_271_code('NM101', $nm101) : "";
147 $name = (isset($sar[3]) && $sar[3] ) ? $sar[3] : "";
148 $name .= (isset($sar[7]) && $sar[7]) ? " {$sar[7]}" : "";
149 $name .= (isset($sar[4]) && $sar[4]) ? ", {$sar[4]}" : "";
150 $name .= (isset($sar[5]) && $sar[5]) ? " {$sar[5]}" : "";
151 $nm109 = (isset($sar[9]) && $sar[9]) ? $sar[9] : "";
153 $idtype = (isset($sar[8]) && $sar[8] ) ? $cd27x->get_271_code('NM108', $sar[8]) : "";
155 if ($loopid == '2000A') {
156 $src_html .= "<tr class='" . attr($cls) . "'><td title='" . attr($idtype) . "'>" . text($nm109) . "</td><td colspan=3 title='" . attr($descr) . "'>" . text($name) . "</td></tr>" . PHP_EOL;
157 $loopid = '2010A';
158 } elseif ($loopid == '2000B') {
159 $rcv_html .= "<tr class='" . attr($cls) . "'><td title='" . attr($idtype) . "'>" . text($nm109) . "</td><td colspan=3 title='" . attr($descr) . "'>" . text($name) . "</td></tr>" . PHP_EOL;
160 $loopid = '2010B';
161 } elseif ($loopid == '2000C') {
162 $sbr_nm1_html .= "<tr class='" . attr($cls) . "'><td title='" . attr($idtype) . "'>" . text($nm109) . "</td><td colspan=3 title='" . attr($descr) . "'>" . text($name) . "</td></tr>" . PHP_EOL;
163 $loopid = '2010C';
164 } elseif ($loopid == '2000D') {
165 $dep_nm1_html .= "<tr class='" . attr($cls) . "'><td title='" . attr($idtype) . "'>" . text($nm109) . "</td><td colspan=3 title='" . attr($descr) . "'>" . text($name) . "</td></tr>" . PHP_EOL;
166 $loopid = '2010D';
167 } elseif ($loopid == '2000E' || strpos($loopid, '010E')) {
168 $loopid = (strpos('|71|72|73|77|AAJ|DD|DK|DN|FA|G3|P3|QB|QV|SJ', $nm101) ) ? '2010EA' : $loopid;
169 $loopid = (strpos('|45|FS|ND|PW|R3', $nm101) ) ? '2010EB' : $loopid;
170 $loopid = ($nm101 == 'L5') ? '2010EC' : $loopid;
171 $evt_html .= "<tr class='" . attr($cls) . "'><td title='" . attr($idtype) . "'>" . text($nm109) . "</td><td colspan=3 title='" . attr($descr) . "'>" . text($descr . " " . $name) . "</td></tr>" . PHP_EOL;
172 } elseif ($loopid == '2000F' || strpos($loopid, '010F')) {
173 $loopid = (strpos('|71|72|73|77|AAJ|DD|DK|DN|FA|G3|P3|QB|QV|SJ', $nm101) ) ? '2010FA' : $loopid;
174 $loopid = ($nm101 == 'L5') ? '2010FB' : $loopid;
175 $svc_html .= "<tr class='" . attr($cls) . "'><td title='" . attr($idtype) . "'>" . text($nm109) . "</td><td colspan=3 title='" . attr($descr) . "'>" . text($descr . " " . $name) . "</td></tr>" . PHP_EOL;
179 continue;
183 if (strncmp('N3' . $de, $seg, 3) === 0) {
184 $sar = explode($de, $seg);
185 $addr = (isset($sar[1])) ? $sar[1] : "";
186 $addr .= (isset($sar[2])) ? " {$sar[2]}" : "";
188 if ($loopid == '2010B') {
189 $rcv_html .= "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3>" . text($addr) . "</td></tr>" . PHP_EOL;
190 } elseif ($loopid == '2010C') {
191 $sbr_nm1_html .= "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3>" . text($addr) . "</td></tr>" . PHP_EOL;
192 } elseif ($loopid == '2010D') {
193 $dep_nm1_html .= "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3>" . text($addr) . "</td></tr>" . PHP_EOL;
194 } elseif ($loopid == '2010EA' || $loopid == '2010EC') {
195 $evt_html .= "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3>" . text($addr) . "</td></tr>" . PHP_EOL;
196 } elseif ($loopid == '2010FA') {
197 $svc_html .= "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3>" . text($addr) . "</td></tr>" . PHP_EOL;
200 continue;
204 if (strncmp('N4' . $de, $seg, 3) === 0) {
205 $sar = explode($de, $seg);
206 if ($loopid == '2010B') {
207 $rcv_html .= "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3>" . text($sar[1] . " " . $sar[2] . " " . $sar[3]) . "</td></tr>" . PHP_EOL;
208 } elseif ($loopid == '2010C') {
209 $sbr_nm1_html .= "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3>" . text($sar[1] . " " . $sar[2] . " " . $sar[3]) . "</td></tr>" . PHP_EOL;
210 } elseif ($loopid == '2010D') {
211 $dep_nm1_html .= "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3>" . text($sar[1] . " " . $sar[2] . " " . $sar[3]) . "</td></tr>" . PHP_EOL;
212 } elseif ($loopid == '2010EA' || $loopid == '2010EC') {
213 $evt_html .= "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3>" . text($sar[1] . " " . $sar[2] . " " . $sar[3]) . "</td></tr>" . PHP_EOL;
214 } elseif ($loopid == '2010FA' || $loopid == '2010FB') {
215 $svc_html .= "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3>" . text($sar[1] . " " . $sar[2] . " " . $sar[3]) . "</td></tr>" . PHP_EOL;
218 continue;
221 // //
222 if (strncmp('PER' . $de, $seg, 4) === 0) {
223 $sar = explode($de, $seg);
224 $elem01 = (isset($sar[1])) ? $sar[1] : '';
225 $elem02 = (isset($sar[2])) ? $sar[2] : '';
226 $elem03 = (isset($sar[3])) ? $cd27x->get_271_code('PER03', $sar[3]) : "";
227 $elem04 = (isset($sar[4])) ? $sar[4] : '';
228 $elem05 = (isset($sar[5])) ? $cd27x->get_271_code('PER03', $sar[5]) : "";
229 $elem06 = (isset($sar[6])) ? $sar[6] : '';
230 $elem07 = (isset($sar[7])) ? $cd27x->get_271_code('PER03', $sar[7]) : "";
231 $elem08 = (isset($sar[8])) ? $sar[8] : '';
232 $elem09 = (isset($sar[9])) ? $sar[9] : '';
234 $idtype = ($sar[3]) ? $cd27x->get_271_code('PER03', $sar[3]) : "";
235 if ($loopid == '2010A') {
236 $src_html .= "<tr class='" . text($cls) . "'><td colspan=2>" . text($elem02) . "</td><td colspan=2 title='" . attr($elem03 . " " . $elem05 . " " . $elem07) . "'>" . text($elem04 . " " . $elem06 . " " . $elem08) . "</td></tr>" . PHP_EOL;
237 } elseif ($loopid == '2010B') {
238 $rcv_html .= "<tr class='" . attr($cls) . "'><td colspan=2>" . text($elem02) . "</td><td colspan=2 title='" . attr($elem03 . " " . $elem05 . " " . $elem07) . "'>" . text($elem04 . " " . $elem06 . " " . $elem08) . "</td></tr>" . PHP_EOL;
239 } elseif ($loopid == '2010EA') {
240 $evt_html .= "<tr class='" . attr($cls) . "'><td colspan=2>" . text($elem02) . "</td><td colspan=2 title='" . attr($elem03 . " " . $elem05 . " " . $elem07) . "'>" . text($elem04 . " " . $elem06 . " " . $elem08) . "</td></tr>" . PHP_EOL;
241 } elseif ($loopid == '2010FA') {
242 $svc_html .= "<tr class='" . attr($cls) . "'><td colspan=2>" . text($elem02) . "</td><td colspan=2 title='" . attr($elem03 . " " . $elem05 . " " . $elem07) . "'>" . text($elem04 . " " . $elem06 . " " . $elem08) . "</td></tr>" . PHP_EOL;
246 continue;
250 if (strncmp('AAA' . $de, $seg, 4) === 0) {
251 // rejection
252 $sar = explode($de, $seg);
253 $rej_reason = $cd27x->get_271_code('AAA03', $sar[3]);
254 $follow = $cd27x->get_271_code('AAA04', $sar[4]);
255 if ($loopid == '2000A') {
256 $src_html .= "<tr class='" . attr($cls) . "'><td><em><b>Rejection:</b></em></td><td colspan=3 title='" . attr($follow) . "'>" . text($rej_reason) . "</td></tr>" . PHP_EOL;
257 } elseif ($loopid == '2010A') {
258 $src_html .= "<tr class='" . attr($cls) . "'><td><em><b>Rejection:</b></em></td><td colspan=3 title='" . attr($follow) . "'>" . text($rej_reason) . "</td></tr>" . PHP_EOL;
259 } elseif ($loopid == '2000B') {
260 $rcv_html .= "<tr class='" . attr($cls) . "'><td><em><b>Rejection:</b></em></td><td colspan=3 title='" . attr($follow) . "'>" . text($rej_reason) . "</td></tr>" . PHP_EOL;
261 } elseif ($loopid == '2010B') {
262 $sbr_eb_html .= "<tr class='" . attr($cls) . "'><td><em><b>Rejection:</b></em></td><td colspan=3 title='" . attr($follow) . "'>" . text($rej_reason) . "</td></tr>" . PHP_EOL;
263 } elseif ($loopid == '2000C') {
264 $sbr_nm1_html .= "<tr class='" . attr($cls) . "'><td><em><b>Rejection:</b></em></td><td colspan=3 title='" . attr($follow) . "'>" . text($rej_reason) . "</td></tr>" . PHP_EOL;
265 } elseif ($loopid == '2010C') {
266 $sbr_eb_html .= "<tr class='" . attr($cls) . "'><td><em><b>Rejection:</b></em></td><td colspan=3 title='" . attr($follow) . "'>" . text($rej_reason) . "</td></tr>" . PHP_EOL;
267 } elseif ($loopid == '2000D') {
268 $dep_nm1_html .= "<tr class='" . attr($cls) . "'><td><em><b>Rejection:</b></em></td><td colspan=3 title='" . attr($follow) . "'>" . text($rej_reason) . "</td></tr>" . PHP_EOL;
269 } elseif ($loopid == '2010D') {
270 $dep_eb_html .= "<tr class='" . attr($cls) . "'><td><em><b>Rejection:</b></em></td><td colspan=3 title='" . attr($follow) . "'>" . text($rej_reason) . "</td></tr>" . PHP_EOL;
271 } elseif ($loopid == '2010EA' || $loopid == '2010EC') {
272 $evt_html .= "<tr class='" . attr($cls) . "'><td><em><b>Rejection:</b></em></td><td colspan=3 title='" . attr($follow) . "'>" . text($rej_reason) . "</td></tr>" . PHP_EOL;
273 } elseif ($loopid == '2010FA') {
274 $svc_html .= "<tr class='" . attr($cls) . "'><td><em><b>Rejection:</b></em></td><td colspan=3 title='" . attr($follow) . "'>" . text($rej_reason) . "</td></tr>" . PHP_EOL;
275 } else {
276 $hdr_html .= "<tr class='" . attr($cls) . "'><td>" . text($loopid) . " <em><b>Rejection:</b></em></td><td colspan=3 title='" . attr($follow) . "'>" . text($rej_reason) . "</td></tr>" . PHP_EOL;
279 continue;
283 if (strncmp('TRN' . $de, $seg, 4) === 0) {
284 // trace identifier
285 $sar = explode($de, $seg);
286 $elem01 = ( isset($sar[1]) ) ? $sar[1] : '';
287 $elem02 = ( isset($sar[2]) ) ? $sar[2] : '';
288 $elem03 = ( isset($sar[3]) ) ? $sar[3] : '';
289 $elem04 = ( isset($sar[4]) ) ? $sar[4] : '';
291 $trctp = ($elem01 == '2') ? 'Reference ' : 'Current ';
292 if ($loopid == '2000E') {
293 $evt_html .= "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3><em>" . text($trctp) . " tracking no:</em> " . text($elem02) . " (by " . text($elem03 . " " . $elem04) . ")</td></tr>" . PHP_EOL;
294 } elseif ($loopid == '2000F') {
295 $svc_html .= "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3><em>" . text($trctp) . " tracking no:</em> " . text($elem02) . " (by " . text($elem03 . " " . $elem04) . ")</td></tr>" . PHP_EOL;
298 continue;
303 if (strncmp('UM' . $de, $seg, 3) === 0) {
304 $sar = explode($de, $seg);
306 $elem01 = (isset($sar[1])) ? $cd27x->get_271_code('UM01', $sar[1]) : '';
307 $elem02 = (isset($sar[2])) ? $cd27x->get_271_code('UM02', $sar[2]) : '';
308 $elem03 = (isset($sar[3])) ? $cd27x->get_271_code('EB03', $sar[3]) : '';
309 $elem04 = (isset($sar[4])) ? $sar[4] : '';
310 $elem04a = '';
311 if (strpos($elem04, $ds)) {
312 $elem04_ar = explode($ds, $elem04);
313 if (isset($elem04_ar[1]) && $elem04_ar[1] == 'B') {
314 $elem04a .= (isset($elem04_ar[0])) ? $cd27x->get_271_code('POS', $elem04_ar[0]) : '';
315 } else {
316 $elem04a = $elem04;
320 /* UM05 -- not used
321 $elem05 = (isset($sar[5])) ? $sar[5] : '';
322 $elem05a = '';
323 if (strpos($elem05, $ds) {
324 $elem05_ar = explode($ds, $elem05);
325 $elem05a .= (isset($elem05_ar[0])) ? $cd27x->get_271_code('POS', $elem05_ar[0]) : '';
326 $elem05a .= (isset($elem05_ar[1])) ? $cd27x->get_271_code('POS', $elem05_ar[1]) : '';
327 $elem05a .= (isset($elem05_ar[2])) ? $cd27x->get_271_code('POS', $elem05_ar[2]) : '';
328 $elem05a .= (isset($elem05_ar[3])) ? 'State Code: '.$elem05_ar[3] : '';
329 $elem05a .= (isset($elem05_ar[3])) ? 'Country Code: '.$elem05_ar[4] : '';
330 } else {
331 $elem05a .= $elem05;
334 * */
335 $elem06 = (isset($sar[6])) ? $cd27x->get_271_code('UM06', $sar[6]) : '';
336 // UM07 UM08 not used
337 //$elem07 = (isset($sar[7])) ? $cd27x->get_271_code('UM07', $sar[7]) : '';
338 //$elem08 = (isset($sar[8])) ? $cd27x->get_271_code('UM08', $sar[8]) : '';
340 if ($loopid == '2000E') {
341 $evt_html .= "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3>" . text($elem01) . " <em>Certification Type:</em> " . text($elem02) . "</td></tr>" . PHP_EOL;
342 $evt_html .= ($elem03 || $elem04a || $elem06) ? "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3>" . text($elem03 . " " . $elem04a) . " (" . text($elem06) . ")</td></tr>" . PHP_EOL : "";
343 } elseif ($loopid == '2000F') {
344 $svc_html .= "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3>" . text($elem01) . " <em>Certification Type:</em> " . text($elem02) . "</td></tr>" . PHP_EOL;
345 $svc_html .= ($elem03 || $elem04a || $elem06) ? "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3>" . text($elem03 . " " . $elem04a) . " (" . text($elem06) . ")</td></tr>" . PHP_EOL : "";
348 continue;
352 if (strncmp('HCR' . $de, $seg, 4) === 0) {
354 $sar = explode($de, $seg);
356 $elem01 = (isset($sar[1]) && $sar[1]) ? $cd27x->get_271_code('HCR01', $sar[1]) : '';
357 $elem02 = (isset($sar[2]) && $sar[2]) ? "<em>Reference: </em>" . $sar[2] : '';
358 $elem03 = (isset($sar[3]) && $sar[3]) ? $cd27x->get_271_code('HCR03', $sar[3]) : '';
359 $elem04 = (isset($sar[4]) && $sar[4]) ? $cd27x->get_271_code('HCR04', $sar[4]) : ''; {
360 $elem04 = ($elem04) ? "<em>2nd Surgical Opinion:</em> $elem04" : "";
363 if ($loopid == '2000E') {
364 $evt_html .= "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3>" . text($elem01 . " " . $elem02) . "</td></tr>" . PHP_EOL;
365 $evt_html .= "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3>" . text($elem03) . "</td></tr>" . PHP_EOL;
366 $evt_html .= ($elem04) ? "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3>" . text($elem04) . "</td></tr>" . PHP_EOL : "";
367 } elseif ($loopid == '2000F') {
368 $svc_html .= "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3>" . text($elem01 . " " . $elem02) . "</td></tr>" . PHP_EOL;
369 $svc_html .= "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3>" . text($elem03) . "</td></tr>" . PHP_EOL;
370 $svc_html .= ($elem04) ? "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3>" . text($elem04) . "</td></tr>" . PHP_EOL : "";
374 continue;
378 if (strncmp('REF' . $de, $seg, 4) === 0) {
380 $sar = explode($de, $seg);
382 $elem01 = (isset($sar[1])) ? $cd27x->get_271_code('REF', $sar[1]) : '';
383 $elem02 = (isset($sar[2])) ? $sar[2] : '';
384 $elem03 = (isset($sar[3])) ? $sar[2] : '';
386 if ($loopid == '2010B') {
387 $rcv_html .= "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=2><em>" . text($elem01) . "</em> " . text($elem02) . "</td><td>" . text($elem03) . "</td></tr>" . PHP_EOL;
388 } elseif ($loopid == '2010C') {
389 $sbr_nm1_html .= "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=2><em>" . text($elem01) . "</em> " . text($elem02) . "</td><td>" . text($elem03) . "</td></tr>" . PHP_EOL;
390 } elseif ($loopid == '2010D') {
391 $dep_nm1_html .= "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=2><em>" . text($elem01) . "</em> " . text($elem02) . "</td><td>" . text($elem03) . "</td></tr>" . PHP_EOL;
392 } elseif ($loopid == '2000E') {
393 $evt_html .= "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=2><em>" . text($elem01) . "</em> " . text($elem02) . "</td><td>" . text($elem03) . "</td></tr>" . PHP_EOL;
394 } elseif ($loopid == '2010E') {
395 $evt_html .= "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=2><em>" . text($elem01) . "</em> " . text($elem02) . "</td><td>" . text($elem03) . "</td></tr>" . PHP_EOL;
396 } elseif ($loopid == '2000F') {
397 $svc_html .= "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=2><em>" . text($elem01) . "</em> " . text($elem02) . "</td><td>" . text($elem03) . "</td></tr>" . PHP_EOL;
398 } elseif ($loopid == '2010FA') {
399 $svc_html .= "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=2><em>" . text($elem01) . "</em> " . text($elem02) . "</td><td>" . text($elem03) . "</td></tr>" . PHP_EOL;
403 continue;
407 if (strncmp('DMG' . $de, $seg, 4) === 0) {
408 $sar = explode($de, $seg);
409 $elem02 = (isset($sar[2]) && $sar[2]) ? edih_format_date($sar[2]) : "";
410 if (isset($sar[3]) && $sar[3]) {
411 if ($sar[3] == 'M') {
412 $elem03 = "Male";
413 } elseif ($sar[3] == 'F') {
414 $elem03 = "Female";
415 } else {
416 $elem03 = "Unknown";
420 if ($loopid == '2010C') {
421 $sbr_nm1_html .= "<tr class='" . attr($cls) . "'><td>&gt;</td><td>" . text($elem03) . "</td><td colspan=2><em>Date of Birth</em> " . text($elem02) . "</td></tr>" . PHP_EOL;
422 } elseif ($loopid == '2010D') {
423 $dep_nm1_html .= "<tr class='" . attr($cls) . "'><td>&gt;</td><td>" . text($elem03) . "</td><td colspan=2><em>Date of Birth</em> " . text($elem02) . "</td></tr>" . PHP_EOL;
426 continue;
430 if (strncmp('INS' . $de, $seg, 4) === 0) {
431 $sar = explode($de, $seg);
432 $elem01 = (isset($sar[1]) && $sar[1] == 'Y') ? "Subscriber" : "Dependent";
433 $elem02 = (isset($sar[2]) && $sar[2]) ? $cd27x->get_271_code('INS02', $sar[2]) : "";
434 $elem03 = (isset($sar[3]) && $sar[3]) ? $sar[3] : "";
435 $elem04 = (isset($sar[4]) && $sar[4] == '25') ? "<b>Information changed</b>" : "";
436 $elem17 = (isset($sar[17]) && $sar[17]) ? $sar[17] : "";
438 if ($loopid == '2010C') {
439 $sbr_nm1_html .= "<tr class='" . attr($cls) . "'><td>&gt;</td><td>" . text($elem01 . " " . $elem17) . "</td><td>" . text($elem02) . "</td><td>" . text($elem03 . " " . $elem04) . "</td></tr>" . PHP_EOL;
440 } elseif ($loopid == '2010D') {
441 $dep_nm1_html .= "<tr class='" . attr($cls) . "'><td>&gt;</td><td>" . text($elem01 . " " . $elem17) . "</td><td>" . text($elem02) . "</td><td>" . text($elem03 . " " . $elem04) . "</td></tr>" . PHP_EOL;
444 continue;
448 if (strncmp('DTP' . $de, $seg, 4) === 0) {
450 $sar = explode($de, $seg);
451 $var = '';
452 $elem01 = (isset($sar[1])) ? $sar[1] : '';
453 $elem02 = (isset($sar[2])) ? $sar[2] : '';
454 $elem03 = (isset($sar[3])) ? $sar[3] : '';
456 $idtype = ($elem01) ? $cd27x->get_271_code('DTP', $elem01) : "";
457 if ($elem02 == 'D8' && $elem03) {
458 $var = edih_format_date($elem03);
459 } elseif ($elem02 == 'RD8' && $elem03) {
460 $var = edih_format_date(substr($elem03, 0, 8));
461 $var .= ' - ' . edih_format_date(substr($elem03, -8));
464 if ($loopid == '2000E') {
465 $evt_html .= "<tr class='" . attr($cls) . "'><td>&gt;</td><td>" . text($idtype) . "</td><td colspan=2>" . text($var) . "</td></tr>" . PHP_EOL;
466 } elseif ($loopid == '2000F') {
467 $svc_html .= "<tr class='" . attr($cls) . "'><td>&gt;</td><td>" . text($idtype) . "</td><td colspan=2>" . text($var) . "</td></tr>" . PHP_EOL;
470 continue;
474 if (strncmp('HI' . $de, $seg, 3) === 0) {
475 // This is the Health Care Information Codes segment
476 // -- to give all information in the segment, we need to
477 // lookup all the code values ICD-9, ICD-10, LOINC, DRG, etc.
478 // -- At this time, give the code source and code, with dates if any
480 $sar = explode($de, $seg);
482 $hi_str = '';
483 $tr_str = '';
484 foreach ($sar as $hi) {
485 if (strpos($hi, $ds)) {
486 $a = explode($ds, $hi);
487 $hi_str .= (isset($a[0]) && $a[0]) ? $cd27x->get_271_code('HI01', $a[0]) : "";
488 $hi_str .= (isset($a[1]) && $a[1]) ? '[ ' . $a[1] . ' ]' : '[]';
489 if (isset($a[2]) && isset($a[3])) {
490 $hi_str .= ($a[2] == 'D8') ? ' ' . edih_format_date($a[3]) : '';
491 $hi_str .= ($a[2] == 'RD8') ? edih_format_date(substr($a[3], 0, 8)) : "";
492 $hi_str .= ($a[2] == 'RD8') ? edih_format_date(substr($a[3], -8)) : "";
494 } else {
495 $hi_str .= $hi . ' ';
498 $tr_str .= "<tr class='" . attr($cls) . "'><td><em>Codes</em></td><td colspan=3>" . text($hi_str) . "</td></tr>" . PHP_EOL;
502 if ($loopid == '2000E') {
503 $evt_html .= $tr_str;
504 } elseif ($loopid == '2000F') {
505 $svc_html .= $tr_str;
509 continue;
513 if (strncmp('HSD' . $de, $seg, 4) === 0) {
514 // Health Care Services Delivery
515 $sar = explode($de, $seg);
517 $id = "Services Delivery";
518 $tr_str = '';
519 $elem01 = (isset($sar[1]) && $sar[1]) ? $cd27x->get_271_code('HSD01', $sar[1]) : ''; // quantity qualifier
520 $elem02 = (isset($sar[2]) && $sar[2]) ? $sar[2] : ''; // numeric quantity
521 $elem03 = (isset($sar[3]) && $sar[3]) ? $cd27x->get_271_code('HSD01', $sar[3]) : ''; // measurement unit
522 $elem04 = (isset($sar[4]) && $sar[4]) ? $sar[4] : ''; // sample selection modulus
523 $elem05 = (isset($sar[5]) && $sar[5]) ? $cd27x->get_271_code('EB06', $sar[5]) : ''; // time period qualifier
524 $elem06 = (isset($sar[6]) && $sar[6]) ? $sar[6] : ''; // number of periods
525 $elem07 = (isset($sar[7]) && $sar[7]) ? $cd27x->get_271_code('HSD07', $sar[7]) : ''; // delivery
526 $elem08 = (isset($sar[8]) && $sar[8]) ? $cd27x->get_271_code('HSD08', $sar[8]) : ''; // delivery
528 if (($elem01 || $elem02) && !$elem08) {
529 $tr_str .= ($elem03 && $elem04 && $elem06) ? "<tr class='" . attr($cls) . "'><td><em>" . text($id) . "</em></td><td colspan=3>" . text($elem02 . " " . $elem01) . " per every " . text($elem04 . " " . $elem03) . " for " . text($elem06 . " " . $elem05 . " " . $elem07) . "</td></tr>" . PHP_EOL : "";
530 $tr_str .= ($elem03 && $elem04 && !$elem06) ? "<tr class='" . attr($cls) . "'><td><em>" . text($id) . "</em></td><td colspan=3>" . text($elem02 . " " . $elem01) . " per every " . text($elem04 . " " . $elem03 . " " . $elem07) . "</td></tr>" . PHP_EOL : "";
531 $tr_str .= ($elem03 && !$elem04 && $elem06) ? "<tr class='" . attr($cls) . "'><td><em>" . text($id) . "</em></td><td colspan=3>" . text($elem02 . " " . $elem01) . " for " . text($elem06 . " " . $elem05 . " " . $elem07) . "</td></tr>" . PHP_EOL : "";
532 $tr_str .= ($elem03 && !$elem04 && !$elem06) ? "<tr class='" . attr($cls) . "'><td><em>" . text($id) . "</em></td><td colspan=3>" . text($elem02 . " " . $elem01 . " " . $elem07) . "</td></tr>" . PHP_EOL : "";
533 } else {
534 $tr_str .= "<tr class='" . attr($cls) . "'><td><em>" . text($id) . "</em></td><td colspan=3>" . text($elem02 . " " . $elem01 . " " . $elem07 . " " . $elem08) . "</td></tr>" . PHP_EOL;
538 if ($loopid == '2000E') {
539 $evt_html .= $tr_str;
540 } elseif ($loopid == '2000F') {
541 $svc_html .= $tr_str;
544 continue;
548 if (strncmp('CRC' . $de, $seg, 4) === 0) {
549 // Certification
550 $sar = explode($de, $seg);
552 $elem01 = (isset($sar[1]) && $sar[1]) ? $cd27x->get_271_code('CRC01', $sar[1]) : ''; // certification type code
553 $elem02 = (isset($sar[2]) && $sar[2]) ? $cd27x->get_271_code('HCR04', $sar[2]) : ''; // condition indicater
554 $elem03 = (isset($sar[3]) && $sar[3]) ? $cd27x->get_271_code('CRC03', $sar[3]) : ''; // condition descripter
555 $elem04 = (isset($sar[4]) && $sar[4]) ? $cd27x->get_271_code('CRC03', $sar[4]) : ''; // condition descripter
556 $elem05 = (isset($sar[5]) && $sar[5]) ? $cd27x->get_271_code('CRC03', $sar[5]) : ''; // condition descripter
557 $elem06 = (isset($sar[6]) && $sar[6]) ? $cd27x->get_271_code('CRC03', $sar[6]) : ''; // condition descripter
558 $elem07 = (isset($sar[7]) && $sar[7]) ? $cd27x->get_271_code('CRC03', $sar[7]) : ''; // condition descripter
560 $evt_html .= ($elem01) ? "<tr class='" . attr($cls) . "'><td><em>" . text($elem01) . "</em></td><td colspan=3><em>Conditions Apply:</em> " . text($elem02) . "</td></tr>" . PHP_EOL : "";
561 $evt_html .= ($elem03) ? "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3>" . text($elem03) . "</td></tr>" . PHP_EOL : "";
562 $evt_html .= ($elem04) ? "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3>" . text($elem04) . "</td></tr>" . PHP_EOL : "";
563 $evt_html .= ($elem05) ? "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3>" . text($elem05) . "</td></tr>" . PHP_EOL : "";
564 $evt_html .= ($elem06) ? "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3>" . text($elem06) . "</td></tr>" . PHP_EOL : "";
565 $evt_html .= ($elem07) ? "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3>" . text($elem07) . "</td></tr>" . PHP_EOL : "";
567 continue;
571 if (strncmp('CL1' . $de, $seg, 4) === 0) {
573 $sar = explode($de, $seg);
575 $tr_str = '';
576 $elem01 = (isset($sar[1]) && $sar[1]) ? $cd27x->get_271_code('CL101', $sar[1]) : ''; // admission type code
577 $elem02 = (isset($sar[2]) && $sar[2]) ? $cd27x->get_271_code('CL102', $sar[2]) : ''; // admission source code
578 $elem03 = (isset($sar[3]) && $sar[3]) ? $cd27x->get_271_code('CL103', $sar[3]) : ''; // patient status code
580 $tr_str .= "<tr class='" . attr($cls) . "'><td><em>Hospital</em> </td><td colspan=3>" . text($elem01 . " " . $elem02) . "</td></tr>" . PHP_EOL;
581 $tr_str .= ($elem03) ? "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3>" . text($elem03) . "</td></tr>" . PHP_EOL : "";
583 if ($loopid == '2000E') {
584 $evt_html .= $tr_str;
585 } elseif ($loopid == '2000F') {
586 $svc_html .= $tr_str;
589 continue;
593 if (strncmp('CR1' . $de, $seg, 4) === 0) {
594 // ambulance
595 $sar = explode($de, $seg);
597 $elem03 = (isset($sar[3]) && $sar[3]) ? $cd27x->get_271_code('CR103', $sar[3]) : ''; // ambulance transit code
598 if (isset($sar[5])) {
599 if ($sar[5] == 'DH') {
600 $elem05 = "miles";
601 } elseif ($sar[5] == 'DK') {
602 $elem05 = "kilometers";
603 } else {
604 $elem05 = "";
606 } else {
607 $elem05 = "";
610 $elem06 = (isset($sar[6])) ? $sar[6] : "";
612 $evt_html .= "<tr class='" . attr($cls) . "'><td><em>Ambulance:</em></td><td colspan=3>" . text($elem03 . " " . $elem06 . " " . $elem05) . "</td></tr>" . PHP_EOL;
614 continue;
618 if (strncmp('CR2' . $de, $seg, 4) === 0) {
619 // spinal manipulation
620 $sar = explode($de, $seg);
622 $elem01 = (isset($sar[1]) && $sar[1]) ? $sar[1] : "";
623 $elem02 = (isset($sar[2]) && $sar[2]) ? $sar[2] : "";
624 $elem03 = (isset($sar[3]) && $sar[3]) ? $cd27x->get_271_code('CR203', $sar[3]) : ""; // spinal code
625 $elem04 = (isset($sar[4]) && $sar[4]) ? $cd27x->get_271_code('CR203', $sar[4]) : ""; // spinal code
626 $elem04 = ($elem04) ? "-- " . $elem04 : "";
627 // elem05 -- elem12 not used
629 $evt_html .= "<tr class='" . attr($cls) . "'><td><em>Spinal:</em></td><td colspan=3> " . text($elem01 . " " . $elem02 . " " . $elem03 . " " . $elem04) . "</td></tr>" . PHP_EOL;
631 continue;
635 if (strncmp('CR5' . $de, $seg, 4) === 0) {
636 // oxygen
637 $sar = explode($de, $seg);
639 $tr_str = '';
640 $elem03 = (isset($sar[3]) && $sar[3]) ? $cd27x->get_271_code('CR503', $sar[3]) : ""; // oxygen code
641 $elem04 = (isset($sar[4]) && $sar[4]) ? $cd27x->get_271_code('CR503', $sar[4]) : ""; // oxygen code
642 $elem06 = (isset($sar[6]) && $sar[6]) ? "Flow (lpm): " . $sar[6] : "";
643 $elem07 = (isset($sar[7]) && $sar[7]) ? "Times/day: " . $sar[7] : "";
644 $elem08 = (isset($sar[8]) && $sar[8]) ? "Hours: " . $sar[8] : "";
645 $elem09 = (isset($sar[9]) && $sar[9]) ? $sar[9] : "";
646 $elem16 = (isset($sar[16]) && $sar[16]) ? "Flow (lpm): " . $sar[16] : "";
647 $elem17 = (isset($sar[17]) && $sar[17]) ? $cd27x->get_271_code('CR517', $sar[17]) : "";
648 $elem18 = (isset($sar[18]) && $sar[18]) ? $cd27x->get_271_code('CR503', $sar[18]) : "";
650 $title = "Descriptors and Rates/times per edi guide. <b>Do not rely on these!</b>" . PHP_EOL;
651 $t2 = "Descriptors per edi companion guide. <b>Do not rely on these!</b>" . PHP_EOL;
653 $tr_str .= "<tr class='" . attr($cls) . "'><td><em>Oxygen</em></td><td colspan=3><b>You must independently verify this information!</b></td></tr>" . PHP_EOL;
654 $tr_str .= "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3>$title</td></tr>" . PHP_EOL;
655 $tr_str .= ($elem03 || $elem04 ) ? "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3 title='$t2'><em>Equipment Type: </em>" . text($elem03 . " " . $elem04) . "</td></tr>" . PHP_EOL : "";
656 $tr_str .= ($elem06 || $elem07 || $elem08) ? "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3 title='$title'>" . text($elem06 . " " . $elem07 . " " . $elem08) . "</td></tr>" . PHP_EOL : "";
657 $tr_str .= ($elem09) ? "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3><em>Therapist: </em>" . text($elem09) . "</td></tr>" . PHP_EOL : "";
658 $tr_str .= ($elem16) ? "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3 title='$title'>" . text($elem16) . "</td></tr>" . PHP_EOL : "";
659 $tr_str .= ($elem17) ? "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3 title='$t2'><em>Delivery: </em>" . text($elem17) . "</td></tr>" . PHP_EOL : "";
660 $tr_str .= ($elem18) ? "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3 title='$t2'><em>Equipment Type: </em>" . text($elem18) . "</td></tr>" . PHP_EOL : "";
662 $evt_html .= $tr_str;
664 continue;
668 if (strncmp('CR6' . $de, $seg, 4) === 0) {
669 // oxygen
670 $sar = explode($de, $seg);
672 $elem01 = (isset($sar[1]) && $sar[1]) ? $cd27x->get_271_code('UM07', $sar[1]) : ""; // patient condition code
673 $elem02 = (isset($sar[2]) && $sar[2]) ? edih_format_date($sar[2]) : ""; // HH start date
674 $elem03 = (isset($sar[3]) && $sar[3]) ? $sar[3] : "";
675 $elem04 = (isset($sar[4]) && $sar[4]) ? $sar[4] : "";
676 if ($elem03 == 'D8' && $elem04) {
677 $elem04 = edih_format_date($elem04);
678 } elseif ($elem03 == 'RD8' && $elem04) {
679 $var = edih_format_date(substr($dtp03, 0, 8));
680 $elem04 = $var . ' - ' . edih_format_date(substr($elem04, -8));
683 $elem07 = (isset($sar[7]) && $sar[7]) ? $cd27x->get_271_code('HCR04', $sar[8]) : "";
684 $elem08 = (isset($sar[8]) && $sar[8]) ? $cd27x->get_271_code('CR608', $sar[8]) : ""; // certification type code
686 $evt_html .= "<tr class='" . attr($cls) . "'><td><em>Home Health</em></td><td><em>HH Began</em> " . text($elem02) . "</td><td colspan=2>" . text($elem01) . "</td></tr>" . PHP_EOL;
687 $evt_html .= ($elem03 || $elem04) ? "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=2><em>Period</em> " . text($elem04) . "</td><td>(MCR) " . text($elem07) . "</td></tr>" . PHP_EOL : "";
688 $evt_html .= ($elem08) ? "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=2><em>Period</em> " . text($elem08) . "</td><td>(MCR) " . attr($elem05) . "</td></tr>" . PHP_EOL : "";
690 continue;
694 if (strncmp('PWK' . $de, $seg, 4) === 0) {
695 // paperwork
696 $sar = explode($de, $seg);
698 $tr_str = '';
700 $elem01 = (isset($sar[1]) && $sar[1]) ? $cd27x->get_271_code('PWK01', $sar[1]) : ""; // paperwork code
701 $elem02 = (isset($sar[2]) && $sar[2]) ? $cd27x->get_271_code('PWK02', $sar[2]) : ""; // delivery code
702 $elem05 = (isset($sar[5]) && $sar[5] == 'AC') ? "Attachment Control Number" : "";
703 $elem06 = (isset($sar[6]) && $sar[6]) ? $sar[6] : "";
704 $elem07 = (isset($sar[7]) && $sar[7]) ? $sar[7] : "";
706 $tr_str .= "<tr class='" . attr($cls) . "'><td><em>Paperwork</em></td><td colspan=3>" . text($elem01 . " " . $elem02) . "</td></tr>" . PHP_EOL;
707 $tr_str .= ($elem05) ? "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3>" . text($elem05 . " " . $elem06) . "</td></tr>" . PHP_EOL : "";
708 $tr_str .= ($elem07) ? "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3>" . text($elem07) . "</td></tr>" . PHP_EOL : "";
710 if ($loopid == '2000E') {
711 $evt_html .= $tr_str;
712 } elseif ($loopid == '2000F') {
713 $svc_html .= $tr_str;
716 continue;
720 if (strncmp('MSG' . $de, $seg, 4) === 0) {
721 // paperwork
722 $sar = explode($de, $seg);
724 $elem01 = (isset($sar[1]) && $sar[1]) ? $sar[1] : "";
726 if ($loopid == '2000E') {
727 $evt_html .= ($elem01) ? "<tr class='" . attr($cls) . "'><td><em>Message</em></td><td colspan=3>" . text($elem01) . "</td></tr>" . PHP_EOL : "";
728 } elseif ($loopid == '2000F') {
729 $svc_html .= ($elem01) ? "<tr class='" . attr($cls) . "'><td><em>Message</em></td><td colspan=3>" . text($elem01) . "</td></tr>" . PHP_EOL : "";
732 continue;
736 if (strncmp('SV1' . $de, $seg, 4) === 0) {
737 // professional services
738 $sar = explode($de, $seg);
741 $elem01 = '';
742 if (isset($sar[1]) && strpos($sar[1], $ds)) {
743 $ar01 = explode($ds, $sar[1]);
744 $ct = count($ar01);
745 $elem01 = (isset($ar01[0]) && $ar01[0]) ? $cd27x->get_271_code('SV101', $ar01[0]) : "";
747 if ($ct == 8) {
748 $ct = 7;
749 $elem01 .= " " . $ar01[1] . " -- " . $ar01[8];
750 } else {
751 $elem01 .= " " . $ar01[1];
754 if ($elem01 && $ct > 2) {
755 for ($i = 2; $i < $ct; $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='" . attr($cls) . "'><td><em>Professional Svc</em></td><td colspan=3>" . text($elem01 . " " . $elem02) . "</td></tr>" . PHP_EOL : "";
772 $svc_html .= ($elem03 || $elem04 || $elem11) ? "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3>" . text($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; $i++) {
799 $elem01 .= ' ' . $ar01[$i];
802 } elseif (isset($sar[1]) && $sar[1]) {
803 $elem01 = $sar[1];
806 $elem02 = (isset($sar[2]) && $sar[2]) ? edih_format_money($sar[2]) : "";
807 $elem03 = (isset($sar[3]) && $sar[3]) ? $cd27x->get_271_code('SV103', $ar01[3]) : "";
808 $elem04 = (isset($sar[4]) && $sar[4]) ? $sar[4] : "";
809 $elem05 = (isset($sar[5]) && $sar[5]) ? $sar[5] : "";
810 $elem06 = (isset($sar[6]) && $sar[6]) ? edih_format_money($sar[6]) : "";
811 $elem10 = (isset($sar[20]) && $sar[20]) ? $cd27x->get_271_code('SV120', $ar01[20]) : "";
813 $svc_html .= ($elem01) ? "<tr class='" . attr($cls) . "'><td><em>Inst Service</em></td><td colspan=3>" . text($elem01 . " " . $elem02) . "</td></tr>" . PHP_EOL : "";
814 $svc_html .= ($elem03 || $elem04) ? "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3>" . text($elem03 . " " . $elem04 . " " . $elem05 . " " . $elem06) . "</td></tr>" . PHP_EOL : "";
815 $svc_html .= ($elem10) ? "<tr class='" . attr($cls) . "'><td>&gt;</td><td colspan=3>" . text($elem10) . "</td></tr>" . PHP_EOL : "";
817 continue;
822 $str_html .= $hdr_html;
823 $str_html .= ($src_html) ? $src_html : "";
824 $str_html .= ($rcv_html) ? $rcv_html : "";
825 $str_html .= ($sbr_nm1_html) ? $sbr_nm1_html : "";
826 $str_html .= ($dep_nm1_html) ? $dep_nm1_html : "";
827 $str_html .= ($evt_html) ? $evt_html : "";
828 $str_html .= ($svc_html) ? $svc_html : "";
829 $str_html .= "<tr><td colspan=4>&nbsp;</td></tr>" . PHP_EOL;
830 $str_html .= "</tbody>" . PHP_EOL . "</table>" . PHP_EOL;
834 return $str_html;
838 * create a display for an individual authorization response
840 * @uses csv_check_x12_obj()
841 * @uses edih_278_transaction_html
843 * @param string $filename the filename
844 * @param string $bht03 identifier from 837 CLM or27 BHT segment
846 * @return string either an error message or an html table
848 function edih_278_html($filename, $bht03 = '')
850 // create a display for an individual 277 response
851 $html_str = '';
853 if (!$filename) {
854 csv_edihist_log("edih_278_html: called with no file arguments");
855 $html_str .= "Error, no file given<br />" . PHP_EOL;
856 return $html_str;
857 } else {
858 $obj278 = csv_check_x12_obj($filename, 'f278');
859 if ($obj278 && 'edih_x12_file' == get_class($obj278)) {
860 if ($bht03) {
861 // particular transaction
862 $html_str .= edih_278_transaction_html($obj278, $bht03);
863 } else {
864 // file contents
865 $env_ar = $obj278->edih_envelopes();
866 if (!isset($env_ar['ST'])) {
867 $html_str .= "<p>edih_278_html: file parse error, envelope error</p>" . PHP_EOL;
868 $html_str .= text($obj278->edih_message());
869 return $html_str;
870 } else {
871 $html_str .= "<div id='accordion'>" . PHP_EOL;
874 foreach ($env_ar['ST'] as $st) {
875 foreach ($env_ar['GS'] as $gs) {
876 if ($gs['icn'] != $st['icn']) {
877 continue;
880 if ($gs['gsn'] == $st['gsn']) {
881 $gs_date = edih_format_date($gs['date']);
882 $gs_sender = $gs['sender'];
883 break;
888 // get each transaction
889 foreach ($st['bht03'] as $bht) {
890 $html_str .= "<h3>" . text($bht) . " Services Review</h3>" . PHP_EOL;
891 $html_str .= "<div id='ac_" . attr($bht) . "'>" . PHP_EOL;
893 $html_str .= edih_278_transaction_html($obj278, $bht);
895 $html_str .= "</div>" . PHP_EOL;
898 $html_str .= "</div>" . PHP_EOL;
901 } else {
902 csv_edihist_log("edih_278_html: error in retreiving file object");
903 $html_str .= "<p>x12 278 file parse error</p>" . PHP_EOL;
908 return $html_str;