Exemplo n.º 1
0
/**
 * Produce an html display of information in
 * the x12 edi 271 eligibility report for a particular patient
 * 
 * @uses edih_271_codes()
 * @uses edih_format_money()
 * @uses edih_format_date() 
 * @uses edih_format_percent() 
 * 
 * @param object   edih_x12_file type 271
 * @param string   bht03 or clm01 reference for transaction
 * @return string
 */
function edih_271_transaction_html($obj271, $bht03)
{
    //
    $trans = $obj271->edih_x12_transaction($bht03);
    if (empty($trans) || !count($trans)) {
        $str_html = "<p>Did not find transaction {$bht03} in " . $obj271->edih_filename() . "</p>";
        return $str_html;
    }
    $de = $obj271->edih_delimiters()['e'];
    $ds = $obj271->edih_delimiters()['s'];
    $dr = $obj271->edih_delimiters()['r'];
    $fn = $obj271->edih_filename();
    //
    $cd271 = new edih_271_codes($ds, $dr);
    //
    $str_html = "";
    //
    $hdr_html = "<table id={$bht03} class='h271' columns=4><caption>Eligibility Benefit Response</caption>" . PHP_EOL;
    $hdr_html .= "<thead>" . PHP_EOL;
    $hdr_html .= "<tr><th>Reference</th><th colspan=2>Information</th><th colspan=2>{$fn}</th></tr>" . PHP_EOL;
    $hdr_html .= "</thead>" . PHP_EOL . "<tbody>" . PHP_EOL;
    $src_html = "";
    $rcv_html = "";
    $sbr_nm1_html = "";
    $dep_nm1_html = "";
    $sbr_ref_html = "";
    $dep_ref_html = "";
    $sbr_eb_html = "";
    $dep_eb_html = "";
    //
    $ebct = 0;
    //
    $trns_ct = count($trans);
    for ($i = 0; $i < $trns_ct; $i++) {
        foreach ($trans[$i] as $seg) {
            //
            $idtype = '';
            $name = '';
            $var = '';
            $rej_reason = '';
            $follow = '';
            $addr = '';
            //
            if (strncmp('BHT' . $de, $seg, 4) === 0) {
                $loopid = 'Heading';
                $sar = explode($de, $seg);
                $bht01 = isset($sar[1]) && $sar[1] == '022' ? "Src, Rcv, Sbr, Dep" : "Order unspecified";
                $bht02 = isset($sar[2]) && $sar[2] == '11' ? "Response" : "Confirmation";
                $bht03 = isset($sar[3]) && $sar[3] ? $sar[3] : "";
                $bht04 = isset($sar[4]) && $sar[4] ? edih_format_date($sar[4]) : "";
                //
                $hdr_html .= "<tr><td><em>Reference:</em> {$bht03}</td><td><em>Date:</em> {$bht04}</td><td><em>Type:</em> {$bht02}</td><td>{$bht01}</td></tr>" . PHP_EOL;
                continue;
            }
            //
            if (strncmp('HL' . $de, $seg, 3) === 0) {
                $sar = explode($de, $seg);
                if ($sar[3] == '20') {
                    // level code
                    $loopid = '2000A';
                    // info source (payer)
                    $src_html .= "<tr><td colspan=4><b>Information Source</b></td></tr>" . PHP_EOL;
                } elseif ($sar[3] == '21') {
                    $loopid = '2000B';
                    // info receiver (clinic)
                    $rcv_html .= "<tr><td colspan=4><b>Information Receiver</b></td></tr>" . PHP_EOL;
                } elseif ($sar[3] == '22') {
                    $loopid = '2000C';
                    // subscriber
                    $has_eb = false;
                    $sbr_nm1_html .= "<tr><td colspan=4><b>Subscriber</b></td></tr>" . PHP_EOL;
                } elseif ($sar[3] == '23') {
                    $loopid = '2000D';
                    // dependent
                    $has_eb = false;
                    $dep_nm1_html .= "<tr><td colspan=4><b>Dependent</b></td></tr>" . PHP_EOL;
                }
                //
                $ebct = 0;
                continue;
            }
            //
            if (strncmp('AAA' . $de, $seg, 4) === 0) {
                // rejection
                $sar = explode($de, $seg);
                $rej_reason = $cd271->get_271_code('AAA03', $sar[3]);
                $follow = $cd271->get_271_code('AAA04', $sar[4]);
                if ($loopid == '2000A') {
                    $src_html .= "<tr><td><em><b>Rejection:</b></em></td><td colspan=3 title='{$follow}'>{$rej_reason}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2000B') {
                    $rcv_html .= "<tr><td><em><b>Rejection:</b></em></td><td colspan=3 title='{$follow}'>{$rej_reason}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2000C') {
                    $sbr_nm1_html .= "<tr><td><em><b>Rejection:</b></em></td><td colspan=3 title='{$follow}'>{$rej_reason}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2000D') {
                    $dep_nm1_html .= "<tr><td><em><b>Rejection:</b></em></td><td colspan=3 title='{$follow}'>{$rej_reason}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2110C') {
                    $sbr_eb_html .= "<tr class={$cls}><td><em><b>Rejection:</b></em></td><td colspan=3 title='{$follow}'>{$rej_reason}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2110D') {
                    $dep_eb_html .= "<tr class={$cls}><td><em><b>Rejection:</b></em></td><td colspan=3 title='{$follow}'>{$rej_reason}</td></tr>" . PHP_EOL;
                } else {
                    $hdr_html .= "<tr><td>{$loopid} <em><b>Rejection:</b></em></td><td colspan=3 title='{$follow}'>{$rej_reason}</td></tr>" . PHP_EOL;
                }
                continue;
            }
            if (strncmp('NM1' . $de, $seg, 4) === 0) {
                $sar = explode($de, $seg);
                //
                $descr = isset($sar[1]) && $sar[1] ? $cd271->get_271_code('NM101', $sar[1]) : "";
                //
                $name = isset($sar[3]) && $sar[3] ? $sar[3] : "";
                $name .= isset($sar[7]) && $sar[7] ? " {$sar[7]}" : "";
                $name .= isset($sar[4]) && $sar[4] ? ", {$sar[4]}" : "";
                $name .= isset($sar[5]) && $sar[5] ? " {$sar[5]}" : "";
                $name .= isset($sar[7]) && $sar[7] ? " {$sar[7]}" : "";
                //
                $idtype = isset($sar[8]) && $sar[8] ? $cd271->get_271_code('NM108', $sar[8]) : "";
                $nm109 = isset($sar[9]) && $sar[9] ? $sar[9] : "";
                //
                if ($loopid == '2000A') {
                    $src_html .= "<tr><td title='{$idtype}'>{$nm109}</td><td colspan=3 title='{$descr}'>{$name}</td></tr>" . PHP_EOL;
                    $loopid = '2100A';
                } elseif ($loopid == '2000B') {
                    $rcv_html .= "<tr><td title='{$idtype}'>{$nm109}</td><td colspan=3 title='{$descr}'>{$name}</td></tr>" . PHP_EOL;
                    $loopid = '2100B';
                } elseif ($loopid == '2000C') {
                    $sbr_nm1_html .= "<tr><td title='{$idtype}'>{$nm109}</td><td colspan=3 title='{$descr}'>{$name}</td></tr>" . PHP_EOL;
                    $loopid = '2100C';
                } elseif ($loopid == '2000D') {
                    $dep_nm1_html .= "<tr><td title='{$idtype}'>{$nm109}</td><td colspan=3 title='{$descr}'>{$name}</td></tr>" . PHP_EOL;
                    $loopid = '2100D';
                } elseif ($loopid == '2120C') {
                    $sbr_eb_html .= "<tr class={$cls}><td>&gt;</td><td title='{$idtype}'>{$nm109}</td><td colspan=2 title='{$descr}'>{$descr} {$name}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2120D') {
                    $dep_eb_html .= "<tr class={$cls}><td>&gt;</td><td title='{$idtype}'>{$nm109}</td><td colspan=2 title='{$descr}'>{$descr} {$name}</td></tr>" . PHP_EOL;
                }
                //
                continue;
            }
            //
            if (strncmp('PER' . $de, $seg, 4) === 0) {
                $sar = explode($de, $seg);
                $per02 = isset($sar[2]) && $sar[2] ? $sar[2] : '';
                $idtype = isset($sar[3]) && $sar[3] ? $cd271->get_271_code('PER03', $sar[3]) : "";
                $per04 = isset($sar[4]) && $sar[2] ? $sar[4] : '';
                if ($loopid == '2100A') {
                    $src_html .= "<tr><td colspan=3>{$per02}</td><td title='{$idtype}'>{$per04}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2120C') {
                    $sbr_eb_html .= "<tr class={$cls}><td>&gt;</td><td title='{$idtype}'>{$per04}</td><td colspan=2>{$per02}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2120D') {
                    $dep_eb_html .= "<tr class={$cls}><td>&gt;</td><td title='{$idtype}'>{$per04}</td><td colspan=2>{$per02}</td></tr>" . PHP_EOL;
                }
                //
                continue;
            }
            //
            if (strncmp('N3' . $de, $seg, 3) === 0) {
                $sar = explode($de, $seg);
                $addr = isset($sar[1]) ? $sar[1] : "";
                $addr .= isset($sar[2]) ? " {$sar[2]}" : "";
                if ($loopid == '2100C') {
                    $sbr_nm1_html .= "<tr><td>&gt;</td><td colspan=3>{$addr}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2100D') {
                    $dep_nm1_html .= "<tr><td>&gt;</td><td colspan=3>{$addr}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2120C') {
                    $sbr_eb_html .= "<tr class={$cls}><td>&gt;</td><td colspan=3>{$addr}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2120D') {
                    $dep_eb_html .= "<tr class={$cls}><td>&gt;</td><td colspan=3>{$addr}</td></tr>" . PHP_EOL;
                }
                continue;
            }
            //
            if (strncmp('N4' . $de, $seg, 3) === 0) {
                $sar = explode($de, $seg);
                if ($loopid == '2100C') {
                    $sbr_nm1_html .= "<tr><td>&gt;</td><td colspan=3>{$sar[1]} {$sar[2]} {$sar[3]}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2100D') {
                    $dep_nm1_html .= "<tr><td>&gt;</td><td colspan=3>{$sar[1]} {$sar[2]} {$sar[3]}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2120C') {
                    $sbr_eb_html .= "<tr class={$cls}><td>&gt;</td><td colspan=3>{$sar[1]} {$sar[2]} {$sar[3]}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2120D') {
                    $dep_eb_html .= "<tr class={$cls}><td>&gt;</td><td colspan=3>{$sar[1]} {$sar[2]} {$sar[3]}</td></tr>" . PHP_EOL;
                }
                continue;
            }
            //
            if (strncmp('PRV' . $de, $seg, 4) === 0) {
                $sar = explode($de, $seg);
                $idtype = $sar[1] ? $cd271->get_271_code('PRV', $sar[1]) : "";
                if ($loopid == '2100B') {
                    $src_html .= "<tr><td colspan=3>{$sar[2]}</td><td title='{$idtype}'>{$sar[3]}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2100C') {
                    $sbr_nm1_html .= "<tr><td title='{$idtype}'>{$sar[3]}</td><td colspan=3>{$sar[2]}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2100D') {
                    $dep_nm1_html .= "<tr><td title='{$idtype}'>{$sar[3]}</td><td colspan=3>{$sar[2]}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2120C') {
                    $sbr_eb_html .= "<tr class={$cls}><td>&gt;</td><td title='{$idtype}'>{$sar[3]}</td><td colspan=2>{$sar[2]}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2120D') {
                    $dep_eb_html .= "<tr class={$cls}><td>&gt;</td><td title='{$idtype}'>{$sar[3]}</td><td colspan=2>{$sar[2]}</td></tr>" . PHP_EOL;
                }
                //
                continue;
            }
            //
            if (strncmp('DMG' . $de, $seg, 4) === 0) {
                $sar = explode($de, $seg);
                $dmg02 = isset($sar[2]) && $sar[2] ? edih_format_date($sar[2]) : "";
                if (isset($sar[3]) && $sar[3]) {
                    if ($sar[3] == 'M') {
                        $dmg03 = "Male";
                    } elseif ($sar[3] == 'F') {
                        $dmg03 = "Female";
                    } else {
                        $dmg03 = "Unknown";
                    }
                }
                if ($loopid == '2100C') {
                    $sbr_nm1_html .= "<tr><td>&gt;</td><td>{$dmg03}</td><td colspan=2><em>Date of Birth</em> {$dmg02}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2100D') {
                    $dep_nm1_html .= "<tr><td>&gt;</td><td>{$dmg03}</td><td colspan=2><em>Date of Birth</em> {$dmg02}</td></tr>" . PHP_EOL;
                }
                continue;
            }
            if (strncmp('INS' . $de, $seg, 4) === 0) {
                $sar = explode($de, $seg);
                $ins01 = isset($sar[1]) && $sar[1] == 'Y' ? "Subscriber" : "Dependent";
                $ins02 = isset($sar[2]) && $sar[2] ? $cd271->get_271_code('INS02', $sar[2]) : "";
                $ins03 = isset($sar[3]) && $sar[3] ? $sar[3] : "";
                $ins04 = isset($sar[4]) && $sar[4] == '25' ? "<b>Information changed</b>" : "";
                $ins17 = isset($sar[17]) && $sar[17] ? $sar[17] : "";
                //
                if ($loopid == '2100C') {
                    $sbr_nm1_html .= "<tr><td>&gt;</td><td>{$ins01} {$ins17}</td><td>{$ins02}</td><td>{$ins03} {$ins04}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2100D') {
                    $dep_nm1_html .= "<tr><td>&gt;</td><td>{$ins01} {$ins17}</td><td>{$ins02}</td><td>{$ins03} {$ins04}</td></tr>" . PHP_EOL;
                }
                continue;
            }
            if (strncmp('DTP' . $de, $seg, 4) === 0) {
                //
                $sar = explode($de, $seg);
                $var = '';
                $dtp01 = isset($sar[1]) ? $sar[1] : '';
                $dtp02 = isset($sar[2]) ? $sar[2] : '';
                $dtp03 = isset($sar[3]) ? $sar[3] : '';
                //
                $idtype = $dtp01 ? $cd271->get_271_code('DTP', $dtp01) : "";
                if ($dtp02 == 'D8' && $dtp03) {
                    $var = edih_format_date($dtp03);
                } elseif ($dtp02 == 'RD8' && $dtp03) {
                    $var = edih_format_date(substr($dtp03, 0, 8));
                    $var .= ' - ' . edih_format_date(substr($dtp03, -8));
                }
                if ($loopid == '2100C') {
                    $sbr_nm1_html .= "<tr><td>&gt;</td><td>{$idtype}</td><td colspan=2>{$var}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2100D') {
                    $dep_nm1_html .= "<tr><td>&gt;</td><td>{$idtype}</td><td colspan=2>{$var}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2110C') {
                    $sbr_eb_html .= "<tr class={$cls}><td>&gt;</td><td>{$idtype}</td><td colspan=2>{$var}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2110D') {
                    $dep_eb_html .= "<tr class={$cls}><td>&gt;</td><td>{$idtype}</td><td colspan=2>{$var}</td></tr>" . PHP_EOL;
                }
                continue;
            }
            //
            if (strncmp('MPI' . $de, $seg, 4) === 0) {
                $sar = explode($de, $seg);
                $idtype = isset($sar[1]) && $sar[1] ? $cd271->get_271_code('MPI', $sar[1]) : "";
                $idtype .= isset($sar[2]) && $sar[2] ? $cd271->get_271_code('MPI', $sar[2]) : "";
                $idtype .= isset($sar[3]) && $sar[3] ? $cd271->get_271_code('MPI', 'SB' . $sar[3]) : "";
                if (isset($sar[7]) && isset($sar[8])) {
                    if ($sar[7] == 'D8') {
                        $var = edih_format_date($sar[8]);
                    } elseif ($sar[7] == 'RD8') {
                        $var = edih_format_date(substr($sar[8], 0, 8));
                        $var .= ' - ' . edih_format_date(substr($sar[8], -8));
                    }
                }
                if ($loopid == '2100C') {
                    $sbr_nm1_html .= "<tr><td colspan=3>{$idtype}</td><td>{$var}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2100D') {
                    $dep_nm1_html .= "<tr><td colspan=3>{$idtype}</td><td>{$var}</td></tr>" . PHP_EOL;
                }
                continue;
            }
            //
            if (strncmp('EB' . $de, $seg, 3) === 0) {
                //
                $ebct++;
                $cls = $ebct % 2 ? 'ebe' : 'ebo';
                $sar = explode($de, $seg);
                //
                $eb01 = $cd271->get_271_code('EB01', $sar[1]);
                // eligibility or benefit
                $eb02 = isset($sar[2]) && $sar[2] ? $cd271->get_271_code('EB02', $sar[2]) : '';
                // coverage level
                $eb03 = isset($sar[3]) && $sar[3] ? $cd271->get_271_code('EB03', $sar[3]) : '';
                // service type
                $eb04 = isset($sar[4]) && $sar[4] ? $cd271->get_271_code('EB04', $sar[4]) : '';
                // insurance type
                $eb05 = isset($sar[5]) && $sar[5] ? $sar[5] : '';
                // descriptive (plan name)
                $eb06 = isset($sar[6]) && $sar[6] ? $cd271->get_271_code('EB06', $sar[6]) : '';
                // time qualifier
                $eb07 = isset($sar[7]) && strlen($sar[7]) ? edih_format_money($sar[7]) : '';
                // monetary amount
                $eb08 = isset($sar[8]) && $sar[8] ? edih_format_percent($sar[8]) : '';
                // percentage amount
                $eb09 = isset($sar[9]) && $sar[9] ? $cd271->get_271_code('EB09', $sar[9]) : '';
                // Quantity qualifier
                $eb10 = isset($sar[10]) && $sar[10] ? $sar[10] : '';
                // quantity
                $eb11 = isset($sar[11]) && $sar[11] ? $cd271->get_271_code('EB11', $sar[11]) : '';
                // authorization required?
                $eb12 = isset($sar[12]) && $sar[12] ? $cd271->get_271_code('EB12', $sar[12]) : '';
                // in network?
                $eb13 = "";
                if (isset($sar[13]) && strpos($sar[13], $ds)) {
                    // composite procedure ID
                    $eb13ar = explode($ds, $sar[13]);
                    reset($eb13ar);
                    while (list($k, $v) = each($eb13ar)) {
                        if ($k == 0) {
                            $eb13 = $cd271->get_271_code('EB13', $v);
                        } else {
                            $eb13 .= " " . $v;
                        }
                    }
                } else {
                    $eb13 = $sar[13] ? "<em>Procedure</em> {$eb13}" : "";
                }
                $eb14 = "";
                if (isset($sar[14])) {
                    if (strpos($sar[14], $ds)) {
                        // composite diagnosis pointer
                        $eb14 = str_replace($ds, " | ", $sar[14]);
                    } else {
                        $eb14 = $sar[14];
                    }
                    $eb14 = $eb14 ? "<em>Pointers</em> {$eb14}" : "";
                }
                // if LS - LE segments loop should be 2110C or 2110D
                if ($loopid == '2100C' || $loopid == '2110C') {
                    $loopid = '2110C';
                    if (strpos('|A|B', $sar[1]) !== false) {
                        $sbr_eb_html .= "<tr class={$cls}><td>{$eb01}</td><td>{$eb07} {$eb08}</td><td colspan=2>{$eb02} {$eb03} {$eb04} {$eb06}</td></tr>" . PHP_EOL;
                    } elseif (strpos('|C|G|J|Y', $sar[1]) !== false) {
                        $sbr_eb_html .= "<tr class={$cls}><td>{$eb01}</td><td>{$eb02}</td><td>{$eb06} {$eb07}</td><td>{$eb03} {$eb04}</td></tr>" . PHP_EOL;
                    } elseif (strpos('|E|F|', $sar[1]) !== false) {
                        $sbr_eb_html .= "<tr class={$cls}><td>{$eb01}</td><td>{$eb02}</td><td colspan=2>{$eb03} {$eb04} {$eb06}</td></tr>" . PHP_EOL;
                    } else {
                        $sbr_eb_html .= "<tr class={$cls}><td>{$eb01}</td><td>{$eb02}</td><td colspan=3>{$eb07} {$eb08} {$eb03} {$eb04} {$eb06}</td></tr>" . PHP_EOL;
                    }
                    $sbr_eb_html .= $eb09 || $eb10 || $eb11 || $eb12 ? "<tr class={$cls}><td colspan=2>&gt;</td><td colspan=2>{$eb09} {$eb10} {$eb11} {$eb12}</td></tr>" . PHP_EOL : "";
                    $sbr_eb_html .= $eb13 || $eb14 ? "<tr class={$cls}><td>&gt;</td><td colspan=3>{$eb13} {$eb14} </td></tr>" . PHP_EOL : "";
                    $sbr_eb_html .= $eb05 ? "<tr class={$cls}><td>&gt;</td><td colspan=3>{$eb05}</td></tr>" . PHP_EOL : "";
                } elseif ($loopid == '2100D' || $loopid == '2110D') {
                    $loopid = '2110D';
                    if (strpos('|A|B', $eb01) && !$eb02) {
                        $dep_eb_html .= "<tr class={$cls}><td>{$eb01}</td><td>{$ebo7} {$eb08}</td><td colspan=2>{$eb03} {$eb04} {$eb06}</td></tr>" . PHP_EOL;
                    } elseif (strpos('|C|G|J|Y', $eb01)) {
                        $dep_eb_html .= "<tr class={$cls}><td>{$eb01}</td><td>{$eb02}</td><td>{$eb07} {$eb08}</td><td>{$eb11} {$eb12}</td></tr>" . PHP_EOL;
                    } elseif (strpos('|E|F|', $eb01)) {
                        $dep_eb_html .= "<tr class={$cls}><td>{$eb01}</td><td>{$eb02}</td><td colspan=2>{$eb03} {$eb04} {$eb06} </td></tr>" . PHP_EOL;
                    } else {
                        $dep_eb_html .= "<tr class={$cls}><td>{$eb01}</td><td>{$eb02}</td><td colspan=3>{$eb07} {$eb08} {$eb03} {$eb04} {$eb06} </td></tr>" . PHP_EOL;
                    }
                    $dep_eb_html .= $eb09 || $eb10 || $eb11 || $eb12 ? "<tr class={$cls}><td>&gt;</td><td colspan=3>{$eb09} {$eb10} {$eb11} {$eb12}</td></tr>" . PHP_EOL : "";
                    $dep_eb_html .= $eb13 || $eb14 ? "<tr class={$cls}><td>&gt;</td><td colspan=3>{$eb13} {$eb14} </td></tr>" . PHP_EOL : "";
                    $dep_eb_html .= $eb05 ? "<tr class={$cls}><td>&gt;</td><td colspan=3>{$eb05}</td></tr>" . PHP_EOL : "";
                }
                continue;
            }
            //
            if (strncmp('HSD' . $de, $seg, 4) === 0) {
                $sar = explode($de, $seg);
                //
                $hsd01 = isset($sar[1]) && $sar[1] ? $cd271->get_271_code('HSD01', $sar[1]) : '';
                // quantity qualifier
                $hsd02 = isset($sar[2]) && $sar[2] ? $sar[2] : '';
                // numeric quantity
                $hsd03 = isset($sar[3]) && $sar[3] ? $cd271->get_271_code('HSD01', $sar[3]) : '';
                // measurement unit
                $hsd04 = isset($sar[4]) && $sar[4] ? $sar[4] : '';
                // sample selection modulus
                $hsd05 = isset($sar[5]) && $sar[5] ? $cd271->get_271_code('EB06', $sar[5]) : '';
                // time period qualifier
                $hsd06 = isset($sar[6]) && $sar[6] ? $sar[6] : '';
                // number of periods
                $hsd07 = isset($sar[7]) && $sar[7] ? $cd271->get_271_code('HSD07', $sar[7]) : '';
                // delivery
                $hsd08 = isset($sar[8]) && $sar[8] ? $cd271->get_271_code('HSD08', $sar[8]) : '';
                // delivery
                //
                if ($loopid == '2110C') {
                    $sbr_eb_html .= "<tr class={$cls}><td>&gt;</td><td>{$hsd01} : {$hsd02}</td><td>{$hsd03} : {$hsd04}</td><td>{$hsd05} : {$hsd06}</td></tr>" . PHP_EOL;
                    $sbr_eb_html .= $hsd07 || $hsd08 ? "<tr class={$cls}><td>&gt;</td><td colspan=3>{$hsd07} {$hsd08}</td></tr>" . PHP_EOL : '';
                } elseif ($loopid == '2110D') {
                    $dep_eb_html .= "<tr class={$cls}><td>&gt;</td><td>{$hsd01} : {$hsd02}</td><td>{$hsd03} : {$hsd04}</td><td>{$hsd05} : {$hsd06}</td></tr>" . PHP_EOL;
                    $dep_eb_html .= $hsd07 || $hsd08 ? "<tr class={$cls}><td>&gt;</td><td colspan=3>{$hsd07} {$hsd08}</td></tr>" . PHP_EOL : '';
                }
                continue;
            }
            if (strncmp('REF' . $de, $seg, 4) === 0) {
                $sar = explode($de, $seg);
                //
                $ref01 = isset($sar[1]) && $sar[1] ? $cd271->get_271_code('REF', $sar[1]) : '';
                // identification qualifier
                $ref02 = isset($sar[2]) && $sar[2] ? $sar[2] : '';
                // identification value
                $ref03 = isset($sar[3]) && $sar[3] ? $sar[3] : '';
                // description
                //
                if ($loopid == '2100C') {
                    $sbr_ref_html .= "<tr><td>&gt;</td><td colspan=2>{$ref03}</td><td>{$ref01} {$ref02} </td></tr>" . PHP_EOL;
                } elseif ($loopid == '2100D') {
                    $dep_ref_html .= "<tr><td>&gt;</td><td colspan=2>{$ref03}</td><td>{$ref01} {$ref02}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2110C') {
                    $sbr_eb_html .= "<tr class={$cls}><td>&gt;</td><td colspan=2>{$ref03}</td><td>{$ref01} {$ref02}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2110D') {
                    $dep_eb_html .= "<tr class={$cls}><td>&gt;</td><td colspan=2>{$ref03}</td><td>{$ref01} {$ref02}</td></tr>" . PHP_EOL;
                }
                continue;
            }
            if (strncmp('MSG' . $de, $seg, 4) === 0) {
                $sar = explode($de, $seg);
                $msg01 = isset($sar[1]) && $sar[1] ? $sar[1] : '';
                if ($msg01 && $loopid == '2110C') {
                    $sbr_eb_html .= "<tr class={$cls}><td>&gt;</td><td colspan=3>{$msg01}</td></tr>" . PHP_EOL;
                } elseif ($msg01 && $loopid == '2110D') {
                    $dep_eb_html .= "<tr class={$cls}><td>&gt;</td><td colspan=3>{$msg01}</td></tr>" . PHP_EOL;
                }
                continue;
            }
            if (strncmp('III' . $de, $seg, 4) === 0 && ($loopid == '2110C' || $loopid == '2110D')) {
                $sar = explode($de, $seg);
                if (isset($sar[1]) && ($sar[1] == 'GR' || $sar[1] == 'NI')) {
                    $iii02 = isset($sar[2]) && $sar[2] ? $cd271->get_271_code('IIIGR', $sar[2]) : '';
                } else {
                    $iii02 = isset($sar[2]) && $sar[2] ? $cd271->get_271_code('POS', $sar[2]) : '';
                }
                $iii03 = isset($sar[3]) && $sar[3] ? $sar[3] : '';
                //
                if ($loopid == '2110C') {
                    $sbr_eb_html .= "<tr class={$cls}><td>&gt;</td><td colspan=3>{$iii02}</td></tr>" . PHP_EOL;
                    $sbr_eb_html .= $iii03 ? "<tr class={$cls}><td>&gt;</td><td colspan=3>{$iii03}</td></tr>" . PHP_EOL : '';
                } elseif ($loopid == '2110D') {
                    $dep_eb_html .= "<tr class={$cls}><td>&gt;</td><td colspan=3>{$iii02}</td></tr>" . PHP_EOL;
                    $dep_eb_html .= $iii03 ? "<tr class={$cls}><td>&gt;</td><td colspan=3>{$iii03}</td></tr>" . PHP_EOL : '';
                }
                continue;
            }
            //
            if (strncmp('LS' . $de, $seg, 3) === 0) {
                if ($loopid == '2110C') {
                    $loopid = '2120C';
                }
                if ($loopid == '2110D') {
                    $loopid = '2120D';
                }
                continue;
            }
            if (strncmp('LE' . $de, $seg, 3) === 0) {
                if ($loopid == '2120C') {
                    $loopid = '2100C';
                }
                if ($loopid == '2120D') {
                    $loopid = '2100D';
                }
                continue;
            }
            //
        }
        //
        $str_html .= $hdr_html;
        $str_html .= $src_html ? $src_html : "";
        $str_html .= $rcv_html ? $rcv_html : "";
        $str_html .= $sbr_nm1_html ? $sbr_nm1_html : "";
        $str_html .= $sbr_ref_html;
        $str_html .= $sbr_eb_html;
        $str_html .= $dep_nm1_html ? $dep_nm1_html : "";
        $str_html .= $dep_ref_html;
        $str_html .= $dep_eb_html;
        $str_html .= "<tr><td colspan=4>&nbsp;</td></tr>" . PHP_EOL;
        $str_html .= "</tbody>" . PHP_EOL . "</table>" . PHP_EOL;
    }
    //
    return $str_html;
}
Exemplo n.º 2
0
function edih_278_transaction_html($obj278, $bht03)
{
    //
    $trans = $obj278->edih_x12_transaction($bht03);
    if (empty($trans)) {
        $str_html = $obj278->edih_message();
        return $str_html;
    }
    $de = $obj278->edih_delimiters()['e'];
    $ds = $obj278->edih_delimiters()['s'];
    $dr = $obj278->edih_delimiters()['r'];
    $fn = $obj278->edih_filename();
    //
    $cd27x = new edih_271_codes($ds, $dr);
    //
    $cls = '';
    $capstr = 'Services Review (Cert/Auth)';
    //
    $hdr_html = "<table class='h278' columns=4><caption>{$capstr}</caption>";
    $hdr_html .= "<thead><tr><th>Reference</th><th>Information</th><th colspan=2>{$fn}</th></tr></thead>" . PHP_EOL;
    $hdr_html .= "<tbody>" . PHP_EOL;
    $str_html = "";
    $src_html = "";
    $rcv_html = "";
    $sbr_nm1_html = "";
    $dep_nm1_html = "";
    $evt_html = "";
    $svc_html = "";
    //
    $trns_ct = count($trans);
    for ($i = 0; $i < $trns_ct; $i++) {
        foreach ($trans[$i] as $seg) {
            //
            $idtype = '';
            $name = '';
            $var = '';
            $rej_reason = '';
            $follow = '';
            $addr = '';
            // debug
            //
            if (strncmp('BHT' . $de, $seg, 4) === 0) {
                $loopid = 'Heading';
                $sar = explode($de, $seg);
                $elem01 = $sar[1] == '0007' ? "Src, Rcvr, Sbr, Dep, Evt, Svc" : "Not determined";
                //
                $elem02 = isset($sar[2]) && $sar[2] !== false ? $cd27x->get_271_code('BHT02', $sar[2]) : "";
                //
                $elem03 = isset($sar[3]) ? $sar[3] : '';
                $elem04 = isset($sar[4]) ? edih_format_date($sar[4]) : '';
                //
                $elem06 = isset($sar[6]) && $sar[6] ? $cd27x->get_271_code('BHT06', $sar[6]) : "";
                //
                $hdr_html .= "<tr><td colspan=2><em>Transaction ID:</em> {$elem03} </td><td colspan=2><em>Sequence:</em> {$elem01}</td></tr>" . PHP_EOL;
                if ($elem06) {
                    $hdr_html .= "<tr><td colspan=2><em>Transaction Date:</em> {$elem04} </td><td colspan=2>{$elem02} <em>Type:</em> {$elem06}</td></tr>" . PHP_EOL;
                } else {
                    $hdr_html .= "<tr><td colspan=2><em>Transaction Date:</em> {$elem04} </td><td colspan=2><em>Type:</em> {$elem02}</td></tr>" . PHP_EOL;
                }
                //
                continue;
            }
            //'src''rcv'sbr''dep''evt''svc''
            if (strncmp($seg, 'HL' . $de, 3) === 0) {
                $sar = explode($de, $seg);
                $hl = $sar[1];
                $hlpc = $sar[2];
                // parent code
                $hllc = $sar[3];
                $hlcc = isset($sar[4]) ? $sar[4] : '';
                // child code
                if ($sar[3] == '20') {
                    // level code
                    $loopid = '2000A';
                    $cls = 'src';
                    // info source (payer)
                    $src_html .= "<tr class='{$cls}'><td colspan=4><b>Information Source</b></td></tr>" . PHP_EOL;
                } elseif ($sar[3] == '21') {
                    $loopid = '2000B';
                    $cls = 'rcv';
                    // info receiver (clinic)
                    $rcv_html .= "<tr class='{$cls}'><td colspan=4><b>Information Receiver</b></td></tr>" . PHP_EOL;
                } elseif ($sar[3] == '22') {
                    $loopid = '2000C';
                    // subscriber
                    $cls = 'sbr';
                    $sbr_nm1_html .= "<tr class='{$cls}'><td colspan=4><b>Subscriber</b></td></tr>" . PHP_EOL;
                } elseif ($sar[3] == '23') {
                    $loopid = '2000D';
                    // dependent
                    $cls = 'dep';
                    $dep_nm1_html .= "<tr class='{$cls}'><td colspan=4><b>Dependent</b></td></tr>" . PHP_EOL;
                } elseif ($sar[3] == 'EV') {
                    $loopid = '2000E';
                    // patient event
                    $cls = 'evt';
                    $evt_html .= "<tr class='{$cls}'><td colspan=4><b>Patient Event</b></td></tr>" . PHP_EOL;
                } elseif ($sar[3] == 'SS') {
                    $loopid = '2000F';
                    // service
                    $cls = 'svc';
                    $svc_html .= "<tr class='{$cls}'><td colspan=4><b>Service</b></td></tr>" . PHP_EOL;
                }
                //
                continue;
            }
            if (strncmp('NM1' . $de, $seg, 4) === 0) {
                $sar = explode($de, $seg);
                //
                $nm101 = isset($sar[1]) ? $sar[1] : '';
                $descr = $nm101 ? $cd27x->get_271_code('NM101', $nm101) : "";
                //
                $name = isset($sar[3]) && $sar[3] ? $sar[3] : "";
                $name .= isset($sar[7]) && $sar[7] ? " {$sar[7]}" : "";
                $name .= isset($sar[4]) && $sar[4] ? ", {$sar[4]}" : "";
                $name .= isset($sar[5]) && $sar[5] ? " {$sar[5]}" : "";
                $nm109 = isset($sar[9]) && $sar[9] ? $sar[9] : "";
                //
                $idtype = isset($sar[8]) && $sar[8] ? $cd27x->get_271_code('NM108', $sar[8]) : "";
                //
                if ($loopid == '2000A') {
                    $src_html .= "<tr class='{$cls}'><td title='{$idtype}'>{$nm109}</td><td colspan=3 title='{$descr}'>{$name}</td></tr>" . PHP_EOL;
                    $loopid = '2010A';
                } elseif ($loopid == '2000B') {
                    $rcv_html .= "<tr class='{$cls}'><td title='{$idtype}'>{$nm109}</td><td colspan=3 title='{$descr}'>{$name}</td></tr>" . PHP_EOL;
                    $loopid = '2010B';
                } elseif ($loopid == '2000C') {
                    $sbr_nm1_html .= "<tr class='{$cls}'><td title='{$idtype}'>{$nm109}</td><td colspan=3 title='{$descr}'>{$name}</td></tr>" . PHP_EOL;
                    $loopid = '2010C';
                } elseif ($loopid == '2000D') {
                    $dep_nm1_html .= "<tr class='{$cls}'><td title='{$idtype}'>{$nm109}</td><td colspan=3 title='{$descr}'>{$name}</td></tr>" . PHP_EOL;
                    $loopid = '2010D';
                } elseif ($loopid == '2000E' || strpos($loopid, '010E')) {
                    $loopid = strpos('|71|72|73|77|AAJ|DD|DK|DN|FA|G3|P3|QB|QV|SJ', $nm101) ? '2010EA' : $loopid;
                    $loopid = strpos('|45|FS|ND|PW|R3', $nm101) ? '2010EB' : $loopid;
                    $loopid = $nm101 == 'L5' ? '2010EC' : $loopid;
                    $evt_html .= "<tr class='{$cls}'><td title='{$idtype}'>{$nm109}</td><td colspan=3 title='{$descr}'>{$descr} {$name}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2000F' || strpos($loopid, '010F')) {
                    $loopid = strpos('|71|72|73|77|AAJ|DD|DK|DN|FA|G3|P3|QB|QV|SJ', $nm101) ? '2010FA' : $loopid;
                    $loopid = $nm101 == 'L5' ? '2010FB' : $loopid;
                    $svc_html .= "<tr class='{$cls}'><td title='{$idtype}'>{$nm109}</td><td colspan=3 title='{$descr}'>{$descr} {$name}</td></tr>" . PHP_EOL;
                }
                //
                continue;
            }
            //
            if (strncmp('N3' . $de, $seg, 3) === 0) {
                $sar = explode($de, $seg);
                $addr = isset($sar[1]) ? $sar[1] : "";
                $addr .= isset($sar[2]) ? " {$sar[2]}" : "";
                //
                if ($loopid == '2010B') {
                    $rcv_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$addr}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2010C') {
                    $sbr_nm1_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$addr}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2010D') {
                    $dep_nm1_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$addr}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2010EA' || $loopid == '2010EC') {
                    $evt_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$addr}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2010FA') {
                    $svc_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$addr}</td></tr>" . PHP_EOL;
                }
                continue;
            }
            //
            if (strncmp('N4' . $de, $seg, 3) === 0) {
                $sar = explode($de, $seg);
                if ($loopid == '2010B') {
                    $rcv_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$sar[1]} {$sar[2]} {$sar[3]}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2010C') {
                    $sbr_nm1_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$sar[1]} {$sar[2]} {$sar[3]}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2010D') {
                    $dep_nm1_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$sar[1]} {$sar[2]} {$sar[3]}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2010EA' || $loopid == '2010EC') {
                    $evt_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$sar[1]} {$sar[2]} {$sar[3]}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2010FA' || $loopid == '2010FB') {
                    $svc_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$sar[1]} {$sar[2]} {$sar[3]}</td></tr>" . PHP_EOL;
                }
                continue;
            }
            //								//
            if (strncmp('PER' . $de, $seg, 4) === 0) {
                $sar = explode($de, $seg);
                $elem01 = isset($sar[1]) ? $sar[1] : '';
                $elem02 = isset($sar[2]) ? $sar[2] : '';
                $elem03 = isset($sar[3]) ? $cd27x->get_271_code('PER03', $sar[3]) : "";
                $elem04 = isset($sar[4]) ? $sar[4] : '';
                $elem05 = isset($sar[5]) ? $cd27x->get_271_code('PER03', $sar[5]) : "";
                $elem06 = isset($sar[6]) ? $sar[6] : '';
                $elem07 = isset($sar[7]) ? $cd27x->get_271_code('PER03', $sar[7]) : "";
                $elem08 = isset($sar[8]) ? $sar[8] : '';
                $elem09 = isset($sar[9]) ? $sar[9] : '';
                $idtype = $sar[3] ? $cd27x->get_271_code('PER03', $sar[3]) : "";
                if ($loopid == '2010A') {
                    $src_html .= "<tr class='{$cls}'><td colspan=2>{$elem02}</td><td colspan=2 title='{$elem03} {$elem05} {$elem07}'>{$elem04} {$elem06} {$elem08}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2010B') {
                    $rcv_html .= "<tr class='{$cls}'><td colspan=2>{$elem02}</td><td colspan=2 title='{$elem03} {$elem05} {$elem07}'>{$elem04} {$elem06} {$elem08}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2010EA') {
                    $evt_html .= "<tr class='{$cls}'><td colspan=2>{$elem02}</td><td colspan=2 title='{$elem03} {$elem05} {$elem07}'>{$elem04} {$elem06} {$elem08}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2010FA') {
                    $svc_html .= "<tr class='{$cls}'><td colspan=2>{$elem02}</td><td colspan=2 title='{$elem03} {$elem05} {$elem07}'>{$elem04} {$elem06} {$elem08}</td></tr>" . PHP_EOL;
                }
                //
                continue;
            }
            //
            if (strncmp('AAA' . $de, $seg, 4) === 0) {
                // rejection
                $sar = explode($de, $seg);
                $rej_reason = $cd27x->get_271_code('AAA03', $sar[3]);
                $follow = $cd27x->get_271_code('AAA04', $sar[4]);
                if ($loopid == '2000A') {
                    $src_html .= "<tr class='{$cls}'><td><em><b>Rejection:</b></em></td><td colspan=3 title='{$follow}'>{$rej_reason}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2010A') {
                    $src_html .= "<tr class='{$cls}'><td><em><b>Rejection:</b></em></td><td colspan=3 title='{$follow}'>{$rej_reason}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2000B') {
                    $rcv_html .= "<tr class='{$cls}'><td><em><b>Rejection:</b></em></td><td colspan=3 title='{$follow}'>{$rej_reason}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2010B') {
                    $sbr_eb_html .= "<tr class='{$cls}'><td><em><b>Rejection:</b></em></td><td colspan=3 title='{$follow}'>{$rej_reason}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2000C') {
                    $sbr_nm1_html .= "<tr class='{$cls}'><td><em><b>Rejection:</b></em></td><td colspan=3 title='{$follow}'>{$rej_reason}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2010C') {
                    $sbr_eb_html .= "<tr class='{$cls}'><td><em><b>Rejection:</b></em></td><td colspan=3 title='{$follow}'>{$rej_reason}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2000D') {
                    $dep_nm1_html .= "<tr class='{$cls}'><td><em><b>Rejection:</b></em></td><td colspan=3 title='{$follow}'>{$rej_reason}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2010D') {
                    $dep_eb_html .= "<tr class='{$cls}'><td><em><b>Rejection:</b></em></td><td colspan=3 title='{$follow}'>{$rej_reason}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2010EA' || $loopid == '2010EC') {
                    $evt_html .= "<tr class='{$cls}'><td><em><b>Rejection:</b></em></td><td colspan=3 title='{$follow}'>{$rej_reason}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2010FA') {
                    $svc_html .= "<tr class='{$cls}'><td><em><b>Rejection:</b></em></td><td colspan=3 title='{$follow}'>{$rej_reason}</td></tr>" . PHP_EOL;
                } else {
                    $hdr_html .= "<tr class='{$cls}'><td>{$loopid} <em><b>Rejection:</b></em></td><td colspan=3 title='{$follow}'>{$rej_reason}</td></tr>" . PHP_EOL;
                }
                continue;
            }
            //
            if (strncmp('TRN' . $de, $seg, 4) === 0) {
                // trace identifier
                $sar = explode($de, $seg);
                $elem01 = isset($sar[1]) ? $sar[1] : '';
                $elem02 = isset($sar[2]) ? $sar[2] : '';
                $elem03 = isset($sar[3]) ? $sar[3] : '';
                $elem04 = isset($sar[4]) ? $sar[4] : '';
                //
                $trctp = $elem01 == '2' ? 'Reference ' : 'Current ';
                if ($loopid == '2000E') {
                    $evt_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3><em>{$trctp} tracking no:</em> {$elem02} (by {$elem03} {$elem04})</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2000F') {
                    $svc_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3><em>{$trctp} tracking no:</em> {$elem02} (by {$elem03} {$elem04})</td></tr>" . PHP_EOL;
                }
                continue;
            }
            //
            if (strncmp('UM' . $de, $seg, 3) === 0) {
                $sar = explode($de, $seg);
                //
                $elem01 = isset($sar[1]) ? $cd27x->get_271_code('UM01', $sar[1]) : '';
                $elem02 = isset($sar[2]) ? $cd27x->get_271_code('UM02', $sar[2]) : '';
                $elem03 = isset($sar[3]) ? $cd27x->get_271_code('EB03', $sar[3]) : '';
                $elem04 = isset($sar[4]) ? $sar[4] : '';
                $elem04a = '';
                if (strpos($elem04, $ds)) {
                    $elem04_ar = explode($ds, $elem04);
                    if (isset($elem04_ar[1]) && $elem04_ar[1] == 'B') {
                        $elem04a .= isset($elem04_ar[0]) ? $cd27x->get_271_code('POS', $elem04_ar[0]) : '';
                    } else {
                        $elem04a = $elem04;
                    }
                }
                /* UM05 -- not used 
                			 $elem05 = (isset($sar[5])) ? $sar[5] : '';
                			 $elem05a = '';
                			 if (strpos($elem05, $ds) {
                				$elem05_ar = explode($ds, $elem05);
                				$elem05a .= (isset($elem05_ar[0])) ? $cd27x->get_271_code('POS', $elem05_ar[0]) : '';
                				$elem05a .= (isset($elem05_ar[1])) ? $cd27x->get_271_code('POS', $elem05_ar[1]) : '';
                				$elem05a .= (isset($elem05_ar[2])) ? $cd27x->get_271_code('POS', $elem05_ar[2]) : '';
                				$elem05a .= (isset($elem05_ar[3])) ? 'State Code: '.$elem05_ar[3] : '';
                				$elem05a .= (isset($elem05_ar[3])) ? 'Country Code: '.$elem05_ar[4] : '';
                			} else {
                				$elem05a .= $elem05;
                			}
                			//
                			* */
                $elem06 = isset($sar[6]) ? $cd27x->get_271_code('UM06', $sar[6]) : '';
                // UM07 UM08 not used
                //$elem07 = (isset($sar[7])) ? $cd27x->get_271_code('UM07', $sar[7]) : '';
                //$elem08 = (isset($sar[8])) ? $cd27x->get_271_code('UM08', $sar[8]) : '';
                //
                if ($loopid == '2000E') {
                    $evt_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$elem01} <em>Certification Type:</em> {$elem02}</td></tr>" . PHP_EOL;
                    $evt_html .= $elem03 || $elem04a || $elem06 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$elem03} {$elem04a} ({$elem06})</td></tr>" . PHP_EOL : "";
                } elseif ($loopid == '2000F') {
                    $svc_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$elem01} <em>Certification Type:</em> {$elem02}</td></tr>" . PHP_EOL;
                    $svc_html .= $elem03 || $elem04a || $elem06 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$elem03} {$elem04a} ({$elem06})</td></tr>" . PHP_EOL : "";
                }
                continue;
            }
            //
            if (strncmp('HCR' . $de, $seg, 4) === 0) {
                //
                $sar = explode($de, $seg);
                //
                $elem01 = isset($sar[1]) && $sar[1] ? $cd27x->get_271_code('HCR01', $sar[1]) : '';
                $elem02 = isset($sar[2]) && $sar[2] ? "<em>Reference: </em>" . $sar[2] : '';
                $elem03 = isset($sar[3]) && $sar[3] ? $cd27x->get_271_code('HCR03', $sar[3]) : '';
                $elem04 = isset($sar[4]) && $sar[4] ? $cd27x->get_271_code('HCR04', $sar[4]) : '';
                $elem04 = $elem04 ? "<em>2nd Surgical Opinion:</em> {$elem04}" : "";
                //
                if ($loopid == '2000E') {
                    $evt_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$elem01} {$elem02}</td></tr>" . PHP_EOL;
                    $evt_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$elem03}</td></tr>" . PHP_EOL;
                    $evt_html .= $elem04 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$elem04}</td></tr>" . PHP_EOL : "";
                } elseif ($loopid == '2000F') {
                    $svc_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$elem01} {$elem02}</td></tr>" . PHP_EOL;
                    $svc_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$elem03}</td></tr>" . PHP_EOL;
                    $svc_html .= $elem04 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$elem04}</td></tr>" . PHP_EOL : "";
                }
                //
                continue;
            }
            //
            if (strncmp('REF' . $de, $seg, 4) === 0) {
                //
                $sar = explode($de, $seg);
                //
                $elem01 = isset($sar[1]) ? $cd27x->get_271_code('REF', $sar[1]) : '';
                $elem02 = isset($sar[2]) ? $sar[2] : '';
                $elem03 = isset($sar[3]) ? $sar[2] : '';
                //
                if ($loopid == '2010B') {
                    $rcv_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=2><em>{$elem01}</em> {$elem02}</td><td>{$elem03}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2010C') {
                    $sbr_nm1_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=2><em>{$elem01}</em> {$elem02}</td><td>{$elem03}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2010D') {
                    $dep_nm1_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=2><em>{$elem01}</em> {$elem02}</td><td>{$elem03}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2000E') {
                    $evt_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=2><em>{$elem01}</em> {$elem02}</td><td>{$elem03}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2010E') {
                    $evt_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=2><em>{$elem01}</em> {$elem02}</td><td>{$elem03}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2000F') {
                    $svc_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=2><em>{$elem01}</em> {$elem02}</td><td>{$elem03}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2010FA') {
                    $svc_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=2><em>{$elem01}</em> {$elem02}</td><td>{$elem03}</td></tr>" . PHP_EOL;
                }
                //
                continue;
            }
            //
            if (strncmp('DMG' . $de, $seg, 4) === 0) {
                $sar = explode($de, $seg);
                $elem02 = isset($sar[2]) && $sar[2] ? edih_format_date($sar[2]) : "";
                if (isset($sar[3]) && $sar[3]) {
                    if ($sar[3] == 'M') {
                        $elem03 = "Male";
                    } elseif ($sar[3] == 'F') {
                        $elem03 = "Female";
                    } else {
                        $elem03 = "Unknown";
                    }
                }
                if ($loopid == '2010C') {
                    $sbr_nm1_html .= "<tr class='{$cls}'><td>&gt;</td><td>{$elem03}</td><td colspan=2><em>Date of Birth</em> {$elem02}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2010D') {
                    $dep_nm1_html .= "<tr class='{$cls}'><td>&gt;</td><td>{$elem03}</td><td colspan=2><em>Date of Birth</em> {$elem02}</td></tr>" . PHP_EOL;
                }
                continue;
            }
            //
            if (strncmp('INS' . $de, $seg, 4) === 0) {
                $sar = explode($de, $seg);
                $elem01 = isset($sar[1]) && $sar[1] == 'Y' ? "Subscriber" : "Dependent";
                $elem02 = isset($sar[2]) && $sar[2] ? $cd27x->get_271_code('INS02', $sar[2]) : "";
                $elem03 = isset($sar[3]) && $sar[3] ? $sar[3] : "";
                $elem04 = isset($sar[4]) && $sar[4] == '25' ? "<b>Information changed</b>" : "";
                $elem17 = isset($sar[17]) && $sar[17] ? $sar[17] : "";
                //
                if ($loopid == '2010C') {
                    $sbr_nm1_html .= "<tr class='{$cls}'><td>&gt;</td><td>{$elem01} {$elem17}</td><td>{$elem02}</td><td>{$elem03} {$elem04}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2010D') {
                    $dep_nm1_html .= "<tr class='{$cls}'><td>&gt;</td><td>{$elem01} {$elem17}</td><td>{$elem02}</td><td>{$elem03} {$elem04}</td></tr>" . PHP_EOL;
                }
                continue;
            }
            //
            if (strncmp('DTP' . $de, $seg, 4) === 0) {
                //
                $sar = explode($de, $seg);
                $var = '';
                $elem01 = isset($sar[1]) ? $sar[1] : '';
                $elem02 = isset($sar[2]) ? $sar[2] : '';
                $elem03 = isset($sar[3]) ? $sar[3] : '';
                //
                $idtype = $elem01 ? $cd27x->get_271_code('DTP', $elem01) : "";
                if ($elem02 == 'D8' && $elem03) {
                    $var = edih_format_date($elem03);
                } elseif ($elem02 == 'RD8' && $elem03) {
                    $var = edih_format_date(substr($elem03, 0, 8));
                    $var .= ' - ' . edih_format_date(substr($elem03, -8));
                }
                if ($loopid == '2000E') {
                    $evt_html .= "<tr class='{$cls}'><td>&gt;</td><td>{$idtype}</td><td colspan=2>{$var}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2000F') {
                    $svc_html .= "<tr class='{$cls}'><td>&gt;</td><td>{$idtype}</td><td colspan=2>{$var}</td></tr>" . PHP_EOL;
                }
                continue;
            }
            //
            if (strncmp('HI' . $de, $seg, 3) === 0) {
                // This is the Health Care Information Codes segment
                //  -- to give all information in the segment, we need to
                //     lookup all the code values ICD-9, ICD-10, LOINC, DRG, etc.
                //  -- At this time, give the code source and code, with dates if any
                //
                $sar = explode($de, $seg);
                //
                $hi_str = '';
                $tr_str = '';
                foreach ($sar as $hi) {
                    if (strpos($hi, $ds)) {
                        $a = explode($ds, $hi);
                        $hi_str .= isset($a[0]) && $a[0] ? $cd27x->get_271_code('HI01', $a[0]) : "";
                        $hi_str .= isset($a[1]) && $a[1] ? '[ ' . $a[1] . ' ]' : '[]';
                        if (isset($a[2]) && isset($a[3])) {
                            $hi_str .= $a[2] == 'D8' ? ' ' . edih_format_date($a[3]) : '';
                            $hi_str .= $a[2] == 'RD8' ? edih_format_date(substr($a[3], 0, 8)) : "";
                            $hi_str .= $a[2] == 'RD8' ? edih_format_date(substr($a[3], -8)) : "";
                        }
                    } else {
                        $hi_str .= $hi . ' ';
                    }
                    $tr_str .= "<tr class='{$cls}'><td><em>Codes</em></td><td colspan=3>{$hi_str}</td></tr>" . PHP_EOL;
                }
                //
                if ($loopid == '2000E') {
                    $evt_html .= $tr_str;
                } elseif ($loopid == '2000F') {
                    $svc_html .= $tr_str;
                }
                //
                continue;
            }
            //
            if (strncmp('HSD' . $de, $seg, 4) === 0) {
                // Health Care Services Delivery
                $sar = explode($de, $seg);
                //
                $id = "Services Delivery";
                $tr_str = '';
                $elem01 = isset($sar[1]) && $sar[1] ? $cd27x->get_271_code('HSD01', $sar[1]) : '';
                // quantity qualifier
                $elem02 = isset($sar[2]) && $sar[2] ? $sar[2] : '';
                // numeric quantity
                $elem03 = isset($sar[3]) && $sar[3] ? $cd27x->get_271_code('HSD01', $sar[3]) : '';
                // measurement unit
                $elem04 = isset($sar[4]) && $sar[4] ? $sar[4] : '';
                // sample selection modulus
                $elem05 = isset($sar[5]) && $sar[5] ? $cd27x->get_271_code('EB06', $sar[5]) : '';
                // time period qualifier
                $elem06 = isset($sar[6]) && $sar[6] ? $sar[6] : '';
                // number of periods
                $elem07 = isset($sar[7]) && $sar[7] ? $cd27x->get_271_code('HSD07', $sar[7]) : '';
                // delivery
                $elem08 = isset($sar[8]) && $sar[8] ? $cd27x->get_271_code('HSD08', $sar[8]) : '';
                // delivery
                //
                if (($elem01 || $elem02) && !$elem08) {
                    $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 : "";
                    $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 : "";
                    $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 : "";
                    $tr_str .= $elem03 && !$elem04 && !$elem06 ? "<tr class='{$cls}'><td><em>{$id}</em></td><td colspan=3>{$elem02} {$elem01} {$elem07}</td></tr>" . PHP_EOL : "";
                } else {
                    $tr_str .= "<tr class='{$cls}'><td><em>{$id}</em></td><td colspan=3>{$elem02} {$elem01} {$elem07} {$elem08}</td></tr>" . PHP_EOL;
                }
                //
                if ($loopid == '2000E') {
                    $evt_html .= $tr_str;
                } elseif ($loopid == '2000F') {
                    $svc_html .= $tr_str;
                }
                continue;
            }
            //
            if (strncmp('CRC' . $de, $seg, 4) === 0) {
                // Certification
                $sar = explode($de, $seg);
                //
                $elem01 = isset($sar[1]) && $sar[1] ? $cd27x->get_271_code('CRC01', $sar[1]) : '';
                // certification type code
                $elem02 = isset($sar[2]) && $sar[2] ? $cd27x->get_271_code('HCR04', $sar[2]) : '';
                // condition indicater
                $elem03 = isset($sar[3]) && $sar[3] ? $cd27x->get_271_code('CRC03', $sar[3]) : '';
                // condition descripter
                $elem04 = isset($sar[4]) && $sar[4] ? $cd27x->get_271_code('CRC03', $sar[4]) : '';
                // condition descripter
                $elem05 = isset($sar[5]) && $sar[5] ? $cd27x->get_271_code('CRC03', $sar[5]) : '';
                // condition descripter
                $elem06 = isset($sar[6]) && $sar[6] ? $cd27x->get_271_code('CRC03', $sar[6]) : '';
                // condition descripter
                $elem07 = isset($sar[7]) && $sar[7] ? $cd27x->get_271_code('CRC03', $sar[7]) : '';
                // condition descripter
                //
                $evt_html .= $elem01 ? "<tr class='{$cls}'><td><em>{$elem01}</em></td><td colspan=3><em>Conditions Apply:</em> {$elem02}</td></tr>" . PHP_EOL : "";
                $evt_html .= $elem03 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$elem03}</td></tr>" . PHP_EOL : "";
                $evt_html .= $elem04 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$elem04}</td></tr>" . PHP_EOL : "";
                $evt_html .= $elem05 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$elem05}</td></tr>" . PHP_EOL : "";
                $evt_html .= $elem06 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$elem06}</td></tr>" . PHP_EOL : "";
                $evt_html .= $elem07 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$elem07}</td></tr>" . PHP_EOL : "";
                //
                continue;
            }
            //
            if (strncmp('CL1' . $de, $seg, 4) === 0) {
                //
                $sar = explode($de, $seg);
                //
                $tr_str = '';
                $elem01 = isset($sar[1]) && $sar[1] ? $cd27x->get_271_code('CL101', $sar[1]) : '';
                // admission type code
                $elem02 = isset($sar[2]) && $sar[2] ? $cd27x->get_271_code('CL102', $sar[2]) : '';
                // admission source code
                $elem03 = isset($sar[3]) && $sar[3] ? $cd27x->get_271_code('CL103', $sar[3]) : '';
                // patient status code
                //
                $tr_str .= "<tr class='{$cls}'><td><em>Hospital</em> </td><td colspan=3>{$elem01} {$elem02}</td></tr>" . PHP_EOL;
                $tr_str .= $elem03 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$elem03}</td></tr>" . PHP_EOL : "";
                //
                if ($loopid == '2000E') {
                    $evt_html .= $tr_str;
                } elseif ($loopid == '2000F') {
                    $svc_html .= $tr_str;
                }
                continue;
            }
            //
            if (strncmp('CR1' . $de, $seg, 4) === 0) {
                //	ambulance
                $sar = explode($de, $seg);
                //
                $elem03 = isset($sar[3]) && $sar[3] ? $cd27x->get_271_code('CR103', $sar[3]) : '';
                // ambulance transit code
                if (isset($sar[5])) {
                    if ($sar[5] == 'DH') {
                        $elem05 = "miles";
                    } elseif ($sar[5] == 'DK') {
                        $elem05 = "kilometers";
                    } else {
                        $elem05 = "";
                    }
                } else {
                    $elem05 = "";
                }
                $elem06 = isset($sar[6]) ? $sar[6] : "";
                //
                $evt_html .= "<tr class='{$cls}'><td><em>Ambulance:</em></td><td colspan=3>{$elem03} {$elem06} {$elem05}</td></tr>" . PHP_EOL;
                //
                continue;
            }
            //
            if (strncmp('CR2' . $de, $seg, 4) === 0) {
                //	spinal manipulation
                $sar = explode($de, $seg);
                //
                $elem01 = isset($sar[1]) && $sar[1] ? $sar[1] : "";
                $elem02 = isset($sar[2]) && $sar[2] ? $sar[2] : "";
                $elem03 = isset($sar[3]) && $sar[3] ? $cd27x->get_271_code('CR203', $sar[3]) : "";
                // spinal code
                $elem04 = isset($sar[4]) && $sar[4] ? $cd27x->get_271_code('CR203', $sar[4]) : "";
                // spinal code
                $elem04 = $elem04 ? "-- " . $elem04 : "";
                // elem05 -- elem12 not used
                //
                $evt_html .= "<tr class='{$cls}'><td><em>Spinal:</em></td><td colspan=3> {$elem01} {$elem02} {$elem03} {$elem04}</td></tr>" . PHP_EOL;
                //
                continue;
            }
            //
            if (strncmp('CR5' . $de, $seg, 4) === 0) {
                //	oxygen
                $sar = explode($de, $seg);
                //
                $tr_str = '';
                $elem03 = isset($sar[3]) && $sar[3] ? $cd27x->get_271_code('CR503', $sar[3]) : "";
                // oxygen code
                $elem04 = isset($sar[4]) && $sar[4] ? $cd27x->get_271_code('CR503', $sar[4]) : "";
                // oxygen code
                $elem06 = isset($sar[6]) && $sar[6] ? "Flow (lpm): " . $sar[6] : "";
                $elem07 = isset($sar[7]) && $sar[7] ? "Times/day: " . $sar[7] : "";
                $elem08 = isset($sar[8]) && $sar[8] ? "Hours: " . $sar[8] : "";
                $elem09 = isset($sar[9]) && $sar[9] ? $sar[9] : "";
                $elem16 = isset($sar[16]) && $sar[16] ? "Flow (lpm): " . $sar[16] : "";
                $elem17 = isset($sar[17]) && $sar[17] ? $cd27x->get_271_code('CR517', $sar[17]) : "";
                $elem18 = isset($sar[18]) && $sar[18] ? $cd27x->get_271_code('CR503', $sar[18]) : "";
                //
                $title = "Descriptors and Rates/times per edi guide. <b>Do not rely on these!</b>" . PHP_EOL;
                $t2 = "Descriptors per edi companion guide. <b>Do not rely on these!</b>" . PHP_EOL;
                //
                $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;
                $tr_str .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$title}</td></tr>" . PHP_EOL;
                $tr_str .= $elem03 || $elem04 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3 title='{$t2}'><em>Equipment Type: </em>{$elem03} {$elem04}</td></tr>" . PHP_EOL : "";
                $tr_str .= $elem06 || $elem07 || $elem08 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3 title='{$title}'>{$elem06} {$elem07} {$elem08}</td></tr>" . PHP_EOL : "";
                $tr_str .= $elem09 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3><em>Therapist: </em>{$elem09}</td></tr>" . PHP_EOL : "";
                $tr_str .= $elem16 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3 title='{$title}'>{$elem16}</td></tr>" . PHP_EOL : "";
                $tr_str .= $elem17 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3 title='{$t2}'><em>Delivery: </em>{$elem17}</td></tr>" . PHP_EOL : "";
                $tr_str .= $elem18 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3 title='{$t2}'><em>Equipment Type: </em>{$elem18}</td></tr>" . PHP_EOL : "";
                //
                $evt_html .= $tr_str;
                //
                continue;
            }
            //
            if (strncmp('CR6' . $de, $seg, 4) === 0) {
                //	oxygen
                $sar = explode($de, $seg);
                //
                $elem01 = isset($sar[1]) && $sar[1] ? $cd27x->get_271_code('UM07', $sar[1]) : "";
                // patient condition code
                $elem02 = isset($sar[2]) && $sar[2] ? edih_format_date($sar[2]) : "";
                // HH start date
                $elem03 = isset($sar[3]) && $sar[3] ? $sar[3] : "";
                $elem04 = isset($sar[4]) && $sar[4] ? $sar[4] : "";
                if ($elem03 == 'D8' && $elem04) {
                    $elem04 = edih_format_date($elem04);
                } elseif ($elem03 == 'RD8' && $elem04) {
                    $var = edih_format_date(substr($dtp03, 0, 8));
                    $elem04 = $var . ' - ' . edih_format_date(substr($elem04, -8));
                }
                $elem07 = isset($sar[7]) && $sar[7] ? $cd27x->get_271_code('HCR04', $sar[8]) : "";
                $elem08 = isset($sar[8]) && $sar[8] ? $cd27x->get_271_code('CR608', $sar[8]) : "";
                // certification type code
                //
                $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;
                $evt_html .= $elem03 || $elem04 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=2><em>Period</em> {$elem04}</td><td>(MCR) {$elem07}</td></tr>" . PHP_EOL : "";
                $evt_html .= $elem08 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=2><em>Period</em> {$elem08}</td><td>(MCR) {$elem05}</td></tr>" . PHP_EOL : "";
                //
                continue;
            }
            //
            if (strncmp('PWK' . $de, $seg, 4) === 0) {
                //	paperwork
                $sar = explode($de, $seg);
                //
                $tr_str = '';
                //
                $elem01 = isset($sar[1]) && $sar[1] ? $cd27x->get_271_code('PWK01', $sar[1]) : "";
                // paperwork code
                $elem02 = isset($sar[2]) && $sar[2] ? $cd27x->get_271_code('PWK02', $sar[2]) : "";
                // delivery code
                $elem05 = isset($sar[5]) && $sar[5] == 'AC' ? "Attachment Control Number" : "";
                $elem06 = isset($sar[6]) && $sar[6] ? $sar[6] : "";
                $elem07 = isset($sar[7]) && $sar[7] ? $sar[7] : "";
                //
                $tr_str .= "<tr class='{$cls}'><td><em>Paperwork</em></td><td colspan=3>{$elem01} {$elem02}</td></tr>" . PHP_EOL;
                $tr_str .= $elem05 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$elem05} {$elem06}</td></tr>" . PHP_EOL : "";
                $tr_str .= $elem07 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$elem07}</td></tr>" . PHP_EOL : "";
                //
                if ($loopid == '2000E') {
                    $evt_html .= $tr_str;
                } elseif ($loopid == '2000F') {
                    $svc_html .= $tr_str;
                }
                continue;
            }
            //
            if (strncmp('MSG' . $de, $seg, 4) === 0) {
                //	paperwork
                $sar = explode($de, $seg);
                //
                $elem01 = isset($sar[1]) && $sar[1] ? $sar[1] : "";
                //
                if ($loopid == '2000E') {
                    $evt_html .= $elem01 ? "<tr class='{$cls}'><td><em>Message</em></td><td colspan=3>{$elem01}</td></tr>" . PHP_EOL : "";
                } elseif ($loopid == '2000F') {
                    $svc_html .= $elem01 ? "<tr class='{$cls}'><td><em>Message</em></td><td colspan=3>{$elem01}</td></tr>" . PHP_EOL : "";
                }
                continue;
            }
            //
            if (strncmp('SV1' . $de, $seg, 4) === 0) {
                //	professional services
                $sar = explode($de, $seg);
                //
                $elem01 = '';
                if (isset($sar[1]) && strpos($sar[1], $ds)) {
                    $ar01 = explode($ds, $sar[1]);
                    $ct = count($ar01);
                    $elem01 = isset($ar01[0]) && $ar01[0] ? $cd27x->get_271_code('SV101', $ar01[0]) : "";
                    //
                    if ($ct == 8) {
                        $ct = 7;
                        $elem01 .= " " . $ar01[1] . " --  " . $ar01[8];
                    } else {
                        $elem01 .= " " . $ar01[1];
                    }
                    if ($elem01 && $ct > 2) {
                        for ($i = 2; $i < $ct; $i++) {
                            $elem01 .= ' ' . $ar01[$i];
                        }
                    }
                } elseif (isset($sar[1]) && $sar[1]) {
                    $elem01 = $sar[1];
                }
                $elem02 = isset($sar[2]) && $sar[2] ? edih_format_money($sar[2]) : "";
                $elem03 = isset($sar[3]) && $sar[3] ? $cd27x->get_271_code('SV103', $sar[3]) : "";
                $elem04 = isset($sar[4]) && $sar[4] ? $sar[4] : "";
                $elem11 = isset($sar[11]) && $sar[11] ? $cd27x->get_271_code('HCR04', $sar[11]) : "";
                $elem20 = isset($sar[20]) && $sar[20] ? $cd27x->get_271_code('SV120', $sar[20]) : "";
                //
                $elem11 = $elem11 ? "<em>EPSDT</em> " . $elem11 : "";
                //
                $svc_html .= $elem01 ? "<tr class='{$cls}'><td><em>Professional Svc</em></td><td colspan=3>{$elem01} {$elem02}</td></tr>" . PHP_EOL : "";
                $svc_html .= $elem03 || $elem04 || $elem11 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$elem03} {$elem04} {$elem11}</td></tr>" . PHP_EOL : "";
                $svc_html .= $elem20 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$elem20}</td></tr>" . PHP_EOL : "";
                //
                continue;
            }
            //
            if (strncmp('SV2' . $de, $seg, 4) === 0) {
                //	paperwork
                $sar = explode($de, $seg);
                //
                $elem01 = '';
                if (isset($sar[1]) && strpos($sar[1], $ds)) {
                    $ar01 = explode($ds, $sar[1]);
                    $ct = count($ar01);
                    $elem01 = isset($ar01[0]) && $ar01[0] ? $cd27x->get_271_code('SV101', $ar01[0]) : "";
                    //
                    if ($ct == 8) {
                        $ct = 7;
                        $elem01 .= " " . $ar01[1] . " --  " . $ar01[8];
                    } else {
                        $elem01 .= " " . $ar01[1];
                    }
                    if ($elem01 && count($ar01) > 2) {
                        for ($i = 2; $i < $ct; $i++) {
                            $elem01 .= ' ' . $ar01[$i];
                        }
                    }
                } elseif (isset($sar[1]) && $sar[1]) {
                    $elem01 = $sar[1];
                }
                $elem02 = isset($sar[2]) && $sar[2] ? edih_format_money($sar[2]) : "";
                $elem03 = isset($sar[3]) && $sar[3] ? $cd27x->get_271_code('SV103', $ar01[3]) : "";
                $elem04 = isset($sar[4]) && $sar[4] ? $sar[4] : "";
                $elem05 = isset($sar[5]) && $sar[5] ? $sar[5] : "";
                $elem06 = isset($sar[6]) && $sar[6] ? edih_format_money($sar[6]) : "";
                $elem10 = isset($sar[20]) && $sar[20] ? $cd27x->get_271_code('SV120', $ar01[20]) : "";
                //
                $svc_html .= $elem01 ? "<tr class='{$cls}'><td><em>Inst Service</em></td><td colspan=3>{$elem01} {$elem02}</td></tr>" . PHP_EOL : "";
                $svc_html .= $elem03 || $elem04 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$elem03} {$elem04} {$elem05} {$elem06}</td></tr>" . PHP_EOL : "";
                $svc_html .= $elem10 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$elem10}</td></tr>" . PHP_EOL : "";
                //
                continue;
            }
        }
        //
        $str_html .= $hdr_html;
        $str_html .= $src_html ? $src_html : "";
        $str_html .= $rcv_html ? $rcv_html : "";
        $str_html .= $sbr_nm1_html ? $sbr_nm1_html : "";
        $str_html .= $dep_nm1_html ? $dep_nm1_html : "";
        $str_html .= $evt_html ? $evt_html : "";
        $str_html .= $svc_html ? $svc_html : "";
        $str_html .= "<tr><td colspan=4>&nbsp;</td></tr>" . PHP_EOL;
        $str_html .= "</tbody>" . PHP_EOL . "</table>" . PHP_EOL;
    }
    //
    return $str_html;
}
Exemplo n.º 3
0
/**
 * Produce an html display of information in
 * the x12 edi 271 eligibility report for a particular patient
 * 
 * @uses edih_271_codes()
 * @uses edih_format_money()
 * @uses edih_format_date() 
 * @uses edih_format_percent() 
 * 
 * @param object   edih_x12_file type 271
 * @param string   bht03 or clm01 reference for transaction
 * @return string
 */
function edih_277_transaction_html($obj277, $bht03, $accordion = false)
{
    // get the transaction segments
    $trans = $obj277->edih_x12_transaction($bht03);
    // get other necessary items
    $de = $obj277->edih_delimiters()['e'];
    $ds = $obj277->edih_delimiters()['s'];
    $dr = $obj277->edih_delimiters()['r'];
    $fn = $obj277->edih_filename();
    //
    if (!is_array($trans) || !count($trans)) {
        $str_html = "<p>Did not find transaction {$bht03} in {$fn}</p>" . PHP_EOL;
        return $str_html;
    }
    //
    $cd27x = new edih_271_codes($ds, $dr);
    //
    $h3_lbl = '';
    $str_html = "";
    $hdr_html = "";
    //
    $hdr_html = "<table id={$bht03} class='h277' columns=4>";
    $hdr_html .= "<caption>Claim Status</caption>" . PHP_EOL;
    $hdr_html .= "<thead>" . PHP_EOL;
    $hdr_html .= "<tr><th>Reference</th><th>Information</th><th colspan=2>{$fn}</th></tr>" . PHP_EOL;
    //
    $hdr_html .= "</thead>" . PHP_EOL . "<tbody>" . PHP_EOL;
    //
    $src_html = "";
    $rcv_html = "";
    $prv_html = "";
    $sbr_nm1_html = "";
    $dep_nm1_html = "";
    $sbr_stc_html = "";
    $dep_stc_html = "";
    //
    $trns_ct = count($trans);
    for ($i = 0; $i < $trns_ct; $i++) {
        foreach ($trans[$i] as $seg) {
            //
            $idtype = '';
            $name = '';
            $var = '';
            $rej_reason = '';
            $follow = '';
            $addr = '';
            // debug
            // echo "$i loop: $loopid Segment: $seg".PHP_EOL;
            //
            if (strncmp('BHT' . $de, $seg, 4) === 0) {
                $loopid = 'Heading';
                $sar = explode($de, $seg);
                if (isset($sar[1])) {
                    if ($sar[1] == '0010') {
                        $elem01 = "Src, Rcv, Prv, Sbr, Dep";
                    } elseif ($sar[1] == '0085') {
                        $elem01 = "Src, Rcv, Prv, Pt";
                    } else {
                        $elem01 = "Not determined ({$sar[1]})";
                    }
                } else {
                    $elem01 = '';
                }
                //
                $elem02 = isset($sar[2]) && $sar[2] !== false ? $cd27x->get_271_code('BHT02', $sar[2]) : "";
                $elem03 = isset($sar[3]) && $sar[3] ? $sar[3] : "";
                $elem04 = isset($sar[4]) && $sar[4] ? edih_format_date($sar[4]) : "";
                $elem06 = isset($sar[6]) && $sar[6] ? $cd27x->get_271_code('BHT06', $sar[6]) : "";
                //
                $hdr_html .= "<tr><td colspan=2><em>Reference:</em> {$elem03}</td><td colspan=2><em>Sequence:</em> {$elem01}</td></tr>" . PHP_EOL;
                $hdr_html .= "<tr><td colspan=2><em>Date:</em> {$elem04}</td><td colspan=2><em>Type:</em> {$elem02}</td>" . PHP_EOL;
                $hdr_html .= $elem06 ? "<tr><td>&gt;</td><td colspan=3><em>Type:</em> {$elem06}</td></tr>" . PHP_EOL : "";
                //
                $bht = $elem03;
                continue;
            }
            //
            if (strncmp('HL' . $de, $seg, 3) === 0) {
                $sar = explode($de, $seg);
                $elem03 = isset($sar[3]) ? $sar[3] : "";
                if ($elem03 == '20') {
                    // level code
                    $loopid = '2000A';
                    // info source (payer)
                    $cls = "src";
                    $src_html .= "<tr class='{$cls}'><td colspan=4><b>Information Source</b></td></tr>" . PHP_EOL;
                } elseif ($elem03 == '21') {
                    $loopid = '2000B';
                    // info receiver (clinic)
                    $cls = "rcv";
                    $rcv_html .= "<tr class='{$cls}'><td colspan=4><b>Information Receiver</b></td></tr>" . PHP_EOL;
                } elseif ($elem03 == '19') {
                    $loopid = '2000C';
                    // provider
                    $cls = "prv";
                    $has_eb = false;
                    $prv_html .= "<tr class='{$cls}'><td colspan=4><b>Provider</b></td></tr>" . PHP_EOL;
                } elseif ($elem03 == '22') {
                    $loopid = '2000D';
                    // subscriber
                    $cls = "sbr";
                    $sbr_nm1_html .= "<tr class='{$cls}'><td colspan=4><b>Subscriber</b></td></tr>" . PHP_EOL;
                } elseif ($elem03 == 'PT') {
                    $loopid = '2000D';
                    // patient in 277CA
                    $cls = "sbr";
                    $sbr_nm1_html .= "<tr class='{$cls}'><td colspan=4><b>Patient</b></td></tr>" . PHP_EOL;
                } elseif ($elem03 == '23') {
                    $loopid = '2000E';
                    // dependent
                    $cls = "dep";
                    $dep_nm1_html .= "<tr class='{$cls}'><td colspan=4><b>Dependent</b></td></tr>" . PHP_EOL;
                } else {
                    csv_edihist_log("edih_277_transaction_html: HL segment error {$fn}");
                }
                //
                $qtystr = '';
                // reset for QTY and AMT segments in 277CA
                continue;
            }
            //
            if (strncmp('NM1' . $de, $seg, 4) === 0) {
                $sar = explode($de, $seg);
                //
                $nm101 = isset($sar[1]) ? $sar[1] : '';
                $descr = $nm101 ? $cd27x->get_271_code('NM101', $nm101) : "";
                //
                $name = isset($sar[3]) && $sar[3] ? $sar[3] : "";
                $name .= isset($sar[7]) && $sar[7] ? " {$sar[7]}" : "";
                $name .= isset($sar[4]) && $sar[4] ? ", {$sar[4]}" : "";
                $name .= isset($sar[5]) && $sar[5] ? " {$sar[5]}" : "";
                $nm109 = isset($sar[9]) && $sar[9] ? $sar[9] : "";
                //
                $nm108 = isset($sar[8]) && $sar[8] ? $cd27x->get_271_code('NM108', $sar[8]) : "";
                //
                if ($loopid == '2000A') {
                    $src_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3 title='{$descr}'>{$name}</td></tr>" . PHP_EOL;
                    $src_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3 title='{$descr}'><em>{$nm108}</em> {$nm109}</td></tr>" . PHP_EOL;
                    $loopid = '2100A';
                } elseif ($loopid == '2000B') {
                    $rcv_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3 title='{$descr}'>{$name}</td></tr>" . PHP_EOL;
                    $rcv_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3 title='{$descr}'><em>{$nm108}</em> {$nm109}</td></tr>" . PHP_EOL;
                    $loopid = '2100B';
                } elseif ($loopid == '2000C') {
                    $prv_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3 title='{$descr}'>{$name}</td></tr>" . PHP_EOL;
                    $prv_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3 title='{$descr}'><em>{$nm108}</em> {$nm109}</td></tr>" . PHP_EOL;
                    $loopid = '2100C';
                } elseif ($loopid == '2000D') {
                    $sbr_nm1_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3 title='{$descr}'>{$name}</td></tr>" . PHP_EOL;
                    $sbr_nm1_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3 title='{$descr}'><em>{$nm108}</em> {$nm109}</td></tr>" . PHP_EOL;
                    $h3_lbl = $name;
                    $loopid = '2100D';
                } elseif ($loopid == '2000E') {
                    $dep_nm1_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3 title='{$descr}'>{$name}</td></tr>" . PHP_EOL;
                    $dep_nm1_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3 title='{$descr}'><em>{$nm108}</em> {$nm109}</td></tr>" . PHP_EOL;
                    $h3_lbl = $name;
                    $loopid = '2100E';
                }
                //
                continue;
            }
            //								//
            if (strncmp('PER' . $de, $seg, 4) === 0) {
                $sar = explode($de, $seg);
                //
                $elem01 = isset($sar[1]) ? $sar[1] : '';
                $elem02 = isset($sar[2]) ? $sar[2] : '';
                $elem03 = isset($sar[3]) ? $cd27x->get_271_code('PER03', $sar[3]) : "";
                $elem04 = isset($sar[4]) ? $sar[4] : '';
                $elem05 = isset($sar[5]) ? $cd27x->get_271_code('PER03', $sar[5]) : "";
                $elem06 = isset($sar[6]) ? $sar[6] : '';
                $elem07 = isset($sar[7]) ? $cd27x->get_271_code('PER03', $sar[7]) : "";
                $elem08 = isset($sar[8]) ? $sar[8] : '';
                $elem09 = isset($sar[9]) ? $sar[9] : '';
                //
                if ($loopid == '2100A') {
                    $src_html .= "<tr class='{$cls}'><td colspan=2>{$elem02}</td><td colspan=2 title='{$elem03} {$elem05} {$elem07}'>{$elem04} {$elem06} {$elem08}</td></tr>" . PHP_EOL;
                } else {
                    csv_edihist_log('edih_277_html: PER segment not in 2100A loop ' . $fn);
                }
                //
                continue;
            }
            //
            if (strncmp('TRN' . $de, $seg, 4) === 0) {
                $sar = explode($de, $seg);
                //
                $elem01 = isset($sar[1]) && $sar[1] == "1" ? "Transaction Ref" : "Trace";
                $elem02 = isset($sar[2]) ? $sar[2] : '';
                $elem03 = isset($sar[3]) ? $sar[3] : '';
                $elem04 = isset($sar[4]) ? $sar[4] : '';
                //
                if ($loopid == '2100B') {
                    $rcv_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3><em>{$elem01}</em> {$elem02}</td></tr>" . PHP_EOL;
                    $loopid = '2200B';
                } elseif ($loopid == '2100C') {
                    $prv_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3><em>{$elem01}</em> {$elem02}</td></tr>" . PHP_EOL;
                    $loopid = '2200C';
                } elseif ($loopid == '2100D') {
                    $sbr_stc_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3><em>{$elem01}</em> {$elem02}</td></tr>" . PHP_EOL;
                    $h3_lbl = $h3_lbl ? $h3_lbl . ' ' . $elem02 : $h3_lbl;
                    $loopid = '2200D';
                } elseif ($loopid == '2100E') {
                    $dep_stc_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3><em>{$elem01}</em> {$elem02}</td></tr>" . PHP_EOL;
                    $h3_lbl = $h3_lbl ? $h3_lbl . ' ' . $elem02 : $h3_lbl;
                    $loopid = '2200E';
                }
                //
                continue;
            }
            //
            if (strncmp('STC' . $de, $seg, 4) === 0) {
                $sar = explode($de, $seg);
                //
                if (isset($sar[1])) {
                    if (strpos($sar[1], $ds)) {
                        // claim status category : claim status : entity identifier
                        $scda = explode($ds, $sar[1]);
                        $sc101 = isset($scda[0]) && $scda[0] ? $cd27x->get_271_code('HCCSCC', $scda[0]) : "";
                        $sc102 = isset($scda[1]) && $scda[1] ? $cd27x->get_271_code('HCCSC', $scda[1]) : "";
                        $sc103 = isset($scda[2]) && $scda[2] ? $cd27x->get_271_code('NM101', $scda[2]) : "";
                    }
                } else {
                    $stc01 = $sar[1];
                }
                $stc02 = isset($sar[2]) && $sar[2] ? edih_format_date($sar[2]) : "";
                // status information date
                $stc03 = "";
                // action code
                if (isset($sar[3])) {
                    if ($sar[3] == 'WQ') {
                        $stc03 = "Accepted";
                    } elseif ($sar[3] == 'F') {
                        $stc03 = "Final";
                    } elseif ($sar[3] == '15') {
                        $stc03 = "Correct/Resubmit";
                    } elseif ($sar[3] == 'U') {
                        $stc03 = "Rejected";
                    } else {
                        $stc03 = $sar[3];
                    }
                }
                $stc04 = isset($sar[4]) && $sar[4] ? edih_format_money($sar[4]) : "";
                // billed amount
                $stc05 = isset($sar[5]) && $sar[5] ? edih_format_money($sar[5]) : "";
                // paid amount
                $stc06 = isset($sar[6]) && $sar[6] ? edih_format_date($sar[6]) : "";
                // payment date
                //$stc07  not used
                $stc08 = isset($sar[8]) && $sar[8] ? edih_format_date($sar[8]) : "";
                // check issue date
                $stc09 = isset($sar[9]) && $sar[9] ? $sar[9] : "";
                // check or eft number
                //
                $stc10 = "";
                if (isset($sar[10]) && $sar[10]) {
                    // claim status category : claim status : entity identifier
                    if (strpos($sar[10], $ds)) {
                        $scda = explode($ds, $sar[1]);
                        $sc201 = isset($scda[0]) && $scda[0] ? $cd27x->get_271_code('HCCSCC', $scda[0]) : "";
                        $sc202 = isset($scda[1]) && $scda[1] ? $cd27x->get_271_code('HCCSC', $scda[1]) : "";
                        $sc203 = isset($scda[2]) && $scda[2] ? $cd27x->get_271_code('NM101', $scda[2]) : "";
                        $sc204 = isset($scda[3]) && ($scda[3] = 'RA') ? "Rx Reject/Payment Codes" : "";
                    } else {
                        $stc10 = $sar[10];
                    }
                }
                //
                $stc11 = "";
                if (isset($sar[11]) && $sar[11]) {
                    // claim status category : claim status : entity identifier
                    if (strpos($sar[10], $ds)) {
                        $scda = explode($ds, $sar[1]);
                        $sc301 = isset($scda[0]) && $scda[0] ? $cd27x->get_271_code('HCCSCC', $scda[0]) : "";
                        $sc302 = isset($scda[1]) && $scda[1] ? $cd27x->get_271_code('HCCSC', $scda[1]) : "";
                        $sc303 = isset($scda[2]) && $scda[2] ? $cd27x->get_271_code('NM101', $scda[2]) : "";
                        $sc304 = isset($scda[3]) && ($scda[3] = 'RA') ? "Rx Reject/Payment Codes" : "";
                    } else {
                        $stc11 = $sar[10];
                    }
                }
                //
                $stc12 = isset($sar[12]) && $sar[12] ? $sar[12] : "";
                // message
                //
                $stc_html = isset($sc101) ? "<tr class='{$cls}'><td>{$stc03}</td><td colspan=2>{$sc101}</td><td>{$stc02} {$stc04}</td></tr>" . PHP_EOL : "";
                $stc_html .= isset($sc102) ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$sc102}</td></tr>" . PHP_EOL : "";
                $stc_html .= isset($sc103) && $sc103 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3><em>Entity</em> {$sc103}</td></tr>" . PHP_EOL : "";
                $stc_html .= $stc05 || $stc06 || $stc08 || $stc09 ? "<tr class='{$cls}'><td><em>Payment</em></td><td colspan=3>{$stc05} {$stc06} {$stc08} {$stc09}</td></tr>" . PHP_EOL : "";
                $stc_html .= isset($sc201) ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$sc201} {$sc204}</td></tr>" . PHP_EOL : "";
                $stc_html .= isset($sc202) ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$sc202}</td></tr>" . PHP_EOL : "";
                $stc_html .= isset($sc203) && $sc203 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3><em>Entity</em> {$sc203}</td></tr>" . PHP_EOL : "";
                $stc_html .= isset($sc301) ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$sc301} {$sc304}</td></tr>" . PHP_EOL : "";
                $stc_html .= isset($sc302) ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$sc302}</td></tr>" . PHP_EOL : "";
                $stc_html .= isset($sc303) && $sc303 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3><em>Entity</em> {$sc303}</td></tr>" . PHP_EOL : "";
                $stc_html .= $stc12 ? "<tr class='{$cls}'><td><em>Message</em></td><td colspan=3>{$stc12}</td></tr>" . PHP_EOL : "";
                //
                if ($loopid == '2200B') {
                    $rcv_html .= $stc_html;
                } elseif ($loopid == '2200C') {
                    $prv_html .= $stc_html;
                } elseif ($loopid == '2200D') {
                    $sbr_stc_html .= $stc_html;
                } elseif ($loopid == '2200E') {
                    $dep_stc_html .= $stc_html;
                }
                //
                continue;
            }
            // in 277CA, expect QTY followed by AMT
            // do not expect QTY or AMT in regular 277
            if (strncmp('QTY' . $de, $seg, 4) === 0) {
                $sar = explode($de, $seg);
                if (isset($sar[1])) {
                    if ($sar[1] == '90') {
                        $qtystr = "Acknowledged Quantity ";
                    } elseif ($sar[1] == 'AA') {
                        $qtystr = "Unacknowledged Quantity ";
                    } elseif ($sar[1] == 'QA') {
                        $qtystr = "Quantity Approved ";
                    } elseif ($sar[1] == 'QC') {
                        $qtystr = "Quantity Disapproved ";
                    } else {
                        $qtystr = "Quantity ";
                    }
                } else {
                    $qtystr = "";
                }
                $qtystr .= isset($sar[2]) && $sar[2] ? $sar[2] : "";
            }
            //
            if (strncmp('AMT' . $de, $seg, 4) === 0) {
                $sar = explode($de, $seg);
                // 277CA
                $amtstr = isset($sar[1]) && $sar[1] == 'YU' ? "Amt " : "Amt Rej ";
                $amtstr .= isset($sar[2]) && $sar[2] ? edih_format_money($sar[2]) : "";
                //
                if ($loopid == '2200B') {
                    $rcv_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$qtystr} {$amtstr}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2200C') {
                    $prv_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$qtystr} {$amtstr}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2200D') {
                    $sbr_stc_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$qtystr} {$amtstr}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2200E') {
                    $dep_stc_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$qtystr} {$amtstr}</td></tr>" . PHP_EOL;
                }
                $amtstr = '';
                $qtystr = '';
                //
                continue;
            }
            //
            if (strncmp('REF' . $de, $seg, 4) === 0) {
                $sar = explode($de, $seg);
                //
                //
                $elem01 = isset($sar[1]) ? $cd27x->get_271_code('REF', $sar[1]) : '';
                $elem02 = isset($sar[2]) ? $sar[2] : '';
                $elem03 = isset($sar[3]) ? $sar[2] : '';
                //
                if ($loopid == '2200B') {
                    $rcv_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=2><em>{$elem01}</em> {$elem02}</td><td>{$elem03}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2200C') {
                    $prv_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=2><em>{$elem01}</em> {$elem02}</td><td>{$elem03}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2200D' || $loopid == '2220D') {
                    $sbr_stc_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=2><em>{$elem01}</em> {$elem02}</td><td>{$elem03}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2200E' || $loopid == '2220E') {
                    $dep_stc_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=2><em>{$elem01}</em> {$elem02}</td><td>{$elem03}</td></tr>" . PHP_EOL;
                }
                //
                continue;
            }
            //
            if (strncmp('DTP' . $de, $seg, 4) === 0) {
                //
                $sar = explode($de, $seg);
                $var = '';
                //
                $elem01 = isset($sar[1]) && $sar[1] ? $cd27x->get_271_code('DTP', $sar[1]) : "";
                $elem02 = isset($sar[2]) ? $sar[2] : '';
                $elem03 = isset($sar[3]) ? $sar[3] : '';
                //
                $idtype = $elem01 ? $cd27x->get_271_code('DTP', $elem01) : "";
                if ($elem02 == 'D8' && $elem03) {
                    $var = edih_format_date($elem03);
                } elseif ($elem02 == 'RD8' && $elem03) {
                    $var = edih_format_date(substr($elem03, 0, 8));
                    $var .= ' - ' . edih_format_date(substr($elem03, -8));
                }
                //
                if ($loopid == '2200D' || $loopid == '2220D') {
                    $sbr_stc_html .= "<tr class='{$cls}'><td>&gt;</td><td>{$elem01}</td><td colspan=2>{$var}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2200E' || $loopid == '2220E') {
                    $dep_stc_html .= "<tr class='{$cls}'><td>&gt;</td><td>{$elem01}</td><td colspan=2>{$var}</td></tr>" . PHP_EOL;
                }
                //
                continue;
            }
            //
            if (strncmp('SVC' . $de, $seg, 4) === 0) {
                //
                $sar = explode($de, $seg);
                //
                $elem01 = '';
                // composite procedure code source:code:modifier:modifier
                if (isset($sar[1]) && $sar[1]) {
                    // construct a code source code modifier string
                    if (strpos($sar[1], $ds)) {
                        $scda = explode($ds, $sar[1]);
                        reset($scda);
                        while (list($key, $val) = each($scda)) {
                            if ($key == 0 && $val) {
                                $elem01 = $cd27x->get_271_code('EB13', $val);
                            } else {
                                $elem01 .= " " . $val;
                            }
                        }
                    } else {
                        $elem01 = $sar[1];
                    }
                }
                //
                $elem02 = isset($sar[2]) && $sar[2] ? edih_format_money($sar[2]) : "";
                // billed amount
                $elem03 = isset($sar[3]) && $sar[3] ? edih_format_money($sar[3]) : "";
                // paid amount
                $elem04 = isset($sar[4]) && $sar[4] ? $sar[4] : "";
                // revenue code
                $elem05 = isset($sar[5]) && $sar[5] ? $sar[5] : "";
                // quantity
                // $elem06 not used
                $elem07 = isset($sar[7]) && $sar[7] ? $sar[7] : "";
                // original unis of service
                //
                if ($loopid == '2200B') {
                    $rcv_html .= "<tr class='{$cls}'><td><em>Service</em></td><td>{$elem01}</td><td>{$elem02}</td><td>{$elem04}</td></tr>" . PHP_EOL;
                    $rcv_html .= $elem03 || $elem04 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$elem03} {$elem04}</td></tr>" . PHP_EOL : "";
                } elseif ($loopid == '2200D' || $loopid == '2220D') {
                    $sbr_stc_html .= "<tr class='{$cls}'><td><em>Service</em></td><td>{$elem01}</td><td colspan=2>{$elem02} {$elem04}</td></tr>" . PHP_EOL;
                    $sbr_stc_html .= $elem03 || $elem04 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$elem03} {$elem04}</td></tr>" . PHP_EOL : "";
                } elseif ($loopid == '2200E' || $loopid == '2220E') {
                    $dep_stc_html .= "<tr class='{$cls}'><td><em>Service</em></td><td>{$elem01}</td><td colspan=2>{$elem02} {$elem04}</td></tr>" . PHP_EOL;
                    $dep_stc_html .= $elem03 || $elem04 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$elem03} {$elem04}</td></tr>" . PHP_EOL : "";
                }
                //
                continue;
            }
            //
        }
        //
        if ($accordion) {
            $str_html .= "<h3>{$bht} {$h3_lbl}</h3>" . PHP_EOL;
            $str_html .= "<div id='ac_{$bht}'>" . PHP_EOL;
        }
        $str_html .= $hdr_html ? $hdr_html : "";
        $str_html .= $src_html ? $src_html : "";
        $str_html .= $rcv_html ? $rcv_html : "";
        $str_html .= $prv_html ? $prv_html : "";
        $str_html .= $sbr_nm1_html ? $sbr_nm1_html : "";
        $str_html .= $sbr_stc_html ? $sbr_stc_html : "";
        $str_html .= $dep_nm1_html ? $dep_nm1_html : "";
        $str_html .= $dep_stc_html ? $dep_stc_html : "";
        $str_html .= "<tr><td colspan=4>&nbsp;</td></tr>" . PHP_EOL;
        $str_html .= "</tbody>" . PHP_EOL . "</table>" . PHP_EOL;
        //
        if ($accordion) {
            $str_html .= "</div>" . PHP_EOL;
        }
    }
    return $str_html;
}
Exemplo n.º 4
0
/**
 * Create an HTML rendition of the 835 check payment transaction.
 * 
 *
 * @param array
 * @param object
 * @param object
 * @param array
 * @param string
 * 
 * @return string     HTML table 	
 */
function edih_835_payment_html($segments, $codes27x, $codes835, $delimiters, $fname = '')
{
    //
    $str_html = '';
    $pid = $chk = '';
    if (is_array($segments) && count($segments)) {
        $trans_ar = $segments;
    } else {
        csv_edihist_log("edih_835_payment_html: invalid segments argument");
        $str_html .= "<p>invalid segments argument</p>" . PHP_EOL;
        return $str_html;
    }
    if (is_array($delimiters) && count($delimiters)) {
        $de = $delimiters['e'];
        $ds = $delimiters['s'];
        $dr = $delimiters['r'];
    } else {
        csv_edihist_log("edih_835_payment_html: invalid delimiters argument");
        $str_html .= "<p>invalid delimiters argument</p>" . PHP_EOL;
        return $str_html;
    }
    //
    $fn = $fname ? trim($fname) : "";
    //
    // get the code objects right
    $cd835 = $cd27x = '';
    if ('edih_835_codes' == get_class($codes835)) {
        $cd835 = $codes835;
    } elseif ('edih_835_codes' == get_class($codes27x)) {
        $cd835 = $codes27x;
    }
    if ('edih_271_codes' == get_class($codes27x)) {
        $cd27x = $codes27x;
    } elseif ('edih_271_codes' == get_class($codes835)) {
        $cd27x = $codes835;
    }
    if (!$cd835 || !$cd27x) {
        csv_edihist_log('edih_835_payment_html: invalid code class argument');
        $str_html .= "<p>invalid code class argument</p>" . PHP_EOL;
        return $str_html;
    }
    //
    // collect all strings into this variable
    $str_html = "";
    //
    $hdr_html = "<thead>" . PHP_EOL;
    $hdr_html .= "<tr><th>Reference</th><th colspan=2>Information</th><th colspan=2>{$fn}</th></tr>" . PHP_EOL;
    $hdr_html .= "</thead>" . PHP_EOL . "<tbody>" . PHP_EOL;
    $pmt_html = "";
    $src_html = "";
    $rcv_html = "";
    $lx_html = "";
    $clp_html = "";
    $trl_html = "";
    //
    $acctng = array('pmt' => 0, 'fee' => 0, 'clmpmt' => 0, 'clmadj' => 0, 'ptrsp' => 0, 'svcptrsp' => 0, 'svcfee' => 0, 'svcadj' => 0, 'plbadj' => 0);
    //
    foreach ($trans_ar as $trans) {
        $clpsegs = array();
        $lx_ar = array();
        $clp_ct = 0;
        $lx_ct = 0;
        $loop = '';
        $lxkey = '';
        $capstr = "Remittance ";
        $tblid = "";
        //
        foreach ($trans as $seg) {
            //
            if (strncmp('ST' . $de, $seg, 3) === 0) {
                $loopid = 'header';
                continue;
            }
            //
            if (strncmp('BPR' . $de, $seg, 4) === 0) {
                $loopid = 'header';
                $cls = 'pmt';
                //
                $acctng = array('pmt' => 0, 'fee' => 0, 'clmpmt' => 0, 'clmadj' => 0, 'ptrsp' => 0, 'svcptrsp' => 0, 'svcfee' => 0, 'svcpmt' => 0, 'svcadj' => 0, 'plbadj' => 0);
                //
                $sar = explode($de, $seg);
                $bpr01 = isset($sar[1]) && $sar[1] ? $cd835->get_835_code('BPR01', $sar[1]) : '';
                // handling code
                $bpr02 = isset($sar[2]) && $sar[2] ? edih_format_money($sar[2]) : '';
                // full payment amount
                $bpr03 = isset($sar[3]) && $sar[3] == 'D' ? 'Debit' : 'Credit';
                // credit or debit flag
                $bpr04 = isset($sar[4]) && $sar[4] ? $sar[4] : '';
                // payment method ACH|CHK|NON
                $bpr05 = isset($sar[5]) && $sar[5] ? $sar[5] : '';
                // payment format code CCP|CTX
                $bpr06 = isset($sar[6]) && $sar[6] ? $sar[6] : '';
                // DFI ID qualifier
                $bpr07 = isset($sar[7]) && $sar[7] ? $sar[7] : '';
                // bank ID
                $bpr08 = isset($sar[8]) && $sar[8] ? $sar[8] : '';
                // account no. qualifier DA
                $bpr09 = isset($sar[9]) && $sar[9] ? $sar[9] : '';
                // sender account number
                $bpr10 = isset($sar[10]) && $sar[10] ? $sar[10] : '';
                // originating company ID
                $bpr11 = isset($sar[11]) && $sar[11] ? $sar[11] : '';
                // originating company supplemental ID
                $bpr12 = isset($sar[12]) && $sar[12] ? $sar[12] : '';
                // deposit acount ID
                $bpr13 = isset($sar[13]) && $sar[13] ? $sar[13] : '';
                // deposit bank ID
                $bpr14 = isset($sar[14]) && $sar[14] ? $sar[14] : '';
                // account type DA deposit SG savings
                $bpr15 = isset($sar[15]) && $sar[15] ? $sar[15] : '';
                // account number
                $bpr16 = isset($sar[16]) && $sar[16] ? edih_format_date($sar[16]) : '';
                // check or payment date
                //
                if ($bpr04 == 'NON') {
                    $pmt_html .= "<tr class='{$cls}'><td>{$bpr16}</td><td>{$bpr03} {$bpr04}</td><td colspan=2>Non Payment</td></tr>" . PHP_EOL;
                } else {
                    $pmt_html .= "<tr class='{$cls}'><td>{$bpr16}</td><td>{$bpr03} {$bpr04}</td><td colspan=2>{$bpr02} to {$bpr13} {$bpr12} {$bpr14}</td></tr>" . PHP_EOL;
                }
                if (strpos('|ACH|BOP|FWT', $bpr04)) {
                    $pmt_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$bpr05} from: {$bpr07} {$bpr09} {$bpr10}</td></tr>" . PHP_EOL;
                }
                $pmt_html .= $bpr11 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3><em>Pmt No.</em> {$bpr11} {$bpr01}</td></tr>" . PHP_EOL : "";
                $acctng['pmt'] = isset($sar[2]) && $sar[2] ? (double) $sar[2] : "";
                //
                continue;
            }
            //
            if (strncmp('TRN' . $de, $seg, 4) === 0) {
                $sar = explode($de, $seg);
                //
                $trn01 = isset($sar[1]) && $sar[1] ? $sar[1] : '';
                // trace type code
                $trn02 = isset($sar[2]) && $sar[2] ? $sar[2] : '';
                // trace number (= BPR11)
                $trn03 = isset($sar[3]) && $sar[3] ? $sar[3] : '';
                // originator ID
                $trn04 = isset($sar[4]) && $sar[4] ? $sar[4] : '';
                // originator supplemental ID
                if ($trn03[0] == '1') {
                    $trn03 = substr($trn03, 1);
                }
                // originator ID is '1' prepended to EIN or TIN
                // the html ID for the table
                $tblid = $trn02 ? $trn02 : "";
                $capstr .= $trn02 ? "Check No: " . $trn02 : "Payment Listing";
                //
                $pmt_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3><em>Trace</em> {$trn02} <em>by</em> {$trn03} {$trn04}</td></tr>" . PHP_EOL;
                //
                continue;
            }
            //
            if (strncmp('CUR' . $de, $seg, 4) === 0) {
                $sar = explode($de, $seg);
                //
                $cur01 = isset($sar[1]) ? $sar[1] : '';
                // entity ID code
                $cur02 = isset($sar[2]) ? $sar[2] : '';
                // currency code
                //
                $pmt_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3><em>Trace</em> {$cur02} by {$cur03} {$cur04}</td></tr>" . PHP_EOL;
                //
                continue;
            }
            //
            if (strncmp('REF' . $de, $seg, 4) === 0) {
                $sar = explode($de, $seg);
                //
                $ref01 = isset($sar[1]) ? $cd27x->get_271_code('REF', $sar[1]) : '';
                // entity ID code
                $ref02 = isset($sar[2]) ? $sar[2] : '';
                // entity ID
                //
                if ($loopid == 'header') {
                    // should not be present for payee receiver
                    $pmt_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3><em>{$ref01}</em> {$ref02}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '1000A') {
                    // source
                    $src_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3><em>{$ref01}</em> {$ref02}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '1000B') {
                    // receiver
                    $rcv_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3><em>{$ref01}</em> {$ref02}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2100') {
                    //
                    $clpsegs[] = $seg;
                } elseif ($loopid == '2110') {
                    //
                    $clpsegs[] = $seg;
                }
                //
                continue;
            }
            if (strncmp('DTM' . $de, $seg, 4) === 0) {
                $sar = explode($de, $seg);
                // DTM in 835 use DTP codes from 271 codes
                $dtm01 = isset($sar[1]) ? $cd27x->get_271_code('DTP', $sar[1]) : '';
                // date qualifier
                $dtm02 = isset($sar[2]) ? edih_format_date($sar[2]) : '';
                // production date
                $dtm05 = isset($sar[5]) ? $sar[5] : '';
                $dtm06 = isset($sar[6]) ? edih_format_date($sar[2]) : '';
                //
                //if ( $elem02 == 'D8' && $elem03) {
                //$dtmar = edih_format_date($elem03);
                //} elseif ( $elem02 == 'RD8' && $elem03) {
                //$dtmar = edih_format_date( substr($elem03, 0, 8) );
                //$dtmar .= ' - '.edih_format_date( substr($elem03, -8) );
                //}
                //}
                //
                if ($loopid == 'header') {
                    // should not be present for payee or receiver
                    $pmt_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3><em>{$dtm01}</em> {$dtm02}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '2100') {
                    $clpsegs[] = $seg;
                } elseif ($loopid == '2110') {
                    $clpsegs[] = $seg;
                }
                //
                continue;
            }
            //
            if (strncmp('N1' . $de, $seg, 3) === 0) {
                $sar = explode($de, $seg);
                //
                $n101 = isset($sar[1]) ? $cd27x->get_271_code('NM101', $sar[1]) : '';
                // entity ID code
                $n102 = isset($sar[2]) ? $sar[2] : '';
                // name
                $n103 = isset($sar[3]) ? $cd27x->get_271_code('NM108', $sar[3]) : '';
                // entity ID type code
                $n104 = isset($sar[4]) ? $sar[4] : '';
                //
                if ($loopid == 'header') {
                    $loopid = '1000A';
                    $cls = 'src';
                    $src_html .= "<tr class='{$cls}'><td><em>{$n101}</em></td><td colspan=3>{$n102} <em>{$n103}</em> {$n104}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '1000A') {
                    $loopid = '1000B';
                    $cls = 'rcv';
                    $rcv_html .= "<tr class='{$cls}'><td><em>{$n101}</em></td><td colspan=3>{$n102} <em>{$n103}</em> {$n104}</td></tr>" . PHP_EOL;
                }
                //
                continue;
            }
            //
            if (strncmp('N3' . $de, $seg, 3) === 0) {
                $sar = explode($de, $seg);
                //
                $n301 = isset($sar[1]) ? $sar[1] : '';
                // address
                $n302 = isset($sar[2]) ? $sar[2] : '';
                // address line 2
                //
                if ($loopid == '1000A') {
                    $src_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$n301} {$n302}</td></tr>" . PHP_EOL;
                } elseif ($loopid == '1000B') {
                    $rcv_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$n301} {$n302}</td></tr>" . PHP_EOL;
                }
                //
                continue;
            }
            //
            if (strncmp('N4' . $de, $seg, 3) === 0) {
                $sar = explode($de, $seg);
                //
                $n401 = isset($sar[1]) ? $sar[1] : '';
                // city
                $n402 = isset($sar[2]) ? $sar[2] : '';
                // state
                $n403 = isset($sar[3]) ? $sar[3] : '';
                // Postal
                $n404 = isset($sar[4]) ? $sar[4] : '';
                // Country
                $n407 = isset($sar[7]) ? $sar[7] : '';
                // Country subdivision
                //
                if ($loopid == '1000A') {
                    $src_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$n401} {$n402} {$n403}</td></tr>" . PHP_EOL;
                    $src_html .= $n404 || $n407 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$n404} {$n405}</td></tr>" . PHP_EOL : "";
                } elseif ($loopid == '1000B') {
                    $rcv_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$n401} {$n402} {$n403}</td></tr>" . PHP_EOL;
                    $rcv_html .= $n404 || $n407 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$n404} {$n405}</td></tr>" . PHP_EOL : "";
                }
                //
                continue;
            }
            //
            if (strncmp('PER' . $de, $seg, 4) === 0) {
                if ($loopid == '2100' || $loopid == '2100') {
                    // loop 2100 only
                    $clpsegs[] = $seg;
                    continue;
                }
                $sar = explode($de, $seg);
                $per01_ar = array('CX' => 'Claims Dept', 'BL' => 'Technical Dept', 'IC' => 'Website');
                $per01 = $per02 = $per03 = $per04 = $per05 = $per06 = $per07 = $per08 = '';
                foreach ($sar as $k => $v) {
                    switch ((int) $k) {
                        case 0:
                            break;
                        case 1:
                            $per01 = isset($per01_ar[$v]) ? $per01_ar[$v] : $v;
                            break;
                        case 2:
                            $per02 = $v;
                            break;
                        case 3:
                            $per03 = $v;
                            break;
                        case 4:
                            $per04 = $per03 == 'TE' ? edih_format_telephone($v) : $v;
                            break;
                        case 5:
                            $per05 = $v;
                            break;
                        case 6:
                            $per06 = $per03 == 'TE' ? edih_format_telephone($v) : $v;
                            break;
                        case 7:
                            $per07 = $v;
                            break;
                        case 8:
                            $per08 = $per03 == 'TE' ? edih_format_telephone($v) : $v;
                    }
                }
                //
                if ($loopid == '1000A') {
                    $src_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$per01} {$per02} {$per03} {$per04} </td></tr>" . PHP_EOL;
                    $src_html .= $per05 || $per07 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$per05} {$per06} {$per07} {$per08}</td></tr>" . PHP_EOL : "";
                } elseif ($loopid == '1000B') {
                    $rcv_html .= "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$per01} {$per02} {$per03} {$per04} </td></tr>" . PHP_EOL;
                    $rcv_html .= $per05 || $per07 ? "<tr class='{$cls}'><td>&gt;</td><td colspan=3>{$per05} {$per06} {$per07} {$per08}</td></tr>" . PHP_EOL : "";
                }
                //
                continue;
            }
            //
            if (strncmp('RDM' . $de, $seg, 4) === 0) {
                // remittance delivery method
                // loop 1000B -- add to pmt information
                $sar = explode($de, $seg);
                //
                $rdm01 = isset($sar[1]) ? $sar[1] : '';
                if ($sar[1] == 'BM') {
                    $rdm01 = 'By mail';
                } elseif ($sar[1] == 'EM') {
                    $rdm01 = 'By e-mail';
                } elseif ($sar[1] == 'FT') {
                    $rdm01 = 'By file transfer';
                } elseif ($sar[1] == 'OL') {
                    $rdm01 = 'By online';
                }
                $rdm02 = isset($sar[2]) ? $sar[2] : '';
                // name
                $rdm03 = isset($sar[3]) ? $sar[3] : '';
                // number
                //
                $pmt_html .= "<tr class='{$cls}'><td>{$rdm01}</td><td colspan=3>{$rdm02} {$rdm03}</td></tr>" . PHP_EOL;
                //
                continue;
            }
            //
            if (strncmp('LX' . $de, $seg, 3) === 0) {
                // LX can end loop 1000B or a claim grouping
                if ($loopid == '1000B') {
                    // finish off pmt, src, and rcv
                    $rcv_html .= "</tbody>" . PHP_EOL . "</table>" . PHP_EOL;
                } elseif ($loopid == '2110') {
                    if ($lxkey && array_key_exists($lxkey, $lx_ar)) {
                        // LX claim grouping -- cannot predict detail
                        // LX can follow loop 2110
                        if (count($clpsegs)) {
                            $clp_html .= edih_835_transaction_html($clpsegs, $codes27x, $codes835, $delimiters);
                            $clpsegs = array();
                        }
                        $nlx_html = $lx_html ? "<table name='lx_{$lxkey}' class='h835c' columns=4>" . PHP_EOL . "<tbody>" . PHP_EOL . $lx_html . PHP_EOL : "";
                        $lx_ar[$lxkey]['lx'] = $nlx_html;
                        $lx_ar[$lxkey]['clp'] = $clp_html;
                        $lx_html = "";
                        $clp_html = "";
                        $clpsegs = array();
                    }
                }
                $sar = explode($de, $seg);
                $lxkey = isset($sar[1]) && $sar[1] ? $sar[1] : '';
                // identify a grouping for claim info
                $lx_ar[$lxkey] = array();
                //
                $loopid = '2000';
                $cls = 'lx';
                //$lx_ct = count($lx_ar);
                $lx_html .= $lxkey ? "<tr class='{$cls}'><td colspan=4><em>Claim Group</em> {$lxkey}</td></tr>" . PHP_EOL : "";
                continue;
            }
            //
            if (strncmp('TS3' . $de, $seg, 4) === 0) {
                $sar = explode($de, $seg);
                // this looks like a medicare part A or hospital remittance segment
                // segment TS2 gives DRG totals -- not read in this sequence. If you need it, code it
                $loopid = '2000';
                $ts301 = isset($sar[1]) && $sar[1] ? $sar[1] : '';
                // Provider ID
                $ts302 = isset($sar[2]) && $sar[2] ? $cd27x->get_271_code('POS', $sar[2]) : '';
                // Facility Code (place of service)
                $ts303 = isset($sar[3]) && $sar[3] ? edih_format_date($sar[3]) : '';
                // date - last day of provider fiscal year
                $ts304 = isset($sar[4]) && $sar[4] ? $sar[4] : '';
                // quantity
                $ts305 = isset($sar[5]) && $sar[5] ? edih_format_money($sar[5]) : '';
                // monetary amount
                //
                $lx_html .= "<tr class='{$cls}'><td><em>Prv</em> {$ts301}</td><td colspan=3>{$ts302} <em>Count</em> {$ts304} <em>Amount</em> {$ts305}</td></tr>" . PHP_EOL;
                //
                // Medicare Part A
                $tr1 = "<tr class='{$cls}'><td>&gt;</td><td colspan=3>";
                $tr2 = "</td></tr>" . PHP_EOL;
                //
                $lx_html .= isset($sar[13]) && $sar[13] ? $tr1 . "Total MSP Payer Amt: " . edih_format_money($sar[13]) . $tr2 . PHP_EOL : "";
                $lx_html .= isset($sar[15]) && $sar[15] ? $tr1 . "Total Non-Lab Chrg Amt: " . edih_format_money($sar[15]) . $tr2 . PHP_EOL : "";
                $lx_html .= isset($sar[17]) && $sar[17] ? $tr1 . "Total HCPCS Rpt Chrg Amt: " . edih_format_money($sar[17]) . $tr2 . PHP_EOL : "";
                $lx_html .= isset($sar[18]) && $sar[18] ? $tr1 . "Total HCPCS Payable Amt: " . edih_format_money($sar[18]) . $tr2 . PHP_EOL : "";
                $lx_html .= isset($sar[20]) && $sar[20] ? $tr1 . "Total Prof Cmpnt Amt: " . edih_format_money($sar[20]) . $tr2 . PHP_EOL : "";
                $lx_html .= isset($sar[21]) && $sar[21] ? $tr1 . "Total MSP Pt Liab Met Amt: " . edih_format_money($sar[21]) . $tr2 . PHP_EOL : "";
                $lx_html .= isset($sar[22]) && $sar[22] ? $tr1 . "Total MSP Pt Reimb Amt: " . edih_format_money($sar[22]) . $tr2 . PHP_EOL : "";
                $lx_html .= isset($sar[23]) && $sar[23] ? $tr1 . "Total PIP Claim Count: " . $sar[23] . $tr2 . PHP_EOL : "";
                $lx_html .= isset($sar[24]) && $sar[24] ? $tr1 . "Total PIP Claim Count: " . edih_format_money($sar[24]) . $tr2 . PHP_EOL : "";
                //
                continue;
            }
            //
            if (strncmp('TS2' . $de, $seg, 4) === 0) {
                csv_edihist_log("edih_835_transaction_html: segment TS2 present in {$fn}");
                // Medicare Part A
                $tr1 = "<tr class='{$cls}'><td>&gt;</td><td colspan=3>";
                $tr2 = "</td></tr>" . PHP_EOL;
                //
                $lx_html .= isset($sar[1]) && $sar[1] ? $tr1 . "Total DRG Amt: " . edih_format_money($sar[1]) . $tr2 : "";
                $lx_html .= isset($sar[2]) && $sar[2] ? $tr1 . "Total Fed Specific Amt: " . edih_format_money($sar[2]) . $tr2 : "";
                $lx_html .= isset($sar[3]) && $sar[3] ? $tr1 . "Total Hosp Specific Amt: " . edih_format_money($sar[3]) . $tr2 : "";
                $lx_html .= isset($sar[4]) && $sar[4] ? $tr1 . "Total DSP Share Amt: " . edih_format_money($sar[4]) . $tr2 : "";
                $lx_html .= isset($sar[5]) && $sar[5] ? $tr1 . "Total Capital Amt: " . edih_format_money($sar[5]) . $tr2 : "";
                $lx_html .= isset($sar[6]) && $sar[6] ? $tr1 . "Total Ind Med Edu Amt: " . edih_format_money($sar[6]) . $tr2 : "";
                $lx_html .= isset($sar[7]) && $sar[7] ? $tr1 . "Total Outlier Day Amt: " . edih_format_money($sar[7]) . $tr2 : "";
                $lx_html .= isset($sar[8]) && $sar[8] ? $tr1 . "Total Day Outlier Day Amt: " . edih_format_money($sar[8]) . $tr2 : "";
                $lx_html .= isset($sar[9]) && $sar[9] ? $tr1 . "Total Cost Outlier Day Amt: " . edih_format_money($sar[9]) . $tr2 : "";
                $lx_html .= isset($sar[10]) && $sar[10] ? $tr1 . "Avg DRG Length of Stay: " . $sar[10] . $tr2 : "";
                $lx_html .= isset($sar[11]) && $sar[11] ? $tr1 . "Total Discharge Count: " . $sar[11] . $tr2 : "";
                $lx_html .= isset($sar[12]) && $sar[12] ? $tr1 . "Total Cost Rpt Day Count: " . $sar[12] . $tr2 : "";
                $lx_html .= isset($sar[13]) && $sar[13] ? $tr1 . "Total Covered Day Count: " . $sar[13] . $tr2 : "";
                $lx_html .= isset($sar[14]) && $sar[14] ? $tr1 . "Total Non Covered Day Count: " . $sar[14] . $tr2 : "";
                $lx_html .= isset($sar[15]) && $sar[15] ? $tr1 . "Total MSP Pass-Thru Amt: " . edih_format_money($sar[15]) . $tr2 : "";
                $lx_html .= isset($sar[16]) && $sar[16] ? $tr1 . "Avg DRG Weight: " . $sar[16] . $tr2 : "";
                $lx_html .= isset($sar[17]) && $sar[17] ? $tr1 . "Total PPS Capital FSP DRG Amt: " . edih_format_money($sar[17]) . $tr2 : "";
                $lx_html .= isset($sar[18]) && $sar[18] ? $tr1 . "Total PPS Capital FSP HSP Amt: " . edih_format_money($sar[18]) . $tr2 : "";
                $lx_html .= isset($sar[19]) && $sar[19] ? $tr1 . "Total PPS DSH DRG Amt: " . edih_format_money($sar[19]) . $tr2 : "";
                //
                continue;
            }
            if (strncmp('PLB' . $de, $seg, 4) === 0) {
                // can signal end of claim transaction
                $loopid = 'summary';
                $cls = 'pmt';
                //if (count($clpsegs)) {
                //$clp_html .= edih_835_transaction_html($clpsegs, $codes27x, $codes835, $delimiters);
                //$clpsegs = array();
                //}
                //
                $sar = explode($de, $seg);
                // provider ID and fiscal year end date
                $plb01 = isset($sar[1]) && $sar[1] ? $sar[1] : "";
                $plb02 = isset($sar[2]) && $sar[2] ? edih_format_date($sar[2]) : "";
                //
                $pmt_html .= "<tr class='{$cls}'><td><em>Provider</em></td><td colspan=3>{$plb01} {$plb02}</td></tr>" . PHP_EOL;
                //
                $plbar = array_slice($sar, 2);
                $plbar = array_chunk($plbar, 2);
                // reason code and amount
                foreach ($plbar as $plb) {
                    foreach ($plb as $k => $p) {
                        // PLB 3, 5, 7, 9, 11, 13
                        // composite element 'code:reference'
                        if ($k == 0) {
                            if ($p && strpos($p, $ds)) {
                                $plb_rc = substr($p, 0, strpos($p, $ds));
                                // code
                                $plb_tr = substr($p, strpos($p, $ds) + 1);
                                // reference (case #)?
                            } else {
                                $plb_rc = $p ? $p : "";
                                $plb_tr = "";
                            }
                            $plb_rt = $plb_rc ? $cd835->get_835_code('PLB', $plb_rc) : "";
                        } else {
                            // PLB 4, 6, 8, 10, 12, 14
                            // monetary amount
                            $plb_amt = $p ? edih_format_money($p) : "";
                            $acctng['plbadj'] += $p ? (double) $p : 0;
                        }
                    }
                    $pmt_html .= "<tr class='{$cls}'><td>{$plb_tr}</td><td colspan=3>{$plb_rc} {$plb_rt} {$plb_amt}</td></tr>" . PHP_EOL;
                }
                //
                continue;
            }
            //
            if (strncmp('SE' . $de, $seg, 3) === 0) {
                // end of payment transaction, so create the html page
                $loopid = 'trailer';
                $cls = 'pmt';
                // include our accounting totals
                if (is_array($acctng) && count($acctng)) {
                    array_walk($acctng, 'edih_round_cb');
                    $bal = $acctng['fee'] == $acctng['pmt'] + $acctng['clmadj'] + $acctng['svcadj'] + $acctng['svcptrsp'] + $acctng['plbadj'] ? "Balanced" : "Not Balanced";
                    $acct_str = "{$bal}: <em>Fee</em> {$acctng['fee']} <em>Pmt</em> {$acctng['pmt']} ";
                    $acct_str .= "<em>ClpAdj</em> {$acctng['clmadj']} <em>SvcAdj</em> {$acctng['svcadj']} ";
                    $acct_str .= "<em>PtRsp</em> {$acctng['ptrsp']} (<em>svcPtRsp</em> {$acctng['svcptrsp']}) <em>PlbAdj</em> {$acctng['plbadj']} ";
                    //
                    $pmt_html .= "<tr class='{$cls}'><td colspan=4>{$acct_str}</td></tr>" . PHP_EOL;
                }
                //
                // create the html page
                $str_html .= "<table id={$tblid} class='h835' columns=4><caption>{$capstr}</caption>" . PHP_EOL;
                $str_html .= $hdr_html;
                if ($pmt_html) {
                    $str_html .= $pmt_html;
                    $pmt_html = "";
                }
                if ($src_html) {
                    $str_html .= $src_html;
                    $src_html = "";
                }
                if ($rcv_html) {
                    $str_html .= $rcv_html;
                    $rcv_html = "";
                }
                //
                if (count($lx_ar)) {
                    // claim segments are in lx array
                    // make sure we have current collection
                    if ($lxkey && array_key_exists($lxkey, $lx_ar)) {
                        if (count($clpsegs)) {
                            $clp_html .= edih_835_transaction_html($clpsegs, $codes27x, $codes835, $delimiters);
                            $clpsegs = array();
                        }
                        // note: table ending in CLP if stanza
                        $nlx_html = "<table name='lx_{$lxkey}' class='h835c' columns=4>" . PHP_EOL . "<tbody>" . PHP_EOL . $lx_html . PHP_EOL;
                        $lx_ar[$lxkey]['lx'] = $nlx_html;
                        $lx_ar[$lxkey]['clp'] = $clp_html;
                        $lx_html = "";
                        $clp_html = "";
                        $clpsegs = array();
                    }
                    // append segments to html
                    foreach ($lx_ar as $key => $val) {
                        $str_html .= $val['lx'];
                        $str_html .= $val['clp'];
                    }
                } elseif ($lx_html) {
                    $str_html .= $lx_html;
                    $lx_html = "";
                }
                //
                if (count($clpsegs)) {
                    // would be captured in LX and lx array
                    $clp_html .= edih_835_transaction_html($clpsegs, $codes27x, $codes835, $delimiters);
                    $clpsegs = array();
                }
                if ($clp_html) {
                    $str_html .= $clp_html;
                    $clp_html = "";
                }
                if ($trl_html) {
                    $str_html .= $trl_html;
                    $trl_html = "";
                }
                //$str_html .= "</tbody>".PHP_EOL."</table>".PHP_EOL;
                //
                continue;
            }
            if (strncmp('CLP' . $de, $seg, 4) === 0) {
                if ($loopid == '1000B') {
                    // end of 1000B (receiver) loop
                    $rcv_html .= $clp_ct ? "" : "</tbody>" . PHP_EOL . "</table>" . PHP_EOL;
                } elseif ($loopid == '2000') {
                    // end of LX header (LX TS3 TS2 claim grouping)
                    $lx_html .= $clp_ct ? "" : "</tbody>" . PHP_EOL . "</table>" . PHP_EOL;
                }
                $loopid = '2100';
                //array('pmt'=>0, 'clmpmt'=>0, 'clmadj'=0, 'prvadj'=>0, 'ptrsp'=>0,'lx'=>array());
                $sar = explode($de, $seg);
                $acctng['fee'] += isset($sar[3]) && $sar[3] ? (double) $sar[3] : 0;
                $acctng['clmpmt'] += isset($sar[4]) && $sar[4] ? (double) $sar[4] : 0;
                $acctng['ptrsp'] += isset($sar[5]) && $sar[5] ? (double) $sar[5] : 0;
                //
                if (count($clpsegs)) {
                    $clp_html .= edih_835_transaction_html($clpsegs, $codes27x, $codes835, $delimiters);
                }
                $clpsegs = array();
                $clpsegs[] = $seg;
                $clp_ct++;
                continue;
            }
            if (strncmp('SVC' . $de, $seg, 4) === 0) {
                $loopid = '2110';
                $sar = explode($de, $seg);
                $pmtm = $pmts = 1;
                foreach ($sar as $k => $v) {
                    if ($k == 2) {
                        $svcfee = $v ? (double) $v : 0;
                    } elseif ($k == 3) {
                        $svcpmt = $v ? (double) $v : 0;
                    } elseif ($k == 5) {
                        $pmtm = $v ? (int) $v : 1;
                    } elseif ($k == 7) {
                        $pmts = $v ? (int) $v : 1;
                    }
                }
                $acctng['svcfee'] += $svcfee * $pmts;
                $acctng['svcpmt'] += $svcpmt * $pmtm;
                //
                $clpsegs[] = $seg;
                continue;
            }
            if (strncmp('CAS' . $de, $seg, 4) === 0) {
                $sar = explode($de, $seg);
                // category
                $ctg = isset($sar[1]) && $sar[1] ? $sar[1] : 'CO';
                // slice sar array to get triplet elements
                // chunk into triplets
                $sar1 = array_slice($sar, 2);
                $sar1 = array_chunk($sar1, 3);
                //
                foreach ($sar1 as $cas) {
                    $cav = 0;
                    $cq = '';
                    foreach ($cas as $k => $v) {
                        if ($k == 1) {
                            // monetary amount elem 3, 6, 9, 12, 15, 18
                            $cav = $v ? $v : 0;
                        } elseif ($k == 2) {
                            // quantity elem 4, 7, 10, 13, 16, 19
                            $cq = $v ? $v : "";
                            if ($cq && strcmp($cq, '1') > 0) {
                                $cav = $cav * $cq;
                            }
                        }
                    }
                    if ($ctg == 'PR') {
                        $acctng['svcptrsp'] += $cav ? (double) $cav : 0;
                    } else {
                        $acctky = $loopid == '2100' ? 'clmadj' : 'svcadj';
                        $acctng[$acctky] += $cav ? (double) $cav : 0;
                    }
                }
                $clpsegs[] = $seg;
                continue;
            }
            // uncaught segments should be routed by this
            if ($loopid == '2100' || $loopid == '2110') {
                $clpsegs[] = $seg;
                continue;
            }
        }
        // end foreach(trans as seg)
    }
    // end foreach(trans_ar as trans)
    //
    return $str_html;
}