radfusion/app/Models/StudyReport.php
2025-01-08 20:46:41 +06:00

60 lines
1.4 KiB
PHP

<?php
namespace App\Models;
use App\Casts\Compressed;
use App\Domain\Report\ReportStatus;
use Illuminate\Database\Eloquent\Concerns\HasTimestamps;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class StudyReport extends BaseModel
{
use HasTimestamps;
public function study(): BelongsTo
{
return $this->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);
}
/**
* @return array<string, string>
*/
protected function casts(): array
{
return [
'report_status' => ReportStatus::class,
'content' => Compressed::class,
];
}
}