Files
ladill-care/config/care_specialty_shell.php
T
isaaccladandCursor 0181221fe8
Deploy Ladill Care / deploy (push) Successful in 52s
Add shared specialty module shell (Phase 2).
Overview/Visits/History/Billing/Workspace layout with stage maps, KPIs,
patient header/timeline, and service catalogs seeded into Billing on activate.
Emergency, Blood Bank, and Dentistry ship first-class shell configs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-18 10:01:17 +00:00

119 lines
5.6 KiB
PHP

<?php
/**
* Specialty shell overlays: stage maps, billable service catalogs, workspace tabs.
* Merged onto catalog entries from care_specialty_modules.php by SpecialtyShellService.
*
* Modules without an entry inherit the generic defaults below.
*
* @return array{
* defaults: array<string, mixed>,
* modules: array<string, array<string, mixed>>
* }
*/
return [
'defaults' => [
'stages' => [
['code' => 'waiting', 'label' => 'Waiting', 'queue_point' => 'waiting'],
['code' => 'in_care', 'label' => 'In care', 'queue_point' => 'chair'],
['code' => 'completed', 'label' => 'Completed', 'queue_point' => null],
],
'services' => [
[
'code' => 'specialty.consultation',
'label' => 'Specialty consultation',
'amount_minor' => (int) env('CARE_CONSULTATION_FEE_MINOR', 5000),
'type' => 'consultation',
],
],
'workspace_tabs' => [
'overview' => 'Overview',
'clinical_notes' => 'Clinical notes',
'orders' => 'Orders',
'billing' => 'Billing',
'documents' => 'Documents',
],
'actions' => [
'call_next' => 'Call next patient',
'start' => 'Start consultation',
'complete' => 'Complete',
'order_test' => 'Order test',
'prescribe' => 'Prescribe',
'invoice' => 'Generate invoice',
'discharge' => 'Discharge',
],
],
'modules' => [
'emergency' => [
'stages' => [
['code' => 'arrival', 'label' => 'Arrival / triage', 'queue_point' => 'waiting'],
['code' => 'resus', 'label' => 'Resuscitation', 'queue_point' => 'resus'],
['code' => 'treatment', 'label' => 'Treatment bay', 'queue_point' => 'bay'],
['code' => 'observation', 'label' => 'Observation', 'queue_point' => 'obs'],
['code' => 'disposition', 'label' => 'Disposition', 'queue_point' => null],
],
'services' => [
['code' => 'er.triage', 'label' => 'Emergency triage', 'amount_minor' => 0, 'type' => 'consultation'],
['code' => 'er.consultation', 'label' => 'Emergency consultation', 'amount_minor' => 8000, 'type' => 'consultation'],
['code' => 'er.procedure', 'label' => 'Emergency procedure', 'amount_minor' => 15000, 'type' => 'procedure'],
['code' => 'er.observation', 'label' => 'Observation bed (per hour)', 'amount_minor' => 3000, 'type' => 'misc'],
],
'workspace_tabs' => [
'overview' => 'Overview',
'triage' => 'Triage',
'clinical_notes' => 'Clinical notes',
'orders' => 'Orders',
'billing' => 'Billing',
'documents' => 'Documents',
],
],
'blood_bank' => [
'stages' => [
['code' => 'request', 'label' => 'Request received', 'queue_point' => 'waiting'],
['code' => 'crossmatch', 'label' => 'Cross-match', 'queue_point' => 'lab'],
['code' => 'issue', 'label' => 'Product issue', 'queue_point' => 'issue'],
['code' => 'transfusion', 'label' => 'Transfusion', 'queue_point' => null],
['code' => 'completed', 'label' => 'Completed', 'queue_point' => null],
],
'services' => [
['code' => 'bb.crossmatch', 'label' => 'Cross-match', 'amount_minor' => 4000, 'type' => 'lab'],
['code' => 'bb.whole_blood', 'label' => 'Whole blood unit', 'amount_minor' => 12000, 'type' => 'misc'],
['code' => 'bb.packed_rbc', 'label' => 'Packed RBC unit', 'amount_minor' => 15000, 'type' => 'misc'],
['code' => 'bb.platelets', 'label' => 'Platelets unit', 'amount_minor' => 18000, 'type' => 'misc'],
],
'workspace_tabs' => [
'overview' => 'Overview',
'requests' => 'Requests',
'inventory' => 'Inventory',
'billing' => 'Billing',
'documents' => 'Documents',
],
],
'dentistry' => [
'stages' => [
['code' => 'waiting', 'label' => 'Waiting room', 'queue_point' => 'waiting'],
['code' => 'chair', 'label' => 'Chair assignment', 'queue_point' => 'chair'],
['code' => 'procedure', 'label' => 'Procedure', 'queue_point' => 'chair'],
['code' => 'recovery', 'label' => 'Recovery', 'queue_point' => 'recovery'],
['code' => 'completed', 'label' => 'Completed', 'queue_point' => null],
],
'services' => [
['code' => 'den.consult', 'label' => 'Dental consultation', 'amount_minor' => 5000, 'type' => 'consultation'],
['code' => 'den.cleaning', 'label' => 'Scaling / polishing', 'amount_minor' => 8000, 'type' => 'procedure'],
['code' => 'den.fill', 'label' => 'Filling', 'amount_minor' => 12000, 'type' => 'procedure'],
['code' => 'den.extraction', 'label' => 'Extraction', 'amount_minor' => 15000, 'type' => 'procedure'],
['code' => 'den.xray', 'label' => 'Dental X-ray', 'amount_minor' => 4000, 'type' => 'imaging'],
],
'workspace_tabs' => [
'overview' => 'Overview',
'odontogram' => 'Chart',
'clinical_notes' => 'Clinical notes',
'orders' => 'Orders',
'billing' => 'Billing',
'documents' => 'Documents',
],
],
],
];