= 3 năm trước cách đây
mục cha
commit
81e807365f

+ 90 - 2
app/Http/Controllers/DnaController.php

@@ -35,8 +35,96 @@ class DnaController extends Controller
 
     public function patients(Request $request)
     {
-        $data = [];
-        return view('app.dna.patients', $data);
+        $filters = $request->all();
+        $patients = Client::whereNull('shadow_pro_id')->where('default_na_pro_id', $this->performer->pro->id);
+
+        // filters
+        /*
+        array:18 [▼
+          "age_category" => "LESS_THAN"
+          "age_value_1" => "34"
+          "age_value_2" => null
+          "sex" => "M"
+          "bmi_category" => "BETWEEN"
+          "bmi_value_1" => "20"
+          "bmi_value_2" => "25"
+          "last_visit_category" => "LESS_THAN"
+          "last_visit_value_1" => "2021-10-14"
+          "last_visit_value_2" => null
+          "next_appointment_category" => "LESS_THAN"
+          "next_appointment_value_1" => "2021-10-15"
+          "status" => "ACTIVE"
+          "last_weighed_in_category" => "EXACTLY"
+          "last_weighed_in_value_1" => "2021-10-07"
+          "last_bp_category" => "BETWEEN"
+          "last_bp_value_1" => "2021-10-01"
+          "last_bp_value_2" => "2021-10-31"
+        ]
+        */
+
+        $this->filterMultiQuery($request, $patients, 'age_in_years', 'age_category', 'age_value_1', 'age_value_2');
+        $this->filterSimpleQuery($request, $patients, 'sex', 'sex');
+        $this->filterMultiQuery($request, $patients, 'usual_bmi', 'bmi_category', 'bmi_value_1', 'bmi_value_2');
+        $this->filterMultiQuery($request, $patients, 'most_recent_weight_at', 'last_weighed_in_category', 'last_weighed_in_value_1', 'last_weighed_in_value_2');
+        $this->filterMultiQuery($request, $patients, 'most_recent_bp_at', 'last_bp_category', 'last_bp_value_1', 'last_bp_value_2');
+
+        switch($request->input('status')) {
+            case 'ACTIVE':
+                $patients->where('is_active', true)->where('has_mcp_done_onboarding_visit', true);
+                break;
+            case 'AWAITING_VISIT':
+                $patients->where('is_active', true)->where('has_mcp_done_onboarding_visit', false);
+                break;
+            case 'INACTIVE':
+                $patients->where('is_active', '<>', true);
+                break;
+        }
+
+
+
+        $patients = $patients->orderBy('created_at', 'DESC')->paginate(20);
+        return view('app.dna.patients', compact('patients', 'filters'));
+    }
+
+    private function filterSimpleQuery(Request $request, $query, $columnName, $valueName) {
+        if($request->input($valueName)) {
+            $query->where($columnName, $request->input($valueName));
+        }
+    }
+    private function filterMultiQuery(Request $request, $query, $columnName, $keyName, $valueName1, $valueName2) {
+        switch($request->input($keyName)) {
+            case 'EXACTLY':
+                if($request->input($valueName1)) {
+                    $query->where($columnName, $request->input($valueName1));
+                }
+                break;
+            case 'LESS_THAN':
+                if($request->input($valueName1)) {
+                    $query->where($columnName, '<', $request->input($valueName1));
+                }
+                break;
+            case 'GREATER_THAN':
+                if($request->input($valueName1)) {
+                    $query->where($columnName, '>', $request->input($valueName1));
+                }
+                break;
+            case 'BETWEEN':
+                if($request->input($valueName1) && $request->input($valueName2)) {
+                    $query
+                        ->where($columnName, '>=', $request->input($valueName1))
+                        ->where($columnName, '<=', $request->input($valueName2));
+                }
+                break;
+            case 'NOT_BETWEEN':
+                if($request->input($valueName1) && $request->input($valueName2)) {
+                    $query
+                        ->where(function ($q) use ($request, $columnName, $valueName1, $valueName2) {
+                            $q->where($columnName, '<', $request->input($valueName1))
+                                ->orWhere($columnName, '>', $request->input($valueName2));
+                        });
+                }
+                break;
+        }
     }
 
     public function notes(Request $request)

+ 18 - 1
resources/views/app/dna/patients.blade.php

@@ -1,6 +1,23 @@
 @extends ('layouts/template')
 
 @section('content')
-    <h1>Hi</h1>
+<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">
+            <strong class="mr-4">
+                <i class="fas fa-user-injured"></i>
+                Patients
+            </strong>
+        </div>
+
+        <div class="card-body p-0">
+            <div class="p-3">
+                @include('app.mcp.patients_filters')
+            </div>
+            @include('app.mcp.patients-table')
+        </div>
+    </div>
+</div>
 @endsection
 

+ 1 - 1
resources/views/app/patient/note/dashboard.blade.php

@@ -1209,7 +1209,7 @@
                                     @endif
 
                                     @if($pro->pro_type === 'ADMIN')                                    
-                                        <b>{{$bill->hcp && $bill->hcp->hcpCompanyPro && $bill->hcpCompanyPro->company ? $bill->hcpCompanyPro->pro->displayName() . ' / ' . $bill->hcpCompanyPro->company->name : '-'}}</b>
+                                        <b>{{$bill->hcpCompanyPro && $bill->hcpCompanyPro->company ? $bill->hcpCompanyPro->pro->displayName() . ' / ' . $bill->hcpCompanyPro->company->name : '-'}}</b>
                                         <div moe class="ml-1">
                                             <a class="text-primary" href="" show start>Swap HCP Company Pro</a>
                                             <form url="/api/bill/swapHcpCompanyPro">

+ 89 - 4
resources/views/app/patient/settings.blade.php

@@ -696,7 +696,7 @@
                 @if($performer->pro->pro_type === 'ADMIN')
                 <hr class="m-negator-3 my-3">
                 <div>
-                    <h3>Adming Engagement Assessment Status</h3>
+                    <h3>Admin Engagement Assessment Status</h3>
                     <p>Category: {{$patient->adminEngagementAssessmentStatus->status_category ?? ''}}</p>
 		            <p>Memo: {{$patient->adminEngagementAssessmentStatus->status_memo ?? ''}}</p>
 		            <p>Detail: {{$patient->adminEngagementAssessmentStatus->status_detail ?? ''}}</p>
@@ -737,12 +737,97 @@
                     </form>
                 </div>
                 @endif
+
+                @if($patient->mcp && $performer->pro->id == $patient->mcp->id || true)
+                <hr class="m-negator-3 my-3">
+                <div>
+                    <h3>MCP Engagement Assessment Status</h3>
+                    <p>Category: {{$patient->mcpEngagementAssessmentStatus->status_category ?? ''}}</p>
+		            <p>Memo: {{$patient->mcpEngagementAssessmentStatus->status_memo ?? ''}}</p>
+		            <p>Detail: {{$patient->mcpEngagementAssessmentStatus->status_detail ?? ''}}</p>
+                </div>
+                <div moe class="ml-2">
+                    <a start show><i class="fa fa-edit"></i>Update MCP Engagement Assessment Status</a>
+                    <form url="/api/client/updateMcpEngagementAssessmentStatus" class="mcp-theme-1">
+                        <input type="hidden" name="uid" value="{{$patient->uid}}">
+                        <div class="form-group">
+                            <label class="control-label">Category </label>
+                            <select name="category" class="form-control">
+                                <option value="NULL">--</option> 
+                                <option value="ACTIVE">ACTIVE</option> 
+                                <option value="INACTIVE">INACTIVE</option> 
+                                <option value="ENTRY_ERROR">ENTRY_ERROR</option> 
+                                <option value="DUMMY">DUMMY</option> 
+                                <option value="DECEASED">DECEASED</option>
+	                            <option value="DUPLICATE">DUPLICATE</option> 
+                                <option value="NO_LONGER_INTERESTED">NO_LONGER_INTERESTED</option> 
+                                <option value="BAD_RECORD">BAD_RECORD</option>
+                            </select>
+                        </div>
+                        <div class="form-group">
+                            <label class="control-label">Memo</label>
+                            <input type="text" name="memo" class="form-control">
+                        </div>
+                        <div class="form-group">
+                            <label class="control-label">Detail</label>
+                            <input type="text" name="detail" class="form-control">
+                        </div>
+                        <div>
+                            <button submit class="btn btn-sm btn-primary mr-1">Submit
+                            </button>
+                            <button cancel class="btn btn-sm btn-default border">
+                                Cancel
+                            </button>
+                        </div>
+                    </form>
+                </div>
+                @endif
+                @if($patient->defaultNaPro && $performer->pro->id == $patient->defaultNaPro->id)
                 <hr class="m-negator-3 my-3">
+                <div>
+                    <h3>Default NA Engagement Assessment Status</h3>
+                    <p>Category: {{$patient->defaultNaEngagementAssessmentStatus->status_category ?? ''}}</p>
+		            <p>Memo: {{$patient->defaultNaEngagementAssessmentStatus->status_memo ?? ''}}</p>
+		            <p>Detail: {{$patient->defaultNaEngagementAssessmentStatus->status_detail ?? ''}}</p>
+                </div>
+                <div moe class="ml-2">
+                    <a start show><i class="fa fa-edit"></i>Update Default NA Engagement Assessment Status</a>
+                    <form url="/api/client/updateDefaultNaEngagementAssessmentStatus" class="mcp-theme-1">
+                        <input type="hidden" name="uid" value="{{$patient->uid}}">
+                        <div class="form-group">
+                            <label class="control-label">Category </label>
+                            <select name="category" class="form-control">
+                                <option value="NULL">--</option> 
+                                <option value="ACTIVE">ACTIVE</option> 
+                                <option value="INACTIVE">INACTIVE</option> 
+                                <option value="ENTRY_ERROR">ENTRY_ERROR</option> 
+                                <option value="DUMMY">DUMMY</option> 
+                                <option value="DECEASED">DECEASED</option>
+	                            <option value="DUPLICATE">DUPLICATE</option> 
+                                <option value="NO_LONGER_INTERESTED">NO_LONGER_INTERESTED</option> 
+                                <option value="BAD_RECORD">BAD_RECORD</option>
+                            </select>
+                        </div>
+                        <div class="form-group">
+                            <label class="control-label">Memo</label>
+                            <input type="text" name="memo" class="form-control">
+                        </div>
+                        <div class="form-group">
+                            <label class="control-label">Detail</label>
+                            <input type="text" name="detail" class="form-control">
+                        </div>
+                        <div>
+                            <button submit class="btn btn-sm btn-primary mr-1">Submit
+                            </button>
+                            <button cancel class="btn btn-sm btn-default border">
+                                Cancel
+                            </button>
+                        </div>
+                    </form>
+                </div>
+                @endif
                 <!-- <div>
-                /updateMcpEngagementAssessmentStatus
-                /updateDefaultNaEngagementAssessmentStatus
                 /updateClientEngagementAssessmentStatus
-                /updateClientSelfSatisfactionStatus
                 </div> -->
             </div>
             <div class="col-6 border-left">