123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425 |
- @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 ">Patients </a>
- </th>
- </tr>
- <tr>
- <th class="px-2 text-center">{{$pro->patientsAwaitingMcpVisitCountAsDna()}}<th>
- <th class="pl-2">
- <a class="font-weight-normal" href="{{route('dna.patients_awaiting_mcp_visit')}}" native target="_blank" open-in-stag-popup popup-style="tall" title="Patients Awaiting MCP Visit">Patients Awaiting MCP Visit</a>
- </th>
- </tr>
- <tr>
- <th class="px-2 text-center">{{$pro->patientsWithoutAppointmentCountAsDna()}}<th>
- <th class="pl-2">
- <a class="font-weight-normal" href="{{route('dna.patients_without_appointment')}}" native target="_blank" open-in-stag-popup popup-style="tall" title="Patients w/o Appointment ">Patients w/o Appointment </a>
- </th>
- </tr>
- <tr>
- <th class="px-2 text-center">{{$pro->encountersPendingMyReviewCountAsDna()}}<th>
- <th class="pl-2">
- <a class="font-weight-normal" href="{{route('dna.encounters_pending_my_review')}}" native target="_blank" open-in-stag-popup popup-style="tall" title="Encounters Pending My Review ">Encounters Pending My Review </a>
- </th>
- </tr>
- <tr>
- <th class="px-2 text-center">{{$pro->encountersInProgressCountAsDna()}}<th>
- <th class="pl-2">
- <a class="font-weight-normal" href="{{route('dna.encounters_in_progress')}}" native target="_blank" open-in-stag-popup popup-style="tall" title="Encounters In Progress">Encounters In Progress</a>
- </th>
- </tr>
- <tr>
- <th class="px-2 text-center">{{$pro->appointmentsPendingConfirmationCountAsDna()}}<th>
- <th class="pl-2">
- <a class="font-weight-normal" href="{{route('dna.appointments_pending_confirmation')}}" native target="_blank" open-in-stag-popup popup-style="tall" title="Appointments Pending Confirmation">Appointments Pending Confirmation</a>
- </th>
- </tr>
- <tr>
- <th class="px-2 text-center">{{$pro->cancelledAppointmentsPendingAckCountAsDna()}}<th>
- <th class="pl-2">
- <a class="font-weight-normal" href="{{route('dna.cancelled_appointments_pending_ack')}}" native target="_blank" open-in-stag-popup popup-style="tall" title="Cancelled Appointments Pending Ack.">Cancelled Appointments Pending Ack.</a>
- </th>
- </tr>
- <tr>
- <th class="px-2 text-center">{{$pro->reportsPendingAckCountAsDna()}}<th>
- <th class="pl-2">
- <a class="font-weight-normal" href="{{route('dna.reports_pending_ack')}}" native target="_blank" open-in-stag-popup popup-style="tall" title="Reports Pending Ack.">Reports Pending Ack.</a>
- </th>
- </tr>
- <tr>
- <th class="px-2 text-center">{{$pro->supplyOrdersPendingMyAckCountAsDna()}}<th>
- <th class="pl-2">
- <a class="font-weight-normal" href="{{route('dna.supply_orders_pending_my_ack')}}" native target="_blank" open-in-stag-popup popup-style="tall" title="Supply Orders Pending My Ack.">Supply Orders Pending My Ack.</a>
- </th>
- </tr>
- <tr>
- <th class="px-2 text-center">{{$pro->supplyOrdersPendingHcpApprovalCountAsDna()}}<th>
- <th class="pl-2">
- <a class="font-weight-normal" href="{{route('dna.supply_orders_pending_hcp_approval')}}" native target="_blank" open-in-stag-popup popup-style="tall" title="Supply Orders Pending HCP Approval">Supply Orders Pending HCP Approval</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">
- <!-- APPOINTMENTS -->
- <div id="dna-dashboard-appointments" class="mb-4">
- </div>
- <!-- MEASUREMENTS -->
- <div class="card mb-4">
- <div class="card-header pl-2">
- <strong>
- Recent Measurements
- </strong>
- </div>
- <div class="card-body p-0">
- @include('app.dna.dashboard.measurements-pending-stamping')
- </div>
- </div>
- <!-- ENCOUNTERS PENDING MY REVIEW -->
- <div class="card mb-4">
- <div class="card-header pl-2">
- <strong>
- Encounters Pending My Review
- </strong>
- </div>
- <div class="card-body p-0">
- @include('app.dna.dashboard.encounters_pending_my_review_dashboard')
- </div>
- </div>
- <!-- ENCOUNTERS IN PROGRESS -->
- <div class="card mb-4">
- <div class="card-header pl-2">
- <strong>
- Encounters In Progress
- </strong>
- </div>
- <div class="card-body p-0">
- @include('app.dna.dashboard.encounters_in_progress_dashboard')
- </div>
- </div>
- <!-- PATIENTS WITHOUT APPOINTMENTS -->
- <div class="card mb-4">
- <div class="card-header pl-2">
- <strong>
- Patients Without Appointments
- </strong>
- </div>
- <div class="card-body p-0">
- @include('app.dna.dashboard.patients_without_appointment_dashboard')
- </div>
- </div>
- @if($pro->is_considered_for_supervising_physician)
- <!-- 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.ps.dashboard.client-charts-pending-my-review')
- </div>
- </div>
- @endif
- </div>
- <div class="col-md-6 mcp-theme-1">
- <div class="card mb-4">
- <div class="card-header pl-2">
- <strong>
- Notifications
- </strong>
- </div>
- <div class="card-body px-3 py-2">
- @include('app.dna.dashboard.notifications')
- </div>
- </div>
- <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 class="card mb-4">
- <div class="card-header pl-2">
- <strong>
- Phone Calls & Memos
- </strong>
- </div>
- <div class="card-body p-0">
- @include('app.dna.dashboard.calls_memos')
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- <div class="stag-popup stag-popup-md ticket-popup mcp-theme-1" stag-popup-key="ticket-popup"></div>
- <script>
- (function () {
- 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 + '?for=na', 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
|