may(Permission::AssignRadiologist), 403); $study = $this->getStudy('assignedPhysicians'); $rads = User::active() ->role(Role::Radiologist) ->get(['id', 'display_name', 'profile_photo_path', 'first_name', 'last_name', 'created_at']) ->each(fn ($rad) => $rad->info = ['workload' => '', 'last_seen' => '']); $stats = Radiologists::worklist_stats(3, WorkflowLevel::Finalized->value); foreach ($stats as $rad) { $found = $rads->where('id', $rad->id)->first(); if ($found) { $found->info['workload'] = $rad->workload; $found->info['last_seen'] = $rad->last_seen?->diffForHumans() ?? '-'; } } return view('staff.studies.assign-form', compact('study', 'rads')); } public function remove(AssignPhysicianRequest $request) { abort_unless(me()->may(Permission::AssignRadiologist), 403); $study = $this->getStudy('assignedPhysicians'); $rad = User::active()->findOrFail($request->input('rad_id')); if ($study->isAssigned($rad)) { $study->assignedPhysicians()->detach($rad->id); if ($study->assignedPhysicians()->count() === 0) { $study->update(['assigned_at' => null]); } audit() ->did(Activity::Unassign_Physician) ->notes($rad->display_name) ->on($study) ->log(); } return redirect()->route('staff.worklist.index')->with('success', 'Removed assignment'); } public function save(AssignPhysicianRequest $request) { abort_unless(me()->may(Permission::AssignRadiologist), 403); $study = $this->getStudy('assignedPhysicians'); $rad = User::active()->findOrFail($request->input('rad_id')); $study->assignedPhysicians()->attach($rad->id); $study->update(['assigned_at' => now()]); audit() ->did(Activity::Assign_Physician) ->on($study) ->notes($rad->display_name) ->log(); return redirect()->route('staff.worklist.index')->with('success', "Assigned study to {$rad->display_name}"); } }