Browse Source

Merge branch 'dev-dashboard' into dev-vj

Vijayakrishnan 3 years ago
parent
commit
33fede2631
100 changed files with 7757 additions and 1452 deletions
  1. 123 0
      app/Http/Controllers/DnaController.php
  2. 29 64
      app/Http/Controllers/HomeController.php
  3. 133 0
      app/Http/Controllers/McpController.php
  4. 24 0
      app/Http/Controllers/PatientController.php
  5. 28 0
      app/Http/Controllers/PayerController.php
  6. 3 0
      app/Models/ClientPrimaryCoverage.php
  7. 145 1
      app/Models/Pro.php
  8. 9 1
      public/css/style.css
  9. 1 1
      public/css/yemi.css
  10. 5 0
      resources/views/app/admin/appointments.blade.php
  11. 5 0
      resources/views/app/admin/bills.blade.php
  12. 1 0
      resources/views/app/admin/dashboard/calls_memos.blade.php
  13. 1 0
      resources/views/app/admin/dashboard/erx_orders.blade.php
  14. 1 0
      resources/views/app/admin/dashboard/measurements.blade.php
  15. 1 0
      resources/views/app/admin/dashboard/messages.blade.php
  16. 1 0
      resources/views/app/admin/dashboard/notifications.blade.php
  17. 1 0
      resources/views/app/admin/dashboard/supply_orders.blade.php
  18. 5 0
      resources/views/app/admin/erx_and_orders.blade.php
  19. 5 0
      resources/views/app/admin/notes.blade.php
  20. 6 0
      resources/views/app/admin/patients.blade.php
  21. 5 0
      resources/views/app/admin/reports.blade.php
  22. 5 0
      resources/views/app/admin/supply_orders.blade.php
  23. 977 0
      resources/views/app/dashboard-admin.blade.php
  24. 977 0
      resources/views/app/dashboard-dna.blade.php
  25. 776 0
      resources/views/app/dashboard-mcp.blade.php
  26. 0 988
      resources/views/app/dashboard.blade.php
  27. 5 0
      resources/views/app/dna/appointments.blade.php
  28. 5 0
      resources/views/app/dna/bills.blade.php
  29. 0 0
      resources/views/app/dna/cancelled_appointments_pending_review.blade.php
  30. 0 0
      resources/views/app/dna/cancelled_bills_pending_review.blade.php
  31. 0 0
      resources/views/app/dna/cancelled_supply_orders_pending_review.blade.php
  32. 1 0
      resources/views/app/dna/dashboard/calls_memos.blade.php
  33. 1 0
      resources/views/app/dna/dashboard/erx_orders.blade.php
  34. 1 0
      resources/views/app/dna/dashboard/measurements.blade.php
  35. 1 0
      resources/views/app/dna/dashboard/messages.blade.php
  36. 1 0
      resources/views/app/dna/dashboard/notifications.blade.php
  37. 1 0
      resources/views/app/dna/dashboard/supply_orders.blade.php
  38. 5 0
      resources/views/app/dna/erx_and_orders.blade.php
  39. 0 0
      resources/views/app/dna/erx_and_orders_pending_signature.blade.php
  40. 0 0
      resources/views/app/dna/new_patients_awaiting_visit.blade.php
  41. 5 0
      resources/views/app/dna/notes.blade.php
  42. 0 0
      resources/views/app/dna/notes_pending_billing.blade.php
  43. 0 0
      resources/views/app/dna/notes_pending_signature.blade.php
  44. 6 0
      resources/views/app/dna/patients.blade.php
  45. 0 0
      resources/views/app/dna/patients_overdue.blade.php
  46. 0 0
      resources/views/app/dna/patients_without_appointments.blade.php
  47. 5 0
      resources/views/app/dna/reports.blade.php
  48. 0 0
      resources/views/app/dna/reports_pending_signature.blade.php
  49. 5 0
      resources/views/app/dna/supply_orders.blade.php
  50. 0 0
      resources/views/app/dna/supply_orders_pending_signature.blade.php
  51. 55 0
      resources/views/app/mcp/appointments.blade.php
  52. 100 0
      resources/views/app/mcp/appointments_filters.blade.php
  53. 53 0
      resources/views/app/mcp/bills.blade.php
  54. 87 0
      resources/views/app/mcp/bills_filters.blade.php
  55. 19 0
      resources/views/app/mcp/cancelled_appointments_pending_review.blade.php
  56. 19 0
      resources/views/app/mcp/cancelled_bills_pending_review.blade.php
  57. 19 0
      resources/views/app/mcp/cancelled_supply_orders_pending_review.blade.php
  58. 53 0
      resources/views/app/mcp/client_messages.blade.php
  59. 95 0
      resources/views/app/mcp/client_messages_filters.blade.php
  60. 71 0
      resources/views/app/mcp/dashboard/appointments.blade.php
  61. 1 0
      resources/views/app/mcp/dashboard/calls_memos.blade.php
  62. 1 0
      resources/views/app/mcp/dashboard/erx_orders.blade.php
  63. 1 0
      resources/views/app/mcp/dashboard/measurements.blade.php
  64. 1 0
      resources/views/app/mcp/dashboard/messages.blade.php
  65. 1 0
      resources/views/app/mcp/dashboard/notifications.blade.php
  66. 1 0
      resources/views/app/mcp/dashboard/reports.blade.php
  67. 1 0
      resources/views/app/mcp/dashboard/supply_orders.blade.php
  68. 51 0
      resources/views/app/mcp/erx_and_orders.blade.php
  69. 87 0
      resources/views/app/mcp/erx_and_orders_filters.blade.php
  70. 19 0
      resources/views/app/mcp/erx_and_orders_pending_signature.blade.php
  71. 19 0
      resources/views/app/mcp/new_patients_awaiting_visit.blade.php
  72. 53 0
      resources/views/app/mcp/notes.blade.php
  73. 87 0
      resources/views/app/mcp/notes_filters.blade.php
  74. 19 0
      resources/views/app/mcp/notes_pending_billing.blade.php
  75. 19 0
      resources/views/app/mcp/notes_pending_signature.blade.php
  76. 75 0
      resources/views/app/mcp/patients.blade.php
  77. 237 0
      resources/views/app/mcp/patients_filters.blade.php
  78. 19 0
      resources/views/app/mcp/patients_overdue_for_visit.blade.php
  79. 19 0
      resources/views/app/mcp/patients_without_appointments.blade.php
  80. 5 0
      resources/views/app/mcp/reports.blade.php
  81. 19 0
      resources/views/app/mcp/reports_pending_signature.blade.php
  82. 53 0
      resources/views/app/mcp/supply_orders.blade.php
  83. 87 0
      resources/views/app/mcp/supply_orders_filters.blade.php
  84. 19 0
      resources/views/app/mcp/supply_orders_pending_signature.blade.php
  85. 468 0
      resources/views/app/patient/client-primary-coverage-new-with-manual.blade.php
  86. 319 397
      resources/views/app/patient/client-primary-coverages.blade.php
  87. 147 0
      resources/views/app/patient/coverage-status.blade.php
  88. 306 0
      resources/views/app/patient/primary-coverage-form.blade.php
  89. 381 0
      resources/views/app/patient/primary-coverage-manual-determination-commercial-modal.blade.php
  90. 155 0
      resources/views/app/patient/primary-coverage-manual-determination-medicaid-modal.blade.php
  91. 336 0
      resources/views/app/patient/primary-coverage-manual-determination-medicare-modal.blade.php
  92. 111 0
      resources/views/app/patient/primary-coverage-manual-determination-view-commercial.blade.php
  93. 43 0
      resources/views/app/patient/primary-coverage-manual-determination-view-medicaid.blade.php
  94. 117 0
      resources/views/app/patient/primary-coverage-manual-determination-view-medicare.blade.php
  95. 202 0
      resources/views/app/patient/primary-coverage-new-commercial.blade.php
  96. 120 0
      resources/views/app/patient/primary-coverage-new-medicaid.blade.php
  97. 45 0
      resources/views/app/patient/primary-coverage-new-medicare.blade.php
  98. 14 0
      resources/views/app/patient/primary-coverage-refresh.blade.php
  99. 121 0
      resources/views/app/patient/primary-coverage-view.blade.php
  100. 98 0
      resources/views/app/patient/primary-coverage.blade.php

+ 123 - 0
app/Http/Controllers/DnaController.php

@@ -0,0 +1,123 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Models\Appointment;
+use App\Models\BDTDevice;
+use App\Models\CareMonth;
+use App\Models\Client;
+use App\Models\ClientBDTDevice;
+use App\Models\ClientInfoLine;
+use App\Models\Erx;
+use App\Models\Facility;
+use App\Models\Handout;
+use App\Models\IncomingReport;
+use App\Models\MBClaim;
+use App\Models\MBPayer;
+use App\Models\Note;
+use App\Models\NoteTemplate;
+use App\Models\Pro;
+use App\Models\Product;
+use App\Models\ProProAccess;
+use App\Models\SectionTemplate;
+use App\Models\Shipment;
+use App\Models\SupplyOrder;
+use App\Models\Ticket;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\File;
+
+use Illuminate\Support\Facades\Http;
+use PDF;
+
+class DnaController extends Controller
+{
+
+    public function patients(Request $request)
+    {
+        $data = [];
+        return view('app.dna.patients', $data);
+    }
+
+    public function notes(Request $request)
+    {
+        $data = [];
+        return view('app.dna.notes', $data);
+    }
+
+    public function appointments(Request $request)
+    {
+        $data = [];
+        return view('app.dna.appointments', $data);
+    }
+
+    public function bills(Request $request)
+    {
+        $data = [];
+        return view('app.dna.bills', $data);
+    }
+
+    public function erx_and_orders(Request $request)
+    {
+        $data = [];
+        return view('app.dna.erx_and_orders', $data);
+    }
+
+    public function reports(Request $request)
+    {
+        $data = [];
+        return view('app.dna.reports', $data);
+    }
+
+    public function supply_orders(Request $request)
+    {
+        $data = [];
+        return view('app.dna.supply_orders', $data);
+    }
+
+    public function new_patients_awaiting_visit(Request $request){
+        $data = [];
+        return view('app.dna.new_patients_awaiting_visit', $data);
+    }
+    public function notes_pending_signature(Request $request){
+        $data = [];
+        return view('app.dna.notes_pending_signature', $data);
+    }
+    public function notes_pending_billing(Request $request){
+        $data = [];
+        return view('app.dna.notes_pending_billing', $data);
+    }
+    public function reports_pending_signature(Request $request){
+        $data = [];
+        return view('app.dna.reports_pending_signature', $data);
+    }
+    public function patients_without_appointments(Request $request){
+        $data = [];
+        return view('app.dna.patients_without_appointments', $data);
+    }
+    public function patients_overdue_for_visit(Request $request){
+        $data = [];
+        return view('app.dna.patients_overdue_for_visit', $data);
+    }
+    public function cancelled_appointments_pending_review(Request $request){
+        $data = [];
+        return view('app.dna.cancelled_appointments_pending_review', $data);
+    }
+    public function cancelled_bills_pending_review(Request $request){
+        $data = [];
+        return view('app.dna.cancelled_bills_pending_review', $data);
+    }
+    public function cancelled_supply_orders_pending_review(Request $request){
+        $data = [];
+        return view('app.dna.cancelled_supply_orders_pending_review', $data);
+    }
+    public function erx_and_orders_pending_signature(Request $request){
+        $data = [];
+        return view('app.dna.erx_and_orders_pending_signature', $data);
+    }
+    public function supply_orders_pending_signature(Request $request){
+        $data = [];
+        return view('app.dna.supply_orders_pending_signature', $data);
+    }
+
+}

+ 29 - 64
app/Http/Controllers/HomeController.php

@@ -188,50 +188,16 @@ class HomeController extends Controller
         }
     }
 
-    public function dashboard(Request $request)
-    {
+    private function dashboard_MCP(Request $request){
 
-        //patients where performer is the mcp
         $performer = $this->performer();
+        $pro = $performer->pro;
         $performerProID = $performer->pro->id;
-        $isAdmin = ($performer->pro->pro_type === 'ADMIN');
 
         $keyNumbers  = [];
 
         $queryClients = $this->performer()->pro->getAccessibleClientsQuery();
 
-        $keyNumbers['totalPatients'] = $queryClients->count();
-
-        // patientNotSeenYet
-        $patientNotSeenYet = $queryClients
-            ->where(function ($query) use ($performer) {     // own patient and primary OB visit pending
-                $query->where('mcp_pro_id', $performer->pro->id)
-                    ->where('has_mcp_done_onboarding_visit', '!=', 'YES');
-            })
-//            ->orWhere(function ($query) {   // mcp of any client program and program OB pending
-//                $query->where(function ($_query) {
-//                    $_query->select(DB::raw('COUNT(id)'))
-//                        ->from('client_program')
-//                        ->whereColumn('client_id', 'client.id')
-//                        ->where('has_mcp_done_onboarding_visit', '!=', 'YES');
-//                }, '>=', 1);
-//            })
-            ->count();
-        $keyNumbers['patientsNotSeenYet'] = $patientNotSeenYet;
-
-        $pendingBillsToSign = Bill::where('bill_service_type', '<>', 'CARE_MONTH')->where(function ($query) use ($performerProID) {
-            $query->where('hcp_pro_id', $performerProID)->where('is_signed_by_hcp', false)->where('is_cancelled', false);
-        })
-            ->orWhere(function ($query) use ($performerProID) {
-                $query->where('cm_pro_id', $performerProID)->where('is_signed_by_cm', false)->where('is_cancelled', false);;
-            })->orWhere(function ($query) use ($performerProID) {
-                $query->where('rme_pro_id', $performerProID)->where('is_signed_by_rme', false)->where('is_cancelled', false);;
-            })->orWhere(function ($query) use ($performerProID) {
-                $query->where('rmm_pro_id', $performerProID)->where('is_signed_by_rmm', false)->where('is_cancelled', false);;
-            })->count();
-
-        $keyNumbers['pendingBillsToSign'] = $pendingBillsToSign;
-
         $pendingNotesToSign = Note
             ::where(function ($query) use ($performerProID) {
                 $query->where('hcp_pro_id', $performerProID)->where('is_signed_by_hcp', false)->where('is_cancelled', false);
@@ -464,32 +430,6 @@ ORDER BY cm.created_at DESC
             ")
         );
 
-        $naBillableSignedNotes = DB::select(DB::raw("
-SELECT count(note.id) as na_billable_notes
-FROM note
-WHERE
-        note.is_signed_by_hcp = TRUE AND
-        note.ally_pro_id = :pro_id AND
-        note.is_cancelled = FALSE AND
-        (
-            SELECT count(bill.id)
-            FROM bill
-            WHERE
-                  bill.is_cancelled = FALSE AND
-                  bill.generic_pro_id = :pro_id AND
-                  bill.note_id = note.id
-        ) = 0
-        "), ["pro_id" => $performerProID]);
-
-        if(!$naBillableSignedNotes || !count($naBillableSignedNotes)) {
-            $naBillableSignedNotes = 0;
-        }
-        else {
-            $naBillableSignedNotes = $naBillableSignedNotes[0]->na_billable_notes;
-        }
-
-        $keyNumbers['naBillableSignedNotes'] = $naBillableSignedNotes;
-
         $keyNumbers['rmBillsToSign'] = Bill
             ::where('is_cancelled', false)
             ->where('cm_or_rm', 'RM')
@@ -583,7 +523,7 @@ WHERE cl.shadow_pro_id IS NULL AND cl.latest_client_primary_coverage_id IS NULL
 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
-WHERE cl.shadow_pro_id IS NULL 
+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 (
                (cpc.plan_type = 'MEDICARE' AND (cpc.is_partbprimary = 'UNKNOWN' OR cpc.is_partbprimary IS NULL))
@@ -595,7 +535,7 @@ WHERE cl.shadow_pro_id IS NULL
 
         }
 
-        return view('app/dashboard', compact('keyNumbers', 'reimbursement', 'milliseconds',
+        return view('app/dashboard-mcp', compact('keyNumbers', 'reimbursement', 'milliseconds',
             'businessNumbers',
             'incomingReports', 'tickets', 'supplyOrders',
             'numERx', 'numLabs', 'numImaging', 'numSupplyOrders',
@@ -604,6 +544,29 @@ WHERE cl.shadow_pro_id IS NULL
             'proApptUpdates', 'naApptUpdates'));
     }
 
+    private function dashboard_DNA(Request $request){
+        $performer = $this->performer();
+        $pro = $performer->pro;
+    }
+
+    private function dashboard_ADMIN(Request $request){
+        $performer = $this->performer();
+        $pro = $performer->pro;
+    }
+
+    public function dashboard(Request $request)
+    {
+        $performer = $this->performer();
+        $pro = $performer->pro;
+        if($pro->is_enrolled_as_mcp){
+            return $this->dashboard_MCP($request);
+        }elseif($pro->pro_type === 'ADMIN'){
+            return $this->dashboard_ADMIN($request);
+        }else{
+            return $this->dashboard_DNA($request);
+        }
+    }
+
     public function dashboardMeasurementsTab(Request $request, $page = 1) {
 
         $performer = $this->performer();
@@ -755,6 +718,8 @@ WHERE measurement.label NOT IN ('SBP', 'DBP')
                 $appointment->client->age_in_years . ' y.o' .
                 ($appointment->client->sex ? ' ' . $appointment->client->sex : '') .
                 ')';
+            $appointment->clientAge = $appointment->client->age_in_years;
+            $appointment->clientSex = $appointment->client->sex;
 
             $appointment->started = false;
             $appointment->inHowManyHours = date_diff(date_create('now'), date_create($appointment->start_time), false)

+ 133 - 0
app/Http/Controllers/McpController.php

@@ -0,0 +1,133 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Models\Appointment;
+use App\Models\BDTDevice;
+use App\Models\CareMonth;
+use App\Models\Client;
+use App\Models\ClientBDTDevice;
+use App\Models\ClientInfoLine;
+use App\Models\Erx;
+use App\Models\Facility;
+use App\Models\Handout;
+use App\Models\IncomingReport;
+use App\Models\MBClaim;
+use App\Models\MBPayer;
+use App\Models\Note;
+use App\Models\NoteTemplate;
+use App\Models\Pro;
+use App\Models\Product;
+use App\Models\ProProAccess;
+use App\Models\SectionTemplate;
+use App\Models\Shipment;
+use App\Models\SupplyOrder;
+use App\Models\Ticket;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\File;
+use App\Models\Bill;
+use App\Models\ClientSMS;
+
+use Illuminate\Support\Facades\Http;
+use PDF;
+
+class McpController extends Controller
+{
+
+    public function patients(Request $request)
+    {
+        $patients = Client::paginate(5);
+        return view('app.mcp.patients', compact('patients'));
+    }
+
+    public function notes(Request $request)
+    {
+        $notes = Note::paginate(5);
+        return view('app.mcp.notes', compact('notes'));
+    }
+
+    public function appointments(Request $request)
+    {
+        $appointments = Appointment::paginate(5);
+        return view('app.mcp.appointments', compact('appointments'));
+    }
+
+    public function bills(Request $request)
+    {
+        $bills = Bill::paginate(5);
+        return view('app.mcp.bills', compact('bills'));
+    }
+
+    public function erx_and_orders(Request $request)
+    {
+        $erxAndOrders = Erx::paginate(5);
+        return view('app.mcp.erx_and_orders', compact('erxAndOrders'));
+    }
+
+    public function reports(Request $request)
+    {
+        $data = [];
+        return view('app.mcp.reports', $data);
+    }
+
+    public function supply_orders(Request $request)
+    {
+        $supplyOrders = SupplyOrder::paginate(5);
+        return view('app.mcp.supply_orders', compact('supplyOrders'));
+    }
+
+    public function client_messages(Request $request)
+    {
+        $clientMessages = ClientSMS::paginate(5);
+        return view('app.mcp.client_messages', compact('clientMessages'));
+    }
+
+
+
+    public function new_patients_awaiting_visit(Request $request){
+        $data = [];
+        return view('app.mcp.new_patients_awaiting_visit', $data);
+    }
+    public function notes_pending_signature(Request $request){
+        $data = [];
+        return view('app.mcp.notes_pending_signature', $data);
+    }
+    public function notes_pending_billing(Request $request){
+        $data = [];
+        return view('app.mcp.notes_pending_billing', $data);
+    }
+    public function reports_pending_signature(Request $request){
+        $data = [];
+        return view('app.mcp.reports_pending_signature', $data);
+    }
+    public function patients_without_appointments(Request $request){
+        $data = [];
+        return view('app.mcp.patients_without_appointments', $data);
+    }
+    public function patients_overdue_for_visit(Request $request){
+        $data = [];
+        return view('app.mcp.patients_overdue_for_visit', $data);
+    }
+    public function cancelled_appointments_pending_review(Request $request){
+        $data = [];
+        return view('app.mcp.cancelled_appointments_pending_review', $data);
+    }
+    public function cancelled_bills_pending_review(Request $request){
+        $data = [];
+        return view('app.mcp.cancelled_bills_pending_review', $data);
+    }
+    public function cancelled_supply_orders_pending_review(Request $request){
+        $data = [];
+        return view('app.mcp.cancelled_supply_orders_pending_review', $data);
+    }
+    public function erx_and_orders_pending_signature(Request $request){
+        $data = [];
+        return view('app.mcp.erx_and_orders_pending_signature', $data);
+    }
+    public function supply_orders_pending_signature(Request $request){
+        $data = [];
+        return view('app.mcp.supply_orders_pending_signature', $data);
+    }
+
+}

+ 24 - 0
app/Http/Controllers/PatientController.php

@@ -542,6 +542,30 @@ class PatientController extends Controller
         return view('app.patient.client-primary-coverages', compact('patient', 'mbPayers'));
     }
 
+    public function primaryCoverage(Request $request, Client $patient) {
+        $mbPayers = MBPayer::all();
+        return view('app.patient.primary-coverage', compact('patient', 'mbPayers'));
+    }
+
+    public function primaryCoverageForm(Request $request, Client $patient) {
+        $mbPayers = MBPayer::all();
+        return view('app.patient.primary-coverage-form', compact('patient', 'mbPayers'));
+    }
+
+    public function primaryCoverageManualDeterminationModal(Request $request, Client $patient) {
+        if($patient->latestClientPrimaryCoverage->plan_type === 'MEDICARE'){
+            return view('app.patient.primary-coverage-manual-determination-medicare-modal', compact('patient'));
+        }
+        if($patient->latestClientPrimaryCoverage->plan_type === 'MEDICAID'){
+            return view('app.patient.primary-coverage-manual-determination-medicaid-modal', compact('patient'));
+        }
+        if($patient->latestClientPrimaryCoverage->plan_type === 'COMMERCIAL'){
+            return view('app.patient.primary-coverage-manual-determination-commercial-modal', compact('patient'));
+        }
+        
+        return "Plan Type is missing!";
+    }
+
     public function mbClaim(Request $request, MBClaim $mbClaim) {
         return view('app.patient.mb-claim-single', compact('mbClaim'));
     }

+ 28 - 0
app/Http/Controllers/PayerController.php

@@ -0,0 +1,28 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Validator;
+
+use App\Models\Payer;
+use Illuminate\Support\Facades\DB;
+
+class PayerController extends Controller
+{
+	public function searchPayerV2JSON(Request $request)
+	{
+		$term = $request->input('term') ? trim($request->input('term')) : '';
+		if (empty($term)) return '';
+		$matches = DB::select(
+			"
+			SELECT id, uid, (name || ' (' || COALESCE(availity_payer_id, '--') || ')') as text FROM payer WHERE name ILIKE :term OR memo ILIKE :term", 
+			['term' => '%' . $term . '%']
+		);
+
+		return json_encode([
+			"success" => true,
+			"data" => $matches
+		]);
+	}
+}

+ 3 - 0
app/Models/ClientPrimaryCoverage.php

@@ -55,4 +55,7 @@ class ClientPrimaryCoverage extends Model
         return implode(" ", $parts);
     }
 
+    public function payer(){
+        return $this->hasOne(Payer::class, 'id', 'commercial_payer_id');
+    }
 }

+ 145 - 1
app/Models/Pro.php

@@ -59,7 +59,6 @@ class Pro extends Model
         $numTeams = ProTeam::where('assistant_pro_id', $this->id)
             ->where('is_active', true)
             ->count();
-
         return !!$numTeams;
     }
 
@@ -332,6 +331,151 @@ class Pro extends Model
             ->get();
     }
 
+    function get_patients_count_as_mcp() {
+        $query = Client::whereNull('shadow_pro_id');
+        return $query->where('mcp_pro_id', $this->id)->count();
+    }
+
+    function get_new_patients_awaiting_visit_count_as_mcp() {
+        $query = Client::whereNull('shadow_pro_id');
+        return $query->where('mcp_pro_id', $this->id)
+            ->where('has_mcp_done_onboarding_visit', '!=', 'YES')
+            ->count();
+    }
+
+    function get_notes_pending_signature_count_as_mcp() {
+        $query = Client::whereNull('shadow_pro_id');
+        return $query->where('mcp_pro_id', $this->id)
+            ->where('has_mcp_done_onboarding_visit', '!=', 'YES')
+            ->count();
+    }
+
+    function get_notes_pending_signature_count_as_dna() {
+        return;
+        $naBillableSignedNotes = DB::select(DB::raw("
+SELECT count(note.id) as na_billable_notes
+FROM note
+WHERE
+        note.is_signed_by_hcp = TRUE AND
+        note.ally_pro_id = :pro_id AND
+        note.is_cancelled = FALSE AND
+        (
+            SELECT count(bill.id)
+            FROM bill
+            WHERE
+                  bill.is_cancelled = FALSE AND
+                  bill.generic_pro_id = :pro_id AND
+                  bill.note_id = note.id
+        ) = 0
+        "), ["pro_id" => $performerProID]);
+
+        if(!$naBillableSignedNotes || !count($naBillableSignedNotes)) {
+            $naBillableSignedNotes = 0;
+        }
+        else {
+            $naBillableSignedNotes = $naBillableSignedNotes[0]->na_billable_notes;
+        }
+    }
+
+    function get_notes_pending_billing_count_as_mcp() {
+        return;
+        return Note::where('hcp_pro_id', $this->id)
+            ->where('is_signed_by_hcp', false)
+            ->where('is_cancelled', false)
+            ->count();
+    }
+
+    function get_bills_pending_signature_count_as_mcp(){
+        return;
+        $pendingBillsToSign = Bill::where('bill_service_type', '<>', 'CARE_MONTH')->where(function ($query) use ($performerProID) {
+            $query->where('hcp_pro_id', $performerProID)->where('is_signed_by_hcp', false)->where('is_cancelled', false);
+        })
+            ->orWhere(function ($query) use ($performerProID) {
+                $query->where('cm_pro_id', $performerProID)->where('is_signed_by_cm', false)->where('is_cancelled', false);;
+            })->orWhere(function ($query) use ($performerProID) {
+                $query->where('rme_pro_id', $performerProID)->where('is_signed_by_rme', false)->where('is_cancelled', false);;
+            })->orWhere(function ($query) use ($performerProID) {
+                $query->where('rmm_pro_id', $performerProID)->where('is_signed_by_rmm', false)->where('is_cancelled', false);;
+            })->count();
+
+        $keyNumbers['pendingBillsToSign'] = $pendingBillsToSign;
+    }
+
+    function get_measurements_awaiting_review_count_as_mcp() {
+        return;
+    }
+
+    function get_incoming_reports_pending_signature_count_as_mcp() {
+        return;
+        $incomingReports = IncomingReport::where('hcp_pro_id', $performerProID)
+            ->where('has_hcp_pro_signed', false)
+            ->where('is_entry_error', false)
+            ->orderBy('created_at', 'ASC')
+            ->get();
+    }
+
+    function get_patients_without_appointment_count_as_mcp() {
+    }
+
+    function get_patients_overdue_count_as_mcp() {
+    }
+
+    function get_patients_without_remote_measurement_in_48_hours_count_as_mcp() {
+    }
+
+    function get_cancelled_appointments_pending_acknowledgement_count_as_mcp() {
+    }
+
+    function get_cancelled_bills_awaiting_review_count_as_mcp() {
+        return;
+        Bill::where('hcp_pro_id', $performerProID)
+            ->where('is_cancelled', true)
+            ->where('is_cancellation_acknowledged', false)
+            ->count();
+    }
+
+    function get_cancelled_supply_orders_awaiting_review_count_as_mcp() {
+        return;
+        $keyNumbers['unacknowledgedCancelledSupplyOrders'] = SupplyOrder::where('signed_by_pro_id', $performerProID)
+            ->where('is_cancelled', true)
+            ->where('is_cancellation_acknowledged', false)
+            ->count();
+
+    }
+
+    function get_erx_and_orders_awaiting_signature_count_as_mcp() {
+    }
+
+    function get_supply_orders_awaiting_signature_count_as_mcp() {
+        return;
+        $keyNumbers['unsignedSupplyOrders'] = SupplyOrder
+            ::where('is_cancelled', false)
+            ->where('is_signed_by_pro', false)
+            ->whereRaw('created_by_session_id IN (SELECT id FROM app_session WHERE pro_id = ?)', [$performerProID])
+            ->count();
+    }
+
+    function get_birthdays_today_as_mcp(){
+        return;
+        $queryClients = $this->performer()->pro->getAccessibleClientsQuery();
+        $keyNumbers['patientsHavingBirthdayToday'] = $queryClients
+            ->whereRaw('EXTRACT(DAY from dob) = ?', [date('d')])
+            ->whereRaw('EXTRACT(MONTH from dob) = ?', [date('m')])
+            ->count();
+
+        $reimbursement = [];
+        $reimbursement["currentBalance"] =  $performer->pro->balance;
+        $reimbursement["nextPaymentDate"] = '--';
+        $lastPayment = ProTransaction::where('pro_id', $performerProID)->where('plus_or_minus', 'PLUS')->orderBy('created_at', 'DESC')->first();
+        if ($lastPayment) {
+            $reimbursement["lastPayment"] =  $lastPayment->amount;
+            $reimbursement["lastPaymentDate"] = $lastPayment->created_at;
+        } else {
+            $reimbursement["lastPayment"] = '--';
+            $reimbursement["lastPaymentDate"] = '--';
+        }
+    }
+
     public function getAccessibleClientsQuery($_search = false) {
         $proID = $this->id;
         $query = Client::whereNull('shadow_pro_id');

+ 9 - 1
public/css/style.css

@@ -228,6 +228,9 @@ body>nav.navbar {
 [moe][large] form, [moe][large] [url] {
     width: 450px;
 }
+[moe][wide] form, [moe][wide] [url] {
+    width: 550px;
+}
 [moe][bottom] form {
     bottom: 100%;
 }
@@ -1350,6 +1353,11 @@ span.select2-container.select2-container--default.select2-container--open {
     background: #fff !important;
 }
 
+.form-check-label {
+  display: flex;
+  align-items: center;
+}
+
 #stagPdfViewer>form {
     padding: 0;
     background: #eee;
@@ -2098,4 +2106,4 @@ body.in-iframe .main-row > .sidebar {
 }
 [open-in-stag-popup] * {
     pointer-events: none;
-}
+}

+ 1 - 1
public/css/yemi.css

@@ -8,7 +8,7 @@
     position: relative;
 }
 [moe] [url]:not([show]) {
-    z-index: 99999;
+    z-index: 999999;
     position: absolute;
     background-color: white;
     padding: 10px;

+ 5 - 0
resources/views/app/admin/appointments.blade.php

@@ -0,0 +1,5 @@
+@extends ('layouts/template')
+
+@section('content')
+    <h1>Hi</h1>
+@endsection

+ 5 - 0
resources/views/app/admin/bills.blade.php

@@ -0,0 +1,5 @@
+@extends ('layouts/template')
+
+@section('content')
+    <h1>Hi</h1>
+@endsection

+ 1 - 0
resources/views/app/admin/dashboard/calls_memos.blade.php

@@ -0,0 +1 @@
+<h1>Phone Calls & Memos</h1>

+ 1 - 0
resources/views/app/admin/dashboard/erx_orders.blade.php

@@ -0,0 +1 @@
+<h1>ERX & Orders</h1>

+ 1 - 0
resources/views/app/admin/dashboard/measurements.blade.php

@@ -0,0 +1 @@
+<div id="measurements-tab">Loading...</div>

+ 1 - 0
resources/views/app/admin/dashboard/messages.blade.php

@@ -0,0 +1 @@
+<h1>Messages</h1>

+ 1 - 0
resources/views/app/admin/dashboard/notifications.blade.php

@@ -0,0 +1 @@
+<h1>Notifications</h1>

+ 1 - 0
resources/views/app/admin/dashboard/supply_orders.blade.php

@@ -0,0 +1 @@
+<h1>Supply Orders</h1>

+ 5 - 0
resources/views/app/admin/erx_and_orders.blade.php

@@ -0,0 +1,5 @@
+@extends ('layouts/template')
+
+@section('content')
+    <h1>Hi</h1>
+@endsection

+ 5 - 0
resources/views/app/admin/notes.blade.php

@@ -0,0 +1,5 @@
+@extends ('layouts/template')
+
+@section('content')
+    <h1>Hi</h1>
+@endsection

+ 6 - 0
resources/views/app/admin/patients.blade.php

@@ -0,0 +1,6 @@
+@extends ('layouts/template')
+
+@section('content')
+    <h1>Hi</h1>
+@endsection
+

+ 5 - 0
resources/views/app/admin/reports.blade.php

@@ -0,0 +1,5 @@
+@extends ('layouts/template')
+
+@section('content')
+    <h1>Hi</h1>
+@endsection

+ 5 - 0
resources/views/app/admin/supply_orders.blade.php

@@ -0,0 +1,5 @@
+@extends ('layouts/template')
+
+@section('content')
+    <h1>Hi</h1>
+@endsection

+ 977 - 0
resources/views/app/dashboard-admin.blade.php

@@ -0,0 +1,977 @@
+@extends ('layouts.template')
+
+@section('content')
+
+    <style>
+        tr.thin th, tr.thin td {
+            padding: 0.25em;
+        }
+    </style>
+
+    <div class="p-3">
+        <div class="">
+            <div class="row mcp-theme-1" id="pro-dashboard-container" v-cloak>
+                <div class="col-md-3 mcp-theme-1">
+                    <div class="mb-4" v-show="tab==='appointments'">
+                        <div class="pro-dashboard-inline-calendar"></div>
+                    </div>
+                    <div class="card mb-4">
+                        <div class="card-header pl-2">
+                            <strong>
+                                Key Numbers
+                            </strong>
+                        </div>
+                        <div class="card-body p-0">
+                            <table class="table mb-0 dashboard-stats-table">
+                                <tbody>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_patients_count_as_mcp()}}</th>
+                                    <th class="pl-2">Patients</th>
+                                </tr>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_new_patients_awaiting_visit_count_as_mcp()}}</th>
+                                    <th class="pl-2">New Patients Awaiting Visit</th>
+                                </tr>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_notes_pending_signature_count_as_mcp()}}</th>
+                                    <th class="pl-2">Notes Pending Signature</th>
+                                </tr>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_notes_pending_billing_count_as_mcp()}}</th>
+                                    <th class="pl-2">Notes Pending Billing</th>
+                                </tr>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_incoming_reports_pending_signature_count_as_mcp()}}</th>
+                                    <th class="pl-2">Reports Pending Signature</th>
+                                </tr>
+
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_patients_without_appointment_count_as_mcp()}}</th>
+                                    <th class="pl-2">Patients w/o Appointments</th>
+                                </tr>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_patients_not_seen_in_45_days_count_as_mcp()}}</th>
+                                    <th class="pl-2">Patients Not Seen in 45 Days</th>
+                                </tr>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_cancelled_appointments_pending_acknowledgement_count_as_mcp()}}</th>
+                                    <th class="pl-2">Cancelled Appts. Pending Review</th>
+                                </tr>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_cancelled_bills_awaiting_review_count_as_mcp()}}</th>
+                                    <th class="pl-2">Cancelled Bills Pending Review</th>
+                                </tr>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_cancelled_supply_orders_awaiting_review_count_as_mcp()}}</th>
+                                    <th class="pl-2">Cancelled Supply Orders Pending Review</th>
+                                </tr>
+
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_erx_and_orders_awaiting_signature_count_as_mcp()}}</th>
+                                    <th class="pl-2">ERx & Orders Pending Signature</th>
+                                </tr>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_supply_orders_awaiting_signature_count_as_mcp()}}</th>
+                                    <th class="pl-2">Supply Orders Pending Signature</th>
+                                </tr>
+                                </tbody>
+                            </table>
+                        </div>
+                    </div>
+                    <div class="card mb-4">
+                        <div class="card-header pl-2">
+                            <strong>
+                                Remote Monitoring: {{friendly_month(date('Y-m-d'))}}
+                            </strong>
+                        </div>
+                        <div class="card-body p-0">
+                            <table class="table mb-0 dashboard-stats-table">
+                                <tbody>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_measurements_awaiting_review_count_as_mcp() ?? '-'}}</th>
+                                    <th class="pl-2">Measurements Pending Review</th>
+                                </tr>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_patients_without_remote_measurement_in_48_hours_count_as_mcp() ?? '-'}}</th>
+                                    <th class="pl-2">Patients w/o Measurement in 48 hrs.</th>
+                                </tr>
+                                </tbody>
+                            </table>
+                        </div>
+                    </div>
+                    <div class="card mb-4">
+                        <div class="card-header pl-2">
+                            <strong>
+                                Practice Management
+                            </strong>
+                        </div>
+                        <div class="card-body p-0">
+                            <table class="table mb-0 dashboard-stats-table">
+                                <tbody>
+                                <tr>
+                                    <th colspan="2">Revenue Cycle Management</th>
+                                </tr>
+                                <tr class="thin">
+                                    <th class="font-weight-normal px-2 pl-4">
+                                        ${{friendly_money($reimbursement['currentBalance'])}}</th>
+                                    <th class="font-weight-normal pl-2 w-100"><a
+                                            href="/practice-management/financial-transactions">Current balance</a></th>
+                                </tr>
+                                <!-- <tr>
+                                    <th class="px-2">{{friendly_date_time($reimbursement['nextPaymentDate'], false)}}</th>
+                                    <th class="pl-2">Next Payment Date</th>
+                                </tr> -->
+                                <tr class="thin">
+                                    <th class="font-weight-normal px-2 pl-4">${{friendly_money($reimbursement['nextPaymentAmount'])}}</th>
+                                    <th class="font-weight-normal pl-2"><a
+                                            href="/practice-management/bills-under-processing">Processing</a></th>
+                                </tr>
+                                <tr class="thin">
+                                    <th class="font-weight-normal px-2 pl-5">${{friendly_money($reimbursement['nextPaymentAmount'])}}</th>
+                                    <th class="font-weight-normal pl-2"><a
+                                            href="/practice-management/bills-under-processing">Treatment Services</a></th>
+                                </tr>
+                                <tr class="thin">
+                                    <th class="font-weight-normal px-2 pl-5">${{friendly_money($reimbursement['nextPaymentAmount'])}}</th>
+                                    <th class="font-weight-normal pl-2"><a
+                                            href="/practice-management/bills-under-processing">Remote Monitoring</a></th>
+                                </tr>
+                                <tr class="thin">
+                                    <th class="font-weight-normal px-2 pl-5">${{friendly_money($reimbursement['nextPaymentAmount'])}}</th>
+                                    <th class="font-weight-normal pl-2"><a
+                                            href="/practice-management/bills-under-processing">Other Services</a></th>
+                                </tr>
+                                {{--
+                                <tr>
+                                    <th class="px-2">{{$reimbursement['lastPayment']}}</th>
+                                    <th class="pl-2"><a href="/practice-management/financial-transactions">Last payment</a></th>
+                                </tr>
+                                <tr>
+                                    <th class="px-2">{{friendly_date_time($reimbursement['lastPaymentDate'], false)}}</th>
+                                    <th class="pl-2"><a href="/practice-management/financial-transactions">Last payment date</a></th>
+                                </tr>
+                                --}}
+                                </tbody>
+                            </table>
+                        </div>
+                    </div>
+                    @if($pro->pro_type === 'ADMIN')
+                        <div class="card mb-4">
+                            <div class="card-header pl-2">
+                                <strong>
+                                    Bills &amp; Claims
+                                </strong>
+                            </div>
+                            <div class="card-body p-0">
+                                <table class="table mb-0 dashboard-stats-table">
+                                    <tbody>
+
+                                    <tr>
+                                        <th class="border-top-1 px-2 text-center">{{$businessNumbers['notesWithBillsToResolve']}}</th>
+                                        <th class="border-top-1 pl-2">
+                                            <a href="/practice-management/billing-manager">Notes with bills to
+                                                resolve</a>
+                                        </th>
+                                    </tr>
+                                    <tr>
+                                        <th class="border-top-1 px-2 text-center">{{$businessNumbers['notesPendingBillingClosure']}}</th>
+                                        <th class="border-top-1 pl-2">
+                                            <a href="/practice-management/billing-manager">Notes pending billing
+                                                closure</a>
+                                        </th>
+                                    </tr>
+                                    </tbody>
+                                </table>
+                            </div>
+                        </div>
+                    @endif
+                </div>
+                <div class="col-md-9">
+
+                    <div class="row">
+                        <div class="col-6">
+
+                            <!-- Appointment Updates -->
+                            @if(count($proApptUpdates))
+                                <div class="mb-3 border rounded px-3 py-2 ack-container">
+                                    <p class="pt-1 mb-2"><b>Appointment Updates</b></p>
+                                    <table class="table table-sm table-hover table-bordered mb-0">
+                                        <thead>
+                                        <tr>
+                                            <th>Client</th>
+                                            <th>Appt. Date/Time</th>
+                                            <th>Status</th>
+                                            <th></th>
+                                        </tr>
+                                        </thead>
+                                        <tbody>
+                                        @foreach($proApptUpdates as $update)
+                                            <tr>
+                                                <td>{{$update->name_first}} {{$update->name_last}}</td>
+                                                <td>{{friendlier_date_time($update->start_time)}}</td>
+                                                <td>{{$update->status}}</td>
+                                                <td><a href="#" class="ack-pro-appt-update" data-uid="{{$update->uid}}">Acknowledge</a>
+                                                </td>
+                                            </tr>
+                                        @endforeach
+                                        </tbody>
+                                    </table>
+                                </div>
+                            @endif
+
+                            @if(count($naApptUpdates))
+                                <div class="mb-3 border rounded px-3 py-2 ack-container">
+                                    <p class="pt-1 mb-2"><b>Appointment Updates</b></p>
+                                    <table class="table table-sm table-hover table-bordered mb-0">
+                                        <thead>
+                                        <tr>
+                                            <th>Client</th>
+                                            <th>Pro</th>
+                                            <th>Appt. Date/Time</th>
+                                            <th>Status</th>
+                                            <th></th>
+                                        </tr>
+                                        </thead>
+                                        <tbody>
+                                        @foreach($naApptUpdates as $update)
+                                            <tr>
+                                                <td>{{$update->name_first}} {{$update->name_last}}</td>
+                                                <td>{{$update->pro_name_first}} {{$update->pro_name_last}}</td>
+                                                <td>{{friendlier_date_time($update->start_time)}}</td>
+                                                <td>{{$update->status}}</td>
+                                                <td><a href="#" class="ack-na-appt-update" data-uid="{{$update->uid}}">Acknowledge</a>
+                                                </td>
+                                            </tr>
+                                        @endforeach
+                                        </tbody>
+                                    </table>
+                                </div>
+                            @endif
+
+                        <!-- new associations -->
+                            @if(count($newMCPAssociations))
+                                <div class="mb-3 border rounded px-3 py-2 ack-container">
+                                    <p class="pt-1 mb-2"><b>New Patients</b></p>
+                                    @foreach($newMCPAssociations as $assoc)
+                                        <div class="d-flex align-items-start bg-light mb-2 px-2 py-1">
+                                            <div class="flex-grow-1">
+                                                You are now the MCP for
+                                                <a href="/patients/view/{{$assoc->patient->uid}}"
+                                                   class="">{{$assoc->patient->displayName()}}</a>
+                                                <?php $nextAppt = $assoc->patient->nextAppointment(); ?>
+                                                @if($nextAppt)
+                                                    <div class="font-size-11">
+                                                        <span class="text-secondary font-size-11">Appt.</span>
+                                                        {{$nextAppt->pro->displayName()}}
+                                                        <span class="text-secondary font-size-11">on</span>
+                                                        {{friendlier_date_time($nextAppt->raw_date . ' ' . $nextAppt->raw_start_time)}}
+                                                    </div>
+                                                    @if($nextAppt->status === 'CREATED')
+                                                        <div
+                                                            class="text-warning-mellow font-weight-bold font-size-11 mt-1">
+                                                            <i class="fa fa-exclamation-triangle"></i>
+                                                            Confirmation pending
+                                                        </div>
+                                                    @endif
+                                                    @if($nextAppt->status === 'CONFIRMED')
+                                                        <div class="text-success font-weight-bold font-size-11 mt-1">
+                                                            <i class="fa fa-check"></i>
+                                                            Confirmed by the patient
+                                                        </div>
+                                                    @endif
+                                                    @if($nextAppt->status === 'REJECTED')
+                                                        <div class="text-danger font-weight-bold font-size-11 mt-1">
+                                                            <i class="fa fa-stop"></i>
+                                                            Rejected by the patient
+                                                        </div>
+                                                    @endif
+                                                @endif
+                                            </div>
+                                            <a href="#" class="ack-client-pro-change ml-3" data-uid="{{$assoc->uid}}">Stamp</a>
+                                        </div>
+                                    @endforeach
+                                </div>
+                            @endif
+
+                            @if(count($newNAAssociations))
+                                <div class="mb-3 border rounded px-3 py-2 ack-container">
+                                    <p class="pt-1 mb-2"><b>New Patients</b></p>
+                                    @foreach($newNAAssociations as $assoc)
+                                        <div class="d-flex align-items-start bg-light mb-2 px-2 py-1">
+                                            <div class="flex-grow-1">
+                                                You are now the Care Coordinator for
+                                                <a href="/patients/view/{{$assoc->patient->uid}}"
+                                                   class="">{{$assoc->patient->displayName()}}</a>
+                                                <?php $nextAppt = $assoc->patient->nextAppointment(); ?>
+                                                @if($nextAppt)
+                                                    <div class="font-size-11">
+                                                        <span class="text-secondary font-size-11">Appt.</span>
+                                                        {{$nextAppt->pro->displayName()}}
+                                                        <span class="text-secondary font-size-11">on</span>
+                                                        {{friendlier_date_time($nextAppt->raw_date . ' ' . $nextAppt->raw_start_time)}}
+                                                    </div>
+                                                    @if($nextAppt->status === 'CREATED')
+                                                        <div
+                                                            class="text-warning-mellow font-weight-bold font-size-11 mt-1">
+                                                            <i class="fa fa-exclamation-triangle"></i>
+                                                            Confirmation pending
+                                                        </div>
+                                                    @endif
+                                                    @if($nextAppt->status === 'CONFIRMED')
+                                                        <div class="text-success font-weight-bold font-size-11 mt-1">
+                                                            <i class="fa fa-check"></i>
+                                                            Confirmed by the patient
+                                                        </div>
+                                                    @endif
+                                                    @if($nextAppt->status === 'REJECTED')
+                                                        <div class="text-danger font-weight-bold font-size-11 mt-1">
+                                                            <i class="fa fa-stop"></i>
+                                                            Rejected by the patient
+                                                        </div>
+                                                    @endif
+                                                @endif
+                                            </div>
+                                            <a href="#" class="ack-client-pro-change"
+                                               data-uid="{{$assoc->uid}}">Stamp</a>
+                                        </div>
+                                    @endforeach
+                                </div>
+                            @endif
+                        </div>
+                        <div class="col-6">
+                            @if(count($mcpClientMemos))
+                                <div class="mb-3 border rounded px-3 py-2 ack-container">
+                                    <p class="pt-1 mb-2"><b>New Patients Memos (MCP)</b></p>
+                                    <table class="table table-sm table-hover table-bordered">
+                                        <thead>
+                                        <tr>
+                                            <th>Patient</th>
+                                            <th>Memo</th>
+                                            <th>Created</th>
+                                            <th></th>
+                                        </tr>
+                                        </thead>
+                                        <tbody>
+                                        @foreach($mcpClientMemos as $memo)
+                                            <tr>
+                                                <td class="">
+                                                    <a href="/patients/view/{{$memo->client_uid}}">{{$memo->name_first}} {{$memo->name_last}}</a>
+                                                </td>
+                                                <td>{!! $memo->content !!}</td>
+                                                <td class="text-nowrap">{{friendlier_date_time($memo->created_at)}}</td>
+                                                <td><a href="#" class="ack-client-memo"
+                                                       data-uid="{{$memo->uid}}">Stamp</a></td>
+                                            </tr>
+                                        @endforeach
+                                        </tbody>
+                                    </table>
+                                </div>
+                            @endif
+                            @if(count($naClientMemos))
+                                <div class="mb-3 border rounded px-3 py-2 ack-container">
+                                    <p class="pt-1 mb-2"><b>New Patients Memos (NA)</b></p>
+                                    <table class="table table-sm table-hover table-bordered">
+                                        <thead>
+                                        <tr>
+                                            <th>Patient</th>
+                                            <th>Memo</th>
+                                            <th>Created</th>
+                                            <th></th>
+                                        </tr>
+                                        </thead>
+                                        <tbody>
+                                        @foreach($naClientMemos as $memo)
+                                            <tr>
+                                                <td class="">
+                                                    <a href="/patients/view/{{$memo->client_uid}}">{{$memo->name_first}} {{$memo->name_last}}</a>
+                                                </td>
+                                                <td>{!! $memo->content !!}</td>
+                                                <td class="text-nowrap">{{friendlier_date_time($memo->created_at)}}</td>
+                                                <td><a href="#" class="ack-client-memo"
+                                                       data-uid="{{$memo->uid}}">Stamp</a></td>
+                                            </tr>
+                                        @endforeach
+                                        </tbody>
+                                    </table>
+                                </div>
+                            @endif
+                        </div>
+                    </div>
+
+                    <ul class="nav nav-tabs">
+                        <li class="nav-item">
+                            <a native data-tab="appointments" class="nav-link"
+                               :class="tab == 'appointments' ? 'active' : ''" href="#"
+                               v-on:click.prevent="tab='appointments'; initLoadAppointments();">
+                                Appointments
+                            </a>
+                        </li>
+                        <li class="nav-item">
+                            <a native data-tab="measurements" class="nav-link"
+                               :class="tab == 'measurements' ? 'active' : ''" href="#"
+                               v-on:click.prevent="tab='measurements'; loadMeasurements();">
+                                Measurements
+                            </a>
+                        </li>
+                        <li class="nav-item">
+                            <a native data-tab="incoming_reports"
+                               class="nav-link {{count($incomingReports) ? 'text-danger font-weight-bold' : ''}}"
+                               :class="tab == 'incoming_reports' ? 'active' : ''" href="#"
+                               v-on:click.prevent="tab='incoming_reports'">
+                                Incoming Reports ({{count($incomingReports)}})
+                            </a>
+                        </li>
+                        <li class="nav-item">
+                            <a native data-tab="erx" class="nav-link {{$numERx ? 'text-danger font-weight-bold' : ''}}"
+                               :class="tab == 'erx' ? 'active' : ''" href="#"
+                               v-on:click.prevent="tab='erx'">
+                                ERx ({{$numERx}})
+                            </a>
+                        </li>
+                        <li class="nav-item">
+                            <a native data-tab="labs"
+                               class="nav-link {{$numLabs ? 'text-danger font-weight-bold' : ''}}"
+                               :class="tab == 'labs' ? 'active' : ''" href="#"
+                               v-on:click.prevent="tab='labs'">
+                                Labs ({{$numLabs}})
+                            </a>
+                        </li>
+                        <li class="nav-item">
+                            <a native data-tab="imaging"
+                               class="nav-link {{$numImaging ? 'text-danger font-weight-bold' : ''}}"
+                               :class="tab == 'imaging' ? 'active' : ''" href="#"
+                               v-on:click.prevent="tab='imaging'">
+                                Imaging ({{$numImaging}})
+                            </a>
+                        </li>
+                        <li class="nav-item">
+                            <a native data-tab="supply_orders"
+                               class="nav-link {{$numSupplyOrders ? 'text-danger font-weight-bold' : ''}}"
+                               :class="tab == 'supply_orders' ? 'active' : ''" href="#"
+                               v-on:click.prevent="tab='supply_orders'">
+                                Supply Orders ({{$numSupplyOrders}})
+                            </a>
+                        </li>
+                    </ul>
+
+                    <div class="border-left border-right border-bottom p-3">
+                        <div v-show="tab==='appointments'" class="appointments-tab">
+                            <div v-show="selectedDate">
+                                <div class="d-flex align-items-end mb-3">
+                                    <b class="large"><span class="text-secondary">Today:</span> @{{ selectedDate }}</b>
+                                    <div class="ml-auto d-inline-flex align-items-center">
+                                        <label class="text-secondary mr-2 my-0 text-nowrap">Filter by status:</label>
+                                        <select v-model="filterStatus"
+                                                class="form-control form-control-sm">
+                                            <option value="">All</option>
+                                            <option value="CREATED">Created</option>
+                                            <option value="CONFIRMED">Confirmed</option>
+                                            <option value="CANCELLED">Cancelled</option>
+                                            <option value="COMPLETED">Completed</option>
+                                            <option value="ABANDONED">Abandoned</option>
+                                        </select>
+                                    </div>
+                                </div>
+                                <div v-for="event in events" class="align-items-end p-3 border rounded mb-3"
+                                     :class="(event.dateYMD === selectedDate && (filterStatus === '' || filterStatus === event.status) ? 'd-flex' : 'd-none') + ' ' + (event.isClientShadowOfPro ? 'training-event' : '')">
+                                    <div class="patient-avatar mr-3 align-self-center">
+                                        <i v-if="event.isClientShadowOfPro" class="fa fa-graduation-cap training-icon"
+                                           :title="event.proInitials"></i>
+                                        <span v-else class="">@{{ event.proInitials }}</span>
+                                    </div>
+                                    <div>
+                                        <div class="pb-1">
+                                            <b class="text-info">@{{ event.proName }}</b>
+                                            &nbsp;/&nbsp;
+                                            @{{ event.friendlyStartTime }} - @{{ event.friendlyEndTime }} <span
+                                                class="text-secondary">@{{ event.timezone }}</span>
+                                            &nbsp;/&nbsp;
+                                            <span class="d-inline-block ml- 2 text-secondary font-weight-bold">@{{ event.title }}</span>
+                                        </div>
+                                        <div class="pb-1">
+                                            <a :href="'/patients/view/' + event.clientUid" class="font-weight-bold">@{{
+                                                event.clientName }}</a>
+                                            <span class="small d-inline-block pl-2 text-secondary font-weight-normal">@{{ event.clientSummary }}</span>
+                                        </div>
+                                        <div class="d-flex align-items-baseline">
+                                            <div v-if="event.status === 'CREATED'"
+                                                 class="text-warning-mellow font-weight-bold">
+                                                <i class="fa fa-exclamation-triangle"></i>
+                                                Confirmation pending
+                                            </div>
+                                            <div v-else-if="event.status === 'CONFIRMED'"
+                                                 class="text-success font-weight-bold">
+                                                <i class="fa fa-check"></i>
+                                                Confirmed by the patient
+                                            </div>
+                                            <div v-else-if="event.status === 'REJECTED'"
+                                                 class="text-danger font-weight-bold">
+                                                <i class="fa fa-stop"></i>
+                                                Rejected by the patient
+                                            </div>
+                                            <div v-else class="text-secondary">
+                                                Status: <b>@{{ event.status }}</b>
+                                            </div>
+                                            <span class="mx-2 text-secondary">|</span>
+                                            <a :href="'/patients/view/' + event.clientUid + '/calendar/' + event.uid">
+                                                <i class="fa fa-edit"></i>
+                                                Edit Appointment
+                                            </a>
+                                        </div>
+                                        <div class="mt-1"
+                                             :class="event.coverage !== 'YES' ? (event.coverage === 'NO' ? 'text-danger' : 'text-warning-mellow') : 'text-success'">
+                                            Coverage Status: <b>@{{ event.coverage }}</b>
+                                        </div>
+                                    </div>
+                                    <div class="ml-auto">
+                                        <select v-model="event.newStatus"
+                                                class="form-control form-control-sm bg-light"
+                                                v-on:change="updateStatus(event)">
+                                            <option value="CREATED">CREATED</option>
+                                            <option value="CONFIRMED">CONFIRMED</option>
+                                            <option value="CANCELLED">CANCELLED</option>
+                                            <option value="COMPLETED">COMPLETED</option>
+                                            <option value="ABANDONED">ABANDONED</option>
+                                        </select>
+                                        <div v-if="selectedDate === '{{ date('Y-m-d') }}'"
+                                             class="pt-1 text-right"
+                                             :class="event.started ? 'text-danger': 'text-secondary'">
+                                            @{{ event.inHowManyHours }}
+                                        </div>
+                                    </div>
+                                </div>
+                                <div v-if="numEventsForDate === 0" class="bg-light p-3 text-secondary border bounded">
+                                    <span
+                                        v-if="filterStatus === ''">You have no appointments on <b>@{{ selectedDate }}</b></span>
+                                    <span
+                                        v-if="filterStatus !== ''">You have no appointments on <b>@{{ selectedDate }}</b> with status <b>@{{ filterStatus }}</b></span>
+                                </div>
+                            </div>
+                            <div v-show="!selectedDate" class="bg-light p-3 text-secondary border bounded">
+                                Please select a date from the calendar on the left
+                            </div>
+                        </div>
+                        <div v-show="tab==='measurements'">
+                            <div id="measurements-tab">Loading...</div>
+                        </div>
+                        <div v-show="tab==='incoming_reports'">
+                            @include('app.dashboard.incoming_reports')
+                        </div>
+                        <div v-show="tab==='erx'">
+                            @include('app.dashboard.erx')
+                        </div>
+                        <div v-show="tab==='labs'">
+                            @include('app.dashboard.labs')
+                        </div>
+                        <div v-show="tab==='imaging'">
+                            @include('app.dashboard.imaging')
+                        </div>
+                        <div v-show="tab==='supply_orders'">
+                            @include('app.dashboard.supply_orders')
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <div class="stag-popup stag-popup-md ticket-popup mcp-theme-1" stag-popup-key="ticket-popup"></div>
+
+    <script>
+        (function () {
+            function init() {
+                window.apapp = new Vue({
+                    el: '#pro-dashboard-container',
+                    delimiters: ['@{{', '}}'],
+                    data: {
+                        tab: '{{ request()->input('tab') ? request()->input('tab') : 'measurements' }}',
+                        datesWithEvents: [],
+                        selectedDate: '{{ date('Y-m-d') }}',
+                        selectedStatus: 'CREATED',
+                        events: [],
+                        numEventsForDate: 0,
+                        filterStatus: '',
+                        calendarElem: null,
+                        currentMonth: null,
+                        currentYear: null,
+                        measurementFilterStatus: 'ALL',
+                        measurements: {!! $pro->pro_type === 'ADMIN' ? '[]' : json_encode($pro->getMeasurements()) !!},
+                        appointmentsLoaded: false,
+                    },
+                    methods: {
+                        formatDate: function (date) {
+                            let d = new Date(date),
+                                month = '' + (d.getMonth() + 1),
+                                day = '' + d.getDate(),
+                                year = d.getFullYear();
+
+                            if (month.length < 2)
+                                month = '0' + month;
+                            if (day.length < 2)
+                                day = '0' + day;
+
+                            return [year, month, day].join('-');
+                        },
+                        onDateChange: function (_newDate) {
+                            let self = this;
+                            window.setTimeout(() => {
+                                // let dayValue = $('.pro-dashboard-inline-calendar td.day.active').first().text();
+                                // if(dayValue.length === 1) dayValue = '0' + dayValue;
+                                // self.selectedDate = _newDate.substr(0, 8) + dayValue;
+                                self.selectedDate = _newDate;
+                                showMask();
+                                self.loadEvents(self.selectedDate, function () {
+                                    hideMask();
+                                    Vue.nextTick(() => {
+                                        // self.highlightDatesWithEvents(self.datesWithEvents);
+                                        initFastLoad($('.appointments-tab'));
+                                    });
+                                });
+                            }, 25);
+                        },
+                        selectToday: function () {
+                            $('.pro-dashboard-inline-calendar table td[data-date]').removeClass('active');
+                            $('.pro-dashboard-inline-calendar table td[data-date="{{ $milliseconds }}"]')
+                                .addClass('active');
+                            // this.onDateChange('{{ date('Y-m-d') }}');
+                        },
+                        highlightDatesWithEvents: function (_dates) {
+                            $('.pro-dashboard-inline-calendar table td[data-date]').removeAttr('has-events');
+                            for (let i = 0; i < _dates.length; i++) {
+                                $('.pro-dashboard-inline-calendar table td[data-date="' + _dates[i] + '"]')
+                                    .attr('has-events', 1);
+                            }
+                        },
+                        updateStatus: function (_event) {
+                            $.post('/api/appointment/updateStatus', {
+                                uid: _event.uid,
+                                status: _event.newStatus
+                            }, function (_data) {
+                                if (!_data) {
+                                    toastr.error('Unable to update appointment status!');
+                                } else {
+                                    if (!_data.success) {
+                                        toastr.error(_data.message);
+                                    } else {
+                                        _event.status = _event.newStatus;
+                                        toastr.success('The appointment has been updated');
+                                    }
+                                }
+                            }, 'json')
+                        },
+                        showEditForm: function (_trigger) {
+                            let form = $(_trigger).closest('[moe]').find('form').first();
+                            showMoeFormMask();
+                            form.show();
+                            setTimeout(function () {
+                                initPrimaryForm(form);
+                            }, 0);
+                        },
+                        submitEditForm: function (_trigger) {
+                            let form = $(_trigger).closest('[moe]').find('form').first();
+                            if (!form[0].checkValidity()) {
+                                form[0].reportValidity();
+                                return;
+                            }
+                            $.post(form.attr('url'), form.serialize(), function (_data) {
+                                if (_data && _data.success) {
+                                    fastReload();
+                                } else {
+                                    if (_data.message) {
+                                        toastr.error(_data.message);
+                                    } else {
+                                        toastr.error('Unable to update the appointment');
+                                    }
+                                }
+                            });
+                        },
+                        cancelEditForm: function (_trigger) {
+                            let form = $(_trigger).closest('[moe]').find('form').first();
+                            hideMoeFormMask();
+                            form.hide();
+                        },
+                        loadEventDates: function (_refDate = false) {
+                            let today = new Date(_refDate ? _refDate : '{{date('Y-m-d')}}'),
+                                firstOfMonth = new Date(today.getFullYear(), today.getMonth(), 1),
+                                lastOfMonth = new Date(today.getFullYear(), today.getMonth() + 1, 0);
+
+                            this.selectedDate = null;
+                            $('td.day.active').removeClass('active');
+
+                            $.get('/pro-dashboard-event-dates/' +
+                                this.formatDate(firstOfMonth) + '/' +
+                                this.formatDate(lastOfMonth), (_data) => {
+                                this.datesWithEvents = _data;
+                                console.log(this.datesWithEvents);
+                                this.calendarElem.datepicker('refresh');
+                                // this.highlightDatesWithEvents(this.datesWithEvents);
+
+                                this.currentMonth = firstOfMonth.getMonth();
+                                this.currentYear = firstOfMonth.getFullYear();
+
+                                if (!_refDate && $('td.day[data-date="{{$milliseconds}}"]:visible').length) {
+                                    $('td.day[data-date="{{$milliseconds}}"]:visible').first().click();
+                                }
+
+                                this.appointmentsLoaded = true;
+                            }, 'json');
+                        },
+                        loadEvents: function (_date, _callback) {
+                            let self = this;
+                            $.get('/pro-dashboard-events/' + _date + '/' + _date, function (_data) {
+                                self.events = _data;
+                                self.numEventsForDate = (_data && _data.length) ? 1 : 0;
+                                _callback.call(self);
+                            }, 'json');
+                        },
+                        updateMeasurements: function () {
+                            $.get('/pro-dashboard-measurements/' + this.measurementFilterStatus, (_data) => {
+                                this.measurements = _data;
+                                Vue.nextTick(() => {
+                                    // this.initCMRTE();
+                                    $('#pro-dashboard-container').find('[moe][initialized]').removeAttr('initialized');
+                                    initMoes();
+                                });
+                            }, 'json');
+                        },
+                        setMeasurementStatus: function (_uid, _status) {
+                            $.post('/api/measurement/updateStatus', {
+                                uid: _uid,
+                                status: _status
+                            }, (_data) => {
+                                this.updateMeasurements();
+                            }, 'json');
+                        },
+                        initCMRTE: function () {
+                            $('#pro-dashboard-container [cm-rte]').each(function () {
+
+                                $(this).wrap(
+                                    $('<div class="border-left border-right rte-holder"/>')
+                                        .attr('data-shortcuts', '')
+                                );
+
+                                // give a unique id to this editor instance
+                                var editorID = Math.ceil(Math.random() * 99999), fieldName = $(this).attr('data-name');
+
+                                var el = this;
+                                var existingContent = $(el).attr('data-content');
+                                var quill = new Quill(el, {
+                                    theme: 'snow',
+                                    modules: stagQuillConfig
+                                });
+
+                                var toolbar = $(quill.container).prev('.ql-toolbar');
+
+                                // add button for new shortcut
+                                var newSCButton = $('<button class="btn bg-white btn-sm btn-default text-primary w-auto px-2 border py-0 ' +
+                                    'text-sm add-shortcut" data-editor-id="' + editorID + '">+ Shortcut</button>');
+                                toolbar.append(newSCButton);
+
+                                quill.root.innerHTML = existingContent;
+
+                                $('<input type="hidden" name="' + fieldName + '">').val(existingContent).insertAfter(el);
+
+                                quill.on('text-change', function (delta, oldDelta, source) {
+                                    $(el).next('[name="' + fieldName + '"]').val(quill.root.innerHTML);
+                                });
+
+                                $(quill.container)
+                                    .find('.ql-editor[contenteditable]')
+                                    .attr('data-field', fieldName)
+                                    .attr('data-editor-id', editorID)
+                                    .attr('with-shortcuts', 1);
+
+                            })
+                        },
+                        initLoadAppointments: function () {
+                            if (this.appointmentsLoaded) return false;
+                            this.loadEventDates();
+                        },
+                        loadMeasurements: function () {
+                            $('#measurements-tab').load('/pro-dashboard-measurements-tab', () => {
+                                initMoes();
+                                initFastLoad($('#measurements-tab'));
+                            });
+                        }
+                    },
+                    mounted: function () {
+                        let self = this;
+                        this.calendarElem = $('.pro-dashboard-inline-calendar');
+                        this.calendarElem.datepicker({
+                            dateFormat: 'yy-mm-dd',
+                            onSelect: function (_date) {
+                                self.onDateChange(_date);
+                            },
+                            onChangeMonthYear: function (_year, _month) {
+                                let date = _year + '-' + (_month < 10 ? '0' : '') + _month + '-05';
+                                self.loadEventDates(date);
+                            },
+                            beforeShowDay: function (d) {
+                                if (self.datesWithEvents && self.datesWithEvents.indexOf(self.formatDate(d)) !== -1) {
+                                    return [true, 'has-events'];
+                                }
+                                return [true, 'no-events'];
+                            }
+                        });
+                        // this.calendarElem
+                        //     .on('changeDate', function () {
+                        //         self.onDateChange(self.calendarElem.datepicker('getFormattedDate'));
+                        //     })
+                        //     .on('changeMonth', function () {
+                        //         window.setTimeout(function() {
+                        //             let ts = $('td.day[data-date]').first().closest('tr').find('td.day[data-date]').last().attr('data-date');
+                        //             if(ts) {
+                        //                 self.loadEventDates(ts);
+                        //             }
+                        //         }, 10);
+                        //     });
+
+
+                        $('#pro-dashboard-container').find('[moe][initialized]').removeAttr('initialized');
+                        initMoes();
+
+                        // init fast load
+                        initFastLoad($('#pro-dashboard-container'));
+
+                        $(document)
+                            .off('click', '.dashboard-measurements.pagination a.page-link')
+                            .on('click', '.dashboard-measurements.pagination a.page-link', function () {
+                                $('#measurements-tab').text('Loading...').load('/pro-dashboard-measurements-tab/' + $(this).attr('data-target-page'), () => {
+                                    initMoes();
+                                    initFastLoad($('#measurements-tab'));
+                                });
+                                return false;
+                            });
+
+                        this.loadMeasurements();
+                    }
+                });
+                /*// refresh once ticket popup is closed
+                $('body').off('stag-popup-closed')
+                $('body').on('stag-popup-closed', function() {
+                    if($('#pro-dashboard-container').length) {
+                        let activeTab = $('.nav-link.active[data-tab]').attr('data-tab');
+                        if(activeTab) {
+                            fastLoad('/?tab=' + activeTab);
+                        }
+                    }
+                });*/
+                // ticket-popup
+                $(document)
+                    .off('click', '.ticket-popup-trigger')
+                    .on('click', '.ticket-popup-trigger', function () {
+                        showMask();
+                        window.noMc = true;
+                        $.get(this.href, (_data) => {
+                            $('.ticket-popup').html(_data);
+                            showStagPopup('ticket-popup');
+                            $('.ticket-popup .stag-popup.stag-slide').attr('close-all-with-self', 1);
+                            runMCInitializer('patient-tickets'); // run specific mc initer
+                            hideMask();
+                        });
+                        return false;
+                    });
+
+                $(document)
+                    .off('click', '.ack-client-pro-change')
+                    .on('click', '.ack-client-pro-change', function () {
+                        let trigger = $(this).text('…');
+                        $.post('/api/clientProChange/accept', {
+                            uid: $(this).attr('data-uid')
+                        }, _data => {
+                            if (!hasResponseError(_data)) {
+                                trigger.hide();
+                                let doneElem = $('<i class="text-success fa fa-check"></i>');
+                                doneElem.insertAfter(trigger);
+                                setTimeout(() => {
+                                    let ackContainer = trigger.closest('.ack-container');
+                                    trigger.closest('div').slideUp('fast', function () {
+                                        $(this).remove();
+                                        if (!ackContainer.find('>div').length) {
+                                            ackContainer.remove();
+                                        }
+                                    });
+                                }, 500);
+                            }
+                        }, 'json');
+                        return false;
+                    });
+
+                $(document)
+                    .off('click', '.ack-client-memo')
+                    .on('click', '.ack-client-memo', function () {
+                        let trigger = $(this).text('…');
+                        $.post('/api/clientMemo/stamp', {
+                            uid: $(this).attr('data-uid')
+                        }, _data => {
+                            if (!hasResponseError(_data)) {
+                                trigger.hide();
+                                let doneElem = $('<i class="text-success fa fa-check"></i>');
+                                doneElem.insertAfter(trigger);
+                                setTimeout(() => {
+                                    let tbody = trigger.closest('tbody');
+                                    trigger.closest('tr').remove();
+                                    if (!tbody.find('>tr').length) {
+                                        tbody.closest('.ack-container').remove();
+                                    }
+                                }, 500);
+                            }
+                        }, 'json');
+                        return false;
+                    });
+
+                $(document)
+                    .off('click', '.ack-pro-appt-update')
+                    .on('click', '.ack-pro-appt-update', function () {
+                        let trigger = $(this).text('…');
+                        $.post('/api/appointmentConfirmationDecision/acknowledgeAsAppointmentPro', {
+                            uid: $(this).attr('data-uid')
+                        }, _data => {
+                            if (!hasResponseError(_data)) {
+                                trigger.hide();
+                                let doneElem = $('<i class="text-success fa fa-check"></i>');
+                                doneElem.insertAfter(trigger);
+                                setTimeout(() => {
+                                    let ackContainer = trigger.closest('tbody');
+                                    trigger.closest('tr').slideUp('fast', function () {
+                                        $(this).remove();
+                                        if (!ackContainer.find('>tr').length) {
+                                            ackContainer.remove();
+                                        }
+                                    });
+                                }, 500);
+                            }
+                        }, 'json');
+                        return false;
+                    });
+
+                $(document)
+                    .off('click', '.ack-na-appt-update')
+                    .on('click', '.ack-na-appt-update', function () {
+                        let trigger = $(this).text('…');
+                        $.post('/api/appointmentConfirmationDecision/acknowledgeAsClientDefaultNa', {
+                            uid: $(this).attr('data-uid')
+                        }, _data => {
+                            if (!hasResponseError(_data)) {
+                                trigger.hide();
+                                let doneElem = $('<i class="text-success fa fa-check"></i>');
+                                doneElem.insertAfter(trigger);
+                                setTimeout(() => {
+                                    let ackContainer = trigger.closest('tbody');
+                                    trigger.closest('tr').slideUp('fast', function () {
+                                        $(this).remove();
+                                        if (!ackContainer.find('>tr').length) {
+                                            ackContainer.remove();
+                                        }
+                                    });
+                                }, 500);
+                            }
+                        }, 'json');
+                        return false;
+                    });
+            }
+
+            addMCInitializer('pro-dashboard', init, '#pro-dashboard-container');
+        })();
+    </script>
+@endsection

+ 977 - 0
resources/views/app/dashboard-dna.blade.php

@@ -0,0 +1,977 @@
+@extends ('layouts.template')
+
+@section('content')
+
+    <style>
+        tr.thin th, tr.thin td {
+            padding: 0.25em;
+        }
+    </style>
+
+    <div class="p-3">
+        <div class="">
+            <div class="row mcp-theme-1" id="pro-dashboard-container" v-cloak>
+                <div class="col-md-3 mcp-theme-1">
+                    <div class="mb-4" v-show="tab==='appointments'">
+                        <div class="pro-dashboard-inline-calendar"></div>
+                    </div>
+                    <div class="card mb-4">
+                        <div class="card-header pl-2">
+                            <strong>
+                                Key Numbers
+                            </strong>
+                        </div>
+                        <div class="card-body p-0">
+                            <table class="table mb-0 dashboard-stats-table">
+                                <tbody>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_patients_count_as_mcp()}}</th>
+                                    <th class="pl-2">Patients</th>
+                                </tr>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_new_patients_awaiting_visit_count_as_mcp()}}</th>
+                                    <th class="pl-2">New Patients Awaiting Visit</th>
+                                </tr>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_notes_pending_signature_count_as_mcp()}}</th>
+                                    <th class="pl-2">Notes Pending Signature</th>
+                                </tr>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_notes_pending_billing_count_as_mcp()}}</th>
+                                    <th class="pl-2">Notes Pending Billing</th>
+                                </tr>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_incoming_reports_pending_signature_count_as_mcp()}}</th>
+                                    <th class="pl-2">Reports Pending Signature</th>
+                                </tr>
+
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_patients_without_appointment_count_as_mcp()}}</th>
+                                    <th class="pl-2">Patients w/o Appointments</th>
+                                </tr>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_patients_not_seen_in_45_days_count_as_mcp()}}</th>
+                                    <th class="pl-2">Patients Not Seen in 45 Days</th>
+                                </tr>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_cancelled_appointments_pending_acknowledgement_count_as_mcp()}}</th>
+                                    <th class="pl-2">Cancelled Appts. Pending Review</th>
+                                </tr>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_cancelled_bills_awaiting_review_count_as_mcp()}}</th>
+                                    <th class="pl-2">Cancelled Bills Pending Review</th>
+                                </tr>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_cancelled_supply_orders_awaiting_review_count_as_mcp()}}</th>
+                                    <th class="pl-2">Cancelled Supply Orders Pending Review</th>
+                                </tr>
+
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_erx_and_orders_awaiting_signature_count_as_mcp()}}</th>
+                                    <th class="pl-2">ERx & Orders Pending Signature</th>
+                                </tr>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_supply_orders_awaiting_signature_count_as_mcp()}}</th>
+                                    <th class="pl-2">Supply Orders Pending Signature</th>
+                                </tr>
+                                </tbody>
+                            </table>
+                        </div>
+                    </div>
+                    <div class="card mb-4">
+                        <div class="card-header pl-2">
+                            <strong>
+                                Remote Monitoring: {{friendly_month(date('Y-m-d'))}}
+                            </strong>
+                        </div>
+                        <div class="card-body p-0">
+                            <table class="table mb-0 dashboard-stats-table">
+                                <tbody>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_measurements_awaiting_review_count_as_mcp() ?? '-'}}</th>
+                                    <th class="pl-2">Measurements Pending Review</th>
+                                </tr>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_patients_without_remote_measurement_in_48_hours_count_as_mcp() ?? '-'}}</th>
+                                    <th class="pl-2">Patients w/o Measurement in 48 hrs.</th>
+                                </tr>
+                                </tbody>
+                            </table>
+                        </div>
+                    </div>
+                    <div class="card mb-4">
+                        <div class="card-header pl-2">
+                            <strong>
+                                Practice Management
+                            </strong>
+                        </div>
+                        <div class="card-body p-0">
+                            <table class="table mb-0 dashboard-stats-table">
+                                <tbody>
+                                <tr>
+                                    <th colspan="2">Revenue Cycle Management</th>
+                                </tr>
+                                <tr class="thin">
+                                    <th class="font-weight-normal px-2 pl-4">
+                                        ${{friendly_money($reimbursement['currentBalance'])}}</th>
+                                    <th class="font-weight-normal pl-2 w-100"><a
+                                            href="/practice-management/financial-transactions">Current balance</a></th>
+                                </tr>
+                                <!-- <tr>
+                                    <th class="px-2">{{friendly_date_time($reimbursement['nextPaymentDate'], false)}}</th>
+                                    <th class="pl-2">Next Payment Date</th>
+                                </tr> -->
+                                <tr class="thin">
+                                    <th class="font-weight-normal px-2 pl-4">${{friendly_money($reimbursement['nextPaymentAmount'])}}</th>
+                                    <th class="font-weight-normal pl-2"><a
+                                            href="/practice-management/bills-under-processing">Processing</a></th>
+                                </tr>
+                                <tr class="thin">
+                                    <th class="font-weight-normal px-2 pl-5">${{friendly_money($reimbursement['nextPaymentAmount'])}}</th>
+                                    <th class="font-weight-normal pl-2"><a
+                                            href="/practice-management/bills-under-processing">Treatment Services</a></th>
+                                </tr>
+                                <tr class="thin">
+                                    <th class="font-weight-normal px-2 pl-5">${{friendly_money($reimbursement['nextPaymentAmount'])}}</th>
+                                    <th class="font-weight-normal pl-2"><a
+                                            href="/practice-management/bills-under-processing">Remote Monitoring</a></th>
+                                </tr>
+                                <tr class="thin">
+                                    <th class="font-weight-normal px-2 pl-5">${{friendly_money($reimbursement['nextPaymentAmount'])}}</th>
+                                    <th class="font-weight-normal pl-2"><a
+                                            href="/practice-management/bills-under-processing">Other Services</a></th>
+                                </tr>
+                                {{--
+                                <tr>
+                                    <th class="px-2">{{$reimbursement['lastPayment']}}</th>
+                                    <th class="pl-2"><a href="/practice-management/financial-transactions">Last payment</a></th>
+                                </tr>
+                                <tr>
+                                    <th class="px-2">{{friendly_date_time($reimbursement['lastPaymentDate'], false)}}</th>
+                                    <th class="pl-2"><a href="/practice-management/financial-transactions">Last payment date</a></th>
+                                </tr>
+                                --}}
+                                </tbody>
+                            </table>
+                        </div>
+                    </div>
+                    @if($pro->pro_type === 'ADMIN')
+                        <div class="card mb-4">
+                            <div class="card-header pl-2">
+                                <strong>
+                                    Bills &amp; Claims
+                                </strong>
+                            </div>
+                            <div class="card-body p-0">
+                                <table class="table mb-0 dashboard-stats-table">
+                                    <tbody>
+
+                                    <tr>
+                                        <th class="border-top-1 px-2 text-center">{{$businessNumbers['notesWithBillsToResolve']}}</th>
+                                        <th class="border-top-1 pl-2">
+                                            <a href="/practice-management/billing-manager">Notes with bills to
+                                                resolve</a>
+                                        </th>
+                                    </tr>
+                                    <tr>
+                                        <th class="border-top-1 px-2 text-center">{{$businessNumbers['notesPendingBillingClosure']}}</th>
+                                        <th class="border-top-1 pl-2">
+                                            <a href="/practice-management/billing-manager">Notes pending billing
+                                                closure</a>
+                                        </th>
+                                    </tr>
+                                    </tbody>
+                                </table>
+                            </div>
+                        </div>
+                    @endif
+                </div>
+                <div class="col-md-9">
+
+                    <div class="row">
+                        <div class="col-6">
+
+                            <!-- Appointment Updates -->
+                            @if(count($proApptUpdates))
+                                <div class="mb-3 border rounded px-3 py-2 ack-container">
+                                    <p class="pt-1 mb-2"><b>Appointment Updates</b></p>
+                                    <table class="table table-sm table-hover table-bordered mb-0">
+                                        <thead>
+                                        <tr>
+                                            <th>Client</th>
+                                            <th>Appt. Date/Time</th>
+                                            <th>Status</th>
+                                            <th></th>
+                                        </tr>
+                                        </thead>
+                                        <tbody>
+                                        @foreach($proApptUpdates as $update)
+                                            <tr>
+                                                <td>{{$update->name_first}} {{$update->name_last}}</td>
+                                                <td>{{friendlier_date_time($update->start_time)}}</td>
+                                                <td>{{$update->status}}</td>
+                                                <td><a href="#" class="ack-pro-appt-update" data-uid="{{$update->uid}}">Acknowledge</a>
+                                                </td>
+                                            </tr>
+                                        @endforeach
+                                        </tbody>
+                                    </table>
+                                </div>
+                            @endif
+
+                            @if(count($naApptUpdates))
+                                <div class="mb-3 border rounded px-3 py-2 ack-container">
+                                    <p class="pt-1 mb-2"><b>Appointment Updates</b></p>
+                                    <table class="table table-sm table-hover table-bordered mb-0">
+                                        <thead>
+                                        <tr>
+                                            <th>Client</th>
+                                            <th>Pro</th>
+                                            <th>Appt. Date/Time</th>
+                                            <th>Status</th>
+                                            <th></th>
+                                        </tr>
+                                        </thead>
+                                        <tbody>
+                                        @foreach($naApptUpdates as $update)
+                                            <tr>
+                                                <td>{{$update->name_first}} {{$update->name_last}}</td>
+                                                <td>{{$update->pro_name_first}} {{$update->pro_name_last}}</td>
+                                                <td>{{friendlier_date_time($update->start_time)}}</td>
+                                                <td>{{$update->status}}</td>
+                                                <td><a href="#" class="ack-na-appt-update" data-uid="{{$update->uid}}">Acknowledge</a>
+                                                </td>
+                                            </tr>
+                                        @endforeach
+                                        </tbody>
+                                    </table>
+                                </div>
+                            @endif
+
+                        <!-- new associations -->
+                            @if(count($newMCPAssociations))
+                                <div class="mb-3 border rounded px-3 py-2 ack-container">
+                                    <p class="pt-1 mb-2"><b>New Patients</b></p>
+                                    @foreach($newMCPAssociations as $assoc)
+                                        <div class="d-flex align-items-start bg-light mb-2 px-2 py-1">
+                                            <div class="flex-grow-1">
+                                                You are now the MCP for
+                                                <a href="/patients/view/{{$assoc->patient->uid}}"
+                                                   class="">{{$assoc->patient->displayName()}}</a>
+                                                <?php $nextAppt = $assoc->patient->nextAppointment(); ?>
+                                                @if($nextAppt)
+                                                    <div class="font-size-11">
+                                                        <span class="text-secondary font-size-11">Appt.</span>
+                                                        {{$nextAppt->pro->displayName()}}
+                                                        <span class="text-secondary font-size-11">on</span>
+                                                        {{friendlier_date_time($nextAppt->raw_date . ' ' . $nextAppt->raw_start_time)}}
+                                                    </div>
+                                                    @if($nextAppt->status === 'CREATED')
+                                                        <div
+                                                            class="text-warning-mellow font-weight-bold font-size-11 mt-1">
+                                                            <i class="fa fa-exclamation-triangle"></i>
+                                                            Confirmation pending
+                                                        </div>
+                                                    @endif
+                                                    @if($nextAppt->status === 'CONFIRMED')
+                                                        <div class="text-success font-weight-bold font-size-11 mt-1">
+                                                            <i class="fa fa-check"></i>
+                                                            Confirmed by the patient
+                                                        </div>
+                                                    @endif
+                                                    @if($nextAppt->status === 'REJECTED')
+                                                        <div class="text-danger font-weight-bold font-size-11 mt-1">
+                                                            <i class="fa fa-stop"></i>
+                                                            Rejected by the patient
+                                                        </div>
+                                                    @endif
+                                                @endif
+                                            </div>
+                                            <a href="#" class="ack-client-pro-change ml-3" data-uid="{{$assoc->uid}}">Stamp</a>
+                                        </div>
+                                    @endforeach
+                                </div>
+                            @endif
+
+                            @if(count($newNAAssociations))
+                                <div class="mb-3 border rounded px-3 py-2 ack-container">
+                                    <p class="pt-1 mb-2"><b>New Patients</b></p>
+                                    @foreach($newNAAssociations as $assoc)
+                                        <div class="d-flex align-items-start bg-light mb-2 px-2 py-1">
+                                            <div class="flex-grow-1">
+                                                You are now the Care Coordinator for
+                                                <a href="/patients/view/{{$assoc->patient->uid}}"
+                                                   class="">{{$assoc->patient->displayName()}}</a>
+                                                <?php $nextAppt = $assoc->patient->nextAppointment(); ?>
+                                                @if($nextAppt)
+                                                    <div class="font-size-11">
+                                                        <span class="text-secondary font-size-11">Appt.</span>
+                                                        {{$nextAppt->pro->displayName()}}
+                                                        <span class="text-secondary font-size-11">on</span>
+                                                        {{friendlier_date_time($nextAppt->raw_date . ' ' . $nextAppt->raw_start_time)}}
+                                                    </div>
+                                                    @if($nextAppt->status === 'CREATED')
+                                                        <div
+                                                            class="text-warning-mellow font-weight-bold font-size-11 mt-1">
+                                                            <i class="fa fa-exclamation-triangle"></i>
+                                                            Confirmation pending
+                                                        </div>
+                                                    @endif
+                                                    @if($nextAppt->status === 'CONFIRMED')
+                                                        <div class="text-success font-weight-bold font-size-11 mt-1">
+                                                            <i class="fa fa-check"></i>
+                                                            Confirmed by the patient
+                                                        </div>
+                                                    @endif
+                                                    @if($nextAppt->status === 'REJECTED')
+                                                        <div class="text-danger font-weight-bold font-size-11 mt-1">
+                                                            <i class="fa fa-stop"></i>
+                                                            Rejected by the patient
+                                                        </div>
+                                                    @endif
+                                                @endif
+                                            </div>
+                                            <a href="#" class="ack-client-pro-change"
+                                               data-uid="{{$assoc->uid}}">Stamp</a>
+                                        </div>
+                                    @endforeach
+                                </div>
+                            @endif
+                        </div>
+                        <div class="col-6">
+                            @if(count($mcpClientMemos))
+                                <div class="mb-3 border rounded px-3 py-2 ack-container">
+                                    <p class="pt-1 mb-2"><b>New Patients Memos (MCP)</b></p>
+                                    <table class="table table-sm table-hover table-bordered">
+                                        <thead>
+                                        <tr>
+                                            <th>Patient</th>
+                                            <th>Memo</th>
+                                            <th>Created</th>
+                                            <th></th>
+                                        </tr>
+                                        </thead>
+                                        <tbody>
+                                        @foreach($mcpClientMemos as $memo)
+                                            <tr>
+                                                <td class="">
+                                                    <a href="/patients/view/{{$memo->client_uid}}">{{$memo->name_first}} {{$memo->name_last}}</a>
+                                                </td>
+                                                <td>{!! $memo->content !!}</td>
+                                                <td class="text-nowrap">{{friendlier_date_time($memo->created_at)}}</td>
+                                                <td><a href="#" class="ack-client-memo"
+                                                       data-uid="{{$memo->uid}}">Stamp</a></td>
+                                            </tr>
+                                        @endforeach
+                                        </tbody>
+                                    </table>
+                                </div>
+                            @endif
+                            @if(count($naClientMemos))
+                                <div class="mb-3 border rounded px-3 py-2 ack-container">
+                                    <p class="pt-1 mb-2"><b>New Patients Memos (NA)</b></p>
+                                    <table class="table table-sm table-hover table-bordered">
+                                        <thead>
+                                        <tr>
+                                            <th>Patient</th>
+                                            <th>Memo</th>
+                                            <th>Created</th>
+                                            <th></th>
+                                        </tr>
+                                        </thead>
+                                        <tbody>
+                                        @foreach($naClientMemos as $memo)
+                                            <tr>
+                                                <td class="">
+                                                    <a href="/patients/view/{{$memo->client_uid}}">{{$memo->name_first}} {{$memo->name_last}}</a>
+                                                </td>
+                                                <td>{!! $memo->content !!}</td>
+                                                <td class="text-nowrap">{{friendlier_date_time($memo->created_at)}}</td>
+                                                <td><a href="#" class="ack-client-memo"
+                                                       data-uid="{{$memo->uid}}">Stamp</a></td>
+                                            </tr>
+                                        @endforeach
+                                        </tbody>
+                                    </table>
+                                </div>
+                            @endif
+                        </div>
+                    </div>
+
+                    <ul class="nav nav-tabs">
+                        <li class="nav-item">
+                            <a native data-tab="appointments" class="nav-link"
+                               :class="tab == 'appointments' ? 'active' : ''" href="#"
+                               v-on:click.prevent="tab='appointments'; initLoadAppointments();">
+                                Appointments
+                            </a>
+                        </li>
+                        <li class="nav-item">
+                            <a native data-tab="measurements" class="nav-link"
+                               :class="tab == 'measurements' ? 'active' : ''" href="#"
+                               v-on:click.prevent="tab='measurements'; loadMeasurements();">
+                                Measurements
+                            </a>
+                        </li>
+                        <li class="nav-item">
+                            <a native data-tab="incoming_reports"
+                               class="nav-link {{count($incomingReports) ? 'text-danger font-weight-bold' : ''}}"
+                               :class="tab == 'incoming_reports' ? 'active' : ''" href="#"
+                               v-on:click.prevent="tab='incoming_reports'">
+                                Incoming Reports ({{count($incomingReports)}})
+                            </a>
+                        </li>
+                        <li class="nav-item">
+                            <a native data-tab="erx" class="nav-link {{$numERx ? 'text-danger font-weight-bold' : ''}}"
+                               :class="tab == 'erx' ? 'active' : ''" href="#"
+                               v-on:click.prevent="tab='erx'">
+                                ERx ({{$numERx}})
+                            </a>
+                        </li>
+                        <li class="nav-item">
+                            <a native data-tab="labs"
+                               class="nav-link {{$numLabs ? 'text-danger font-weight-bold' : ''}}"
+                               :class="tab == 'labs' ? 'active' : ''" href="#"
+                               v-on:click.prevent="tab='labs'">
+                                Labs ({{$numLabs}})
+                            </a>
+                        </li>
+                        <li class="nav-item">
+                            <a native data-tab="imaging"
+                               class="nav-link {{$numImaging ? 'text-danger font-weight-bold' : ''}}"
+                               :class="tab == 'imaging' ? 'active' : ''" href="#"
+                               v-on:click.prevent="tab='imaging'">
+                                Imaging ({{$numImaging}})
+                            </a>
+                        </li>
+                        <li class="nav-item">
+                            <a native data-tab="supply_orders"
+                               class="nav-link {{$numSupplyOrders ? 'text-danger font-weight-bold' : ''}}"
+                               :class="tab == 'supply_orders' ? 'active' : ''" href="#"
+                               v-on:click.prevent="tab='supply_orders'">
+                                Supply Orders ({{$numSupplyOrders}})
+                            </a>
+                        </li>
+                    </ul>
+
+                    <div class="border-left border-right border-bottom p-3">
+                        <div v-show="tab==='appointments'" class="appointments-tab">
+                            <div v-show="selectedDate">
+                                <div class="d-flex align-items-end mb-3">
+                                    <b class="large"><span class="text-secondary">Today:</span> @{{ selectedDate }}</b>
+                                    <div class="ml-auto d-inline-flex align-items-center">
+                                        <label class="text-secondary mr-2 my-0 text-nowrap">Filter by status:</label>
+                                        <select v-model="filterStatus"
+                                                class="form-control form-control-sm">
+                                            <option value="">All</option>
+                                            <option value="CREATED">Created</option>
+                                            <option value="CONFIRMED">Confirmed</option>
+                                            <option value="CANCELLED">Cancelled</option>
+                                            <option value="COMPLETED">Completed</option>
+                                            <option value="ABANDONED">Abandoned</option>
+                                        </select>
+                                    </div>
+                                </div>
+                                <div v-for="event in events" class="align-items-end p-3 border rounded mb-3"
+                                     :class="(event.dateYMD === selectedDate && (filterStatus === '' || filterStatus === event.status) ? 'd-flex' : 'd-none') + ' ' + (event.isClientShadowOfPro ? 'training-event' : '')">
+                                    <div class="patient-avatar mr-3 align-self-center">
+                                        <i v-if="event.isClientShadowOfPro" class="fa fa-graduation-cap training-icon"
+                                           :title="event.proInitials"></i>
+                                        <span v-else class="">@{{ event.proInitials }}</span>
+                                    </div>
+                                    <div>
+                                        <div class="pb-1">
+                                            <b class="text-info">@{{ event.proName }}</b>
+                                            &nbsp;/&nbsp;
+                                            @{{ event.friendlyStartTime }} - @{{ event.friendlyEndTime }} <span
+                                                class="text-secondary">@{{ event.timezone }}</span>
+                                            &nbsp;/&nbsp;
+                                            <span class="d-inline-block ml- 2 text-secondary font-weight-bold">@{{ event.title }}</span>
+                                        </div>
+                                        <div class="pb-1">
+                                            <a :href="'/patients/view/' + event.clientUid" class="font-weight-bold">@{{
+                                                event.clientName }}</a>
+                                            <span class="small d-inline-block pl-2 text-secondary font-weight-normal">@{{ event.clientSummary }}</span>
+                                        </div>
+                                        <div class="d-flex align-items-baseline">
+                                            <div v-if="event.status === 'CREATED'"
+                                                 class="text-warning-mellow font-weight-bold">
+                                                <i class="fa fa-exclamation-triangle"></i>
+                                                Confirmation pending
+                                            </div>
+                                            <div v-else-if="event.status === 'CONFIRMED'"
+                                                 class="text-success font-weight-bold">
+                                                <i class="fa fa-check"></i>
+                                                Confirmed by the patient
+                                            </div>
+                                            <div v-else-if="event.status === 'REJECTED'"
+                                                 class="text-danger font-weight-bold">
+                                                <i class="fa fa-stop"></i>
+                                                Rejected by the patient
+                                            </div>
+                                            <div v-else class="text-secondary">
+                                                Status: <b>@{{ event.status }}</b>
+                                            </div>
+                                            <span class="mx-2 text-secondary">|</span>
+                                            <a :href="'/patients/view/' + event.clientUid + '/calendar/' + event.uid">
+                                                <i class="fa fa-edit"></i>
+                                                Edit Appointment
+                                            </a>
+                                        </div>
+                                        <div class="mt-1"
+                                             :class="event.coverage !== 'YES' ? (event.coverage === 'NO' ? 'text-danger' : 'text-warning-mellow') : 'text-success'">
+                                            Coverage Status: <b>@{{ event.coverage }}</b>
+                                        </div>
+                                    </div>
+                                    <div class="ml-auto">
+                                        <select v-model="event.newStatus"
+                                                class="form-control form-control-sm bg-light"
+                                                v-on:change="updateStatus(event)">
+                                            <option value="CREATED">CREATED</option>
+                                            <option value="CONFIRMED">CONFIRMED</option>
+                                            <option value="CANCELLED">CANCELLED</option>
+                                            <option value="COMPLETED">COMPLETED</option>
+                                            <option value="ABANDONED">ABANDONED</option>
+                                        </select>
+                                        <div v-if="selectedDate === '{{ date('Y-m-d') }}'"
+                                             class="pt-1 text-right"
+                                             :class="event.started ? 'text-danger': 'text-secondary'">
+                                            @{{ event.inHowManyHours }}
+                                        </div>
+                                    </div>
+                                </div>
+                                <div v-if="numEventsForDate === 0" class="bg-light p-3 text-secondary border bounded">
+                                    <span
+                                        v-if="filterStatus === ''">You have no appointments on <b>@{{ selectedDate }}</b></span>
+                                    <span
+                                        v-if="filterStatus !== ''">You have no appointments on <b>@{{ selectedDate }}</b> with status <b>@{{ filterStatus }}</b></span>
+                                </div>
+                            </div>
+                            <div v-show="!selectedDate" class="bg-light p-3 text-secondary border bounded">
+                                Please select a date from the calendar on the left
+                            </div>
+                        </div>
+                        <div v-show="tab==='measurements'">
+                            <div id="measurements-tab">Loading...</div>
+                        </div>
+                        <div v-show="tab==='incoming_reports'">
+                            @include('app.dashboard.incoming_reports')
+                        </div>
+                        <div v-show="tab==='erx'">
+                            @include('app.dashboard.erx')
+                        </div>
+                        <div v-show="tab==='labs'">
+                            @include('app.dashboard.labs')
+                        </div>
+                        <div v-show="tab==='imaging'">
+                            @include('app.dashboard.imaging')
+                        </div>
+                        <div v-show="tab==='supply_orders'">
+                            @include('app.dashboard.supply_orders')
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <div class="stag-popup stag-popup-md ticket-popup mcp-theme-1" stag-popup-key="ticket-popup"></div>
+
+    <script>
+        (function () {
+            function init() {
+                window.apapp = new Vue({
+                    el: '#pro-dashboard-container',
+                    delimiters: ['@{{', '}}'],
+                    data: {
+                        tab: '{{ request()->input('tab') ? request()->input('tab') : 'measurements' }}',
+                        datesWithEvents: [],
+                        selectedDate: '{{ date('Y-m-d') }}',
+                        selectedStatus: 'CREATED',
+                        events: [],
+                        numEventsForDate: 0,
+                        filterStatus: '',
+                        calendarElem: null,
+                        currentMonth: null,
+                        currentYear: null,
+                        measurementFilterStatus: 'ALL',
+                        measurements: {!! $pro->pro_type === 'ADMIN' ? '[]' : json_encode($pro->getMeasurements()) !!},
+                        appointmentsLoaded: false,
+                    },
+                    methods: {
+                        formatDate: function (date) {
+                            let d = new Date(date),
+                                month = '' + (d.getMonth() + 1),
+                                day = '' + d.getDate(),
+                                year = d.getFullYear();
+
+                            if (month.length < 2)
+                                month = '0' + month;
+                            if (day.length < 2)
+                                day = '0' + day;
+
+                            return [year, month, day].join('-');
+                        },
+                        onDateChange: function (_newDate) {
+                            let self = this;
+                            window.setTimeout(() => {
+                                // let dayValue = $('.pro-dashboard-inline-calendar td.day.active').first().text();
+                                // if(dayValue.length === 1) dayValue = '0' + dayValue;
+                                // self.selectedDate = _newDate.substr(0, 8) + dayValue;
+                                self.selectedDate = _newDate;
+                                showMask();
+                                self.loadEvents(self.selectedDate, function () {
+                                    hideMask();
+                                    Vue.nextTick(() => {
+                                        // self.highlightDatesWithEvents(self.datesWithEvents);
+                                        initFastLoad($('.appointments-tab'));
+                                    });
+                                });
+                            }, 25);
+                        },
+                        selectToday: function () {
+                            $('.pro-dashboard-inline-calendar table td[data-date]').removeClass('active');
+                            $('.pro-dashboard-inline-calendar table td[data-date="{{ $milliseconds }}"]')
+                                .addClass('active');
+                            // this.onDateChange('{{ date('Y-m-d') }}');
+                        },
+                        highlightDatesWithEvents: function (_dates) {
+                            $('.pro-dashboard-inline-calendar table td[data-date]').removeAttr('has-events');
+                            for (let i = 0; i < _dates.length; i++) {
+                                $('.pro-dashboard-inline-calendar table td[data-date="' + _dates[i] + '"]')
+                                    .attr('has-events', 1);
+                            }
+                        },
+                        updateStatus: function (_event) {
+                            $.post('/api/appointment/updateStatus', {
+                                uid: _event.uid,
+                                status: _event.newStatus
+                            }, function (_data) {
+                                if (!_data) {
+                                    toastr.error('Unable to update appointment status!');
+                                } else {
+                                    if (!_data.success) {
+                                        toastr.error(_data.message);
+                                    } else {
+                                        _event.status = _event.newStatus;
+                                        toastr.success('The appointment has been updated');
+                                    }
+                                }
+                            }, 'json')
+                        },
+                        showEditForm: function (_trigger) {
+                            let form = $(_trigger).closest('[moe]').find('form').first();
+                            showMoeFormMask();
+                            form.show();
+                            setTimeout(function () {
+                                initPrimaryForm(form);
+                            }, 0);
+                        },
+                        submitEditForm: function (_trigger) {
+                            let form = $(_trigger).closest('[moe]').find('form').first();
+                            if (!form[0].checkValidity()) {
+                                form[0].reportValidity();
+                                return;
+                            }
+                            $.post(form.attr('url'), form.serialize(), function (_data) {
+                                if (_data && _data.success) {
+                                    fastReload();
+                                } else {
+                                    if (_data.message) {
+                                        toastr.error(_data.message);
+                                    } else {
+                                        toastr.error('Unable to update the appointment');
+                                    }
+                                }
+                            });
+                        },
+                        cancelEditForm: function (_trigger) {
+                            let form = $(_trigger).closest('[moe]').find('form').first();
+                            hideMoeFormMask();
+                            form.hide();
+                        },
+                        loadEventDates: function (_refDate = false) {
+                            let today = new Date(_refDate ? _refDate : '{{date('Y-m-d')}}'),
+                                firstOfMonth = new Date(today.getFullYear(), today.getMonth(), 1),
+                                lastOfMonth = new Date(today.getFullYear(), today.getMonth() + 1, 0);
+
+                            this.selectedDate = null;
+                            $('td.day.active').removeClass('active');
+
+                            $.get('/pro-dashboard-event-dates/' +
+                                this.formatDate(firstOfMonth) + '/' +
+                                this.formatDate(lastOfMonth), (_data) => {
+                                this.datesWithEvents = _data;
+                                console.log(this.datesWithEvents);
+                                this.calendarElem.datepicker('refresh');
+                                // this.highlightDatesWithEvents(this.datesWithEvents);
+
+                                this.currentMonth = firstOfMonth.getMonth();
+                                this.currentYear = firstOfMonth.getFullYear();
+
+                                if (!_refDate && $('td.day[data-date="{{$milliseconds}}"]:visible').length) {
+                                    $('td.day[data-date="{{$milliseconds}}"]:visible').first().click();
+                                }
+
+                                this.appointmentsLoaded = true;
+                            }, 'json');
+                        },
+                        loadEvents: function (_date, _callback) {
+                            let self = this;
+                            $.get('/pro-dashboard-events/' + _date + '/' + _date, function (_data) {
+                                self.events = _data;
+                                self.numEventsForDate = (_data && _data.length) ? 1 : 0;
+                                _callback.call(self);
+                            }, 'json');
+                        },
+                        updateMeasurements: function () {
+                            $.get('/pro-dashboard-measurements/' + this.measurementFilterStatus, (_data) => {
+                                this.measurements = _data;
+                                Vue.nextTick(() => {
+                                    // this.initCMRTE();
+                                    $('#pro-dashboard-container').find('[moe][initialized]').removeAttr('initialized');
+                                    initMoes();
+                                });
+                            }, 'json');
+                        },
+                        setMeasurementStatus: function (_uid, _status) {
+                            $.post('/api/measurement/updateStatus', {
+                                uid: _uid,
+                                status: _status
+                            }, (_data) => {
+                                this.updateMeasurements();
+                            }, 'json');
+                        },
+                        initCMRTE: function () {
+                            $('#pro-dashboard-container [cm-rte]').each(function () {
+
+                                $(this).wrap(
+                                    $('<div class="border-left border-right rte-holder"/>')
+                                        .attr('data-shortcuts', '')
+                                );
+
+                                // give a unique id to this editor instance
+                                var editorID = Math.ceil(Math.random() * 99999), fieldName = $(this).attr('data-name');
+
+                                var el = this;
+                                var existingContent = $(el).attr('data-content');
+                                var quill = new Quill(el, {
+                                    theme: 'snow',
+                                    modules: stagQuillConfig
+                                });
+
+                                var toolbar = $(quill.container).prev('.ql-toolbar');
+
+                                // add button for new shortcut
+                                var newSCButton = $('<button class="btn bg-white btn-sm btn-default text-primary w-auto px-2 border py-0 ' +
+                                    'text-sm add-shortcut" data-editor-id="' + editorID + '">+ Shortcut</button>');
+                                toolbar.append(newSCButton);
+
+                                quill.root.innerHTML = existingContent;
+
+                                $('<input type="hidden" name="' + fieldName + '">').val(existingContent).insertAfter(el);
+
+                                quill.on('text-change', function (delta, oldDelta, source) {
+                                    $(el).next('[name="' + fieldName + '"]').val(quill.root.innerHTML);
+                                });
+
+                                $(quill.container)
+                                    .find('.ql-editor[contenteditable]')
+                                    .attr('data-field', fieldName)
+                                    .attr('data-editor-id', editorID)
+                                    .attr('with-shortcuts', 1);
+
+                            })
+                        },
+                        initLoadAppointments: function () {
+                            if (this.appointmentsLoaded) return false;
+                            this.loadEventDates();
+                        },
+                        loadMeasurements: function () {
+                            $('#measurements-tab').load('/pro-dashboard-measurements-tab', () => {
+                                initMoes();
+                                initFastLoad($('#measurements-tab'));
+                            });
+                        }
+                    },
+                    mounted: function () {
+                        let self = this;
+                        this.calendarElem = $('.pro-dashboard-inline-calendar');
+                        this.calendarElem.datepicker({
+                            dateFormat: 'yy-mm-dd',
+                            onSelect: function (_date) {
+                                self.onDateChange(_date);
+                            },
+                            onChangeMonthYear: function (_year, _month) {
+                                let date = _year + '-' + (_month < 10 ? '0' : '') + _month + '-05';
+                                self.loadEventDates(date);
+                            },
+                            beforeShowDay: function (d) {
+                                if (self.datesWithEvents && self.datesWithEvents.indexOf(self.formatDate(d)) !== -1) {
+                                    return [true, 'has-events'];
+                                }
+                                return [true, 'no-events'];
+                            }
+                        });
+                        // this.calendarElem
+                        //     .on('changeDate', function () {
+                        //         self.onDateChange(self.calendarElem.datepicker('getFormattedDate'));
+                        //     })
+                        //     .on('changeMonth', function () {
+                        //         window.setTimeout(function() {
+                        //             let ts = $('td.day[data-date]').first().closest('tr').find('td.day[data-date]').last().attr('data-date');
+                        //             if(ts) {
+                        //                 self.loadEventDates(ts);
+                        //             }
+                        //         }, 10);
+                        //     });
+
+
+                        $('#pro-dashboard-container').find('[moe][initialized]').removeAttr('initialized');
+                        initMoes();
+
+                        // init fast load
+                        initFastLoad($('#pro-dashboard-container'));
+
+                        $(document)
+                            .off('click', '.dashboard-measurements.pagination a.page-link')
+                            .on('click', '.dashboard-measurements.pagination a.page-link', function () {
+                                $('#measurements-tab').text('Loading...').load('/pro-dashboard-measurements-tab/' + $(this).attr('data-target-page'), () => {
+                                    initMoes();
+                                    initFastLoad($('#measurements-tab'));
+                                });
+                                return false;
+                            });
+
+                        this.loadMeasurements();
+                    }
+                });
+                /*// refresh once ticket popup is closed
+                $('body').off('stag-popup-closed')
+                $('body').on('stag-popup-closed', function() {
+                    if($('#pro-dashboard-container').length) {
+                        let activeTab = $('.nav-link.active[data-tab]').attr('data-tab');
+                        if(activeTab) {
+                            fastLoad('/?tab=' + activeTab);
+                        }
+                    }
+                });*/
+                // ticket-popup
+                $(document)
+                    .off('click', '.ticket-popup-trigger')
+                    .on('click', '.ticket-popup-trigger', function () {
+                        showMask();
+                        window.noMc = true;
+                        $.get(this.href, (_data) => {
+                            $('.ticket-popup').html(_data);
+                            showStagPopup('ticket-popup');
+                            $('.ticket-popup .stag-popup.stag-slide').attr('close-all-with-self', 1);
+                            runMCInitializer('patient-tickets'); // run specific mc initer
+                            hideMask();
+                        });
+                        return false;
+                    });
+
+                $(document)
+                    .off('click', '.ack-client-pro-change')
+                    .on('click', '.ack-client-pro-change', function () {
+                        let trigger = $(this).text('…');
+                        $.post('/api/clientProChange/accept', {
+                            uid: $(this).attr('data-uid')
+                        }, _data => {
+                            if (!hasResponseError(_data)) {
+                                trigger.hide();
+                                let doneElem = $('<i class="text-success fa fa-check"></i>');
+                                doneElem.insertAfter(trigger);
+                                setTimeout(() => {
+                                    let ackContainer = trigger.closest('.ack-container');
+                                    trigger.closest('div').slideUp('fast', function () {
+                                        $(this).remove();
+                                        if (!ackContainer.find('>div').length) {
+                                            ackContainer.remove();
+                                        }
+                                    });
+                                }, 500);
+                            }
+                        }, 'json');
+                        return false;
+                    });
+
+                $(document)
+                    .off('click', '.ack-client-memo')
+                    .on('click', '.ack-client-memo', function () {
+                        let trigger = $(this).text('…');
+                        $.post('/api/clientMemo/stamp', {
+                            uid: $(this).attr('data-uid')
+                        }, _data => {
+                            if (!hasResponseError(_data)) {
+                                trigger.hide();
+                                let doneElem = $('<i class="text-success fa fa-check"></i>');
+                                doneElem.insertAfter(trigger);
+                                setTimeout(() => {
+                                    let tbody = trigger.closest('tbody');
+                                    trigger.closest('tr').remove();
+                                    if (!tbody.find('>tr').length) {
+                                        tbody.closest('.ack-container').remove();
+                                    }
+                                }, 500);
+                            }
+                        }, 'json');
+                        return false;
+                    });
+
+                $(document)
+                    .off('click', '.ack-pro-appt-update')
+                    .on('click', '.ack-pro-appt-update', function () {
+                        let trigger = $(this).text('…');
+                        $.post('/api/appointmentConfirmationDecision/acknowledgeAsAppointmentPro', {
+                            uid: $(this).attr('data-uid')
+                        }, _data => {
+                            if (!hasResponseError(_data)) {
+                                trigger.hide();
+                                let doneElem = $('<i class="text-success fa fa-check"></i>');
+                                doneElem.insertAfter(trigger);
+                                setTimeout(() => {
+                                    let ackContainer = trigger.closest('tbody');
+                                    trigger.closest('tr').slideUp('fast', function () {
+                                        $(this).remove();
+                                        if (!ackContainer.find('>tr').length) {
+                                            ackContainer.remove();
+                                        }
+                                    });
+                                }, 500);
+                            }
+                        }, 'json');
+                        return false;
+                    });
+
+                $(document)
+                    .off('click', '.ack-na-appt-update')
+                    .on('click', '.ack-na-appt-update', function () {
+                        let trigger = $(this).text('…');
+                        $.post('/api/appointmentConfirmationDecision/acknowledgeAsClientDefaultNa', {
+                            uid: $(this).attr('data-uid')
+                        }, _data => {
+                            if (!hasResponseError(_data)) {
+                                trigger.hide();
+                                let doneElem = $('<i class="text-success fa fa-check"></i>');
+                                doneElem.insertAfter(trigger);
+                                setTimeout(() => {
+                                    let ackContainer = trigger.closest('tbody');
+                                    trigger.closest('tr').slideUp('fast', function () {
+                                        $(this).remove();
+                                        if (!ackContainer.find('>tr').length) {
+                                            ackContainer.remove();
+                                        }
+                                    });
+                                }, 500);
+                            }
+                        }, 'json');
+                        return false;
+                    });
+            }
+
+            addMCInitializer('pro-dashboard', init, '#pro-dashboard-container');
+        })();
+    </script>
+@endsection

+ 776 - 0
resources/views/app/dashboard-mcp.blade.php

@@ -0,0 +1,776 @@
+@extends ('layouts.template')
+
+@section('content')
+
+    <style>
+        #dashboard-mcp tr.thin th,
+        #dashboard-mcp tr.thin td,
+        #dashboard-mcp .dashboard-stats-table tr td,
+        #dashboard-mcp .dashboard-stats-table tr th {
+            padding: 0.25em;
+            font-weight: normal;
+        }
+
+        #dashboard-mcp table.appointments tr td {
+            vertical-align: middle;
+        }
+    </style>
+
+    <div id="dashboard-mcp">
+    <div class="p-3">
+        <div class="">
+            <div class="row mcp-theme-1" id="pro-dashboard-container" v-cloak>
+                <div class="col-md-3 mcp-theme-1">
+                    <div class="mb-4">
+                        <div class="pro-dashboard-inline-calendar"></div>
+                    </div>
+                    <div class="card mb-4">
+                        <div class="card-header pl-2">
+                            <strong>
+                                Key Numbers
+                            </strong>
+                        </div>
+                        <div class="card-body p-0">
+                            <table class="table table-sm mb-0 dashboard-stats-table">
+                                <tbody>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_patients_count_as_mcp()}}</th>
+                                    <th class="pl-2">
+                                        <a href="{{ route('mcp.patients') }}">Patients</a>
+                                    </th>
+                                </tr>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_new_patients_awaiting_visit_count_as_mcp()}}</th>
+                                    <th class="pl-2">
+                                        <a href="{{ route('mcp.new_patients_awaiting_visit') }}"
+                                           native target="_blank"
+                                           open-in-stag-popup
+                                           popup-style="tall"
+                                           title="New Patients Awaiting Visit">
+                                            New Patients Awaiting Visit
+                                        </a>
+                                    </th>
+                                </tr>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_notes_pending_signature_count_as_mcp()}}</th>
+                                    <th class="pl-2">
+                                        <a href="{{ route('mcp.notes_pending_signature') }}"
+                                           native target="_blank"
+                                           open-in-stag-popup
+                                           popup-style="tall"
+                                           title="Notes Pending Signature">
+                                            Notes Pending Signature
+                                        </a>
+                                    </th>
+                                </tr>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_notes_pending_billing_count_as_mcp()}}</th>
+                                    <th class="pl-2">
+                                        <a href="{{ route('mcp.notes_pending_billing') }}"
+                                           native target="_blank"
+                                           open-in-stag-popup
+                                           popup-style="tall"
+                                           title="Notes Pending Billing">
+                                            Notes Pending Billing
+                                        </a>
+                                    </th>
+                                </tr>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_incoming_reports_pending_signature_count_as_mcp()}}</th>
+                                    <th class="pl-2">
+                                        <a href="{{ route('mcp.reports_pending_signature') }}"
+                                           native target="_blank"
+                                           open-in-stag-popup
+                                           popup-style="tall"
+                                           title="Reports Pending Signature">
+                                            Reports Pending Signature
+                                        </a>
+                                    </th>
+                                </tr>
+
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_patients_without_appointment_count_as_mcp()}}</th>
+                                    <th class="pl-2">
+                                        <a href="{{ route('mcp.patients_without_appointments') }}"
+                                           native target="_blank"
+                                           open-in-stag-popup
+                                           popup-style="tall"
+                                           title="Patients w/o Appointments">
+                                            Patients w/o Appointments
+                                        </a>
+                                    </th>
+                                </tr>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_patients_overdue_count_as_mcp()}}</th>
+                                    <th class="pl-2">
+                                        <a href="{{ route('mcp.patients_overdue_for_visit') }}"
+                                           native target="_blank"
+                                           open-in-stag-popup
+                                           popup-style="tall"
+                                           title="Patients Overdue for Visit">
+                                            Patients Overdue for Visit
+                                        </a>
+                                    </th>
+                                </tr>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_cancelled_appointments_pending_acknowledgement_count_as_mcp()}}</th>
+                                    <th class="pl-2">
+                                        <a href="{{ route('mcp.cancelled_appointments_pending_review') }}"
+                                           native target="_blank"
+                                           open-in-stag-popup
+                                           popup-style="tall"
+                                           title="Cancelled Appts. Pending Review">
+                                            Cancelled Appts. Pending Review
+                                        </a>
+                                    </th>
+                                </tr>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_cancelled_bills_awaiting_review_count_as_mcp()}}</th>
+                                    <th class="pl-2">
+                                        <a href="{{ route('mcp.cancelled_bills_pending_review') }}"
+                                           native target="_blank"
+                                           open-in-stag-popup
+                                           popup-style="tall"
+                                           title="Cancelled Bills Pending Review">
+                                            Cancelled Bills Pending Review
+                                        </a>
+                                    </th>
+                                </tr>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_cancelled_supply_orders_awaiting_review_count_as_mcp()}}</th>
+                                    <th class="pl-2">
+                                        <a href="{{ route('mcp.cancelled_supply_orders_pending_review') }}"
+                                           native target="_blank"
+                                           open-in-stag-popup
+                                           popup-style="tall"
+                                           title="Cancelled Supply Orders Pending Review">
+                                            Cancelled Supply Orders Pending Review
+                                        </a>
+                                    </th>
+                                </tr>
+
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_erx_and_orders_awaiting_signature_count_as_mcp()}}</th>
+                                    <th class="pl-2">
+                                        <a href="{{ route('mcp.erx_and_orders_pending_signature') }}"
+                                           native target="_blank"
+                                           open-in-stag-popup
+                                           popup-style="tall"
+                                           title="ERx & Orders Pending Signature">
+                                            ERx & Orders Pending Signature
+                                        </a>
+                                    </th>
+                                </tr>
+                                <tr>
+                                    <th class="px-2 text-center">{{$pro->get_supply_orders_awaiting_signature_count_as_mcp()}}</th>
+                                    <th class="pl-2">
+                                        <a href="{{ route('mcp.supply_orders_pending_signature') }}"
+                                           native target="_blank"
+                                           open-in-stag-popup
+                                           popup-style="tall"
+                                           title="Supply Orders Pending Signature">
+                                            Supply Orders Pending Signature
+                                        </a>
+                                    </th>
+                                </tr>
+                                </tbody>
+                            </table>
+                        </div>
+                    </div>
+                    <div class="card mb-4">
+                        <div class="card-header pl-2">
+                            <strong>
+                                Remote Monitoring: {{friendly_month(date('Y-m-d'))}}
+                            </strong>
+                        </div>
+                        <div class="card-body p-0">
+                            <table class="table mb-0 dashboard-stats-table">
+                                <tbody>
+                                <tr class="thin">
+                                    <th class="px-2 text-center">{{$pro->get_measurements_awaiting_review_count_as_mcp() ?? '-'}}</th>
+                                    <th class="pl-2">Measurements Pending Review</th>
+                                </tr>
+                                <tr class="thin">
+                                    <th class="px-2 text-center">{{$pro->get_patients_without_remote_measurement_in_48_hours_count_as_mcp() ?? '-'}}</th>
+                                    <th class="pl-2">Patients w/o Measurement in 48 hrs.</th>
+                                </tr>
+                                </tbody>
+                            </table>
+                        </div>
+                    </div>
+                    <div class="card mb-4">
+                        <div class="card-header pl-2">
+                            <strong>
+                                Practice Management
+                            </strong>
+                        </div>
+                        <div class="card-body p-0">
+                            <table class="table mb-0 dashboard-stats-table">
+                                <tbody>
+                                <tr class="thin">
+                                    <th colspan="2" class="font-weight-normal px-2 pl-2">Billing & Reimbursement</th>
+                                </tr>
+                                <tr class="thin">
+                                    <th class="font-weight-normal px-2 pl-4">{{friendly_date_time($reimbursement['nextPaymentDate'], false)}}</th>
+                                    <th class="font-weight-normal pl-2">Next Payment Date</th>
+                                </tr>
+                                <tr class="thin">
+                                    <th class="font-weight-normal px-2 pl-4">
+                                        ${{friendly_money($reimbursement['currentBalance'])}}</th>
+                                    <th class="font-weight-normal pl-2 w-100"><a
+                                            href="/practice-management/financial-transactions">Current balance</a></th>
+                                </tr>
+                                <tr class="thin">
+                                    <th class="font-weight-normal px-2 pl-4">
+                                        ${{friendly_money($reimbursement['nextPaymentAmount'])}}</th>
+                                    <th class="font-weight-normal pl-2"><a
+                                            href="/practice-management/bills-under-processing">Processing</a></th>
+                                </tr>
+                                <tr class="thin">
+                                    <th class="font-weight-normal px-2 pl-5">
+                                        ${{friendly_money($reimbursement['nextPaymentAmount'])}}</th>
+                                    <th class="font-weight-normal pl-2"><a
+                                            href="/practice-management/bills-under-processing">Treatment Services</a>
+                                    </th>
+                                </tr>
+                                <tr class="thin">
+                                    <th class="font-weight-normal px-2 pl-5">
+                                        ${{friendly_money($reimbursement['nextPaymentAmount'])}}</th>
+                                    <th class="font-weight-normal pl-2"><a
+                                            href="/practice-management/bills-under-processing">Remote Monitoring</a>
+                                    </th>
+                                </tr>
+                                <tr class="thin">
+                                    <th class="font-weight-normal px-2 pl-5">
+                                        ${{friendly_money($reimbursement['nextPaymentAmount'])}}</th>
+                                    <th class="font-weight-normal pl-2"><a
+                                            href="/practice-management/bills-under-processing">Other Services</a></th>
+                                </tr>
+                                {{--
+                                <tr>
+                                    <th class="px-2">{{$reimbursement['lastPayment']}}</th>
+                                    <th class="pl-2"><a href="/practice-management/financial-transactions">Last payment</a></th>
+                                </tr>
+                                <tr>
+                                    <th class="px-2">{{friendly_date_time($reimbursement['lastPaymentDate'], false)}}</th>
+                                    <th class="pl-2"><a href="/practice-management/financial-transactions">Last payment date</a></th>
+                                </tr>
+                                --}}
+                                </tbody>
+                            </table>
+                        </div>
+                    </div>
+                </div>
+                <div class="col-md-9">
+
+                    <div class="row mcp-theme-1" id="pro-dashboard-container" v-cloak>
+                        <div class="col-md-6 mcp-theme-1">
+                            <div class="card mb-4">
+                                <div class="card-header pl-2">
+                                    <strong>
+                                        Appointments @{{ formatSelectedDate(selectedDate) }}
+                                    </strong>
+                                </div>
+                                <div class="card-body p-0">
+                                    @include('app.mcp.dashboard.appointments')
+                                </div>
+                            </div>
+                            <div class="card mb-4">
+                                <div class="card-header pl-2">
+                                    <strong>
+                                        Measurements
+                                    </strong>
+                                </div>
+                                <div class="card-body">
+                                    @include('app.mcp.dashboard.measurements')
+                                </div>
+                            </div>
+                            <div class="card mb-4">
+                                <div class="card-header pl-2">
+                                    <strong>
+                                        ERx & Orders
+                                    </strong>
+                                </div>
+                                <div class="card-body">
+                                    @include('app.mcp.dashboard.erx_orders')
+                                </div>
+                            </div>
+                            <div class="card mb-4">
+                                <div class="card-header pl-2">
+                                    <strong>
+                                        Supply Orders
+                                    </strong>
+                                </div>
+                                <div class="card-body">
+                                    @include('app.mcp.dashboard.supply_orders')
+                                </div>
+                            </div>
+                        </div>
+                        <div class="col-md-6 mcp-theme-1">
+                            <div class="card mb-4">
+                                <div class="card-header pl-2">
+                                    <strong>
+                                        Notifications
+                                    </strong>
+                                </div>
+                                <div class="card-body">
+                                    @include('app.mcp.dashboard.notifications')
+                                </div>
+                            </div>
+                            <div class="card mb-4">
+                                <div class="card-header pl-2">
+                                    <strong>
+                                        Reports
+                                    </strong>
+                                </div>
+                                <div class="card-body">
+                                    @include('app.mcp.dashboard.reports')
+                                </div>
+                            </div>
+                            <div class="card mb-4">
+                                <div class="card-header pl-2">
+                                    <strong>
+                                        Messages
+                                    </strong>
+                                </div>
+                                <div class="card-body">
+                                    @include('app.mcp.dashboard.messages')
+                                </div>
+                            </div>
+                            <div class="card mb-4">
+                                <div class="card-header pl-2">
+                                    <strong>
+                                        Phone Calls & Memos
+                                    </strong>
+                                </div>
+                                <div class="card-body">
+                                    @include('app.mcp.dashboard.calls_memos')
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+    </div>
+
+    <div class="stag-popup stag-popup-md ticket-popup mcp-theme-1" stag-popup-key="ticket-popup"></div>
+
+    <script>
+        (function () {
+            function init() {
+                window.apapp = new Vue({
+                    el: '#pro-dashboard-container',
+                    delimiters: ['@{{', '}}'],
+                    data: {
+                        tab: '{{ request()->input('tab') ? request()->input('tab') : 'measurements' }}',
+                        datesWithEvents: [],
+                        selectedDate: '{{ date('Y-m-d') }}',
+                        selectedStatus: 'CREATED',
+                        events: [],
+                        numEventsForDate: 0,
+                        filterStatus: '',
+                        calendarElem: null,
+                        currentMonth: null,
+                        currentYear: null,
+                        measurementFilterStatus: 'ALL',
+                        measurements: {!! $pro->pro_type === 'ADMIN' ? '[]' : json_encode($pro->getMeasurements()) !!},
+                        appointmentsLoaded: false,
+                    },
+                    methods: {
+                        formatDate: function (date) {
+                            let d = new Date(date),
+                                month = '' + (d.getMonth() + 1),
+                                day = '' + d.getDate(),
+                                year = d.getFullYear();
+
+                            if (month.length < 2)
+                                month = '0' + month;
+                            if (day.length < 2)
+                                day = '0' + day;
+
+                            return [year, month, day].join('-');
+                        },
+                        onDateChange: function (_newDate) {
+                            let self = this;
+                            window.setTimeout(() => {
+                                // let dayValue = $('.pro-dashboard-inline-calendar td.day.active').first().text();
+                                // if(dayValue.length === 1) dayValue = '0' + dayValue;
+                                // self.selectedDate = _newDate.substr(0, 8) + dayValue;
+                                self.selectedDate = _newDate;
+                                showMask();
+                                self.loadEvents(self.selectedDate, function () {
+                                    hideMask();
+                                    Vue.nextTick(() => {
+                                        // self.highlightDatesWithEvents(self.datesWithEvents);
+                                        initFastLoad($('.appointments-tab'));
+                                    });
+                                });
+                            }, 25);
+                        },
+                        selectToday: function () {
+                            $('.pro-dashboard-inline-calendar table td[data-date]').removeClass('active');
+                            $('.pro-dashboard-inline-calendar table td[data-date="{{ $milliseconds }}"]')
+                                .addClass('active');
+                            // this.onDateChange('{{ date('Y-m-d') }}');
+                        },
+                        highlightDatesWithEvents: function (_dates) {
+                            $('.pro-dashboard-inline-calendar table td[data-date]').removeAttr('has-events');
+                            for (let i = 0; i < _dates.length; i++) {
+                                $('.pro-dashboard-inline-calendar table td[data-date="' + _dates[i] + '"]')
+                                    .attr('has-events', 1);
+                            }
+                        },
+                        updateStatus: function (_event) {
+                            $.post('/api/appointment/updateStatus', {
+                                uid: _event.uid,
+                                status: _event.newStatus
+                            }, function (_data) {
+                                if (!_data) {
+                                    toastr.error('Unable to update appointment status!');
+                                } else {
+                                    if (!_data.success) {
+                                        toastr.error(_data.message);
+                                    } else {
+                                        _event.status = _event.newStatus;
+                                        toastr.success('The appointment has been updated');
+                                    }
+                                }
+                            }, 'json')
+                        },
+                        showEditForm: function (_trigger) {
+                            let form = $(_trigger).closest('[moe]').find('form').first();
+                            showMoeFormMask();
+                            form.show();
+                            setTimeout(function () {
+                                initPrimaryForm(form);
+                            }, 0);
+                        },
+                        submitEditForm: function (_trigger) {
+                            let form = $(_trigger).closest('[moe]').find('form').first();
+                            if (!form[0].checkValidity()) {
+                                form[0].reportValidity();
+                                return;
+                            }
+                            $.post(form.attr('url'), form.serialize(), function (_data) {
+                                if (_data && _data.success) {
+                                    fastReload();
+                                } else {
+                                    if (_data.message) {
+                                        toastr.error(_data.message);
+                                    } else {
+                                        toastr.error('Unable to update the appointment');
+                                    }
+                                }
+                            });
+                        },
+                        cancelEditForm: function (_trigger) {
+                            let form = $(_trigger).closest('[moe]').find('form').first();
+                            hideMoeFormMask();
+                            form.hide();
+                        },
+                        loadEventDates: function (_refDate = false) {
+                            let today = new Date(_refDate ? _refDate : '{{date('Y-m-d')}}'),
+                                firstOfMonth = new Date(today.getFullYear(), today.getMonth(), 1),
+                                lastOfMonth = new Date(today.getFullYear(), today.getMonth() + 1, 0);
+
+                            this.selectedDate = null;
+                            $('td.day.active').removeClass('active');
+
+                            $.get('/pro-dashboard-event-dates/' +
+                                this.formatDate(firstOfMonth) + '/' +
+                                this.formatDate(lastOfMonth), (_data) => {
+                                this.datesWithEvents = _data;
+                                console.log(this.datesWithEvents);
+                                this.calendarElem.datepicker('refresh');
+                                // this.highlightDatesWithEvents(this.datesWithEvents);
+
+                                this.currentMonth = firstOfMonth.getMonth();
+                                this.currentYear = firstOfMonth.getFullYear();
+
+                                if (!_refDate && $('td.day[data-date="{{$milliseconds}}"]:visible').length) {
+                                    $('td.day[data-date="{{$milliseconds}}"]:visible').first().click();
+                                }
+
+                                this.appointmentsLoaded = true;
+                            }, 'json');
+                        },
+                        loadEvents: function (_date, _callback) {
+                            let self = this;
+                            $.get('/pro-dashboard-events/' + _date + '/' + _date, function (_data) {
+                                self.events = _data;
+                                self.numEventsForDate = (_data && _data.length) ? 1 : 0;
+                                _callback.call(self);
+                            }, 'json');
+                        },
+                        updateMeasurements: function () {
+                            $.get('/pro-dashboard-measurements/' + this.measurementFilterStatus, (_data) => {
+                                this.measurements = _data;
+                                Vue.nextTick(() => {
+                                    // this.initCMRTE();
+                                    $('#pro-dashboard-container').find('[moe][initialized]').removeAttr('initialized');
+                                    initMoes();
+                                });
+                            }, 'json');
+                        },
+                        setMeasurementStatus: function (_uid, _status) {
+                            $.post('/api/measurement/updateStatus', {
+                                uid: _uid,
+                                status: _status
+                            }, (_data) => {
+                                this.updateMeasurements();
+                            }, 'json');
+                        },
+                        initCMRTE: function () {
+                            $('#pro-dashboard-container [cm-rte]').each(function () {
+
+                                $(this).wrap(
+                                    $('<div class="border-left border-right rte-holder"/>')
+                                        .attr('data-shortcuts', '')
+                                );
+
+                                // give a unique id to this editor instance
+                                var editorID = Math.ceil(Math.random() * 99999), fieldName = $(this).attr('data-name');
+
+                                var el = this;
+                                var existingContent = $(el).attr('data-content');
+                                var quill = new Quill(el, {
+                                    theme: 'snow',
+                                    modules: stagQuillConfig
+                                });
+
+                                var toolbar = $(quill.container).prev('.ql-toolbar');
+
+                                // add button for new shortcut
+                                var newSCButton = $('<button class="btn bg-white btn-sm btn-default text-primary w-auto px-2 border py-0 ' +
+                                    'text-sm add-shortcut" data-editor-id="' + editorID + '">+ Shortcut</button>');
+                                toolbar.append(newSCButton);
+
+                                quill.root.innerHTML = existingContent;
+
+                                $('<input type="hidden" name="' + fieldName + '">').val(existingContent).insertAfter(el);
+
+                                quill.on('text-change', function (delta, oldDelta, source) {
+                                    $(el).next('[name="' + fieldName + '"]').val(quill.root.innerHTML);
+                                });
+
+                                $(quill.container)
+                                    .find('.ql-editor[contenteditable]')
+                                    .attr('data-field', fieldName)
+                                    .attr('data-editor-id', editorID)
+                                    .attr('with-shortcuts', 1);
+
+                            })
+                        },
+                        initLoadAppointments: function () {
+                            if (this.appointmentsLoaded) return false;
+                            this.loadEventDates();
+                        },
+                        loadMeasurements: function () {
+                            $('#measurements-tab').load('/pro-dashboard-measurements-tab', () => {
+                                initMoes();
+                                initFastLoad($('#measurements-tab'));
+                            });
+                        },
+                        getFormattedCurrentDate: function () {
+                            let date = new Date();
+                            let day = date.getDate();
+                            day = day < 10 ? '0' + day : day;
+
+                            return date.getFullYear() + '-' + parseInt(date.getMonth() + 1) + '-' + day;
+                        },
+                        formatSelectedDate: function (_date, _format) {
+                            _format = _format || 'MM/DD/YYYY';
+                            if (_date) {
+                                return moment(_date).format(_format);
+                            }
+                        },
+                        formatTimeZone: function (_tz) {
+                            switch (_tz) {
+                                case 'EASTERN':
+                                    return 'EST'
+                                    break;
+                                case 'CENTRAL':
+                                    return 'CST'
+                                    break;
+                                case 'MOUNTAIN':
+                                    return 'MST'
+                                    break;
+                                case 'PACIFIC':
+                                    return 'PST'
+                                    break;
+                                case 'ALASKA':
+                                    return 'Alaska'
+                                    break;
+                                case 'HAWAII':
+                                    return 'Hawaii'
+                                    break;
+                                case 'PUERTO_RICO':
+                                    return 'Puerto Rico'
+                                    break;
+                                default:
+                                    return 'N/A';
+                            }
+                        }
+                    },
+                    mounted: function () {
+                        let self = this;
+                        this.calendarElem = $('.pro-dashboard-inline-calendar');
+                        this.calendarElem.datepicker({
+                            dateFormat: 'yy-mm-dd',
+                            onSelect: function (_date) {
+                                self.onDateChange(_date);
+                            },
+                            onChangeMonthYear: function (_year, _month) {
+                                let date = _year + '-' + (_month < 10 ? '0' : '') + _month + '-05';
+                                self.loadEventDates(date);
+                            },
+                            beforeShowDay: function (d) {
+                                if (self.datesWithEvents && self.datesWithEvents.indexOf(self.formatDate(d)) !== -1) {
+                                    return [true, 'has-events'];
+                                }
+                                return [true, 'no-events'];
+                            },
+                            defaultDate: 0
+                        });
+                        // this.calendarElem
+                        //     .on('changeDate', function () {
+                        //         self.onDateChange(self.calendarElem.datepicker('getFormattedDate'));
+                        //     })
+                        //     .on('changeMonth', function () {
+                        //         window.setTimeout(function() {
+                        //             let ts = $('td.day[data-date]').first().closest('tr').find('td.day[data-date]').last().attr('data-date');
+                        //             if(ts) {
+                        //                 self.loadEventDates(ts);
+                        //             }
+                        //         }, 10);
+                        //     });
+
+
+                        $('#pro-dashboard-container').find('[moe][initialized]').removeAttr('initialized');
+                        initMoes();
+
+                        // init fast load
+                        initFastLoad($('#pro-dashboard-container'));
+
+                        $(document)
+                            .off('click', '.dashboard-measurements.pagination a.page-link')
+                            .on('click', '.dashboard-measurements.pagination a.page-link', function () {
+                                $('#measurements-tab').text('Loading...').load('/pro-dashboard-measurements-tab/' + $(this).attr('data-target-page'), () => {
+                                    initMoes();
+                                    initFastLoad($('#measurements-tab'));
+                                });
+                                return false;
+                            });
+
+                        this.loadMeasurements();
+                        this.initLoadAppointments();
+                        this.onDateChange(this.getFormattedCurrentDate());
+                        this.selectedDate = this.getFormattedCurrentDate();
+                    }
+                });
+                /*// refresh once ticket popup is closed
+                $('body').off('stag-popup-closed')
+                $('body').on('stag-popup-closed', function() {
+                    if($('#pro-dashboard-container').length) {
+                        let activeTab = $('.nav-link.active[data-tab]').attr('data-tab');
+                        if(activeTab) {
+                            fastLoad('/?tab=' + activeTab);
+                        }
+                    }
+                });*/
+                // ticket-popup
+                $(document)
+                    .off('click', '.ticket-popup-trigger')
+                    .on('click', '.ticket-popup-trigger', function () {
+                        showMask();
+                        window.noMc = true;
+                        $.get(this.href, (_data) => {
+                            $('.ticket-popup').html(_data);
+                            showStagPopup('ticket-popup');
+                            $('.ticket-popup .stag-popup.stag-slide').attr('close-all-with-self', 1);
+                            runMCInitializer('patient-tickets'); // run specific mc initer
+                            hideMask();
+                        });
+                        return false;
+                    });
+
+                $(document)
+                    .off('click', '.ack-client-pro-change')
+                    .on('click', '.ack-client-pro-change', function () {
+                        let trigger = $(this).text('…');
+                        $.post('/api/clientProChange/accept', {
+                            uid: $(this).attr('data-uid')
+                        }, _data => {
+                            if (!hasResponseError(_data)) {
+                                trigger.hide();
+                                let doneElem = $('<i class="text-success fa fa-check"></i>');
+                                doneElem.insertAfter(trigger);
+                                setTimeout(() => {
+                                    let ackContainer = trigger.closest('.ack-container');
+                                    trigger.closest('div').slideUp('fast', function () {
+                                        $(this).remove();
+                                        if (!ackContainer.find('>div').length) {
+                                            ackContainer.remove();
+                                        }
+                                    });
+                                }, 500);
+                            }
+                        }, 'json');
+                        return false;
+                    });
+
+                $(document)
+                    .off('click', '.ack-client-memo')
+                    .on('click', '.ack-client-memo', function () {
+                        let trigger = $(this).text('…');
+                        $.post('/api/clientMemo/stamp', {
+                            uid: $(this).attr('data-uid')
+                        }, _data => {
+                            if (!hasResponseError(_data)) {
+                                trigger.hide();
+                                let doneElem = $('<i class="text-success fa fa-check"></i>');
+                                doneElem.insertAfter(trigger);
+                                setTimeout(() => {
+                                    let tbody = trigger.closest('tbody');
+                                    trigger.closest('tr').remove();
+                                    if (!tbody.find('>tr').length) {
+                                        tbody.closest('.ack-container').remove();
+                                    }
+                                }, 500);
+                            }
+                        }, 'json');
+                        return false;
+                    });
+
+                $(document)
+                    .off('click', '.ack-pro-appt-update')
+                    .on('click', '.ack-pro-appt-update', function () {
+                        let trigger = $(this).text('…');
+                        $.post('/api/appointmentConfirmationDecision/acknowledgeAsAppointmentPro', {
+                            uid: $(this).attr('data-uid')
+                        }, _data => {
+                            if (!hasResponseError(_data)) {
+                                trigger.hide();
+                                let doneElem = $('<i class="text-success fa fa-check"></i>');
+                                doneElem.insertAfter(trigger);
+                                setTimeout(() => {
+                                    let ackContainer = trigger.closest('tbody');
+                                    trigger.closest('tr').slideUp('fast', function () {
+                                        $(this).remove();
+                                        if (!ackContainer.find('>tr').length) {
+                                            ackContainer.remove();
+                                        }
+                                    });
+                                }, 500);
+                            }
+                        }, 'json');
+                        return false;
+                    });
+            }
+
+            addMCInitializer('pro-dashboard', init, '#pro-dashboard-container');
+        })();
+    </script>
+@endsection

+ 0 - 988
resources/views/app/dashboard.blade.php

@@ -1,988 +0,0 @@
-@extends ('layouts.template')
-
-@section('content')
-<div class="p-3">
-    <div class="">
-        <div class="row mcp-theme-1" id="pro-dashboard-container" v-cloak>
-            <div class="col-md-3 mcp-theme-1">
-                <div class="mb-4" v-show="tab==='appointments'">
-                    <div class="pro-dashboard-inline-calendar"></div>
-                </div>
-                <div class="card mb-4">
-                    <div class="card-header pl-2">
-                        <strong>
-                            Key Numbers
-                        </strong>
-                    </div>
-                    <div class="card-body p-0">
-                        <table class="table mb-0 dashboard-stats-table">
-                            <tbody>
-                                <tr>
-                                    <th class="border-top-0 px-2 text-center">{{$keyNumbers['totalPatients']}}</th>
-                                    <th class="border-top-0 pl-2"><a href="/patients">Total patients</a></th>
-                                </tr>
-                                <tr>
-                                    <th class="px-2 text-center">{{$keyNumbers['patientsNotSeenYet']}}</th>
-                                    <th class="pl-2"><a href="/patients/not-yet-seen">Patients I have not seen yet</a></th>
-                                </tr>
-                                <tr>
-                                    <th class="px-2 text-center">{{$keyNumbers['pendingBillsToSign']}}</th>
-                                    <th class="pl-2"><a href="/practice-management/bills/not-yet-signed">Pending bills to sign</a></th>
-                                </tr>
-                                <tr>
-                                    <th class="px-2 text-center">{{$keyNumbers['signedNotesWithoutBills']}}</th>
-                                    <th class="pl-2"><a href="/practice-management/notes/without-bills">Signed notes without bills</a></th>
-                                </tr>
-                                @if(!$pro->isDefaultNA())
-                                <tr>
-                                    <th class="px-2 text-center">{{$keyNumbers['pendingNotesToSign']}}</th>
-                                    <th class="pl-2"><a href="/practice-management/notes/not-yet-signed">Pending notes to sign</a></th>
-                                </tr>
-                                @else
-                                <tr>
-                                    <th class="px-2 text-center">{{$keyNumbers['$pendingNotesToSignMCP']}}</th>
-                                    <th class="pl-2"><a href="/practice-management/dna-notes-pending-mcp-sign">Pending notes to sign (MCP)</a></th>
-                                </tr>
-                                @endif
-                                @if(!!$keyNumbers['pendingNotesToSignAllySigned'])
-                                <tr>
-                                    <th class="px-2 text-center">{{$keyNumbers['pendingNotesToSignAllySigned']}}</th>
-                                    <th class="pl-2"><a href="/practice-management/notes/not-yet-signed-but-ally-signed">Pending notes to sign (ally signed)</a></th>
-                                </tr>
-                                @endif
-                               
-                                <tr>
-                                    <th class="px-2 text-center">{{$keyNumbers['numOpenTickets']}}</th>
-                                    <th class="pl-2"><a href="/practice-management/my-tickets/open">Open tickets</a></th>
-                                </tr>
-                                <tr>
-                                    <th class="px-2 text-center">{{$keyNumbers['unacknowledgedCancelledBills']}}</th>
-                                    <th class="pl-2">
-                                        <a href="/practice-management/unacknowledged-cancelled-bills">Unacknowledged Cancelled Bills</a>
-                                    </th>
-                                </tr>
-                                <tr>
-                                    <th class="px-2 text-center">{{$keyNumbers['unacknowledgedCancelledSupplyOrders']}}</th>
-                                    <th class="pl-2">
-                                        <a href="/practice-management/supply-orders/cancelled-but-unacknowledged">Unacknowledged Cancelled Supply Orders</a>
-                                    </th>
-                                </tr>
-                                <tr>
-                                    <th class="px-2 text-center">{{$keyNumbers['unsignedSupplyOrders']}}</th>
-                                    <th class="pl-2">
-                                        <a href="/practice-management/supply-orders/unsigned">Unsigned Supply Orders</a>
-                                    </th>
-                                </tr>
-                                <tr>
-                                    <th class="px-2 text-center">{{$keyNumbers['patientsHavingBirthdayToday']}}</th>
-                                    <th class="pl-2">
-                                        <a href="/patients/having-birthday-today">Patients having birthday today</a>
-                                    </th>
-                                </tr>
-                                @if(@$keyNumbers['naBillableSignedNotes'])
-                                    <tr>
-                                        <th class="px-2 text-center">{{$keyNumbers['naBillableSignedNotes']}}</th>
-                                        <th class="pl-2">
-                                            <a href="/practice-management/na-billable-signed-notes">Billable signed notes</a>
-                                        </th>
-                                    </tr>
-                                @endif
-                                <tr>
-                                    <th class="px-2 text-center">{{$keyNumbers['rmBillsToSign']}}</th>
-                                    <th class="pl-2">
-                                        <a href="/practice-management/rm-bills-to-sign">RM Bills to Sign</a>
-                                    </th>
-                                </tr>
-                                @if($pro->pro_type === 'ADMIN')
-                                    <tr>
-                                        <th class="px-2 text-center">{{$keyNumbers['patientsWithoutCoverageInformation']}}</th>
-                                        <th class="pl-2"><a href="/practice-management/patients-without-coverage/without-coverage-information">Without coverage information</a></th>
-                                    </tr>
-                                    <tr>
-                                        <th class="px-2 text-center">{{$keyNumbers['patientsPendingCoverageVerification']}}</th>
-                                        <th class="pl-2"><a href="/practice-management/patients-without-coverage/pending-coverage-verification">Pending coverage verification</a></th>
-                                    </tr>
-                                @endif
-                            </tbody>
-                        </table>
-                    </div>
-                </div>
-                <div class="card mb-4">
-                    <div class="card-header pl-2">
-                        <strong>
-                            Remote Monitoring: {{friendly_month(date('Y-m-d'))}}
-                        </strong>
-                    </div>
-                    <div class="card-body p-0">
-                        <table class="table mb-0 dashboard-stats-table">
-                            <tbody>
-                            <tr>
-                                <th class="px-2 text-center">{{$keyNumbers['rmPatientsWithLT16MD']}}</th>
-                                <th class="pl-2">
-                                    <b>Patients with < 16 meas. days</b>
-                                </th>
-                            </tr>
-                            <tr>
-                                <th class="px-2 text-center">{{$keyNumbers['rmPatientsWithGTE16MD']}}</th>
-                                <th class="pl-2">
-                                    <b>Patients with >= 16 meas. days</b>
-                                </th>
-                            </tr>
-                            @if(!$pro->is_hcp)
-                            <tr>
-                                <th class="px-2 text-center">{{$keyNumbers['rmPatientsWithWhomCommDone']}}</th>
-                                <th class="pl-2">
-                                    <b>Patients with whom comm. not done</b>
-                                </th>
-                            </tr>
-                            <tr>
-                                <th class="px-2 text-center">{{$keyNumbers['rmPatientsWithWhomCommNotDone']}}</th>
-                                <th class="pl-2">
-                                    <b>Patients with whom comm. done</b>
-                                </th>
-                            </tr>
-                            @endif
-                            <tr>
-                                <th class="px-2 text-center">{{$keyNumbers['measurementsToBeStamped']}}</th>
-                                <th class="pl-2">
-                                    <a href="{{route('practice-management.remote-monitoring')}}">Unstamped Measurements</a>
-                                </th>
-                            </tr>
-                            </tbody>
-                        </table>
-                    </div>
-                </div>
-                <div class="card mb-4">
-                    <div class="card-header pl-2">
-                        <strong>
-                            Reimbursement
-                        </strong>
-                    </div>
-                    <div class="card-body p-0">
-                        <table class="table mb-0 dashboard-stats-table">
-                            <tbody>
-                                <tr>
-                                    <th class="border-top-0 px-2">${{friendly_money($reimbursement['currentBalance'])}}</th>
-                                    <th class="border-top-0 pl-2 w-100"><a href="/practice-management/financial-transactions">Current balance</a></th>
-                                </tr>
-                                <!-- <tr>
-                                    <th class="px-2">{{friendly_date_time($reimbursement['nextPaymentDate'], false)}}</th>
-                                    <th class="pl-2">Next Payment Date</th>
-                                </tr> -->
-                                <tr>
-                                    <th class="px-2">${{friendly_money($reimbursement['nextPaymentAmount'])}}</th>
-                                    <th class="pl-2"><a href="/practice-management/bills-under-processing">Processing</a></th>
-                                </tr>
-                                {{--
-                                <tr>
-                                    <th class="px-2">{{$reimbursement['lastPayment']}}</th>
-                                    <th class="pl-2"><a href="/practice-management/financial-transactions">Last payment</a></th>
-                                </tr>
-                                <tr>
-                                    <th class="px-2">{{friendly_date_time($reimbursement['lastPaymentDate'], false)}}</th>
-                                    <th class="pl-2"><a href="/practice-management/financial-transactions">Last payment date</a></th>
-                                </tr>
-                                --}}
-                            </tbody>
-                        </table>
-                    </div>
-                </div>
-                @if($pro->pro_type === 'ADMIN')
-                <div class="card mb-4">
-                    <div class="card-header pl-2">
-                        <strong>
-                            Bills &amp; Claims
-                        </strong>
-                    </div>
-                    <div class="card-body p-0">
-                        <table class="table mb-0 dashboard-stats-table">
-                            <tbody>
-                            
-                            <tr>
-                                <th class="border-top-1 px-2 text-center">{{$businessNumbers['notesWithBillsToResolve']}}</th>
-                                <th class="border-top-1 pl-2">
-                                    <a href="/practice-management/billing-manager">Notes with bills to resolve</a>
-                                </th>
-                            </tr>
-                            <tr>
-                                <th class="border-top-1 px-2 text-center">{{$businessNumbers['notesPendingBillingClosure']}}</th>
-                                <th class="border-top-1 pl-2">
-                                    <a href="/practice-management/billing-manager">Notes pending billing closure</a>
-                                </th>
-                            </tr>
-                            </tbody>
-                        </table>
-                    </div>
-                </div>
-                @endif
-            </div>
-            <div class="col-md-9">
-
-                <div class="row">
-                    <div class="col-6">
-
-                        <!-- Appointment Updates -->
-                        @if(count($proApptUpdates))
-                            <div class="mb-3 border rounded px-3 py-2 ack-container">
-                                <p class="pt-1 mb-2"><b>Appointment Updates</b></p>
-                                <table class="table table-sm table-hover table-bordered mb-0">
-                                    <thead>
-                                    <tr>
-                                        <th>Client</th>
-                                        <th>Appt. Date/Time</th>
-                                        <th>Status</th>
-                                        <th></th>
-                                    </tr>
-                                    </thead>
-                                    <tbody>
-                                        @foreach($proApptUpdates as $update)
-                                            <tr>
-                                                <td>{{$update->name_first}} {{$update->name_last}}</td>
-                                                <td>{{friendlier_date_time($update->start_time)}}</td>
-                                                <td>{{$update->status}}</td>
-                                                <td><a href="#" class="ack-pro-appt-update" data-uid="{{$update->uid}}">Acknowledge</a></td>
-                                            </tr>
-                                        @endforeach
-                                    </tbody>
-                                </table>
-                            </div>
-                        @endif
-
-                        @if(count($naApptUpdates))
-                            <div class="mb-3 border rounded px-3 py-2 ack-container">
-                                <p class="pt-1 mb-2"><b>Appointment Updates</b></p>
-                                <table class="table table-sm table-hover table-bordered mb-0">
-                                    <thead>
-                                    <tr>
-                                        <th>Client</th>
-                                        <th>Pro</th>
-                                        <th>Appt. Date/Time</th>
-                                        <th>Status</th>
-                                        <th></th>
-                                    </tr>
-                                    </thead>
-                                    <tbody>
-                                    @foreach($naApptUpdates as $update)
-                                        <tr>
-                                            <td>{{$update->name_first}} {{$update->name_last}}</td>
-                                            <td>{{$update->pro_name_first}} {{$update->pro_name_last}}</td>
-                                            <td>{{friendlier_date_time($update->start_time)}}</td>
-                                            <td>{{$update->status}}</td>
-                                            <td><a href="#" class="ack-na-appt-update" data-uid="{{$update->uid}}">Acknowledge</a></td>
-                                        </tr>
-                                    @endforeach
-                                    </tbody>
-                                </table>
-                            </div>
-                        @endif
-
-                        <!-- new associations -->
-                        @if(count($newMCPAssociations))
-                            <div class="mb-3 border rounded px-3 py-2 ack-container">
-                                <p class="pt-1 mb-2"><b>New Patients</b></p>
-                                @foreach($newMCPAssociations as $assoc)
-                                    <div class="d-flex align-items-start bg-light mb-2 px-2 py-1">
-                                        <div class="flex-grow-1">
-                                            You are now the MCP for
-                                            <a href="/patients/view/{{$assoc->patient->uid}}" class="">{{$assoc->patient->displayName()}}</a>
-                                            <?php $nextAppt = $assoc->patient->nextAppointment(); ?>
-                                            @if($nextAppt)
-                                                <div class="font-size-11">
-                                                    <span class="text-secondary font-size-11">Appt.</span>
-                                                    {{$nextAppt->pro->displayName()}}
-                                                    <span class="text-secondary font-size-11">on</span>
-                                                    {{friendlier_date_time($nextAppt->raw_date . ' ' . $nextAppt->raw_start_time)}}
-                                                </div>
-                                                @if($nextAppt->status === 'CREATED')
-                                                    <div class="text-warning-mellow font-weight-bold font-size-11 mt-1">
-                                                        <i class="fa fa-exclamation-triangle"></i>
-                                                        Confirmation pending
-                                                    </div>
-                                                @endif
-                                                @if($nextAppt->status === 'CONFIRMED')
-                                                    <div class="text-success font-weight-bold font-size-11 mt-1">
-                                                        <i class="fa fa-check"></i>
-                                                        Confirmed by the patient
-                                                    </div>
-                                                @endif
-                                                @if($nextAppt->status === 'REJECTED')
-                                                    <div class="text-danger font-weight-bold font-size-11 mt-1">
-                                                        <i class="fa fa-stop"></i>
-                                                        Rejected by the patient
-                                                    </div>
-                                                @endif
-                                            @endif
-                                        </div>
-                                        <a href="#" class="ack-client-pro-change ml-3" data-uid="{{$assoc->uid}}">Stamp</a>
-                                    </div>
-                                @endforeach
-                            </div>
-                        @endif
-
-                        @if(count($newNAAssociations))
-                            <div class="mb-3 border rounded px-3 py-2 ack-container">
-                                <p class="pt-1 mb-2"><b>New Patients</b></p>
-                                @foreach($newNAAssociations as $assoc)
-                                    <div class="d-flex align-items-start bg-light mb-2 px-2 py-1">
-                                        <div class="flex-grow-1">
-                                            You are now the Care Coordinator for
-                                            <a href="/patients/view/{{$assoc->patient->uid}}" class="">{{$assoc->patient->displayName()}}</a>
-                                            <?php $nextAppt = $assoc->patient->nextAppointment(); ?>
-                                            @if($nextAppt)
-                                                <div class="font-size-11">
-                                                    <span class="text-secondary font-size-11">Appt.</span>
-                                                    {{$nextAppt->pro->displayName()}}
-                                                    <span class="text-secondary font-size-11">on</span>
-                                                    {{friendlier_date_time($nextAppt->raw_date . ' ' . $nextAppt->raw_start_time)}}
-                                                </div>
-                                                @if($nextAppt->status === 'CREATED')
-                                                    <div class="text-warning-mellow font-weight-bold font-size-11 mt-1">
-                                                        <i class="fa fa-exclamation-triangle"></i>
-                                                        Confirmation pending
-                                                    </div>
-                                                @endif
-                                                @if($nextAppt->status === 'CONFIRMED')
-                                                    <div class="text-success font-weight-bold font-size-11 mt-1">
-                                                        <i class="fa fa-check"></i>
-                                                        Confirmed by the patient
-                                                    </div>
-                                                @endif
-                                                @if($nextAppt->status === 'REJECTED')
-                                                    <div class="text-danger font-weight-bold font-size-11 mt-1">
-                                                        <i class="fa fa-stop"></i>
-                                                        Rejected by the patient
-                                                    </div>
-                                                @endif
-                                            @endif
-                                        </div>
-                                        <a href="#" class="ack-client-pro-change" data-uid="{{$assoc->uid}}">Stamp</a>
-                                    </div>
-                                @endforeach
-                            </div>
-                        @endif
-                    </div>
-                    <div class="col-6">
-                        @if(count($mcpClientMemos))
-                            <div class="mb-3 border rounded px-3 py-2 ack-container">
-                                <p class="pt-1 mb-2"><b>New Patients Memos (MCP)</b></p>
-                                <table class="table table-sm table-hover table-bordered">
-                                    <thead>
-                                    <tr>
-                                        <th>Patient</th>
-                                        <th>Memo</th>
-                                        <th>Created</th>
-                                        <th></th>
-                                    </tr>
-                                    </thead>
-                                    <tbody>
-                                    @foreach($mcpClientMemos as $memo)
-                                        <tr>
-                                            <td class="">
-                                                <a href="/patients/view/{{$memo->client_uid}}">{{$memo->name_first}} {{$memo->name_last}}</a>
-                                            </td>
-                                            <td>{!! $memo->content !!}</td>
-                                            <td class="text-nowrap">{{friendlier_date_time($memo->created_at)}}</td>
-                                            <td><a href="#" class="ack-client-memo" data-uid="{{$memo->uid}}">Stamp</a></td>
-                                        </tr>
-                                    @endforeach
-                                    </tbody>
-                                </table>
-                            </div>
-                        @endif
-                        @if(count($naClientMemos))
-                            <div class="mb-3 border rounded px-3 py-2 ack-container">
-                                <p class="pt-1 mb-2"><b>New Patients Memos (NA)</b></p>
-                                <table class="table table-sm table-hover table-bordered">
-                                    <thead>
-                                    <tr>
-                                        <th>Patient</th>
-                                        <th>Memo</th>
-                                        <th>Created</th>
-                                        <th></th>
-                                    </tr>
-                                    </thead>
-                                    <tbody>
-                                    @foreach($naClientMemos as $memo)
-                                        <tr>
-                                            <td class="">
-                                                <a href="/patients/view/{{$memo->client_uid}}">{{$memo->name_first}} {{$memo->name_last}}</a>
-                                            </td>
-                                            <td>{!! $memo->content !!}</td>
-                                            <td class="text-nowrap">{{friendlier_date_time($memo->created_at)}}</td>
-                                            <td><a href="#" class="ack-client-memo" data-uid="{{$memo->uid}}">Stamp</a></td>
-                                        </tr>
-                                    @endforeach
-                                    </tbody>
-                                </table>
-                            </div>
-                        @endif
-                    </div>
-                </div>
-
-                <ul class="nav nav-tabs">
-                    <li class="nav-item">
-                        <a native data-tab="appointments" class="nav-link"
-                           :class="tab == 'appointments' ? 'active' : ''" href="#"
-                           v-on:click.prevent="tab='appointments'; initLoadAppointments();">
-                            Appointments
-                        </a>
-                    </li>
-                    <li class="nav-item">
-                        <a native data-tab="measurements" class="nav-link"
-                           :class="tab == 'measurements' ? 'active' : ''" href="#"
-                           v-on:click.prevent="tab='measurements'; loadMeasurements();">
-                            Measurements
-                        </a>
-                    </li>
-                    <li class="nav-item">
-                        <a native data-tab="incoming_reports" class="nav-link {{count($incomingReports) ? 'text-danger font-weight-bold' : ''}}"
-                           :class="tab == 'incoming_reports' ? 'active' : ''" href="#"
-                           v-on:click.prevent="tab='incoming_reports'">
-                            Incoming Reports ({{count($incomingReports)}})
-                        </a>
-                    </li>
-                    <li class="nav-item">
-                        <a native data-tab="erx" class="nav-link {{$numERx ? 'text-danger font-weight-bold' : ''}}"
-                           :class="tab == 'erx' ? 'active' : ''" href="#"
-                           v-on:click.prevent="tab='erx'">
-                            ERx ({{$numERx}})
-                        </a>
-                    </li>
-                    <li class="nav-item">
-                        <a native data-tab="labs" class="nav-link {{$numLabs ? 'text-danger font-weight-bold' : ''}}"
-                           :class="tab == 'labs' ? 'active' : ''" href="#"
-                           v-on:click.prevent="tab='labs'">
-                            Labs ({{$numLabs}})
-                        </a>
-                    </li>
-                    <li class="nav-item">
-                        <a native data-tab="imaging" class="nav-link {{$numImaging ? 'text-danger font-weight-bold' : ''}}"
-                           :class="tab == 'imaging' ? 'active' : ''" href="#"
-                           v-on:click.prevent="tab='imaging'">
-                            Imaging ({{$numImaging}})
-                        </a>
-                    </li>
-                    <li class="nav-item">
-                        <a native data-tab="supply_orders" class="nav-link {{$numSupplyOrders ? 'text-danger font-weight-bold' : ''}}"
-                           :class="tab == 'supply_orders' ? 'active' : ''" href="#"
-                           v-on:click.prevent="tab='supply_orders'">
-                            Supply Orders ({{$numSupplyOrders}})
-                        </a>
-                    </li>
-                </ul>
-
-                <div class="border-left border-right border-bottom p-3">
-                    <div v-show="tab==='appointments'" class="appointments-tab">
-                        <div v-show="selectedDate">
-                            <div class="d-flex align-items-end mb-3">
-                                <b class="large"><span class="text-secondary">Today:</span> @{{ selectedDate }}</b>
-                                <div class="ml-auto d-inline-flex align-items-center">
-                                    <label class="text-secondary mr-2 my-0 text-nowrap">Filter by status:</label>
-                                    <select v-model="filterStatus"
-                                            class="form-control form-control-sm">
-                                        <option value="">All</option>
-                                        <option value="CREATED">Created</option>
-                                        <option value="CONFIRMED">Confirmed</option>
-                                        <option value="CANCELLED">Cancelled</option>
-                                        <option value="COMPLETED">Completed</option>
-                                        <option value="ABANDONED">Abandoned</option>
-                                    </select>
-                                </div>
-                            </div>
-                            <div v-for="event in events" class="align-items-end p-3 border rounded mb-3"
-                                 :class="(event.dateYMD === selectedDate && (filterStatus === '' || filterStatus === event.status) ? 'd-flex' : 'd-none') + ' ' + (event.isClientShadowOfPro ? 'training-event' : '')">
-                                <div class="patient-avatar mr-3 align-self-center">
-                                    <i v-if="event.isClientShadowOfPro" class="fa fa-graduation-cap training-icon" :title="event.proInitials"></i>
-                                    <span v-else class="">@{{ event.proInitials }}</span>
-                                </div>
-                                <div>
-                                    <div class="pb-1">
-                                        <b class="text-info">@{{ event.proName }}</b>
-                                        &nbsp;/&nbsp;
-                                        @{{ event.friendlyStartTime }} - @{{ event.friendlyEndTime }} <span class="text-secondary">@{{ event.timezone }}</span>
-                                        &nbsp;/&nbsp;
-                                        <span class="d-inline-block ml- 2 text-secondary font-weight-bold">@{{ event.title }}</span>
-                                    </div>
-                                    <div class="pb-1">
-                                        <a :href="'/patients/view/' + event.clientUid" class="font-weight-bold">@{{ event.clientName }}</a>
-                                        <span class="small d-inline-block pl-2 text-secondary font-weight-normal">@{{ event.clientSummary }}</span>
-                                    </div>
-                                    <div class="d-flex align-items-baseline">
-                                        <div v-if="event.status === 'CREATED'" class="text-warning-mellow font-weight-bold">
-                                            <i class="fa fa-exclamation-triangle"></i>
-                                            Confirmation pending
-                                        </div>
-                                        <div v-else-if="event.status === 'CONFIRMED'" class="text-success font-weight-bold">
-                                            <i class="fa fa-check"></i>
-                                            Confirmed by the patient
-                                        </div>
-                                        <div v-else-if="event.status === 'REJECTED'" class="text-danger font-weight-bold">
-                                            <i class="fa fa-stop"></i>
-                                            Rejected by the patient
-                                        </div>
-                                        <div v-else class="text-secondary">
-                                            Status: <b>@{{ event.status }}</b>
-                                        </div>
-                                        <span class="mx-2 text-secondary">|</span>
-                                        <a :href="'/patients/view/' + event.clientUid + '/calendar/' + event.uid">
-                                            <i class="fa fa-edit"></i>
-                                            Edit Appointment
-                                        </a>
-                                    </div>
-                                    <div class="mt-1" :class="event.coverage !== 'YES' ? (event.coverage === 'NO' ? 'text-danger' : 'text-warning-mellow') : 'text-success'">
-                                        Coverage Status: <b>@{{ event.coverage }}</b>
-                                    </div>
-                                </div>
-                                <div class="ml-auto">
-                                    <select v-model="event.newStatus"
-                                            class="form-control form-control-sm bg-light"
-                                            v-on:change="updateStatus(event)">
-                                        <option value="CREATED">CREATED</option>
-                                        <option value="CONFIRMED">CONFIRMED</option>
-                                        <option value="CANCELLED">CANCELLED</option>
-                                        <option value="COMPLETED">COMPLETED</option>
-                                        <option value="ABANDONED">ABANDONED</option>
-                                    </select>
-                                    <div v-if="selectedDate === '{{ date('Y-m-d') }}'"
-                                         class="pt-1 text-right" :class="event.started ? 'text-danger': 'text-secondary'">
-                                        @{{ event.inHowManyHours }}
-                                    </div>
-                                </div>
-                            </div>
-                            <div v-if="numEventsForDate === 0" class="bg-light p-3 text-secondary border bounded">
-                                <span v-if="filterStatus === ''">You have no appointments on <b>@{{ selectedDate }}</b></span>
-                                <span v-if="filterStatus !== ''">You have no appointments on <b>@{{ selectedDate }}</b> with status <b>@{{ filterStatus }}</b></span>
-                            </div>
-                        </div>
-                        <div v-show="!selectedDate" class="bg-light p-3 text-secondary border bounded">
-                            Please select a date from the calendar on the left
-                        </div>
-                    </div>
-                    <div v-show="tab==='measurements'">
-                        <div id="measurements-tab">Loading...</div>
-                    </div>
-                    <div v-show="tab==='incoming_reports'">
-                        @include('app.dashboard.incoming_reports')
-                    </div>
-                    <div v-show="tab==='erx'">
-                        @include('app.dashboard.erx')
-                    </div>
-                    <div v-show="tab==='labs'">
-                        @include('app.dashboard.labs')
-                    </div>
-                    <div v-show="tab==='imaging'">
-                        @include('app.dashboard.imaging')
-                    </div>
-                    <div v-show="tab==='supply_orders'">
-                        @include('app.dashboard.supply_orders')
-                    </div>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-
-<div class="stag-popup stag-popup-md ticket-popup mcp-theme-1" stag-popup-key="ticket-popup"></div>
-
-<script>
-    (function() {
-        function init() {
-            window.apapp = new Vue({
-                el: '#pro-dashboard-container',
-                delimiters: ['@{{', '}}'],
-                data: {
-                    tab: '{{ request()->input('tab') ? request()->input('tab') : 'measurements' }}',
-                    datesWithEvents: [],
-                    selectedDate: '{{ date('Y-m-d') }}',
-                    selectedStatus: 'CREATED',
-                    events: [],
-                    numEventsForDate: 0,
-                    filterStatus: '',
-                    calendarElem: null,
-                    currentMonth: null,
-                    currentYear: null,
-                    measurementFilterStatus: 'ALL',
-                    measurements: {!! $pro->pro_type === 'ADMIN' ? '[]' : json_encode($pro->getMeasurements()) !!},
-                    appointmentsLoaded: false,
-                },
-                methods: {
-                    formatDate: function (date) {
-                        let d = new Date(date),
-                            month = '' + (d.getMonth() + 1),
-                            day = '' + d.getDate(),
-                            year = d.getFullYear();
-
-                        if (month.length < 2)
-                            month = '0' + month;
-                        if (day.length < 2)
-                            day = '0' + day;
-
-                        return [year, month, day].join('-');
-                    },
-                    onDateChange: function (_newDate) {
-                        let self = this;
-                        window.setTimeout(() => {
-                            // let dayValue = $('.pro-dashboard-inline-calendar td.day.active').first().text();
-                            // if(dayValue.length === 1) dayValue = '0' + dayValue;
-                            // self.selectedDate = _newDate.substr(0, 8) + dayValue;
-                            self.selectedDate = _newDate;
-                            showMask();
-                            self.loadEvents(self.selectedDate, function() {
-                                hideMask();
-                                Vue.nextTick(() => {
-                                    // self.highlightDatesWithEvents(self.datesWithEvents);
-                                    initFastLoad($('.appointments-tab'));
-                                });
-                            });
-                        }, 25);
-                    },
-                    selectToday: function () {
-                        $('.pro-dashboard-inline-calendar table td[data-date]').removeClass('active');
-                        $('.pro-dashboard-inline-calendar table td[data-date="{{ $milliseconds }}"]')
-                            .addClass('active');
-                        // this.onDateChange('{{ date('Y-m-d') }}');
-                    },
-                    highlightDatesWithEvents: function (_dates) {
-                        $('.pro-dashboard-inline-calendar table td[data-date]').removeAttr('has-events');
-                        for (let i = 0; i < _dates.length; i++) {
-                            $('.pro-dashboard-inline-calendar table td[data-date="' + _dates[i] + '"]')
-                                .attr('has-events', 1);
-                        }
-                    },
-                    updateStatus: function(_event) {
-                        $.post('/api/appointment/updateStatus', {
-                            uid: _event.uid,
-                            status: _event.newStatus
-                        }, function(_data) {
-                            if(!_data) {
-                                toastr.error('Unable to update appointment status!');
-                            }
-                            else {
-                                if(!_data.success) {
-                                    toastr.error(_data.message);
-                                }
-                                else {
-                                    _event.status = _event.newStatus;
-                                    toastr.success('The appointment has been updated');
-                                }
-                            }
-                        }, 'json')
-                    },
-                    showEditForm: function(_trigger) {
-                        let form = $(_trigger).closest('[moe]').find('form').first();
-                        showMoeFormMask();
-                        form.show();
-                        setTimeout(function() {
-                            initPrimaryForm(form);
-                        }, 0);
-                    },
-                    submitEditForm: function(_trigger) {
-                        let form = $(_trigger).closest('[moe]').find('form').first();
-                        if(!form[0].checkValidity()) {
-                            form[0].reportValidity();
-                            return;
-                        }
-                        $.post(form.attr('url'), form.serialize(), function(_data) {
-                            if(_data && _data.success) {
-                                fastReload();
-                            }
-                            else {
-                                if(_data.message) {
-                                    toastr.error(_data.message);
-                                }
-                                else {
-                                    toastr.error('Unable to update the appointment');
-                                }
-                            }
-                        });
-                    },
-                    cancelEditForm: function(_trigger) {
-                        let form = $(_trigger).closest('[moe]').find('form').first();
-                        hideMoeFormMask();
-                        form.hide();
-                    },
-                    loadEventDates: function(_refDate = false) {
-                        let today = new Date(_refDate ? _refDate : '{{date('Y-m-d')}}'),
-                            firstOfMonth = new Date(today.getFullYear(), today.getMonth(), 1),
-                            lastOfMonth = new Date(today.getFullYear(), today.getMonth() + 1, 0);
-
-                        this.selectedDate = null;
-                        $('td.day.active').removeClass('active');
-
-                        $.get('/pro-dashboard-event-dates/' +
-                            this.formatDate(firstOfMonth) + '/' +
-                            this.formatDate(lastOfMonth), (_data) => {
-                            this.datesWithEvents = _data;
-                            console.log(this.datesWithEvents);
-                            this.calendarElem.datepicker('refresh');
-                            // this.highlightDatesWithEvents(this.datesWithEvents);
-
-                            this.currentMonth = firstOfMonth.getMonth();
-                            this.currentYear = firstOfMonth.getFullYear();
-
-                            if(!_refDate && $('td.day[data-date="{{$milliseconds}}"]:visible').length) {
-                                $('td.day[data-date="{{$milliseconds}}"]:visible').first().click();
-                            }
-
-                            this.appointmentsLoaded = true;
-                        }, 'json');
-                    },
-                    loadEvents: function(_date, _callback) {
-                        let self = this;
-                        $.get('/pro-dashboard-events/' + _date + '/' + _date, function(_data) {
-                            self.events = _data;
-                            self.numEventsForDate = (_data && _data.length) ? 1 : 0;
-                            _callback.call(self);
-                        }, 'json');
-                    },
-                    updateMeasurements: function() {
-                        $.get('/pro-dashboard-measurements/' + this.measurementFilterStatus, (_data) => {
-                            this.measurements = _data;
-                            Vue.nextTick(() => {
-                                // this.initCMRTE();
-                                $('#pro-dashboard-container').find('[moe][initialized]').removeAttr('initialized');
-                                initMoes();
-                            });
-                        }, 'json');
-                    },
-                    setMeasurementStatus: function(_uid, _status) {
-                        $.post('/api/measurement/updateStatus', {
-                            uid: _uid,
-                            status: _status
-                        }, (_data) => {
-                            this.updateMeasurements();
-                        }, 'json');
-                    },
-                    initCMRTE: function() {
-                        $('#pro-dashboard-container [cm-rte]').each(function() {
-
-                            $(this).wrap(
-                                $('<div class="border-left border-right rte-holder"/>')
-                                    .attr('data-shortcuts', '')
-                            );
-
-                            // give a unique id to this editor instance
-                            var editorID = Math.ceil(Math.random() * 99999), fieldName = $(this).attr('data-name');
-
-                            var el = this;
-                            var existingContent = $(el).attr('data-content');
-                            var quill = new Quill(el, {
-                                theme: 'snow',
-                                modules: stagQuillConfig
-                            });
-
-                            var toolbar = $(quill.container).prev('.ql-toolbar');
-
-                            // add button for new shortcut
-                            var newSCButton = $('<button class="btn bg-white btn-sm btn-default text-primary w-auto px-2 border py-0 ' +
-                                'text-sm add-shortcut" data-editor-id="' + editorID + '">+ Shortcut</button>');
-                            toolbar.append(newSCButton);
-
-                            quill.root.innerHTML = existingContent;
-
-                            $('<input type="hidden" name="' + fieldName + '">').val(existingContent).insertAfter(el);
-
-                            quill.on('text-change', function(delta, oldDelta, source) {
-                                $(el).next('[name="' + fieldName + '"]').val(quill.root.innerHTML);
-                            });
-
-                            $(quill.container)
-                                .find('.ql-editor[contenteditable]')
-                                .attr('data-field', fieldName)
-                                .attr('data-editor-id', editorID)
-                                .attr('with-shortcuts', 1);
-
-                        })
-                    },
-                    initLoadAppointments: function() {
-                        if(this.appointmentsLoaded) return false;
-                        this.loadEventDates();
-                    },
-                    loadMeasurements: function() {
-                        $('#measurements-tab').load('/pro-dashboard-measurements-tab', () => {
-                            initMoes();
-                            initFastLoad($('#measurements-tab'));
-                        });
-                    }
-                },
-                mounted: function () {
-                    let self = this;
-                    this.calendarElem = $('.pro-dashboard-inline-calendar');
-                    this.calendarElem.datepicker({
-                        dateFormat: 'yy-mm-dd',
-                        onSelect: function(_date) {
-                            self.onDateChange(_date);
-                        },
-                        onChangeMonthYear: function(_year, _month) {
-                            let date = _year + '-' + (_month < 10 ? '0' : '') + _month + '-05';
-                            self.loadEventDates(date);
-                        },
-                        beforeShowDay: function(d) {
-                            if(self.datesWithEvents && self.datesWithEvents.indexOf(self.formatDate(d)) !== -1) {
-                                return [true, 'has-events'];
-                            }
-                            return [true, 'no-events'];
-                        }
-                    });
-                    // this.calendarElem
-                    //     .on('changeDate', function () {
-                    //         self.onDateChange(self.calendarElem.datepicker('getFormattedDate'));
-                    //     })
-                    //     .on('changeMonth', function () {
-                    //         window.setTimeout(function() {
-                    //             let ts = $('td.day[data-date]').first().closest('tr').find('td.day[data-date]').last().attr('data-date');
-                    //             if(ts) {
-                    //                 self.loadEventDates(ts);
-                    //             }
-                    //         }, 10);
-                    //     });
-
-
-
-                    $('#pro-dashboard-container').find('[moe][initialized]').removeAttr('initialized');
-                    initMoes();
-
-                    // init fast load
-                    initFastLoad($('#pro-dashboard-container'));
-
-                    $(document)
-                        .off('click', '.dashboard-measurements.pagination a.page-link')
-                        .on('click', '.dashboard-measurements.pagination a.page-link', function() {
-                            $('#measurements-tab').text('Loading...').load('/pro-dashboard-measurements-tab/' + $(this).attr('data-target-page'), () => {
-                                initMoes();
-                                initFastLoad($('#measurements-tab'));
-                            });
-                            return false;
-                        });
-
-                    this.loadMeasurements();
-                }
-            });
-            /*// refresh once ticket popup is closed
-            $('body').off('stag-popup-closed')
-            $('body').on('stag-popup-closed', function() {
-                if($('#pro-dashboard-container').length) {
-                    let activeTab = $('.nav-link.active[data-tab]').attr('data-tab');
-                    if(activeTab) {
-                        fastLoad('/?tab=' + activeTab);
-                    }
-                }
-            });*/
-            // ticket-popup
-            $(document)
-                .off('click', '.ticket-popup-trigger')
-                .on('click', '.ticket-popup-trigger', function() {
-                    showMask();
-                    window.noMc = true;
-                    $.get(this.href, (_data) => {
-                        $('.ticket-popup').html(_data);
-                        showStagPopup('ticket-popup');
-                        $('.ticket-popup .stag-popup.stag-slide').attr('close-all-with-self', 1);
-                        runMCInitializer('patient-tickets'); // run specific mc initer
-                        hideMask();
-                    });
-                    return false;
-                });
-
-            $(document)
-                .off('click', '.ack-client-pro-change')
-                .on('click', '.ack-client-pro-change', function() {
-                    let trigger = $(this).text('…');
-                    $.post('/api/clientProChange/accept', {
-                        uid: $(this).attr('data-uid')
-                    }, _data => {
-                        if(!hasResponseError(_data)) {
-                            trigger.hide();
-                            let doneElem = $('<i class="text-success fa fa-check"></i>');
-                            doneElem.insertAfter(trigger);
-                            setTimeout(() => {
-                                let ackContainer = trigger.closest('.ack-container');
-                                trigger.closest('div').slideUp('fast', function() {
-                                    $(this).remove();
-                                    if(!ackContainer.find('>div').length) {
-                                        ackContainer.remove();
-                                    }
-                                });
-                            }, 500);
-                        }
-                    }, 'json');
-                    return false;
-                });
-
-            $(document)
-                .off('click', '.ack-client-memo')
-                .on('click', '.ack-client-memo', function() {
-                    let trigger = $(this).text('…');
-                    $.post('/api/clientMemo/stamp', {
-                        uid: $(this).attr('data-uid')
-                    }, _data => {
-                        if(!hasResponseError(_data)) {
-                            trigger.hide();
-                            let doneElem = $('<i class="text-success fa fa-check"></i>');
-                            doneElem.insertAfter(trigger);
-                            setTimeout(() => {
-                                let tbody = trigger.closest('tbody');
-                                trigger.closest('tr').remove();
-                                if(!tbody.find('>tr').length) {
-                                    tbody.closest('.ack-container').remove();
-                                }
-                            }, 500);
-                        }
-                    }, 'json');
-                    return false;
-                });
-
-            $(document)
-                .off('click', '.ack-pro-appt-update')
-                .on('click', '.ack-pro-appt-update', function() {
-                    let trigger = $(this).text('…');
-                    $.post('/api/appointmentConfirmationDecision/acknowledgeAsAppointmentPro', {
-                        uid: $(this).attr('data-uid')
-                    }, _data => {
-                        if(!hasResponseError(_data)) {
-                            trigger.hide();
-                            let doneElem = $('<i class="text-success fa fa-check"></i>');
-                            doneElem.insertAfter(trigger);
-                            setTimeout(() => {
-                                let ackContainer = trigger.closest('tbody');
-                                trigger.closest('tr').slideUp('fast', function() {
-                                    $(this).remove();
-                                    if(!ackContainer.find('>tr').length) {
-                                        ackContainer.remove();
-                                    }
-                                });
-                            }, 500);
-                        }
-                    }, 'json');
-                    return false;
-                });
-
-            $(document)
-                .off('click', '.ack-na-appt-update')
-                .on('click', '.ack-na-appt-update', function() {
-                    let trigger = $(this).text('…');
-                    $.post('/api/appointmentConfirmationDecision/acknowledgeAsClientDefaultNa', {
-                        uid: $(this).attr('data-uid')
-                    }, _data => {
-                        if(!hasResponseError(_data)) {
-                            trigger.hide();
-                            let doneElem = $('<i class="text-success fa fa-check"></i>');
-                            doneElem.insertAfter(trigger);
-                            setTimeout(() => {
-                                let ackContainer = trigger.closest('tbody');
-                                trigger.closest('tr').slideUp('fast', function() {
-                                    $(this).remove();
-                                    if(!ackContainer.find('>tr').length) {
-                                        ackContainer.remove();
-                                    }
-                                });
-                            }, 500);
-                        }
-                    }, 'json');
-                    return false;
-                });
-        }
-        addMCInitializer('pro-dashboard', init, '#pro-dashboard-container');
-    })();
-</script>
-@endsection

+ 5 - 0
resources/views/app/dna/appointments.blade.php

@@ -0,0 +1,5 @@
+@extends ('layouts/template')
+
+@section('content')
+    <h1>Hi</h1>
+@endsection

+ 5 - 0
resources/views/app/dna/bills.blade.php

@@ -0,0 +1,5 @@
+@extends ('layouts/template')
+
+@section('content')
+    <h1>Hi</h1>
+@endsection

+ 0 - 0
resources/views/app/dna/cancelled_appointments_pending_review.blade.php


+ 0 - 0
resources/views/app/dna/cancelled_bills_pending_review.blade.php


+ 0 - 0
resources/views/app/dna/cancelled_supply_orders_pending_review.blade.php


+ 1 - 0
resources/views/app/dna/dashboard/calls_memos.blade.php

@@ -0,0 +1 @@
+<h1>Phone Calls & Memos</h1>

+ 1 - 0
resources/views/app/dna/dashboard/erx_orders.blade.php

@@ -0,0 +1 @@
+<h1>ERX & Orders</h1>

+ 1 - 0
resources/views/app/dna/dashboard/measurements.blade.php

@@ -0,0 +1 @@
+<div id="measurements-tab">Loading...</div>

+ 1 - 0
resources/views/app/dna/dashboard/messages.blade.php

@@ -0,0 +1 @@
+<h1>Messages</h1>

+ 1 - 0
resources/views/app/dna/dashboard/notifications.blade.php

@@ -0,0 +1 @@
+<h1>Notifications</h1>

+ 1 - 0
resources/views/app/dna/dashboard/supply_orders.blade.php

@@ -0,0 +1 @@
+<h1>Supply Orders</h1>

+ 5 - 0
resources/views/app/dna/erx_and_orders.blade.php

@@ -0,0 +1,5 @@
+@extends ('layouts/template')
+
+@section('content')
+    <h1>Hi</h1>
+@endsection

+ 0 - 0
resources/views/app/dna/erx_and_orders_pending_signature.blade.php


+ 0 - 0
resources/views/app/dna/new_patients_awaiting_visit.blade.php


+ 5 - 0
resources/views/app/dna/notes.blade.php

@@ -0,0 +1,5 @@
+@extends ('layouts/template')
+
+@section('content')
+    <h1>Hi</h1>
+@endsection

+ 0 - 0
resources/views/app/dna/notes_pending_billing.blade.php


+ 0 - 0
resources/views/app/dna/notes_pending_signature.blade.php


+ 6 - 0
resources/views/app/dna/patients.blade.php

@@ -0,0 +1,6 @@
+@extends ('layouts/template')
+
+@section('content')
+    <h1>Hi</h1>
+@endsection
+

+ 0 - 0
resources/views/app/dna/patients_overdue.blade.php


+ 0 - 0
resources/views/app/dna/patients_without_appointments.blade.php


+ 5 - 0
resources/views/app/dna/reports.blade.php

@@ -0,0 +1,5 @@
+@extends ('layouts/template')
+
+@section('content')
+    <h1>Hi</h1>
+@endsection

+ 0 - 0
resources/views/app/dna/reports_pending_signature.blade.php


+ 5 - 0
resources/views/app/dna/supply_orders.blade.php

@@ -0,0 +1,5 @@
+@extends ('layouts/template')
+
+@section('content')
+    <h1>Hi</h1>
+@endsection

+ 0 - 0
resources/views/app/dna/supply_orders_pending_signature.blade.php


+ 55 - 0
resources/views/app/mcp/appointments.blade.php

@@ -0,0 +1,55 @@
+@extends ('layouts/template')
+
+@section('content')
+<div class="p-3 mcp-theme-1" id="patients-list">
+    <div class="card">
+
+        <div class="card-header px-3 py-2 d-flex align-items-center">
+            <strong class="mr-4">
+                <i class="fas fa-calendar-alt"></i>
+                Appointments
+            </strong>
+        </div>
+
+        <div class="card-body p-0">
+            <div class="p-3">
+                @include('app.mcp.appointments_filters')
+            </div>
+            <table class="table table-condensed p-0 m-0">
+                <thead class="bg-light">
+                    <tr>
+                        <th class="px-3 border-0">Date</th>
+                        <th class="px-3 border-0">HCP</th>
+                        <th class="px-3 border-0">Patient</th>
+                        <th class="px-3 border-0">New or FU?</th>
+                        <th class="px-3 border-0">Status</th>
+                        <th class="px-3 border-0">Note</th>
+                    </tr>
+                </thead>
+                <tbody>
+                    @foreach($appointments as $appointment)
+                    <tr>
+                        <td>{{-- date --}} -</td>
+                        <td>{{-- hcp --}} -</td>
+                        <td>{{-- patient --}} - </td>
+                        <td>{{-- New or FU? --}} - </td>  
+                        <td>{{-- Status --}} - </td>  
+                        <td>{{-- Note --}} - </td>
+                    </tr>
+                    @endforeach
+
+                    @if(count($appointments) === 0)
+                    <tr>
+                        <td colspan="6">No records found!</td>
+                    </tr>
+                    @endif
+                </tbody>
+
+            </table>
+            <div class="ml-2 mt-2">
+                {{ $appointments->appends(request()->input())->links() }}
+            </div>
+        </div>
+    </div>
+</div>
+@endsection

+ 100 - 0
resources/views/app/mcp/appointments_filters.blade.php

@@ -0,0 +1,100 @@
+<style>
+	#mcp-appointments-filters label {
+		font-weight: bold;
+	}
+
+	#mcp-appointments-filters .mw-100px {
+		min-width: 100px;
+	}
+</style>
+<form id="mcp-appointments-filters" method="GET" action="{{ route('mcp.appointments') }}" class="row align-items-end" v-cloak>
+	   <!-- DATE -->
+	<div class="col-md-2">
+		<div class="form-group">
+			<label>Date:</label>
+			<select name="date_category" class="form-control input-sm" v-model="filters.date_category">
+				<option value="">All</option>
+				<option value="EXACTLY">Exactly</option>
+				<option value="LESS_THAN">Less Than</option>
+				<option value="GREATER_THAN">Greater Than</option>
+				<option value="BETWEEN">Between</option>
+				<option value="NOT_BETWEEN">Not Between</option>
+			</select>
+		</div>
+	</div>
+	<div v-if="filters.date_category" class="col-md-2">
+		<div class="form-group">
+			<label>&nbsp;</label>
+			<input name="date_value_1" value="{{ $date_value_1 ?? '' }}" type="date" class="form-control input-sm" :placeholder="(filters.date_category === 'BETWEEN' || filters.date_category === 'NOT_BETWEEN') ? 'From' : 'Date'" />
+		</div>
+	</div>
+	<div v-if="filters.date_category && (filters.date_category === 'BETWEEN' || filters.date_category === 'NOT_BETWEEN')" class="col-md-2">
+		<div class="form-group">
+			<label>&nbsp;</label>
+			<input name="date_value_2" value="{{ $date_value_2 ?? '' }}" type="date" class="form-control input-sm" placeholder="To" />
+		</div>
+	</div>
+	<!-- STATUS -->
+	<div class="col-md-2">
+		<div class="form-group">
+			<label>Status:</label>
+			<select name="status" class="form-control input-sm" v-model="filters.status">
+				<option value="ALL">All</option>
+				<option value="NEW">New</option>
+				<option value="SIGNED">Signed</option>
+				<option value="VERIFIED">Verified</option>
+				<option value="PROCESSED">Processed</option>
+				<option value="CANCELLED">Cancelled</option>
+			</select>
+		</div>
+	</div>
+	
+	<!-- NEW/FU -->
+	<div class="col-md-2">
+		<div class="form-group">
+			<label>New or FU:</label>
+			<select name="new_or_fu" class="form-control input-sm" v-model="filters.new_or_fu">
+				<option value="ALL">All</option>
+				<option value="NEW">New</option>
+				<option value="FU">FU</option>
+			</select>
+		</div>
+	</div>
+
+	<div class="col-md-2">
+		<div class="form-group d-flex">
+			<label>&nbsp;</label>
+			<button type="submit" class="btn btn-primary btn-sm mr-2 mw-100px">Apply Filters</button>
+			<a href="{{ route('mcp.patients') }}" class="btn btn-danger btn-sm text-white mw-100px">Clear Filters</a>
+		</div>
+	</div>
+</form>
+
+<script>
+	(function() {
+		function init() {
+			window.apapp = new Vue({
+				el: '#mcp-appointments-filters',
+				delimiters: ['@{{', '}}'],
+				data: {
+					filters: {
+						date_category: "<?= $date_category ?? '' ?>",
+						status: "<?= $status ?? '' ?>",
+						new_or_fu: "<?= $new_or_fu ?? '' ?>"
+					}
+				},
+				methods: {
+					init: function() {
+						
+					}
+				},
+				mounted: function() {
+					this.init();
+				},
+			});
+
+
+		}
+		addMCInitializer('mcp-appointments-filters', init, '#mcp-appointments-filters');
+	})();
+</script>

+ 53 - 0
resources/views/app/mcp/bills.blade.php

@@ -0,0 +1,53 @@
+@extends ('layouts/template')
+
+@section('content')
+<div class="p-3 mcp-theme-1" id="patients-list">
+    <div class="card">
+
+        <div class="card-header px-3 py-2 d-flex align-items-center">
+            <strong class="mr-4">
+                <i class="fas fa-file-invoice-dollar"></i>
+                Bills
+            </strong>
+        </div>
+
+        <div class="card-body p-0">
+            <div class="p-3">
+                @include('app.mcp.bills_filters')
+            </div>
+            <table class="table table-condensed p-0 m-0">
+                <thead class="bg-light">
+                    <tr>
+                        <th class="px-3 border-0">Date</th>
+                        <th class="px-3 border-0">Patient</th>
+                        <th class="px-3 border-0">Service</th>
+                        <th class="px-3 border-0">Amount</th>
+                        <th class="px-3 border-0">Status</th>
+                    </tr>
+                </thead>
+                <tbody>
+                    @foreach($bills as $bill)
+                    <tr>
+                        <td>{{-- date --}} -</td>
+                        <td>{{-- patient --}} -</td>
+                        <td>{{-- service --}} - </td>
+                        <td>{{-- amount --}} - </td>                        
+                        <td>{{-- status --}} - </td>
+                    </tr>
+                    @endforeach
+
+                    @if(count($bills) === 0)
+                    <tr>
+                        <td colspan="5">No records found!</td>
+                    </tr>
+                    @endif
+                </tbody>
+
+            </table>
+            <div class="ml-2 mt-2">
+                {{ $bills->appends(request()->input())->links() }}
+            </div>
+        </div>
+    </div>
+</div>
+@endsection

+ 87 - 0
resources/views/app/mcp/bills_filters.blade.php

@@ -0,0 +1,87 @@
+<style>
+	#mcp-bills-filters label {
+		font-weight: bold;
+	}
+
+	#mcp-bills-filters .mw-100px {
+		min-width: 100px;
+	}
+</style>
+<form id="mcp-bills-filters" method="GET" action="{{ route('mcp.notes') }}" class="row align-items-end" v-cloak>
+	<!-- DATE	 -->
+	<div class="col-md-2">
+		<div class="form-group">
+			<label>Date:</label>
+			<select name="date_category" class="form-control input-sm" v-model="filters.date_category">
+				<option value="">All</option>
+				<option value="EXACTLY">Exactly</option>
+				<option value="LESS_THAN">Less Than</option>
+				<option value="GREATER_THAN">Greater Than</option>
+				<option value="BETWEEN">Between</option>
+				<option value="NOT_BETWEEN">Not Between</option>
+			</select>
+		</div>
+	</div>
+	<div v-if="filters.date_category" class="col-md-2">
+		<div class="form-group">
+			<label>&nbsp;</label>
+			<input name="date_value_1" value="{{ $date_value_1 ?? '' }}" type="date" class="form-control input-sm" :placeholder="(filters.date_category === 'BETWEEN' || filters.date_category === 'NOT_BETWEEN') ? 'From' : 'Date'" />
+		</div>
+	</div>
+	<div v-if="filters.date_category && (filters.date_category === 'BETWEEN' || filters.date_category === 'NOT_BETWEEN')" class="col-md-2">
+		<div class="form-group">
+			<label>&nbsp;</label>
+			<input name="date_value_2" value="{{ $date_value_2 ?? '' }}" type="date" class="form-control input-sm" placeholder="To" />
+		</div>
+	</div>
+	<!-- STATUS -->
+	<div class="col-md-2">
+		<div class="form-group">
+			<label>Status:</label>
+			<select name="status" class="form-control input-sm" v-model="filters.status">
+				<option value="ALL">All</option>
+				<option value="NEW">New</option>
+				<option value="SIGNED">Signed</option>
+				<option value="VERIFIED">Verified</option>
+				<option value="PROCESSED">Processed</option>
+				<option value="CANCELLED">Cancelled</option>
+			</select>
+		</div>
+	</div>
+
+	<div class="col-md-2">
+		<div class="form-group d-flex">
+			<label>&nbsp;</label>
+			<button type="submit" class="btn btn-primary btn-sm mr-2 mw-100px">Apply Filters</button>
+			<a href="{{ route('mcp.patients') }}" class="btn btn-danger btn-sm text-white mw-100px">Clear Filters</a>
+		</div>
+	</div>
+</form>
+
+<script>
+	(function() {
+		function init() {
+			window.apapp = new Vue({
+				el: '#mcp-bills-filters',
+				delimiters: ['@{{', '}}'],
+				data: {
+					filters: {
+						date_category: "<?= $date_category ?? '' ?>",
+						status: "<?= $status ?? '' ?>"
+					}
+				},
+				methods: {
+					init: function() {
+
+					}
+				},
+				mounted: function() {
+					this.init();
+				},
+			});
+
+
+		}
+		addMCInitializer('mcp-bills-filters', init, '#mcp-bills-filters');
+	})();
+</script>

+ 19 - 0
resources/views/app/mcp/cancelled_appointments_pending_review.blade.php

@@ -0,0 +1,19 @@
+@extends ('layouts/template')
+
+@section('content')
+    <div class="p-3 mcp-theme-1" id="patients-list">
+        <div class="card">
+
+            <div class="card-header px-3 py-2 d-flex align-items-center">
+                <strong class="mr-4">
+                    <i class="fas fa-user-injured"></i>
+                    Cancelled Appointments Pending Review
+                </strong>
+            </div>
+
+            <div class="card-body p-0">
+
+            </div>
+        </div>
+    </div>
+@endsection

+ 19 - 0
resources/views/app/mcp/cancelled_bills_pending_review.blade.php

@@ -0,0 +1,19 @@
+@extends ('layouts/template')
+
+@section('content')
+    <div class="p-3 mcp-theme-1" id="patients-list">
+        <div class="card">
+
+            <div class="card-header px-3 py-2 d-flex align-items-center">
+                <strong class="mr-4">
+                    <i class="fas fa-user-injured"></i>
+                    Cancelled Bills Pending Review
+                </strong>
+            </div>
+
+            <div class="card-body p-0">
+
+            </div>
+        </div>
+    </div>
+@endsection

+ 19 - 0
resources/views/app/mcp/cancelled_supply_orders_pending_review.blade.php

@@ -0,0 +1,19 @@
+@extends ('layouts/template')
+
+@section('content')
+    <div class="p-3 mcp-theme-1" id="patients-list">
+        <div class="card">
+
+            <div class="card-header px-3 py-2 d-flex align-items-center">
+                <strong class="mr-4">
+                    <i class="fas fa-user-injured"></i>
+                    Cancelled Supply Orders Pending Review
+                </strong>
+            </div>
+
+            <div class="card-body p-0">
+
+            </div>
+        </div>
+    </div>
+@endsection

+ 53 - 0
resources/views/app/mcp/client_messages.blade.php

@@ -0,0 +1,53 @@
+@extends ('layouts/template')
+
+@section('content')
+<div class="p-3 mcp-theme-1" id="patients-list">
+    <div class="card">
+
+        <div class="card-header px-3 py-2 d-flex align-items-center">
+            <strong class="mr-4">
+                <i class="far fa-comments"></i>
+                Client Messages
+            </strong>
+        </div>
+
+        <div class="card-body p-0">
+            <div class="p-3">
+                @include('app.mcp.client_messages_filters')
+            </div>
+            <table class="table table-condensed p-0 m-0">
+                <thead class="bg-light">
+                    <tr>
+                        <th class="px-3 border-0">Date</th>
+                        <th class="px-3 border-0">To</th>
+                        <th class="px-3 border-0">From</th>
+                        <th class="px-3 border-0">Message</th>
+                        <th class="px-3 border-0">Status</th>
+                    </tr>
+                </thead>
+                <tbody>
+                    @foreach($clientMessages as $clientMessage)
+                    <tr>
+                        <td>{{ $clientMessage->created_at }}</td>
+                        <td>{{$clientMessage->to}}</td>
+                        <td>{{$clientMessage->from}}</td>
+                        <td><?= nl2br($clientMessage->body) ?></td>                        
+                        <td>{{-- status --}} - </td>
+                    </tr>
+                    @endforeach
+
+                    @if(count($clientMessages) === 0)
+                    <tr>
+                        <td colspan="5">No records found!</td>
+                    </tr>
+                    @endif
+                </tbody>
+
+            </table>
+            <div class="ml-2 mt-2">
+                {{ $clientMessages->appends(request()->input())->links() }}
+            </div>
+        </div>
+    </div>
+</div>
+@endsection

+ 95 - 0
resources/views/app/mcp/client_messages_filters.blade.php

@@ -0,0 +1,95 @@
+<style>
+	#mcp-client-messages-filters label {
+		font-weight: bold;
+	}
+
+	#mcp-client-messages-filters .mw-100px {
+		min-width: 100px;
+	}
+</style>
+<form id="mcp-client-messages-filters" method="GET" action="{{ route('mcp.client_messages') }}" class="row align-items-end" v-cloak>
+	<!-- DATE	 -->
+	<div class="col-md-2">
+		<div class="form-group">
+			<label>Date:</label>
+			<select name="date_category" class="form-control input-sm" v-model="filters.date_category">
+				<option value="">All</option>
+				<option value="EXACTLY">Exactly</option>
+				<option value="LESS_THAN">Less Than</option>
+				<option value="GREATER_THAN">Greater Than</option>
+				<option value="BETWEEN">Between</option>
+				<option value="NOT_BETWEEN">Not Between</option>
+			</select>
+		</div>
+	</div>
+	<div v-if="filters.date_category" class="col-md-2">
+		<div class="form-group">
+			<label>&nbsp;</label>
+			<input name="date_value_1" value="{{ $date_value_1 ?? '' }}" type="date" class="form-control input-sm" :placeholder="(filters.date_category === 'BETWEEN' || filters.date_category === 'NOT_BETWEEN') ? 'From' : 'Date'" />
+		</div>
+	</div>
+	<div v-if="filters.date_category && (filters.date_category === 'BETWEEN' || filters.date_category === 'NOT_BETWEEN')" class="col-md-2">
+		<div class="form-group">
+			<label>&nbsp;</label>
+			<input name="date_value_2" value="{{ $date_value_2 ?? '' }}" type="date" class="form-control input-sm" placeholder="To" />
+		</div>
+	</div>
+	<!-- TO OR FROM ME -->
+	<div class="col-md-2">
+		<div class="form-group">
+			<label>To or From Me:</label>
+			<select name="to_or_from_me" class="form-control input-sm" v-model="filters.to_or_from_me">
+				<option value="ALL">All</option>
+				<option value="TO_ME">To me</option>
+				<option value="FROM_ME">From Me</option>
+			</select>
+		</div>
+	</div>
+	<!-- STATUS -->
+	<div class="col-md-2">
+		<div class="form-group">
+			<label>Status:</label>
+			<select name="status" class="form-control input-sm" v-model="filters.status">
+				<option value="ALL">All</option>
+				<option value="AWAITING_REPLY">AWaiting Reply</option>
+			</select>
+		</div>
+	</div>
+
+	<div class="col-md-2">
+		<div class="form-group d-flex">
+			<label>&nbsp;</label>
+			<button type="submit" class="btn btn-primary btn-sm mr-2 mw-100px">Apply Filters</button>
+			<a href="{{ route('mcp.patients') }}" class="btn btn-danger btn-sm text-white mw-100px">Clear Filters</a>
+		</div>
+	</div>
+</form>
+
+<script>
+	(function() {
+		function init() {
+			window.apapp = new Vue({
+				el: '#mcp-client-messages-filters',
+				delimiters: ['@{{', '}}'],
+				data: {
+					filters: {
+						date_category: "<?= $date_category ?? '' ?>",
+						to_or_from_me: "<?= $to_or_from_me ?? '' ?>",
+						status: "<?= $status ?? '' ?>"
+					}
+				},
+				methods: {
+					init: function() {
+
+					}
+				},
+				mounted: function() {
+					this.init();
+				},
+			});
+
+
+		}
+		addMCInitializer('mcp-client-messages-filters', init, '#mcp-client-messages-filters');
+	})();
+</script>

+ 71 - 0
resources/views/app/mcp/dashboard/appointments.blade.php

@@ -0,0 +1,71 @@
+<table v-if="events.length > 0"
+       class="mb-0 table table-sm table-bordered appointments">
+    <tr v-for="event in events" class="">
+        <td>
+            <a :href="'/patients/view/' + event.clientUid" class="font-weight-bold">@{{
+                event.clientName }}</a>
+        </td>
+        <td>
+            {{-- <span class="small d-inline-block text-secondary font-weight-normal"> (@{{ event.clientAge }} y.o. @{{event.clientSex}})</span>--}}
+            @{{ event.friendlyStartTime }} - @{{ event.friendlyEndTime }} <span
+                class="text-secondary">@{{ formatTimeZone(event.timezone) }}</span>
+            <span v-if="event.title"
+                  class="d-inline-block ml- 2 text-secondary font-weight-bold">
+                                                      &nbsp;/&nbsp;
+                                                  @{{ event.title }}
+                                                  </span>
+            <a :href="'/patients/view/' + event.clientUid + '/calendar/' + event.uid">
+                <i class="fa fa-edit"></i>
+            </a>
+        </td>
+        <td>
+            <div class="d-flex align-items-baseline">
+                <!-- <div v-if="event.status === 'CREATED'"
+                     class="text-warning-mellow font-weight-bold">
+                    <i class="fa fa-exclamation-triangle"></i>
+                    Confirmation pending
+                </div>
+                <div v-else-if="event.status === 'CONFIRMED'"
+                     class="text-success font-weight-bold">
+                    <i class="fa fa-check"></i>
+                    Confirmed by the patient
+                </div>
+                <div v-else-if="event.status === 'REJECTED'"
+                     class="text-danger font-weight-bold">
+                    <i class="fa fa-stop"></i>
+                    Rejected by the patient
+                </div> -->
+                <select v-model="event.newStatus"
+                        class="form-control input-sm bg-light"
+                        v-on:change="updateStatus(event)">
+                    <option value="CREATED">CREATED</option>
+                    <option value="CONFIRMED">CONFIRMED</option>
+                    <option value="CANCELLED">CANCELLED</option>
+                    <option value="COMPLETED">COMPLETED</option>
+                    <option value="ABANDONED">ABANDONED</option>
+                </select>
+                <div v-if="selectedDate === '{{ date('Y-m-d') }}'"
+                     class="pt-1 text-right"
+                     :class="event.started ? 'text-danger': 'text-secondary'">
+                    @{{ event.inHowManyHours }}
+                </div>
+            </div>
+        </td>
+        <td>
+            <div>
+                <b v-if="event.coverage == 'YES'" class="text-success">Covered</b>
+                <b v-else-if="event.coverage == 'NO'" class="text-danger">Not
+                    Covered</b>
+                <b v-else class="text-warning-mellow">Pending</b>
+            </div>
+        </td>
+    </tr>
+</table>
+<div v-if="numEventsForDate === 0 && selectedDate"
+     class="bg-light p-3 text-secondary border bounded">
+    <span v-if="filterStatus === ''">You have no appointments on <b>@{{ formatSelectedDate(selectedDate) }}</b></span>
+    <span v-if="filterStatus !== ''">You have no appointments on <b>@{{ formatSelectedDate(selectedDate) }}</b> with status <b>@{{ filterStatus }}</b></span>
+</div>
+<div v-show="!selectedDate" class="bg-light p-3 text-secondary border bounded">
+    Please select a date from the calendar on the left
+</div>

+ 1 - 0
resources/views/app/mcp/dashboard/calls_memos.blade.php

@@ -0,0 +1 @@
+<h1>Phone Calls & Memos</h1>

+ 1 - 0
resources/views/app/mcp/dashboard/erx_orders.blade.php

@@ -0,0 +1 @@
+<h1>ERX & Orders</h1>

+ 1 - 0
resources/views/app/mcp/dashboard/measurements.blade.php

@@ -0,0 +1 @@
+<div id="measurements-tab">Loading...</div>

+ 1 - 0
resources/views/app/mcp/dashboard/messages.blade.php

@@ -0,0 +1 @@
+<h1>Messages</h1>

+ 1 - 0
resources/views/app/mcp/dashboard/notifications.blade.php

@@ -0,0 +1 @@
+<h1>Notifications</h1>

+ 1 - 0
resources/views/app/mcp/dashboard/reports.blade.php

@@ -0,0 +1 @@
+<h1>Reports</h1>

+ 1 - 0
resources/views/app/mcp/dashboard/supply_orders.blade.php

@@ -0,0 +1 @@
+<h1>Supply Orders</h1>

+ 51 - 0
resources/views/app/mcp/erx_and_orders.blade.php

@@ -0,0 +1,51 @@
+@extends ('layouts/template')
+
+@section('content')
+<div class="p-3 mcp-theme-1" id="patients-list">
+    <div class="card">
+
+        <div class="card-header px-3 py-2 d-flex align-items-center">
+            <strong class="mr-4">
+                <i class="fas fa-file-prescription"></i>
+                ERx & Orders
+            </strong>
+        </div>
+
+        <div class="card-body p-0">
+            <div class="p-3">
+                @include('app.mcp.erx_and_orders_filters')
+            </div>
+            <table class="table table-condensed p-0 m-0">
+                <thead class="bg-light">
+                    <tr>
+                        <th class="px-3 border-0">Date</th>
+                        <th class="px-3 border-0">Patient</th>
+                        <th class="px-3 border-0">Content</th>
+                        <th class="px-3 border-0">Status</th>
+                    </tr>
+                </thead>
+                <tbody>
+                    @foreach($erxAndOrders as $erxAndOrder)
+                    <tr>
+                        <td>{{-- date --}} -</td>
+                        <td>{{-- patient --}} -</td>
+                        <td>{{-- content --}} - </td>
+                        <td>{{-- status --}} - </td>
+                    </tr>
+                    @endforeach
+
+                    @if(count($erxAndOrders) === 0)
+                    <tr>
+                        <td colspan="4">No records found!</td>
+                    </tr>
+                    @endif
+                </tbody>
+
+            </table>
+            <div class="ml-2 mt-2">
+                {{ $erxAndOrders->appends(request()->input())->links() }}
+            </div>
+        </div>
+    </div>
+</div>
+@endsection

+ 87 - 0
resources/views/app/mcp/erx_and_orders_filters.blade.php

@@ -0,0 +1,87 @@
+<style>
+	#mcp-erx-and-orders-filters label {
+		font-weight: bold;
+	}
+
+	#mcp-erx-and-orders-filters .mw-100px {
+		min-width: 100px;
+	}
+</style>
+<form id="mcp-erx-and-orders-filters" method="GET" action="{{ route('mcp.notes') }}" class="row align-items-end" v-cloak>
+	<!-- DATE	 -->
+	<div class="col-md-2">
+		<div class="form-group">
+			<label>Date:</label>
+			<select name="date_category" class="form-control input-sm" v-model="filters.date_category">
+				<option value="">All</option>
+				<option value="EXACTLY">Exactly</option>
+				<option value="LESS_THAN">Less Than</option>
+				<option value="GREATER_THAN">Greater Than</option>
+				<option value="BETWEEN">Between</option>
+				<option value="NOT_BETWEEN">Not Between</option>
+			</select>
+		</div>
+	</div>
+	<div v-if="filters.date_category" class="col-md-2">
+		<div class="form-group">
+			<label>&nbsp;</label>
+			<input name="date_value_1" value="{{ $date_value_1 ?? '' }}" type="date" class="form-control input-sm" :placeholder="(filters.date_category === 'BETWEEN' || filters.date_category === 'NOT_BETWEEN') ? 'From' : 'Date'" />
+		</div>
+	</div>
+	<div v-if="filters.date_category && (filters.date_category === 'BETWEEN' || filters.date_category === 'NOT_BETWEEN')" class="col-md-2">
+		<div class="form-group">
+			<label>&nbsp;</label>
+			<input name="date_value_2" value="{{ $date_value_2 ?? '' }}" type="date" class="form-control input-sm" placeholder="To" />
+		</div>
+	</div>
+	<!-- STATUS -->
+	<div class="col-md-2">
+		<div class="form-group">
+			<label>Status:</label>
+			<select name="status" class="form-control input-sm" v-model="filters.status">
+				<option value="ALL">All</option>
+				<option value="NEW">New</option>
+				<option value="SIGNED">Signed</option>
+				<option value="VERIFIED">Verified</option>
+				<option value="PROCESSED">Processed</option>
+				<option value="CANCELLED">Cancelled</option>
+			</select>
+		</div>
+	</div>
+
+	<div class="col-md-2">
+		<div class="form-group d-flex">
+			<label>&nbsp;</label>
+			<button type="submit" class="btn btn-primary btn-sm mr-2 mw-100px">Apply Filters</button>
+			<a href="{{ route('mcp.patients') }}" class="btn btn-danger btn-sm text-white mw-100px">Clear Filters</a>
+		</div>
+	</div>
+</form>
+
+<script>
+	(function() {
+		function init() {
+			window.apapp = new Vue({
+				el: '#mcp-erx-and-orders-filters',
+				delimiters: ['@{{', '}}'],
+				data: {
+					filters: {
+						date_category: "<?= $date_category ?? '' ?>",
+						status: "<?= $status ?? '' ?>"
+					}
+				},
+				methods: {
+					init: function() {
+
+					}
+				},
+				mounted: function() {
+					this.init();
+				},
+			});
+
+
+		}
+		addMCInitializer('mcp-erx-and-orders-filters', init, '#mcp-erx-and-orders-filters');
+	})();
+</script>

+ 19 - 0
resources/views/app/mcp/erx_and_orders_pending_signature.blade.php

@@ -0,0 +1,19 @@
+@extends ('layouts/template')
+
+@section('content')
+    <div class="p-3 mcp-theme-1" id="patients-list">
+        <div class="card">
+
+            <div class="card-header px-3 py-2 d-flex align-items-center">
+                <strong class="mr-4">
+                    <i class="fas fa-user-injured"></i>
+                    ERx & Orders Pending Signature
+                </strong>
+            </div>
+
+            <div class="card-body p-0">
+
+            </div>
+        </div>
+    </div>
+@endsection

+ 19 - 0
resources/views/app/mcp/new_patients_awaiting_visit.blade.php

@@ -0,0 +1,19 @@
+@extends ('layouts/template')
+
+@section('content')
+    <div class="p-3 mcp-theme-1" id="patients-list">
+        <div class="card">
+
+            <div class="card-header px-3 py-2 d-flex align-items-center">
+                <strong class="mr-4">
+                    <i class="fas fa-user-injured"></i>
+                    New Patients Awaiting Visit
+                </strong>
+            </div>
+
+            <div class="card-body p-0">
+
+            </div>
+        </div>
+    </div>
+@endsection

+ 53 - 0
resources/views/app/mcp/notes.blade.php

@@ -0,0 +1,53 @@
+@extends ('layouts/template')
+
+@section('content')
+<div class="p-3 mcp-theme-1" id="patients-list">
+    <div class="card">
+
+        <div class="card-header px-3 py-2 d-flex align-items-center">
+            <strong class="mr-4">
+                <i class="fas fa-notes-medical"></i>
+                Notes
+            </strong>
+        </div>
+
+        <div class="card-body p-0">
+            <div class="p-3">
+                @include('app.mcp.notes_filters')
+            </div>
+            <table class="table table-condensed p-0 m-0">
+                <thead class="bg-light">
+                    <tr>
+                        <th class="px-3 border-0">Date</th>
+                        <th class="px-3 border-0">HCP</th>
+                        <th class="px-3 border-0">Patient</th>
+                        <th class="px-3 border-0">ICD</th>
+                        <th class="px-3 border-0">Status</th>
+                    </tr>
+                </thead>
+                <tbody>
+                    @foreach($notes as $note)
+                    <tr>
+                        <td>{{-- date --}} -</td>
+                        <td>{{-- hcp --}} -</td>
+                        <td>{{-- patient --}} - </td>
+                        <td>{{-- ICD --}} - </td>                        
+                        <td>{{-- Status --}} - </td>
+                    </tr>
+                    @endforeach
+
+                    @if(count($notes) === 0)
+                    <tr>
+                        <td colspan="5">No records found!</td>
+                    </tr>
+                    @endif
+                </tbody>
+
+            </table>
+            <div class="ml-2 mt-2">
+                {{ $notes->appends(request()->input())->links() }}
+            </div>
+        </div>
+    </div>
+</div>
+@endsection

+ 87 - 0
resources/views/app/mcp/notes_filters.blade.php

@@ -0,0 +1,87 @@
+<style>
+	#mcp-notes-filters label {
+		font-weight: bold;
+	}
+
+	#mcp-notes-filters .mw-100px {
+		min-width: 100px;
+	}
+</style>
+<form id="mcp-notes-filters" method="GET" action="{{ route('mcp.notes') }}" class="row align-items-end" v-cloak>
+	<!-- DATE	 -->
+	<div class="col-md-2">
+		<div class="form-group">
+			<label>Date:</label>
+			<select name="date_category" class="form-control input-sm" v-model="filters.date_category">
+				<option value="">All</option>
+				<option value="EXACTLY">Exactly</option>
+				<option value="LESS_THAN">Less Than</option>
+				<option value="GREATER_THAN">Greater Than</option>
+				<option value="BETWEEN">Between</option>
+				<option value="NOT_BETWEEN">Not Between</option>
+			</select>
+		</div>
+	</div>
+	<div v-if="filters.date_category" class="col-md-2">
+		<div class="form-group">
+			<label>&nbsp;</label>
+			<input name="date_value_1" value="{{ $date_value_1 ?? '' }}" type="date" class="form-control input-sm" :placeholder="(filters.date_category === 'BETWEEN' || filters.date_category === 'NOT_BETWEEN') ? 'From' : 'Date'" />
+		</div>
+	</div>
+	<div v-if="filters.date_category && (filters.date_category === 'BETWEEN' || filters.date_category === 'NOT_BETWEEN')" class="col-md-2">
+		<div class="form-group">
+			<label>&nbsp;</label>
+			<input name="date_value_2" value="{{ $date_value_2 ?? '' }}" type="date" class="form-control input-sm" placeholder="To" />
+		</div>
+	</div>
+	<!-- STATUS -->
+	<div class="col-md-2">
+		<div class="form-group">
+			<label>Status:</label>
+			<select name="status" class="form-control input-sm" v-model="filters.status">
+				<option value="ALL">All</option>
+				<option value="NEW">New</option>
+				<option value="SIGNED">Signed</option>
+				<option value="VERIFIED">Verified</option>
+				<option value="PROCESSED">Processed</option>
+				<option value="CANCELLED">Cancelled</option>
+			</select>
+		</div>
+	</div>	
+
+	<div class="col-md-2">
+		<div class="form-group d-flex">
+			<label>&nbsp;</label>
+			<button type="submit" class="btn btn-primary btn-sm mr-2 mw-100px">Apply Filters</button>
+			<a href="{{ route('mcp.patients') }}" class="btn btn-danger btn-sm text-white mw-100px">Clear Filters</a>
+		</div>
+	</div>
+</form>
+
+<script>
+	(function() {
+		function init() {
+			window.apapp = new Vue({
+				el: '#mcp-notes-filters',
+				delimiters: ['@{{', '}}'],
+				data: {
+					filters: {
+						date_category: "<?= $date_category ?? '' ?>",						
+						status: "<?= $status ?? '' ?>"
+					}
+				},
+				methods: {
+					init: function() {
+						
+					}
+				},
+				mounted: function() {
+					this.init();
+				},
+			});
+
+
+		}
+		addMCInitializer('mcp-notes-filters', init, '#mcp-notes-filters');
+	})();
+</script>

+ 19 - 0
resources/views/app/mcp/notes_pending_billing.blade.php

@@ -0,0 +1,19 @@
+@extends ('layouts/template')
+
+@section('content')
+    <div class="p-3 mcp-theme-1" id="patients-list">
+        <div class="card">
+
+            <div class="card-header px-3 py-2 d-flex align-items-center">
+                <strong class="mr-4">
+                    <i class="fas fa-user-injured"></i>
+                    Notes Pending Billing
+                </strong>
+            </div>
+
+            <div class="card-body p-0">
+
+            </div>
+        </div>
+    </div>
+@endsection

+ 19 - 0
resources/views/app/mcp/notes_pending_signature.blade.php

@@ -0,0 +1,19 @@
+@extends ('layouts/template')
+
+@section('content')
+    <div class="p-3 mcp-theme-1" id="patients-list">
+        <div class="card">
+
+            <div class="card-header px-3 py-2 d-flex align-items-center">
+                <strong class="mr-4">
+                    <i class="fas fa-user-injured"></i>
+                    Notes Pending Signature
+                </strong>
+            </div>
+
+            <div class="card-body p-0">
+
+            </div>
+        </div>
+    </div>
+@endsection

+ 75 - 0
resources/views/app/mcp/patients.blade.php

@@ -0,0 +1,75 @@
+@extends ('layouts/template')
+
+@section('content')
+<div class="p-3 mcp-theme-1" id="patients-list">
+    <div class="card">
+
+        <div class="card-header px-3 py-2 d-flex align-items-center">
+            <strong class="mr-4">
+                <i class="fas fa-user-injured"></i>
+                Patients
+            </strong>
+        </div>
+
+        <div class="card-body p-0">
+            <div class="p-3">
+                @include('app.mcp.patients_filters')
+            </div>
+            <table class="table table-condensed p-0 m-0">
+                <thead class="bg-light">
+                    <tr>
+                        <th class="px-3 border-0">Chart #</th>
+                        <th class="px-3 border-0">Name (F.I. LAST)</th>
+                        <th class="px-3 border-0">DOB</th>
+                        <th class="px-3 border-0">Gender</th>
+                        <th class="px-3 border-0">BMI</th>
+                        <th class="px-3 border-0">Insurance</th>
+                        <th class="px-3 border-0">Last Visit</th>
+                        <th class="px-3 border-0">Next Appt.</th>
+                        <th class="px-3 border-0">Status</th>
+                        <th class="px-3 border-0">CCM</th>
+                        <th class="px-3 border-0">RPM</th>
+                        <th class="px-3 border-0">Last Weight-In</th>
+                        <th class="px-3 border-0">Last BP</th>
+                        <th class="px-3 border-0">Assigned On</th>
+                    </tr>
+                </thead>
+                <tbody>
+                    @foreach($patients as $patient)
+                    <tr>
+                        <td class="px-3">
+                            <a href="{{route('patients.view.dashboard', $patient)}}">
+                                {{$patient->chart_number}}
+                            </a>
+                        </td>
+                        <td>{{$patient->displayName()}}</td>
+                        <td>{{ friendly_date_time($patient->dob, false) }}</td>
+                        <td>{{ $patient->sex === 'M' ? ', Male' : ($patient->sex === ', F' ? 'Female' : '') }}</td>
+                        <td>{{-- BMI --}} - </td>
+                        <td>{{-- Insurance --}} - </td>
+                        <td>{{-- Last Visit --}} - </td>
+                        <td>{{-- Next Appt. --}} - </td>
+                        <td>{{-- Status --}} - </td>
+                        <td>{{-- CCM --}} - </td>
+                        <td>{{-- RPM --}} - </td>
+                        <td>{{-- Last Weight-In --}} - </td>
+                        <td>{{-- Last BP --}} - </td>
+                        <td>{{-- Assigned On --}} - </td>
+                    </tr>
+                    @endforeach
+
+                    @if(count($patients) === 0)
+                    <tr>
+                        <td colspan="14">No records found!</td>
+                    </tr>
+                    @endif
+                </tbody>
+
+            </table>
+            <div class="ml-2 mt-2">
+                {{ $patients->appends(request()->input())->links() }}
+            </div>
+        </div>
+    </div>
+</div>
+@endsection

+ 237 - 0
resources/views/app/mcp/patients_filters.blade.php

@@ -0,0 +1,237 @@
+<style>
+	#mcp-patients-filters label {
+		font-weight: bold;
+	}
+
+	#mcp-patients-filters .mw-100px {
+		min-width: 100px;
+	}
+</style>
+<form id="mcp-patients-filters" method="GET" action="{{ route('mcp.patients') }}" class="row align-items-end" v-cloak>
+	<!-- AGE	 -->
+	<div class="col-md-2">
+		<div class="form-group">
+			<label>Age:</label>
+			<select name="age_category" class="form-control input-sm" v-model="filters.age_category">
+				<option value="">All</option>
+				<option value="EXACTLY">Exactly</option>
+				<option value="LESS_THAN">Less Than</option>
+				<option value="GREATER_THAN">Greater Than</option>
+				<option value="BETWEEN">Between</option>
+				<option value="NOT_BETWEEN">Not Between</option>
+			</select>
+		</div>
+	</div>
+	<div v-if="filters.age_category" class="col-md-2">
+		<div class="form-group">
+			<label>&nbsp;</label>
+			<input name="age_value_1" value="{{ $age_value_1 ?? '' }}" type="number" class="form-control input-sm" :placeholder="(filters.age_category === 'BETWEEN' || filters.age_category === 'NOT_BETWEEN') ? 'From' : 'Age'" />
+		</div>
+	</div>
+	<div v-if="filters.age_category && (filters.age_category === 'BETWEEN' || filters.age_category === 'NOT_BETWEEN')" class="col-md-2">
+		<div class="form-group">
+			<label>&nbsp;</label>
+			<input name="age_value_2" value="{{ $age_value_2 ?? '' }}" type="number" class="form-control input-sm" placeholder="To" />
+		</div>
+	</div>
+	<!-- SEX -->
+	<div class="col-md-2">
+		<div class="form-group">
+			<label>Sex:</label>
+			<select name="sex" class="form-control input-sm" v-model="filters.sex">
+				<option value="ALL">All</option>
+				<option value="M">Male</option>
+				<option value="F">Female</option>
+			</select>
+		</div>
+	</div>
+	<!-- BMI -->
+	<div class="col-md-2">
+		<div class="form-group">
+			<label>BMI:</label>
+			<select name="bmi_category" class="form-control input-sm" v-model="filters.bmi_category">
+				<option value="">All</option>
+				<option value="EXACTLY">Exactly</option>
+				<option value="LESS_THAN">Less Than</option>
+				<option value="GREATER_THAN">Greater Than</option>
+				<option value="BETWEEN">Between</option>
+				<option value="NOT_BETWEEN">Not Between</option>
+			</select>
+		</div>
+	</div>
+	<div v-if="filters.bmi_category" class="col-md-2">
+		<div class="form-group">
+			<label>&nbsp;</label>
+			<input name="bmi_value_1" value="{{ $bmi_value_1 ?? '' }}" type="number" class="form-control input-sm" :placeholder="(filters.bmi_category === 'BETWEEN' || filters.bmi_category === 'NOT_BETWEEN') ? 'From' : 'BMI'" />
+		</div>
+	</div>
+	<div v-if="filters.bmi_category && (filters.bmi_category === 'BETWEEN' || filters.bmi_category === 'NOT_BETWEEN')" class="col-md-2">
+		<div class="form-group">
+			<label>&nbsp;</label>
+			<input name="bmi_value_2" value="{{ $bmi_value_2 ?? '' }}" type="number" class="form-control input-sm" placeholder="To" />
+		</div>
+	</div>
+
+	<!-- LAST VISIT -->
+	<div class="col-md-2">
+		<div class="form-group">
+			<label>Last Visit:</label>
+			<select name="last_visit_category" class="form-control input-sm" v-model="filters.last_visit_category">
+				<option value="">All</option>
+				<option value="EXACTLY">Exactly</option>
+				<option value="LESS_THAN">Less Than</option>
+				<option value="GREATER_THAN">Greater Than</option>
+				<option value="BETWEEN">Between</option>
+				<option value="NOT_BETWEEN">Not Between</option>
+			</select>
+		</div>
+	</div>
+	<div v-if="filters.last_visit_category" class="col-md-2">
+		<div class="form-group">
+			<label>&nbsp;</label>
+			<input name="last_visit_value_1" value="{{ $last_visit_value_1 ?? '' }}" type="date" class="form-control input-sm" :placeholder="(filters.last_visit_category === 'BETWEEN' || filters.last_visit_category === 'NOT_BETWEEN') ? 'From' : 'Last Visit'" />
+		</div>
+	</div>
+	<div v-if="filters.last_visit_category && (filters.last_visit_category === 'BETWEEN' || filters.last_visit_category === 'NOT_BETWEEN')" class="col-md-2">
+		<div class="form-group">
+			<label>&nbsp;</label>
+			<input name="last_visit_value_2" value="{{ $last_visit_value_2 ?? '' }}" type="date" class="form-control input-sm" placeholder="To" />
+		</div>
+	</div>
+
+	<!-- NEXT APPOINTMENT -->
+	<div class="col-md-2">
+		<div class="form-group">
+			<label>Next Appointment:</label>
+			<select name="next_appointment_category" class="form-control input-sm" v-model="filters.next_appointment_category">
+				<option value="">All</option>
+				<option value="EXACTLY">Exactly</option>
+				<option value="LESS_THAN">Less Than</option>
+				<option value="GREATER_THAN">Greater Than</option>
+				<option value="BETWEEN">Between</option>
+				<option value="NOT_BETWEEN">Not Between</option>
+			</select>
+		</div>
+	</div>
+	<div v-if="filters.next_appointment_category" class="col-md-2">
+		<div class="form-group">
+			<label>&nbsp;</label>
+			<input name="next_appointment_value_1" value="{{ $next_appointment_value_1 ?? '' }}" type="date" class="form-control input-sm" :placeholder="(filters.next_appointment_category === 'BETWEEN' || filters.next_appointment_category === 'NOT_BETWEEN') ? 'From' : 'Next Appointment'" />
+		</div>
+	</div>
+	<div v-if="filters.next_appointment_category && (filters.next_appointment_category === 'BETWEEN' || filters.next_appointment_category === 'NOT_BETWEEN')" class="col-md-2">
+		<div class="form-group">
+			<label>&nbsp;</label>
+			<input name="next_appointment_value_2" value="{{ $next_appointment_value_2 ?? '' }}" type="date" class="form-control input-sm" placeholder="To" />
+		</div>
+	</div>
+
+	<!-- STATUS -->
+	<div class="col-md-2">
+		<div class="form-group">
+			<label>Status:</label>
+			<select name="status" class="form-control input-sm" v-model="filters.status">
+				<option value="ALL">All</option>
+				<option value="ACTIVE">Active</option>
+				<option value="AWAITING_VISIT">Awaiting Visit</option>
+				<option value="INACTIVE">Inactive</option>
+			</select>
+		</div>
+	</div>
+
+	<!-- LAST WEIGHED-IN -->
+	<div class="col-md-2">
+		<div class="form-group">
+			<label>Last Weighed-In:</label>
+			<select name="last_weighed_in_category" class="form-control input-sm" v-model="filters.last_weighed_in_category">
+				<option value="">All</option>
+				<option value="EXACTLY">Exactly</option>
+				<option value="LESS_THAN">Less Than</option>
+				<option value="GREATER_THAN">Greater Than</option>
+				<option value="BETWEEN">Between</option>
+				<option value="NOT_BETWEEN">Not Between</option>
+			</select>
+		</div>
+	</div>
+	<div v-if="filters.last_weighed_in_category" class="col-md-2">
+		<div class="form-group">
+			<label>&nbsp;</label>
+			<input name="last_weighed_in_value_1" value="{{ $last_weighed_in_value_1 ?? '' }}" type="date" class="form-control input-sm" :placeholder="(filters.last_weighed_in_category === 'BETWEEN' || filters.last_weighed_in_category === 'NOT_BETWEEN') ? 'From' : 'Enter Date'" />
+		</div>
+	</div>
+	<div v-if="filters.last_weighed_in_category && (filters.last_weighed_in_category === 'BETWEEN' || filters.last_weighed_in_category === 'NOT_BETWEEN')" class="col-md-2">
+		<div class="form-group">
+			<label>&nbsp;</label>
+			<input name="last_weighed_in_value_2" value="{{ $last_weighed_in_value_2 ?? '' }}" type="date" class="form-control input-sm" placeholder="To" />
+		</div>
+	</div>
+
+	<!-- LAST BP -->
+	<div class="col-md-2">
+		<div class="form-group">
+			<label>Last BP:</label>
+			<select name="last_bp_category" class="form-control input-sm" v-model="filters.last_bp_category">
+				<option value="">All</option>
+				<option value="EXACTLY">Exactly</option>
+				<option value="LESS_THAN">Less Than</option>
+				<option value="GREATER_THAN">Greater Than</option>
+				<option value="BETWEEN">Between</option>
+				<option value="NOT_BETWEEN">Not Between</option>
+			</select>
+		</div>
+	</div>
+	<div v-if="filters.last_bp_category" class="col-md-2">
+		<div class="form-group">
+			<label>&nbsp;</label>
+			<input name="last_bp_value_1" value="{{ $last_bp_value_1 ?? '' }}" type="date" class="form-control input-sm" :placeholder="(filters.last_bp_category === 'BETWEEN' || filters.last_bp_category === 'NOT_BETWEEN') ? 'From' : 'Enter Date'" />
+		</div>
+	</div>
+	<div v-if="filters.last_bp_category && (filters.last_bp_category === 'BETWEEN' || filters.last_bp_category === 'NOT_BETWEEN')" class="col-md-2">
+		<div class="form-group">
+			<label>&nbsp;</label>
+			<input name="last_bp_value_2" value="{{ $last_bp_value_2 ?? '' }}" type="date" class="form-control input-sm" placeholder="To" />
+		</div>
+	</div>
+
+	<div class="col-md-2">
+		<div class="form-group d-flex">
+			<label>&nbsp;</label>
+			<button type="submit" class="btn btn-primary btn-sm mr-2 mw-100px">Apply Filters</button>
+			<a href="{{ route('mcp.patients') }}" class="btn btn-danger btn-sm text-white mw-100px">Clear Filters</a>
+		</div>
+	</div>
+</form>
+
+<script>
+	(function() {
+		function init() {
+			window.apapp = new Vue({
+				el: '#mcp-patients-filters',
+				delimiters: ['@{{', '}}'],
+				data: {
+					filters: {
+						age_category: "<?= $age_category ?? '' ?>",
+						bmi_category: "<?= $bmi_category ?? '' ?>",
+						last_visit_category: "<?= $last_visit_category ?? '' ?>",
+						next_appointment_category: "<?= $next_appointment_category ?? '' ?>",
+						last_weighed_in_category: "<?= $last_weighed_in_category ?? '' ?>",
+						last_bp_category: "<?= $last_bp_category ?? '' ?>",
+						sex: "<?= $sex ?? '' ?>",
+						status: "<?= $status ?? '' ?>"
+					}
+				},
+				methods: {
+					init: function() {
+						
+					}
+				},
+				mounted: function() {
+					this.init();
+				},
+			});
+
+
+		}
+		addMCInitializer('mcp-patients-filters', init, '#mcp-patients-filters');
+	})();
+</script>

+ 19 - 0
resources/views/app/mcp/patients_overdue_for_visit.blade.php

@@ -0,0 +1,19 @@
+@extends ('layouts/template')
+
+@section('content')
+    <div class="p-3 mcp-theme-1" id="patients-list">
+        <div class="card">
+
+            <div class="card-header px-3 py-2 d-flex align-items-center">
+                <strong class="mr-4">
+                    <i class="fas fa-user-injured"></i>
+                    Patients Overdue for Visit
+                </strong>
+            </div>
+
+            <div class="card-body p-0">
+
+            </div>
+        </div>
+    </div>
+@endsection

+ 19 - 0
resources/views/app/mcp/patients_without_appointments.blade.php

@@ -0,0 +1,19 @@
+@extends ('layouts/template')
+
+@section('content')
+    <div class="p-3 mcp-theme-1" id="patients-list">
+        <div class="card">
+
+            <div class="card-header px-3 py-2 d-flex align-items-center">
+                <strong class="mr-4">
+                    <i class="fas fa-user-injured"></i>
+                    Patients w/o Appointments
+                </strong>
+            </div>
+
+            <div class="card-body p-0">
+
+            </div>
+        </div>
+    </div>
+@endsection

+ 5 - 0
resources/views/app/mcp/reports.blade.php

@@ -0,0 +1,5 @@
+@extends ('layouts/template')
+
+@section('content')
+    <h1>Hi</h1>
+@endsection

+ 19 - 0
resources/views/app/mcp/reports_pending_signature.blade.php

@@ -0,0 +1,19 @@
+@extends ('layouts/template')
+
+@section('content')
+    <div class="p-3 mcp-theme-1" id="patients-list">
+        <div class="card">
+
+            <div class="card-header px-3 py-2 d-flex align-items-center">
+                <strong class="mr-4">
+                    <i class="fas fa-user-injured"></i>
+                    Reports Pending Signature
+                </strong>
+            </div>
+
+            <div class="card-body p-0">
+
+            </div>
+        </div>
+    </div>
+@endsection

+ 53 - 0
resources/views/app/mcp/supply_orders.blade.php

@@ -0,0 +1,53 @@
+@extends ('layouts/template')
+
+@section('content')
+<div class="p-3 mcp-theme-1" id="patients-list">
+    <div class="card">
+
+        <div class="card-header px-3 py-2 d-flex align-items-center">
+            <strong class="mr-4">
+                <i class="fas fa-file-invoice-dollar"></i>
+                Supply Orders
+            </strong>
+        </div>
+
+        <div class="card-body p-0">
+            <div class="p-3">
+                @include('app.mcp.supply_orders_filters')
+            </div>
+            <table class="table table-condensed p-0 m-0">
+                <thead class="bg-light">
+                    <tr>
+                        <th class="px-3 border-0">Date</th>
+                        <th class="px-3 border-0">Patient</th>
+                        <th class="px-3 border-0">Product</th>
+                        <th class="px-3 border-0">Reason</th>
+                        <th class="px-3 border-0">Status</th>
+                    </tr>
+                </thead>
+                <tbody>
+                    @foreach($supplyOrders as $supplyOrder)
+                    <tr>
+                        <td>{{-- date --}} -</td>
+                        <td>{{-- patient --}} -</td>
+                        <td>{{-- service --}} - </td>
+                        <td>{{-- amount --}} - </td>
+                        <td>{{-- status --}} - </td>
+                    </tr>
+                    @endforeach
+
+                    @if(count($supplyOrders) === 0)
+                    <tr>
+                        <td colspan="5">No records found!</td>
+                    </tr>
+                    @endif
+                </tbody>
+
+            </table>
+            <div class="ml-2 mt-2">
+                {{ $supplyOrders->appends(request()->input())->links() }}
+            </div>
+        </div>
+    </div>
+</div>
+@endsection

+ 87 - 0
resources/views/app/mcp/supply_orders_filters.blade.php

@@ -0,0 +1,87 @@
+<style>
+	#mcp-supply-orders-filters label {
+		font-weight: bold;
+	}
+
+	#mcp-supply-orders-filters .mw-100px {
+		min-width: 100px;
+	}
+</style>
+<form id="mcp-supply-orders-filters" method="GET" action="{{ route('mcp.notes') }}" class="row align-items-end" v-cloak>
+	<!-- DATE	 -->
+	<div class="col-md-2">
+		<div class="form-group">
+			<label>Date:</label>
+			<select name="date_category" class="form-control input-sm" v-model="filters.date_category">
+				<option value="">All</option>
+				<option value="EXACTLY">Exactly</option>
+				<option value="LESS_THAN">Less Than</option>
+				<option value="GREATER_THAN">Greater Than</option>
+				<option value="BETWEEN">Between</option>
+				<option value="NOT_BETWEEN">Not Between</option>
+			</select>
+		</div>
+	</div>
+	<div v-if="filters.date_category" class="col-md-2">
+		<div class="form-group">
+			<label>&nbsp;</label>
+			<input name="date_value_1" value="{{ $date_value_1 ?? '' }}" type="date" class="form-control input-sm" :placeholder="(filters.date_category === 'BETWEEN' || filters.date_category === 'NOT_BETWEEN') ? 'From' : 'Date'" />
+		</div>
+	</div>
+	<div v-if="filters.date_category && (filters.date_category === 'BETWEEN' || filters.date_category === 'NOT_BETWEEN')" class="col-md-2">
+		<div class="form-group">
+			<label>&nbsp;</label>
+			<input name="date_value_2" value="{{ $date_value_2 ?? '' }}" type="date" class="form-control input-sm" placeholder="To" />
+		</div>
+	</div>
+	<!-- STATUS -->
+	<div class="col-md-2">
+		<div class="form-group">
+			<label>Status:</label>
+			<select name="status" class="form-control input-sm" v-model="filters.status">
+				<option value="ALL">All</option>
+				<option value="NEW">New</option>
+				<option value="SIGNED">Signed</option>
+				<option value="VERIFIED">Verified</option>
+				<option value="PROCESSED">Processed</option>
+				<option value="CANCELLED">Cancelled</option>
+			</select>
+		</div>
+	</div>
+
+	<div class="col-md-2">
+		<div class="form-group d-flex">
+			<label>&nbsp;</label>
+			<button type="submit" class="btn btn-primary btn-sm mr-2 mw-100px">Apply Filters</button>
+			<a href="{{ route('mcp.patients') }}" class="btn btn-danger btn-sm text-white mw-100px">Clear Filters</a>
+		</div>
+	</div>
+</form>
+
+<script>
+	(function() {
+		function init() {
+			window.apapp = new Vue({
+				el: '#mcp-supply-orders-filters',
+				delimiters: ['@{{', '}}'],
+				data: {
+					filters: {
+						date_category: "<?= $date_category ?? '' ?>",
+						status: "<?= $status ?? '' ?>"
+					}
+				},
+				methods: {
+					init: function() {
+
+					}
+				},
+				mounted: function() {
+					this.init();
+				},
+			});
+
+
+		}
+		addMCInitializer('mcp-supply-orders-filters', init, '#mcp-supply-orders-filters');
+	})();
+</script>

+ 19 - 0
resources/views/app/mcp/supply_orders_pending_signature.blade.php

@@ -0,0 +1,19 @@
+@extends ('layouts/template')
+
+@section('content')
+    <div class="p-3 mcp-theme-1" id="patients-list">
+        <div class="card">
+
+            <div class="card-header px-3 py-2 d-flex align-items-center">
+                <strong class="mr-4">
+                    <i class="fas fa-user-injured"></i>
+                    Supply Orders Pending Signature
+                </strong>
+            </div>
+
+            <div class="card-body p-0">
+
+            </div>
+        </div>
+    </div>
+@endsection

+ 468 - 0
resources/views/app/patient/client-primary-coverage-new-with-manual.blade.php

@@ -0,0 +1,468 @@
+<div class="ml-4 d-inline-flex justify-content-center">
+    <span class="mr-2">New w/ Manual:</span>
+    <div moe relative large>
+        <a href="" start show >+ MC</a>
+        <form url="/api/clientPrimaryCoverage/createNewCoverageForMedicareWithManualDetermination" right class="mcp-theme-1">
+            <input type="hidden" name="clientUid" value="{{$patient->uid}}" class="form-control input-sm" />
+            <div class="form-group">
+                <label for="" class="control-label">Subscriber Name First</label>
+                <input type="text" name="subscriberNameFirst" class="form-control input-sm" value="{{$patient->name_first}}"/>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Subscriber Name Last</label>
+                <input type="text" name="subscriberNameLast" class="form-control input-sm" value="{{$patient->name_last}}"/>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Subscriber Dob</label>
+                <input type="date" name="subscriberDob" class="form-control input-sm" value="{{$patient->dob}}"/>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Payer Member Identifier</label>
+                <input type="text" name="payerMemberIdentifier" class="form-control input-sm"/>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Date Of Service</label>
+                <input type="date" name="dateOfService" class="form-control input-sm" value="{{date('Y-m-d')}}"/>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Determination Strategy</label>
+                <select  name="manualDeterminationStrategy" class="form-control input-sm">
+                    <option value="">--select--</option>
+                    <option value="REVIEWED_ELECTRONIC">Reviewed electronic</option>
+                    <option value="CALLED_PAYER">Called payer</option>
+                </select>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Determination Category</label>
+                <select  name="manualDeterminationCategory" class="form-control input-sm">
+                    <option value="">--select--</option>
+                    <option value="COVERED">Covered</option>
+                    <option value="NOT_COVERED">Not Covered</option>
+                    <option value="INVALID">Invalid</option>
+                    <option value="UNKNOWN">Unknown</option>
+                </select>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Determination Category Memo</label>
+                <input type="text" name="manualDeterminationCategoryMemo" class="form-control input-sm"/>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Detail Json</label>
+                <input type="text" name="manualDetailJson" class="form-control input-sm"/>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Medicare Is Part B Primary</label>
+                <select  name="manualMedicareIsPartBPrimary" class="form-control input-sm">
+                    <option value="">--select--</option>
+                    <option value="YES">Yes</option>
+                    <option value="NO">No</option>
+                    <option value="UNKNOWN">Unknown</option>
+                </select>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Medicare Is Part B Active</label>
+                <select  name="manualMedicareIsPartBActive" class="form-control input-sm">
+                    <option value="">--select--</option>
+                    <option value="YES">Yes</option>
+                    <option value="NO">No</option>
+                    <option value="UNKNOWN">Unknown</option>
+                </select>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Medicare Is Part C Active</label>
+                <select  name="manualMedicareIsPartCActive" class="form-control input-sm">
+                    <option value="">--select--</option>
+                    <option value="YES">Yes</option>
+                    <option value="NO">No</option>
+                    <option value="UNKNOWN">Unknown</option>
+                </select>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Medicare Is Inpatient</label>
+                <select  name="manualMedicareIsInpatient" class="form-control input-sm">
+                    <option value="">--select--</option>
+                    <option value="YES">Yes</option>
+                    <option value="NO">No</option>
+                    <option value="UNKNOWN">Unknown</option>
+                </select>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Medicare Is Hospice Or Home Health</label>
+                <select  name="manualMedicareIsHospiceOrHomeHealth" class="form-control input-sm">
+                    <option value="">--select--</option>
+                    <option value="YES">Yes</option>
+                    <option value="NO">No</option>
+                    <option value="UNKNOWN">Unknown</option>
+                </select>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Medicare Is Msp</label>
+                <select  name="manualMedicareIsMsp" class="form-control input-sm">
+                    <option value="">--select--</option>
+                    <option value="YES">Yes</option>
+                    <option value="NO">No</option>
+                    <option value="UNKNOWN">Unknown</option>
+                </select>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Medicare Msp Memo</label>
+                <select  name="manualMedicareMspMemo" class="form-control input-sm">
+                    <option value="">--select--</option>
+                    <option value="YES">Yes</option>
+                    <option value="NO">No</option>
+                    <option value="UNKNOWN">Unknown</option>
+                </select>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Medicare Mpb Start Date</label>
+                <input type="date" name="manualMedicareMpbStartDate" class="form-control input-sm"/>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Medicare Mpb End Date</label>
+                <input type="date" name="manualMedicareMpbEndDate" class="form-control input-sm"/>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Medicare Mpb Deductible</label>
+                <input type="number" name="manualMedicareMpbDeductible" class="form-control input-sm"/>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Medicare Mpb Remaining</label>
+                <input type="number" name="manualMedicareMpbRemaining" class="form-control input-sm"/>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Medicare Mpb Insurance Type</label>
+                <input type="text" name="manualMedicareMpbInsuranceType" class="form-control input-sm"/>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Medicare Mpb Insurance Type Label</label>
+                <input type="text" name="manualMedicareMpbInsuranceTypeLabel" class="form-control input-sm"/>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Medicare Mpb Coinsurance Percent</label>
+                <input type="number" name="manualMedicareMpbCoinsurancePercent" class="form-control input-sm"/>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Medicare Mpb Info Valid Until</label>
+                <input type="date" name="manualMedicareMpbInfoValidUntil" class="form-control input-sm"/>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Medicare Mpb Info Valid Till</label>
+                <input type="date" name="manualMedicareMpbInfoValidTill" class="form-control input-sm"/>
+            </div>
+            <div class="form-group text-nowrap mb-0">
+                <button class="btn btn-sm btn-primary" submit>Submt</button>
+                <button class="btn btn-sm btn-default border" close>Close</button>
+            </div>
+        </form>
+    </div>
+    <span class="mx-2 text-secondary text-sm">|</span>
+    <div moe relative large>
+        <a href="" start show >+ Medicaid</a>
+        <form url="/api/clientPrimaryCoverage/createNewCoverageForMedicaidWithManualDetermination" right class="mcp-theme-1">
+            <input type="hidden" name="clientUid" value="{{$patient->uid}}" class="form-control input-sm" />
+            <div class="form-group">
+                <label for="" class="control-label">Manual Determination Strategy</label>
+                <select  name="manualDeterminationStrategy" class="form-control input-sm">
+                    <option value="">--select--</option>
+                    <option value="REVIEWED_ELECTRONIC">Reviewed electronic</option>
+                    <option value="CALLED_PAYER">Called payer</option>
+                </select>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Determination Category</label>
+                <select  name="manualDeterminationCategory" class="form-control input-sm">
+                    <option value="">--select--</option>
+                    <option value="COVERED">Covered</option>
+                    <option value="NOT_COVERED">Not Covered</option>
+                    <option value="INVALID">Invalid</option>
+                    <option value="UNKNOWN">Unknown</option>
+                </select>
+            </div>
+            <div class="form-group">
+                <label for="" class="form-control-label">Manual Determination Category Memo</label>
+                <input type="text" name="manualDeterminationCategoryMemo" class="form-control input-sm">
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Detail Json</label>
+                <input type="text" name="manualDetailJson" class="form-control input-sm">
+            </div>
+            <div class="form-group text-nowrap mb-0">
+                <button class="btn btn-sm btn-primary" submit>Submt</button>
+                <button class="btn btn-sm btn-default border" close>Close</button>
+            </div>
+        </form>
+    </div>
+    <span class="mx-2 text-secondary text-sm">|</span>
+    <div moe relative large>
+        <a href="" start show >+ Comm.</a>
+        <form url="/api/clientPrimaryCoverage/createNewCoverageForCommercialWithManualDetermination" right class="mcp-theme-1">
+            <input type="hidden" name="clientUid" value="{{$patient->uid}}" class="form-control input-sm" />
+            <div class="form-group">
+                <label class="control-label">Subscriber Name First</label>
+                <input type="text" name="subscriberNameFirst" class="form-control input-sm" value="{{$patient->name_first}}">
+            </div>
+            <div class="form-group">
+                <label class="control-label">Subscriber Name Last</label>
+                <input type="text" name="subscriberNameLast" class="form-control input-sm" value="{{$patient->name_last}}">
+            </div>
+            <div class="form-group">
+                <label class="control-label">Subscriber Dob</label>
+                <input type="date" name="subscriberDob" class="form-control input-sm" value="{{$patient->dob}}">
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Subscriber Sex</label>
+                <select  name="subscriberSex" class="form-control input-sm">
+                    <option value="">--select--</option>
+                    <option value="M" {{$patient->sex === 'M' ? 'selected' : ''}}>M</option>
+                    <option value="F" {{$patient->sex === 'F' ? 'selected' : ''}}>F</option>
+                </select>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Payer Name</label>
+                <input type="text" name="payerName" class="form-control input-sm"/>
+            </div>
+            <div class="form-group">
+                <label class="control-label">Payer Member Identifier</label>
+                <input type="text" name="payerMemberIdentifier" class="form-control input-sm">
+            </div>
+            <div class="form-group">
+                <label class="control-label">Date Of Service</label>
+                <input type="date" name="dateOfService" class="form-control input-sm" value="{{date('Y-m-d')}}">
+            </div>
+
+            <div class="form-group">
+                <label for="" class="control-label">Manual Determination Strategy</label>
+                <select  name="manualDeterminationStrategy" class="form-control input-sm">
+                    <option value="">--select--</option>
+                    <option value="REVIEWED_ELECTRONIC">Reviewed electronic</option>
+                    <option value="CALLED_PAYER">Called payer</option>
+                </select>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Determination Category</label>
+                <select  name="manualDeterminationCategory" class="form-control input-sm">
+                    <option value="">--select--</option>
+                    <option value="COVERED">Covered</option>
+                    <option value="NOT_COVERED">Not Covered</option>
+                    <option value="INVALID">Invalid</option>
+                    <option value="UNKNOWN">Unknown</option>
+                </select>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Determination Category Memo</label>
+                <textarea name="manualDeterminationCategoryMemo" class="form-control input-sm"></textarea>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Detail Json</label>
+                <textarea name="manualDetailJson" class="form-control input-sm"></textarea>
+            </div>
+            <div class="form-group text-nowrap mb-0">
+                <button class="btn btn-sm btn-primary" submit>Submt</button>
+                <button class="btn btn-sm btn-default border" close>Close</button>
+            </div>
+        </form>
+    </div>
+    <span class="mx-2 text-secondary text-sm">|</span>
+    <div moe relative large>
+        <a href="" start show >+ Mcr Adv.</a>
+        <form url="/api/clientPrimaryCoverage/createNewCoverageForMcrAdvWithManualDetermination" right class="mcp-theme-1">
+            <input type="hidden" name="clientUid" value="{{$patient->uid}}" class="form-control input-sm" />
+            <div class="form-group">
+                <label class="control-label">Subscriber Name First</label>
+                <input type="text" name="subscriberNameFirst" class="form-control input-sm" value="{{$patient->name_first}}">
+            </div>
+            <div class="form-group">
+                <label class="control-label">Subscriber Name Last</label>
+                <input type="text" name="subscriberNameLast" class="form-control input-sm" value="{{$patient->name_last}}">
+            </div>
+            <div class="form-group">
+                <label class="control-label">Subscriber Dob</label>
+                <input type="date" name="subscriberDob" class="form-control input-sm" value="{{$patient->dob}}">
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Subscriber Sex</label>
+                <select  name="subscriberSex" class="form-control input-sm">
+                    <option value="">--select--</option>
+                    <option value="M" {{$patient->sex === 'M' ? 'selected' : ''}}>M</option>
+                    <option value="F" {{$patient->sex === 'F' ? 'selected' : ''}}>F</option>
+                </select>
+            </div>
+            <div class="form-group">
+                <label class="control-label">Payer Member Identifier</label>
+                <input type="text" name="payerMemberIdentifier" class="form-control input-sm">
+            </div>
+            <div class="form-group">
+                <label class="control-label">Medicare Number</label>
+                <input type="text" name="mcrNumber" class="form-control input-sm">
+            </div>
+            <div class="form-group">
+                <label class="control-label">Date Of Service</label>
+                <input type="date" name="dateOfService" class="form-control input-sm" value="{{date('Y-m-d')}}">
+            </div>
+
+            <div class="form-group">
+                <label for="" class="control-label">Manual Determination Strategy</label>
+                <select  name="manualDeterminationStrategy" class="form-control input-sm">
+                    <option value="">--select--</option>
+                    <option value="REVIEWED_ELECTRONIC">Reviewed electronic</option>
+                    <option value="CALLED_PAYER">Called payer</option>
+                </select>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Determination Category</label>
+                <select  name="manualDeterminationCategory" class="form-control input-sm">
+                    <option value="">--select--</option>
+                    <option value="COVERED">Covered</option>
+                    <option value="NOT_COVERED">Not Covered</option>
+                    <option value="INVALID">Invalid</option>
+                    <option value="UNKNOWN">Unknown</option>
+                </select>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Determination Category Memo</label>
+                <textarea name="manualDeterminationCategoryMemo" class="form-control input-sm"></textarea>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Detail Json</label>
+                <textarea name="manualDetailJson" class="form-control input-sm"></textarea>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Is Payer Member Identifier Valid</label>
+                <select  name="manualIsPayerMemberIdentifierValid" class="form-control input-sm">
+                    <option value="">--select--</option>
+                    <option value="YES">Yes</option>
+                    <option value="NO">No</option>
+                    <option value="UNKNOWN">Unknown</option>
+                </select>
+            </div>
+
+            <div class="form-group">
+                <label for="" class="control-label">Manual Is Mcr Number Valid</label>
+                <select  name="manualIsMcrNumberValid" class="form-control input-sm">
+                    <option value="">--select--</option>
+                    <option value="YES">Yes</option>
+                    <option value="NO">No</option>
+                    <option value="UNKNOWN">Unknown</option>
+                </select>
+            </div>
+
+            <div class="form-group">
+                <label for="" class="control-label">Manual Is Mcr Part Bprimary</label>
+                <select  name="manualIsMcrPartBPrimary" class="form-control input-sm">
+                    <option value="">--select--</option>
+                    <option value="YES">Yes</option>
+                    <option value="NO">No</option>
+                    <option value="UNKNOWN">Unknown</option>
+                </select>
+            </div>
+
+            <div class="form-group">
+                <label for="" class="control-label">Manual Is Mcr Part C Active</label>
+                <select  name="manualIsMcrPartCActive" class="form-control input-sm">
+                    <option value="">--select--</option>
+                    <option value="YES">Yes</option>
+                    <option value="NO">No</option>
+                    <option value="UNKNOWN">Unknown</option>
+                </select>
+            </div>
+            <div class="form-group text-nowrap mb-0">
+                <button class="btn btn-sm btn-primary" submit>Submt</button>
+                <button class="btn btn-sm btn-default border" close>Close</button>
+            </div>
+        </form>
+    </div>
+
+    <span class="mx-2 text-secondary text-sm">|</span>
+    <div moe relative large>
+        <a href="" start show >+ Mcd Mco.</a>
+        <form url="/api/clientPrimaryCoverage/createNewCoverageForMcdMcoWithManualDetermination" right class="mcp-theme-1">
+            <input type="hidden" name="clientUid" value="{{$patient->uid}}" class="form-control input-sm" />
+            <div class="form-group">
+                <label class="control-label">Subscriber Name First</label>
+                <input type="text" name="subscriberNameFirst" class="form-control input-sm" value="{{$patient->name_first}}">
+            </div>
+            <div class="form-group">
+                <label class="control-label">Subscriber Name Last</label>
+                <input type="text" name="subscriberNameLast" class="form-control input-sm" value="{{$patient->name_last}}">
+            </div>
+            <div class="form-group">
+                <label class="control-label">Subscriber Dob</label>
+                <input type="date" name="subscriberDob" class="form-control input-sm" value="{{$patient->dob}}">
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Subscriber Sex</label>
+                <select  name="subscriberSex" class="form-control input-sm">
+                    <option value="">--select--</option>
+                    <option value="M" {{$patient->sex === 'M' ? 'selected' : ''}}>M</option>
+                    <option value="F" {{$patient->sex === 'F' ? 'selected' : ''}}>F</option>
+                </select>
+            </div>
+            <div class="form-group">
+                <label class="control-label">Payer Member Identifier</label>
+                <input type="text" name="payerMemberIdentifier" class="form-control input-sm">
+            </div>
+            <div class="form-group">
+                <label class="control-label">Medicaid Number</label>
+                <input type="text" name="mcrNumber" class="form-control input-sm">
+            </div>
+            <div class="form-group">
+                <label class="control-label">Medicaid State</label>
+                <input type="text" name="mcdState" class="form-control input-sm">
+            </div>
+            <div class="form-group">
+                <label class="control-label">Date Of Service</label>
+                <input type="date" name="dateOfService" class="form-control input-sm" value="{{date('Y-m-d')}}">
+            </div>
+
+            <div class="form-group">
+                <label for="" class="control-label">Manual Determination Strategy</label>
+                <select  name="manualDeterminationStrategy" class="form-control input-sm">
+                    <option value="">--select--</option>
+                    <option value="REVIEWED_ELECTRONIC">Reviewed electronic</option>
+                    <option value="CALLED_PAYER">Called payer</option>
+                </select>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Determination Category</label>
+                <select  name="manualDeterminationCategory" class="form-control input-sm">
+                    <option value="">--select--</option>
+                    <option value="COVERED">Covered</option>
+                    <option value="NOT_COVERED">Not Covered</option>
+                    <option value="INVALID">Invalid</option>
+                    <option value="UNKNOWN">Unknown</option>
+                </select>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Determination Category Memo</label>
+                <textarea name="manualDeterminationCategoryMemo" class="form-control input-sm"></textarea>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Detail Json</label>
+                <textarea name="manualDetailJson" class="form-control input-sm"></textarea>
+            </div>
+            <div class="form-group">
+                <label for="" class="control-label">Manual Is Mcd Number Valid</label>
+                <select  name="manualIsMcdNumberValid" class="form-control input-sm">
+                    <option value="">--select--</option>
+                    <option value="YES">Yes</option>
+                    <option value="NO">No</option>
+                    <option value="UNKNOWN">Unknown</option>
+                </select>
+            </div>
+
+            <div class="form-group">
+                <label for="" class="control-label">Manual Is Mcd Response Mco Active</label>
+                <select  name="manualIsMcdResponseMcoActive" class="form-control input-sm">
+                    <option value="">--select--</option>
+                    <option value="YES">Yes</option>
+                    <option value="NO">No</option>
+                    <option value="UNKNOWN">Unknown</option>
+                </select>
+            </div>
+            <div class="form-group text-nowrap mb-0">
+                <button class="btn btn-sm btn-primary" submit>Submt</button>
+                <button class="btn btn-sm btn-default border" close>Close</button>
+            </div>
+        </form>
+    </div>
+</div>

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

@@ -4,31 +4,31 @@
 <div>
     <div class="mb-3 border rounded bg-light p-2">
         <div class="mb-2">
-            Latest Client Primary Coverage: 
+            Latest Client Primary Coverage:
             @if($patient->latestClientPrimaryCoverage)
                 <b>{{$patient->latestClientPrimaryCoverage->plan_type}}</b> (Member ID: {{$patient->latestClientPrimaryCoverage->payer_member_identifier}})
-            @else 
+            @else
                 -
             @endif
         </div>
         <div class="mb-2">Latest New Client Primary Coverage:
             @if($patient->latestNewClientPrimaryCoverage)
                 <b>{{$patient->latestNewClientPrimaryCoverage->plan_type}}</b> (Member ID: {{$patient->latestNewClientPrimaryCoverage->payer_member_identifier}})
-            @else 
+            @else
                 -
             @endif
         </div>
         <div class="mb-2">Latest Auto Refresh Client Primary Coverage:
             @if($patient->latestAutoRefreshClientPrimaryCoverage)
                 <b>{{$patient->latestAutoRefreshClientPrimaryCoverage->plan_type}}</b> (Member ID: {{$patient->latestAutoRefreshClientPrimaryCoverage->payer_member_identifier}})
-            @else 
+            @else
                 -
             @endif
         </div>
         <div class="">Latest Manual Client Primary Coverage:
             @if($patient->latestManualClientPrimaryCoverage)
                 <b>{{$patient->latestManualClientPrimaryCoverage->plan_type}}</b> (Member ID: {{$patient->latestManualClientPrimaryCoverage->payer_member_identifier}})
-            @else 
+            @else
                 -
             @endif
         </div>
@@ -38,7 +38,7 @@
         <div class="ml-auto d-inline-flex justify-content-center">
             <span class="mr-2">New w/o Manual:</span>
             <div moe relative large>
-                <a href="" start show>+ MC</a>
+                <a href="" start show>+ MCR</a>
                 <form url="/api/clientPrimaryCoverage/createNewCoverageForMedicareWithoutManualDetermination" right class="mcp-theme-1">
                     <input type="hidden" name="clientUid" value="{{$patient->uid}}" class="form-control input-sm" />
                     <div class="form-group">
@@ -104,7 +104,7 @@
                         <label for="" class="control-label">Date Of Service</label>
                         <input type="date" name="dateOfService" class="form-control input-sm" value="{{date('Y-m-d')}}">
                     </div>
-                   
+
                     <div class="form-group text-nowrap mb-0">
                         <button class="btn btn-sm btn-primary" submit>Submt</button>
                         <button class="btn btn-sm btn-default border" close>Close</button>
@@ -148,202 +148,51 @@
                         <label class="control-label">Date Of Service</label>
                         <input type="date" name="dateOfService" class="form-control input-sm" value="{{date('Y-m-d')}}">
                     </div>
-                    
+
                     <div class="form-group text-nowrap mb-0">
                         <button class="btn btn-sm btn-primary" submit>Submt</button>
                         <button class="btn btn-sm btn-default border" close>Close</button>
                     </div>
                 </form>
             </div>
-        </div>
-        <div class="ml-4 d-inline-flex justify-content-center">
-            <span class="mr-2">New w/ Manual:</span>
+            <span class="mx-2 text-secondary text-sm">|</span>
             <div moe relative large>
-                <a href="" start show >+ MC</a>
-                <form url="/api/clientPrimaryCoverage/createNewCoverageForMedicareWithManualDetermination" right class="mcp-theme-1">
+                <a href="" start show >+ Mcr Adv.</a>
+                <form url="/api/clientPrimaryCoverage/createNewCoverageForMcrAdvWithoutManualDetermination" right class="mcp-theme-1">
                     <input type="hidden" name="clientUid" value="{{$patient->uid}}" class="form-control input-sm" />
                     <div class="form-group">
-                        <label for="" class="control-label">Subscriber Name First</label>
-                        <input type="text" name="subscriberNameFirst" class="form-control input-sm" value="{{$patient->name_first}}"/>
-                    </div>
-                    <div class="form-group">
-                        <label for="" class="control-label">Subscriber Name Last</label>
-                        <input type="text" name="subscriberNameLast" class="form-control input-sm" value="{{$patient->name_last}}"/>
-                    </div>
-                    <div class="form-group">
-                        <label for="" class="control-label">Subscriber Dob</label>
-                        <input type="date" name="subscriberDob" class="form-control input-sm" value="{{$patient->dob}}"/>
-                    </div>
-                    <div class="form-group">
-                        <label for="" class="control-label">Payer Member Identifier</label>
-                        <input type="text" name="payerMemberIdentifier" class="form-control input-sm"/>
-                    </div>
-                    <div class="form-group">
-                        <label for="" class="control-label">Date Of Service</label>
-                        <input type="date" name="dateOfService" class="form-control input-sm" value="{{date('Y-m-d')}}"/>
-                    </div>
-                    <div class="form-group">
-                        <label for="" class="control-label">Manual Determination Strategy</label>
-                        <select  name="manualDeterminationStrategy" class="form-control input-sm">
-                            <option value="">--select--</option>
-                            <option value="REVIEWED_ELECTRONIC">Reviewed electronic</option>
-                            <option value="CALLED_PAYER">Called payer</option>
-                        </select>
-                    </div>
-                    <div class="form-group">
-                        <label for="" class="control-label">Manual Determination Category</label>
-                        <select  name="manualDeterminationCategory" class="form-control input-sm">
-                            <option value="">--select--</option>
-                            <option value="COVERED">Covered</option>
-                            <option value="NOT_COVERED">Not Covered</option>
-                            <option value="INVALID">Invalid</option>
-                            <option value="UNKNOWN">Unknown</option>
-                        </select>                        
-                    </div>
-                    <div class="form-group">
-                        <label for="" class="control-label">Manual Determination Category Memo</label>
-                        <input type="text" name="manualDeterminationCategoryMemo" class="form-control input-sm"/>
-                    </div>
-                    <div class="form-group">
-                        <label for="" class="control-label">Manual Detail Json</label>
-                        <input type="text" name="manualDetailJson" class="form-control input-sm"/>
-                    </div>
-                    <div class="form-group">
-                        <label for="" class="control-label">Manual Medicare Is Part B Primary</label>
-                        <select  name="manualMedicareIsPartBPrimary" class="form-control input-sm">
-                            <option value="">--select--</option>
-                            <option value="YES">Yes</option>
-                            <option value="NO">No</option>
-                            <option value="UNKNOWN">Unknown</option>
-                        </select>
-                    </div>
-                    <div class="form-group">
-                        <label for="" class="control-label">Manual Medicare Is Part B Active</label>
-                        <select  name="manualMedicareIsPartBActive" class="form-control input-sm">
-                            <option value="">--select--</option>
-                            <option value="YES">Yes</option>
-                            <option value="NO">No</option>
-                            <option value="UNKNOWN">Unknown</option>
-                        </select>
-                    </div>
-                    <div class="form-group">
-                        <label for="" class="control-label">Manual Medicare Is Part C Active</label>
-                        <select  name="manualMedicareIsPartCActive" class="form-control input-sm">
-                            <option value="">--select--</option>
-                            <option value="YES">Yes</option>
-                            <option value="NO">No</option>
-                            <option value="UNKNOWN">Unknown</option>
-                        </select>
-                    </div>
-                    <div class="form-group">
-                        <label for="" class="control-label">Manual Medicare Is Inpatient</label>
-                        <select  name="manualMedicareIsInpatient" class="form-control input-sm">
-                            <option value="">--select--</option>
-                            <option value="YES">Yes</option>
-                            <option value="NO">No</option>
-                            <option value="UNKNOWN">Unknown</option>
-                        </select>
-                    </div>
-                    <div class="form-group">
-                        <label for="" class="control-label">Manual Medicare Is Hospice Or Home Health</label>
-                        <select  name="manualMedicareIsHospiceOrHomeHealth" class="form-control input-sm">
-                            <option value="">--select--</option>
-                            <option value="YES">Yes</option>
-                            <option value="NO">No</option>
-                            <option value="UNKNOWN">Unknown</option>
-                        </select>
-                    </div>
-                    <div class="form-group">
-                        <label for="" class="control-label">Manual Medicare Is Msp</label>
-                        <select  name="manualMedicareIsMsp" class="form-control input-sm">
-                            <option value="">--select--</option>
-                            <option value="YES">Yes</option>
-                            <option value="NO">No</option>
-                            <option value="UNKNOWN">Unknown</option>
-                        </select>
-                    </div>
-                    <div class="form-group">
-                        <label for="" class="control-label">Manual Medicare Msp Memo</label>
-                        <select  name="manualMedicareMspMemo" class="form-control input-sm">
-                            <option value="">--select--</option>
-                            <option value="YES">Yes</option>
-                            <option value="NO">No</option>
-                            <option value="UNKNOWN">Unknown</option>
-                        </select>
-                    </div>
-                    <div class="form-group">
-                        <label for="" class="control-label">Manual Medicare Mpb Start Date</label>
-                        <input type="date" name="manualMedicareMpbStartDate" class="form-control input-sm"/>
-                    </div>
-                    <div class="form-group">
-                        <label for="" class="control-label">Manual Medicare Mpb End Date</label>
-                        <input type="date" name="manualMedicareMpbEndDate" class="form-control input-sm"/>
-                    </div>
-                    <div class="form-group">
-                        <label for="" class="control-label">Manual Medicare Mpb Deductible</label>
-                        <input type="number" name="manualMedicareMpbDeductible" class="form-control input-sm"/>
-                    </div>
-                    <div class="form-group">
-                        <label for="" class="control-label">Manual Medicare Mpb Remaining</label>
-                        <input type="number" name="manualMedicareMpbRemaining" class="form-control input-sm"/>
-                    </div>
-                    <div class="form-group">
-                        <label for="" class="control-label">Manual Medicare Mpb Insurance Type</label>
-                        <input type="text" name="manualMedicareMpbInsuranceType" class="form-control input-sm"/>
-                    </div>
-                    <div class="form-group">
-                        <label for="" class="control-label">Manual Medicare Mpb Insurance Type Label</label>
-                        <input type="text" name="manualMedicareMpbInsuranceTypeLabel" class="form-control input-sm"/>
-                    </div>
-                    <div class="form-group">
-                        <label for="" class="control-label">Manual Medicare Mpb Coinsurance Percent</label>
-                        <input type="number" name="manualMedicareMpbCoinsurancePercent" class="form-control input-sm"/>
+                        <label class="control-label">Subscriber Name First</label>
+                        <input type="text" name="subscriberNameFirst" class="form-control input-sm" value="{{$patient->name_first}}">
                     </div>
                     <div class="form-group">
-                        <label for="" class="control-label">Manual Medicare Mpb Info Valid Until</label>
-                        <input type="date" name="manualMedicareMpbInfoValidUntil" class="form-control input-sm"/>
+                        <label class="control-label">Subscriber Name Last</label>
+                        <input type="text" name="subscriberNameLast" class="form-control input-sm" value="{{$patient->name_last}}">
                     </div>
                     <div class="form-group">
-                        <label for="" class="control-label">Manual Medicare Mpb Info Valid Till</label>
-                        <input type="date" name="manualMedicareMpbInfoValidTill" class="form-control input-sm"/>
-                    </div>
-                    <div class="form-group text-nowrap mb-0">
-                        <button class="btn btn-sm btn-primary" submit>Submt</button>
-                        <button class="btn btn-sm btn-default border" close>Close</button>
+                        <label class="control-label">Subscriber Dob</label>
+                        <input type="date" name="subscriberDob" class="form-control input-sm" value="{{$patient->dob}}">
                     </div>
-                </form>
-            </div>
-            <span class="mx-2 text-secondary text-sm">|</span>
-            <div moe relative large>
-                <a href="" start show >+ Medicaid</a>
-                <form url="/api/clientPrimaryCoverage/createNewCoverageForMedicaidWithManualDetermination" right class="mcp-theme-1">
-                    <input type="hidden" name="clientUid" value="{{$patient->uid}}" class="form-control input-sm" />
                     <div class="form-group">
-                        <label for="" class="control-label">Manual Determination Strategy</label>
-                        <select  name="manualDeterminationStrategy" class="form-control input-sm">
+                        <label for="" class="control-label">Subscriber Sex</label>
+                        <select  name="subscriberSex" class="form-control input-sm">
                             <option value="">--select--</option>
-                            <option value="REVIEWED_ELECTRONIC">Reviewed electronic</option>
-                            <option value="CALLED_PAYER">Called payer</option>
+                            <option value="M" {{$patient->sex === 'M' ? 'selected' : ''}}>M</option>
+                            <option value="F" {{$patient->sex === 'F' ? 'selected' : ''}}>F</option>
                         </select>
                     </div>
                     <div class="form-group">
-                        <label for="" class="control-label">Manual Determination Category</label>
-                        <select  name="manualDeterminationCategory" class="form-control input-sm">
-                            <option value="">--select--</option>
-                            <option value="COVERED">Covered</option>
-                            <option value="NOT_COVERED">Not Covered</option>
-                            <option value="INVALID">Invalid</option>
-                            <option value="UNKNOWN">Unknown</option>
-                        </select>                        
+                        <label class="control-label">Payer Member Identifier</label>
+                        <input type="text" name="payerMemberIdentifier" class="form-control input-sm">
                     </div>
                     <div class="form-group">
-                        <label for="" class="form-control-label">Manual Determination Category Memo</label>
-                        <input type="text" name="manualDeterminationCategoryMemo" class="form-control input-sm">
+                        <label class="control-label">Medicare Number</label>
+                        <input type="text" name="mcrNumber" class="form-control input-sm">
                     </div>
                     <div class="form-group">
-                        <label for="" class="control-label">Manual Detail Json</label>
-                        <input type="text" name="manualDetailJson" class="form-control input-sm">
+                        <label class="control-label">Date Of Service</label>
+                        <input type="date" name="dateOfService" class="form-control input-sm" value="{{date('Y-m-d')}}">
                     </div>
+
                     <div class="form-group text-nowrap mb-0">
                         <button class="btn btn-sm btn-primary" submit>Submt</button>
                         <button class="btn btn-sm btn-default border" close>Close</button>
@@ -352,8 +201,8 @@
             </div>
             <span class="mx-2 text-secondary text-sm">|</span>
             <div moe relative large>
-                <a href="" start show >+ Comm.</a>
-                <form url="/api/clientPrimaryCoverage/createNewCoverageForCommercialWithManualDetermination" right class="mcp-theme-1">
+                <a href="" start show >+ Mcd Mco.</a>
+                <form url="/api/clientPrimaryCoverage/createNewCoverageForMcdMcoWithoutManualDetermination" right class="mcp-theme-1">
                     <input type="hidden" name="clientUid" value="{{$patient->uid}}" class="form-control input-sm" />
                     <div class="form-group">
                         <label class="control-label">Subscriber Name First</label>
@@ -375,45 +224,24 @@
                             <option value="F" {{$patient->sex === 'F' ? 'selected' : ''}}>F</option>
                         </select>
                     </div>
-                    <div class="form-group">
-                        <label for="" class="control-label">Payer Name</label>
-                        <input type="text" name="payerName" class="form-control input-sm"/>
-                    </div>
+
                     <div class="form-group">
                         <label class="control-label">Payer Member Identifier</label>
                         <input type="text" name="payerMemberIdentifier" class="form-control input-sm">
                     </div>
                     <div class="form-group">
-                        <label class="control-label">Date Of Service</label>
-                        <input type="date" name="dateOfService" class="form-control input-sm" value="{{date('Y-m-d')}}">
-                    </div>
-                   
-                    <div class="form-group">
-                        <label for="" class="control-label">Manual Determination Strategy</label>
-                        <select  name="manualDeterminationStrategy" class="form-control input-sm">
-                            <option value="">--select--</option>
-                            <option value="REVIEWED_ELECTRONIC">Reviewed electronic</option>
-                            <option value="CALLED_PAYER">Called payer</option>
-                        </select>
-                    </div>
-                    <div class="form-group">
-                        <label for="" class="control-label">Manual Determination Category</label>
-                        <select  name="manualDeterminationCategory" class="form-control input-sm">
-                            <option value="">--select--</option>
-                            <option value="COVERED">Covered</option>
-                            <option value="NOT_COVERED">Not Covered</option>
-                            <option value="INVALID">Invalid</option>
-                            <option value="UNKNOWN">Unknown</option>
-                        </select>                        
+                        <label class="control-label">Medicaid Number</label>
+                        <input type="text" name="mcdNumber" class="form-control input-sm">
                     </div>
                     <div class="form-group">
-                        <label for="" class="control-label">Manual Determination Category Memo</label>
-                        <textarea name="manualDeterminationCategoryMemo" class="form-control input-sm"></textarea>
+                        <label class="control-label">Medicaid State</label>
+                        <input type="text" name="mcdState" class="form-control input-sm">
                     </div>
                     <div class="form-group">
-                        <label for="" class="control-label">Manual Detail Json</label>
-                        <textarea name="manualDetailJson" class="form-control input-sm"></textarea>
+                        <label class="control-label">Date Of Service</label>
+                        <input type="date" name="dateOfService" class="form-control input-sm" value="{{date('Y-m-d')}}">
                     </div>
+
                     <div class="form-group text-nowrap mb-0">
                         <button class="btn btn-sm btn-primary" submit>Submt</button>
                         <button class="btn btn-sm btn-default border" close>Close</button>
@@ -421,99 +249,11 @@
                 </form>
             </div>
         </div>
+
     </div>
 
     <table class="table table-sm table-bordered mt-3 mb-0">
-        <thead>
-            <tr>
-                <th></th>
-                <th>Creation Strategy</th>
-                <th>Auto Refresh Of Client Primary Coverage Id</th>
-                <th>Manual Determination Of Client Primary Coverage Id</th>
-                <th>Plan Type</th>
-                <th>Is Partbprimary</th>
-                <th>Is Manually Determined</th>
-                <th>Is Entry Error</th>
-                <th>Subscriber Name First</th>
-                <th>Subscriber Name Last</th>
-                <th>Subscriber Sex</th>
-                <th>Subscriber Dob</th>
-                <th>Payer Member Identifier</th>
-                <th>Payer Name</th>
-                <th>Date Of Service</th>
-                <th>Auto Is Payer Member Identifier Valid</th>
-                <th>Auto Detail Json</th>
-                <th>Auto Medicare Is Partbprimary</th>
-                <th>Auto Medicare Is Partbactive</th>
-                <th>Auto Medicare Is Partcactive</th>
-                <th>Auto Medicare Is Inpatient</th>
-                <th>Auto Medicare Is Hospice Or Home Health</th>
-                <th>Auto Medicare Is Msp</th>
-                <th>Auto Medicare Msp Memo</th>
-                <th>Auto Medicare Mpb Start Date</th>
-                <th>Auto Medicare Mpb End Date</th>
-                <th>Auto Medicare Mpb Deductible</th>
-                <th>Auto Medicare Mpb Remaining</th>
-                <th>Auto Medicare Mpb Insurance Type</th>
-                <th>Auto Medicare Mpb Insurance Type Label</th>
-                <th>Auto Medicare Mpb Coinsurance Percent</th>
-                <th>Auto Medicare Mpb Info Valid Until</th>
-                <th>Auto Medicare Mpb Info Valid Till</th>
-                <th>Auto Medicare Mpb Last Refreshed At</th>
-                <th>Was Successful</th>
-                <th>Reject Reason Code</th>
-                <th>Reject Reason Description</th>
-                <th>Follow Up Action Code</th>
-                <th>Follow Up Action Description</th>
-                <th>Details</th>
-                <th>Is Mcn Valid Number</th>
-                <th>Address Street Line1</th>
-                <th>Address Street Line2</th>
-                <th>Address City</th>
-                <th>Address State</th>
-                <th>Address Zip</th>
-                <th>Is Hospice</th>
-                <th>Mcn Response Detail</th>
-                <th>Billing Address</th>
-                <th>Reason Not Partb</th>
-                <th>Reason Not Partbmemo</th>
-                <th>Is Medicare Advantage</th>
-                <th>Medicare Advantage Plan</th>
-                <th>Mpb Active</th>
-                <th>Mpb Start Date</th>
-                <th>Mpb End Date</th>
-                <th>Mpb Deductible</th>
-                <th>Mpb Remaining</th>
-                <th>Mpb Insurance Type</th>
-                <th>Mpb Insurance Type Label</th>
-                <th>Mpb Coinsurance Percent</th>
-                <th>Mpb Info Valid Until</th>
-                <th>Mpb Info Valid Till</th>
-                <th>Mpb Last Refreshed At</th>
-                <th>Manual Determination Strategy</th>
-                <th>Manual Determination Category</th>
-                <th>Manual Determination Category Memo</th>
-                <th>Manual Detail Json</th>
-                <th>Manual Medicare Is Partbprimary</th>
-                <th>Manual Medicare Is Partbactive</th>
-                <th>Manual Medicare Is Partcactive</th>
-                <th>Manual Medicare Is Inpatient</th>
-                <th>Manual Medicare Is Hospice Or Home Health</th>
-                <th>Manual Medicare Is Msp</th>
-                <th>Manual Medicare Msp Memo</th>
-                <th>Manual Medicare Mpb Start Date</th>
-                <th>Manual Medicare Mpb End Date</th>
-                <th>Manual Medicare Mpb Deductible</th>
-                <th>Manual Medicare Mpb Remaining</th>
-                <th>Manual Medicare Mpb Insurance Type</th>
-                <th>Manual Medicare Mpb Insurance Type Label</th>
-                <th>Manual Medicare Mpb Coinsurance Percent</th>
-                <th>Manual Medicare Mpb Info Valid Until</th>
-                <th>Manual Medicare Mpb Info Valid Till</th>
-                <th>Manual Medicare Mpb Last Refreshed At</th>
-                <th>Auto Medicare Result Id</th>
-            </tr>
-        </thead>
+
         <tbody>
             @foreach($patient->primaryCoverages as $cpc)
             <tr>
@@ -533,7 +273,7 @@
                             </div>
                         </form>
                     </div>
-
+                    <hr/>
                     <div moe relative large>
                         <a href="" start show class="">Manual Determination</a>
 
@@ -555,7 +295,7 @@
                                     <option value="NOT_COVERED">Not Covered</option>
                                     <option value="INVALID">Invalid</option>
                                     <option value="UNKNOWN">Unknown</option>
-                                </select>                        
+                                </select>
                             </div>
                             <div class="form-group">
                                 <label for="" class="control-label">Manual Determination Category Memo</label>
@@ -670,7 +410,7 @@
                             </div>
                         </form>
                     </div>
-                    @endif 
+                    @endif
                     @if($cpc->plan_type == 'MEDICAID')
                     <div moe relative>
                         <a href="" start show class="">Refresh</a>
@@ -686,6 +426,7 @@
                             </div>
                         </form>
                     </div>
+                    <hr/>
                     <div moe relative large>
                         <a href="" start show class="">Manual Determination</a>
 
@@ -707,7 +448,7 @@
                                     <option value="NOT_COVERED">Not Covered</option>
                                     <option value="INVALID">Invalid</option>
                                     <option value="UNKNOWN">Unknown</option>
-                                </select>                        
+                                </select>
                             </div>
                             <div class="form-group">
                                 <label for="" class="control-label">Manual Determination Category Memo</label>
@@ -717,15 +458,15 @@
                                 <label for="" class="control-label">Manual Detail Json</label>
                                 <input type="text" name="manualDetailJson" class="form-control input-sm"/>
                             </div>
-                           
-                           
+
+
                             <div class="form-group text-nowrap mb-0">
                                 <button class="btn btn-sm btn-primary" submit>Submt</button>
                                 <button class="btn btn-sm btn-default border" close>Close</button>
                             </div>
                         </form>
                     </div>
-                    @endif 
+                    @endif
                     @if($cpc->plan_type == 'COMMERCIAL')
                     <div moe relative>
                         <a href="" start show class="">Refresh</a>
@@ -741,6 +482,7 @@
                             </div>
                         </form>
                     </div>
+                    <hr/>
                     <div moe relative large>
                         <a href="" start show class="">Manual Determination</a>
 
@@ -762,7 +504,7 @@
                                     <option value="NOT_COVERED">Not Covered</option>
                                     <option value="INVALID">Invalid</option>
                                     <option value="UNKNOWN">Unknown</option>
-                                </select>                        
+                                </select>
                             </div>
                             <div class="form-group">
                                 <label for="" class="control-label">Manual Determination Category Memo</label>
@@ -772,104 +514,284 @@
                                 <label for="" class="control-label">Manual Detail Json</label>
                                 <input type="text" name="manualDetailJson" class="form-control input-sm"/>
                             </div>
-                            
-                           
+
+
                             <div class="form-group text-nowrap mb-0">
                                 <button class="btn btn-sm btn-primary" submit>Submt</button>
                                 <button class="btn btn-sm btn-default border" close>Close</button>
                             </div>
                         </form>
                     </div>
-                    @endif 
+                    @endif
+                    @if($cpc->plan_type == 'MCR_ADV')
+                        <div moe relative>
+                            <a href="" start show class="">Refresh</a>
+
+                            <form url="/api/clientPrimaryCoverage/refreshCoverageForMcrAdv" class="mcp-theme-1">
+                                <input type="hidden" name="uid" value="{{$cpc->uid}}" class="form-control input-sm" />
+                                <div class="form-group">
+                                    <p>Refresh?</p>
+                                </div>
+                                <div class="form-group text-nowrap mb-0">
+                                    <button class="btn btn-sm btn-primary" submit>Submt</button>
+                                    <button class="btn btn-sm btn-default border" close>Close</button>
+                                </div>
+                            </form>
+                        </div>
+                        <hr/>
+                        <div moe relative large>
+                            <a href="" start show class="">Manual Determination</a>
+                            <form url="/api/clientPrimaryCoverage/manualDeterminationForMcrAdv" class="mcp-theme-1">
+                                <input type="hidden" name="uid" value="{{$cpc->uid}}" class="form-control input-sm" />
+                                <div class="form-group">
+                                    <label for="" class="control-label">Manual Determination Strategy</label>
+                                    <select  name="manualDeterminationStrategy" class="form-control input-sm">
+                                        <option value="">--select--</option>
+                                        <option value="REVIEWED_ELECTRONIC">Reviewed electronic</option>
+                                        <option value="CALLED_PAYER">Called payer</option>
+                                    </select>
+                                </div>
+                                <div class="form-group">
+                                    <label for="" class="control-label">Manual Determination Category</label>
+                                    <select  name="manualDeterminationCategory" class="form-control input-sm">
+                                        <option value="">--select--</option>
+                                        <option value="COVERED">Covered</option>
+                                        <option value="NOT_COVERED">Not Covered</option>
+                                        <option value="INVALID">Invalid</option>
+                                        <option value="UNKNOWN">Unknown</option>
+                                    </select>
+                                </div>
+                                <div class="form-group">
+                                    <label for="" class="control-label">Manual Determination Category Memo</label>
+                                    <input type="text" name="manualDeterminationCategoryMemo" class="form-control input-sm"/>
+                                </div>
+                                <div class="form-group">
+                                    <label for="" class="control-label">Manual Detail Json</label>
+                                    <input type="text" name="manualDetailJson" class="form-control input-sm"/>
+                                </div>
+
+                                <div class="form-group">
+                                    <label for="" class="control-label">Manual Is Payer Member Identifier Valid</label>
+                                    <select  name="manualIsPayerMemberIdentifierValid" class="form-control input-sm">
+                                        <option value="">--select--</option>
+                                        <option value="YES">Yes</option>
+                                        <option value="NO">No</option>
+                                        <option value="UNKNOWN">Unknown</option>
+                                    </select>
+                                </div>
+
+                                <div class="form-group">
+                                    <label for="" class="control-label">Manual Is Mcr Number Valid</label>
+                                    <select  name="manualIsMcrNumberValid" class="form-control input-sm">
+                                        <option value="">--select--</option>
+                                        <option value="YES">Yes</option>
+                                        <option value="NO">No</option>
+                                        <option value="UNKNOWN">Unknown</option>
+                                    </select>
+                                </div>
+
+                                <div class="form-group">
+                                    <label for="" class="control-label">Manual Is Mcr Part Bprimary</label>
+                                    <select  name="manualIsMcrPartBPrimary" class="form-control input-sm">
+                                        <option value="">--select--</option>
+                                        <option value="YES">Yes</option>
+                                        <option value="NO">No</option>
+                                        <option value="UNKNOWN">Unknown</option>
+                                    </select>
+                                </div>
+
+                                <div class="form-group">
+                                    <label for="" class="control-label">Manual Is Mcr Part C Active</label>
+                                    <select  name="manualIsMcrPartCActive" class="form-control input-sm">
+                                        <option value="">--select--</option>
+                                        <option value="YES">Yes</option>
+                                        <option value="NO">No</option>
+                                        <option value="UNKNOWN">Unknown</option>
+                                    </select>
+                                </div>
+
+                                <div class="form-group text-nowrap mb-0">
+                                    <button class="btn btn-sm btn-primary" submit>Submt</button>
+                                    <button class="btn btn-sm btn-default border" close>Close</button>
+                                </div>
+                            </form>
+                        </div>
+                    @endif
+                    @if($cpc->plan_type == 'MCD_MCO')
+                        <div moe relative>
+                            <a href="" start show class="">Refresh</a>
+
+                            <form url="/api/clientPrimaryCoverage/refreshCoverageForMcdMco" class="mcp-theme-1">
+                                <input type="hidden" name="uid" value="{{$cpc->uid}}" class="form-control input-sm" />
+                                <div class="form-group">
+                                    <p>Refresh?</p>
+                                </div>
+                                <div class="form-group text-nowrap mb-0">
+                                    <button class="btn btn-sm btn-primary" submit>Submt</button>
+                                    <button class="btn btn-sm btn-default border" close>Close</button>
+                                </div>
+                            </form>
+                        </div>
+                        <hr/>
+                        <div moe relative large>
+                            <a href="" start show class="">Manual Determination</a>
+                            <form url="/api/clientPrimaryCoverage/manualDeterminationForMcdMco" class="mcp-theme-1">
+                                <input type="hidden" name="uid" value="{{$cpc->uid}}" class="form-control input-sm" />
+                                <div class="form-group">
+                                    <label for="" class="control-label">Manual Determination Strategy</label>
+                                    <select  name="manualDeterminationStrategy" class="form-control input-sm">
+                                        <option value="">--select--</option>
+                                        <option value="REVIEWED_ELECTRONIC">Reviewed electronic</option>
+                                        <option value="CALLED_PAYER">Called payer</option>
+                                    </select>
+                                </div>
+                                <div class="form-group">
+                                    <label for="" class="control-label">Manual Determination Category</label>
+                                    <select  name="manualDeterminationCategory" class="form-control input-sm">
+                                        <option value="">--select--</option>
+                                        <option value="COVERED">Covered</option>
+                                        <option value="NOT_COVERED">Not Covered</option>
+                                        <option value="INVALID">Invalid</option>
+                                        <option value="UNKNOWN">Unknown</option>
+                                    </select>
+                                </div>
+                                <div class="form-group">
+                                    <label for="" class="control-label">Manual Determination Category Memo</label>
+                                    <input type="text" name="manualDeterminationCategoryMemo" class="form-control input-sm"/>
+                                </div>
+                                <div class="form-group">
+                                    <label for="" class="control-label">Manual Detail Json</label>
+                                    <input type="text" name="manualDetailJson" class="form-control input-sm"/>
+                                </div>
+
+                                <div class="form-group">
+                                    <label for="" class="control-label">Manual Is Mcd Number Valid</label>
+                                    <select  name="manualIsMcdNumberValid" class="form-control input-sm">
+                                        <option value="">--select--</option>
+                                        <option value="YES">Yes</option>
+                                        <option value="NO">No</option>
+                                        <option value="UNKNOWN">Unknown</option>
+                                    </select>
+                                </div>
+
+                                <div class="form-group">
+                                    <label for="" class="control-label">Manual Is Mcd Response Mco Active</label>
+                                    <select  name="manualIsMcdResponseMcoActive" class="form-control input-sm">
+                                        <option value="">--select--</option>
+                                        <option value="YES">Yes</option>
+                                        <option value="NO">No</option>
+                                        <option value="UNKNOWN">Unknown</option>
+                                    </select>
+                                </div>
+
+                                <div class="form-group text-nowrap mb-0">
+                                    <button class="btn btn-sm btn-primary" submit>Submt</button>
+                                    <button class="btn btn-sm btn-default border" close>Close</button>
+                                </div>
+                            </form>
+                        </div>
+                    @endif
+                </td>
+                <td>
+                    <table class="table table-sm table-bordered table-condensed">
+                        <tr><td>creation_strategy</td><td>{{$cpc->creation_strategy}}</td></tr>
+                        <tr><td>auto_refresh_of_client_primary_coverage_id</td><td>{{$cpc->auto_refresh_of_client_primary_coverage_id}}</td></tr>
+                        <tr><td>manual_determination_of_client_primary_coverage_id</td><td>{{$cpc->manual_determination_of_client_primary_coverage_id}}</td></tr>
+                        <tr><td>plan_type</td><td>{{$cpc->plan_type}}</td></tr>
+                        <tr><td>is_partbprimary</td><td>{{$cpc->is_partbprimary}}</td></tr>
+                        <tr><td>is_manually_determined</td><td>{{$cpc->is_manually_determined}}</td></tr>
+                        <tr><td>is_entry_error</td><td>{{$cpc->is_entry_error}}</td></tr>
+                        <tr><td>subscriber_name_first</td><td>{{$cpc->subscriber_name_first}}</td></tr>
+                        <tr><td>subscriber_name_last</td><td>{{$cpc->subscriber_name_last}}</td></tr>
+                        <tr><td>subscriber_sex</td><td>{{$cpc->subscriber_sex}}</td></tr>
+                        <tr><td>subscriber_dob</td><td>{{$cpc->subscriber_dob}}</td></tr>
+                        <tr><td>payer_member_identifier</td><td>{{$cpc->payer_member_identifier}}</td></tr>
+                        <tr><td>payer_name</td><td>{{$cpc->payer_name}}</td></tr>
+                        <tr><td>date_of_service</td><td>{{$cpc->date_of_service}}</td></tr>
+                    </table>
+                </td>
+                <td>
+                    <table class="table table-sm table-bordered table-condensed">
+                        <tr><td>auto_is_payer_member_identifier_valid</td><td>{{$cpc->auto_is_payer_member_identifier_valid}}</td></tr>
+                        <tr><td>auto_medicare_is_partbprimary</td><td>{{$cpc->auto_medicare_is_partbprimary}}</td></tr>
+                        <tr><td>auto_medicare_is_partbactive</td><td>{{$cpc->auto_medicare_is_partbactive}}</td></tr>
+                        <tr><td>auto_medicare_is_partcactive</td><td>{{$cpc->auto_medicare_is_partcactive}}</td></tr>
+                        <tr><td>auto_medicare_is_inpatient</td><td>{{$cpc->auto_medicare_is_inpatient}}</td></tr>
+                        <tr><td>auto_medicare_is_hospice_or_home_health</td><td>{{$cpc->auto_medicare_is_hospice_or_home_health}}</td></tr>
+                        <tr><td>auto_medicare_is_msp</td><td>{{$cpc->auto_medicare_is_msp}}</td></tr>
+                        <tr><td>auto_medicare_msp_memo</td><td>{{$cpc->auto_medicare_msp_memo}}</td></tr>
+                        <tr><td>auto_medicare_mpb_start_date</td><td>{{$cpc->auto_medicare_mpb_start_date}}</td></tr>
+                        <tr><td>auto_medicare_mpb_end_date</td><td>{{$cpc->auto_medicare_mpb_end_date}}</td></tr>
+                        <tr><td>auto_medicare_mpb_deductible</td><td>{{$cpc->auto_medicare_mpb_deductible}}</td></tr>
+                        <tr><td>auto_medicare_mpb_remaining</td><td>{{$cpc->auto_medicare_mpb_remaining}}</td></tr>
+                        <tr><td>auto_medicare_mpb_insurance_type</td><td>{{$cpc->auto_medicare_mpb_insurance_type}}</td></tr>
+                        <tr><td>auto_medicare_mpb_insurance_type_label</td><td>{{$cpc->auto_medicare_mpb_insurance_type_label}}</td></tr>
+                        <tr><td>auto_medicare_mpb_coinsurance_percent</td><td>{{$cpc->auto_medicare_mpb_coinsurance_percent}}</td></tr>
+                        <tr><td>auto_medicare_mpb_info_valid_until</td><td>{{$cpc->auto_medicare_mpb_info_valid_until}}</td></tr>
+                        <tr><td>auto_medicare_mpb_info_valid_till</td><td>{{$cpc->auto_medicare_mpb_info_valid_till}}</td></tr>
+                        <tr><td>auto_medicare_mpb_last_refreshed_at</td><td>{{$cpc->auto_medicare_mpb_last_refreshed_at}}</td></tr>
+                        <tr><td>was_successful</td><td>{{$cpc->was_successful}}</td></tr>
+                        <tr><td>reject_reason_code</td><td>{{$cpc->reject_reason_code}}</td></tr>
+                        <tr><td>reject_reason_description</td><td>{{$cpc->reject_reason_description}}</td></tr>
+                        <tr><td>follow_up_action_code</td><td>{{$cpc->follow_up_action_code}}</td></tr>
+                        <tr><td>follow_up_action_description</td><td>{{$cpc->follow_up_action_description}}</td></tr>
+                        <tr><td>details</td><td>{{$cpc->details}}</td></tr>
+                        <tr><td>is_mcn_valid_number</td><td>{{$cpc->is_mcn_valid_number}}</td></tr>
+                        <tr><td>address_street_line1</td><td>{{$cpc->address_street_line1}}</td></tr>
+                        <tr><td>address_street_line2</td><td>{{$cpc->address_street_line2}}</td></tr>
+                        <tr><td>address_city</td><td>{{$cpc->address_city}}</td></tr>
+                        <tr><td>address_state</td><td>{{$cpc->address_state}}</td></tr>
+                        <tr><td>address_zip</td><td>{{$cpc->address_zip}}</td></tr>
+                        <tr><td>is_hospice</td><td>{{$cpc->is_hospice}}</td></tr>
+                        <tr><td>mcn_response_detail</td><td>{{$cpc->mcn_response_detail}}</td></tr>
+                        <tr><td>billing_address</td><td>{{$cpc->billing_address}}</td></tr>
+                        <tr><td>reason_not_partb</td><td>{{$cpc->reason_not_partb}}</td></tr>
+                        <tr><td>reason_not_partbmemo</td><td>{{$cpc->reason_not_partbmemo}}</td></tr>
+                        <tr><td>is_medicare_advantage</td><td>{{$cpc->is_medicare_advantage}}</td></tr>
+                        <tr><td>medicare_advantage_plan</td><td>{{$cpc->medicare_advantage_plan}}</td></tr>
+                        <tr><td>mpb_active</td><td>{{$cpc->mpb_active}}</td></tr>
+                        <tr><td>mpb_start_date</td><td>{{$cpc->mpb_start_date}}</td></tr>
+                        <tr><td>mpb_end_date</td><td>{{$cpc->mpb_end_date}}</td></tr>
+                        <tr><td>mpb_deductible</td><td>{{$cpc->mpb_deductible}}</td></tr>
+                        <tr><td>mpb_remaining</td><td>{{$cpc->mpb_remaining}}</td></tr>
+                        <tr><td>mpb_insurance_type</td><td>{{$cpc->mpb_insurance_type}}</td></tr>
+                        <tr><td>mpb_insurance_type_label</td><td>{{$cpc->mpb_insurance_type_label}}</td></tr>
+                        <tr><td>mpb_coinsurance_percent</td><td>{{$cpc->mpb_coinsurance_percent}}</td></tr>
+                        <tr><td>mpb_info_valid_until</td><td>{{$cpc->mpb_info_valid_until}}</td></tr>
+                        <tr><td>mpb_info_valid_till</td><td>{{$cpc->mpb_info_valid_till}}</td></tr>
+                        <tr><td>mpb_last_refreshed_at</td><td>{{$cpc->mpb_last_refreshed_at}}</td></tr>
+                        <tr><td>manual_determination_strategy</td><td>{{$cpc->manual_determination_strategy}}</td></tr>
+                        <tr><td>manual_determination_category</td><td>{{$cpc->manual_determination_category}}</td></tr>
+                        <tr><td>manual_determination_category_memo</td><td>{{$cpc->manual_determination_category_memo}}</td></tr>
+                        <tr><td>manual_detail_json</td><td>{{$cpc->manual_detail_json}}</td></tr>
+                        <tr><td>manual_medicare_is_partbprimary</td><td>{{$cpc->manual_medicare_is_partbprimary}}</td></tr>
+                        <tr><td>manual_medicare_is_partbactive</td><td>{{$cpc->manual_medicare_is_partbactive}}</td></tr>
+                        <tr><td>manual_medicare_is_partcactive</td><td>{{$cpc->manual_medicare_is_partcactive}}</td></tr>
+                        <tr><td>manual_medicare_is_inpatient</td><td>{{$cpc->manual_medicare_is_inpatient}}</td></tr>
+                        <tr><td>manual_medicare_is_hospice_or_home_health</td><td>{{$cpc->manual_medicare_is_hospice_or_home_health}}</td></tr>
+                        <tr><td>manual_medicare_is_msp</td><td>{{$cpc->manual_medicare_is_msp}}</td></tr>
+                        <tr><td>manual_medicare_msp_memo</td><td>{{$cpc->manual_medicare_msp_memo}}</td></tr>
+                        <tr><td>manual_medicare_mpb_start_date</td><td>{{$cpc->manual_medicare_mpb_start_date}}</td></tr>
+                        <tr><td>manual_medicare_mpb_end_date</td><td>{{$cpc->manual_medicare_mpb_end_date}}</td></tr>
+                        <tr><td>manual_medicare_mpb_deductible</td><td>{{$cpc->manual_medicare_mpb_deductible}}</td></tr>
+                        <tr><td>manual_medicare_mpb_remaining</td><td>{{$cpc->manual_medicare_mpb_remaining}}</td></tr>
+                        <tr><td>manual_medicare_mpb_insurance_type</td><td>{{$cpc->manual_medicare_mpb_insurance_type}}</td></tr>
+                        <tr><td>manual_medicare_mpb_insurance_type_label</td><td>{{$cpc->manual_medicare_mpb_insurance_type_label}}</td></tr>
+                        <tr><td>manual_medicare_mpb_coinsurance_percent</td><td>{{$cpc->manual_medicare_mpb_coinsurance_percent}}</td></tr>
+                        <tr><td>manual_medicare_mpb_info_valid_until</td><td>{{$cpc->manual_medicare_mpb_info_valid_until}}</td></tr>
+                        <tr><td>manual_medicare_mpb_info_valid_till</td><td>{{$cpc->manual_medicare_mpb_info_valid_till}}</td></tr>
+                        <tr><td>manual_medicare_mpb_last_refreshed_at</td><td>{{$cpc->manual_medicare_mpb_last_refreshed_at}}</td></tr>
+                        <tr><td>auto_medicare_result_id</td><td>{{$cpc->auto_medicare_result_id}}</td></tr>
+                    </table>
+                </td>
+                <td>
+                    <table>
+                        <tr><td>auto_detail_json</td><td><pre>{{$cpc->auto_detail_json}}</pre></td></tr>
+                    </table>
                 </td>
-                <td>{{$cpc->creation_strategy}}</td>
-                <td>{{$cpc->auto_refresh_of_client_primary_coverage_id}}</td>
-                <td>{{$cpc->manual_determination_of_client_primary_coverage_id}}</td>
-                <td>{{$cpc->plan_type}}</td>
-                <td>{{$cpc->is_partbprimary}}</td>
-                <td>{{$cpc->is_manually_determined}}</td>
-                <td>{{$cpc->is_entry_error}}</td>
-                <td>{{$cpc->subscriber_name_first}}</td>
-                <td>{{$cpc->subscriber_name_last}}</td>
-                <td>{{$cpc->subscriber_sex}}</td>
-                <td>{{$cpc->subscriber_dob}}</td>
-                <td>{{$cpc->payer_member_identifier}}</td>
-                <td>{{$cpc->payer_name}}</td>
-                <td>{{$cpc->date_of_service}}</td>
-                <td>{{$cpc->auto_is_payer_member_identifier_valid}}</td>
-                <td>{{$cpc->auto_detail_json}}</td>
-                <td>{{$cpc->auto_medicare_is_partbprimary}}</td>
-                <td>{{$cpc->auto_medicare_is_partbactive}}</td>
-                <td>{{$cpc->auto_medicare_is_partcactive}}</td>
-                <td>{{$cpc->auto_medicare_is_inpatient}}</td>
-                <td>{{$cpc->auto_medicare_is_hospice_or_home_health}}</td>
-                <td>{{$cpc->auto_medicare_is_msp}}</td>
-                <td>{{$cpc->auto_medicare_msp_memo}}</td>
-                <td>{{$cpc->auto_medicare_mpb_start_date}}</td>
-                <td>{{$cpc->auto_medicare_mpb_end_date}}</td>
-                <td>{{$cpc->auto_medicare_mpb_deductible}}</td>
-                <td>{{$cpc->auto_medicare_mpb_remaining}}</td>
-                <td>{{$cpc->auto_medicare_mpb_insurance_type}}</td>
-                <td>{{$cpc->auto_medicare_mpb_insurance_type_label}}</td>
-                <td>{{$cpc->auto_medicare_mpb_coinsurance_percent}}</td>
-                <td>{{$cpc->auto_medicare_mpb_info_valid_until}}</td>
-                <td>{{$cpc->auto_medicare_mpb_info_valid_till}}</td>
-                <td>{{$cpc->auto_medicare_mpb_last_refreshed_at}}</td>
-                <td>{{$cpc->was_successful}}</td>
-                <td>{{$cpc->reject_reason_code}}</td>
-                <td>{{$cpc->reject_reason_description}}</td>
-                <td>{{$cpc->follow_up_action_code}}</td>
-                <td>{{$cpc->follow_up_action_description}}</td>
-                <td>{{$cpc->details}}</td>
-                <td>{{$cpc->is_mcn_valid_number}}</td>
-                <td>{{$cpc->address_street_line1}}</td>
-                <td>{{$cpc->address_street_line2}}</td>
-                <td>{{$cpc->address_city}}</td>
-                <td>{{$cpc->address_state}}</td>
-                <td>{{$cpc->address_zip}}</td>
-                <td>{{$cpc->is_hospice}}</td>
-                <td>{{$cpc->mcn_response_detail}}</td>
-                <td>{{$cpc->billing_address}}</td>
-                <td>{{$cpc->reason_not_partb}}</td>
-                <td>{{$cpc->reason_not_partbmemo}}</td>
-                <td>{{$cpc->is_medicare_advantage}}</td>
-                <td>{{$cpc->medicare_advantage_plan}}</td>
-                <td>{{$cpc->mpb_active}}</td>
-                <td>{{$cpc->mpb_start_date}}</td>
-                <td>{{$cpc->mpb_end_date}}</td>
-                <td>{{$cpc->mpb_deductible}}</td>
-                <td>{{$cpc->mpb_remaining}}</td>
-                <td>{{$cpc->mpb_insurance_type}}</td>
-                <td>{{$cpc->mpb_insurance_type_label}}</td>
-                <td>{{$cpc->mpb_coinsurance_percent}}</td>
-                <td>{{$cpc->mpb_info_valid_until}}</td>
-                <td>{{$cpc->mpb_info_valid_till}}</td>
-                <td>{{$cpc->mpb_last_refreshed_at}}</td>
-                <td>{{$cpc->manual_determination_strategy}}</td>
-                <td>{{$cpc->manual_determination_category}}</td>
-                <td>{{$cpc->manual_determination_category_memo}}</td>
-                <td>{{$cpc->manual_detail_json}}</td>
-                <td>{{$cpc->manual_medicare_is_partbprimary}}</td>
-                <td>{{$cpc->manual_medicare_is_partbactive}}</td>
-                <td>{{$cpc->manual_medicare_is_partcactive}}</td>
-                <td>{{$cpc->manual_medicare_is_inpatient}}</td>
-                <td>{{$cpc->manual_medicare_is_hospice_or_home_health}}</td>
-                <td>{{$cpc->manual_medicare_is_msp}}</td>
-                <td>{{$cpc->manual_medicare_msp_memo}}</td>
-                <td>{{$cpc->manual_medicare_mpb_start_date}}</td>
-                <td>{{$cpc->manual_medicare_mpb_end_date}}</td>
-                <td>{{$cpc->manual_medicare_mpb_deductible}}</td>
-                <td>{{$cpc->manual_medicare_mpb_remaining}}</td>
-                <td>{{$cpc->manual_medicare_mpb_insurance_type}}</td>
-                <td>{{$cpc->manual_medicare_mpb_insurance_type_label}}</td>
-                <td>{{$cpc->manual_medicare_mpb_coinsurance_percent}}</td>
-                <td>{{$cpc->manual_medicare_mpb_info_valid_until}}</td>
-                <td>{{$cpc->manual_medicare_mpb_info_valid_till}}</td>
-                <td>{{$cpc->manual_medicare_mpb_last_refreshed_at}}</td>
-                <td>{{$cpc->auto_medicare_result_id}}</td>
             </tr>
             @endforeach
         </tbody>
     </table>
 </div>
-@endsection
+@endsection

+ 147 - 0
resources/views/app/patient/coverage-status.blade.php

@@ -0,0 +1,147 @@
+<div>
+    @php
+        $coverage = $patient->latestClientPrimaryCoverage;
+    @endphp
+    @if(!$coverage)
+        <span><b>No coverage info!</b></span>
+    @elseif($coverage->plan_type === 'MEDICARE')
+      @if($coverage->creation_strategy == 'NEW' || $coverage->creation_strategy == 'AUTO_REFRESH')
+      <table class="table table-sm table-bordered">
+        <tr>
+          <td class="font-weight-bold">Medicare Part B (Primary)</td>
+          <td>
+            @if($coverage->auto_medicare_is_partbprimary)
+              <span><i class="fas fa-check-circle text-success"></i> (auto)</span>
+            @elseif(!$coverage->auto_medicare_is_match_found)
+              <span><i class="fas fa-times text-danger"></i> record not found (auto)</span>
+            @else
+              <span><i class="fas fa-times text-danger"></i> not primary!</span> <br>
+              <span><i class="fas fa-check-circle text-success"></i> record found</span> <br>
+              <span><b>Part B:</b> {{$coverage->auto_medicare_is_partbactive}}</span> <br>
+              <span><b>Part C:</b> {{$coverage->auto_medicare_is_partcactive}}</span>
+            @endif
+          </td>
+        </tr>
+        @if($coverage->auto_medicare_is_partbactive)
+        <tr>
+          <td class="font-weight-bold">Part B Deductible</td>
+          <td>{{$coverage->auto_medicare_mpb_deductible ?? '-'}}</td>
+        </tr>
+        <tr>
+          <td class="font-weight-bold">Part B Remaining</td>
+          <td>{{$coverage->auto_medicare_mpb_remaining ?? '-'}}</td>
+        </tr>
+        @endif
+      </table>
+      @else
+      <table class="table table-sm table-bordered">
+        <tr>
+          <td class="font-weight-bold">Medicare Part B (Primary)</td>
+          <td>
+            @if($coverage->manual_medicare_is_partbprimary)
+              <span><i class="fas fa-check-circle text-success"></i>  ({{$coverage->manual_determination_strategy}})</span>
+            @elseif(!$coverage->manual_medicare_is_match_found)
+            <span><i class="fas fa-times text-danger"></i> record not found ({{$coverage->manual_determination_strategy}})</span>
+            @else
+            <span><i class="fas fa-times text-danger"></i> not primary! ({{$coverage->manual_determination_strategy}})</span> <br>
+            <span><i class="fas fa-check-circle text-success"></i> record found</span> <br>
+            <span><b>Part B:</b> {{$coverage->manual_medicare_is_partbactive}}</span> <br>
+            <span><b>Part C:</b> {{$coverage->manual_medicare_is_partcactive}}</span>
+            @endif
+          </td>
+        </tr>
+        @if($coverage->auto_medicare_is_partbactive)
+        <tr>
+          <td class="font-weight-bold">Part B Deductible</td>
+          <td>{{$coverage->auto_medicare_mpb_deductible ?? '-'}}</td>
+        </tr>
+        <tr>
+          <td class="font-weight-bold">Part B Remaining</td>
+          <td>{{$coverage->auto_medicare_mpb_remaining ?? '-'}}</td>
+        </tr>
+        @endif
+      </table>
+      @endif
+      <div class="w-50">
+        {{$coverage->manual_determination_category_memo}}
+      </div>
+
+    @elseif($coverage->plan_type === 'MEDICAID')
+      @if($coverage->creation_strategy == 'NEW' || $coverage->creation_strategy == 'AUTO_REFRESH')
+      <table class="table table-sm table-bordered">
+        <tr>
+          <td class="font-weight-bold">Medicaid (Primary):</td>
+          <td>
+            <span><b>{{$coverage->mcd_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>
+      </table>
+      @else
+        <table class="table table-sm table-bordered">
+          <tr>
+            <td class="font-weight-bold">Medicaid (Primary):</td>
+            <td>
+              <span><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-danger"></i> record found</span> <br>
+              <span><i class="fas fa-times text-danger"></i> not covered ({{$coverage->manual_determination_strategy}})</span>
+              @elseif($coverage->manual_determination_category == 'INVALID')
+              <span><i class="fas fa-times text-danger"></i> record not found ({{$coverage->manual_determination_strategy}})</span>
+              @else
+              <span><i class="fas fa-hourglass-half text-warning"></i> pending ({{$coverage->manual_determination_strategy}})</span>
+              @endif
+            </td>
+          </tr>
+        </table>
+      @endif
+      <div class="w-50">
+        {{$coverage->manual_determination_category_memo}}
+      </div>
+
+    @elseif($coverage->plan_type === 'COMMERCIAL')
+      @if($coverage->creation_strategy == 'NEW' || $coverage->creation_strategy == 'AUTO_REFRESH')
+      <table class="table table-sm table-bordered">
+        <tr>
+          <td class="font-weight-bold">Commercial (Primary):</td>
+          <td>
+            <span><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>
+      </table>
+      @else
+        <table class="table table-sm table-bordered">
+          <tr>
+            <td class="font-weight-bold">Commercial (Primary):</td>
+            <td>
+              <span><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-danger"></i> record found</span> <br>
+              <span><i class="fas fa-times text-danger"></i> not covered ({{$coverage->manual_determination_strategy}})</span>
+              @elseif($coverage->manual_determination_category == 'INVALID')
+              <span><i class="fas fa-times text-danger"></i> record not found ({{$coverage->manual_determination_strategy}})</span>
+              @else
+              <span><i class="fas fa-hourglass-half text-warning"></i> pending ({{$coverage->manual_determination_strategy}})</span>
+              @endif
+            </td>
+          </tr>
+        </table>
+      @endif
+      <div class="w-50">
+        {{$coverage->manual_determination_category_memo}}
+      </div>
+    @endif
+</div>

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

@@ -0,0 +1,306 @@
+	<div id="new-coverage-form-{{$patient->uid}}">
+		<div class="p-3">
+			<form :url="url" class="mcp-theme-1" @submit.prevent="submitForm">
+				<input type="hidden" name="clientUid" value="{{$patient->uid}}" class="form-control input-sm" />
+				<div class="row">
+					<div class="form-group col-md-12">
+						<p class="mb-1 font-weight-bold">Type of insurance card:</p>
+						<div class="form-check form-check-inline">
+							<label class="form-check-label"><input class="form-check-input" type="radio" v-model="insuranceCardType" @change="updateUrl" name="insuranceCardType" value="medicare">Medicare Part B (Primary)</label>
+						</div>
+						<div class="form-check form-check-inline">
+							<label class="form-check-label"><input class="form-check-input" type="radio" v-model="insuranceCardType" @change="updateUrl" name="insuranceCardType" value="medicaid">Medicaid (Primary)</label>
+						</div>
+						<div class="form-check form-check-inline">
+							<label class="form-check-label"><input class="form-check-input" type="radio" v-model="insuranceCardType" @change="updateUrl" name="insuranceCardType" value="commercial">Commercial / Third Party (Primary)</label>
+						</div>
+					</div>
+				</div>
+
+				<div class="row" v-show="insuranceCardType == 'commercial'">
+					<div class="form-group col-md-12">
+						<label for="" class="control-label">Commercial Payer</label>
+						<input name="commercialPayerUidSuggest" class="form-control input-sm" value="" stag-suggest stag-suggest-ep="/search-payer/json" />
+						<input type="hidden" name="commercialPayerUid" />
+					</div>
+					<div class="form-group col-md-6">
+						<label class="control-label">Patient Member Identifier</label>
+						<input type="text" name="commercialMemberIdentifier"  class="form-control input-sm">
+					</div>
+					<div class="form-group col-md-6">
+						<label class="control-label">Patient Group Number</label>
+						<input type="text" name="commercialGroupNumber"  class="form-control input-sm">
+					</div>
+				</div>
+
+
+				<div class="row" v-if="insuranceCardType">
+					<div class="col-md-12 bg-light p-3 mb-2">
+						<h5 class="m-0 font-weight-bold">Patient Name / Demographics:</h5>
+					</div>
+					<div class="form-group col-md-4">
+						<label class="control-label">Patient First Name</label>
+						<input type="text" name="patientNameFirst" value="{{$patient->name_first}}" class="form-control input-sm">
+					</div>
+					<div class="form-group col-md-4">
+						<label class="control-label">Patient Middle Name / MI</label>
+						<input type="text" name="patientNameMiddle" value="{{$patient->name_middle}}" class="form-control input-sm">
+					</div>
+					<div class="form-group col-md-4">
+						<label class="control-label">Patient Last Name</label>
+						<input type="text" name="patientNameLast" value="{{$patient->name_last}}" class="form-control input-sm">
+					</div>
+					<div class="form-group col-md-4">
+						<label class="control-label">Patient Suffix</label>
+						<input type="text" name="patientNameSuffix" value="{{$patient->name_suffix}}" class="form-control input-sm">
+					</div>
+					<div class="form-group col-md-4">
+						<label class="control-label">Patient Sex</label>
+						<select class="form-control input-sm" name="patientSex" select2>
+							<option value="">--</option>
+							<option value="M">Male</option>
+							<option value="F">Female</option>
+							<option value="UNKNOWN">Unknown</option>
+						</select>
+					</div>
+					<div class="form-group col-md-4">
+						<label class="control-label">Patient Dob</label>
+						<input type="date" name="patientDob" value="{{$patient->dob}}" class="form-control input-sm">
+					</div>
+					<div class="form-group col-md-6">
+						<label class="control-label">Date Of Service</label>
+						<input type="date" name="dateOfService" value="{{date('Y-m-d')}}" class="form-control input-sm">
+					</div>
+				</div>
+				<div class="row">
+					<div class="form-group col-md-12" v-if="insuranceCardType == 'medicaid' || insuranceCardType == 'commercial'">
+						<p class="mb-1 font-weight-bold">Is Patient The Subscriber?</p>
+						<div class="form-check form-check-inline">
+							<label class="form-check-label"><input class="form-check-input" type="radio" name="isPatientSubscriber" v-model="isPatientSubscriber" value="1">Yes</label>
+						</div>
+						<div class="form-check form-check-inline">
+							<label class="form-check-label"><input class="form-check-input" type="radio" name="isPatientSubscriber" v-model="isPatientSubscriber" value="0">No</label>
+						</div>
+					</div>
+				</div>
+
+				<div v-if="isPatientSubscriber == 0 && (insuranceCardType == 'medicaid' || insuranceCardType == 'commercial')" class="row">
+					<div class="col-md-12 bg-light p-3 mb-2">
+						<h5 class="m-0 font-weight-bold">Subscriber Details:</h5>
+					</div>
+					<div class="form-group col-md-4">
+						<label class="control-label">Subscriber First Name</label>
+						<input type="text" name="subscriberNameFirst" value="{{$patient->name_first}}" class="form-control input-sm">
+					</div>
+					<div class="form-group col-md-4">
+						<label class="control-label">Subscriber Middle Name / MI</label>
+						<input type="text" name="subscriberNameMiddle" value="{{$patient->name_middle}}" class="form-control input-sm">
+					</div>
+					<div class="form-group col-md-4">
+						<label class="control-label">Subscriber Last Name</label>
+						<input type="text" name="subscriberNameLast" value="{{$patient->name_last}}" class="form-control input-sm">
+					</div>
+					<div class="form-group col-md-4">
+						<label class="control-label">Subscriber Suffix</label>
+						<input type="text" name="subscriberNameSuffix" value="{{$patient->name_suffix}}" class="form-control input-sm">
+					</div>
+					<div class="form-group col-md-4">
+						<label class="control-label">Subscriber Sex</label>
+						<select class="form-control input-sm" name="subscriberSex">
+							<option value="">--</option>
+							<option value="M">Male</option>
+							<option value="F">Female</option>
+							<option value="UNKNOWN">Unknown</option>
+						</select>
+					</div>
+					<div class="form-group col-md-4">
+						<label class="control-label">Subscriber Dob</label>
+						<input type="date" name="subscriberDob" value="{{$patient->dob}}" class="form-control input-sm">
+					</div>
+					<div class="form-group col-md-6">
+						<label class="control-label">What is the patient's relationship to the subscriber?</label>
+						<select name="patientRelationshipToSubscriber" class="form-control input-sm">
+							<option value="">--</option>
+							<option value="SPOUSE">Spouse</option>
+							<option value="CHILD">Child</option>
+							<option value="EMPLOYEE">Employee</option>
+							<option value="ORGAN_DONOR">Organ Donor</option>
+							<option value="CADAVER_DONOR">Cadaver Donor</option>
+							<option value="LIFE_PARTNER">Life Partner</option>
+							<option value="OTHER_RELATIONSHIP">Other Relationship</option>
+							<option value="UNKNOWN">Unknown</option>
+						</select>
+					</div>
+				</div>
+				<div class="mb-1" v-if="insuranceCardType == 'commercial'">
+					<p>Does the patient also have either a Medicare or Medicaid #? (optional)</p>
+				</div>
+				<div class="row" v-if="insuranceCardType == 'medicaid' || insuranceCardType == 'commercial'">
+					<div class="col-md-12 bg-light p-3 mb-2">
+						<h5 class="m-0 font-weight-bold">Medicaid Information:</h5>
+					</div>
+					<div class="form-group col-md-6">
+						<label for="" class="control-label">Medicaid State</label>
+						<input class="form-control input-sm" list="mcdPayer" name="mcdPayerUid" id="mcdPayerUid">
+						<datalist id="mcdPayer">
+							<option value="">--</option>
+							<option>MEDICAID ALABAMA</option>
+							<option>MEDICAID ALASKA</option>
+							<option>MEDICAID ARIZONA</option>
+							<option>MEDICAID ARKANSAS</option>
+							<option>MEDICAID CALIFORNIA MEDI-CAL</option>
+							<option>MEDICAID COLORADO</option>
+							<option>MEDICAID CONNECTICUT</option>
+							<option>MEDICAID DELAWARE</option>
+							<option>MEDICAID DISTRICT OF COLUMBIA</option>
+							<option>MEDICAID FLORIDA</option>
+							<option>MEDICAID GEORGIA</option>
+							<option>MEDICAID HAWAII</option>
+							<option>MEDICAID IDAHO</option>
+							<option>MEDICAID ILLINOIS</option>
+							<option>MEDICAID INDIANA</option>
+							<option>MEDICAID IOWA</option>
+							<option>MEDICAID KANSAS</option>
+							<option>MEDICAID KENTUCKY</option>
+							<option>MEDICAID LOUISIANA</option>
+							<option>MEDICAID MAINE</option>
+							<option>MEDICAID MARYLAND</option>
+							<option>MEDICAID MARYLAND DHMH</option>
+							<option>MEDICAID MASSACHUSETTS</option>
+							<option>MEDICAID MICHIGAN</option>
+							<option>MEDICAID MINNESOTA</option>
+							<option>MEDICAID MISSISSIPPI</option>
+							<option>MEDICAID MISSISSIPPI</option>
+							<option>MEDICAID MISSOURI</option>
+							<option>MEDICAID MONTANA</option>
+							<option>MEDICAID NEBRASKA</option>
+							<option>MEDICAID NEVADA</option>
+							<option>MEDICAID NEW HAMPSHIRE</option>
+							<option>MEDICAID NEW JERSEY</option>
+							<option>MEDICAID NEW MEXICO</option>
+							<option>MEDICAID NEW YORK</option>
+							<option>MEDICAID NEW YORK</option>
+							<option>MEDICAID NORTH CAROLINA</option>
+							<option>MEDICAID NORTH DAKOTA</option>
+							<option>MEDICAID OHIO</option>
+							<option>MEDICAID OKLAHOMA</option>
+							<option>MEDICAID OREGON</option>
+							<option>MEDICAID OREGON (DHS OMAP)</option>
+							<option>MEDICAID PENNSYLVANIA</option>
+							<option>MEDICAID RHODE ISLAND</option>
+							<option>MEDICAID SOUTH CAROLINA</option>
+							<option>MEDICAID SOUTH DAKOTA</option>
+							<option>MEDICAID TENNESSEE</option>
+							<option>MEDICAID TEXAS</option>
+							<option>MEDICAID TEXAS AND TEXAS HEALTH STEPS</option>
+							<option>MEDICAID UTAH</option>
+							<option>MEDICAID VERMONT</option>
+							<option>MEDICAID VIRGINIA</option>
+							<option>MEDICAID WASHINGTON (PROVIDER ONE)</option>
+							<option>MEDICAID WEST VIRGINIA</option>
+							<option>MEDICAID WISCONSIN</option>
+							<option>MEDICAID WYOMING</option>
+						</datalist>
+					</div>
+
+					<div class="form-group col-md-6">
+						<label class="control-label">Medicaid Number</label>
+						<input type="text" name="mcdNumber" class="form-control input-sm">
+					</div>
+				</div>
+
+				<div class="row" v-if="insuranceCardType == 'medicare' || insuranceCardType == 'commercial'">
+					<div class="col-md-12 bg-light p-3 mb-2">
+						<h5 class="m-0 font-weight-bold">Medicare Information:</h5>
+					</div>
+					<div class="form-group col-md-6">
+						<label class="control-label">Medicare Number</label>
+						<input type="text" name="mcrNumber" class="form-control input-sm">
+					</div>
+
+				</div>
+
+				<div v-if="response" :class="response.success ? 'alert success' : 'alert alert-danger'">
+					@{{ response.message }}
+				</div>
+
+				<div class="form-group text-nowrap mb-0">
+					<button v-if="!processing" class="btn btn-sm btn-primary" type="submit" :disabled="url == ''">Submt</button>
+					<button v-else class="btn btn-sm btn-primary" type="button"><i class="fas fa-circle-notch fa-spin"></i> Processing...</button>
+				</div>
+			</form>
+		</div>
+	</div>
+	<script>
+		(function() {
+			function init() {
+				new Vue({
+					el: '#new-coverage-form-{{$patient->uid}}',
+					delimiters: ['@{{', '}}'],
+					data: {
+						url: '',
+						insuranceCardType: '',
+						isPatientSubscriber: 1,
+						processing: false,
+						response: null
+					},
+					methods: {
+						updateUrl: function() {
+							if (this.insuranceCardType == 'medicare') {
+								this.url = '/api/clientPrimaryCoverage/createNewCoverageForMedicare';
+							}
+							if (this.insuranceCardType == 'medicaid') {
+								this.url = '/api/clientPrimaryCoverage/createNewCoverageForMedicaid';
+							}
+							if (this.insuranceCardType == 'commercial') {
+								this.url = '/api/clientPrimaryCoverage/createNewCoverageForCommercial';
+							}
+						},
+						onCommercialPayerChange: function() {
+							var input = $('input[name=commercialPayerUidSuggest]');
+							var hiddenInput = $('input[name=commercialPayerUid]');
+							input
+								.off('stag-suggest-selected')
+								.on('stag-suggest-selected', (e, input, _data) => {
+									hiddenInput.val(_data.uid);
+								});
+
+						},
+						submitForm: function(evt) {
+							var self = this;
+							if(self.processing) return;
+							var form = evt.target;
+							var data = $(form).serializeArray();
+							var url = $(form).attr('url');
+							if (!url) {
+								self.response = {
+									success: false,
+									message: 'Invalid url'
+								};
+								return;
+							}
+
+							self.processing = true;
+							$.post(url, data, function(response) {
+								self.processing = false;
+								if (response.success) {
+									closeStagPopup();
+									fastReload();
+								} else {
+									self.response = response;
+								}
+							}, 'json');
+						},
+						init: function() {
+							initStagSuggest();
+							this.onCommercialPayerChange();
+						}
+					},
+					mounted: function() {
+						this.init();
+					}
+				});
+			}
+			addMCInitializer('new-coverage-form-{{$patient->uid}}', init, '#new-coverage-form-{{$patient->uid}}')
+		}).call(window);
+	</script>

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

@@ -0,0 +1,381 @@
+<div id="manual-determination-form-{{$patient->uid}}">
+	@php
+	$cpc = $patient->latestClientPrimaryCoverage;
+	@endphp
+	<div class="p-3">
+		<form @submit.prevent="submitForm" method="post" class="mcp-theme-1">
+			<input type="hidden" name="clientPrimaryCoverageUid" value="{{$cpc->uid}}" class="form-control input-sm" />
+			<div class="row">
+				<div class="form-group col-md-12">
+					<p class="mb-1">How did you manually check coverage?</p>
+					<div class="form-check form-check-inline">
+						<label class="form-check-label"><input class="form-check-input" type="radio" v-model="uiState.manualDeterminationStrategy" name="manualDeterminationStrategy" value="REVIEWED_ELECTRONIC" required>Reviewed Electronically</label>
+					</div>
+					<div class="form-check form-check-inline">
+						<label class="form-check-label"><input class="form-check-input" type="radio" v-model="uiState.manualDeterminationStrategy" name="manualDeterminationStrategy" value="CALLED_PAYER" required>Called Payer</label>
+					</div>
+				</div>
+			</div>
+			<div class="table-responsive">
+				<table class="table table-sm table-bordered table-striped">
+					<thead>
+						<tr>
+							<th></th>
+							<th>Automatic</th>
+							<th>Override</th>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>Record Found?</td>
+							<td>{{$cpc->auto_commercial_is_match_found ? 'YES' : 'NO'}}</td>
+							<td>
+								<div class="form-group">
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualCommercialIsMatched" value="YES" @change="onInputChange">Yes</label>
+									</div>
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualCommercialIsMatched" value="NO" @change="onInputChange">No</label>
+									</div>
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<td>Coverage Status?</td>
+							<td>UNKNOWN</td>
+							<td>
+								<select name="manualDeterminationCategory" class="form-control input-sm" @change="onInputChange">
+									<option value="">--select--</option>
+									<option value="COVERED" :selected="uiState.manualCommercialIsMatched == 'YES'">Covered</option>
+									<option value="NOT_COVERED">Not Covered</option>
+									<option value="INVALID" :selected="uiState.manualCommercialIsMatched == 'NO'">Invalid</option>
+									<option value="UNKNOWN">Unknown</option>
+								</select>
+							</td>
+						</tr>
+					</tbody>
+				</table>
+
+				@if($cpc->mcd_number)
+				<h5 class="mt-2 font-weight-bold">Medicaid Information Provided:</h5>
+				<table class="table table-bordered table-striped table-sm">
+					<tbody>
+						<tr>
+							<td>Medicaid Number</td>
+							<td>{{$cpc->mcd_number ?? '-'}}</td>
+						</tr>
+						<tr>
+							<td>Medicaid State</td>
+							<td>{{$cpc->mcd_payer_name ?? '-'}}</td>
+						</tr>
+						<tr>
+							<td>Was Medicaid Record Found?</td>
+							<td>{{$cpc->auto_medicaid_is_match_found ? 'Yes' : 'No'}}</td>
+						</tr>
+					</tbody>
+				</table>
+				@endif
+
+				@if($cpc->mcr_number)
+				<h5 class="mt-2 font-weight-bold">Medicare Information Provided:</h5>
+				<table class="table table-bordered table-striped table-sm">
+					<thead>
+						<tr>
+							<th></th>
+							<th>Automatic</th>
+							<th>Override</th>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>Record Found?</td>
+							<td>{{$cpc->auto_medicare_is_match_found ? 'YES' : 'NO'}}</td>
+							<td>
+								<div class="form-group mb-0">
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsMatched" value="YES" @click="onInputChange">Yes</label>
+									</div>
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsMatched" value="NO" @click="onInputChange">No</label>
+									</div>
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<td>Part B Active?</td>
+							<td>{{$cpc->auto_medicare_is_partbactive}}</td>
+							<td>
+								<div class="form-group mb-0">
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsPartBActive" @click="onInputChange" value="YES">Yes</label>
+									</div>
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsPartBActive" @click="onInputChange" value="NO">No</label>
+									</div>
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsPartBActive" @click="onInputChange" value="UNKNOWN">Unknown</label>
+									</div>
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<td>Is Part B Primary?</td>
+							<td>{{$cpc->auto_medicare_is_partbprimary}}</td>
+							<td>
+								<div class="form-group mb-0">
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsPartBPrimary" @click="onInputChange" value="YES">Yes</label>
+									</div>
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsPartBPrimary" @click="onInputChange" value="NO">No</label>
+									</div>
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsPartBPrimary" @click="onInputChange" value="UNKNOWN">Unknown</label>
+									</div>
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<td>Is Part C Active?</td>
+							<td>{{$cpc->auto_medicare_is_partcactive}}</td>
+							<td>
+								<div class="alert alert-danger" v-if="(cpc.auto_medicare_is_partcactive == 'YES' && cpc.auto_medicare_is_partbprimary == 'YES') || (uiState.manualMedicareIsPartBPrimary == 'YES' && uiState.manualMedicareIsPartCActive == 'YES')">
+									Oops! Patient Medicare Part B Primary is set to <b>Yes</b>.
+								</div>
+								<div class="form-group mb-0">
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsPartCActive" @click="onInputChange" value="YES">Yes</label>
+									</div>
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsPartCActive" @click="onInputChange" value="NO">No</label>
+									</div>
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsPartCActive" @click="onInputChange" value="UNKNOWN">Unknown</label>
+									</div>
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<td>Inpatient?</td>
+							<td>{{$cpc->auto_medicare_is_inpatient}}</td>
+							<td>
+								<div class="form-group mb-0">
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsInpatient" @click="onInputChange" value="YES">Yes</label>
+									</div>
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsInpatient" @click="onInputChange" value="NO">No</label>
+									</div>
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsInpatient" @click="onInputChange" value="UNKNOWN">Unknown</label>
+									</div>
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<td>Hospice?</td>
+							<td>UNKNOWN</td>
+							<td>
+								<div class="form-group mb-0">
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsHospice" @click="onInputChange" value="YES">Yes</label>
+									</div>
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsHospice" @click="onInputChange" value="NO">No</label>
+									</div>
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsHospice" @click="onInputChange" value="UNKNOWN">Unknown</label>
+									</div>
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<td>Home Health?</td>
+							<td>UNKNOWN</td>
+							<td>
+								<div class="form-group mb-0">
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsHomeHealth" @click="onInputChange" value="YES">Yes</label>
+									</div>
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsHomeHealth" @click="onInputChange" value="NO">No</label>
+									</div>
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsHomeHealth" @click="onInputChange" value="UNKNOWN">Unknown</label>
+									</div>
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<td>MSP?</td>
+							<td>{{$cpc->auto_medicare_is_msp}}</td>
+							<td>
+								<div class="form-group mb-0">
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsMsp" @click="onInputChange" value="YES">Yes</label>
+									</div>
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsMsp" @click="onInputChange" value="NO">No</label>
+									</div>
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsMsp" @click="onInputChange" value="UNKNOWN">Unknown</label>
+									</div>
+								</div>
+							</td>
+						</tr>
+					</tbody>
+				</table>
+				@endif
+
+
+			</div>
+			<div class="row">
+				<div class="form-group col-md-12">
+					<label for="" class="control-label">Memo</label>
+					<textarea name="manualDeterminationCategoryMemo" class="form-control"></textarea>
+				</div>
+			</div>
+
+
+			<div v-if="response" :class="response.success ? 'alert success' : 'alert alert-danger'">
+				@{{ response.message }}
+			</div>
+
+			<div class="form-group text-nowrap mb-0">
+				<button v-if="!processing" class="btn btn-sm btn-primary" type="submit" :disabled="url == '' || disabled === true">Submt</button>
+				<button v-else class="btn btn-sm btn-primary" type="button"><i class="fas fa-circle-notch fa-spin"></i> Processing...</button>
+			</div>
+		</form>
+	</div>
+</div>
+<script>
+	(function() {
+			function init() {
+				new Vue({
+						el: '#manual-determination-form-{{$patient->uid}}',
+						delimiters: ['@{{', '}}'],
+						data: {
+							url: '/api/clientPrimaryCoverage/manualDeterminationForCommercial',
+							uiState: {
+								manualCommercialIsMatched: null,
+								manualDeterminationCategory: null,
+								manualMedicareIsPartBActive: null,
+								manualMedicareIsPartBPrimary: null,
+								manualMedicareIsPartCActive: null,
+								manualMedicareIsInpatient: null,
+								manualMedicareIsHospice: null,
+								manualMedicareIsHomeHealth: null,
+								manualMedicareIsMsp: null,
+
+								manualMedicareIsMatched: null,
+
+							},
+							cpc: <?= json_encode($cpc); ?>,
+							processing: false,
+							response: null,
+							disabled: false
+						},
+						methods: {
+							onInputChange: function(evt) {
+								var input = evt.target;
+								var name = input.name;
+								var nameLowerCase = name.toLowerCase();
+								var value = input.value;
+								this.uiState[name] = value;
+
+								if(/medicare/gi.test(nameLowerCase)){
+									if(value === 'YES') this.uiState.manualMedicareIsMatched = 'YES';
+								}
+
+								if (name === 'manualMedicareIsPartBPrimary') {
+									if (value === 'YES') this.uiState.manualMedicareIsPartBActive = 'YES';
+								}
+								if (name === 'manualMedicareIsPartCActive') {
+									if (value === 'YES') this.uiState.manualMedicareIsPartBActive = 'NO';
+								}
+								if (name === 'manualDeterminationCategory') {
+									if (value === 'INVALID' || value === 'UNKNOWN') {
+										this.setUiStateDefaultValue('NO');
+										return;
+									}
+								}
+
+								if (this.uiState.manualMedicareIsMatched === 'NO') {
+									this.setUiStateDefaultValue('NO', 'medicare');
+									return;
+								}
+
+								this.refreshUi();
+							},
+							setUiStateDefaultValue: function(value, type) {
+								var self = this;
+								for (var fieldName in self.uiState) {
+									if (type) {
+										var fieldNameLowerCase = fieldName.toLowerCase();
+										var typeRegex = RegExp(type, 'g');
+										var isMatchFound = typeRegex.test(fieldNameLowerCase);
+										if(isMatchFound){
+											self.uiState[fieldName] = value;
+										}
+										}
+										else {
+											self.uiState[fieldName] = value;
+										}
+									}
+									self.refreshUi();
+								},
+								submitForm: function(evt) {
+										var self = this;
+										if (self.processing) return;
+										var form = evt.target;
+										var data = $(form).serializeArray();
+										var url = self.url;
+										if (!url) {
+											self.response = {
+												success: false,
+												message: 'Invalid url'
+											};
+											return;
+										}
+
+										self.processing = true;
+										$.post(url, data, function(response) {
+											self.processing = false;
+											if (response.success) {
+												closeStagPopup();
+												fastReload();
+											} else {
+												self.response = response;
+											}
+										}, 'json');
+									},
+									refreshUi: function() {
+										var self = this;
+										$("input[type=radio]").prop('checked', false);
+										for (var fieldName in self.uiState) {
+											var value = self.uiState[fieldName];
+											if (value) {
+												$("input[name=" + fieldName + "][type=radio][value=" + value + "]").prop('checked', true);
+											}
+										}
+										self.disabled = (self.cpc.auto_medicare_is_partcactive == 'YES' && self.cpc.auto_medicare_is_partbprimary == 'YES') || (self.uiState.manualMedicareIsPartBPrimary == 'YES' && self.uiState.manualMedicareIsPartCActive == 'YES');
+									},
+							},
+							mounted: function() {
+								if (this.cpc.auto_medicare_is_partbprimary == 'YES') {
+									this.uiState.manualMedicareIsPartBPrimary = 'YES';
+									this.uiState.manualMedicareIsPartCActive = 'NO';
+									this.uiState.manualMedicareIsPartBActive = 'YES';
+								};
+								this.uiState.manualMedicareIsMatched = this.cpc.auto_medicare_is_partbactive;
+								this.uiState.manualCommercialIsMatched = this.cpc.auto_commercial_is_match_found ? 'YES' : 'NO';
+								if (this.cpc.auto_commercial_is_match_found === 'NO') {
+									this.uiState.manualDeterminationCategory = 'INVALID';
+								}
+								this.refreshUi();
+							}
+						});
+				}
+				addMCInitializer('manual-determination-form-{{$patient->uid}}', init, '#manual-determination-form-{{$patient->uid}}')
+			}).call(window);
+</script>

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

@@ -0,0 +1,155 @@
+<div id="manual-determination-form-{{$patient->uid}}">
+	@php
+	$cpc = $patient->latestClientPrimaryCoverage;
+	@endphp
+	<div class="p-3">
+		<form @submit.prevent="submitForm" method="post" class="mcp-theme-1">
+			<input type="hidden" name="clientPrimaryCoverageUid" value="{{$cpc->uid}}" class="form-control input-sm" />
+			<div class="row">
+				<div class="form-group col-md-12">
+					<p class="mb-1">How did you manually check coverage?</p>
+					<div class="form-check form-check-inline">
+						<label class="form-check-label"><input class="form-check-input" type="radio" v-model="uiState.manualDeterminationStrategy" name="manualDeterminationStrategy" value="REVIEWED_ELECTRONIC" required>Reviewed Electronically</label>
+					</div>
+					<div class="form-check form-check-inline">
+						<label class="form-check-label"><input class="form-check-input" type="radio" v-model="uiState.manualDeterminationStrategy" name="manualDeterminationStrategy" value="CALLED_PAYER" required>Called Payer</label>
+					</div>
+				</div>
+			</div>
+			<div class="table-responsive">
+				<table class="table table-sm table-bordered table-striped">
+					<thead>
+						<tr>
+							<th></th>
+							<th>Automatic</th>
+							<th>Override</th>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>Record Found?</td>
+							<td>{{$cpc->auto_medicaid_is_match_found ? 'YES' : 'NO'}}</td>
+							<td>
+								<div class="form-group">
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicaidIsMatched" value="YES" :checked="uiState.manualMedicaidIsMatched === 'YES'" @change="inputChange">Yes</label>
+									</div>
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicaidIsMatched" value="NO" :checked="uiState.manualMedicaidIsMatched === 'NO'" @change="inputChange">No</label>
+									</div>
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<td>Coverage Status?</td>
+							<td>UNKNOWN</td>
+							<td>
+								<select name="manualDeterminationCategory" class="form-control input-sm" @change="inputChange">
+									<option value="">--select--</option>
+									<option value="COVERED" :selected="uiState.manualMedicaidIsMatched == 'YES'">Covered</option>
+									<option value="NOT_COVERED">Not Covered</option>
+									<option value="INVALID" :selected="uiState.manualMedicaidIsMatched == 'NO'">Invalid</option>
+									<option value="UNKNOWN">Unknown</option>
+								</select>
+							</td>
+						</tr>
+					</tbody>
+				</table>
+			</div>
+			<div class="row">
+				<div class="form-group col-md-12">
+					<label for="" class="control-label">Memo</label>
+					<textarea name="manualDeterminationCategoryMemo" class="form-control"></textarea>
+				</div>
+			</div>
+
+
+			<div v-if="response" :class="response.success ? 'alert success' : 'alert alert-danger'">
+				@{{ response.message }}
+			</div>
+
+			<div class="form-group text-nowrap mb-0">
+				<button v-if="!processing" class="btn btn-sm btn-primary" type="submit" :disabled="url == ''">Submt</button>
+				<button v-else class="btn btn-sm btn-primary" type="button"><i class="fas fa-circle-notch fa-spin"></i> Processing...</button>
+			</div>
+		</form>
+	</div>
+</div>
+
+<script>
+	(function() {
+		function init() {
+			new Vue({
+				el: '#manual-determination-form-{{$patient->uid}}',
+				delimiters: ['@{{', '}}'],
+				data: {
+					url: '/api/clientPrimaryCoverage/manualDeterminationForMedicaid',
+					uiState: {},
+					cpc: <?= json_encode($cpc); ?>,
+					processing: false,
+					response: null
+				},
+				methods: {
+					inputChange: function(evt){
+						var self = this;
+						var input = evt.target;
+						var name = input.name;
+						var value = input.value;
+						self.uiState[name] = value;
+						if(name == 'manualDeterminationCategory') {
+							if(self.uiState.manualDeterminationCategory === 'COVERED'){
+								self.uiState.manualMedicaidIsMatched = "YES";
+							}
+							if(self.uiState.manualDeterminationCategory === 'INVALID'){
+								self.uiState.manualMedicaidIsMatched = "NO";
+							}
+						}
+
+						if(name === 'manualMedicaidIsMatched'){
+							if(value === 'YES') self.uiState.manualDeterminationCategory = 'COVERED';
+							if(value === 'NO') self.uiState.manualDeterminationCategory = 'INVALID';
+						}
+						self.$forceUpdate();
+
+					},
+					submitForm: function(evt) {
+						var self = this;
+						if (self.processing) return;
+						var form = evt.target;
+						var data = $(form).serializeArray();
+						var url = self.url;
+						if (!url) {
+							self.response = {
+								success: false,
+								message: 'Invalid url'
+							};
+							return;
+						}
+
+						self.processing = true;
+						$.post(url, data, function(response) {
+							self.processing = false;
+							if (response.success) {
+								closeStagPopup();
+								fastReload();
+							} else {
+								self.response = response;
+							}
+						}, 'json');
+					},
+					setDefaultData: function(){
+						var self = this;
+						self.uiState.manualMedicaidIsMatched = this.cpc.auto_medicaid_is_match_found ? 'YES' : 'NO';
+						self.$forceUpdate();
+						console.log({uiState: self.uiState});
+
+					},
+				},
+				mounted: function() {
+					this.setDefaultData();
+				}
+			});
+		}
+		addMCInitializer('manual-determination-form-{{$patient->uid}}', init, '#manual-determination-form-{{$patient->uid}}')
+	}).call(window);
+</script>

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

@@ -0,0 +1,336 @@
+<div id="manual-determination-form-{{$patient->uid}}">
+	@php
+	$cpc = $patient->latestClientPrimaryCoverage;
+	@endphp
+	<div class="p-3">
+		<form @submit.prevent="submitForm" method="post" class="mcp-theme-1">
+			<input type="hidden" name="clientPrimaryCoverageUid" value="{{$cpc->uid}}" class="form-control input-sm" />
+			<div class="row">
+				<div class="form-group col-md-12">
+					<p class="mb-1">How did you manually check coverage?</p>
+					<div class="form-check form-check-inline">
+						<label class="form-check-label"><input class="form-check-input" type="radio" v-model="uiState.manualDeterminationStrategy" name="manualDeterminationStrategy" value="REVIEWED_ELECTRONIC" required>Reviewed Electronically</label>
+					</div>
+					<div class="form-check form-check-inline">
+						<label class="form-check-label"><input class="form-check-input" type="radio" v-model="uiState.manualDeterminationStrategy" name="manualDeterminationStrategy" value="CALLED_PAYER" required>Called Payer</label>
+					</div>
+				</div>
+			</div>
+			<div class="table-responsive">
+				<table class="table table-sm table-bordered table-striped">
+					<thead>
+						<tr>
+							<th></th>
+							<th>Automatic</th>
+							<th>Override</th>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>Record Found?</td>
+							<td>{{$cpc->auto_medicare_is_match_found ? 'YES' : 'NO'}}</td>
+							<td>
+								<div class="form-group mb-0">
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio"  name="manualMedicareIsMatched" value="YES" @click="onInputChange">Yes</label>
+									</div>
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsMatched" value="NO" @click="onInputChange">No</label>
+									</div>
+								</div>
+							</td>
+						</tr>
+
+
+
+						<tr>
+							<td>Part B Active?</td>
+							<td>{{$cpc->auto_medicare_is_partbactive}}</td>
+							<td>
+								<div class="form-group mb-0">
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsPartBActive" @click="onInputChange" value="YES">Yes</label>
+									</div>
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsPartBActive" @click="onInputChange" value="NO">No</label>
+									</div>
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsPartBActive" @click="onInputChange" value="UNKNOWN">Unknown</label>
+									</div>
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<td>Is Part B Primary?</td>
+							<td>{{$cpc->auto_medicare_is_partbprimary}}</td>
+							<td>
+							<input type="hidden" name="manualDeterminationCategory" />
+
+								<div class="form-group mb-0">
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsPartBPrimary" @click="onInputChange" value="YES">Yes</label>
+									</div>
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsPartBPrimary" @click="onInputChange" value="NO">No</label>
+									</div>
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsPartBPrimary" @click="onInputChange" value="UNKNOWN">Unknown</label>
+									</div>
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<td>Is Part C Active?</td>
+							<td>{{$cpc->auto_medicare_is_partcactive}}</td>
+							<td>
+								<div class="alert alert-danger" v-if="(cpc.auto_medicare_is_partcactive == 'YES' && cpc.auto_medicare_is_partbprimary == 'YES') || (uiState.manualMedicareIsPartBPrimary == 'YES' && uiState.manualMedicareIsPartCActive == 'YES')">
+									Oops! Patient Medicare Part B Primary is set to <b>Yes</b>.
+								</div>
+								<div class="form-group mb-0">
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsPartCActive" @click="onInputChange" value="YES">Yes</label>
+									</div>
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsPartCActive" @click="onInputChange" value="NO">No</label>
+									</div>
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsPartCActive" @click="onInputChange" value="UNKNOWN">Unknown</label>
+									</div>
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<td>Inpatient?</td>
+							<td>{{$cpc->auto_medicare_is_inpatient}}</td>
+							<td>
+								<div class="form-group mb-0">
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsInpatient" @click="onInputChange" value="YES">Yes</label>
+									</div>
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsInpatient" @click="onInputChange" value="NO">No</label>
+									</div>
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsInpatient" @click="onInputChange" value="UNKNOWN">Unknown</label>
+									</div>
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<td>Hospice?</td>
+							<td>UNKNOWN</td>
+							<td>
+								<div class="form-group mb-0">
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsHospice" @click="onInputChange" value="YES">Yes</label>
+									</div>
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsHospice" @click="onInputChange" value="NO">No</label>
+									</div>
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsHospice" @click="onInputChange" value="UNKNOWN">Unknown</label>
+									</div>
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<td>Home Health?</td>
+							<td>UNKNOWN</td>
+							<td>
+								<div class="form-group mb-0">
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsHomeHealth" @click="onInputChange" value="YES">Yes</label>
+									</div>
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsHomeHealth" @click="onInputChange" value="NO">No</label>
+									</div>
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsHomeHealth" @click="onInputChange" value="UNKNOWN">Unknown</label>
+									</div>
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<td>MSP?</td>
+							<td>{{$cpc->auto_medicare_is_msp}}</td>
+							<td>
+								<div class="form-group mb-0">
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsMsp" @click="onInputChange" value="YES">Yes</label>
+									</div>
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsMsp" @click="onInputChange" value="NO">No</label>
+									</div>
+									<div class="form-check form-check-inline">
+										<label class="form-check-label"><input class="form-check-input" type="radio" name="manualMedicareIsMsp" @click="onInputChange" value="UNKNOWN">Unknown</label>
+									</div>
+								</div>
+							</td>
+						</tr>
+					</tbody>
+				</table>
+			</div>
+			<div class="row">
+				<div class="form-group col-md-12">
+					<label for="" class="control-label">Memo</label>
+					<textarea name="manualDeterminationCategoryMemo" class="form-control"></textarea>
+				</div>
+			</div>
+
+
+			<div v-if="response" :class="response.success ? 'alert success' : 'alert alert-danger'">
+				@{{ response.message }}
+			</div>
+
+			<div class="form-group text-nowrap mb-0">
+				<button v-if="!processing" class="btn btn-sm btn-primary" type="submit" :disabled="url == '' || disabled === true">Submt</button>
+				<button v-else class="btn btn-sm btn-primary" type="button"><i class="fas fa-circle-notch fa-spin"></i> Processing...</button>
+			</div>
+		</form>
+	</div>
+</div>
+<script>
+	(function() {
+		function init() {
+			new Vue({
+				el: '#manual-determination-form-{{$patient->uid}}',
+				delimiters: ['@{{', '}}'],
+				data: {
+					url: '/api/clientPrimaryCoverage/manualDeterminationForMedicare',
+					uiState: {
+						manualMedicareIsMatched: null,
+						manualMedicareIsPartBActive: null,
+						manualMedicareIsPartBPrimary: null,
+						manualMedicareIsPartCActive: null,
+						manualMedicareIsInpatient: null,
+						manualMedicareIsHospice: null,
+						manualMedicareIsHomeHealth: null,
+						manualMedicareIsMsp: null,
+
+					},
+					cpc: <?= json_encode($cpc); ?>,
+					processing: false,
+					response: null,
+					disabled: false
+				},
+				methods: {
+					onInputChange: function(evt){
+						var input = evt.target;
+						var name = input.name;
+						var value = input.value;
+						this.uiState[name] = value;
+						if(value === 'YES') this.uiState.manualMedicareIsMatched = 'YES';
+
+						if(name === 'manualMedicareIsMatched'){
+							if(value === 'NO') this.setUiStateDefaultValue(value);
+						}
+
+						if(name === 'manualMedicareIsPartBActive'){
+							if(value === 'YES') {
+								this.uiState.manualMedicareIsMatched = 'YES';
+							}
+							if(value === 'NO') this.uiState.manualMedicareIsPartBPrimary = 'NO';
+							if(value === 'UNKNOWN') this.uiState.manualMedicareIsPartBPrimary = 'UNKNOWN';
+						}
+						if(name === 'manualMedicareIsPartBPrimary'){
+							if(value === 'YES') {
+								this.uiState.manualMedicareIsMatched = 'YES';
+								this.uiState.manualMedicareIsPartBActive = 'YES';
+							}
+						}
+
+
+						if(name === 'manualMedicareIsPartCActive'){
+							if(value === 'YES') this.uiState.manualMedicareIsPartBActive = 'NO';
+						}
+
+						if(this.uiState.manualMedicareIsMatched === 'NO') {
+							this.setUiStateDefaultValue('NO');
+							return;
+						}
+
+						this.refreshUi();
+					},
+					setUiStateDefaultValue: function(value){
+						var self = this;
+						for(var fieldName in self.uiState){
+							self.uiState[fieldName] = value;
+						}
+						self.refreshUi();
+					},
+					submitForm: function(evt) {
+						var self = this;
+						if (self.processing) return;
+						var form = evt.target;
+						var data = $(form).serializeArray();
+						var url = self.url;
+						if (!url) {
+							self.response = {
+								success: false,
+								message: 'Invalid url'
+							};
+							return;
+						}
+
+						self.processing = true;
+						$.post(url, data, function(response) {
+							self.processing = false;
+							if (response.success) {
+								closeStagPopup();
+								fastReload();
+							} else {
+								self.response = response;
+							}
+						}, 'json');
+					},
+					setDefaultData: function(){
+						this.uiState.manualMedicareIsMatched = this.cpc.auto_medicare_is_match_found ? 'YES':'NO';
+						this.uiState.manualMedicareIsPartBActive = this.cpc.auto_medicare_is_partbprimary;
+						this.refreshUi();
+					},
+					refreshUi: function(){
+						var self = this;
+						$("input[type=radio]").prop('checked', false);
+						for(var fieldName in self.uiState){
+							var value = self.uiState[fieldName];
+							if(value){
+								$("input[name="+ fieldName +"][type=radio][value=" + value + "]").prop('checked', true);
+							}
+						}
+
+						self.disabled = (self.cpc.auto_medicare_is_partcactive == 'YES' && self.cpc.auto_medicare_is_partbprimary == 'YES') || (self.uiState.manualMedicareIsPartBPrimary == 'YES' && self.uiState.manualMedicareIsPartCActive == 'YES');
+						self.setDefaultValueForManualDeterminationCategory();
+
+					},
+					setDefaultValueForManualDeterminationCategory: function(){
+						var self = this;
+						var input = $('input[name=manualDeterminationCategory]');
+						if(self.uiState.manualMedicareIsMatched === 'NO'){
+							input.val('INVALID');
+							return;
+						}
+						if(self.uiState.manualMedicareIsPartBPrimary === 'YES'){
+							input.val('COVERED');
+							return;
+						}
+						if(self.uiState.manualMedicareIsPartBPrimary === 'NO'){
+							input.val('NOT_COVERED');
+							return;
+						}
+						input.val('UNKNOWN');
+					},
+				},
+				mounted: function() {
+					this.setDefaultData();
+					this.uiState.manualMedicareIsPartBPrimary = this.cpc.auto_medicare_is_partbprimary;
+					if (this.cpc.auto_medicare_is_partbprimary == 'YES') {
+						this.uiState.manualMedicareIsPartCActive = 'NO';
+					};
+					this.refreshUi();
+
+				}
+			});
+		}
+		addMCInitializer('manual-determination-form-{{$patient->uid}}', init, '#manual-determination-form-{{$patient->uid}}')
+	}).call(window);
+</script>

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

@@ -0,0 +1,111 @@
+<div id="primaryCoverageManualDeterminationView">
+	<div class="table-responsive">
+	<table class="table table-sm table-bordered table-striped">
+		<thead>
+			<tr>
+				<th></th>
+				<th>Automatic</th>
+				<th>Override</th>
+			</tr>
+		</thead>
+		<tbody>
+			<tr>
+				<td>Record Found?</td>
+				<td>{{$cpc->auto_commercial_is_match_found ? 'YES' : 'NO'}}</td>
+				<td>
+					<div class="form-group">
+						<p class="mb-1 text-secondary">Manual Determination Category</p>
+						<span>{{$cpc->manual_determination_category ?? '-'}}</span>
+					</div>
+				</td>
+			</tr>
+
+			<tr>
+				<td>Part B Active?</td>
+				<td>{{$cpc->auto_medicare_is_partbactive}}</td>
+				<td>
+					<div class="form-group mb-0">
+						<p class="mb-1 text-secondary">Is Part B Active?</p>
+						<span>{{$cpc->manual_medicare_is_partbactive ?? '-'}}</span>
+					</div>
+				</td>
+			</tr>
+			<tr>
+				<td>Part B Primary?</td>
+				<td>{{$cpc->auto_medicare_is_partbprimary}}</td>
+				<td>
+					<div class="form-group">
+						<p class="mb-1 text-secondary">Manual Determination Category</p>
+						<span>{{$cpc->manual_determination_category  ?? '-'}}</span>
+					</div>
+					<div class="form-group mb-0">
+						<p class="mb-1 text-secondary">Is Part B Primary?</p>
+						<span>{{$cpc->manual_medicare_is_partbprimary ?? '-'}}</span>
+					</div>
+				</td>
+			</tr>
+			<tr>
+				<td>Part C Active?</td>
+				<td>{{$cpc->auto_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')">
+							Oops! Patient Medicare Part B Primary is set to <b>Yes</b>.
+						</div>
+						<p class="mb-1 text-secondary">Is Part C Active?</p>
+						<span>{{$cpc->manual_medicare_is_partcactive ?? '-'}}</span>
+					</div>
+				</td>
+			</tr>
+			<tr>
+				<td>Inpatient?</td>
+				<td>{{$cpc->auto_medicare_is_inpatient}}</td>
+				<td>
+					<div class="form-group mb-0">
+						<p class="mb-1 text-secondary">Inpatient?</p>
+						<span>{{$cpc->manual_medicare_is_inpatient ?? '-'}}</span>
+					</div>
+				</td>
+			</tr>
+			<tr>
+				<td>Hospice?</td>
+				<td>UNKNOWN</td>
+				<td>
+					<div class="form-group mb-0">
+						<p class="mb-1 text-secondary">Hospice?</p>
+						<span>UNKNOWN</span>
+					</div>
+				</td>
+			</tr>
+			<tr>
+				<td>Home Health?</td>
+				<td>UNKNOWN</td>
+				<td>
+					<div class="form-group mb-0">
+						<p class="mb-1 text-secondary">Home Health?</p>
+						<span>UNKNOWN</span>
+					</div>
+				</td>
+			</tr>
+			<tr>
+				<td>MSP?</td>
+				<td>{{$cpc->auto_medicare_is_msp}}</td>
+				<td>
+					<div class="form-group mb-0">
+						<p class="mb-1 text-secondary">MSP?</p>
+						<span>{{$cpc->manual_medicare_is_msp ?? '-'}}</span>
+					</div>
+				</td>
+			</tr>
+		</tbody>
+	</table>
+</div>
+</div>
+<script type="text/javascript">
+	var primaryCoverageManualDeterminationView = new Vue({
+		el: '#primaryCoverageManualDeterminationView',
+		data: {
+			cpc: <?= json_encode($cpc); ?>,
+		}
+	})
+</script>

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

@@ -0,0 +1,43 @@
+<div id="primaryCoverageManualDeterminationView">
+	<div class="table-responsive">
+	<table class="table table-sm table-bordered table-striped">
+		<thead>
+			<tr>
+				<th></th>
+				<th>Automatic</th>
+				<th>Override</th>
+			</tr>
+		</thead>
+		<tbody>
+			<tr>
+				<td>Record Found?</td>
+				<td>{{$cpc->auto_medicaid_is_match_found ? 'YES' : 'NO'}}</td>
+				<td>
+					<div class="form-group">
+						<p class="mb-1 text-secondary">Is Matched?</p>
+						<span>{{$cpc->manual_medicaid_is_matched ?? '-'}}</span>
+					</div>
+				</td>
+			</tr>
+			<tr>
+				<td>Coverage Status?</td>
+				<td>UNKNOWN</td>
+				<td>
+					<div class="form-group">
+						<p class="mb-1 text-secondary">Manual Determination Category</p>
+						<span>{{$cpc->manual_determination_category ?? '-'}}</span>
+					</div>
+				</td>
+			</tr>
+		</tbody>
+	</table>
+</div>
+</div>
+<script type="text/javascript">
+	var primaryCoverageManualDeterminationView = new Vue({
+		el: '#primaryCoverageManualDeterminationView',
+		data: {
+			cpc: <?= json_encode($cpc); ?>,
+		}
+	})
+</script>

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

@@ -0,0 +1,117 @@
+<div id="primaryCoverageManualDeterminationView">
+	<div class="table-responsive">
+	<table class="table table-sm table-bordered table-striped">
+		<thead>
+			<tr>
+				<th></th>
+				<th>Automatic</th>
+				<th>Override</th>
+			</tr>
+		</thead>
+		<tbody>
+			<tr>
+				<td>Plan Type</td>
+				<td colspan="2">{{$cpc->plan_type}}</td>
+			</tr>
+			<tr>
+				<td>Record Found?</td>
+				<td>{{$cpc->auto_medicare_is_match_found ? 'YES' : 'NO'}}</td>
+				<td>
+					<div class="form-group">
+						<p class="mb-1 text-secondary">Is Matched?</p>
+						<span>{{$cpc->manual_medicare_is_matched ?? '-'}}</span>
+					</div>
+				</td>
+			</tr>
+
+
+			<tr>
+				<td>Part B Active?</td>
+				<td>{{$cpc->auto_medicare_is_partbactive}}</td>
+				<td>
+					<div class="form-group mb-0">
+						<p class="mb-1 text-secondary">Is Part B Active?</p>
+						<span>{{$cpc->manual_medicare_is_partbactive ?? '-'}}</span>
+					</div>
+				</td>
+			</tr>
+			<tr>
+				<td>Part B Primary?</td>
+				<td>{{$cpc->auto_medicare_is_partbprimary}}</td>
+				<td>
+					<div class="form-group">
+						<p class="mb-1 text-secondary">Manual Determination Category</p>
+						<span>{{$cpc->manual_determination_category  ?? '-'}}</span>
+					</div>
+					<div class="form-group mb-0">
+						<p class="mb-1 text-secondary">Is Part B Primary?</p>
+						<span>{{$cpc->manual_medicare_is_partbprimary ?? '-'}}</span>
+					</div>
+				</td>
+			</tr>
+			<tr>
+				<td>Part C Active?</td>
+				<td>{{$cpc->auto_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'">
+							Oops! Patient Medicare Part B Primary is set to <b>Yes</b>.
+						</div>
+						<p class="mb-1 text-secondary">Is Part C Active?</p>
+						<span>{{$cpc->manual_medicare_is_partcactive ?? '-'}}</span>
+					</div>
+				</td>
+			</tr>
+			<tr>
+				<td>Inpatient?</td>
+				<td>{{$cpc->auto_medicare_is_inpatient}}</td>
+				<td>
+					<div class="form-group mb-0">
+						<p class="mb-1 text-secondary">Inpatient?</p>
+						<span>{{$cpc->manual_medicare_is_inpatient ?? '-'}}</span>
+					</div>
+				</td>
+			</tr>
+			<tr>
+				<td>Hospice?</td>
+				<td>UNKNOWN</td>
+				<td>
+					<div class="form-group mb-0">
+						<p class="mb-1 text-secondary">Hospice?</p>
+						<span>{{ $cpc->is_hospice }}</span>
+					</div>
+				</td>
+			</tr>
+
+			<tr>
+				<td>Home Health?</td>
+				<td>UNKNOWN</td>
+				<td>
+					<div class="form-group mb-0">
+						<p class="mb-1 text-secondary">Home Health?</p>
+						<span>UNKNOWN</span>
+					</div>
+				</td>
+			</tr>
+			<tr>
+				<td>MSP?</td>
+				<td>{{$cpc->auto_medicare_is_msp}}</td>
+				<td>
+					<div class="form-group mb-0">
+						<p class="mb-1 text-secondary">MSP?</p>
+						<span>{{$cpc->manual_medicare_is_msp ?? '-'}}</span>
+					</div>
+				</td>
+			</tr>
+		</tbody>
+	</table>
+</div>
+</div>
+<script type="text/javascript">
+	var primaryCoverageManualDeterminationView = new Vue({
+		el: '#primaryCoverageManualDeterminationView',
+		data: {
+			cpc: <?= json_encode($cpc); ?>,
+		}
+	})
+</script>

+ 202 - 0
resources/views/app/patient/primary-coverage-new-commercial.blade.php

@@ -0,0 +1,202 @@
+<div moe relative wide>
+	<a href="" start show>
+		+ Commercial
+	</a>
+	<form id="commercialComponent" url="/api/clientPrimaryCoverage/createNewCoverageForCommercial" right class="mcp-theme-1">
+		<input type="hidden" name="clientUid" value="{{$patient->uid}}" class="form-control input-sm" />
+
+		<div class="row">
+			<div class="form-group col-md-12">
+				<label for="" class="control-label">Commercial Payer</label>
+				<select name="commercialPayerUid" id="" class="form-control input-sm">
+					<option value="">--</option>
+				</select>
+			</div>
+			<div class="form-group col-md-6">
+				<label class="control-label">Patient Member Identifier</label>
+				<input type="text" name="commercialMemberIdentifier"  class="form-control input-sm">
+			</div>
+			<div class="form-group col-md-6">
+				<label class="control-label">Patient Group Number</label>
+				<input type="text" name="commercialGroupNumber"  class="form-control input-sm">
+			</div>
+			<div class="form-group col-md-6">
+				<label class="control-label">Patient First Name</label>
+				<input type="text" name="patientNameFirst" value="{{$patient->name_first}}" class="form-control input-sm">
+			</div>
+			<div class="form-group col-md-6">
+				<label class="control-label">Patient Middle Name / MI</label>
+				<input type="text" name="patientNameMiddle" value="{{$patient->name_middle}}" class="form-control input-sm">
+			</div>
+			<div class="form-group col-md-6">
+				<label class="control-label">Patient Last Name</label>
+				<input type="text" name="patientNameLast" value="{{$patient->name_last}}" class="form-control input-sm">
+			</div>
+			<div class="form-group col-md-6">
+				<label class="control-label">Patient Suffix</label>
+				<input type="text" name="patientNameSuffix" value="{{$patient->name_suffix}}" class="form-control input-sm">
+			</div>
+			<div class="form-group col-md-6">
+				<label class="control-label">Patient Dob</label>
+				<input type="date" name="patientDob" value="{{$patient->dob}}" class="form-control input-sm">
+			</div>
+			<div class="form-group col-md-6">
+				<label class="control-label">Patient Sex</label>
+				<select class="form-control input-sm" name="patientSex">
+					<option value="">--</option>
+					<option value="M">Male</option>
+					<option value="F">Female</option>
+					<option value="UNKNOWN">Unknown</option>
+				</select>
+			</div>
+			<div class="form-group col-md-6">
+				<label class="control-label">Date Of Service</label>
+				<input type="date" name="dateOfService" value="{{date('Y-m-d')}}" class="form-control input-sm">
+			</div>
+			<div class="form-group col-md-12">
+				<p class="mb-1">Is Patient The Subscriber?</p>
+				<label class="mr-2">
+					<input type="radio" name="isPatientSubscriber" v-model="isPatientSubscriber" value="1"> Yes
+				</label>
+				<label class="">
+					<input type="radio" name="isPatientSubscriber" v-model="isPatientSubscriber" value="0"> No
+				</label>
+			</div>
+		</div>
+
+		<div v-if="isPatientSubscriber == 0" class="row">
+			<div class="form-group col-md-6">
+				<label class="control-label">Patient Relationship To Subscriber</label>
+				<select name="patientRelationshipToSubscriber" class="form-control input-sm">
+					<option value="">--</option>
+					<option value="SPOUSE">Spouse</option>
+					<option value="CHILD">Child</option>
+					<option value="EMPLOYEE">Employee</option>
+					<option value="ORGAN_DONOR">Organ Donor</option>
+					<option value="CADAVER_DONOR">Cadaver Donor</option>
+					<option value="LIFE_PARTNER">Life Partner</option>
+					<option value="OTHER_RELATIONSHIP">Other Relationship</option>
+					<option value="UNKNOWN">Unknown</option>
+				</select>
+			</div>
+			<div class="form-group col-md-6">
+				<label class="control-label">Subscriber First Name</label>
+				<input type="text" name="subscriberNameFirst" value="{{$patient->name_first}}" class="form-control input-sm">
+			</div>
+			<div class="form-group col-md-6">
+				<label class="control-label">Subscriber Middle Name / MI</label>
+				<input type="text" name="subscriberNameMiddle" value="{{$patient->name_middle}}" class="form-control input-sm">
+			</div>
+			<div class="form-group col-md-6">
+				<label class="control-label">Subscriber Last Name</label>
+				<input type="text" name="subscriberNameLast" value="{{$patient->name_last}}" class="form-control input-sm">
+			</div>
+			<div class="form-group col-md-6">
+				<label class="control-label">Subscriber Suffix</label>
+				<input type="text" name="subscriberNameSuffix" value="{{$patient->name_suffix}}" class="form-control input-sm">
+			</div>
+			<div class="form-group col-md-6">
+				<label class="control-label">Subscriber Sex</label>
+				<select class="form-control input-sm" name="subscriberSex">
+					<option value="">--</option>
+					<option value="MALE">Male</option>
+					<option value="FEMALE">Female</option>
+					<option value="UNKNOWN">Unknown</option>
+				</select>
+			</div>
+			<div class="form-group col-md-6">
+				<label class="control-label">Subscriber Dob</label>
+				<input type="date" name="subscriberDob" value="{{$patient->dob}}" class="form-control input-sm">
+			</div>
+		</div>
+
+		<div class="row">
+			<div class="form-group col-md-6">
+				<label class="control-label">Medicare Number</label>
+				<input type="text" name="mcrNumber" class="form-control input-sm">
+			</div>
+
+			<div class="form-group col-md-6">
+				<label class="control-label">Medicaid Number</label>
+				<input type="text" name="mcdNumber"  class="form-control input-sm">
+			</div>
+
+			<div class="form-group col-md-12">
+				<label for="" class="control-label">Medicaid Payer</label>
+				<select name="mcdPayerName" id="" class="form-control input-sm">
+					<option value="">--</option>
+					<option>MEDICAID ALABAMA</option>
+					<option>MEDICAID ALASKA</option>
+					<option>MEDICAID ARIZONA</option>
+					<option>MEDICAID ARKANSAS</option>
+					<option>MEDICAID CALIFORNIA MEDI-CAL</option>
+					<option>MEDICAID COLORADO</option>
+					<option>MEDICAID CONNECTICUT</option>
+					<option>MEDICAID DELAWARE</option>
+					<option>MEDICAID DISTRICT OF COLUMBIA</option>
+					<option>MEDICAID FLORIDA</option>
+					<option>MEDICAID GEORGIA</option>
+					<option>MEDICAID HAWAII</option>
+					<option>MEDICAID IDAHO</option>
+					<option>MEDICAID ILLINOIS</option>
+					<option>MEDICAID INDIANA</option>
+					<option>MEDICAID IOWA</option>
+					<option>MEDICAID KANSAS</option>
+					<option>MEDICAID KENTUCKY</option>
+					<option>MEDICAID LOUISIANA</option>
+					<option>MEDICAID MAINE</option>
+					<option>MEDICAID MARYLAND</option>
+					<option>MEDICAID MARYLAND DHMH</option>
+					<option>MEDICAID MASSACHUSETTS</option>
+					<option>MEDICAID MICHIGAN</option>
+					<option>MEDICAID MINNESOTA</option>
+					<option>MEDICAID MISSISSIPPI</option>
+					<option>MEDICAID MISSISSIPPI</option>
+					<option>MEDICAID MISSOURI</option>
+					<option>MEDICAID MONTANA</option>
+					<option>MEDICAID NEBRASKA</option>
+					<option>MEDICAID NEVADA</option>
+					<option>MEDICAID NEW HAMPSHIRE</option>
+					<option>MEDICAID NEW JERSEY</option>
+					<option>MEDICAID NEW MEXICO</option>
+					<option>MEDICAID NEW YORK</option>
+					<option>MEDICAID NEW YORK</option>
+					<option>MEDICAID NORTH CAROLINA</option>
+					<option>MEDICAID NORTH DAKOTA</option>
+					<option>MEDICAID OHIO</option>
+					<option>MEDICAID OKLAHOMA</option>
+					<option>MEDICAID OREGON</option>
+					<option>MEDICAID OREGON (DHS OMAP)</option>
+					<option>MEDICAID PENNSYLVANIA</option>
+					<option>MEDICAID RHODE ISLAND</option>
+					<option>MEDICAID SOUTH CAROLINA</option>
+					<option>MEDICAID SOUTH DAKOTA</option>
+					<option>MEDICAID TENNESSEE</option>
+					<option>MEDICAID TEXAS</option>
+					<option>MEDICAID TEXAS AND TEXAS HEALTH STEPS</option>
+					<option>MEDICAID UTAH</option>
+					<option>MEDICAID VERMONT</option>
+					<option>MEDICAID VIRGINIA</option>
+					<option>MEDICAID WASHINGTON (PROVIDER ONE)</option>
+					<option>MEDICAID WEST VIRGINIA</option>
+					<option>MEDICAID WISCONSIN</option>
+					<option>MEDICAID WYOMING</option>
+				</select>
+			</div>
+		</div>
+
+		<div class="form-group text-nowrap mb-0">
+			<button class="btn btn-sm btn-primary" submit>Submt</button>
+			<button class="btn btn-sm btn-default border" cancel>Close</button>
+		</div>
+	</form>
+</div>
+
+<script type="text/javascript">
+	var commercialComponent = new Vue({
+		el: '#commercialComponent',
+		data: {
+			isPatientSubscriber: 1
+		}
+	})
+</script>

+ 120 - 0
resources/views/app/patient/primary-coverage-new-medicaid.blade.php

@@ -0,0 +1,120 @@
+<div moe relative wide>
+	<a href="" start show>
+		+ Medicaid
+	</a>
+	<form url="/api/clientPrimaryCoverage/createNewCoverageForMedicaid" right class="mcp-theme-1">
+		<input type="hidden" name="clientUid" value="{{$patient->uid}}" class="form-control input-sm" />
+
+		<div class="row">
+			<div class="form-group col-md-6">
+				<label class="control-label">Patient First Name</label>
+				<input type="text" name="patientNameFirst" value="{{$patient->name_first}}" class="form-control input-sm">
+			</div>
+			<div class="form-group col-md-6">
+				<label class="control-label">Patient Middle Name / MI</label>
+				<input type="text" name="patientNameMiddle" value="{{$patient->name_middle}}" class="form-control input-sm">
+			</div>
+			<div class="form-group col-md-6">
+				<label class="control-label">Patient Last Name</label>
+				<input type="text" name="patientNameLast" value="{{$patient->name_last}}" class="form-control input-sm">
+			</div>
+			<div class="form-group col-md-6">
+				<label class="control-label">Patient Suffix</label>
+				<input type="text" name="patientNameSuffix" value="{{$patient->name_suffix}}" class="form-control input-sm">
+			</div>
+			<div class="form-group col-md-6">
+				<label class="control-label">Patient Sex</label>
+				<select class="form-control input-sm" name="patientSex">
+					<option value="">--</option>
+					<option value="M">Male</option>
+					<option value="F">Female</option>
+					<option value="UNKNOWN">Unknown</option>
+				</select>
+			</div>
+			<div class="form-group col-md-6">
+				<label class="control-label">Patient Dob</label>
+				<input type="date" name="patientDob" value="{{$patient->dob}}" class="form-control input-sm">
+			</div>
+
+			<div class="form-group col-md-6">
+				<label for="" class="control-label">Medicaid Payer</label>
+				<select name="mcdPayerName" id="" class="form-control input-sm">
+					<option value="">--</option>
+					<option>MEDICAID ALABAMA</option>
+					<option>MEDICAID ALASKA</option>
+					<option>MEDICAID ARIZONA</option>
+					<option>MEDICAID ARKANSAS</option>
+					<option>MEDICAID CALIFORNIA MEDI-CAL</option>
+					<option>MEDICAID COLORADO</option>
+					<option>MEDICAID CONNECTICUT</option>
+					<option>MEDICAID DELAWARE</option>
+					<option>MEDICAID DISTRICT OF COLUMBIA</option>
+					<option>MEDICAID FLORIDA</option>
+					<option>MEDICAID GEORGIA</option>
+					<option>MEDICAID HAWAII</option>
+					<option>MEDICAID IDAHO</option>
+					<option>MEDICAID ILLINOIS</option>
+					<option>MEDICAID INDIANA</option>
+					<option>MEDICAID IOWA</option>
+					<option>MEDICAID KANSAS</option>
+					<option>MEDICAID KENTUCKY</option>
+					<option>MEDICAID LOUISIANA</option>
+					<option>MEDICAID MAINE</option>
+					<option>MEDICAID MARYLAND</option>
+					<option>MEDICAID MARYLAND DHMH</option>
+					<option>MEDICAID MASSACHUSETTS</option>
+					<option>MEDICAID MICHIGAN</option>
+					<option>MEDICAID MINNESOTA</option>
+					<option>MEDICAID MISSISSIPPI</option>
+					<option>MEDICAID MISSISSIPPI</option>
+					<option>MEDICAID MISSOURI</option>
+					<option>MEDICAID MONTANA</option>
+					<option>MEDICAID NEBRASKA</option>
+					<option>MEDICAID NEVADA</option>
+					<option>MEDICAID NEW HAMPSHIRE</option>
+					<option>MEDICAID NEW JERSEY</option>
+					<option>MEDICAID NEW MEXICO</option>
+					<option>MEDICAID NEW YORK</option>
+					<option>MEDICAID NEW YORK</option>
+					<option>MEDICAID NORTH CAROLINA</option>
+					<option>MEDICAID NORTH DAKOTA</option>
+					<option>MEDICAID OHIO</option>
+					<option>MEDICAID OKLAHOMA</option>
+					<option>MEDICAID OREGON</option>
+					<option>MEDICAID OREGON (DHS OMAP)</option>
+					<option>MEDICAID PENNSYLVANIA</option>
+					<option>MEDICAID RHODE ISLAND</option>
+					<option>MEDICAID SOUTH CAROLINA</option>
+					<option>MEDICAID SOUTH DAKOTA</option>
+					<option>MEDICAID TENNESSEE</option>
+					<option>MEDICAID TEXAS</option>
+					<option>MEDICAID TEXAS AND TEXAS HEALTH STEPS</option>
+					<option>MEDICAID UTAH</option>
+					<option>MEDICAID VERMONT</option>
+					<option>MEDICAID VIRGINIA</option>
+					<option>MEDICAID WASHINGTON (PROVIDER ONE)</option>
+					<option>MEDICAID WEST VIRGINIA</option>
+					<option>MEDICAID WISCONSIN</option>
+					<option>MEDICAID WYOMING</option>
+				</select>
+			</div>
+
+			<div class="form-group col-md-6">
+				<label class="control-label">Medicaid Number</label>
+				<input type="text" name="mcdNumber"  class="form-control input-sm">
+			</div>
+
+			<div class="form-group col-md-6">
+				<label class="control-label">Date Of Service</label>
+				<input type="date" name="dateOfService" value="{{date('Y-m-d')}}" class="form-control input-sm">
+			</div>
+
+		</div>
+
+
+		<div class="form-group text-nowrap mb-0">
+			<button class="btn btn-sm btn-primary" submit>Submt</button>
+			<button class="btn btn-sm btn-default border" cancel>Close</button>
+		</div>
+	</form>
+</div>

+ 45 - 0
resources/views/app/patient/primary-coverage-new-medicare.blade.php

@@ -0,0 +1,45 @@
+<div moe relative wide>
+	<a href="" start show>
+		+ Medicare Part B (Primary)
+	</a>
+	<form url="/api/clientPrimaryCoverage/createNewCoverageForMedicare" right class="mcp-theme-1">
+		<input type="hidden" name="clientUid" value="{{$patient->uid}}" class="form-control input-sm" />
+		<div class="row">
+			<div class="form-group col-md-6">
+				<label class="control-label">Patient First Name</label>
+				<input type="text" name="patientNameFirst" value="{{$patient->name_first}}" class="form-control input-sm">
+			</div>
+			<div class="form-group col-md-6">
+				<label class="control-label">Patient Middle Name / MI</label>
+				<input type="text" name="patientNameMiddle" value="{{$patient->name_middle}}" class="form-control input-sm">
+			</div>
+			<div class="form-group col-md-6">
+				<label class="control-label">Patient Last Name</label>
+				<input type="text" name="patientNameLast" value="{{$patient->name_last}}" class="form-control input-sm">
+			</div>
+			<div class="form-group col-md-6">
+				<label class="control-label">Patient Suffix</label>
+				<input type="text" name="patientNameSuffix" value="{{$patient->name_suffix}}" class="form-control input-sm">
+			</div>
+			<div class="form-group col-md-6">
+				<label class="control-label">Patient Dob</label>
+				<input type="date" name="patientDob" value="{{$patient->dob}}" class="form-control input-sm">
+			</div>
+
+			<div class="form-group col-md-6">
+				<label class="control-label">Medicare Number</label>
+				<input type="text" name="mcrNumber" class="form-control input-sm">
+			</div>
+
+			<div class="form-group col-md-6">
+				<label class="control-label">Date Of Service</label>
+				<input type="date" name="dateOfService" value="{{date('Y-m-d')}}" class="form-control input-sm">
+			</div>
+		</div>
+
+		<div class="form-group text-nowrap mb-0">
+			<button class="btn btn-sm btn-primary" submit>Submt</button>
+			<button class="btn btn-sm btn-default border" cancel>Close</button>
+		</div>
+	</form>
+</div>

+ 14 - 0
resources/views/app/patient/primary-coverage-refresh.blade.php

@@ -0,0 +1,14 @@
+<div moe relative>
+	<a href="" start show class=""><i class="fas fa-sync"></i></a>
+
+	<form url="/api/clientPrimaryCoverage/{{$endpoint}}" class="mcp-theme-1">
+		<input type="hidden" name="uid" value="{{$cpc->uid}}" class="form-control input-sm" />
+		<div class="form-group">
+			<p>Refresh?</p>
+		</div>
+		<div class="form-group text-nowrap mb-0">
+			<button class="btn btn-sm btn-primary" submit>Submt</button>
+			<button class="btn btn-sm btn-default border" cancel>Close</button>
+		</div>
+	</form>
+</div>

+ 121 - 0
resources/views/app/patient/primary-coverage-view.blade.php

@@ -0,0 +1,121 @@
+<h4 class="font-weight-bold">Patient Name / Demographics</h4>
+<div class="table-responsive">
+	<table class="table table-sm table-bordered table-striped">
+		<tbody>
+			<tr>
+				<td>Patient First Name</td>
+				<td>{{$cpc->patient_name_first}}</td>
+			</tr>
+			<tr>
+				<td>Patient Middle Name / MI</td>
+				<td>{{$cpc->patient_name_middle}}</td>
+			</tr>
+			<tr>
+				<td>Patient Last Name</td>
+				<td>{{$cpc->patient_name_last}}</td>
+			</tr>
+			<tr>
+				<td>Patient Suffix</td>
+				<td>{{$cpc->patient_name_suffix}}</td>
+			</tr>
+			<tr>
+				<td>Patient Dob</td>
+				<td>{{$cpc->patient_dob ? date_format(date_create($cpc->patient_dob), 'm/d/Y') : '-'}}</td>
+			</tr>
+			<tr>
+				<td>Patient Sex</td>
+				<td>{{$cpc->patient_sex ?? '-'}}</td>
+			</tr>
+		</tbody>
+	</table>
+</div>
+
+<h4 class="font-weight-bold">Primary Coverage Information</h4>
+<div id="primaryCoverageLatestCoverage">
+	<div class="table-responsive">
+	<table class="table table-sm table-bordered table-striped">
+		<tbody>
+			<tr>
+				<td>Plan Type</td>
+				<td>{{$cpc->plan_type}}</td>
+			</tr>
+			<tr v-if="cpc.plan_type == 'COMMERCIAL'">
+				<td>Commercial Payer</td>
+				<td>{{$cpc->commercial_payer_id ? $cpc->payer->name : '-'}}</td>
+			</tr>
+			<tr v-if="cpc.plan_type == 'COMMERCIAL'">
+				<td>Patient Member Identifier</td>
+				<td>{{$cpc->commercial_member_identifier ?? '-'}}</td>
+			</tr>
+			<tr v-if="cpc.plan_type == 'COMMERCIAL'">
+				<td>Patient Group Name</td>
+				<td>{{$cpc->commercial_group_number ?? '-'}}</td>
+			</tr>
+			<tr>
+				<td>Date of Service</td>
+				<td>{{$cpc->date_of_service ? date_format(date_create($cpc->date_of_service), 'm/d/Y') : '-'}}</td>
+			</tr>
+			<tr v-if="cpc.plan_type == 'COMMERCIAL' || cpc.plan_type == 'MEDICAID'">
+				<td colspan="2">
+					<h5 class="font-weight-bold">Subscriber Details</h5>
+					<table class="table table-bordered table-striped">
+						<tbody>
+							<tr>
+								<td>Is Patient the subscriber?</td>
+								<td>{{$cpc->is_patient_subscriber ? 'Yes' : 'No'}}</td>
+							</tr>
+							@if(!$cpc->is_patient_subscriber)
+							<tr>
+								<td>First Name</td>
+								<td>{{$cpc->subscriber_name_first ?? '-'}}</td>
+							</tr>
+							<tr>
+								<td>Middle Name / MI</td>
+								<td>{{$cpc->subscriber_name_middle ?? '-'}}</td>
+							</tr>
+							<tr>
+								<td>Last Name</td>
+								<td>{{$cpc->subscriber_name_last ?? '-'}}</td>
+							</tr>
+							<tr>
+								<td>Suffix</td>
+								<td>{{$cpc->subscriber_name_suffix ?? '-'}}</td>
+							</tr>
+							<tr>
+								<td>Sex</td>
+								<td>{{$cpc->subscriber_sex ?? '-'}}</td>
+							</tr>
+							<tr>
+								<td>Dob</td>
+								<td>{{$cpc->subscriber_dob ? date_format(date_create($cpc->subscriber_dob), 'm/d/Y') : '-'}}</td>
+							</tr>
+							@endif
+						</tbody>
+					</table>
+				</td>
+			</tr>
+
+			<tr v-if="cpc.plan_type == 'MEDICAID' || (cpc.plan_type == 'COMMERCIAL' && cpc.mcd_number)">
+				<td>Medicaid State</td>
+				<td>{{$cpc->mcd_payer_id ?? '-'}}</td>
+			</tr>
+			<tr v-if="cpc.plan_type == 'MEDICAID' || (cpc.plan_type == 'COMMERCIAL' && cpc.mcd_number)">
+				<td>Medicaid Number</td>
+				<td>{{$cpc->mcd_number ?? '-'}}</td>
+			</tr>
+			<tr v-if="cpc.plan_type == 'MEDICARE' || (cpc.plan_type == 'COMMERCIAL' && cpc.mcr_number)">
+				<td>Medicare Number</td>
+				<td>{{$cpc->mcr_number ?? '-'}}</td>
+			</tr>
+		</tbody>
+	</table>
+</div>
+</div>
+<script type="text/javascript">
+	var primaryCoverageLatestCoverage = new Vue({
+		el: '#primaryCoverageLatestCoverage',
+		data: {
+			cpc: <?= json_encode($cpc); ?>,
+		}
+	})
+</script>

+ 98 - 0
resources/views/app/patient/primary-coverage.blade.php

@@ -0,0 +1,98 @@
+@extends ('layouts.patient')
+
+@section('inner-content')
+<div class="d-flex align-items-baseline">
+    <h4 class="font-weight-bold m-0 font-size-16 text-nowrap">Client Latest Coverage</h4>
+    <div class="ml-4 d-inline-flex justify-content-center">
+        <a native target="_blank"
+           open-in-stag-popup
+           mc-initer="new-coverage-form-{{$patient->uid}}"
+           title="New Primary Insurance Card"
+           href="/patients/view/primary-coverage-form/{{$patient->uid}}">
+            + New Primary Insurance Card
+        </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 mb-2">
+            @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)
+                </a>
+            @endif
+        </div>
+
+        <div class="mt-4">
+          <div class="row">
+            <div class="col-md-9">
+
+              @include('app.patient.primary-coverage-view')
+
+              <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')
+              @else
+                No plan Type specified.
+              @endif
+            </div>
+          </div>
+          
+            @php
+            dump(json_decode($cpc->toJson(JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)));
+            @endphp
+           
+        </div>
+
+        <div>
+            {{--
+              @php
+                  dump($cpc->auto_detail_json);
+              @endphp
+              --}}
+        </div>
+    @endif
+</div>
+@endsection

Some files were not shown because too many files changed in this diff