Explorar el Código

Practice > My tickets

Vijayakrishnan hace 4 años
padre
commit
ad2a3df4cd

+ 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');
+    }
+
 }

+ 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');