Files
ladill-care/config/care_specialty_clinical.php
T
isaaccladandCursor b7e5a7d9ad
Deploy Ladill Care / deploy (push) Successful in 32s
Add full Oncology, Renal Care, and Surgery specialty clinical suites.
Match Pediatrics/ENT depth with stages, workspace tabs, clinical records, reports/print, demo seed, and suite tests.

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

888 lines
69 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' => [
'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' => [
'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' => [
'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_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],
],
],
],
];