/** * @param $record * @param $debug */ public static function set_tx_data($record, $debug) { global $Proj, $project_id, $tx_prefixes, $dm_array, $tx_array, $endt_fields, $regimen_fields; $enable_kint = $debug && (isset($record) && $record != '') ? true : false; Kint::enabled($enable_kint); $baseline_event_id = $Proj->firstEventId; $fields = array_merge($dm_array, $tx_array, $endt_fields, array('trt_suppex_txstat')); $data = REDCap::getData('array', $record, $fields); $regimen_data = REDCap::getData('array', $record, $regimen_fields); foreach ($data AS $subject_id => $subject) { $start_stack = array(); $tx_start_date = null; $stop_date = null; $age_at_start = null; $end_values = array(); foreach ($subject AS $event_id => $event) { /** * build dm_rfstdtc array */ foreach ($tx_array AS $tx_start) { if ($event[$tx_start] != '') { $start_stack[] = $event[$tx_start]; } } /** * build entdtc array */ foreach ($endt_fields AS $endt_field) { if ($event[$endt_field] != '') { $end_values[$event_id][$endt_field] = $event[$endt_field]; } } } /** * SUBJECT LEVEL */ rsort($start_stack); $tx_start_date = get_end_of_array($start_stack); /** * dm_rfstdtc */ update_field_compare($subject_id, $project_id, $baseline_event_id, $tx_start_date, $subject[$baseline_event_id]['dm_rfstdtc'], 'dm_rfstdtc', $debug); /** * age is dependent on the dm_rfxstdtc, not the derived treatment start date used elsewhere */ $dm_rfxstdtc = $subject[$baseline_event_id]['dm_rfxstdtc']; if (isset($dm_rfxstdtc)) { /** * Age at start of treatment * age_suppvs_age */ if ($subject[$baseline_event_id]['dm_brthyr'] != '') { $birth_year = $subject[$baseline_event_id]['dm_brthyr']; } elseif ($subject[$baseline_event_id]['dm_brthdtc'] != '') { $birth_year = substr($subject[$baseline_event_id]['dm_brthdtc'], 0, 4); } else { $birth_year = ''; } if (isset($birth_year) && $birth_year != '') { $tx_start_year = substr($dm_rfxstdtc, 0, 4); $age_at_start = ($tx_start_year - $birth_year) > 0 ? $tx_start_year - $birth_year : null; } update_field_compare($subject_id, $project_id, $baseline_event_id, $age_at_start, $subject[$baseline_event_id]['age_suppvs_age'], 'age_suppvs_age', $debug); } /** * dependent on derived TX start */ if (isset($tx_start_date)) { /** * Date of last dose of HCV treatment or Treatment stop date * dis_suppfa_txendt */ $stack = array(); if (array_search_recursive('ONGOING', $end_values) === false) { foreach ($tx_prefixes AS $endt_prefix) { foreach ($end_values AS $event) { if ($event[$endt_prefix . '_exendtc'] != '' && ($event[$endt_prefix . '_suppex_extrtout'] == 'COMPLETE') || $event[$endt_prefix . '_suppex_extrtout'] == 'PREMATURELY_DISCONTINUED') { $stack[] = $event[$endt_prefix . '_exendtc']; d('PREFIX ' . $endt_prefix, $event); } } } } sort($start_stack); sort($stack); $last_date_in_start_stack = get_end_of_array($start_stack); $last_date_in_stack = get_end_of_array($stack); $stop_date = $last_date_in_stack < $last_date_in_start_stack ? null : $last_date_in_stack; d($end_values); d($start_stack); d($stack); d($last_date_in_start_stack); d($last_date_in_stack); d($stop_date); update_field_compare($subject_id, $project_id, $baseline_event_id, $stop_date, $subject[$baseline_event_id]['dis_suppfa_txendt'], 'dis_suppfa_txendt', $debug); /** * HCV Treatment duration */ if (isset($stop_date)) { $tx_start_date_obj = new DateTime($tx_start_date); $tx_stop_date_obj = new DateTime($stop_date); $tx_duration = $tx_start_date_obj->diff($tx_stop_date_obj); $dis_dsstdy = $tx_duration->format('%R%a') + 1; update_field_compare($subject_id, $project_id, $baseline_event_id, $dis_dsstdy, $subject[$baseline_event_id]['dis_dsstdy'], 'dis_dsstdy', $debug); } } /** * update treatment regimen */ $txstat = isset($tx_start_date) ? 'Y' : 'N'; $regimen = get_regimen($regimen_data[$subject_id], $subject[$baseline_event_id]['eot_dsterm'], $txstat); update_field_compare($subject_id, $project_id, $baseline_event_id, $regimen['actarm'], $subject[$baseline_event_id]['dm_actarm'], 'dm_actarm', $debug); update_field_compare($subject_id, $project_id, $baseline_event_id, $regimen['actarmcd'], $subject[$baseline_event_id]['dm_actarmcd'], 'dm_actarmcd', $debug); } }
/** * @param $record * @param $debug */ public static function set_hcvrna_outcome($record, $debug) { global $Proj, $project_id, $ie_criteria_labels; $enable_kint = $debug && (isset($record) && $record != '') ? true : false; Kint::enabled($enable_kint); $baseline_event_id = $Proj->firstEventId; $fieldsets = array('abstracted' => array(array('date_field' => 'hcv_lbdtc'), array('value_field' => 'hcv_lbstresn'), array('detect_field' => 'hcv_supplb_hcvdtct')), 'imported' => array(array('date_field' => 'hcv_im_lbdtc'), array('value_field' => 'hcv_im_lbstresn'), array('detect_field' => 'hcv_im_supplb_hcvdtct'), array('trust' => 'hcv_im_nxtrust'))); $data = array(); $field_translate = array(); $reverse_translate = array(); foreach ($fieldsets as $formtype => $fieldset) { $filter_logic = $formtype == 'abstracted' ? "[hcv_lbdtc] != ''" : "[hcv_im_lbdtc] != '' AND [hcv_im_nxtrust] != 'N'"; $fields = array(); foreach ($fieldset as $field) { foreach ($field as $key => $value) { $fields[] = $value; $field_translate[$formtype][$key] = $value; $reverse_translate[$formtype][$value] = $key; } } $data[$formtype] = REDCap::getData('array', $record, $fields, null, null, false, false, false, $filter_logic); } /** * Main */ $ie_fields = array('ie_ietestcd'); $ie_data = REDCap::getData('array', $record, $ie_fields); $date_fields = array('dm_usubjid', 'dm_rfstdtc', 'dis_suppfa_txendt', 'eot_dsterm', 'dis_dsstdy', 'hcv_suppfa_fuelgbl', 'hcv_suppfa_nlgblrsn', 'hcv_suppfa_hcvout', 'hcv_suppfa_wk10rna', 'hcv_suppfa_lastbloq', 'dis_suppds_funcmprsn', 'hcv_suppfa_fudue', 'dm_suppdm_hcvt2id', 'dm_actarmcd', 'dm_suppdm_rtrtsdtc'); $date_data = REDCap::getData('array', $record, $date_fields, $baseline_event_id); foreach ($date_data as $subject_id => $subject) { $all_events = array(); $post_tx_dates = array(); $post_tx_bloq_dates = array(); $re_treat_candidate = false; $re_treat_dates = array(); foreach ($subject as $date_event_id => $date_event) { /** * HCV RNA Outcome */ $hcvrna_improved = false; $on_tx_scores = array(); $hcvrna_previous_score = ''; $post_tx_scores = array(); $post_tx_plus10w_scores = array(); $post_tx_plus10d_scores = array(); $last_hcvrna_bloq = false; $stop_date_plus_10w = null; $stop_date_plus_10d = null; $tx_stopped_10_wks_ago = false; $started_tx = false; $stopped_tx = false; $hcv_fu_eligible = true; $hcv_fu_ineligible_reason = array(); $lost_to_followup = false; $hcv_data_due = false; $tx_start_date = isset($date_event['dm_rfstdtc']) && $date_event['dm_rfstdtc'] != '' ? $date_event['dm_rfstdtc'] : null; $stop_date = isset($date_event['dis_suppfa_txendt']) && $date_event['dis_suppfa_txendt'] != '' ? $date_event['dis_suppfa_txendt'] : null; $dis_dsstdy = isset($date_event['dis_dsstdy']) && $date_event['dis_dsstdy'] != '' ? $date_event['dis_dsstdy'] : null; $eot_dsterm = isset($date_event['eot_dsterm']) && $date_event['eot_dsterm'] != '' ? $date_event['eot_dsterm'] : null; /** * look for this dm_usubjid in dm_suppdm_hcvt2id. This is a foreign key between TARGET 2 and TARGET 3 patients. * Get the start date of the TARGET 3 patient if dm_suppdm_hcvt2id is not empty. */ $t3_fk_result = db_query("SELECT record FROM redcap_data WHERE project_id = '{$project_id}' AND field_name = 'dm_suppdm_hcvt2id' AND value = '{$date_event['dm_usubjid']}'"); if ($t3_fk_result) { $t3_fk = db_fetch_assoc($t3_fk_result); $t3_start_date_value = get_single_field($t3_fk['record'], $project_id, $baseline_event_id, 'dm_rfstdtc', ''); } $t3_start_date = isset($t3_start_date_value) ? $t3_start_date_value : ''; /** * where are we in treatment? */ if (isset($tx_start_date)) { // started treatment $started_tx = true; /** * treatment must have started to stop */ if (isset($stop_date)) { // completed treatment $stopped_tx = true; $stop_date_plus_10d = add_date($stop_date, 10, 0, 0); $stop_date_plus_10w = add_date($stop_date, 64, 0, 0); if (date("Y-m-d") >= $stop_date_plus_10w && isset($stop_date_plus_10w)) { $tx_stopped_10_wks_ago = true; } } else { // not completed treatment $stopped_tx = false; $hcv_fu_eligible = false; $hcv_fu_ineligible_reason[] = 'TX Not Completed'; } } else { // not started treatment $started_tx = false; $hcv_fu_eligible = false; $hcv_fu_ineligible_reason[] = 'TX Not Started'; } /** * get fields for both abstracted (standardized) and imported HCV RNA forms */ foreach ($fieldsets as $formtype => $fieldset) { foreach ($data[$formtype][$subject_id] as $event_id => $event) { /** * standardize array keys */ foreach ($event as $event_key => $event_value) { unset($event[$event_key]); $event[array_search($event_key, $field_translate[$formtype])] = $event_value; } /** * merge into all_events array */ if ($event['date_field'] != '') { $all_events[$event['date_field']][] = $event; } } } ksort($all_events); /** * get outcomes */ foreach ($all_events as $event_date => $event_set) { foreach ($event_set as $event) { /** * if we have a date, and the HCV RNA isn't an 'untrusted blip'... * (blips are sudden, small increases in viral load following EOT) */ if (($event['value_field'] != '' || $event['detect_field'] != '') && ($event['date_field'] != '' && $t3_start_date == '' || $event['date_field'] != '' && $t3_start_date != '' && $event['date_field'] <= $t3_start_date)) { $is_bloq = in_array($event['detect_field'], array('BLOQ', 'NOT_SPECIFIED', 'DETECTED')) || $event['value_field'] == '0' ? true : false; $score = $is_bloq ? '0' : '1'; /** * if treatment has started, and $event['date_field'] is after start date (is baseline or later) */ if ($started_tx && $tx_start_date <= $event['date_field']) { /** * and is... */ if (!$stopped_tx || $stopped_tx && $event['date_field'] <= $stop_date) { // on treatment $on_tx_scores[] = $score; if ($score >= $hcvrna_previous_score) { $hcvrna_improved = false; } elseif ($score < $hcvrna_previous_score) { $hcvrna_improved = true; } $hcvrna_previous_score = $score; if ($eot_dsterm == 'LACK_OF_EFFICACY' && get_end_of_array($on_tx_scores) == '1') { $re_treat_candidate = true; } } else { // post-treatment /** * RE-TREAT handling * If this HCVRNA is quantifiable, add the date to an array * if this HCVRNA is bloq and we have quantified post-TX HCVRNA, it's a re-treat and we don't want it in $post_tx_scores */ if ($is_bloq && !in_array('1', $post_tx_scores) && !$re_treat_candidate) { $post_tx_bloq_dates[] = $event['date_field']; $post_tx_scores[] = $score; /** * capture scores that are after EOT plus 10 weeks */ if (isset($stop_date_plus_10w) && $event['date_field'] >= $stop_date_plus_10w) { $post_tx_plus10w_scores[] = $score; } /** * capture scores that are between EOT and EOT plus 10 days */ if (isset($stop_date_plus_10d) && $event['date_field'] <= $stop_date_plus_10d) { $post_tx_plus10d_scores[] = $score; } } if (!$is_bloq && !in_array('1', $post_tx_scores) && !$re_treat_candidate) { $post_tx_dates[] = $event['date_field']; $post_tx_scores[] = $score; /** * capture scores that are after EOT plus 10 weeks */ if (isset($stop_date_plus_10w) && $event['date_field'] >= $stop_date_plus_10w) { $post_tx_plus10w_scores[] = $score; } /** * capture scores that are between EOT and EOT plus 10 days */ if (isset($stop_date_plus_10d) && $event['date_field'] <= $stop_date_plus_10d) { $post_tx_plus10d_scores[] = $score; } } if ($is_bloq && in_array('1', $post_tx_scores)) { $re_treat_candidate = true; } } } } } } /** * we have all our score candidates */ $all_scores = array_merge($on_tx_scores, $post_tx_scores); $last_hcvrna_bloq = count($all_scores) > 0 && get_end_of_array($all_scores) == '0' ? true : false; /** * get candidates for re-treat cutoff date */ $re_treat_dates = array_diff(array_unique($post_tx_dates), array_unique($post_tx_bloq_dates)); /** * HCVRNA Followup Eligibility * subjects are ineligible for followup if: */ foreach ($ie_data[$subject_id] as $ie_event) { if ($ie_event['ie_ietestcd'] != '') { // failed i/e criteria $hcv_fu_eligible = false; $hcv_fu_ineligible_reason[] = $ie_criteria_labels[$ie_event['ie_ietestcd']]; } } /** * disposition-related ineligibility */ if (in_array($date_event['eot_dsterm'], array('LOST_TO_FOLLOWUP', 'LACK_OF_EFFICACY'))) { // disposition is lost to followup $lost_to_followup = true; $hcv_fu_eligible = false; $hcv_fu_ineligible_reason[] = fix_case($date_event['eot_dsterm']); } /** * Quantified HCVRNA after EOT */ if (count($post_tx_scores) > 1 && !$hcvrna_improved) { if (in_array('1', $post_tx_scores)) { // had quantified HCV RNA after EOT $hcv_fu_eligible = false; $hcv_fu_ineligible_reason[] = 'Quantified post-TX HCVRNA'; } } else { if (in_array('1', $post_tx_scores)) { // had quantified HCV RNA after EOT $hcv_fu_eligible = false; $hcv_fu_ineligible_reason[] = 'Quantified post-TX HCVRNA'; } } /** * lost to post-treatment follow up if not already LTFU */ $post_tx_followup_eligible = $date_event['dis_suppds_funcmprsn'] == 'LOST_TO_FOLLOWUP' ? false : true; if (!$lost_to_followup) { if (!$post_tx_followup_eligible) { $lost_to_followup = true; $hcv_fu_eligible = false; $hcv_fu_ineligible_reason[] = 'Lost to post-TX followup'; } } /** * derive outcome now as it's needed below */ $GLOBALS['started_tx'] = $started_tx; $GLOBALS['stopped_tx'] = $stopped_tx; $GLOBALS['post_tx_plus10w_scores'] = $post_tx_plus10w_scores; $GLOBALS['last_hcvrna_bloq'] = $last_hcvrna_bloq; $GLOBALS['lost_to_followup'] = $lost_to_followup; $GLOBALS['tx_stopped_10_wks_ago'] = $tx_stopped_10_wks_ago; $GLOBALS['hcv_fu_eligible'] = $hcv_fu_eligible; $GLOBALS['on_tx_scores'] = $on_tx_scores; $GLOBALS['post_tx_plus10d_scores'] = $post_tx_plus10d_scores; $GLOBALS['post_tx_scores'] = $post_tx_scores; $GLOBALS['eot_dsterm'] = $eot_dsterm; $outcome = self::get_outcome(); /** * IS FOLLOWUP DATA FOR THIS SUBJECT DUE? * if followup eligible and treatment duration greater than 4 weeks... */ if ($hcv_fu_eligible && $post_tx_followup_eligible && isset($dis_dsstdy) && $dis_dsstdy >= 29) { /** * AND today is TX stop date + 14 weeks ago, and no final outcome, data is due */ if (date("Y-m-d") >= add_date($stop_date, 98, 0, 0) && !in_array($outcome, array('SVR', 'VIRAL BREAKTHROUGH', 'RELAPSE', 'NON-RESPONDER', 'LOST TO FOLLOWUP'))) { $hcv_data_due = true; } } /** * if not followup eligible (and no TX stop - implied by ineligible)... */ if ((!$hcv_fu_eligible || !$post_tx_followup_eligible) && $started_tx && !$stopped_tx) { /** * is regimen SOF + RBV? */ $regimen = get_single_field($subject_id, $project_id, $baseline_event_id, 'dm_actarmcd', null); // $due_fields = array('sof_cmstdtc', 'rib_cmstdtc'); // $due_data = REDCap::getData('array', $subject_id, $due_fields); // $sof_rbv_regimen = false; // $sof = array(); // $rbv = array(); // foreach ($due_data[$subject_id] AS $event_id => $event) { // if ($event['sof_cmstdtc'] != '') { // $sof[] = true; // } // if ($event['rib_cmstdtc'] != '') { // $rbv[] = true; // } // } $sof_rbv_regimen = $regimen == 'SOF/RBV' ? true : false; /** * get genotype */ $genotype = get_single_field($subject_id, $project_id, $baseline_event_id, 'hcvgt_lborres', ''); /** * if regimen is SOF + RBV and Genotype 1 or 3 */ if ($sof_rbv_regimen && ($genotype == '1' || $genotype == '3')) { /** * AND if TX start is 168 days ago, data is due */ if (date("Y-m-d") >= add_date($tx_start_date, 168, 0, 0)) { $hcv_data_due = true; } /** * if regimen is SOF + RBV and Genotype 2 */ } elseif ($sof_rbv_regimen && $genotype == '2') { /** * if TX start is 84 days ago, data is due */ if (date("Y-m-d") >= add_date($tx_start_date, 84, 0, 0)) { $hcv_data_due = true; } /** * if any other regimen or genotype */ } else { /** * if TX start is 84 days ago, data is due */ if (date("Y-m-d") >= add_date($tx_start_date, 84, 0, 0)) { $hcv_data_due = true; } } } /** * get values */ $last_bloq = $last_hcvrna_bloq ? 'Y' : 'N'; $eligible = !$hcv_fu_eligible ? 'N' : 'Y'; $reason = implode('; ', array_unique($hcv_fu_ineligible_reason)); $data_due = $hcv_data_due ? 'Y' : 'N'; $wk10_rna = count($post_tx_plus10w_scores) > 0 ? 'Y' : 'N'; rsort($re_treat_dates); $re_treat_date = $re_treat_candidate ? get_end_of_array($re_treat_dates) : null; /** * debug */ d($all_scores); if ($started_tx) { d($tx_start_date); d($on_tx_scores); if ($stopped_tx) { d($stop_date); d($post_tx_scores); d($post_tx_plus10d_scores); d($post_tx_plus10w_scores); d($last_hcvrna_bloq); d($lost_to_followup); d($post_tx_followup_eligible); d($hcv_fu_eligible); d($post_tx_bloq_dates); d($post_tx_dates); d($t3_start_date); d($re_treat_candidate); d($re_treat_date); d($tx_stopped_10_wks_ago); d($hcv_data_due); d($outcome); } else { d('NO TX STOP'); } } else { d('NO TX START'); } /** * set overall hcvrna followup eligibility and reason if ineligible */ update_field_compare($subject_id, $project_id, $baseline_event_id, $eligible, $date_event['hcv_suppfa_fuelgbl'], 'hcv_suppfa_fuelgbl', $debug); update_field_compare($subject_id, $project_id, $baseline_event_id, $reason, $date_event['hcv_suppfa_nlgblrsn'], 'hcv_suppfa_nlgblrsn', $debug); /** * set follow up timing - is it due? */ update_field_compare($subject_id, $project_id, $baseline_event_id, $data_due, $date_event['hcv_suppfa_fudue'], 'hcv_suppfa_fudue', $debug); /** * set outcome */ update_field_compare($subject_id, $project_id, $baseline_event_id, $outcome, $date_event['hcv_suppfa_hcvout'], 'hcv_suppfa_hcvout', $debug); /** * set 10 HCV RNA? */ update_field_compare($subject_id, $project_id, $baseline_event_id, $wk10_rna, $date_event['hcv_suppfa_wk10rna'], 'hcv_suppfa_wk10rna', $debug); /** * set HCV RNA BLOQ? */ update_field_compare($subject_id, $project_id, $baseline_event_id, $last_bloq, $date_event['hcv_suppfa_lastbloq'], 'hcv_suppfa_lastbloq', $debug); /** * set re-treat window start date */ update_field_compare($subject_id, $project_id, $baseline_event_id, $re_treat_date, $date_event['dm_suppdm_rtrtsdtc'], 'dm_suppdm_rtrtsdtc', $debug); } } }
*/ if (date("Y-m-d") >= (add_date($tx_start_date, 84, 0, 0))) { $hcv_data_due = true; } } } /** * get values */ $last_bloq = $last_hcvrna_bloq ? 'Y' : 'N'; $eligible = !$hcv_fu_eligible ? 'N' : 'Y'; $reason = implode('; ', array_unique($hcv_fu_ineligible_reason)); $data_due = $hcv_data_due ? 'Y' : 'N'; $wk10_rna = count($post_tx_plus10w_scores) > 0 ? 'Y' : 'N'; rsort($re_treat_dates); $re_treat_date = $re_treat_possible ? get_end_of_array($re_treat_dates) : null; /** * debug */ if ($debug) { d($all_scores); if ($started_tx) { d($tx_start_date); d($on_tx_scores); if ($stopped_tx) { d($stop_date); d($post_tx_scores); d($post_tx_plus10d_scores); d($post_tx_plus10w_scores); d($last_hcvrna_bloq); d($lost_to_followup);
/** * @param $record * @param $debug */ function set_svr_dates($record, $debug) { global $Proj, $project_id, $dm_array, $hcv_fields; $enable_kint = $debug && (isset($record) && $record != '') ? true : false; Kint::enabled($enable_kint); $baseline_event_id = $Proj->firstEventId; $fields = array_merge($dm_array, $hcv_fields); $data = REDCap::getData('array', $record, $fields); if ($debug) { error_log(print_r($data, TRUE)); } foreach ($data AS $subject_id => $subject) { $stop_date = $subject[$baseline_event_id]['dis_suppfa_txendt'] != '' ? $subject[$baseline_event_id]['dis_suppfa_txendt'] : null; $hcv_values = array(); if (isset($stop_date)) { foreach ($subject AS $event_id => $event) { /** * build HCVDT array */ foreach ($hcv_fields AS $hcv_field) { $hcv_values[$event_id][$hcv_field] = $event[$hcv_field]; } } d($hcv_values); /** * SVR 12 and 24 dates * hcv_supplb_hcvdtct, hcv_lbdtc, ifn_cmendtc, hcv_suppfa_svr12dt */ $svr_classes = array(63 => 'hcv_suppfa_svr12dt', 147 => 'hcv_suppfa_svr24dt'); $svr_range = 83; foreach ($svr_classes as $svr_class => $svr_field) { $hcv_dates_array = array(); $lower_date = new DateTime($stop_date); $lower_date->add(new DateInterval("P" . $svr_class . "D")); $lower_svr_date = $lower_date->format('Y-m-d'); $upper_date = new DateTime($stop_date); $upper_date->add(new DateInterval("P" . ($svr_class + $svr_range) . "D")); $upper_svr_date = $upper_date->format('Y-m-d'); d($svr_field, $upper_svr_date); foreach ($hcv_values as $event) { if ($event['hcv_lbdtc'] != '') { $date_obj = new DateTime($event['hcv_lbdtc']); $svr_date = $date_obj->format('Y-m-d'); if ($lower_svr_date <= $svr_date && $svr_date <= $upper_svr_date) { $hcv_dates_array[] = $svr_date; } } if ($event['hcv_im_lbdtc'] != '' && empty($hcv_dates_array)) { $date_obj = new DateTime($event['hcv_im_lbdtc']); $svr_date = $date_obj->format('Y-m-d'); if ($lower_svr_date <= $svr_date && $svr_date <= $upper_svr_date) { $hcv_dates_array[] = $svr_date; } } } rsort($hcv_dates_array); $hcv_date = get_end_of_array($hcv_dates_array); update_field_compare($subject_id, $project_id, $baseline_event_id, $hcv_date, $subject[$baseline_event_id][$svr_field], $svr_field, $debug); } } } }