Open the matching workspace tab after specialty stage advance.
Deploy Ladill Care / deploy (push) Successful in 45s
Deploy Ladill Care / deploy (push) Successful in 45s
Stage Move CTAs and pills previously always redirected to overview; map each stage to its tab via shell config so examination lands on exam, etc. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -71,6 +71,7 @@ class BloodBankWorkspaceController extends Controller
|
||||
Visit $visit,
|
||||
SpecialtyModuleService $modules,
|
||||
SpecialtyVisitStageService $stages,
|
||||
SpecialtyShellService $shell,
|
||||
): RedirectResponse {
|
||||
$this->authorizeBloodBankClinical($request);
|
||||
$this->assertBloodBankManage($request, $modules);
|
||||
@@ -94,7 +95,11 @@ class BloodBankWorkspaceController extends Controller
|
||||
}
|
||||
|
||||
return redirect()
|
||||
->route('care.specialty.workspace', ['module' => 'blood_bank', 'visit' => $visit, 'tab' => 'overview'])
|
||||
->route('care.specialty.workspace', [
|
||||
'module' => 'blood_bank',
|
||||
'visit' => $visit,
|
||||
'tab' => $shell->workspaceTabForStage('blood_bank', $validated['stage']),
|
||||
])
|
||||
->with('success', 'Visit stage updated.');
|
||||
}
|
||||
|
||||
|
||||
@@ -536,6 +536,7 @@ class DentistryWorkspaceController extends Controller
|
||||
Visit $visit,
|
||||
SpecialtyModuleService $modules,
|
||||
SpecialtyVisitStageService $stages,
|
||||
SpecialtyShellService $shell,
|
||||
): RedirectResponse {
|
||||
$this->authorizeAbility($request, 'consultations.manage');
|
||||
$this->assertDentistryManage($request, $modules);
|
||||
@@ -559,7 +560,11 @@ class DentistryWorkspaceController extends Controller
|
||||
}
|
||||
|
||||
return redirect()
|
||||
->route('care.specialty.workspace', ['module' => 'dentistry', 'visit' => $visit, 'tab' => 'overview'])
|
||||
->route('care.specialty.workspace', [
|
||||
'module' => 'dentistry',
|
||||
'visit' => $visit,
|
||||
'tab' => $shell->workspaceTabForStage('dentistry', $validated['stage']),
|
||||
])
|
||||
->with('success', 'Visit stage updated.');
|
||||
}
|
||||
|
||||
|
||||
@@ -44,6 +44,7 @@ class EmergencyWorkspaceController extends Controller
|
||||
Visit $visit,
|
||||
SpecialtyModuleService $modules,
|
||||
SpecialtyVisitStageService $stages,
|
||||
SpecialtyShellService $shell,
|
||||
): RedirectResponse {
|
||||
$this->authorizeAbility($request, 'consultations.manage');
|
||||
$this->assertEmergencyManage($request, $modules);
|
||||
@@ -67,7 +68,11 @@ class EmergencyWorkspaceController extends Controller
|
||||
}
|
||||
|
||||
return redirect()
|
||||
->route('care.specialty.workspace', ['module' => 'emergency', 'visit' => $visit, 'tab' => 'overview'])
|
||||
->route('care.specialty.workspace', [
|
||||
'module' => 'emergency',
|
||||
'visit' => $visit,
|
||||
'tab' => $shell->workspaceTabForStage('emergency', $validated['stage']),
|
||||
])
|
||||
->with('success', 'Visit stage updated.');
|
||||
}
|
||||
|
||||
|
||||
@@ -43,6 +43,7 @@ class OphthalmologyWorkspaceController extends Controller
|
||||
Visit $visit,
|
||||
SpecialtyModuleService $modules,
|
||||
SpecialtyVisitStageService $stages,
|
||||
SpecialtyShellService $shell,
|
||||
): RedirectResponse {
|
||||
$this->authorizeAbility($request, 'consultations.manage');
|
||||
$this->assertOphthalmologyManage($request, $modules);
|
||||
@@ -66,7 +67,11 @@ class OphthalmologyWorkspaceController extends Controller
|
||||
}
|
||||
|
||||
return redirect()
|
||||
->route('care.specialty.workspace', ['module' => 'ophthalmology', 'visit' => $visit, 'tab' => 'overview'])
|
||||
->route('care.specialty.workspace', [
|
||||
'module' => 'ophthalmology',
|
||||
'visit' => $visit,
|
||||
'tab' => $shell->workspaceTabForStage('ophthalmology', $validated['stage']),
|
||||
])
|
||||
->with('success', 'Visit stage updated.');
|
||||
}
|
||||
|
||||
|
||||
@@ -226,6 +226,30 @@ class SpecialtyShellService
|
||||
return $merged;
|
||||
}
|
||||
|
||||
/**
|
||||
* Workspace tab to open after advancing/setting a visit specialty stage.
|
||||
* Uses module `stage_tabs` config, then same-named tab, then overview.
|
||||
*/
|
||||
public function workspaceTabForStage(string $moduleKey, string $stage): string
|
||||
{
|
||||
$stage = trim($stage);
|
||||
$tabs = $this->workspaceTabs($moduleKey);
|
||||
$map = $this->definition($moduleKey)['stage_tabs'] ?? [];
|
||||
|
||||
if (is_array($map) && isset($map[$stage]) && is_string($map[$stage]) && $map[$stage] !== '') {
|
||||
$candidate = $map[$stage];
|
||||
if (array_key_exists($candidate, $tabs)) {
|
||||
return $candidate;
|
||||
}
|
||||
}
|
||||
|
||||
if ($stage !== '' && array_key_exists($stage, $tabs)) {
|
||||
return $stage;
|
||||
}
|
||||
|
||||
return array_key_exists('overview', $tabs) ? 'overview' : (array_key_first($tabs) ?: 'overview');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, string>
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user