radfusion/app/Services/ACL/WorklistGuard.php
2025-01-18 11:55:25 +06:00

65 lines
2.0 KiB
PHP

<?php
namespace App\Services\ACL;
use App\Models\User;
use Illuminate\Support\Collection;
final readonly class WorklistGuard
{
public static function worklistColumns(User|int|null $usr = null): Collection
{
$user = me($usr);
$columns = collect([
WorklistColumn::Priority,
WorklistColumn::ReportStatus,
WorklistColumn::ActionButtons,
WorklistColumn::PatientId,
WorklistColumn::PatientName,
WorklistColumn::PatientSexAge,
WorklistColumn::StudyDate,
WorklistColumn::ReceiveDate,
WorklistColumn::StudyDescription,
WorklistColumn::AssignedPhysician,
WorklistColumn::ReadingPhysician,
WorklistColumn::ReportDate,
WorklistColumn::History,
WorklistColumn::Modality,
WorklistColumn::Series,
WorklistColumn::ReportButtons,
WorklistColumn::ViewerButtons,
]);
if ($user->isRadiologist()) {
$columns = $columns->except([
WorklistColumn::AssignedPhysician,
WorklistColumn::ReadingPhysician,
]);
$columns = $columns->reject(function ($col) {
return $col == WorklistColumn::AssignedPhysician || $col == WorklistColumn::ReadingPhysician;
});
} else {
$columns = $columns->reject(function ($col) {
return $col == WorklistColumn::ReportDate;
});
}
return $columns;
}
public static function worklistButtons(?int $user_id = null): Collection
{
$user = $user_id !== null ? User::findOrFail($user_id) : auth()->user();
$buttons = collect([
WorklistButton::StudyMetadata,
WorklistButton::History,
WorklistButton::Notes,
WorklistButton::Attachment,
WorklistButton::Assign,
WorklistButton::Report,
]);
return $buttons;
}
}