فهرست منبع

Merge branch 'master' into dev-vj

Vijayakrishnan 3 سال پیش
والد
کامیت
042739c3dd
31فایلهای تغییر یافته به همراه1010 افزوده شده و 398 حذف شده
  1. 38 0
      app/Helpers/helpers.php
  2. 13 13
      app/Http/Controllers/AdminController.php
  3. 9 9
      app/Http/Controllers/HomeController.php
  4. 7 3
      app/Http/Controllers/PatientController.php
  5. 5 5
      app/Http/Controllers/PracticeManagementController.php
  6. 5 7
      app/Models/Client.php
  7. 3 0
      app/Models/ClientPrimaryCoverage.php
  8. 284 0
      coverage_spec_april_29_2022.txt
  9. 5 5
      resources/views/app/admin/part_b_patients-table.blade.php
  10. 4 4
      resources/views/app/admin/patients-table-extended.blade.php
  11. 2 0
      resources/views/app/patient/care-month/dashboard.blade.php
  12. 17 0
      resources/views/app/patient/care-month/refresh-suggestions-json.blade.php
  13. 2 2
      resources/views/app/patient/client-primary-coverages.blade.php
  14. 193 174
      resources/views/app/patient/coverage-status.blade.php
  15. 205 0
      resources/views/app/patient/coverage-status_depricated.blade.php
  16. 1 35
      resources/views/app/patient/eligible-refreshes.blade.php
  17. 2 0
      resources/views/app/patient/note/partials/cpp-bills-claims-container.blade.php
  18. 17 0
      resources/views/app/patient/note/refresh-suggestions-json.blade.php
  19. 1 1
      resources/views/app/patient/notes.blade.php
  20. 93 0
      resources/views/app/patient/partials/coverage-information.blade.php
  21. 1 1
      resources/views/app/patient/primary-coverage-form.blade.php
  22. 1 1
      resources/views/app/patient/primary-coverage-manual-determination-commercial-modal.blade.php
  23. 1 1
      resources/views/app/patient/primary-coverage-manual-determination-medicaid-modal.blade.php
  24. 1 1
      resources/views/app/patient/primary-coverage-manual-determination-medicare-modal.blade.php
  25. 7 7
      resources/views/app/patient/primary-coverage-manual-determination-view-commercial.blade.php
  26. 1 1
      resources/views/app/patient/primary-coverage-manual-determination-view-medicaid.blade.php
  27. 6 6
      resources/views/app/patient/primary-coverage-manual-determination-view-medicare.blade.php
  28. 15 43
      resources/views/app/patient/primary-coverage-view.blade.php
  29. 65 73
      resources/views/app/patient/primary-coverage.blade.php
  30. 4 4
      resources/views/app/practice-management/billing-report.blade.php
  31. 2 2
      resources/views/layouts/patient-header.blade.php

+ 38 - 0
app/Helpers/helpers.php

@@ -916,4 +916,42 @@ if(!function_exists('format_number')) {
     function format_number($number, $places = 2) {     
         return number_format((float)$number, $places, '.', '');
     }
+}
+
+if(!function_exists('toHumanReadable')) {
+    function toHumanReadable($name) {     
+        return ucwords(preg_replace("/[^0-9a-z]/i", " ", $name));
+    }
+}
+if(!function_exists('parseRender')) {
+    function parseRender($_data) {     
+        if($_data) {
+            $type = gettype($_data);
+            if(is_string($_data) || is_numeric($_data)) {
+                echo $_data;
+            }
+            else {
+                echo "<table class='table table-sm border w-100'>";
+                foreach($_data as $k => $v) {
+                    echo "<tr>";
+                    echo "<td><b class='text-secondary'>" . toHumanReadable($k) . "</b></td>";
+                    echo "<td>";
+                    if(is_object($v)) {
+                        parseRender($v);
+                    }
+                    elseif(is_array($v)) {
+                        foreach($v as $k2 => $v2) {
+                            parseRender($v2);
+                        }
+                    }
+                    else {
+                        echo $v;
+                    }
+                    echo "</td>";
+                    echo "</tr>";
+                }
+                echo "</table>";
+            }
+        }
+    }
 }

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

@@ -174,11 +174,11 @@ class AdminController extends Controller
         $insurance = $request->get('insurance');
         if($insurance){
             if($insurance === 'MEDICARE'){
-                $patients = $patients->whereHas('latestClientPrimaryCoverage', function($cpcQuery){
+                $patients = $patients->whereHas('effectiveClientPrimaryCoverage', function($cpcQuery){
                     return $cpcQuery->where('is_partbprimary', '=', 'YES');
                 });
             }else{
-                $patients = $patients->whereDoesntHave('latestClientPrimaryCoverage', function($cpcQuery){
+                $patients = $patients->whereDoesntHave('effectiveClientPrimaryCoverage', function($cpcQuery){
                     return $cpcQuery->where('is_partbprimary', '=', 'YES');
                 });
             }
@@ -265,33 +265,33 @@ class AdminController extends Controller
 
             switch($keyName) {
                 case 'EXACTLY':
-                        $patients = $patients->whereHas('latestClientPrimaryCoverage', function($q) use ($request){
+                        $patients = $patients->whereHas('effectiveClientPrimaryCoverage', function($q) use ($request){
                             return $q->where('auto_medicare_mpb_deductible', '=', $request->input('deductible_value_1'));
                         });
                     break;
                 case 'LESS_THAN':
                     if($request->input('deductible_value_1')) {
-                        $patients = $patients->whereHas('latestClientPrimaryCoverage', function($q) use ($request){
+                        $patients = $patients->whereHas('effectiveClientPrimaryCoverage', function($q) use ($request){
                             return $q->where('auto_medicare_mpb_deductible', '<=', $request->input('deductible_value_1'));
                         });
                     }
                     break;
                 case 'GREATER_THAN':
                     if($request->input('deductible_value_1')) {
-                        $patients = $patients->whereHas('latestClientPrimaryCoverage', function($q) use ($request){
+                        $patients = $patients->whereHas('effectiveClientPrimaryCoverage', function($q) use ($request){
                             return $q->where('auto_medicare_mpb_deductible', '>=', $request->input('deductible_value_1'));
                         });
                     }
                     break;
                 case 'BETWEEN':
-                    $patients = $patients->whereHas('latestClientPrimaryCoverage', function($q) use ($request){
+                    $patients = $patients->whereHas('effectiveClientPrimaryCoverage', function($q) use ($request){
                         return $q->where('auto_medicare_mpb_deductible', '>=', $request->input('deductible_value_1'))
                         ->where('auto_medicare_mpb_deductible', '<=', $request->input('deductible_value_2'));
                     });
                     break;
                 case 'NOT_BETWEEN':
                     if($request->input('deductible_value_1') && $request->input('deductible_value_2')) {
-                        $patients = $patients->whereHas('latestClientPrimaryCoverage', function($q) use ($request){
+                        $patients = $patients->whereHas('effectiveClientPrimaryCoverage', function($q) use ($request){
 
                             return $q->where(function($qq) use ($request){
                                 return $qq->where('auto_medicare_mpb_deductible', '<', $request->input('deductible_value_1'))
@@ -339,7 +339,7 @@ class AdminController extends Controller
             });
         }
 
-        $patients = $patients->whereHas('latestClientPrimaryCoverage', function($cpcQuery){
+        $patients = $patients->whereHas('effectiveClientPrimaryCoverage', function($cpcQuery){
             return $cpcQuery->where('is_partbprimary', '=', 'YES');
         });
 
@@ -527,24 +527,24 @@ class AdminController extends Controller
         $insurance = $request->get('insurance');
         if($insurance){
             if($insurance === 'MEDICARE'){
-                $patients = $patients->whereHas('latestClientPrimaryCoverage', function($cpcQuery){
+                $patients = $patients->whereHas('effectiveClientPrimaryCoverage', function($cpcQuery){
                     return $cpcQuery->where('is_partbprimary', '=', 'YES');
                 });
             }elseif($insurance === 'MEDICARE_PENDING'){
-                $patients = $patients->whereHas('latestClientPrimaryCoverage', function($cpcQuery){
+                $patients = $patients->whereHas('effectiveClientPrimaryCoverage', function($cpcQuery){
                     return $cpcQuery->where('plan_type', 'MEDICARE')->where('is_covered', '!=', 'YES');
                 });
             }elseif($insurance === 'NOT_COVERED'){
-                $patients = $patients->whereHas('latestClientPrimaryCoverage', function($cpcQuery){
+                $patients = $patients->whereHas('effectiveClientPrimaryCoverage', function($cpcQuery){
                     return $cpcQuery->where('is_covered', '!=', 'YES');
                 });
             }elseif($insurance === 'PENDING'){
-                $patients = $patients->whereHas('latestClientPrimaryCoverage', function($cpcQuery){
+                $patients = $patients->whereHas('effectiveClientPrimaryCoverage', function($cpcQuery){
                     return $cpcQuery->where('is_covered', '=', 'UNKNOWN');
                 });
             }
             else{
-                $patients = $patients->whereDoesntHave('latestClientPrimaryCoverage', function($cpcQuery){
+                $patients = $patients->whereDoesntHave('effectiveClientPrimaryCoverage', function($cpcQuery){
                     return $cpcQuery->where('is_partbprimary', '=', 'YES');
                 });
             }

+ 9 - 9
app/Http/Controllers/HomeController.php

@@ -519,16 +519,16 @@ WHERE ((client.mcp_pro_id = {$performer->pro->id}) OR (client.rmm_pro_id = {$per
             $keyNumbers['patientsWithoutCoverageInformation'] = DB::select(DB::raw("
 SELECT count(DISTINCT (cl.id)) as cnt
 FROM client cl
-WHERE cl.shadow_pro_id IS NULL AND cl.latest_client_primary_coverage_id IS NULL -- no coverage record"
+WHERE cl.shadow_pro_id IS NULL AND cl.effective_client_primary_coverage_id IS NULL -- no coverage record"
             ))[0]->cnt;
 
             // patients pending coverage verification
             $keyNumbers['patientsPendingCoverageVerification'] = DB::select(DB::raw("
 SELECT count(DISTINCT (cl.id)) as cnt
 FROM client cl
-         LEFT JOIN client_primary_coverage cpc ON cl.latest_client_primary_coverage_id = cpc.id
+         LEFT JOIN client_primary_coverage cpc ON cl.effective_client_primary_coverage_id = cpc.id
 WHERE cl.shadow_pro_id IS NULL
-    AND (cl.latest_client_primary_coverage_id IS NOT NULL -- coverage exists, but status is null or unknown
+    AND (cl.effective_client_primary_coverage_id IS NOT NULL -- coverage exists, but status is null or unknown
     AND (
                (cpc.plan_type = 'MEDICARE' AND (cpc.is_partbprimary = 'UNKNOWN' OR cpc.is_partbprimary IS NULL))
                OR
@@ -900,16 +900,16 @@ WHERE ((client.mcp_pro_id = {$performer->pro->id}) OR (client.rmm_pro_id = {$per
             $keyNumbers['patientsWithoutCoverageInformation'] = DB::select(DB::raw("
 SELECT count(DISTINCT (cl.id)) as cnt
 FROM client cl
-WHERE cl.shadow_pro_id IS NULL AND cl.latest_client_primary_coverage_id IS NULL -- no coverage record"
+WHERE cl.shadow_pro_id IS NULL AND cl.effective_client_primary_coverage_id IS NULL -- no coverage record"
             ))[0]->cnt;
 
             // patients pending coverage verification
             $keyNumbers['patientsPendingCoverageVerification'] = DB::select(DB::raw("
 SELECT count(DISTINCT (cl.id)) as cnt
 FROM client cl
-         LEFT JOIN client_primary_coverage cpc ON cl.latest_client_primary_coverage_id = cpc.id
+         LEFT JOIN client_primary_coverage cpc ON cl.effective_client_primary_coverage_id = cpc.id
 WHERE cl.shadow_pro_id IS NULL
-    AND (cl.latest_client_primary_coverage_id IS NOT NULL -- coverage exists, but status is null or unknown
+    AND (cl.effective_client_primary_coverage_id IS NOT NULL -- coverage exists, but status is null or unknown
     AND (
                (cpc.plan_type = 'MEDICARE' AND (cpc.is_partbprimary = 'UNKNOWN' OR cpc.is_partbprimary IS NULL))
                OR
@@ -1355,16 +1355,16 @@ WHERE ((client.mcp_pro_id = {$performer->pro->id}) OR (client.rmm_pro_id = {$per
             $keyNumbers['patientsWithoutCoverageInformation'] = DB::select(DB::raw("
 SELECT count(DISTINCT (cl.id)) as cnt
 FROM client cl
-WHERE cl.shadow_pro_id IS NULL AND cl.latest_client_primary_coverage_id IS NULL -- no coverage record"
+WHERE cl.shadow_pro_id IS NULL AND cl.effective_client_primary_coverage_id IS NULL -- no coverage record"
             ))[0]->cnt;
 
             // patients pending coverage verification
             $keyNumbers['patientsPendingCoverageVerification'] = DB::select(DB::raw("
 SELECT count(DISTINCT (cl.id)) as cnt
 FROM client cl
-         LEFT JOIN client_primary_coverage cpc ON cl.latest_client_primary_coverage_id = cpc.id
+         LEFT JOIN client_primary_coverage cpc ON cl.effective_client_primary_coverage_id = cpc.id
 WHERE cl.shadow_pro_id IS NULL
-    AND (cl.latest_client_primary_coverage_id IS NOT NULL -- coverage exists, but status is null or unknown
+    AND (cl.effective_client_primary_coverage_id IS NOT NULL -- coverage exists, but status is null or unknown
     AND (
                (cpc.plan_type = 'MEDICARE' AND (cpc.is_partbprimary = 'UNKNOWN' OR cpc.is_partbprimary IS NULL))
                OR

+ 7 - 3
app/Http/Controllers/PatientController.php

@@ -8,6 +8,7 @@ use App\Models\CareMonth;
 use App\Models\Client;
 use App\Models\ClientBDTDevice;
 use App\Models\ClientInfoLine;
+use App\Models\ClientPrimaryCoverage;
 use App\Models\ClientProAccess;
 use App\Models\CompanyPro;
 use App\Models\Erx;
@@ -608,14 +609,17 @@ class PatientController extends Controller
     }
 
     public function primaryCoverageManualDeterminationModal(Request $request, Client $patient) {
+        $coverageUid = $request->get('coverageUid');
+        $coverage = ClientPrimaryCoverage::where('uid', $coverageUid)->first();
+
         if($patient->latestClientPrimaryCoverage->plan_type === 'MEDICARE'){
-            return view('app.patient.primary-coverage-manual-determination-medicare-modal', compact('patient'));
+            return view('app.patient.primary-coverage-manual-determination-medicare-modal', compact('patient', 'coverage'));
         }
         if($patient->latestClientPrimaryCoverage->plan_type === 'MEDICAID'){
-            return view('app.patient.primary-coverage-manual-determination-medicaid-modal', compact('patient'));
+            return view('app.patient.primary-coverage-manual-determination-medicaid-modal', compact('patient', 'coverage'));
         }
         if($patient->latestClientPrimaryCoverage->plan_type === 'COMMERCIAL'){
-            return view('app.patient.primary-coverage-manual-determination-commercial-modal', compact('patient'));
+            return view('app.patient.primary-coverage-manual-determination-commercial-modal', compact('patient', 'coverage'));
         }
 
         return "Plan Type is missing!";

+ 5 - 5
app/Http/Controllers/PracticeManagementController.php

@@ -167,7 +167,7 @@ SELECT effective_date, count(*), sum(number_of_units) as units FROM bill WHERE c
         if($zero_deductible){
             $rows = $rows->whereHas('client', function($clientQuery){
                 return $clientQuery->where('client_engagement_status_category','<>' ,'DUMMY')
-                ->whereHas('latestClientPrimaryCoverage', function($lcpcQuery){
+                ->whereHas('effectiveClientPrimaryCoverage', function($lcpcQuery){
                     return $lcpcQuery->where('auto_medicare_mpb_deductible', 0);
                 });
             });
@@ -588,10 +588,10 @@ SELECT effective_date, count(*), sum(number_of_units) as units FROM bill WHERE c
 
         $sql = "SELECT cl.uid, cl.name_first, cl.name_last FROM client cl ";
 
-        $joinClause = 'LEFT JOIN client_primary_coverage cpc ON cl.latest_client_primary_coverage_id = cpc.id ';
-        $withoutCondition = "cl.latest_client_primary_coverage_id IS NULL";
+        $joinClause = 'LEFT JOIN client_primary_coverage cpc ON cl.effective_client_primary_coverage_id = cpc.id ';
+        $withoutCondition = "cl.effective_client_primary_coverage_id IS NULL";
         $pendingCondition = "
-(cl.latest_client_primary_coverage_id IS NOT NULL -- coverage exists, but status is null or unknown
+(cl.effective_client_primary_coverage_id IS NOT NULL -- coverage exists, but status is null or unknown
     AND (
                (cpc.plan_type = 'MEDICARE' AND (cpc.is_partbprimary = 'UNKNOWN' OR cpc.is_partbprimary IS NULL))
                OR
@@ -3863,7 +3863,7 @@ ORDER BY c.name_last, c.name_first
             row_to_json(lmcpc_payer.*) as latest_manual_client_primary_coverage_payer
             ";
         $from = "FROM client AS c
-            LEFT JOIN client_primary_coverage lcpc on c.latest_client_primary_coverage_id = lcpc.id
+            LEFT JOIN client_primary_coverage lcpc on c.effective_client_primary_coverage_id = lcpc.id
             LEFT JOIN client_primary_coverage lacpc on c.latest_auto_refresh_client_primary_coverage_id = lacpc.id
             LEFT JOIN client_primary_coverage lmcpc on c.latest_manual_client_primary_coverage_id = lmcpc.id
             LEFT JOIN payer lmcpc_payer on lmcpc.commercial_payer_id = lmcpc_payer.id

+ 5 - 7
app/Models/Client.php

@@ -20,6 +20,10 @@ class Client extends Model
             ->orderBy('created_at', 'desc');
     }
 
+    
+    public function effectiveClientPrimaryCoverage(){
+        return $this->hasOne(ClientPrimaryCoverage::class, 'id', 'effective_client_primary_coverage_id');
+    }
     public function latestClientPrimaryCoverage(){
         return $this->hasOne(ClientPrimaryCoverage::class, 'id', 'latest_client_primary_coverage_id');
     }
@@ -889,13 +893,7 @@ ORDER BY m.ts DESC
 
     public function getPrimaryCoverage()
     {
-        // try the latest manual coverage
-        $coverage = $this->latestManualClientPrimaryCoverage;
-        if (!$coverage) {
-            // try the latest auto coverage
-            $coverage = $this->latestAutoRefreshClientPrimaryCoverage;
-        }
-        return $coverage;
+        return $this->effectiveClientPrimaryCoverage;
     }
 
     // return value will be YES, NO or UNKNOWN

+ 3 - 0
app/Models/ClientPrimaryCoverage.php

@@ -83,4 +83,7 @@ class ClientPrimaryCoverage extends Model
     public function autoMedicareResult(){
         return $this->hasOne(MedicareResult::class, 'id', 'auto_medicare_result_id');
     }
+    public function autoCommercialMoreSpecificPayer(){
+        return $this->hasOne(Payer::class, 'id', 'auto_commercial_more_specific_payer_id');
+    }
 }

+ 284 - 0
coverage_spec_april_29_2022.txt

@@ -0,0 +1,284 @@
+Determine which client->primaryCoverage to use 
+
+if there is latest_manual_client_primary_coverage_id  and its not cancelled use it 
+else:
+    if there is latest_auto_refresh_client_primary_coverage_id and latest_new_client_primary_coverage_id use the latest 
+    else use whichever is there 
+    else
+        no coverage 
+
+TEST CASE
+    - create a new client 
+    - add manual coverage 
+    - cancel manual coverage 
+    - add new coverage 
+    - auto refresh the new coverage 
+    - add another new 
+
+
+=====================
+- add new (automatically when you create a client ), or when you go Primary Coverage -> Add +
+- go  primary coverage, on an exising coverage, do manual determination 
+- go to primary coverage, on an existing coverage, click refresh 
+
+
+client->getPrimaryCoverage(); //Already done 
+TODO: use this everywhere on the ui NO $client->latestClientPrimaryCoverage
+
+1. header blade 
+2. thin blade to be used for tables
+
+How to display on the header and table columns
+- is client covered  
+        $coverage->is_covered
+        - Medicare 
+            IF AUTO/NEW
+                autoMedicareIsPartBActive;
+                autoMedicareIsPartBPrimary;
+                autoMedicareIsPartCActive;
+                autoMedicareIsInpatient;
+                autoMedicareIsHospiceOrHomeHealth;
+                autoMedicareMpbRemaining
+            IF MANUAL 
+                manualDeterminationCategory
+                manualMedicareIsPartBActive
+                manualMedicareIsPartBPrimary
+                manualMedicareIsPartCActive
+                manualMedicareIsInpatient
+                manualMedicareIsHospiceOrHomeHealth
+                manualMedicareIsMsp
+                manualMedicareMspMemo
+        - Commercial
+                commercialPayerUid;
+                commercialPayerName;
+                **commercialMemberIdentifier;
+                **commercialGroupNumber;
+                **mcrNumber;
+                mcdPayerName;
+                **mcdNumber;
+            IF AUTO/NEW
+                autoCommercialIsMatchFound;
+                autoCommercialMoreSpecificPayerId; //gives official commerical name 
+                if has medicare 
+                    autoMedicareIsMatchFound
+                    autoMedicareIsPartBActive;
+                    autoMedicareIsPartBPrimary;
+                    autoMedicareIsPartCActive;
+                    autoMedicareIsInpatient;
+                    autoMedicareIsHospiceOrHomeHealth;
+                    mpbRemaining 
+                if has medicaid 
+                    autoMedicaidIsMatchFound
+
+            IF MANUAL 
+                manualDeterminationCategory
+                manualCommercialIsMatched
+                if has medicare 
+                    manualMedicareIsMatched
+                    manualMedicareIsPartBActive
+                    manualMedicareIsPartBPrimary
+                    manualMedicareIsPartCActive
+                    manualMedicareIsInpatient
+                    manualMedicareIsHospiceOrHomeHealth
+                    manualMedicareIsMsp
+                    manualMedicareMspMemo
+                if has medicaid 
+                    manualMedicaidIsMatched;
+
+        - Medicaid 
+            mcdPayerName;
+		    mcdNumber;
+            IF AUTO/NEW
+                autoMedicaidIsMatchFound
+            IF MANUAL
+                manualDeterminationCategory
+                manualMedicareIsMatched
+
+
+ 
+    latest_auto_refresh_client_primary_coverage_id //latest after refresh
+    latest_client_primary_coverage_id //lastest after manual or refresh
+    latest_manual_client_primary_coverage_id //latest after manual
+    latest_new_client_primary_coverage_id /latest after a client has just been created, always the latest client_primary_coverage, 
+
+How to display on client primary coverage section
+on coverage section show 3 tabs with all the columns 
+    latest_manual_client_primary_coverage_id //latest after manual
+    latest_auto_refresh_client_primary_coverage_id //latest after refresh
+    latest_new_client_primary_coverage_id
+- Highlight the one that is currently in use 
+
+auto_medicare_detail_json
+auto_commercial_detail_json
+auto_medicaid_detail_json
+
+
+
+client 
+    is_hospice
+    is_mcn_valid_number
+    is_medicare_advantage
+    is_part_b_primary
+    mcn
+    mcn_address_city
+    mcn_address_state
+    mcn_address_street_line1
+    mcn_address_street_line2
+    mcn_address_zip
+    mcn_error_details
+    mcn_follow_up_action_code
+    mcn_follow_up_action_description
+    mcn_reject_reason_code
+    mcn_reject_reason_description
+    mcn_response_detail
+    medicare_advantage_plan
+    mother_maiden_name
+    was_medicare_validation_successful
+    is_coverage_manually_verified
+    coverage_manual_verification_memo
+    latest_eligible_refresh_id
+    latest_eligible_refresh_at
+    mpb_active
+    mpb_start_date
+    mpb_end_date
+    mpb_deductible
+    mpb_remaining
+    mpb_insurance_type
+    mpb_insurance_type_label
+    mpb_coinsurance_percent
+    mpb_info_valid_until
+    mpb_info_valid_till
+    mpb_last_refreshed_atpayer_name
+    payer_name
+    payer_member_id
+    non_mc_primary_payer_id
+    non_mc_secondary_payer_id
+    latest_auto_refresh_client_primary_coverage_id
+    latest_client_primary_coverage_id
+    latest_manual_client_primary_coverage_id
+    latest_new_client_primary_coverage_id
+    temporary_outsider_new_client_primary_coverage_id
+    is_auto_part_b_primary
+
+
+
+client_primary_coverage
+    client_id
+    creation_strategy
+    auto_refresh_of_client_primary_coverage_id
+    manual_determination_of_client_primary_coverage_id
+    plan_type
+    is_partbprimary
+    is_manually_determined
+    is_entry_error
+    subscriber_name_first
+    subscriber_name_last
+    subscriber_sex
+    subscriber_dob
+    date_of_service
+    auto_medicare_is_partbprimary
+    auto_medicare_is_partbactive
+    auto_medicare_is_partcactive
+    auto_medicare_is_inpatient
+    auto_medicare_is_hospice_or_home_health
+    auto_medicare_is_msp
+    auto_medicare_msp_memo
+    auto_medicare_mpb_start_date
+    auto_medicare_mpb_end_date
+    auto_medicare_mpb_deductible
+    auto_medicare_mpb_remaining
+    auto_medicare_mpb_insurance_type
+    auto_medicare_mpb_insurance_type_label
+    auto_medicare_mpb_coinsurance_percent
+    auto_medicare_mpb_info_valid_until
+    auto_medicare_mpb_info_valid_till
+    auto_medicare_mpb_last_refreshed_at
+    was_successful
+    reject_reason_code
+    reject_reason_description
+    follow_up_action_code
+    follow_up_action_description
+    details
+    is_mcn_valid_number
+    address_street_line1
+    address_street_line2
+    address_city
+    address_state
+    address_zip
+    is_hospice
+    mcn_response_detail
+    billing_address
+    reason_not_partb
+    reason_not_partbmemo
+    is_medicare_advantage
+    medicare_advantage_plan
+    mpb_active
+    mpb_start_date
+    mpb_end_date
+    mpb_deductible
+    mpb_remaining
+    mpb_insurance_type
+    mpb_insurance_type_label
+    mpb_coinsurance_percent
+    mpb_info_valid_until
+    mpb_info_valid_till
+    mpb_last_refreshed_at
+    manual_determination_strategy
+    manual_determination_category
+    manual_determination_category_memo
+    manual_medicare_is_partbprimary
+    manual_medicare_is_partbactive
+    manual_medicare_is_partcactive
+    manual_medicare_is_inpatient
+    manual_medicare_is_hospice_or_home_health
+    manual_medicare_is_msp
+    manual_medicare_msp_memo
+    auto_medicare_result_id
+    mcd_number
+    mcr_number
+    subscriber_name_middle
+    subscriber_name_suffix
+    auto_commercial_detail_json
+    auto_commercial_is_match_found
+    auto_commercial_more_specific_payer_id
+    auto_medicaid_detail_json
+    auto_medicaid_is_match_found
+    auto_medicare_is_match_found
+    commercial_member_identifier
+    commercial_payer_id
+    commercial_payer_name
+    is_partcactive
+    is_patient_subscriber
+    manual_medicaid_is_matched
+    manual_medicare_is_matched
+    mcd_payer_id
+    patient_dob
+    patient_name_first
+    patient_name_last
+    patient_name_middle
+    patient_name_suffix
+    patient_relationship_to_subscriber
+    patient_sex
+    commercial_group_number
+    auto_medicare_detail_json
+    is_covered
+    last_updated_at
+    deductible_amount
+    family_deductible
+    member_accumulated_total
+    plan_description
+    plan_effective_date
+    provider_status
+    total_family_balance
+    total_individual_balance
+    mental_health_coverage
+    telehealth_coverage
+    cancellation_memo
+    cancelled_at
+    cancelled_by_session_id
+    is_cancelled
+
+
+    medicare
+    medicaid 
+    commercial

+ 5 - 5
resources/views/app/admin/part_b_patients-table.blade.php

@@ -34,15 +34,15 @@
 					@endforeach
 				</td>
 				<td>
-					@if($patient->latestClientPrimaryCoverage)
-						{{friendly_money($patient->latestClientPrimaryCoverage->auto_medicare_mpb_remaining)}}
+					@if($patient->mpb_remaining)
+						{{friendly_money($patient->mpb_remaining)}}
 					@else 
 						No data
 					@endif	
 				</td>
 				<td>
-					@if($patient->latestClientPrimaryCoverage)
-						{{friendly_date_time($patient->latestClientPrimaryCoverage->created_at)}}
+					@if($patient->getPrimaryCoverage())
+						{{friendly_date_time($patient->getPrimaryCoverage()->created_at)}}
 					@else 
 						No data
 					@endif	
@@ -52,7 +52,7 @@
                         <a href="" start show class="">Refresh</a>
 
                         <form url="/api/clientPrimaryCoverage/refreshCoverageForMedicare" class="mcp-theme-1">
-                            <input type="hidden" name="uid" value="{{$patient->latestClientPrimaryCoverage->uid}}" class="form-control input-sm" />
+                            <input type="hidden" name="uid" value="{{$patient->getPrimaryCoverage()->uid}}" class="form-control input-sm" />
                             <div class="form-group">
                                 <p>Refresh?</p>
                             </div>

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

@@ -74,12 +74,12 @@
                     {{--<td>{{$patient->source}}</td>--}}
                 @endif
                 <td>{{$patient->mailing_address_state}}</td>
-                <td class="{{ $patient->latestClientPrimaryCoverage && $patient->latestClientPrimaryCoverage->auto_medicare_mpb_remaining === 0 ? 'deductible-zero' : '' }}">
+                <td class="{{ $patient->mpb_remaining === 0 ? 'deductible-zero' : '' }}">
                     @include('app.patient.coverage_column_renderer', ['patient'=>$patient])
                     @if(false && $performer->pro->pro_type == 'ADMIN')
-                        @if(@$patient->latestClientPrimaryCoverage->auto_medicare_mpb_remaining)
+                        @if(@$patient->mpb_remaining)
                         <small class="d-block text-sm text-muted ml-3">
-                            Deductible: <span class="font-weight-bold">{{ format_number(@$patient->latestClientPrimaryCoverage->auto_medicare_mpb_remaining)}}</span>
+                            Deductible: <span class="font-weight-bold">{{ format_number(@$patient->mpb_remaining)}}</span>
                         </small>
                         @endif
                     @endif 
@@ -87,7 +87,7 @@
 		@if($performer->pro->pro_type == 'ADMIN')
 		<td>
                         <small class="d-block text-sm text-muted">
-                            <span class="font-weight-bold">{{ format_number(@$patient->latestClientPrimaryCoverage->auto_medicare_mpb_remaining)}}</span>
+                            <span class="font-weight-bold">{{ format_number(@$patient->mpb_remaining)}}</span>
                         </small>
 		</td>
 		@endif

+ 2 - 0
resources/views/app/patient/care-month/dashboard.blade.php

@@ -1370,6 +1370,7 @@
                     <div class="">
                         <div class="d-flex align-items-center mb-2">
                             <p class="font-weight-bold m-0">Claims</p>
+                            @include('app.patient.care-month.refresh-suggestions-json')
                             @include('app/patient/care-month/_create-claim')
                             <div class="ml-auto">
                                 <select class="form-control form-control-sm"
@@ -1728,6 +1729,7 @@
                 @else
                     <div class="d-flex">
                         <p class="font-weight-bold mb-0">No claims in this care month</p>
+                        @include('app.patient.care-month.refresh-suggestions-json')
                         @include('app/patient/care-month/_create-claim')
                     </div>
                 @endif

+ 17 - 0
resources/views/app/patient/care-month/refresh-suggestions-json.blade.php

@@ -0,0 +1,17 @@
+@if($pro->pro_type === 'ADMIN')
+<div class="d-flex align-items-center">
+    <span class="d-block ml-2" moe>
+        <a class="text-primary" href="" show start><i class="fas fa-sync" title="Refresh suggestions"></i></a>
+        <form url="api/careMonth/refreshSuggestionJson">
+            <input type="hidden" name="uid" value="{{$careMonth->uid}}">
+            <div class="form-group">
+                <label>Refresh suggestion?</label>
+            </div>
+            <div class="mb-0">
+                <button class="btn btn-success btn-sm" submit>Submit</button>
+                <button class="btn btn-default border btn-sm" cancel>Cancel</button>
+            </div>
+        </form>
+    </span>
+</div>
+@endif

+ 2 - 2
resources/views/app/patient/client-primary-coverages.blade.php

@@ -5,8 +5,8 @@
     <div class="mb-3 border rounded bg-light p-2">
         <div class="mb-2">
             Latest Client Primary Coverage:
-            @if($patient->latestClientPrimaryCoverage)
-                <b>{{$patient->latestClientPrimaryCoverage->plan_type}}</b> (Member ID: {{$patient->latestClientPrimaryCoverage->payer_member_identifier}})
+            @if($patient->getPrimaryCoverage())
+                <b>{{$patient->getPrimaryCoverage()->plan_type}}</b> (Member ID: {{$patient->getPrimaryCoverage()->payer_member_identifier}})
             @else
                 -
             @endif

+ 193 - 174
resources/views/app/patient/coverage-status.blade.php

@@ -1,205 +1,224 @@
+<?php
+  $coverage = $patient->getPrimaryCoverage();
+?>
+
 <div class="table-responsive">
-    @php
-        $coverage = $patient->latestClientPrimaryCoverage;
-        $mcnDetails = json_decode($patient->mcn_response_detail ?? null);
-    @endphp
-    @if(!$coverage)
-        <table class="table table-sm table-bordered mb-0">
+   @if(!$coverage)
+      <table class="table table-sm table-bordered mb-0">
           <tr>
             <td>
               <b>No coverage info!</b>
             </td>
           </tr>
         </table>
-    @elseif($coverage->plan_type === 'MEDICARE')
-      @if($coverage->creation_strategy == 'NEW' || $coverage->creation_strategy == 'AUTO_REFRESH')
-      <table class="table table-sm table-bordered mb-0">
-        <tr>
-          <td class="font-weight-bold">Medicare Part B<br>(Primary)</td>
-          <td>
-            @if($mcnDetails && $mcnDetails->plan_details)
-            <span class="font-weight-bold">{{ $mcnDetails->plan_details->MC->payer_name }}</span> <br>
-              @if($mcnDetails->plan_details && $mcnDetails->plan_details->MC && $mcnDetails->plan_details->MC->contacts)
-	      @foreach($mcnDetails->plan_details->MC->contacts as $contact)
-                @if($contact->contact_type == 'telephone')
-                  <a href="tel:{{ $contact->contact_value }}"><b><i class="fas fa-phone-alt"></i></b> {{ $contact->contact_value }}</a> <br>
-                @endif
-              @endforeach
-	      @endif
-            @endif
-            @if($coverage->auto_medicare_is_partbprimary == 'YES')
-              <span><i class="fas fa-check-circle text-success"></i> <b>Part B Primary:</b> YES (auto)</span> <br>
-            @elseif(!$coverage->auto_medicare_is_match_found)
-              <span><i class="fas fa-times text-danger"></i> record not found (auto)</span> <br>
-            @else
-              <span><i class="fas fa-check-circle text-success"></i> record found</span> <br>
-              <span><i class="fas fa-times text-danger"></i> <b>Part B Primary:</b> {{$coverage->auto_medicare_is_partbprimary}}</span> <br>
-              <span><b>Part B Active:</b> {{$coverage->auto_medicare_is_partbactive}}</span> <br>
-              <span><b>Part C Active:</b> {{$coverage->auto_medicare_is_partcactive}}</span>
-            @endif
-          </td>
-        </tr>
-        @if($coverage->auto_medicare_is_partbactive == 'YES' && !$coverage->auto_medicare_is_partcactive)
-        <tr>
-          <td class="font-weight-bold">Part B Deductible</td>
-          <td>{{number_format($coverage->auto_medicare_mpb_deductible, 2, '.',',') ?? '-'}}</td>
-        </tr>
-        <tr>
-          <td class="font-weight-bold">Part B Remaining</td>
-          <td>{{number_format($coverage->auto_medicare_mpb_remaining,2, '.',',') ?? '-'}}</td>
-        </tr>
-        @endif
-        @if($coverage->manual_determination_category_memo)
-        <tr>
-          <td><b>Manual Determination Memo: </b></td>
-          <td>{{$coverage->manual_determination_category_memo}}</td>
-        </tr>
-        @endif
-      </table>
-      @else
-      <!-- Manual determination -->
-      <table class="table table-sm table-bordered mb-0">
-        <tr>
-          <td class="font-weight-bold">Medicare Part B<br>(Primary)</td>
-          <td>
-            @if($mcnDetails && $mcnDetails->plan_details)
-              <span class="font-weight-bold">{{ $mcnDetails->plan_details->MC->payer_name }}</span> <br>
-              @if($mcnDetails->plan_details->MC->contacts)
-              @foreach($mcnDetails->plan_details->MC->contacts as $contact)
-                @if($contact->contact_type == 'telephone')
-                  <a href="tel:{{ $contact->contact_value }}"><b><i class="fas fa-phone-alt"></i></b> {{ $contact->contact_value }}</a> <br>
-                @endif
-              @endforeach
-              @endif
+  @else
+  <table class="table table-sm table-bordered mb-0">
+    <tr>
+      <td class="border-right-0">
+          <b>{{ $coverage->plan_type }}</b>
+          @if($coverage->is_covered == 'YES')
+            <i class="ml-1 fas fa-check-circle text-success"></i>
+          @else
+          <i class="ml-1 far fa-times-circle text-danger"></i>
+          @endif
+      </td>
+      <td class="border-left-0 text-right">
+        <b>(<i class="ml-1 fas fa-map-pin"></i>
+          @if($coverage->creation_strategy == 'NEW' || $coverage->creation_strategy == 'AUTO_REFRESH')
+          Auto
+          @else
+          Manual
+          @endif)
+        </b>
+      </td>
+    </tr>
+    @if($coverage->plan_type === 'MEDICARE')
+        <!-- Auto -->
+        @if($coverage->creation_strategy == 'NEW' || $coverage->creation_strategy == 'AUTO_REFRESH')
+          <tr>
+            <td class="text-secondary">Matched</td>
+            <td>{{ $coverage->auto_medicare_is_match_found ? 'YES':'NO' }}</td>
+          </tr>
+          <tr class="{{!$coverage->auto_medicare_is_partbactive ? 'd-none' : ''}}">
+            <td class="text-secondary">Part B Active</td>
+            <td>{{ $coverage->auto_medicare_is_partbactive }}</td>
+          </tr>
+          <tr class="{{!$coverage->auto_medicare_is_partbprimary ? 'd-none' : ''}}">
+            <td class="text-secondary">Part B Primary</td>
+            <td>{{ $coverage->auto_medicare_is_partbprimary }}</td>
+          </tr>
+          <tr class="{{!$coverage->auto_medicare_is_partcactive ? 'd-none' : ''}}">
+            <td class="text-secondary">Part C Active</td>
+            <td>{{ $coverage->auto_medicare_is_partcactive }}</td>
+          </tr>
+          @if($coverage->auto_medicare_is_partcactive)
+            <?php   $detailJsonArray = json_decode($coverage->auto_medicare_detail_json, true); ?>
+            @if(isset($detailJsonArray['plan_details']['MC']))
+              <tr>
+                  <td class="text-secondary">MC Payer</td>
+                  <td><span class="coverage-payer-name" title="{{@$detailJsonArray['plan_details']['MC']['payer_name']}}">{{ @$detailJsonArray['plan_details']['MC']['payer_name'] }}</span></td>
+              </tr>
             @endif
-
-            @if($coverage->manual_medicare_is_partbprimary == 'YES')
-              <span><i class="fas fa-check-circle text-success"></i> <b>Part B Primary:</b> YES ({{strtolower(implode(' ', explode('_', strtolower(implode(' ', explode('_', $coverage->manual_determination_strategy))))))}})</span> <br>
-            @elseif($coverage->manual_medicare_is_matched == 'NO')
-              <span><i class="fas fa-times text-danger"></i> record not found ({{strtolower(implode(' ', explode('_', $coverage->manual_determination_strategy)))}})</span> <br>
-            @else
-              <span><i class="fas fa-check-circle text-success"></i> record found</span> <br>
-              <span><i class="fas fa-times text-danger"></i> <b>Part B Primary:</b> {{$coverage->manual_medicare_is_partbprimary}}</span> <br>
-              <span><b>Part B Active:</b> {{$coverage->manual_medicare_is_partbactive}}</span> <br>
-              @if($coverage->manual_medicare_is_partcactive)
-              <span><b>Part C Active:</b> {{$coverage->manual_medicare_is_partcactive}}</span>
-              @endif
-              @endif
-          </td>
-        </tr>
-        @if($coverage->auto_medicare_is_partbactive && !$coverage->manual_medicare_is_partcactive)
-        <tr>
-          <td class="font-weight-bold">Part B Deductible</td>
-          <td>{{number_format($coverage->auto_medicare_mpb_deductible,2,'.',',') ?? '-'}}</td>
-        </tr>
-        <tr>
-          <td class="font-weight-bold">Part B Remaining</td>
-          <td>{{number_format($coverage->auto_medicare_mpb_remaining, 2, '.',',') ?? '-'}}</td>
-        </tr>
-        @endif
-        @if($coverage->manual_determination_category_memo)
-        <tr>
-          <td><b>Manual Determination Memo: </b></td>
-          <td>{{$coverage->manual_determination_category_memo}}</td>
-        </tr>
+          @endif
+        @else
+        <!-- Manual -->
+          <tr>
+            <td class="text-secondary">Matched</td>
+            <td>{{ $coverage->manual_medicare_is_matched ?? 'UNKNOWN' }}</td>
+          </tr>
+          <tr>
+            <td class="text-secondary">Category</td>
+            <td>{{ $coverage->manual_determination_category }}</td>
+          </tr>
+          <tr class="{{!$coverage->manual_medicare_is_partbactive ? 'd-none' : ''}}">
+            <td class="text-secondary">Part B Active</td>
+            <td>{{ $coverage->manual_medicare_is_partbactive }}</td>
+          </tr>
+          <tr class="{{!$coverage->manual_medicare_is_partbprimary ? 'd-none' : ''}}">
+            <td class="text-secondary">Part B Primary</td>
+            <td>{{ $coverage->manual_medicare_is_partbprimary }}</td>
+          </tr>
+          <tr class="{{!$coverage->manual_medicare_is_partcactive ? 'd-none' : ''}}">
+            <td class="text-secondary">Part C Active</td>
+            <td>{{ $coverage->manual_medicare_is_partcactive }}</td>
+          </tr>         
+          <tr class="{{!$coverage->manual_medicare_is_msp ? 'd-none' : ''}}">
+            <td class="text-secondary">Msp</td>
+            <td>{{ $coverage->manual_medicare_is_msp }}</td>
+          </tr>
+          <tr class="{{!$coverage->manual_medicare_msp_memo ? 'd-none' : ''}}">
+            <td class="text-secondary">Msp Memo</td>
+            <td>{{ $coverage->manual_medicare_msp_memo }}</td>
+          </tr>
         @endif
-      </table>
-      @endif
-
     @elseif($coverage->plan_type === 'MEDICAID')
-      @if($coverage->creation_strategy == 'NEW' || $coverage->creation_strategy == 'AUTO_REFRESH')
-      <table class="table table-sm table-bordered mb-0">
         <tr>
-          <td class="font-weight-bold">Medicaid<br>(Primary):</td>
-          <td>
-            <span class="coverage-payer-name" title="{{$coverage->mcdPayer->name ?? '-'}}"><b>{{$coverage->mcdPayer->name ?? '-'}}</b></span> <br>
-            <span><i class="fas fa-hourglass-half text-warning"></i> Pending Validation</span> <br>
-          </td>
+          <td class="text-secondary">Medicaid Payer</td>
+          <td><span class="coverage-payer-name" title="{{$coverage->mcdPayer ? $coverage->mcdPayer->name :'--'}}">{{ $coverage->mcdPayer ? $coverage->mcdPayer->name :'--' }}</span></td>
         </tr>
+        <!-- Auto -->
+        @if($coverage->creation_strategy == 'NEW' || $coverage->creation_strategy == 'AUTO_REFRESH')
+            <tr>
+              <td class="text-secondary">Matched</td>
+              <td>{{ $coverage->auto_medicaid_is_match_found ? 'YES':'NO' }}</td>
+            </tr>
+        @else
+        <!-- Manual -->
+              <tr>
+                <td class="text-secondary">Category</td>
+                <td>{{ $coverage->manual_determination_category }}</td>
+              </tr>
+              <tr>
+                <td class="text-secondary">Matched</td>
+                <td>{{ $coverage->manual_medicare_is_matched }}</td>
+              </tr>
+        @endif
+    @elseif($coverage->plan_type === 'COMMERCIAL')
         <tr>
-          <td class="font-weight-bold">Date Created:</td>
-          <td><span>{{date_format($coverage->created_at, 'm/d/Y')}}</span></td>
+          <td colspan="2"><span>{{ $coverage->payer ? $coverage->payer->name : '--' }}</span></td>
         </tr>
-        @if($coverage->manual_determination_category_memo)
+        @if($coverage->mcdPayer)
         <tr>
-          <td><b>Manual Determination Memo: </b></td>
-          <td>{{$coverage->manual_determination_category_memo}}</td>
+          <td class="text-secondary">Medicaid Payer</td>
+          <td><span class="coverage-payer-name" title="{{$coverage->mcdPayer ? $coverage->mcdPayer->name :'--'}}">{{ $coverage->mcdPayer ? $coverage->mcdPayer->name :'--' }}</span></td>
         </tr>
         @endif
-      </table>
-      @else
-        <table class="table table-sm table-bordered mb-0">
+        <!-- Auto -->
+        @if($coverage->creation_strategy == 'NEW' || $coverage->creation_strategy == 'AUTO_REFRESH')
           <tr>
-            <td class="font-weight-bold">Medicaid<br>(Primary):</td>
-            <td>
-              <span class="coverage-payer-name" title="{{$coverage->mcd_payer_name ?? '-'}}"><b>{{$coverage->mcd_payer_name ?? '-'}}</b></span> <br>
-              @if($coverage->manual_determination_category == 'COVERED')
-              <span><i class="fas fa-check-circle text-success"></i></span>
-              @elseif($coverage->manual_determination_category == 'NOT_COVERED')
-              <span><i class="fas fa-check-circle text-success"></i> record found</span> <br>
-              <span><i class="fas fa-times text-danger"></i> not covered ({{strtolower(implode(' ', explode('_', $coverage->manual_determination_strategy)))}})</span>
-              @elseif($coverage->manual_determination_category == 'INVALID')
-              <span><i class="fas fa-times text-danger"></i> record not found ({{strtolower(implode(' ', explode('_', $coverage->manual_determination_strategy)))}})</span>
-              @else
-              <span><i class="fas fa-hourglass-half text-warning"></i> pending ({{strtolower(implode(' ', explode('_', $coverage->manual_determination_strategy)))}})</span>
-              @endif
-            </td>
-          </tr>
-          @if($coverage->manual_determination_category_memo)
-          <tr>
-            <td><b>Manual Determination Memo: </b></td>
-            <td>{{$coverage->manual_determination_category_memo}}</td>
+            <td class="text-secondary">Commercial Matched</td>
+            <td>{{ $coverage->auto_commercial_is_match_found ? 'YES':'NO' }}</td>
           </tr>
+          @if($coverage->autoCommercialMoreSpecificPayer)
+              <tr>
+                <td colspan="2"><span>{{ $coverage->autoCommercialMoreSpecificPayer->name }}</span></td>
+              </tr>
           @endif
-        </table>
-      @endif
-
-    @elseif($coverage->plan_type === 'COMMERCIAL')
-      @if($coverage->creation_strategy == 'NEW' || $coverage->creation_strategy == 'AUTO_REFRESH')
-      <table class="table table-sm table-bordered mb-0">
-        <tr>
-          <td class="font-weight-bold">Commercial<br>(Primary):</td>
-          <td>
-            <span class="coverage-payer-name" title="{{$coverage->payer->name ?? '-'}}"><b>{{$coverage->payer->name ?? '-'}}</b></span> <br>
-            <span><i class="fas fa-hourglass-half text-warning"></i> Pending Validation</span> <br>
-          </td>
-        </tr>
+          @if($coverage->mcr_number)
+            <tr>
+              <td class="text-secondary">Medicare Matched</td>
+              <td>{{ $coverage->auto_medicare_is_match_found ? 'YES':'NO' }}</td>
+            </tr>
+            <tr class="{{!$coverage->auto_medicare_is_partbactive ? 'd-none' : ''}}">
+              <td class="text-secondary">Part B Active</td>
+              <td>{{ $coverage->auto_medicare_is_partbactive }}</td>
+            </tr>
+            <tr class="{{!$coverage->auto_medicare_is_partbprimary ? 'd-none' : ''}}">
+              <td class="text-secondary">Part B Primary</td>
+              <td>{{ $coverage->auto_medicare_is_partbprimary }}</td>
+            </tr>
+            <tr class="{{!$coverage->auto_medicare_is_partcactive ? 'd-none' : ''}}">
+              <td class="text-secondary">Part C Active</td>
+              <td>{{ $coverage->auto_medicare_is_partcactive }}</td>
+            </tr>
+            @if($coverage->auto_medicare_is_partcactive)
+              <?php   $detailJsonArray = json_decode($coverage->auto_medicare_detail_json, true); ?>
+              @if(isset($detailJsonArray['plan_details']['MC']))
+                <tr>
+                    <td class="text-secondary">MC Payer Name</td>
+                    <td><span class="coverage-payer-name" title="{{@$detailJsonArray['plan_details']['MC']['payer_name']}}">{{ @$detailJsonArray['plan_details']['MC']['payer_name'] }}</span></td>
+                </tr>
+              @endif
+            @endif
+          @endif
+          @if($coverage->mcdPayer)
+            <tr>
+              <td class="text-secondary">Medicaid Matched</td>
+              <td>{{ $coverage->auto_medicaid_is_match_found ? 'YES':'NO' }}</td>
+            </tr>
+            <tr>
+              <td class="text-secondary">MCD Payer</td>
+              <td><span class="coverage-payer-name" title="{{$coverage->mcdPayer->name}}">{{ $coverage->mcdPayer->name }}</span></td>
+            </tr>
+          @endif
+      @else
+      <!-- Manual -->
         <tr>
-          <td class="font-weight-bold">Date Created:</td>
-          <td><span>{{date_format($coverage->created_at, 'm/d/Y')}}</span></td>
+          <td class="text-secondary">Category</td>
+          <td>{{ $coverage->manual_determination_category }}</td>
         </tr>
-        @if($coverage->manual_determination_category_memo)
         <tr>
-          <td><b>Manual Determination Memo: </b></td>
-          <td>{{$coverage->manual_determination_category_memo}}</td>
+          <td class="text-secondary">Commercial Matched</td>
+          <td>{{ $coverage->manual_commercial_is_matched }}</td>
         </tr>
-        @endif
-      </table>
-      @else
-        <table class="table table-sm table-bordered mb-0">
+        @if($coverage->mcr_number)
           <tr>
-            <td class="font-weight-bold">Commercial<br>(Primary):</td>
-            <td>
-              <span class="coverage-payer-name" title="{{$coverage->payer->name ?? '-'}}"><b>{{$coverage->payer->name ?? '-'}}</b></span> <br>
-              @if($coverage->manual_determination_category == 'COVERED')
-              <span><i class="fas fa-check-circle text-success"></i></span>
-              @elseif($coverage->manual_determination_category == 'NOT_COVERED')
-              <span><i class="fas fa-check-circle text-success"></i> record found</span> <br>
-              <span><i class="fas fa-times text-danger"></i> not covered ({{strtolower(implode(' ', explode('_', $coverage->manual_determination_strategy)))}})</span>
-              @elseif($coverage->manual_determination_category == 'INVALID')
-              <span><i class="fas fa-times text-danger"></i> record not found ({{strtolower(implode(' ', explode('_', $coverage->manual_determination_strategy)))}})</span>
-              @else
-              <span><i class="fas fa-hourglass-half text-warning"></i> pending ({{strtolower(implode(' ', explode('_', $coverage->manual_determination_strategy)))}})</span>
-              @endif
-            </td>
+            <td class="text-secondary">Medicare Matched</td>
+            <td>{{ $coverage->manual_medicare_is_matched }}</td>
           </tr>
-          @if($coverage->manual_determination_category_memo)
+          <tr class="{{!$coverage->manual_medicare_is_partbactive ? 'd-none' : ''}}">
+            <td class="text-secondary">Part B Active</td>
+            <td>{{ $coverage->manual_medicare_is_partbactive }}</td>
+          </tr>
+          <tr class="{{!$coverage->manual_medicare_is_partbprimary ? 'd-none' : ''}}">
+            <td class="text-secondary">Part B Primary</td>
+            <td>{{ $coverage->manual_medicare_is_partbprimary }}</td>
+          </tr>
+          <tr class="{{!$coverage->manual_medicare_is_partcactive ? 'd-none' : ''}}">
+            <td class="text-secondary">Part C Active</td>
+            <td>{{ $coverage->manual_medicare_is_partcactive }}</td>
+          </tr>
+          <tr class="{{!$coverage->manual_medicare_is_msp ? 'd-none' : ''}}">
+            <td class="text-secondary">Msp</td>
+            <td>{{ $coverage->manual_medicare_is_msp }}</td>
+          </tr>
+          <tr class="{{!$coverage->manual_medicare_msp_memo ? 'd-none' : ''}}">
+            <td class="text-secondary">Msp Memo</td>
+            <td>{{ $coverage->manual_medicare_msp_memo }}</td>
+          </tr>
+        @endif
+        @if($coverage->mcdPayer)
           <tr>
-            <td><b>Manual Determination Memo: </b></td>
-            <td>{{$coverage->manual_determination_category_memo}}</td>
+            <td class="text-secondary">Medicaid Matched</td>
+            <td>{{ $coverage->manual_medicaid_is_matched }}</td>
           </tr>
-          @endif
-        </table>
+          <tr>
+              <td class="text-secondary">MCD Payer</td>
+              <td><span class="coverage-payer-name" title="{{$coverage->mcdPayer->name}}">{{ $coverage->mcdPayer->name }}</span></td>
+            </tr>
+        @endif
       @endif
     @endif
+  </table>
+   @endif
 </div>

+ 205 - 0
resources/views/app/patient/coverage-status_depricated.blade.php

@@ -0,0 +1,205 @@
+<div class="table-responsive">
+    @php
+        $coverage = $patient->getPrimaryCoverage();
+        $mcnDetails = json_decode($patient->mcn_response_detail ?? null);
+    @endphp
+    @if(!$coverage)
+        <table class="table table-sm table-bordered mb-0">
+          <tr>
+            <td>
+              <b>No coverage info!</b>
+            </td>
+          </tr>
+        </table>
+    @elseif($coverage->plan_type === 'MEDICARE')
+      @if($coverage->creation_strategy == 'NEW' || $coverage->creation_strategy == 'AUTO_REFRESH')
+      <table class="table table-sm table-bordered mb-0">
+        <tr>
+          <td class="font-weight-bold">Medicare Part B<br>(Primary)</td>
+          <td>
+            @if($mcnDetails && $mcnDetails->plan_details)
+            <span class="font-weight-bold">{{ $mcnDetails->plan_details->MC->payer_name }}</span> <br>
+              @if($mcnDetails->plan_details && $mcnDetails->plan_details->MC && $mcnDetails->plan_details->MC->contacts)
+	      @foreach($mcnDetails->plan_details->MC->contacts as $contact)
+                @if($contact->contact_type == 'telephone')
+                  <a href="tel:{{ $contact->contact_value }}"><b><i class="fas fa-phone-alt"></i></b> {{ $contact->contact_value }}</a> <br>
+                @endif
+              @endforeach
+	      @endif
+            @endif
+            @if($coverage->auto_medicare_is_partbprimary == 'YES')
+              <span><i class="fas fa-check-circle text-success"></i> <b>Part B Primary:</b> YES (auto)</span> <br>
+            @elseif(!$coverage->auto_medicare_is_match_found)
+              <span><i class="fas fa-times text-danger"></i> record not found (auto)</span> <br>
+            @else
+              <span><i class="fas fa-check-circle text-success"></i> record found</span> <br>
+              <span><i class="fas fa-times text-danger"></i> <b>Part B Primary:</b> {{$coverage->auto_medicare_is_partbprimary}}</span> <br>
+              <span><b>Part B Active:</b> {{$coverage->auto_medicare_is_partbactive}}</span> <br>
+              <span><b>Part C Active:</b> {{$coverage->auto_medicare_is_partcactive}}</span>
+            @endif
+          </td>
+        </tr>
+        @if($coverage->auto_medicare_is_partbactive == 'YES' && !$coverage->auto_medicare_is_partcactive)
+        <tr>
+          <td class="font-weight-bold">Part B Deductible</td>
+          <td>{{number_format($coverage->auto_medicare_mpb_deductible, 2, '.',',') ?? '-'}}</td>
+        </tr>
+        <tr>
+          <td class="font-weight-bold">Part B Remaining</td>
+          <td>{{number_format($coverage->auto_medicare_mpb_remaining,2, '.',',') ?? '-'}}</td>
+        </tr>
+        @endif
+        @if($coverage->manual_determination_category_memo)
+        <tr>
+          <td><b>Manual Determination Memo: </b></td>
+          <td>{{$coverage->manual_determination_category_memo}}</td>
+        </tr>
+        @endif
+      </table>
+      @else
+      <!-- Manual determination -->
+      <table class="table table-sm table-bordered mb-0">
+        <tr>
+          <td class="font-weight-bold">Medicare Part B<br>(Primary)</td>
+          <td>
+            @if($mcnDetails && $mcnDetails->plan_details)
+              <span class="font-weight-bold">{{ $mcnDetails->plan_details->MC->payer_name }}</span> <br>
+              @if($mcnDetails->plan_details->MC->contacts)
+              @foreach($mcnDetails->plan_details->MC->contacts as $contact)
+                @if($contact->contact_type == 'telephone')
+                  <a href="tel:{{ $contact->contact_value }}"><b><i class="fas fa-phone-alt"></i></b> {{ $contact->contact_value }}</a> <br>
+                @endif
+              @endforeach
+              @endif
+            @endif
+
+            @if($coverage->manual_medicare_is_partbprimary == 'YES')
+              <span><i class="fas fa-check-circle text-success"></i> <b>Part B Primary:</b> YES ({{strtolower(implode(' ', explode('_', strtolower(implode(' ', explode('_', $coverage->manual_determination_strategy))))))}})</span> <br>
+            @elseif($coverage->manual_medicare_is_matched == 'NO')
+              <span><i class="fas fa-times text-danger"></i> record not found ({{strtolower(implode(' ', explode('_', $coverage->manual_determination_strategy)))}})</span> <br>
+            @else
+              <span><i class="fas fa-check-circle text-success"></i> record found</span> <br>
+              <span><i class="fas fa-times text-danger"></i> <b>Part B Primary:</b> {{$coverage->manual_medicare_is_partbprimary}}</span> <br>
+              <span><b>Part B Active:</b> {{$coverage->manual_medicare_is_partbactive}}</span> <br>
+              @if($coverage->manual_medicare_is_partcactive)
+              <span><b>Part C Active:</b> {{$coverage->manual_medicare_is_partcactive}}</span>
+              @endif
+              @endif
+          </td>
+        </tr>
+        @if($coverage->auto_medicare_is_partbactive && !$coverage->manual_medicare_is_partcactive)
+        <tr>
+          <td class="font-weight-bold">Part B Deductible</td>
+          <td>{{number_format($coverage->auto_medicare_mpb_deductible,2,'.',',') ?? '-'}}</td>
+        </tr>
+        <tr>
+          <td class="font-weight-bold">Part B Remaining</td>
+          <td>{{number_format($coverage->auto_medicare_mpb_remaining, 2, '.',',') ?? '-'}}</td>
+        </tr>
+        @endif
+        @if($coverage->manual_determination_category_memo)
+        <tr>
+          <td><b>Manual Determination Memo: </b></td>
+          <td>{{$coverage->manual_determination_category_memo}}</td>
+        </tr>
+        @endif
+      </table>
+      @endif
+
+    @elseif($coverage->plan_type === 'MEDICAID')
+      @if($coverage->creation_strategy == 'NEW' || $coverage->creation_strategy == 'AUTO_REFRESH')
+      <table class="table table-sm table-bordered mb-0">
+        <tr>
+          <td class="font-weight-bold">Medicaid<br>(Primary):</td>
+          <td>
+            <span class="coverage-payer-name" title="{{$coverage->mcdPayer->name ?? '-'}}"><b>{{$coverage->mcdPayer->name ?? '-'}}</b></span> <br>
+            <span><i class="fas fa-hourglass-half text-warning"></i> Pending Validation</span> <br>
+          </td>
+        </tr>
+        <tr>
+          <td class="font-weight-bold">Date Created:</td>
+          <td><span>{{date_format($coverage->created_at, 'm/d/Y')}}</span></td>
+        </tr>
+        @if($coverage->manual_determination_category_memo)
+        <tr>
+          <td><b>Manual Determination Memo: </b></td>
+          <td>{{$coverage->manual_determination_category_memo}}</td>
+        </tr>
+        @endif
+      </table>
+      @else
+        <table class="table table-sm table-bordered mb-0">
+          <tr>
+            <td class="font-weight-bold">Medicaid<br>(Primary):</td>
+            <td>
+              <span class="coverage-payer-name" title="{{$coverage->mcd_payer_name ?? '-'}}"><b>{{$coverage->mcd_payer_name ?? '-'}}</b></span> <br>
+              @if($coverage->manual_determination_category == 'COVERED')
+              <span><i class="fas fa-check-circle text-success"></i></span>
+              @elseif($coverage->manual_determination_category == 'NOT_COVERED')
+              <span><i class="fas fa-check-circle text-success"></i> record found</span> <br>
+              <span><i class="fas fa-times text-danger"></i> not covered ({{strtolower(implode(' ', explode('_', $coverage->manual_determination_strategy)))}})</span>
+              @elseif($coverage->manual_determination_category == 'INVALID')
+              <span><i class="fas fa-times text-danger"></i> record not found ({{strtolower(implode(' ', explode('_', $coverage->manual_determination_strategy)))}})</span>
+              @else
+              <span><i class="fas fa-hourglass-half text-warning"></i> pending ({{strtolower(implode(' ', explode('_', $coverage->manual_determination_strategy)))}})</span>
+              @endif
+            </td>
+          </tr>
+          @if($coverage->manual_determination_category_memo)
+          <tr>
+            <td><b>Manual Determination Memo: </b></td>
+            <td>{{$coverage->manual_determination_category_memo}}</td>
+          </tr>
+          @endif
+        </table>
+      @endif
+
+    @elseif($coverage->plan_type === 'COMMERCIAL')
+      @if($coverage->creation_strategy == 'NEW' || $coverage->creation_strategy == 'AUTO_REFRESH')
+      <table class="table table-sm table-bordered mb-0">
+        <tr>
+          <td class="font-weight-bold">Commercial<br>(Primary):</td>
+          <td>
+            <span class="coverage-payer-name" title="{{$coverage->payer->name ?? '-'}}"><b>{{$coverage->payer->name ?? '-'}}</b></span> <br>
+            <span><i class="fas fa-hourglass-half text-warning"></i> Pending Validation</span> <br>
+          </td>
+        </tr>
+        <tr>
+          <td class="font-weight-bold">Date Created:</td>
+          <td><span>{{date_format($coverage->created_at, 'm/d/Y')}}</span></td>
+        </tr>
+        @if($coverage->manual_determination_category_memo)
+        <tr>
+          <td><b>Manual Determination Memo: </b></td>
+          <td>{{$coverage->manual_determination_category_memo}}</td>
+        </tr>
+        @endif
+      </table>
+      @else
+        <table class="table table-sm table-bordered mb-0">
+          <tr>
+            <td class="font-weight-bold">Commercial<br>(Primary):</td>
+            <td>
+              <span class="coverage-payer-name" title="{{$coverage->payer->name ?? '-'}}"><b>{{$coverage->payer->name ?? '-'}}</b></span> <br>
+              @if($coverage->manual_determination_category == 'COVERED')
+              <span><i class="fas fa-check-circle text-success"></i></span>
+              @elseif($coverage->manual_determination_category == 'NOT_COVERED')
+              <span><i class="fas fa-check-circle text-success"></i> record found</span> <br>
+              <span><i class="fas fa-times text-danger"></i> not covered ({{strtolower(implode(' ', explode('_', $coverage->manual_determination_strategy)))}})</span>
+              @elseif($coverage->manual_determination_category == 'INVALID')
+              <span><i class="fas fa-times text-danger"></i> record not found ({{strtolower(implode(' ', explode('_', $coverage->manual_determination_strategy)))}})</span>
+              @else
+              <span><i class="fas fa-hourglass-half text-warning"></i> pending ({{strtolower(implode(' ', explode('_', $coverage->manual_determination_strategy)))}})</span>
+              @endif
+            </td>
+          </tr>
+          @if($coverage->manual_determination_category_memo)
+          <tr>
+            <td><b>Manual Determination Memo: </b></td>
+            <td>{{$coverage->manual_determination_category_memo}}</td>
+          </tr>
+          @endif
+        </table>
+      @endif
+    @endif
+</div>

+ 1 - 35
resources/views/app/patient/eligible-refreshes.blade.php

@@ -1,41 +1,7 @@
 @extends ('layouts.patient')
 
 @section('inner-content')
-    <?php
-    function toHumanReadable($name) {
-        return ucwords(preg_replace("/[^0-9a-z]/i", " ", $name));
-    }
-    function parseRender($_data) {
-        if($_data) {
-            $type = gettype($_data);
-            if(is_string($_data) || is_numeric($_data)) {
-                echo $_data;
-            }
-            else {
-                echo "<table class='table table-sm border w-100'>";
-                foreach($_data as $k => $v) {
-                    echo "<tr>";
-                    echo "<td><b class='text-secondary'>" . toHumanReadable($k) . "</b></td>";
-                    echo "<td>";
-                    if(is_object($v)) {
-                        parseRender($v);
-                    }
-                    elseif(is_array($v)) {
-                        foreach($v as $k2 => $v2) {
-                            parseRender($v2);
-                        }
-                    }
-                    else {
-                        echo $v;
-                    }
-                    echo "</td>";
-                    echo "</tr>";
-                }
-                echo "</table>";
-            }
-        }
-    }
-    ?>
+    
     <style>
         .eligible-table td {
             white-space: nowrap;

+ 2 - 0
resources/views/app/patient/note/partials/cpp-bills-claims-container.blade.php

@@ -811,6 +811,7 @@
             <div class="screen-only p-3">
             <div class="d-flex align-items-center mb-2">
                 <p class="font-weight-bold text-secondary m-0">Claims</p>
+                @include('app.patient.note.refresh-suggestions-json')
                 @include('app/patient/note/_create-claim')
                 <div class="ml-auto">
                     <select class="form-control form-control-sm"
@@ -1173,6 +1174,7 @@
         @else
             <div class="screen-only p-3 d-flex">
             <p class="font-weight-bold mb-0 text-secondary">No claims in this note</p>
+            @include('app.patient.note.refresh-suggestions-json')
             @include('app/patient/note/_create-claim')
         </div>
         @endif

+ 17 - 0
resources/views/app/patient/note/refresh-suggestions-json.blade.php

@@ -0,0 +1,17 @@
+@if($pro->pro_type === 'ADMIN')
+<div class="d-flex align-items-center">
+    <span class="d-block ml-2" moe>
+        <a class="text-primary" href="" show start><i class="fas fa-sync" title="Refresh suggestions"></i></a>
+        <form url="/api/note/refreshSuggestionJson">
+            <input type="hidden" name="uid" value="{{$note->uid}}">
+            <div class="form-group">
+                <label>Refresh suggestion?</label>
+            </div>
+            <div class="mb-0">
+                <button class="btn btn-success btn-sm" submit>Submit</button>
+                <button class="btn btn-default border btn-sm" cancel>Cancel</button>
+            </div>
+        </form>
+    </span>
+</div>
+@endif

+ 1 - 1
resources/views/app/patient/notes.blade.php

@@ -68,7 +68,7 @@
     <div class="pt-2 d-flex align-items-start">
         <h6 class="my-0 d-flex align-items-baseline w-100">
             <span class="font-weight-bold font-size-16">Notes</span>
-            @if(true || $patient->latestClientPrimaryCoverage->is_covered == 'YES')
+            @if(true || $patient->getPrimaryCoverage()->is_covered == 'YES')
                 @if($isOldClient)
                 <span class="mx-2 text-secondary">|</span>
                 <div moe>

+ 93 - 0
resources/views/app/patient/partials/coverage-information.blade.php

@@ -0,0 +1,93 @@
+<div class="mt-2 pt-2">
+    @php
+        $cpc = $coverage;
+    @endphp
+</div>
+    @if(!$cpc)
+        <div class="alert alert-info">No coverage for this client</div>
+    @else
+        <?php
+            $cpc->auto_detail_json = null;
+            $creationStrategy = $cpc->creation_strategy ?? null;
+            if($creationStrategy === 'NEW' || $creationStrategy === 'AUTO_REFRESH'){
+                if($cpc->plan_type === 'MEDICARE'){
+                   $cpc->auto_detail_json = json_decode($cpc->auto_medicare_detail_json ?? null); 
+                }
+                if($cpc->plan_type === 'MEDICID'){
+                    $cpc->auto_detail_json = json_decode($cpc->auto_medicaid_detail_json ?? null); 
+                }
+                if($cpc->plan_type === 'COMMERCIAL'){
+                    $cpc->auto_detail_json = json_decode($cpc->auto_commercial_detail_json ?? null); 
+                }
+                
+            }
+        ?>
+        <div class="d-flex align-items-center mb-2">
+            @if($cpc->is_manually_determined)
+                <div>
+                    <span class="d-inline bg-warning px-2 rounded mr-1"><i class="fas fa-map-pin"></i> Manually Determined</span> 
+                    @if($cpc->is_cancelled)
+                    <span class="mr-1 text-danger text-sm">Cancelled</span>
+                    @else
+                        @include('app.patient.partials.undo-manual-determination')
+                    @endif
+                    <span class="mx-1 text-muted text-sm">|</span>
+                </div>
+                
+            @else
+
+            @endif
+            <h1 class="mr-2 mb-0">Is Covered: {{$cpc->is_covered}}</h1>
+            @if($cpc->plan_type == 'MEDICARE')
+                @include('app.patient.primary-coverage-refresh', ['endpoint'=>'refreshCoverageForMedicare'])
+                <span class="mx-2 text-secondary text-sm">|</span>
+                <a native target="_blank"
+                   open-in-stag-popup
+                   mc-initer="manual-determination-form-{{$patient->uid}}"
+                   title="Medicare Part B (Primary)"
+                   href="/patients/view/primary-coverage-manual-determination-modal/{{$patient->uid}}?coverageUid={{ $cpc->uid }}">
+                    Manual Determination for Medicare Part B (Primary)
+                </a>
+            @endif
+            @if($cpc->plan_type == 'MEDICAID')
+                @include('app.patient.primary-coverage-refresh', ['endpoint'=>'refreshCoverageForMedicaid'])
+                <span class="mx-2 text-secondary text-sm">|</span>
+                <a native target="_blank"
+                   open-in-stag-popup
+                   mc-initer="manual-determination-form-{{$patient->uid}}"
+                   title="Medicaid (Primary)"
+                   href="/patients/view/primary-coverage-manual-determination-modal/{{$patient->uid}}?coverageUid={{ $cpc->uid }}">
+                    Manual Determination for Medicaid (Primary)
+                </a>
+            @endif
+            @if($cpc->plan_type == 'COMMERCIAL')
+                @include('app.patient.primary-coverage-refresh', ['endpoint'=>'refreshCoverageForCommercial'])
+                <span class="mx-2 text-secondary text-sm">|</span>
+                <a native target="_blank"
+                   open-in-stag-popup
+                   mc-initer="manual-determination-form-{{$patient->uid}}"
+                   title="Commercial (Primary)"
+                   href="/patients/view/primary-coverage-manual-determination-modal/{{$patient->uid}}?coverageUid={{ $cpc->uid }}">
+                    Manual Determination for Commercial (Primary)
+                </a>
+            @endif
+        </div>
+
+        <div class="mt-4 {{ $cpc->is_cancelled ? 'cpc-cancelled':'' }}">
+          <div class="row">
+            <div class="col-md-12">
+              @include('app.patient.primary-coverage-view')
+            </div>
+          </div>
+            {{--
+            @php
+            dump(json_decode($cpc->toJson(JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)));
+            @endphp
+            --}}
+            {{--
+            @php
+            dump($cpc->auto_detail_json);
+            @endphp
+            --}}
+        </div>
+    @endif

+ 1 - 1
resources/views/app/patient/primary-coverage-form.blade.php

@@ -1,6 +1,6 @@
 <?php
 	$medicaidStates = Config::get('constants.medicaid_states');
-	$cpc = $patient->latestClientPrimaryCoverage;
+	$cpc = $patient->getPrimaryCoverage();
 ?>
 	<div id="new-coverage-form-{{$patient->uid}}">
 		<div class="p-3">

+ 1 - 1
resources/views/app/patient/primary-coverage-manual-determination-commercial-modal.blade.php

@@ -1,6 +1,6 @@
 <div id="manual-determination-form-{{$patient->uid}}">
 	@php
-	$cpc = $patient->latestClientPrimaryCoverage;	
+	$cpc = $coverage;	
 	@endphp
 	
 	<div class="p-3">

+ 1 - 1
resources/views/app/patient/primary-coverage-manual-determination-medicaid-modal.blade.php

@@ -1,6 +1,6 @@
 <div id="manual-determination-form-{{$patient->uid}}">
 	@php
-	$cpc = $patient->latestClientPrimaryCoverage;
+	$cpc = $coverage;
 	@endphp
 	<div class="p-3">
 		<div class="d-flex flex-wrap">

+ 1 - 1
resources/views/app/patient/primary-coverage-manual-determination-medicare-modal.blade.php

@@ -1,6 +1,6 @@
 <div id="manual-determination-form-{{$patient->uid}}">
 	@php
-	$cpc = $patient->latestClientPrimaryCoverage;
+	$cpc = $coverage;
 	@endphp
 	<div class="p-3">
 		<div class="d-flex flex-wrap">

+ 7 - 7
resources/views/app/patient/primary-coverage-manual-determination-view-commercial.blade.php

@@ -11,7 +11,7 @@
 		<tbody>
 			<tr>
 				<td>Record Found?</td>
-				<td>{{$cpc->auto_commercial_is_match_found ? 'YES' : 'NO'}}</td>
+				<td>{{$cpc->manual_commercial_is_matched ? 'YES' : 'NO'}}</td>
 				<td>
 					<div class="form-group mb-0">
 						<p class="mb-1 text-secondary">Manual Determination Category</p>
@@ -22,7 +22,7 @@
 
 			<tr>
 				<td>Part B Active?</td>
-				<td>{{$cpc->auto_medicare_is_partbactive}}</td>
+				<td>{{$cpc->manual_medicare_is_partbactive}}</td>
 				<td>
 					<div class="form-group mb-0">
 						<p class="mb-1 text-secondary">Is Part B Active?</p>
@@ -32,7 +32,7 @@
 			</tr>
 			<tr>
 				<td>Part B Primary?</td>
-				<td>{{$cpc->auto_medicare_is_partbprimary}}</td>
+				<td>{{$cpc->manual_medicare_is_partbprimary}}</td>
 				<td>
 					<div class="form-group mb-1">
 						<p class="mb-1 text-secondary">Manual Determination Category</p>
@@ -46,10 +46,10 @@
 			</tr>
 			<tr>
 				<td>Part C Active?</td>
-				<td>{{$cpc->auto_medicare_is_partcactive}}</td>
+				<td>{{$cpc->manual_medicare_is_partcactive}}</td>
 				<td>
 					<div class="form-group mb-0">
-						<div class="alert alert-danger" v-if="(cpc.auto_medicare_is_partcactive == 'YES' && cpc.auto_medicare_is_partbprimary == 'YES')">
+						<div class="alert alert-danger" v-if="(cpc.manual_medicare_is_partcactive == 'YES' && cpc.manual_medicare_is_partbprimary == 'YES')">
 							Oops! Patient Medicare Part B Primary is set to <b>Yes</b>.
 						</div>
 						<p class="mb-1 text-secondary">Is Part C Active?</p>
@@ -59,7 +59,7 @@
 			</tr>
 			<tr>
 				<td>Inpatient?</td>
-				<td>{{$cpc->auto_medicare_is_inpatient}}</td>
+				<td>{{$cpc->manual_medicare_is_inpatient}}</td>
 				<td>
 					<div class="form-group mb-0">
 						<p class="mb-1 text-secondary">Inpatient?</p>
@@ -89,7 +89,7 @@
 			</tr>
 			<tr>
 				<td>MSP?</td>
-				<td>{{$cpc->auto_medicare_is_msp}}</td>
+				<td>{{$cpc->manual_medicare_is_msp}}</td>
 				<td>
 					<div class="form-group mb-0">
 						<p class="mb-1 text-secondary">MSP?</p>

+ 1 - 1
resources/views/app/patient/primary-coverage-manual-determination-view-medicaid.blade.php

@@ -11,7 +11,7 @@
 		<tbody>
 			<tr>
 				<td>Record Found?</td>
-				<td>{{$cpc->auto_medicaid_is_match_found ? 'YES' : 'NO'}}</td>
+				<td>{{$cpc->manual_medicaid_is_matched ? 'YES' : 'NO'}}</td>
 				<td>
 					<div class="form-group mb-0">
 						<p class="mb-1 text-secondary">Is Matched?</p>

+ 6 - 6
resources/views/app/patient/primary-coverage-manual-determination-view-medicare.blade.php

@@ -15,7 +15,7 @@
 			</tr>
 			<tr>
 				<td>Record Found?</td>
-				<td>{{$cpc->auto_medicare_is_match_found ? 'YES' : 'NO'}}</td>
+				<td>{{$cpc->manual_medicare_is_matched ? 'YES' : 'NO'}}</td>
 				<td>
 					<div class="form-group mb-0">
 						<p class="mb-1 text-secondary">Is Matched?</p>
@@ -27,7 +27,7 @@
 
 			<tr>
 				<td>Part B Active?</td>
-				<td>{{$cpc->auto_medicare_is_partbactive}}</td>
+				<td>{{$cpc->manual_medicare_is_partbactive}}</td>
 				<td>
 					<div class="form-group mb-0">
 						<p class="mb-1 text-secondary">Is Part B Active?</p>
@@ -37,7 +37,7 @@
 			</tr>
 			<tr>
 				<td>Part B Primary?</td>
-				<td>{{$cpc->auto_medicare_is_partbprimary}}</td>
+				<td>{{$cpc->manual_medicare_is_partbprimary}}</td>
 				<td>
 					<div class="form-group mb-1">
 						<p class="mb-1 text-secondary">Manual Determination Category</p>
@@ -51,7 +51,7 @@
 			</tr>
 			<tr>
 				<td>Part C Active?</td>
-				<td>{{$cpc->auto_medicare_is_partcactive}}</td>
+				<td>{{$cpc->manual_medicare_is_partcactive}}</td>
 				<td>
 					<div class="form-group mb-0">
 						<div class="alert alert-danger" v-if="cpc.auto_medicare_is_partcactive == 'YES' && cpc.auto_medicare_is_partbprimary == 'YES'">
@@ -64,7 +64,7 @@
 			</tr>
 			<tr>
 				<td>Inpatient?</td>
-				<td>{{$cpc->auto_medicare_is_inpatient}}</td>
+				<td>{{$cpc->manual_medicare_is_inpatient}}</td>
 				<td>
 					<div class="form-group mb-0">
 						<p class="mb-1 text-secondary">Inpatient?</p>
@@ -95,7 +95,7 @@
 			</tr>
 			<tr>
 				<td>MSP?</td>
-				<td>{{$cpc->auto_medicare_is_msp}}</td>
+				<td>{{$cpc->manual_medicare_is_msp}}</td>
 				<td>
 					<div class="form-group mb-0">
 						<p class="mb-1 text-secondary">MSP?</p>

+ 15 - 43
resources/views/app/patient/primary-coverage-view.blade.php

@@ -1,39 +1,3 @@
-<?php
-    function toHumanReadable($name) {
-        return ucwords(preg_replace("/[^0-9a-z]/i", " ", $name));
-    }
-    function parseRender($_data) {
-        if($_data) {
-            $type = gettype($_data);
-            if(is_string($_data) || is_numeric($_data)) {
-                echo $_data;
-            }
-            else {
-                echo "<table class='table table-sm border w-100'>";
-                foreach($_data as $k => $v) {
-                    echo "<tr>";
-                    echo "<td><b class='text-secondary'>" . toHumanReadable($k) . "</b></td>";
-                    echo "<td>";
-                    if(is_object($v)) {
-                        parseRender($v);
-                    }
-                    elseif(is_array($v)) {
-                        foreach($v as $k2 => $v2) {
-                            parseRender($v2);
-                        }
-                    }
-                    else {
-                        echo $v;
-                    }
-                    echo "</td>";
-                    echo "</tr>";
-                }
-                echo "</table>";
-            }
-        }
-    }
-?>
-
 <div class="container-fluid px-lg-0">
 	<div class="row">
 		<div class="col-lg-5">
@@ -148,6 +112,10 @@
 								<td class="text-uppercase">{{$cpc->mcr_number ?? '-'}}</td>
 							</tr>
 							
+							<tr>
+								<td>Created At</td>
+								<td class="text-uppercase">{{friendly_date_time($cpc->created_at)}}</td>
+							</tr>
 						</tbody>
 					</table>
 				</div>
@@ -300,14 +268,18 @@
 		<div class="col-lg-7">
 
 			<h4 class="font-weight-bold">Manual Determination Information</h4>
-			@if($cpc->plan_type == 'MEDICARE')
-				@include('app.patient.primary-coverage-manual-determination-view-medicare')
-			@elseif($cpc->plan_type == 'MEDICAID')
-			@include('app.patient.primary-coverage-manual-determination-view-medicaid')
-			@elseif($cpc->plan_type == 'COMMERCIAL')
-			@include('app.patient.primary-coverage-manual-determination-view-commercial')
+			@if($cpc->creation_strategy === 'MANUAL_DETERMINATION')
+				@if($cpc->plan_type == 'MEDICARE')
+					@include('app.patient.primary-coverage-manual-determination-view-medicare', ['coverage' => $patient->getPrimaryCoverage()])
+				@elseif($cpc->plan_type == 'MEDICAID')
+				@include('app.patient.primary-coverage-manual-determination-view-medicaid', ['coverage' => $patient->getPrimaryCoverage()])
+				@elseif($cpc->plan_type == 'COMMERCIAL')
+				@include('app.patient.primary-coverage-manual-determination-view-commercial', ['coverage' => $patient->getPrimaryCoverage()])
+				@else
+					No plan Type specified.
+				@endif
 			@else
-				No plan Type specified.
+				<small class="text-muted">Not manually determined.</small>
 			@endif
 		</div>
 	</div>

+ 65 - 73
resources/views/app/patient/primary-coverage.blade.php

@@ -13,86 +13,78 @@
         </a>
     </div>
 </div>
-
-<div class="mt-2 pt-2">
-    @php
-        $cpc = $patient->latestClientPrimaryCoverage;
-    @endphp
-</div>
-    @if(!$cpc)
-        <div class="alert alert-info">No coverage for this client</div>
-    @else
-        @php
-            $cpc->auto_detail_json = json_decode($cpc->auto_detail_json);
-        @endphp
-        <div class="d-flex align-items-center mb-2">
-            @if($cpc->is_manually_determined)
-                <div>
-                    <span class="d-inline bg-warning px-2 rounded mr-1"><i class="fas fa-map-pin"></i> Manually Determined</span> 
-                    @if($cpc->is_cancelled)
-                    <span class="mr-1 text-danger text-sm">Cancelled</span>
-                    @else
-                        @include('app.patient.partials.undo-manual-determination')
+<?php $clientPrimaryCoverage = $patient->getPrimaryCoverage(); ?>
+<div class="page-tabs coverage-tabs-display mt-3">
+        <div class="links">
+            @if($patient->latestNewClientPrimaryCoverage)
+                <a class="c-pointer {{ $clientPrimaryCoverage && $clientPrimaryCoverage->id == $patient->latestNewClientPrimaryCoverage->id ? 'active':'' }}" data-link="latest_new_client_primary_coverage">
+                    Latest New Client Primary Coverage
+                    @if($clientPrimaryCoverage && $clientPrimaryCoverage->id == $patient->latestNewClientPrimaryCoverage->id)
+                        <i class="fas fa-star ml-2"></i>
                     @endif
-                    <span class="mx-1 text-muted text-sm">|</span>
-                </div>
-                
-            @else
-
-            @endif
-            <h1 class="mr-2 mb-0">Is Covered: {{$cpc->is_covered}}</h1>
-            @if($cpc->plan_type == 'MEDICARE')
-                @include('app.patient.primary-coverage-refresh', ['endpoint'=>'refreshCoverageForMedicare'])
-                <span class="mx-2 text-secondary text-sm">|</span>
-                <a native target="_blank"
-                   open-in-stag-popup
-                   mc-initer="manual-determination-form-{{$patient->uid}}"
-                   title="Medicare Part B (Primary)"
-                   href="/patients/view/primary-coverage-manual-determination-modal/{{$patient->uid}}">
-                    Manual Determination for Medicare Part B (Primary)
                 </a>
             @endif
-            @if($cpc->plan_type == 'MEDICAID')
-                @include('app.patient.primary-coverage-refresh', ['endpoint'=>'refreshCoverageForMedicaid'])
-                <span class="mx-2 text-secondary text-sm">|</span>
-                <a native target="_blank"
-                   open-in-stag-popup
-                   mc-initer="manual-determination-form-{{$patient->uid}}"
-                   title="Medicaid (Primary)"
-                   href="/patients/view/primary-coverage-manual-determination-modal/{{$patient->uid}}">
-                    Manual Determination for Medicaid (Primary)
-                </a>
-            @endif
-            @if($cpc->plan_type == 'COMMERCIAL')
-                @include('app.patient.primary-coverage-refresh', ['endpoint'=>'refreshCoverageForCommercial'])
-                <span class="mx-2 text-secondary text-sm">|</span>
-                <a native target="_blank"
-                   open-in-stag-popup
-                   mc-initer="manual-determination-form-{{$patient->uid}}"
-                   title="Commercial (Primary)"
-                   href="/patients/view/primary-coverage-manual-determination-modal/{{$patient->uid}}">
-                    Manual Determination for Commercial (Primary)
+            @if($patient->latestAutoRefreshClientPrimaryCoverage)
+                <a class="c-pointer {{ $clientPrimaryCoverage && $clientPrimaryCoverage->id == $patient->latestAutoRefreshClientPrimaryCoverage->id ? 'active':'' }}" data-link="latest_auto_refresh_client_primary_coverage">
+                    Latest Auto Refresh Client Primary Coverage
+                    @if($clientPrimaryCoverage && $clientPrimaryCoverage->id == $patient->latestAutoRefreshClientPrimaryCoverage->id)
+                        <i class="fas fa-star ml-2"></i>
+                    @endif
                 </a>
             @endif
+            @if($patient->latestManualClientPrimaryCoverage)
+                <a class="c-pointer {{ $clientPrimaryCoverage && $clientPrimaryCoverage->id == $patient->latestManualClientPrimaryCoverage->id ? 'active':'' }}" data-link="latest_manual_client_primary_coverage">
+                    Latest Manual Client Primary Coverage
+                    @if($clientPrimaryCoverage && $clientPrimaryCoverage->id == $patient->latestManualClientPrimaryCoverage->id)
+                        <i class="fas fa-star ml-2"></i>
+                    @endif
+                </a>   
+            @endif     
         </div>
-
-        <div class="mt-4 {{ $cpc->is_cancelled ? 'cpc-cancelled':'' }}">
-          <div class="row">
-            <div class="col-md-12">
-              @include('app.patient.primary-coverage-view')
+        <div class="page-tab">
+            @if($patient->latestNewClientPrimaryCoverage)
+            <div tab id="latest_new_client_primary_coverage" class="{{ $clientPrimaryCoverage && $clientPrimaryCoverage->id == $patient->latestNewClientPrimaryCoverage->id ? '':'d-none' }}">
+                @include('app.patient.partials.coverage-information', ['coverage' => $patient->latestNewClientPrimaryCoverage])
             </div>
-          </div>
-            {{--
-            @php
-            dump(json_decode($cpc->toJson(JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)));
-            @endphp
-            --}}
-            {{--
-            @php
-            dump($cpc->auto_detail_json);
-            @endphp
-            --}}
+            @endif
+            @if($patient->latestAutoRefreshClientPrimaryCoverage)
+            <div tab id="latest_auto_refresh_client_primary_coverage" class="{{ $clientPrimaryCoverage && $clientPrimaryCoverage->id == $patient->latestAutoRefreshClientPrimaryCoverage->id ? '':'d-none' }}">
+                @include('app.patient.partials.coverage-information', ['coverage' => $patient->latestAutoRefreshClientPrimaryCoverage])
+            </div>
+            @endif
+            @if($patient->latestManualClientPrimaryCoverage)
+            <div tab id="latest_manual_client_primary_coverage" class="{{ $clientPrimaryCoverage && $clientPrimaryCoverage->id == $patient->latestManualClientPrimaryCoverage->id ? '':'d-none' }}">
+                @include('app.patient.partials.coverage-information', ['coverage' => $patient->latestManualClientPrimaryCoverage])
+            </div>
+            @endif
         </div>
-    @endif
 </div>
+
+<script>
+    (function($){
+        var coverageTabsComponent = {
+            initTabs: function(){
+                var section = $('.coverage-tabs-display');
+                var sectionContent = section.find('.page-tab');
+                var tabsLinks = section.find('.links a');
+
+                $.each(tabsLinks, function(i, link){
+                    $(link).click(function(evt){
+                        evt.preventDefault();
+                        var target = $(link).data('link');
+                        tabsLinks.removeClass('active');
+                        $(link).addClass('active');
+                        sectionContent.find('[tab]').addClass('d-none');
+                        sectionContent.find('#'+target).removeClass('d-none'); 
+                    });                   
+                });
+            },
+            init: function(){
+                this.initTabs();
+            }
+        };
+        coverageTabsComponent.init();
+    })(jQuery);
+</script>
+
 @endsection

+ 4 - 4
resources/views/app/practice-management/billing-report.blade.php

@@ -75,11 +75,11 @@
                             <a native target="_blank" href="/patients/view/{{$row->client_uid}}/notes/view/{{$row->note_uid}}">
                                 {{$row->clientDisplayName()}}
                             </a>
-                            @if($row->client->latestClientPrimaryCoverage )
-                                <div>Plan Type: {{$row->client->latestClientPrimaryCoverage->plan_type}}</div>
-                                @if($row->client->latestClientPrimaryCoverage->auto_medicare_is_partbprimary == 'YES')
+                            @if($row->client->getPrimaryCoverage() )
+                                <div>Plan Type: {{$row->client->getPrimaryCoverage()->plan_type}}</div>
+                                @if($row->client->getPrimaryCoverage()->auto_medicare_is_partbprimary == 'YES')
                                     <div>
-                                        Deductible: {{friendly_money($row->client->latestClientPrimaryCoverage->auto_medicare_mpb_remaining)}}
+                                        Deductible: {{friendly_money($row->client->getPrimaryCoverage()->auto_medicare_mpb_remaining)}}
                                     </div>
                                 @else 
                                     <div>

+ 2 - 2
resources/views/layouts/patient-header.blade.php

@@ -344,8 +344,8 @@ $addressParts .= implode(", ", $addressPart2);
               </span> 
             </div>
             @if($performer->pro->pro_type == 'ADMIN')
-              @if(true || @$patient->latestClientPrimaryCoverage->auto_medicare_mpb_remaining)
-                <div class="ml-2">Deductible: {{format_number(@$patient->latestClientPrimaryCoverage->auto_medicare_mpb_remaining)}} </div>
+              @if(true || @$patient->mpb_remaining)
+                <div class="ml-2">Deductible: {{format_number(@$patient->mpb_remaining)}} </div>
               @endif
             @endif 
           @endif