Deploy Ladill Care / deploy (push) Successful in 34s
Mirror Oncology-depth stage flows, workspace controllers, clinical forms, reports/print, demo seed, and suite tests. Pathology stays clinic specialty complementary to the Lab app. Co-authored-by: Cursor <cursoragent@cursor.com>
958 lines
75 KiB
PHP
958 lines
75 KiB
PHP
<?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' => [
|
||
'eligibility' => 'vax_eligibility',
|
||
'consent' => 'vax_consent',
|
||
'administer' => 'vax_admin',
|
||
'observation' => 'vax_observation',
|
||
],
|
||
'pathology' => [
|
||
'request' => 'path_request',
|
||
'specimen' => 'path_specimen',
|
||
'processing' => 'path_processing',
|
||
'report' => 'path_report',
|
||
'verification' => 'path_verification',
|
||
],
|
||
'infusion' => [
|
||
'assessment' => 'infusion_assessment',
|
||
'protocol' => 'infusion_protocol',
|
||
'session' => 'infusion_session',
|
||
'monitoring' => 'infusion_monitoring',
|
||
],
|
||
'dermatology' => [
|
||
'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 (0–10)', '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 (0–10)', '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 (0–10)', 'type' => 'number'],
|
||
['name' => 'pain_after', 'label' => 'Pain after (0–10)', '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 (0–10)', 'type' => 'number'],
|
||
['name' => 'outcome', 'label' => 'Outcome', 'type' => 'select', 'required' => true, 'options' => ['In progress', 'Completed — continue plan', 'Completed — discharged', 'Referred', 'Admitted']],
|
||
['name' => 'next_steps', 'label' => 'Next steps', 'type' => 'textarea', 'rows' => 2],
|
||
['name' => 'notes', 'label' => 'Notes', 'type' => 'textarea', 'rows' => 2],
|
||
],
|
||
],
|
||
'vaccination' => [
|
||
'vax_eligibility' => [
|
||
['name' => 'vaccine', 'label' => 'Vaccine requested', 'type' => 'text', 'required' => true],
|
||
['name' => 'schedule', 'label' => 'Schedule / indication', 'type' => 'select', 'options' => ['Routine EPI', 'Catch-up', 'Travel', 'Occupational', 'Campaign', 'Other']],
|
||
['name' => 'prior_doses', 'label' => 'Prior doses / history', 'type' => 'textarea', 'rows' => 2],
|
||
['name' => 'indications', 'label' => 'Indications', 'type' => 'textarea', 'rows' => 2],
|
||
['name' => 'contraindications', 'label' => 'Contraindications checked', 'type' => 'boolean', 'required' => true],
|
||
['name' => 'allergy_history', 'label' => 'Allergy / prior reaction', 'type' => 'textarea', 'rows' => 2],
|
||
['name' => 'fever_today', 'label' => 'Fever today', 'type' => 'boolean'],
|
||
['name' => 'pregnancy', 'label' => 'Pregnant / breastfeeding', 'type' => 'boolean'],
|
||
['name' => 'cleared', 'label' => 'Cleared to vaccinate', 'type' => 'boolean', 'required' => true],
|
||
],
|
||
'vax_consent' => [
|
||
['name' => 'information_given', 'label' => 'Information given', 'type' => 'boolean', 'required' => true],
|
||
['name' => 'consent_obtained', 'label' => 'Consent obtained', 'type' => 'boolean', 'required' => true],
|
||
['name' => 'consent_type', 'label' => 'Consent type', 'type' => 'select', 'options' => ['Verbal', 'Written', 'Guardian', 'Implied']],
|
||
['name' => 'consented_by', 'label' => 'Consented by', 'type' => 'text'],
|
||
['name' => 'risks_discussed', 'label' => 'Risks / AEFI discussed', 'type' => 'boolean'],
|
||
['name' => 'notes', 'label' => 'Consent notes', 'type' => 'textarea', 'rows' => 2],
|
||
],
|
||
'vax_admin' => [
|
||
['name' => 'vaccine', 'label' => 'Vaccine administered', 'type' => 'text', 'required' => true],
|
||
['name' => 'dose', 'label' => 'Dose / antigen', 'type' => 'text'],
|
||
['name' => 'site', 'label' => 'Injection site', 'type' => 'select', 'options' => ['Left arm', 'Right arm', 'Left thigh', 'Right thigh', 'Oral', 'Other']],
|
||
['name' => 'batch', 'label' => 'Batch / lot number', 'type' => 'text', 'required' => true],
|
||
['name' => 'expiry', 'label' => 'Expiry date', 'type' => 'text'],
|
||
['name' => 'route', 'label' => 'Route', 'type' => 'select', 'options' => ['IM', 'SC', 'ID', 'Oral', 'Nasal']],
|
||
['name' => 'administered_by', 'label' => 'Administered by', 'type' => 'text'],
|
||
['name' => 'adverse_events', 'label' => 'Immediate adverse events', 'type' => 'textarea', 'rows' => 2],
|
||
['name' => 'next_due', 'label' => 'Next dose due', 'type' => 'text'],
|
||
['name' => 'outcome', 'label' => 'Administration outcome', 'type' => 'select', 'required' => true, 'options' => ['Completed — observe', 'Deferred', 'Refused', 'Incomplete']],
|
||
],
|
||
'vax_observation' => [
|
||
['name' => 'observation_minutes', 'label' => 'Observation minutes', 'type' => 'number'],
|
||
['name' => 'vitals', 'label' => 'Vitals / condition', 'type' => 'textarea', 'rows' => 2],
|
||
['name' => 'aefi', 'label' => 'AEFI', 'type' => 'select', 'options' => ['None', 'Mild', 'Moderate', 'Severe — escalate']],
|
||
['name' => 'aefi_details', 'label' => 'AEFI details / actions', 'type' => 'textarea', 'rows' => 2],
|
||
['name' => 'advice', 'label' => 'Home advice', 'type' => 'textarea', 'rows' => 2],
|
||
['name' => 'outcome', 'label' => 'Disposition', 'type' => 'select', 'required' => true, 'options' => ['Completed — discharged', 'Completed — AEFI follow-up', 'Escalated', 'In progress']],
|
||
],
|
||
],
|
||
'pathology' => [
|
||
'path_request' => [
|
||
['name' => 'specimen_type', 'label' => 'Specimen type', 'type' => 'text', 'required' => true],
|
||
['name' => 'site', 'label' => 'Anatomic site', 'type' => 'text', 'required' => true],
|
||
['name' => 'clinical_history', 'label' => 'Clinical history', 'type' => 'textarea', 'required' => true, 'rows' => 3],
|
||
['name' => 'urgency', 'label' => 'Urgency', 'type' => 'select', 'options' => ['Routine', 'Urgent', 'Intra-op']],
|
||
['name' => 'tests_requested', 'label' => 'Tests requested', 'type' => 'textarea', 'rows' => 2],
|
||
['name' => 'requesting_clinician', 'label' => 'Requesting clinician', 'type' => 'text'],
|
||
],
|
||
'path_specimen' => [
|
||
['name' => 'received_at', 'label' => 'Received at', 'type' => 'text'],
|
||
['name' => 'container_label', 'label' => 'Container / accession label', 'type' => 'text', 'required' => true],
|
||
['name' => 'adequacy', 'label' => 'Specimen adequacy', 'type' => 'select', 'options' => ['Adequate', 'Suboptimal', 'Inadequate']],
|
||
['name' => 'fixative', 'label' => 'Fixative / medium', 'type' => 'text'],
|
||
['name' => 'notes', 'label' => 'Receipt notes', 'type' => 'textarea', 'rows' => 2],
|
||
],
|
||
'path_processing' => [
|
||
['name' => 'gross', 'label' => 'Gross description', 'type' => 'textarea', 'rows' => 3],
|
||
['name' => 'blocks', 'label' => 'Blocks / slides', 'type' => 'text'],
|
||
['name' => 'stains', 'label' => 'Stains / techniques', 'type' => 'textarea', 'rows' => 2],
|
||
['name' => 'status', 'label' => 'Processing status', 'type' => 'select', 'required' => true, 'options' => ['In process', 'Ready for reporting', 'Hold — missing info']],
|
||
['name' => 'notes', 'label' => 'Processing notes', 'type' => 'textarea', 'rows' => 2],
|
||
],
|
||
'path_report' => [
|
||
['name' => 'gross', 'label' => 'Gross description', 'type' => 'textarea', 'rows' => 3],
|
||
['name' => 'microscopy', 'label' => 'Microscopy', 'type' => 'textarea', 'required' => true, 'rows' => 4],
|
||
['name' => 'diagnosis', 'label' => 'Diagnosis', 'type' => 'textarea', 'required' => true, 'rows' => 3],
|
||
['name' => 'comment', 'label' => 'Comment', 'type' => 'textarea', 'rows' => 2],
|
||
['name' => 'reported_by', 'label' => 'Reported by', 'type' => 'text'],
|
||
],
|
||
'path_verification' => [
|
||
['name' => 'verified', 'label' => 'Report verified', 'type' => 'boolean', 'required' => true],
|
||
['name' => 'verified_by', 'label' => 'Verified by', 'type' => 'text'],
|
||
['name' => 'amendments', 'label' => 'Amendments', 'type' => 'textarea', 'rows' => 2],
|
||
['name' => 'released', 'label' => 'Released to clinician', 'type' => 'boolean'],
|
||
['name' => 'outcome', 'label' => 'Verification outcome', 'type' => 'select', 'required' => true, 'options' => ['Completed — released', 'Completed — amended', 'Hold', 'In progress']],
|
||
],
|
||
],
|
||
'infusion' => [
|
||
'infusion_assessment' => [
|
||
['name' => 'indication', 'label' => 'Indication', 'type' => 'text', 'required' => true],
|
||
['name' => 'history', 'label' => 'Relevant history', 'type' => 'textarea', 'required' => true, 'rows' => 3],
|
||
['name' => 'allergies', 'label' => 'Allergies', 'type' => 'textarea', 'rows' => 2],
|
||
['name' => 'baseline_vitals', 'label' => 'Baseline vitals', 'type' => 'textarea', 'rows' => 2],
|
||
['name' => 'access_plan', 'label' => 'IV access plan', 'type' => 'text'],
|
||
['name' => 'fit_for_infusion', 'label' => 'Fit for infusion', 'type' => 'boolean', 'required' => true],
|
||
],
|
||
'infusion_protocol' => [
|
||
['name' => 'medication', 'label' => 'Medication / regimen', 'type' => 'text', 'required' => true],
|
||
['name' => 'dose', 'label' => 'Dose', 'type' => 'text', 'required' => true],
|
||
['name' => 'diluent', 'label' => 'Diluent / volume', 'type' => 'text'],
|
||
['name' => 'rate', 'label' => 'Ordered rate', 'type' => 'text'],
|
||
['name' => 'duration', 'label' => 'Expected duration', 'type' => 'text'],
|
||
['name' => 'premeds', 'label' => 'Premedications', 'type' => 'textarea', 'rows' => 2],
|
||
['name' => 'ordered_by', 'label' => 'Ordered by', 'type' => 'text'],
|
||
],
|
||
'infusion_session' => [
|
||
['name' => 'medication', 'label' => 'Medication / regimen', 'type' => 'text', 'required' => true],
|
||
['name' => 'dose', 'label' => 'Dose', 'type' => 'text'],
|
||
['name' => 'rate', 'label' => 'Infusion rate', 'type' => 'text'],
|
||
['name' => 'access', 'label' => 'IV access', 'type' => 'text'],
|
||
['name' => 'start_time', 'label' => 'Start time', 'type' => 'text'],
|
||
['name' => 'end_time', 'label' => 'End time', 'type' => 'text'],
|
||
['name' => 'vitals', 'label' => 'Vitals during infusion', 'type' => 'textarea', 'rows' => 2],
|
||
['name' => 'reactions', 'label' => 'Reactions / interventions', 'type' => 'textarea', 'rows' => 2],
|
||
['name' => 'notes', 'label' => 'Session notes', 'type' => 'textarea', 'required' => true, 'rows' => 2],
|
||
['name' => 'outcome', 'label' => 'Session outcome', 'type' => 'select', 'options' => ['In progress', 'Completed — observe', 'Stopped — reaction', 'Deferred']],
|
||
],
|
||
'infusion_monitoring' => [
|
||
['name' => 'post_vitals', 'label' => 'Post-infusion vitals', 'type' => 'textarea', 'rows' => 2],
|
||
['name' => 'reaction', 'label' => 'Delayed reaction', 'type' => 'select', 'options' => ['None', 'Mild', 'Moderate', 'Severe']],
|
||
['name' => 'interventions', 'label' => 'Interventions', 'type' => 'textarea', 'rows' => 2],
|
||
['name' => 'advice', 'label' => 'Discharge advice', 'type' => 'textarea', 'rows' => 2],
|
||
['name' => 'outcome', 'label' => 'Disposition', 'type' => 'select', 'required' => true, 'options' => ['Completed — discharged', 'Completed — admit / escalate', 'In progress']],
|
||
],
|
||
],
|
||
'dermatology' => [
|
||
'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],
|
||
],
|
||
],
|
||
],
|
||
];
|