5 * Copyright 2016 Kevin McCormick Longview, Texas
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
13 * This program is free software; you can redistribute it and/or modify
14 * it under the terms of the GNU General Public License as published by
15 * the Free Software Foundation; version 3 or later. You should have
16 * received a copy of the GNU General Public License along with this program;
17 * if not, write to the Free Software Foundation, Inc.,
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19 * <http://opensource.org/licenses/gpl-license.php>
23 * @link: http://www.open-emr.org
29 * Display csv table data in an HTML table for newly processed files
31 * This function uses the csv table header row to order the csv data
32 * The data array should be file table rows and claim table rows,
33 * and have this structure:
34 * array[icn]['type'] => x12 type
35 * array[icn]['file'][i][array( --- data row---) ]
36 * array[icn]['claim'][i][array( --- data row---) ]
38 * @uses csv_table_header()
39 * @uses csv_thead_html()
44 function edih_csv_process_html($data_ar, $err_only=false) {
49 foreach ($data_ar as $icn=>$csvdata) {
50 if ( array_key_exists('type', $csvdata) ) {
51 $ft = $csvdata['type'];
54 $str_html .= 'edih_csv_process_html() for '.$icn.' did not get type value';
55 csv_edihist_log('edih_csv_process_html: for '.$icn.' did not get type value');
59 $cls = (strpos('|f837|f270|f276|f278', $ft)) ?
'sub' : 'rsp';
61 if ( array_key_exists('file', $csvdata) ) {
64 foreach($csvdata['file'] as $key=>$csvfile) {
66 $oe = ( $fidx %
2 == 1 ) ?
'fodd' : 'feven';
67 $cls = (strpos('|f837|f270|f276|f278', $ft)) ?
'sub' : 'rsp';
71 $dte = (isset($csvfile['Date'])) ?
$csvfile['Date'] : '';
72 $fn1 = (isset($csvfile['FileName'])) ?
$csvfile['FileName'] : '';
73 $ctl = (isset($csvfile['Control'])) ?
$csvfile['Control'] : '';
74 $clmct = (isset($csvfile['Claim_ct'])) ?
$csvfile['Claim_ct'] : '';
75 $trc = (isset($csvfile['Trace'])) ?
$csvfile['Trace'] : '';
76 $typ = (isset($csvfile['RspType'])) ?
$csvfile['RspType'] : '';
77 $rej = (isset($csvfile['RejCt'])) ?
$csvfile['RejCt'] : '';
79 $dt_str .= ($fn1) ?
"<a class='$cls' href='edih_main.php?gtbl=file&fname=$fn1&ftype=$ft&fmt=seg'>$fn1</a> " : "";
80 $dt_str .= ($dte) ?
" ".substr($dte,0,4)."-".substr($dte,4,2)."-".substr($dte,6,2) : "";
81 $dt_str .= ($clmct) ?
" <em>Claims</em> ".$clmct : "";
82 if ($ft == 'f997' ||
$ft == 'ta1') {
83 $dt_str .= ($typ) ?
" ".$typ : "";
84 $dt_str .= ($rej) ?
" ".$rej : "";
85 $dt_str .= ($trc) ?
" <a class='$cls' title=$trc href='edih_main.php?gtbl=file&trace=$trc&ftype=$ft&rsptype=$typ'><em>trace</em></a> " : "";
86 } elseif ($ft == 'f277') {
87 $dt_str .= (isset($csvfile['Accept'])) ?
" <em>Accpt</em> ".$csvfile['Accept'] : "";
88 $dt_str .= (isset($csvfile['Reject'])) ?
" <em>Rej</em> ".$csvfile['Reject'] : "";
89 } elseif ($ft == 'f835') {
90 $dt_str .= (isset($csvfile['Denied'])) ?
" <em>Denied</em> ".$csvfile['Denied'] : "";
91 $dt_str .= ($trc) ?
" <em>Chk</em> <a class='$cls' href='edih_main.php?gtbl=file&fname=$fn1&trace=$trc&ftype=$ft&fmt=htm'>$trc</a> " : "";
92 $dt_str .= (isset($csvfile['Payer'])) ?
" ".$csvfile['Payer'] : "";
95 $str_html .= "<dt class=$oe>$dt_str</dt>".PHP_EOL
;
100 // handle the claim array
101 if ( array_key_exists('claim', $csvdata) ) {
106 foreach($csvdata['claim'] as $claim) {
108 // output err_only is when claim status is a rejected type
110 if ( in_array($claim['Status'], array('1', '2', '3', '19', '20', '21')) ) {
113 } elseif ($ft == 'f277') {
114 if (substr_count($claim['Status'],'A1') ||
substr_count($claim['Status'],'A2') ||
substr_count($claim['Status'],'A5')) {
117 } elseif (strpos('|f997|f999|f271', $ft) && $claim['Status'] == 'A') {
119 } elseif ( strpos('|f837|f270|f276', $ft) ) {
126 $oe = ( $errct %
2 ) ?
'codd' : 'ceven';
128 $ptn = (isset($claim['PtName'])) ?
$claim['PtName'] : '';
129 $fn1 = (isset($claim['FileName'])) ?
$claim['FileName'] : '';
130 $ctl = (isset($claim['Control'])) ?
$claim['Control'] : '';
131 $pid = (isset($claim['CLM01'])) ?
$claim['CLM01'] : '';
132 $sts = (isset($claim['Status'])) ?
$claim['Status'] : '';
133 $err = (isset($claim['err_seg'])) ?
$claim['err_seg'] : '';
134 $trc = (isset($claim['Trace'])) ?
$claim['Trace'] : '';
135 $bht03 = (isset($claim['BHT03'])) ?
$claim['BHT03'] : '';
136 $pay = (isset($claim['Payer'])) ?
$claim['Payer'] : '';
137 $typ = (isset($csvfile['RspType'])) ?
$claim['RspType'] : '';
138 $auth = (isset($csvfile['Auth'])) ?
$claim['Auth'] : '';
140 $ins = (isset($csvfile['InsBnft'])) ?
$claim['InsBnft'] : '';
141 $ins = (isset($csvfile['InsLevel'])) ?
$claim['InsLevel'] : $ins;
143 $clm = (isset($csvfile['ClaimID'])) ?
$claim['ClaimID'] : $ins;
145 $dte = (isset($claim['SvcDate'])) ?
$claim['SvcDate'] : '';
146 $dte = (isset($claim['ReqDate'])) ?
$claim['ReqDate'] : $dte;
147 $dte = (isset($claim['RspDate'])) ?
$claim['RspDate'] : $dte;
148 $dte = (isset($claim['FileDate'])) ?
$claim['FileDate'] : $dte;
150 $dd_str .= ($ptn) ?
$ptn." " : "";
151 $dd_str .= ($dte) ?
" ".substr($dte,0,4)."-".substr($dte,4,2)."-".substr($dte,6,2) : "";
152 if (strpos('|f277|f276|f270|f271|f278', $ft)) {
153 $dd_str .= ($sts) ?
" $sts" : "";
154 $dd_str .= ($ins) ?
" $ins" : "";
155 $dd_str .= ($clm) ?
" $clm" : "";
156 $dd_str .= ($bht03) ?
" <em>view</em> <a class='$cls' href='edih_main.php?gtbl=claim&fname=$fn1&ftype=$ft&bht03=$bht03&fmt=htm'>H</a> <a class='seg' href='edih_main.php?gtbl=claim&fname=$fn1&ftype=$ft&bht03=$bht03&fmt=seg'>T</a> " : "";
157 $dd_str .= ($pid) ?
" <em>trace</em> <a class='sub' href='edih_main.php?gtbl=claim&ftype=$ft&rsptype=f837&trace=$pid&fmt=seg'>$pid</a>" : "";
158 $dd_str .= ($auth && $auth == 'Rsp' ||
$auth == 'Reply') ?
"<a class='sub' href='edih_main.php?gtbl=claim&ftype=$ft&rsptype=f278&trace=$trc&fmt=seg'><em>trace</em></a>" : "";
159 } elseif ($ft == 'f835') {
160 $dd_str .= ($clm) ?
" <em>Claim ID</em> $ins" : "";
161 $dd_str .= ($ins) ?
" <em>InsLevel</em> $ins" : "";
162 $dd_str .= ($pid) ?
" $pid <a class='$cls' href='edih_main.php?gtbl=claim&fname=$fn1&ftype=$ft&pid=$pid&fmt=htm'>H</a> <a class='$cls' href='edih_main.php?gtbl=claim&fname=$fn1&ftype=$ft&pid=$pid&fmt=seg'>T</a>" : "";
163 } elseif ($ft == 'f997') {
164 $dd_str .= ($trc) ?
" <a class='$cls' title='$trc' href='edih_main.php?gtbl=claim&ftype=$ft&trace=$trc&rsptype=$typ&errseg=$err&fmt=seg'><em>trace</em></a>" : "";
165 $dd_str .= ($err) ?
" ".substr($err, 0, 8) : "";
167 $dd_str .= ($pid) ?
" <a class='$cls' href='edih_main.php?gtbl=claim&fname=$fn1&ftype=$ft&pid=$pid&fmt=seg'>$pid</a>" : "";
169 $dd_str .= ($fn1) ?
" <a class='$cls' title='$fn1' href='edih_main.php?gtbl=file&fname=$fn1&ftype=$ft&fmt=htm'><em>file</em></a>" : "";
171 $clm_html .= "<dd class='$oe'>$dd_str</dd>".PHP_EOL
;
177 if ($errct) { $str_html .= $clm_html; }
179 $str_html .= $clm_html;
181 } // end foreach ($data_ar as $icn=>$csvdata)
187 * make a list of brief information and links to claims where a problem
188 * has been identified.
190 * @uses csv_file_type()
191 * @uses edih_997_error()
192 * @uses csv_denied_by_file()
200 function edih_list_denied_claims($filetype, $filename, $trace='') {
205 $ft = csv_file_type($filetype);
207 $str_html = edih_997_error($filename);
209 } elseif (strpos('|f271|f277|f835', $ft)) {
210 $row_ar = csv_denied_by_file($ft, $filename, $trace);
212 $str_html .= "Invalid file type $filetype for denied claim search<br />";
213 csv_edihist_log("edih_list_denied_claims: wrong filetype $filetype");
217 if (count($row_ar)) {
218 $rw_ct = count($row_ar);
220 $str_html .= "<h4>Denied/Rejected Claims Listing</h4>".PHP_EOL
;
221 $str_html .= "<dl class ='$ft'>$rw_ct claims <em>File</em> $filename ";
222 $str_html .= ($trace) ?
"<em>Trace</em> $trace</dl>".PHP_EOL
: "".PHP_EOL
;
224 foreach($row_ar as $row) {
225 $oe = ( $rwct %
2 ) ?
'codd' : 'ceven'; $rwct++
;
226 $str_html .= "<dt class='$oe'>{$row[0]} <a class='rpt' href='edih_main.php?gtbl=claim&fname={$row[5]}&ftype=$ft&pid={$row[2]}&fmt=htm'>{$row[2]}</a></dt>".PHP_EOL
;
228 } elseif ($ft == 'f277') {
229 foreach($row_ar as $row) {
230 $oe = ( $rwct %
2 ) ?
'codd' : 'ceven'; $rwct++
;
231 $str_html .= "<dt class='$oe'>{$row[0]} <a class='rpt' href='edih_main.php?gtbl=claim&fname={$row[5]}&ftype=$ft&bht03={$row[4]}&fmt=htm'>{$row[4]}</a></dt>".PHP_EOL
;
233 } elseif ($ft == 'f271') {
234 foreach($row_ar as $row) {
235 $oe = ( $rwct %
2 ) ?
'codd' : 'ceven'; $rwct++
;
236 $str_html .= "<dt class='$oe'>{$row[0]} <a class='rpt' href='edih_main.php?gtbl=claim&fname={$row[5]}&ftype=$ft&bht03={$row[4]}&fmt=htm'>{$row[4]}</a></dt>".PHP_EOL
;
238 } elseif ($ft == 'f997') {
239 foreach($row_ar as $row) {
240 $oe = ( $rwct %
2 ) ?
'codd' : 'ceven'; $rwct++
;
241 $str_html .= "<dt class='$oe'>{$row[0]} <a class='rpt' href='edih_main.php?gtbl=claim&ftype=$tp&trace={$row[2]}&rsptype={$row[6]}&err={$row[7]}'>{$row[2]}</a></dt>".PHP_EOL
;
245 $str_html .= "</dl>".PHP_EOL
;
247 $str_html .= "Search returned no data rows from file $filename<br />";
248 csv_edihist_log("edih_list_denied_claims: no rows returned $filetype $filename $trace");
256 * check the csv claims tables and return rows for a particular encounter
258 * @uses csv_pid_enctr_parse()
259 * @uses csv_file_with_pid_enctr()
260 * @uses csv_table_select_list()
261 * @uses csv_search_record()
263 * @param string encounter number
267 function edih_claim_history($encounter) {
270 $e = (string)$encounter;
272 return 'invalid encounter value '.$encounter.'<br />'.PHP_EOL
;
274 // use function csv_table_select_list() so that only
275 // existing csv tables are queried
276 $tbl2 = csv_table_select_list('array');
279 if (is_array($tbl2['claims']) && count($tbl2['claims']) ) {
280 $rtypes = array_keys($tbl2['claims']);
282 csv_edihist_log("csv_claim_history: failed to get csv table names");
283 return "failed to get csv table names";
286 $ch_html = "<table class='clmhist' columns=4><caption>Encounter Record for $e</caption>";
287 $ch_html .= "<tbody>".PHP_EOL
;
289 if (in_array('f837', $rtypes)) {
291 $btar = csv_file_by_enctr($e, $tp);
293 if (is_array($btar) && count($btar)) {
294 $ch_html .= "<tr class='ch837'><td colspan=4>837 Claim ".count($btar)."</td></tr>".PHP_EOL
;
295 $ch_html .= "<tr class='chhead'>".PHP_EOL
;
296 $ch_html .= "<td>Name</td><td>SvcDate</td><td>CLM01</td><td>File</td>".PHP_EOL
;
297 $ch_html .= "</tr>".PHP_EOL
;
298 foreach($btar as $ch) {
299 $dt = substr($ch['SvcDate'], 0, 4).'-'.substr($ch['SvcDate'], 4, 2).'-'.substr($ch['SvcDate'], 6, 2);
300 //array('PtName', 'SvcDate', 'CLM01', 'InsLevel', 'Control', 'FileName', 'Fee', 'PtPaid', 'Provider' );
301 $ch_html .= "<tr class='ch837'>".PHP_EOL
;
303 $ch_html .= "<td>{$ch['PtName']}</td>".PHP_EOL
;
304 $ch_html .= "<td>$dt</td>".PHP_EOL
;
305 $ch_html .= "<td><a class='seg' href='edih_main.php?gtbl=claim&fname={$ch['FileName']}&ftype=$tp&pid={$ch['CLM01']}&fmt=seg'>{$ch['CLM01']}</a></td>".PHP_EOL
;
306 $ch_html .= "<td title='{$ch['Control']}'><a class='seg' href='edih_main.php?gtbl=file&fname={$ch['FileName']}&ftype=$tp&fmt=seg'>{$ch['FileName']}</a></td>".PHP_EOL
;
308 $ch_html .= "</tr>".PHP_EOL
;
311 $ch_html .= "<tr class='ch837'>".PHP_EOL
;
312 $ch_html .= "<td colspan=4>837 Claim -- Nothing found for $e</td>".PHP_EOL
;
313 $ch_html .= "</tr>".PHP_EOL
;
317 if (in_array('f997', $rtypes)) {
319 $f997ar = csv_file_by_enctr($e, $tp);
321 if (is_array($f997ar) && count($f997ar)) {
322 $ch_html .= "<tr class='ch997'><td colspan=4>Ack 997/999 ".count($f997ar)."</td></tr>".PHP_EOL
;
323 $ch_html .= "<tr class='chhead'>".PHP_EOL
;
324 $ch_html .= "<td colspan=3>Acknowledgement File</td><td>Notes</td>".PHP_EOL
;
325 $ch_html .= "</tr>".PHP_EOL
;
326 foreach($f997ar as $ch) {
328 $msg = strlen($ch[7]) ?
$ch[7] : 'ST Number';
329 //array('PtName', 'RspDate', 'Trace', 'Status', 'Control', 'FileName', 'RspType', 'err_seg');;
330 $ch_html .= "<tr class='ch997'>";
331 $ch_html .= "<td>Rsp Ack</td>".PHP_EOL
;
332 $ch_html .= "<td><a class='rsp' target='_blank' href='edih_main.php?gtbl=claim&fname={$ch['FileName']}&ftype=$tp&trace={$ch['Trace']}&rsptype={$ch['RspType']}&errseg={$ch['err_seg']}'>{$ch['Status']}</a></td>".PHP_EOL
;
333 $ch_html .= "<td><a class='seg' href='edih_main.php?gtbl=file&fname={$ch['FileName']}&ftype=$tp&fmt=seg'>{$ch['FileName']}</a></td>".PHP_EOL
;
334 $ch_html .= "<td title='Response type/date'>{$ch['RspType']} {$ch['RspDate']}</td>".PHP_EOL
;
335 $ch_html .= "</tr>".PHP_EOL
;
338 $ch_html .= "<tr class='ch997'>";
339 $ch_html .= "<td colspan=4>Ack 997/999 -- Nothing found for $e</td>".PHP_EOL
;
340 $ch_html .= "</tr>".PHP_EOL
;
344 if (in_array('f277', $rtypes)) {
346 $f277ar = csv_file_by_enctr($e, $tp);
348 if (is_array($f277ar) && count($f277ar)) {
349 $ch_html .= "<tr class='ch277'><td colspan=4>Status 277 ".count($f277ar)."</td></tr>".PHP_EOL
;
350 $ch_html .= "<tr class='chhead'>".PHP_EOL
;
351 $ch_html .= "<td>Response</td><td>Status</td><td>File</td><td>ClaimID</td>".PHP_EOL
;
352 $ch_html .= "</tr>".PHP_EOL
;
353 foreach($f277ar as $ch) {
354 //'f277':array('PtName', 'SvcDate', 'CLM01', 'Status', 'BHT03', 'FileName', 'Payer', 'Trace');
355 $ch_html .= "<tr class='ch277'>";
357 $ch_html .= "<td>Claim Status</td>".PHP_EOL
;
358 $ch_html .= "<td><a class='rsp' href='edih_main.php?gtbl=claim&fname={$ch['FileName']}&ftype=$tp&bht03={$ch['BHT03']}&fmt=htm'>{$ch['Status']}</a></td>".PHP_EOL
;
359 $ch_html .= "<td title='{$ch['FileName']}'><a href='edih_main.php?gtbl=file&fname={$ch['FileName']}&ftype=$tp&fmt=seg'>{$ch['FileName']}</a></td>".PHP_EOL
;
360 $ch_html .= "<td title='Payer {$ch['Payer']}'>{$ch['Trace']}</td>".PHP_EOL
;
362 $ch_html .= "</tr>".PHP_EOL
;
365 $ch_html .= "<tr class='ch277'>";
366 $ch_html .= "<td colspan=4>Status 277 -- Nothing found for $e</td>".PHP_EOL
;
367 $ch_html .= "</tr>".PHP_EOL
;
371 if (in_array('f835', $rtypes)) {
373 $f835ar = csv_file_by_enctr($e, $tp);
375 if (is_array($f835ar) && count($f835ar)) {
376 $ch_html .= "<tr class='ch835'><td colspan=4>Payment 835 ".count($f835ar)."</td></tr>".PHP_EOL
;
377 $ch_html .= "<tr class='chhead'>".PHP_EOL
;
378 $ch_html .= "<td>Response</td><td>Status</td><td>Trace</td><td>Payer</td>".PHP_EOL
;
379 $ch_html .= "</tr>".PHP_EOL
;
380 foreach($f835ar as $ch) {
382 $msg = $ch['ClaimID'] .' '.$ch['Pmt'].' '.$ch['PtResp'];
383 // array('PtName', 'SvcDate', 'CLM01', 'Status', 'Trace', 'FileName', 'ClaimID', 'Pmt', 'PtResp', 'Payer');
384 $ch_html .= "<tr class='ch835'>";
386 $ch_html .= "<td>{$ch['PtName']}</td>".PHP_EOL
;
387 $ch_html .= "<td><a class='rsp' href='edih_main.php?gtbl=claim&fname={$ch['FileName']}&ftype=$tp&pid={$ch['CLM01']}&summary=no'>{$ch['Status']}</a></td>".PHP_EOL
;
388 $ch_html .= "<td><a href='edih_main.php?gtbl=file&fname={$ch['FileName']}&ftype=$tp&trace={$ch['Trace']}&fmt=htm'>{$ch['Trace']}</a></td>".PHP_EOL
;
389 $ch_html .= "<td title=$msg>{$ch['Payer']}</td>".PHP_EOL
;
391 $ch_html .= "</tr>".PHP_EOL
;
394 $ch_html .= "<tr class='ch835'>";
395 $ch_html .= "<td colspan=4>Payment 835 -- Nothing found for $e</td>".PHP_EOL
;
396 $ch_html .= "</tr>".PHP_EOL
;
400 // -- this is where a query on the payments datatable could be used to show if payment
401 // has been received, even if no era file shows the payment.
403 $ch_html .= "</tbody>".PHP_EOL
;
404 $ch_html .= "</table>".PHP_EOL
;
411 * Render one of our csv record files as an html table
413 * This function determines the actual csv file from the file_type and the
414 * csv_type. Tthe date field of each row is checked against the optional
415 * lookback period or date parameters.
417 * @uses csv_file_type()
418 * @uses csv_parameters()
419 * @uses csv_thead_html()
421 * @param string $file_type -- see function csv_file_type()
422 * @param string $csv_type -- either "file" or "claim"
423 * @param string $period -- lookback 2 weeks, 1 month, ALL, etc
424 * @param string $datestart -- from date CCYY-MM-DD
425 * @param string $dateend -- to date CCYY-MM-DD
429 function edih_csv_to_html($file_type, $csv_type, $period='', $datestart='', $dateend='') {
435 csv_edihist_log("edih_csv_to_html: period $period datestart $datestart dateend $dateend");
440 if ($file_type && $csv_type) {
441 $csv_ar = csv_assoc_array($file_type, $csv_type);
442 if (is_array($csv_ar) && count($csv_ar) ) {
443 $rwct = count($csv_ar);
445 csv_edihist_log("edih_csv_to_html: error opening csv file $file_type $csv_type");
446 $csv_html .= "error opening csv file $file_type $csv_type<br>";
450 $csv_html .= "invalid arguments for opening csv table<br>";
454 $tp = csv_file_type($file_type);
456 $params = csv_parameters($tp);
458 csv_edihist_log("csv_to_html error: incorrect file type $file_type");
459 $csv_html .= "csv_to_html error: incorrect file type $file_type <br />".PHP_EOL
;
462 // csv tables date is in col 0 for file, col 5 for claim
463 // file name is under FileName for all tables
464 $dtcol = (strpos($csv_type, "aim")) ?
$params['claimdate'] : $params['filedate'];
465 $tp_lbl = (strpos($csv_type, "aim")) ?
'Claims' : 'Files';
467 // given dates shold be in CCYY-MM-DD or CCYY/MM/DD format
468 // edih_view.php is supposed to use CCYY-MM-DD
469 $dts = $dt4 = $dte = '';
470 if ( preg_match('/(19|20)\d{2}\D[01][0-9]\D[0-3][0-9]/', $datestart) ) {
471 $dts = implode('', preg_split("/\D/", $datestart) );
472 if ( $dateend && preg_match('/(19|20)\d{2}\D[01][0-9]\D[0-3][0-9]/', $dateend) ) {
473 $dte = implode('', preg_split("/\D/", $dateend) );
475 $dt4 = date_create(date('Y-m-d'));
476 $dte = date_format($dt4, 'Ymd');
478 // php DateTime is poorly documented
479 $is_date = ($dts && $dte);
481 csv_edihist_log("edih_csv_to_html: dts $dts dte $dte isdate ".strval($is_date));
486 $is_period = preg_match('/\d{1,2}(?=w|m|y)/', $period, $matches);
487 if ( count($matches) ) {
490 $mon = (string)$gtdt['mon'];
491 $day = (string)($gtdt['mday'] - $gtdt['wday'] +
1);
492 $yr = (string)$gtdt['year'];
493 if ( strtoupper($period) == 'ALL' ) {
496 } elseif ( strpos($period, 'w') ) {
497 // take the first character of 'period'
498 $modstr = '-'.$pd.' week';
499 $dtstr1 = $mon.'/'.$day.'/'.$yr;
500 } elseif ( strpos($period, 'm') ) {
501 $modstr = '-'.$pd.' month';
502 $dtstr1 = $mon.'/01/'.$yr;
503 } elseif ( strpos($period, 'y') ) {
504 $modstr = '-'.$pd.' year';
505 $dtstr1 = $mon.'/01/'.$yr;
507 csv_edihist_log("csv_to_html error: incorrect date period $period");
513 csv_edihist_log("edih_csv_to_html: period $period modstr $modstr dtstr1 $dtstr1");
515 if ($is_period && $modstr) {
516 $dtpd1 = date_create( $dtstr1 );
517 $dtm = date_modify($dtpd1, $modstr);
518 $dtpd2 = $dtm->format('Ymd');
519 $dtpdlbl = $dtm->format('Y-m-d');
522 $dtpdlbl = 'All Dates';
529 foreach($csv_ar as $data) {
530 $isok = (strcmp($data[$dtcol], $dts) >= 0) ?
true : false;
531 $isok = (strcmp($data[$dtcol], $dte) > 0) ?
false : $isok;
533 if ($isok) { $csv_d[] = $data; }
535 } elseif ($is_period) {
536 foreach($csv_ar as $data) {
537 if (strcmp($data[$dtcol], $dtpd2) > 0) { $csv_d[] = $data; }
543 $ln_ct = count($csv_d);
546 //$csv_html .= "<div id='dttl'>".PHP_EOL;
547 $csv_html .= "<h4>Table: $tp_lbl $tp Start: $datestart End: $dateend Rows: $rwct Shown: $ln_ct</h4>".PHP_EOL
;
548 //$csv_html .= "</div>".PHP_EOL;
549 } elseif ($is_period) {
550 //div id='dttl'></div>
551 $csv_html .= "<h4>Table: $tp_lbl $tp From Date: $dtpdlbl Rows: $rwct Shown: $ln_ct</h4>".PHP_EOL
;
553 //<div id='dttl'></div>
554 $csv_html .= "<h4>Table: $tp_lbl $tp All Dates Rows: $rwct Shown: $ln_ct</h4>".PHP_EOL
;
557 //$csv_html .= "<table id='csvTable' class='csvDisplay'>".PHP_EOL; class='display'max-width: fit-content
558 $csv_html .= "<table id='csvTable' style='width: fit-content; float: left'>".PHP_EOL
;
559 $csv_html .= csv_thead_html($tp, $csv_type);
560 $csv_html .= "<tbody>".PHP_EOL
;
562 // now create the body of the table
564 $cls = (strpos('|f837|f270|f276|f278', $tp)) ?
'sub' : 'rsp';
567 if ($csv_type == 'file') {
570 //array('Date', 'FileName', 'Control', 'Trace', 'Claim_ct', 'Denied', 'Payer')
571 foreach($csv_d as $val) {
572 $bgc = ($idx %
2 == 1 ) ?
'odd' : 'even';
573 $csv_html .= "<tr class='$bgc'>".PHP_EOL
;
574 foreach($val as $k=>$v) {
576 $csv_html .= "<td>".substr($v, 0, 4).'-'.substr($v, 4, 2).'-'.substr($v, 6, 2)."</td>".PHP_EOL
;
577 } elseif ($k == 'FileName') {
579 $csv_html .= "<td><a class='$cls' href='edih_main.php?gtbl=file&fname=$v&ftype=$tp&fmt=htm'>$v</a></td>".PHP_EOL
;
580 } elseif ($k == 'Control') {
581 $csv_html .= "<td><a class='seg' href='edih_main.php?gtbl=file&icn=$v&ftype=$tp&fmt=seg'>$v</a></td>".PHP_EOL
;
582 } elseif ($k == 'Trace') {
584 $csv_html .= "<td><a class='$cls' href='edih_main.php?gtbl=file&trace=$v&ftype=$tp&rsptype=$tp&fmt=htm'>$v</a></td>".PHP_EOL
;
585 } elseif ($k == 'Claim_ct') {
586 $csv_html .= "<td>$v <a class='sub' href='edih_main.php?tracecheck=$trc&ckprocessed=yes'><em>P?</em></a></td>".PHP_EOL
;
587 } elseif ($k == 'Denied') {
589 $csv_html .= "<td><a class='sub' href='edih_main.php?chkdenied=yes&fname=$fn&ftype=$tp&trace=$trc'>$v</a></td>".PHP_EOL
;
591 $csv_html .= "<td>$v</td>".PHP_EOL
;
594 $csv_html .= "<td>$v</td>".PHP_EOL
;
597 $csv_html .= "</tr>".PHP_EOL
;
600 } elseif ($tp == 'f997') {
601 //array('Date', 'FileName', 'Control', 'Trace', 'RspType', 'RejCt')
602 foreach($csv_d as $val) {
603 $bgc = ($idx %
2 == 1 ) ?
'odd' : 'even';
604 $csv_html .= "<tr class='$bgc'>".PHP_EOL
;
606 $rsp = $val['RspType'];
607 foreach($val as $k=>$v) {
609 $csv_html .= "<td>".substr($v, 0, 4).'-'.substr($v, 4, 2).'-'.substr($v, 6, 2)."</td>".PHP_EOL
;
610 } elseif ($k == 'FileName') {
612 $csv_html .= "<td><a class='seg' href='edih_main.php?gtbl=file&fname=$v&ftype=$tp&fmt=seg'>$v</a></td>".PHP_EOL
;
613 } elseif ($k == 'Trace') {
614 $csv_html .= "<td><a class='seg' href='edih_main.php?gtbl=file&trace=$v&ftype=$tp&rsptype=$rsp&fmt=seg'>$v</a></td>".PHP_EOL
;
615 } elseif ($k == 'RejCt') {
617 $csv_html .= "<td><a class='rpt' href='edih_main.php?chkdenied=yes&fname=$fn&ftype=$tp'>$v</a></td>".PHP_EOL
;
619 $csv_html .= "<td>$v</td>".PHP_EOL
;
622 $csv_html .= "<td>$v</td>".PHP_EOL
;
625 $csv_html .= "</tr>".PHP_EOL
;
630 // the generic case -- for 'file' type tables
631 foreach($csv_d as $val) {
632 $bgc = ($idx %
2 == 1 ) ?
'odd' : 'even';
633 $csv_html .= "<tr class='$bgc'>".PHP_EOL
;
634 foreach($val as $k=>$v) {
636 $csv_html .= "<td>".substr($v, 0, 4).'-'.substr($v, 4, 2).'-'.substr($v, 6, 2)."</td>".PHP_EOL
;
637 } elseif ($k == 'FileName') {
638 $csv_html .= "<td><a class='seg' href='edih_main.php?gtbl=file&fname=$v&ftype=$tp&fmt=htm'>$v</a></td>".PHP_EOL
;
639 } elseif ($k == 'Control') {
640 $csv_html .= "<td><a class='seg' href='edih_main.php?gtbl=file&icn=$v&ftype=$tp&fmt=seg'>$v</a></td>".PHP_EOL
;
641 } elseif ($k == 'Reject') {
643 $csv_html .= "<td><a class='sub' href='edih_main.php?&chkdenied=yes&fname={$val['FileName']}&ftype=$tp'>$v</a></td>".PHP_EOL
;
645 $csv_html .= "<td>$v</td>".PHP_EOL
;
648 $csv_html .= "<td>$v</td>".PHP_EOL
;
651 $csv_html .= "</tr>".PHP_EOL
;
655 } elseif ($csv_type == 'claim') {
658 // array('PtName', 'SvcDate', 'CLM01', 'InsLevel', 'Control', 'FileName', 'Fee', 'PtPaid', 'Provider' );
659 foreach($csv_d as $val) {
660 $bgc = ($idx %
2 == 1 ) ?
'odd' : 'even';
661 $csv_html .= "<tr class='$bgc'>".PHP_EOL
;
662 // needed values for links
663 $fn = $val['FileName'];
664 foreach($val as $k=>$v) {
666 $csv_html .= "<td><a class='sub' href='edih_main.php?gtbl=claim&fname=$fn&ftype=$tp&pid=$v'>$v</a></td>".PHP_EOL
;
667 } elseif ($k == 'SvcDate') {
668 $csv_html .= "<td>".substr($v, 0, 4).'-'.substr($v, 4, 2).'-'.substr($v, 6, 2)."</td>".PHP_EOL
;
669 } elseif ($k == 'FileName') {
670 $csv_html .= "<td><a class='seg' href='edih_main.php?gtbl=file&fname=$fn&ftype=$tp&fmt=seg'>$v</a></td>".PHP_EOL
;
672 $csv_html .= "<td>$v</td>".PHP_EOL
;
675 $csv_html .= "</tr>".PHP_EOL
;
678 } elseif ($tp == 'f835') {
679 // array('PtName', 'SvcDate', 'CLM01', 'Status', 'Trace', 'FileName', 'ClaimID', 'Pmt', 'PtResp', 'Payer')
680 foreach($csv_d as $val) {
681 $bgc = ($idx %
2 == 1 ) ?
'odd' : 'even';
682 $csv_html .= "<tr class='$bgc'>".PHP_EOL
;
683 // needed values for links
684 $fn = $val['FileName'];
685 $pid = $val['CLM01'];
686 foreach($val as $k=>$v) {
687 if ($k == 'SvcDate') {
688 $csv_html .= "<td>".substr($v, 0, 4).'-'.substr($v, 4, 2).'-'.substr($v, 6, 2)."</td>".PHP_EOL
;
689 } elseif ($k == 'CLM01') {
690 $csv_html .= "<td>$v <a class='$cls' href='edih_main.php?gtbl=claim&fname=$fn&ftype=$tp&pid=$pid&fmt=htm'>H</a> ";
691 $csv_html .= " <a class='seg' href='edih_main.php?gtbl=claim&fname=$fn&ftype=$tp&pid=$pid&fmt=seg'>T</a></td>".PHP_EOL
;
692 } elseif ($k == 'Trace') {
693 $csv_html .= "<td><a class='$cls' href='edih_main.php?gtbl=file&fname=$fn&trace=$v&ftype=$tp&fmt=htm'>$v</a></td>".PHP_EOL
;
694 } elseif ($k == 'FileName') {
695 $csv_html .= "<td title='$v'>File <a class='$cls' href='edih_main.php?gtbl=file&fname=$fn&ftype=$tp&fmt=htm'>H</a> ";
696 $csv_html .= " <a class='$cls' href='edih_main.php?gtbl=file&fname=$fn&ftype=$tp&fmt=seg'>T</a></td>".PHP_EOL
;
698 $csv_html .= "<td>$v</td>".PHP_EOL
;
701 $csv_html .= "</tr>".PHP_EOL
;
704 } elseif ($tp == 'f277') {
705 // array('PtName', 'SvcDate', 'CLM01', 'Status', 'BHT03', 'FileName', 'Payer', 'Ins_ID', 'Trace');
706 foreach($csv_d as $val) {
707 $bgc = ($idx %
2 == 1 ) ?
'odd' : 'even';
708 $csv_html .= "<tr class='{$bgc}'>".PHP_EOL
;
709 // needed values for links
710 $fn = $val['FileName'];
711 $bht03 = $val['BHT03'];
712 $trc = $val['CLM01'];
713 foreach($val as $k=>$v) {
714 if ($k == 'SvcDate') {
715 $csv_html .= "<td>".substr($v, 0, 4).'-'.substr($v, 4, 2).'-'.substr($v, 6, 2)."</td>".PHP_EOL
;
716 } elseif ($k == 'CLM01') {
717 $csv_html .= "<td><a class='sub' href='edih_main.php?gtbl=claim&trace=$v&ftype=$tp&rsptype=f837&fmt=seg'>$v</a></td>".PHP_EOL
;
718 } elseif ($k == 'BHT03') {
719 $csv_html .= "<td>$v <a class='rsp' href='edih_main.php?gtbl=claim&fname=$fn&ftype=$tp&bht03=$v&fmt=htm'>H</a> ";
720 $csv_html .= " <a class='seg' href='edih_main.php?gtbl=claim&fname=$fn&ftype=$tp&bht03=$v&fmt=seg'>T</a></td>".PHP_EOL
;
721 } elseif ($k == 'FileName') {
722 $csv_html .= "<td title='$v'>File <a class='rsp' href='edih_main.php?gtbl=file&fname=$v&ftype=$tp&fmt=htm'>H</a> ";
723 $csv_html .= " <a class='seg' href='edih_main.php?gtbl=file&fname=$v&ftype=$tp&fmt=seg'>T</a></td>".PHP_EOL
;
725 $csv_html .= "<td>$v</td>".PHP_EOL
;
728 $csv_html .= "</tr>".PHP_EOL
;
731 } elseif ($tp == 'f276') {
732 // array('PtName', 'ReqDate', 'CLM01', 'InsBnft', 'BHT03', 'FileName', 'Payer', 'Trace');
733 foreach($csv_d as $val) {
734 $bgc = ($idx %
2 == 1 ) ?
'odd' : 'even';
735 $csv_html .= "<tr class='$bgc'>".PHP_EOL
;
736 // needed values for links
737 $fn = $val['FileName'];
738 $bht03 = $val['BHT03'];
739 $trc = $val['CLM01'];
740 foreach($val as $k=>$v) {
741 if ($k == 'ReqDate') {
742 $csv_html .= "<td>".substr($v, 0, 4).'-'.substr($v, 4, 2).'-'.substr($v, 6, 2)."</td>".PHP_EOL
;
743 } elseif ($k == 'CLM01') {
744 $csv_html .= "<td><a class='sub' href='edih_main.php?gtbl=claim&trace=$v&ftype=$tp&rsptype=f837&fmt=seg'>$v</a></td>".PHP_EOL
;
745 } elseif ($k == 'BHT03') {
746 $csv_html .= "<td>$v <a class='$cls' href='edih_main.php?gtbl=claim&fname=$fn&ftype=$tp&bht03=$v&fmt=htm'>H</a> ";
747 $csv_html .= " <a class='seg' href='edih_main.php?gtbl=claim&fname=$fn&ftype=$tp&bht03=$v&fmt=seg'>T</a></td>".PHP_EOL
;
748 } elseif ($k == 'FileName') {
749 $csv_html .= "<td><a class='$cls' href='edih_main.php?gtbl=file&fname=$fn&ftype=$tp&fmt=seg'>$v</a></td>".PHP_EOL
;
751 $csv_html .= "<td>$v</td>".PHP_EOL
;
754 $csv_html .= "</tr>".PHP_EOL
;
757 } elseif ($tp == 'f270') {
758 // array('PtName', 'ReqDate', 'Trace', 'InsBnft', 'BHT03', 'FileName', 'Payer');
759 foreach($csv_d as $val) {
760 $bgc = ($idx %
2 == 1 ) ?
'odd' : 'even';
761 $csv_html .= "<tr class='$bgc'>".PHP_EOL
;
762 // needed values for links
763 $fn = $val['FileName'];
764 $bht03 = $val['BHT03'];
765 foreach($val as $k=>$v) {
766 if ($k == 'ReqDate') {
767 $csv_html .= "<td>".substr($v, 0, 4).'-'.substr($v, 4, 2).'-'.substr($v, 6, 2)."</td>".PHP_EOL
;
768 } elseif ($k == 'BHT03') {
769 $csv_html .= "<td> <a class='$cls' href='edih_main.php?gtbl=claim&fname=$fn&ftype=$tp&bht03=$v&fmt=seg'>$v</a></td>".PHP_EOL
;
770 } elseif ($k == 'FileName') {
771 $csv_html .= "<td><a class='$cls' href='edih_main.php?gtbl=file&fname=$fn&ftype=$tp&fmt=seg'>$v</a></td>".PHP_EOL
;
773 $csv_html .= "<td>$v</td>".PHP_EOL
;
776 $csv_html .= "</tr>".PHP_EOL
;
779 } elseif ($tp == 'f271') {
780 // array('PtName', 'RspDate', 'Trace', 'Status', 'BHT03', 'FileName', 'Payer');
781 foreach($csv_d as $val) {
782 $bgc = ($idx %
2 == 1 ) ?
'odd' : 'even';
783 $csv_html .= "<tr class='$bgc'>".PHP_EOL
;
784 // needed values for links
785 $fn = $val['FileName'];
786 $bht03 = $val['BHT03'];
787 foreach($val as $k=>$v) {
788 if ($k == 'RspDate') {
789 $csv_html .= "<td>".substr($v, 0, 4).'-'.substr($v, 4, 2).'-'.substr($v, 6, 2)."</td>".PHP_EOL
;
790 } elseif ($k == 'BHT03') {
791 $csv_html .= "<td>$v <a class='$cls' href='edih_main.php?gtbl=claim&fname=$fn&ftype=$tp&bht03=$v&fmt=htm'>H</a> ".PHP_EOL
;
792 $csv_html .= " <a class='seg' target='_blank' href='edih_main.php?gtbl=claim&fname=$fn&ftype=$tp&bht03=$v&fmt=seg'>T</a></td>".PHP_EOL
;
793 } elseif ($k == 'FileName') {
794 $csv_html .= "<td title='$v'> File <a class='$cls' href='edih_main.php?gtbl=file&fname=$fn&ftype=$tp&fmt=htm'>H</a> ";
795 $csv_html .= " <a class='$cls' href='edih_main.php?gtbl=file&fname=$fn&ftype=$tp&fmt=seg'>T</a></td>".PHP_EOL
;
797 $csv_html .= "<td>$v</td>".PHP_EOL
;
800 $csv_html .= "</tr>".PHP_EOL
;
803 } elseif ($tp == 'f278') {
804 // array('PtName', 'FileDate', 'Trace', 'Status', 'BHT03', 'FileName', 'Auth', 'Payer')
805 foreach($csv_d as $val) {
806 $bgc = ($idx %
2 == 1 ) ?
'odd' : 'even';
807 $csv_html .= "<tr class='$bgc'>".PHP_EOL
;
808 // needed values for links
809 $fn = $val['FileName'];
810 $bht03 = $val['BHT03'];
811 foreach($val as $k=>$v) {
812 if ($k == 'FileDate') {
813 $csv_html .= "<td>".substr($v, 0, 4).'-'.substr($v, 4, 2).'-'.substr($v, 6, 2)."</td>".PHP_EOL
;
814 } elseif ($k == 'BHT03') {
815 $csv_html .= "<td>$v <a class='$cls' href='edih_main.php?gtbl=claim&fname=$fn&ftype=$tp&bht03=$v&fmt=htm'>H</a> ".PHP_EOL
;
816 $csv_html .= " <a class='seg' href='edih_main.php?gtbl=claim&fname=$fn&ftype=$tp&bht03=$v&fmt=seg'>T</a></td>".PHP_EOL
;
817 } elseif ($k == 'FileName') {
818 $csv_html .= "<td title='$v'> File <a class='$cls' href='edih_main.php?gtbl=file&fname=$v&ftype=$tp&fmt=htm'>H</a> ";
819 $csv_html .= " <a class='$cls' href='edih_main.php?gtbl=file&fname=$v&ftype=$tp&fmt=seg'>T</a></td>".PHP_EOL
;
821 $csv_html .= "<td>$v</td>".PHP_EOL
;
824 $csv_html .= "</tr>".PHP_EOL
;
827 } elseif ($tp == 'f997') {
828 // array('PtName', 'RspDate', 'Trace', 'Status', 'Control', 'FileName', 'RspType', 'err_seg');
829 foreach($csv_d as $val) {
830 $bgc = ($idx %
2 == 1 ) ?
'odd' : 'even';
831 $csv_html .= "<tr class='$bgc'>".PHP_EOL
;
832 // needed values for links
833 $fn = $val['FileName'];
834 $rsp = $val['RspType'];
835 $err = $val['err_seg'];
836 foreach($val as $k=>$v) {
837 if ($k == 'RspDate') {
838 $csv_html .= "<td>".substr($v, 0, 4).'-'.substr($v, 4, 2).'-'.substr($v, 6, 2)."</td>".PHP_EOL
;
839 } elseif ($k == 'FileName') {
840 $csv_html .= "<td><a class='seg' href='edih_main.php?gtbl=file&fname=$v&ftype=$tp&fmt=seg'>$v</a></td>".PHP_EOL
;
841 } elseif ($k == 'Trace') {
842 $csv_html .= "<td><a class='seg' href='edih_main.php?gtbl=claim&fname=$fn&ftype=$tp&trace=$v&rsptype=$rsp&err=$err&fmt=seg'>$v</a></td>".PHP_EOL
;
843 } elseif ($k == 'err_seg') {
844 $csv_html .= "<td title='$v'>".substr($v, 0, 8)."...</td>".PHP_EOL
;
846 $csv_html .= "<td>$v</td>".PHP_EOL
;
849 $csv_html .= "</tr>".PHP_EOL
;
853 // all types in the tables are covered in an elseif, so this is unexpected
854 foreach($csv_d as $val) {
855 $bgc = ($idx %
2 == 1 ) ?
'odd' : 'even';
856 $csv_html .= "<tr class='$bgc'>".PHP_EOL
;
857 foreach($val as $k=>$v) {
858 if ($k == 'FileName') {
859 $csv_html .= "<td><a class='$cls' href='edih_main.php?gtbl=file&fname=$v&ftype=$tp&fmt=seg'>$v</a></td>".PHP_EOL
;
861 $csv_html .= "<td>$v</td>".PHP_EOL
;
864 $csv_html .= "</tr>".PHP_EOL
;
868 } // end body of the table
869 //$csv_html .= "</tbody>".PHP_EOL."</table>".PHP_EOL."</div>".PHP_EOL;
870 $csv_html .= "</tbody>".PHP_EOL
."</table>".PHP_EOL
;