$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'";
Example #3
0
 */
$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
			 */
Example #9
0
			$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;\">&nbsp;</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',
Example #10
0
				 */
				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.
 */
Example #15
0
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'";
Example #22
0
	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);
	}
}
Example #25
0
 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;
 }
Example #26
0
	/**
	 * @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;
		}
	}
Example #27
0
/**
 * 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);
	}
}
Example #28
0
					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
Example #29
0
/**
 * @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);
			}
		}
	}
}