~/cp-case/generate_case.py
from docx import Document
from docx.shared import Pt, RGBColor, Inches
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
doc = Document()
# ── Page margins ──
from docx.shared import Cm
section = doc.sections[0]
section.top_margin = Cm(2)
section.bottom_margin = Cm(2)
section.left_margin = Cm(2.5)
section.right_margin = Cm(2.5)
# ── Default style ──
style = doc.styles['Normal']
style.font.name = 'Times New Roman'
style.font.size = Pt(12)
def h1(text):
p = doc.add_heading(text, level=1)
p.runs[0].font.size = Pt(14)
p.runs[0].font.bold = True
p.runs[0].font.color.rgb = RGBColor(0x1F, 0x49, 0x7D)
return p
def h2(text):
p = doc.add_heading(text, level=2)
p.runs[0].font.size = Pt(13)
p.runs[0].font.bold = True
p.runs[0].font.color.rgb = RGBColor(0x2E, 0x74, 0xB5)
return p
def h3(text):
p = doc.add_heading(text, level=3)
p.runs[0].font.size = Pt(12)
p.runs[0].font.bold = True
p.runs[0].font.color.rgb = RGBColor(0x1F, 0x49, 0x7D)
return p
def body(text, bold=False, indent=False):
p = doc.add_paragraph()
if indent:
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run(text)
run.font.name = 'Times New Roman'
run.font.size = Pt(12)
run.bold = bold
return p
def bullet(text):
p = doc.add_paragraph(style='List Bullet')
run = p.add_run(text)
run.font.name = 'Times New Roman'
run.font.size = Pt(12)
return p
def kv(key, value):
"""Key: Value formatted paragraph"""
p = doc.add_paragraph()
r1 = p.add_run(key + ': ')
r1.bold = True
r1.font.name = 'Times New Roman'
r1.font.size = Pt(12)
r2 = p.add_run(value)
r2.font.name = 'Times New Roman'
r2.font.size = Pt(12)
return p
def divider():
p = doc.add_paragraph('─' * 80)
p.runs[0].font.size = Pt(8)
p.runs[0].font.color.rgb = RGBColor(0xAA, 0xAA, 0xAA)
# ══════════════════════════════════════════════════════
# TITLE
# ══════════════════════════════════════════════════════
title = doc.add_paragraph()
title.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = title.add_run('PEDIATRIC PHYSIOTHERAPY ASSESSMENT')
r.bold = True
r.font.size = Pt(16)
r.font.name = 'Times New Roman'
r.font.color.rgb = RGBColor(0x1F, 0x49, 0x7D)
subtitle = doc.add_paragraph()
subtitle.alignment = WD_ALIGN_PARAGRAPH.CENTER
r2 = subtitle.add_run('Case: Spastic Diplegic Cerebral Palsy | GMFCS Level II')
r2.italic = True
r2.font.size = Pt(12)
r2.font.name = 'Times New Roman'
r2.font.color.rgb = RGBColor(0x2E, 0x74, 0xB5)
doc.add_paragraph()
# ══════════════════════════════════════════════════════
# 1. DEMOGRAPHIC DATA
# ══════════════════════════════════════════════════════
h1('DEMOGRAPHIC DATA')
kv('Name', 'Master Aryan Sharma')
kv('Age', '4 years 2 months')
kv('Gender', 'Male')
kv("Father's Name, Age, Education & Occupation", 'Mr. Rajesh Sharma | 32 years | B.E. (Computer Science) | Software Engineer')
kv("Mother's Name, Age, Education & Occupation", 'Mrs. Sunita Sharma | 28 years | SSC (10th Standard) | Homemaker')
kv('Address', '14, Rose Garden Colony, Baner, Pune – 411045, Maharashtra')
kv('Date of Assessment', '23rd July 2026')
kv('Referred By', 'Dr. Priya Mehta, Pediatric Neurologist, Sahyadri Specialty Hospital, Pune')
kv('Diagnosis', 'Spastic Diplegic Cerebral Palsy')
kv('GMFCS Level', 'II')
kv('Informant', 'Mother – Mrs. Sunita Sharma (reliable historian)')
# ══════════════════════════════════════════════════════
# 2. CHIEF COMPLAINTS
# ══════════════════════════════════════════════════════
h1('CHIEF COMPLAINTS')
body('As reported by mother, in order of severity and duration:', bold=True)
bullet('Difficulty in walking – child walks on toes and trips frequently (since approximately 18 months of age)')
bullet('Stiffness in both lower limbs, worse in the morning (noticed since 8–10 months of age)')
bullet('Scissoring of both legs during walking (noticed clearly since child began walking at 3 years)')
bullet('Frequent falls – approximately 3–4 falls per week')
bullet('Unable to run or keep up with age-matched peers')
bullet('Delayed achievement of all gross motor milestones since infancy')
# ══════════════════════════════════════════════════════
# 3. HISTORY OF PRESENT ILLNESS
# ══════════════════════════════════════════════════════
h1('HISTORY OF PRESENT ILLNESS')
body(
'Master Aryan Sharma, a 4-year 2-month-old male child, is a first born of a non-consanguineous marriage. '
'He was brought by his mother with complaints of difficulty in walking, toe walking, stiffness in both lower limbs, '
'and delayed motor milestones since early infancy. The onset of symptoms is insidious and has been present since birth; '
'the course is non-progressive as regards the underlying neurological lesion, but functional limitations have evolved as the child grows.'
)
h2('ANTENATAL HISTORY')
h3('Gravida: G1 P1 L1 A0')
body('Mother is primigravida. This is the first pregnancy, with a live birth outcome.', indent=True)
h3('Parity: P1 (one delivery beyond 24 weeks – live birth)')
h3('Consanguineous Marriage: No')
body('Parents are not related by blood. No history of consanguinity in either family.', indent=True)
h3('Previous Obstetric History: Not applicable (primigravida)')
body('Antenatal check-up: Irregular antenatal visits (4 visits total). Mother was booked at a government primary health centre at 10 weeks of gestation.', indent=True)
body('History of infection / fever / rash: Mother reports mild fever with cough at approximately 28 weeks of gestation, managed with paracetamol at home. No documented TORCH (toxoplasmosis, rubella, CMV, herpes) infections on record. Rubella IgG was reactive (immune status). No history of rash or jaundice during pregnancy.', indent=True)
body('H/O Hypertension: No history of pregnancy-induced hypertension or pre-eclampsia.', indent=True)
body('H/O Gestational Diabetes Mellitus (GDM): No.', indent=True)
body('History of trauma / injury during pregnancy: Mother reports a minor fall at approximately 30 weeks of gestation – no direct abdominal trauma; no fetal movements abnormality noted afterwards.', indent=True)
body('First fetal movements felt: At 20 weeks of gestation (normal).', indent=True)
body('Expected Date of Delivery (EDD): 15th March 2022. Child was born on 10th January 2022 (32 weeks – preterm).', indent=True)
body('Genetic history: No history of chromosomal disorders, Down syndrome, or known inherited conditions in the family.', indent=True)
body('History of PPROM (Preterm Premature Rupture of Membranes): Present – rupture of membranes noted at 30 weeks of gestation, which led to preterm delivery at 32 weeks.', indent=True)
body('Drug history during pregnancy: Iron and folic acid (supplementation). No known teratogen exposure. No use of alcohol or tobacco.', indent=True)
body('Maternal alcoholic history: No history of alcohol or tobacco use.', indent=True)
h2('PERINATAL HISTORY')
bullet('Mode of delivery: Emergency Lower Segment Caesarean Section (LSCS) – indication: PPROM with fetal distress')
bullet('Gestational age at delivery: 32 weeks (preterm)')
bullet('Birth weight: 1.4 kg (Low birth weight – < 2.5 kg; normal birth weight 2.5–4 kg)')
bullet('Presentation: Cephalic')
bullet('Single / Twins / Multiples: Singleton')
bullet('Immediate birth cry: Weak cry noted; NICU admission required')
bullet('Breastfeeding: Initiated at 3 days of life via expressed breast milk through nasogastric tube (child unable to suck initially)')
bullet('Birth trauma: None documented')
bullet('Neonatal jaundice: Physiological jaundice at day 3; managed with phototherapy for 48 hours; bilirubin levels did not cross exchange transfusion threshold')
bullet('APGAR Score: 1 minute – 5/10; 5 minutes – 7/10 (mild birth asphyxia)')
h2('POSTNATAL / NEONATAL HISTORY')
bullet('NICU stay: 25 days (from birth until 36 weeks corrected age)')
bullet('Respiratory support: Nasal CPAP for 5 days (respiratory distress syndrome of prematurity)')
bullet('Neonatal seizures: None documented')
bullet('Neonatal hypoglycemia: One episode on day 2 – managed with IV dextrose; resolved')
bullet('Neonatal infections: No septicemia or meningitis documented')
bullet('Neonatal hyperbilirubinemia: As above (phototherapy; no exchange transfusion required; bilirubin peak 12 mg/dL)')
bullet('Perinatal asphyxia: Mild (APGAR 5 at 1 min; improved to 7 at 5 min)')
bullet('Cranial Ultrasound (at 34 weeks corrected age): Bilateral periventricular leukomalacia (PVL) – Grade II. No intraventricular hemorrhage.')
bullet('Oxygen requirement: Nasal CPAP for 5 days; weaned off by day 6')
bullet('O2 support: Yes (CPAP). Ventilator assistance: No')
# ══════════════════════════════════════════════════════
# 4. PAST MEDICAL HISTORY
# ══════════════════════════════════════════════════════
h1('PAST MEDICAL HISTORY')
bullet('Similar illness in the past: No prior diagnosis of CP was given at birth; developmental delay suspected at 6 months.')
bullet('History of jaundice: Yes – neonatal physiological jaundice, treated with phototherapy (see perinatal history).')
bullet('History of measles: No; vaccinated (see vaccination history).')
bullet('History of epilepsy / seizures: No history of epileptic seizures post-neonatal period. No anti-convulsant therapy currently.')
bullet('History of asthma / breathlessness: No.')
bullet('Previous hospitalizations: NICU admission at birth (25 days). No subsequent hospitalizations.')
bullet('MRI Brain (done at 2 years of age): Bilateral periventricular white matter loss with gliosis, consistent with sequelae of Grade II PVL. Cortex intact. No structural anomalies.')
bullet('Previous physiotherapy: Commenced early intervention at 12 months at a government hospital. Attendance was irregular (approximately once monthly).')
# ══════════════════════════════════════════════════════
# 5. FAMILY HISTORY
# ══════════════════════════════════════════════════════
h1('FAMILY HISTORY')
bullet('No family history of cerebral palsy, muscular dystrophy, chromosomal disorders, or inherited neurological conditions.')
bullet('No family history of tuberculosis, HIV, or other infectious diseases.')
bullet('No history of consanguinity (parents are not blood-related).')
bullet('Maternal health: Well. No chronic illness.')
bullet('Paternal health: Well. No chronic illness.')
bullet('Siblings: None (only child).')
# ══════════════════════════════════════════════════════
# 6. VACCINE HISTORY
# ══════════════════════════════════════════════════════
h1('VACCINE HISTORY')
body('Vaccination record maintained in the Mother-Child Protection (MCP) card:', bold=True)
bullet('BCG: Given at birth (0.1 mL intradermal) – scar present on left deltoid. ✓')
bullet('OPV 0: Given at birth (2 drops oral). ✓')
bullet('OPV 1, 2, 3: Given at 6 weeks, 10 weeks, 14 weeks. ✓')
bullet('DPT (DTP) 1, 2, 3: Given at 6 weeks, 10 weeks, 14 weeks (0.5 mL intramuscular). ✓')
bullet('Hepatitis B 1, 2, 3: Given at birth, 6 weeks, 6 months. ✓')
bullet('Hib (PRP-T): Given at 6, 10, 14 weeks. ✓')
bullet('Measles (MR): Given at 9 months; booster at 16 months. ✓')
bullet('Vitamin A: 1st dose at 9 months. ✓')
bullet('TT (Tetanus Toxoid): Two doses given to mother during pregnancy at 28 and 32 weeks. ✓')
bullet('COVID-19: Not applicable (child < 5 years; not yet eligible at time of vaccination drive).')
body('Vaccination status: Complete for age as per IAP (Indian Academy of Pediatrics) national immunization schedule.', bold=False)
# ══════════════════════════════════════════════════════
# 7. SOCIO-ECONOMIC & ENVIRONMENT HISTORY
# ══════════════════════════════════════════════════════
h1('SOCIO-ECONOMIC & ENVIRONMENT HISTORY')
bullet('Number of persons living together: 4 (child, mother, father, paternal grandmother).')
bullet('Occupation: Father – Software Engineer (employed, stable income). Mother – Homemaker and primary caregiver.')
bullet('Education: Father – B.E. (Engineering graduate); Mother – SSC (10th standard).')
bullet('Monthly income: Approximately Rs. 60,000/month (middle-income family).')
bullet('Medical coverage: CGHS (Central Government Health Scheme) through father\'s employer.')
bullet('Housing condition: Ground-floor 2BHK flat in a residential society; no stairs at entrance (facilitates mobility). Clean and hygienic environment.')
bullet('Child\'s behavior: Cheerful, cooperative, and affectionate. Responds to name, shows interest in play and toys. Mild stranger anxiety (age-appropriate).')
bullet('Relationship with parents: Warm and secure attachment. Mother is highly motivated and attends all therapy sessions. Father participates on weekends.')
bullet('School enrollment: Not yet enrolled in school. Parents plan to enroll in a special needs-friendly inclusive school by age 5.')
bullet('Social participation: Limited peer interaction due to mobility restrictions. Plays within the house compound with parental supervision.')
# ══════════════════════════════════════════════════════
# 8. DEVELOPMENTAL MILESTONES
# ══════════════════════════════════════════════════════
h1('DEVELOPMENTAL MILESTONES')
body('(Reported by mother; corrected age used for milestones up to 24 months given prematurity of 8 weeks)', bold=True)
table = doc.add_table(rows=1, cols=3)
table.style = 'Table Grid'
hdr = table.rows[0].cells
hdr[0].text = 'Milestone'
hdr[1].text = 'Normal Age (Corrected)'
hdr[2].text = 'Age Achieved by Aryan'
for cell in hdr:
for para in cell.paragraphs:
for run in para.runs:
run.bold = True
run.font.name = 'Times New Roman'
run.font.size = Pt(11)
milestones = [
('Social Smile', '6–8 weeks', '3 months'),
('Head Control (ventral suspension)', '3–4 months', '7 months'),
('Roll over (prone → supine)', '4–5 months', '10 months'),
('Sitting with support', '6–7 months', '14 months'),
('Sitting independently', '8–9 months', '20 months'),
('Crawling (commando/reciprocal)', '7–9 months', 'Not achieved – child bottom shuffles'),
('Standing with support', '9–10 months', '28 months'),
('Pull to stand', '9–10 months', '30 months'),
('Walking with support', '11–12 months', '36 months (push walker)'),
('Walking independently', '12–14 months', '42 months (present)'),
('First words (2–3 meaningful)', '12 months', '18 months'),
('Two-word sentences', '18–24 months', '30 months'),
('Bladder / bowel control (day)', '2–3 years', 'Not yet achieved; partially trained'),
('Pincer grasp', '9–10 months', '14 months'),
('Building 2-block tower', '15 months', '22 months'),
]
for m in milestones:
row = table.add_row().cells
for i, val in enumerate(m):
row[i].text = val
for para in row[i].paragraphs:
for run in para.runs:
run.font.name = 'Times New Roman'
run.font.size = Pt(11)
doc.add_paragraph()
body('Gross Motor: Severely delayed. Language: Mildly delayed. Fine Motor: Mildly delayed. Cognition: Mildly delayed (appropriate for corrected age).', bold=False)
# ══════════════════════════════════════════════════════
# 9. MENTAL STATE EXAMINATION
# ══════════════════════════════════════════════════════
h1('MENTAL STATE EXAMINATION')
bullet('Level of awareness: Alert and conscious.')
bullet('Environmental orientation: Child is playing with a toy car; demonstrates appropriate interest in environmental stimuli (toys, therapist, mother).')
bullet('Interaction with parent: Warm, secure attachment to mother; reaches for mother when anxious; follows mother\'s voice direction.')
bullet('Response to commands: Follows simple two-step commands ("come here," "give me the ball"). Understands negation ("No").')
bullet('Attention span: Short; easily distracted (age 4 – expected attention span of approximately 4–5 minutes for structured tasks). Responds better during play-based interaction.')
bullet('Mood and affect: Cheerful, smiling, expressive.')
bullet('Eye contact: Maintained appropriately.')
bullet('Memory: Recognizes familiar people, objects, places (age-appropriate).')
# ══════════════════════════════════════════════════════
# 10. ON OBSERVATION
# ══════════════════════════════════════════════════════
h1('ON OBSERVATION')
body('Observation was performed with the child in the position of highest milestone achieved – STANDING and WALKING, as the child is ambulatory.', bold=True)
h3('Tone (observed):')
body('At Rest: Increased tone (hypertonia) observed in both lower limbs. Limbs do not fall freely when lifted; there is resistance to passive movement.', indent=True)
body('During Activity: Tone increases during active movement; scissoring and equinus posturing become more pronounced during walking. Adductor spasm visible during swing phase of gait.', indent=True)
body('During Physical / Emotional Exertion: Tone further increases when child is excited or crying; scissoring intensifies. Observed during attempted running.', indent=True)
body('Areas Involved: Predominantly bilateral lower limbs (hip adductors, hamstrings, gastrocnemius-soleus complex). Upper limbs: normal tone; no spasticity detected.', indent=True)
h3('Posture (observed):')
body('At Rest (standing, barefoot):', indent=True)
bullet('Lumbar hyperlordosis – exaggerated lumbar curve')
bullet('Anterior pelvic tilt bilaterally')
bullet('Hip flexion posture approximately 15–20° bilaterally')
bullet('Bilateral hip internal rotation (in-toeing; medial femoral condyles facing inward)')
bullet('Bilateral knee flexion approximately 10–15° (mild crouched posture)')
bullet('Bilateral equinus – heels are elevated from the floor; forefoot contact only')
bullet('Bilateral forefoot adduction')
bullet('Mild lateral trunk lean to the left side')
bullet('Head and neck: normal posture; no torticollis')
body('During Movement: Posture worsens during walking (see Gait section). Child adopts W-sitting position when placed on floor.', indent=True)
body('Symmetry: Posture is largely symmetrical bilaterally; slight asymmetry in trunk lean (left > right) and hip rotation (right internal rotation slightly greater than left).', indent=True)
body('Ascending order (feet to head): Equinus feet → knee flexion → hip flexion + internal rotation → anterior pelvic tilt → lumbar hyperlordosis → relatively normal upper trunk.', indent=True)
h3('Involuntary Movements:')
bullet('Type: None observed at rest. No tremors, chorea, athetosis, or dystonia detected.')
bullet('At rest / with movement: No involuntary movements at rest or during activity.')
bullet('Frequency: N/A')
bullet('Area involved: N/A')
bullet('Amplitude: N/A')
h3('Facial Asymmetry / Dysmorphic Features:')
bullet('Facial symmetry: Symmetric. No facial palsy.')
bullet('Dysmorphic features: None detected. No bossing of skull, no cleft palate, no Down syndrome features.')
bullet('Head circumference: 49 cm (10th–25th percentile for age).')
bullet('Chest circumference exceeds head circumference (age-appropriate; chest > head after 1 year of age).')
h3('Primitive Reflexes (observed):')
body('The following reflexes were assessed as they may be hampering milestone achievement:', indent=True)
bullet('ATNR (Asymmetrical Tonic Neck Reflex): Absent. (Should be integrated by 6 months) – Score 0')
bullet('STNR (Symmetrical Tonic Neck Reflex): Absent. (Should be integrated by 9–11 months) – Score 0')
bullet('Moro Reflex: Absent (integrated; appropriate for age 4 years) – Score 0')
bullet('Tonic Labyrinthine Reflex (TLR): Mild residual – subtle increase in extensor tone in supine noted – Score 1')
bullet('Positive Supporting Reflex: Mildly retained – excessive weight-bearing response on toes when placed in standing – Score 1')
bullet('Parachute Reflex: Present bilaterally (should be present and persistent from ~9 months) ✓')
bullet('Landau Reflex: Present but reduced (appears at 3 months, integrates at 2–3 years; mild persistence appropriate at age 4) – Score 1')
h3('Tightness / Contracture (observed by posture, confirmed by PROM):')
bullet('Gastrocnemius tightness: Bilateral – equinus foot posture at rest and in standing.')
bullet('Hamstring tightness: Bilateral – knees unable to fully extend in long sitting; popliteal tightness visible.')
bullet('Hip adductor tightness: Bilateral – thighs pressed together in standing; scissoring during walking.')
bullet('Hip flexor tightness: Bilateral – anterior pelvic tilt and hip flexion posture in standing.')
bullet('No fixed bony contractures detected at this stage (dynamic deformities predominate).')
h3('Motor Milestone (observed in session):')
body('a. Head Control: Fully achieved – stable in all planes. ✓', indent=True)
body('b. Rolling: Achieves both prone to supine and supine to prone. Rolling is effortful; arm does not fully come out during antigravity rolling prone to supine. Partial dissociation present.', indent=True)
body('c. Creeping (commando crawl): Not achieved independently. Attempts but trunk drags on floor.', indent=True)
body('d. Sitting: Achieved. Sitting posture: mild sacral sitting (posterior pelvic tilt) in long sitting. Prefers W-sitting on floor (hip internal rotation, iliopsoas and hamstring tightness pattern). Trunk control adequate in sitting but reduces at pelvic base. No propped sitting needed.', indent=True)
body('e. Crawling (reciprocal, on all fours): Not fully achieved. Child performs inconsistent, asymmetrical 4-point crawling; hip extension inadequate during crawl.', indent=True)
body('f. Kneel standing: Achieves with support. Pelvic control poor in kneeling; child collapses into hip flexion.', indent=True)
body('g. Half-kneeling and pull to stand: Achieves with moderate support. Uses furniture to pull up; hip extension inadequate in transition.', indent=True)
body('h. Standing: Achieves independently on flat surface. Equinus posture with narrow base; medial weight bearing on forefoot. Knee flexion in standing (crouched posture). No genu recurvatum. No surgical history.', indent=True)
body('i. Walking: Achieves independently on level surface indoors.', indent=True)
bullet('Pelvic–femoral dissociation: Reduced; pelvis and trunk tend to move together.')
bullet('Pelvic rotation: Reduced; step length limited.')
bullet('Trunk control during gait: Mildly impaired; forward trunk lean; mild lateral sway.')
bullet('Scissoring gait: Present – bilateral hip adductors pull thighs toward midline; ankles cross during swing phase.')
bullet('Equinus / toe-walking: Present – no heel strike; forefoot-only contact throughout stance phase.')
bullet('Knee: Persistent mild flexion during stance (crouched component).')
bullet('Swing phase: Hip hiking (left > right) to clear foot due to inadequate dorsiflexion.')
bullet('Stance phase: Short; narrow base of support; forefoot loading.')
bullet('Walking aids: None currently used.')
bullet('Arms: Held slightly flexed; reduced arm swing; occasionally used to maintain balance when faltering.')
bullet('Orthotic devices: Not currently using. AFO prescription planned post-assessment.')
# ══════════════════════════════════════════════════════
# 11. GENERAL EXAMINATION
# ══════════════════════════════════════════════════════
h1('GENERAL EXAMINATION')
h3('Vitals Parameters:')
bullet('Temperature: 98.4°F (Normal range 97.7–99.5°F) ✓')
bullet('Pulse: 102 beats/min (Normal for 4 years: ~100/min) ✓')
bullet('Respiratory rate: 24 breaths/min (Normal for 2–6 years: 22–30/min) ✓')
bullet('Blood pressure: 90/58 mmHg (Normal for age 4 years: approximately 92/56 mmHg; within range) ✓')
bullet('SpO2: 99% on room air ✓')
h3("Child's Weight:")
bullet('Weight: 12.5 kg (below 5th percentile for age; mild undernutrition). Normal expected weight at 4 years: ~16 kg.')
bullet('Weight-for-age Z-score: –2.1 SD (mild underweight).')
bullet('Note: Prematurity and increased muscle energy expenditure from spasticity contribute to lower weight.')
h3("Child's Height:")
bullet('Height: 92 cm (below 3rd percentile for age; normal expected ~102 cm for 4-year-old male).')
bullet('Measured with stadiometer (child > 2 years).')
bullet('Height-for-age Z-score: –2.5 SD (stunted – consistent with preterm history and nutritional deficit).')
h3('Head Circumference:')
bullet('Head circumference: 49 cm (10th–25th percentile; measured with non-stretchable tape at frontal and occipital prominence).')
bullet('Chest circumference: 52 cm (exceeds head circumference – age-appropriate, as chest > head after 1 year of age). ✓')
# ══════════════════════════════════════════════════════
# 12. REGIONAL EXAMINATION
# ══════════════════════════════════════════════════════
h1('REGIONAL EXAMINATION')
h3('Examination of Head, Face & Neck:')
bullet('Shape of head: Normocephalic. No craniosynostosis features.')
bullet('No brachycephaly, dolichocephaly, or plagiocephaly.')
bullet('No facial dysmorphic features (no Down syndrome features).')
bullet('No facial paralysis; facial movements symmetrical bilaterally.')
bullet('Anterior fontanel: Fully closed (normal; closes by 18 months). ✓')
bullet('Posterior fontanel: Fully closed (normal; closes by 2–3 months). ✓')
bullet('Neck: No torticollis. No lymphadenopathy. No thyroid enlargement. Trachea central.')
h3('Examination of Eyes:')
bullet('Pallor: Mild (consistent with mild anemia secondary to nutritional deficit).')
bullet('Sunset sign: Absent (no hydrocephalus).')
bullet('Pupils: Equal and reactive to light (PEARL); 3 mm bilaterally.')
bullet('No anisocoria, no ptosis, no nystagmus.')
bullet('Squint: Mild exotropia (right eye) – noted on assessment; referred to ophthalmology at 2 years; under follow-up.')
bullet('Visual tracking: Present; follows moving object in all directions. ✓')
h3('Examination of Ears:')
bullet('Normal set ears. No low-set ears.')
bullet('BERA test (done at 12 months): Normal bilaterally. Hearing intact. ✓')
bullet('No glue ear reported.')
h3('Examination of Nose:')
bullet('No nasal flaring at rest.')
bullet('Nasal bridge: Normal.')
h3('Examination of Tongue:')
bullet('Tongue: Normal size, pink, moist. No macroglossia.')
bullet('Teeth: Primary dentition present; mild dental caries noted on lower incisors; referred to pediatric dentist.')
bullet('No cleft lip or palate.')
h3('Examination of Neck:')
bullet('No raised JVP (jugular venous pressure normal).')
bullet('Carotid pulsations: Normal bilaterally.')
bullet('No neck swelling, no goiter.')
bullet('No torticollis.')
h3('Examination of Nails:')
bullet('No pallor, cyanosis, or clubbing of nails.')
bullet('Nails clean; no periungual infection.')
bullet('No koilonychia or leuconychia.')
h3('Examination of Chest:')
bullet('Chest circumference: 52 cm (above head circumference – appropriate). ✓')
bullet('Chest symmetry: Symmetrical expansion bilaterally. Equal chest movement.')
bullet('Respiratory rate: 24/min (normal). Regular rhythm.')
bullet('Trachea: Central position.')
bullet('Trail\'s sign: Absent.')
bullet('Auscultation: Clear air entry bilaterally; no wheeze, no crepitations.')
bullet('Heart sounds: S1 and S2 heard; no murmur.')
h3('Examination of Spine:')
bullet('Lumbar hyperlordosis: Present – anterior pelvic tilt secondary to hip flexor spasticity and weakness of trunk extensors.')
bullet('Scoliosis: No structural scoliosis. Mild functional lateral lean to the left (corrects on distraction).')
bullet('Kyphosis: Mild thoracic kyphosis in sitting (flexible, corrects on extension).')
bullet('No spina bifida dimples, sinuses, or tufts of hair in midline.')
bullet('No Pott\'s spine (tuberculosis of spine). No vertebral tenderness.')
bullet('Spinal mobility: Not formally tested at this age; no obvious limitation.')
h3('Examination of Joints:')
bullet('No evidence of septic arthritis or rheumatoid arthritis.')
bullet('No joint swelling, redness, or warmth in any joint.')
bullet('Hips, knees, ankles examined – see ROM assessment below.')
h3('Examination of Lower Limbs:')
bullet('CDH (Congenital Dislocation of Hip): Not present. Hip abduction symmetric; Ortolani/Barlow not applicable (age 4). Hip radiograph at 2.5 years showed coxa valga (femoral neck-shaft angle 145°) and mild acetabular dysplasia (acetabular index 24° bilaterally) – hip surveillance ongoing.')
bullet('CTEV (Clubfoot): Not present. Foot posture is equinus (calf spasticity) but foot is passively correctable to neutral; not a structural clubfoot.')
bullet('Coxa varum / valgum: Coxa valga bilaterally (as above – hip X-ray).')
bullet('Genu varum / valgum: Mild genu valgum bilaterally (consistent with internal rotation pattern).')
bullet('Limb length: Equal bilaterally (measured ASIS to medial malleolus: 43 cm bilaterally). No limb length discrepancy.')
bullet('Contractures: No fixed bony contractures. Dynamic soft-tissue tightness in gastrocnemius, hamstrings, hip adductors, and hip flexors (see ROM).')
h3('Examination of Upper Limbs:')
bullet('Shape of hands and fingers: Normal. No broad palmar creases (rules out Down syndrome).')
bullet('Fingers: Normal length and proportion.')
bullet('No clubbing, cyanosis, or swelling.')
bullet('Tone of upper limbs: Normal. No spasticity. No scissoring or fisting.')
bullet('Grip strength: Normal for age on informal testing (squeezes ball appropriately).')
# ══════════════════════════════════════════════════════
# 13. OROMOTOR FUNCTION
# ══════════════════════════════════════════════════════
h1('OROMOTOR FUNCTION')
bullet('Sucking: No sucking reflex (integrated, age-appropriate). Drinkable from cup independently. ✓')
bullet('Chewing: Adequate – chews soft solids. Some difficulty with hard textures (chapati, raw vegetables).')
bullet('Swallowing: No dysphagia; no coughing or choking on liquids or solids. ✓')
bullet('Biting: Present. Releases on command.')
bullet('Lip closure: Adequate; slight drooling with activity (increased tone/exertion).')
bullet('Speech: Intelligible 3-word sentences. Mild articulation errors on /r/ and /s/ sounds (age-appropriate for 4 years). Referred to speech therapist for formal assessment.')
# ══════════════════════════════════════════════════════
# 14. MOTOR EXAMINATION
# ══════════════════════════════════════════════════════
h1('MOTOR EXAMINATION')
h3('Muscle Tone:')
body('Tone assessment performed using Modified Ashworth Scale (MAS) and Tardieu Scale.', indent=True)
body('Scarf Sign (upper limb tone): Elbow crosses the midline when pulled across chest (normal for age > 6 months). Upper limb tone is NORMAL.', indent=True)
body('Ankle Dorsiflexion angle (infant tone test – for reference): Not applicable at age 4.', indent=True)
body('MODIFIED ASHWORTH SCALE (MAS) – Lower Limbs:', bold=True)
body('Scale: 0 = No increase in tone; 1 = Slight increase (catch); 1+ = Catch + minimal resistance; 2 = Marked increase but limb easily moved; 3 = Considerable increase; 4 = Rigid', indent=True)
table2 = doc.add_table(rows=1, cols=3)
table2.style = 'Table Grid'
hdr2 = table2.rows[0].cells
hdr2[0].text = 'Muscle Group'
hdr2[1].text = 'Right'
hdr2[2].text = 'Left'
for cell in hdr2:
for para in cell.paragraphs:
for run in para.runs:
run.bold = True
run.font.name = 'Times New Roman'
run.font.size = Pt(11)
tone_data = [
('Hip Flexors (Iliopsoas)', '1', '1'),
('Hip Adductors', '2', '2'),
('Hip Internal Rotators', '1+', '1+'),
('Knee Flexors (Hamstrings)', '2', '2'),
('Knee Extensors (Quadriceps)', '0', '0'),
('Ankle Plantarflexors – Gastrocnemius', '2', '2'),
('Ankle Plantarflexors – Soleus', '1+', '1+'),
('Ankle Dorsiflexors', '0', '0'),
('Upper Limbs (all groups)', '0', '0'),
]
for d in tone_data:
row = table2.add_row().cells
for i, val in enumerate(d):
row[i].text = val
for para in row[i].paragraphs:
for run in para.runs:
run.font.name = 'Times New Roman'
run.font.size = Pt(11)
doc.add_paragraph()
body('TARDIEU SCALE – Spasticity Assessment:', bold=True)
body('R1 = Angle of catch at FAST velocity (V3); R2 = Angle at SLOW velocity (V1); Spasticity Angle = R2 – R1 (larger angle = more spasticity)', indent=True)
table3 = doc.add_table(rows=1, cols=4)
table3.style = 'Table Grid'
hdr3 = table3.rows[0].cells
hdr3[0].text = 'Muscle'
hdr3[1].text = 'R1 (fast stretch)'
hdr3[2].text = 'R2 (slow stretch)'
hdr3[3].text = 'Spasticity Angle'
for cell in hdr3:
for para in cell.paragraphs:
for run in para.runs:
run.bold = True
run.font.name = 'Times New Roman'
run.font.size = Pt(11)
tardieu_data = [
('Gastrocnemius (R)', '–5° dorsiflexion', '+10° dorsiflexion', '15°'),
('Gastrocnemius (L)', '–5° dorsiflexion', '+10° dorsiflexion', '15°'),
('Hamstrings (R) – Popliteal angle', '45° (short of full extension)', '60°', '15°'),
('Hamstrings (L) – Popliteal angle', '50°', '65°', '15°'),
]
for d in tardieu_data:
row = table3.add_row().cells
for i, val in enumerate(d):
row[i].text = val
for para in row[i].paragraphs:
for run in para.runs:
run.font.name = 'Times New Roman'
run.font.size = Pt(11)
doc.add_paragraph()
body('PASSIVE RANGE OF MOTION (Goniometry, values in degrees):', bold=True)
table4 = doc.add_table(rows=1, cols=4)
table4.style = 'Table Grid'
hdr4 = table4.rows[0].cells
hdr4[0].text = 'Joint / Movement'
hdr4[1].text = 'Right'
hdr4[2].text = 'Left'
hdr4[3].text = 'Normal'
for cell in hdr4:
for para in cell.paragraphs:
for run in para.runs:
run.bold = True
run.font.name = 'Times New Roman'
run.font.size = Pt(11)
rom_data = [
('Hip Flexion', '120°', '120°', '120°'),
('Hip Extension (Thomas test – flexion contracture)', '–15°', '–12°', '0°'),
('Hip Abduction', '25°', '28°', '45°'),
('Hip Adduction', '35°', '35°', '30°'),
('Hip External Rotation', '30°', '30°', '45°'),
('Hip Internal Rotation', '60°', '58°', '45°'),
('Knee Extension (popliteal angle – 90° hip)', '45° short of full', '50° short of full', '0°'),
('Ankle Dorsiflexion (knee extended)', '–5° (equinus)', '–5° (equinus)', '+10°'),
('Ankle Dorsiflexion (knee flexed)', '+8°', '+8°', '+20°'),
('Ankle Plantarflexion', '40°', '40°', '45°'),
]
for d in rom_data:
row = table4.add_row().cells
for i, val in enumerate(d):
row[i].text = val
for para in row[i].paragraphs:
for run in para.runs:
run.font.name = 'Times New Roman'
run.font.size = Pt(11)
doc.add_paragraph()
body('MANUAL MUSCLE TESTING (MMT – MRC Scale 0–5):', bold=True)
table5 = doc.add_table(rows=1, cols=3)
table5.style = 'Table Grid'
hdr5 = table5.rows[0].cells
hdr5[0].text = 'Muscle Group'
hdr5[1].text = 'Right'
hdr5[2].text = 'Left'
for cell in hdr5:
for para in cell.paragraphs:
for run in para.runs:
run.bold = True
run.font.name = 'Times New Roman'
run.font.size = Pt(11)
mmt_data = [
('Hip Flexors', '3+', '3+'),
('Hip Extensors (Glut. Maximus)', '3', '3'),
('Hip Abductors (Glut. Medius)', '3', '3'),
('Hip Adductors (spastic)', '4', '4'),
('Knee Flexors / Hamstrings (spastic)', '4', '4'),
('Knee Extensors / Quadriceps', '3', '3'),
('Ankle Dorsiflexors (Tib. Anterior)', '2+', '2+'),
('Ankle Plantarflexors (spastic)', '4', '4'),
]
for d in mmt_data:
row = table5.add_row().cells
for i, val in enumerate(d):
row[i].text = val
for para in row[i].paragraphs:
for run in para.runs:
run.font.name = 'Times New Roman'
run.font.size = Pt(11)
doc.add_paragraph()
body('Note: Spastic muscles (hip adductors, hamstrings, gastrocnemius) score high on MMT due to overactivity, but are functionally impaired. Weak muscles (hip extensors/abductors, dorsiflexors) are the primary targets for strengthening.', bold=False)
# ══════════════════════════════════════════════════════
# 15. SENSORY SYSTEM
# ══════════════════════════════════════════════════════
h1('SENSORY SYSTEM')
h3('A. Visual System:')
bullet('Squint: Mild exotropia (right eye) – known; under ophthalmology follow-up.')
bullet('Myopia: Not diagnosed.')
bullet('Nystagmus: Absent.')
bullet('Gaze fixation: Present. Child fixes gaze on stationary objects. ✓')
bullet('Visual tracking: Present in all 4 directions. ✓ (Tested using non-audio-visual toy)')
bullet('Eye–head dissociation: Present (child can move eyes without turning head – age-appropriate). ✓')
h3('B. Auditory System:')
bullet('Sound localization: Present – turns head accurately toward auditory stimulus from all directions. ✓')
bullet('Response to auditory input: Normal sensitivity. No hypersensitivity or hyposensitivity.')
bullet('Level of distraction: Moderate – child is somewhat distractable in new environment (normal for age 4).')
bullet('BERA test response: Normal bilaterally (tested at 12 months). ✓')
h3('C. Tactile System:')
bullet('Tactile registration: Present. Child responds to light touch on all tested areas.')
bullet('Tactile localization: Present – can point to where touched on upper limbs; less accurate on lower limbs (may be due to motor limitation rather than sensory deficit).')
bullet('Response to tactile input: Normal. No tactile defensiveness or hyposensitivity noted.')
bullet('2-Point discrimination: Not formally tested (age limitation – requires patient cooperation and comprehension).')
bullet('Graphesthesia: Not formally tested at age 4.')
# ══════════════════════════════════════════════════════
# 16. SENSORY EXAMINATION
# ══════════════════════════════════════════════════════
h1('SENSORY EXAMINATION')
bullet('Superficial sensation (light touch, pin-prick): Grossly intact in all four limbs. Child withdraws and vocalizes in response to pin-prick stimulation bilaterally.')
bullet('Deep sensation (proprioception, vibration): Not formally tested (age limitation). No clinical evidence of proprioceptive loss (child responds to passive joint movements).')
bullet('Cortical sensation (2-point discrimination, stereognosis): Not testable reliably at age 4.')
bullet('Sensation in lower limbs: Intact to gross testing (response to touch and pin-prick in feet and legs – age-appropriate testing).')
# ══════════════════════════════════════════════════════
# 17. REFLEXES
# ══════════════════════════════════════════════════════
h1('REFLEXES')
body('Scoring Guideline (Primitive/Postural Reflexes): 0 = Absent (normal/integrated); 1 = Minimal evidence; 2 = Residual/moderate; 3 = Virtually retained; 4 = Fully retained (100%)', bold=True)
h3('Developmental Reflexes:')
bullet('Sucking reflex (normal till 3 months): Absent – integrated. ✓ Score: 0')
bullet('Rooting reflex (normal till 3–4 months): Absent – integrated. ✓ Score: 0')
bullet('Palmar grasp (normal till 3 months): Absent – integrated. ✓ Score: 0')
bullet('Plantar grasp (normal till 9–10 months): Absent – integrated. ✓ Score: 0')
bullet('Stepping reflex (normal till 2–3 months): Absent – integrated. ✓ Score: 0')
bullet('Placing reflex of legs (till 2–3 months): Absent – integrated. ✓ Score: 0')
h3('Primitive Reflexes / Spinal Level Reflexes:')
bullet('Flexor withdrawal: Present (normal spinal reflex; appropriate if not obligatory). ✓')
bullet('Crossed extension: Absent (integrated; was normal till 2 months). ✓ Score: 0')
bullet('Traction reflex: Not obligatory; appropriate. ✓')
bullet('Startle reflex: Present with loud sudden stimuli (normal). ✓')
h3('Tonic Reflexes / Brainstem Reflexes:')
bullet('Asymmetrical Tonic Neck Reflex (ATNR) – normal till 6 months: Absent. ✓ Score: 0')
bullet('Symmetrical Tonic Neck Reflex (STNR) – normal till 9–11 months: Absent. ✓ Score: 0')
bullet('Symmetrical Tonic Labyrinthine Reflex (STLR) – flexion in prone, extension in supine: Mild residual in supine (slight increase in extensor tone). Score: 1')
bullet('Positive Supporting Reflex – normal till 3–8 months: Mildly retained – toe-standing response exaggerated (contributes to equinus pattern). Score: 1')
bullet('Negative Supporting Reflex: Present. ✓')
h3('Deep Tendon Reflexes (DTRs):')
bullet('Knee jerk (Patellar – L3/L4): 3+ bilaterally (Hyperreflexia – upper motor neuron pattern)')
bullet('Ankle jerk (S1/S2): 3+ bilaterally (Hyperreflexia)')
bullet('Biceps jerk: 2+ bilaterally (Normal)')
bullet('Triceps jerk: 2+ bilaterally (Normal)')
bullet('Ankle clonus: Present – 3–4 beats bilaterally (Sustained < 5 beats; unsustained clonus)')
bullet('Babinski sign (plantar response): Extensor response (upgoing toe) bilaterally – consistent with upper motor neuron lesion')
h3('Automatic Movement Reactions:')
bullet('Moro reflex (normal till 4–5 months): Absent – integrated. ✓ Score: 0')
bullet('Landau reflex (appears 3 months, integrates 2–3 yrs): Mildly reduced (partial – child shows some trunk extension in ventral suspension but reduced). Score: 1')
bullet('Parachute reflex (appears ~9 months, persists life): Present bilaterally (forward and lateral parachute). ✓')
# ══════════════════════════════════════════════════════
# 18. GAIT ABNORMALITIES
# ══════════════════════════════════════════════════════
h1('GAIT ASSESSMENT')
h3('Gait Abnormalities Observed:')
bullet('Scissors gait (gait of spastic paraparesis): PRESENT – primary gait abnormality. Both hip adductors pull thighs together; ankles cross midline during swing phase. Characteristic of spastic diplegia. ✓')
bullet('Toe-walking gait: PRESENT – bilateral equinus due to gastrocnemius-soleus spasticity; no heel strike observed. ✓')
bullet('Crouch gait (mild component): PRESENT – persistent knee flexion of approximately 10–15° during stance phase. ✓')
bullet('Trendelenburg gait: Mild – lateral trunk lean to left during left single-limb support (weak left gluteus medius). ✓')
bullet('Steppage gait (foot drop): ABSENT – dorsiflexion weakness exists but is overcome by equinus; no true foot drop pattern.')
bullet('Gait of cerebellar ataxia: ABSENT – no wide-based, lurching, or uncoordinated gait.')
bullet('Circumduction gait (hemiplegic): ABSENT – bilateral involvement, not unilateral.')
h3('Detailed Observational Gait Analysis:')
table6 = doc.add_table(rows=1, cols=2)
table6.style = 'Table Grid'
hdr6 = table6.rows[0].cells
hdr6[0].text = 'Gait Parameter'
hdr6[1].text = 'Observation'
for cell in hdr6:
for para in cell.paragraphs:
for run in para.runs:
run.bold = True
run.font.name = 'Times New Roman'
run.font.size = Pt(11)
gait_obs = [
('Initial contact (foot strike)', 'Forefoot contact only; NO heel strike (equinus)'),
('Loading response', 'Forefoot loading; knee flexion maintained'),
('Midstance', 'Equinus; narrow base; knee flexion; hip internal rotation'),
('Terminal stance / Push-off', 'Reduced; forefoot pushes off but ankle plantarflexion power reduced'),
('Swing phase – hip', 'Hip hiking (left > right); hip flexion adequate but internal rotation marked'),
('Swing phase – knee', 'Reduced knee flexion in swing; risk of toe drag'),
('Swing phase – ankle', 'No active dorsiflexion; foot drops; hip hike compensates'),
('Base of support', 'Narrow; ankles cross midline (scissoring)'),
('Step length', 'Short bilaterally'),
('Walking speed (10MWT)', '0.42 m/s (normal for age: ~1.1 m/s)'),
('Cadence', 'Increased cadence with short steps (compensatory)'),
('Pelvic rotation', 'Reduced pelvic-trunk dissociation'),
('Trunk', 'Forward lean; mild left lateral sway'),
('Upper limbs', 'Reduced arm swing; slightly flexed; used for balance correction'),
]
for d in gait_obs:
row = table6.add_row().cells
row[0].text = d[0]
row[1].text = d[1]
for i in range(2):
for para in row[i].paragraphs:
for run in para.runs:
run.font.name = 'Times New Roman'
run.font.size = Pt(11)
doc.add_paragraph()
# ══════════════════════════════════════════════════════
# 19. INVOLUNTARY MOVEMENTS
# ══════════════════════════════════════════════════════
h1('INVOLUNTARY MOVEMENTS')
bullet('Myoclonus: Absent.')
bullet('Fine rapid tremor: Absent.')
bullet('Sydenham\'s Chorea: Absent. No irregular, non-rhythmic, involuntary movements.')
bullet('Athetosis: Absent. No slow, writhing involuntary movements.')
bullet('Dystonia: Absent. No sustained muscle contractions causing twisting postures.')
bullet('Tics: Absent.')
body('Conclusion: No involuntary movements detected. Motor presentation is consistent with pure spastic type, not dyskinetic or mixed CP.', bold=False)
# ══════════════════════════════════════════════════════
# 20. INVESTIGATIONS
# ══════════════════════════════════════════════════════
h1('INVESTIGATIONS')
bullet('MRI Brain (age 2 years, Sahyadri Hospital): Bilateral periventricular white matter loss with gliosis – consistent with sequelae of grade II periventricular leukomalacia (PVL). Cortex intact. No structural malformations. Basal ganglia: Normal (rules out dyskinetic CP). Cerebellum: Normal.')
bullet('Cranial Ultrasound (neonatal, 34 weeks corrected age): Bilateral PVL Grade II. No IVH (intraventricular hemorrhage).')
bullet('EEG: Done at 18 months (after 2 febrile episodes). Normal. No epileptiform activity. Not on anti-epileptic drugs.')
bullet('X-ray Pelvis (AP view, age 2.5 years): Coxa valga bilaterally (FN angle ~145°). Mild acetabular dysplasia (AI ~24° bilaterally). Migration percentage (Reimer\'s): 22% bilaterally (< 30% – under surveillance). No dislocation. Next radiograph due at age 5.')
bullet('Blood investigations (recent – age 3.5 years): Hb 10.2 g/dL (mild anemia – iron deficiency pattern; on iron supplementation). Serum ferritin: 9 ng/mL (low). Serum Calcium: 9.1 mg/dL (normal). Vitamin D3: 28 ng/mL (borderline; supplementation given). TFT: Normal. Metabolic screen: Normal.')
bullet('Urine routine: Normal. No ketones, glucose, or protein.')
bullet('BERA (Brainstem Evoked Response Audiometry, age 12 months): Normal bilaterally.')
bullet('Ophthalmology assessment (age 2 years): Mild right exotropia; no significant refractive error; fundus normal (no optic atrophy or papilledema).')
bullet('Doppler / Echocardiography: Not done (no clinical indication).')
bullet('Muscle biopsy: Not done (clinical diagnosis confirmed; no atypical features requiring biopsy).')
bullet('Metabolic / genetic panel: Thyroid screen normal; chromosomal karyotype not done (no dysmorphic features suggesting chromosomal disorder).')
# ══════════════════════════════════════════════════════
# 21. PROBLEM LIST
# ══════════════════════════════════════════════════════
h1('PROBLEM LIST')
body('(Based on ICF – International Classification of Functioning, Disability and Health; ICF-CY version)', bold=True)
h3('Body Structure & Function (Impairments):')
bullet('Delay in developmental milestones – gross motor (severe), fine motor (mild), language (mild)')
bullet('Abnormal muscle tone – hypertonia/spasticity in bilateral hip adductors (MAS 2), hamstrings (MAS 2), gastrocnemius (MAS 2)')
bullet('Unintegrated reflexes – mild residual STLR (supine), mildly retained positive supporting reflex')
bullet('Poor equilibrium / balance reactions – Pediatric Balance Scale 38/56 (fall risk)')
bullet('Restricted passive ROM – hip extension, abduction; knee extension; ankle dorsiflexion bilaterally')
bullet('Muscle weakness – hip extensors and abductors (MRC 3), dorsiflexors (MRC 2+), knee extensors (MRC 3)')
bullet('Poor selective motor control – especially ankle dorsiflexion; lower limb movements occur in mass synergy patterns')
bullet('Abnormal gait pattern – scissoring gait, toe-walking, mild crouched gait, reduced walking speed (0.42 m/s)')
bullet('Postural deformities – lumbar hyperlordosis, anterior pelvic tilt, bilateral hip internal rotation, W-sitting habit')
bullet('Hyperreflexia – 3+ DTRs bilaterally in lower limbs; Babinski extensor bilaterally')
bullet('Coxa valga bilaterally (from hip radiograph) – migration % 22% (surveillance required)')
bullet('Mild sensory changes – reduced proprioceptive feedback in lower limbs (clinical observation)')
bullet('No visual defect per se – mild exotropia (under ophthalmology follow-up); vision functional')
bullet('No hearing defect – BERA normal bilaterally')
bullet('Mild nutritional deficit – Hb 10.2 g/dL, Vit D3 borderline; weight below 5th percentile')
bullet('No involuntary movements; no CNS dysfunction beyond UMN pattern of spastic diplegia')
h3('Activity Limitations:')
bullet('Impaired independent walking – limited to level surfaces indoors; unable to walk on uneven terrain, slopes, or sand independently')
bullet('Inability to run, jump, or hop')
bullet('Frequent falls – approximately 3–4 falls per week')
bullet('Unable to climb stairs without handrail and adult assistance')
bullet('Reduced walking speed and endurance (10MWT: 0.42 m/s)')
bullet('Difficulty in floor-to-stand transition (requires push from furniture)')
bullet('Limited self-care in lower limb dressing (cannot put on trousers/shoes independently)')
bullet('Abnormal sitting habits (W-sitting; correction required)')
h3('Participation Restrictions:')
bullet('Not enrolled in school; limited peer interaction and social participation')
bullet('Excluded from community outdoor play activities (playground, sports)')
bullet('Dependent on caregiver for ambulation in community settings')
h3('Contextual Factors:')
body('Facilitators: Cooperative, cheerful child; highly motivated mother; stable family environment; ground-floor home (no stairs); CGHS medical coverage; early age (neuroplasticity window open).', indent=True)
body('Barriers: Irregular therapy history; not yet in school; mild undernutrition affecting exercise tolerance; prior therapy non-compliance.', indent=True)
# ══════════════════════════════════════════════════════
# FOOTER NOTE
# ══════════════════════════════════════════════════════
doc.add_paragraph()
divider()
body('This is a dummy case created for academic and educational purposes. All patient details, names, and values are entirely fictional and constructed to reflect a clinically realistic presentation of Spastic Diplegic Cerebral Palsy (GMFCS Level II) in a 4-year-old male child born preterm. Values are consistent with standard pediatric physiotherapy assessment references including Campbell\'s Operative Orthopaedics (15th Ed, 2026), Miller\'s Review of Orthopaedics (9th Ed), and peer-reviewed literature.', bold=False)
body('Assessed by: _______________________________ | Date: 23/07/2026 | Signature: _____________', bold=False)
doc.save('/tmp/workspace/cp-case/Aryan_Sharma_CP_Assessment.docx')
print("Document saved successfully.")