diff --git a/app/DAL/Studies/WorklistBase.php b/app/DAL/Studies/WorklistBase.php index 866ce2e..1bf7385 100644 --- a/app/DAL/Studies/WorklistBase.php +++ b/app/DAL/Studies/WorklistBase.php @@ -164,7 +164,15 @@ protected function getStudiesQuery(): Builder $q = Study::query(); } - return $q->with(['readingPhysician', 'dicomServer', 'assignedPhysicians', 'reports', 'lockingPhysician']); + return $q->with([ + 'organization', + 'department', + 'dicomServer', + 'readingPhysician', + 'assignedPhysicians', + 'lockingPhysician', + 'reports', + ]); } protected function applySort(Builder $query): Builder diff --git a/app/Models/Study.php b/app/Models/Study.php index c0a6305..927bbd8 100644 --- a/app/Models/Study.php +++ b/app/Models/Study.php @@ -6,7 +6,9 @@ use App\Domain\Report\ReportStatus; use App\Domain\Study\Priority; use App\Domain\Study\StudyLevelStatus; +use App\Models\Traits\HasDepartment; use App\Models\Traits\HashableId; +use App\Models\Traits\HasOrganization; use App\Services\Pacs\PacsUrlGen; use Carbon\Carbon; use Illuminate\Database\Eloquent\Builder; @@ -22,7 +24,9 @@ class Study extends BaseModel implements HasMedia { + use HasDepartment; use HashableId; + use HasOrganization; use HasTimestamps; use InteractsWithMedia; diff --git a/app/Models/Traits/HasDepartment.php b/app/Models/Traits/HasDepartment.php new file mode 100644 index 0000000..ae576c4 --- /dev/null +++ b/app/Models/Traits/HasDepartment.php @@ -0,0 +1,20 @@ +belongsTo(Department::class); + } + + public function scopeDepartment(Builder $query, int $department_id): Builder + { + return $query->where('department_id', $department_id); + } +} diff --git a/app/Models/Traits/HasOrganization.php b/app/Models/Traits/HasOrganization.php new file mode 100644 index 0000000..e4ae667 --- /dev/null +++ b/app/Models/Traits/HasOrganization.php @@ -0,0 +1,20 @@ +belongsTo(Organization::class); + } + + public function scopeOrganization(Builder $query, int $organization_id): Builder + { + return $query->where('organization_id', $organization_id); + } +} diff --git a/app/Services/ACL/WorklistColumn.php b/app/Services/ACL/WorklistColumn.php index c5d6620..9d9d4c5 100644 --- a/app/Services/ACL/WorklistColumn.php +++ b/app/Services/ACL/WorklistColumn.php @@ -34,4 +34,6 @@ enum WorklistColumn: string case ActionButtons = 'action_buttons'; case ViewerButtons = 'viewer_buttons'; case ReportButtons = 'report_buttons'; + case Organization = 'organization'; + case Department = 'department'; } diff --git a/app/Services/ACL/WorklistGuard.php b/app/Services/ACL/WorklistGuard.php index 49ba7d1..496265e 100644 --- a/app/Services/ACL/WorklistGuard.php +++ b/app/Services/ACL/WorklistGuard.php @@ -41,6 +41,11 @@ public static function worklistColumns(User|int|null $usr = null): Collection }); } + if ($user->isAdmin()) { + $columns->push(WorklistColumn::Organization); + $columns->push(WorklistColumn::Department); + } + return $columns; }