$pretty_field_names['cirr_suppfa_cirrstat'] = 'Cirrhosis status'; $pretty_field_names['plt_suppfa_faorres'] = 'Platelets <140K'; $pretty_field_names['livbp_faorres'] = 'Fibrosis score (adjusted)'; /** * WORKING DATA */ $pts = array(); $table_csv = ""; $fields = array_merge(array('cirr_suppfa_cirrstat'), $fields, array('plt_suppfa_faorres')); $pt_result = db_query("SELECT DISTINCT record FROM redcap_data WHERE project_id = '$project_id' AND field_name = 'cirr_suppfa_cirrstat' AND value != '' ORDER BY abs(record) ASC"); if ($pt_result) { while ($pt_row = db_fetch_assoc($pt_result)) { $pts[] = $pt_row['record']; } } $data = REDCap::getData('array', $pts, $fields); foreach ($data AS $subject_id => $subject) { $data_row = array(); $data_row['subjid'] = $subject_id; foreach ($subject AS $event_id => $event) { /** * if ishak or unknown scales were used, adjust the scale value */ if ($event['livbp_facat'] == 'ISHAK' || $event['livbp_facat'] == 'UNKNOWN') { if ($event['livbp_faorres'] >= '5') { $event['livbp_faorres'] = '4'; } elseif ($event['livbp_faorres'] == '3' || $event['livbp_faorres'] == '4') { $event['livbp_faorres'] = '3'; } } switch ($event['fib_lbtest']) {
* initialize variables */ $timer_start = microtime(true); $monitor_name = $_POST['monitor_name']; $table_csv = ""; $export_filename = "TRANSPLANT_MONITORING_" . strtoupper($monitor_name); /** * get sim/sof data */ $fields = array('sim_cmstdtc', 'sof_cmstdtc'); $data = REDCap::getData('array', '', $fields); /** * get TX history data */ $hist_fields = array("dm_rfstdtc", "dis_suppfa_txendt", "livr_mhoccur"); $hist_data = REDCap::getData('array', '', $hist_fields, $baseline_event_id); $subject_sql = "SELECT data.record AS subjid, IF (demo.username IS NULL, 'N', 'Y') AS demo_locker, IF (eot.username IS NULL, 'N', 'Y') AS eot_locker, dsterm.value AS eot_status, geno.value AS genotype FROM (SELECT DISTINCT record, project_id FROM `redcap_data`) data LEFT OUTER JOIN (SELECT * FROM `redcap_locking_data` WHERE form_name = 'demographics') demo ON data.record = demo.record AND data.project_id = demo.project_id LEFT OUTER JOIN (SELECT * FROM `redcap_locking_data` WHERE form_name = 'early_discontinuation_eot') eot ON data.record = eot.record AND data.project_id = eot.project_id LEFT OUTER JOIN (SELECT * FROM redcap_data WHERE field_name = 'eot_dsterm') dsterm ON data.record = dsterm.record AND data.project_id = dsterm.project_id LEFT OUTER JOIN (SELECT * FROM redcap_data WHERE field_name = 'hcvgt_lborres') geno ON data.record = geno.record AND data.project_id = geno.project_id WHERE data.project_id = '$project_id'";
*/ $timer['start_fields'] = microtime(true); $su_fields_result = db_query($fields_query); $su_fields = array('dm_usubjid'); if ($su_fields_result) { while ($su_fields_row = db_fetch_assoc($su_fields_result)) { foreach ($su_fields_row AS $field_key => $field_name) { if (!in_array($field_key, array('type', 'label'))) { $su_fields[] = $field_name; } } } db_free_result($su_fields_result); } $su_fields = array_unique($su_fields); $data = REDCap::getData('array', $subjects, $su_fields); $timer['have_data'] = microtime(true); $fields_result = db_query($fields_query); $timer['have_fields'] = microtime(true); if ($fields_result) { while ($fields = db_fetch_assoc($fields_result)) { foreach ($data AS $subject_id => $subject) { $usubjid = ''; foreach ($subject AS $event_id => $event) { $inner_vals = array(); if ($usubjid == '') { $usubjid = $event['dm_usubjid']; } if ($fields['type'] == 'descriptive') {
*/ global $Proj; $first_event_id = $Proj->firstEventId; $plugin_title = "Derive stuff"; /** * plugin title */ echo "<h3>$plugin_title</h3>"; /** * MAIN */ if ($debug) { $timer['main_start'] = microtime(true); } $fields = array('dm_usubjid'); $data = REDCap::getData('array', $subjects, $fields, $first_event_id); d($data); foreach ($data AS $subject_id => $subject) { /** * SUBJECT-LEVEL vars */ $var = array(); /** * MAIN EVENT LOOP */ foreach ($subject AS $event_id => $event) { foreach ($event AS $key => $value) { /** * do stuff */
/** * do stuff */ if ($debug) { if (!is_form_locked($record, $instrument, $redcap_event_name)) { d(is_t_complete($record, $event_id), $redcap_event_name); } global $Proj, $project_id; $today = date("Y-m-d"); $fields = array(); $arms = get_arms(array_keys($Proj->eventsForms)); d($arms); $baseline_event_id = $Proj->firstEventId; $tx_duration = get_single_field($record, $project_id, $baseline_event_id, 'trt_exdur', null); $tx_duration = substr($tx_duration, strpos($tx_duration, 'P') + 1, strlen($tx_duration) - 2); $tx_first_event = array_search_recursive($tx_duration . ' Weeks', $arms) !== false ? array_search_recursive($tx_duration . ' Weeks', $arms) : null; $survey_event_ids = $Proj->getEventsByArmNum($arms[$tx_first_event]['arm_num']); d($survey_event_ids); foreach ($survey_event_ids as $survey_event_id) { $survey_event_name = $Proj->getUniqueEventNames($survey_event_id); $survey_prefix = substr($survey_event_name, 0, strpos($survey_event_name, '_')); $fields[] = $survey_prefix . '_completed'; $fields[] = $survey_prefix . '_date'; $fields[] = $survey_prefix . '_startdate'; $fields[] = $survey_prefix . '_deadline'; $fields[] = $survey_prefix . '_missed'; } d($fields); $data = REDCap::getData('array', $record, $fields, $baseline_event_id); d($data); }
/** * @param $record * @param $debug * determine completeness of all survey-containing events */ function set_survey_completion($record, $debug) { if (isset($record)) { global $Proj, $project_id; $today = date("Y-m-d"); $fields = array(); $arms = get_arms(array_keys($Proj->eventsForms)); $baseline_event_id = $Proj->firstEventId; $trt = Treatment::getTrtInfo($record); /** * use the selected duration ($trt['arm']) to set timings */ $tx_first_event = array_search_recursive($trt['arm'], $arms) !== false ? array_search_recursive($trt['arm'], $arms) : null; $survey_event_ids = isset($tx_first_event) ? $Proj->getEventsByArmNum($arms[$tx_first_event]['arm_num']) : null; foreach ($survey_event_ids AS $survey_event_id) { $data_event_name = $Proj->getUniqueEventNames($survey_event_id); $prefix = substr($data_event_name, 0, strpos($data_event_name, '_')); /** * derive inter-event timing variables */ $start_date_value = get_single_field($record, $project_id, $baseline_event_id, $prefix . '_startdate', null); $deadline_value = get_single_field($record, $project_id, $baseline_event_id, $prefix . '_deadline', null); /** * for baseline surveys, reference date is randomization date. For all other survey events, * reference date is dm_rfxstdtc, recorded treatment start date NOT dm_rfstdtc, the * treatment start derived from the treatment med data */ $t_base_date = in_array($prefix, array('baseline', 'eot1year', 'eot3year')) ? $trt['rand_date'] : $trt['rfxstdtc']; if (isset($t_base_date) && $t_base_date != '') { $t_start_date = add_date($t_base_date, ($arms[$data_event_name]['day_offset'] - $arms[$data_event_name]['offset_min'])); update_field_compare($record, $project_id, $baseline_event_id, $t_start_date, $start_date_value, $prefix . '_startdate', $debug); $t_deadline_date = add_date($t_base_date, ($arms[$data_event_name]['day_offset'] + $arms[$data_event_name]['offset_max']) - 1); update_field_compare($record, $project_id, $baseline_event_id, $t_deadline_date, $deadline_value, $prefix . '_deadline', $debug); } } foreach ($survey_event_ids AS $survey_event_id) { $survey_event_name = $Proj->getUniqueEventNames($survey_event_id); $survey_prefix = substr($survey_event_name, 0, strpos($survey_event_name, '_')); $fields[] = $survey_prefix . '_completed'; $fields[] = $survey_prefix . '_date'; $fields[] = $survey_prefix . '_startdate'; $fields[] = $survey_prefix . '_deadline'; } $data = REDCap::getData('array', $record, $fields, $baseline_event_id); /** * switch to the scheduled arm to determine completion * this is done to avoid subjects switching arms and orphaning surveys completed * prior to duration change. This should (almost) never happen, but we still need to handle if it does */ $tx_first_event = array_search_recursive($trt['timing_arm'], $arms) !== false ? array_search_recursive($trt['timing_arm'], $arms) : null; $survey_event_ids = isset($tx_first_event) ? $Proj->getEventsByArmNum($arms[$tx_first_event]['arm_num']) : null; foreach ($survey_event_ids AS $survey_event_id) { $data_event_name = $Proj->getUniqueEventNames($survey_event_id); $prefix = substr($data_event_name, 0, strpos($data_event_name, '_')); $is_t_complete = is_t_complete($record, $survey_event_id); $t_complete = $is_t_complete ? '1' : '0'; $complete_value = get_single_field($record, $project_id, $baseline_event_id, $prefix . '_completed', null); $deadline_value = get_single_field($record, $project_id, $baseline_event_id, $prefix . '_deadline', null); $t_missed = $complete_value == '0' && $today > $deadline_value && isset($deadline_value) && $deadline_value != '' ? '1' : '0'; foreach ($data[$record] AS $data_event_id => $data_event) { foreach ($data_event AS $key => $value) { /** * derive completion variables */ switch ($key) { case $prefix . '_completed': update_field_compare($record, $project_id, $data_event_id, $t_complete, $value, $key, $debug); break; case $prefix . '_date': if ($value == '' && $is_t_complete) { update_field_compare($record, $project_id, $data_event_id, $today, $value, $key, $debug); } break; case $prefix . '_missed': update_field_compare($record, $project_id, $data_event_id, $t_missed, $value, $key, $debug); break; default: break; } } } } } }
/** * @param $subject_id * @param $debug * determine completeness of all survey-containing events */ function events_completion($subject_id, $debug) { if (isset($subject_id)) { global $Proj, $project_id; $today = date("Y-m-d"); $fields = array(); $arms = get_arms(array_keys($Proj->eventsForms)); $baseline_event_id = $Proj->firstEventId; $enrollment_event_id = getNextEventId($baseline_event_id); $tx_duration = get_single_field($subject_id, $project_id, $enrollment_event_id, 'dm_suppdm_actarmdur', null); $tx_first_event = array_search_recursive($tx_duration . ' Weeks', $arms) !== false ? array_search_recursive($tx_duration . ' Weeks', $arms) : null; $survey_event_ids = isset($tx_first_event) ? array_merge(array($baseline_event_id), $Proj->getEventsByArmNum($arms[$tx_first_event]['arm_num'])) : array($baseline_event_id); foreach ($survey_event_ids AS $survey_event_id) { $survey_event_name = $Proj->getUniqueEventNames($survey_event_id); $survey_prefix = substr($survey_event_name, 0, strpos($survey_event_name, '_')); $fields[] = $survey_prefix . '_completed'; $fields[] = $survey_prefix . '_date'; $fields[] = $survey_prefix . '_startdate'; $fields[] = $survey_prefix . '_deadline'; } $data = REDCap::getData('array', $subject_id, $fields, $baseline_event_id); foreach ($survey_event_ids AS $survey_event_id) { $data_event_name = $Proj->getUniqueEventNames($survey_event_id); $prefix = substr($data_event_name, 0, strpos($data_event_name, '_')); $is_t_complete = is_t_complete($subject_id, $survey_event_id); $t_complete = $is_t_complete ? '1' : '0'; foreach ($data[$subject_id] AS $data_event_id => $data_event) { foreach ($data_event AS $key => $value) { /** * derive intra-event timing variables */ switch ($key) { case $prefix . '_completed': update_field_compare($subject_id, $project_id, $data_event_id, $t_complete, $value, $key, $debug); break; case $prefix . '_date': if ($value == '' && $is_t_complete) { update_field_compare($subject_id, $project_id, $data_event_id, $today, $value, $key, $debug); } break; default: break; } } } /** * derive inter-event timing variables */ $complete_value = get_single_field($subject_id, $project_id, $baseline_event_id, $prefix . '_completed', null); $start_date_value = get_single_field($subject_id, $project_id, $baseline_event_id, $prefix . '_startdate', null); $deadline_value = get_single_field($subject_id, $project_id, $baseline_event_id, $prefix . '_deadline', null); $missed_value = get_single_field($subject_id, $project_id, $baseline_event_id, $prefix . '_missed', null); $t_missed = $complete_value == '0' && $today > $deadline_value && isset($deadline_value) && $deadline_value != '' ? '1' : '0'; switch ($prefix) { case 't1': $t_base_date = get_single_field($subject_id, $project_id, $baseline_event_id, $prefix . '_date', null); $t_start_date = $t_base_date; $t_deadline_date = add_date($t_base_date, 89); break; default: $t_base_date = get_single_field($subject_id, $project_id, $enrollment_event_id, 'dm_rfstdtc', null); $t_start_date = add_date($t_base_date, ($arms[$data_event_name]['day_offset'] - $arms[$data_event_name]['offset_min'])); $t_deadline_date = add_date($t_base_date, ($arms[$data_event_name]['day_offset'] + $arms[$data_event_name]['offset_max']) - 1); break; } update_field_compare($subject_id, $project_id, $baseline_event_id, $t_complete, $complete_value, $prefix . '_completed', $debug); update_field_compare($subject_id, $project_id, $baseline_event_id, $t_missed, $missed_value, $prefix . '_missed', $debug); if (isset($t_base_date) && $t_base_date != '') { update_field_compare($subject_id, $project_id, $baseline_event_id, $t_start_date, $start_date_value, $prefix . '_startdate', $debug); update_field_compare($subject_id, $project_id, $baseline_event_id, $t_deadline_date, $deadline_value, $prefix . '_deadline', $debug); } } } }
/** * 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'))) { $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? */ $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 = eval("return ((" . implode(' || ', $sof) . ") && (" . implode(' || ', $rbv) . "));"); /** * get genotype */
$batch_remaining = intval($batch_total - count($batch_times)); $time_remaining = round($batch_remaining * $batch_avg); $time_remaining_msg = "Approximately " . $time_remaining . " seconds remaining..."; } $percent = intval(($b+1)/$batch_total * 100).'%'; $msg = "Processing batch " . ($b + 1) . " of $batch_total."; echo " <script language='javascript'> //console.log($('#progress').html()); $('#progress').html('<div style=\"width:$percent;background-color:#ddd;\"> </div>'); $('#progress_info').html('$msg<br>$percent complete<br>$time_remaining_msg'); </script>"; echo str_repeat(' ',1024*64); flush(); ob_flush(); $records = REDCap::getData('csv', $batch, NULL, NULL, NULL, false, true); // need DAGs // Trim the header on all but the first row of the first batch //if ($b != 0) $records = trimHeader($records); $records = trimHeader($records); // no headers fwrite($fh, $records); $batch_times[$b] = microtime(true) - $batch_start; } fclose($fh); // Data CSV file download icon $html = RCView::form( array('method'=>'post', 'name'=>'full_export', 'action'=>$_SERVER['REQUEST_URI'], 'enctype'=>'multipart/form-data'), RCView::input(array('type'=>'hidden', 'name'=>'download', 'value'=>$target_filename)) . RCView::button(array( 'name'=>'submit-btn-download',
*/ d($lab_subject); d($this_data); d($rfstdtc); if ($this_data['chem_im_lbdtc'] != '' && $this_data['chem_im_lbdtc'] <= $rfstdtc) { $baseline_date = $this_data['chem_im_lbdtc']; $baseline_flag = 'Y'; /** * Baseline date belongs in Baseline event */ update_field_compare($subject_id, $project_id, $initial_event, $baseline_date, $event['meld_im_supplb_lbdtbl'], "meld_im_supplb_lbdtbl", $debug); d($baseline_date); /** * Now reset all other flags that have changed */ $flag_reset_data = REDCap::getData('array', $subject_id, "meld_im_lbblfl"); foreach ($flag_reset_data AS $reset) { d($reset); foreach ($reset AS $reset_event_id => $reset_event) { foreach ($reset_event as $reset_field => $reset_val) { if ($reset_event_id != $this_data['event_id']) { update_field_compare($subject_id, $project_id, $reset_event_id, '', $reset_val, "meld_im_lbblfl", $debug); } } } } } /** * Baseline flag belongs in the event where the date occurs */ update_field_compare($subject_id, $project_id, $this_data['event_id'], $baseline_flag, $this_data['meld_im_lbblfl'], "meld_im_lbblfl", $debug);
public static function getNewReportIdAndOrder($project_id) { // When adding new report - get eventid, next report id and next project report_order $allRpts = REDCap::getData(LR_REPORT_DATA_PROJECT_ID, 'array', null, array('project_id', 'report_order')); // fields $report_id = 0; $report_order = 0; $eventId = 0; foreach ($allRpts as $rId => $reportEventRecord) { $report_id++; foreach ($reportEventRecord as $eventId => $rptSpec) { $pId = $rptSpec['project_id']; $order = $rptSpec['report_order']; if ($pId == $project_id) { $report_order = $order > $report_order ? $order : $report_order; } } } $report_id++; $report_order++; return array($eventId, $report_id, $report_order); }
/** * pretty form names */ $pretty_form_names = array(); $pretty_form_name_result = db_query("SELECT form_menu_description FROM redcap_metadata WHERE project_id = '$project_id' AND form_name = '{$locked_forms_array['form_name']}' AND form_menu_description IS NOT NULL"); if ($pretty_form_name_result) { $form_name_row = db_fetch_assoc($pretty_form_name_result); } /** * subjects with locked forms */ $subject_lock_result = db_query("SELECT record, event_id FROM `redcap_locking_data` WHERE project_id = '$project_id' AND form_name = '{$locked_forms_array['form_name']}'"); if ($subject_lock_result) { while ($subject_lock_row = db_fetch_assoc($subject_lock_result)) { $fields = REDCap::getFieldNames($locked_forms_array['form_name']); $data = REDCap::getData('array', $subject_lock_row['record'], $fields, $subject_lock_row['event_id']); foreach ($data AS $subject) { foreach ($subject AS $event) { foreach ($event AS $field => $value) { $available_field_count++; if ($value != '') { $field_count++; } } } } } } /** * data in all fields, monitored or not */
foreach ($data as $subject_id => $subject) { foreach ($subject as $event_id => $event) { code_pt($project_id, $subject_id, $event_id, $event[$prefix . "_aemodify"], $event[$prefix . "_aedecod"], $prefix . "_aedecod", $debug, $recode_pt); if ($debug) { error_log("DEBUG: Coded " . strtoupper($prefix) . "_AEDECOD {$event[$prefix . '_aedecod']}: subject={$subject_id}, event={$event_id} for AEMODIFY {$event[$prefix . '_aemodify']}"); } } } } /** * PREFIX_AEBODSYS * uses $tx_prefixes preset array */ foreach ($tx_prefixes as $prefix) { $fields = array($prefix . "_aedecod", $prefix . "_aebodsys"); $data = REDCap::getData('array', $record, $fields, $redcap_event_name); foreach ($data as $subject_id => $subject) { foreach ($subject as $event_id => $event) { code_bodsys($project_id, $subject_id, $event_id, $event[$prefix . "_aedecod"], $event[$prefix . "_aebodsys"], $prefix . "_aebodsys", $debug, $recode_soc); if ($debug) { error_log("DEBUG: Coded SOC: subject={$subject_id}, event={$event_id} for AE {$event[$prefix . "_aedecod"]}"); } } } } if ($debug) { $timer['main_end'] = microtime(true); error_log(benchmark_timing($timer)); } break; case 'cbc':
$item = $event['cm_oth_cmindc']; } $desc_array[] = get_field_label($field, $project_id) . ': <strong>' . $item . "</strong>"; } } $event_start = $event['cm_cmstdtc'] != '' ? $event['cm_cmstdtc'] : $rfstdtc; if ($event['cm_cmtrt'] != '') { $eventAtts[] = get_event_array($event_start, '', '', implode("<br />", $desc_array), $event['cm_cmtrt'], '', '', $url); } } } /** * transfusions */ $fields = array('xfsn_cmstdtc', 'xfsn_cmtrt', 'xfsn_cmdose', 'xfsn_cmindc'); $transfusion_data = REDCap::getData('array', $subjid, $fields); foreach ($transfusion_data AS $subject) { foreach ($subject AS $event_id => $event) { $desc_array = array(); $url = APP_PATH_WEBROOT_FULL . "redcap_v" . $redcap_version . "/DataEntry/index.php?pid=$project_id&page=transfusions&id=$subjid&event_id=$event_id"; foreach ($event AS $field => $item) { if ($item != '' && !in_array($field, array('xfsn_cmstdtc', 'xfsn_cmtrt'))) { $desc_array[] = get_field_label($field, $project_id) . ': <strong>' . $item . "</strong>"; } } $eventAtts[] = get_event_array($event['xfsn_cmstdtc'], '', '', implode("<br />", $desc_array), $event['xfsn_cmtrt'], 'red', '', $url); } } /** * generate and return JSON to timeline script. */
require_once $base_path . '/plugins/includes/functions.php'; require_once APP_PATH_DOCROOT . '/Config/init_project.php'; require_once APP_PATH_DOCROOT . '/ProjectGeneral/header.php'; /** * restrict use of this plugin to the appropriate project */ $allowed_pid = '26'; REDCap::allowProjects($allowed_pid); Kint::enabled($debug); global $Proj; $baseline_event_id = $Proj->firstEventId; /** * let's bring this into the 21st century */ $fields = array('dm_subjid', 'dm_usubjid'); $data = REDCap::getData('array', $subjects, $fields, $baseline_event_id); foreach ($data AS $subject) { foreach ($subject AS $event_id => $event) { if ($event['dm_usubjid'] != '') { /** * find which DAG this subject belongs to */ $site_prefix = substr($event['dm_usubjid'], 0, 3) . '%'; $dag_query = "SELECT group_id, group_name FROM redcap_data_access_groups WHERE project_id = '$project_id' AND group_name LIKE '$site_prefix'"; $dag_result = db_query($dag_query); if ($dag_result) { $dag = db_fetch_assoc($dag_result); if (isset($dag['group_id'])) { /** * For each event in project for this subject, determine if this subject_id has been added to its appropriate DAG. If it hasn't, make it so. * First, we need a list of events for which this subject has data
$timer['end_fields_' . $fragment] = microtime(true); } d($lab_fields); d($control_fields); /** * find baselines for each lab test */ $timer['start_data'] = microtime(true); $data = REDCap::getData('array', $subjects, $lab_fields); $timer['end_data'] = microtime(true); foreach ($data AS $subject_id => $subject) { d($subject_id); /** * get rfstdtc for this subject */ $tx_start_data = REDCap::getData('array', $subject_id, array("dm_rfstdtc")); $rfstdtc = $tx_start_data[$subject_id][$initial_event]['dm_rfstdtc']; /** * if treatment has started */ if (isset($rfstdtc) || $rfstdtc != '') { d($rfstdtc); /** * iterate the lab events for this subject */ foreach ($control_fields as $form_prefix => $labs) { foreach ($labs as $lab_prefix => $fields) { $lab_subject = array(); $reset = array(); foreach ($fields AS $field) { foreach ($subject AS $lab_event_id => $lab_event) {
foreach ($fields AS $field) { $header_array[] = quote_wrap($Proj->metadata[$field]['element_label']); } $data = REDCap::getData('array', '', $fields, $Proj->firstEventId); $treatment_exp_fields = array('pegifn_mhoccur', 'pegifn_suppmh_response', 'triple_mhoccur', 'triple_suppmh_cmdaa', 'triple_suppmh_response', 'nopegifn_mhoccur', 'daa_mhoccur', 'daa_suppmh_failtype', 'daa_oth_suppmh_failtype'); foreach ($treatment_exp_fields AS $field) { $header_array[] = quote_wrap($Proj->metadata[$field]['element_label']); } $treatment_exp_data = REDCap::getData('array', '', $treatment_exp_fields, $Proj->firstEventId); $misc_fields = array('hcvgt_lborres', 'hcvgt_s_lborres', 'hcv_suppfa_hcvout', 'cirr_suppfa_cirrstat', 'dcp_mhoccur', 'livr_mhoccur'); foreach ($misc_fields AS $field) { if ($field != 'hcvgt_s_lborres') { $header_array[] = quote_wrap($Proj->metadata[$field]['element_label']); } } $misc_data = REDCap::getData('array', '', $misc_fields, $Proj->firstEventId); /** * MAIN */ foreach ($data AS $subject_id => $subject) { d($subject[$Proj->firstEventId]['dm_usubjid']); /** * SUBJECT-LEVEL vars */ $data_row = array(); $regimens = array(); /** * MAIN EVENT LOOP */ foreach ($subject AS $event_id => $event) { $data_row[get_element_label('dm_usubjid')] = $event['dm_usubjid'] != '' ? quote_wrap($event['dm_usubjid']) : quote_wrap('--');
$this_form_name = $Proj->metadata[$_POST['field_name']]['form_name']; $event_result = db_query("SELECT DISTINCT forms.event_id FROM (SELECT * FROM redcap_events_forms) forms LEFT OUTER JOIN (SELECT * FROM redcap_events_metadata) events_meta ON forms.event_id = events_meta.event_id LEFT OUTER JOIN (SELECT * FROM redcap_events_arms) arm ON arm.arm_id = events_meta.arm_id WHERE arm.project_id = '$project_id' AND forms.form_name = '$this_form_name'"); if ($event_result) { while ($events_row = db_fetch_assoc($event_result)) { $events[] = $events_row['event_id']; } $data = REDCap::getData('array', '', array($_POST['field_name'], $this_form_name . '_complete'), $events); $form_complete = isset($_POST['form_complete']) && $_POST['form_complete'] == 'on' ? true : false; //d($data); foreach ($data AS $subject_id => $subject) { foreach ($subject AS $event_id => $event) { $do_if_complete = $form_complete ? $event[$this_form_name . '_complete'] == '2' : true; $all_fields_hidden = $my_branching_logic->allFieldsHidden($subject_id, $event_id, array($_POST['field_name'])); //d($event); if (!$all_fields_hidden && $event[$_POST['field_name']] != $_POST['default_value'] && $do_if_complete) { update_field_compare($subject_id, $project_id, $event_id, $_POST['default_value'], $event[$_POST['field_name']], $_POST['field_name'], $debug); } } } } } else { print "<h3>You must select field name and default value</h3>";
$misc_fields = array('hcvgt_lborres', 'hcvgt_s_lborres', 'hcv_suppfa_hcvout', 'cirr_suppfa_cirrstat', 'cirr_suppfa_decomp', 'dcp_mhoccur', 'livr_mhoccur'); foreach ($misc_fields AS $field) { if ($field != 'hcvgt_s_lborres') { $header_array[] = quote_wrap(get_element_label($field)); } } $misc_data = REDCap::getData('array', $subjects, $misc_fields, $Proj->firstEventId); $egfr_fields = array('egfr_lborres', 'egfr_im_lborres', 'egfr_lbblfl', 'egfr_im_lbblfl'); $egfr_data = REDCap::getData('array', $subjects, $egfr_fields); foreach ($egfr_fields AS $field) { if ($field == 'egfr_lborres') { $header_array[] = quote_wrap('Baseline ' . get_element_label($field)); } } $hcvrna_fields = array('hcv_lbblfl', 'hcv_lbstresn', 'hcv_im_lbblfl', 'hcv_im_lbstresn'); $hcvrna_data = REDCap::getData('array', $subjects, $hcvrna_fields); foreach ($hcvrna_fields AS $field) { if ($field == 'hcv_lbstresn') { $header_array[] = quote_wrap('Baseline ' . get_element_label($field)); } } /** * MAIN */ foreach ($data AS $subject_id => $subject) { d($subject[$Proj->firstEventId]['dm_usubjid']); /** * SUBJECT-LEVEL vars */ $data_row = array(); $regimens = array();
if (!db_query($sql)) $errors++; } }*/ if (isset($_POST['filter_dags'])) { $filter_dags = $_POST['filter_dags']; if (!is_array($filter_dags)) { $filter_dags = array($filter_dags); } } // Save report to Longitudinal Reports Data project if ($report_id == 0) { // Adding new report - get eventid, next report id and next project report_order list($eventId, $report_id, $report_order) = LongitudinalReports::getNewReportIdAndOrder($_GET['pid']); } else { // Existing report - just get eventidto include in api post $thisRpt = REDCap::getData(LR_REPORT_DATA_PROJECT_ID, 'array', $report_id, 'report_order'); // fields $eventId = current(array_keys($thisRpt[$report_id])); $report_order = $thisRpt[$report_id][$eventId]['report_order']; } $fields = array(); foreach ($_POST['field'] as $f) { if (isset($f) && trim($f) !== '') { $fields[] = $f; } } $reportData = array(); $now = new DateTime(); $reportData['report_id'] = $report_id; $reportData['project_id'] = $Proj->project_id; $reportData['title'] = $_POST['__TITLE__'];
* initialize variables */ $timer_start = microtime(true); $monitor_name = $_POST['monitor_name']; $table_csv = ""; $export_filename = "TRANSPLANT_MONITORING_" . strtoupper($monitor_name); /** * get sim/sof data */ $fields = array('sim_cmstdtc', 'sof_cmstdtc'); $data = REDCap::getData('array', '', $fields); /** * get TX history data */ $hist_fields = array("dm_rfstdtc", "dm_rfendtc", "livr_mhoccur"); $hist_data = REDCap::getData('array', '', $hist_fields, $first_event_id); $subject_sql = "SELECT data.record AS subjid, IF (demo.username IS NULL, 'N', 'Y') AS demo_locker, IF (eot.username IS NULL, 'N', 'Y') AS eot_locker, dsterm.value AS eot_status, geno.value AS genotype FROM (SELECT DISTINCT record, project_id FROM `redcap_data`) data LEFT OUTER JOIN (SELECT * FROM `redcap_locking_data` WHERE form_name = 'demographics') demo ON data.record = demo.record AND data.project_id = demo.project_id LEFT OUTER JOIN (SELECT * FROM `redcap_locking_data` WHERE form_name = 'early_discontinuation_eot') eot ON data.record = eot.record AND data.project_id = eot.project_id LEFT OUTER JOIN (SELECT * FROM redcap_data WHERE field_name = 'eot_dsterm') dsterm ON data.record = dsterm.record AND data.project_id = dsterm.project_id LEFT OUTER JOIN (SELECT * FROM redcap_data WHERE field_name = 'hcvgt_lborres') geno ON data.record = geno.record AND data.project_id = geno.project_id WHERE data.project_id = '$project_id'";
public static function set_dag($record, $instrument, $debug) { global $project_id; /** * SET Data Access Group based upon dm_usubjid prefix */ $fields = array('dm_usubjid'); $data = REDCap::getData('array', $record, $fields); foreach ($data AS $subject) { foreach ($subject AS $event_id => $event) { if ($event['dm_usubjid'] != '') { /** * find which DAG this subject belongs to */ $site_prefix = substr($event['dm_usubjid'], 0, 3) . '%'; $dag_query = "SELECT group_id, group_name FROM redcap_data_access_groups WHERE project_id = '$project_id' AND group_name LIKE '$site_prefix'"; $dag_result = db_query($dag_query); if ($dag_result) { $dag = db_fetch_assoc($dag_result); if (isset($dag['group_id'])) { /** * For each event in project for this subject, determine if this subject_id has been added to its appropriate DAG. If it hasn't, make it so. * First, we need a list of events for which this subject has data */ $subject_events_query = "SELECT DISTINCT event_id FROM redcap_data WHERE project_id = '$project_id' AND record = '$record' AND field_name = '" . $instrument . "_complete'"; $subject_events_result = db_query($subject_events_query); if ($subject_events_result) { while ($subject_events_row = db_fetch_assoc($subject_events_result)) { if (isset($subject_events_row['event_id'])) { $_GET['event_id'] = $subject_events_row['event_id']; // for logging /** * The subject has data in this event_id * does the subject have corresponding DAG assignment? */ $has_event_data_query = "SELECT DISTINCT event_id FROM redcap_data WHERE project_id = '$project_id' AND record = '$record' AND event_id = '" . $subject_events_row['event_id'] . "' AND field_name = '__GROUPID__'"; $has_event_data_result = db_query($has_event_data_query); if ($has_event_data_result) { $has_event_data = db_fetch_assoc($has_event_data_result); if (!isset($has_event_data['event_id'])) { /** * Subject does not have a matching DAG assignment for this data * construct proper matching __GROUPID__ record and insert */ $insert_dag_query = "INSERT INTO redcap_data SET record = '$record', event_id = '" . $subject_events_row['event_id'] . "', value = '" . $dag['group_id'] . "', project_id = '$project_id', field_name = '__GROUPID__'"; if (!$debug) { if (db_query($insert_dag_query)) { target_log_event($insert_dag_query, 'redcap_data', 'insert', $record, $dag['group_name'], 'Assign record to Data Access Group (' . $dag['group_name'] . ')'); } else { error_log("SQL INSERT FAILED: " . db_error() . "\n"); echo db_error() . "\n"; } } else { show_var($insert_dag_query); error_log('(TESTING) NOTICE: ' . $insert_dag_query); } } db_free_result($has_event_data_result); } } } db_free_result($subject_events_result); } } db_free_result($dag_result); } } } } }
if ($rbv_event['rib_cmstdtc'] != '') { if (!$has_rbv) { $regimen = $regimen . ' RBV'; $has_rbv = true; } } } } if ($sim && $sof) { $wk4_start_obj = new DateTime($event['dm_rfstdtc']); $wk4_start_obj->add(new DateInterval('P20D')); $wk4_start_date = $wk4_start_obj->format('Y-m-d'); $wk4_end_obj = new DateTime($event['dm_rfstdtc']); $wk4_end_obj->add(new DateInterval('P36D')); $wk4_end_date = $wk4_end_obj->format('Y-m-d'); $hcv_data = REDCap::getData('array', $subject_id, $hcv_fields); foreach ($hcv_data AS $hcv_subject) { foreach ($hcv_subject AS $hcv_event) { if (($wk4_start_date < $hcv_event['hcv_lbdtc'] && $hcv_event['hcv_lbdtc'] < $wk4_end_date) && ($hcv_event['hcv_lbstresn'] != '' || $hcv_event['hcv_supplb_hcvdtct'] != '')) { $data_row = array(); if ($debug) { show_var($subject_id, 'SUBJECT', 'blue'); show_var($regimen, 'REGIMEN'); show_var($event['dm_rfstdtc'], 'START DATE'); show_var($wk4_start_date, '4WK START'); show_var($hcv_event['hcv_lbdtc'], 'HCVRNA DATE'); show_var($wk4_end_date, '4WK END'); show_var($hcv_event['hcv_lbstresn'], 'QUANT'); show_var($hcv_event['hcv_supplb_hcvdtct'], 'DETECT'); } $data_row['subjid'] = $subject_id;
/** * restrict access to one or more pids */ $allowed_pids = array('38'); REDCap::allowProjects($allowed_pids); /** * project metadata */ global $Proj; /** * initialize variables */ $plugin_title = "Derive Treatment Started (trt_suppex_txstat)"; /** * plugin title */ echo "<h3>$plugin_title</h3>"; /** * MAIN LOOP */ $fields = array("dm_rfstdtc", "trt_suppex_txstat"); $data = REDCap::getData('array', $subjects, $fields, $Proj->firstEventId); if ($debug && $subjects != '') { show_var($data); } foreach ($data AS $subject_id => $subject) { foreach ($subject AS $event_id => $event) { $started = $event['dm_rfstdtc'] == '' ? 'N' : 'Y'; update_field_compare($subject_id, $project_id, $event_id, $started, $event['trt_suppex_txstat'], 'trt_suppex_txstat', $debug); } }
public function renderTestRow($id, $label, $selectedRecord, $selectedEvent) { // Make a dropdown that contains all record_ids. $data = REDCap::getData('array', NULL, REDCap::getRecordIdField()); //error_log("data: ".print_r($data,true)); foreach ($data as $record_id => $arr) { $record_id_options[$record_id] = $record_id; } // Get all Events $events = REDCap::getEventNames(TRUE, FALSE); $row = RCView::tr(array(), RCView::td(array('class' => 'td1'), self::insertHelp('test')) . RCView::td(array('class' => 'td2'), "<label for='test-{$id}'><b>{$label}:</b></label>") . RCView::td(array('class' => 'td3'), RCView::span(array(), "Test logic using " . REDCap::getRecordIdField() . ":" . RCView::select(array('id' => "test_record-{$id}", 'name' => "test_record-{$id}", 'class' => "tbi x-form-text x-form-field", 'style' => 'height:20px;border:0px;', 'onchange' => "testLogic('{$id}');"), $record_id_options, $selectedRecord)) . RCView::span(array('style' => 'display:' . (REDCap::isLongitudinal() ? 'inline;' : 'none;')), " of event " . RCView::select(array('id' => "test_event-{$id}", 'name' => "test_event-{$id}", 'class' => "tbi x-form-text x-form-field", 'style' => 'height:20px;border:0px;', 'onchange' => "testLogic('{$id}');"), $events, $selectedEvent)) . RCView::span(array(), RCView::button(array('class' => 'jqbuttonmed ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only', 'onclick' => 'testLogic("' . $id . '");', 'style' => 'margin:0px 10px;'), 'Test') . RCView::span(array('id' => 'result-' . $id))))); return $row; }
/** * @param $record * @param $redcap_event_name * @param $instrument * @param $debug */ public static function code_terms($record, $redcap_event_name, $instrument, $debug) { global $Proj, $project_id, $tx_fragment_labels; $this_event_id = $Proj->getEventIdUsingUniqueEventName($redcap_event_name); switch ($instrument) { case 'ae_coding': $recode_llt = false; $recode_pt = true; $recode_soc = true; $prefix = 'ae'; /** * AE_AEMODIFY */ $fields = array("ae_aeterm", "ae_oth_aeterm", "ae_aemodify"); $data = REDCap::getData('array', $record, $fields, $this_event_id); code_llt($project_id, $record, $this_event_id, fix_case($data[$record][$this_event_id]['ae_aeterm']), fix_case($data[$record][$this_event_id]['ae_oth_aeterm']), $data[$record][$this_event_id]['ae_aemodify'], 'ae_aemodify', $debug, $recode_llt); if ($debug) { error_log("DEBUG: Coded AE_AEMODIFY {$data[$record][$this_event_id]['ae_aemodify']}: subject=$record, event=$this_event_id for AE {$data[$record][$this_event_id]['ae_aeterm']} - {$data[$record][$this_event_id]['ae_oth_aeterm']}"); } /** * PREFIX_AEDECOD * uses $tx_prefixes preset array */ $fields = array($prefix . "_aemodify", $prefix . "_aedecod"); $data = REDCap::getData('array', $record, $fields, $this_event_id); code_pt($project_id, $record, $this_event_id, $data[$record][$this_event_id][$prefix . "_aemodify"], $data[$record][$this_event_id][$prefix . "_aedecod"], $prefix . "_aedecod", $debug, $recode_pt); if ($debug) { error_log("DEBUG: Coded " . strtoupper($prefix) . "_AEDECOD {$data[$record][$this_event_id][$prefix . '_aedecod']}: subject=$record, event=$this_event_id for AEMODIFY {$data[$record][$this_event_id][$prefix . '_aemodify']}"); } /** * PREFIX_AEBODSYS * uses $tx_prefixes preset array */ $fields = array($prefix . "_aedecod", $prefix . "_aebodsys"); $data = REDCap::getData('array', $record, $fields, $this_event_id); code_bodsys($project_id, $record, $this_event_id, $data[$record][$this_event_id][$prefix . "_aedecod"], $data[$record][$this_event_id][$prefix . "_aebodsys"], $prefix . "_aebodsys", $debug, $recode_soc); if ($debug) { error_log("DEBUG: Coded SOC: subject=$record, event=$this_event_id for AE {$data[$record][$this_event_id][$prefix . "_aedecod"]}"); } unset($data); break; /** * ADVERSE EVENTS * ACTION: auto-code AE */ case 'adverse_events': $recode_llt = true; $recode_pt = true; $recode_soc = true; /** * AE_AEDECOD */ $fields = array("ae_aeterm", "ae_oth_aeterm", "ae_aemodify"); $data = REDCap::getData('array', $record, $fields, $this_event_id); code_llt($project_id, $record, $this_event_id, fix_case($data[$record][$this_event_id]['ae_aeterm']), fix_case($data[$record][$this_event_id]['ae_oth_aeterm']), $data[$record][$this_event_id]['ae_aemodify'], 'ae_aemodify', $debug, $recode_llt); if ($debug) { error_log("DEBUG: Coded AE_AEMODIFY {$data[$record][$this_event_id]['ae_aemodify']}: subject=$record, event=$this_event_id for AE {$data[$record][$this_event_id]['ae_aeterm']} - {$data[$record][$this_event_id]['ae_oth_aeterm']}"); } /** * AE_AEDECOD */ $fields = array("ae_aemodify", "ae_aedecod"); $data = REDCap::getData('array', $record, $fields, $this_event_id); code_pt($project_id, $record, $this_event_id, fix_case($data[$record][$this_event_id]['ae_aemodify']), $data[$record][$this_event_id]['ae_aedecod'], 'ae_aedecod', $debug, $recode_pt); if ($debug) { error_log("DEBUG: Coded AE_AEDECOD {$data[$record][$this_event_id]['ae_aedecod']}: subject=$record, event=$this_event_id for AE {$data[$record][$this_event_id]['ae_aemodify']}"); } /** * AE_AEBODSYS */ $fields = array("ae_aedecod", "ae_aebodsys"); $data = REDCap::getData('array', $record, $fields, $this_event_id); code_bodsys($project_id, $record, $this_event_id, $data[$record][$this_event_id]['ae_aedecod'], $data[$record][$this_event_id]['ae_aebodsys'], 'ae_aebodsys', $debug, $recode_soc); if ($debug) { error_log("DEBUG: Coded SOC: subject=$record, event=$this_event_id for AE {$data[$record][$this_event_id]['ae_aedecod']}"); } unset($data); break; /** * MEDICAL HISTORY * ACTION: auto-code MH */ case 'key_medical_history': $recode_llt = false; $recode_pt = true; $recode_soc = true; $mh_prefixes = array('othpsy', 'othca'); /** * MH_MHMODIFY */ foreach ($mh_prefixes AS $prefix) { $fields = array($prefix . "_oth_mhterm", $prefix . "_mhmodify"); $data = REDCap::getData('array', $record, $fields, $this_event_id); code_llt($project_id, $record, $this_event_id, fix_case($data[$record][$this_event_id][$prefix . "_oth_mhterm"]), '', $data[$record][$this_event_id][$prefix . "_mhmodify"], $prefix . "_mhmodify", $debug, $recode_llt); if ($debug) { error_log("DEBUG: Coded " . strtoupper($prefix) . "_MHMODIFY {$data[$record][$this_event_id][$prefix . "_mhmodify"]}: subject=$record, event=$this_event_id for MH {$data[$record][$this_event_id][$prefix . "_oth_mhterm"]}"); } /** * PREFIX_MHDECOD * uses $mh_prefixes preset array */ $fields = array($prefix . "_mhmodify", $prefix . "_mhdecod"); $data = REDCap::getData('array', $record, $fields, $this_event_id); code_pt($project_id, $record, $this_event_id, $data[$record][$this_event_id][$prefix . "_mhmodify"], $data[$record][$this_event_id][$prefix . "_mhdecod"], $prefix . "_mhdecod", $debug, $recode_pt); if ($debug) { error_log("DEBUG: Coded " . strtoupper($prefix) . "_MHDECOD {$data[$record][$this_event_id][$prefix . '_mhdecod']}: subject=$record, event=$this_event_id for MHMODIFY {$data[$record][$this_event_id][$prefix . '_mhmodify']}"); } /** * PREFIX_mhBODSYS * uses $mh_prefixes preset array */ $fields = array($prefix . "_mhdecod", $prefix . "_mhbodsys"); $data = REDCap::getData('array', $record, $fields, $this_event_id); code_bodsys($project_id, $record, $this_event_id, $data[$record][$this_event_id][$prefix . "_mhdecod"], $data[$record][$this_event_id][$prefix . "_mhbodsys"], $prefix . "_mhbodsys", $debug, $recode_soc); if ($debug) { error_log("DEBUG: Coded " . strtoupper($prefix) . "_MHBODSYS {$data[$record][$this_event_id][$prefix . "_mhbodsys"]}: subject=$record, event=$this_event_id for MHDECOD {$data[$record][$this_event_id][$prefix . "_mhdecod"]}"); } } unset($data); break; /** * EOT */ case 'early_discontinuation_eot': $recode_llt = true; $recode_pt = true; $recode_soc = true; /** * EOT_AEDECOD */ $data = REDCap::getData('array', $record, array("eot_suppds_ncmpae", "eot_oth_suppds_ncmpae", "eot_aemodify", "eot_dsterm"), $this_event_id); $ptdata = REDCap::getData('array', $record, array("eot_aemodify", "eot_aedecod"), $this_event_id); $soc_data = REDCap::getData('array', $record, array("eot_aedecod", "eot_aebodsys"), $this_event_id); foreach ($data[$record][$this_event_id] AS $event) { if ($event['eot_dsterm'] == 'ADVERSE_EVENT') { code_llt($project_id, $record, $this_event_id, fix_case($event['eot_suppds_ncmpae']), fix_case($event['eot_oth_suppds_ncmpae']), $event['eot_aemodify'], 'eot_aemodify', $debug, $recode_llt); if ($debug) { error_log("INFO (TESTING EOT): Coded EOT_AEMODIFY {$event['eot_aemodify']}: subject=$record, event=$this_event_id for AE {$event['eot_suppds_ncmpae']} - {$event['eot_oth_suppds_ncmpae']}"); } /** * AE_AEDECOD */ foreach ($ptdata[$record][$this_event_id] AS $ptevent) { code_pt($project_id, $record, $this_event_id, fix_case($ptevent['eot_aemodify']), $ptevent['eot_aedecod'], 'eot_aedecod', $debug, $recode_pt); if ($debug) { error_log("DEBUG: Coded EOT_AEDECOD {$ptevent['eot_aedecod']}: subject=$record, event=$this_event_id for AEMODIFY {$ptevent['eot_aemodify']}"); } } /** * EOT_AEBODSYS */ foreach ($soc_data[$record][$this_event_id] AS $soc_event) { code_bodsys($project_id, $record, $this_event_id, $soc_event['eot_aedecod'], $soc_event['eot_aebodsys'], 'eot_aebodsys', $debug, $recode_soc); if ($debug) { error_log("DEBUG: Coded SOC: subject=$record, event=$this_event_id for AE {$soc_event['eot_aedecod']}"); } } } } unset($data); unset($ptdata); unset($soc_data); break; /** * TX stop AEs */ case 'ribavirin_administration': case 'harvoni_administration': case 'ombitasvir_paritaprevir': case 'dasabuvir': case 'zepatier_administration': $recode_llt = true; $recode_pt = true; $recode_soc = true; $tx_prefix = array_search(substr($instrument, 0, strpos($instrument, '_')), $tx_fragment_labels); /** * AE_AEMODIFY */ $fields = array($tx_prefix . '_suppcm_cmncmpae', $tx_prefix . '_oth_suppcm_cmncmpae', $tx_prefix . '_aemodify'); $data = REDCap::getData('array', $record, $fields, $this_event_id); foreach ($data[$record][$this_event_id] AS $event) { code_llt($project_id, $record, $this_event_id, fix_case($event[$tx_prefix . '_suppcm_cmncmpae']), fix_case($event[$tx_prefix . '_oth_suppcm_cmncmpae']), $event[$tx_prefix . '_aemodify'], $tx_prefix . '_aemodify', $debug, $recode_llt); if ($debug) { error_log("DEBUG: Coded AE_AEMODIFY {$event[$tx_prefix . '_aemodify']}: subject=$record, event=$this_event_id for AE {$event[$tx_prefix . '_suppcm_cmncmpae']} - {$event[$tx_prefix . '_oth_suppcm_cmncmpae']}"); } } /** * AE_AEDECOD */ $fields = array($tx_prefix . '_aemodify', $tx_prefix . "_aedecod"); $data = REDCap::getData('array', $record, $fields, $this_event_id); foreach ($data[$record][$this_event_id] AS $event) { code_pt($project_id, $record, $this_event_id, fix_case($event[$tx_prefix . '_aemodify']), $event[$tx_prefix . '_aedecod'], $tx_prefix . '_aedecod', $debug, $recode_pt); if ($debug) { error_log("DEBUG: Coded AE_AEDECOD {$event[$tx_prefix . '_aedecod']}: subject=$record, event=$this_event_id for AE {$event[$tx_prefix . '_aemodify']}"); } } /** * AE_AEBODSYS */ $fields = array($tx_prefix . '_aedecod', $tx_prefix . '_aebodsys'); $data = REDCap::getData('array', $record, $fields, $this_event_id); foreach ($data[$record][$this_event_id] AS $event) { code_bodsys($project_id, $record, $this_event_id, $event[$tx_prefix . '_aedecod'], $event[$tx_prefix . '_aebodsys'], $tx_prefix . '_aebodsys', $debug, $recode_soc); if ($debug) { error_log("DEBUG: Coded SOC: subject=$record, event=$this_event_id for AE {$event[$tx_prefix . '_aedecod']}"); } } unset($data); break; /** * CONMEDS * ACTION: auto-code CONMEDS */ case 'conmeds': /** * CM_CMDECOD */ $recode_cm = true; $recode_llt = true; $recode_pt = true; $recode_soc = true; $recode_atc = true; $fields = array("cm_cmtrt", "cm_cmdecod", "cm_cmindc", "cm_oth_cmindc", "cm_suppcm_indcod"); $data = REDCap::getData('array', $record, $fields, $this_event_id); code_cm($project_id, $record, $this_event_id, $data[$record][$this_event_id], $debug, $recode_cm); /** * cm_suppcm_mktstat * PRESCRIPTION or OTC */ $fields = array("cm_cmdecod", "cm_suppcm_mktstat"); $data = REDCap::getData('array', $record, $fields, $this_event_id); foreach ($data as $subject_id => $subject) { foreach ($subject as $event_id => $event) { if (isset($event['cm_cmdecod']) && $event['cm_cmdecod'] != '') { update_field_compare($subject_id, $project_id, $event_id, get_conmed_mktg_status($event['cm_cmdecod']), $event['cm_suppcm_mktstat'], 'cm_suppcm_mktstat', $debug); if ($debug) { error_log("DEBUG: $subject_id Marketing Status = " . get_conmed_mktg_status($event['cm_cmdecod'])); } } } } /** * CM_SUPPCM_INDCOD */ $fields = array("cm_cmindc", "cm_oth_cmindc", "cm_suppcm_indcmodf"); $data = REDCap::getData('array', $record, $fields, $this_event_id); /** * re-code all nutritional support to nutritional supplement */ if ($data[$record][$this_event_id]['cm_oth_cmindc'] == 'Nutritional support') { $data[$record][$this_event_id]['cm_oth_cmindc'] = 'Nutritional supplement'; } code_llt($project_id, $record, $this_event_id, fix_case($data[$record][$this_event_id]['cm_cmindc']), fix_case($data[$record][$this_event_id]['cm_oth_cmindc']), $data[$record][$this_event_id]['cm_suppcm_indcmodf'], 'cm_suppcm_indcmodf', $debug, $recode_llt); if ($debug) { error_log("DEBUG: Coded INDC LLT: {} subject=$record, event=$this_event_id for INDICATION {$data[$record][$this_event_id]['cm_cmindc']}"); } /** * CM_SUPPCM_INDCOD */ $fields = array("cm_suppcm_indcmodf", "cm_suppcm_indcod"); $data = REDCap::getData('array', $record, $fields, $this_event_id); code_pt($project_id, $record, $this_event_id, $data[$record][$this_event_id]['cm_suppcm_indcmodf'], $data[$record][$this_event_id]['cm_suppcm_indcod'], 'cm_suppcm_indcod', $debug, $recode_pt); if ($debug) { error_log("DEBUG: Coded INDC PT: subject=$record, event=$this_event_id for INDICATION {$data[$record][$this_event_id]['cm_suppcm_indcod']}"); } /** * CM_SUPPCM_INDCSYS */ $fields = array("cm_suppcm_indcod", "cm_suppcm_indcsys"); $data = REDCap::getData('array', $record, $fields, $this_event_id); code_bodsys($project_id, $record, $this_event_id, $data[$record][$this_event_id]['cm_suppcm_indcod'], $data[$record][$this_event_id]['cm_suppcm_indcsys'], 'cm_suppcm_indcsys', $debug, $recode_soc); if ($debug) { error_log("DEBUG: Coded INDCSYS: subject=$record, event=$this_event_id for INDC {$data[$record][$this_event_id]['cm_suppcm_indcod']}"); } /** * CM_SUPPCM_ATCNAME * CM_SUPPCM_ATC2NAME */ $fields = array("cm_cmdecod", "cm_suppcm_atcname", "cm_suppcm_atc2name"); $data = REDCap::getData('array', $record, $fields, $this_event_id); code_atc($project_id, $record, $this_event_id, $data[$record][$this_event_id]['cm_cmdecod'], $data[$record][$this_event_id]['cm_suppcm_atcname'], $data[$record][$this_event_id]['cm_suppcm_atc2name'], $debug, $recode_atc); if ($debug) { error_log("DEBUG: Coded ATCs: subject=$record, event=$this_event_id for CONMED {$data[$record][$this_event_id]['cm_cmdecod']}"); } break; case 'transfusions': $recode_cm = true; $recode_llt = true; $recode_soc = true; $recode_atc = true; /** * XFSN_CMDECOD */ $fields = array("xfsn_cmtrt", "xfsn_cmdecod", "xfsn_cmindc", "xfsn_suppcm_indcod"); $data = REDCap::getData('array', $record, $fields, $this_event_id); code_cm($project_id, $record, $this_event_id, $data[$record][$this_event_id], $debug, $recode_cm); /** * XFSN_SUPPCM_INDCOD */ $fields = array("xfsn_cmindc", "xfsn_suppcm_indcod"); $data = REDCap::getData('array', $record, $fields, $this_event_id); code_llt($project_id, $record, $this_event_id, fix_case($data[$record][$this_event_id]['xfsn_cmindc']), fix_case($data[$record][$this_event_id]['xfsn_oth_cmindc']), $data[$record][$this_event_id]['xfsn_suppcm_indcod'], 'xfsn_suppcm_indcod', $debug, $recode_llt); if ($debug) { error_log("DEBUG: Coded XFSN INDC: subject=$record, event=$this_event_id for CONMED {$data[$record][$this_event_id]['xfsn_cmdecod']}"); } /** * XFSN_SUPPCM_INDCSYS */ $fields = array("xfsn_suppcm_indcod", "xfsn_suppcm_indcsys"); $data = REDCap::getData('array', $record, $fields, $this_event_id); code_bodsys($project_id, $record, $this_event_id, $data[$record][$this_event_id]['xfsn_suppcm_indcod'], $data[$record][$this_event_id]['xfsn_suppcm_indcsys'], 'xfsn_suppcm_indcsys', $debug, $recode_soc); if ($debug) { error_log("DEBUG: Coded XFSN INDCSYS: subject=$record, event=$this_event_id for INDC {$data[$record][$this_event_id]['xfsn_suppcm_indcod']}"); } /** * XFSN_SUPPCM_ATCNAME * XFSN_SUPPCM_ATC2NAME */ $fields = array("xfsn_cmdecod", "xfsn_suppcm_atcname", "xfsn_suppcm_atc2name"); $data = REDCap::getData('array', $record, $fields, $this_event_id); code_atc_xfsn($project_id, $record, $this_event_id, $data[$record][$this_event_id]['xfsn_cmdecod'], $data[$record][$this_event_id]['xfsn_suppcm_atcname'], $data[$record][$this_event_id]['xfsn_suppcm_atc2name'], $debug, $recode_atc); if ($debug) { error_log("DEBUG: Coded XFSN ATCs: subject=$record, event=$this_event_id for CONMED {$data[$record][$this_event_id]['xfsn_cmdecod']}"); } unset($data); break; case 'mh_coding': $recode_llt = false; $recode_pt = true; $recode_soc = true; $mh_prefixes = array('othpsy', 'othca'); /** * MH_MHMODIFY */ foreach ($mh_prefixes AS $prefix) { $fields = array($prefix . "_oth_mhterm", $prefix . "_mhmodify"); $data = REDCap::getData('array', $record, $fields, $this_event_id); code_llt($project_id, $record, $this_event_id, fix_case($data[$record][$this_event_id][$prefix . "_oth_mhterm"]), '', $data[$record][$this_event_id][$prefix . "_mhmodify"], $prefix . "_mhmodify", $debug, $recode_llt); if ($debug) { error_log("DEBUG: Coded " . strtoupper($prefix) . "_MHMODIFY {$data[$record][$this_event_id][$prefix . "_mhmodify"]}: subject=$record, event=$this_event_id for MH {$data[$record][$this_event_id][$prefix . "_oth_mhterm"]}"); } /** * PREFIX_MHDECOD * uses $mh_prefixes preset array */ $fields = array($prefix . "_mhmodify", $prefix . "_mhdecod"); $data = REDCap::getData('array', $record, $fields, $this_event_id); code_pt($project_id, $record, $this_event_id, $data[$record][$this_event_id][$prefix . "_mhmodify"], $data[$record][$this_event_id][$prefix . "_mhdecod"], $prefix . "_mhdecod", $debug, $recode_pt); if ($debug) { error_log("DEBUG: Coded " . strtoupper($prefix) . "_MHDECOD {$data[$record][$this_event_id][$prefix . '_mhdecod']}: subject=$record, event=$this_event_id for MHMODIFY {$data[$record][$this_event_id][$prefix . '_mhmodify']}"); } /** * PREFIX_mhBODSYS * uses $mh_prefixes preset array */ $fields = array($prefix . "_mhdecod", $prefix . "_mhbodsys"); $data = REDCap::getData('array', $record, $fields, $this_event_id); code_bodsys($project_id, $record, $this_event_id, $data[$record][$this_event_id][$prefix . "_mhdecod"], $data[$record][$this_event_id][$prefix . "_mhbodsys"], $prefix . "_mhbodsys", $debug, $recode_soc); if ($debug) { error_log("DEBUG: Coded " . strtoupper($prefix) . "_MHBODSYS {$data[$record][$this_event_id][$prefix . "_mhbodsys"]}: subject=$record, event=$this_event_id for MHDECOD {$data[$record][$this_event_id][$prefix . "_mhdecod"]}"); } } unset($data); break; case 'cm_coding': $recode_llt = false; $recode_pt = true; $recode_soc = true; $recode_atc = false; $recode_cm = true; /** * CM_CMDECOD */ $fields = array("cm_cmtrt", "cm_cmdecod", "cm_cmindc", "cm_oth_cmindc", "cm_suppcm_indcod"); $data = REDCap::getData('array', $record, $fields, $this_event_id); code_cm($project_id, $record, $this_event_id, $data[$record][$this_event_id], $debug, $recode_cm); if ($debug) { error_log("DEBUG: Coded CONMED: subject=$record, event=$this_event_id for CMTRT {$data[$record][$this_event_id]['cm_cmtrt']}"); } /** * cm_suppcm_mktstat * PRESCRIPTION or OTC */ $fields = array("cm_cmdecod", "cm_suppcm_mktstat"); $data = REDCap::getData('array', $record, $fields, $this_event_id); foreach ($data as $subject_id => $subject) { foreach ($subject as $event_id => $event) { if (isset($event['cm_cmdecod']) && $event['cm_cmdecod'] != '') { update_field_compare($subject_id, $project_id, $event_id, get_conmed_mktg_status($event['cm_cmdecod']), $event['cm_suppcm_mktstat'], 'cm_suppcm_mktstat', $debug); if ($debug) { error_log("DEBUG: $subject_id Marketing Status = " . get_conmed_mktg_status($event['cm_cmdecod'])); } } } } /** * CM_SUPPCM_INDCOD */ $fields = array("cm_cmindc", "cm_oth_cmindc", "cm_suppcm_indcmodf"); $data = REDCap::getData('array', $record, $fields, $this_event_id); /** * re-code all nutritional support to nutritional supplement */ if ($data[$record][$this_event_id]['cm_oth_cmindc'] == 'Nutritional support') { $data[$record][$this_event_id]['cm_oth_cmindc'] = 'Nutritional supplement'; } code_llt($project_id, $record, $this_event_id, fix_case($data[$record][$this_event_id]['cm_cmindc']), fix_case($data[$record][$this_event_id]['cm_oth_cmindc']), $data[$record][$this_event_id]['cm_suppcm_indcmodf'], 'cm_suppcm_indcmodf', $debug, $recode_llt); if ($debug) { error_log("DEBUG: Coded INDC LLT: {} subject=$record, event=$this_event_id for INDICATION {$data[$record][$this_event_id]['cm_cmindc']}"); } /** * CM_SUPPCM_INDCOD */ $fields = array("cm_suppcm_indcmodf", "cm_suppcm_indcod"); $data = REDCap::getData('array', $record, $fields, $this_event_id); code_pt($project_id, $record, $this_event_id, $data[$record][$this_event_id]['cm_suppcm_indcmodf'], $data[$record][$this_event_id]['cm_suppcm_indcod'], 'cm_suppcm_indcod', $debug, $recode_pt); if ($debug) { error_log("DEBUG: Coded INDC PT: subject=$record, event=$this_event_id for INDICATION {$data[$record][$this_event_id]['cm_suppcm_indcod']}"); } /** * CM_SUPPCM_INDCSYS */ $fields = array("cm_suppcm_indcod", "cm_suppcm_indcsys"); $data = REDCap::getData('array', $record, $fields, $this_event_id); code_bodsys($project_id, $record, $this_event_id, $data[$record][$this_event_id]['cm_suppcm_indcod'], $data[$record][$this_event_id]['cm_suppcm_indcsys'], 'cm_suppcm_indcsys', $debug, $recode_soc); if ($debug) { error_log("DEBUG: Coded INDCSYS: subject=$record, event=$this_event_id for INDC {$data[$record][$this_event_id]['cm_suppcm_indcod']}"); } /** * CM_SUPPCM_ATCNAME * CM_SUPPCM_ATC2NAME */ $fields = array("cm_cmdecod", "cm_suppcm_atcname", "cm_suppcm_atc2name"); $data = REDCap::getData('array', $record, $fields, $this_event_id); code_atc_soc($project_id, $record, $this_event_id, $data[$record][$this_event_id]['cm_cmdecod'], $data[$record][$this_event_id]['cm_suppcm_atcname'], $data[$record][$this_event_id]['cm_suppcm_atc2name'], $debug, $recode_atc); if ($debug) { error_log("DEBUG: Coded ATCs: subject=$record, event=$this_event_id for CONMED {$data[$record][$this_event_id]['cm_cmdecod']}"); } /** * XFSN_CMDECOD */ $fields = array("xfsn_cmtrt", "xfsn_cmdecod", "xfsn_cmindc", "xfsn_suppcm_indcod"); $data = REDCap::getData('array', $record, $fields, $this_event_id); foreach ($data AS $subject_id => $subject) { foreach ($subject AS $event_id => $event) { if (isset($event['xfsn_cmtrt']) && $event['xfsn_cmtrt'] != '') { $med = array(); $med_result = db_query("SELECT DISTINCT drug_coded FROM _target_xfsn_coding WHERE drug_name = '" . prep($event['xfsn_cmtrt']) . "'"); if ($med_result) { $med = db_fetch_assoc($med_result); if (isset($med['drug_coded']) && $med['drug_coded'] != '') { update_field_compare($subject_id, $project_id, $event_id, $med['drug_coded'], $event['xfsn_cmdecod'], 'xfsn_cmdecod', $debug); } } if ($debug) { error_log("DEBUG: Coded Transfusion: subject=$subject_id, event=$event_id for CMTRT {$event['xfsn_cmtrt']}"); } } else { update_field_compare($subject_id, $project_id, $event_id, '', $event['xfsn_cmdecod'], 'xfsn_cmdecod', $debug); } } } /** * XFSN_SUPPCM_INDCOD */ $fields = array("xfsn_cmindc", "xfsn_suppcm_indcod"); $data = REDCap::getData('array', $record, $fields, $this_event_id); code_llt($project_id, $record, $this_event_id, fix_case($data[$record][$this_event_id]['xfsn_cmindc']), fix_case($data[$record][$this_event_id]['xfsn_oth_cmindc']), $data[$record][$this_event_id]['xfsn_suppcm_indcod'], 'xfsn_suppcm_indcod', $debug, $recode_llt); if ($debug) { error_log("DEBUG: Coded XFSN INDC: subject=$record, event=$this_event_id for CONMED {$data[$record][$this_event_id]['xfsn_cmdecod']}"); } /** * XFSN_SUPPCM_INDCSYS */ $fields = array("xfsn_suppcm_indcod", "xfsn_suppcm_indcsys"); $data = REDCap::getData('array', $record, $fields, $this_event_id); code_bodsys($project_id, $record, $this_event_id, $data[$record][$this_event_id]['xfsn_suppcm_indcod'], $data[$record][$this_event_id]['xfsn_suppcm_indcsys'], 'xfsn_suppcm_indcsys', $debug, $recode_soc); if ($debug) { error_log("DEBUG: Coded XFSN INDCSYS: subject=$record, event=$this_event_id for INDC {$data[$record][$this_event_id]['xfsn_suppcm_indcod']}"); } /** * XFSN_SUPPCM_ATCNAME * XFSN_SUPPCM_ATC2NAME */ $fields = array("xfsn_cmdecod", "xfsn_suppcm_atcname", "xfsn_suppcm_atc2name"); $data = REDCap::getData('array', $record, $fields, $this_event_id); code_atc_xfsn($project_id, $record, $this_event_id, $data[$record][$this_event_id]['xfsn_cmdecod'], $data[$record][$this_event_id]['xfsn_suppcm_atcname'], $data[$record][$this_event_id]['xfsn_suppcm_atc2name'], $debug, $recode_atc); if ($debug) { error_log("DEBUG: Coded XFSN ATCs: subject=$record, event=$this_event_id for CONMED {$data[$record][$this_event_id]['xfsn_cmdecod']}"); } unset($data); break; case 'ex_coding': $recode_pt = true; $recode_soc = true; $prefix = 'eot'; /** * PREFIX_AEDECOD * uses $tx_prefixes preset array */ $fields = array($prefix . "_aemodify", $prefix . "_aedecod"); $data = REDCap::getData('array', $record, $fields, $this_event_id); code_pt($project_id, $record, $this_event_id, $data[$record][$this_event_id][$prefix . "_aemodify"], $data[$record][$this_event_id][$prefix . "_aedecod"], $prefix . "_aedecod", $debug, $recode_pt); if ($debug) { error_log("DEBUG: Coded " . strtoupper($prefix) . "_AEDECOD {$data[$record][$this_event_id][$prefix . '_aedecod']}: subject=$record, event=$this_event_id for AEMODIFY {$data[$record][$this_event_id][$prefix . '_aemodify']}"); } /** * PREFIX_AEBODSYS * uses $tx_prefixes preset array */ $fields = array($prefix . "_aedecod", $prefix . "_aebodsys"); $data = REDCap::getData('array', $record, $fields, $this_event_id); code_bodsys($project_id, $record, $this_event_id, $data[$record][$this_event_id][$prefix . "_aedecod"], $data[$record][$this_event_id][$prefix . "_aebodsys"], $prefix . "_aebodsys", $debug, $recode_soc); if ($debug) { error_log("DEBUG: Coded SOC: subject=$record, event=$this_event_id for AE {$data[$record][$this_event_id][$prefix . "_aedecod"]}"); } unset($data); break; default: break; } }
/** * restricted use */ $allowed_pids = array('26'); REDCap::allowProjects($allowed_pids); global $Proj; Kint::enabled($debug); /** * APRI */ $uln = 40; $chem_fields = array('chem_lbdtc', 'ast_lbstresn'); $cbc_fields = array('cbc_lbdtc', 'plat_lbstresn', 'apri_lborres'); $cbc_data = REDCap::getData('array', '', $cbc_fields); foreach ($cbc_data AS $subject_id => $subject) { $chem_events = array(); $chem_data = REDCap::getData('array', $subject_id, $chem_fields); foreach ($subject AS $event_id => $event) { $apri_score = ''; if ($event['cbc_lbdtc'] != '' && $event['plat_lbstresn'] != '' && is_numeric($event['plat_lbstresn'])) { foreach ($chem_data AS $chem_subject) { foreach ($chem_subject AS $chem_event) { if ($chem_event['chem_lbdtc'] != '' && $chem_event['ast_lbstresn'] != '' && $chem_event['chem_lbdtc'] == $event['cbc_lbdtc'] && is_numeric($chem_event['ast_lbstresn'])) { $apri_score = (string)round(((($chem_event['ast_lbstresn'] / $uln) / $event['plat_lbstresn']) * 100), 2); } } } } update_field_compare($subject_id, $project_id, $event_id, $apri_score, $event['apri_lborres'], 'apri_lborres', $debug); } }
if (!in_array($field, array('ae_aeterm', 'ae_oth_aeterm'))) { $desc_array[] = get_field_label($field, $project_id) . ': <strong>' . $item . "</strong>"; } } } } if ($event['ae_aestdtc'] != '') { $eventAtts[] = get_event_array($event['ae_aestdtc'], $event['ae_aeendtc'], '', implode("<br />", $desc_array), $event['ae_aeterm'], $color, '', $ae_url); } } } /** * transplants */ $fields = array('livtrp_cestdtc'); $data = REDCap::getData('array', $subjid, $fields); foreach ($data AS $subject) { $url = APP_PATH_WEBROOT_FULL . "redcap_v" . $redcap_version . "/DataEntry/index.php?pid=$project_id&page=onpost_tx_liver_transplant&id=$subjid&event_id=$event_id"; $desc_array = array(); foreach ($subject AS $event_id => $event) { $eventAtts[] = get_event_array($event['livtrp_cestdtc'], '', '', '', 'Liver Transplant', 'blue', '', $url, ''); } } /** * generate and return JSON to timeline script. */ if (isset($subjid)) { $json_data = array( //Timeline attributes 'dateTimeFormat' => 'Gregorian', //JSON! //Event attributes
/** * @param $record * @param $form_event * @param $debug */ function set_ppi($record, $form_event = null, $debug) { global $project_id; /** * Proton pump inhibitor? */ $fields = array('cm_cmdecod', 'cm_suppcm_cmppi'); $data = REDCap::getData('array', $record, $fields, $form_event); foreach ($data AS $subject_id => $subject) { foreach ($subject AS $event_id => $event) { if ($event['cm_cmdecod'] != '') { $ppi_flag = 'N'; $ppi_meds = array(); $ppi_meds_result = db_query("SELECT * FROM _target_meds_of_interest WHERE cm_cmcat = 'PPI' AND cm_cmtrt = '{$event['cm_cmdecod']}'"); if ($ppi_meds_result) { while ($ppi_meds_row = db_fetch_assoc($ppi_meds_result)) { $ppi_meds[] = $ppi_meds_row['cm_cmtrt']; } db_free_result($ppi_meds_result); } if (count($ppi_meds) != 0) { $ppi_flag = 'Y'; } update_field_compare($subject_id, $project_id, $event_id, $ppi_flag, $event['cm_suppcm_cmppi'], 'cm_suppcm_cmppi', $debug); } } } }