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']); $stats = Radiologists::worklist_stats(3, ReportStatus::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 ?? Carbon::now()->addHours(-10))->diffForHumans(); } } return view('staff.studies.assign-form', compact('study', 'rads')); } public function remove() { $this->decodeKeys(); $study = Study::with('assignedPhysician')->findOrFail($this->key); if ($study->assigned_physician_id !== null) { $study->update(['assigned_physician_id' => null, 'assigned_at' => null]); audit() ->did(Activity::Unassign_Physician) ->notes("Unassigned: {$study->assignedPhysician?->display_name}") ->on($study) ->log(); } return redirect()->route('staff.worklist.index')->with('success', 'Removed assignment'); } public function save(AssignPhysicianRequest $request) { $this->decodeKeys(); $study = Study::findOrFail($this->key); $rad = User::active()->findOrFail($request->input('rad_id')); if ($study->assigned_physician_id !== null) { audit() ->did(Activity::Unassign_Physician) ->notes("Unassigned: {$study->assignedPhysician?->display_name}") ->on($study) ->log(); } $study->update(['assigned_physician_id' => $rad->id, 'assigned_at' => now()]); audit() ->did(Activity::Assign_Physician) ->on($study) ->notes("Assigned: {$rad->display_name}") ->log(); return redirect()->route('staff.worklist.index')->with('success', "Assigned study to {$rad->display_name}"); } }