瀏覽代碼

Optimization updates

Samson Mutunga 1 年之前
父節點
當前提交
d82716d822

+ 13 - 13
app/Http/Controllers/AdminController.php

@@ -132,10 +132,10 @@ class AdminController extends Controller
         $fVal = $request->input('has_account');
         if($fVal) {
             if($fVal === 'YES') {
-                $patients = $patients->whereRaw("((SELECT COUNT(ac.id) FROM account_client ac WHERE ac.client_id = client.id) > 0)");
+                $patients = $patients->whereRaw("((SELECT COUNT(ac.id) FROM account_client ac WHERE ac.client_id = admin_patient_list.id) > 0)");
             }
             else {
-                $patients = $patients->whereRaw("((SELECT COUNT(ac.id) FROM account_client ac WHERE ac.client_id = client.id) = 0)");
+                $patients = $patients->whereRaw("((SELECT COUNT(ac.id) FROM account_client ac WHERE ac.client_id = admin_patient_list.id) = 0)");
             }
         }
 
@@ -174,12 +174,12 @@ class AdminController extends Controller
             if($fVal === 'YES') {
                 $patients = $patients->whereRaw("((SELECT count(sh.id) " .
                     "FROM shipment sh LEFT JOIN supply_order so ON so.shipment_id = sh.id " .
-                    "WHERE so.product_id = 1 AND sh.status IN ('DELIVERED', 'DISPATCHED') AND so.client_id = client.id) > 0)");
+                    "WHERE so.product_id = 1 AND sh.status IN ('DELIVERED', 'DISPATCHED') AND so.client_id = admin_patient_list.id) > 0)");
             }
             else {
                 $patients = $patients->whereRaw("((SELECT count(sh.id) " .
                     "FROM shipment sh LEFT JOIN supply_order so ON so.shipment_id = sh.id " .
-                    "WHERE so.product_id = 1 AND sh.status IN ('DELIVERED', 'DISPATCHED') AND so.client_id = client.id) = 0)");
+                    "WHERE so.product_id = 1 AND sh.status IN ('DELIVERED', 'DISPATCHED') AND so.client_id = admin_patient_list.id) = 0)");
             }
         }
 
@@ -188,12 +188,12 @@ class AdminController extends Controller
             if($fVal === 'YES') {
                 $patients = $patients->whereRaw("((SELECT count(sh.id) " .
                     "FROM shipment sh LEFT JOIN supply_order so ON so.shipment_id = sh.id " .
-                    "WHERE so.product_id = 2 AND sh.status IN ('DELIVERED', 'DISPATCHED') AND so.client_id = client.id) > 0)");
+                    "WHERE so.product_id = 2 AND sh.status IN ('DELIVERED', 'DISPATCHED') AND so.client_id = admin_patient_list.id) > 0)");
             }
             else {
                 $patients = $patients->whereRaw("((SELECT count(sh.id) " .
                     "FROM shipment sh LEFT JOIN supply_order so ON so.shipment_id = sh.id " .
-                    "WHERE so.product_id = 2 AND sh.status IN ('DELIVERED', 'DISPATCHED') AND so.client_id = client.id) = 0)");
+                    "WHERE so.product_id = 2 AND sh.status IN ('DELIVERED', 'DISPATCHED') AND so.client_id = admin_patient_list.id) = 0)");
             }
         }
 
@@ -202,12 +202,12 @@ class AdminController extends Controller
             if($fVal === 'YES') {
                 $patients = $patients->whereRaw("((SELECT count(sh.id) " .
                     "FROM shipment sh LEFT JOIN supply_order so ON so.shipment_id = sh.id " .
-                    "WHERE so.product_id = 3 AND sh.status IN ('DELIVERED', 'DISPATCHED') AND so.client_id = client.id) > 0)");
+                    "WHERE so.product_id = 3 AND sh.status IN ('DELIVERED', 'DISPATCHED') AND so.client_id = admin_patient_list.id) > 0)");
             }
             else {
                 $patients = $patients->whereRaw("((SELECT count(sh.id) " .
                     "FROM shipment sh LEFT JOIN supply_order so ON so.shipment_id = sh.id " .
-                    "WHERE so.product_id = 3 AND sh.status IN ('DELIVERED', 'DISPATCHED') AND so.client_id = client.id) = 0)");
+                    "WHERE so.product_id = 3 AND sh.status IN ('DELIVERED', 'DISPATCHED') AND so.client_id = admin_patient_list.id) = 0)");
             }
         }
 
@@ -216,24 +216,24 @@ class AdminController extends Controller
             if($fVal === 'YES') {
                 $patients = $patients->whereRaw("((SELECT count(sh.id) " .
                     "FROM shipment sh LEFT JOIN supply_order so ON so.shipment_id = sh.id " .
-                    "WHERE so.product_id = 4 AND sh.status IN ('DELIVERED', 'DISPATCHED') AND so.client_id = client.id) > 0)");
+                    "WHERE so.product_id = 4 AND sh.status IN ('DELIVERED', 'DISPATCHED') AND so.client_id = admin_patient_list.id) > 0)");
             }
             else {
                 $patients = $patients->whereRaw("((SELECT count(sh.id) " .
                     "FROM shipment sh LEFT JOIN supply_order so ON so.shipment_id = sh.id " .
-                    "WHERE so.product_id = 4 AND sh.status IN ('DELIVERED', 'DISPATCHED') AND so.client_id = client.id) = 0)");
+                    "WHERE so.product_id = 4 AND sh.status IN ('DELIVERED', 'DISPATCHED') AND so.client_id = admin_patient_list.id) = 0)");
             }
         }
 
         $fVal = $request->input('imei');
         if($fVal) {
             $patients = $patients->whereRaw("((SELECT count(cbd.id) FROM client_bdt_device cbd
-            WHERE cbd.client_id = client.id AND cbd.device_id IN (SELECT bd.id FROM bdt_device bd WHERE bd.imei LIKE '%$fVal%' AND bd.is_active IS TRUE)) > 0)");
+            WHERE cbd.client_id = admin_patient_list.id AND cbd.device_id IN (SELECT bd.id FROM bdt_device bd WHERE bd.imei LIKE '%$fVal%' AND bd.is_active IS TRUE)) > 0)");
         }
 
         if($request->input('number_of_measurements')){
             $keyName = $request->input('number_of_measurements');
-            $measurementCountQuery = '(SELECT COUNT(*) FROM measurement WHERE measurement.client_id = client.id AND is_active IS TRUE AND is_cellular IS TRUE AND is_cellular_zero IS NOT TRUE)';
+            $measurementCountQuery = '(SELECT COUNT(*) FROM measurement WHERE measurement.client_id = admin_patient_list.id AND is_active IS TRUE AND is_cellular IS TRUE AND is_cellular_zero IS NOT TRUE)';
             switch($keyName) {
                 case 'EXACTLY':
                     if($request->input('number_of_measurements_value_1')) {
@@ -328,7 +328,7 @@ class AdminController extends Controller
 
         }
 
-        $sortBy = $request->input('sort_by') ?: 'display_name';
+        $sortBy = $request->input('sort_by') ?: 'name_first';
         $sortDir = $request->input('sort_dir') ?: 'ASC';
 
         $sortBySQL = "$sortBy $sortDir NULLS LAST";

+ 81 - 0
app/Models/AdminPatient.php

@@ -8,4 +8,85 @@ class AdminPatient extends Model
 {
     protected $table = 'admin_patient_list';
 
+    public function nextMcpAppointment()
+    {
+        return $this->hasOne(Appointment::class, 'id', 'next_mcp_appointment_id');
+    }
+
+    public function effectiveClientPrimaryCoverage(){
+        return $this->hasOne(ClientPrimaryCoverage::class, 'id', 'effective_client_primary_coverage_id');
+    }
+
+    public function companyClients()
+    {
+        return $this->hasMany(CompanyClient::class, 'client_id', 'id')
+            ->where('is_active', true)
+            ->orderBy('created_at', 'asc');
+    }
+
+    public function getCoverageStatus() {
+        $status = 'NO';
+
+        // if medicare, check is_partbprimary
+        if($this->plan_type === 'MEDICARE') {
+            $status = $this->is_partbprimary;
+        }
+        else {
+            if(!$this->is_manually_determined) {
+                // AUTO determination of non-medicare not yet supported
+                $status = 'NO';
+            }
+            else {
+                switch($this->manual_determination_category) {
+                    case 'COVERED':
+                        $status = 'YES';
+                        break;
+                    case 'NOT_COVERED':
+                    case 'INVALID':
+                        $status = 'NO';
+                        break;
+                    default:
+                        $status = $this->manual_determination_category;
+                        break;
+                }
+            }
+        }
+
+        return $status;
+    }
+
+    public function insuranceDisplayName(){
+        $coverageName = $this->coverageToString();
+        if(stripos($coverageName, 'medicare') !== false) return 'Medicare';
+        if(stripos($coverageName, 'medicaid') !== false) return 'Medicaid';
+        if(stripos($coverageName, 'commercial') !== false) return 'Commercial';
+        return null;
+
+    }
+
+    public function insuranceDisplayPayerName(){
+        if($this->plan_type === 'MEDICAID'){
+            if($this->mcd_payer_name) return $this->mcd_payer_name;
+        } 
+        if($this->plan_type === 'COMMERCIAL'){
+            if($this->commercial_payer_name) return $this->commercial_payer_name; else $this->carrier_free_text ?: '-';
+        } 
+        return $this->insuranceDisplayName();
+    }
+
+    public function coverageToString() {
+        $parts = [];
+        $parts[] = $this->plan_type;
+        if($this->plan_type === 'MEDICARE') {
+            if($this->is_partbprimary === 'YES') {
+                $parts[] = 'Part B';
+            }
+        }
+        else {
+            if(@$this->plan_name) $parts[] = ' / ' . $this->plan_name;
+            if(@$this->plan_identifier) $parts[] = ' / ' . $this->plan_identifier;
+        }
+        return implode(" ", $parts);
+    }
+
 }

+ 1 - 1
resources/views/app/admin/patients-table-extended.blade.php

@@ -111,7 +111,7 @@ $patientEngagementColorCodes = @Config::get('constants.client_engagement_status_
                     @endif
                     <td>{{ $patient->mailing_address_state }}</td>
                     <td class="{{ $patient->mpb_remaining === 0 ? 'deductible-zero' : '' }}">
-                        {{-- @include('app.patient.coverage_column_renderer', ['patient' => $patient]) --}}
+                        @include('app.patient.coverage_column_fast_renderer', ['patient' => $patient])
 
                     </td>
                     @if ($performer->pro->pro_type == 'ADMIN')

+ 54 - 0
resources/views/app/patient/coverage_column_fast_renderer.blade.php

@@ -0,0 +1,54 @@
+<div class="d-flex align-items-baseline">
+    <?php
+    $coverageStatus = $patient->getCoverageStatus();
+    ?>
+
+    @if($coverageStatus === 'YES')
+        <i class="fa fa-check-circle text-success"></i>
+    @elseif($coverageStatus === 'NO')
+        @if(!$patient->manual_determination_category)
+            <i class="fas fa-hourglass-half text-warning" title="Pending Validation"></i>
+        @else
+            <i class="fa fa-times text-danger"></i>
+        @endif
+    @else
+        @if($patient->plan_type == 'MEDICARE' && !$patient->auto_medicare_is_match_found)
+            <i class="fa fa-times text-danger"></i>
+        @elseif($patient->plan_type == 'MEDICAID' && !$patient->auto_medicaid_is_match_found)
+            <i class="fa fa-times text-danger"></i>
+        @elseif($patient->plan_type == 'COMMERCIAL' && !$patient->auto_commercial_is_match_found)
+            <i class="fa fa-times text-danger"></i>
+        @else
+            <i class="fa fa-exclamation-triangle text-warning-mellow"></i>
+        @endif
+    @endif
+
+    <div class="ml-2 d-inline-flex align-items-baseline">
+        @if($patient->latest_client_primary_coverage_id)
+            @if($patient->plan_type === 'MEDICAID' && $patient->mcd_payer_name)
+                <span class="{{ @$truncateName ? 'coverage-payer-name':'' }}"
+                      title="{{$patient->mcd_payer_name}}">{{$patient->mcd_payer_name}}</span>
+            @elseif($patient->plan_type === 'COMMERCIAL' && $patient->commercial_payer_name)
+                <span class="{{ @$truncateName ? 'coverage-payer-name':'' }}"
+                      title="{{$patient->commercial_payer_name}}">{{$patient->commercial_payer_name}}</span>
+            @else
+                <span class="{{ @$truncateName ? 'coverage-payer-name':'' }}"
+                      title="{{$patient->insuranceDisplayName()}}">{{$patient->insuranceDisplayName()}}</span>
+            @endif
+        @else
+            <small class="ml-2 text-muted">(No insurance)</small>
+        @endif
+        <div class="">
+            @if($patient->plan_type === 'MEDICARE')
+                @if(@$patient->mpb_remaining)
+                    <span class="text-muted d-block text-sm ml-1">(Ded: {{format_number(@$patient->mpb_remaining)}})</span>
+                @endif
+            @endif
+            @if($patient->plan_type === 'COMMERCIAL')
+                @if(@$patient->deductible_amount && !!+@$patient->deductible_amount)
+                    <span class="text-muted d-block text-sm ml-1">(Ded: {{format_number(@$patient->deductible_amount)}})</span>
+                @endif
+            @endif
+        </div>
+    </div>
+</div>