87 lines
2.5 KiB
PHP
87 lines
2.5 KiB
PHP
<?php
|
|
|
|
namespace App\Services\ACL;
|
|
|
|
use App\Domain\ACL\Permission;
|
|
use App\Models\Study;
|
|
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::AssignedPhysician,
|
|
WorklistColumn::PatientId,
|
|
WorklistColumn::PatientName,
|
|
WorklistColumn::PatientSexAge,
|
|
WorklistColumn::StudyDate,
|
|
WorklistColumn::ReceiveDate,
|
|
WorklistColumn::Modality,
|
|
WorklistColumn::StudyDescription,
|
|
WorklistColumn::ReadingPhysician,
|
|
WorklistColumn::ReportDate,
|
|
// WorklistColumn::History,
|
|
WorklistColumn::ReportButtons,
|
|
WorklistColumn::ViewerButtons,
|
|
WorklistColumn::Series,
|
|
]);
|
|
|
|
if ($user->isRadiologist()) {
|
|
$columns = $columns->reject(function ($col) {
|
|
return $col == WorklistColumn::AssignedPhysician || $col == WorklistColumn::ReadingPhysician;
|
|
});
|
|
} else {
|
|
$columns = $columns->reject(function ($col) {
|
|
return $col == WorklistColumn::ReportDate;
|
|
});
|
|
}
|
|
|
|
if ($user->isAdmin()) {
|
|
$columns->push(WorklistColumn::Organization);
|
|
$columns->push(WorklistColumn::Department);
|
|
$columns->push(WorklistColumn::DicomServer);
|
|
}
|
|
|
|
return $columns;
|
|
}
|
|
|
|
public static function worklistButtons(Study $study, User|int|null $usr = null): Collection
|
|
{
|
|
$user = me($usr);
|
|
if ($user->isRadiologist()) {
|
|
return collect([
|
|
WorklistButton::StudyMetadata,
|
|
WorklistButton::Notes,
|
|
// WorklistButton::Audit,
|
|
WorklistButton::Bookmark,
|
|
]);
|
|
}
|
|
|
|
$buttons = collect([
|
|
WorklistButton::StudyMetadata,
|
|
WorklistButton::History,
|
|
WorklistButton::Notes,
|
|
]);
|
|
|
|
if ($study->canAssignRad()) {
|
|
$buttons->push(WorklistButton::Assign);
|
|
}
|
|
|
|
if (may(Permission::AuditLogView)) {
|
|
$buttons->push(WorklistButton::Audit);
|
|
}
|
|
|
|
if (may(Permission::BookmarkCreate)) {
|
|
$buttons->push(WorklistButton::Bookmark);
|
|
}
|
|
|
|
return $buttons;
|
|
}
|
|
}
|