if ($subjects != '') { d($vals_array); } $timer['start_main'] = microtime(true); /** * Main loop */ foreach ($vals_array as $subj_usubjid => $subj_val_array) { $seq = 1; $constants['USUBJID'] = $constants['STUDYID'] . '-' . $subj_usubjid; foreach ($subj_val_array AS $subj_array) { if ($subj_array['mhoccur'] != '') { $llt = $subj_array['mhmodify'] != '' ? $subj_array['mhmodify'] : get_llt($subj_array['mhterm']); $pt = get_pt($llt); $soc = get_bodsys($pt); $query[] = '(' . fix_null($constants['STUDYID']) . ',' . fix_null($constants['DOMAIN']) . ',' . fix_null($constants['USUBJID']) . ',' . fix_null($seq) . ',' . fix_null($subj_array['mhterm']) . ',' . fix_null($llt) . ',' . fix_null($pt) . ',' . fix_null($soc) . ',' . fix_null($subj_array['mhoccur']) . ',' . fix_null($subj_array['mhpresp']) . ',' . fix_null($subj_array['mhstdtc']) . ',' . fix_null($subj_array['mhstdtc']) . ')'; $seq++;
/** * @param string $project_id * @param string $subject_id * @param string $event_id * @param string $cmdecod * @param string $atc_name * @param string $atc2_name * @param bool $recode * @param bool $debug */ function code_atc_soc($project_id, $subject_id, $event_id, $cmdecod, $atc_name, $atc2_name, $debug, $recode = false, $message) { /** * CM_SUPPCM_ATCNAME * CM_SUPPCM_ATC2NAME * queries to find ATC name for conmed */ if (isset($cmdecod) && $cmdecod != '') { /** * get indcd -> soc for mapping soc to atc */ $soc = get_bodsys(get_single_field($subject_id, $project_id, $event_id, 'cm_suppcm_indcod', '')); $map_result = db_query("SELECT atc_code, atc_code_alt FROM _target_map_soc_atc WHERE soc = '$soc'"); if ($map_result) { $atc_code = db_result($map_result, 0, 'atc_code'); $atc_code_alt = db_result($map_result, 0, 'atc_code_alt'); if ($debug) { /*error_log("DEBUG: " . $atc_code); error_log("DEBUG: " . $atc_code_alt);*/ } db_free_result($map_result); } $atc_query = "SELECT DISTINCT atc.atc_name, atc1.atc_name AS atc2_name FROM (SELECT drug_name, drug_rec_num FROM _whodrug_mp_us) drug LEFT JOIN (SELECT drug_rec_num, atc_code FROM _whodrug_dda_target) mp_atc ON TRIM(LEADING '0' FROM drug.drug_rec_num) = mp_atc.drug_rec_num LEFT JOIN (SELECT atc_code, atc_name FROM _whodrug_atc) atc ON SUBSTRING(mp_atc.atc_code,1,1) = atc.atc_code LEFT JOIN (SELECT atc_code, atc_name FROM _whodrug_atc) atc1 ON SUBSTRING(mp_atc.atc_code,1,3) = atc1.atc_code"; $atc_query .= " WHERE drug.drug_name = '" . prep($cmdecod) . "' AND "; if (isset($atc_code) && $atc_code !== false) { $atc_query .= "(atc.atc_code = '" . $atc_code . "'"; if (isset($atc_code_alt) && $atc_code_alt != '') { $atc_query .= " OR atc.atc_code = '" . $atc_code_alt . "'"; } $atc_query .= ") AND "; } $atc_query .= "atc.atc_name IS NOT NULL LIMIT 1"; if ($debug) { //error_log("DEBUG: " . $atc_query); } $atcname_result = db_query($atc_query); if ($atcname_result) { while ($atcname = db_fetch_assoc($atcname_result)) { /** * if we have atc and atc2, push to redcap */ if ($recode) { if (isset($atcname['atc_name']) && $atcname['atc_name'] != '') { update_field_compare($subject_id, $project_id, $event_id, $atcname['atc_name'], $atc_name, 'cm_suppcm_atcname', $debug, $message); } if (isset($atcname['atc2_name']) && $atcname['atc2_name'] != '') { update_field_compare($subject_id, $project_id, $event_id, $atcname['atc2_name'], $atc2_name, 'cm_suppcm_atc2name', $debug, $message); } } else { if ($atc_name == '' && isset($atcname['atc_name']) && $atcname['atc_name'] != '') { update_field_compare($subject_id, $project_id, $event_id, $atcname['atc_name'], $atc_name, 'cm_suppcm_atcname', $debug, $message); } if ($atc2_name == '' && isset($atcname['atc2_name']) && $atcname['atc2_name'] != '') { update_field_compare($subject_id, $project_id, $event_id, $atcname['atc2_name'], $atc2_name, 'cm_suppcm_atc2name', $debug, $message); } } } db_free_result($atcname_result); } /** * if we didn't find one that maps to soc, be more generic */ $check_atc = get_single_field($subject_id, $project_id, $event_id, 'cm_suppcm_atcname', ''); if (!isset($check_atc) || $check_atc == '') { $atc_query = "SELECT DISTINCT atc.atc_name, atc1.atc_name AS atc2_name FROM (SELECT drug_name, drug_rec_num FROM _whodrug_mp_us) drug LEFT JOIN (SELECT drug_rec_num, atc_code FROM _whodrug_dda_target) mp_atc ON TRIM(LEADING '0' FROM drug.drug_rec_num) = mp_atc.drug_rec_num LEFT JOIN (SELECT atc_code, atc_name FROM _whodrug_atc) atc ON SUBSTRING(mp_atc.atc_code,1,1) = atc.atc_code LEFT JOIN (SELECT atc_code, atc_name FROM _whodrug_atc) atc1 ON SUBSTRING(mp_atc.atc_code,1,3) = atc1.atc_code"; $atcname_result = db_query($atc_query . " WHERE drug.drug_name = '" . prep($cmdecod) . "' AND atc.atc_name IS NOT NULL LIMIT 1"); if ($atcname_result) { /** * we don't want more than one result here */ while ($atcname = db_fetch_assoc($atcname_result)) { /** * if we have atc and atc2, push to redcap */ if ($recode) { if (isset($atcname['atc_name']) && $atcname['atc_name'] != '') { update_field_compare($subject_id, $project_id, $event_id, $atcname['atc_name'], $atc_name, 'cm_suppcm_atcname', $debug, $message); } if (isset($atcname['atc2_name']) && $atcname['atc2_name'] != '') { update_field_compare($subject_id, $project_id, $event_id, $atcname['atc2_name'], $atc2_name, 'cm_suppcm_atc2name', $debug, $message); } } else { if ($atc_name == '' && isset($atcname['atc_name']) && $atcname['atc_name'] != '') { update_field_compare($subject_id, $project_id, $event_id, $atcname['atc_name'], $atc_name, 'cm_suppcm_atcname', $debug, $message); } if ($atc2_name == '' && isset($atcname['atc2_name']) && $atcname['atc2_name'] != '') { update_field_compare($subject_id, $project_id, $event_id, $atcname['atc2_name'], $atc2_name, 'cm_suppcm_atc2name', $debug, $message); } } } db_free_result($atcname_result); } } /** * in case whodrug doesn't know about your conmed, code from alt table */ $check_atc = get_single_field($subject_id, $project_id, $event_id, 'cm_suppcm_atcname', ''); if (!isset($check_atc) || $check_atc == '') { $atc_alt_query = "SELECT DISTINCT atc.atc_name, atc1.atc_name AS atc2_name FROM (SELECT * FROM _whodrug_dda_alt) mp_atc LEFT JOIN (SELECT atc_code, atc_name FROM _whodrug_atc) atc ON SUBSTRING(mp_atc.atc_code,1,1) = atc.atc_code LEFT JOIN (SELECT atc_code, atc_name FROM _whodrug_atc) atc1 ON SUBSTRING(mp_atc.atc_code,1,3) = atc1.atc_code"; $atcname_alt_result = db_query($atc_alt_query . " WHERE mp_atc.drug_name = '" . prep($cmdecod) . "' LIMIT 1"); if ($atcname_alt_result) { /** * we don't want more than one result here */ while ($atcname_alt = db_fetch_assoc($atcname_alt_result)) { /** * if we have atc and atc2, push to redcap */ if ($recode) { if (isset($atcname_alt['atc_name']) && $atcname_alt['atc_name'] != '') { update_field_compare($subject_id, $project_id, $event_id, $atcname_alt['atc_name'], $atc_name, 'cm_suppcm_atcname', $debug, $message); } if (isset($atcname_alt['atc2_name']) && $atcname_alt['atc2_name'] != '') { update_field_compare($subject_id, $project_id, $event_id, $atcname_alt['atc2_name'], $atc2_name, 'cm_suppcm_atc2name', $debug, $message); } } else { if ($atc_name == '' && isset($atcname_alt['atc_name']) && $atcname_alt['atc_name'] != '') { update_field_compare($subject_id, $project_id, $event_id, $atcname_alt['atc_name'], $atc_name, 'cm_suppcm_atcname', $debug, $message); } if ($atc2_name == '' && isset($atcname_alt['atc2_name']) && $atcname_alt['atc2_name'] != '') { update_field_compare($subject_id, $project_id, $event_id, $atcname_alt['atc2_name'], $atc2_name, 'cm_suppcm_atc2name', $debug, $message); } } } db_free_result($atcname_alt_result); } } } else { update_field_compare($subject_id, $project_id, $event_id, '', $atc_name, 'cm_suppcm_atcname', $debug, $message); update_field_compare($subject_id, $project_id, $event_id, '', $atc2_name, 'cm_suppcm_atc2name', $debug, $message); } }