Files
ladill-care/config/care_specialty_clinical.php
isaaccladandCursor 56a663a777
Deploy Ladill Care / deploy (push) Successful in 26s
Replace Maternity with Women's Health (OB/GYN) and configurable service lines.
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>
2026-07-20 09:48:19 +00:00

1119 lines
90 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* Specialty clinical form schemas (workspace tab → record type → fields).
* Consumed by SpecialtyClinicalRecordService.
*
* @return array{
* record_types: array<string, array<string, string>>,
* fields: array<string, array<string, list<array<string, mixed>>>>
* }
*/
return [
'record_types' => [
'emergency' => [
'triage' => 'triage',
'clinical_notes' => 'clinical_note',
'observation' => 'observation',
'disposition' => 'disposition',
],
'blood_bank' => [
'requests' => 'blood_request',
'inventory' => 'inventory_note',
'issue' => 'issue_note',
'transfusion' => 'transfusion_note',
],
'dentistry' => [
],
'ophthalmology' => [
'refraction' => 'refraction',
'exam' => 'eye_exam',
'investigations' => 'eye_investigation',
'plan' => 'eye_plan',
'treat' => 'eye_procedure',
],
'physiotherapy' => [
'assessment' => 'pt_assessment',
'plan' => 'pt_plan',
'session' => 'pt_session',
'exercises' => 'pt_home_program',
],
'womens_health' => [
'history' => 'anc_history',
'exam' => 'obstetric_exam',
'fetal' => 'fetal_notes',
'investigations' => 'mat_investigation',
'plan' => 'mat_plan',
'postnatal' => 'postnatal_note',
],
'radiology' => [
'protocol' => 'imaging_request',
'acquisition' => 'imaging_acquisition',
'findings' => 'imaging_report',
'verification' => 'imaging_verification',
],
'cardiology' => [
'history' => 'cardio_history',
'exam' => 'cardiac_exam',
'investigations' => 'cardio_investigation',
'plan' => 'cardio_plan',
'procedures' => 'cardio_procedure',
],
'psychiatry' => [
'history' => 'mental_status',
'risk' => 'risk_assessment',
'plan' => 'psych_plan',
'followup' => 'psych_followup',
],
'pediatrics' => [
'history' => 'ped_history',
'growth' => 'pediatric_exam',
'investigations' => 'ped_investigation',
'plan' => 'ped_plan',
'treatment' => 'ped_treatment',
],
'orthopedics' => [
'history' => 'ortho_history',
'exam' => 'ortho_exam',
'imaging' => 'ortho_imaging',
'plan' => 'ortho_plan',
'procedure' => 'ortho_procedure',
],
'ent' => [
'history' => 'ent_history',
'exam' => 'ent_exam',
'investigations' => 'ent_investigation',
'plan' => 'ent_plan',
'procedure' => 'ent_procedure',
],
'oncology' => [
'history' => 'onc_history',
'staging' => 'onc_staging',
'investigations' => 'onc_investigation',
'plan' => 'onc_plan',
'treatment' => 'onc_treatment',
],
'renal' => [
'history' => 'renal_history',
'exam' => 'renal_exam',
'dialysis' => 'renal_session',
'plan' => 'renal_plan',
],
'surgery' => [
'history' => 'surg_history',
'exam' => 'surg_exam',
'investigations' => 'surg_investigation',
'plan' => 'surg_plan',
'procedure' => 'surg_procedure',
'postop' => 'surg_postop',
],
'vaccination' => [
'eligibility' => 'vax_eligibility',
'consent' => 'vax_consent',
'administer' => 'vax_admin',
'observation' => 'vax_observation',
],
'pathology' => [
'request' => 'path_request',
'specimen' => 'path_specimen',
'processing' => 'path_processing',
'report' => 'path_report',
'verification' => 'path_verification',
],
'infusion' => [
'assessment' => 'infusion_assessment',
'protocol' => 'infusion_protocol',
'session' => 'infusion_session',
'monitoring' => 'infusion_monitoring',
],
'dermatology' => [
'history' => 'derm_history',
'exam' => 'skin_exam',
'investigations' => 'derm_investigation',
'plan' => 'derm_plan',
'procedure' => 'derm_procedure',
],
'podiatry' => [
'history' => 'pod_history',
'exam' => 'foot_exam',
'investigations' => 'pod_investigation',
'plan' => 'pod_plan',
'procedure' => 'pod_procedure',
],
'fertility' => [
'history' => 'fert_history',
'exam' => 'fert_exam',
'investigations' => 'fert_investigation',
'plan' => 'fert_plan',
'cycle' => 'fert_cycle',
],
'child_welfare' => [
'intake' => 'cwc_intake',
'assessment' => 'cwc_assessment',
'plan' => 'cwc_plan',
'followup' => 'cwc_followup',
],
'ambulance' => [
'dispatch' => 'amb_dispatch',
'scene' => 'amb_scene',
'en_route' => 'amb_en_route',
'handover' => 'amb_handover',
],
],
'fields' => [
'emergency' => [
'triage' => [
['name' => 'acuity', 'label' => 'Triage acuity', 'type' => 'select', 'required' => true, 'options' => ['1 - Resuscitation', '2 - Emergency', '3 - Urgent', '4 - Semi-urgent', '5 - Non-urgent']],
['name' => 'chief_complaint', 'label' => 'Chief complaint', 'type' => 'text', 'required' => true],
['name' => 'onset', 'label' => 'Onset', 'type' => 'text'],
['name' => 'airway_ok', 'label' => 'Airway patent', 'type' => 'boolean'],
['name' => 'breathing_ok', 'label' => 'Breathing adequate', 'type' => 'boolean'],
['name' => 'circulation_ok', 'label' => 'Circulation stable', 'type' => 'boolean'],
['name' => 'gcs', 'label' => 'GCS', 'type' => 'number'],
['name' => 'pain_score', 'label' => 'Pain score (010)', 'type' => 'number'],
['name' => 'mode_of_arrival', 'label' => 'Mode of arrival', 'type' => 'select', 'options' => ['Walk-in', 'Ambulance', 'Police', 'Referral', 'Other']],
['name' => 'disposition_intent', 'label' => 'Disposition intent', 'type' => 'select', 'options' => ['Resus', 'Treatment bay', 'Observation', 'Discharge', 'Admit', 'Transfer']],
['name' => 'notes', 'label' => 'Triage notes', 'type' => 'textarea', 'rows' => 3],
],
'clinical_note' => [
['name' => 'history', 'label' => 'History of present illness', 'type' => 'textarea', 'required' => true, 'rows' => 4],
['name' => 'examination', 'label' => 'Examination', 'type' => 'textarea', 'rows' => 3],
['name' => 'working_diagnosis', 'label' => 'Working diagnosis', 'type' => 'text'],
['name' => 'plan', 'label' => 'Plan', 'type' => 'textarea', 'rows' => 3],
['name' => 'procedures', 'label' => 'Procedures performed', 'type' => 'textarea', 'rows' => 2],
],
'observation' => [
['name' => 'bed_label', 'label' => 'Bed / bay label', 'type' => 'text'],
['name' => 'started_at', 'label' => 'Observation started', 'type' => 'text'],
['name' => 'hours', 'label' => 'Hours observed', 'type' => 'number'],
['name' => 'monitoring_plan', 'label' => 'Monitoring plan', 'type' => 'textarea', 'rows' => 2],
['name' => 'progress', 'label' => 'Progress notes', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'ready_for_disposition', 'label' => 'Ready for disposition', 'type' => 'boolean'],
],
'disposition' => [
['name' => 'disposition', 'label' => 'Final disposition', 'type' => 'select', 'required' => true, 'options' => ['Discharge home', 'Admit to ward', 'Admit to ICU', 'Transfer to facility', 'Left against advice', 'Died', 'Absconded']],
['name' => 'condition', 'label' => 'Condition at disposition', 'type' => 'select', 'options' => ['Stable', 'Improving', 'Unstable', 'Critical', 'Deceased']],
['name' => 'destination', 'label' => 'Destination (ward / facility)', 'type' => 'text'],
['name' => 'diagnosis', 'label' => 'Discharge / transfer diagnosis', 'type' => 'text', 'required' => true],
['name' => 'advice', 'label' => 'Advice / follow-up', 'type' => 'textarea', 'rows' => 3],
['name' => 'medications', 'label' => 'Medications on discharge', 'type' => 'textarea', 'rows' => 2],
['name' => 'time', 'label' => 'Disposition time', 'type' => 'text'],
['name' => 'notes', 'label' => 'Notes', 'type' => 'textarea', 'rows' => 2],
],
],
'blood_bank' => [
'blood_request' => [
['name' => 'product', 'label' => 'Product', 'type' => 'select', 'required' => true, 'options' => ['Whole blood', 'Packed RBC', 'Platelets', 'FFP', 'Cryoprecipitate']],
['name' => 'units', 'label' => 'Units requested', 'type' => 'number', 'required' => true],
['name' => 'urgency', 'label' => 'Urgency', 'type' => 'select', 'required' => true, 'options' => ['Routine', 'Urgent', 'Emergency / massive']],
['name' => 'patient_blood_group', 'label' => 'Patient blood group', 'type' => 'select', 'options' => ['A+', 'A-', 'B+', 'B-', 'AB+', 'AB-', 'O+', 'O-', 'Unknown']],
['name' => 'indication', 'label' => 'Clinical indication', 'type' => 'textarea', 'required' => true, 'rows' => 2],
['name' => 'crossmatch_status', 'label' => 'Cross-match status', 'type' => 'select', 'options' => ['Not started', 'In progress', 'Compatible', 'Incompatible', 'Issued']],
['name' => 'issued_units', 'label' => 'Units issued', 'type' => 'number'],
['name' => 'notes', 'label' => 'Notes', 'type' => 'textarea', 'rows' => 2],
],
'inventory_note' => [
['name' => 'whole_blood_units', 'label' => 'Whole blood on hand', 'type' => 'number'],
['name' => 'packed_rbc_units', 'label' => 'Packed RBC on hand', 'type' => 'number'],
['name' => 'platelet_units', 'label' => 'Platelets on hand', 'type' => 'number'],
['name' => 'ffp_units', 'label' => 'FFP on hand', 'type' => 'number'],
['name' => 'cryo_units', 'label' => 'Cryoprecipitate on hand', 'type' => 'number'],
['name' => 'low_stock_alert', 'label' => 'Flag low stock', 'type' => 'boolean'],
['name' => 'notes', 'label' => 'Inventory notes', 'type' => 'textarea', 'rows' => 3],
],
'issue_note' => [
['name' => 'product', 'label' => 'Product', 'type' => 'select', 'required' => true, 'options' => ['Whole blood', 'Packed RBC', 'Platelets', 'FFP', 'Cryoprecipitate']],
['name' => 'units_issued', 'label' => 'Units issued', 'type' => 'number', 'required' => true],
['name' => 'bag_numbers', 'label' => 'Bag / unit numbers', 'type' => 'text'],
['name' => 'issued_to', 'label' => 'Issued to (ward / clinician)', 'type' => 'text'],
['name' => 'issued_at', 'label' => 'Issued at', 'type' => 'text'],
['name' => 'notes', 'label' => 'Notes', 'type' => 'textarea', 'rows' => 2],
],
'transfusion_note' => [
['name' => 'started_at', 'label' => 'Started at', 'type' => 'text'],
['name' => 'units_transfused', 'label' => 'Units transfused', 'type' => 'number'],
['name' => 'vitals_ok', 'label' => 'Vitals acceptable', 'type' => 'boolean'],
['name' => 'reaction', 'label' => 'Reaction', 'type' => 'select', 'options' => ['None', 'Mild (fever / itch)', 'Moderate', 'Severe / stop transfusion']],
['name' => 'outcome', 'label' => 'Outcome', 'type' => 'select', 'required' => true, 'options' => ['In progress', 'Completed uneventfully', 'Stopped — reaction', 'Stopped — other']],
['name' => 'notes', 'label' => 'Notes', 'type' => 'textarea', 'rows' => 3],
],
],
'dentistry' => [
],
'ophthalmology' => [
'refraction' => [
['name' => 'va_od', 'label' => 'Visual acuity OD', 'type' => 'text', 'required' => true],
['name' => 'va_os', 'label' => 'Visual acuity OS', 'type' => 'text', 'required' => true],
['name' => 'va_od_near', 'label' => 'Near VA OD', 'type' => 'text'],
['name' => 'va_os_near', 'label' => 'Near VA OS', 'type' => 'text'],
['name' => 'pinhole_od', 'label' => 'Pinhole OD', 'type' => 'text'],
['name' => 'pinhole_os', 'label' => 'Pinhole OS', 'type' => 'text'],
['name' => 'sphere_od', 'label' => 'Sphere OD', 'type' => 'text'],
['name' => 'cylinder_od', 'label' => 'Cylinder OD', 'type' => 'text'],
['name' => 'axis_od', 'label' => 'Axis OD', 'type' => 'text'],
['name' => 'sphere_os', 'label' => 'Sphere OS', 'type' => 'text'],
['name' => 'cylinder_os', 'label' => 'Cylinder OS', 'type' => 'text'],
['name' => 'axis_os', 'label' => 'Axis OS', 'type' => 'text'],
['name' => 'add', 'label' => 'Near add', 'type' => 'text'],
['name' => 'pd', 'label' => 'Pupillary distance (mm)', 'type' => 'number'],
['name' => 'notes', 'label' => 'Refraction notes', 'type' => 'textarea', 'rows' => 2],
],
'eye_exam' => [
['name' => 'chief_complaint', 'label' => 'Chief complaint', 'type' => 'text', 'required' => true],
['name' => 'history', 'label' => 'History of present illness', 'type' => 'textarea', 'rows' => 3],
['name' => 'va_od', 'label' => 'Visual acuity OD', 'type' => 'text'],
['name' => 'va_os', 'label' => 'Visual acuity OS', 'type' => 'text'],
['name' => 'iop_od', 'label' => 'IOP OD (mmHg)', 'type' => 'number'],
['name' => 'iop_os', 'label' => 'IOP OS (mmHg)', 'type' => 'number'],
['name' => 'pupils', 'label' => 'Pupils', 'type' => 'text'],
['name' => 'extraocular', 'label' => 'Extraocular movements', 'type' => 'text'],
['name' => 'anterior_segment', 'label' => 'Anterior segment', 'type' => 'textarea', 'rows' => 2],
['name' => 'fundus', 'label' => 'Fundus / posterior segment', 'type' => 'textarea', 'rows' => 2],
['name' => 'findings', 'label' => 'Key findings', 'type' => 'textarea', 'required' => true, 'rows' => 3],
],
'eye_investigation' => [
['name' => 'modality', 'label' => 'Modality', 'type' => 'select', 'required' => true, 'options' => ['OCT', 'Visual fields', 'Fundus photo', 'Fluorescein angiography', 'Biometry / A-scan', 'B-scan ultrasound', 'Corneal topography', 'Other']],
['name' => 'eye', 'label' => 'Eye', 'type' => 'select', 'options' => ['OD', 'OS', 'OU']],
['name' => 'indication', 'label' => 'Indication', 'type' => 'textarea', 'rows' => 2],
['name' => 'findings', 'label' => 'Findings', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'impression', 'label' => 'Impression', 'type' => 'textarea', 'rows' => 2],
['name' => 'recommendations', 'label' => 'Recommendations', 'type' => 'textarea', 'rows' => 2],
],
'eye_plan' => [
['name' => 'diagnosis', 'label' => 'Diagnosis', 'type' => 'text', 'required' => true],
['name' => 'laterality', 'label' => 'Laterality', 'type' => 'select', 'options' => ['OD', 'OS', 'OU', 'N/A']],
['name' => 'plan', 'label' => 'Plan', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'medications', 'label' => 'Medications / drops', 'type' => 'textarea', 'rows' => 2],
['name' => 'procedure_planned', 'label' => 'Procedure planned', 'type' => 'boolean'],
['name' => 'follow_up', 'label' => 'Follow-up', 'type' => 'text'],
['name' => 'advice', 'label' => 'Patient advice', 'type' => 'textarea', 'rows' => 2],
],
'eye_procedure' => [
['name' => 'procedure', 'label' => 'Procedure', 'type' => 'text', 'required' => true],
['name' => 'eye', 'label' => 'Eye', 'type' => 'select', 'required' => true, 'options' => ['OD', 'OS', 'OU']],
['name' => 'indication', 'label' => 'Indication', 'type' => 'textarea', 'rows' => 2],
['name' => 'anaesthesia', 'label' => 'Anaesthesia', 'type' => 'select', 'options' => ['None', 'Topical', 'Local', 'Other']],
['name' => 'outcome', 'label' => 'Outcome', 'type' => 'select', 'required' => true, 'options' => ['Completed uneventfully', 'Completed with complications', 'Deferred', 'Aborted']],
['name' => 'complications', 'label' => 'Complications', 'type' => 'textarea', 'rows' => 2],
['name' => 'post_op_plan', 'label' => 'Post-procedure plan', 'type' => 'textarea', 'rows' => 2],
['name' => 'notes', 'label' => 'Notes', 'type' => 'textarea', 'rows' => 2],
],
],
'physiotherapy' => [
'pt_assessment' => [
['name' => 'chief_complaint', 'label' => 'Presenting complaint', 'type' => 'text', 'required' => true],
['name' => 'onset', 'label' => 'Onset / mechanism', 'type' => 'text'],
['name' => 'pain_score', 'label' => 'Pain score (010)', 'type' => 'number'],
['name' => 'body_region', 'label' => 'Body region', 'type' => 'select', 'options' => ['Neck', 'Shoulder', 'Back / lumbar', 'Hip', 'Knee', 'Ankle / foot', 'Upper limb', 'Lower limb', 'Other']],
['name' => 'rom', 'label' => 'Range of motion', 'type' => 'textarea', 'rows' => 2],
['name' => 'strength', 'label' => 'Strength / function', 'type' => 'textarea', 'rows' => 2],
['name' => 'special_tests', 'label' => 'Special tests', 'type' => 'textarea', 'rows' => 2],
['name' => 'red_flags', 'label' => 'Red flags', 'type' => 'textarea', 'rows' => 2],
['name' => 'goals', 'label' => 'Treatment goals', 'type' => 'textarea', 'required' => true, 'rows' => 2],
],
'pt_plan' => [
['name' => 'diagnosis', 'label' => 'Physio diagnosis / problem list', 'type' => 'text', 'required' => true],
['name' => 'frequency', 'label' => 'Session frequency', 'type' => 'text'],
['name' => 'duration_weeks', 'label' => 'Expected duration (weeks)', 'type' => 'number'],
['name' => 'interventions', 'label' => 'Planned interventions', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'precautions', 'label' => 'Precautions / contraindications', 'type' => 'textarea', 'rows' => 2],
['name' => 'goals', 'label' => 'Short-term goals', 'type' => 'textarea', 'rows' => 2],
['name' => 'outcome_measures', 'label' => 'Outcome measures', 'type' => 'text'],
],
'pt_session' => [
['name' => 'session_number', 'label' => 'Session number', 'type' => 'number'],
['name' => 'modalities', 'label' => 'Modalities used', 'type' => 'textarea', 'required' => true, 'rows' => 2],
['name' => 'exercises', 'label' => 'Exercises performed', 'type' => 'textarea', 'rows' => 2],
['name' => 'pain_before', 'label' => 'Pain before (010)', 'type' => 'number'],
['name' => 'pain_after', 'label' => 'Pain after (010)', 'type' => 'number'],
['name' => 'response', 'label' => 'Patient response', 'type' => 'textarea', 'rows' => 2],
['name' => 'outcome', 'label' => 'Session outcome', 'type' => 'select', 'required' => true, 'options' => ['In progress', 'Completed — continue plan', 'Completed — progress review due', 'Completed — discharge ready', 'Deferred']],
['name' => 'next_review', 'label' => 'Next review', 'type' => 'text'],
['name' => 'notes', 'label' => 'Notes', 'type' => 'textarea', 'rows' => 2],
],
'pt_home_program' => [
['name' => 'exercises', 'label' => 'Home exercises', 'type' => 'textarea', 'required' => true, 'rows' => 4],
['name' => 'frequency', 'label' => 'Frequency / sets', 'type' => 'text'],
['name' => 'precautions', 'label' => 'Precautions', 'type' => 'textarea', 'rows' => 2],
['name' => 'progress_notes', 'label' => 'Progress notes', 'type' => 'textarea', 'rows' => 3],
['name' => 'adherence', 'label' => 'Adherence', 'type' => 'select', 'options' => ['Good', 'Fair', 'Poor', 'Unknown']],
['name' => 'outcome', 'label' => 'Progress outcome', 'type' => 'select', 'options' => ['Improving', 'Stable', 'Worsening', 'Goals met — discharge', 'Refer on']],
['name' => 'next_review', 'label' => 'Next review', 'type' => 'text'],
],
],
'womens_health' => [
'anc_history' => [
['name' => 'gravida', 'label' => 'Gravida', 'type' => 'number', 'required' => true],
['name' => 'para', 'label' => 'Para', 'type' => 'number'],
['name' => 'lmp', 'label' => 'LMP', 'type' => 'text'],
['name' => 'edd', 'label' => 'EDD', 'type' => 'text'],
['name' => 'gestational_age_weeks', 'label' => 'Gestational age (weeks)', 'type' => 'number', 'required' => true],
['name' => 'anc_visit_number', 'label' => 'ANC visit number', 'type' => 'number'],
['name' => 'obstetric_history', 'label' => 'Obstetric history', 'type' => 'textarea', 'rows' => 3],
['name' => 'medical_history', 'label' => 'Medical / surgical history', 'type' => 'textarea', 'rows' => 2],
['name' => 'allergies', 'label' => 'Allergies', 'type' => 'text'],
['name' => 'medications', 'label' => 'Current medications', 'type' => 'textarea', 'rows' => 2],
['name' => 'social_history', 'label' => 'Social history', 'type' => 'textarea', 'rows' => 2],
],
'obstetric_exam' => [
['name' => 'bp', 'label' => 'Blood pressure', 'type' => 'text', 'required' => true],
['name' => 'pulse', 'label' => 'Pulse', 'type' => 'number'],
['name' => 'weight_kg', 'label' => 'Weight (kg)', 'type' => 'number'],
['name' => 'fundal_height', 'label' => 'Fundal height (cm)', 'type' => 'number'],
['name' => 'presentation', 'label' => 'Presentation', 'type' => 'select', 'options' => ['Cephalic', 'Breech', 'Transverse', 'Unknown']],
['name' => 'lie', 'label' => 'Lie', 'type' => 'select', 'options' => ['Longitudinal', 'Oblique', 'Transverse', 'Unknown']],
['name' => 'engagement', 'label' => 'Engagement', 'type' => 'text'],
['name' => 'oedema', 'label' => 'Oedema', 'type' => 'select', 'options' => ['None', 'Mild', 'Moderate', 'Severe']],
['name' => 'urine', 'label' => 'Urine dipstick', 'type' => 'text'],
['name' => 'danger_signs', 'label' => 'Danger signs', 'type' => 'textarea', 'rows' => 2],
['name' => 'findings', 'label' => 'Exam findings', 'type' => 'textarea', 'required' => true, 'rows' => 3],
],
'fetal_notes' => [
['name' => 'fetal_heart_rate', 'label' => 'Fetal heart rate (bpm)', 'type' => 'number', 'required' => true],
['name' => 'fetal_movements', 'label' => 'Fetal movements', 'type' => 'select', 'options' => ['Normal', 'Reduced', 'Absent', 'Not assessed']],
['name' => 'presentation', 'label' => 'Presentation', 'type' => 'select', 'options' => ['Cephalic', 'Breech', 'Transverse', 'Unknown']],
['name' => 'liquor', 'label' => 'Liquor / AFI notes', 'type' => 'text'],
['name' => 'ctg_summary', 'label' => 'CTG / monitoring summary', 'type' => 'textarea', 'rows' => 2],
['name' => 'notes', 'label' => 'Fetal notes', 'type' => 'textarea', 'rows' => 3],
],
'mat_investigation' => [
['name' => 'modality', 'label' => 'Investigation', 'type' => 'select', 'required' => true, 'options' => ['Obstetric ultrasound', 'Bloods (FBC / group)', 'Urine / MSU', 'Glucose / GTT', 'HIV / syphilis / hepatitis', 'Other']],
['name' => 'indication', 'label' => 'Indication', 'type' => 'textarea', 'rows' => 2],
['name' => 'findings', 'label' => 'Findings', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'impression', 'label' => 'Impression', 'type' => 'textarea', 'rows' => 2],
['name' => 'recommendations', 'label' => 'Recommendations', 'type' => 'textarea', 'rows' => 2],
],
'mat_plan' => [
['name' => 'risk_category', 'label' => 'Risk category', 'type' => 'select', 'options' => ['Low risk', 'Moderate risk', 'High risk']],
['name' => 'plan', 'label' => 'Care plan', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'medications', 'label' => 'Medications / supplements', 'type' => 'textarea', 'rows' => 2],
['name' => 'education', 'label' => 'Patient education', 'type' => 'textarea', 'rows' => 2],
['name' => 'postnatal_needed', 'label' => 'Delivery / postnatal follow-up needed', 'type' => 'boolean'],
['name' => 'follow_up', 'label' => 'Next ANC / follow-up', 'type' => 'text'],
['name' => 'referral', 'label' => 'Referral', 'type' => 'text'],
],
'postnatal_note' => [
['name' => 'episode_type', 'label' => 'Episode type', 'type' => 'select', 'required' => true, 'options' => ['ANC only', 'Delivery note', 'Immediate postnatal', 'Postnatal review']],
['name' => 'delivery_mode', 'label' => 'Delivery mode', 'type' => 'select', 'options' => ['N/A', 'SVD', 'Assisted vaginal', 'CS elective', 'CS emergency']],
['name' => 'delivery_date', 'label' => 'Delivery date / time', 'type' => 'text'],
['name' => 'baby_condition', 'label' => 'Baby condition', 'type' => 'textarea', 'rows' => 2],
['name' => 'maternal_condition', 'label' => 'Maternal condition', 'type' => 'textarea', 'rows' => 2],
['name' => 'breastfeeding', 'label' => 'Breastfeeding / feeding', 'type' => 'text'],
['name' => 'complications', 'label' => 'Complications', 'type' => 'textarea', 'rows' => 2],
['name' => 'outcome', 'label' => 'Outcome', 'type' => 'select', 'required' => true, 'options' => ['In progress', 'Completed — continue ANC', 'Completed — discharged', 'Referred', 'Admitted']],
['name' => 'plan', 'label' => 'Plan', 'type' => 'textarea', 'rows' => 2],
['name' => 'notes', 'label' => 'Notes', 'type' => 'textarea', 'rows' => 2],
],
],
'radiology' => [
'imaging_request' => [
['name' => 'modality', 'label' => 'Modality', 'type' => 'select', 'required' => true, 'options' => ['X-ray', 'Ultrasound', 'CT', 'MRI', 'Fluoroscopy', 'Other']],
['name' => 'body_part', 'label' => 'Body part / region', 'type' => 'text', 'required' => true],
['name' => 'clinical_info', 'label' => 'Clinical information', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'urgency', 'label' => 'Urgency', 'type' => 'select', 'options' => ['Routine', 'Urgent', 'STAT']],
['name' => 'contrast', 'label' => 'Contrast', 'type' => 'select', 'options' => ['None', 'IV', 'Oral', 'Both']],
['name' => 'protocol', 'label' => 'Protocol / sequences', 'type' => 'textarea', 'rows' => 2],
['name' => 'referrer', 'label' => 'Referring clinician', 'type' => 'text'],
],
'imaging_acquisition' => [
['name' => 'technologist', 'label' => 'Technologist', 'type' => 'text'],
['name' => 'equipment', 'label' => 'Equipment / room', 'type' => 'text'],
['name' => 'acquisition_status', 'label' => 'Acquisition status', 'type' => 'select', 'required' => true, 'options' => ['Scheduled', 'In progress', 'Acquired', 'Incomplete', 'Cancelled']],
['name' => 'contrast_given', 'label' => 'Contrast administered', 'type' => 'boolean'],
['name' => 'dose_notes', 'label' => 'Dose / exposure notes', 'type' => 'textarea', 'rows' => 2],
['name' => 'quality', 'label' => 'Image quality', 'type' => 'select', 'options' => ['Diagnostic', 'Limited', 'Non-diagnostic', 'Repeat needed']],
['name' => 'notes', 'label' => 'Acquisition notes', 'type' => 'textarea', 'rows' => 2],
],
'imaging_report' => [
['name' => 'technique', 'label' => 'Technique', 'type' => 'textarea', 'rows' => 2],
['name' => 'comparison', 'label' => 'Comparison', 'type' => 'text'],
['name' => 'findings', 'label' => 'Findings', 'type' => 'textarea', 'required' => true, 'rows' => 4],
['name' => 'impression', 'label' => 'Impression', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'recommendations', 'label' => 'Recommendations', 'type' => 'textarea', 'rows' => 2],
['name' => 'critical_result', 'label' => 'Critical / unexpected finding', 'type' => 'boolean'],
],
'imaging_verification' => [
['name' => 'verification_status', 'label' => 'Verification status', 'type' => 'select', 'required' => true, 'options' => ['Draft', 'Preliminary', 'Verified / final', 'Amended']],
['name' => 'verified_by', 'label' => 'Verified by', 'type' => 'text', 'required' => true],
['name' => 'critical_communicated', 'label' => 'Critical result communicated', 'type' => 'boolean'],
['name' => 'communication_notes', 'label' => 'Communication notes', 'type' => 'textarea', 'rows' => 2],
['name' => 'notes', 'label' => 'Verification notes', 'type' => 'textarea', 'rows' => 2],
],
],
'cardiology' => [
'cardio_history' => [
['name' => 'history', 'label' => 'History of present illness', 'type' => 'textarea', 'required' => true, 'rows' => 4],
['name' => 'past_cardiac', 'label' => 'Past cardiac history', 'type' => 'textarea', 'rows' => 2],
['name' => 'medications', 'label' => 'Medications', 'type' => 'textarea', 'rows' => 2],
['name' => 'allergies', 'label' => 'Allergies', 'type' => 'text'],
['name' => 'risk_factors', 'label' => 'Cardiac risk factors', 'type' => 'textarea', 'rows' => 2],
['name' => 'family_history', 'label' => 'Family history', 'type' => 'textarea', 'rows' => 2],
],
'cardiac_exam' => [
['name' => 'chief_complaint', 'label' => 'Chief complaint', 'type' => 'text', 'required' => true],
['name' => 'nyha_class', 'label' => 'NYHA class', 'type' => 'select', 'options' => ['I', 'II', 'III', 'IV', 'N/A']],
['name' => 'bp', 'label' => 'Blood pressure', 'type' => 'text'],
['name' => 'hr', 'label' => 'Heart rate', 'type' => 'number'],
['name' => 'heart_sounds', 'label' => 'Heart sounds / murmurs', 'type' => 'textarea', 'rows' => 2],
['name' => 'ecg_findings', 'label' => 'ECG findings', 'type' => 'textarea', 'required' => true, 'rows' => 2],
['name' => 'exam_findings', 'label' => 'Exam findings', 'type' => 'textarea', 'rows' => 2],
],
'cardio_investigation' => [
['name' => 'modality', 'label' => 'Investigation', 'type' => 'select', 'required' => true, 'options' => ['Echo', 'Stress test', 'Holter', 'Troponin / labs', 'CT angio', 'Other']],
['name' => 'indication', 'label' => 'Indication', 'type' => 'textarea', 'rows' => 2],
['name' => 'findings', 'label' => 'Findings', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'impression', 'label' => 'Impression', 'type' => 'textarea', 'rows' => 2],
['name' => 'recommendations', 'label' => 'Recommendations', 'type' => 'textarea', 'rows' => 2],
],
'cardio_plan' => [
['name' => 'diagnosis', 'label' => 'Diagnosis', 'type' => 'text', 'required' => true],
['name' => 'plan', 'label' => 'Plan', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'medications', 'label' => 'Medications', 'type' => 'textarea', 'rows' => 2],
['name' => 'procedure_planned', 'label' => 'Procedure / intervention planned', 'type' => 'boolean'],
['name' => 'follow_up', 'label' => 'Follow-up', 'type' => 'text'],
['name' => 'advice', 'label' => 'Patient advice', 'type' => 'textarea', 'rows' => 2],
],
'cardio_procedure' => [
['name' => 'procedure', 'label' => 'Procedure / intervention', 'type' => 'text', 'required' => true],
['name' => 'indication', 'label' => 'Indication', 'type' => 'textarea', 'rows' => 2],
['name' => 'outcome', 'label' => 'Outcome', 'type' => 'select', 'required' => true, 'options' => ['Completed uneventfully', 'Completed with complications', 'Deferred', 'Aborted']],
['name' => 'complications', 'label' => 'Complications', 'type' => 'textarea', 'rows' => 2],
['name' => 'post_procedure_plan', 'label' => 'Post-procedure plan', 'type' => 'textarea', 'rows' => 2],
['name' => 'notes', 'label' => 'Notes', 'type' => 'textarea', 'rows' => 2],
],
],
'psychiatry' => [
'mental_status' => [
['name' => 'chief_complaint', 'label' => 'Presenting complaint', 'type' => 'text', 'required' => true],
['name' => 'history', 'label' => 'History of present illness', 'type' => 'textarea', 'rows' => 3],
['name' => 'appearance', 'label' => 'Appearance / behaviour', 'type' => 'textarea', 'rows' => 2],
['name' => 'mood_affect', 'label' => 'Mood / affect', 'type' => 'text'],
['name' => 'thought', 'label' => 'Thought content / process', 'type' => 'textarea', 'rows' => 2],
['name' => 'perception', 'label' => 'Perception', 'type' => 'text'],
['name' => 'cognition', 'label' => 'Cognition / orientation', 'type' => 'text'],
['name' => 'insight', 'label' => 'Insight / judgment', 'type' => 'text'],
['name' => 'mse_summary', 'label' => 'MSE summary', 'type' => 'textarea', 'required' => true, 'rows' => 3],
],
'risk_assessment' => [
['name' => 'overall_risk', 'label' => 'Overall risk level', 'type' => 'select', 'required' => true, 'options' => ['Low', 'Moderate', 'High', 'Imminent']],
['name' => 'self_harm', 'label' => 'Self-harm / suicide risk', 'type' => 'select', 'options' => ['None identified', 'Ideation', 'Plan', 'Intent / recent attempt']],
['name' => 'harm_others', 'label' => 'Risk to others', 'type' => 'select', 'options' => ['None identified', 'Ideation', 'Plan', 'Intent']],
['name' => 'safeguarding', 'label' => 'Safeguarding concerns', 'type' => 'textarea', 'rows' => 2],
['name' => 'protective_factors', 'label' => 'Protective factors', 'type' => 'textarea', 'rows' => 2],
['name' => 'risk_summary', 'label' => 'Risk summary', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'immediate_actions', 'label' => 'Immediate actions', 'type' => 'textarea', 'rows' => 2],
],
'psych_plan' => [
['name' => 'formulation', 'label' => 'Formulation', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'diagnosis', 'label' => 'Working diagnosis', 'type' => 'text'],
['name' => 'plan', 'label' => 'Management plan', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'medications', 'label' => 'Medications', 'type' => 'textarea', 'rows' => 2],
['name' => 'therapy', 'label' => 'Therapy / psychosocial', 'type' => 'textarea', 'rows' => 2],
['name' => 'follow_up', 'label' => 'Follow-up', 'type' => 'text'],
['name' => 'crisis_plan', 'label' => 'Crisis / safety plan', 'type' => 'textarea', 'rows' => 2],
],
'psych_followup' => [
['name' => 'review_type', 'label' => 'Review type', 'type' => 'select', 'required' => true, 'options' => ['Clinic follow-up', 'Medication review', 'Crisis review', 'Discharge review']],
['name' => 'progress', 'label' => 'Progress since last contact', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'current_risk', 'label' => 'Current risk', 'type' => 'select', 'options' => ['Low', 'Moderate', 'High', 'Imminent']],
['name' => 'outcome', 'label' => 'Outcome', 'type' => 'select', 'required' => true, 'options' => ['In progress', 'Follow-up arranged', 'Discharged', 'Referred', 'Admitted']],
['name' => 'next_steps', 'label' => 'Next steps', 'type' => 'textarea', 'rows' => 2],
['name' => 'notes', 'label' => 'Notes', 'type' => 'textarea', 'rows' => 2],
],
],
'pediatrics' => [
'ped_history' => [
['name' => 'history', 'label' => 'History of present illness', 'type' => 'textarea', 'required' => true, 'rows' => 4],
['name' => 'birth_history', 'label' => 'Birth / neonatal history', 'type' => 'textarea', 'rows' => 2],
['name' => 'past_medical', 'label' => 'Past medical history', 'type' => 'textarea', 'rows' => 2],
['name' => 'medications', 'label' => 'Medications', 'type' => 'textarea', 'rows' => 2],
['name' => 'allergies', 'label' => 'Allergies', 'type' => 'text'],
['name' => 'feeding', 'label' => 'Feeding / nutrition', 'type' => 'textarea', 'rows' => 2],
['name' => 'social', 'label' => 'Social / family context', 'type' => 'textarea', 'rows' => 2],
],
'pediatric_exam' => [
['name' => 'chief_complaint', 'label' => 'Chief complaint', 'type' => 'text', 'required' => true],
['name' => 'age_months', 'label' => 'Age (months)', 'type' => 'number'],
['name' => 'weight_kg', 'label' => 'Weight (kg)', 'type' => 'number'],
['name' => 'height_cm', 'label' => 'Height / length (cm)', 'type' => 'number'],
['name' => 'head_circumference_cm', 'label' => 'Head circumference (cm)', 'type' => 'number'],
['name' => 'temperature_c', 'label' => 'Temperature (°C)', 'type' => 'number'],
['name' => 'growth_concern', 'label' => 'Growth concern', 'type' => 'select', 'options' => ['None', 'Underweight', 'Stunting', 'Wasting', 'Overweight']],
['name' => 'developmental', 'label' => 'Developmental notes', 'type' => 'textarea', 'rows' => 2],
['name' => 'immunization_status', 'label' => 'Immunization status', 'type' => 'text'],
['name' => 'examination', 'label' => 'Examination', 'type' => 'textarea', 'required' => true, 'rows' => 3],
],
'ped_investigation' => [
['name' => 'investigation', 'label' => 'Investigation', 'type' => 'text', 'required' => true],
['name' => 'findings', 'label' => 'Findings', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'impression', 'label' => 'Impression', 'type' => 'textarea', 'rows' => 2],
['name' => 'notes', 'label' => 'Notes', 'type' => 'textarea', 'rows' => 2],
],
'ped_plan' => [
['name' => 'diagnosis', 'label' => 'Diagnosis', 'type' => 'text', 'required' => true],
['name' => 'plan', 'label' => 'Plan', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'medications', 'label' => 'Medications', 'type' => 'textarea', 'rows' => 2],
['name' => 'treatment_planned', 'label' => 'Treatment / immunization planned', 'type' => 'boolean'],
['name' => 'follow_up', 'label' => 'Follow-up', 'type' => 'text'],
['name' => 'advice', 'label' => 'Caregiver advice', 'type' => 'textarea', 'rows' => 2],
],
'ped_treatment' => [
['name' => 'treatment', 'label' => 'Treatment / immunization', 'type' => 'text', 'required' => true],
['name' => 'vaccine_or_procedure', 'label' => 'Vaccine / procedure details', 'type' => 'textarea', 'rows' => 2],
['name' => 'site_route', 'label' => 'Site / route', 'type' => 'text'],
['name' => 'outcome', 'label' => 'Outcome', 'type' => 'select', 'required' => true, 'options' => ['Completed uneventfully', 'Completed with complications', 'Deferred', 'Aborted']],
['name' => 'adverse_events', 'label' => 'Adverse events', 'type' => 'textarea', 'rows' => 2],
['name' => 'post_treatment_plan', 'label' => 'Post-treatment plan', 'type' => 'textarea', 'rows' => 2],
],
],
'orthopedics' => [
'ortho_history' => [
['name' => 'history', 'label' => 'History of present illness', 'type' => 'textarea', 'required' => true, 'rows' => 4],
['name' => 'mechanism', 'label' => 'Mechanism of injury', 'type' => 'textarea', 'rows' => 2],
['name' => 'past_ortho', 'label' => 'Past orthopedic history', 'type' => 'textarea', 'rows' => 2],
['name' => 'medications', 'label' => 'Medications', 'type' => 'textarea', 'rows' => 2],
['name' => 'allergies', 'label' => 'Allergies', 'type' => 'text'],
['name' => 'comorbidities', 'label' => 'Comorbidities', 'type' => 'textarea', 'rows' => 2],
],
'ortho_exam' => [
['name' => 'chief_complaint', 'label' => 'Chief complaint', 'type' => 'text', 'required' => true],
['name' => 'side', 'label' => 'Side', 'type' => 'select', 'options' => ['Left', 'Right', 'Bilateral', 'N/A']],
['name' => 'region', 'label' => 'Region / joint', 'type' => 'text', 'required' => true],
['name' => 'rom', 'label' => 'Range of motion', 'type' => 'textarea', 'rows' => 2],
['name' => 'neurovascular', 'label' => 'Neurovascular status', 'type' => 'select', 'options' => ['Intact', 'Sensory deficit', 'Motor deficit', 'Vascular compromise', 'Not assessed']],
['name' => 'swelling', 'label' => 'Swelling / deformity', 'type' => 'text'],
['name' => 'exam_findings', 'label' => 'Examination findings', 'type' => 'textarea', 'rows' => 3],
['name' => 'fracture_classification', 'label' => 'Fracture / injury classification', 'type' => 'text'],
],
'ortho_imaging' => [
['name' => 'modality', 'label' => 'Modality', 'type' => 'select', 'required' => true, 'options' => ['X-ray', 'CT', 'MRI', 'Ultrasound', 'Other']],
['name' => 'region', 'label' => 'Region imaged', 'type' => 'text', 'required' => true],
['name' => 'findings', 'label' => 'Findings', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'impression', 'label' => 'Impression', 'type' => 'textarea', 'rows' => 2],
['name' => 'notes', 'label' => 'Notes', 'type' => 'textarea', 'rows' => 2],
],
'ortho_plan' => [
['name' => 'diagnosis', 'label' => 'Diagnosis', 'type' => 'text', 'required' => true],
['name' => 'plan', 'label' => 'Plan', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'weight_bearing', 'label' => 'Weight-bearing status', 'type' => 'text'],
['name' => 'procedure_planned', 'label' => 'Procedure / cast planned', 'type' => 'boolean'],
['name' => 'follow_up', 'label' => 'Follow-up', 'type' => 'text'],
['name' => 'advice', 'label' => 'Patient advice', 'type' => 'textarea', 'rows' => 2],
],
'ortho_procedure' => [
['name' => 'procedure', 'label' => 'Procedure / cast', 'type' => 'text', 'required' => true],
['name' => 'indication', 'label' => 'Indication', 'type' => 'textarea', 'rows' => 2],
['name' => 'technique', 'label' => 'Technique / materials', 'type' => 'textarea', 'rows' => 2],
['name' => 'outcome', 'label' => 'Outcome', 'type' => 'select', 'required' => true, 'options' => ['Completed uneventfully', 'Completed with complications', 'Deferred', 'Aborted']],
['name' => 'post_procedure_plan', 'label' => 'Post-procedure plan', 'type' => 'textarea', 'rows' => 2],
['name' => 'notes', 'label' => 'Notes', 'type' => 'textarea', 'rows' => 2],
],
],
'ent' => [
'ent_history' => [
['name' => 'history', 'label' => 'History of present illness', 'type' => 'textarea', 'required' => true, 'rows' => 4],
['name' => 'ear_symptoms', 'label' => 'Ear symptoms', 'type' => 'textarea', 'rows' => 2],
['name' => 'nose_symptoms', 'label' => 'Nose / sinus symptoms', 'type' => 'textarea', 'rows' => 2],
['name' => 'throat_symptoms', 'label' => 'Throat / voice symptoms', 'type' => 'textarea', 'rows' => 2],
['name' => 'past_ent', 'label' => 'Past ENT history', 'type' => 'textarea', 'rows' => 2],
['name' => 'medications', 'label' => 'Medications', 'type' => 'textarea', 'rows' => 2],
['name' => 'allergies', 'label' => 'Allergies', 'type' => 'text'],
],
'ent_exam' => [
['name' => 'chief_complaint', 'label' => 'Chief complaint', 'type' => 'text', 'required' => true],
['name' => 'ear_findings', 'label' => 'Ear findings', 'type' => 'textarea', 'rows' => 2],
['name' => 'nose_findings', 'label' => 'Nose / sinus findings', 'type' => 'textarea', 'rows' => 2],
['name' => 'throat_findings', 'label' => 'Throat / larynx findings', 'type' => 'textarea', 'rows' => 2],
['name' => 'hearing', 'label' => 'Hearing assessment', 'type' => 'text'],
['name' => 'neck', 'label' => 'Neck examination', 'type' => 'text'],
['name' => 'airway_concern', 'label' => 'Airway concern', 'type' => 'boolean'],
['name' => 'exam_summary', 'label' => 'Exam summary', 'type' => 'textarea', 'rows' => 2],
],
'ent_investigation' => [
['name' => 'investigation', 'label' => 'Investigation', 'type' => 'text', 'required' => true],
['name' => 'findings', 'label' => 'Findings', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'impression', 'label' => 'Impression', 'type' => 'textarea', 'rows' => 2],
['name' => 'notes', 'label' => 'Notes', 'type' => 'textarea', 'rows' => 2],
],
'ent_plan' => [
['name' => 'diagnosis', 'label' => 'Diagnosis', 'type' => 'text', 'required' => true],
['name' => 'plan', 'label' => 'Plan', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'medications', 'label' => 'Medications', 'type' => 'textarea', 'rows' => 2],
['name' => 'procedure_planned', 'label' => 'Procedure planned', 'type' => 'boolean'],
['name' => 'follow_up', 'label' => 'Follow-up', 'type' => 'text'],
['name' => 'advice', 'label' => 'Patient advice', 'type' => 'textarea', 'rows' => 2],
],
'ent_procedure' => [
['name' => 'procedure', 'label' => 'Procedure', 'type' => 'text', 'required' => true],
['name' => 'indication', 'label' => 'Indication', 'type' => 'textarea', 'rows' => 2],
['name' => 'technique', 'label' => 'Technique', 'type' => 'textarea', 'rows' => 2],
['name' => 'outcome', 'label' => 'Outcome', 'type' => 'select', 'required' => true, 'options' => ['Completed uneventfully', 'Completed with complications', 'Deferred', 'Aborted']],
['name' => 'post_procedure_plan', 'label' => 'Post-procedure plan', 'type' => 'textarea', 'rows' => 2],
['name' => 'notes', 'label' => 'Notes', 'type' => 'textarea', 'rows' => 2],
],
],
'oncology' => [
'onc_history' => [
['name' => 'history', 'label' => 'History of present illness', 'type' => 'textarea', 'required' => true, 'rows' => 4],
['name' => 'cancer_history', 'label' => 'Cancer / treatment history', 'type' => 'textarea', 'rows' => 2],
['name' => 'medications', 'label' => 'Medications', 'type' => 'textarea', 'rows' => 2],
['name' => 'allergies', 'label' => 'Allergies', 'type' => 'text'],
['name' => 'comorbidities', 'label' => 'Comorbidities', 'type' => 'textarea', 'rows' => 2],
['name' => 'social', 'label' => 'Social / support context', 'type' => 'textarea', 'rows' => 2],
],
'onc_staging' => [
['name' => 'diagnosis', 'label' => 'Oncology diagnosis', 'type' => 'text', 'required' => true],
['name' => 'stage', 'label' => 'Stage / TNM', 'type' => 'text'],
['name' => 'histology', 'label' => 'Histology', 'type' => 'text'],
['name' => 'performance_status', 'label' => 'Performance status (ECOG)', 'type' => 'select', 'options' => ['0', '1', '2', '3', '4']],
['name' => 'exam_findings', 'label' => 'Exam findings', 'type' => 'textarea', 'rows' => 3],
['name' => 'sites', 'label' => 'Disease sites', 'type' => 'textarea', 'rows' => 2],
],
'onc_investigation' => [
['name' => 'investigation', 'label' => 'Investigation', 'type' => 'text', 'required' => true],
['name' => 'findings', 'label' => 'Findings', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'impression', 'label' => 'Impression', 'type' => 'textarea', 'rows' => 2],
['name' => 'notes', 'label' => 'Notes', 'type' => 'textarea', 'rows' => 2],
],
'onc_plan' => [
['name' => 'diagnosis', 'label' => 'Diagnosis', 'type' => 'text', 'required' => true],
['name' => 'plan', 'label' => 'Plan', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'intent', 'label' => 'Treatment intent', 'type' => 'select', 'options' => ['Curative', 'Adjuvant', 'Neoadjuvant', 'Palliative', 'Supportive']],
['name' => 'medications', 'label' => 'Medications', 'type' => 'textarea', 'rows' => 2],
['name' => 'treatment_planned', 'label' => 'Treatment / chemo planned', 'type' => 'boolean'],
['name' => 'follow_up', 'label' => 'Follow-up', 'type' => 'text'],
['name' => 'advice', 'label' => 'Patient advice', 'type' => 'textarea', 'rows' => 2],
],
'onc_treatment' => [
['name' => 'treatment', 'label' => 'Treatment / chemo note', 'type' => 'text', 'required' => true],
['name' => 'regimen', 'label' => 'Regimen', 'type' => 'text'],
['name' => 'cycle', 'label' => 'Cycle / day', 'type' => 'text'],
['name' => 'toxicity', 'label' => 'Toxicity / side effects', 'type' => 'textarea', 'rows' => 2],
['name' => 'outcome', 'label' => 'Outcome', 'type' => 'select', 'required' => true, 'options' => ['Completed uneventfully', 'Completed with complications', 'Deferred', 'Aborted']],
['name' => 'post_treatment_plan', 'label' => 'Post-treatment plan', 'type' => 'textarea', 'rows' => 2],
['name' => 'notes', 'label' => 'Notes', 'type' => 'textarea', 'rows' => 2],
],
],
'renal' => [
'renal_history' => [
['name' => 'history', 'label' => 'History of present illness', 'type' => 'textarea', 'required' => true, 'rows' => 4],
['name' => 'ckd_stage', 'label' => 'CKD stage / dialysis vintage', 'type' => 'text'],
['name' => 'access_history', 'label' => 'Access history', 'type' => 'textarea', 'rows' => 2],
['name' => 'medications', 'label' => 'Medications', 'type' => 'textarea', 'rows' => 2],
['name' => 'allergies', 'label' => 'Allergies', 'type' => 'text'],
['name' => 'comorbidities', 'label' => 'Comorbidities', 'type' => 'textarea', 'rows' => 2],
],
'renal_exam' => [
['name' => 'chief_complaint', 'label' => 'Chief complaint', 'type' => 'text', 'required' => true],
['name' => 'bp', 'label' => 'Blood pressure', 'type' => 'text'],
['name' => 'weight_kg', 'label' => 'Weight (kg)', 'type' => 'number'],
['name' => 'fluid_status', 'label' => 'Fluid status', 'type' => 'select', 'options' => ['Euvolemic', 'Overload', 'Dehydrated', 'Not assessed']],
['name' => 'access', 'label' => 'Access assessment', 'type' => 'text'],
['name' => 'exam_findings', 'label' => 'Exam findings', 'type' => 'textarea', 'rows' => 3],
['name' => 'uremic_symptoms', 'label' => 'Uremic symptoms', 'type' => 'textarea', 'rows' => 2],
],
'renal_session' => [
['name' => 'session_type', 'label' => 'Session / labs type', 'type' => 'select', 'required' => true, 'options' => ['Hemodialysis', 'Peritoneal dialysis', 'Clinic labs review', 'Other']],
['name' => 'pre_weight_kg', 'label' => 'Pre-weight (kg)', 'type' => 'number'],
['name' => 'post_weight_kg', 'label' => 'Post-weight (kg)', 'type' => 'number'],
['name' => 'uf_goal_l', 'label' => 'UF goal (L)', 'type' => 'number'],
['name' => 'access', 'label' => 'Access', 'type' => 'text'],
['name' => 'bp_pre', 'label' => 'BP pre', 'type' => 'text'],
['name' => 'bp_post', 'label' => 'BP post', 'type' => 'text'],
['name' => 'labs_summary', 'label' => 'Labs summary', 'type' => 'textarea', 'rows' => 2],
['name' => 'complications', 'label' => 'Complications', 'type' => 'textarea', 'rows' => 2],
['name' => 'notes', 'label' => 'Session / labs notes', 'type' => 'textarea', 'required' => true, 'rows' => 3],
],
'renal_plan' => [
['name' => 'diagnosis', 'label' => 'Diagnosis', 'type' => 'text', 'required' => true],
['name' => 'plan', 'label' => 'Care plan', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'dialysis_prescription', 'label' => 'Dialysis prescription notes', 'type' => 'textarea', 'rows' => 2],
['name' => 'medications', 'label' => 'Medications', 'type' => 'textarea', 'rows' => 2],
['name' => 'follow_up', 'label' => 'Follow-up', 'type' => 'text'],
['name' => 'outcome', 'label' => 'Visit outcome', 'type' => 'select', 'required' => true, 'options' => ['In progress', 'Completed — continue plan', 'Completed — discharged', 'Referred', 'Admitted']],
['name' => 'advice', 'label' => 'Patient advice', 'type' => 'textarea', 'rows' => 2],
],
],
'surgery' => [
'surg_history' => [
['name' => 'history', 'label' => 'History of present illness', 'type' => 'textarea', 'required' => true, 'rows' => 4],
['name' => 'past_surgical', 'label' => 'Past surgical history', 'type' => 'textarea', 'rows' => 2],
['name' => 'medications', 'label' => 'Medications', 'type' => 'textarea', 'rows' => 2],
['name' => 'allergies', 'label' => 'Allergies', 'type' => 'text'],
['name' => 'comorbidities', 'label' => 'Comorbidities', 'type' => 'textarea', 'rows' => 2],
['name' => 'anaesthesia_history', 'label' => 'Anaesthesia history', 'type' => 'textarea', 'rows' => 2],
],
'surg_exam' => [
['name' => 'chief_complaint', 'label' => 'Chief complaint', 'type' => 'text', 'required' => true],
['name' => 'exam_findings', 'label' => 'Examination findings', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'asa_class', 'label' => 'ASA class', 'type' => 'select', 'options' => ['I', 'II', 'III', 'IV', 'V', 'E']],
['name' => 'fitness', 'label' => 'Fitness notes', 'type' => 'textarea', 'rows' => 2],
['name' => 'site_marking', 'label' => 'Site marking reviewed', 'type' => 'boolean'],
],
'surg_investigation' => [
['name' => 'investigation', 'label' => 'Investigation', 'type' => 'text', 'required' => true],
['name' => 'findings', 'label' => 'Findings', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'impression', 'label' => 'Impression', 'type' => 'textarea', 'rows' => 2],
['name' => 'notes', 'label' => 'Notes', 'type' => 'textarea', 'rows' => 2],
],
'surg_plan' => [
['name' => 'diagnosis', 'label' => 'Diagnosis', 'type' => 'text', 'required' => true],
['name' => 'proposed_procedure', 'label' => 'Proposed procedure', 'type' => 'text'],
['name' => 'plan', 'label' => 'Consent / peri-op plan', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'consent_obtained', 'label' => 'Consent obtained', 'type' => 'boolean'],
['name' => 'procedure_planned', 'label' => 'Procedure planned today', 'type' => 'boolean'],
['name' => 'follow_up', 'label' => 'Follow-up', 'type' => 'text'],
['name' => 'advice', 'label' => 'Patient advice', 'type' => 'textarea', 'rows' => 2],
],
'surg_procedure' => [
['name' => 'procedure', 'label' => 'Procedure', 'type' => 'text', 'required' => true],
['name' => 'indication', 'label' => 'Indication', 'type' => 'textarea', 'rows' => 2],
['name' => 'technique', 'label' => 'Technique / findings', 'type' => 'textarea', 'rows' => 2],
['name' => 'outcome', 'label' => 'Outcome', 'type' => 'select', 'required' => true, 'options' => ['Completed uneventfully', 'Completed with complications', 'Deferred', 'Aborted']],
['name' => 'complications', 'label' => 'Complications', 'type' => 'textarea', 'rows' => 2],
['name' => 'notes', 'label' => 'Notes', 'type' => 'textarea', 'rows' => 2],
],
'surg_postop' => [
['name' => 'review_type', 'label' => 'Review type', 'type' => 'select', 'required' => true, 'options' => ['Immediate post-op', 'Clinic wound check', 'Follow-up review', 'Discharge review']],
['name' => 'progress', 'label' => 'Progress / wound status', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'pain_score', 'label' => 'Pain score (010)', 'type' => 'number'],
['name' => 'outcome', 'label' => 'Outcome', 'type' => 'select', 'required' => true, 'options' => ['In progress', 'Completed — continue plan', 'Completed — discharged', 'Referred', 'Admitted']],
['name' => 'next_steps', 'label' => 'Next steps', 'type' => 'textarea', 'rows' => 2],
['name' => 'notes', 'label' => 'Notes', 'type' => 'textarea', 'rows' => 2],
],
],
'vaccination' => [
'vax_eligibility' => [
['name' => 'vaccine', 'label' => 'Vaccine requested', 'type' => 'text', 'required' => true],
['name' => 'schedule', 'label' => 'Schedule / indication', 'type' => 'select', 'options' => ['Routine EPI', 'Catch-up', 'Travel', 'Occupational', 'Campaign', 'Other']],
['name' => 'prior_doses', 'label' => 'Prior doses / history', 'type' => 'textarea', 'rows' => 2],
['name' => 'indications', 'label' => 'Indications', 'type' => 'textarea', 'rows' => 2],
['name' => 'contraindications', 'label' => 'Contraindications checked', 'type' => 'boolean', 'required' => true],
['name' => 'allergy_history', 'label' => 'Allergy / prior reaction', 'type' => 'textarea', 'rows' => 2],
['name' => 'fever_today', 'label' => 'Fever today', 'type' => 'boolean'],
['name' => 'pregnancy', 'label' => 'Pregnant / breastfeeding', 'type' => 'boolean'],
['name' => 'cleared', 'label' => 'Cleared to vaccinate', 'type' => 'boolean', 'required' => true],
],
'vax_consent' => [
['name' => 'information_given', 'label' => 'Information given', 'type' => 'boolean', 'required' => true],
['name' => 'consent_obtained', 'label' => 'Consent obtained', 'type' => 'boolean', 'required' => true],
['name' => 'consent_type', 'label' => 'Consent type', 'type' => 'select', 'options' => ['Verbal', 'Written', 'Guardian', 'Implied']],
['name' => 'consented_by', 'label' => 'Consented by', 'type' => 'text'],
['name' => 'risks_discussed', 'label' => 'Risks / AEFI discussed', 'type' => 'boolean'],
['name' => 'notes', 'label' => 'Consent notes', 'type' => 'textarea', 'rows' => 2],
],
'vax_admin' => [
['name' => 'vaccine', 'label' => 'Vaccine administered', 'type' => 'text', 'required' => true],
['name' => 'dose', 'label' => 'Dose / antigen', 'type' => 'text'],
['name' => 'site', 'label' => 'Injection site', 'type' => 'select', 'options' => ['Left arm', 'Right arm', 'Left thigh', 'Right thigh', 'Oral', 'Other']],
['name' => 'batch', 'label' => 'Batch / lot number', 'type' => 'text', 'required' => true],
['name' => 'expiry', 'label' => 'Expiry date', 'type' => 'text'],
['name' => 'route', 'label' => 'Route', 'type' => 'select', 'options' => ['IM', 'SC', 'ID', 'Oral', 'Nasal']],
['name' => 'administered_by', 'label' => 'Administered by', 'type' => 'text'],
['name' => 'adverse_events', 'label' => 'Immediate adverse events', 'type' => 'textarea', 'rows' => 2],
['name' => 'next_due', 'label' => 'Next dose due', 'type' => 'text'],
['name' => 'outcome', 'label' => 'Administration outcome', 'type' => 'select', 'required' => true, 'options' => ['Completed — observe', 'Deferred', 'Refused', 'Incomplete']],
],
'vax_observation' => [
['name' => 'observation_minutes', 'label' => 'Observation minutes', 'type' => 'number'],
['name' => 'vitals', 'label' => 'Vitals / condition', 'type' => 'textarea', 'rows' => 2],
['name' => 'aefi', 'label' => 'AEFI', 'type' => 'select', 'options' => ['None', 'Mild', 'Moderate', 'Severe — escalate']],
['name' => 'aefi_details', 'label' => 'AEFI details / actions', 'type' => 'textarea', 'rows' => 2],
['name' => 'advice', 'label' => 'Home advice', 'type' => 'textarea', 'rows' => 2],
['name' => 'outcome', 'label' => 'Disposition', 'type' => 'select', 'required' => true, 'options' => ['Completed — discharged', 'Completed — AEFI follow-up', 'Escalated', 'In progress']],
],
],
'pathology' => [
'path_request' => [
['name' => 'specimen_type', 'label' => 'Specimen type', 'type' => 'text', 'required' => true],
['name' => 'site', 'label' => 'Anatomic site', 'type' => 'text', 'required' => true],
['name' => 'clinical_history', 'label' => 'Clinical history', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'urgency', 'label' => 'Urgency', 'type' => 'select', 'options' => ['Routine', 'Urgent', 'Intra-op']],
['name' => 'tests_requested', 'label' => 'Tests requested', 'type' => 'textarea', 'rows' => 2],
['name' => 'requesting_clinician', 'label' => 'Requesting clinician', 'type' => 'text'],
],
'path_specimen' => [
['name' => 'received_at', 'label' => 'Received at', 'type' => 'text'],
['name' => 'container_label', 'label' => 'Container / accession label', 'type' => 'text', 'required' => true],
['name' => 'adequacy', 'label' => 'Specimen adequacy', 'type' => 'select', 'options' => ['Adequate', 'Suboptimal', 'Inadequate']],
['name' => 'fixative', 'label' => 'Fixative / medium', 'type' => 'text'],
['name' => 'notes', 'label' => 'Receipt notes', 'type' => 'textarea', 'rows' => 2],
],
'path_processing' => [
['name' => 'gross', 'label' => 'Gross description', 'type' => 'textarea', 'rows' => 3],
['name' => 'blocks', 'label' => 'Blocks / slides', 'type' => 'text'],
['name' => 'stains', 'label' => 'Stains / techniques', 'type' => 'textarea', 'rows' => 2],
['name' => 'status', 'label' => 'Processing status', 'type' => 'select', 'required' => true, 'options' => ['In process', 'Ready for reporting', 'Hold — missing info']],
['name' => 'notes', 'label' => 'Processing notes', 'type' => 'textarea', 'rows' => 2],
],
'path_report' => [
['name' => 'gross', 'label' => 'Gross description', 'type' => 'textarea', 'rows' => 3],
['name' => 'microscopy', 'label' => 'Microscopy', 'type' => 'textarea', 'required' => true, 'rows' => 4],
['name' => 'diagnosis', 'label' => 'Diagnosis', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'comment', 'label' => 'Comment', 'type' => 'textarea', 'rows' => 2],
['name' => 'reported_by', 'label' => 'Reported by', 'type' => 'text'],
],
'path_verification' => [
['name' => 'verified', 'label' => 'Report verified', 'type' => 'boolean', 'required' => true],
['name' => 'verified_by', 'label' => 'Verified by', 'type' => 'text'],
['name' => 'amendments', 'label' => 'Amendments', 'type' => 'textarea', 'rows' => 2],
['name' => 'released', 'label' => 'Released to clinician', 'type' => 'boolean'],
['name' => 'outcome', 'label' => 'Verification outcome', 'type' => 'select', 'required' => true, 'options' => ['Completed — released', 'Completed — amended', 'Hold', 'In progress']],
],
],
'infusion' => [
'infusion_assessment' => [
['name' => 'indication', 'label' => 'Indication', 'type' => 'text', 'required' => true],
['name' => 'history', 'label' => 'Relevant history', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'allergies', 'label' => 'Allergies', 'type' => 'textarea', 'rows' => 2],
['name' => 'baseline_vitals', 'label' => 'Baseline vitals', 'type' => 'textarea', 'rows' => 2],
['name' => 'access_plan', 'label' => 'IV access plan', 'type' => 'text'],
['name' => 'fit_for_infusion', 'label' => 'Fit for infusion', 'type' => 'boolean', 'required' => true],
],
'infusion_protocol' => [
['name' => 'medication', 'label' => 'Medication / regimen', 'type' => 'text', 'required' => true],
['name' => 'dose', 'label' => 'Dose', 'type' => 'text', 'required' => true],
['name' => 'diluent', 'label' => 'Diluent / volume', 'type' => 'text'],
['name' => 'rate', 'label' => 'Ordered rate', 'type' => 'text'],
['name' => 'duration', 'label' => 'Expected duration', 'type' => 'text'],
['name' => 'premeds', 'label' => 'Premedications', 'type' => 'textarea', 'rows' => 2],
['name' => 'ordered_by', 'label' => 'Ordered by', 'type' => 'text'],
],
'infusion_session' => [
['name' => 'medication', 'label' => 'Medication / regimen', 'type' => 'text', 'required' => true],
['name' => 'dose', 'label' => 'Dose', 'type' => 'text'],
['name' => 'rate', 'label' => 'Infusion rate', 'type' => 'text'],
['name' => 'access', 'label' => 'IV access', 'type' => 'text'],
['name' => 'start_time', 'label' => 'Start time', 'type' => 'text'],
['name' => 'end_time', 'label' => 'End time', 'type' => 'text'],
['name' => 'vitals', 'label' => 'Vitals during infusion', 'type' => 'textarea', 'rows' => 2],
['name' => 'reactions', 'label' => 'Reactions / interventions', 'type' => 'textarea', 'rows' => 2],
['name' => 'notes', 'label' => 'Session notes', 'type' => 'textarea', 'required' => true, 'rows' => 2],
['name' => 'outcome', 'label' => 'Session outcome', 'type' => 'select', 'options' => ['In progress', 'Completed — observe', 'Stopped — reaction', 'Deferred']],
],
'infusion_monitoring' => [
['name' => 'post_vitals', 'label' => 'Post-infusion vitals', 'type' => 'textarea', 'rows' => 2],
['name' => 'reaction', 'label' => 'Delayed reaction', 'type' => 'select', 'options' => ['None', 'Mild', 'Moderate', 'Severe']],
['name' => 'interventions', 'label' => 'Interventions', 'type' => 'textarea', 'rows' => 2],
['name' => 'advice', 'label' => 'Discharge advice', 'type' => 'textarea', 'rows' => 2],
['name' => 'outcome', 'label' => 'Disposition', 'type' => 'select', 'required' => true, 'options' => ['Completed — discharged', 'Completed — admit / escalate', 'In progress']],
],
],
'dermatology' => [
'derm_history' => [
['name' => 'history', 'label' => 'History of present illness', 'type' => 'textarea', 'required' => true, 'rows' => 4],
['name' => 'past_skin', 'label' => 'Past skin history', 'type' => 'textarea', 'rows' => 2],
['name' => 'medications', 'label' => 'Medications', 'type' => 'textarea', 'rows' => 2],
['name' => 'allergies', 'label' => 'Allergies', 'type' => 'text'],
['name' => 'triggers', 'label' => 'Triggers / exposures', 'type' => 'textarea', 'rows' => 2],
['name' => 'family_history', 'label' => 'Family history', 'type' => 'textarea', 'rows' => 2],
],
'skin_exam' => [
['name' => 'chief_complaint', 'label' => 'Chief complaint', 'type' => 'text', 'required' => true],
['name' => 'urgency', 'label' => 'Urgency', 'type' => 'select', 'options' => ['Routine', 'Moderate', 'High', 'Suspected malignancy']],
['name' => 'duration', 'label' => 'Duration', 'type' => 'text'],
['name' => 'distribution', 'label' => 'Distribution', 'type' => 'text'],
['name' => 'morphology', 'label' => 'Lesion morphology / notes', 'type' => 'textarea', 'required' => true, 'rows' => 2],
['name' => 'itch_pain', 'label' => 'Itch / pain', 'type' => 'text'],
['name' => 'dermoscopy', 'label' => 'Dermoscopy notes', 'type' => 'textarea', 'rows' => 2],
['name' => 'differential', 'label' => 'Differential diagnosis', 'type' => 'textarea', 'rows' => 2],
],
'derm_investigation' => [
['name' => 'modality', 'label' => 'Investigation', 'type' => 'select', 'required' => true, 'options' => ['Biopsy', 'Patch test', 'Culture', 'Bloods', 'Imaging', 'Other']],
['name' => 'indication', 'label' => 'Indication', 'type' => 'textarea', 'rows' => 2],
['name' => 'findings', 'label' => 'Findings', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'impression', 'label' => 'Impression', 'type' => 'textarea', 'rows' => 2],
['name' => 'recommendations', 'label' => 'Recommendations', 'type' => 'textarea', 'rows' => 2],
],
'derm_plan' => [
['name' => 'diagnosis', 'label' => 'Diagnosis', 'type' => 'text', 'required' => true],
['name' => 'plan', 'label' => 'Plan', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'medications', 'label' => 'Medications / topicals', 'type' => 'textarea', 'rows' => 2],
['name' => 'procedure_planned', 'label' => 'Procedure / treatment planned', 'type' => 'boolean'],
['name' => 'follow_up', 'label' => 'Follow-up', 'type' => 'text'],
['name' => 'advice', 'label' => 'Patient advice', 'type' => 'textarea', 'rows' => 2],
],
'derm_procedure' => [
['name' => 'procedure', 'label' => 'Procedure / treatment', 'type' => 'text', 'required' => true],
['name' => 'indication', 'label' => 'Indication', 'type' => 'textarea', 'rows' => 2],
['name' => 'outcome', 'label' => 'Outcome', 'type' => 'select', 'required' => true, 'options' => ['Completed uneventfully', 'Completed with complications', 'Deferred', 'Aborted']],
['name' => 'complications', 'label' => 'Complications', 'type' => 'textarea', 'rows' => 2],
['name' => 'post_procedure_plan', 'label' => 'Post-procedure plan', 'type' => 'textarea', 'rows' => 2],
['name' => 'notes', 'label' => 'Notes', 'type' => 'textarea', 'rows' => 2],
],
],
'podiatry' => [
'pod_history' => [
['name' => 'history', 'label' => 'History of present illness', 'type' => 'textarea', 'required' => true, 'rows' => 4],
['name' => 'diabetes_history', 'label' => 'Diabetes / vascular history', 'type' => 'textarea', 'rows' => 2],
['name' => 'medications', 'label' => 'Medications', 'type' => 'textarea', 'rows' => 2],
['name' => 'allergies', 'label' => 'Allergies', 'type' => 'text'],
['name' => 'footwear', 'label' => 'Footwear / activity', 'type' => 'textarea', 'rows' => 2],
['name' => 'prior_ulcers', 'label' => 'Prior ulcers / amputations', 'type' => 'textarea', 'rows' => 2],
],
'foot_exam' => [
['name' => 'chief_complaint', 'label' => 'Chief complaint', 'type' => 'text', 'required' => true],
['name' => 'side', 'label' => 'Side', 'type' => 'select', 'options' => ['Left', 'Right', 'Bilateral']],
['name' => 'diabetes', 'label' => 'Diabetic foot risk', 'type' => 'select', 'options' => ['Low', 'Moderate', 'High', 'Active ulcer', 'N/A']],
['name' => 'pulses', 'label' => 'Pulses', 'type' => 'text'],
['name' => 'sensation', 'label' => 'Sensation / neuropathy', 'type' => 'text'],
['name' => 'skin_nails', 'label' => 'Skin / nails', 'type' => 'textarea', 'rows' => 2],
['name' => 'ulcer', 'label' => 'Ulcer description', 'type' => 'textarea', 'rows' => 2],
['name' => 'offloading', 'label' => 'Offloading / footwear', 'type' => 'text'],
],
'pod_investigation' => [
['name' => 'modality', 'label' => 'Investigation', 'type' => 'select', 'required' => true, 'options' => ['X-ray', 'Doppler', 'Labs / CRP', 'Wound swab', 'ABI', 'Other']],
['name' => 'indication', 'label' => 'Indication', 'type' => 'textarea', 'rows' => 2],
['name' => 'findings', 'label' => 'Findings', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'impression', 'label' => 'Impression', 'type' => 'textarea', 'rows' => 2],
['name' => 'recommendations', 'label' => 'Recommendations', 'type' => 'textarea', 'rows' => 2],
],
'pod_plan' => [
['name' => 'diagnosis', 'label' => 'Diagnosis', 'type' => 'text', 'required' => true],
['name' => 'plan', 'label' => 'Plan', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'offloading', 'label' => 'Offloading / footwear plan', 'type' => 'textarea', 'rows' => 2],
['name' => 'medications', 'label' => 'Medications / dressings', 'type' => 'textarea', 'rows' => 2],
['name' => 'procedure_planned', 'label' => 'Procedure planned', 'type' => 'boolean'],
['name' => 'follow_up', 'label' => 'Follow-up', 'type' => 'text'],
['name' => 'advice', 'label' => 'Patient advice', 'type' => 'textarea', 'rows' => 2],
],
'pod_procedure' => [
['name' => 'procedure', 'label' => 'Procedure', 'type' => 'text', 'required' => true],
['name' => 'indication', 'label' => 'Indication', 'type' => 'textarea', 'rows' => 2],
['name' => 'outcome', 'label' => 'Outcome', 'type' => 'select', 'required' => true, 'options' => ['Completed uneventfully', 'Completed with complications', 'Deferred', 'Aborted']],
['name' => 'complications', 'label' => 'Complications', 'type' => 'textarea', 'rows' => 2],
['name' => 'post_procedure_plan', 'label' => 'Post-procedure plan', 'type' => 'textarea', 'rows' => 2],
['name' => 'notes', 'label' => 'Notes', 'type' => 'textarea', 'rows' => 2],
],
],
'fertility' => [
'fert_history' => [
['name' => 'history', 'label' => 'History of present illness', 'type' => 'textarea', 'required' => true, 'rows' => 4],
['name' => 'trying_months', 'label' => 'Trying to conceive (months)', 'type' => 'number'],
['name' => 'obstetric_history', 'label' => 'Obstetric / menstrual history', 'type' => 'textarea', 'rows' => 2],
['name' => 'partner_notes', 'label' => 'Partner history', 'type' => 'textarea', 'rows' => 2],
['name' => 'medications', 'label' => 'Medications', 'type' => 'textarea', 'rows' => 2],
['name' => 'allergies', 'label' => 'Allergies', 'type' => 'text'],
],
'fert_exam' => [
['name' => 'chief_complaint', 'label' => 'Chief complaint', 'type' => 'text', 'required' => true],
['name' => 'priority', 'label' => 'Priority', 'type' => 'select', 'options' => ['Routine', 'Time-sensitive', 'Urgent']],
['name' => 'partner_present', 'label' => 'Partner present', 'type' => 'boolean'],
['name' => 'cycle_day', 'label' => 'Cycle day', 'type' => 'number'],
['name' => 'bmi', 'label' => 'BMI', 'type' => 'number'],
['name' => 'exam_findings', 'label' => 'Exam findings', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'notes', 'label' => 'Notes', 'type' => 'textarea', 'rows' => 2],
],
'fert_investigation' => [
['name' => 'modality', 'label' => 'Investigation', 'type' => 'select', 'required' => true, 'options' => ['AMH / hormones', 'Semen analysis', 'HSG / tubal', 'Pelvic scan', 'Follicular scan', 'Other']],
['name' => 'indication', 'label' => 'Indication', 'type' => 'textarea', 'rows' => 2],
['name' => 'findings', 'label' => 'Findings', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'impression', 'label' => 'Impression', 'type' => 'textarea', 'rows' => 2],
['name' => 'recommendations', 'label' => 'Recommendations', 'type' => 'textarea', 'rows' => 2],
],
'fert_plan' => [
['name' => 'diagnosis', 'label' => 'Diagnosis', 'type' => 'text', 'required' => true],
['name' => 'plan', 'label' => 'Fertility plan', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'medications', 'label' => 'Medications / stimulation', 'type' => 'textarea', 'rows' => 2],
['name' => 'cycle_planned', 'label' => 'Cycle / procedure note planned', 'type' => 'boolean'],
['name' => 'follow_up', 'label' => 'Follow-up', 'type' => 'text'],
['name' => 'advice', 'label' => 'Patient advice', 'type' => 'textarea', 'rows' => 2],
],
'fert_cycle' => [
['name' => 'cycle_type', 'label' => 'Cycle / procedure type', 'type' => 'select', 'required' => true, 'options' => ['Natural cycle review', 'Stimulation monitoring', 'IUI', 'IVF counselling', 'Trigger / luteal', 'Other']],
['name' => 'cycle_day', 'label' => 'Cycle day', 'type' => 'number'],
['name' => 'outcome', 'label' => 'Outcome', 'type' => 'select', 'required' => true, 'options' => ['Completed — continue', 'Completed uneventfully', 'Deferred', 'Cancelled']],
['name' => 'notes', 'label' => 'Cycle / procedure notes', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'next_steps', 'label' => 'Next steps', 'type' => 'textarea', 'rows' => 2],
['name' => 'complications', 'label' => 'Complications', 'type' => 'textarea', 'rows' => 2],
],
],
'child_welfare' => [
'cwc_intake' => [
['name' => 'visit_reason', 'label' => 'Visit reason', 'type' => 'select', 'required' => true, 'options' => ['Routine well-child', 'Growth monitoring', 'Immunization review', 'Feeding concern', 'Development concern', 'Follow-up', 'Other']],
['name' => 'caregiver', 'label' => 'Caregiver / accompanying adult', 'type' => 'text'],
['name' => 'history', 'label' => 'Interval history', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'birth_history', 'label' => 'Birth / neonatal history', 'type' => 'textarea', 'rows' => 2],
['name' => 'immunization_status', 'label' => 'Immunization status', 'type' => 'select', 'options' => ['Up to date', 'Catch-up needed', 'Unknown', 'Deferred']],
['name' => 'feeding', 'label' => 'Feeding / nutrition history', 'type' => 'textarea', 'rows' => 2],
['name' => 'social_context', 'label' => 'Social / family context', 'type' => 'textarea', 'rows' => 2],
['name' => 'safeguarding_notes', 'label' => 'Sensitive / safeguarding notes', 'type' => 'textarea', 'rows' => 3],
['name' => 'allergies', 'label' => 'Allergies', 'type' => 'text'],
],
'cwc_assessment' => [
['name' => 'age_months', 'label' => 'Age (months)', 'type' => 'number', 'required' => true],
['name' => 'weight_kg', 'label' => 'Weight (kg)', 'type' => 'number', 'required' => true],
['name' => 'height_cm', 'label' => 'Height / length (cm)', 'type' => 'number'],
['name' => 'head_circumference_cm', 'label' => 'Head circumference (cm)', 'type' => 'number'],
['name' => 'muac_cm', 'label' => 'MUAC (cm)', 'type' => 'number'],
['name' => 'growth_status', 'label' => 'Growth status', 'type' => 'select', 'options' => ['Normal', 'Underweight', 'Stunted', 'Wasted', 'Overweight']],
['name' => 'nutrition_risk', 'label' => 'Nutrition risk', 'type' => 'select', 'options' => ['Low', 'Moderate', 'High']],
['name' => 'development', 'label' => 'Developmental milestones', 'type' => 'textarea', 'rows' => 2],
['name' => 'exam_findings', 'label' => 'Exam findings', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'safeguarding_flag', 'label' => 'Safeguarding flag', 'type' => 'select', 'options' => ['None', 'Concern', 'Escalated']],
['name' => 'assessment_summary', 'label' => 'Assessment summary', 'type' => 'textarea', 'required' => true, 'rows' => 3],
],
'cwc_plan' => [
['name' => 'goals', 'label' => 'Care goals', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'interventions', 'label' => 'Planned interventions', 'type' => 'textarea', 'rows' => 2],
['name' => 'counseling', 'label' => 'Counseling / education', 'type' => 'textarea', 'rows' => 2],
['name' => 'referrals', 'label' => 'Referrals', 'type' => 'textarea', 'rows' => 2],
['name' => 'medications', 'label' => 'Medications / supplements', 'type' => 'textarea', 'rows' => 2],
['name' => 'follow_up', 'label' => 'Follow-up', 'type' => 'text'],
['name' => 'advice', 'label' => 'Caregiver advice', 'type' => 'textarea', 'rows' => 2],
],
'cwc_followup' => [
['name' => 'review_type', 'label' => 'Review type', 'type' => 'select', 'required' => true, 'options' => ['Clinic follow-up', 'Growth recheck', 'Intervention review', 'Caregiver counselling', 'Discharge from CWC episode']],
['name' => 'interventions_delivered', 'label' => 'Interventions delivered', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'progress', 'label' => 'Progress since last visit', 'type' => 'textarea', 'rows' => 2],
['name' => 'outcome', 'label' => 'Outcome', 'type' => 'select', 'required' => true, 'options' => ['In progress', 'Completed — continue CWC', 'Completed uneventfully', 'Referred', 'Lost to follow-up']],
['name' => 'next_visit', 'label' => 'Next visit', 'type' => 'text'],
['name' => 'notes', 'label' => 'Notes', 'type' => 'textarea', 'rows' => 2],
],
],
'ambulance' => [
'amb_dispatch' => [
['name' => 'call_nature', 'label' => 'Call nature', 'type' => 'select', 'required' => true, 'options' => ['Medical emergency', 'Trauma / accident', 'Transfer', 'Obstetric', 'Psychiatric', 'Standby', 'Other']],
['name' => 'priority', 'label' => 'Priority', 'type' => 'select', 'required' => true, 'options' => ['Immediate', 'Urgent', 'Routine', 'Scheduled transfer']],
['name' => 'location', 'label' => 'Scene / pickup location', 'type' => 'text', 'required' => true],
['name' => 'caller_info', 'label' => 'Caller / contact', 'type' => 'text'],
['name' => 'crew', 'label' => 'Crew assigned', 'type' => 'text'],
['name' => 'vehicle', 'label' => 'Vehicle / unit', 'type' => 'text'],
['name' => 'dispatch_notes', 'label' => 'Dispatch notes', 'type' => 'textarea', 'rows' => 3],
['name' => 'eta_minutes', 'label' => 'ETA (minutes)', 'type' => 'number'],
],
'amb_scene' => [
['name' => 'chief_complaint', 'label' => 'Chief complaint', 'type' => 'text', 'required' => true],
['name' => 'acuity', 'label' => 'Scene acuity', 'type' => 'select', 'required' => true, 'options' => ['Critical', 'Urgent', 'Stable', 'Non-urgent']],
['name' => 'mechanism', 'label' => 'Mechanism / history', 'type' => 'textarea', 'rows' => 2],
['name' => 'airway_ok', 'label' => 'Airway patent', 'type' => 'boolean'],
['name' => 'breathing_ok', 'label' => 'Breathing adequate', 'type' => 'boolean'],
['name' => 'circulation_ok', 'label' => 'Circulation stable', 'type' => 'boolean'],
['name' => 'gcs', 'label' => 'GCS', 'type' => 'number'],
['name' => 'vitals_summary', 'label' => 'Vitals summary', 'type' => 'textarea', 'rows' => 2],
['name' => 'scene_findings', 'label' => 'Scene findings / triage', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'hazards', 'label' => 'Scene hazards', 'type' => 'textarea', 'rows' => 2],
],
'amb_en_route' => [
['name' => 'destination', 'label' => 'Destination facility', 'type' => 'text', 'required' => true],
['name' => 'interventions', 'label' => 'Interventions en route', 'type' => 'textarea', 'required' => true, 'rows' => 3],
['name' => 'medications', 'label' => 'Medications given', 'type' => 'textarea', 'rows' => 2],
['name' => 'response_to_treatment', 'label' => 'Response to treatment', 'type' => 'textarea', 'rows' => 2],
['name' => 'monitoring', 'label' => 'Monitoring notes', 'type' => 'textarea', 'rows' => 2],
['name' => 'deterioration', 'label' => 'Deterioration en route', 'type' => 'boolean'],
['name' => 'eta_facility', 'label' => 'ETA to facility', 'type' => 'text'],
['name' => 'notes', 'label' => 'Transport notes', 'type' => 'textarea', 'rows' => 2],
],
'amb_handover' => [
['name' => 'receiving_facility', 'label' => 'Receiving facility / unit', 'type' => 'text', 'required' => true],
['name' => 'receiving_clinician', 'label' => 'Receiving clinician', 'type' => 'text'],
['name' => 'handover_summary', 'label' => 'Handover summary (SBAR)', 'type' => 'textarea', 'required' => true, 'rows' => 4],
['name' => 'outcome', 'label' => 'Outcome', 'type' => 'select', 'required' => true, 'options' => ['Completed — handed over', 'Completed uneventfully', 'Transferred to another unit', 'Patient refused transport', 'Cancelled on scene']],
['name' => 'time_critical', 'label' => 'Time-critical pathway', 'type' => 'select', 'options' => ['None', 'Stroke', 'STEMI', 'Trauma', 'Obstetric', 'Other']],
['name' => 'follow_up', 'label' => 'Follow-up / documentation', 'type' => 'text'],
['name' => 'notes', 'label' => 'Notes', 'type' => 'textarea', 'rows' => 2],
],
],
],
];