فهرست منبع

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

Josh 4 سال پیش
والد
کامیت
4ed184d4f1

+ 11 - 0
app/Http/Controllers/HomeController.php

@@ -6,6 +6,7 @@ use App\Lib\Backend;
 use App\Models\Appointment;
 use App\Models\AppSession;
 use App\Models\ClientSMS;
+use App\Models\Ticket;
 use DateTime;
 
 use App\Models\Client;
@@ -230,6 +231,16 @@ class HomeController extends Controller
 
         $keyNumbers['pendingNotesToSign'] = $pendingNotesToSign;
 
+        // open tickets
+        $keyNumbers['numOpenTickets'] = Ticket::where('is_open', true)
+            ->where(function ($q) use ($performerProID) {
+                $q->where('assigned_pro_id', $performerProID)
+                    ->orWhere('manager_pro_id', $performerProID)
+                    ->orWhere('ordering_pro_id', $performerProID)
+                    ->orWhere('initiating_pro_id', $performerProID);
+            })
+            ->count();
+
         $reimbursement = [];
         $reimbursement["currentBalance"] =  $performer->pro->balance;
         $reimbursement["nextPaymentDate"] = '--';

+ 20 - 0
app/Http/Controllers/PracticeManagementController.php

@@ -15,6 +15,7 @@ use App\Models\ProSpecificAvailability;
 use App\Models\ProSpecificUnavailability;
 use App\Models\ProTextShortcut;
 use App\Models\ProTransaction;
+use App\Models\Ticket;
 use DateTime;
 use DateTimeZone;
 use Illuminate\Http\Request;
@@ -141,6 +142,25 @@ class PracticeManagementController extends Controller
         return view('app.practice-management.bills', compact('bills', 'filter'));
     }
 
+    public function myTickets(Request $request, $filter = 'open')
+    {
+        $performer = $this->performer();
+        $myTickets = Ticket::where(function ($q) use ($performer) {
+            $q->where('assigned_pro_id', $performer->pro_id)
+                ->orWhere('manager_pro_id', $performer->pro_id)
+                ->orWhere('ordering_pro_id', $performer->pro_id)
+                ->orWhere('initiating_pro_id', $performer->pro_id);
+        });
+        if($filter === 'open') {
+            $myTickets = $myTickets->where('is_open', true);
+        }
+        else if($filter === 'closed') {
+            $myTickets = $myTickets->where('is_open', false);
+        }
+        $myTickets = $myTickets->orderBy('created_at', 'desc')->get();
+        return view('app.practice-management.my-tickets', compact('myTickets', 'filter'));
+    }
+
     public function myTextShortcuts(Request $request)
     {
         $performer = $this->performer();

+ 20 - 0
app/Models/Ticket.php

@@ -8,4 +8,24 @@ class Ticket extends Model
 {
     protected $table = "ticket";
 
+    public function assignedPro(){
+        return $this->hasOne(Pro::class, 'id', 'assigned_pro_id');
+    }
+
+    public function managerPro(){
+        return $this->hasOne(Pro::class, 'id', 'manager_pro_id');
+    }
+
+    public function orderingPro(){
+        return $this->hasOne(Pro::class, 'id', 'ordering_pro_id');
+    }
+
+    public function initiatingPro(){
+        return $this->hasOne(Pro::class, 'id', 'initiating_pro_id');
+    }
+
+    public function patient(){
+        return $this->hasOne(Client::class, 'id', 'client_id');
+    }
+
 }

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

@@ -34,6 +34,11 @@
                                     <th class="px-2 text-center">{{$keyNumbers['pendingNotesToSign']}}</th>
                                     <th class="pl-2"><a native target="_top" href="/practice-management/notes/not-yet-signed">Pending notes to sign</a></th>
                                 </tr>
+                                <tr>
+                                    <th class="px-2 text-center">{{$keyNumbers['numOpenTickets']}}</th>
+                                    <th class="pl-2"><a native target="_top" href="/practice-management/my-tickets/open">Open tickets</a></th>
+                                </tr>
+
                             </tbody>
                         </table>
                     </div>

+ 4 - 1
resources/views/app/patient/action-items-imaging-single.blade.php

@@ -178,7 +178,10 @@
                                     pharmacyPhone: '',
                                     pharmacyFax: '',
                                 };
-                                showStagPopup('imaging-popup');
+                                Vue.nextTick(() => {
+                                    showStagPopup('imaging-popup');
+                                    this.initICDAutoSuggest();
+                                });
                             },
                             savePopupItem: function() {
                                 let form = $('#imagingSingleApp form').first();

+ 4 - 1
resources/views/app/patient/action-items-lab-single.blade.php

@@ -178,7 +178,10 @@
                                     pharmacyPhone: '',
                                     pharmacyFax: '',
                                 };
-                                showStagPopup('lab-popup');
+                                Vue.nextTick(() => {
+                                    showStagPopup('lab-popup');
+                                    this.initICDAutoSuggest();
+                                });
                             },
                             savePopupItem: function() {
                                 let form = $('#labSingleApp form').first();

+ 85 - 0
resources/views/app/practice-management/my-tickets.blade.php

@@ -0,0 +1,85 @@
+@extends ('layouts/template')
+
+@section('content')
+
+    <div class="p-3 mcp-theme-1">
+    <div class="card">
+
+        <div class="card-header px-3 py-2 d-flex align-items-center">
+            <strong class="">
+                <i class="fas fa-user-injured"></i>
+                My Tickets
+            </strong>
+            <select class="ml-auto max-width-300px form-control form-control-sm"
+                    onchange="fastLoad('/practice-management/my-tickets/' + this.value, true, false, false)">
+                <option value="open" {{ $filter === 'open' ? 'selected' : '' }}>Open tickets</option>
+                <option value="closed" {{ $filter === 'closed' ? 'selected' : '' }}>Closed tickets</option>
+                <option value="all" {{ $filter === 'all' ? 'selected' : '' }}>All tickets</option>
+            </select>
+        </div>
+        <div class="card-body p-0">
+            <table class="table table-condensed p-0 m-0">
+                <thead class="bg-light">
+                <tr>
+                    <th class="border-0">Patient</th>
+                    <th class="border-0">Type</th>
+                    <th class="border-0 w-50">Details</th>
+                    <th class="border-0">Role</th>
+                    <th class="border-0"></th>
+                </tr>
+                </thead>
+                <tbody>
+                @foreach($myTickets as $ticket)
+                    <tr>
+                        <td class="text-nowrap">
+                            <a class="font-weight-bold" href="/patients/view/{{ $ticket->patient->uid }}">{{ $ticket->patient->displayName() }}</a>
+                        </td>
+                        <td>{{ strtoupper($ticket->category) }}</td>
+                        <td>
+                            <?php
+                            $display = '-';
+                            $parsed = json_decode($ticket->data);
+                            switch($ticket->category) {
+                                case 'erx':
+                                    if(@$parsed->medication) {
+                                        $display = $parsed->medication;
+                                    }
+                                    break;
+                                case 'lab':
+                                case 'imaging':
+                                    if(@$parsed->tests && is_array($parsed->tests) && count($parsed->tests)) {
+                                        $display = implode(", ", $parsed->tests);
+                                    }
+                                    break;
+                                case 'equipment':
+                                    if(@$parsed->items && is_array($parsed->items) && count($parsed->items)) {
+                                        $display = implode(", ", $parsed->items);
+                                    }
+                                    break;
+                            }
+                            ?>
+                            {{ $display }}
+                        </td>
+                        <td>
+                            <?php
+                            $roles = [];
+                            if($ticket->assigned_pro_id === $pro->id) $roles[] = 'Assigned';
+                            if($ticket->manager_pro_id === $pro->id) $roles[] = 'Manager';
+                            if($ticket->ordering_pro_id === $pro->id) $roles[] = 'Ordering';
+                            if($ticket->initiating_pro_id === $pro->id) $roles[] = 'Initiating';
+                            $roles = implode(", ", $roles);
+                            ?>
+                            {{ $roles }}
+                        </td>
+                        <td>
+                            <a class="font-weight-bold" href="/patients/view/{{ $ticket->patient->uid }}/action-items-{{ $ticket->category }}/view/{{ $ticket->uid }}">Open</a>
+                        </td>
+                    </tr>
+                @endforeach
+                </tbody>
+            </table>
+        </div>
+    </div>
+    </div>
+
+@endsection

+ 1 - 0
resources/views/layouts/template.blade.php

@@ -103,6 +103,7 @@
                         <a class="dropdown-item" href="/practice-management/bills/not-yet-signed">Pending Bills to Sign</a>
                         <a class="dropdown-item" href="/practice-management/notes/not-yet-signed">Pending Notes to Sign</a>
                         <a class="dropdown-item" href="{{ route('unmapped-sms') }}">Unmapped SMS</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.proAvailability') }}">Pro Availability</a>

+ 1 - 0
routes/web.php

@@ -76,6 +76,7 @@ Route::middleware('pro.auth')->group(function () {
         Route::get('contract', 'PracticeManagementController@contract')->name('contract');
         Route::get('notes/{filter?}', 'PracticeManagementController@notes')->name('notes');
         Route::get('bills/{filter?}', 'PracticeManagementController@bills')->name('bills');
+        Route::get('my-tickets/{filter?}', 'PracticeManagementController@myTickets')->name('myTickets');
         Route::get('my-text-shortcuts', 'PracticeManagementController@myTextShortcuts')->name('myTextShortcuts');
         Route::get('my-favorites/{filter?}', 'PracticeManagementController@myFavorites')->name('myFavorites');
         Route::get('pro-availability/{proUid?}', 'PracticeManagementController@proAvailability')->name('proAvailability');