Files
ladill-care/config/care_specialty_clinical.php
T
isaaccladandCursor 8e23cdeae3
Deploy Ladill Care / deploy (push) Successful in 49s
Add full Radiology, Cardiology, and Psychiatry specialty clinical suites.
Mirror the Ophthalmology/Maternity shell pattern with stages, stage_tabs,
workspace clinical records, reports/print, demo seeds, and suite tests.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-19 18:41:55 +00:00

716 lines
54 KiB
PHP
Raw 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',
],
'maternity' => [
'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' => [
'exam' => 'pediatric_exam',
'clinical_notes' => 'clinical_note',
],
'orthopedics' => [
'exam' => 'ortho_exam',
'clinical_notes' => 'clinical_note',
],
'ent' => [
'exam' => 'ent_exam',
'clinical_notes' => 'clinical_note',
],
'oncology' => [
'review' => 'oncology_review',
'clinical_notes' => 'clinical_note',
],
'renal' => [
'session' => 'renal_session',
'clinical_notes' => 'clinical_note',
],
'surgery' => [
'preop' => 'preop',
'clinical_notes' => 'clinical_note',
],
'vaccination' => [
'screening' => 'vax_screening',
'administration' => 'vax_admin',
],
'pathology' => [
'request' => 'path_request',
'report' => 'path_report',
],
'infusion' => [
'session' => 'infusion_session',
'clinical_notes' => 'clinical_note',
],
'dermatology' => [
'exam' => 'skin_exam',
'clinical_notes' => 'clinical_note',
],
'podiatry' => [
'exam' => 'foot_exam',
'clinical_notes' => 'clinical_note',
],
'fertility' => [
'consult' => 'fertility_consult',
'clinical_notes' => 'clinical_note',
],
'child_welfare' => [
'growth' => 'growth',
'clinical_notes' => 'clinical_note',
],
],
'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'],
],
],
'maternity' => [
'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' => [
'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' => '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],
],
'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],
],
],
'orthopedics' => [
'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' => 'mechanism', 'label' => 'Mechanism of injury', 'type' => 'textarea', 'rows' => 2],
['name' => 'rom', 'label' => 'Range of motion', 'type' => 'textarea', 'rows' => 2],
['name' => 'neurovascular', 'label' => 'Neurovascular status', 'type' => 'text'],
['name' => 'imaging', 'label' => 'Imaging findings', 'type' => 'textarea', 'rows' => 2],
['name' => 'fracture_classification', 'label' => 'Fracture / injury classification', 'type' => 'text'],
],
'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],
],
],
'ent' => [
'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'],
],
'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],
],
],
'oncology' => [
'oncology_review' => [
['name' => 'diagnosis', 'label' => 'Oncology diagnosis', 'type' => 'text', 'required' => true],
['name' => 'stage', 'label' => 'Stage', 'type' => 'text'],
['name' => 'performance_status', 'label' => 'Performance status (ECOG)', 'type' => 'select', 'options' => ['0', '1', '2', '3', '4']],
['name' => 'current_regimen', 'label' => 'Current regimen', 'type' => 'textarea', 'rows' => 2],
['name' => 'cycle', 'label' => 'Cycle / day', 'type' => 'text'],
['name' => 'toxicity', 'label' => 'Toxicity / side effects', 'type' => 'textarea', 'rows' => 2],
['name' => 'response', 'label' => 'Treatment response', 'type' => 'textarea', 'rows' => 2],
['name' => 'plan', 'label' => 'Plan', 'type' => 'textarea', 'required' => true, 'rows' => 2],
],
'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],
],
],
'renal' => [
'renal_session' => [
['name' => 'session_type', 'label' => 'Session type', 'type' => 'select', 'required' => true, 'options' => ['Hemodialysis', 'Peritoneal dialysis', 'Clinic 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' => 'complications', 'label' => 'Complications', 'type' => 'textarea', 'rows' => 2],
['name' => 'notes', 'label' => 'Session notes', 'type' => 'textarea', 'required' => true, '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],
],
],
'surgery' => [
'preop' => [
['name' => 'proposed_procedure', 'label' => 'Proposed procedure', 'type' => 'text', 'required' => true],
['name' => 'indication', 'label' => 'Indication', 'type' => 'textarea', 'required' => true, 'rows' => 2],
['name' => 'asa_class', 'label' => 'ASA class', 'type' => 'select', 'options' => ['I', 'II', 'III', 'IV', 'V', 'E']],
['name' => 'allergies_reviewed', 'label' => 'Allergies reviewed', 'type' => 'boolean'],
['name' => 'consent_obtained', 'label' => 'Consent obtained', 'type' => 'boolean'],
['name' => 'fitness', 'label' => 'Fitness for anaesthesia', 'type' => 'textarea', 'rows' => 2],
['name' => 'investigations', 'label' => 'Relevant investigations', 'type' => 'textarea', 'rows' => 2],
['name' => 'plan', 'label' => 'Peri-op plan', 'type' => 'textarea', 'required' => true, 'rows' => 2],
],
'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],
],
],
'vaccination' => [
'vax_screening' => [
['name' => 'vaccine', 'label' => 'Vaccine', 'type' => 'text', 'required' => true],
['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' => 'cleared', 'label' => 'Cleared to vaccinate', 'type' => 'boolean', 'required' => true],
],
'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' => 'adverse_events', 'label' => 'Immediate adverse events', 'type' => 'textarea', 'rows' => 2],
['name' => 'next_due', 'label' => 'Next dose due', 'type' => 'text'],
],
],
'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],
],
'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],
],
],
'infusion' => [
'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],
],
'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],
],
],
'dermatology' => [
'skin_exam' => [
['name' => 'chief_complaint', 'label' => 'Chief complaint', 'type' => 'text', 'required' => true],
['name' => 'duration', 'label' => 'Duration', 'type' => 'text'],
['name' => 'distribution', 'label' => 'Distribution', 'type' => 'text'],
['name' => 'morphology', 'label' => 'Lesion morphology', '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],
],
'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],
],
],
'podiatry' => [
'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'],
],
'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],
],
],
'fertility' => [
'fertility_consult' => [
['name' => 'partner_present', 'label' => 'Partner present', 'type' => 'boolean'],
['name' => 'trying_months', 'label' => 'Trying to conceive (months)', 'type' => 'number'],
['name' => 'cycle_day', 'label' => 'Cycle day', 'type' => 'number'],
['name' => 'amh', 'label' => 'AMH / ovarian reserve notes', 'type' => 'text'],
['name' => 'semen_summary', 'label' => 'Semen analysis summary', 'type' => 'textarea', 'rows' => 2],
['name' => 'tubal_uterine', 'label' => 'Tubal / uterine assessment', 'type' => 'textarea', 'rows' => 2],
['name' => 'plan', 'label' => 'Fertility plan', 'type' => 'textarea', 'required' => true, '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],
],
],
'child_welfare' => [
'growth' => [
['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' => 'feeding', 'label' => 'Feeding / nutrition', 'type' => 'textarea', 'rows' => 2],
['name' => 'milestones', 'label' => 'Developmental milestones', 'type' => 'textarea', 'rows' => 2],
['name' => 'counseling', 'label' => 'Counseling given', 'type' => 'textarea', 'rows' => 2],
],
'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],
],
],
],
];