Ver código fonte

added ps page

= 3 anos atrás
pai
commit
8fea4c510d

+ 13 - 1
app/Http/Controllers/HomeController.php

@@ -966,6 +966,15 @@ WHERE cl.shadow_pro_id IS NULL
         return view('app/dashboard-dna', compact( 'milliseconds'));
     }
 
+    public function dashboard_PS(Request $request){
+        $performer = $this->performer();
+        $pro = $performer->pro;
+        $performerProID = $performer->pro->id;
+
+        $milliseconds = strtotime(date('Y-m-d')) . '000'; //required by the calendar
+        return view('app/dashboard-ps', compact( 'milliseconds'));
+    }
+
     public function dashboard_ADMIN(Request $request){
         $keyNumbers = [];
 
@@ -1395,8 +1404,11 @@ WHERE cl.shadow_pro_id IS NULL
             return $this->dashboard_MCP($request);
         }elseif($pro->is_hcp){
             return $this->dashboard_HCP($request); //TODO for HCP
-        }else{
+        }elseif($pro->is_considered_for_dna){
             return $this->dashboard_DNA($request);
+        }else{
+            //check for physician supervisor here
+            return $this->dashboard_PS($request);
         }
     }
 

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

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

+ 302 - 0
resources/views/app/dashboard-ps.blade.php

@@ -0,0 +1,302 @@
+@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-dna table.appointments tr td {
+            vertical-align: middle;
+        }
+    </style>
+
+    <div id="dashboard-dna">
+    <div class="p-3">
+        <div class="">
+            <div class="row mcp-theme-1" id="pro-dashboard-container">
+                <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" stag-collapsible-card="dna-key-numbers">
+                        <div class="card-header pl-2">
+                            <strong>
+                                Key Numbers
+                            </strong>
+                        </div>
+                        <div class="card-body p-0">
+                            <table class="table table-sm mb-0">
+                                <tbody>
+                                    <tr>
+                                        <th class="px-2 text-center">{{$pro->patientsCountAsDna()}}<th>  
+                                        <th class="pl-2">
+                                            <a class="font-weight-normal" href="{{route('dna.my-patients')}}" native target="_blank" open-in-stag-popup popup-style="tall" title="Patients ">Charts Pending My Review </a>
+                                        </th>
+                                    </tr>
+                                    
+                                </tbody>
+                            </table>
+                        </div>
+                    </div>
+                    
+                    <div class="card mb-4" stag-collapsible-card="dna-practice-management" collapsed>
+                        <div class="card-header pl-2">
+                            <strong>
+                                Practice Management
+                            </strong>
+                        </div>
+                        <div class="card-body p-0">
+                            <table class="table table-sm mb-0">
+                                <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($performer->pro->getNextPaymentDateAsDna(), 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($performer->pro->balance)}}</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($performer->pro->getProcessingAmountAsDna())}}</th>
+                                    <th class="font-weight-normal pl-2"><a
+                                            href="/practice-management/bills-under-processing">Processing</a></th>
+                                </tr>
+
+                               
+                                </tbody>
+                            </table>
+                        </div>
+                    </div>
+                </div>
+                <div class="col-md-9">
+                    <div class="row mcp-theme-1">
+                        <div class="col-md-6 mcp-theme-1">
+                          
+
+                            <!-- ENCOUNTERS PENDING MY REVIEW -->
+                            <div class="card mb-4">
+                                <div class="card-header pl-2">
+                                    <strong>
+                                        Charts Pending My Review
+                                    </strong>
+                                </div>
+                                <div class="card-body p-0">
+                                    @include('app.dna.dashboard.encounters_pending_my_review_dashboard')
+                                </div>
+                            </div>
+
+                          
+
+                        </div>
+                        <div class="col-md-6 mcp-theme-1">
+                            <div class="card mb-4">
+                                <div class="card-header pl-2">
+                                    <strong>
+                                        Messages
+                                    </strong>
+                                </div>
+                                <div class="card-body p-0">
+                                    @include('app.dna.dashboard.messages')
+                                </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 () {
+
+            let datesWithEvents = [],
+                selectedDate = '{{ date('Y-m-d') }}',
+                calendarElem = null,
+                currentMonth = null,
+                currentYear = null,
+                appointmentsLoaded = false;
+
+            function formatDate(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('-');
+            }
+
+            function onDateChange(_newDate) {
+                // ajax load appts list as markup directly from server
+                selectedDate = _newDate;
+                $.get('/pro-dashboard-events-display/' + selectedDate + '/' + selectedDate, function (_data) {
+                    let apptscontainer = $('#dna-dashboard-appointments');
+                    apptscontainer.html(_data);
+                    initFastLoad(apptscontainer);
+                    initMoes();
+                });
+            }
+
+            function loadEventDates(_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);
+                selectedDate = null;
+                $('td.day.active').removeClass('active');
+                $.get('/pro-dashboard-event-dates/' +
+                    formatDate(firstOfMonth) + '/' +
+                    formatDate(lastOfMonth), (_data) => {
+                    datesWithEvents = _data;
+                    calendarElem.datepicker('refresh');
+                    currentMonth = firstOfMonth.getMonth();
+                    currentYear = firstOfMonth.getFullYear();
+                    if (!_refDate && $('td.day[data-date="{{$milliseconds}}"]:visible').length) {
+                        $('td.day[data-date="{{$milliseconds}}"]:visible').first().click();
+                    }
+                    appointmentsLoaded = true;
+                }, 'json');
+            }
+
+            function getFormattedCurrentDate() {
+                let date = new Date();
+                let day = date.getDate();
+                day = day < 10 ? '0' + day : day;
+                return date.getFullYear() + '-' + parseInt(date.getMonth() + 1) + '-' + day;
+            }
+
+            function init(_target = null) {
+
+                if(_target && _target !== '.stag-content') return;
+
+                calendarElem = $('.pro-dashboard-inline-calendar');
+                calendarElem.datepicker({
+                    dateFormat: 'yy-mm-dd',
+                    onSelect: function (_date) {
+                        onDateChange(_date);
+                    },
+                    onChangeMonthYear: function (_year, _month) {
+                        let date = _year + '-' + (_month < 10 ? '0' : '') + _month + '-05';
+                        loadEventDates(date);
+                    },
+                    beforeShowDay: function (d) {
+                        if (datesWithEvents && datesWithEvents.indexOf(formatDate(d)) !== -1) {
+                            return [true, 'has-events'];
+                        }
+                        return [true, 'no-events'];
+                    },
+                    defaultDate: 0
+                });
+
+                let date = new Date();
+                let day = date.getDate();
+                day = day < 10 ? '0' + day : day;
+                let mon = parseInt(date.getMonth() + 1);
+                mon = mon < 10 ? '0' + mon : mon;
+                let dateStr = date.getFullYear() + '-' + mon + '-' + day;
+                loadEventDates(dateStr);
+
+                onDateChange(getFormattedCurrentDate());
+                selectedDate = getFormattedCurrentDate();
+
+                $(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;
+                    });
+
+                addMCHook('refreshDashboardAppointments', function() {
+                    onDateChange(selectedDate);
+                });
+            }
+
+            addMCInitializer('pro-dashboard', init, '#pro-dashboard-container');
+        })();
+    </script>
+@endsection

+ 16 - 8
resources/views/layouts/template.blade.php

@@ -113,9 +113,11 @@
                             <i class="mr-1 fas fa-calendar-alt"></i> Appointments
                         </a>
                     </li>
-                @else
+                @elseif($pro->is_considered_for_dna)
                     <li class="nav-item"><a class="nav-link" href="{{ route('dna.dashboard') }}"><i class="mr-1 fas fa-home"></i> Home</a> </li>
                     <li class="nav-item"><a class="nav-link" href="{{ route('dna.patients') }}"><i class="mr-1 fas fa-user"></i> Patients</a> </li>
+                @else 
+                    <li class="nav-item"><a class="nav-link" href="{{ route('ps.dashboard') }}"><i class="mr-1 fas fa-home"></i> Home</a> </li>
                 @endif
 
 
@@ -137,11 +139,18 @@
                         @if($pro->is_considered_for_rme)
                         <a class="dropdown-item" href="{{ route('practice-management.rpm-matrix-rme') }}">RPM (RME)</a>
                         @endif
-                        <a class="dropdown-item" href="{{ route('practice-management.client-ccm-rm-status') }}">Client RM Status</a>
-
-                        <a class="dropdown-item" href="{{ route('practice-management.myTickets') }}">My Tickets</a>
-                        <a class="dropdown-item" href="{{ route('practice-management.myTextShortcuts') }}">My Text Shortcuts</a>
-                        <a class="dropdown-item" href="{{ route('practice-management.myFavorites') }}">My Favorites</a>
+                        @if( $pro->pro_type== 'ADMIN' || $pro->is_enrolled_as_mcp || $pro->is_considered_for_rmm || $pro->is_considered_for_rme || $pro->is_considered_for_dna)
+                            <a class="dropdown-item" href="{{ route('practice-management.client-ccm-rm-status') }}">Client RM Status</a>
+                            <a class="dropdown-item" href="{{ route('practice-management.myTickets') }}">My Tickets</a>
+                            <a class="dropdown-item" href="{{ route('practice-management.myTextShortcuts') }}">My Text Shortcuts</a>
+                            <a class="dropdown-item" href="{{ route('practice-management.myFavorites') }}">My Favorites</a>
+                            <a class="dropdown-item" href="{{ route('practice-management.my-flyers') }}">My Flyers</a>
+                            <a class="dropdown-item" href="{{ route('practice-management.notes-pending-physician-supervisor-stamping') }}">Notes Pending Physician Supervisor Stamping</a>
+                        @else 
+                            <a class="dropdown-item" href="{{ route('practice-management.myFavorites') }}">My Patient Chart Review Requests</a>
+                            <a class="dropdown-item" href="{{ route('practice-management.myTickets') }}">My Bills</a>
+                            <a class="dropdown-item" href="{{ route('practice-management.financialTransactions') }}">Financial Transactions</a>
+                        @endif
 
                         @if($pro->is_enrolled_as_mcp && $pro->is_considered_for_mcp_assignment)
 
@@ -174,8 +183,7 @@
                             <a class="dropdown-item" href="{{ route('dna.myBills') }}">My Bills</a>
                             <a class="dropdown-item" href="{{ route('dna.myClinicalTeams') }}">My Clinical Teams</a>
                         @endif
-                        <a class="dropdown-item" href="{{ route('practice-management.my-flyers') }}">My Flyers</a>
-                        <a class="dropdown-item" href="{{ route('practice-management.notes-pending-physician-supervisor-stamping') }}">Notes Pending Physician Supervisor Stamping</a>
+                       
                     </div>
                 </li>
 

+ 9 - 0
routes/web.php

@@ -201,6 +201,15 @@ Route::middleware('pro.auth')->group(function () {
         });
     });
 
+
+    Route::name('ps.')->prefix('ps')->group(function () {
+
+        Route::get('dashboard', 'HomeController@dashboard_PS')->name('dashboard');
+
+    });
+    
+
+
     //Route::get('test-gsheet', 'GsheetController@testGsheet');
 
     Route::name('admin.')->prefix('a')->middleware('pro.auth.admin')->group(function () {