|
@@ -1,7 +1,6 @@
|
|
@extends ('layouts.template')
|
|
@extends ('layouts.template')
|
|
|
|
|
|
@section('content')
|
|
@section('content')
|
|
-
|
|
|
|
<style>
|
|
<style>
|
|
#dashboard-mcp tr.thin th,
|
|
#dashboard-mcp tr.thin th,
|
|
#dashboard-mcp tr.thin td,
|
|
#dashboard-mcp tr.thin td,
|
|
@@ -17,113 +16,130 @@
|
|
</style>
|
|
</style>
|
|
|
|
|
|
<div id="dashboard-dna">
|
|
<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->activeClientReviewRequests->count()}}<th>
|
|
|
|
- <th class="pl-2">
|
|
|
|
- <a class="font-weight-normal" href="{{route('rd.client-review-requests', ['hideTitle' => true])}}" native target="_blank" open-in-stag-popup popup-style="tall" title="Charts Pending My Review">Charts Pending My Review </a>
|
|
|
|
- </th>
|
|
|
|
- </tr>
|
|
|
|
-
|
|
|
|
- </tbody>
|
|
|
|
- </table>
|
|
|
|
|
|
+ <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>
|
|
- </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 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->patientsCountAsRd() }}
|
|
|
|
+ <th>
|
|
|
|
+ <th class="pl-2">
|
|
|
|
+ <a class="font-weight-normal" href="{{ route('rd.patients') }}" native
|
|
|
|
+ target="_blank" open-in-stag-popup popup-style="tall"
|
|
|
|
+ title="Patients ">Patients </a>
|
|
|
|
+ </th>
|
|
|
|
+ </tr>
|
|
|
|
+ <tr>
|
|
|
|
+ <th class="px-2 text-center">{{ $pro->activeClientReviewRequests->count() }}
|
|
|
|
+ <th>
|
|
|
|
+ <th class="pl-2">
|
|
|
|
+ <a class="font-weight-normal"
|
|
|
|
+ href="{{ route('rd.client-review-requests', ['hideTitle' => true]) }}"
|
|
|
|
+ native target="_blank" open-in-stag-popup popup-style="tall"
|
|
|
|
+ title="Charts Pending My Review">Charts Pending My Review </a>
|
|
|
|
+ </th>
|
|
|
|
+ </tr>
|
|
|
|
+
|
|
|
|
+ </tbody>
|
|
|
|
+ </table>
|
|
|
|
+ </div>
|
|
</div>
|
|
</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.rd.dashboard.client-charts-pending-my-review')
|
|
|
|
- </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>
|
|
|
|
+ <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-6 mcp-theme-1">
|
|
|
|
- <div class="card mb-4">
|
|
|
|
- <div class="card-header pl-2">
|
|
|
|
- <strong>
|
|
|
|
- Messages
|
|
|
|
- </strong>
|
|
|
|
|
|
+ </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.rd.dashboard.client-charts-pending-my-review')
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
- <div class="card-body p-0">
|
|
|
|
- @include('app.dna.dashboard.messages')
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ </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>
|
|
</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>
|
|
<div class="stag-popup stag-popup-md ticket-popup mcp-theme-1" stag-popup-key="ticket-popup"></div>
|
|
|
|
|
|
<script>
|
|
<script>
|
|
- (function () {
|
|
|
|
|
|
+ (function() {
|
|
|
|
|
|
let datesWithEvents = [],
|
|
let datesWithEvents = [],
|
|
selectedDate = '{{ date('Y-m-d') }}',
|
|
selectedDate = '{{ date('Y-m-d') }}',
|
|
@@ -149,7 +165,7 @@
|
|
function onDateChange(_newDate) {
|
|
function onDateChange(_newDate) {
|
|
// ajax load appts list as markup directly from server
|
|
// ajax load appts list as markup directly from server
|
|
selectedDate = _newDate;
|
|
selectedDate = _newDate;
|
|
- $.get('/pro-dashboard-events-display/' + selectedDate + '/' + selectedDate, function (_data) {
|
|
|
|
|
|
+ $.get('/pro-dashboard-events-display/' + selectedDate + '/' + selectedDate, function(_data) {
|
|
let apptscontainer = $('#dna-dashboard-appointments');
|
|
let apptscontainer = $('#dna-dashboard-appointments');
|
|
apptscontainer.html(_data);
|
|
apptscontainer.html(_data);
|
|
initFastLoad(apptscontainer);
|
|
initFastLoad(apptscontainer);
|
|
@@ -158,7 +174,7 @@
|
|
}
|
|
}
|
|
|
|
|
|
function loadEventDates(_refDate = false) {
|
|
function loadEventDates(_refDate = false) {
|
|
- let today = new Date(_refDate ? _refDate : '{{date('Y-m-d')}}'),
|
|
|
|
|
|
+ let today = new Date(_refDate ? _refDate : '{{ date('Y-m-d') }}'),
|
|
firstOfMonth = new Date(today.getFullYear(), today.getMonth(), 1),
|
|
firstOfMonth = new Date(today.getFullYear(), today.getMonth(), 1),
|
|
lastOfMonth = new Date(today.getFullYear(), today.getMonth() + 1, 0);
|
|
lastOfMonth = new Date(today.getFullYear(), today.getMonth() + 1, 0);
|
|
selectedDate = null;
|
|
selectedDate = null;
|
|
@@ -166,15 +182,15 @@
|
|
$.get('/pro-dashboard-event-dates/' +
|
|
$.get('/pro-dashboard-event-dates/' +
|
|
formatDate(firstOfMonth) + '/' +
|
|
formatDate(firstOfMonth) + '/' +
|
|
formatDate(lastOfMonth), (_data) => {
|
|
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');
|
|
|
|
|
|
+ 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() {
|
|
function getFormattedCurrentDate() {
|
|
@@ -186,19 +202,19 @@
|
|
|
|
|
|
function init(_target = null) {
|
|
function init(_target = null) {
|
|
|
|
|
|
- if(_target && _target !== '.stag-content') return;
|
|
|
|
|
|
+ if (_target && _target !== '.stag-content') return;
|
|
|
|
|
|
calendarElem = $('.pro-dashboard-inline-calendar');
|
|
calendarElem = $('.pro-dashboard-inline-calendar');
|
|
calendarElem.datepicker({
|
|
calendarElem.datepicker({
|
|
dateFormat: 'yy-mm-dd',
|
|
dateFormat: 'yy-mm-dd',
|
|
- onSelect: function (_date) {
|
|
|
|
|
|
+ onSelect: function(_date) {
|
|
onDateChange(_date);
|
|
onDateChange(_date);
|
|
},
|
|
},
|
|
- onChangeMonthYear: function (_year, _month) {
|
|
|
|
|
|
+ onChangeMonthYear: function(_year, _month) {
|
|
let date = _year + '-' + (_month < 10 ? '0' : '') + _month + '-05';
|
|
let date = _year + '-' + (_month < 10 ? '0' : '') + _month + '-05';
|
|
loadEventDates(date);
|
|
loadEventDates(date);
|
|
},
|
|
},
|
|
- beforeShowDay: function (d) {
|
|
|
|
|
|
+ beforeShowDay: function(d) {
|
|
if (datesWithEvents && datesWithEvents.indexOf(formatDate(d)) !== -1) {
|
|
if (datesWithEvents && datesWithEvents.indexOf(formatDate(d)) !== -1) {
|
|
return [true, 'has-events'];
|
|
return [true, 'has-events'];
|
|
}
|
|
}
|
|
@@ -220,7 +236,7 @@
|
|
|
|
|
|
$(document)
|
|
$(document)
|
|
.off('click', '.ack-client-pro-change')
|
|
.off('click', '.ack-client-pro-change')
|
|
- .on('click', '.ack-client-pro-change', function () {
|
|
|
|
|
|
+ .on('click', '.ack-client-pro-change', function() {
|
|
let trigger = $(this).text('…');
|
|
let trigger = $(this).text('…');
|
|
$.post('/api/clientProChange/accept', {
|
|
$.post('/api/clientProChange/accept', {
|
|
uid: $(this).attr('data-uid')
|
|
uid: $(this).attr('data-uid')
|
|
@@ -231,7 +247,7 @@
|
|
doneElem.insertAfter(trigger);
|
|
doneElem.insertAfter(trigger);
|
|
setTimeout(() => {
|
|
setTimeout(() => {
|
|
let ackContainer = trigger.closest('.ack-container');
|
|
let ackContainer = trigger.closest('.ack-container');
|
|
- trigger.closest('div').slideUp('fast', function () {
|
|
|
|
|
|
+ trigger.closest('div').slideUp('fast', function() {
|
|
$(this).remove();
|
|
$(this).remove();
|
|
if (!ackContainer.find('>div').length) {
|
|
if (!ackContainer.find('>div').length) {
|
|
ackContainer.remove();
|
|
ackContainer.remove();
|
|
@@ -245,7 +261,7 @@
|
|
|
|
|
|
$(document)
|
|
$(document)
|
|
.off('click', '.ack-client-memo')
|
|
.off('click', '.ack-client-memo')
|
|
- .on('click', '.ack-client-memo', function () {
|
|
|
|
|
|
+ .on('click', '.ack-client-memo', function() {
|
|
let trigger = $(this).text('…');
|
|
let trigger = $(this).text('…');
|
|
$.post('/api/clientMemo/stamp', {
|
|
$.post('/api/clientMemo/stamp', {
|
|
uid: $(this).attr('data-uid')
|
|
uid: $(this).attr('data-uid')
|
|
@@ -268,7 +284,7 @@
|
|
|
|
|
|
$(document)
|
|
$(document)
|
|
.off('click', '.ack-pro-appt-update')
|
|
.off('click', '.ack-pro-appt-update')
|
|
- .on('click', '.ack-pro-appt-update', function () {
|
|
|
|
|
|
+ .on('click', '.ack-pro-appt-update', function() {
|
|
let trigger = $(this).text('…');
|
|
let trigger = $(this).text('…');
|
|
$.post('/api/appointmentConfirmationDecision/acknowledgeAsAppointmentPro', {
|
|
$.post('/api/appointmentConfirmationDecision/acknowledgeAsAppointmentPro', {
|
|
uid: $(this).attr('data-uid')
|
|
uid: $(this).attr('data-uid')
|
|
@@ -279,7 +295,7 @@
|
|
doneElem.insertAfter(trigger);
|
|
doneElem.insertAfter(trigger);
|
|
setTimeout(() => {
|
|
setTimeout(() => {
|
|
let ackContainer = trigger.closest('tbody');
|
|
let ackContainer = trigger.closest('tbody');
|
|
- trigger.closest('tr').slideUp('fast', function () {
|
|
|
|
|
|
+ trigger.closest('tr').slideUp('fast', function() {
|
|
$(this).remove();
|
|
$(this).remove();
|
|
if (!ackContainer.find('>tr').length) {
|
|
if (!ackContainer.find('>tr').length) {
|
|
ackContainer.remove();
|
|
ackContainer.remove();
|