From 19a501c2e21c9065cb74fb422946d7a65eb94649 Mon Sep 17 00:00:00 2001 From: Dr Masroor Ehsan Date: Thu, 30 Jan 2025 19:41:41 +0600 Subject: [PATCH] FIX #41 - history indication --- app/DataTables/WorklistDataTable.php | 2 +- app/Http/Controllers/Staff/HistoryController.php | 8 +++++--- app/Models/Study.php | 16 ++++++++++++++-- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/app/DataTables/WorklistDataTable.php b/app/DataTables/WorklistDataTable.php index 0009f16..95adb9a 100644 --- a/app/DataTables/WorklistDataTable.php +++ b/app/DataTables/WorklistDataTable.php @@ -627,7 +627,7 @@ private function generateActionButtons(Study $study): string foreach (WorklistGuard::worklistButtons($study) as $button) { switch ($button) { case WorklistButton::StudyMetadata: - $btns[] = $this->renderImageLink($study->hash, 'info.png', 'show-study', 'Info'); + $btns[] = $this->renderImageLink($study->hash, $study->hasHistory() ? 'info-green.png' : 'info.png', 'show-study', 'Info'); break; case WorklistButton::Assign: $btns[] = $this->renderImageLink($study->hash, 'assign.png', 'show-assign', 'Assign'); diff --git a/app/Http/Controllers/Staff/HistoryController.php b/app/Http/Controllers/Staff/HistoryController.php index a933c75..f3c53b9 100644 --- a/app/Http/Controllers/Staff/HistoryController.php +++ b/app/Http/Controllers/Staff/HistoryController.php @@ -9,12 +9,13 @@ use App\Models\StudyDetails; use App\Services\AuditTrail\Activity; use App\Services\SessionHelper; +use Illuminate\Support\Facades\Cache; class HistoryController extends HashidControllerBase { public function view() { - abort_unless(auth()->user()->may(Permission::StudyHistoryView), 403); + abort_unless(may(Permission::StudyHistoryView), 403); $this->decodeKeys(); $details = StudyDetails::historyOnly($this->key); $study = Study::findOrFail($this->key); @@ -25,7 +26,7 @@ public function view() public function edit() { // SessionHelper::setIntendedUrl(); - abort_unless(auth()->user()->may(Permission::StudyHistoryEdit), 403); + abort_unless(may(Permission::StudyHistoryEdit), 403); $this->decodeKeys(); $details = StudyDetails::historyOnly($this->key); $study = Study::findOrFail($this->key); @@ -35,12 +36,13 @@ public function edit() public function save(StudyHistoryRequest $request) { - abort_unless(auth()->user()->may(Permission::StudyHistoryEdit), 403); + abort_unless(may(Permission::StudyHistoryEdit), 403); $this->decodeKeys(); $details = StudyDetails::historyOnly($this->key); $payload = array_trim_strings($request->validated()); unset($payload['study_id']); $details->update($payload); + Cache::forget("study.has_history.{$this->key}"); audit() ->did(Activity::Study_History_Edit) diff --git a/app/Models/Study.php b/app/Models/Study.php index afb2a1d..865afb3 100644 --- a/app/Models/Study.php +++ b/app/Models/Study.php @@ -12,12 +12,13 @@ use App\Services\Pacs\PacsUrlGen; use Carbon\Carbon; use Illuminate\Database\Eloquent\Builder; -use Illuminate\Database\Eloquent\Concerns\HasTimestamps; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasOne; use Illuminate\Support\Facades\Blade; +use Illuminate\Support\Facades\Cache; +use Illuminate\Support\Facades\DB; use Illuminate\Support\Str; use Spatie\MediaLibrary\HasMedia; use Spatie\MediaLibrary\InteractsWithMedia; @@ -28,7 +29,6 @@ class Study extends BaseModel implements HasMedia use HasDepartment; use HashableId; use HasOrganization; - use HasTimestamps; use InteractsWithMedia; public const string MEDIA_COLLECTION = 'attachments'; @@ -543,4 +543,16 @@ protected function casts(): array 'patient_birthdate' => 'immutable_date', ]; } + + public function hasHistory(): bool + { + return Cache::remember("study.has_history.{$this->id}", + now()->addMinutes(15), + function () { + return DB::table('study_details') + ->where('study_id', $this->id) + ->whereNotNull('clinical_history') + ->exists(); + }); + } }