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 "