diff --git a/app/DAL/Studies/AdminStudyLister.php b/app/DAL/Studies/AdminStudyLister.php index 8d9a5a4..6ec66cc 100644 --- a/app/DAL/Studies/AdminStudyLister.php +++ b/app/DAL/Studies/AdminStudyLister.php @@ -5,7 +5,7 @@ use App\Models\Study; use Illuminate\Contracts\Database\Eloquent\Builder; -class AdminStudyLister extends UserStudyListerBase +final class AdminStudyLister extends UserStudyListerBase { protected function buildQuery(?int $user_id = null): Builder { diff --git a/app/DAL/Studies/RadiologistStudyLister.php b/app/DAL/Studies/RadiologistStudyLister.php index 413c6d5..2350a59 100644 --- a/app/DAL/Studies/RadiologistStudyLister.php +++ b/app/DAL/Studies/RadiologistStudyLister.php @@ -5,7 +5,7 @@ use App\Models\Study; use Illuminate\Contracts\Database\Eloquent\Builder; -class RadiologistStudyLister extends UserStudyListerBase +final class RadiologistStudyLister extends UserStudyListerBase { protected function buildQuery(?int $user_id = null): Builder { diff --git a/app/DAL/Studies/ReferrerStudyLister.php b/app/DAL/Studies/ReferrerStudyLister.php new file mode 100644 index 0000000..0b4ad54 --- /dev/null +++ b/app/DAL/Studies/ReferrerStudyLister.php @@ -0,0 +1,18 @@ +id()); + + return self::defaultSortQuery( + Study::active()->where('referring_provider_id', $user_id) + ); + } +} diff --git a/app/DAL/Studies/TechnicianStudyLister.php b/app/DAL/Studies/TechnicianStudyLister.php index e0a09cc..ac61e86 100644 --- a/app/DAL/Studies/TechnicianStudyLister.php +++ b/app/DAL/Studies/TechnicianStudyLister.php @@ -5,7 +5,7 @@ use App\Models\Study; use Illuminate\Contracts\Database\Eloquent\Builder; -class TechnicianStudyLister extends UserStudyListerBase +final class TechnicianStudyLister extends UserStudyListerBase { protected function buildQuery(?int $user_id = null): Builder { diff --git a/app/DAL/Studies/UserStudyListerFactory.php b/app/DAL/Studies/UserStudyListerFactory.php index d223517..0166310 100644 --- a/app/DAL/Studies/UserStudyListerFactory.php +++ b/app/DAL/Studies/UserStudyListerFactory.php @@ -12,13 +12,14 @@ */ public static function getLister(): IUserStudyLister { - $user_role = (int) auth()->user()->user_role; + $role = auth()->user()->roles()->first()->name; - return match (UserRole::from($user_role)) { + return match (UserRole::from($role)) { UserRole::Admin => new AdminStudyLister, UserRole::Technician => new TechnicianStudyLister, UserRole::Radiologist => new RadiologistStudyLister, - default => throw new Exception("Unknown user role: $user_role"), + UserRole::ReferringPhysician => new ReferrerStudyLister, + default => throw new Exception("Unknown user role: $role"), }; } } diff --git a/resources/views/staff/studies/index.blade.php b/resources/views/staff/studies/index.blade.php index 32a0073..35bab85 100644 --- a/resources/views/staff/studies/index.blade.php +++ b/resources/views/staff/studies/index.blade.php @@ -64,38 +64,42 @@ class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking- {{ $study->accession_number }} {{ $study->patient_id }} {{ $study->patient_name }} + href="{{ route('studies.details', _h($study->id)) }}">{{ $study->patient_name }} {{ $study->patient_sex }} {{ $study->patient_birthdate }} {{ $study->study_modality }} {{ $study->study_date }} - {{ $study->receive_date }} + {{ $study->received_at }} {{ $study->image_count }} / {{ $study->series_count }} {{ $study->institution_name }} - St - | - OHF - @if($study->image_count > 1 && $study->study_modality != 'CR') + @can(\App\Models\Enums\Permission::StudyDownload) + St | MPR + href="{{ \App\Services\Pacs\PacsUrlGen::ohifViewer($study->study_instance_uid) }}">OHF + @if($study->image_count > 1 && $study->study_modality != 'CR') + | + MPR + | + SEG + @endif | SEG - @endif - | - ZIP - | - TXT + href="{{ \App\Services\Pacs\PacsUrlGen::archive($study->orthanc_uuid) }}">ZIP + | + @endcan + @can(\App\Models\Enums\Permission::ReportCreate) + TXT + @endcan @endforeach