belongsTo(Study::class); } 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, ]; } }