From 765d74111686dea5255837b8f324e94672991a29 Mon Sep 17 00:00:00 2001 From: Dr Masroor Ehsan Date: Mon, 20 Jan 2025 14:54:11 +0600 Subject: [PATCH] FIX #8 - advanced filtering --- app/DataTables/WorklistDataTable.php | 14 ++++++++++++-- resources/views/staff/worklist/index.blade.php | 3 ++- .../worklist/partials/_filter-panel.blade.php | 2 +- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/app/DataTables/WorklistDataTable.php b/app/DataTables/WorklistDataTable.php index 573db21..11bc796 100644 --- a/app/DataTables/WorklistDataTable.php +++ b/app/DataTables/WorklistDataTable.php @@ -238,16 +238,18 @@ private function applyFilters(QueryDataTable $dataTable) $assignTo = $this->request()->get('assign_to'); $readFrom = $this->request()->get('read_from'); $readTo = $this->request()->get('read_to'); + $readBy = $this->request()->get('read_by'); $modality = $this->request()->get('modality'); $dataTable->filter( - function ($query) use ($status, $studyFrom, $studyTo, $receiveFrom, $receiveTo, $modality, $assignFrom, $assignTo, $readFrom, $readTo) { + function ($query) use ($status, $studyFrom, $studyTo, $receiveFrom, $receiveTo, $modality, $assignFrom, $assignTo, $readFrom, $readTo, $readBy) { $this->filterStatus($query, $status); $this->filterDateRange($query, 'study_date', $studyFrom, $studyTo); $this->filterDateRange($query, 'received_at', $receiveFrom, $receiveTo); $this->filterDateRange($query, 'assigned_at', $assignFrom, $assignTo); $this->filterDateRange($query, 'read_at', $readFrom, $readTo); $this->filterModalities($query, $modality); + $this->filterReadBy($query, $readBy); } ); } @@ -269,7 +271,6 @@ private function filterStatus($query, ?string $status): void $query->whereNotNull('locked_at'); break; } - } private function filterModalities($query, ?string $request): void @@ -542,4 +543,13 @@ private function generateActionButtons(Study $study): string return implode("\r", $btns); } + + private function filterReadBy($query, ?int $readBy): void + { + if (is_null($readBy) || $readBy == 0) { + return; + } + + $query->where('reading_physician_id', $readBy); + } } diff --git a/resources/views/staff/worklist/index.blade.php b/resources/views/staff/worklist/index.blade.php index d547c54..8ba1f97 100644 --- a/resources/views/staff/worklist/index.blade.php +++ b/resources/views/staff/worklist/index.blade.php @@ -176,7 +176,8 @@ function (givenDate) { } @endforeach - _modality = modalityArray.join(','); + _modality = modalityArray.join(','); + _read_by = $('#read_by').val(); filterTable(); }); diff --git a/resources/views/staff/worklist/partials/_filter-panel.blade.php b/resources/views/staff/worklist/partials/_filter-panel.blade.php index c6d1538..0a53665 100644 --- a/resources/views/staff/worklist/partials/_filter-panel.blade.php +++ b/resources/views/staff/worklist/partials/_filter-panel.blade.php @@ -40,7 +40,7 @@ Reported By