/**
				 * for egfr from imported, we need a standardized creat, it must be numeric and the trust field must not be 'N'
				 */
			} elseif ($event['creat_im_lbstresn'] != '' && is_numeric($event['creat_im_lbstresn']) && $event['creat_im_nxtrust'] != 'N') {
				if ($race != '' && $sex != '' && $age != '') {
					$egfr = round((175 * pow($event['creat_im_lbstresn'], -1.154) * pow($age, -.203) * $sex_factor * $race_factor), 2);
				} else {
					$egfr = '';
				}
				update_field_compare($subject_id, $project_id, $event_id, $egfr, $event['egfr_im_lborres'], 'egfr_im_lborres', $debug);
				$is_baseline = ($event['creat_lbblfl'] == 'Y' && $egfr != '') ? 'Y' : '';
				update_field_compare($subject_id, $project_id, $event_id, $is_baseline, $event['egfr_im_lbblfl'], 'egfr_im_lbblfl', $debug);
			} elseif ($event['creat_lbstresn'] == '') {
				$egfr = '';
				update_field_compare($subject_id, $project_id, $event_id, $egfr, $event['egfr_lborres'], 'egfr_lborres', $debug);
				$is_baseline = ($event['creat_lbblfl'] == 'Y' && $egfr != '') ? 'Y' : '';
				update_field_compare($subject_id, $project_id, $event_id, $is_baseline, $event['egfr_lbblfl'], 'egfr_lbblfl', $debug);
			} elseif ($event['creat_im_lbstresn'] == '') {
				$egfr = '';
				update_field_compare($subject_id, $project_id, $event_id, $egfr, $event['egfr_im_lborres'], 'egfr_im_lborres', $debug);
				$is_baseline = ($event['creat_lbblfl'] == 'Y' && $egfr != '') ? 'Y' : '';
				update_field_compare($subject_id, $project_id, $event_id, $is_baseline, $event['egfr_im_lbblfl'], 'egfr_im_lbblfl', $debug);
			}
		}
	}
}
if ($debug) {
	$timer['main_end'] = microtime(true);
	$init_time = benchmark_timing($timer);
	echo $init_time;
}
$first_event_id = $Proj->firstEventId;
$plugin_title = "Reset SVR DATA PENDING flag when hidden by branching logic";
$my_branching_logic = new BranchingLogic();
/**
 * plugin title
 */
echo "<h3>$plugin_title</h3>";
/**
 * MAIN
 */
if ($debug) {
	$timer['main_start'] = microtime(true);
}
$fields = array('dis_suppds_funcmprsn', 'hcv_suppfa_svr12dt', 'hcv_suppfa_svr24dt', 'hcv_suppfa_fuelgbl');
$data = REDCap::getData('array', $subjects, $fields, $first_event_id);
foreach ($data AS $subject_id => $subject) {
	/**
	 * MAIN EVENT LOOP
	 */
	foreach ($subject AS $event_id => $event) {
		$field_is_hidden = $my_branching_logic->allFieldsHidden($subject_id, $event_id, array('dis_suppds_funcmprsn'));
		if ($field_is_hidden /*&& $event['dis_suppds_funcmprsn'] == 'SVR_DATA_PENDING' && ($event['hcv_suppfa_svr12dt'] != '' || $event['hcv_suppfa_fuelgbl'] == 'N')*/) {
			update_field_compare($subject_id, $project_id, $event_id, '', $event['dis_suppds_funcmprsn'], 'dis_suppds_funcmprsn', $debug, $plugin_title);
		}
	}
}
if ($debug) {
	$timer['main_end'] = microtime(true);
	$init_time = benchmark_timing($timer);
	echo $init_time;
}
					$stack[] = $event[$endt_prefix . '_cmendtc'];
				}
			}
		}
		sort($start_stack);
		sort($stack);
		if ($debug) {
			show_var($start_stack, 'START STACK sort', 'red');
			show_var($stack, 'STACK sort', 'red');
		}
		$last_date_in_start_stack = array_pop($start_stack);
		$last_date_in_stack = array_pop($stack);
		$stop_date = $last_date_in_stack <= $last_date_in_start_stack ? null : $last_date_in_stack;
		update_field_compare($subject_id, $project_id, $first_event_id, $stop_date, $subject[$first_event_id]['dm_rfendtc'], 'dm_rfendtc', $debug);

		/**
		 * HCV treatment duration
		 * dm_rfstdtc, dm_rfendtc, dis_dsstdy
		 */
		if (isset($stop_date)) {
			$tx_start_date_obj = new DateTime($tx_start_date);
			$tx_stop_date_obj = new DateTime($stop_date);
			$tx_duration = $tx_start_date_obj->diff($tx_stop_date_obj);
			$dis_dsstdy = $tx_duration->format('%R%a') + 1;
			update_field_compare($subject_id, $project_id, $first_event_id, $dis_dsstdy, $subject[$first_event_id]['dis_dsstdy'], 'dis_dsstdy', $debug);
		}
	}
}
$timer['main_end'] = microtime(true);
$init_time = benchmark_timing($timer);
echo $init_time;
	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>";
}
?>
	<script type="text/javascript">
		$(document).ready(function () {
			$("#field_name").change(function () {
				$("#field_val_select").trigger('submit');
			});
		});
	</script>
					update_field_compare($subjid, $project_id, $event_id, $lbstresu, $this_lab['lbstresu'], $prefix . '_im_lbstresu', $debug);
				}
				/**
				 * if the standardized value has changed since it was last standardized, reset the nxtrust flag
				 * Thank you , REDi.
				 */
				/*if ($has_valid_units && $lbstresn != $this_lab['lbstresn'] && $prefix != 'hcv') {
					update_field_compare($subjid, $project_id, $event_id, '', $this_lab['nxtrust'], $prefix . '_im_nxtrust', $debug);
				}*/
			} elseif ($this_lab['lborresu'] == '' && $this_lab['lborres'] != '') {
				/**
				 * NO BLANK UNITS
				 */
				update_field_compare($subjid, $project_id, $event_id, '', $this_lab['lbstresn'], $prefix . '_im_lbstresn', $debug);
				update_field_compare($subjid, $project_id, $event_id, '', $this_lab['lbstresu'], $prefix . '_im_lbstresu', $debug);
				/*if ($prefix != 'hcv') {
					update_field_compare($subjid, $project_id, $event_id, '', $this_lab['nxtrust'], $prefix . '_im_nxtrust', $debug);
				}*/
			} else {
				update_field_compare($subjid, $project_id, $event_id, $this_lab['lborres'], $this_lab['lbstresn'], $prefix . '_im_lbstresn', $debug);
				update_field_compare($subjid, $project_id, $event_id, $this_lab['lborresu'], $this_lab['lbstresu'], $prefix . '_im_lbstresu', $debug);
			}
		}
		/**
		 * @TODO: set form_complete
		 */
	}
}
$timer['main_end'] = microtime(true);
$init_time = benchmark_timing($timer);
echo $init_time;
						$this_baseline_flag = 'Y';
					} else {
						/**
						 * Now reset all other flags that have changed
						 */
						foreach ($data[$subject_id] AS $flag_event_id => $flag_event) {
							$reset[$flag_event_id] = $flag_event[$lab_prefix . '_im_lbblfl'];
						}
						foreach ($reset AS $reset_event_id => $reset_event) {
							foreach ($reset_event as $reset_field => $reset_val) {
								update_field_compare($subject_id, $project_id, $reset_event_id, '', $reset_val, $lab_prefix . "_im_lbblfl", $debug);
							}
						}
					}
					/**
					 * Baseline flag belongs in the event where the date occurs
					 */
					update_field_compare($subject_id, $project_id, $this_data['event_id'], $this_baseline_flag, $data[$subject_id][$this_data['event_id']][$lab_prefix . "_im_lbblfl"], $lab_prefix . "_im_lbblfl", $debug);
					/**
					 * Baseline date belongs in Baseline event - one date for both abstracted and imported
					 */
					d($baseline_date);
					update_field_compare($subject_id, $project_id, $initial_event, $baseline_date, get_single_field($subject_id, $project_id, $initial_event, $lab_prefix . "_supplb_lbdtbl", ''), $lab_prefix . "_supplb_lbdtbl", $debug);
				}
			}
		}
	}
}
$timer['main_end'] = microtime(true);
$init_time = benchmark_timing($timer);
echo $init_time;
 * restricted use
 */
$allowed_pids = array('38');
REDCap::allowProjects($allowed_pids);
/**
 * MAIN
 */
/**
 * initial dose
 */
$fields = array('imminit_cmdose', 'imminit_cmdosrgm');
$data = REDCap::getData('array', '', $fields);
foreach ($data AS $subject_id => $subject) {
	foreach ($subject AS $event_id => $event) {
		if ($event['imminit_cmdose'] != '') {
			update_field_compare($subject_id, $project_id, $event_id, 'FIXED', $event['imminit_cmdosrgm'], 'imminit_cmdosrgm', $debug);
		}
	}
}
/**
 * final dose
 */
$fields = array('immfinl_cmdose', 'immfinl_cmdosrgm');
$data = REDCap::getData('array', '', $fields);
foreach ($data AS $subject_id => $subject) {
	foreach ($subject AS $event_id => $event) {
		if ($event['immfinl_cmdose'] != '') {
			update_field_compare($subject_id, $project_id, $event_id, 'FIXED', $event['immfinl_cmdosrgm'], 'immfinl_cmdosrgm', $debug);
		}
	}
}
		}
		/**
		 * set overall hcvrna followup eligibility and reason if ineligible
		 */
		update_field_compare($subject_id, $project_id, $baseline_event_id, $eligible, $date_event['hcv_suppfa_fuelgbl'], 'hcv_suppfa_fuelgbl', $debug);
		update_field_compare($subject_id, $project_id, $baseline_event_id, $reason, $date_event['hcv_suppfa_nlgblrsn'], 'hcv_suppfa_nlgblrsn', $debug);
		/**
		 * set follow up timing - is it due?
		 */
		update_field_compare($subject_id, $project_id, $baseline_event_id, $data_due, $date_event['hcv_suppfa_fudue'], 'hcv_suppfa_fudue', $debug);
		/**
		 * set outcome
		 */
		update_field_compare($subject_id, $project_id, $baseline_event_id, $outcome, $date_event['hcv_suppfa_hcvout'], 'hcv_suppfa_hcvout', $debug);
		/**
		 * set 10 HCV RNA?
		 */
		update_field_compare($subject_id, $project_id, $baseline_event_id, $wk10_rna, $date_event['hcv_suppfa_wk10rna'], 'hcv_suppfa_wk10rna', $debug);
		/**
		 * set HCV RNA BLOQ?
		 */
		update_field_compare($subject_id, $project_id, $baseline_event_id, $last_bloq, $date_event['hcv_suppfa_lastbloq'], 'hcv_suppfa_lastbloq', $debug);
		/**
		 * set re-treat window start date
		 */
		update_field_compare($subject_id, $project_id, $baseline_event_id, $re_treat_date, $date_event['dm_suppdm_rtrtsdtc'], 'dm_suppdm_rtrtsdtc', $debug);
	}
}
$timer['main_end'] = microtime(true);
$init_time = benchmark_timing($timer);
echo $init_time;
$subjects_result = db_query("SELECT DISTINCT record FROM redcap_data WHERE project_id = '$project_id' AND field_name = 'dm_usubjid' AND left(value, 3) = '017'");
if ($subjects_result) {
	while ($subjects_row = db_fetch_array($subjects_result)) {
		$subjects[] = $subjects_row['record'];
	}
}
d($subjects);
//$subjects = '42';
/**
 * labs field names
 */
$change_message = 'Purging imported labs, standardizations and related derivations for site 017 (Yale) prior to REDI refresh for this site';
$forms = array('cbc_imported', 'cbc_im_standard', 'chemistry_imported', 'chemistry_im_standard', 'inr_imported', 'hcv_rna_imported', 'hcv_rna_im_standard', 'derived_values_baseline', 'derived_values');
//$forms = array('derived_values_baseline', 'derived_values');
foreach ($forms AS $form) {
	$fields = REDCap::getFieldNames($form);
	if (in_array($form, array('derived_values_baseline', 'derived_values'))) {
		$fields = array_filter($fields, "is_imported");
	}
	d($form, $fields);
	$data = REDCap::getData('array', $subjects, $fields);
	foreach ($data AS $subject_id => $subject) {
		foreach ($subject AS $event_id => $event) {
			foreach ($event AS $field => $value) {
				if ($value != '' && strpos($field, 'complete') === false) {
					update_field_compare($subject_id, $project_id, $event_id, '', $value, $field, $debug, $change_message);
				}
			}
		}
	}
}
 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, $redcap_event_name);
 foreach ($data as $subject_id => $subject) {
     foreach ($subject as $event_id => $event) {
         code_llt($project_id, $subject_id, $event_id, fix_case($event['xfsn_cmindc']), fix_case($event['xfsn_oth_cmindc']), $event['xfsn_suppcm_indcod'], 'xfsn_suppcm_indcod', $debug, $recode_llt);
         if ($debug) {
             error_log("DEBUG: Coded XFSN INDC: subject={$subject_id}, event={$event_id} for CONMED {$event['xfsn_cmdecod']}");
         }
     }
											echo('<div class = "yellow">DAA MODERATE');
											echo('<h4>AE: ' . $event[$decod_prefix . '_aedecod'] . '</h4>');
											echo('<h4>TRTAE: ' . $tx_event[$prefix . '_aedecod'] . '</h4>');
											echo('<h4>TRTACN: ' . $tx_event[$prefix . '_suppae_daaacn'] . '</h4>');
											echo('</div>');
										}
									}
								}
							}
						}
					//}
				}
				/**
				 * find the highest grade
				 */
				//d('MOST SEVERE', $ae_grade);
				$this_grade_array = $ae_grade;
				sort($this_grade_array);
				$this_grade = array_pop($this_grade_array);
				d('GRADE', array_search($this_grade, $ae_grade));
				if ($debug) {
					error_log("INFO: AE " . $event[$decod_prefix . '_aedecod'] . " grade = " . $this_grade);
				}
				update_field_compare($subject_id, $project_id, $event_id, array_search($this_grade, $ae_grade), $event[$decod_prefix . '_suppae_aesevdrv'], $decod_prefix . '_suppae_aesevdrv', $debug);
			}
		}
	}
}
$timer['main_end'] = microtime(true);
$init_time = benchmark_timing($timer);
echo $init_time;
Example #12
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
              */
         /**
          * 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
              */
         /**
          * 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
              */
         /**
          * 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
              */
         /**
          * TX stop AEs
          */
         case 'interferon_administration':
         case 'ribavirin_administration':
         case 'telaprevir_administration':
         case 'boceprevir_administration':
         case 'simeprevir_administration':
         case 'sofosbuvir_administration':
         case 'daclatasvir_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
              */
         /**
          * 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;
         case 'hcc_treatment':
         case 'hcc_coding':
             $recode_llt = $instrument == 'hcc_treatment' ? true : false;
             $recode_pt = true;
             $recode_soc = true;
             /**
              * AE_AEDECOD
              */
             $fields = array("hcctrt_prtrt", "hcctrt_oth_prtrt", "hcctrt_prmodify");
             $data = REDCap::getData('array', $record, $fields, $redcap_event_name);
             code_llt($project_id, $record, $this_event_id, fix_case($data[$record][$this_event_id]['hcctrt_prtrt']), fix_case($data[$record][$this_event_id]['hcctrt_oth_prtrt']), $data[$record][$this_event_id]['hcctrt_prmodify'], 'hcctrt_prmodify', $debug, $recode_llt);
             if ($debug) {
                 error_log("DEBUG: Coded PRMODIFY {$data[$record][$this_event_id]['hcctrt_prtrt']}: subject={$record}, event={$this_event_id} for PR {$data[$record][$this_event_id]['hcctrt_prtrt']} - {$data[$record][$this_event_id]['hcctrt_oth_prtrt']}");
             }
             /**
              * AE_AEDECOD
              */
             $fields = array("hcctrt_prmodify", "hcctrt_prdecod");
             $data = REDCap::getData('array', $record, $fields, $redcap_event_name);
             code_pt($project_id, $record, $this_event_id, fix_case($data[$record][$this_event_id]['hcctrt_prmodify']), $data[$record][$this_event_id]['hcctrt_prdecod'], 'hcctrt_prdecod', $debug, $recode_pt);
             if ($debug) {
                 error_log("DEBUG: Coded PRDECOD {$data[$record][$this_event_id]['hcctrt_prdecod']}: subject={$record}, event={$this_event_id} for PR {$data[$record][$this_event_id]['hcctrt_prmodify']}");
             }
             /**
              * AE_AEBODSYS
              */
             $fields = array("hcctrt_prdecod", "hcctrt_prbodsys");
             $data = REDCap::getData('array', $record, $fields, $redcap_event_name);
             code_bodsys($project_id, $record, $this_event_id, $data[$record][$this_event_id]['hcctrt_prdecod'], $data[$record][$this_event_id]['hcctrt_prbodsys'], 'hcctrt_prbodsys', $debug, $recode_soc);
             if ($debug) {
                 error_log("DEBUG: Coded SOC: subject={$record}, event={$this_event_id} for PR {$data[$record][$this_event_id]['hcctrt_prdecod']}");
             }
             unset($data);
             break;
         default:
             break;
     }
 }
Example #13
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);
			}
		}
	}
}
			$chem_fields = array('chem_lbdtc', 'creat_lbstresn');
			$fields = array('dm_brthyr', 'weight_suppvs_wtkg', 'dm_sex');
			$data = REDCap::getData('array', $record, $fields, $project->firstEventId);
			foreach ($data as $vitals) {
				foreach ($vitals as $vital) {
					if ($vital['dm_brthyr'] != '' && $vital['weight_suppvs_wtkg'] != '' && $vital['dm_sex'] != '') {
						$chem_data = REDCap::getData('array', $record, $chem_fields, $redcap_event_name);
						foreach ($chem_data as $chem_values) {
							foreach ($chem_values as $chem_event => $values) {
								unset($creatinine_clearance);
								if ($values['chem_lbdtc'] != '' && $values['creat_lbstresn'] != '') {
									$sex = isset($vital['dm_sex']) ? $vital['dm_sex'] : 'F';
									$chem_age = (substr($values['chem_lbdtc'], 0, 4)) - $vital['dm_brthyr'];
									$sex_factor = $sex == 'F' ? .85 : 1;
									$creatinine_clearance = round(((140 - $chem_age) * $vital['weight_suppvs_wtkg'] * $sex_factor) / (72 * $values['creat_lbstresn']));
									update_field_compare($record, $project_id, $chem_event, $creatinine_clearance, get_single_field($record, $project_id, $chem_event, 'crcl_lborres', ''), 'crcl_lborres', $debug);
								}
							}
						}
					}
				}
			}
			$timer_stop = microtime(true);
			$timer_time = number_format(($timer_stop - $timer_start), 2);
			if ($debug) {
				error_log("DEBUG: This DET action (Standardize $instrument) took $timer_time seconds");
			}
			break;
		/**
		 * all other forms do nothing
		 */
Example #15
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 #16
0
					/**
					 * 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);
			}
		}
	}
}
$timer['end_main'] = microtime(true);
$init_time = benchmark_timing($timer);
echo $init_time;
//				$decompensated = true;
//				d($event);
//			}
//			if ($subject[$first_event]['dcp_mhoccur'] == 'Y') { // if history of decomp
//			} else { // no history of decomp or unknown
//				if ((in_array($event['ae_aedecod'], $decomp_pts) && $event['ae_suppae_aexacerb'] != 'Y') ||
//					($event['cm_suppcm_cmprtrt'] == 'N' && $event['cm_suppcm_exacindc'] != 'Y' && $event['cm_suppcm_prphindc'] != 'Y' && in_array($event['cm_cmdecod'], $decomp_conmeds)) ||
//					(in_array($event['ae_oth_aeterm'], $decomp_llt) && $event['ae_suppae_aexacerb'] != 'Y')
//				) {
//					$decompensated = true;
//					d($event);
//				}
//			}
//		}
		d($event);
		if (!$decompensated && (
				in_array($event['ae_aedecod'], $decomp_pts) ||
				($event['cm_suppcm_cmprtrt'] == 'N' && $event['cm_suppcm_prphindc'] != 'Y' && in_array($event['cm_cmdecod'], $decomp_conmeds))
			)
		) {
			$decompensated = true;
		}
	}
	$decomp = $decompensated ? 'Y' : 'N';
	update_field_compare($subject_id, $project_id, $first_event, $decomp, $_decomp, 'cirr_suppfa_decomp', $debug);
}
if ($debug) {
	$timer['main_end'] = microtime(true);
	$init_time = benchmark_timing($timer);
	echo $init_time;
}
<?php
if (isset($_POST['field_name']) && isset($_POST['new_field'])) {
	$fields[] = $field_name = $_POST['field_name'];
	$fields[] = $new_field = $_POST['new_field'];
	/**
	 * move any data found in redcap_data WHERE field_name = $field_name into $field_name
	 * then delete the original data, while logging all actions
	 */
	$data = REDCap::getData('array', '', $fields);
	foreach ($data AS $subject_id => $subject) {
		if ($debug) {
			show_var($subject_id, 'SUBJID', 'blue');
		}
		foreach ($subject AS $event_id => $event) {
			update_field_compare($subject_id, $project_id, $event_id, $event[$field_name], $event[$new_field], $new_field, $debug);
			update_field_compare($subject_id, $project_id, $event_id, '', $event[$field_name], $field_name, $debug);
		}
	}
	/**
	 * re-assign any OPEN data quality queries assigned to $field_name
	 */
	$data_quality_status_result = db_query("SELECT record, event_id FROM redcap_data_quality_status WHERE project_id = '$project_id' AND field_name = '$field_name' AND query_status != 'CLOSED'");
	if ($data_quality_status_result) {
		while ($dq_status = db_fetch_assoc($data_quality_status_result)) {
			$data_quality_status_query = "UPDATE redcap_data_quality_status SET field_name = '$new_field' WHERE record = '{$dq_status['record']}' AND project_id = '$project_id' AND event_id = '{$dq_status['event_id']}' AND field_name = '$field_name'";
			if (!$debug) {
				if (db_query($data_quality_status_query)) {
					//target_log_event($data_quality_status_query, 'redcap_data_quality_status', 'update', $subject_id, "field_name = '$new_field'", 'Update data quality status', '', $project_id);
					REDCap::logEvent('Update data quality status', "field_name = '$new_field'", $data_quality_status_query, $dq_status['record'], $dq_status['event_id']);
				} else {
					error_log(db_error() . ': ' . $data_quality_status_query);
				show_var($outcome, 'Outcome', 'brown');
			} else {
				show_var('NO TX START', '', 'red');
			}
		}
		/**
		 * set overall hcvrna followup eligibility and reason if ineligible
		 */
		update_field_compare($subject_id, $project_id, $first_event_id, $eligible, $date_event['hcv_suppfa_fuelgbl'], 'hcv_suppfa_fuelgbl', $debug);
		update_field_compare($subject_id, $project_id, $first_event_id, $reason, $date_event['hcv_suppfa_nlgblrsn'], 'hcv_suppfa_nlgblrsn', $debug);
		/**
		 * set follow up timing - is it due?
		 */
		update_field_compare($subject_id, $project_id, $first_event_id, $data_due, $date_event['hcv_suppfa_fudue'], 'hcv_suppfa_fudue', $debug);
		/**
		 * set outcome
		 */
		update_field_compare($subject_id, $project_id, $first_event_id, $outcome, $date_event['hcv_suppfa_hcvout'], 'hcv_suppfa_hcvout', $debug);
		/**
		 * set week 10 HCV RNA
		 */
		update_field_compare($subject_id, $project_id, $first_event_id, $wk10_rna, $date_event['hcv_suppfa_wk10rna'], 'hcv_suppfa_wk10rna', $debug);
		/**
		 * set HCV RNA BLOQ
		 */
		update_field_compare($subject_id, $project_id, $first_event_id, $last_bloq, $date_event['hcv_suppfa_lastbloq'], 'hcv_suppfa_lastbloq', $debug);
	}
}
$timer['main_end'] = microtime(true);
$init_time = benchmark_timing($timer);
echo $init_time;
/**
 * @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);
			}
		}
	}
}
			d($subject);
			d($data[$subject_id]);
		}
	}
	/**
	 * pop the latest of these off the $subject array and set the ae_aeacn for the AE
	 */
	foreach (array_pop($subject) AS $ae_event_id => $ae_event) {
		foreach ($ae_event AS $tx_prefix => $ae_acn) {
			d($tx_prefix);
			d($ae_acn);
			$this_action = get_single_field($subject_id, $project_id, $ae_event_id, 'ae_aeacn', '');
			d(array_search($ae_acn['txacn'], $action_priority));
			d(array_search($this_action, $action_priority));
			/**
			 * make sure we have priorities for both $this_action and $ae_acn['txacn']
			 */
			if (array_search($ae_acn['txacn'], $action_priority) !== false && array_search($this_action, $action_priority) !== false) {
				/**
				 * determine priority of the current action. If its priority is higher than the one recorded, update.
				 */
				if (array_search($ae_acn['txacn'], $action_priority) > array_search($this_action, $action_priority)) {
					update_field_compare($subject_id, $project_id, $ae_event_id, $ae_acn['txacn'], $this_action, 'ae_aeacn', $debug);
				}
			}
		}
	}
}
$timer['main_end'] = microtime(true);
$init_time = benchmark_timing($timer);
echo $init_time;
								$this_event_id = $Proj->getEventIdUsingUniqueEventName($event_count);
								/**
								 * get the next available field group on this event to accept the new samples
								 */
								$next_field = (count($state_array[$record][$this_event_id]) - 1) / 3;
								/**
								 * check for new samples on this stream date to add to state
								 */
								foreach ($stream_samples AS $barcode => $type) {
									if (!array_key_exists_recursive($barcode, $state_array[$record])) {
										foreach ($base_fields_array AS $field_type => $field_name) {
											$$field_type = str_replace('%', $next_field, $field_name);
										}
										update_field_compare($record, $project_id, $this_event_id, $barcode, $data[$record][$this_event_id][$sample_code], $sample_code, $debug);
										update_field_compare($record, $project_id, $this_event_id, $enum[strtolower($type)], $data[$record][$this_event_id][$sample_type], $sample_type, $debug);
										update_field_compare($record, $project_id, $this_event_id, 'Y', array_search('1', $data[$record][$this_event_id][$sample_onhand]), $sample_onhand, $debug);
										$next_field++;
									}
								}
								$event_count++;
							}
						}
					}
				}
			} else {
				echo "<span class='red'><h3>Unable to comply. Could not open file handle.</h3></span>";
			}
		} else {
			echo "<span class='red'><h1>Please return to the previous page and select a CSV file.</h1></span>";
		}
	}
/**
 * @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;
					}
				}
			}
		}
	}
}
Example #24
0
			$immun_flag = 'N';
			$immun_meds = array();
			$immun_meds_result = db_query("SELECT * FROM _target_meds_of_interest WHERE cm_cmcat != 'steroid' AND cm_cmtrt = '{$event['cm_cmdecod']}'");
			if ($immun_meds_result) {
				while ($immun_meds_row = db_fetch_assoc($immun_meds_result)) {
					$immun_meds[] = $immun_meds_row['cm_cmtrt'];
				}
				db_free_result($immun_meds_result);
			}
			if (count($immun_meds) != 0) {
				$immun_flag = 'Y';
				if ($debug) {
					show_var($immun_meds);
				}
			}
			update_field_compare($subject_id, $project_id, $event_id, $immun_flag, $event['cm_suppcm_cmimmuno'], 'cm_suppcm_cmimmuno', $debug);
		}
		/**
		 * CM_SUPPCM_INDCOD
		 */
		/**
		 * re-code all nutritional support to nutritional supplement
		 */
		if ($event['cm_oth_cmindc'] == 'Nutritional support') {
			$event['cm_oth_cmindc'] = 'Nutritional supplement';
		}
		code_llt($project_id, $subject_id, $event_id, fix_case($event['cm_cmindc']), fix_case($event['cm_oth_cmindc']), $event['cm_suppcm_indcod'], 'cm_suppcm_indcod', $debug, $recode_llt);
		/**
		 * CM_SUPPCM_INDCSYS
		 */
		code_bodsys($project_id, $subject_id, $event_id, $event['cm_suppcm_indcod'], $event['cm_suppcm_indcsys'], 'cm_suppcm_indcsys', $debug, $recode_soc);
/**
 * 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);
	}
}
	if ($subject[$first_event_id]['dm_brthyr'] != '') {
		$birth_year = $subject[$first_event_id]['dm_brthyr'];
	} elseif ($subject[$first_event_id]['dm_brthdtc'] != '') {
		$birth_year = substr($subject[$first_event_id]['dm_brthdtc'], 0, 4);
	} else {
		$birth_year = '';
	}
	if ($birth_year != '' && $subject[$first_event_id]['weight_suppvs_wtkg'] != '') {
		foreach ($chem_values as $chem_event => $values) {
			unset($creatinine_clearance);
			$chem_age = (substr($values['chem_lbdtc'], 0, 4)) - $birth_year;
			$creatinine_clearance = round(((140 - $chem_age) * $subject[$first_event_id]['weight_suppvs_wtkg'] * $sex_factor) / (72 * $values['creat_lbstresn']));
			update_field_compare($subject_id, $project_id, $chem_event, $creatinine_clearance, $values['crcl_lborres'], 'crcl_lborres', $debug);
			$chem_im_age = (substr($values['chem_im_lbdtc'], 0, 4)) - $birth_year;
			$creatinine_im_clearance = round(((140 - $chem_im_age) * $subject[$first_event_id]['weight_suppvs_wtkg'] * $sex_factor) / (72 * $values['creat_im_lbstresn']));
			update_field_compare($subject_id, $project_id, $chem_event, $creatinine_im_clearance, $values['crcl_im_lborres'], 'crcl_im_lborres', $debug);
		}
	}
	/**
	 * APRI
	 */
//	$chem_fields = array('chem_lbdtc', 'ast_lbstresn');
//	$cbc_data = REDCap::getData('array', '', $cbc_fields);
//	foreach ($cbc_values AS $cbc_event => $values) {
//		$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);
//					}
Example #27
0
	/**
	 * @param $record
	 * @param $debug
	 */
	public static function setTrtDuration($record, $debug)
	{
		/**
		 * derive treatment duration and therefore arm from randomized treatment and duration selected in this form
		 */
		global $Proj, $project_id;
		$first_event_id = $Proj->firstEventId;
		$trt = self::getTrtInfo($record);
		if ($debug) {
			error_log(print_r($trt, true));
		}
		$prescribed_duration = get_single_field($record, $project_id, $first_event_id, 'dm_suppex_trtdur', null);
		if (!isset($prescribed_duration) || $prescribed_duration == '') {
			update_field_compare($record, $project_id, $first_event_id, $trt['dur'], $prescribed_duration, 'dm_suppex_trtdur', $debug);
		}
	}
					$stack[] = $event[$endt_prefix . '_cmendtc'];
				}
			}
		}
		sort($start_stack);
		sort($stack);
		if ($debug) {
			show_var($start_stack, 'START STACK sort', 'red');
			show_var($stack, 'STACK sort', 'red');
		}
		$last_date_in_start_stack = array_pop($start_stack);
		$last_date_in_stack = array_pop($stack);
		$stop_date = $last_date_in_stack <= $last_date_in_start_stack ? null : $last_date_in_stack;
		update_field_compare($subject_id, $project_id, $baseline_event_id, $stop_date, $subject[$baseline_event_id]['dis_suppfa_txendt'], 'dis_suppfa_txendt', $debug);

		/**
		 * HCV treatment duration
		 * dm_rfstdtc, dis_suppfa_txendt, dis_dsstdy
		 */
		if (isset($stop_date)) {
			$tx_start_date_obj = new DateTime($tx_start_date);
			$tx_stop_date_obj = new DateTime($stop_date);
			$tx_duration = $tx_start_date_obj->diff($tx_stop_date_obj);
			$dis_dsstdy = $tx_duration->format('%R%a') + 1;
			update_field_compare($subject_id, $project_id, $baseline_event_id, $dis_dsstdy, $subject[$baseline_event_id]['dis_dsstdy'], 'dis_dsstdy', $debug);
		}
	}
}
$timer['main_end'] = microtime(true);
$init_time = benchmark_timing($timer);
echo $init_time;