Bladeren bron

Patients list > name/email/tags filter

Vijayakrishnan 4 jaren geleden
bovenliggende
commit
2256379a67
2 gewijzigde bestanden met toevoegingen van 39 en 6 verwijderingen
  1. 10 0
      app/Http/Controllers/HomeController.php
  2. 29 6
      resources/views/app/patients.blade.php

+ 10 - 0
app/Http/Controllers/HomeController.php

@@ -549,6 +549,16 @@ WHERE measurement.label NOT IN ('SBP', 'DBP')
         $performer = $this->performer();
         $query = $performer->pro->getAccessibleClientsQuery();
 
+        $q = trim($request->input('q'));
+        if(!empty($q)) {
+            $query = $query->where(function ($query) use ($q) {
+                $query->where('name_first', 'ILIKE', "%$q%")
+                    ->orWhere('name_last', 'ILIKE', "%$q%")
+                    ->orWhere('email_address', 'ILIKE', "%$q%")
+                    ->orWhere('tags', 'ILIKE', "%$q%");
+            });
+        }
+
         switch ($filter) {
             case 'not-yet-seen':
                 $query = $query

+ 29 - 6
resources/views/app/patients.blade.php

@@ -23,7 +23,7 @@
     }
     ?>
 
-    <div class="p-3 mcp-theme-1">
+    <div class="p-3 mcp-theme-1" id="patients-list">
     <div class="card">
 
         <div class="card-header px-3 py-2 d-flex align-items-center">
@@ -31,11 +31,18 @@
                 <i class="fas fa-user-injured"></i>
                 Patients
             </strong>
-            <select class="ml-auto max-width-300px form-control form-control-sm" onchange="fastLoad('/patients/' + this.value, true, false, false)">
-                <option value="" {{ $filter === '' ? 'selected' : '' }}>All patients</option>
-                <option value="not-yet-seen" {{ $filter === 'not-yet-seen' ? 'selected' : '' }}>Patients I have not seen yet</option>
-                <option value="having-birthday-today" {{ $filter === 'having-birthday-today' ? 'selected' : '' }}>Patients having birthday today</option>
-            </select>
+            <div class="ml-auto d-flex align-items-center search-form">
+                <form action="" method="get" class="mr-2" id="patients-search">
+                    <input type="text" name="q" value="{{request()->input('q')}}" class="form-control form-control-sm"
+                           placeholder="Name / Email / Tags">
+                </form>
+                <select class="ml-auto max-width-300px form-control form-control-sm"
+                        id="patients-filter">
+                    <option value="" {{ $filter === '' ? 'selected' : '' }}>All patients</option>
+                    <option value="not-yet-seen" {{ $filter === 'not-yet-seen' ? 'selected' : '' }}>Patients I have not seen yet</option>
+                    <option value="having-birthday-today" {{ $filter === 'having-birthday-today' ? 'selected' : '' }}>Patients having birthday today</option>
+                </select>
+            </div>
         </div>
         <div class="card-body p-0">
             <table class="table table-condensed p-0 m-0">
@@ -213,4 +220,20 @@
     </div>
     </div>
 
+    <script>
+        (function() {
+            function init() {
+                function submit() {
+                    let url = '/patients' +
+                        ($('#patients-filter').val() ? '/' + $('#patients-filter').val() : '') +
+                        ($('#patients-search input').val() ? '?q=' + encodeURIComponent($('#patients-search input').val()) : '');
+                    fastLoad(url);
+                    return false;
+                }
+                $('#patients-search').off('submit').on('submit', submit);
+                $('#patients-filter').off('change').on('change', submit);
+            }
+            addMCInitializer('patients-list', init, '#patients-list');
+        }).call(window);
+    </script>
 @endsection