diff --git a/app/DataTables/WorklistDataTable.php b/app/DataTables/WorklistDataTable.php index b83072f..2d3d718 100644 --- a/app/DataTables/WorklistDataTable.php +++ b/app/DataTables/WorklistDataTable.php @@ -70,9 +70,9 @@ public function dataTable(QueryBuilder $query): EloquentDataTable return self::dtFormat($study->received_at); }) ->editColumn('show_study', function (Study $study) { - $btn = 'Show'; - $btn .= 'Edit'; - $btn .= ' Assign'; + $btn = 'Show'; + $btn .= 'Edit'; + $btn .= ' Assign'; $btn .= ' Delete'; return $btn; diff --git a/app/Http/Controllers/Staff/StudyAssignmentController.php b/app/Http/Controllers/Staff/StudyAssignmentController.php index 8942d46..8142eb9 100644 --- a/app/Http/Controllers/Staff/StudyAssignmentController.php +++ b/app/Http/Controllers/Staff/StudyAssignmentController.php @@ -5,17 +5,20 @@ use App\DAL\Radiologists; use App\Http\Controllers\HashidControllerBase; use App\Http\Requests\AssignPhysicianRequest; +use App\Models\Enums\Permission; use App\Models\Enums\ReportStatus; use App\Models\Enums\UserRole; use App\Models\Study; use App\Models\User; use App\Services\AuditTrail\Activity; use Carbon\Carbon; +use Illuminate\Support\Facades\Cache; class StudyAssignmentController extends HashidControllerBase { public function show() { + abort_unless(auth()->user()->may(Permission::AssignPhysician), 403); $this->decodeKeys(); $study = Study::with('assignedPhysician')->findOrFail($this->key); $rads = User::active()->role(UserRole::Radiologist)->get(['id', 'display_name', 'profile_photo_path', 'first_name', 'last_name', 'created_at']); @@ -33,6 +36,7 @@ public function show() public function remove() { + abort_unless(auth()->user()->may(Permission::AssignPhysician), 403); $this->decodeKeys(); $study = Study::with('assignedPhysician')->findOrFail($this->key); if ($study->assigned_physician_id !== null) { @@ -49,6 +53,7 @@ public function remove() public function save(AssignPhysicianRequest $request) { + abort_unless(auth()->user()->may(Permission::AssignPhysician), 403); $this->decodeKeys(); $study = Study::findOrFail($this->key); $rad = User::active()->findOrFail($request->input('rad_id')); diff --git a/app/Models/Enums/Permission.php b/app/Models/Enums/Permission.php index 78200cf..096f183 100644 --- a/app/Models/Enums/Permission.php +++ b/app/Models/Enums/Permission.php @@ -17,4 +17,6 @@ enum Permission: string case StudyNotesView = 'study_notes_view'; case AttachmentUpload = 'attachment_upload'; case AttachmentDownload = 'attachment_download'; + case AssignPhysician = 'assign_physician'; + case UnassignPhysician = 'unassign_physician'; } diff --git a/database/migrations/2025_01_07_904595_create_radiologists.php b/database/migrations/2025_01_07_904595_create_radiologists.php new file mode 100644 index 0000000..a671c28 --- /dev/null +++ b/database/migrations/2025_01_07_904595_create_radiologists.php @@ -0,0 +1,28 @@ +id(); + $table->foreignIdFor(User::class)->unique()->constrained()->cascadeOnDelete(); + $table->text('signature_img_path')->nullable(); + $table->text('signature_text')->nullable(); + $table->timestamps(); + }); + } + + public function down(): void + { + Schema::dropIfExists('radiologists'); + } +}; diff --git a/resources/views/staff/studies/show-details.blade.php b/resources/views/staff/studies/show-details.blade.php index 6e44479..38f5ee8 100644 --- a/resources/views/staff/studies/show-details.blade.php +++ b/resources/views/staff/studies/show-details.blade.php @@ -18,7 +18,7 @@ @include('staff.history.partials._history', ['details' => $study->details]) - @if( $study->hasMedia(\App\Models\Study::MEDIA_COLLECTION) ) + @if ( $study->hasMedia(\App\Models\Study::MEDIA_COLLECTION) )