data && $drug->data->gcnSeqno) { $gcnSeqNos[] = $drug->data->gcnSeqno; $rxMap[$drug->data->gcnSeqno] = $drug->data->name; } } if(!count($gcnSeqNos)) return $result; $gcnSeqNos = implode(',', array_map(function($_x) { return "'" . $_x . "'"; }, $gcnSeqNos)); $sides = DB::connection('pgsql_fdb')->select(" SELECT r1.gcn_seqno, r1.side, sm.side_freq, sm.side_sev, sm.dxid, dx.dxid_desc56 FROM rsidegc0_gcnseqno_link r1 JOIN rsidema3_mstr sm ON r1.side = sm.side JOIN rfmldx0_dxid dx ON sm.dxid = dx.dxid WHERE r1.gcn_seqno IN (" . $gcnSeqNos . ") ORDER BY r1.gcn_seqno, sm.side_sev DESC, sm.side_freq ASC " ); $seMap = []; foreach ($sides as $se) { if(!isset($seMap[$rxMap[$se->gcn_seqno]])) { $seMap[$rxMap[$se->gcn_seqno]] = []; } $seMap[$rxMap[$se->gcn_seqno]][] = [ "gcn_seqno" => $se->gcn_seqno, "side_freq" => $se->side_freq, "side_sev" => $se->side_sev, "dxid_desc56" => $se->dxid_desc56, ]; } $result = $seMap; return $result; } } if(!function_exists('precautions_info')) { function precautions_info($_drugs) { } } if(!function_exists('contraindications_info')) { function contraindications_info($_drugs) { $result = []; // collect routed med ids $routedMedIds = []; $rxMap = []; foreach ($_drugs as $drug) { if(@$drug->data && $drug->data->routedMedId) { $routedMedIds[] = $drug->data->routedMedId; $rxMap[$drug->data->routedMedId] = $drug->data->name; } } if(!count($routedMedIds)) return $result; $routedMedIds = implode(',', array_map(function($_x) { return "'" . $_x . "'"; }, $routedMedIds)); $contraindications = DB::connection('pgsql_fdb')->select(" SELECT r1.routed_med_id, r1.ddxcn, r2.dxid, r2.ddxcn_sl, r3.dxid_desc56 FROM rddcmrm0_routed_med_link r1 JOIN rddcmma1_contra_mstr r2 ON r1.ddxcn = r2.ddxcn JOIN rfmldx0_dxid r3 ON r2.dxid = r3.dxid WHERE r1.routed_med_id IN (" . $routedMedIds . ") ORDER BY r1.routed_med_id, r3.dxid_desc56, r2.ddxcn_sl " ); $ciMap = []; foreach ($contraindications as $ci) { if(!isset($ciMap[$rxMap[$ci->routed_med_id]])) { $ciMap[$rxMap[$ci->routed_med_id]] = []; } $ciMap[$rxMap[$ci->routed_med_id]][] = [ "dxid_desc56" => $ci->dxid_desc56, ]; } $result = $ciMap; return $result; } } if(!function_exists('drug_allergy_info')) { function drug_allergy_info($_drugs, $_allergies) { } } if(!function_exists('drug_drug_interaction_info')) { function drug_drug_interaction_info($_drugs) { } } if(!function_exists('duplicate_therapy_info')) { function duplicate_therapy_info($_drugs) { $dptClasses = []; foreach ($_drugs as $drug) { $drug->dpt = getDptClassFromGcnSeqNo($drug->data->gcnSeqno); } $leftIndex = 0; $matches = []; for ($i = $leftIndex; $i < count($_drugs) - 1; $i++) { for ($j = $i + 1; $j < count($_drugs); $j++) { $compareResult = compareDPTs($_drugs[$i]->dpt, $_drugs[$j]->dpt); foreach ($compareResult as $c) { $matches[] = "{$_drugs[$i]->data->name} and {$_drugs[$j]->data->name} both participate in the duplicate therapy class {$c->dpt_class_desc} (duplicates allowed: {$c->dpt_allowance})"; } } } if(!count($matches)) return ''; return "
    " . implode("", array_map(function ($_x) { return "
  1. " . $_x . "
  2. "; }, $matches)) . "
"; } } if (!function_exists('getDptClassFromGcnSeqNo')) { function getDptClassFromGcnSeqNo($_gcnSeqNo) { return DB::connection('pgsql_fdb')->select(" SELECT distinct r1.dpt_class_id, r2.dpt_allowance, r2.dpt_class_desc FROM RDPTGC0_GCNSEQNO_LINK r1 JOIN RDPTCL0_CLASS_ID r2 on r1.dpt_class_id = r2.dpt_class_id WHERE r1.gcn_seqno = :gcnSeqNo ", ['gcnSeqNo' => $_gcnSeqNo] ); } } if (!function_exists('compareDPTs')) { function compareDPTs($_dptArray1, $_dptArray2) { $output = []; for ($i = 0; $i < count($_dptArray1); $i++) { for ($j = 0; $j < count($_dptArray2); $j++) { if ($_dptArray1[$i]->dpt_class_id == $_dptArray2[$j]->dpt_class_id) { $output[] = json_decode(json_encode([ "dpt_allowance" => $_dptArray1[$i]->dpt_allowance, "dpt_class_desc" => $_dptArray1[$i]->dpt_class_desc ])); } } } return $output; } } if(!function_exists('coadministration_info')) { function coadministration_info($_drugs) { // collect gcn-seq-nos $gcnSeqNos = []; $rxMap = []; foreach ($_drugs as $drug) { if(@$drug->data && $drug->data->gcnSeqno) { $gcnSeqNos[] = $drug->data->gcnSeqno; $rxMap[$drug->data->gcnSeqno] = $drug->data->name; } } if(!count($gcnSeqNos)) return $result; $gcnSeqNos = implode(',', array_map(function($_x) { return "'" . $_x . "'"; }, $gcnSeqNos)); $coadministration = DB::connection('pgsql_fdb')->select(" SELECT distinct r1.coadmin_dosing_text FROM radige0_ddi_gcnseqno_except r1 WHERE r1.side_a_gcn_seqno in ($gcnSeqNos) AND r1.side_b_gcn_seqno in ($gcnSeqNos) " ); if(!$coadministration || !count($coadministration)) return ''; return "
    " . implode("", array_map(function ($_x) { return "
  1. " . $_x->coadmin_dosing_text . "
  2. "; }, $coadministration)) . "
"; return $coadministration; } }