A 4-year-old male child was brought to the pediatric physiotherapy department with complaints of difficulty walking, frequent falls, toe walking, and stiffness in both lower limbs since early childhood. He was born prematurely at 32 weeks with a 25-day NICU stay. His developmental milestones were delayed, and he started walking with support at around 3 years of age. On examination, increased muscle tone, hamstring and calf tightness, scissoring gait, and impaired balance were observed. The child was diagnosed with Spastic Diplegic Cerebral Palsy (GMFCS Level II) and referred for physiotherapy rehabilitation.
"cerebral palsy" AND "spastic diplegia" AND physiotherapy
"cerebral palsy" AND rehabilitation AND GMFCS
"spastic diplegia" AND "gait training" AND children
"cerebral palsy" AND "treadmill training" AND children
PMID: 41077119
| Domain | Tool | Frequency |
|---|---|---|
| Gross motor function | GMFM-66 | Every 6 months |
| Spasticity | MAS / Tardieu Scale | Each session |
| Passive ROM | Goniometry | Monthly |
| Walking speed | 10MWT / 6MWT | Every 6 months |
| Balance | Pediatric Balance Scale | Every 3-6 months |
| Functional skills | PEDI | Annually |
| Goal attainment | Goal Attainment Scaling (GAS) | Every 3 months |
| Priority | Intervention | Rationale |
|---|---|---|
| 1 | Daily passive stretching (hamstrings, calf, hip adductors) | Prevent fixed contracture |
| 2 | AFO prescription (hinged) | Improve gait mechanics, balance, stride |
| 3 | Gait training (treadmill + overground) | Improve walking velocity and pattern |
| 4 | NDT/Bobath handling + play-based therapy | Normalize movement in developmental context |
| 5 | Balance and proprioceptive training | Reduce falls |
| 6 | Strengthening (antagonist muscle groups) | Address coexisting weakness |
| 7 | Family education and HEP | Carry-over of gains between sessions |
| 8 | Coordinate BTX-A injection window with PT | Maximize tone reduction benefit |
| 9 | Hip surveillance radiographs | 92% of spastic CP have some hip deformity |
| 10 | GMFM-66 monitoring every 6 months | Track progress, adjust program |
Give dummy case for this patient according to standard references as I'm physiotherapy student
| Field | Details |
|---|---|
| Patient Name | Master Aryan Sharma (dummy name) |
| Age | 4 years 2 months |
| Sex | Male |
| Date of Birth | May 10, 2022 |
| Date of Assessment | July 23, 2026 |
| Referred By | Dr. Priya Mehta, Pediatric Neurologist |
| Diagnosis | Spastic Diplegic Cerebral Palsy |
| GMFCS Level | II |
| Address | 14, Rose Garden Colony, Pune, Maharashtra |
| Informant | Mother (Mrs. Sunita Sharma) - reliable historian |
| Physiotherapist | [Student/Clinician Name] |
| Registration No. | PT/2026/0423 |
| History | Details |
|---|---|
| Antenatal | PPROM at 30 weeks; no TORCH infections documented; GDM absent; IgG rubella reactive (immune) |
| Birth | Preterm 32 weeks, LSCS, birth weight 1.4 kg |
| Neonatal | NICU 25 days; nasal CPAP 5 days; PVL on cranial USG |
| Investigations | MRI brain (age 2 yrs): bilateral periventricular white matter loss |
| Seizures | None |
| Hospitalizations | NICU admission only |
| Previous therapy | Commenced early intervention at 12 months in another centre; irregular attendance |
| Milestone | Age Achieved | Normal Age |
|---|---|---|
| Smile | 3 months | 6-8 weeks |
| Head control | 7 months | 3-4 months |
| Roll over | 10 months | 4-5 months |
| Sit with support | 14 months | 6-7 months |
| Sit independently | 20 months | 8-9 months |
| Stand with support | 28 months | 9-10 months |
| Walk with support | 36 months | 12-14 months |
| Walk independently | 42 months (present) | 12-14 months |
| Speech (words) | 18 months | 12 months |
| Two-word sentences | 30 months | 18-24 months |
| Drug | Dose | Indication |
|---|---|---|
| Syrup Multivitamin | 5 mL OD | General nutrition support |
| Tab. Vitamin D3 | 60,000 IU once monthly | Prophylactic (preterm history) |
| No antispasmodics currently | - | - |
| Parameter | Finding |
|---|---|
| Built | Small for age; lean |
| Height | 92 cm (< 3rd percentile for age) |
| Weight | 12.5 kg (< 5th percentile for age) |
| Head circumference | 49 cm (10th-25th percentile) |
| Nutrition status | Mild undernutrition |
| Alertness / affect | Alert, cheerful, cooperative |
| Speech | Intelligible; 3-word sentences present |
| Vision | Normal (ophthalmology clearance given) |
| Hearing | Normal (BERA done at 1 year - normal) |
| Muscle Group | Right | Left |
|---|---|---|
| Hip flexors | 1 | 1 |
| Hip adductors | 2 | 2 |
| Hip internal rotators | 1+ | 1+ |
| Knee flexors (hamstrings) | 2 | 2 |
| Knee extensors | 0 | 0 |
| Ankle plantarflexors (gastrocnemius) | 2 | 2 |
| Ankle plantarflexors (soleus) | 1+ | 1+ |
| Muscle | R1 (fast) | R2 (slow) | Spasticity Angle |
|---|---|---|---|
| Gastrocnemius (R) | -5° | +10° | 15° |
| Gastrocnemius (L) | -5° | +10° | 15° |
| Hamstrings (R) | 45° popliteal angle | 60° | 15° |
| Hamstrings (L) | 50° popliteal angle | 65° | 15° |
| Reflex | Finding |
|---|---|
| Knee jerk (patellar) | 3+ bilateral (hyperreflexia) |
| Ankle jerk | 3+ bilateral |
| Babinski | Extensor (upgoing) bilateral |
| Ankle clonus | Present (3-4 beats) bilateral |
| Primitive reflexes | ATNR: absent; STNR: absent (age-appropriate) |
| Parachute reaction | Present bilaterally |
| Joint / Movement | Right | Left | Normal |
|---|---|---|---|
| Hip flexion | 120° | 120° | 120° |
| Hip extension (Thomas test) | -15° (flexion contracture) | -12° | 0° (neutral) |
| Hip abduction | 25° | 28° | 45° |
| Hip external rotation | 30° | 30° | 45° |
| Hip internal rotation | 60° | 58° | 45° |
| Knee extension (popliteal angle at 90° hip) | 45° short of full extension | 50° short | 0° |
| Ankle dorsiflexion (knee extended) | -5° (equinus) | -5° | +10° |
| Ankle dorsiflexion (knee flexed) | +8° | +8° | +20° |
| Muscle Group | Right | Left |
|---|---|---|
| Hip flexors | 3+ | 3+ |
| Hip extensors | 3 | 3 |
| Hip abductors | 3 | 3 |
| Hip adductors | 4 (spastic) | 4 (spastic) |
| Knee flexors | 4 (spastic) | 4 (spastic) |
| Knee extensors | 3 | 3 |
| Ankle dorsiflexors | 2+ | 2+ |
| Ankle plantarflexors | 4 (spastic) | 4 (spastic) |
| Gait Parameter | Observation |
|---|---|
| Gait pattern | Scissoring gait with bilateral equinus |
| Base of support | Narrow; ankles crossing midline |
| Heel strike | Absent; walks on forefoot (toe walking) |
| Hip | Bilateral internal rotation and adduction; scissoring |
| Knee | Persistent flexion throughout cycle (crouched component) |
| Pelvis | Anterior tilt; excessive hip hike on left during swing |
| Trunk | Forward lean; mild lateral sway |
| Arm swing | Reduced but present |
| Speed | Slow; short stride length |
| Stability | Frequently trips; corrects with grab for support |
| Scale | Score | Interpretation |
|---|---|---|
| GMFM-66 | 62 / 100 | Moderate functional ability; below expected for GMFCS II (expected 67-75) |
| GMFM-88 Dimensions | D (Standing): 55%; E (Walking): 48% | Both significantly below age norms |
| Pediatric Balance Scale (PBS) | 38 / 56 | Moderate balance impairment (cut-off for fall risk < 46) |
| Timed Up and Go (TUG) | 18.4 seconds | Significantly delayed (normal for age ~7-8 sec) |
| 10-Metre Walk Test (10MWT) | 0.42 m/s (comfortable) | Low walking speed |
| PEDI (Self-care domain) | 38 / 73 | Moderate limitation in self-care |
| Muscle | Technique | Dosage |
|---|---|---|
| Gastrocnemius (bilateral) | Knee extended, sustained dorsiflexion stretch | 30 sec hold × 5 reps, 2 sets |
| Soleus (bilateral) | Knee flexed, dorsiflexion | 30 sec × 5 reps |
| Hamstrings (bilateral) | Supine, SLR stretch at point of resistance | 30 sec × 5 reps |
| Hip adductors (bilateral) | Frog-leg position, sustained abduction | 30 sec × 5 reps |
| Hip flexors (bilateral) | Modified Thomas stretch in prone | 30 sec × 5 reps |
| Exercise | Muscle Target | Dosage |
|---|---|---|
| Sit-to-stand from low bench | Hip extensors, knee extensors | 3 × 10 reps |
| Side-lying hip abduction with ankle weight (0.5 kg) | Hip abductors (gluteus medius) | 3 × 10 reps |
| Standing hip extension against theraband | Hip extensors (gluteus maximus) | 3 × 10 reps |
| Heel-raise exercise (bilateral, assisted) | Gastrocnemius eccentric phase awareness | 2 × 10 |
| Dorsiflexion with theraband in sitting | Tibialis anterior | 3 × 10 reps |
| Team Member | Role |
|---|---|
| Pediatric Neurologist | Monitors neurological status; coordinates BTX-A referral if plateau in PT |
| Orthopedic Surgeon | Annual hip surveillance radiograph (Reimer's migration %) |
| Orthotist | AFO fabrication and 6-monthly review/replacement for growth |
| Developmental Pediatrician | Cognitive, language, school-readiness support |
| Occupational Therapist | Fine motor, self-care, school activities |
| Speech Therapist | Language stimulation, school communication strategies |
| Dietitian | Address undernutrition; optimize caloric intake for activity |
| Social Worker | School placement, financial schemes (ADIP scheme, disability certificate) |
| Outcome Measure | Baseline (July 2026) | Target (3 months) | Target (12 months) |
|---|---|---|---|
| GMFM-66 | 62 | 65 | 70 |
| GMFM-88 Dimension E (Walking) | 48% | 56% | 68% |
| PBS (Pediatric Balance Scale) | 38/56 | 43/56 | 48/56 |
| TUG (Timed Up and Go) | 18.4 sec | 14 sec | 10 sec |
| 10MWT (comfortable speed) | 0.42 m/s | 0.55 m/s | 0.75 m/s |
| Passive ankle dorsiflexion (R/L) | -5° / -5° | 0° / 0° | +8° / +8° |
| Popliteal angle (R/L) | 45° / 50° | 38° / 42° | 30° / 32° |
| Hip abduction ROM | 25° / 28° | 30° / 32° | 38° / 40° |
| MAS Gastrocnemius (R/L) | 2 / 2 | 1+ / 1+ | 1 / 1 |
| MAS Hamstrings (R/L) | 2 / 2 | 1+ / 1+ | 1 / 1 |
| Falls per week (parent report) | 3-4 | 2 | < 1 |
| GAS (Goal Attainment Scale) | Baseline set | T+1 target | T+2 target |
| Precaution | Details |
|---|---|
| Hip surveillance | Annual radiograph; if migration % > 30%, orthopedic referral urgent |
| Skin integrity | Check under AFO daily; educate parents on pressure areas |
| W-sitting | Strongly discourage - increases hip internal rotation deformity risk |
| Overstretching | Avoid aggressive forced stretching; may cause microtrauma or fractures (osteopenia risk in low mobility/nutrition) |
| Fatigue | CP children fatigue easily; monitor heart rate and activity tolerance |
| Seizures | No active seizures; if onset, stop exercise and refer immediately |
| Nutrition | Undernutrition limits exercise tolerance and bone health; coordinate with dietitian |
Give according to this assessment format
python3 -c " from docx import Document doc = Document('/tmp/workspace/attachments/cc8c5c7b-7462-46df-90ca-6f4433da0d50/PEDIATRIC_ASSESSMENT[1] - Copy.docx') for p in doc.paragraphs: style = p.style.name if p.style else 'None' if p.text.strip(): print(f'[{style}] {p.text}') "
python3 -c " from docx import Document doc = Document('/tmp/workspace/attachments/cc8c5c7b-7462-46df-90ca-6f4433da0d50/PEDIATRIC_ASSESSMENT[1] - Copy.docx') for i, table in enumerate(doc.tables): print(f'--- TABLE {i+1} ---') for row in table.rows: row_text = [cell.text.strip() for cell in row.cells] print(' | '.join(row_text)) print() "
mkdir -p /tmp/workspace/cp-case && ls /tmp/workspace/cp-case/
~/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.")
cd /tmp/workspace/cp-case && python3 generate_case.py
python3 -c " from docx import Document doc = Document('/tmp/workspace/cp-case/Aryan_Sharma_CP_Assessment.docx') count = 0 for p in doc.paragraphs: if p.text.strip(): count += 1 print(f'Total non-empty paragraphs: {count}') print(f'Total tables: {len(doc.tables)}') # print first 20 headings for p in doc.paragraphs: if p.style.name.startswith('Heading') and p.text.strip(): print(f' [{p.style.name}] {p.text}') "
Aryan Sharma CP Assessment
Word Document · DOCX
| Section | What's filled |
|---|---|
| Demographic Data | Full patient details, referral, GMFCS level |
| Chief Complaints | 6 complaints in order of severity, as told by mother |
| History of Present Illness | Antenatal (G1P1, PPROM, GDM, TORCH, drugs, EDD), Perinatal (LSCS, 32wk, birth weight, APGAR 5/10), Postnatal (NICU 25 days, CPAP, PVL, jaundice, hypoglycemia) |
| Past Medical History | Jaundice, MRI brain findings, prior PT |
| Family History | No genetic/infective conditions; non-consanguineous |
| Vaccine History | BCG, OPV, DPT, Hep B, Measles – all complete per IAP schedule |
| Socio-Economic History | Family size, income, housing (ground floor), CGHS coverage |
| Developmental Milestones | Table with 15 milestones – normal age vs. Aryan's age (corrected) |
| Mental State Examination | Awareness, orientation, commands, attention, memory |
| On Observation | Tone at rest/activity/exertion, posture (ascending order feet→head), involuntary movements, facial symmetry, primitive reflexes (scored 0–4), tightness, all motor milestones a–i with gait detail |
| General Examination | Vitals, weight, height, head & chest circumference with normal ranges |
| Regional Examination | Head/face/neck, eyes, ears, nose, tongue, chest, spine, joints, lower & upper limbs |
| Oromotor Function | Sucking, chewing, swallowing, biting, drooling |
| Motor Examination | MAS table, Tardieu Scale table, PROM goniometry table, MMT table |
| Sensory System | Visual, auditory, tactile (all 3 subsystems) |
| Sensory Examination | Superficial, deep, cortical sensation |
| Reflexes | Developmental, spinal-level, brainstem tonic, DTRs (with 3+ findings), automatic reactions – all scored |
| Gait Abnormalities | Scissoring ✓, toe-walking ✓, crouch ✓, Trendelenburg ✓ – plus detailed phase-by-phase gait table |
| Involuntary Movements | All 6 types assessed – all absent (pure spastic type) |
| Investigations | MRI, cranial USG, X-ray pelvis, EEG, BERA, blood panel, ophthalmology |
| Problem List | Structured under ICF – Impairments / Activity Limitations / Participation Restrictions / Contextual factors |
See this case and any changes??
python3 -c " from docx import Document doc = Document('/tmp/workspace/attachments/cc8c5c7b-7462-46df-90ca-6f4433da0d50/Neuro_Case_Filled-1.docx') for p in doc.paragraphs: style = p.style.name if p.style else 'None' if p.text.strip(): print(f'[{style}] {p.text}') print('---TABLES---') for i, table in enumerate(doc.tables): print(f'TABLE {i+1}:') for row in table.rows: print(' | '.join([c.text.strip() for c in row.cells])) "
| # | Problem |
|---|---|
| 1 | Spasticity – left UL (flexor pattern, MAS 2) and left LL (plantarflexors MAS 2) |
| 2 | Weakness – left-sided musculature (more distal; wrist extensors 2/5, dorsiflexors 2/5) |
| 3 | Impaired voluntary motor control – Brunnstrom Stage 3 (UL), Stage 3–4 (LL) |
| 4 | Hemiplegic spastic gait – absent heel strike, circumduction, reduced speed (0.6 m/s) |
| 5 | Genu recurvatum tendency – left knee (risk of ligamentous injury) |
| 6 | Reduced dynamic standing balance – fall risk (Berg ~38/56) |
| 7 | Hemisensory impairment – left UL and LL (superficial, deep, cortical Grade 2) |
| 8 | Disuse atrophy – left UL and LL (1–1.5 cm girth reduction) |
| 9 | Mild spastic dysarthria – communication partially affected |
| 10 | Mild glenohumeral subluxation-related shoulder discomfort (VAS 1–2/10) |
| 11 | Soft-tissue tightness – pectoralis, biceps, wrist flexors, gastrocnemius bilaterally |
| 12 | Reduced participation in community ambulation, occupational and social activities |
"Reduce spasticity through positioning and sustained stretching"
"Reduce MAS of left ankle plantarflexors from Grade 2 to Grade 1+ within 4 weeks of daily stretching and positioning."
| Priority | Change Needed |
|---|---|
| 🔴 Critical | Fix age inconsistency (37 at onset + 2.5 years = current age 39–40) |
| 🔴 Critical | Add formal Problem List section (currently merged into diagnosis) |
| 🟠 Important | Add Berg Balance Scale score (replace vague Fair/Poor grading) |
| 🟠 Important | Add ankle dorsiflexion with knee flexed (gastrocnemius vs. soleus) |
| 🟠 Important | Add Iliopsoas to tightness table |
| 🟡 Suggested | Fill in missing demographic fields (occupation, address) |
| 🟡 Suggested | Rewrite goals in SMART format with timeframes |
| 🟡 Suggested | Add genu recurvatum comment to MAS section |
| 🟡 Suggested | Clarify disdiadochokinesia terminology |
| 🟢 Minor | Add cadence clarification note |
| 🟢 Minor | Add tightness grading key before the tightness table |
Would you like me to generate a corrected version of this document with all the changes applied?
~/cp-case/generate_corrected_neuro.py
from docx import Document
from docx.shared import Pt, RGBColor, Inches, Cm
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
doc = Document()
# ── Page margins ──
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 ──
normal = doc.styles['Normal']
normal.font.name = 'Times New Roman'
normal.font.size = Pt(12)
# ── Color palette ──
COL_H1 = RGBColor(0x1F, 0x49, 0x7D)
COL_H2 = RGBColor(0x2E, 0x74, 0xB5)
COL_H3 = RGBColor(0x1F, 0x49, 0x7D)
COL_CORR = RGBColor(0xC0, 0x00, 0x00) # red for correction flags
def set_cell_bg(cell, hex_color):
tc = cell._tc
tcPr = tc.get_or_add_tcPr()
shd = OxmlElement('w:shd')
shd.set(qn('w:val'), 'clear')
shd.set(qn('w:color'), 'auto')
shd.set(qn('w:fill'), hex_color)
tcPr.append(shd)
def h1(text):
p = doc.add_heading(text, level=1)
for run in p.runs:
run.font.size = Pt(14)
run.font.bold = True
run.font.color.rgb = COL_H1
return p
def h2(text):
p = doc.add_heading(text, level=2)
for run in p.runs:
run.font.size = Pt(13)
run.font.bold = True
run.font.color.rgb = COL_H2
return p
def h3(text):
p = doc.add_heading(text, level=3)
for run in p.runs:
run.font.size = Pt(12)
run.font.bold = True
run.font.color.rgb = COL_H3
return p
def body(text, bold=False, italic=False, indent=False, color=None):
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
run.italic = italic
if color:
run.font.color.rgb = color
return p
def kv(key, value, corrected=False):
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)
if corrected:
r2.font.color.rgb = COL_CORR
return p
def bullet(text, corrected=False):
p = doc.add_paragraph(style='List Bullet')
run = p.add_run(text)
run.font.name = 'Times New Roman'
run.font.size = Pt(12)
if corrected:
run.font.color.rgb = COL_CORR
return p
def correction_note(text):
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('⚑ CORRECTION: ' + text)
run.font.name = 'Times New Roman'
run.font.size = Pt(10)
run.italic = True
run.font.color.rgb = COL_CORR
return p
def make_table(headers, rows, col_widths=None, header_bg='1F497D'):
t = doc.add_table(rows=1, cols=len(headers))
t.style = 'Table Grid'
hdr_cells = t.rows[0].cells
for i, h in enumerate(headers):
hdr_cells[i].text = h
set_cell_bg(hdr_cells[i], header_bg)
for para in hdr_cells[i].paragraphs:
for run in para.runs:
run.bold = True
run.font.name = 'Times New Roman'
run.font.size = Pt(11)
run.font.color.rgb = RGBColor(0xFF,0xFF,0xFF)
for row_data in rows:
row = t.add_row().cells
for i, val in enumerate(row_data):
corrected = isinstance(val, tuple)
text = val[0] if corrected else val
row[i].text = text
for para in row[i].paragraphs:
for run in para.runs:
run.font.name = 'Times New Roman'
run.font.size = Pt(11)
if corrected:
run.font.color.rgb = COL_CORR
doc.add_paragraph()
return t
# ══════════════════════════════════════════════════════════════════
# TITLE PAGE
# ══════════════════════════════════════════════════════════════════
title_p = doc.add_paragraph()
title_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = title_p.add_run('NEURO PHYSIOTHERAPY ASSESSMENT')
r.bold = True; r.font.size = Pt(16); r.font.name = 'Times New Roman'
r.font.color.rgb = COL_H1
sub_p = doc.add_paragraph()
sub_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r2 = sub_p.add_run('Left Hemiplegia — Chronic CVA (Corrected Version)')
r2.italic = True; r2.font.size = Pt(12); r2.font.name = 'Times New Roman'
r2.font.color.rgb = COL_H2
legend_p = doc.add_paragraph()
legend_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r3 = legend_p.add_run('Text in red = corrected/added content | Original errors noted with ⚑')
r3.font.size = Pt(10); r3.italic = True; r3.font.name = 'Times New Roman'
r3.font.color.rgb = COL_CORR
doc.add_paragraph()
# ══════════════════════════════════════════════════════════════════
# DEMOGRAPHIC DATA
# ══════════════════════════════════════════════════════════════════
h1('DEMOGRAPHIC DATA')
kv('Name', 'Mr. Kishor Lakhmasu')
kv('Case No.', '02')
kv('Age / Gender', '39 years / Male', corrected=True)
correction_note('Original said 37 yrs. Stroke occurred 2.5 years ago at age 37; current age = 39 years.')
kv('Date', '31/07/2026 (OPD — Chronic Follow-up)')
kv('Occupation', 'Factory worker / daily wage labourer (prior to stroke onset; currently unemployed due to disability)', corrected=True)
correction_note('Field was blank. Filled with clinically consistent dummy value.')
kv('Contact Number', '98XXXXXXXX', corrected=True)
kv('Address', 'Flat 3, Ramtekdi Housing Society, Hadapsar, Pune – 411013, Maharashtra', corrected=True)
correction_note('Contact and address were left as "—". Filled with dummy values for complete case record.')
kv('Hand Dominancy', 'Right hand dominant (pre-morbid)')
kv('Diagnosis', 'Left Hemiplegia secondary to Right-sided Cerebrovascular Accident (CVA) — Chronic Stage, approx. 2.5 years post-onset')
kv('Session', 'OPD')
# ══════════════════════════════════════════════════════════════════
# CHIEF COMPLAINTS
# ══════════════════════════════════════════════════════════════════
h1('CHIEF COMPLAINTS')
body('Patient c/o weakness of the left upper and lower limb, difficulty in maintaining standing/dynamic balance, and slurring of speech since the episode of stroke 2.5 years back.')
# ══════════════════════════════════════════════════════════════════
# HISTORY
# ══════════════════════════════════════════════════════════════════
h1('HISTORY')
h2('1. History of Present Illness')
body('The patient was apparently healthy till the age of 37 years when he developed sudden onset weakness of the left side of the body, following an acute rise in blood pressure precipitated by severe emotional stress (sudden demise of his father). He was rushed to the hospital where he was diagnosed as a case of CVA with left hemiparesis. He received medical management (anti-hypertensives) and was started on physiotherapy soon after, and has continued OPD physiotherapy sessions for the past 2.5 years for residual weakness, gait and balance training, and speech difficulty. He is currently 39 years of age.')
correction_note('Age at stroke onset = 37 years. Current age corrected to 39 years throughout the document.')
h2('2. Past Medical History')
body('Known case of Hypertension (HTN) since the past 4 years; currently on regular anti-hypertensive medication; blood pressure presently controlled (130/84 mmHg).')
h2('3. Past Surgical History')
body('Nil significant — no history of any surgery.')
h2('4. Family History')
body('Non-contributory; no family history of stroke, hypertension, or other neurological illness reported.')
h2('5. Personal History')
body('Diet: Mixed. Appetite: Normal. Sleep: Adequate. Bowel/Bladder: Normal continence. No addictions reported.')
h2('6. Economical Status')
body('Average / lower-middle socioeconomic status; treatment ongoing under government health scheme without financial constraint reported.')
h2('7. Educational Status')
body('Educated up to secondary level (10th standard).')
h2('8. Environmental Status (Working/Living Environment)')
body('Lives with family in a ground-floor accessible home; ambulates within home independently; requires supervision for outdoor/community mobility.')
# ══════════════════════════════════════════════════════════════════
# ON OBSERVATION
# ══════════════════════════════════════════════════════════════════
h1('ON OBSERVATION')
body('1) Body Built: Endomorphic', bold=True)
body('2) Posture:', bold=True)
body('Supine: Left upper limb resting in flexor synergy pattern (shoulder adducted and internally rotated, elbow flexed, forearm pronated, wrist and fingers flexed) even at rest. Left lower limb in extension with slight external rotation (extensor tone pattern).', indent=True)
correction_note('Added: Explicit mention of left UL flexor synergy pattern in supine — this was described under standing but omitted from the supine description, which is clinically important.')
body('Sitting: Mild trunk lean towards the right (unaffected) side; left shoulder girdle depressed; decreased weight bearing through left buttock/thigh.', indent=True)
body('Standing: Described in detail below (Anterior / Lateral / Posterior views).', indent=True)
body('Standing Posture — Detailed Observation:', bold=True)
body('(a) Anterior View:', bold=True, indent=True)
for line in [
'Head & Neck: Slightly tilted to the right.',
'Left Shoulder: Depressed, adducted, internally rotated.',
'Left Elbow: Flexed (flexor synergy).',
'Left Forearm: Pronated.',
'Left Wrist: Flexed.',
'Left Fingers: Flexed.',
'Trunk: Mild shift towards the right side.',
'Pelvis: Slight asymmetry (elevated on left / pelvic obliquity).',
'Left Hip: Adducted and internally rotated.',
'Left Knee: Extended with tendency towards genu recurvatum during stance (spastic quadriceps + weak knee flexors).',
'Left Ankle: Plantarflexed and inverted (equinovarus posture).',
'Weight distribution: Increased weight-bearing / loading on the right (unaffected) lower limb.',
]:
bullet(line, corrected=('genu recurvatum' in line))
body('(b) Lateral View:', bold=True, indent=True)
for line in [
'Head: Slight forward head posture.',
'Trunk: Mild forward trunk lean.',
'Left Upper Limb: Positioned in flexor synergy pattern.',
'Pelvis: Neutral to slight posterior tilt.',
'Left Knee: Hyperextension (genu recurvatum) during stance — monitor closely; risk of posterior capsule/ligament injury with prolonged standing.',
'Left Ankle: Plantarflexed.',
]:
bullet(line, corrected=('genu recurvatum' in line and 'monitor' in line))
body('(c) Posterior View:', bold=True, indent=True)
for line in [
'Head: Midline.',
'Left Shoulder: Slightly depressed.',
'Left Scapula: Retracted and depressed.',
'Trunk: Mild shift to the right.',
'Pelvis: Mild pelvic obliquity.',
'Weight-bearing: Reduced loading on the left lower limb.',
]:
bullet(line)
body('3) Facial Asymmetry: Present — Right: Upper half normal / Lower half normal. Left: Upper half normal (forehead sparing) / Lower half weak — consistent with an Upper Motor Neuron (UMN) type left facial weakness (CN VII, supranuclear lesion).', bold=False)
body('4) Swelling: Absent.')
body('5) Scar: Absent.')
body('6) Wasting: Present — mild disuse atrophy noted over left forearm and hand intrinsic musculature; difference of approximately 1–1.5 cm compared to the right side (confirmed on girth measurement).')
body('7) Gait: Hemiplegic (spastic) gait with reduced left arm swing, circumduction of the left lower limb during swing phase, absent heel-strike on left, and decreased stance phase on the left side.')
body('8) External Aid: None used at present; ambulates independently indoors; supervision required for outdoor mobility.')
# ══════════════════════════════════════════════════════════════════
# ON PALPATION
# ══════════════════════════════════════════════════════════════════
h1('ON PALPATION')
body('1) Temperature: Generalized — Normal. Localized — No temperature difference noted between limbs.')
body('2) Tone: Right Upper Limb / Right Lower Limb — Normal. Left Upper Limb / Left Lower Limb — Hypertonic (spastic).')
body('3) Spasm: Absent.')
body('4) Oedema: Absent.')
body('5) Scar: Not applicable.')
body('6) Tenderness: Absent (mild discomfort on left shoulder overhead movement — see Pain Assessment).')
h3('Tightness:')
body('Soft tissue tightness assessed clinically by passive range of motion and muscle length testing. Graded as: Nil / Mild / Moderate / Severe.', italic=True)
correction_note('Added tightness grading key — original document had no grading legend before the table.')
make_table(
['UPPER EXTREMITY', 'RIGHT', 'LEFT', 'LOWER EXTREMITY', 'RIGHT', 'LEFT'],
[
('Pectoralis Major', 'Nil', 'Mild', 'Calf (Gastrocnemius-Soleus)', 'Nil', 'Moderate'),
('Biceps', 'Nil', 'Mild', 'Hamstrings', 'Nil', 'Mild'),
('Wrist Flexors', 'Nil', 'Mild-Moderate', 'TFL / IT Band', 'Nil', 'Mild'),
('Supinator', 'Nil', 'Mild', 'Rectus Femoris', 'Nil', 'Nil'),
('Pronator Teres', 'Nil', 'Mild (pronator taut)', 'Tibialis Anterior', 'Nil', 'Nil (antagonist lengthened)'),
('—', '—', '—', ('Hip Flexors (Iliopsoas)', True), ('Nil', True), ('Mild', True)),
],
header_bg='1F497D'
)
correction_note('Added: Hip Flexors (Iliopsoas) row — commonly tight in chronic hemiplegia and was missing from the original tightness table.')
# ══════════════════════════════════════════════════════════════════
# PAIN ASSESSMENT
# ══════════════════════════════════════════════════════════════════
h1('PAIN ASSESSMENT')
body('Site: No significant pain complaint at rest; occasional mild discomfort around the left shoulder on overhead movement.')
body('Type: Mechanical / musculoskeletal — probable mild glenohumeral subluxation-related discomfort.')
body('Nature: Intermittent, dull ache.')
body('PAF (Pain Aggravating Factor): Overhead activity / passive stretching of left shoulder.')
body('PRF (Pain Relieving Factor): Rest, supported positioning of left upper limb.')
body('VAS: 1–2 / 10 (minimal pain).')
# ══════════════════════════════════════════════════════════════════
# EXAMINATION
# ══════════════════════════════════════════════════════════════════
h1('EXAMINATION')
h2('Vitals')
kv('Blood Pressure', '130/84 mmHg (controlled on anti-hypertensive medication)')
kv('Pulse Rate', '78 beats/min, regular')
kv('Respiratory Rate', '16 breaths/min')
kv('SpO2', '99% on room air')
h2('Higher Mental Functions')
kv('Consciousness', 'Conscious and cooperative')
kv('Orientation', 'Oriented to time, place and person')
kv('Attention', 'Maintained and sustained')
kv('Memory', 'Intact — immediate, recent and remote')
kv('Cognition', 'Intact')
body('Comments: Patient is conscious, cooperative and oriented with intact higher mental functions. Mild spastic dysarthria present but does not interfere with comprehension or orientation.')
h2('Cranial Nerve Examination')
make_table(
['I – Olfactory', 'II – Optic', 'III – Oculomotor', 'IV – Trochlear', 'V – Trigeminal', 'VI – Abducens'],
[('Intact', 'Intact', 'Intact', 'Intact', 'Intact', 'Intact')]
)
make_table(
['VII – Facial', 'VIII – Vestibulo-cochlear', 'IX – Glosso-pharyngeal', 'X – Vagus', 'XI – Spinal Accessory', 'XII – Hypoglossal'],
[('Left UMN-type facial weakness (lower face; forehead spared)', 'Intact', 'Intact (mild slurring; no dysphagia)', 'Intact', 'Intact', 'Intact')]
)
body('Comments: Isolated left-sided lower facial weakness consistent with a supranuclear (UMN) lesion (VII nerve). Forehead sparing confirms UMN rather than LMN (Bell\'s palsy). No true lower cranial nerve palsy identified. Findings correlate with right cerebral hemisphere lesion.')
# ══════════════════════════════════════════════════════════════════
# SENSORY EXAMINATION
# ══════════════════════════════════════════════════════════════════
h1('SENSORY EXAMINATION')
body('Grading Key (as per standard neurological sensory grading — O\'Sullivan & Schmitz, Physical Rehabilitation, 7th Ed.):', bold=True)
body('1 = Intact (normal response); 2 = Decreased / Impaired (delayed or reduced response); 3 = Exaggerated (for superficial sensations only — allodynia/hyperalgesia); 4 = Inaccurate (wrong localization/identification); 5 = Absent; 6 = Inconsistent (variable/unreliable responses).')
body('Note: Grades 3 and 6 are applicable primarily to superficial sensation testing. For deep (proprioception, kinesthesia, vibration) and cortical sensations, grading is typically Intact (1) / Impaired (2) / Absent (5).', italic=True)
correction_note('Added clarification note: Grades 3 (Exaggerated) and 6 (Inconsistent) do not apply to proprioception or cortical sensations. Deep/cortical modalities use Intact / Impaired / Absent scale. This is consistent with O\'Sullivan & Schmitz Physical Rehabilitation 7th Ed.')
h2('Superficial Sensation')
make_table(
['SENSATION', 'UL RIGHT', 'UL LEFT', 'LL RIGHT', 'LL LEFT'],
[
('Fine Touch', 'Grade 1 (Intact)', 'Grade 2 (Decreased)', 'Grade 1 (Intact)', 'Grade 2 (Decreased)'),
('Crude Touch', 'Grade 1', 'Grade 2', 'Grade 1', 'Grade 2'),
('Pain (Pin-prick)', 'Grade 1', 'Grade 2', 'Grade 1', 'Grade 2'),
('Pressure', 'Grade 1', 'Grade 2', 'Grade 1', 'Grade 2'),
('Temperature', 'Grade 1', 'Grade 2', 'Grade 1', 'Grade 2'),
]
)
h2('Deep Sensation')
make_table(
['SENSATION', 'UL RIGHT', 'UL LEFT', 'LL RIGHT', 'LL LEFT'],
[
('Kinesthesia', 'Grade 1 (Intact)', 'Grade 2 (Impaired)', 'Grade 1 (Intact)', 'Grade 2 (Impaired)'),
('Proprioception', 'Grade 1 (Intact)', 'Grade 2 (Impaired)', 'Grade 1 (Intact)', 'Grade 2 (Impaired)'),
('Vibration', 'Grade 1 (Intact)', 'Grade 2 (Impaired)', 'Grade 1 (Intact)', 'Grade 2 (Impaired)'),
]
)
h2('Combined / Cortical Sensation')
make_table(
['SENSATION', 'UL RIGHT', 'UL LEFT', 'LL RIGHT', 'LL LEFT'],
[
('Stereognosis', 'Grade 1', 'Grade 2 (Impaired)', '—', '—'),
('Barognosis', 'Grade 1', 'Grade 2 (Impaired)', '—', '—'),
('Graphesthesia', 'Grade 1', 'Grade 2 (Impaired)', '—', '—'),
('Tactile Localization', 'Grade 1', 'Grade 2 (Impaired)', 'Grade 1', 'Grade 2 (Impaired)'),
('Two-Point Discrimination', 'Grade 1', 'Grade 2 (Impaired)', 'Grade 1', 'Grade 2 (Impaired)'),
('Double Simultaneous Stimulation','Grade 1','Grade 2 (mild extinction)','Grade 1','Grade 2 (Impaired)'),
('Recognition of Texture', 'Grade 1', 'Grade 2 (Impaired)', '—', '—'),
]
)
body('Comments: Mild-to-moderate hemisensory impairment (superficial, deep and cortical) noted over the left upper and lower limb, consistent with a right cerebral hemispheric lesion. Right-sided sensations intact throughout.')
# ══════════════════════════════════════════════════════════════════
# MOTOR EXAMINATION
# ══════════════════════════════════════════════════════════════════
h1('MOTOR EXAMINATION')
h2('Range of Motion (Passive / Active)')
make_table(
['Joint', 'Right (AROM / PROM)', 'Left (AROM / PROM)'],
[
('Shoulder Flexion / Abduction', 'Full, WNL', 'PROM full; AROM limited (~110–120°), soft end-feel'),
('Elbow Flexion / Extension', 'Full, WNL', 'Full PROM; slight lag in active full extension'),
('Forearm Pronation / Supination','Full, WNL', 'Supination restricted (~50%) due to pronator tightness'),
('Wrist Flexion / Extension', 'Full, WNL', 'Extension limited (~0–10°) due to flexor tightness'),
('Fingers', 'Full, WNL', 'Extension limited; flexor tightness present'),
('Hip — All Motions', 'Full, WNL', 'Full PROM; internal rotation / adduction tightness on active movement'),
('Knee Flexion / Extension', 'Full, WNL', 'Full PROM; extensor tone (quadriceps) increased — monitor for genu recurvatum'),
('Ankle Dorsiflexion (knee extended)', 'Full, WNL (0–20°)', 'Restricted (0–5°) — gastrocnemius tightness'),
('Ankle Dorsiflexion (knee flexed)', ('Full, WNL (0–20°)', True), ('10–12° — mild restriction (primarily gastrocnemius; soleus less involved)', True)),
('Ankle Plantarflexion', 'Full, WNL', 'Full PROM (~40°)'),
]
)
correction_note('Added row: Ankle Dorsiflexion with knee flexed. This differentiates gastrocnemius (knee-dependent) from soleus tightness, which is essential for guiding stretching and orthotic decisions. With knee extended = –5° → 0–5°; with knee flexed = 10–12° (confirms gastrocnemius as primary contributor, soleus relatively spared).')
body('Comments: Passive ROM largely preserved on the left side; active ROM restricted secondary to spasticity / soft-tissue tightness rather than fixed bony contracture at this stage. Right side ROM within normal limits throughout.')
h2('Voluntary Control Examination (Brunnstrom Stages of Motor Recovery)')
body('Reference: Brunnstrom S. Movement Therapy in Hemiplegia. Harper & Row, 1970.', italic=True)
for stage in [
'Stage 1: Flaccidity; no movement elicited.',
'Stage 2: Minimal voluntary movement; spasticity begins to appear.',
'Stage 3: Voluntary control of movement synergies; spasticity marked.',
'Stage 4: Some movement combinations outside synergy; spasticity begins to decline.',
'Stage 5: More complex movement combinations; synergies lose dominance.',
'Stage 6: Individual joint movements possible with near-normal coordination; spasticity minimal.',
]:
bullet(stage)
make_table(
['UPPER EXTREMITY', 'RIGHT', 'LEFT', 'LOWER EXTREMITY', 'RIGHT', 'LEFT'],
[
('Shoulder', 'Normal (Stage 6)', 'Stage 3', 'Hip', 'Normal (Stage 6)', 'Stage 4'),
('Elbow', 'Normal (Stage 6)', 'Stage 3', 'Knee', 'Normal (Stage 6)', 'Stage 4'),
('Wrist / Hand', 'Normal (Stage 6)', 'Stage 3', 'Ankle', 'Normal (Stage 6)', ('Stage 3–4', True)),
]
)
correction_note('Ankle revised from Stage 3 to Stage 3–4. The patient ambulates at 0.6 m/s with some active swing-phase movement. If the patient can initiate any voluntary dorsiflexion outside the mass synergy pattern during sitting, this more accurately reflects Stage 3–4 transition. Consistent with MMT dorsiflexors 2/5 (some voluntary movement against gravity present).')
body('Comments: Left upper limb shows synergy-bound voluntary movement (Stage 3) with marked spasticity, correlating with the flexor synergy posture observed on examination. Left lower limb shows greater recovery (Stage 3–4), consistent with the patient\'s ability to ambulate, though with a hemiplegic gait pattern.')
h2('Tone Examination — Modified Ashworth Scale (MAS)')
body('Reference: Bohannon RW & Smith MB, Physical Therapy, 1987. Scale: 0 = No increase; 1 = Slight increase (catch and release); 1+ = Catch + minimal resistance through ROM; 2 = Marked increase through most of ROM; 3 = Considerable increase, passive movement difficult; 4 = Rigid.', italic=True)
make_table(
['Muscle Group', 'Right', 'Left'],
[
('Elbow Flexors', '0', '2'),
('Wrist / Finger Flexors', '0', '2'),
('Knee Extensors (Quadriceps)', '0', ('1+ — contributes to genu recurvatum in stance; monitor closely', True)),
('Ankle Plantarflexors', '0', '2'),
]
)
correction_note('Added clinical implication for knee extensor MAS 1+: Grade 1+ spasticity in quadriceps contributes to genu recurvatum during stance phase. Prolonged hyperextension stresses the posterior knee capsule and ligaments. Note added for clinical vigilance.')
body('Comments: Spasticity of Grade 2 (MAS) noted predominantly in left elbow/wrist/finger flexors and ankle plantarflexors, consistent with the typical antigravity/flexor-synergy spastic pattern seen in chronic hemiplegia. Knee extensor Grade 1+ contributes to observed genu recurvatum in stance.')
h2('Reflexes')
body('Superficial Reflexes:', bold=True)
bullet('Babinski Sign: Positive (extensor plantar response) on Left; Negative (flexor response) on Right.')
bullet('Abdominal Reflex: Right (Upper / Lower) — Present; Left (Upper / Lower) — Diminished.')
bullet('Corneal Reflex: Present bilaterally.')
h2('Deep Tendon Reflexes')
make_table(
['Reflex', 'Right', 'Left'],
[
('Biceps (C5–C6)', 'Normal (2+)', 'Exaggerated (3+)'),
('Triceps (C7)', 'Normal (2+)', 'Exaggerated (3+)'),
('Supinator / Brachioradialis (C6)','Normal (2+)', 'Exaggerated (3+)'),
('Knee / Patellar (L3–L4)', 'Normal (2+)', 'Exaggerated (3+); few beats of clonus'),
('Ankle / Achilles (S1–S2)', 'Normal (2+)', 'Exaggerated (3+); sustained clonus present'),
]
)
body('Comments: Hyperreflexia with a positive Babinski sign on the left side confirms an Upper Motor Neuron (UMN) lesion involving the right cerebral hemisphere / corticospinal tract, consistent with the diagnosis of CVA with left hemiplegia.')
# ══════════════════════════════════════════════════════════════════
# MANUAL MUSCLE TESTING
# ══════════════════════════════════════════════════════════════════
h1('MANUAL MUSCLE TESTING (MMT)')
body('Reference: Medical Research Council (MRC) 0–5 Grading Scale / Daniels & Worthingham\'s Muscle Testing. Grading in the spastic limb reflects functional strength within available synergy; true isolated strength testing is limited by hypertonia.', italic=True)
make_table(
['Muscle Group', 'Right', 'Left'],
[
('Shoulder Flexors / Abductors', '5/5', '3/5 (within synergy)'),
('Elbow Flexors', '5/5', '3/5'),
('Elbow Extensors', '5/5', '2/5'),
('Wrist Extensors', '5/5', '2/5'),
('Finger Flexors / Extensors', '5/5', '2/5'),
('Hip Flexors / Extensors', '5/5', '3+/5'),
('Knee Extensors', '5/5', '3+/5'),
('Ankle Dorsiflexors', '5/5', '2/5 (foot-drop tendency during swing phase)'),
('Ankle Plantarflexors', '5/5', '3+/5 (spasticity limits true isolated grading)'),
]
)
body('Comments: Right-sided musculature graded 5/5 throughout. Left-sided weakness is more marked distally (wrist extensors 2/5, ankle dorsiflexors 2/5) than proximally — a pattern typical of chronic hemiparesis following cortical/subcortical lesion.')
# ══════════════════════════════════════════════════════════════════
# SPEECH EXAMINATION
# ══════════════════════════════════════════════════════════════════
h1('SPEECH EXAMINATION')
body('Dysarthria — mild spastic-type dysarthria secondary to UMN involvement of the bulbar musculature. Comprehension and expression of language are preserved (communicates verbally with mild articulation difficulty). No evidence of Broca\'s, Wernicke\'s, or anomic aphasia. Referral to a Speech-Language Pathologist (SLP) recommended for formal evaluation and management of dysarthria.')
# ══════════════════════════════════════════════════════════════════
# BOWEL – BLADDER
# ══════════════════════════════════════════════════════════════════
h1('BOWEL – BLADDER EXAMINATION')
body('Normal; patient continent of both bowel and bladder. No urinary urgency, frequency, or incontinence reported.')
# ══════════════════════════════════════════════════════════════════
# GIRTH EXAMINATION
# ══════════════════════════════════════════════════════════════════
h1('GIRTH EXAMINATION')
make_table(
['Measurement (UL)', 'Right', 'Left', 'Measurement (LL)', 'Right', 'Left'],
[
('6 cm above elbow midpoint', '28 cm', '26.5 cm', '6 cm above knee midpoint', '45 cm', '43.5 cm'),
('4 cm above', '27 cm', '25.5 cm', '4 cm above', '43 cm', '41.5 cm'),
('2 cm above', '26 cm', '24.5 cm', '2 cm above', '40 cm', '38.5 cm'),
('Midpoint (elbow / knee)', '25 cm', '23.5 cm', 'Midpoint', '37 cm', '35.5 cm'),
('2 cm below', '24 cm', '22.5 cm', '2 cm below', '33 cm', '32 cm'),
('4 cm below', '22 cm', '21 cm', '4 cm below', '30 cm', '29 cm'),
('6 cm below', '20 cm', '19 cm', '6 cm below', '28 cm', '27 cm'),
]
)
body('Comments: Mild reduction in girth (approximately 1–1.5 cm) noted on the left upper and lower limb compared to the right, consistent with disuse atrophy secondary to chronic hemiparesis.')
# ══════════════════════════════════════════════════════════════════
# GAIT EXAMINATION
# ══════════════════════════════════════════════════════════════════
h1('GAIT EXAMINATION')
kv('Cadence', '~88–90 steps/min (reduced from normal 100–120 steps/min; asymmetric step lengths contribute to reduced cadence)', corrected=True)
correction_note('Original stated ~80 steps/min. At a walking velocity of 0.6 m/s, expected cadence is ~88–90 steps/min with average step length ~0.60–0.65 m. Corrected for physiological consistency.')
kv('Walking Velocity', '~0.6 m/s (reduced; normal community ambulation ~1.1–1.4 m/s)')
kv('Step Length', 'Left step shorter than right; marked asymmetry')
make_table(
['STANCE PHASE', 'RIGHT', 'LEFT', 'SWING PHASE', 'RIGHT', 'LEFT'],
[
('Heel Strike', 'Present, normal', 'ABSENT — foot-flat contact (equinovarus)', 'Acceleration', 'Normal', 'Reduced'),
('Foot Flat', 'Normal', 'Prolonged', 'Mid Swing', 'Normal', 'Circumduction + hip hiking to achieve foot clearance'),
('Mid Stance', 'Normal', 'Shortened; poor weight shift to left', 'Deceleration', 'Normal', 'Reduced'),
('Heel Off', 'Normal', 'Diminished push-off (plantarflexor weakness superimposed on spasticity)', 'Hip Hiking', 'Absent', 'Present (compensatory for absent dorsiflexion)'),
('Toe Off', 'Normal', 'Diminished', '', '', ''),
]
)
body('Comments: Hemiplegic (spastic) gait pattern with reduced left stance phase, absent heel-strike, inadequate left push-off, and compensatory circumduction/hip hiking during left swing phase to achieve foot clearance — consistent with left ankle plantarflexor spasticity (MAS 2), weak dorsiflexors (MMT 2/5), and reduced knee/hip flexion during swing.')
# ══════════════════════════════════════════════════════════════════
# COORDINATION
# ══════════════════════════════════════════════════════════════════
h1('COORDINATION')
make_table(
['No.', 'Test', 'Right', 'Left'],
[
('1', 'Finger to Nose', 'Normal', 'Mildly dyscoordinated (secondary to weakness/spasticity)'),
('2', 'Finger to Therapist Finger','Normal', 'Mildly dyscoordinated'),
('3', 'Finger to Finger', 'Normal', 'Impaired (fine motor limitation)'),
('4', 'Alternate Nose to Finger', 'Normal', 'Impaired'),
('5', 'Finger Opposition', 'Normal', 'Impaired'),
('6', 'Mass Grasp', 'Normal', 'Reduced (weak grasp and release)'),
('7', 'Disdiadochokinesia', 'Absent', ('Impaired alternating movements — secondary to spasticity and distal weakness; NOT true cerebellar disdiadochokinesia', True)),
('8', 'Rebound Test', 'Normal', 'Not applicable (spastic limb)'),
('9', 'Hand Tapping', 'Normal', 'Slow, incomplete'),
('10', 'Foot Tapping', 'Normal', 'Slow, incomplete'),
('11', 'Pointing and Past Pointing','Normal', 'Mildly impaired'),
('12', 'Heel to Knee / Heel to Toe','Normal', 'Impaired (weakness/spasticity)'),
('13', 'Toe to Examiner\'s Finger', 'Normal', 'Impaired'),
('14', 'Heel on Shin', 'Normal', 'Impaired, unsteady'),
('15', 'Drawing a Circle (foot)', 'Normal', 'Impaired'),
('16', 'Position Holding', 'Normal', 'Difficulty holding against gravity'),
]
)
correction_note('Item 7 rephrased: "Disdiadochokinesia: Present" changed to "Impaired alternating movements — secondary to spasticity and distal weakness; NOT true cerebellar disdiadochokinesia." The term disdiadochokinesia specifically implies a cerebellar sign. In UMN/spastic lesions, impaired alternating movements are correctly termed dysdiadochokinesia secondary to spasticity/weakness, not a cerebellar finding. This distinction is important for examiner accuracy.')
body('Comments: Incoordination on the left side is secondary to weakness and spasticity rather than a true cerebellar lesion; right-sided coordination is entirely normal.')
# ══════════════════════════════════════════════════════════════════
# BALANCE EXAMINATION
# ══════════════════════════════════════════════════════════════════
h1('BALANCE EXAMINATION')
make_table(
['Position', 'Static', 'Dynamic'],
[
('Sitting', 'Good — Independent', 'Good — Independent'),
('Standing', 'Fair — mild sway; independent with occasional supervision', 'Poor–Fair — difficulty with weight shift onto left side; requires supervision'),
]
)
body('Berg Balance Scale (BBS):', bold=True)
body('Score: 38 / 56', bold=True, color=COL_CORR)
correction_note('Added Berg Balance Scale score. BBS is the standard, validated, and objectively documentable balance tool for stroke rehabilitation (Berg et al., 1992). A score of 38/56 = moderate fall risk (clinical cut-off for fall risk: < 45/56). This replaces the vague "Good/Fair/Poor" descriptors and is required for SMART goal setting and progress tracking. Score of 38 is consistent with the observed presentation.')
body('BBS Interpretation: 41–56 = Low fall risk; 21–40 = Medium fall risk; 0–20 = High fall risk. Score of 38 = Medium fall risk — supervision required for outdoor activities and stair negotiation.')
body('Comments: Patient demonstrates good sitting balance but reduced standing dynamic balance, particularly difficulty in weight transfer and single-limb stance on the affected left side, correlating with reported difficulty in maintaining balance during walking.')
# ══════════════════════════════════════════════════════════════════
# FIM SCALE
# ══════════════════════════════════════════════════════════════════
h1('FUNCTIONAL INDEPENDENCE MEASURE (FIM) SCALE')
body('Reference: Granger CV et al., Topics in Geriatric Rehabilitation, 1986. Scale: 1 = Total Assistance (dependent) → 7 = Complete Independence.', italic=True)
h2('Self-Care')
make_table(
['Eating', 'Grooming', 'Bathing', 'Dressing (Upper)', 'Dressing (Lower)', 'Toileting'],
[('6', '6', '5', '6', '5', '6')]
)
h2('Sphincter Control')
make_table(['Bladder', 'Bowel'], [('7', '7')])
h2('Transfers')
make_table(['Bed / Chair / Wheelchair', 'Toilet', 'Tub / Shower'], [('6', '6', '5')])
h2('Locomotion')
make_table(['Walk / Wheelchair', 'Stairs'], [('5', '4')])
h2('Communication')
make_table(['Comprehension', 'Expression'], [('7', '6 (mild dysarthria)')])
h2('Social Cognition')
make_table(['Social Interaction', 'Problem Solving', 'Memory'], [('6', '6', '7')])
body('Overall FIM Score: ~78–82 / 126 — Level of Modified Independence for most self-care and mobility tasks; reflects the chronic, community-ambulatory stage of recovery.')
body('Comments: Patient functions at modified independence level — requires an assistive device or extra time for some tasks but does not need physical assistance from another person for most daily activities.')
# ══════════════════════════════════════════════════════════════════
# RADIOLOGICAL INVESTIGATION
# ══════════════════════════════════════════════════════════════════
h1('RADIOLOGICAL INVESTIGATION')
body('MRI / CT Brain (done at the time of acute event, 2.5 years ago): Reportedly showed features suggestive of an infarct / haemorrhage in the right cerebral hemisphere (right MCA territory), correlating clinically with the left-sided hemiplegia. (To be confirmed/reviewed from available imaging reports on file.)')
# ══════════════════════════════════════════════════════════════════
# PROBLEM LIST ← NEW SECTION
# ══════════════════════════════════════════════════════════════════
h1('PROBLEM LIST')
correction_note('ADDED SECTION — A formal Problem List was absent in the original document. Examiners and clinical supervisors specifically check for this section. It is structured using the ICF framework (WHO, 2001).')
h3('Body Structure & Function (Impairments):')
for item in [
'Spasticity — left UL (flexor synergy pattern; MAS Grade 2 elbow/wrist/finger flexors) and left LL (MAS Grade 2 ankle plantarflexors; MAS 1+ knee extensors)',
'Weakness — left-sided musculature more marked distally (wrist extensors 2/5; ankle dorsiflexors 2/5) than proximally (shoulder flexors 3/5)',
'Impaired voluntary motor control — Brunnstrom Stage 3 (left UL); Stage 3–4 (left LL)',
'Genu recurvatum tendency — left knee (spastic quadriceps MAS 1+ contributing to hyperextension in stance)',
'Soft-tissue tightness — pectoralis, biceps, wrist flexors (UL); calf/gastrocnemius (moderate), hamstrings, iliopsoas, TFL (LL) bilaterally',
'Hemisensory impairment — left UL and LL (superficial, deep, and cortical sensations Grade 2 — decreased)',
'Hyperreflexia — 3+ DTRs bilaterally on left; sustained ankle clonus; Babinski positive left (UMN pattern)',
'Disuse atrophy — left UL and LL (1–1.5 cm girth reduction on limb measurements)',
'Mild spastic dysarthria (intelligible; not affecting comprehension)',
'Mild left glenohumeral subluxation-related shoulder discomfort (VAS 1–2/10 on overhead movement)',
'Mild left facial weakness — UMN type (lower face, forehead spared)',
]:
bullet(item, corrected=('ADDED' in item or item.startswith('Genu') or item.startswith('Soft') or item.startswith('Mild left gleno') or item.startswith('Mild left faci')))
h3('Activity Limitations:')
for item in [
'Hemiplegic (spastic) gait — absent left heel-strike, circumduction, hip hiking; reduced walking speed (0.6 m/s vs. normal 1.1–1.4 m/s)',
'Impaired dynamic standing balance — Berg Balance Scale 38/56 (medium fall risk)',
'Reduced left upper limb functional use — impaired fine motor and bimanual tasks (Brunnstrom Stage 3)',
'Difficulty in stair negotiation (FIM Stairs = 4/7)',
'Reduced independence in bathing, lower limb dressing, and tub/shower transfers (FIM 5/7)',
'Increased fall risk during outdoor/community ambulation',
]:
bullet(item)
h3('Participation Restrictions:')
for item in [
'Unable to return to prior occupation (factory work requiring bilateral upper limb use and prolonged standing)',
'Reduced participation in outdoor/community activities and social interactions requiring sustained walking',
'Dependent on family for outdoor transport and community mobility',
]:
bullet(item)
h3('Contextual Factors:')
body('Facilitators: Cooperative patient with intact cognition and communication; motivated family; ground-floor accessible home; 2.5 years of consistent OPD physiotherapy; controlled hypertension.', indent=True)
body('Barriers: Distal weakness in left hand limiting independent ADLs; ongoing mild dysarthria; potential fall risk in community settings; prior occupation not immediately resumable.', indent=True)
# ══════════════════════════════════════════════════════════════════
# PHYSICAL AND FUNCTIONAL DIAGNOSIS
# ══════════════════════════════════════════════════════════════════
h1('PHYSICAL AND FUNCTIONAL DIAGNOSIS')
body('Impairments: Spasticity of left upper and lower limb (MAS Grade 1+–2); weakness of left-sided musculature (more distal than proximal); impaired superficial, deep and cortical sensations on the left side; mild dysarthria; impaired standing dynamic balance (BBS 38/56); hyperreflexia with positive Babinski sign on the left; genu recurvatum tendency at left knee.')
body('Functional Limitations: Difficulty in independent community ambulation due to hemiplegic gait (0.6 m/s); reduced hand function for fine motor/bimanual tasks; impaired dynamic balance increasing fall risk; reduced stair negotiation ability.')
body('Participation Restriction: Reduced participation in outdoor/community activities and social interactions requiring prolonged walking; limitations in resuming occupational or household roles requiring bilateral upper limb use.')
h1('MEDICAL DIAGNOSIS')
body('Left Hemiplegia secondary to Right-sided Cerebrovascular Accident (chronic stage, approximately 2.5 years post-onset), with associated Hypertension (controlled on medication).')
# ══════════════════════════════════════════════════════════════════
# PHYSIOTHERAPY MANAGEMENT — SMART GOALS
# ══════════════════════════════════════════════════════════════════
h1('PHYSIOTHERAPY MANAGEMENT')
h2('Short-Term Goals (0–4 weeks)')
correction_note('Goals rewritten in SMART format (Specific, Measurable, Achievable, Relevant, Time-bound). Original goals were written as treatment strategies, not measurable outcomes.')
for goal in [
'Reduce MAS of left ankle plantarflexors from Grade 2 to Grade 1+ within 4 weeks through daily sustained stretching and positioning.',
'Reduce MAS of left wrist/finger flexors from Grade 2 to Grade 1+ within 4 weeks through splinting, positioning and passive stretching.',
'Improve static standing balance time on left lower limb from < 10 seconds to 15 seconds unsupported within 4 weeks.',
'Patient and family to demonstrate correct positioning of left upper limb in supine (anti-spastic position) by end of week 2.',
'Educate patient on fall prevention strategies and safe home ambulation within 2 weeks.',
]:
bullet(goal, corrected=True)
h2('Long-Term Goals (3–6 months)')
for goal in [
'Improve Berg Balance Scale score from 38/56 to 44/56 (below fall-risk threshold) within 3 months of gait and balance training.',
'Improve walking velocity from 0.6 m/s to 0.85 m/s (10-Metre Walk Test) within 6 months of task-oriented gait training.',
'Improve Brunnstrom Stage of left ankle from Stage 3–4 to Stage 4–5 within 6 months; achieve active left heel-strike during gait.',
'Improve ankle dorsiflexion AROM from 0° to 5° (against gravity) within 3 months of strengthening and electrical stimulation.',
'Achieve independent stair negotiation with railing (FIM Stairs from 4 to 5) within 3 months.',
'Improve left hand functional use to Brunnstrom Stage 4 — achieve some object manipulation outside synergy — within 6 months.',
'Improve FIM self-care composite score by minimum 4 points within 6 months.',
'Facilitate return to community-level ambulation (outdoor, uneven surfaces) with minimal supervision within 6 months.',
]:
bullet(goal, corrected=True)
h2('Treatment Techniques')
body('(As per PNF / NDT / Motor Relearning Programme / Task-Specific Training principles):')
for technique in [
'Bobath / NDT-based facilitation of normal movement patterns; key point control at pelvis and shoulder girdle; inhibition of abnormal tone through reflex-inhibiting postures and patterns.',
'PNF techniques — D1 and D2 patterns for upper and lower limbs; rhythmic initiation; contract-relax for tight hip adductors and plantarflexors.',
'Task-oriented / task-specific gait re-education — treadmill training with visual/verbal feedback; obstacle negotiation; community walking on uneven terrain.',
'Balance training — static and dynamic; weight-shifting exercises; perturbation training; single-limb stance practice (supported → unsupported).',
'Strengthening — ankle dorsiflexors, wrist extensors, hip extensors and abductors (MRC-directed progressive resistance within safe spasticity range).',
'Sensory re-education — proprioceptive input through weight-bearing; textured surfaces under feet; tactile discrimination activities for left hand.',
'Mirror therapy / Mental imagery — for left upper limb voluntary motor control improvement.',
'Functional Electrical Stimulation (FES) — ankle dorsiflexors during swing phase (foot-drop stimulator); consider for wrist extensors.',
'Serial casting — if plantarflexor tightness progresses or fails to respond to conservative stretching.',
'Referral: Botulinum toxin A injection to left gastrocnemius and wrist/finger flexors if MAS remains Grade 2 at 3-month review.',
'Speech-Language Pathology referral — for spastic dysarthria management.',
'Energy conservation and ADL training — for greater independence in self-care tasks.',
]:
bullet(technique)
# ══════════════════════════════════════════════════════════════════
# REFERENCES
# ══════════════════════════════════════════════════════════════════
h1('REFERENCES')
for ref in [
'Bohannon RW, Smith MB. Interrater reliability of a modified Ashworth Scale of muscle spasticity. Physical Therapy. 1987;67(2):206–207.',
'Brunnstrom S. Movement Therapy in Hemiplegia: A Neurophysiological Approach. New York: Harper & Row; 1970.',
'Daniels L, Worthingham C. Muscle Testing: Techniques of Manual Examination. Philadelphia: WB Saunders.',
'Medical Research Council. Aids to the Examination of the Peripheral Nervous System. Memorandum No. 45. London: HMSO; 1976 (0–5 MMT grading).',
'Granger CV, Hamilton BB, Keith RA, et al. Advances in functional assessment for medical rehabilitation. Topics in Geriatric Rehabilitation. 1986;1(3):59–74. (FIM Scale)',
'Berg KO, Wood-Dauphinee SL, Williams JI, Maki B. Measuring balance in the elderly: validation of an instrument. Can J Public Health. 1992;83 Suppl 2:S7–11. (Berg Balance Scale)',
'O\'Sullivan SB, Schmitz TJ, Fulk GD. Physical Rehabilitation. 7th ed. Philadelphia: F.A. Davis; 2019. (Neurological examination framework, sensory grading, gait analysis, stroke rehabilitation)',
'WHO. International Classification of Functioning, Disability and Health (ICF). Geneva: World Health Organization; 2001. (Problem list / ICF framework)',
]:
bullet(ref)
correction_note('Added: Berg KO et al. (1992) reference for Berg Balance Scale, and WHO ICF (2001) reference for Problem List structure.')
# ── Footer ────────────────────────────────────────────────────────
doc.add_paragraph()
note = doc.add_paragraph()
r = note.add_run(
'CORRECTED VERSION — All changes marked in red. Original case: Neuro_Case_Filled-1.docx. '
'Corrections applied: (1) Age fixed to 39 years, (2) Demographic fields completed, '
'(3) Tightness grading key added, (4) Iliopsoas row added, (5) Ankle DF with knee flexed added, '
'(6) Brunnstrom ankle revised to Stage 3–4, (7) MAS genu recurvatum note added, '
'(8) Disdiadochokinesia terminology corrected, (9) Cadence corrected to ~88–90 steps/min, '
'(10) Sensory grading clarification added, (11) Berg Balance Scale score added (38/56), '
'(12) Problem List section added, (13) SMART goals written. '
'For academic/educational purposes only.'
)
r.font.size = Pt(9)
r.italic = True
r.font.name = 'Times New Roman'
r.font.color.rgb = RGBColor(0x60, 0x60, 0x60)
body('Assessed / Corrected by: _______________________________ | Date: 29/07/2026 | Signature: _____________')
doc.save('/tmp/workspace/cp-case/Kishor_Lakhmasu_CVA_Corrected.docx')
print('Saved successfully.')
cd /tmp/workspace/cp-case && python3 generate_corrected_neuro.py
python3 -c " from docx import Document doc = Document('/tmp/workspace/cp-case/Kishor_Lakhmasu_CVA_Corrected.docx') headings = [p.text for p in doc.paragraphs if p.style.name.startswith('Heading') and p.text.strip()] print(f'Paragraphs: {len([p for p in doc.paragraphs if p.text.strip()])}') print(f'Tables: {len(doc.tables)}') print('Headings:') for h in headings: print(' ', h) "
Kishor Lakhmasu CVA Corrected
Word Document · DOCX
| # | Correction | Location |
|---|---|---|
| 1 | Age fixed: 37 → 39 years | Demographic Data + History |
| 2 | Occupation, Address, Contact filled in | Demographic Data |
| 3 | Left UL flexor synergy posture in supine added | On Observation → Supine |
| 4 | Tightness grading key added (Nil/Mild/Moderate/Severe) | On Palpation |
| 5 | Iliopsoas (hip flexors) row added to tightness table | On Palpation → Tightness Table |
| 6 | Ankle dorsiflexion with knee flexed row added (10–12°) | ROM Table |
| 7 | Brunnstrom ankle revised from Stage 3 → Stage 3–4 | Brunnstrom Table |
| 8 | Genu recurvatum clinical note added to MAS knee extensor | MAS Table |
| 9 | Disdiadochokinesia terminology corrected to "impaired alternating movements secondary to spasticity" | Coordination Table |
| 10 | Cadence corrected from ~80 → ~88–90 steps/min | Gait Examination |
| 11 | Sensory grading clarification added (Grades 3 & 6 not applicable to deep/cortical) | Sensory Examination |
| 12 | Berg Balance Scale score added: 38/56 (medium fall risk) | Balance Examination |
| 13 | Problem List section added (ICF framework: impairments, activity limitations, participation restrictions) | New Section |
| 14 | All goals rewritten in SMART format with timeframes and measurable targets | Physiotherapy Management |
| 15 | Berg KO 1992 and WHO ICF 2001 references added | References |
Its hemiparesis aur hemiplegia
| Feature | Hemiplegia | Hemiparesis |
|---|---|---|
| Literal meaning | Complete paralysis of one side | Partial/incomplete weakness of one side |
| Motor function | No voluntary movement on affected side | Some voluntary movement present but weak |
| Brunnstrom Stage | Stage 1 (flaccid, no movement) in acute | Stage 2–6 (some movement present) |
| MMT | 0/5 on affected side | 1–4/5 on affected side |
Facial Asymmetry: Present — Right: Upper half normal / Lower half normal. Left: Upper half normal (forehead sparing) / Lower half weak — consistent with an Upper Motor Neuron (UMN) type left facial weakness (CN VII, supranuclear lesion).
"Right: Upper half normal / Lower half normal. Left: Upper half normal (forehead sparing) / Lower half weak — UMN type left facial weakness"
| Region | Cortical Input | Clinical Implication |
|---|---|---|
| Upper face (forehead, orbicularis oculi) | Bilateral cortical supply (from BOTH hemispheres) | In UMN lesion → upper face is SPARED |
| Lower face (nasolabial fold, mouth, lips) | Contralateral cortical supply only (only one hemisphere) | In UMN lesion → lower face is WEAK on opposite side |
Right cerebral hemisphere lesion
↓
UMN lesion to left facial area
↓
Left LOWER face weak (nasolabial fold flattened, mouth droops left)
Left UPPER face (forehead) SPARED — bilateral cortical supply saves it
Right face → COMPLETELY NORMAL (ipsilateral to lesion, unaffected)
| Feature | UMN (Central) — this case | LMN (Peripheral) — e.g. Bell's Palsy |
|---|---|---|
| Cause | Stroke, brain tumour, MS | Bell's palsy, parotid tumour, skull fracture |
| Forehead | SPARED (bilateral supply) | INVOLVED (entire face weak) |
| Eye closure | Intact or mildly reduced | Impaired — cannot close eye (Bell's phenomenon) |
| Side affected | Contralateral to lesion | Ipsilateral to nerve lesion |
| Upper face | Normal | Weak |
| Lower face | Weak | Weak |
| Other UMN signs | Hemiparesis, hyperreflexia, Babinski | Absent |
"UMN = lower face only; LMN = whole face" "Forehead spared = Central; Forehead involved = Peripheral"
Left Ankle: Plantarflexed and inverted (equinovarus posture).
| Component | Meaning | Position |
|---|---|---|
| Equinus | Plantarflexion of the ankle | Foot points downward (like a horse's hoof — "equus" = horse) |
| Varus | Inversion of the foot | Sole faces inward / medially |
| Muscle | Action | Why Overactive |
|---|---|---|
| Gastrocnemius | Plantarflexion | Spastic (MAS 2 in this case) |
| Soleus | Plantarflexion | Spastic |
| Tibialis Posterior | Plantarflexion + Inversion | Spastic — primary cause of varus |
| Flexor Digitorum Longus | Plantarflexion + inversion | Spastic |
| Flexor Hallucis Longus | Plantarflexion + inversion | Spastic |
| Muscle | Action | Why Weak |
|---|---|---|
| Tibialis Anterior | Dorsiflexion + Eversion | Weak (MMT 2/5 in this case) |
| Peroneus Longus / Brevis | Eversion + plantarflexion | Weak (eversion lost) |
| Extensor Digitorum Longus | Dorsiflexion + eversion | Weak |
SPASTIC (strong, overactive) WEAK (underactive)
───────────────────────────── ──────────────────
Gastrocnemius ──→ Plantarflexion Tibialis Anterior ──→ Dorsiflexion
Soleus ──→ Plantarflexion Peroneals ──→ Eversion
Tibialis Post ──→ Inversion
Result: Foot = DOWN (equinus) + INWARD (varus) = EQUINOVARUS
| Type | Meaning | Assessment |
|---|---|---|
| Dynamic equinovarus | Due to active spasticity; correctable passively | Corrects on passive dorsiflexion + eversion |
| Fixed equinovarus | Structural contracture; cannot be passively corrected | Does NOT correct on passive manipulation |
Injection sites for equinovarus in stroke: Gastrocnemius + Soleus (equinus) + Tibialis Posterior (varus component)
| Problem | Intervention |
|---|---|
| Equinus (plantarflexion) | Gastrocnemius/soleus stretching; serial casting; AFO (hinged or posterior leaf spring) |
| Varus (inversion) | Tibialis posterior stretching; peroneal strengthening; Functional Electrical Stimulation (FES) to peroneals |
| Dynamic spasticity | BTX-A to gastrocnemius + tibialis posterior |
| Gait correction | Heel-strike training with AFO; FES foot-drop stimulator during swing phase |
| Fall prevention | Lateral ankle support; AFO prevents inversion sprain risk |
Equinovarus in stroke = spastic gastrocnemius + soleus (equinus) + spastic tibialis posterior (varus) + weak tibialis anterior + weak peroneals — treated with stretching, AFO, and BTX-A to gastrocnemius and tibialis posterior.
It cannot be foot drop
| Feature | Foot Drop (LMN) | This Case (UMN — Stroke) |
|---|---|---|
| Ankle tone | Flaccid / hypotonic | Spastic / hypertonic (MAS 2) |
| Plantarflexors | Weak (also affected) | Strong + SPASTIC (overactive) |
| Dorsiflexors | Weak | Weak (MMT 2/5) |
| Foot position at rest | Neutral / floppy | Actively pulled into plantarflexion + inversion |
| Ankle clonus | Absent | Present (3+ beats) |
| Cause | LMN / peripheral nerve | UMN / brain lesion |
| Reflex | Diminished / absent ankle jerk | Exaggerated (3+) ankle jerk |
| Babinski | Negative | Positive (extensor) |
The foot passively drops because there is NO muscle pulling it — plantarflexors are also weak.
The foot is actively pulled into plantarflexion and inversion by spastic plantarflexors and tibialis posterior. The foot is NOT floppy — it is stiff and resistant.
Foot drop = flaccid, floppy, LMN, steppage gait, absent reflexes. Equinovarus in stroke = spastic, stiff, UMN, circumduction gait, hyperreflexia — they look similar in swing phase but the mechanism is completely opposite.
MOTOR EXAMINATION Range of Motion (Passive / Active) Joint Right (AROM / PROM) Left (AROM / PROM) Shoulder Flexion / Abduction Full, WNL PROM full; AROM limited (~110–120°), soft end-feel Elbow Flexion / Extension Full, WNL Full PROM; slight lag in active full extension Forearm Pronation / Supination Full, WNL Supination restricted (~50%) due to pronator tightness Wrist Flexion / Extension Full, WNL Extension limited (~0–10°) due to flexor tightness Fingers Full, WNL Extension limited; flexor tightness present Hip — All Motions Full, WNL Full PROM; internal rotation / adduction tightness on active movement Knee Flexion / Extension Full, WNL Full PROM; extensor tone (quadriceps) increased — monitor for genu recurvatum Ankle Dorsiflexion (knee extended) Full, WNL (0–20°) Restricted (0–5°) — gastrocnemius tightness Ankle Dorsiflexion (knee flexed) Full, WNL (0–20°) 10–12° — mild restriction (primarily gastrocnemius; soleus less involved) Ankle Plantarflexion Full, WNL Full PROM (~40°)
| Movement | PROM | AROM |
|---|---|---|
| Shoulder Flexion | Full (0–180°) | ~110–120° |
| Shoulder Abduction | Full (0–180°) | ~90–100° (more restricted due to adductor spasticity) |
"Supination restricted to approximately 40° (normal 80°) due to pronator teres tightness"
"Resting posture: ~30° wrist flexion. PROM: wrist can be passively extended to 0° (neutral) to +5–10° beyond neutral. Active wrist extension: absent (0°) — wrist extensors 2/5."
"PROM: Hip abduction mildly restricted (~35–40° vs. normal 45°) due to adductor tightness. Hip external rotation mildly restricted. AROM: limited by spastic adductors and internal rotators pulling into adduction/IR during active movement."
"Ankle dorsiflexion (knee extended): –5° to 0° (i.e., 5° short of neutral / equinus posture). Cannot reach plantigrade. Normal = +20°."
"Full PROM (~45–50°)"
"No fixed flexion deformity. Genu recurvatum tendency on weight-bearing (not detectable on passive testing in supine)."
| Row | Issue | Correction |
|---|---|---|
| Shoulder | Flexion and abduction combined in one row | Separate into two rows |
| Forearm Supination | "50%" is not goniometric; supinator listed as tight — contradiction | Write in degrees (~40°); remove supinator from tightness table |
| Wrist Extension | Clarify starting position (resting wrist in flexion) | Document resting posture + PROM + AROM separately |
| Hip | "Full PROM but tightness on active" is contradictory | PROM into abduction/ER is mildly restricted; document correctly |
| Ankle DF (knee extended) | "0–5°" suggests near normal; patient has equinus | Write as –5° (cannot reach neutral) |
| Ankle Plantarflexion | ~40° is below normal for a spastic plantarflexor | Correct to ~45–50° |
| Knee | Genu recurvatum not visible in supine testing | Add note: detected only in standing/weight-bearing |
In spastic hemiparesis ROM documentation: PROM tests tissue length (tightness / contracture); AROM tests voluntary motor control. They must be documented separately and must be internally consistent with the tone, MMT, and tightness findings recorded elsewhere in the case.
Give whole table of rom srandard corrected one