From 2a38df93835988b1b6ac38cef250f716eedebfed Mon Sep 17 00:00:00 2001 From: Dr Masroor Ehsan Date: Mon, 13 Jan 2025 23:52:30 +0600 Subject: [PATCH] wip --- .../Controllers/Staff/MetadataController.php | 27 +++++++++++++++++-- .../Requests/StudyMetadataUpdateRequest.php | 4 ++- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/Staff/MetadataController.php b/app/Http/Controllers/Staff/MetadataController.php index 6a48be1..b9df9e7 100644 --- a/app/Http/Controllers/Staff/MetadataController.php +++ b/app/Http/Controllers/Staff/MetadataController.php @@ -7,6 +7,7 @@ use App\Http\Controllers\HashidControllerBase; use App\Http\Requests\StudyMetadataUpdateRequest; use App\Models\Study; +use App\Services\AuditTrail\Activity; class MetadataController extends HashidControllerBase { @@ -14,7 +15,7 @@ public function view() { abort_unless(auth()->user()->may(Permission::StudyMetadataView), 403); $this->decodeKeys(); - $study = Study::find($this->key); + $study = Study::findOrFail($this->key); return view('staff.meta.view', compact('study')); } @@ -23,7 +24,20 @@ public function edit() { abort_unless(auth()->user()->may(Permission::StudyMetadataEdit), 403); $this->decodeKeys(); - $study = Study::find($this->key); + $study = Study::findOrFail($this->key); + + if (in_array($study->report_status->value, [ + ReportStatus::Finalized->value, + ReportStatus::Approved->value, + ], + true)) { + return view('content.pages.notice', [ + 'title' => 'Study Locked', + 'color' => 'danger', + 'heading' => 'Study Locked', + 'message' => 'Study metadata cannot be edited once the report has been finalized.', + ]); + } return view('staff.meta.edit', compact('study')); } @@ -33,12 +47,21 @@ public function save(StudyMetadataUpdateRequest $request) abort_unless(auth()->user()->may(Permission::StudyMetadataEdit), 403); $this->decodeKeys(); $study = Study::findOrFail($this->key); + abort_if($study->report_status->value >= ReportStatus::Finalized->value, 403); $payload = array_trim_strings($request->validated()); + $payload['body_part_examined'] = strtoupper($payload['body_part_examined']); + $payload['patient_sex'] = strtoupper($payload['patient_sex']); if ($request->has('cancel_read')) { + // lock the study if report is not needed $payload['report_status'] = ReportStatus::Cancelled->value; + $payload['locked_at'] = now(); unset($payload['cancel_read']); } $study->update($payload); + audit() + ->on($study) + ->did(Activity::Study_Metadata_Edit) + ->log(); // return redirect()->route('staff.history.view', _h($this->key)); return view('content.pages.close-window'); diff --git a/app/Http/Requests/StudyMetadataUpdateRequest.php b/app/Http/Requests/StudyMetadataUpdateRequest.php index ce47da3..1a91520 100644 --- a/app/Http/Requests/StudyMetadataUpdateRequest.php +++ b/app/Http/Requests/StudyMetadataUpdateRequest.php @@ -15,7 +15,7 @@ public function rules(): array 'patient_birthdate' => ['nullable', 'date'], 'accession_number' => ['nullable'], - //'study_date' => ['required', 'date'], + // 'study_date' => ['required', 'date'], 'study_description' => ['required'], 'body_part_examined' => ['required'], 'referring_physician_name' => ['nullable'], @@ -35,4 +35,6 @@ public function authorize(): bool { return true; } + + public function validateResolved() {} }