Kaynağa Gözat

Merge branch 'master' of rav.triplestart.com:jmudaka/stagfe2

= 3 yıl önce
ebeveyn
işleme
ccc586fc3e
36 değiştirilmiş dosya ile 670 ekleme ve 125 silme
  1. 15 1
      app/Helpers/helpers.php
  2. 7 0
      app/Http/Controllers/InvoiceController.php
  3. 6 1
      app/Http/Controllers/PatientController.php
  4. 3 0
      app/Models/ClientPrimaryCoverage.php
  5. 4 0
      app/Models/Customer.php
  6. 4 0
      app/Models/Note.php
  7. 12 0
      app/Models/NoteReasons.php
  8. 18 0
      app/Models/Point.php
  9. 1 1
      app/Models/Pro.php
  10. 47 1
      public/css/style.css
  11. 5 0
      resources/views/app/invoice-center/customers.blade.php
  12. 124 0
      resources/views/app/invoice-center/ic-customer-portal.blade.php
  13. 9 3
      resources/views/app/invoice-center/ic-pay-invoice.blade.php
  14. 1 1
      resources/views/app/invoice-center/invoices.blade.php
  15. 22 7
      resources/views/app/mc.blade.php
  16. 50 0
      resources/views/app/patient/insurance-coverage-history.blade.php
  17. 1 34
      resources/views/app/patient/insurance-coverage.blade.php
  18. 41 1
      resources/views/app/patient/note/dashboard.blade.php
  19. 3 3
      resources/views/app/patient/note/partials/flag-note-by-supervisor.blade.php
  20. 1 1
      resources/views/app/patient/note/rhs-sidebar-nrc.blade.php
  21. 1 1
      resources/views/app/patient/note/rhs-sidebar.blade.php
  22. 4 3
      resources/views/app/patient/partials/coverage-information.blade.php
  23. 3 3
      resources/views/app/patient/prescriptions/pdf/DRUG.blade.php
  24. 2 2
      resources/views/app/patient/prescriptions/pdf/pdf-preview.blade.php
  25. 10 22
      resources/views/app/patient/primary-coverage-manual-determination-view-commercial.blade.php
  26. 7 8
      resources/views/app/patient/primary-coverage-manual-determination-view-medicaid.blade.php
  27. 12 20
      resources/views/app/patient/primary-coverage-manual-determination-view-medicare.blade.php
  28. 21 3
      resources/views/app/patient/primary-coverage-view.blade.php
  29. 2 1
      resources/views/app/patient/primary-coverage.blade.php
  30. 2 2
      resources/views/app/patient/segment-templates/omega_medications/summary.blade.php
  31. 1 1
      resources/views/app/patient/wizard-partials/state-badge.blade.php
  32. 220 0
      resources/views/layouts/ic.blade.php
  33. 6 2
      resources/views/layouts/patient-header.blade.php
  34. 1 1
      resources/views/layouts/patient.blade.php
  35. 2 2
      resources/views/layouts/template.blade.php
  36. 2 0
      routes/web.php

+ 15 - 1
app/Helpers/helpers.php

@@ -999,4 +999,18 @@ if(!function_exists('parseRender')) {
             }
         }
     }
-}
+}
+
+if(!function_exists('mask_string')) {
+    function mask_string($string, $mask = "*", $lengthFromLastCharacter = null) {
+        if(!$lengthFromLastCharacter){
+        return str_repeat($mask, strlen($string));            
+        } 
+        $firstCharacters = substr($string, ($lengthFromLastCharacter));
+        $lastCharacters = substr($string, -$lengthFromLastCharacter);
+
+        $maskedFirstCharacters = str_repeat($mask, strlen($firstCharacters));  
+        
+        return $maskedFirstCharacters . $lastCharacters;
+    }
+}

+ 7 - 0
app/Http/Controllers/InvoiceController.php

@@ -139,6 +139,13 @@ class InvoiceController extends Controller
         return view('app.invoice-center.ic-pay-invoice', compact('invoice', 'customer', 'company'));
     }
 
+    public function icCustomerPortal(Request $request, $customerSlug) {
+        $customer = Customer::where('slug', $customerSlug)->where('is_active', true)->first();
+        if (!$customer) abort(404);
+        $company = $customer->company;
+        return view('app.invoice-center.ic-customer-portal', compact('customer', 'company'));
+    }
+
     public function companySuggestJSON(Request $request) {
         $term = $request->input('term') ? trim($request->input('term')) : '';
         if (empty($term)) return '';

+ 6 - 1
app/Http/Controllers/PatientController.php

@@ -299,7 +299,7 @@ class PatientController extends Controller
 
         $reviewRequests = ClientReviewRequest::where('client_id', $patient->id);
         if($pro->pro_type !== 'ADMIN'){
-            $reviewRequests = $reviewRequests->where('pro_id', $pro->id);
+            $reviewRequests = $reviewRequests->where('pro_id', $pro->id)->where('is_active', true);
         }
         $reviewRequests = $reviewRequests->orderBy('created_at', 'DESC')->paginate(50);
         return view('app.patient.review-requests.list', compact('patient', 'reviewRequests'));
@@ -671,4 +671,9 @@ class PatientController extends Controller
 
         return view('app.patient.client-documents', compact('templates', 'companyPros', 'patient'));
     }
+
+    public function insuranceCoverageHistory(Request $request, Client $patient){
+        $insuranceCoverageHistory = ClientPrimaryCoverage::where('client_id', $patient->id)->orderBy('created_at', 'DESC')->get();
+        return view('app.patient.insurance-coverage-history', compact('patient', 'insuranceCoverageHistory'));
+    }
 }

+ 3 - 0
app/Models/ClientPrimaryCoverage.php

@@ -86,4 +86,7 @@ class ClientPrimaryCoverage extends Model
     public function autoCommercialMoreSpecificPayer(){
         return $this->hasOne(Payer::class, 'id', 'auto_commercial_more_specific_payer_id');
     }
+    public function createdByPro(){
+        return $this->hasOne(Pro::class, 'id', 'created_by_pro_id');
+    }
 }

+ 4 - 0
app/Models/Customer.php

@@ -21,4 +21,8 @@ class Customer extends Model
     public function invoices() {
         return $this->hasMany(Invoice::class, 'customer_id', 'id')->orderBy('created_at', 'DESC');
     }
+
+    public function customerTransactions() {
+        return $this->hasMany(CustomerTransaction::class, 'customer_id', 'id')->orderBy('created_at', 'ASC');
+    }
 }

+ 4 - 0
app/Models/Note.php

@@ -136,6 +136,10 @@ class Note extends Model
         return $reasons;
     }
 
+    public function reasonsLog() {
+        return $this->hasMany(NoteReasons::class, 'note_id', 'id')->orderBy('created_at', 'DESC');
+    }
+
     public function claims()
     {
         return $this->hasMany(Claim::class, 'note_id', 'id')->orderBy('created_at', 'DESC');

+ 12 - 0
app/Models/NoteReasons.php

@@ -0,0 +1,12 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+
+class NoteReasons extends Model
+{
+
+    protected $table = 'note_reasons';
+    //
+}

+ 18 - 0
app/Models/Point.php

@@ -379,6 +379,24 @@ class Point extends Model
         return $points;
     }
 
+    public static function getPointsOfCategoryExceptEntryError(Client $_patient, Note $_note, String $_category, $_assoc = false) {
+        $points = Point
+            ::where('client_id', $_patient->id)
+            ->where('category', $_category)
+            ->where(function ($query2) use ($_note) {
+                $query2->where('is_removed', false)
+                    ->orWhereRaw("(is_removed_due_to_entry_error IS NOT TRUE AND ((SELECT count(id) from note_point WHERE is_active IS TRUE AND note_id = {$_note->id} AND point_id = point.id) > 0))");
+            })
+            ->orderBy('created_at')
+            ->get();
+        foreach ($points as $point) {
+            if ($point->data) {
+                $point->data = json_decode($point->data, $_assoc);
+            }
+        }
+        return $points;
+    }
+
     public static function getNumPointsOfCategory(Client $_patient, String $_category) {
         return Point
             ::where('client_id', $_patient->id)

+ 1 - 1
app/Models/Pro.php

@@ -842,7 +842,7 @@ WHERE
                     ->orWhereRaw('id IN (SELECT mcp_pro_id FROM client_program WHERE client_id = client.id AND is_active = TRUE)')
                     ->orWhereRaw('id IN (SELECT manager_pro_id FROM client_program WHERE client_id = client.id AND is_active = TRUE)')
                     ->orWhereRaw('id IN (SELECT client_id FROM note WHERE ally_pro_id = ? AND is_cancelled = FALSE)', [$proID])
-                    ->orWhereRaw('id IN (SELECT client_id FROM client_review_request WHERE pro_id = ? AND access_start_date <= NOW() AND access_end_date >= NOW())', [$proID]);
+                    ->orWhereRaw('id IN (SELECT client_id FROM client_review_request WHERE pro_id = ? AND access_start_date <= NOW() AND access_end_date >= NOW() AND client_review_request.is_active IS true)', [$proID]);
             })->count();
         return !!$canAccess;
     }

+ 47 - 1
public/css/style.css

@@ -204,7 +204,7 @@ body.stag_rhs_collapsed .app-right-panel {
     opacity: 1;
 }
 .mcp-theme-1 .on-hover-aliceblue:hover {
-    background: aliceblue;
+    background: aliceblue !important;
 }
 .mcp-theme-1 .opacity-0 {
     opacity: 0 !important;
@@ -334,6 +334,9 @@ body>nav.navbar {
     white-space: nowrap;
     display: block;
 }
+.mcp-theme-1 .max-width-unset {
+    max-width: unset !important;
+}
 .mcp-theme-1 .form-control.form-control-sm:not(.min-width-unset) {
     min-width: 200px;
 }
@@ -3613,4 +3616,47 @@ table.v-top th {
 }
 .mcp-theme-1 .mb-0-pagination .pagination {
     margin-bottom: 0 !important;
+}
+
+.note_template_omega_soap_visit .note-rhs-content {
+    max-width: calc(100% - 440px);
+}
+.note_template_omega_soap_visit.rhs-sidebar-fixed .note-rhs-content {
+    max-width: calc(100% - 440px);
+}
+
+.stag-video-bar {
+    position: absolute;
+    bottom: 0;
+    right: 20px;
+    width: 450px;
+    border: 1px solid #d2d2d2;
+    border-bottom: 0;
+    border-top-left-radius: 8px;
+    border-top-right-radius: 8px;
+    background: #fff;
+    overflow: hidden;
+    box-shadow: -1px 4px 4px #ddd;
+    transition: height ease-out 0.1s, right ease-out 0.1s, width ease-out 0.1s, right ease-out 0.1s;
+    height: calc(100vh - 65px);
+}
+.stag-video-bar .stag-video-bar-header {
+    height: 35px;
+}
+.stag-video-bar.collapsed {
+    height: 35px;
+    width: 250px;
+    overflow: hidden;
+}
+.stag-video-bar [if-collapsed] {
+    display: none;
+}
+.stag-video-bar [if-not-collapsed] {
+    display: none;
+}
+.stag-video-bar.collapsed [if-collapsed] {
+    display: block;
+}
+.stag-video-bar:not(.collapsed) [if-not-collapsed] {
+    display: block;
 }

+ 5 - 0
resources/views/app/invoice-center/customers.blade.php

@@ -53,6 +53,7 @@
                 <th class="border-bottom-0">Company</th>
                 <th class="border-bottom-0">Customer<br>Balance</th>
                 <th class="border-bottom-0">Pending Invoices<br>Balance</th>
+                <th class="border-bottom-0">Portal</th>
                 <th class="border-bottom-0">Created</th>
                 <th class="border-bottom-0">Active?</th>
                 <th class="border-bottom-0"></th>
@@ -79,6 +80,10 @@
                     <td>{{ $record->company ? $record->company->name : '-' }}</td>
                     <td>${{ is_null($record->customer_balance) ? 0 : $record->customer_balance }}</td>
                     <td>${{ is_null($record->pending_invoices_balance_total) ? 0 : $record->pending_invoices_balance_total }}</td>
+                    <td>
+                        <a href="{{route('icCustomerPortal', ['customerSlug' => $record->slug])}}" native target="_blank">Visit</a>
+                        <a href="#" data-target="{{route('icCustomerPortal', ['customerSlug' => $record->slug])}}" native target="_blank" class="copy-target ml-1">Copy</a>
+                    </td>
                     <td>{{ friendly_date($record->created_at) }}</td>
                     <td class="{{ !$record->is_active ? 'text-warning-dark' : ''}}">{{ $record->is_active ? 'Yes' : 'No' }}</td>
                     <td>

+ 124 - 0
resources/views/app/invoice-center/ic-customer-portal.blade.php

@@ -0,0 +1,124 @@
+@extends ('layouts.ic')
+@section('content')
+<div class="container mcp-theme-1">
+    <div class="d-flex align-items-baseline mt-3 mb-2">
+        <h3 class="font-size-16 font-weight-bold text-dark">{{$customer->client->displayName()}} / {{$company->name}}</h3>
+        <a href="{{config('app.stagfe6_url')}}" class="ml-auto">
+            <i class="fa fa-power-off"></i>
+            Exit
+        </a>
+    </div>
+    <hr class="mt-0 mb-3">
+    <div class="row">
+        <div class="col-md-8">
+            <div class="mb-3 font-weight-bold">Invoices</div>
+            @if(count($customer->invoices))
+                <table class="table table-sm table-bordered">
+                    <thead>
+                    <tr>
+                        <th class="border-bottom-0 text-secondary bg-light">Date</th>
+                        <th class="border-bottom-0 text-secondary bg-light">Particulars</th>
+                        <th class="border-bottom-0 text-secondary bg-light">Total</th>
+                        <th class="border-bottom-0 text-secondary bg-light">Paid</th>
+                        <th class="border-bottom-0 text-secondary bg-light">Due</th>
+                    </tr>
+                    </thead>
+                    <tbody class="font-weight-normal">
+                    <?php
+                    $totalAmount = 0;
+                    $totalPaid = 0;
+                    $totalBalance = 0;
+                    ?>
+                    @foreach($customer->invoices as $invoice)
+                        <tr>
+                            <td>{{friendly_date($invoice->created_at)}}</td>
+                            <td><a href="{{route('icPayInvoice', ['invoiceSlug' => $invoice->payment_link_slug])}}">{{$invoice->description}}</a></td>
+                            <td class="text-dark">${{!is_null($invoice->amount) ? $invoice->amount : 0}}</td>
+                            <td class="text-success">${{!is_null($invoice->paid) ? $invoice->paid : 0}}</td>
+                            <td class="font-weight-bold text-warning-dark">${{!is_null($invoice->balance) ? $invoice->balance : 0}}</td>
+                            <?php
+                            $totalAmount += (!is_null($invoice->amount) ? $invoice->amount : 0);
+                            $totalPaid += (!is_null($invoice->paid) ? $invoice->paid : 0);
+                            $totalBalance += (!is_null($invoice->balance) ? $invoice->balance : 0);
+                            ?>
+                        </tr>
+                    @endforeach
+                    <tr>
+                        <td class="p-3 text-right" colspan="5">
+                            <div class="d-flex justify-content-end align-items-baseline mb-2">
+                                <span class="text-secondary">Total Amount: </span>
+                                <span class="width-50px text-left text-secondary font-weight-bold pl-2">${{$totalAmount}}</span>
+                            </div>
+                            <div class="d-flex justify-content-end align-items-baseline mb-2">
+                                <span class="text-secondary">Total Paid: </span>
+                                <span class="width-50px text-left text-secondary font-weight-bold pl-2">${{$totalPaid}}</span>
+                            </div>
+                            <div class="d-flex justify-content-end align-items-baseline">
+                                <span class="font-weight-bold text-secondary">Total Due: </span>
+                                <span class="width-50px text-left font-weight-bold pl-2 font-size-14">${{$totalBalance}}</span>
+                            </div>
+                        </td>
+                    </tr>
+                    </tbody>
+                </table>
+            @else
+                <div class="text-secondary mb-3">No invoices yet!</div>
+            @endif
+            <div class="mb-3 font-weight-bold">Transactions</div>
+            @if(count($customer->customerTransactions))
+                <table class="table table-sm table-bordered">
+                    <thead>
+                    <tr>
+                        <th class="border-bottom-0 text-secondary bg-light">Date</th>
+                        <th class="border-bottom-0 text-secondary bg-light">Type</th>
+                        <th class="border-bottom-0 text-secondary bg-light">Remarks</th>
+                        <th class="border-bottom-0 text-secondary bg-light">Amount</th>
+                        <th class="border-bottom-0 text-secondary bg-light">Starting Balance</th>
+                        <th class="border-bottom-0 text-secondary bg-light">Ending Balance</th>
+                    </tr>
+                    </thead>
+                    <tbody class="font-weight-normal">
+                    <?php
+                    $totalAmount = 0;
+                    $totalPaid = 0;
+                    $totalBalance = 0;
+                    ?>
+                    @foreach($customer->customerTransactions as $transaction)
+                        <tr>
+                            <td>{{friendly_date($transaction->created_at)}}</td>
+                            <td class="{{$transaction->plus_or_minus === 'PLUS' ? 'text-success' : 'text-warning-dark'}}">{{$transaction->plus_or_minus === 'PLUS' ? 'Credit' : 'Debit'}}</td>
+                            <td>{{ sanitize_state_name($transaction->reason_type)}}</td>
+                            <td class="{{$transaction->plus_or_minus === 'PLUS' ? 'text-success' : 'text-warning-dark'}}">${{!is_null($transaction->amount) ? $transaction->amount : 0}}</td>
+                            <td>${{!is_null($transaction->starting_balance) ? $transaction->starting_balance : 0}}</td>
+                            <td>${{!is_null($transaction->resulting_balance) ? $transaction->resulting_balance : 0}}</td>
+                        </tr>
+                    @endforeach
+                    </tbody>
+                </table>
+            @else
+                <div class="text-secondary">No transactions yet!</div>
+            @endif
+        </div>
+        <div class="col-md-4 border-left">
+            <div class="mb-3">
+                <span class="font-weight-bold text-secondary">Current Balance: </span>
+                <span class="font-weight-bold text-dark">${{!is_null($customer->customer_balance) ? $customer->customer_balance : 0}}</span>
+            </div>
+            <h3 class="font-weight-bold mb-2 text-secondary">Redeem Gift Card</h3>
+            <div moe>
+                <form url="/api/giftCard/redeem" show>
+                    <input type="hidden" name="customerUid" value="{{$customer->uid}}">
+                    <p class="mb-2">If you have a gift card from {{$company->name}}, please enter its code below:</p>
+                    <div class="mb-2">
+                        <input type="text" name="code" placeholder="Code" class="form-control form-control-sm">
+                    </div>
+                    <div class="text-left">
+                        <button submit class="btn btn-sm btn-primary mr-2">Submit</button>
+                        <button cancel class="btn btn-sm btn-default border">Cancel</button>
+                    </div>
+                </form>
+            </div>
+        </div>
+    </div>
+</div>
+@endsection

+ 9 - 3
resources/views/app/invoice-center/ic-pay-invoice.blade.php

@@ -1,8 +1,14 @@
-@extends ('layouts.guest_template')
+@extends ('layouts.ic')
 @section('content')
 <div class="container mcp-theme-1">
-    <h3 class="font-size-16 font-weight-bold my-3 text-dark">Invoice</h3>
-    <hr>
+    <div class="d-flex align-items-baseline mt-3 mb-2">
+        <h3 class="font-size-16 font-weight-bold text-dark">Invoice</h3>
+        <a href="{{route('icCustomerPortal', ['customerSlug' => $customer->slug])}}" class="ml-auto">
+            <i class="fa fa-chevron-left"></i>
+            Back to Home
+        </a>
+    </div>
+    <hr class="mt-0 mb-3">
     <div class="row">
         <div class="col-md-8">
             <div class="mb-3">Hi <b class="text-dark">{{$customer->client->displayName()}}</b>, please find your invoice below:</div>

+ 1 - 1
resources/views/app/invoice-center/invoices.blade.php

@@ -120,7 +120,7 @@
                     </td>
                     <td>
                         <a href="{{route('icPayInvoice', ['invoiceSlug' => $record->payment_link_slug])}}" native target="_blank">Visit</a>
-                        <a href="#" data-target="{{route('icPayInvoice', ['invoiceSlug' => $record->payment_link_slug])}}" native target="_blank" class="copy-target">Copy</a>
+                        <a href="#" data-target="{{route('icPayInvoice', ['invoiceSlug' => $record->payment_link_slug])}}" native target="_blank" class="copy-target ml-1">Copy</a>
                     </td>
                     <td>${{ is_null($record->paid) ? 0 : $record->paid }}</td>
                     <td>${{ is_null($record->balance) ? 0 : $record->balance }}</td>

+ 22 - 7
resources/views/app/mc.blade.php

@@ -6,6 +6,7 @@
     <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     <script src="/js/jquery-3.5.1.min.js"></script>
+    <link rel="stylesheet" href="/fontawesome-free-5.13.1-web/css/all.min.css">
     <link href="/css/app.css?v={{config('app.asset_version')}}" rel="stylesheet">
     <link href="/css/style.css?v={{config('app.asset_version')}}" rel="stylesheet">
     <link href="/v-splitter-px/v-splitter.css?v={{config('app.asset_version')}}" rel="stylesheet" >
@@ -15,23 +16,37 @@
     <title>Leadership Health</title>
 </head>
 <body class="h-100" data-pro-uid="{{$pro ? $pro->uid : ''}}">
-    <div class="row mx-0 h-100">
-        <div class="col-9 px-0 app-left-panel">
-            <iframe id="stag_mcp_lhs" src="/blank" frameborder="0" class="h-100 w-100"></iframe>
-        </div>
-        <div class="col-3 border-left app-right-panel pr-1">
-            <iframe id="stag_mcp_rhs" src="" frameborder="0" class="h-100 w-100"></iframe>
+    <iframe id="stag_mcp_lhs" src="/blank" frameborder="0" class="h-100 w-100"></iframe>
+    <div class="stag-video-bar collapsed d-none mcp-theme-1">
+        <div class="bg-aliceblue d-flex align-items-center border-bottom p-2 stag-video-bar-header">
+            <i class="fa fa-video text-secondary mr-1"></i>
+            <div class="text-secondary font-weight-bold flex-grow-1 c-pointer" onclick="return toggleVideoBar($(this).closest('.stag-video-bar'))">Video</div>
+            <a href="#" if-collapsed="" class="ml-1 px-1" onclick="return toggleVideoBar($(this).closest('.stag-video-bar'))"><i class="fa fa-chevron-up"></i></a>
+            <a href="#" if-not-collapsed="" class="ml-1 px-1" onclick="return toggleVideoBar($(this).closest('.stag-video-bar'))"><i class="fa fa-chevron-down"></i></a>
+            <a href="#" class="ml-1 px-1" onclick="return $(this).closest('.stag-video-bar').addClass('d-none'); return false;"><i class="fa fa-times"></i></a>
         </div>
+        <iframe id="stag_mcp_rhs" src="" frameborder="0" class="h-100 w-100"></iframe>
     </div>
     <script>
         window.top.localStorage.currentProUid = "{{$pro ? $pro->uid : ''}}";
-        initVSplitter('stag-mc-main', $('.app-left-panel'), $('.app-right-panel'));
+        // initVSplitter('stag-mc-main', $('.app-left-panel'), $('.app-right-panel'));
+        window.toggleVideoBar = function(_videoBar) {
+            _videoBar.toggleClass('collapsed');
+            return false;
+        };
         window.openInLHS = function(_url) {
             $('#stag_mcp_lhs')[0].contentWindow.fastLoad(_url, true, false);
             return false;
         };
         window.openInRHS = function(_url) {
             $('#stag_mcp_rhs').attr('src', _url);
+            let videoBar = $('.stag-video-bar');
+            if(videoBar.is('.d-none')) {
+                videoBar.removeClass('d-none');
+            }
+            if(videoBar.is('.collapsed')) {
+                toggleVideoBar(videoBar);
+            }
             return false;
         };
         window.openInLHS = function(_url) {

+ 50 - 0
resources/views/app/patient/insurance-coverage-history.blade.php

@@ -0,0 +1,50 @@
+@extends ('layouts.patient')
+
+@section('inner-content')
+
+<style>
+    .eligible-table td {
+        white-space: nowrap;
+    }
+</style>
+
+<div>
+    <div class="d-flex align-items-center">
+        <h4 class="font-weight-bold m-0 font-size-16">Insurance Coverage History</h4>
+    </div>
+
+    <table class="table table-sm table-striped table-bordered mt-3 mb-0">
+        <thead>
+            <tr>
+                <th class="border-0">Created At</th>
+                <th class="border-0">Plan Type</th>
+                <th class="border-0">Creation Strategy</th>
+                <th class="border-0">Is Covered</th>
+                <th class="border-0">Is Manually Determined</th>
+                <th class="border-0"></th>
+            </tr>
+        </thead>
+        <tbody>
+            @foreach($insuranceCoverageHistory as $coverage)
+            <tr>
+                <td>{{ friendly_date($coverage->created_at) }}</td>
+                <td>{{ $coverage->plan_type }}</td>
+                <td>{{ $coverage->creation_strategy }}</td>
+                <td>{{ $coverage->is_covered ? 'YES':'NO' }}</td>
+                <td>{{ $coverage->is_manually_determined ? 'YES':'NO' }}</td>
+                <td>
+                    <div moe relative wide class="ml-2 hide-inside-popup">
+                        <a start show>
+                        <i class="fa fa-info-circle on-hover-opaque"></i>
+                        </a>
+                        <form url="" class="mcp-theme-1" right>
+                        @include('app.patient.partials.display-coverage-details', ['displayCoverage' => $coverage ])
+                        </form>
+                    </div>
+                </td>
+            </tr>
+            @endforeach
+        </tbody>
+    </table>
+</div>
+@endsection

+ 1 - 34
resources/views/app/patient/insurance-coverage.blade.php

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

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

@@ -1181,7 +1181,7 @@ use App\Models\Handout;
                                 ],
                             ];
                         ?>
-                        <div class="d-flex align-items-start flex-wrap">
+                        <div class="d-inline-flex align-items-start flex-wrap mr-auto">
                             <?php $emptyNoteICDs = true; ?>
                                 @foreach ($noteICDData as $noteICDKey => $noteICD)
                                     <?php
@@ -1199,6 +1199,46 @@ use App\Models\Handout;
                                 <small class="text-dark">-</small>
                             @endif
                         </div>
+                        <div class="on-hover-show d-block on-hover-opaque position-relative mx-1">
+                            <i class="fa fa-info-circle"></i>
+                            <div class="on-hover-content p-0 border-0 max-width-unset bg-white">
+                                <table class="table table-sm m-0 table-bordered border-0">
+                                    <thead>
+                                    <tr class="bg-light">
+                                        <th class="border-bottom-0">Created</th>
+                                        <th class="min-width-140px border-bottom-0">Reason 1</th>
+                                        <th class="min-width-140px border-bottom-0">Reason 2</th>
+                                        <th class="min-width-140px border-bottom-0">Reason 3</th>
+                                        <th class="min-width-140px border-bottom-0">Reason 4</th>
+                                    </tr>
+                                    </thead>
+                                    <tbody>
+                                    @foreach($note->reasonsLog as $log)
+                                        <tr>
+                                            <td class="text-nowrap">{{friendly_date_time($log->created_at)}}</td>
+                                            <td>
+                                                {{$log->note_reason_icd1}}
+                                                <div class="text-sm text-secondary">{{$log->note_reason_icd1description}}</div>
+                                            </td>
+                                            <td>
+                                                {{$log->note_reason_icd2}}
+                                                <div class="text-sm text-secondary">{{$log->note_reason_icd2description}}</div>
+                                            </td>
+                                            <td>
+                                                {{$log->note_reason_icd3}}
+                                                <div class="text-sm text-secondary">{{$log->note_reason_icd3description}}</div>
+                                            </td>
+                                            <td>
+                                                {{$log->note_reason_icd4}}
+                                                <div class="text-sm text-secondary">{{$log->note_reason_icd4description}}</div>
+                                            </td>
+                                        </tr>
+                                    @endforeach
+                                    </tbody>
+                                </table>
+                            </div>
+                        </div>
+                        <div></div>
                     </div>
                     @if(!empty($note->note_reason_memo))
                         <div style="padding-left: 60px;">

+ 3 - 3
resources/views/app/patient/note/partials/flag-note-by-supervisor.blade.php

@@ -5,7 +5,7 @@
             <span class="text-success mr-2"><i class="fas fa-badge-check"></i> Stamped</span>
             <span class="mr-1">by {{ $note->stampedBySupervisingPhysicianBySession->pro->displayName() }}</span>
             <span class="mr-1">at {{ friendlier_date($note->stamped_by_supervising_physician_at) }} <i class="fas fa-info-circle" title="{{ $note->stamping_note_by_supervising_physician }}"></i></span>
-            @if($note->isProPhysicianSupervisor($pro->id))
+            @if($pro->currentMonthClientReviewRequest($patient->id))
             <div moe class="ml-2">
                 <a href="#" start show class="text-danger"><i class="fas fa-stamp"></i> Undo Stamp</a>
                 <form url="/api/note/undoStampAsSupervisingPhysician">
@@ -42,8 +42,8 @@
                     </div>
                 </div>
             @endif
-            <!-- Ask Josh, should any supervising physician stamp this note -->
-            @if($note->isProPhysicianSupervisor($performer->pro->id)) 
+            
+            @if($pro->currentMonthClientReviewRequest($patient->id)) 
                 <div moe class="ml-2">
                     <a href="#" start show class="text-success"><i class="fas fa-stamp"></i> Stamp Note</a>
                     <form url="/api/note/stampAsSupervisingPhysician">

+ 1 - 1
resources/views/app/patient/note/rhs-sidebar-nrc.blade.php

@@ -1,4 +1,4 @@
-<div class="note-rhs-sidebar screen-only" id="note-rhs-sidebar">
+<div class="note-rhs-sidebar screen-only pb-5" id="note-rhs-sidebar">
 
     <?php
     $cmStartDate = date('Y-m-01', strtotime($note->effective_dateest));

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

@@ -1,4 +1,4 @@
-<div class="note-rhs-sidebar screen-only" id="note-rhs-sidebar">
+<div class="note-rhs-sidebar screen-only pb-5" id="note-rhs-sidebar">
 
     <?php
     $cmStartDate = date('Y-m-01', strtotime($note->effective_dateest));

+ 4 - 3
resources/views/app/patient/partials/coverage-information.blade.php

@@ -24,10 +24,11 @@
             }
         ?>
         <div class="d-flex align-items-center mb-2">
-            <span class="mr-2">Plan Type: <b>{{ $latestCpc->plan_type }}</b></span>
+            <span class="">Plan Type: <b>{{ $latestCpc->plan_type }}</b></span>
+            <span class="mx-1 text-muted text-sm">|</span>
             @if($cpc->is_manually_determined)
                 <div>
-                    <span class="d-inline bg-warning px-2 rounded mr-1"><i class="fas fa-map-pin"></i> Manually Determined</span> 
+                    <span class="d-inline bg-warning px-2 py-1 rounded mr-1"><i class="fas fa-map-pin"></i> Manually Determined</span> 
                     @if($cpc->is_cancelled)
                     <span class="mr-1 text-danger text-sm">Cancelled</span>
                     @else
@@ -75,7 +76,7 @@
                     </a>
                 @endif
             @endif
-            <span class="mx-2">Created At: {{ friendly_date_time($cpc->created_at) }}</span>
+            <span class="mx-2">Created At: {{ friendly_date_time($cpc->created_at) }} by {{ $cpc->createdByPro->displayName() }}</span>
         </div>
 
         <div class="mt-4 {{ $cpc->is_cancelled ? 'cpc-cancelled':'' }}">

+ 3 - 3
resources/views/app/patient/prescriptions/pdf/DRUG.blade.php

@@ -12,11 +12,11 @@ $coverage = $patient->effectiveClientPrimaryCoverage;
 $payerName = null;
 $memberID = null;
 if($coverage) {
-  if ($coverage->plan_type == 'Medicare') {
+  if ($coverage->plan_type == 'MEDICARE') {
       $payerName = 'Medicare';
       $memberID = $coverage->mcr_number;
   };
-  if ($coverage->plan_type == 'Medicaid') {
+  if ($coverage->plan_type == 'MEDICAID') {
       $payerName = $coverage->mcd_payer_name;
       $memberID = $coverage->mcd_number;
   };
@@ -32,7 +32,7 @@ if($coverage) {
         <td style="vertical-align:top;padding: 5px;">
           <h4 style="line-height:20px;margin:0;text-transform:uppercase;">{{ $patient->displayName() }}</h4>
           <span style="font-size:13px;line-height:20px;display:block">{{$addressParts ?: ''}}</span>
-          <span style="font-size:13px;line-height:20px;display:block">{{$addressPart2 ?: ''}}</span>
+          <span style="font-size:13px;line-height:20px;display:block">{{$addressPart2 ?: ''}} {{$patient->mailing_address_zip}}</span>
           <span style="font-size:13px;line-height:20px;display:block">Phone: {{$patient->cell_number}}</span>
         </td>
         <td style="vertical-align:top;padding: 5px;">

+ 2 - 2
resources/views/app/patient/prescriptions/pdf/pdf-preview.blade.php

@@ -40,8 +40,8 @@
             <h5 style="margin-bottom: 2rem;line-height:3px;">{{$city}}, {{$state}} {{$zip}}</h5>
         </div>
         <div style="text-align:center;">
-          <span style="width:33.33%; display:inline-block;">Phone: 202-935-1033</span>
-          <span style="width:33.33%; display:inline-block;">Fax: 202-935-1033</span>
+          <span style="width:33.33%; display:inline-block;">Phone: (800) 707-9705</span>
+          <span style="width:33.33%; display:inline-block;">Fax: (800) 878-1414</span>
           <span style="width:33.33%; display:inline-block;">NPI: {{$prescription->hcpPro->hcp_npi}}</span>
         </div>
     </header>

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

@@ -4,98 +4,86 @@
 		<thead>
 			<tr>
 				<th class="border-bottom-0"></th>
-				<th class="border-bottom-0">Automatic</th>
 				<th class="border-bottom-0">Override</th>
+				<th class="border-bottom-0">Automatic</th>
 			</tr>
 		</thead>
 		<tbody>
 			<tr>
 				<td>Record Found?</td>
-				<td>{{$cpc->manual_commercial_is_matched ? 'YES' : 'NO'}}</td>
 				<td>
 					<div class="form-group mb-0">
-						<p class="mb-1 text-secondary">Manual Determination Category</p>
-						<span>{{$cpc->manual_determination_category ?? '-'}}</span>
+						<span>{{$cpc->manual_determination_category ?? '-'}} <small class="text-muted">(Manual Determination Category)</small></span>
 					</div>
 				</td>
+				<td>{{$cpc->manual_commercial_is_matched ? 'YES' : 'NO'}}</td>				
 			</tr>
 
 			<tr>
 				<td>Part B Active?</td>
-				<td>{{$cpc->manual_medicare_is_partbactive}}</td>
 				<td>
 					<div class="form-group mb-0">
-						<p class="mb-1 text-secondary">Is Part B Active?</p>
 						<span>{{$cpc->manual_medicare_is_partbactive ?? '-'}}</span>
 					</div>
 				</td>
+				<td>{{$cpc->manual_medicare_is_partbactive}}</td>
 			</tr>
 			<tr>
 				<td>Part B Primary?</td>
-				<td>{{$cpc->manual_medicare_is_partbprimary}}</td>
 				<td>
-					<div class="form-group mb-1">
-						<p class="mb-1 text-secondary">Manual Determination Category</p>
-						<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>
+				<td>{{$cpc->manual_medicare_is_partbprimary}}</td>
 			</tr>
 			<tr>
 				<td>Part C Active?</td>
-				<td>{{$cpc->manual_medicare_is_partcactive}}</td>
 				<td>
 					<div class="form-group mb-0">
 						<div class="alert alert-danger" v-if="(cpc.manual_medicare_is_partcactive == 'YES' && cpc.manual_medicare_is_partbprimary == 'YES')">
 							Oops! Patient Medicare Part B Primary is set to <b>Yes</b>.
 						</div>
-						<p class="mb-1 text-secondary">Is Part C Active?</p>
 						<span>{{$cpc->manual_medicare_is_partcactive ?? '-'}}</span>
 					</div>
 				</td>
+				<td>{{$cpc->manual_medicare_is_partcactive}}</td>
 			</tr>
 			<tr>
 				<td>Inpatient?</td>
-				<td>{{$cpc->manual_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>
+				<td>{{$cpc->manual_medicare_is_inpatient}}</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>
+				<td>UNKNOWN</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>
+				<td>UNKNOWN</td>
 			</tr>
 			<tr>
 				<td>MSP?</td>
-				<td>{{$cpc->manual_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>
+				<td>{{$cpc->manual_medicare_is_msp}}</td>
 			</tr>
 			<tr>
 				<td>Memo</td>

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

@@ -4,30 +4,29 @@
 		<thead>
 			<tr>
 				<th class="border-bottom-0"></th>
-				<th class="border-bottom-0">Automatic</th>
 				<th class="border-bottom-0">Override</th>
+				<th class="border-bottom-0">Automatic</th>				
 			</tr>
 		</thead>
 		<tbody>
 			<tr>
-				<td>Record Found?</td>
-				<td>{{$cpc->manual_medicaid_is_matched ? 'YES' : 'NO'}}</td>
+				<td>Record Found?</td>				
 				<td>
 					<div class="form-group mb-0">
-						<p class="mb-1 text-secondary">Is Matched?</p>
-						<span>{{$cpc->manual_medicaid_is_matched ?? '-'}}</span>
+						<p class="mb-1 text-secondary">Is Matched? <span class="text-dark">{{$cpc->manual_medicaid_is_matched ?? '-'}}</span></p>
+						
 					</div>
 				</td>
+				<td>{{$cpc->manual_medicaid_is_matched ? 'YES' : 'NO'}}</td>
 			</tr>
 			<tr>
 				<td>Coverage Status?</td>
-				<td>UNKNOWN</td>
 				<td>
 					<div class="form-group mb-0">
-						<p class="mb-1 text-secondary">Manual Determination Category</p>
-						<span>{{$cpc->manual_determination_category ?? '-'}}</span>
+						<span>{{$cpc->manual_determination_category ?? '-'}} <small class="text-muted">(Manual Determination Category)</small></span>
 					</div>
 				</td>
+				<td>UNKNOWN</td>
 			</tr>
 			<tr>
 				<td>Memo</td>

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

@@ -4,8 +4,8 @@
 		<thead>
 			<tr>
 				<th class="border-bottom-0"></th>
-				<th class="border-bottom-0">Automatic</th>
 				<th class="border-bottom-0">Override</th>
+				<th class="border-bottom-0">Automatic</th>
 			</tr>
 		</thead>
 		<tbody>
@@ -15,93 +15,85 @@
 			</tr>
 			<tr>
 				<td>Record Found?</td>
-				<td>{{$cpc->manual_medicare_is_matched ? 'YES' : 'NO'}}</td>
 				<td>
 					<div class="form-group mb-0">
-						<p class="mb-1 text-secondary">Is Matched?</p>
-						<span>{{$cpc->manual_medicare_is_matched ?? '-'}}</span>
+						<p class="mb-1 text-secondary">Is Matched? <span class="text-dark">{{$cpc->manual_medicare_is_matched ?? '-'}}</span></p>
+						
 					</div>
 				</td>
+				<td>{{$cpc->manual_medicare_is_matched ? 'YES' : 'NO'}}</td>
 			</tr>
 
 
 			<tr>
 				<td>Part B Active?</td>
-				<td>{{$cpc->manual_medicare_is_partbactive}}</td>
 				<td>
 					<div class="form-group mb-0">
-						<p class="mb-1 text-secondary">Is Part B Active?</p>
 						<span>{{$cpc->manual_medicare_is_partbactive ?? '-'}}</span>
 					</div>
 				</td>
+				<td>{{$cpc->manual_medicare_is_partbactive}}</td>
 			</tr>
 			<tr>
 				<td>Part B Primary?</td>
-				<td>{{$cpc->manual_medicare_is_partbprimary}}</td>
 				<td>
 					<div class="form-group mb-1">
-						<p class="mb-1 text-secondary">Manual Determination Category</p>
-						<span>{{$cpc->manual_determination_category  ?? '-'}}</span>
+						<span>{{$cpc->manual_determination_category  ?? '-'}} <small class="text-muted">(Manual Determination Category)</small></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>
+				<td>{{$cpc->manual_medicare_is_partbprimary}}</td>
 			</tr>
 			<tr>
 				<td>Part C Active?</td>
-				<td>{{$cpc->manual_medicare_is_partcactive}}</td>
 				<td>
 					<div class="form-group mb-0">
 						<div class="alert alert-danger" v-if="cpc.auto_medicare_is_partcactive == 'YES' && cpc.auto_medicare_is_partbprimary == 'YES'">
 							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>
+				<td>{{$cpc->manual_medicare_is_partcactive}}</td>
 			</tr>
 			<tr>
 				<td>Inpatient?</td>
-				<td>{{$cpc->manual_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>
+				<td>{{$cpc->manual_medicare_is_inpatient}}</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>
+				<td>UNKNOWN</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>
+				<td>UNKNOWN</td>
 			</tr>
 			<tr>
 				<td>MSP?</td>
-				<td>{{$cpc->manual_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>
+				<td>{{$cpc->manual_medicare_is_msp}}</td>
 			</tr>
 			<tr>
 				<td>Memo</td>

+ 21 - 3
resources/views/app/patient/primary-coverage-view.blade.php

@@ -48,7 +48,13 @@
 							</tr>
 							<tr v-if="cpc.plan_type == 'COMMERCIAL'">
 								<td>Patient Member Identifier</td>
-								<td>{{$cpc->commercial_member_identifier ?? '-'}}</td>
+								<td>
+									@if($performer->pro->pro_type === 'ADMIN')
+										{{$cpc->commercial_member_identifier ?? '-'}}
+									@else
+										{{$cpc->commercial_member_identifier ? mask_string($cpc->commercial_member_identifier, '*', 4) : '-'}}
+									@endif
+								</td>
 							</tr>
 							<tr v-if="cpc.plan_type == 'COMMERCIAL'">
 								<td>Patient Group Name</td>
@@ -105,11 +111,23 @@
 							</tr>
 							<tr v-if="cpc.plan_type == 'MEDICAID' || (cpc.plan_type == 'COMMERCIAL' && cpc.mcd_number)">
 								<td>Medicaid Number</td>
-								<td class="text-uppercase">{{$cpc->mcd_number ?? '-'}}</td>
+								<td class="text-uppercase">
+									@if($performer->pro->pro_type === 'ADMIN')
+										{{$cpc->mcd_number ?? '-'}}
+									@else
+										{{$cpc->mcd_number ? mask_string($cpc->mcd_number, '*', 4) : '-'}}
+									@endif
+								</td>
 							</tr>
 							<tr v-if="cpc.plan_type == 'MEDICARE' || (cpc.plan_type == 'COMMERCIAL' && cpc.mcr_number)">
 								<td>Medicare Number</td>
-								<td class="text-uppercase">{{$cpc->mcr_number ?? '-'}}</td>
+								<td class="text-uppercase">
+									@if($performer->pro->pro_type === 'ADMIN')
+										{{$cpc->mcr_number ?? '-'}}
+									@else
+										{{$cpc->mcr_number ? mask_string($cpc->mcr_number, '*', 4) : '-'}}
+									@endif
+								</td>
 							</tr>
 							
 							<tr>

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

@@ -2,9 +2,10 @@
 
 @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>
+    <h4 class="font-weight-bold m-0 font-size-16 text-nowrap">Primary Coverage</h4>
     <div class="ml-4 d-inline-flex justify-content-center">
         <a native target="_blank"
+            class="btn btn-sm btn-primary text-white"
            open-in-stag-popup
            mc-initer="new-coverage-form-{{$patient->uid}}"
            title="New Primary Insurance Card"

+ 2 - 2
resources/views/app/patient/segment-templates/omega_medications/summary.blade.php

@@ -4,7 +4,7 @@ use App\Models\Point;
 
 /** @var \App\Models\Client $patient */
 
-$points = Point::getPointsOfCategory($patient, 'MEDICATION');
+$points = Point::getPointsOfCategoryExceptEntryError($patient, $note, 'MEDICATION');
 $tracker = Point::getGlobalSingletonOfCategory($patient, 'NO_KNOWN_TRACKER');
 $numRelevant = 0;
 $plural = 'Medications';
@@ -56,7 +56,7 @@ $plural = 'Medications';
 		</td>
 		<td class="width-300px">
 			<div class="d-flex align-items-baseline pl-2">
-				@if(@$review && isset($review->experience))
+				@if(@$review && isset($review->experience) && !!trim(strip_tags($review->experience)))
 					<span class="pr-2">{{trim(strip_tags($review->experience))}}</span>
 				@endif
 				<span class="text-nowrap">

+ 1 - 1
resources/views/app/patient/wizard-partials/state-badge.blade.php

@@ -13,7 +13,7 @@
             <div class="text-sm text-secondary">(New Historic Record)</div>
         @endif
     @elseif($point->removed_in_note_id === $note->id && $point->removal_reason_category === 'ON_INTAKE')
-        <div class="text-sm text-secondary">Marked {{@$removedVerb ?: 'Removed'}}  on Intake</div>
+        <div class="text-sm text-secondary">Marked Historic</div>
         @if($point->added_in_note_id === $note->id && $point->addition_reason_category === 'ON_INTAKE')
             <div class="text-sm text-secondary">(New Historic Record)</div>
         @endif

+ 220 - 0
resources/views/layouts/ic.blade.php

@@ -0,0 +1,220 @@
+<!DOCTYPE html>
+<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
+
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+
+    <title>{{ @$company ? @$company->name : config('app.name') }}</title>
+
+    <!-- Fonts -->
+    <link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet">
+
+    {{-- mc initializers --}}
+    <script src="/js/mc-init.js?v={{config('app.asset_version')}}"></script>
+
+    {{-- vue --}}
+    <script src="/js/vue.js"></script>
+
+    {{-- Quill RTE --}}
+    <link href="/quill/quill.snow.css" rel="stylesheet">
+    <script src="/quill/quill.js"></script>
+
+    <!-- <link href="{{ asset('bootstrap-4.5.0/css/bootstrap.css') }}" rel="stylesheet"> -->
+    <link rel="stylesheet" href="/fontawesome-free-5.13.1-web/css/all.min.css">
+    <link href="{{ asset('/css/app.css') }}?v={{config('app.asset_version')}}" rel="stylesheet">
+    <link href="{{ asset('/css/style.css') }}?v={{config('app.asset_version')}}" rel="stylesheet">
+    <link href="{{ asset('/css/yemi.css') }}?v={{config('app.asset_version')}}" rel="stylesheet">
+    <link rel="stylesheet" href="{{ asset('/css/toastr.min.css') }}">
+    <link href="{{asset('/css/z.css')}}?v={{config('app.asset_version')}}" rel=stylesheet>
+    <!-- Styles -->
+
+    <script src="{{ asset('js/app.js') }}?v={{config('app.asset_version')}}" type="application/javascript"></script>
+    <script src="/js/jquery-3.5.1.min.js"></script>
+    <script src="/js/jquery.form.min.js"></script>
+    <script src="{{ asset('js/toastr.min.js') }}" type="application/javascript"></script>
+    <script src="/js/yemi.js?v={{config('app.asset_version')}}" type="application/javascript"></script>
+
+    {{-- med ac --}}
+    <link href='/css/autocomplete-lhc.min.css' rel="stylesheet">
+    <script src='/js/autocomplete-lhc.js'></script>
+
+    {{-- inline bootstrap datepicker --}}
+    <link href='/bootstrap-datepicker/css/bootstrap-datepicker.min.css' rel="stylesheet">
+    <script src='/bootstrap-datepicker/js/bootstrap-datepicker.min.js'></script>
+
+    @yield('head')
+</head>
+
+<body>
+    <div id="mask" style="background: rgba(0, 0, 0, 0) url(&quot;/vanillaspin.gif&quot;) no-repeat scroll center center; position: fixed; top: 0px; left: 0px; z-index: 9999; width: 100%; height: 100%; display: none;">
+    </div>
+    <div id="moe-form-mask" style="background: rgba(0, 0, 0, .1) no-repeat scroll center center; position: fixed; top: 0px; left: 0px; z-index: 99; width: 100%; height: 100%; display: none;">
+    </div>
+
+    <nav class="navbar navbar-expand-md navbar-dark stag-primary-bg py-1">
+        <a class="navbar-brand" href="">{{@$company ? @$company->name : config('app.name')}}</a>
+        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navBar" aria-controls="navBar" aria-expanded="false" aria-label="Toggle navigation">
+            <span class="navbar-toggler-icon"></span>
+        </button>
+
+        <div class="collapse navbar-collapse" id="navBar">
+            <ul class="navbar-nav mr-auto">
+
+            </ul>
+
+        </div>
+
+    </nav>
+
+    <main role="main" class="stag-content px-0">
+
+        @yield('content')
+
+    </main><!-- /.container -->
+
+    <!-- shortcut/suggest component -->
+    <link href="/css/shortcut.css?v={{config('app.asset_version')}}" rel=stylesheet>
+    <script src="/js/shortcut.js?v={{config('app.asset_version')}}" type="application/javascript"></script>
+
+    <!-- script to handle history/back/forward for mc/xxx pages
+    + all other JS initialization needed in fastLoaded pages  -->
+    <script src="/js/find-event-handlers.js?v={{config('app.asset_version')}}" type="application/javascript"></script>
+
+    <script>
+        window.noMc = true;
+    </script>
+
+    <script src="/js/mc.js?v={{config('app.asset_version')}}" type="application/javascript"></script>
+
+    <script>
+        $(document).ready(function() {
+            const debounce = (func, wait) => {
+                let timeout;
+                return function executedFunction(...args) {
+                    const later = () => {
+                        clearTimeout(timeout);
+                        func(...args);
+                    };
+                    clearTimeout(timeout);
+                    timeout = setTimeout(later, wait);
+                };
+            };
+            var lastTerm = '';
+            var returnedFunction = debounce(function() {
+                var term = $.trim($('#patient-search').val());
+                if (!!term && lastTerm !== term) {
+                    $.get('/patients-suggest?term=' + term, function(_data) {
+                        $('.suggestions-outer').html(_data).removeClass('d-none');
+                    });
+                    lastTerm = term;
+                } else {
+                    $('.suggestions-outer').addClass('d-none');
+                }
+            }, 250);
+            $('#patient-search')
+                .on('keydown', function(e) {
+                    var term = $.trim($('#patient-search').val());
+                    var activeItem = $('.suggestions-outer .suggest-item.active');
+                    switch (e.which) {
+                        case 27:
+                            $('.suggestions-outer').addClass('d-none');
+                            return false;
+                        case 38:
+                            if (activeItem.prev().length) {
+                                activeItem.prev()
+                                    .addClass('active')
+                                    .siblings().removeClass('active');
+                                activeItem = $('.suggestions-outer .suggest-item.active');
+                                if (activeItem.length) {
+                                    activeItem[0].scrollIntoView();
+                                }
+                            }
+                            return false;
+                        case 40:
+                            if (activeItem.next().length) {
+                                activeItem.next()
+                                    .addClass('active')
+                                    .siblings().removeClass('active');
+                                activeItem = $('.suggestions-outer .suggest-item.active');
+                                if (activeItem.length) {
+                                    activeItem[0].scrollIntoView();
+                                }
+                            }
+                            return false;
+                        case 13:
+                            if (activeItem.length) {
+                                activeItem.first().click();
+                            }
+                            return false;
+                        default:
+                            if (!!term) {
+                                $('.suggestions-outer')
+                                    .html('<span class="d-block no-suggest-items">Searching...</span>')
+                                    .removeClass('d-none');
+                                returnedFunction();
+                            } else {
+                                $('.suggestions-outer').addClass('d-none');
+                            }
+                            break;
+                    }
+                })
+                .on('keypress', function(e) {
+                    var term = $.trim($('#patient-search').val());
+                    if (!!term) {
+                        $('.suggestions-outer')
+                            .html('<span class="d-block no-suggest-items">Searching...</span>')
+                            .removeClass('d-none');
+                        returnedFunction();
+                    } else {
+                        $('.suggestions-outer').addClass('d-none');
+                    }
+                });
+            $(document).on('click', '.suggest-item.patient-suggest[data-target-uid]', function() {
+                $('#patient-search').val('');
+                $('.suggestions-outer').addClass('d-none');
+                fastLoad('/patients/view/' + $(this).attr('data-target-uid'), true, false, false);
+                return false;
+            });
+        });
+    </script>
+    <script>
+        function showStagPopup(_key) {
+            $('html, body').addClass('no-scroll');
+            let stagPopup = $('[stag-popup-key="' + _key + '"]');
+            stagPopup.addClass('show');
+            stagPopup.find('[moe][initialized]').removeAttr('initialized');
+            initMoes();
+            return false;
+        }
+        function submitStagPopup(_form) {
+            if(!_form[0].checkValidity()) {
+                _form[0].reportValidity();
+                return false;
+            }
+            showMask();
+            $.post(_form.attr('action'), _form.serialize(), function(_data) {
+                fastReload();
+            });
+            return false;
+        }
+        function closeStagPopup() {
+            $('.stag-popup').removeClass('show');
+            $('html, body').removeClass('no-scroll');
+            return false;
+        }
+        (function() {
+            window.initStagPopupEvents = function () {
+                $(document).on('click', '.stag-popup', function(_e) {
+                    if($(_e.target).is('.stag-popup')) {
+                        closeStagPopup();
+                    }
+                });
+            }
+            addMCInitializer('stag-popups', window.initStagPopupEvents);
+        })();
+    </script>
+
+</body>
+
+</html>

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

@@ -332,17 +332,21 @@ $addressParts .= implode(", ", $addressPart2);
           </div>
         </div>
         @endif
+        <?php $_cpc = $patient->getPrimaryCoverage(); ?>
         <div class="d-flex">
           <div>DOB: {{friendly_date($patient->dob, false,null, true)}} </div>
-          @if($patient->getPrimaryCoverage() && $patient->getPrimaryCoverageStatus() === 'YES')
+          @if($_cpc && $patient->getPrimaryCoverageStatus() === 'YES')
             <div class="text-nowrap screen-only ml-2 pl-2 border-left">
-              {{$patient->getPrimaryCoverage()->insuranceDisplayPayerName()}}
+              {{$_cpc->insuranceDisplayPayerName()}}
               <span class="on-hover-show d-inline-block on-hover-opaque">
                 <i class="fa fa-check-circle text-success"></i>
                 <div class="on-hover-content py-2 pl-3 text-nowrap">
                   Covered
                 </div>
               </span> 
+                @if($_cpc->is_manually_determined)
+                  <i class="ml-1 fas fa-code-branch text-info" title="Manually determined at {{ friendly_date($_cpc->created_at) }}"></i>
+                @endif
             </div>
             @if($performer->pro->pro_type == 'ADMIN')
               @if(@$patient->mpb_remaining)

+ 1 - 1
resources/views/layouts/patient.blade.php

@@ -240,7 +240,7 @@ $isOldClient = (date_diff(date_create(config('app.point_impl_date')), date_creat
 						<a class="nav-link {{ strpos($routeName, 'patients.view.eligible-refreshes') === 0 ? 'active' : '' }}" href="{{ route('patients.view.eligible-refreshes', $patient) }}">Eligible Refreshes</a>
 					</li>
 					<li class="nav-item">
-						<a class="nav-link {{ strpos($routeName, 'patients.view.insurance-coverage') === 0 ? 'active' : '' }}" href="{{ route('patients.view.insurance-coverage', $patient) }}">Insurance Coverage</a>
+						<a class="nav-link {{ strpos($routeName, 'patients.view.insurance-coverage') === 0 ? 'active' : '' }}" href="{{ route('patients.view.insurance-coverage-history', $patient) }}">Insurance Coverage History</a>
 					</li>
 
 					<li class="nav-item">

+ 2 - 2
resources/views/layouts/template.blade.php

@@ -314,9 +314,9 @@
             </div>
         </div>
 
-        <a href="#" class="stag_rhs_toggle d-none d-md-block text-white" title="Toggle Video Pane">
+        <!--<a href="#" class="stag_rhs_toggle d-none d-md-block text-white" title="Toggle Video Pane">
             <i class="fa fa-arrow-right"></i>
-        </a>
+        </a>-->
     </nav>
 
     <main role="main" class="stag-content px-0">

+ 2 - 0
routes/web.php

@@ -247,6 +247,7 @@ Route::middleware('pro.auth')->group(function () {
     });
 
     // ic pages - client facing
+    Route::get('/ic/home/{customerSlug}', 'InvoiceController@icCustomerPortal')->name('icCustomerPortal');
     Route::get('/ic/pay/{invoiceSlug}', 'InvoiceController@icPayInvoice')->name('icPayInvoice');
 
     Route::name('practice-management.')->prefix('practice-management')->group(function () {
@@ -550,6 +551,7 @@ Route::middleware('pro.auth')->group(function () {
             Route::get('documents', 'PatientController@documents')->name('documents');
             Route::get('incoming-reports/{currentReport?}', 'PatientController@incomingReports')->name('incoming-reports');
             Route::get('education', 'PatientController@education')->name('education');
+            Route::get('insurance-coverage-history', 'PatientController@insuranceCoverageHistory')->name('insurance-coverage-history');
             Route::get('messaging', 'PatientController@messaging')->name('messaging');
             Route::get('duplicate', 'PatientController@duplicate')->name('duplicate');
             Route::get('care-months', 'PatientController@careMonths')->name('care-months');