Эх сурвалжийг харах

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

= 4 жил өмнө
parent
commit
47b2f07edd

+ 14 - 2
app/Http/Controllers/HomeController.php

@@ -10,6 +10,7 @@ use App\Models\Facility;
 use App\Models\IncomingReport;
 use App\Models\MBPayer;
 use App\Models\ProProAccess;
+use App\Models\SupplyOrder;
 use App\Models\Ticket;
 use DateTime;
 
@@ -319,6 +320,12 @@ class HomeController extends Controller
             ->where('is_open', true)
             ->orderBy('created_at', 'ASC')
             ->get();
+        $supplyOrders = SupplyOrder::where('is_cleared_for_shipment', false)
+            ->where('is_cancelled', false)
+            ->whereRaw('created_by_session_id IN (SELECT id FROM app_session where pro_id = ?)', [$performer->pro->id])
+            ->orderBy('created_at', 'ASC')
+            ->get();
+
         $numERx = Ticket::where('ordering_pro_id', $performerProID)
             ->where('category', 'erx')
             ->where('is_entry_error', false)
@@ -334,9 +341,14 @@ class HomeController extends Controller
             ->where('is_entry_error', false)
             ->where('is_open', true)
             ->count();
+        $numSupplyOrders = SupplyOrder::where('is_cleared_for_shipment', false)
+            ->where('is_cancelled', false)
+            ->whereRaw('created_by_session_id IN (SELECT id FROM app_session where pro_id = ?)', [$performer->pro->id])
+            ->count();
 
         return view('app/dashboard', compact('keyNumbers', 'reimbursement', 'milliseconds', 'measurements', 'businessNumbers',
-            'incomingReports', 'tickets', 'numERx', 'numLabs', 'numImaging'));
+            'incomingReports', 'tickets', 'supplyOrders',
+            'numERx', 'numLabs', 'numImaging', 'numSupplyOrders'));
     }
 
     public function dashboardAppointments(Request $request, $from, $to) {
@@ -421,7 +433,7 @@ class HomeController extends Controller
             default:
                 break;
         }
-        $patients = $query->orderBy('id', 'desc')->paginate(500);
+        $patients = $query->orderBy('id', 'desc')->paginate(50);
         return view('app/patients', compact('patients', 'filter'));
     }
 

+ 10 - 1
app/Http/Controllers/NoteController.php

@@ -3,6 +3,7 @@
 namespace App\Http\Controllers;
 
 use App\Models\Pro;
+use App\Models\Ticket;
 use Illuminate\Http\Request;
 use Illuminate\Support\Collection;
 use Illuminate\Support\Facades\Http;
@@ -32,7 +33,15 @@ class NoteController extends Controller
         }
 
         $allyPros = Pro::all(); //TODO: paginate, use select2
-        return view('app.patient.note.dashboard', compact('patient', 'note', 'allyPros', 'allSections'));
+
+        // load today's tickets for patient
+        $ticketsToday = Ticket::where('client_id', $patient->id)
+            ->where('is_entry_error', false)
+            ->whereRaw('DATE(created_at) = ?', [date('Y-m-d')])
+            ->get();
+
+        return view('app.patient.note.dashboard', compact('patient', 'note',
+            'allyPros', 'allSections', 'ticketsToday'));
     }
 
     public function renderNote($noteUid, Request $request)

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

@@ -350,7 +350,7 @@ class PatientController extends Controller
 
     public function supplyOrders(Request $request, Client $patient, SupplyOrder $supplyOrder = null)
     {
-        $products = Product::where('is_active', true)->orderBy('title')->get();
+        $products = Product::where('is_active', true)->orderBy('created_at', 'desc')->get();
         return view('app.patient.supply-orders', compact('patient', 'supplyOrder', 'products'));
     }
 

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

@@ -157,6 +157,13 @@
                             Imaging ({{$numImaging}})
                         </a>
                     </li>
+                    <li class="nav-item">
+                        <a native data-tab="supply_orders" class="nav-link {{$numSupplyOrders ? 'text-danger font-weight-bold' : ''}}"
+                           :class="tab == 'supply_orders' ? 'active' : ''" href="#"
+                           v-on:click.prevent="tab='supply_orders'">
+                            Supply Orders ({{$numSupplyOrders}})
+                        </a>
+                    </li>
                 </ul>
 
                 <div class="border-left border-right border-bottom p-3">
@@ -237,6 +244,9 @@
                     <div v-show="tab==='imaging'">
                         @include('app.dashboard.imaging')
                     </div>
+                    <div v-show="tab==='supply_orders'">
+                        @include('app.dashboard.supply_orders')
+                    </div>
                 </div>
             </div>
         </div>

+ 1 - 1
resources/views/app/dashboard/erx.blade.php

@@ -1,5 +1,5 @@
 <div class="d-flex align-items-end mb-3">
-    <b class="large">Open ERx Orders</b>
+    <b class="large">ERx - Open</b>
 </div>
 <table class="table table-sm table-bordered mb-0">
     <thead>

+ 1 - 1
resources/views/app/dashboard/imaging.blade.php

@@ -1,5 +1,5 @@
 <div class="d-flex align-items-end mb-3">
-    <b class="large">Open Imaging Orders</b>
+    <b class="large">Imaging - Open</b>
 </div>
 <table class="table table-sm table-bordered mb-0">
     <thead>

+ 6 - 0
resources/views/app/dashboard/incoming_reports.blade.php

@@ -5,6 +5,7 @@
     <thead>
     <tr>
         <th class="px-2 text-secondary">Created</th>
+        <th class="px-2 text-secondary">Patient</th>
         <th class="px-2 text-secondary">Report</th>
         <th class="px-2 text-secondary">Sign</th>
         <th class="px-2 text-secondary">Title</th>
@@ -21,6 +22,11 @@
                     {{friendlier_date_time($document->created_at)}}
                 </a>
             </td>
+            <td class="px-2 text-nowrap">
+                <a href="/patients/view/{{$document->patient->uid}}/tickets/erx">
+                    {{$document->patient->displayName()}}
+                </a>
+            </td>
             <td class="px-2">
                 <div class="d-flex align-items-center">
                     <a class="pdf-viewer-trigger" native target="_blank"

+ 1 - 1
resources/views/app/dashboard/labs.blade.php

@@ -1,5 +1,5 @@
 <div class="d-flex align-items-end mb-3">
-    <b class="large">Open Lab Orders</b>
+    <b class="large">Labs - Open</b>
 </div>
 <table class="table table-sm table-bordered mb-0">
     <thead>

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

@@ -0,0 +1,62 @@
+<div class="d-flex align-items-end mb-3">
+    <b class="large">Supply Orders not cleared for shipment</b>
+</div>
+<table class="table table-sm table-bordered mb-0" style="table-layout: fixed">
+    @if($supplyOrders && count($supplyOrders))
+        <thead>
+        <tr class="bg-light">
+            <th class="px-2 text-nowrap text-secondary border-bottom-0"><div class="text-ellipsis">Created At</div></th>
+            <th class="px-2 text-nowrap text-secondary border-bottom-0"><div class="text-ellipsis">Patient</div></th>
+            <th class="px-2 text-nowrap text-secondary border-bottom-0"><div class="text-ellipsis">Title</div></th>
+            <th class="px-2 text-nowrap text-secondary border-bottom-0"><div class="text-ellipsis">Reason</div></th>
+            <th class="px-2 text-nowrap text-secondary border-bottom-0"><div class="text-ellipsis">Pro Signed?</div></th>
+            <th class="px-2 text-nowrap text-secondary border-bottom-0"><div class="text-ellipsis">Cancelled?</div></th>
+            <th class="px-2 text-nowrap text-secondary border-bottom-0"><div class="text-ellipsis">Shipment</div></th>
+        </tr>
+        </thead>
+        <tbody>
+        @foreach($supplyOrders as $supplyOrder)
+            <tr>
+                <td class="px-2">
+                    <a href="{{route('patients.view.supply-orders', ['patient' => $supplyOrder->client, 'supplyOrder' => $supplyOrder])}}">
+                        {{ friendlier_date_time($supplyOrder->created_at) }}
+                    </a>
+                </td>
+                <td class="px-2 text-nowrap">
+                    <a href="/patients/view/{{$supplyOrder->client->uid}}/tickets/erx">
+                        {{$supplyOrder->client->displayName()}}
+                    </a>
+                </td>
+                <td class="px-2">
+                    {{ $supplyOrder->product->title }}
+                </td>
+                <td class="px-2">{{ $supplyOrder->reason }}</td>
+                <td class="px-2">{{ $supplyOrder->is_signed_by_pro ? $supplyOrder->signedPro->displayName() : '-' }}</td>
+                <td class="px-2">{{ $supplyOrder->is_cancelled ? 'Yes' : 'No' }}</td>
+                <td class="px-2">
+                    @if($supplyOrder->shipment_id)
+                        <i class="fa fa-building"></i>
+                        {{$supplyOrder->shipment->status ? $supplyOrder->shipment->status : 'CREATED'}}
+                    @elseif($supplyOrder->is_cleared_for_shipment)
+                        <span class="text-info">
+                                            <i class="fa fa-user-nurse"></i>
+                                            Cleared for shipment
+                                        </span>
+                    @else
+                        <span class="text-warning-mellow">
+                                            <i class="fa fa-user-nurse"></i>
+                                            Not cleared for shipment
+                                        </span>
+                    @endif
+                </td>
+            </tr>
+        @endforeach
+        </tbody>
+    @else
+        <tbody>
+        <tr>
+            <td class="text-secondary p-3">No supply orders have been created for this patient</td>
+        </tr>
+        </tbody>
+    @endif
+</table>

+ 13 - 0
resources/views/app/patient/canvas-sections/rx/form.blade.php

@@ -274,6 +274,19 @@ $formID = rand(0, 100000);
                             });
                             $(elem).attr('ac-initialized', 1);
                             $(strengthElem).attr('ac-initialized', 1);
+
+                            // if medication already filled, fetch and set strenths autocomplete
+                            if($.trim($(this).val()) !== '') {
+                                $.get('https://clinicaltables.nlm.nih.gov/api/rxterms/v3/search?' +
+                                    'terms=' + encodeURIComponent($.trim($(this).val())) +
+                                    '&maxList=1' +
+                                    '&ef=STRENGTHS_AND_FORMS', _data => {
+                                    console.log('ALIX', _data);
+                                    if(_data && _data.length >= 1 && _data[2].STRENGTHS_AND_FORMS && _data[2].STRENGTHS_AND_FORMS[0]) {
+                                        strengthElem.autocomp.setListAndField(_data[2].STRENGTHS_AND_FORMS[0], '', true);
+                                    }
+                                }, 'json');
+                            }
                         });
                     },
                     isFavorite: function(_item) {

+ 3 - 2
resources/views/app/patient/note/_create-claim.blade.php

@@ -79,7 +79,7 @@
                     {
                         cpt: '',
                         dateOfService: '{{date('Y-m-d')}}',
-                        icds: window.noteReasons
+                        icds: JSON.parse(JSON.stringify(window.noteReasons))
                     }
                 ]
             }
@@ -89,7 +89,7 @@
                 this.payload.lines.push({
                     cpt: '',
                     dateOfService: '{{date('Y-m-d')}}',
-                    icds: window.noteReasons
+                    icds: JSON.parse(JSON.stringify(window.noteReasons))
                 });
                 Vue.nextTick(() => {
                     this.initICDAutoSuggest();
@@ -131,6 +131,7 @@
                     );
                     window.Def.Autocompleter.Event.observeListSelections(dynID, function () {
                         let acData = elem.autocomp.getSelectedItemData();
+                        console.log('ALIX', lineIndex, icdIndex);
                         self.payload.lines[lineIndex].icds[icdIndex].code = acData[0].code;
                         self.payload.lines[lineIndex].icds[icdIndex].description = acData[0].data.name;
                         return false;

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

@@ -20,7 +20,7 @@
     }
     ?>
 
-    <div class="pt-2 pb-3 d-flex align-items-start">
+    <div id="note-single-header" class="pt-2 pb-3 d-flex align-items-start">
         <h6 class="my-0 text-secondary d-flex align-items-start w-100">
             <a href="/patients/view/{{ $patient->uid }}/notes" class="small text-decoration-none mr-3">
                 <i class="fa fa-chevron-left"></i>
@@ -355,6 +355,127 @@
 
                 <span class="d-none latest-section-ts">{{ $latestSectionTS }}</span>
 
+                <div class="p-3 border-bottom">
+                    <div class="">
+                        <div class="d-flex align-items-center mb-2">
+                            <p class="font-weight-bold text-secondary m-0 mr-2">ERx/Orders Summary - {{date('m/d/Y')}}</p>
+                        </div>
+                        <div>
+                            @if($ticketsToday && count($ticketsToday))
+                                <table class="table table-sm table-bordered mb-0">
+                                <thead>
+                                <tr class="bg-light">
+                                    <th class="px-2 text-secondary border-bottom-0 width-30px">Created</th>
+                                    <th class="px-2 text-secondary border-bottom-0 width-30px">Type</th>
+                                    <th class="px-2 text-secondary border-bottom-0 width-30px">Pro</th>
+                                    <th class="px-2 text-secondary border-bottom-0 width-30px">View</th>
+                                    <th class="px-2 text-secondary border-bottom-0 width-30px">Status</th>
+                                    <th class="px-2 text-secondary border-bottom-0">Detail</th>
+                                </tr>
+                                </thead>
+                                <tbody>
+                                @foreach($ticketsToday as $ticket)
+                                    <?php $data = json_decode($ticket->data); ?>
+                                    @if($ticket->category === 'erx' || $ticket->category === 'lab' || $ticket->category === 'imaging')
+                                    <tr class="{{$ticket->is_open ? '' : 'bg-light on-hover-opaque'}}">
+                                        <td class="px-2 text-nowrap">
+                                            {{friendly_time($ticket->created_at)}}
+                                        </td>
+                                        <td class="px-2 text-nowrap">
+                                            {{$ticket->category}}
+                                        </td>
+                                        <td class="px-2 text-nowrap">
+                                            @if($ticket->orderingPro)
+                                                @if($ticket->orderingPro->id !== $pro->id)
+                                                    <b>{{$ticket->orderingPro->displayName()}}</b>
+                                                @else
+                                                    You
+                                                @endif
+                                            @else
+                                                -
+                                            @endif
+                                        </td>
+                                        <td class="px-2 text-nowrap">
+                                            <div class="d-flex align-items-center flex-nowrap">
+                                                <a href="/patients/view/{{$ticket->patient->uid}}/tickets/{{$ticket->category}}/{{$ticket->uid}}?popupmode=1"
+                                                   native target="_blank"
+                                                   class="ticket-popup-trigger note-dashboard-action d-block text-nowrap mr-3">
+                                                    View
+                                                </a>
+                                            </div>
+                                        </td>
+                                        <td class="px-2 text-nowrap">
+                                            {{$ticket->is_open ? 'Open' : 'Closed'}}
+                                        </td>
+                                        <td class="px-2">
+                                        @if($ticket->category === 'erx')
+                                            <div class="font-size-13 mb-1">{{$data->medication}}</div>
+                                            <div class="d-flex align-items-center flex-wrap text-secondary">
+                                                @if($data->strength)
+                                                    <span class="d-inline-flex align-items-center">
+                                                        <span class="mx-2 text-secondary">•</span>
+                                                        <span>{{$data->strength}}</span>
+                                                    </span>
+                                                @endif
+                                                @if($data->route)
+                                                    <span class="d-inline-flex align-items-center">
+                                                        <span class="mx-2 text-secondary">•</span>
+                                                        <span>{{$data->route}}</span>
+                                                    </span>
+                                                @endif
+                                                @if($data->frequency)
+                                                    <span class="d-inline-flex align-items-center">
+                                                        <span class="mx-2 text-secondary">•</span>
+                                                        <span>{{$data->frequency}}</span>
+                                                    </span>
+                                                @endif
+                                                @if($data->dispense)
+                                                    <span class="d-inline-flex align-items-center">
+                                                        <span class="mx-2 text-secondary">•</span>
+                                                        <span>Dispense:</span> {{$data->dispense}}
+                                                    </span>
+                                                @endif
+                                                @if($data->frequency)
+                                                    <span class="d-inline-flex align-items-center">
+                                                        <span class="mx-2 text-secondary">•</span>
+                                                        <span><span>Refills:</span> {{$data->refills}}</span>
+                                                    </span>
+                                                @endif
+                                                @if($data->dispense)
+                                                    <span class="d-inline-flex align-items-center">
+                                                        <span class="mx-2 text-secondary">•</span>
+                                                        <span><span>Purpose:</span> {{$data->purpose}}</span>
+                                                    </span>
+                                                @endif
+                                            </div>
+                                        @endif
+                                        @if($ticket->category === 'lab' || $ticket->category === 'imaging')
+                                            @if(@$data->tests && is_array($data->tests))
+                                                <div>
+                                                    <span class="text-secondary">Tests:</span>
+                                                    {{implode(", ", $data->tests)}}
+                                                </div>
+                                            @endif
+                                            @if(@$data->icds && is_array($data->icds))
+                                                <div>
+                                                    <span class="text-secondary">ICDs:</span>
+                                                    {{implode(", ", $data->icds)}}
+                                                </div>
+                                            @endif
+                                        @endif
+                                        </td>
+                                    </tr>
+                                    @endif
+                                @endforeach
+                                </tbody>
+                            </table>
+                            @else
+                                <div class="text-secondary">None</div>
+                            @endif
+                        </div>
+                    </div>
+                </div>
+
                 <div class="p-3 border-bottom">
                     <div class="">
                         <div class="d-flex align-items-center mb-2">

+ 23 - 0
resources/views/app/patient/note/dashboard_script.blade.php

@@ -294,6 +294,29 @@
                     __moveSection($(this).attr('data-uid'), 'Down');
                 });
 
+                // refresh once ticket popup is closed
+                $('body').off('stag-popup-closed')
+                $('body').on('stag-popup-closed', function() {
+                    if($('#note-single-header').length) {
+                        fastReload();
+                    }
+                });
+                // ticket-popup
+                $(document)
+                    .off('click', '.ticket-popup-trigger.note-dashboard-action')
+                    .on('click', '.ticket-popup-trigger.note-dashboard-action', function() {
+                        showMask();
+                        window.noMc = true;
+                        $.get(this.href, (_data) => {
+                            $('.ticket-popup').html(_data);
+                            showStagPopup('ticket-popup', true);
+                            $('.ticket-popup .stag-popup.stag-slide').attr('close-all-with-self', 1);
+                            runMCInitializer('patient-tickets'); // run specific mc initer
+                            hideMask();
+                        });
+                        return false;
+                    });
+
             }
 
             // scroll to latest created section

+ 3 - 3
storage/sections/rx/actions.blade.php

@@ -2,7 +2,7 @@
     <div class="d-flex align-items-center px-2">
         <a href="/patients/view/{{$patient->uid}}/tickets/erx?popupmode=1"
            native target="_blank"
-           class="ticket-popup-trigger d-block text-nowrap">
+           class="ticket-popup-trigger rx-action d-block text-nowrap">
             Erx/Orders
         </a>
     </div>
@@ -20,8 +20,8 @@
             });*/
             // ticket-popup
             $(document)
-                .off('click', '.ticket-popup-trigger')
-                .on('click', '.ticket-popup-trigger', function() {
+                .off('click', '.ticket-popup-trigger.rx-action')
+                .on('click', '.ticket-popup-trigger.rx-action', function() {
                     showMask();
                     window.noMc = true;
                     $.get(this.href, (_data) => {