From 6104f1735eed2f482dbdc8af14cc537638d6782a Mon Sep 17 00:00:00 2001 From: Masroor Ehsan Date: Wed, 8 Jan 2025 20:32:01 +0600 Subject: [PATCH] report --- app/Models/StudyReport.php | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/app/Models/StudyReport.php b/app/Models/StudyReport.php index 8ec6460..c46bae2 100644 --- a/app/Models/StudyReport.php +++ b/app/Models/StudyReport.php @@ -3,6 +3,7 @@ namespace App\Models; use App\Casts\Compressed; +use App\Domain\Report\ReportStatus; use Illuminate\Database\Eloquent\Concerns\HasTimestamps; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -20,12 +21,38 @@ public function radiologist(): BelongsTo return $this->belongsTo(User::class, 'read_by_id'); } + public function updateStatus(ReportStatus $status, User|int|null $user = null): void + { + $user_id = me($user)->id; + $params = ['report_status' => $status->value, 'read_by_id' => $user_id]; + $this->update($params); + + $params = ['report_status' => $status->value]; + switch ($status) { + case ReportStatus::Finalized: + $params['reporting_physician_id'] = $user_id; + $params['reported_at'] = now(); + break; + + case ReportStatus::Approved: + if ($this->study->reporting_physician_id === null) { + $params['reporting_physician_id'] = $user_id; + $params['reported_at'] = now(); + } + $params['approving_physician_id'] = $user_id; + $params['approved_at'] = now(); + break; + } + $this->study->update($params); + } + /** * @return array */ protected function casts(): array { return [ + 'report_status' => ReportStatus::class, 'content' => Compressed::class, ]; }