Pārlūkot izejas kodu

Easier meds FDB suggest

Vijayakrishnan 3 gadi atpakaļ
vecāks
revīzija
258e4fe6f7

+ 27 - 0
app/Http/Controllers/FDBPGController.php

@@ -76,6 +76,33 @@ class FDBPGController extends Controller
         return json_encode($matches);
     }
 
+    // ** med suggest V2 ** //
+    public function medSuggestV2JSON(Request $request)
+    {
+        $term = $request->input('term') ? trim($request->input('term')) : '';
+        if (empty($term)) return '';
+        $matches = DB::connection('pgsql_fdb')->select("
+SELECT r_med.medid,
+       r_med.med_medid_desc as text,
+       r_med.gcn_seqno,
+       r_dosage_form.routed_dosage_form_med_id,
+       r_route.routed_med_id
+FROM rmiid1_med r_med
+         JOIN rmidfid1_routed_dose_form_med r_dosage_form
+              ON r_med.routed_dosage_form_med_id = r_dosage_form.routed_dosage_form_med_id
+         JOIN rmirmid1_routed_med r_route ON r_dosage_form.routed_med_id = r_route.routed_med_id
+WHERE r_med.med_status_cd = '0'
+  AND r_med.med_medid_desc ILIKE :term
+ORDER BY r_route.med_routed_med_id_desc, r_med.med_medid_desc",
+            ['term' => '%' . $term . '%']
+        );
+        return json_encode([
+            "success" => true,
+            "data" => $matches
+        ]);
+    }
+
+
     // side effects for a given rx
     public function sideEffects(Request $request)
     {

+ 19 - 108
resources/views/app/patient/segment-templates/intake_medications/edit.blade.php

@@ -30,9 +30,6 @@ $medications = Point::getIntakePointsOfCategory($patient, 'MEDICATION', $note);
                         <div class="d-flex align-items-baseline">
                             <div class="<?= $medication->is_removed ? 'strike-through' : '' ?>">
                                 <b><?= !!@($medication->data->name) ? @($medication->data->name) : '-' ?></b>
-                                <?= !!@($medication->data->route) ? '/&nbsp;' . @($medication->data->route) : '' ?>
-                                <?= !!@($medication->data->dose) ? '/&nbsp;' . @($medication->data->dose) : '' ?>
-                                <?= !!@($medication->data->strength) ? '/&nbsp;' . @($medication->data->strength) : '' ?>
                                 <?= !!@($medication->data->frequency) ? '/&nbsp;' . @($medication->data->frequency) : '' ?>
                             </div>
 
@@ -100,42 +97,20 @@ $medications = Point::getIntakePointsOfCategory($patient, 'MEDICATION', $note);
             <input type="hidden" name="category" value="MEDICATION">
             <input type="hidden" name="data">
 
-            <input type="hidden" data-name="medNameId">
-            <input type="hidden" data-name="route">
-            <input type="hidden" data-name="dose">
-            <input type="hidden" data-name="strength">
             <input type="hidden" data-name="medId">
+            <input type="hidden" data-name="routedMedId">
+            <input type="hidden" data-name="routedDosageFormMedId">
+            <input type="hidden" data-name="gcnSeqno">
 
             <p class="mb-2"><b>Add Medication (on intake)</b></p>
 
             <div class="mb-2">
-                <label class="text-sm text-secondary mb-1">Name</label>
+                <label class="text-sm text-secondary mb-1">Medication</label>
                 <input type="text"
                        data-name="name"
                        class="form-control form-control-sm"
                        stag-suggest
-                       stag-suggest-ep="/fdb-med-suggest/json">
-            </div>
-            <div class="mb-2">
-                <label class="text-sm text-secondary mb-1">Route</label>
-                <select data-name="routedMedId"
-                        class="form-control form-control-sm"
-                        disabled>
-                </select>
-            </div>
-            <div class="mb-2">
-                <label class="text-sm text-secondary mb-1">Dosage</label>
-                <select data-name="routedDosageFormMedId"
-                        class="form-control form-control-sm"
-                        disabled>
-                </select>
-            </div>
-            <div class="mb-2">
-                <label class="text-sm text-secondary mb-1">Strength</label>
-                <select data-name="gcnSeqno"
-                        class="form-control form-control-sm"
-                        disabled>
-                </select>
+                       stag-suggest-ep="/fdb-med-suggest-v2/json">
             </div>
             <div class="mb-2">
                 <label class="text-sm text-secondary mb-1">Frequency</label>
@@ -171,86 +146,22 @@ $medications = Point::getIntakePointsOfCategory($patient, 'MEDICATION', $note);
             .on('stag-suggest-selected', (_e, _input, _data) => {
 
                 // _input is the textbox
-                // _data is {med_name_id: "50567", text: "Children's Tylenol"}
-
-                let medNameID = _data.med_name_id;
-                parentSegment.find('input[data-name="medNameId"]').val(medNameID);
-
-                let routeSelect = parentSegment.find('[data-name="routedMedId"]').empty().prop('disabled', true);
-                let dosageSelect = parentSegment.find('[data-name="routedDosageFormMedId"]').empty().prop('disabled', true);
-                let strengthSelect = parentSegment.find('[data-name="gcnSeqno"]').empty().prop('disabled', true);
-
-                $.get('/fdb-routed-meds?med-name-id=' + medNameID, _data => {
-                    routeSelect
-                        .empty()
-                        .append('<option value="">-- select --</option>');
-                    for (let i = 0; i < _data.length; i++) {
-                        routeSelect.append('<option value="' + _data[i].routed_med_id + '">' + _data[i].med_routed_med_id_desc + '</option>')
-                    }
-                    routeSelect.prop('disabled', false);
-                    if(_data.length === 1) {
-                        routeSelect.val(_data[0].routed_med_id).trigger('change');
-                    }
-                }, 'json');
+                // _data is {
+                    // gcn_seqno: "78121"
+                    // medid: "595384"
+                    // routed_dosage_form_med_id: "437207"
+                    // routed_med_id: "8814"
+                    // text: "metoprolol succinate ER 100 mg capsule sprinkle, ext. release 24 hr"
+                // }
+
+                parentSegment.find('input[data-name="routedMedId"]').val(_data.routed_med_id);
+                parentSegment.find('input[data-name="routedDosageFormMedId"]').val(_data.routed_dosage_form_med_id);
+                parentSegment.find('input[data-name="gcnSeqno"]').val(_data.gcn_seqno);
+                parentSegment.find('input[data-name="medId"]').val(_data.medid);
+
+                return false;
             });
 
-        // on route selection
-        $(document).off('change', '[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] [data-name="routedMedId"]');
-        $(document).on('change', '[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] [data-name="routedMedId"]', function () {
-
-            // clear
-            let dosageSelect = parentSegment.find('[data-name="routedDosageFormMedId"]').empty().prop('disabled', true);
-            let strengthSelect = parentSegment.find('[data-name="gcnSeqno"]').empty().prop('disabled', true);
-            let routedMedID = $(this).val();
-            parentSegment.find('input[data-name="route"]').val($(this).find('option:selected').text());
-
-            $.get('/fdb-routed-dosages?routed-med-id=' + routedMedID, _data => {
-                dosageSelect
-                    .empty()
-                    .append('<option value="">-- select --</option>');
-                for (let i = 0; i < _data.length; i++) {
-                    dosageSelect.append('<option value="' + _data[i].routed_dosage_form_med_id + '">' + _data[i].med_routed_df_med_id_desc + '</option>')
-                }
-                dosageSelect.prop('disabled', false);
-                if(_data.length === 1) {
-                    dosageSelect.val(_data[0].routed_dosage_form_med_id).trigger('change');
-                }
-            }, 'json');
-        });
-
-        // on dosage selection
-        $(document).off('change', '[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] [data-name="routedDosageFormMedId"]');
-        $(document).on('change', '[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] [data-name="routedDosageFormMedId"]', function () {
-
-            // clear
-            let strengthSelect = parentSegment.find('[data-name="gcnSeqno"]').empty().prop('disabled', true);
-            let dosageFormMedID = $(this).val();
-            parentSegment.find('input[data-name="dose"]').val($(this).find('option:selected').text());
-
-            $.get('/fdb-meds?dosage-form-med-id=' + dosageFormMedID, _data => {
-                strengthSelect
-                    .empty()
-                    .append('<option value="">-- select --</option>');
-                for (let i = 0; i < _data.length; i++) {
-                    strengthSelect.append('<option data-medid="' + _data[i].medid + '" value="' + _data[i].gcn_seqno + '">' + _data[i].med_medid_desc + '</option>')
-                }
-                strengthSelect.prop('disabled', false);
-                if(_data.length === 1) {
-                    strengthSelect.val(_data[0].gcn_seqno).trigger('change');
-                    $('input[data-name="description"]').focus();
-                }
-            }, 'json');
-        });
-
-        // on strength (medid) selection
-        $(document).off('change', '[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] [data-name="gcnSeqno"]');
-        $(document).on('change', '[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] [data-name="gcnSeqno"]', function () {
-
-            parentSegment.find('input[data-name="medId"]').val($(this).find('option:selected').attr('data-medid'));
-            parentSegment.find('input[data-name="strength"]').val($(this).find('option:selected').text());
-
-        });
-
     };
 </script>
 

+ 0 - 1
resources/views/app/patient/segment-templates/intake_medications/summary.blade.php

@@ -16,7 +16,6 @@ $medications = Point::getIntakePointsOfCategory($patient, 'MEDICATION', $note);
             <div class="d-flex align-items-baseline">
                 <div class="<?= $medication->is_removed ? 'strike-through' : '' ?>">
                     <b><?= !!@($medication->data->name) ? @($medication->data->name) : '-' ?></b>
-                    <?= !!@($medication->data->strength) ? '/&nbsp;' . @($medication->data->strength) : '' ?>
                     <?= !!@($medication->data->frequency) ? '/&nbsp;' . @($medication->data->frequency) : '' ?>
                 </div>
                 <?php if ($medication->is_removed): ?>

+ 19 - 108
resources/views/app/patient/segment-templates/plan_medications/edit.blade.php

@@ -48,9 +48,6 @@ else {
                         <div class="d-flex align-items-baseline">
                             <div class="<?= $medication->is_removed ? 'strike-through' : '' ?>">
                                 <b><?= !!@($medication->data->name) ? @($medication->data->name) : '-' ?></b>
-                                <?= !!@($medication->data->route) ? '/&nbsp;' . @($medication->data->route) : '' ?>
-                                <?= !!@($medication->data->dose) ? '/&nbsp;' . @($medication->data->dose) : '' ?>
-                                <?= !!@($medication->data->strength) ? '/&nbsp;' . @($medication->data->strength) : '' ?>
                                 <?= !!@($medication->data->frequency) ? '/&nbsp;' . @($medication->data->frequency) : '' ?>
                             </div>
 
@@ -118,16 +115,15 @@ else {
         </div>
         <div visit-moe large class="ml-auto mt-1 max-width-500px">
             <a href="#" start show class="btn btn-sm btn btn-outline-primary">+ Add new medication, prescribed during this visit</a>
-            <form url="/api/visitPoint/addTopLevelDuringVisit" class="mcp-theme-1">
+            <form url="/api/visitPoint/addTopLevelDuringVisit" class="mcp-theme-1" right>
                 <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
                 <input type="hidden" name="category" value="MEDICATION">
                 <input type="hidden" name="data">
 
-                <input type="hidden" data-name="medNameId">
-                <input type="hidden" data-name="route">
-                <input type="hidden" data-name="dose">
-                <input type="hidden" data-name="strength">
                 <input type="hidden" data-name="medId">
+                <input type="hidden" data-name="routedMedId">
+                <input type="hidden" data-name="routedDosageFormMedId">
+                <input type="hidden" data-name="gcnSeqno">
 
                 <p class="mb-2"><b>Add Medication (during visit)</b></p>
 
@@ -137,33 +133,12 @@ else {
                            data-name="name"
                            class="form-control form-control-sm"
                            stag-suggest
-                           stag-suggest-ep="/fdb-med-suggest/json">
-                </div>
-                <div class="mb-2">
-                    <label class="text-sm text-secondary mb-1">Route</label>
-                    <select data-name="routedMedId"
-                            class="form-control form-control-sm"
-                            disabled>
-                    </select>
-                </div>
-                <div class="mb-2">
-                    <label class="text-sm text-secondary mb-1">Dosage</label>
-                    <select data-name="routedDosageFormMedId"
-                            class="form-control form-control-sm"
-                            disabled>
-                    </select>
-                </div>
-                <div class="mb-2">
-                    <label class="text-sm text-secondary mb-1">Strength</label>
-                    <select data-name="gcnSeqno"
-                            class="form-control form-control-sm"
-                            disabled>
-                    </select>
+                           stag-suggest-ep="/fdb-med-suggest-v2/json">
                 </div>
                 <div class="mb-2">
                     <label class="text-sm text-secondary mb-1">Frequency</label>
                     <input type="text" class="form-control form-control-sm" data-name="frequency"
-                           data-option-list="frequency-options" autocomplete="off" value="">
+                           data-option-list="frequency-options" autocomplete="off">
                     <div id="frequency-options" class="data-option-list">
                         <div>Once a day</div>
                         <div>Twice a day</div>
@@ -195,86 +170,22 @@ else {
             .on('stag-suggest-selected', (_e, _input, _data) => {
 
                 // _input is the textbox
-                // _data is {med_name_id: "50567", text: "Children's Tylenol"}
+                // _data is {
+                // gcn_seqno: "78121"
+                // medid: "595384"
+                // routed_dosage_form_med_id: "437207"
+                // routed_med_id: "8814"
+                // text: "metoprolol succinate ER 100 mg capsule sprinkle, ext. release 24 hr"
+                // }
+
+                parentSegment.find('input[data-name="routedMedId"]').val(_data.routed_med_id);
+                parentSegment.find('input[data-name="routedDosageFormMedId"]').val(_data.routed_dosage_form_med_id);
+                parentSegment.find('input[data-name="gcnSeqno"]').val(_data.gcn_seqno);
+                parentSegment.find('input[data-name="medId"]').val(_data.medid);
 
-                let medNameID = _data.med_name_id;
-                parentSegment.find('input[data-name="medNameId"]').val(medNameID);
-
-                let routeSelect = parentSegment.find('[data-name="routedMedId"]').empty().prop('disabled', true);
-                let dosageSelect = parentSegment.find('[data-name="routedDosageFormMedId"]').empty().prop('disabled', true);
-                let strengthSelect = parentSegment.find('[data-name="gcnSeqno"]').empty().prop('disabled', true);
-
-                $.get('/fdb-routed-meds?med-name-id=' + medNameID, _data => {
-                    routeSelect
-                        .empty()
-                        .append('<option value="">-- select --</option>');
-                    for (let i = 0; i < _data.length; i++) {
-                        routeSelect.append('<option value="' + _data[i].routed_med_id + '">' + _data[i].med_routed_med_id_desc + '</option>')
-                    }
-                    routeSelect.prop('disabled', false);
-                    if(_data.length === 1) {
-                        routeSelect.val(_data[0].routed_med_id).trigger('change');
-                    }
-                }, 'json');
+                return false;
             });
 
-        // on route selection
-        $(document).off('change', '[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] [data-name="routedMedId"]');
-        $(document).on('change', '[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] [data-name="routedMedId"]', function () {
-
-            // clear
-            let dosageSelect = parentSegment.find('[data-name="routedDosageFormMedId"]').empty().prop('disabled', true);
-            let strengthSelect = parentSegment.find('[data-name="gcnSeqno"]').empty().prop('disabled', true);
-            let routedMedID = $(this).val();
-            parentSegment.find('input[data-name="route"]').val($(this).find('option:selected').text());
-
-            $.get('/fdb-routed-dosages?routed-med-id=' + routedMedID, _data => {
-                dosageSelect
-                    .empty()
-                    .append('<option value="">-- select --</option>');
-                for (let i = 0; i < _data.length; i++) {
-                    dosageSelect.append('<option value="' + _data[i].routed_dosage_form_med_id + '">' + _data[i].med_routed_df_med_id_desc + '</option>')
-                }
-                dosageSelect.prop('disabled', false);
-                if(_data.length === 1) {
-                    dosageSelect.val(_data[0].routed_dosage_form_med_id).trigger('change');
-                }
-            }, 'json');
-        });
-
-        // on dosage selection
-        $(document).off('change', '[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] [data-name="routedDosageFormMedId"]');
-        $(document).on('change', '[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] [data-name="routedDosageFormMedId"]', function () {
-
-            // clear
-            let strengthSelect = parentSegment.find('[data-name="gcnSeqno"]').empty().prop('disabled', true);
-            let dosageFormMedID = $(this).val();
-            parentSegment.find('input[data-name="dose"]').val($(this).find('option:selected').text());
-
-            $.get('/fdb-meds?dosage-form-med-id=' + dosageFormMedID, _data => {
-                strengthSelect
-                    .empty()
-                    .append('<option value="">-- select --</option>');
-                for (let i = 0; i < _data.length; i++) {
-                    strengthSelect.append('<option data-medid="' + _data[i].medid + '" value="' + _data[i].gcn_seqno + '">' + _data[i].med_medid_desc + '</option>')
-                }
-                strengthSelect.prop('disabled', false);
-                if(_data.length === 1) {
-                    strengthSelect.val(_data[0].gcn_seqno).trigger('change');
-                    $('input[data-name="description"]').focus();
-                }
-            }, 'json');
-        });
-
-        // on strength (medid) selection
-        $(document).off('change', '[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] [data-name="gcnSeqno"]');
-        $(document).on('change', '[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] [data-name="gcnSeqno"]', function () {
-
-            parentSegment.find('input[data-name="medId"]').val($(this).find('option:selected').attr('data-medid'));
-            parentSegment.find('input[data-name="strength"]').val($(this).find('option:selected').text());
-
-        });
-
         // relevance
         $(document).off('change', '[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] .chk-relevance');
         $(document).on('change', '[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] .chk-relevance', function () {

+ 0 - 1
resources/views/app/patient/segment-templates/plan_medications/summary.blade.php

@@ -34,7 +34,6 @@ $numRelevant = 0;
                 @endif
                 <div class="<?= $medication->is_removed ? 'strike-through' : '' ?>">
                     <b><?= !!@($medication->data->name) ? @($medication->data->name) : '-' ?></b>
-                    <?= !!@($medication->data->strength) ? '/&nbsp;' . @($medication->data->strength) : '' ?>
                     <?= !!@($medication->data->frequency) ? '/&nbsp;' . @($medication->data->frequency) : '' ?>
                 </div>
                 <?php if ($medication->is_removed): ?>

+ 1 - 0
routes/web.php

@@ -396,6 +396,7 @@ Route::middleware('pro.auth')->group(function () {
     Route::get('/fdb-pg-rx', 'FDBPGController@rx')->name('fdb-pg-rx');
     Route::get('/fdb-med-suggest', 'FDBPGController@medSuggest');
     Route::get('/fdb-med-suggest/json', 'FDBPGController@medSuggestJSON');
+    Route::get('/fdb-med-suggest-v2/json', 'FDBPGController@medSuggestV2JSON');
     Route::get('/fdb-routed-meds', 'FDBPGController@routedMeds');
     Route::get('/fdb-routed-dosages', 'FDBPGController@routedDosages');
     Route::get('/fdb-meds', 'FDBPGController@meds');