Files
ladill-care/config/care_specialty_clinical.php
T
isaaccladandCursor 7989ab9184
Deploy Ladill Care / deploy (push) Successful in 34s
Ship full Emergency specialty suite on the shared shell.
Add ED visit stages, triage-driven routing, vitals, observation, disposition, reports, and print summary so Emergency matches Dentistry’s operational depth without a parallel EHR.

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

519 lines
35 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',
],
'dentistry' => [
],
'ophthalmology' => [
'exam' => 'eye_exam',
'refraction' => 'refraction',
'clinical_notes' => 'clinical_note',
],
'physiotherapy' => [
'assessment' => 'pt_assessment',
'session' => 'pt_session',
],
'maternity' => [
'antenatal' => 'antenatal',
'clinical_notes' => 'clinical_note',
],
'radiology' => [
'request' => 'imaging_request',
'report' => 'imaging_report',
],
'cardiology' => [
'exam' => 'cardiac_exam',
'clinical_notes' => 'clinical_note',
],
'psychiatry' => [
'assessment' => 'mental_status',
'clinical_notes' => 'clinical_note',
],
'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' => 'low_stock_alert', 'label' => 'Flag low stock', 'type' => 'boolean'],
['name' => 'notes', 'label' => 'Inventory notes', 'type' => 'textarea', 'rows' => 3],
],
],
'dentistry' => [
],
'ophthalmology' => [
'eye_exam' => [
['name' => 'chief_complaint', 'label' => 'Chief complaint', 'type' => 'text', 'required' => true],
['name' => 'va_od', 'label' => 'Visual acuity OD', 'type' => 'text', 'required' => true],
['name' => 'va_os', 'label' => 'Visual acuity OS', 'type' => 'text', 'required' => true],
['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' => '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],
],
'refraction' => [
['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],
],
'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],
],
],
'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' => 'rom', 'label' => 'Range of motion', 'type' => 'textarea', 'rows' => 2],
['name' => 'strength', 'label' => 'Strength / function', 'type' => 'textarea', 'rows' => 2],
['name' => 'goals', 'label' => 'Treatment goals', 'type' => 'textarea', 'required' => true, 'rows' => 2],
],
'pt_session' => [
['name' => 'modalities', 'label' => 'Modalities used', 'type' => 'textarea', 'required' => true, 'rows' => 2],
['name' => 'exercises', 'label' => 'Exercises prescribed', 'type' => 'textarea', 'rows' => 2],
['name' => 'response', 'label' => 'Patient response', 'type' => 'textarea', 'rows' => 2],
['name' => 'home_program', 'label' => 'Home program', 'type' => 'textarea', 'rows' => 2],
['name' => 'next_review', 'label' => 'Next review', 'type' => 'text'],
],
],
'maternity' => [
'antenatal' => [
['name' => 'gravida', 'label' => 'Gravida', 'type' => 'number', 'required' => true],
['name' => 'para', 'label' => 'Para', 'type' => 'number'],
['name' => 'gestational_age_weeks', 'label' => 'Gestational age (weeks)', 'type' => 'number', 'required' => true],
['name' => 'bp', 'label' => 'Blood pressure', 'type' => 'text'],
['name' => 'fundal_height', 'label' => 'Fundal height (cm)', 'type' => 'number'],
['name' => 'fetal_heart_rate', 'label' => 'Fetal heart rate', 'type' => 'number'],
['name' => 'presentation', 'label' => 'Presentation', 'type' => 'select', 'options' => ['Cephalic', 'Breech', 'Transverse', 'Unknown']],
['name' => 'urine', 'label' => 'Urine dipstick', 'type' => 'text'],
['name' => 'danger_signs', 'label' => 'Danger signs', '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],
],
],
'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']],
],
'imaging_report' => [
['name' => 'technique', 'label' => 'Technique', 'type' => 'textarea', 'rows' => 2],
['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],
],
],
'cardiology' => [
'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', 'rows' => 2],
['name' => 'echo_summary', 'label' => 'Echo summary', 'type' => 'textarea', 'rows' => 2],
['name' => 'risk_factors', 'label' => 'Cardiac risk factors', '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],
],
],
'psychiatry' => [
'mental_status' => [
['name' => 'chief_complaint', 'label' => 'Presenting complaint', 'type' => 'text', 'required' => true],
['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' => 'insight', 'label' => 'Insight / judgment', 'type' => 'text'],
['name' => 'risk', 'label' => 'Risk assessment', 'type' => 'textarea', 'required' => true, 'rows' => 2],
['name' => 'mse_summary', 'label' => 'MSE summary', '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],
],
],
'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],
],
],
],
];