Replace Maternity with Women's Health (OB/GYN) and configurable service lines.
Deploy Ladill Care / deploy (push) Successful in 26s

Keeps Fertility as a separate specialty, adds OB/GYN and fertility staff roles, and migrates live org settings from maternity → womens_health.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
isaacclad
2026-07-20 09:48:19 +00:00
co-authored by Cursor
parent 938f351ede
commit 56a663a777
33 changed files with 708 additions and 189 deletions
@@ -155,7 +155,7 @@ class SpecialtyModuleController extends Controller
'blood_bank' => 'requests',
'ophthalmology' => 'refraction',
'physiotherapy' => 'assessment',
'maternity' => 'history',
'womens_health' => 'history',
'radiology' => 'protocol',
'cardiology' => 'history',
'psychiatry' => 'history',
@@ -246,7 +246,7 @@ class SpecialtyModuleController extends Controller
'blood_bank' => 'requests',
'ophthalmology' => 'refraction',
'physiotherapy' => 'assessment',
'maternity' => 'history',
'womens_health' => 'history',
'radiology' => 'protocol',
'cardiology' => 'history',
'psychiatry' => 'history',
@@ -495,14 +495,14 @@ class SpecialtyModuleController extends Controller
}
}
if ($module === 'maternity' && in_array($recordType, ['anc_history', 'obstetric_exam', 'fetal_notes', 'mat_investigation', 'mat_plan'], true)) {
$workflow = app(\App\Services\Care\Maternity\MaternityWorkflowService::class);
if ($module === 'womens_health' && in_array($recordType, ['anc_history', 'obstetric_exam', 'fetal_notes', 'mat_investigation', 'mat_plan'], true)) {
$workflow = app(\App\Services\Care\WomensHealth\WomensHealthWorkflowService::class);
$stageService = app(\App\Services\Care\SpecialtyVisitStageService::class);
$suggested = match ($recordType) {
'anc_history' => $workflow->stageFromHistory($record->payload ?? []),
'obstetric_exam' => $workflow->stageFromExam($record->payload ?? []),
'fetal_notes' => $workflow->stageFromFetal($record->payload ?? []),
'mat_investigation' => \App\Services\Care\Maternity\MaternityWorkflowService::STAGE_INVESTIGATION,
'mat_investigation' => \App\Services\Care\WomensHealth\WomensHealthWorkflowService::STAGE_INVESTIGATION,
'mat_plan' => $workflow->stageFromPlan($record->payload ?? []),
default => null,
};
@@ -522,7 +522,7 @@ class SpecialtyModuleController extends Controller
$stageService->setStage(
$organization,
$visit,
'maternity',
'womens_health',
$suggested,
$this->ownerRef($request),
$this->ownerRef($request),
@@ -534,7 +534,7 @@ class SpecialtyModuleController extends Controller
$stageService->setStage(
$organization,
$visit,
'maternity',
'womens_health',
$suggested,
$this->ownerRef($request),
$this->ownerRef($request),
@@ -1424,6 +1424,7 @@ class SpecialtyModuleController extends Controller
CareQueueBridge $queueBridge,
?Visit $visit = null,
): View {
$module = $modules->normalizeKey($module);
$definition = $modules->definition($module);
abort_unless($definition, 404);
@@ -1849,15 +1850,15 @@ class SpecialtyModuleController extends Controller
$physiotherapyStageFlow = app(\App\Services\Care\Physiotherapy\PhysiotherapyWorkflowService::class)->stageFlow();
}
if ($module === 'maternity') {
$maternityHistory = $clinical->findForVisit($workspaceVisit, 'maternity', 'anc_history');
$maternityExam = $clinical->findForVisit($workspaceVisit, 'maternity', 'obstetric_exam');
$maternityFetal = $clinical->findForVisit($workspaceVisit, 'maternity', 'fetal_notes');
$maternityInvestigation = $clinical->findForVisit($workspaceVisit, 'maternity', 'mat_investigation');
$maternityPlan = $clinical->findForVisit($workspaceVisit, 'maternity', 'mat_plan');
$maternityPostnatal = $clinical->findForVisit($workspaceVisit, 'maternity', 'postnatal_note');
$maternityStageCodes = collect($shell->stages('maternity'))->pluck('code')->all();
$maternityStageFlow = app(\App\Services\Care\Maternity\MaternityWorkflowService::class)->stageFlow();
if ($module === 'womens_health') {
$maternityHistory = $clinical->findForVisit($workspaceVisit, 'womens_health', 'anc_history');
$maternityExam = $clinical->findForVisit($workspaceVisit, 'womens_health', 'obstetric_exam');
$maternityFetal = $clinical->findForVisit($workspaceVisit, 'womens_health', 'fetal_notes');
$maternityInvestigation = $clinical->findForVisit($workspaceVisit, 'womens_health', 'mat_investigation');
$maternityPlan = $clinical->findForVisit($workspaceVisit, 'womens_health', 'mat_plan');
$maternityPostnatal = $clinical->findForVisit($workspaceVisit, 'womens_health', 'postnatal_note');
$maternityStageCodes = collect($shell->stages('womens_health'))->pluck('code')->all();
$maternityStageFlow = app(\App\Services\Care\WomensHealth\WomensHealthWorkflowService::class)->stageFlow();
}
if ($module === 'radiology') {