Browse Source

Allergies - fdb auto-suggest

Vijayakrishnan 3 years ago
parent
commit
64e18dfbdb

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

@@ -202,6 +202,25 @@ ORDER BY r1.dam_concept_id_desc
         return view('app.fdb-pg.fdb-allergy-suggest', compact('matches'));
     }
 
+    // allergy suggest (json response)
+    public function allergySuggestJSON(Request $request)
+    {
+        $term = $request->input('term') ? trim($request->input('term')) : '';
+        if (empty($term)) return '';
+        $matches = DB::connection('pgsql_fdb')->select("
+SELECT r1.dam_concept_id, r1.dam_concept_id_typ, r1.dam_concept_id_desc as text
+FROM rdamca0_concept r1
+WHERE (r1.dam_concept_id_desc ILIKE :term)
+ORDER BY r1.dam_concept_id_desc
+",
+            ['term' => '%' . $term . '%']
+        );
+        return json_encode([
+            "success" => true,
+            "data" => $matches
+        ]);
+    }
+
     // drug <-> allergy match making
     public function drugAllergies(Request $request) {
 

+ 22 - 2
resources/views/app/patient/segment-templates/intake_allergies/edit.blade.php

@@ -68,13 +68,18 @@ $allergies = Point::getIntakePointsOfCategory($patient, 'ALLERGY', $note);
 
             <p class="mb-2"><b>Add Allergy (on intake)</b></p>
 
+            <input type="hidden" data-name="damConceptId">
+            <input type="hidden" data-name="damConceptIdType">
+
             <div class="mb-2">
                 <label class="text-sm text-secondary mb-1">Name</label>
-                <input type="text" data-name="name" class="form-control form-control-sm">
+                <input type="text" data-name="name" class="form-control form-control-sm"
+                       stag-suggest
+                       stag-suggest-ep="/fdb-allergy-suggest/json">
             </div>
             <div class="mb-2">
                 <label class="text-sm text-secondary mb-1">Description</label>
-                <input type="text" data-name="description" class="form-control form-control-sm">
+                <textarea type="text" data-name="description" class="form-control form-control-sm"></textarea>
             </div>
 
             <div>
@@ -85,3 +90,18 @@ $allergies = Point::getIntakePointsOfCategory($patient, 'ALLERGY', $note);
     </div>
 </div>
 
+<script>
+    window.segmentInitializers.<?= $segment->segmentTemplate->internal_name ?> = function() {
+        // any JS can come here
+        // will be run on page-load as well as whenever this segment is refreshed
+
+        let parentSegment = $('[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] ');
+        parentSegment.find('input[stag-suggest][data-name="name"]')
+            .off('stag-suggest-selected')
+            .on('stag-suggest-selected', (_e, _input, _data) => {
+                $('input[data-name="damConceptId"]').val(_data.dam_concept_id);
+                $('input[data-name="damConceptIdType"]').val(_data.dam_concept_id_typ);
+            });
+
+    };
+</script>

+ 21 - 2
resources/views/app/patient/segment-templates/plan_allergies/edit.blade.php

@@ -68,13 +68,18 @@ $intakeOrVisit = 'PLAN';
 
             <p class="mb-2"><b>Add Allergy (plan)</b></p>
 
+            <input type="hidden" data-name="damConceptId">
+            <input type="hidden" data-name="damConceptIdType">
+
             <div class="mb-2">
                 <label class="text-sm text-secondary mb-1">Name</label>
-                <input type="text" data-name="name" class="form-control form-control-sm">
+                <input type="text" data-name="name" class="form-control form-control-sm"
+                       stag-suggest
+                       stag-suggest-ep="/fdb-allergy-suggest/json">
             </div>
             <div class="mb-2">
                 <label class="text-sm text-secondary mb-1">Description</label>
-                <input type="text" data-name="description" class="form-control form-control-sm">
+                <textarea type="text" data-name="description" class="form-control form-control-sm"></textarea>
             </div>
 
             <div>
@@ -84,4 +89,18 @@ $intakeOrVisit = 'PLAN';
         </form>
     </div>
 </div>
+<script>
+    window.segmentInitializers.<?= $segment->segmentTemplate->internal_name ?> = function() {
+        // any JS can come here
+        // will be run on page-load as well as whenever this segment is refreshed
+
+        let parentSegment = $('[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] ');
+        parentSegment.find('input[stag-suggest][data-name="name"]')
+            .off('stag-suggest-selected')
+            .on('stag-suggest-selected', (_e, _input, _data) => {
+                $('input[data-name="damConceptId"]').val(_data.dam_concept_id);
+                $('input[data-name="damConceptIdType"]').val(_data.dam_concept_id_typ);
+            });
 
+    };
+</script>

+ 1 - 0
routes/web.php

@@ -396,6 +396,7 @@ Route::middleware('pro.auth')->group(function () {
     Route::get('/fdb-dx-suggest', 'FDBPGController@dxSuggest');
     Route::get('/fdb-dx-suggest/json', 'FDBPGController@dxSuggestJSON');
     Route::get('/fdb-allergy-suggest', 'FDBPGController@allergySuggest');
+    Route::get('/fdb-allergy-suggest/json', 'FDBPGController@allergySuggestJSON');
     Route::any('/fdb-drug-allergies', 'FDBPGController@drugAllergies');
     Route::any('/fdb-drug-drug-interaction', 'FDBPGController@drugDrugInteraction');
     Route::any('/fdb-drug-coadministration', 'FDBPGController@drugCoadministration');