belongsTo(Study::class); } public function radiologist(): BelongsTo { return $this->belongsTo(User::class, 'read_by_id'); } public function approver(): BelongsTo { return $this->belongsTo(User::class, 'approved_by_id'); } public function setStatus(ReportStatus $status, User|int|null $user = null): void { $user_id = me($user)->id; $params = ['report_status' => $status->value]; switch ($status) { case ReportStatus::Dictated: $params['dictated_by_id'] = $user_id; break; case ReportStatus::Preliminary: case ReportStatus::Finalized: $params['read_by_id'] = $user_id; break; case ReportStatus::Approved: $params['approved_by_id'] = $user_id; break; } $this->update($params); } public function downloadUrl(): string { return route('staff.report.download', $this->accession_number); } public function viewUrl(): string { return route('staff.report.view', $this->accession_number); } /** * @return array */ protected function casts(): array { return [ 'report_status' => ReportStatus::class, 'content' => Compressed::class, ]; } }