Can you make plan for Child name Hussain of 3.5 year old having floppy body & unable to focus on activities & muscle weak
hypotonia child management rehabilitation physiotherapy
hypotonia toddler physiotherapy occupational therapy intervention
| Feature | Central Hypotonia | Peripheral Hypotonia |
|---|---|---|
| Consciousness/alertness | Often reduced | Usually alert |
| Weakness | Axial (trunk), mild | Profound, appendicular |
| Deep tendon reflexes | Preserved or reduced | Absent |
| Serum CK | Normal | Elevated (if muscle disorder) |
| Common causes | Chromosomal (e.g., Prader-Willi), cerebral dysgenesis, metabolic | Spinal muscular atrophy, congenital myopathy, myasthenia |
| Specialist | Role |
|---|---|
| Pediatric Neurologist | Lead diagnosis, interpret MRI/EMG/EEG |
| Pediatric Geneticist | Chromosomal/metabolic workup |
| Physiotherapist (PT) | Muscle strengthening, motor development |
| Occupational Therapist (OT) | Attention, fine motor skills, daily activities |
| Speech & Language Therapist | Feeding, communication (if affected) |
| Developmental Pediatrician | Global developmental assessment |
| Ophthalmologist | Visual issues may impair focus |
| Dietitian | Nutritional support for muscle development |
| Time | Activity |
|---|---|
| Morning | 10 min floor play ā rolling, crawling, tummy time |
| Mid-morning | Seated activity with support ā puzzles, stacking blocks (attention training) |
| Afternoon | 15 min outdoor play ā walking on uneven surfaces (grass), playground climbing |
| Evening | Gentle massage of limbs (5ā10 min) to improve muscle awareness and circulation |
| Bedtime | Quiet sensory activities ā bath time proprioceptive input, calming routine |
| Review Milestone | Target |
|---|---|
| 4 weeks | Caregiver comfort with home programme; PT/OT baseline established |
| 3 months | Repeat tone/strength assessment; review investigation results |
| 6 months | Gross motor milestones re-assessed (standing, walking quality) |
| Ongoing | MDT review every 6 months; update goals as Hussain progresses |
Important Note: This plan is a clinical framework. The exact interventions, therapy frequency, and investigations must be tailored by Hussain's treating pediatric neurologist and MDT after full clinical assessment. The underlying cause of hypotonia determines the specific long-term management.
Make a plan on 1 hour or 30 mints of Hussain by OT or PT therapist working on strenght training of muscle & focus & attention activities
hypotonia child physical therapy strength training attention
| Phase | Duration | Goal |
|---|---|---|
| Warm-Up | 5 min | Prepare muscles, sensory arousal |
| Strength Training Block | 15 min | Trunk, legs, upper limb strengthening |
| Attention & Focus Block | 7 min | Sustained attention + motor-cognitive integration |
| Cool-Down & Carry-Over | 3 min | Relax, reinforce learning |
| Animal Walk | Duration | Muscles Targeted |
|---|---|---|
| Bear Walk (hands + feet on floor) | 45 sec | Core, shoulders, hips |
| Crab Walk (sitting, walking on hands + feet, belly up) | 45 sec | Triceps, glutes, core |
| Frog Jumps (squat ā small jump) | 45 sec | Quadriceps, calves |
| Inchworm (hands walk forward, feet follow) | 45 sec | Hamstrings, core, shoulders |
š£ļø PT Tip: Use animal sounds and pictures/flashcards to hold Hussain's attention and make it playful. Say "Can you roar like a bear?" while he bear walks.
š§ Key Principle: At age 3.5, sustained attention span is 3ā5 minutes maximum. Tasks are kept short (2ā3 min), visually engaging, and paired with movement to maintain engagement.
START ā Step over 2 foam blocks ā
Walk along a taped line (balance) ā
Crawl through a tunnel or under a table ā
FINISH: Match a shape/picture card (focus task)
| Stretch | Hold | Target |
|---|---|---|
| Seated hamstring stretch (legs out, reach for toes) | 20 sec Ć 2 | Hamstrings |
| Child's pose (arms forward on mat) | 20 sec Ć 2 | Lower back, hips |
| Shoulder rolls (forward + backward) | 5 Ć each | Shoulder girdle |
| Time | Activity | Goal |
|---|---|---|
| 0ā1:30 | Joint compressions | Sensory arousal, proprioception |
| 1:30ā5:00 | Animal walks | Full-body warm-up |
| 5:00ā8:00 | Therapy ball sitting | Trunk stability |
| 8:00ā10:00 | Bridging | Glutes, lumbar extensors |
| 10:00ā13:00 | Sit-to-stand | Quadriceps, glutes |
| 13:00ā15:00 | Step-ups | Hip extensors, balance |
| 15:00ā17:00 | Wall push-ups | Shoulder stabilisers |
| 17:00ā20:00 | Resistive pulling | Shoulder retractors, biceps |
| 20:00ā22:30 | Cone sorting (kneeling) | Trunk strength + attention |
| 22:30ā25:30 | Obstacle course | Motor planning + focus |
| 25:30ā27:00 | Balloon keep-up | Visual attention + reaction |
| 27:00ā28:30 | Stretching | Flexibility, recovery |
| 28:30ā29:00 | Deep breathing | Calm-down |
| 29:00ā30:00 | Caregiver instruction | Home programme carry-over |
Review: Reassess strength and attention duration at 4 and 8 weeks. If no improvement in tone or gross motor skills after 8 weeks of consistent therapy, escalate to the neurologist for further evaluation.
Can you give me this this plan as pdf
ls -la /home/daytona/workspace/ 2>/dev/null || echo "workspace not found"
mkdir -p /home/daytona/workspace/hussain-pt-plan && echo "created"
~/hussain-pt-plan/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_JUSTIFY
from reportlab.platypus import KeepTogether
OUTPUT = "/home/daytona/workspace/hussain-pt-plan/Hussain_PT_30min_Plan.pdf"
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
rightMargin=1.8*cm, leftMargin=1.8*cm,
topMargin=2*cm, bottomMargin=2*cm
)
W, H = A4
styles = getSampleStyleSheet()
# --- Custom styles ---
def make_style(name, parent='Normal', **kwargs):
s = ParagraphStyle(name, parent=styles[parent])
for k, v in kwargs.items():
setattr(s, k, v)
return s
title_style = make_style('MyTitle', 'Title',
fontSize=18, textColor=colors.HexColor('#1a3a5c'),
spaceAfter=4, leading=22, alignment=TA_CENTER)
subtitle_style = make_style('MySubtitle', 'Normal',
fontSize=11, textColor=colors.HexColor('#2e6da4'),
spaceAfter=6, alignment=TA_CENTER, italic=True)
meta_style = make_style('Meta', 'Normal',
fontSize=9.5, textColor=colors.HexColor('#555555'),
spaceAfter=2, alignment=TA_CENTER)
h1_style = make_style('H1', 'Heading1',
fontSize=13, textColor=colors.white,
spaceBefore=10, spaceAfter=4, leading=16)
h2_style = make_style('H2', 'Heading2',
fontSize=11, textColor=colors.HexColor('#1a3a5c'),
spaceBefore=8, spaceAfter=3, leading=14)
h3_style = make_style('H3', 'Heading3',
fontSize=10.5, textColor=colors.HexColor('#2e6da4'),
spaceBefore=6, spaceAfter=2, leading=13)
body_style = make_style('Body', 'Normal',
fontSize=9.5, textColor=colors.HexColor('#222222'),
spaceAfter=4, leading=14, alignment=TA_JUSTIFY)
bullet_style = make_style('Bullet', 'Normal',
fontSize=9.5, textColor=colors.HexColor('#222222'),
spaceAfter=3, leading=13, leftIndent=14,
bulletIndent=4)
note_style = make_style('Note', 'Normal',
fontSize=9, textColor=colors.HexColor('#555555'),
spaceAfter=3, leading=12, italic=True)
tip_style = make_style('Tip', 'Normal',
fontSize=9, textColor=colors.HexColor('#1a5c2e'),
spaceAfter=3, leading=12, leftIndent=10, italic=True)
warn_style = make_style('Warn', 'Normal',
fontSize=9, textColor=colors.HexColor('#8b0000'),
spaceAfter=3, leading=12, leftIndent=10)
# --- Colours ---
BLUE_DARK = colors.HexColor('#1a3a5c')
BLUE_MED = colors.HexColor('#2e6da4')
BLUE_LIGHT = colors.HexColor('#d6e8f7')
GREEN_LIGHT= colors.HexColor('#e8f5e9')
ORANGE_LIGHT= colors.HexColor('#fff3e0')
HEADER_BG = colors.HexColor('#1a3a5c')
def section_header(text, bg=HEADER_BG):
data = [[Paragraph(f'<font color="white"><b>{text}</b></font>', h1_style)]]
t = Table(data, colWidths=[W - 3.6*cm])
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), bg),
('LEFTPADDING', (0,0), (-1,-1), 10),
('RIGHTPADDING', (0,0), (-1,-1), 10),
('TOPPADDING', (0,0), (-1,-1), 6),
('BOTTOMPADDING', (0,0), (-1,-1), 6),
('ROUNDEDCORNERS', [4, 4, 4, 4]),
]))
return t
def phase_header(text, bg=BLUE_MED):
data = [[Paragraph(f'<font color="white"><b>{text}</b></font>', h2_style)]]
t = Table(data, colWidths=[W - 3.6*cm])
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), bg),
('LEFTPADDING', (0,0), (-1,-1), 8),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
]))
return t
def color_box(paragraphs_list, bg=BLUE_LIGHT):
data = [[p] for p in paragraphs_list]
flat = [[Paragraph('', body_style)]]
content_rows = [[p] for p in paragraphs_list]
all_rows = content_rows
t = Table(all_rows, colWidths=[W - 3.6*cm])
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), bg),
('LEFTPADDING', (0,0), (-1,-1), 10),
('RIGHTPADDING', (0,0), (-1,-1), 10),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('BOX', (0,0), (-1,-1), 0.5, BLUE_MED),
]))
return t
def simple_table(headers, rows, col_widths=None):
col_w = col_widths or [(W - 3.6*cm)/len(headers)] * len(headers)
data = [[Paragraph(f'<b>{h}</b>', make_style('TH','Normal',
fontSize=9, textColor=colors.white)) for h in headers]]
for row in rows:
data.append([Paragraph(str(c), body_style) for c in row])
t = Table(data, colWidths=col_w)
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), BLUE_DARK),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.white, BLUE_LIGHT]),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor('#aaaaaa')),
('LEFTPADDING', (0,0), (-1,-1), 6),
('RIGHTPADDING', (0,0), (-1,-1), 6),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('VALIGN', (0,0), (-1,-1), 'TOP'),
]))
return t
# =====================================================================
story = []
# ---------- TITLE BLOCK ----------
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("30-Minute Physiotherapy Session Plan", title_style))
story.append(Paragraph("Hussain ā Age 3.5 Years | Hypotonia, Muscle Weakness & Attention Difficulties", subtitle_style))
story.append(Paragraph("Therapist: Physiotherapist (PT) | Date: April 28, 2026", meta_style))
story.append(HRFlowable(width="100%", thickness=2, color=BLUE_MED, spaceAfter=8))
# ---------- SESSION OVERVIEW TABLE ----------
story.append(section_header("SESSION STRUCTURE AT A GLANCE"))
story.append(Spacer(1, 0.2*cm))
overview_headers = ["Phase", "Duration", "Goal"]
overview_rows = [
["Warm-Up", "5 min", "Prepare muscles, sensory arousal & alertness"],
["Strength Training Block", "15 min", "Trunk, lower limb & upper limb strengthening"],
["Attention & Focus Block", "7 min", "Sustained attention + motor-cognitive integration"],
["Cool-Down & Carry-Over", "3 min", "Relax, reinforce learning, caregiver instruction"],
]
story.append(simple_table(overview_headers, overview_rows, [4*cm, 3*cm, (W-3.6*cm)-7*cm]))
story.append(Spacer(1, 0.3*cm))
# =========================================================
# PHASE 1 ā WARM-UP
# =========================================================
story.append(phase_header("PHASE 1 ā WARM-UP (0:00 ā 5:00 minutes)"))
story.append(Spacer(1, 0.15*cm))
story.append(Paragraph(
"<b>Goal:</b> Activate proprioceptive input, increase muscle readiness, engage Hussain's alertness.",
body_style))
# Activity 1
story.append(Paragraph("<b>Activity 1: Joint Compression & Deep Pressure (1.5 min)</b>", h3_style))
items_1 = [
"Therapist applies gentle firm pressure down through Hussain's shoulders ā hips ā knees while seated on mat.",
"5ā8 compressions at each joint, rhythmically.",
"<b>Why:</b> Deep proprioceptive input 'wakes up' the nervous system and improves body awareness in hypotonic children.",
]
for i in items_1:
story.append(Paragraph(f"⢠{i}", bullet_style))
story.append(Spacer(1, 0.1*cm))
# Activity 2 ā Animal Walks Table
story.append(Paragraph("<b>Activity 2: Animal Walks (3.5 min)</b>", h3_style))
story.append(Paragraph("Use motivating animal-themed movement to warm up the whole body:", body_style))
animal_headers = ["Animal Walk", "Duration", "Muscles Targeted"]
animal_rows = [
["Bear Walk (hands + feet on floor)", "45 sec", "Core, shoulders, hips"],
["Crab Walk (belly up, hands + feet)", "45 sec", "Triceps, glutes, core"],
["Frog Jumps (squat ā small jump)", "45 sec", "Quadriceps, calves"],
["Inchworm (hands walk forward, feet follow)", "45 sec", "Hamstrings, core, shoulders"],
]
story.append(simple_table(animal_headers, animal_rows, [6*cm, 2.5*cm, (W-3.6*cm)-8.5*cm]))
story.append(Paragraph(
"PT Tip: Use animal sound cues and picture flashcards. Say 'Can you roar like a bear?' to hold Hussain's attention.",
tip_style))
story.append(Spacer(1, 0.2*cm))
# =========================================================
# PHASE 2 ā STRENGTH TRAINING
# =========================================================
story.append(phase_header("PHASE 2 ā STRENGTH TRAINING BLOCK (5:00 ā 20:00 minutes)"))
story.append(Spacer(1, 0.15*cm))
story.append(Paragraph(
"<b>Goal:</b> Target trunk, lower limb, and upper limb muscle groups systematically.",
body_style))
story.append(Spacer(1, 0.1*cm))
# --- TRUNK ---
story.append(Paragraph("A. TRUNK / CORE STRENGTHENING", h2_style))
story.append(Paragraph("<b>Exercise 1: Therapy Ball Sitting (3 min)</b>", h3_style))
ex1 = [
"Hussain sits on a large therapy ball (hips/knees at 90°); therapist holds lightly at hips.",
"<b>Level 1:</b> Sit still and maintain balance ā 30 sec holds Ć 3",
"<b>Level 2:</b> Therapist gently tips ball side-to-side ā Hussain self-corrects",
"<b>Level 3:</b> Pass a coloured ball to the therapist right ā left (rotational core)",
"<b>Sets/Reps:</b> 3 rounds Ć 30ā45 sec each",
"<b>Why:</b> Activates deep spinal stabilisers and lateral trunk muscles, typically weak in central hypotonia.",
]
for i in ex1:
story.append(Paragraph(f"⢠{i}", bullet_style))
story.append(Spacer(1, 0.1*cm))
story.append(Paragraph("<b>Exercise 2: Bridging on Mat (2 min)</b>", h3_style))
ex2 = [
"Hussain lies on his back, knees bent, feet flat on mat.",
"Lift bottom off floor, hold 5ā10 seconds, then lower slowly.",
"<b>Sets/Reps:</b> 2 sets Ć 5 reps",
"<b>Cue:</b> 'Push your feet into the floor and lift your bottom like a bridge!'",
"<b>Why:</b> Strengthens gluteals, hamstrings, and lumbar extensors.",
]
for i in ex2:
story.append(Paragraph(f"⢠{i}", bullet_style))
story.append(Spacer(1, 0.1*cm))
# --- LOWER LIMB ---
story.append(Paragraph("B. LOWER LIMB STRENGTHENING", h2_style))
story.append(Paragraph("<b>Exercise 3: Sit-to-Stand from Low Stool (3 min)</b>", h3_style))
ex3 = [
"Use a low stool (20ā25 cm height) so hips are slightly below knees.",
"Stand up ā sit back down slowly, with minimal hand support.",
"<b>Sets/Reps:</b> 3 sets Ć 5 reps with 30 sec rest between sets.",
"<b>Motivation:</b> Place a sticker or favourite toy on a shelf at standing height ā Hussain reaches for it when he stands.",
"<b>Why:</b> Targets quadriceps and glutes (primary anti-gravity muscles); direct functional carry-over to daily life.",
]
for i in ex3:
story.append(Paragraph(f"⢠{i}", bullet_style))
story.append(Spacer(1, 0.1*cm))
story.append(Paragraph("<b>Exercise 4: Step-Ups on a Low Step (2 min)</b>", h3_style))
ex4 = [
"Use a 10ā15 cm step or foam block.",
"Step up leading with right foot, then left foot; step back down. Alternate leading leg each set.",
"<b>Sets/Reps:</b> 2 sets Ć 5 reps each leg.",
"Therapist holds one hand for balance ā progressively reduce support over sessions.",
"<b>Why:</b> Trains hip extensors, knee stabilisers, and single-leg balance.",
]
for i in ex4:
story.append(Paragraph(f"⢠{i}", bullet_style))
story.append(Spacer(1, 0.1*cm))
# --- UPPER LIMB ---
story.append(Paragraph("C. UPPER LIMB & SHOULDER STRENGTHENING", h2_style))
story.append(Paragraph("<b>Exercise 5: Wall Push-Ups (2 min)</b>", h3_style))
ex5 = [
"Hussain stands facing wall, hands flat at shoulder height.",
"Lean in (elbows bend) ā push back (elbows straight).",
"<b>Sets/Reps:</b> 2 sets Ć 8 reps",
"<b>Cue:</b> 'Push the wall away like a superhero!'",
"<b>Why:</b> Strengthens shoulder stabilisers and triceps; safer than floor push-ups for hypotonic children at this age.",
]
for i in ex5:
story.append(Paragraph(f"⢠{i}", bullet_style))
story.append(Spacer(1, 0.1*cm))
story.append(Paragraph("<b>Exercise 6: Resistive Pulling / Tug Game (3 min)</b>", h3_style))
ex6 = [
"Use a therapy band or rope ring ā therapist holds one end, Hussain holds the other and pulls back.",
"Variation: Pull and sit down slowly against resistance (eccentric training).",
"<b>Sets/Reps:</b> 3 rounds Ć 20 sec pulls",
"<b>Why:</b> Develops shoulder retractors, biceps, and postural muscles simultaneously.",
]
for i in ex6:
story.append(Paragraph(f"⢠{i}", bullet_style))
story.append(Spacer(1, 0.2*cm))
# =========================================================
# PHASE 3 ā ATTENTION & FOCUS
# =========================================================
story.append(phase_header("PHASE 3 ā ATTENTION & FOCUS ACTIVITIES (20:00 ā 27:00 minutes)"))
story.append(Spacer(1, 0.15*cm))
story.append(Paragraph(
"<b>Goal:</b> Integrate motor tasks with cognitive demands ā train sustained attention within movement.",
body_style))
story.append(color_box([
Paragraph(
"<b>Key Principle:</b> At age 3.5, sustained attention span is 3ā5 minutes maximum. "
"Tasks are kept short (2ā3 min), visually engaging, and paired with movement to maintain engagement.",
note_style)
], bg=ORANGE_LIGHT))
story.append(Spacer(1, 0.15*cm))
story.append(Paragraph("<b>Activity 1: Colour Cone Sorting While Kneeling (2.5 min)</b>", h3_style))
act1 = [
"Hussain kneels upright on the mat (kneeling activates core and hip extensors, no passive sitting).",
"Scatter coloured cones/blocks on floor; therapist calls a colour: 'Hussain, give me the RED one!'",
"He finds it and hands it over.",
"<b>Progression:</b> Add 2-step instructions ā 'Give me the RED one and put it in the BOX.'",
"<b>Why:</b> Kneeling requires active trunk stability; sorting demands visual scanning and sustained attention.",
]
for i in act1:
story.append(Paragraph(f"⢠{i}", bullet_style))
story.append(Spacer(1, 0.1*cm))
story.append(Paragraph("<b>Activity 2: Mini Obstacle Course (3 min)</b>", h3_style))
story.append(Paragraph(
"Design a simple 3-step circuit:", body_style))
course_headers = ["Step", "Action", "Benefit"]
course_rows = [
["1", "Step over 2 foam blocks", "Hip flexor activation, balance"],
["2", "Walk along a taped line", "Postural control, proprioception"],
["3", "Crawl under a table/through tunnel", "Upper limb weight-bearing, coordination"],
["FINISH", "Match a shape/picture card", "Sustained attention, cognitive focus"],
]
story.append(simple_table(course_headers, course_rows, [2*cm, 6*cm, (W-3.6*cm)-8*cm]))
story.append(Paragraph(
"Complete 3ā4 rounds. Therapist times Hussain: 'Can you beat your last time?' ā adds motivation.",
tip_style))
story.append(Spacer(1, 0.1*cm))
story.append(Paragraph("<b>Activity 3: Balloon Keep-Up (1.5 min)</b>", h3_style))
act3 = [
"Hit a balloon back and forth ā Hussain must not let it touch the floor.",
"<b>Why:</b> Visual tracking + reactive movement + sustained engagement. Balloons are slow so they are accessible for a child with low tone and delayed reactions.",
]
for i in act3:
story.append(Paragraph(f"⢠{i}", bullet_style))
story.append(Spacer(1, 0.2*cm))
# =========================================================
# PHASE 4 ā COOL-DOWN
# =========================================================
story.append(phase_header("PHASE 4 ā COOL-DOWN & CARRY-OVER (27:00 ā 30:00 minutes)"))
story.append(Spacer(1, 0.15*cm))
story.append(Paragraph("<b>Gentle Stretching (1.5 min)</b>", h3_style))
stretch_headers = ["Stretch", "Hold", "Target"]
stretch_rows = [
["Seated hamstring stretch (legs out, reach for toes)", "20 sec Ć 2", "Hamstrings"],
["Child's pose (arms forward on mat)", "20 sec Ć 2", "Lower back, hips"],
["Shoulder rolls (forward + backward)", "5 Ć each direction", "Shoulder girdle"],
]
story.append(simple_table(stretch_headers, stretch_rows, [7.5*cm, 3*cm, (W-3.6*cm)-10.5*cm]))
story.append(Spacer(1, 0.1*cm))
story.append(Paragraph("<b>Breathing & Calm-Down (30 sec)</b>", h3_style))
story.append(Paragraph(
"Deep belly breaths: 'Smell the flowers' (inhale slowly) ā 'Blow out the candles' (exhale). "
"3ā5 breaths together. Helps Hussain transition out of the active session.",
body_style))
story.append(Spacer(1, 0.1*cm))
story.append(Paragraph("<b>Caregiver Carry-Over Instructions (1 min)</b>", h3_style))
story.append(Paragraph(
"Give the parent/caregiver ONE home exercise to practise daily. "
"Example for today: <b>Sit-to-stand from sofa Ć 5 reps, twice a day.</b> "
"Provide a simple picture card or verbal instruction.",
body_style))
story.append(Spacer(1, 0.2*cm))
# =========================================================
# SESSION SUMMARY TABLE
# =========================================================
story.append(section_header("FULL SESSION TIMELINE"))
story.append(Spacer(1, 0.15*cm))
timeline_headers = ["Time", "Activity", "Goal"]
timeline_rows = [
["0:00ā1:30", "Joint compressions", "Sensory arousal, proprioception"],
["1:30ā5:00", "Animal walks", "Full-body warm-up"],
["5:00ā8:00", "Therapy ball sitting", "Trunk stability"],
["8:00ā10:00", "Bridging on mat", "Glutes, lumbar extensors"],
["10:00ā13:00", "Sit-to-stand from stool", "Quadriceps, glutes"],
["13:00ā15:00", "Step-ups", "Hip extensors, balance"],
["15:00ā17:00", "Wall push-ups", "Shoulder stabilisers"],
["17:00ā20:00", "Resistive pulling", "Shoulder retractors, biceps"],
["20:00ā22:30", "Colour cone sorting (kneeling)", "Trunk strength + attention"],
["22:30ā25:30", "Mini obstacle course", "Motor planning + focus"],
["25:30ā27:00", "Balloon keep-up", "Visual attention + reaction"],
["27:00ā28:30", "Stretching", "Flexibility, recovery"],
["28:30ā29:00", "Deep breathing", "Calm-down, self-regulation"],
["29:00ā30:00", "Caregiver instruction", "Home programme carry-over"],
]
story.append(simple_table(timeline_headers, timeline_rows, [3*cm, 6.5*cm, (W-3.6*cm)-9.5*cm]))
story.append(Spacer(1, 0.3*cm))
# =========================================================
# THERAPIST NOTES
# =========================================================
story.append(section_header("THERAPIST NOTES & IMPORTANT GUIDANCE"))
story.append(Spacer(1, 0.15*cm))
notes = [
("<b>Rest:</b> Give 20ā30 sec rest between sets. Hypotonic children fatigue faster ā watch for "
"slumping posture, reduced effort, or distress as fatigue signs."),
("<b>Verbal Cues:</b> Keep instructions to 3ā5 words ('Push the wall!', 'Stand up tall!'). "
"Long sentences reduce compliance at this age."),
("<b>Positive Reinforcement:</b> Use a sticker chart ā Hussain earns a sticker for completing "
"each phase. This directly trains task persistence and attention."),
("<b>Seating Support:</b> When Hussain is not doing active exercises, use a supportive chair "
"with footrest so he is not spending energy fighting gravity while at rest."),
("<b>Avoid W-Sitting:</b> Do not allow Hussain to W-sit (between legs in W shape) ā this "
"further weakens hip stabilisers. Encourage cross-legged or long-sitting instead."),
("<b>Progress Tracking:</b> Document reps achieved, quality of movement (e.g., head lag during "
"sit-to-stand), and attention duration at each session to track improvement over weeks."),
("<b>Review:</b> Reassess strength and attention duration at 4 and 8 weeks. If no improvement "
"after 8 weeks of consistent therapy, escalate to the neurologist for further evaluation."),
]
for n in notes:
story.append(Paragraph(f"⢠{n}", bullet_style))
story.append(Spacer(1, 0.2*cm))
# =========================================================
# RED FLAGS
# =========================================================
story.append(color_box([
Paragraph("<b>ā RED FLAGS ā Seek Urgent Medical Review If:</b>", warn_style),
Paragraph("⢠Hussain loses previously gained motor milestones (regression)", warn_style),
Paragraph("⢠Difficulty breathing, swallowing, or feeding worsens", warn_style),
Paragraph("⢠Seizures or episodes of unresponsiveness occur", warn_style),
Paragraph("⢠Significant weight loss or failure to thrive", warn_style),
Paragraph("⢠Rapid muscle wasting noted", warn_style),
], bg=colors.HexColor('#fff0f0')))
story.append(Spacer(1, 0.2*cm))
# Footer note
story.append(HRFlowable(width="100%", thickness=1, color=BLUE_MED, spaceAfter=4))
story.append(Paragraph(
"This plan is a clinical framework. Exact interventions and frequency must be tailored by "
"Hussain's treating physiotherapist and MDT after full clinical assessment. "
"Underlying cause of hypotonia determines specific long-term management.",
note_style))
story.append(Paragraph(
"References: Bradley and Daroff's Neurology in Clinical Practice | The Harriet Lane Handbook, 23rd Ed.",
note_style))
# Build
doc.build(story)
print(f"PDF saved to: {OUTPUT}")