123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
- <?php
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\DB;
- if(!function_exists('side_effects_info')) {
- function side_effects_info($_drugs) {
- $result = [];
- // 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));
- $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[] = "<b>{$_drugs[$i]->data->name}</b> and <b>{$_drugs[$j]->data->name}</b> both participate in the duplicate therapy class <b>{$c->dpt_class_desc}</b> (duplicates allowed: {$c->dpt_allowance})";
- }
- }
- }
- if(!count($matches)) return '';
- return "<ol class='pl-0 ml-3 mb-0'>" . implode("", array_map(function ($_x) {
- return "<li class='mb-1'>" . $_x . "</li>";
- }, $matches)) . "</ol>";
- }
- }
- 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 "<ol class='pl-0 ml-3 mb-0'>" . implode("", array_map(function ($_x) {
- return "<li class='mb-1'>" . $_x->coadmin_dosing_text . "</li>";
- }, $coadministration)) . "</ol>";
- return $coadministration;
- }
- }
|