can you make me presentation for my seminar on global developmental delay with font size of 20 . you can take reference from iap guidlines from indian pediatrics journal . headings should include defination of gdd , prevalence ,etiology with percentages, developmental survillieance and screening, clinical evaluation - investigations managemnet , comorbidities associated with gdd- their prevalence , chart on management of co morbidities counselling in gdd prognosis and follow up in gdd, gdd and genetics lastly flowchart with approach to gdd and many other flowcharts you can include
IAP guidelines global developmental delay Indian Pediatrics 2020 2021 2022 2023
https://indianpediatrics.net/may2022/401.pdf
https://indianpediatrics.net/may2022/401.pdf
mkdir -p /tmp/workspace/gdd-seminar && ls /tmp/workspace/gdd-seminar/
~/gdd-seminar/build_gdd_pptx.py
from pptx import Presentation
from pptx.util import Inches, Pt, Emu
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.util import Inches, Pt
from pptx.oxml.ns import qn
from pptx.oxml import parse_xml
from lxml import etree
import copy
# ─── COLOUR PALETTE ────────────────────────────────────────────────────────────
NAVY = RGBColor(0x0D, 0x2C, 0x54) # dark navy – title BG / accent bars
TEAL = RGBColor(0x00, 0x7E, 0x8A) # teal – slide header strips
GOLD = RGBColor(0xF5, 0xA6, 0x23) # gold – accent bullets & borders
SKY = RGBColor(0xE8, 0xF4, 0xF8) # light sky – content BG
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
DARK_TXT = RGBColor(0x1A, 0x1A, 0x2E)
LIGHT_TXT = RGBColor(0xF0, 0xF0, 0xF0)
GREEN = RGBColor(0x27, 0xAE, 0x60)
RED = RGBColor(0xC0, 0x39, 0x2B)
ORANGE = RGBColor(0xE6, 0x72, 0x2E)
PURPLE = RGBColor(0x6C, 0x3A, 0x83)
BODY_FONT_SIZE = Pt(20)
HEAD_FONT_SIZE = Pt(28)
TITLE_FONT_SIZE = Pt(38)
SUB_FONT_SIZE = Pt(22)
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
blank = prs.slide_layouts[6]
# ─── HELPERS ────────────────────────────────────────────────────────────────────
def add_rect(slide, x, y, w, h, fill_color, line_color=None, line_width=None):
shape = slide.shapes.add_shape(1, Inches(x), Inches(y), Inches(w), Inches(h))
shape.fill.solid(); shape.fill.fore_color.rgb = fill_color
if line_color:
shape.line.color.rgb = line_color
shape.line.width = Pt(line_width or 1.5)
else:
shape.line.fill.background()
return shape
def add_textbox(slide, text, x, y, w, h,
font_size=BODY_FONT_SIZE, bold=False, italic=False,
color=DARK_TXT, align=PP_ALIGN.LEFT, wrap=True,
v_anchor=MSO_ANCHOR.TOP, font_name="Calibri"):
tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
tf = tb.text_frame; tf.word_wrap = wrap
tf.auto_size = None
tf.vertical_anchor = v_anchor
p = tf.paragraphs[0]; p.alignment = align
r = p.add_run(); r.text = text
r.font.size = font_size; r.font.bold = bold; r.font.italic = italic
r.font.color.rgb = color; r.font.name = font_name
return tb
def add_ml_textbox(slide, lines, x, y, w, h,
font_size=BODY_FONT_SIZE, bold_first=False,
color=DARK_TXT, wrap=True,
bullet=False, indent_level=0,
v_anchor=MSO_ANCHOR.TOP, font_name="Calibri",
line_spacing_pt=None):
"""lines = list of (text, bold, color_override_or_None, indent_level)"""
tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
tf = tb.text_frame; tf.word_wrap = wrap
tf.auto_size = None
tf.vertical_anchor = v_anchor
first = True
for item in lines:
if isinstance(item, str):
txt, bld, col, lvl = item, False, None, 0
else:
txt = item[0]
bld = item[1] if len(item)>1 else False
col = item[2] if len(item)>2 else None
lvl = item[3] if len(item)>3 else 0
if first:
p = tf.paragraphs[0]; first = False
else:
p = tf.add_paragraph()
p.alignment = PP_ALIGN.LEFT
p.level = lvl
if line_spacing_pt:
p.line_spacing = Pt(line_spacing_pt)
if bullet:
pPr = p._pPr
if pPr is None:
pPr = p._p.get_or_add_pPr()
buNone = etree.SubElement(pPr, qn('a:buChar'))
buNone.set('char', '•')
r = p.add_run(); r.text = txt
r.font.size = font_size
r.font.bold = bld
r.font.color.rgb = col if col else color
r.font.name = font_name
return tb
def slide_header(slide, title_text, subtitle=None):
"""Adds dark navy header bar + gold accent line + title text"""
add_rect(slide, 0, 0, 13.333, 1.1, NAVY)
add_rect(slide, 0, 1.1, 13.333, 0.08, GOLD)
add_textbox(slide, title_text, 0.3, 0.08, 12.5, 1.0,
font_size=HEAD_FONT_SIZE, bold=True, color=WHITE,
align=PP_ALIGN.LEFT, v_anchor=MSO_ANCHOR.MIDDLE)
if subtitle:
add_textbox(slide, subtitle, 0.3, 1.1, 12.5, 0.5,
font_size=Pt(16), color=TEAL)
add_rect(slide, 0, 1.18, 13.333, 6.32, SKY) # content BG
def footer(slide, text="IAP Guidelines 2022 | Indian Pediatrics | GDD Seminar"):
add_rect(slide, 0, 7.15, 13.333, 0.35, NAVY)
add_textbox(slide, text, 0.3, 7.16, 12.5, 0.3,
font_size=Pt(11), color=LIGHT_TXT, align=PP_ALIGN.CENTER)
# ════════════════════════════════════════════════════════════════════════════════
# SLIDE 1 – TITLE SLIDE
# ════════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_rect(slide, 0, 0, 13.333, 7.5, NAVY)
add_rect(slide, 0, 0, 0.4, 7.5, GOLD) # left accent bar
add_rect(slide, 0, 3.5, 13.333, 0.06, GOLD) # divider
add_textbox(slide, "GLOBAL DEVELOPMENTAL DELAY", 0.7, 0.8, 12, 1.5,
font_size=Pt(40), bold=True, color=WHITE, align=PP_ALIGN.CENTER,
v_anchor=MSO_ANCHOR.MIDDLE)
add_textbox(slide, "GDD", 0.7, 2.1, 12, 0.9,
font_size=Pt(28), bold=True, color=GOLD, align=PP_ALIGN.CENTER)
add_textbox(slide, "A Comprehensive Seminar Presentation", 0.7, 3.0, 12, 0.6,
font_size=Pt(22), color=RGBColor(0xCC,0xE5,0xFF), align=PP_ALIGN.CENTER)
add_rect(slide, 0, 3.56, 13.333, 0.06, GOLD)
add_textbox(slide, "Based on IAP Consensus Guidelines 2022", 0.7, 3.7, 12, 0.55,
font_size=Pt(18), bold=True, color=GOLD, align=PP_ALIGN.CENTER)
add_textbox(slide, "Juneja M, et al. Indian Pediatrics. 2022;59:401-415.", 0.7, 4.25, 12, 0.5,
font_size=Pt(16), color=RGBColor(0xAA,0xCC,0xFF), align=PP_ALIGN.CENTER, italic=True)
add_textbox(slide, "Growth, Development & Behavioral Pediatrics Chapter | Neurology Chapter\nNeurodevelopment Pediatrics Chapter — Indian Academy of Pediatrics (IAP)",
0.7, 5.0, 12, 0.9,
font_size=Pt(16), color=RGBColor(0xBB,0xDD,0xFF), align=PP_ALIGN.CENTER)
add_rect(slide, 0, 7.15, 13.333, 0.35, RGBColor(0x08,0x20,0x40))
# ════════════════════════════════════════════════════════════════════════════════
# SLIDE 2 – TABLE OF CONTENTS
# ════════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
slide_header(slide, "Table of Contents")
footer(slide)
toc_left = [
("1. Definition of GDD", True, NAVY, 0),
("2. Prevalence", False, DARK_TXT, 0),
("3. Etiology with Percentages", False, DARK_TXT, 0),
("4. Developmental Surveillance & Screening", False, DARK_TXT, 0),
("5. Clinical Evaluation", False, DARK_TXT, 0),
("6. Investigations", False, DARK_TXT, 0),
("7. Management", False, DARK_TXT, 0),
("8. Comorbidities & Their Prevalence", False, DARK_TXT, 0),
]
toc_right = [
("9. Management of Comorbidities (Chart)", True, NAVY, 0),
("10. Counselling in GDD", False, DARK_TXT, 0),
("11. Prognosis & Follow-Up", False, DARK_TXT, 0),
("12. GDD & Genetics", False, DARK_TXT, 0),
("13. Flowchart: Approach to GDD", False, DARK_TXT, 0),
("14. Flowchart: Developmental Screening Algorithm", False, DARK_TXT, 0),
("15. Flowchart: Investigation Pathway", False, DARK_TXT, 0),
("16. Flowchart: Management Algorithm", False, DARK_TXT, 0),
]
add_rect(slide, 0.3, 1.3, 6.2, 5.7, WHITE, TEAL, 1.0)
add_rect(slide, 6.8, 1.3, 6.2, 5.7, WHITE, TEAL, 1.0)
add_ml_textbox(slide, toc_left, 0.5, 1.4, 5.8, 5.5,
font_size=Pt(19), line_spacing_pt=28)
add_ml_textbox(slide, toc_right, 7.0, 1.4, 5.8, 5.5,
font_size=Pt(19), line_spacing_pt=28)
# ════════════════════════════════════════════════════════════════════════════════
# SLIDE 3 – DEFINITION OF GDD
# ════════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
slide_header(slide, "Definition of Global Developmental Delay (GDD)")
footer(slide)
add_rect(slide, 0.3, 1.3, 12.7, 1.65, WHITE, NAVY, 1.5)
add_textbox(slide, "IAP / AAN Definition", 0.4, 1.32, 5, 0.4,
font_size=Pt(16), bold=True, color=NAVY)
add_ml_textbox(slide, [
("GDD is defined as a significant delay in two or more of the following developmental domains:", False, DARK_TXT, 0),
("in children under 5 years of age.", False, DARK_TXT, 0),
], 0.4, 1.72, 12.3, 0.9, font_size=Pt(20))
domains = ["Gross / Fine Motor", "Speech / Language", "Cognition", "Social / Personal", "Activities of Daily Living (ADL)"]
colors = [TEAL, NAVY, GOLD, GREEN, PURPLE]
for i, (d, c) in enumerate(zip(domains, colors)):
x = 0.3 + i*2.57
add_rect(slide, x, 2.75, 2.4, 0.7, c)
add_textbox(slide, d, x+0.05, 2.78, 2.3, 0.65,
font_size=Pt(17), bold=True, color=WHITE, align=PP_ALIGN.CENTER,
v_anchor=MSO_ANCHOR.MIDDLE)
add_rect(slide, 0.3, 3.6, 12.7, 2.2, WHITE, GOLD, 1.5)
add_textbox(slide, "Key Criteria & Qualifications", 0.4, 3.62, 8, 0.4,
font_size=Pt(17), bold=True, color=GOLD)
criteria = [
("• Significant delay = Performance ≥2 SD below mean on age-appropriate standardized tests", False, DARK_TXT, 0),
("• Applies to children who are too young (< 5 years) or unable to undergo standardized intellectual assessment", False, DARK_TXT, 0),
("• Excluded: Delays explained primarily by motor deficits alone or severe uncorrected sensory impairment", False, DARK_TXT, 0),
("• GDD is NOT synonymous with Intellectual Disability (ID) — GDD is the under-5 equivalent", False, DARK_TXT, 0),
]
add_ml_textbox(slide, criteria, 0.4, 4.05, 12.5, 1.9,
font_size=Pt(20), line_spacing_pt=27)
add_rect(slide, 0.3, 5.95, 12.7, 0.75, SKY, TEAL, 0.8)
add_ml_textbox(slide, [
("Severity Classification (SQ-based): Mild: SQ 55–70 | Moderate: 36–54 | Severe: 21–35 | Profound: <20", False, NAVY, 0)
], 0.4, 5.98, 12.5, 0.65, font_size=Pt(20), bold=False)
# ════════════════════════════════════════════════════════════════════════════════
# SLIDE 4 – PREVALENCE
# ════════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
slide_header(slide, "Prevalence of GDD")
footer(slide)
prev_data = [
("Global Estimates", "1–3%", TEAL, "Based on standardized population studies worldwide"),
("Turkey (Recent)", "6.4%", ORANGE,"Yildiz et al., higher screening sensitivity"),
("UAE (Recent)", "8.0%", RED, "Recent multicentre study"),
("India (Range)", "3–13%", NAVY, "Varies by age group, region, tools used"),
("Gender Difference", "+30%", PURPLE,"GDD is 30% more common in boys; gap narrows with age"),
]
for i, (label, val, col, note) in enumerate(prev_data):
x = 0.3; y = 1.4 + i*1.1
add_rect(slide, x, y, 2.5, 0.9, col)
add_textbox(slide, label, x+0.05, y+0.05, 2.4, 0.4,
font_size=Pt(17), bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE)
add_rect(slide, 2.85, y, 1.4, 0.9, WHITE, col, 2.0)
add_textbox(slide, val, 2.87, y, 1.36, 0.9,
font_size=Pt(26), bold=True, color=col,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
add_rect(slide, 4.3, y, 8.7, 0.9, RGBColor(0xF7,0xF9,0xFF), col, 0.5)
add_textbox(slide, note, 4.4, y+0.15, 8.5, 0.6,
font_size=Pt(19), color=DARK_TXT)
add_rect(slide, 0.3, 6.9, 12.7, 0.2, GOLD)
add_textbox(slide, "India: Prevalence likely underestimated due to screening-only data; HIE & hypothyroidism more common cause vs. developed countries",
0.3, 6.8, 12.7, 0.4, font_size=Pt(17), color=NAVY, align=PP_ALIGN.CENTER)
# ════════════════════════════════════════════════════════════════════════════════
# SLIDE 5 – ETIOLOGY (overview)
# ════════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
slide_header(slide, "Etiology of GDD — Overview")
footer(slide)
add_rect(slide, 0.3, 1.25, 12.7, 0.4, TEAL)
add_textbox(slide, "Etiology is HETEROGENEOUS — Genetic (30–50%) + Non-Genetic (50–70%) | Classified as: Prenatal · Perinatal · Postnatal",
0.35, 1.27, 12.5, 0.36, font_size=Pt(18), bold=True, color=WHITE)
etio_groups = [
("GENETIC (30–50%)", NAVY, [
"Chromosomal abnormalities (Down syndrome, etc.)",
"Single-gene disorders (Fragile X, Rett syndrome)",
"Genomic disorders (22q11.2 deletion, etc.)",
"Metabolic / inborn errors of metabolism (~1–5%)",
"Syndromic vs. Non-syndromic GDD",
]),
("PRENATAL (Non-Genetic)", TEAL, [
"TORCH infections (CMV, Toxoplasma, Rubella)",
"Intrauterine growth restriction (IUGR)",
"Teratogen exposure (alcohol, drugs)",
"Brain malformations (lissencephaly, PMG)",
"Thyroid disorders in mother",
]),
("PERINATAL", ORANGE, [
"Hypoxic Ischemic Encephalopathy (HIE) — more common in India",
"Prematurity / Very low birth weight",
"Neonatal jaundice (kernicterus)",
"Perinatal infections (meningitis, sepsis)",
"Neonatal hypoglycemia",
]),
("POSTNATAL", PURPLE, [
"CNS infections (meningitis, encephalitis)",
"Traumatic brain injury",
"Lead / heavy metal poisoning",
"Severe malnutrition",
"Hypothyroidism (congenital / acquired)",
]),
]
for idx, (title, col, items) in enumerate(etio_groups):
row, col_idx = divmod(idx, 2)
x = 0.3 + col_idx * 6.6
y = 1.75 + row * 2.75
add_rect(slide, x, y, 6.3, 0.42, col)
add_textbox(slide, title, x+0.1, y+0.03, 6.0, 0.38,
font_size=Pt(17), bold=True, color=WHITE)
add_rect(slide, x, y+0.42, 6.3, 2.25, WHITE, col, 0.8)
lines = [("• "+it, False, DARK_TXT, 0) for it in items]
add_ml_textbox(slide, lines, x+0.1, y+0.45, 6.1, 2.15,
font_size=Pt(18), line_spacing_pt=24)
# ════════════════════════════════════════════════════════════════════════════════
# SLIDE 6 – ETIOLOGY WITH PERCENTAGES (visual chart-style)
# ════════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
slide_header(slide, "Etiology — Percentage Breakdown (IAP Guidelines 2022)")
footer(slide)
bars = [
("Genetic causes (total)", "30–50%", 0.50, NAVY),
("Chromosomal / syndromic", "~15%", 0.30, TEAL),
("Single-gene / genomic", "~15%", 0.30, PURPLE),
("Inborn errors of metabolism", "1–5%", 0.10, GREEN),
("Hypoxic Ischemic Encephalopathy", "~10–15%",0.28, RED),
("Prematurity / Low birth weight", "~8–12%", 0.22, ORANGE),
("CNS malformations", "~5–8%", 0.16, RGBColor(0x1A,0x78,0xC2)),
("Unknown / Idiopathic", "30–40%", 0.40, RGBColor(0x7F,0x8C,0x8D)),
("Other (infections, toxins, etc.)", "5–10%", 0.18, GOLD),
]
add_rect(slide, 0.3, 1.22, 12.7, 5.7, WHITE, RGBColor(0xDD,0xDD,0xDD), 0.5)
bar_w_max = 8.0
for i, (label, pct, frac, col) in enumerate(bars):
y = 1.35 + i*0.62
add_textbox(slide, label, 0.4, y, 4.0, 0.55,
font_size=Pt(19), color=DARK_TXT, v_anchor=MSO_ANCHOR.MIDDLE)
add_rect(slide, 4.5, y+0.08, bar_w_max*frac, 0.42, col)
add_textbox(slide, pct, 4.5 + bar_w_max*frac + 0.1, y, 1.5, 0.55,
font_size=Pt(19), bold=True, color=col, v_anchor=MSO_ANCHOR.MIDDLE)
add_rect(slide, 0.3, 7.0, 12.7, 0.35, RGBColor(0xE8,0xF0,0xFE), NAVY, 0.5)
add_textbox(slide, "Note: In India — HIE, hypothyroidism and malnutrition are relatively more common causes compared to Western countries",
0.4, 7.02, 12.3, 0.3, font_size=Pt(17), color=NAVY, italic=True)
# ════════════════════════════════════════════════════════════════════════════════
# SLIDE 7 – DEVELOPMENTAL SURVEILLANCE & SCREENING
# ════════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
slide_header(slide, "Developmental Surveillance & Screening")
footer(slide)
add_rect(slide, 0.3, 1.25, 5.9, 5.7, WHITE, NAVY, 1.5)
add_rect(slide, 0.3, 1.25, 5.9, 0.5, NAVY)
add_textbox(slide, "SURVEILLANCE (All Children)", 0.35, 1.27, 5.8, 0.46,
font_size=Pt(18), bold=True, color=WHITE)
surv = [
("• Routine developmental surveillance at EVERY well-child visit", False, DARK_TXT, 0),
("• Use IAP Red Flags Checklist", False, DARK_TXT, 0),
("• Parental concern should always be taken seriously", False, DARK_TXT, 0),
("• Ask: Is child doing age-appropriate activities?", False, DARK_TXT, 0),
("• Observe parent–child interaction", False, DARK_TXT, 0),
("• Record developmental milestones at every visit", False, DARK_TXT, 0),
]
add_ml_textbox(slide, surv, 0.4, 1.78, 5.7, 4.8,
font_size=Pt(19), line_spacing_pt=30)
add_rect(slide, 6.4, 1.25, 6.6, 5.7, WHITE, TEAL, 1.5)
add_rect(slide, 6.4, 1.25, 6.6, 0.5, TEAL)
add_textbox(slide, "SCREENING (Schedule per IAP)", 6.45, 1.27, 6.5, 0.46,
font_size=Pt(18), bold=True, color=WHITE)
screen = [
("Normal Risk Children:", True, NAVY, 0),
(" → 9–12 months", False, DARK_TXT, 0),
(" → 18–24 months", False, DARK_TXT, 0),
(" → School entry (4.5–5 years)", False, DARK_TXT, 0),
("High Risk Infants (NICU, prematurity, etc.):", True, NAVY, 0),
(" → Every 6 months till 24 months", False, DARK_TXT, 0),
(" → Yearly from 24 months to 5 years", False, DARK_TXT, 0),
(" → Once at school entry", False, DARK_TXT, 0),
("Tools: DASII, Trivandrum DD Chart, BSID-III", True, TEAL, 0),
(" DDST-II, ASQ, Vineland-II (adaptive)", False, DARK_TXT, 0),
]
add_ml_textbox(slide, screen, 6.5, 1.78, 6.3, 4.8,
font_size=Pt(19), line_spacing_pt=27)
# ════════════════════════════════════════════════════════════════════════════════
# SLIDE 8 – CLINICAL EVALUATION
# ════════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
slide_header(slide, "Clinical Evaluation of GDD")
footer(slide)
eval_sections = [
("HISTORY", NAVY, [
"Antenatal: TORCH infections, drug/teratogen exposure, IUGR, maternal illness",
"Birth: Mode of delivery, APGAR score, neonatal resuscitation, birth asphyxia",
"Postnatal: Feeding difficulties, seizures, hospitalizations, head growth",
"Developmental: Age at attainment of milestones; any regression?",
"Family: Consanguinity, similar conditions in relatives, ethnicity",
"Social: SES, caregiving environment, nutrition, stimulation",
]),
("PHYSICAL EXAMINATION", TEAL, [
"Anthropometry: Head circumference (micro/macrocephaly), height, weight",
"Dysmorphic features: Face, ears, hands, feet — suggests syndromic GDD",
"Skin: Neurocutaneous markers (café-au-lait, ash-leaf, adenoma sebaceum)",
"Neurological: Tone (hyper/hypotonia), reflexes, gait, coordination",
"Ophthalmology: Cataracts, corneal clouding, retinal changes",
"Behavioral: Interaction, eye contact, response to name, stereotypies",
]),
]
for idx, (title, col, items) in enumerate(eval_sections):
x = 0.3 + idx * 6.55
add_rect(slide, x, 1.25, 6.2, 0.45, col)
add_textbox(slide, title, x+0.1, 1.27, 6.0, 0.41,
font_size=Pt(18), bold=True, color=WHITE)
add_rect(slide, x, 1.7, 6.2, 5.2, WHITE, col, 0.8)
lines = [("• "+it, False, DARK_TXT, 0) for it in items]
add_ml_textbox(slide, lines, x+0.1, 1.75, 6.0, 5.1,
font_size=Pt(19), line_spacing_pt=29)
# ════════════════════════════════════════════════════════════════════════════════
# SLIDE 9 – INVESTIGATIONS
# ════════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
slide_header(slide, "Investigations in GDD (IAP Guideline Recommended)")
footer(slide)
inv_rows = [
("TIER 1 — All Children", NAVY, [
"Thyroid function tests (T4, TSH)",
"Metabolic screen: blood glucose, ammonia, lactate",
"Formal audiological evaluation (BERA)",
"Formal visual assessment (ERG if needed)",
"Urine for metabolic screen (amino acids, organic acids)",
]),
("TIER 2 — Based on Clinical Clues", TEAL, [
"MRI Brain — first-line if neurological signs / abnormal head circumference",
"EEG — if seizures suspected or developmental regression",
"Chromosomal microarray (CMA) — first-line genetic test",
"FISH / Karyotype — if specific syndrome suspected",
"Plasma amino acids, urine organic acids, lysosomal enzymes",
]),
("TIER 3 — Targeted", PURPLE, [
"Whole Exome Sequencing (WES) / Whole Genome Sequencing",
"Fragile X molecular testing (FMR1 — males first)",
"Mitochondrial genome panel",
"Newborn screening confirmatory tests (if missed)",
"Other: Lead levels, copper, ceruloplasmin, CSF analysis",
]),
("DIAGNOSTIC YIELD", ORANGE, [
"CMA: ~15–20% diagnostic yield in non-specific GDD",
"WES: Additional 25–30% yield after negative CMA",
"MRI Brain: Abnormal in ~30–50% of GDD cases",
"Metabolic tests: ~1–5% diagnostic yield",
"Overall: Etiology identified in ~50–60% with full workup",
]),
]
for idx, (title, col, items) in enumerate(inv_rows):
row, ci = divmod(idx, 2)
x = 0.3 + ci*6.55
y = 1.25 + row*2.9
add_rect(slide, x, y, 6.2, 0.42, col)
add_textbox(slide, title, x+0.1, y+0.03, 6.0, 0.38,
font_size=Pt(16), bold=True, color=WHITE)
add_rect(slide, x, y+0.42, 6.2, 2.4, WHITE, col, 0.8)
lines = [("• "+it, False, DARK_TXT, 0) for it in items]
add_ml_textbox(slide, lines, x+0.1, y+0.46, 6.0, 2.3,
font_size=Pt(18), line_spacing_pt=25)
# ════════════════════════════════════════════════════════════════════════════════
# SLIDE 10 – MANAGEMENT
# ════════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
slide_header(slide, "Management of GDD")
footer(slide)
add_textbox(slide, "Multidisciplinary Intervention — Begin EARLY, even before formal diagnosis", 0.3, 1.25,
12.7, 0.45, font_size=Pt(20), bold=True, color=NAVY)
mgmt_cols = [
("EARLY INTERVENTION\n(0–3 yrs)", TEAL, [
"Developmentally supportive care in NICU for high-risk",
"Infant stimulation programs",
"Parent-mediated home-based intervention",
"District Early Intervention Centres (DEIC) — free under RBSK",
"Sensory stimulation: visual, auditory, tactile",
]),
("THERAPIES", NAVY, [
"Speech & Language Therapy (SLT)",
"Occupational Therapy (OT)",
"Physiotherapy (PT) / Neuro-developmental therapy",
"Applied Behaviour Analysis (ABA) for ASD",
"Feeding therapy for oral-motor dysfunction",
"Hydrotherapy / Aquatic therapy",
]),
("SPECIAL EDUCATION", PURPLE, [
"Individualized Education Plan (IEP)",
"Inclusive schooling in least restrictive environment",
"Special schools when needed",
"Vocational training for older children",
"Visual supports, augmentative communication (AAC)",
]),
("MEDICAL / SPECIFIC", ORANGE, [
"Treat underlying etiology if possible (e.g. PKU diet, hypothyroid Rx)",
"Anti-epileptics for seizure control",
"Nutritional supplementation (iron, zinc, vitamins)",
"Medications for ADHD, anxiety, behaviour",
"Surgery for structural anomalies if indicated",
]),
]
for idx, (title, col, items) in enumerate(mgmt_cols):
x = 0.3 + idx*3.28
add_rect(slide, x, 1.75, 3.1, 0.5, col)
add_textbox(slide, title, x+0.05, 1.77, 3.0, 0.46,
font_size=Pt(15), bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
add_rect(slide, x, 2.25, 3.1, 4.65, WHITE, col, 0.8)
lines = [("• "+it, False, DARK_TXT, 0) for it in items]
add_ml_textbox(slide, lines, x+0.08, 2.3, 2.95, 4.55,
font_size=Pt(17), line_spacing_pt=25)
# ════════════════════════════════════════════════════════════════════════════════
# SLIDE 11 – COMORBIDITIES & PREVALENCE
# ════════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
slide_header(slide, "Comorbidities in GDD & Their Prevalence")
footer(slide)
add_rect(slide, 0.3, 1.25, 12.7, 0.38, TEAL)
add_textbox(slide, "Source: IAP Consensus Guidelines 2022 — Juneja M, et al. Indian Pediatrics 59:401–415",
0.35, 1.27, 12.5, 0.34, font_size=Pt(16), bold=False, color=WHITE, italic=True)
neuro = [
("Visual deficits", "15–75%", TEAL),
("Hearing impairment", "9–17%", NAVY),
("Epilepsy / Seizures", "5–30%", RED),
("Cerebral Palsy", "8–30%", ORANGE),
("Pseudobulbar / Feeding", "20–47%", PURPLE),
("Sleep disturbances", "40–80%", RGBColor(0x1A,0x78,0xC2)),
]
psych = [
("ADHD", "35–40%", NAVY),
("Autism Spectrum Disorder", "15–20%", TEAL),
("Disruptive / Aggression", "26%", RED),
("Mood / Anxiety Disorder", "Variable", PURPLE),
("Stereotypic movements", "Common", ORANGE),
("Self-injurious behaviour", "Variable", RGBColor(0x6D,0x4C,0x41)),
]
other = [
("Protein-Energy Malnutrition", "40–70%", ORANGE),
("Recurrent infections", "Common", TEAL),
("Drooling (sialorrhoea)", "45%", NAVY),
("Constipation", "30–60%", PURPLE),
("Nutritional anaemia", "5.5%", RED),
("Dental problems", "Variable", RGBColor(0x78,0x90,0x9C)),
]
def comorb_section(slide, title, col, items, x, y):
add_rect(slide, x, y, 4.15, 0.42, col)
add_textbox(slide, title, x+0.05, y+0.03, 4.0, 0.38,
font_size=Pt(16), bold=True, color=WHITE)
for i, (cond, prev, c) in enumerate(items):
bg = WHITE if i%2==0 else SKY
add_rect(slide, x, y+0.42+i*0.56, 4.15, 0.55, bg, RGBColor(0xDD,0xDD,0xDD), 0.3)
add_textbox(slide, cond, x+0.05, y+0.43+i*0.56, 2.7, 0.52,
font_size=Pt(18), color=DARK_TXT, v_anchor=MSO_ANCHOR.MIDDLE)
add_rect(slide, x+2.8, y+0.43+i*0.56, 1.3, 0.52, c)
add_textbox(slide, prev, x+2.82, y+0.43+i*0.56, 1.25, 0.52,
font_size=Pt(17), bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
comorb_section(slide, "Neurological Comorbidities", NAVY, neuro, 0.3, 1.68)
comorb_section(slide, "Psychiatric / Behavioural", TEAL, psych, 4.6, 1.68)
comorb_section(slide, "General Medical", ORANGE, other, 8.9, 1.68)
# ════════════════════════════════════════════════════════════════════════════════
# SLIDE 12 – MANAGEMENT OF COMORBIDITIES (CHART)
# ════════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
slide_header(slide, "Management of Comorbidities in GDD — Chart")
footer(slide)
chart_data = [
("COMORBIDITY", "ASSESSMENT", "NON-PHARMACOLOGICAL", "PHARMACOLOGICAL / SPECIFIC", NAVY, True),
("Epilepsy\n(5–30%)", "EEG, neuroimaging", "Seizure safety, parental education,\nketogenic diet if refractory", "Anti-epileptics: Valproate, Levetiracetam,\nOxcarbazepine (guided by seizure type)", RED, False),
("ADHD\n(35–40%)", "SNAP-IV, CBCL,\nclinical assessment", "Behavioural therapy, parent training,\nclassroom modifications, psychoeducation", "Methylphenidate (>6 yrs),\nAtomoxetine, Clonidine", NAVY, False),
("ASD\n(15–20%)", "CARS, ADOS-2, M-CHAT", "ABA therapy, SLT, social skills training,\nAAC devices, sensory integration", "Risperidone / Aripiprazole for aggression;\nSSRI for anxiety (use cautiously)", TEAL, False),
("CP\n(8–30%)", "GMFCS, MACS grading,\nspasticity assessment", "Physiotherapy, OT, AFOs,\nseating/positioning aids", "Baclofen for spasticity;\nBotulinum toxin (BoNT-A) injections", ORANGE, False),
("Visual deficit\n(15–75%)", "Formal ophthalmology\nreview, ERG, VEP", "Early visual stimulation,\nlarge-print materials, CVI therapies", "Spectacles / contact lenses;\nsurgery if structural (cataract, strabismus)", PURPLE, False),
("Feeding issues\n(20–47%)", "Video fluoroscopy,\nSLP assessment", "Feeding therapy, texture modification,\nposturing techniques", "PEG/NG-tube if severe aspiration;\nreflux management; prokinetics", RGBColor(0x1A,0x78,0xC2), False),
("Sleep disorders\n(40–80%)", "Sleep diary,\npolysomnography", "Sleep hygiene, visual schedules,\nlight therapy, sensory strategies", "Melatonin (first line);\nClonidine; avoid benzodiazepines", GREEN, False),
("PEM (40–70%)", "Nutritional assessment,\nanthropometry", "High-calorie diet, feeding schedule,\noccupational feeding therapy", "Micronutrient supplementation;\nzinc, iron, vitamins A/D", GOLD, False),
]
add_rect(slide, 0.15, 1.22, 13.0, 6.7, WHITE, RGBColor(0xCC,0xCC,0xCC), 0.3)
col_ws = [1.8, 2.2, 3.5, 4.5]
col_xs = [0.15, 1.95, 4.15, 7.65]
row_h = 0.72
for ri, row in enumerate(chart_data):
cond, assess, nonpharm, pharm, col, is_header = row
y = 1.22 + ri*row_h
bg = col if is_header else (SKY if ri%2==0 else WHITE)
add_rect(slide, 0.15, y, 13.0, row_h, bg)
tcol = WHITE if is_header else DARK_TXT
texts = [cond, assess, nonpharm, pharm]
sizes = [Pt(16), Pt(16), Pt(15), Pt(15)]
bolds = [True, True, False, False]
for ci, (txt, sz, bld, cx, cw) in enumerate(zip(texts, sizes, bolds, col_xs, col_ws)):
add_textbox(slide, txt, cx+0.05, y+0.03, cw-0.1, row_h-0.06,
font_size=sz, bold=bld, color=WHITE if is_header else (col if ci==0 else DARK_TXT),
v_anchor=MSO_ANCHOR.MIDDLE, wrap=True)
# column dividers
for cx in col_xs[1:]:
add_rect(slide, cx, y, 0.02, row_h, RGBColor(0xCC,0xCC,0xCC))
# ════════════════════════════════════════════════════════════════════════════════
# SLIDE 13 – COUNSELLING
# ════════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
slide_header(slide, "Counselling in GDD (IAP Guideline 6A)")
footer(slide)
add_rect(slide, 0.3, 1.25, 12.7, 0.48, GOLD)
add_textbox(slide, '"Counselling the family is strongly recommended at initial diagnosis AND whenever new etiological information becomes available" — IAP 2022',
0.4, 1.27, 12.3, 0.44, font_size=Pt(18), bold=True, color=WHITE, align=PP_ALIGN.CENTER)
counselling_items = [
("Disclosing the Diagnosis", NAVY, [
"Communicate clearly, directly and compassionately",
"Emphasize child's STRENGTHS alongside deficits",
"Avoid jargon; use simple, understandable language",
"Allow time for questions; validate parental emotions",
]),
("Counselling on Etiology", TEAL, [
"Explain that investigations may be needed",
"Despite all tests, etiology may remain unknown (30–40%)",
"Pre-test genetic counselling BEFORE ordering genetic tests",
"Explain significance of VUS (variant of uncertain significance)",
]),
("Counselling on Management", GREEN, [
"Realistic expectations — improvement IS possible with therapy",
"Importance of consistency and compliance with therapies",
"Role of early intervention in modifying outcomes",
"Available resources: DEIC, special schools, NGOs",
]),
("Counselling on Prognosis", ORANGE, [
"~2/3 children will eventually be diagnosed with ID",
"~20% achieve good social functioning despite diagnosis",
"Milder GDD has better long-term outcomes",
"Reassurance: child's quality of life can be optimized",
]),
("Legal & Social Support", PURPLE, [
"Rights of Persons with Disabilities Act 2016 (RPwD Act)",
"UDID Card (Unique Disability Identification)",
"Govt. schemes: RBSK, DEIC, scholarship for disabled",
"Special educator, social worker referral",
]),
("Genetic / Recurrence Risk", RED, [
"Recurrence risk only accurate with established etiology",
"Without diagnosis: empirical risk ~3–5%",
"Specific risk varies by inheritance (AR, XL, de novo)",
"Pre-natal diagnosis options if cause identified",
]),
]
for idx, (title, col, items) in enumerate(counselling_items):
row, ci = divmod(idx, 3)
x = 0.3 + ci*4.35
y = 1.82 + row*2.65
add_rect(slide, x, y, 4.1, 0.42, col)
add_textbox(slide, title, x+0.08, y+0.03, 3.95, 0.38,
font_size=Pt(16), bold=True, color=WHITE)
add_rect(slide, x, y+0.42, 4.1, 2.15, WHITE, col, 0.7)
lines = [("• "+it, False, DARK_TXT, 0) for it in items]
add_ml_textbox(slide, lines, x+0.08, y+0.46, 3.95, 2.05,
font_size=Pt(17), line_spacing_pt=23)
# ════════════════════════════════════════════════════════════════════════════════
# SLIDE 14 – PROGNOSIS & FOLLOW-UP
# ════════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
slide_header(slide, "Prognosis & Follow-Up in GDD")
footer(slide)
add_rect(slide, 0.3, 1.25, 6.0, 5.75, WHITE, NAVY, 1.5)
add_rect(slide, 0.3, 1.25, 6.0, 0.5, NAVY)
add_textbox(slide, "PROGNOSIS — Key Points", 0.4, 1.27, 5.8, 0.46,
font_size=Pt(18), bold=True, color=WHITE)
prognosis = [
("Degree of delay is the MOST consistent predictor of outcome", True, NAVY, 0),
("Mild GDD → better long-term prognosis", False, DARK_TXT, 0),
("~66% will eventually receive an ID diagnosis", False, DARK_TXT, 0),
("~20% achieve good social functioning even with GDD diagnosis", False, DARK_TXT, 0),
("Factors affecting prognosis:", True, TEAL, 0),
(" • Severity and etiology of GDD", False, DARK_TXT, 0),
(" • Presence of comorbidities (epilepsy worsens prognosis)", False, DARK_TXT, 0),
(" • Socioeconomic status of family", False, DARK_TXT, 0),
(" • Age at diagnosis and therapy initiation", False, DARK_TXT, 0),
(" • Availability of specific treatment", False, DARK_TXT, 0),
(" • Family compliance with therapy", False, DARK_TXT, 0),
("Early intervention can minimize delays and improve adaptive,\nacademic and social functioning", True, GREEN, 0),
]
add_ml_textbox(slide, prognosis, 0.4, 1.8, 5.7, 5.1,
font_size=Pt(18), line_spacing_pt=25)
add_rect(slide, 6.5, 1.25, 6.5, 5.75, WHITE, TEAL, 1.5)
add_rect(slide, 6.5, 1.25, 6.5, 0.5, TEAL)
add_textbox(slide, "FOLLOW-UP PLAN", 6.6, 1.27, 6.3, 0.46,
font_size=Pt(18), bold=True, color=WHITE)
followup = [
("Who should follow up?", True, TEAL, 0),
(" Developmental Pediatrician / Pediatric Neurologist-led\n multidisciplinary team", False, DARK_TXT, 0),
("Frequency of Follow-Up:", True, TEAL, 0),
(" • 3-monthly in first 2 years", False, DARK_TXT, 0),
(" • 6-monthly from age 2–5 years", False, DARK_TXT, 0),
(" • Yearly after school entry", False, DARK_TXT, 0),
("What to monitor:", True, TEAL, 0),
(" • Development in all domains (reassess milestones)", False, DARK_TXT, 0),
(" • Response to therapy", False, DARK_TXT, 0),
(" • Emerging comorbidities (epilepsy, ADHD, ASD)", False, DARK_TXT, 0),
(" • Nutritional status", False, DARK_TXT, 0),
(" • Family psychosocial wellbeing", False, DARK_TXT, 0),
("Re-classify at age 5+:", True, NAVY, 0),
(" GDD → may be re-labelled Intellectual Disability (ID)", False, DARK_TXT, 0),
]
add_ml_textbox(slide, followup, 6.6, 1.8, 6.2, 5.1,
font_size=Pt(18), line_spacing_pt=22)
# ════════════════════════════════════════════════════════════════════════════════
# SLIDE 15 – GDD & GENETICS
# ════════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
slide_header(slide, "GDD & Genetics")
footer(slide)
add_rect(slide, 0.3, 1.25, 12.7, 0.45, GOLD)
add_textbox(slide, "Genetic causes account for 30–50% of GDD cases — genetics is the SINGLE LARGEST category of etiology",
0.35, 1.27, 12.5, 0.41, font_size=Pt(19), bold=True, color=WHITE)
gen_cols = [
("CHROMOSOMAL\nABNORMALITIES", NAVY, [
"Down Syndrome (Trisomy 21) — most common",
"Trisomy 18, Trisomy 13",
"Turner syndrome (45,X)",
"Klinefelter (47,XXY)",
"22q11.2 deletion (DiGeorge syndrome)",
"5p deletion (Cri-du-chat)",
"Chromosomal Microarray (CMA) — first-line test",
]),
("SINGLE-GENE\nDISORDERS", TEAL, [
"Fragile X Syndrome (FMR1 — most common inherited)",
"Rett Syndrome (MECP2 — girls)",
"Angelman / Prader-Willi syndrome (imprinting)",
"Tuberous Sclerosis (TSC1/TSC2)",
"Neurofibromatosis type 1 (NF1)",
"CDKL5, ARX, FOXG1 mutations",
"WES/WGS — for gene-level diagnosis",
]),
("METABOLIC / BIOCHEMICAL\nGENETIC", PURPLE, [
"Phenylketonuria (PKU) — treatable, NBS",
"Maple Syrup Urine Disease (MSUD)",
"Congenital Disorders of Glycosylation (CDG)",
"Mucopolysaccharidoses (MPS I, II, III)",
"Organic acidurias (propionic, methylmalonic)",
"Congenital hypothyroidism (treatable)",
"Urine organic acids + plasma amino acids",
]),
("GENETIC COUNSELLING\nKEY POINTS", ORANGE, [
"Establish accurate molecular/cytogenetic diagnosis first",
"Determine inheritance pattern (AR, AD, XL, de novo)",
"Recurrence risk varies: AR 25%, XL 50% males affected",
"De novo mutations — low recurrence risk",
"Offer prenatal diagnosis: CVS/amniocentesis + genetic test",
"Cascade testing for at-risk family members",
"Explain VUS: Variant of Uncertain Significance",
]),
]
for idx, (title, col, items) in enumerate(gen_cols):
row, ci = divmod(idx, 2)
x = 0.3 + ci*6.55
y = 1.78 + row*2.8
add_rect(slide, x, y, 6.2, 0.48, col)
add_textbox(slide, title, x+0.1, y+0.03, 6.0, 0.44,
font_size=Pt(16), bold=True, color=WHITE, align=PP_ALIGN.CENTER,
v_anchor=MSO_ANCHOR.MIDDLE)
add_rect(slide, x, y+0.48, 6.2, 2.24, WHITE, col, 0.7)
lines = [("• "+it, False, DARK_TXT, 0) for it in items]
add_ml_textbox(slide, lines, x+0.1, y+0.52, 6.0, 2.15,
font_size=Pt(17), line_spacing_pt=23)
# ════════════════════════════════════════════════════════════════════════════════
# SLIDE 16 – FLOWCHART: APPROACH TO GDD
# ════════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
slide_header(slide, "Flowchart: Clinical Approach to GDD")
footer(slide)
def flow_box(slide, text, x, y, w, h, fill, text_color=WHITE, font_size=Pt(17), bold=True, border=None):
add_rect(slide, x, y, w, h, fill, border or fill)
add_textbox(slide, text, x+0.05, y+0.02, w-0.1, h-0.04,
font_size=font_size, bold=bold, color=text_color,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE, wrap=True)
def arrow(slide, x1, y1, x2, y2):
"""Draw a vertical or horizontal arrow"""
from pptx.util import Inches as I
from pptx.oxml.ns import nsmap
# Use a connector
cx = (x1+x2)/2; cy = (y1+y2)/2
# just draw a line shape
line = slide.shapes.add_shape(9, I(x1), I(y1), I(0.02), I(y2-y1))
line.fill.background()
line.line.color.rgb = NAVY
line.line.width = Pt(1.5)
# Main flow
cx = 5.4; bw = 3.5; bh = 0.52
steps = [
("Child <5 yrs with parental concern OR surveillance flag", TEAL),
("Developmental History & Clinical Examination", NAVY),
("Administer Standardized Developmental Test (DASII/DDST/BSID-III)", NAVY),
("Delay in ≥2 domains? Significant (≥2 SD below mean)?", GOLD),
("YES → Diagnosis of GDD confirmed", GREEN),
("Classify Severity: Mild / Moderate / Severe / Profound", TEAL),
("Initiate EARLY INTERVENTION (before etiology known)", ORANGE),
("Begin Etiological Work-Up (Tier 1 investigations)", PURPLE),
("Results guide further genetic/metabolic/imaging investigations", NAVY),
("Multidisciplinary Management + Family Counselling", TEAL),
("Regular Follow-Up: 3-monthly (0–2 yrs), 6-monthly (2–5 yrs)", GREEN),
("Age 5+: Re-assess for Intellectual Disability (ID)", GOLD),
]
for i, (txt, col) in enumerate(steps):
y = 1.25 + i*0.52
flow_box(slide, txt, cx, y, bw, 0.48, col)
if i < len(steps)-1:
add_rect(slide, cx+bw/2-0.02, y+0.48, 0.04, 0.04, NAVY)
# Left side notes
notes_left = [
(1.25, "High Risk Infants:\nScreen 6-monthly\ntill 24 months", TEAL),
(2.77, "No delay:\nContinue routine\nsurveillance", GREEN),
(4.82, "No → Continue\nSurveillance,\nRepeat in 6 months", RED),
]
for y, txt, col in notes_left:
flow_box(slide, txt, 1.0, y, 2.8, 0.72, col, font_size=Pt(14), bold=False)
add_rect(slide, 3.8, y+0.36, 1.6, 0.04, col)
# ════════════════════════════════════════════════════════════════════════════════
# SLIDE 17 – FLOWCHART: DEVELOPMENTAL SCREENING ALGORITHM
# ════════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
slide_header(slide, "Flowchart: Developmental Screening Algorithm (IAP 2022)")
footer(slide)
# Two parallel streams
add_rect(slide, 0.3, 1.25, 5.9, 0.5, NAVY)
add_textbox(slide, "NORMAL RISK CHILD", 0.35, 1.27, 5.8, 0.46,
font_size=Pt(18), bold=True, color=WHITE, align=PP_ALIGN.CENTER)
add_rect(slide, 7.1, 1.25, 5.9, 0.5, TEAL)
add_textbox(slide, "HIGH RISK INFANT", 7.15, 1.27, 5.8, 0.46,
font_size=Pt(18), bold=True, color=WHITE, align=PP_ALIGN.CENTER)
normal_steps = [
("Routine Surveillance every visit\n(Red Flag Checklist)", NAVY),
("Screening at 9–12 months\n(DASII / ASQ / Trivandrum)", TEAL),
("Screening at 18–24 months\n(M-CHAT for ASD screening too)", TEAL),
("Screening at school entry\n(4.5–5 yrs)", TEAL),
("Screen positive or parental concern?\n→ Formal Developmental Assessment", ORANGE),
("Confirm GDD with standardized test\n≥2 domains with ≥2 SD below mean", RED),
("Refer to Developmental Pediatrician\n+ Multidisciplinary Team", GREEN),
]
highrisk_steps = [
("Identify high-risk features:\nPrematurity, HIE, NICU, LBW, genetic syndrome, etc.", NAVY),
("Screen every 6 months\nfrom birth till 24 months\n(DASII, BSID-III, Griffiths)", TEAL),
("Screen yearly from\n2–5 years of age", TEAL),
("Screen once at school entry\n(despite earlier screens)", TEAL),
("Any screen positive?\n→ Immediate formal assessment", ORANGE),
("Confirm GDD + classify severity\n(Vineland-II for adaptive functioning)", RED),
("Begin Early Intervention at DEIC\n+ Etiological Work-up in parallel", GREEN),
]
for i, (txt, col) in enumerate(normal_steps):
y = 1.85 + i*0.72
flow_box(slide, txt, 0.3, y, 5.9, 0.65, col, font_size=Pt(16), bold=False)
if i < len(normal_steps)-1:
add_rect(slide, 3.05, y+0.65, 0.04, 0.07, NAVY)
for i, (txt, col) in enumerate(highrisk_steps):
y = 1.85 + i*0.72
flow_box(slide, txt, 7.1, y, 5.9, 0.65, col, font_size=Pt(16), bold=False)
if i < len(highrisk_steps)-1:
add_rect(slide, 10.05, y+0.65, 0.04, 0.07, TEAL)
add_rect(slide, 6.7, 1.3, 0.07, 5.95, RGBColor(0xDD,0xDD,0xDD))
# ════════════════════════════════════════════════════════════════════════════════
# SLIDE 18 – FLOWCHART: INVESTIGATION PATHWAY
# ════════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
slide_header(slide, "Flowchart: Investigation Pathway in GDD")
footer(slide)
flow_box(slide, "GDD Confirmed — Begin Investigations", 2.5, 1.28, 8.3, 0.5, NAVY)
# Tier 1
add_rect(slide, 0.3, 1.9, 12.7, 0.38, TEAL)
add_textbox(slide, "TIER 1 — ALL CHILDREN (regardless of phenotype)", 0.35, 1.92, 12.5, 0.34,
font_size=Pt(17), bold=True, color=WHITE)
tier1 = ["TFT (TSH, T4)", "Metabolic screen\n(glucose, ammonia, lactate)", "Formal Audiology\n(BERA)", "Formal Visual Assessment", "Urine metabolic screen"]
for i, t in enumerate(tier1):
flow_box(slide, t, 0.3+i*2.6, 2.32, 2.45, 0.65, SKY, DARK_TXT, Pt(16), False, TEAL)
add_rect(slide, 0.3, 3.08, 12.7, 0.35, ORANGE)
add_textbox(slide, "TIER 2 — IF CLINICAL CLUES PRESENT", 0.35, 3.1, 12.5, 0.31,
font_size=Pt(17), bold=True, color=WHITE)
tier2 = ["MRI Brain\n(neuro signs, abnormal HC)", "EEG\n(seizures/regression)", "Chromosomal Microarray\n(CMA) — 1st line genetic", "Karyotype / FISH\n(specific syndrome suspected)", "Plasma amino acids\n+ urine organic acids"]
for i, t in enumerate(tier2):
flow_box(slide, t, 0.3+i*2.6, 3.46, 2.45, 0.72, SKY, DARK_TXT, Pt(16), False, ORANGE)
add_rect(slide, 0.3, 4.3, 12.7, 0.35, PURPLE)
add_textbox(slide, "TIER 3 — TARGETED BASED ON PRIOR RESULTS", 0.35, 4.32, 12.5, 0.31,
font_size=Pt(17), bold=True, color=WHITE)
tier3 = ["WES / WGS\n(negative CMA, undiagnosed)", "Fragile X testing\n(FMR1 — males first)", "Mitochondrial\ngenome panel", "Lysosomal enzyme\nassays", "Confirmatory\nnewborn screen tests"]
for i, t in enumerate(tier3):
flow_box(slide, t, 0.3+i*2.6, 4.68, 2.45, 0.72, SKY, DARK_TXT, Pt(16), False, PURPLE)
add_rect(slide, 0.3, 5.5, 12.7, 0.38, GREEN)
add_textbox(slide, "AFTER ALL INVESTIGATIONS — Interpret results with Geneticist / Metabolic specialist; Etiology identified in ~50–60% with full workup",
0.35, 5.52, 12.5, 0.34, font_size=Pt(16), bold=True, color=WHITE)
add_rect(slide, 0.3, 5.95, 5.9, 0.72, WHITE, NAVY, 1)
add_textbox(slide, "Etiology FOUND:\n• Specific management\n• Accurate recurrence risk", 0.35, 5.97, 5.8, 0.68,
font_size=Pt(17), color=NAVY, v_anchor=MSO_ANCHOR.MIDDLE)
add_rect(slide, 7.1, 5.95, 5.9, 0.72, WHITE, ORANGE, 1)
add_textbox(slide, "Etiology NOT found:\n• Continue multidisciplinary Rx\n• Empirical recurrence risk 3–5%", 7.15, 5.97, 5.8, 0.68,
font_size=Pt(17), color=ORANGE, v_anchor=MSO_ANCHOR.MIDDLE)
# ════════════════════════════════════════════════════════════════════════════════
# SLIDE 19 – FLOWCHART: MANAGEMENT ALGORITHM
# ════════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
slide_header(slide, "Flowchart: Management Algorithm in GDD")
footer(slide)
flow_box(slide, "GDD DIAGNOSED — Initiate Management WITHOUT DELAY", 1.5, 1.28, 10.3, 0.5, NAVY)
mgmt_boxes = [
(0.3, 1.88, 3.8, "EARLY INTERVENTION\n(Day 1 Priority)", TEAL, [
"DEIC enrolment",
"Infant stimulation",
"Parent education",
"RBSK scheme",
]),
(4.3, 1.88, 3.8, "MULTIDISCIPLINARY\nTHERAPY TEAM", PURPLE, [
"Speech Therapy",
"Occupational Therapy",
"Physiotherapy",
"Behavioural therapy",
]),
(8.3, 1.88, 4.7, "SPECIFIC / MEDICAL\nMANAGEMENT", ORANGE, [
"Treat underlying etiology",
"AEDs for seizures",
"Nutrition supplementation",
"Comorbidity management",
]),
]
for x, y, w, title, col, items in mgmt_boxes:
add_rect(slide, x, y, w, 0.44, col)
add_textbox(slide, title, x+0.05, y+0.02, w-0.1, 0.4,
font_size=Pt(16), bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
add_rect(slide, x, y+0.44, w, 1.7, WHITE, col, 0.7)
for j, it in enumerate(items):
add_textbox(slide, "• "+it, x+0.1, y+0.47+j*0.4, w-0.2, 0.38,
font_size=Pt(17), color=DARK_TXT)
# SCHOOL & COMMUNITY
add_rect(slide, 0.3, 4.12, 6.0, 0.42, GREEN)
add_textbox(slide, "SCHOOL & COMMUNITY", 0.35, 4.14, 5.9, 0.38,
font_size=Pt(16), bold=True, color=WHITE)
school_items = ["IEP (Individualized Education Plan)", "Inclusive / Special schooling", "AAC devices for communication", "RPwD Act 2016 benefits"]
for j, it in enumerate(school_items):
add_textbox(slide, "• "+it, 0.4, 4.57+j*0.4, 5.8, 0.38, font_size=Pt(17), color=DARK_TXT)
add_rect(slide, 6.5, 4.12, 6.5, 0.42, GOLD)
add_textbox(slide, "FAMILY SUPPORT & COUNSELLING", 6.55, 4.14, 6.4, 0.38,
font_size=Pt(16), bold=True, color=WHITE)
family_items = ["Structured counselling at diagnosis & follow-up", "Psychosocial support for caregivers", "Support groups & NGO referral", "Legal & financial aid guidance"]
for j, it in enumerate(family_items):
add_textbox(slide, "• "+it, 6.55, 4.57+j*0.4, 6.3, 0.38, font_size=Pt(17), color=DARK_TXT)
add_rect(slide, 0.3, 6.2, 12.7, 0.5, NAVY)
add_textbox(slide, "REVIEW AT EVERY FOLLOW-UP: Development + Therapies + Comorbidities + Family wellbeing + Transition planning (age 5+: ID re-classification)",
0.35, 6.22, 12.5, 0.46, font_size=Pt(17), bold=True, color=WHITE, align=PP_ALIGN.CENTER)
# ════════════════════════════════════════════════════════════════════════════════
# SLIDE 20 – KEY TAKEAWAYS & REFERENCES
# ════════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
slide_header(slide, "Key Takeaways & References")
footer(slide)
takeaways = [
("1.", "GDD = significant delay in ≥2 developmental domains in children <5 yrs; prevalence 1–3% globally, 3–13% in India"),
("2.", "Etiology is heterogeneous: genetic causes (30–50%) are the most common single category"),
("3.", "Developmental surveillance at every visit + formal screening at 9–12 m, 18–24 m, and school entry"),
("4.", "Clinical evaluation: detailed history + physical examination including dysmorphic features"),
("5.", "Investigations: Tiered approach — treat treatable first (thyroid, metabolic, CMA, MRI, EEG, WES)"),
("6.", "Management: Multidisciplinary team; begin BEFORE etiology is established; DEIC / RBSK for access"),
("7.", "Comorbidities are common — epilepsy (5–30%), ADHD (35–40%), ASD (15–20%), visual deficits (15–75%)"),
("8.", "Structured counselling is MANDATORY at diagnosis and at every new etiological finding"),
("9.", "Prognosis: ~66% evolve to ID; mild GDD has better outcomes; early intervention modifies trajectory"),
("10.","Genetics: chromosomal microarray is first-line genetic test; WES when CMA negative"),
]
for i, (num, txt) in enumerate(takeaways):
row, ci = divmod(i, 2)
x = 0.3 + ci*6.6
y = 1.3 + row*1.1
add_rect(slide, x, y, 0.5, 0.92, TEAL)
add_textbox(slide, num, x+0.02, y+0.05, 0.46, 0.82,
font_size=Pt(18), bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
add_rect(slide, x+0.5, y, 5.9, 0.92, WHITE, TEAL, 0.5)
add_textbox(slide, txt, x+0.55, y+0.05, 5.75, 0.82,
font_size=Pt(18), color=DARK_TXT, wrap=True, v_anchor=MSO_ANCHOR.MIDDLE)
# References
add_rect(slide, 0.3, 6.65, 12.7, 0.55, NAVY)
refs = "Juneja M, et al. Indian Pediatrics 2022;59:401–415 (IAP Guidelines) | Bradley & Daroff Neurology 8e | Harriet Lane Handbook 23e | Thompson & Thompson Genetics 9e"
add_textbox(slide, refs, 0.35, 6.67, 12.5, 0.51,
font_size=Pt(13), color=LIGHT_TXT, italic=True)
# ─── SAVE ────────────────────────────────────────────────────────────────────
out = "/tmp/workspace/gdd-seminar/GDD_Seminar_IAP_2022.pptx"
prs.save(out)
print(f"Saved: {out}")
print(f"Slides: {len(prs.slides)}")
cd /tmp/workspace/gdd-seminar && python build_gdd_pptx.py 2>&1
~/gdd-seminar/build_gdd_pptx.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/gdd-seminar/build_gdd_pptx.py'
cd /tmp/workspace/gdd-seminar && python build_gdd_pptx.py 2>&1
ls -lh /tmp/workspace/gdd-seminar/GDD_Seminar_IAP_2022.pptx
GDD Seminar IAP 2022
Presentation · PPTX
| # | Slide |
|---|---|
| 1 | Title Slide — IAP Consensus Guidelines 2022, Juneja M et al. Indian Pediatrics |
| 2 | Table of Contents — all 16 topics listed |
| 3 | Definition of GDD — IAP/AAN definition, 5 developmental domains, severity classification (Mild/Moderate/Severe/Profound) |
| 4 | Prevalence — Global 1–3%, Turkey 6.4%, UAE 8%, India 3–13%, gender difference (+30% males) |
| 5 | Etiology Overview — Genetic vs non-genetic; Prenatal / Perinatal / Postnatal categories with examples |
| 6 | Etiology with % Breakdown — Visual bar chart: Genetic 30–50%, HIE 10–15%, chromosomal ~15%, idiopathic 30–40%, etc. |
| 7 | Developmental Surveillance & Screening — Normal risk schedule (9–12 m, 18–24 m, school entry) + high-risk (6-monthly till 24 m), tools (DASII, DDST-II, ASQ, BSID-III) |
| 8 | Clinical Evaluation — Antenatal/birth/postnatal history + detailed physical examination guide |
| 9 | Investigations — 3-tiered approach: Tier 1 (all), Tier 2 (clinical clues), Tier 3 (targeted); diagnostic yields |
| 10 | Management — 4 pillars: Early Intervention, Therapies, Special Education, Medical/Specific |
| 11 | Comorbidities & Prevalence — 3-column table: Neurological (visual deficits 15–75%, epilepsy 5–30%, CP 8–30%, sleep 40–80%), Psychiatric (ADHD 35–40%, ASD 15–20%), Medical (PEM 40–70%, drooling 45%, constipation 30–60%) |
| 12 | Comorbidity Management Chart — Full table: Epilepsy, ADHD, ASD, CP, visual deficit, feeding, sleep, PEM — assessment, non-pharmacological, pharmacological for each |
| 13 | Counselling — 6 pillars: Disclosing diagnosis, etiology, management, prognosis, legal/social support, genetic/recurrence risk |
| 14 | Prognosis & Follow-Up — ~66% evolve to ID, early intervention modifies trajectory, follow-up frequency schedule |
| 15 | GDD & Genetics — Chromosomal, single-gene, metabolic categories + genetic counselling key points |
| 16 | Flowchart: Clinical Approach to GDD — Step-by-step decision flow from concern → diagnosis → management → follow-up |
| 17 | Flowchart: Developmental Screening Algorithm — Parallel streams for normal-risk vs high-risk children |
| 18 | Flowchart: Investigation Pathway — 3-tier investigation funnel with yield percentages |
| 19 | Flowchart: Management Algorithm — Early intervention → multidisciplinary therapy → medical → school → family support |
| 20 | Key Takeaways & References — 10 summary points + full IAP guideline citation |
Adjust the font size according to you but make sure its readel and make it more comfortable i mean charts are not satisfying sequence I gave is just reference You create by own And less use of different colours Make it 2-3 colours
~/gdd-seminar/build_gdd_v2.py
"""
GDD Seminar Presentation – v2
Colour palette: 3 colours only
NAVY #1B3A6B – headers, accents
STEEL #4A90A4 – sub-headers, highlights
WHITE #FFFFFF – backgrounds
OFFWHITE #F4F7FA – alternating rows / content panels
DARK #1A1A2E – body text
Fonts: Calibri throughout, sizes chosen for readability.
"""
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
# ── PALETTE ──────────────────────────────────────────────────────────────────
NAVY = RGBColor(0x1B, 0x3A, 0x6B)
STEEL = RGBColor(0x4A, 0x90, 0xA4)
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
OFFWHITE = RGBColor(0xF4, 0xF7, 0xFA)
DARK = RGBColor(0x1A, 0x1A, 0x2E)
LGRAY = RGBColor(0xD8, 0xE2, 0xEC) # light grey borders / dividers
MIDGRAY = RGBColor(0x6E, 0x8A, 0x9E) # secondary text
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
BLANK = prs.slide_layouts[6]
# ── PRIMITIVE HELPERS ─────────────────────────────────────────────────────────
def rect(slide, x, y, w, h, fill, border=None, bw=0.8):
s = slide.shapes.add_shape(1, Inches(x), Inches(y), Inches(w), Inches(h))
s.fill.solid(); s.fill.fore_color.rgb = fill
if border:
s.line.color.rgb = border; s.line.width = Pt(bw)
else:
s.line.fill.background()
return s
def tb(slide, text, x, y, w, h,
size=Pt(18), bold=False, italic=False,
color=DARK, align=PP_ALIGN.LEFT,
wrap=True, vanchor=MSO_ANCHOR.TOP):
box = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
tf = box.text_frame
tf.word_wrap = wrap
tf.vertical_anchor = vanchor
tf.margin_left = tf.margin_right = tf.margin_top = tf.margin_bottom = Inches(0.04)
p = tf.paragraphs[0]; p.alignment = align
r = p.add_run(); r.text = text
r.font.size = size; r.font.bold = bold
r.font.italic = italic; r.font.color.rgb = color
r.font.name = "Calibri"
return box
def multi(slide, lines, x, y, w, h,
size=Pt(18), wrap=True, vanchor=MSO_ANCHOR.TOP,
line_spacing=None):
"""
lines = list of (text, bold, color) tuples or plain strings.
Each item becomes one paragraph.
"""
box = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
tf = box.text_frame
tf.word_wrap = wrap; tf.vertical_anchor = vanchor
tf.margin_left = tf.margin_right = Inches(0.05)
tf.margin_top = tf.margin_bottom = Inches(0.03)
first = True
for item in lines:
if isinstance(item, str):
txt, bld, col = item, False, DARK
else:
txt = item[0]
bld = item[1] if len(item) > 1 else False
col = item[2] if len(item) > 2 else DARK
p = tf.paragraphs[0] if first else tf.add_paragraph()
first = False
p.alignment = PP_ALIGN.LEFT
if line_spacing:
p.line_spacing = Pt(line_spacing)
r = p.add_run(); r.text = txt
r.font.size = size; r.font.bold = bld
r.font.color.rgb = col; r.font.name = "Calibri"
return box
# ── LAYOUT HELPERS ────────────────────────────────────────────────────────────
def header(slide, title, sub=None):
"""Navy top bar with title."""
rect(slide, 0, 0, 13.333, 1.0, NAVY)
rect(slide, 0, 1.0, 13.333, 0.05, STEEL)
tb(slide, title, 0.35, 0.07, 12.5, 0.86,
size=Pt(30), bold=True, color=WHITE,
align=PP_ALIGN.LEFT, vanchor=MSO_ANCHOR.MIDDLE)
if sub:
tb(slide, sub, 0.35, 1.08, 12.5, 0.38,
size=Pt(16), color=STEEL, italic=True)
rect(slide, 0, 1.05, 13.333, 6.45, OFFWHITE)
def footer(slide, note="IAP Consensus Guidelines 2022 – Juneja M et al. Indian Pediatrics 59:401–415"):
rect(slide, 0, 7.2, 13.333, 0.3, NAVY)
tb(slide, note, 0.3, 7.21, 12.7, 0.27,
size=Pt(11), color=LGRAY, italic=True, align=PP_ALIGN.CENTER)
def section_bar(slide, text, y, color=NAVY, h=0.38, font_size=Pt(17)):
rect(slide, 0.3, y, 12.7, h, color)
tb(slide, text, 0.38, y+0.02, 12.5, h-0.04,
size=font_size, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
def card(slide, title, body_lines, x, y, w, h,
title_color=NAVY, body_bg=WHITE, font_size=Pt(17)):
"""Titled card: colored header + white body."""
rect(slide, x, y, w, 0.38, title_color)
tb(slide, title, x+0.08, y+0.03, w-0.16, 0.32,
size=Pt(17), bold=True, color=WHITE,
align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
rect(slide, x, y+0.38, w, h-0.38, body_bg, LGRAY, 0.6)
multi(slide, body_lines, x+0.1, y+0.42, w-0.2, h-0.44,
size=font_size, line_spacing=22)
# ── FLOWCHART HELPERS ─────────────────────────────────────────────────────────
def fbox(slide, text, x, y, w, h=0.52,
fill=NAVY, tcolor=WHITE, fsize=Pt(17), bold=True):
rect(slide, x, y, w, h, fill, STEEL, 0.6)
tb(slide, text, x+0.06, y+0.03, w-0.12, h-0.06,
size=fsize, bold=bold, color=tcolor,
align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE, wrap=True)
def arrow_down(slide, x, y, length=0.12):
"""Thin vertical arrow connector."""
rect(slide, x-0.015, y, 0.03, length, STEEL)
def diamond(slide, text, x, y, w=3.6, h=0.62):
"""Simulate a decision diamond with a rotated rect (we use a colored box with ◆ marker)."""
rect(slide, x, y, w, h, STEEL, NAVY, 1.0)
tb(slide, "◆ " + text, x+0.08, y+0.04, w-0.16, h-0.08,
size=Pt(16), bold=True, color=WHITE,
align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE, wrap=True)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 1 – TITLE
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
rect(s, 0, 0, 13.333, 7.5, NAVY)
rect(s, 0, 2.5, 13.333, 0.06, STEEL)
rect(s, 0, 4.35, 13.333, 0.06, STEEL)
tb(s, "GLOBAL DEVELOPMENTAL DELAY", 0.6, 0.55, 12.1, 1.8,
size=Pt(46), bold=True, color=WHITE,
align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
tb(s, "A Comprehensive Seminar Presentation", 0.6, 2.62, 12.1, 0.55,
size=Pt(22), color=LGRAY, italic=True,
align=PP_ALIGN.CENTER)
tb(s, "Based on IAP Consensus Guidelines 2022", 0.6, 3.25, 12.1, 0.5,
size=Pt(20), bold=True, color=STEEL,
align=PP_ALIGN.CENTER)
tb(s, "Juneja M, et al. Indian Pediatrics. 2022;59:401–415\nGrowth, Development & Behavioral Pediatrics • Neurology • Neurodevelopment Pediatrics — IAP",
0.6, 4.5, 12.1, 0.9,
size=Pt(17), color=LGRAY,
align=PP_ALIGN.CENTER)
tb(s, "August 2026", 0.6, 6.5, 12.1, 0.5,
size=Pt(16), color=MIDGRAY,
align=PP_ALIGN.CENTER, italic=True)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 2 – OVERVIEW / AGENDA
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Seminar Outline")
footer(s)
agenda_L = [
"1. Definition of GDD",
"2. Prevalence",
"3. Etiology (with percentages)",
"4. Developmental Surveillance & Screening",
"5. Clinical Evaluation",
"6. Investigations",
"7. Management",
"8. Comorbidities & Their Prevalence",
]
agenda_R = [
"9. Management of Comorbidities",
"10. Counselling in GDD",
"11. Prognosis & Follow-Up",
"12. GDD & Genetics",
"13. Approach to GDD — Flowchart",
"14. Developmental Screening Algorithm",
"15. Investigation Pathway — Flowchart",
"16. Management Algorithm — Flowchart",
]
rect(s, 0.4, 1.22, 6.0, 5.75, WHITE, LGRAY, 0.8)
rect(s, 6.9, 1.22, 6.0, 5.75, WHITE, LGRAY, 0.8)
multi(s, [(a, False, DARK) for a in agenda_L],
0.6, 1.4, 5.7, 5.5, size=Pt(19), line_spacing=34)
multi(s, [(a, False, DARK) for a in agenda_R],
7.1, 1.4, 5.7, 5.5, size=Pt(19), line_spacing=34)
rect(s, 0.4, 1.22, 6.0, 0.38, NAVY)
tb(s, "Topics — Part 1", 0.48, 1.24, 5.8, 0.34,
size=Pt(16), bold=True, color=WHITE)
rect(s, 6.9, 1.22, 6.0, 0.38, NAVY)
tb(s, "Topics — Part 2", 6.98, 1.24, 5.8, 0.34,
size=Pt(16), bold=True, color=WHITE)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 3 – DEFINITION
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Definition of Global Developmental Delay (GDD)")
footer(s)
# Big definition box
rect(s, 0.4, 1.22, 12.5, 1.55, WHITE, NAVY, 1.5)
tb(s, "IAP / AAN DEFINITION", 0.5, 1.25, 4.0, 0.36,
size=Pt(14), bold=True, color=NAVY)
multi(s, [
("GDD is defined as a significant delay in two or more developmental domains in children under 5 years of age,",
False, DARK),
("where 'significant' = performance ≥ 2 standard deviations below the mean on age-appropriate standardized tests.",
True, NAVY),
], 0.55, 1.62, 12.2, 1.1, size=Pt(19), line_spacing=27)
# 5 domains – equal-width boxes
domains = [
"Gross &\nFine Motor",
"Speech &\nLanguage",
"Cognition",
"Social /\nPersonal",
"Activities of\nDaily Living",
]
for i, d in enumerate(domains):
x = 0.4 + i * 2.5
fill = NAVY if i % 2 == 0 else STEEL
rect(s, x, 2.9, 2.35, 0.72, fill)
tb(s, d, x+0.05, 2.91, 2.25, 0.7,
size=Pt(17), bold=True, color=WHITE,
align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
# Key criteria table
rows = [
("Age group", "Children < 5 years (≥ 5 years → Intellectual Disability assessment)"),
("Exclusions", "Delays explained solely by motor deficit or severe uncorrected sensory impairment"),
("GDD vs ID", "GDD is the under-5 equivalent; does NOT automatically mean ID"),
("Severity (SQ)", "Mild: 55–70 | Moderate: 36–54 | Severe: 21–35 | Profound: < 20"),
]
rect(s, 0.4, 3.75, 12.5, 0.38, NAVY)
tb(s, "KEY CRITERIA", 0.5, 3.77, 12.3, 0.34,
size=Pt(16), bold=True, color=WHITE)
for i, (k, v) in enumerate(rows):
bg = WHITE if i % 2 == 0 else OFFWHITE
y = 4.13 + i * 0.48
rect(s, 0.4, y, 12.5, 0.47, bg, LGRAY, 0.4)
tb(s, k, 0.5, y+0.04, 2.4, 0.38,
size=Pt(17), bold=True, color=NAVY)
tb(s, v, 2.95, y+0.04, 9.8, 0.38,
size=Pt(17), color=DARK)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 4 – PREVALENCE
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Prevalence of GDD")
footer(s)
prev_rows = [
("Global Estimates", "1 – 3%", "Based on standardized population surveys worldwide"),
("Turkey (recent report)", "6.4%", "Higher due to broader screening sensitivity"),
("UAE (recent report)", "8.0%", "Multicentre community-based study"),
("India — Range", "3 – 13%", "Varies by age group, tools used, and region studied"),
("Gender Ratio", "+30% ♂", "Boys affected 30% more; gap narrows as age increases"),
("Under-5 children (India)", "~27 million","Estimated burden based on prevalence 3–5% of 540M children"),
]
rect(s, 0.4, 1.22, 12.5, 0.4, NAVY)
for ci, label in enumerate(["Region / Parameter", "Prevalence", "Notes"]):
col_x = [0.5, 4.3, 6.3]
tb(s, label, col_x[ci], 1.24, 3.8, 0.36,
size=Pt(17), bold=True, color=WHITE)
for i, (region, prev, note) in enumerate(prev_rows):
bg = WHITE if i % 2 == 0 else OFFWHITE
y = 1.62 + i * 0.72
rect(s, 0.4, y, 12.5, 0.68, bg, LGRAY, 0.3)
tb(s, region, 0.5, y+0.08, 3.7, 0.52,
size=Pt(18), bold=True, color=NAVY, vanchor=MSO_ANCHOR.MIDDLE)
rect(s, 4.25, y+0.08, 1.7, 0.52, NAVY if i%2==0 else STEEL)
tb(s, prev, 4.27, y+0.08, 1.66, 0.52,
size=Pt(20), bold=True, color=WHITE,
align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
tb(s, note, 6.1, y+0.08, 6.65, 0.52,
size=Pt(18), color=DARK, vanchor=MSO_ANCHOR.MIDDLE)
rect(s, 0.4, 6.7, 12.5, 0.38, OFFWHITE, STEEL, 0.8)
tb(s, "India: Prevalence likely underestimated — most studies are screening-based; HIE & congenital hypothyroidism more common than in developed countries",
0.5, 6.72, 12.2, 0.34, size=Pt(16), color=NAVY, italic=True)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 5 – ETIOLOGY OVERVIEW
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Etiology of GDD — Overview")
footer(s)
section_bar(s, "Etiology is HETEROGENEOUS — Genetic (30–50%) + Non-Genetic (50–70%) | Classified by Timing: Prenatal · Perinatal · Postnatal", 1.22, STEEL, 0.4, Pt(17))
etio = [
("GENETIC\n(30–50%)", [
"Chromosomal abnormalities (Down syndrome, etc.)",
"Single-gene disorders (Fragile X, Rett syndrome)",
"Genomic disorders (22q11.2 deletion)",
"Metabolic / inborn errors (~1–5%)",
"Syndromic vs. Non-syndromic GDD",
]),
("PRENATAL\n(Non-genetic)", [
"TORCH infections (CMV, Toxoplasma, Rubella)",
"Intrauterine growth restriction (IUGR)",
"Teratogen exposure (alcohol, drugs)",
"Brain malformations (lissencephaly, PMG)",
"Maternal thyroid disorders",
]),
("PERINATAL", [
"Hypoxic Ischaemic Encephalopathy (HIE)",
"Prematurity / Very low birth weight",
"Neonatal jaundice (kernicterus)",
"Perinatal infections",
"Neonatal hypoglycaemia",
]),
("POSTNATAL", [
"CNS infections (meningitis, encephalitis)",
"Traumatic brain injury",
"Lead / heavy metal poisoning",
"Severe malnutrition",
"Hypothyroidism (congenital/acquired)",
]),
]
for idx, (title, items) in enumerate(etio):
col = NAVY if idx % 2 == 0 else STEEL
x = 0.4 + idx * 3.23
rect(s, x, 1.75, 3.05, 0.42, col)
tb(s, title, x+0.06, 1.77, 2.93, 0.38,
size=Pt(16), bold=True, color=WHITE,
align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
rect(s, x, 2.17, 3.05, 4.85, WHITE, LGRAY, 0.5)
multi(s, [("• " + it, False, DARK) for it in items],
x+0.1, 2.22, 2.85, 4.7, size=Pt(17), line_spacing=26)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 6 – ETIOLOGY PERCENTAGES
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Etiology — Percentage Breakdown (IAP 2022)")
footer(s)
bars = [
("Genetic causes (total)", "30–50%", 0.50),
(" Chromosomal / syndromic", "~15%", 0.30),
(" Single-gene / genomic", "~15%", 0.30),
(" Inborn errors of metabolism", "1–5%", 0.10),
("Hypoxic Ischaemic Encephalopathy", "10–15%", 0.28),
("Prematurity / Low birth weight", "8–12%", 0.22),
("CNS malformations", "5–8%", 0.16),
("CNS infections & toxins", "5–10%", 0.18),
("Unknown / Idiopathic", "30–40%", 0.40),
]
# column headers
rect(s, 0.4, 1.22, 12.5, 0.38, NAVY)
tb(s, "Cause", 0.5, 1.24, 4.2, 0.34, size=Pt(16), bold=True, color=WHITE)
tb(s, "Proportion", 4.75, 1.24, 2.5, 0.34, size=Pt(16), bold=True, color=WHITE)
tb(s, "Visual Scale", 7.35, 1.24, 5.5, 0.34, size=Pt(16), bold=True, color=WHITE)
BAR_MAX = 5.3
for i, (label, pct, frac) in enumerate(bars):
bg = WHITE if i % 2 == 0 else OFFWHITE
y = 1.6 + i * 0.6
rect(s, 0.4, y, 12.5, 0.58, bg, LGRAY, 0.3)
is_sub = label.startswith(" ")
tb(s, label.strip(), 0.5 + (0.35 if is_sub else 0), y+0.08,
4.1 - (0.35 if is_sub else 0), 0.42,
size=Pt(17 if not is_sub else 16),
bold=not is_sub, color=NAVY if not is_sub else MIDGRAY)
rect(s, 4.75, y+0.1, 1.2, 0.38,
NAVY if not is_sub else STEEL)
tb(s, pct, 4.77, y+0.1, 1.16, 0.38,
size=Pt(17), bold=True, color=WHITE,
align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
bw = BAR_MAX * frac
rect(s, 7.3, y+0.12, bw if bw > 0.05 else 0.05, 0.34,
NAVY if not is_sub else STEEL)
tb(s, pct, 7.35 + bw, y+0.12, 1.0, 0.34,
size=Pt(15), color=MIDGRAY, vanchor=MSO_ANCHOR.MIDDLE)
rect(s, 0.4, 7.03, 12.5, 0.34, OFFWHITE, STEEL, 0.6)
tb(s, "Note: In India — HIE, congenital hypothyroidism and malnutrition are relatively more common causes vs. Western countries",
0.5, 7.05, 12.2, 0.3, size=Pt(15), italic=True, color=NAVY)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 7 – DEVELOPMENTAL SURVEILLANCE & SCREENING
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Developmental Surveillance & Screening")
footer(s)
# Left: surveillance
rect(s, 0.4, 1.22, 6.0, 0.4, NAVY)
tb(s, "SURVEILLANCE (All Children)", 0.5, 1.24, 5.8, 0.36,
size=Pt(17), bold=True, color=WHITE)
rect(s, 0.4, 1.62, 6.0, 5.35, WHITE, LGRAY, 0.6)
multi(s, [
("• Assess development at EVERY routine well-child visit", False, DARK),
("• Use IAP Red Flags Checklist at each visit", False, DARK),
("• Always take parental concern seriously", False, DARK),
("• Observe parent–child interaction", False, DARK),
("• Ask: Is child doing age-appropriate activities?", False, DARK),
("• Record milestones in child's health card", False, DARK),
("• Identify high-risk infants early (NICU, HIE, LBW, genetic syndromes)", False, DARK),
("• Red flags checklist aids quick bedside identification", False, DARK),
], 0.55, 1.7, 5.75, 5.1, size=Pt(18), line_spacing=30)
# Right: screening schedule table
rect(s, 6.7, 1.22, 6.25, 0.4, STEEL)
tb(s, "SCREENING SCHEDULE (IAP 2022)", 6.8, 1.24, 6.05, 0.36,
size=Pt(17), bold=True, color=WHITE)
sched = [
("Category", "Age", "Tools"),
("Normal Risk", "9–12 months", "DASII, ASQ, DDST-II"),
("Normal Risk", "18–24 months", "DASII, M-CHAT (ASD)"),
("Normal Risk", "School entry (4.5–5 y)", "Vineland-II, DDST"),
("High Risk (6-monthly)", "Birth → 24 months", "BSID-III, Griffiths, DASII"),
("High Risk (yearly)", "2 – 5 years", "DASII, Vineland-II"),
("High Risk", "At school entry", "Full assessment"),
]
for i, (cat, age, tool) in enumerate(sched):
bg = NAVY if i == 0 else (WHITE if i%2==1 else OFFWHITE)
tcol = WHITE if i == 0 else DARK
y = 1.62 + i * 0.72
rect(s, 6.7, y, 6.25, 0.7, bg, LGRAY, 0.3)
bld = (i == 0)
tb(s, cat, 6.78, y+0.1, 1.85, 0.5, size=Pt(16 if i>0 else 15), bold=bld, color=tcol, vanchor=MSO_ANCHOR.MIDDLE)
tb(s, age, 8.68, y+0.1, 1.8, 0.5, size=Pt(16 if i>0 else 15), bold=bld, color=tcol, vanchor=MSO_ANCHOR.MIDDLE)
tb(s, tool, 10.53, y+0.1, 2.35, 0.5, size=Pt(15 if i>0 else 14), bold=bld, color=tcol, vanchor=MSO_ANCHOR.MIDDLE)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 8 – CLINICAL EVALUATION
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Clinical Evaluation of GDD")
footer(s)
eval_data = [
("HISTORY", [
"Antenatal: TORCH infections, teratogen/alcohol exposure, IUGR, maternal thyroid/diabetes",
"Birth: Mode of delivery, APGAR score, resuscitation needed, birth asphyxia (HIE)",
"Neonatal: Feeding difficulty, jaundice, seizures, hypoglycaemia, NICU admission",
"Developmental: Age of milestone attainment; any regression of skills?",
"Family: Consanguinity, similar illness in relatives, ethnic background",
"Social: Socioeconomic status, home stimulation, nutrition, caregiving quality",
]),
("PHYSICAL EXAMINATION", [
"Anthropometry: Head circumference (micro/macrocephaly), height, weight — plot on chart",
"Dysmorphic features: Face, ears, hands, feet — syndromic GDD vs non-syndromic",
"Skin: Neurocutaneous markers — café-au-lait spots, ash-leaf macules, adenoma sebaceum",
"Neurological: Tone (hyper/hypotonia), deep tendon reflexes, gait, coordination",
"Eyes: Cataracts, corneal clouding, retinal pigmentation, optic atrophy",
"Behavioural: Eye contact, response to name, social smile, stereotypies, joint attention",
]),
]
for idx, (title, items) in enumerate(eval_data):
x = 0.4 + idx * 6.55
col = NAVY if idx == 0 else STEEL
rect(s, x, 1.22, 6.2, 0.42, col)
tb(s, title, x+0.1, 1.24, 6.0, 0.38,
size=Pt(18), bold=True, color=WHITE)
rect(s, x, 1.64, 6.2, 5.45, WHITE, LGRAY, 0.5)
multi(s, [("• " + it, False, DARK) for it in items],
x+0.12, 1.7, 5.95, 5.3, size=Pt(18), line_spacing=28)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 9 – INVESTIGATIONS
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Investigations in GDD — Tiered Approach (IAP 2022)")
footer(s)
tiers = [
("TIER 1 — ALL CHILDREN\n(regardless of clinical features)", NAVY, [
"Thyroid function (TSH, T4)",
"Metabolic screen (glucose, ammonia, lactate)",
"Formal audiological evaluation (BERA)",
"Formal visual assessment",
"Urine metabolic screen (amino/organic acids)",
"Confirm newborn screening was done",
]),
("TIER 2 — GUIDED BY CLINICAL CLUES", STEEL, [
"MRI Brain — if abnormal neuro exam / head size",
"EEG — seizures, regression, Landau-Kleffner",
"Chromosomal microarray (CMA) — 1st-line genetic",
"Karyotype / FISH — specific syndrome suspected",
"Plasma amino acids + urine organic acids",
"Lead level if environmental exposure",
]),
("TIER 3 — TARGETED INVESTIGATIONS", NAVY, [
"Whole Exome / Genome Sequencing (WES/WGS)",
"Fragile X testing (FMR1) — males first",
"Mitochondrial genome panel",
"Lysosomal enzyme assays (MPS panel)",
"CSF analysis — if mitochondrial disorder suspected",
"Other metabolic: copper, ceruloplasmin, biotin",
]),
]
yield_data = [
("Chromosomal Microarray (CMA)", "15–20%"),
("WES (after negative CMA)", "25–30%"),
("MRI Brain", "~30–50%"),
("Metabolic tests", "~1–5%"),
("Overall with full workup", "~50–60%"),
]
for i, (title, col, items) in enumerate(tiers):
x = 0.4 + i * 4.3
rect(s, x, 1.22, 4.1, 0.48, col)
tb(s, title, x+0.1, 1.24, 3.9, 0.44,
size=Pt(15), bold=True, color=WHITE,
align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
rect(s, x, 1.7, 4.1, 4.35, WHITE, LGRAY, 0.5)
multi(s, [("• " + it, False, DARK) for it in items],
x+0.12, 1.76, 3.88, 4.2, size=Pt(17), line_spacing=25)
# Diagnostic yield table
rect(s, 0.4, 6.18, 12.5, 0.36, STEEL)
tb(s, "DIAGNOSTIC YIELD SUMMARY", 0.5, 6.2, 12.3, 0.32,
size=Pt(16), bold=True, color=WHITE)
for i, (test, yld) in enumerate(yield_data):
bg = WHITE if i%2==0 else OFFWHITE
x = 0.4 + i * 2.5
rect(s, x, 6.54, 2.45, 0.55, bg, LGRAY, 0.3)
multi(s, [(test, False, NAVY), (yld, True, STEEL)],
x+0.06, 6.55, 2.35, 0.52, size=Pt(15), line_spacing=16)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 10 – MANAGEMENT
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Management of GDD — Multidisciplinary Approach")
footer(s)
section_bar(s, "Initiate intervention IMMEDIATELY after diagnosis — DO NOT wait for etiology to be established", 1.22, STEEL, 0.38, Pt(17))
mgmt = [
("EARLY INTERVENTION\n(Priority from Day 1)", [
"Enrol in DEIC (free under RBSK)",
"Infant stimulation program",
"Parent-mediated home therapy",
"Developmentally supportive care in NICU",
"Sensory stimulation (visual, auditory, tactile)",
]),
("MULTIDISCIPLINARY\nTHERAPY", [
"Speech & Language Therapy (SLT)",
"Occupational Therapy (OT)",
"Physiotherapy / NDT",
"Behavioural therapy (ABA for ASD)",
"Feeding therapy for oromotor issues",
]),
("SPECIAL EDUCATION", [
"Individualized Education Plan (IEP)",
"Inclusive schooling (least restrictive)",
"Special school if required",
"AAC devices (augmentative communication)",
"Vocational training (older children)",
]),
("MEDICAL &\nSPECIFIC", [
"Treat etiology where possible (PKU diet, thyroid Rx)",
"Anti-epileptics for seizure control",
"Nutritional supplementation (iron, zinc, vit D)",
"Medications for ADHD, anxiety, behaviour",
"Surgery for structural anomalies if indicated",
]),
]
for i, (title, items) in enumerate(mgmt):
col = NAVY if i % 2 == 0 else STEEL
x = 0.4 + i * 3.24
rect(s, x, 1.72, 3.06, 0.48, col)
tb(s, title, x+0.06, 1.74, 2.94, 0.44,
size=Pt(15), bold=True, color=WHITE,
align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
rect(s, x, 2.2, 3.06, 4.95, WHITE, LGRAY, 0.5)
multi(s, [("• " + it, False, DARK) for it in items],
x+0.1, 2.26, 2.86, 4.8, size=Pt(17), line_spacing=28)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 11 – COMORBIDITIES
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Comorbidities in GDD & Their Prevalence")
footer(s)
section_bar(s, "Source: IAP Consensus Guidelines 2022 — Box I Comorbidities of Global Developmental Delay", 1.22, STEEL, 0.36, Pt(16))
comorb_data = {
"NEUROLOGICAL": [
("Visual deficits", "15–75%"),
("Hearing impairment", "9–17%"),
("Epilepsy / Seizures", "5–30%"),
("Cerebral Palsy", "8–30%"),
("Feeding / Pseudobulbar dysfunction", "20–47%"),
("Sleep disturbances", "40–80%"),
],
"PSYCHIATRIC / BEHAVIOURAL": [
("ADHD", "35–40%"),
("Autism Spectrum Disorder (ASD)", "15–20%"),
("Disruptive / Aggressive behaviour", "26%"),
("Mood / Anxiety disorders", "Variable"),
("Stereotypic movement disorders", "Common"),
("Self-injurious behaviour", "Variable"),
],
"GENERAL MEDICAL": [
("Protein-Energy Malnutrition", "40–70%"),
("Drooling (sialorrhoea)", "45%"),
("Constipation", "30–60%"),
("Recurrent infections", "Common"),
("Nutritional anaemia", "5.5%"),
("Dental / oral problems", "Variable"),
],
}
col_xs = [0.4, 4.5, 8.6]
for ci, (section, rows) in enumerate(comorb_data.items()):
x = col_xs[ci]
col = NAVY if ci == 0 else (STEEL if ci == 1 else NAVY)
rect(s, x, 1.68, 3.8, 0.38, col)
tb(s, section, x+0.08, 1.7, 3.64, 0.34,
size=Pt(15), bold=True, color=WHITE, align=PP_ALIGN.CENTER)
for ri, (cond, prev) in enumerate(rows):
bg = WHITE if ri % 2 == 0 else OFFWHITE
y = 2.06 + ri * 0.64
rect(s, x, y, 3.8, 0.62, bg, LGRAY, 0.3)
tb(s, cond, x+0.1, y+0.1, 2.55, 0.42,
size=Pt(17), color=DARK, vanchor=MSO_ANCHOR.MIDDLE)
rect(s, x+2.7, y+0.08, 1.05, 0.46,
NAVY if ci != 1 else STEEL)
tb(s, prev, x+2.72, y+0.08, 1.01, 0.46,
size=Pt(16), bold=True, color=WHITE,
align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 12 – COMORBIDITY MANAGEMENT TABLE
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Management of Comorbidities — Summary Table")
footer(s)
col_headers = ["Comorbidity", "Assessment", "Non-Pharmacological", "Pharmacological / Specific"]
col_xs2 = [0.3, 2.35, 5.0, 8.35]
col_ws2 = [2.0, 2.6, 3.3, 4.65]
# header row
rect(s, 0.3, 1.22, 12.75, 0.42, NAVY)
for ci, (hdr, cx, cw) in enumerate(zip(col_headers, col_xs2, col_ws2)):
tb(s, hdr, cx+0.06, 1.24, cw-0.12, 0.38,
size=Pt(15), bold=True, color=WHITE, vanchor=MSO_ANCHOR.MIDDLE)
rows_cm = [
("Epilepsy\n5–30%",
"EEG, MRI brain",
"Seizure safety, parent ed., ketogenic diet if refractory",
"AEDs: Valproate, Levetiracetam, Oxcarbazepine"),
("ADHD\n35–40%",
"SNAP-IV, CBCL",
"Behavioural therapy, parent training, classroom modifications",
"Methylphenidate (>6 yr), Atomoxetine, Clonidine"),
("ASD\n15–20%",
"CARS, ADOS-2, M-CHAT",
"ABA therapy, SLT, social skills, AAC, sensory integration",
"Risperidone/Aripiprazole (aggression); SSRI (anxiety)"),
("Cerebral Palsy\n8–30%",
"GMFCS, MACS",
"Physiotherapy, OT, AFO, seating/positioning aids",
"Baclofen (spasticity); Botulinum toxin-A injections"),
("Visual deficits\n15–75%",
"Ophthalmology, ERG, VEP",
"Early visual stimulation, large-print, CVI therapy",
"Glasses/lenses; surgery (cataract, strabismus)"),
("Feeding issues\n20–47%",
"Video fluoroscopy, SLP",
"Feeding therapy, texture modification, posturing",
"PEG/NG if aspiration risk; anti-reflux agents"),
("Sleep disorders\n40–80%",
"Sleep diary, PSG",
"Sleep hygiene, visual schedules, light therapy",
"Melatonin (first line); Clonidine; avoid benzodiazepines"),
("Malnutrition\n40–70%",
"Anthropometry, diet history",
"High-calorie diet, feeding schedule, OT feeding therapy",
"Micronutrients: iron, zinc, vitamins A & D"),
]
row_h = 0.64
for ri, row_data in enumerate(rows_cm):
bg = WHITE if ri % 2 == 0 else OFFWHITE
y = 1.64 + ri * row_h
rect(s, 0.3, y, 12.75, row_h - 0.02, bg, LGRAY, 0.25)
for ci, (cell, cx, cw) in enumerate(zip(row_data, col_xs2, col_ws2)):
bld = (ci == 0)
tcol = NAVY if ci == 0 else DARK
tb(s, cell, cx+0.06, y+0.04, cw-0.12, row_h-0.1,
size=Pt(15 if ci > 0 else 15), bold=bld, color=tcol,
wrap=True, vanchor=MSO_ANCHOR.MIDDLE)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 13 – COUNSELLING
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Counselling in GDD — IAP Guideline 6A")
footer(s)
section_bar(s,
'"Counselling strongly recommended at initial diagnosis AND whenever new etiological information becomes available" — IAP 2022',
1.22, STEEL, 0.42, Pt(17))
counsel = [
("Disclosing the Diagnosis", [
"Be clear, direct and compassionate",
"Emphasise child's STRENGTHS, not only deficits",
"Use simple language; avoid jargon",
"Allow adequate time; validate parental emotions",
"Involve both parents / main caregivers",
]),
("Etiology & Investigations", [
"Explain that multiple tests may be needed",
"Despite all tests, etiology may not be found (30–40%)",
"Pre-test genetic counselling before ordering genetic tests",
"Explain Variant of Uncertain Significance (VUS)",
"Counsel on expense and timeline of investigations",
]),
("Management & Prognosis", [
"Improvement IS possible with consistent therapy",
"Set realistic but positive expectations",
"~2/3 will be diagnosed with ID later; ~20% function well socially",
"Early intervention modifies long-term developmental trajectory",
"Mild GDD — better outcomes than moderate/severe",
]),
("Legal, Social & Genetic", [
"RPwD Act 2016 — rights of persons with disabilities",
"UDID Card for disability benefits",
"RBSK, DEIC — free government services",
"Recurrence risk varies by etiology (empirical ~3–5%)",
"Offer prenatal diagnosis if genetic cause identified",
]),
]
for i, (title, items) in enumerate(counsel):
row, ci = divmod(i, 2)
col = NAVY if ci == 0 else STEEL
x = 0.4 + ci * 6.55
y = 1.75 + row * 2.75
rect(s, x, y, 6.2, 0.42, col)
tb(s, title, x+0.1, y+0.03, 6.0, 0.38,
size=Pt(17), bold=True, color=WHITE)
rect(s, x, y+0.42, 6.2, 2.25, WHITE, LGRAY, 0.5)
multi(s, [("• " + it, False, DARK) for it in items],
x+0.12, y+0.48, 5.96, 2.13, size=Pt(18), line_spacing=25)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 14 – PROGNOSIS & FOLLOW-UP
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Prognosis & Follow-Up in GDD")
footer(s)
rect(s, 0.4, 1.22, 6.1, 0.42, NAVY)
tb(s, "PROGNOSIS", 0.5, 1.24, 5.9, 0.38, size=Pt(18), bold=True, color=WHITE)
rect(s, 0.4, 1.64, 6.1, 5.45, WHITE, LGRAY, 0.6)
multi(s, [
("Degree of delay = most consistent predictor of outcome", True, NAVY),
("• Mild GDD → generally better long-term prognosis", False, DARK),
("• ~66% of children with GDD will be diagnosed with Intellectual Disability later in life", False, DARK),
("• ~20% achieve good social functioning despite a neurodevelopmental diagnosis", False, DARK),
("Factors affecting prognosis:", True, NAVY),
("• Severity of GDD and its underlying etiology", False, DARK),
("• Presence of comorbidities (especially epilepsy)", False, DARK),
("• Age at diagnosis and initiation of therapy", False, DARK),
("• Socioeconomic status & family compliance", False, DARK),
("• Availability of specific etiology-based treatment", False, DARK),
("Early intervention minimises delays and improves adaptive,\n academic and social outcomes", True, STEEL),
("Important: Even severely delayed children can show improvement\n with consistent and quality intervention", False, DARK),
], 0.55, 1.7, 5.85, 5.3, size=Pt(17), line_spacing=24)
rect(s, 6.7, 1.22, 6.25, 0.42, STEEL)
tb(s, "FOLLOW-UP PLAN", 6.8, 1.24, 6.05, 0.38, size=Pt(18), bold=True, color=WHITE)
rect(s, 6.7, 1.64, 6.25, 5.45, WHITE, LGRAY, 0.6)
fu_table = [
("Age / Phase", "Frequency", "Key Focus"),
("0 – 2 years", "Every 3 months", "Milestones, therapies, nutrition"),
("2 – 5 years", "Every 6 months", "Therapy progress, comorbidities"),
("After school entry", "Yearly", "ID re-classification, IEP review"),
("Anytime", "As needed", "Regression, new comorbidities"),
]
rect(s, 6.7, 1.64, 6.25, 0.44, STEEL)
for ci, lbl in enumerate(["Age", "Frequency", "Focus"]):
tb(s, lbl, [6.78, 8.48, 10.08][ci], 1.66,
[1.65, 1.55, 2.8][ci], 0.4,
size=Pt(15), bold=True, color=WHITE, vanchor=MSO_ANCHOR.MIDDLE)
for ri, (age, freq, focus) in enumerate(fu_table[1:]):
bg = WHITE if ri%2==0 else OFFWHITE
y = 2.08 + ri * 0.72
rect(s, 6.7, y, 6.25, 0.7, bg, LGRAY, 0.3)
tb(s, age, 6.78, y+0.09, 1.65, 0.52, size=Pt(17), bold=True, color=NAVY, vanchor=MSO_ANCHOR.MIDDLE)
tb(s, freq, 8.48, y+0.09, 1.55, 0.52, size=Pt(17), color=DARK, vanchor=MSO_ANCHOR.MIDDLE)
tb(s, focus,10.08, y+0.09, 2.78, 0.52, size=Pt(16), color=DARK, vanchor=MSO_ANCHOR.MIDDLE)
rect(s, 6.7, 4.98, 6.25, 0.95, OFFWHITE, NAVY, 0.8)
multi(s, [
("Who leads follow-up?", True, NAVY),
("Developmental Paediatrician / Paediatric Neurologist\n– led multidisciplinary team", False, DARK),
], 6.8, 5.02, 6.05, 0.88, size=Pt(17), line_spacing=22)
rect(s, 6.7, 6.0, 6.25, 0.95, OFFWHITE, STEEL, 0.8)
multi(s, [
("At age 5+:", True, STEEL),
("Re-assess → re-label as Intellectual Disability (ID)\nif appropriate, using standardised ID criteria", False, DARK),
], 6.8, 6.04, 6.05, 0.88, size=Pt(17), line_spacing=22)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 15 – GDD & GENETICS
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "GDD & Genetics")
footer(s)
section_bar(s, "Genetic causes account for 30–50% of GDD — the single largest etiological category", 1.22, STEEL, 0.38, Pt(17))
gen = [
("CHROMOSOMAL\nABNORMALITIES", [
"Down syndrome (Trisomy 21) — most common",
"Trisomy 18, 13",
"Turner (45,X), Klinefelter (47,XXY)",
"22q11.2 deletion (DiGeorge syndrome)",
"5p deletion (Cri-du-chat)",
"Test: Chromosomal Microarray (CMA) — 1st-line",
]),
("SINGLE-GENE &\nGENOMIC DISORDERS", [
"Fragile X syndrome (FMR1) — most common inherited cause",
"Rett syndrome (MECP2) — girls",
"Angelman / Prader-Willi (imprinting)",
"Tuberous Sclerosis (TSC1/TSC2)",
"Neurofibromatosis type 1 (NF1)",
"Test: WES / WGS when CMA negative",
]),
("METABOLIC /\nBIOCHEMICAL", [
"Phenylketonuria (PKU) — treatable, NBS",
"Congenital hypothyroidism — treatable",
"Mucopolysaccharidoses (MPS I, II, III)",
"Organic acidurias (propionic, methylmalonic)",
"Congenital Disorders of Glycosylation (CDG)",
"Test: Urine organic acids, plasma amino acids",
]),
("GENETIC\nCOUNSELLING", [
"Establish accurate molecular diagnosis first",
"Determine inheritance: AR (25%), AD, XL, de novo",
"De novo mutations — low recurrence risk",
"Offer prenatal diagnosis: CVS / amniocentesis",
"Cascade testing for at-risk family members",
"Explain VUS — review in 2–3 years with new data",
]),
]
for i, (title, items) in enumerate(gen):
col = NAVY if i % 2 == 0 else STEEL
x = 0.4 + i * 3.23
rect(s, x, 1.72, 3.05, 0.46, col)
tb(s, title, x+0.06, 1.74, 2.93, 0.42,
size=Pt(15), bold=True, color=WHITE,
align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
rect(s, x, 2.18, 3.05, 4.9, WHITE, LGRAY, 0.5)
multi(s, [("• " + it, False, DARK) for it in items],
x+0.1, 2.24, 2.85, 4.75, size=Pt(17), line_spacing=25)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 16 – FLOWCHART: APPROACH TO GDD
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Flowchart: Clinical Approach to a Child with GDD")
footer(s)
# Central spine
spine_x = 4.7
spine_w = 3.9
steps = [
("Child < 5 years — Parental concern OR surveillance flag at clinic", NAVY, 0.52),
("Detailed History + Physical Examination", STEEL, 0.48),
("Administer standardized developmental test\n(DASII / BSID-III / DDST-II)", NAVY, 0.56),
("◆ Delay in ≥ 2 domains? (≥ 2 SD below mean?)", STEEL, 0.52),
("GDD CONFIRMED — Classify Severity\n(Mild / Moderate / Severe / Profound)", NAVY, 0.56),
("Begin Early Intervention IMMEDIATELY\n(DEIC, RBSK — do not wait for etiology)", STEEL, 0.52),
("Tier 1 Investigations + Etiological Work-up\n(Genetic, metabolic, imaging as indicated)", NAVY, 0.52),
("Multidisciplinary Management + Family Counselling", STEEL, 0.48),
("Regular Follow-Up — 3-monthly (0–2 yr), 6-monthly (2–5 yr)", NAVY, 0.48),
]
y_cursor = 1.22
for i, (txt, col, h) in enumerate(steps):
rect(s, spine_x, y_cursor, spine_w, h, col, LGRAY, 0.5)
tb(s, txt, spine_x+0.08, y_cursor+0.04, spine_w-0.16, h-0.08,
size=Pt(15), bold=(col==NAVY), color=WHITE,
align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE, wrap=True)
if i < len(steps)-1:
next_h = steps[i+1][2]
arrow_down(s, spine_x + spine_w/2, y_cursor+h, 0.08)
y_cursor += h + 0.08
# Left side notes
left_notes = [
(1.22, "High-risk infants:\nScreen 6-monthly\ntill 24 months", OFFWHITE, NAVY),
(2.68, "NO delay found:\nContinue routine\nsurveillance", OFFWHITE, STEEL),
(4.22, "NO → Delay < 2 SD:\nRepeat screen\nin 3–6 months", OFFWHITE, NAVY),
]
for ny, ntxt, nbg, ncol in left_notes:
rect(s, 0.4, ny, 3.8, 0.72, nbg, ncol, 0.8)
tb(s, ntxt, 0.5, ny+0.04, 3.6, 0.64,
size=Pt(15), color=ncol, wrap=True, vanchor=MSO_ANCHOR.MIDDLE)
rect(s, 4.2, ny+0.36, 0.5, 0.04, ncol)
# Right side notes
right_notes = [
(5.56, "Syndromic GDD:\nDysmorphics → targeted\ngenetic testing first", OFFWHITE, STEEL),
(7.04, "Etiology found:\nSpecific treatment\nRecurrence risk", OFFWHITE, NAVY),
(7.04+0.72, "Etiology unknown:\nEmpirical recurrence\nrisk 3–5%", OFFWHITE, STEEL),
]
for ny, ntxt, nbg, ncol in right_notes:
rect(s, 9.1, ny, 3.85, 0.68, nbg, ncol, 0.8)
tb(s, ntxt, 9.2, ny+0.04, 3.65, 0.6,
size=Pt(15), color=ncol, wrap=True, vanchor=MSO_ANCHOR.MIDDLE)
rect(s, 8.6, ny+0.34, 0.5, 0.04, ncol)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 17 – FLOWCHART: DEVELOPMENTAL SCREENING ALGORITHM
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Flowchart: Developmental Screening Algorithm (IAP 2022)")
footer(s)
# Two parallel tracks
for stream_i, (track_title, track_col, steps_data) in enumerate([
("NORMAL RISK CHILD", NAVY, [
("Routine surveillance at every\nwell-child visit", 0.56),
("Screen at 9–12 months\n(DASII / ASQ / DDST-II)", 0.52),
("Screen at 18–24 months\n(DASII + M-CHAT for ASD)", 0.52),
("Screen at school entry\n(4.5–5 years)", 0.52),
("◆ Screen positive OR\nparental concern?", 0.52),
("Formal Developmental Assessment\n(standardised tests)", 0.52),
("GDD confirmed → Refer to\nDevelopmental Paediatrician + MDT", 0.52),
]),
("HIGH RISK INFANT", STEEL, [
("Identify risk: Prematurity, HIE,\nNICU, LBW, genetic syndrome", 0.56),
("Screen every 6 months\nbirth → 24 months (BSID-III, Griffiths)", 0.52),
("Screen yearly\n24 months → 5 years", 0.52),
("Screen once at\nschool entry", 0.52),
("◆ Any screen positive?", 0.52),
("Immediate formal assessment\n(DASII / BSID-III / Vineland-II)", 0.52),
("GDD confirmed → Early Intervention\nat DEIC + etiological workup", 0.52),
]),
]):
x = 0.4 + stream_i * 6.65
w = 6.2
rect(s, x, 1.22, w, 0.44, track_col)
tb(s, track_title, x+0.1, 1.24, w-0.2, 0.4,
size=Pt(18), bold=True, color=WHITE, align=PP_ALIGN.CENTER)
y_c = 1.66
for si, (stxt, sh) in enumerate(steps_data):
rect(s, x, y_c, w, sh, NAVY if stream_i==0 else STEEL, LGRAY, 0.5)
tb(s, stxt, x+0.1, y_c+0.04, w-0.2, sh-0.08,
size=Pt(16), bold=False, color=WHITE,
align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE, wrap=True)
if si < len(steps_data)-1:
arrow_down(s, x+w/2, y_c+sh, 0.09)
y_c += sh + 0.09
# Divider
rect(s, 6.62, 1.22, 0.06, 6.0, LGRAY)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 18 – FLOWCHART: INVESTIGATION PATHWAY
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Flowchart: Investigation Pathway in GDD")
footer(s)
fbox(s, "GDD CONFIRMED — Begin Systematic Investigations", 2.2, 1.22, 8.9, 0.5, NAVY)
arrow_down(s, 6.65, 1.72, 0.12)
# Tier blocks
tier_data = [
("TIER 1 — ALL CHILDREN (Do First)", NAVY,
["TFT (TSH, T4)", "Metabolic screen: glucose, ammonia, lactate",
"Formal BERA (hearing)", "Visual assessment", "Urine metabolic screen"]),
("TIER 2 — GUIDED BY CLINICAL CLUES", STEEL,
["MRI Brain (neuro signs, abnormal HC)", "EEG (seizures / regression)",
"Chromosomal Microarray — CMA (1st-line genetic)",
"Karyotype/FISH if specific syndrome", "Lead level if exposure"]),
("TIER 3 — TARGETED (after Tier 2)", NAVY,
["WES / WGS (negative CMA)", "Fragile X testing (FMR1)",
"Mitochondrial genome panel",
"Lysosomal enzyme assays", "CSF analysis"]),
]
y_t = 1.92
for title, col, items in tier_data:
rect(s, 0.4, y_t, 12.5, 0.38, col)
tb(s, title, 0.5, y_t+0.02, 12.3, 0.34,
size=Pt(16), bold=True, color=WHITE)
rect(s, 0.4, y_t+0.38, 12.5, 0.7, WHITE, LGRAY, 0.4)
for ii, it in enumerate(items):
tx = 0.5 + ii * 2.5
tb(s, "• " + it, tx, y_t+0.42, 2.4, 0.62,
size=Pt(15), color=DARK, wrap=True)
arrow_down(s, 6.65, y_t+1.08, 0.1)
y_t += 1.18
# Outcome split
rect(s, 0.4, y_t, 5.9, 0.42, STEEL)
tb(s, "Etiology IDENTIFIED", 0.5, y_t+0.02, 5.8, 0.38,
size=Pt(16), bold=True, color=WHITE, align=PP_ALIGN.CENTER)
rect(s, 0.4, y_t+0.42, 5.9, 0.68, WHITE, LGRAY, 0.5)
multi(s, [
("• Specific management possible", False, DARK),
("• Accurate recurrence risk for family", False, DARK),
("• Genetic counselling + prenatal diagnosis", False, DARK),
], 0.5, y_t+0.46, 5.7, 0.62, size=Pt(16), line_spacing=20)
rect(s, 7.0, y_t, 5.9, 0.42, NAVY)
tb(s, "Etiology NOT Found (~40%)", 7.1, y_t+0.02, 5.7, 0.38,
size=Pt(16), bold=True, color=WHITE, align=PP_ALIGN.CENTER)
rect(s, 7.0, y_t+0.42, 5.9, 0.68, WHITE, LGRAY, 0.5)
multi(s, [
("• Continue multidisciplinary management", False, DARK),
("• Empirical recurrence risk ~3–5%", False, DARK),
("• Re-investigate with new technologies in future", False, DARK),
], 7.1, y_t+0.46, 5.7, 0.62, size=Pt(16), line_spacing=20)
tb(s, "COMMON GROUND — Multidisciplinary intervention continues regardless of etiology",
0.4, y_t+1.14, 12.5, 0.3,
size=Pt(15), bold=True, color=STEEL, align=PP_ALIGN.CENTER)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 19 – FLOWCHART: MANAGEMENT ALGORITHM
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Flowchart: Management Algorithm in GDD")
footer(s)
fbox(s, "GDD DIAGNOSED — Begin Management IMMEDIATELY (before etiology is confirmed)", 1.5, 1.22, 10.3, 0.52, NAVY)
arrow_down(s, 6.65, 1.74, 0.1)
# 4 pillars
pillars = [
("EARLY INTERVENTION\n(Day 1)", [
"DEIC enrolment (free, RBSK)",
"Infant stimulation",
"Parent-mediated therapy",
"Developmental supportive care",
]),
("THERAPY TEAM", [
"Speech & Language Therapy",
"Occupational Therapy",
"Physiotherapy / NDT",
"Behavioural therapy (ABA)",
]),
("SPECIAL EDUCATION", [
"Individualized Education Plan",
"Inclusive / special schooling",
"AAC devices",
"Vocational training (older)",
]),
("MEDICAL /\nSPECIFIC", [
"Treat etiology (PKU, thyroid)",
"AEDs for seizures",
"Nutritional support",
"Comorbidity management",
]),
]
for i, (title, items) in enumerate(pillars):
col = NAVY if i % 2 == 0 else STEEL
x = 0.4 + i * 3.24
rect(s, x, 1.92, 3.06, 0.48, col)
tb(s, title, x+0.06, 1.94, 2.94, 0.44,
size=Pt(15), bold=True, color=WHITE,
align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
rect(s, x, 2.4, 3.06, 1.9, WHITE, LGRAY, 0.5)
for j, it in enumerate(items):
tb(s, "• " + it, x+0.1, 2.44 + j*0.44, 2.86, 0.4,
size=Pt(16), color=DARK)
# Arrow to comorbidity management
arrow_down(s, 6.65, 4.3, 0.12)
fbox(s, "Screen & Manage COMORBIDITIES at each visit\n(Epilepsy, ADHD, ASD, Feeding, Sleep, Vision, Hearing)",
1.5, 4.42, 10.3, 0.58, STEEL, WHITE, Pt(16), False)
arrow_down(s, 6.65, 5.0, 0.12)
# Family & counselling
for ci, (title, col, items) in enumerate([
("FAMILY SUPPORT & COUNSELLING", NAVY, [
"Structured counselling at every visit",
"Psychological support for caregivers",
"Legal aid: RPwD Act, UDID card",
]),
("REVIEW AT FOLLOW-UP", STEEL, [
"Development in all domains",
"Therapy response & adherence",
"Transition at age 5+ → ID classification",
]),
]):
x = 0.4 + ci * 6.55
rect(s, x, 5.12, 6.2, 0.4, col)
tb(s, title, x+0.08, 5.14, 6.04, 0.36,
size=Pt(16), bold=True, color=WHITE)
rect(s, x, 5.52, 6.2, 1.05, WHITE, LGRAY, 0.5)
multi(s, [("• " + it, False, DARK) for it in items],
x+0.1, 5.56, 6.0, 0.98, size=Pt(17), line_spacing=24)
rect(s, 0.4, 6.68, 12.5, 0.4, NAVY)
tb(s, "Goal: Maximise the child's functional potential and quality of life within available resources",
0.5, 6.7, 12.3, 0.36,
size=Pt(17), bold=True, color=WHITE, align=PP_ALIGN.CENTER)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 20 – KEY MESSAGES + REFERENCES
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Key Messages & References")
footer(s)
messages = [
"GDD = significant delay in ≥2 developmental domains in children < 5 years; prevalence 1–3% globally, 3–13% in India",
"Aetiology is heterogeneous; genetic causes (30–50%) are the single largest category",
"Developmental surveillance at every well-child visit; formal screening at 9–12 m, 18–24 m, and school entry",
"Detailed history + physical exam is the cornerstone of evaluation — dysmorphic features suggest syndromic GDD",
"Tiered investigations: treat treatable causes first (thyroid, metabolic); CMA is first-line genetic test",
"Management is multidisciplinary and must start BEFORE etiology is known — DEIC and RBSK are free resources",
"Comorbidities are common: epilepsy (5–30%), ADHD (35–40%), ASD (15–20%), malnutrition (40–70%)",
"Structured counselling is mandatory at diagnosis and at every new etiological finding",
"~66% evolve to Intellectual Disability; early intervention modifies this trajectory",
"At age 5+, re-classify as ID if appropriate; transition to adult services in adolescence",
]
rect(s, 0.4, 1.22, 12.5, 0.4, NAVY)
tb(s, "10 TAKE-HOME MESSAGES", 0.5, 1.24, 12.3, 0.36,
size=Pt(18), bold=True, color=WHITE)
for i, msg in enumerate(messages):
bg = WHITE if i%2==0 else OFFWHITE
y = 1.62 + i * 0.5
rect(s, 0.4, y, 12.5, 0.48, bg, LGRAY, 0.25)
rect(s, 0.4, y, 0.42, 0.48, NAVY if i%2==0 else STEEL)
tb(s, str(i+1), 0.41, y+0.04, 0.38, 0.4,
size=Pt(17), bold=True, color=WHITE,
align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
tb(s, msg, 0.9, y+0.05, 11.9, 0.38,
size=Pt(17), color=DARK, vanchor=MSO_ANCHOR.MIDDLE)
rect(s, 0.4, 6.68, 12.5, 0.4, OFFWHITE, STEEL, 0.8)
multi(s, [
("References: ", True, NAVY),
("Juneja M, et al. Indian Pediatrics 2022;59:401–415 | Bradley & Daroff Neurology 8e | Harriet Lane Handbook 23e | Thompson & Thompson Genetics 9e", False, MIDGRAY),
], 0.5, 6.7, 12.3, 0.36, size=Pt(13), line_spacing=14)
# ═════════════════════════════════════════════════════════════════════════════
# SAVE
# ═════════════════════════════════════════════════════════════════════════════
out = "/tmp/workspace/gdd-seminar/GDD_Seminar_v2.pptx"
prs.save(out)
print(f"Saved: {out} — Slides: {len(prs.slides)}")
cd /tmp/workspace/gdd-seminar && python build_gdd_v2.py 2>&1
ls -lh /tmp/workspace/gdd-seminar/GDD_Seminar_v2.pptx
GDD Seminar v2
Presentation · PPTX
#1B3A6B — primary headers, key emphasis#4A90A4 — secondary headers, alternating accents#FFFFFF / #F4F7FA — all backgrounds and content panelsYes first
GDD Seminar IAP 2022
Presentation · PPTX
No again I want second version only but add gdd vs id And please elaborate more on slides and approach to child with gdd flowchart as it is from iap guidelines You are cut shorting slides Please make it properly
Give me
Please create the file with above instructions
Please create
Are you going to create or not
Please create
Why not
~/gdd-seminar/build_gdd_v3.py
"""
GDD Seminar Presentation – v3
Same v2 colour palette (Navy / Steel / White/Offwhite)
ADDITIONS vs v2:
• GDD vs ID comparison slide (new slide 4)
• Every content slide is fully elaborated
• IAP flowchart: Approach to Child with GDD (proper step-by-step)
• 23 slides total
"""
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
# ── PALETTE ──────────────────────────────────────────────────────────────────
NAVY = RGBColor(0x1B, 0x3A, 0x6B)
STEEL = RGBColor(0x4A, 0x90, 0xA4)
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
OFFWHITE = RGBColor(0xF4, 0xF7, 0xFA)
DARK = RGBColor(0x1A, 0x1A, 0x2E)
LGRAY = RGBColor(0xD8, 0xE2, 0xEC)
MIDGRAY = RGBColor(0x6E, 0x8A, 0x9E)
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
BLANK = prs.slide_layouts[6]
# ── HELPERS ──────────────────────────────────────────────────────────────────
def rect(slide, x, y, w, h, fill, border=None, bw=0.8):
s = slide.shapes.add_shape(1, Inches(x), Inches(y), Inches(w), Inches(h))
s.fill.solid(); s.fill.fore_color.rgb = fill
if border:
s.line.color.rgb = border; s.line.width = Pt(bw)
else:
s.line.fill.background()
return s
def tb(slide, text, x, y, w, h, size=Pt(18), bold=False, italic=False,
color=DARK, align=PP_ALIGN.LEFT, wrap=True, vanchor=MSO_ANCHOR.TOP):
box = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
tf = box.text_frame
tf.word_wrap = wrap; tf.vertical_anchor = vanchor
tf.margin_left = tf.margin_right = tf.margin_top = tf.margin_bottom = Inches(0.04)
p = tf.paragraphs[0]; p.alignment = align
r = p.add_run(); r.text = text
r.font.size = size; r.font.bold = bold; r.font.italic = italic
r.font.color.rgb = color; r.font.name = "Calibri"
return box
def multi(slide, lines, x, y, w, h, size=Pt(18), wrap=True,
vanchor=MSO_ANCHOR.TOP, ls=None):
box = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
tf = box.text_frame
tf.word_wrap = wrap; tf.vertical_anchor = vanchor
tf.margin_left = tf.margin_right = Inches(0.05)
tf.margin_top = tf.margin_bottom = Inches(0.03)
first = True
for item in lines:
if isinstance(item, str): txt, bld, col = item, False, DARK
else:
txt = item[0]
bld = item[1] if len(item) > 1 else False
col = item[2] if len(item) > 2 else DARK
p = tf.paragraphs[0] if first else tf.add_paragraph()
first = False
p.alignment = PP_ALIGN.LEFT
if ls: p.line_spacing = Pt(ls)
r = p.add_run(); r.text = txt
r.font.size = size; r.font.bold = bld
r.font.color.rgb = col; r.font.name = "Calibri"
return box
def header(slide, title, sub=None):
rect(slide, 0, 0, 13.333, 1.0, NAVY)
rect(slide, 0, 1.0, 13.333, 0.05, STEEL)
tb(slide, title, 0.35, 0.07, 12.5, 0.86, size=Pt(28), bold=True,
color=WHITE, align=PP_ALIGN.LEFT, vanchor=MSO_ANCHOR.MIDDLE)
if sub:
tb(slide, sub, 0.35, 1.07, 12.5, 0.38, size=Pt(15),
color=STEEL, italic=True)
rect(slide, 0, 1.05, 13.333, 6.45, OFFWHITE)
def footer(slide, note="IAP Consensus Guidelines 2022 – Juneja M et al. Indian Pediatrics 59:401–415"):
rect(slide, 0, 7.2, 13.333, 0.3, NAVY)
tb(slide, note, 0.3, 7.21, 12.7, 0.27, size=Pt(11),
color=LGRAY, italic=True, align=PP_ALIGN.CENTER)
def sbar(slide, text, y, col=NAVY, h=0.38, fs=Pt(16)):
rect(slide, 0.3, y, 12.7, h, col)
tb(slide, text, 0.38, y+0.02, 12.5, h-0.04, size=fs,
bold=True, color=WHITE, align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
def arrow_v(slide, cx, y, length=0.12):
rect(slide, cx - 0.018, y, 0.036, length, STEEL)
def fbox(slide, text, x, y, w, h=0.52, fill=NAVY, tc=WHITE, fs=Pt(16), bold=True):
rect(slide, x, y, w, h, fill, STEEL, 0.6)
tb(slide, text, x+0.07, y+0.04, w-0.14, h-0.08,
size=fs, bold=bold, color=tc,
align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE, wrap=True)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 1 – TITLE
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
rect(s, 0, 0, 13.333, 7.5, NAVY)
rect(s, 0, 2.55, 13.333, 0.06, STEEL)
rect(s, 0, 4.4, 13.333, 0.06, STEEL)
tb(s, "GLOBAL DEVELOPMENTAL DELAY", 0.6, 0.45, 12.1, 2.0,
size=Pt(44), bold=True, color=WHITE, align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
tb(s, "A Comprehensive Seminar Presentation", 0.6, 2.65, 12.1, 0.55,
size=Pt(22), color=LGRAY, italic=True, align=PP_ALIGN.CENTER)
tb(s, "Based on IAP Consensus Guidelines 2022", 0.6, 3.28, 12.1, 0.52,
size=Pt(20), bold=True, color=STEEL, align=PP_ALIGN.CENTER)
tb(s, "Juneja M, et al. Indian Pediatrics. 2022;59:401–415\nGrowth, Development & Behavioral Pediatrics • Neurology • Neurodevelopment Pediatrics — IAP",
0.6, 4.5, 12.1, 0.9, size=Pt(17), color=LGRAY, align=PP_ALIGN.CENTER)
tb(s, "August 2026", 0.6, 6.6, 12.1, 0.4,
size=Pt(16), color=MIDGRAY, italic=True, align=PP_ALIGN.CENTER)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 2 – OUTLINE
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Seminar Outline")
footer(s)
col1 = ["1. Definition of GDD",
"2. GDD vs Intellectual Disability",
"3. Prevalence",
"4. Etiology (with percentages)",
"5. Developmental Surveillance & Screening",
"6. Clinical Evaluation",
"7. Investigations",
"8. Management",
"9. Comorbidities & Their Prevalence",
"10. Management of Comorbidities",
"11. Counselling in GDD",
"12. Prognosis & Follow-Up"]
col2 = ["13. GDD & Genetics",
"14. Flowchart: Approach to Child with GDD (IAP)",
"15. Flowchart: Developmental Screening Algorithm",
"16. Flowchart: Investigation Pathway",
"17. Flowchart: Management Algorithm",
"18. Key Messages & References"]
rect(s, 0.4, 1.22, 6.1, 5.85, WHITE, LGRAY, 0.7)
rect(s, 6.8, 1.22, 6.1, 5.85, WHITE, LGRAY, 0.7)
rect(s, 0.4, 1.22, 6.1, 0.4, NAVY)
rect(s, 6.8, 1.22, 6.1, 0.4, NAVY)
tb(s, "Topics — Part 1", 0.5, 1.24, 5.9, 0.36, size=Pt(16), bold=True, color=WHITE)
tb(s, "Topics — Part 2", 6.9, 1.24, 5.9, 0.36, size=Pt(16), bold=True, color=WHITE)
multi(s, [(c, False, DARK) for c in col1], 0.55, 1.68, 5.85, 5.3, size=Pt(18), ls=32)
multi(s, [(c, False, DARK) for c in col2], 6.88, 1.68, 5.85, 5.3, size=Pt(18), ls=32)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 3 – DEFINITION
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Definition of Global Developmental Delay (GDD)")
footer(s)
rect(s, 0.4, 1.22, 12.5, 1.62, WHITE, NAVY, 1.5)
tb(s, "IAP / AAN DEFINITION", 0.52, 1.25, 5.5, 0.34, size=Pt(14), bold=True, color=NAVY)
multi(s, [
("GDD is defined as a significant delay in two or more developmental domains in children", False, DARK),
("under 5 years of age, where 'significant' = performance ≥ 2 standard deviations below", False, DARK),
("the mean on age-appropriate, standardized developmental tests.", True, NAVY),
], 0.55, 1.58, 12.2, 1.2, size=Pt(19), ls=27)
domains = ["Gross &\nFine Motor", "Speech &\nLanguage", "Cognition",
"Social /\nPersonal", "Activities of\nDaily Living (ADL)"]
for i, d in enumerate(domains):
fill = NAVY if i % 2 == 0 else STEEL
x = 0.4 + i * 2.5
rect(s, x, 2.97, 2.38, 0.74, fill)
tb(s, d, x+0.05, 2.98, 2.28, 0.72, size=Pt(17), bold=True,
color=WHITE, align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
rows = [
("Age group", "Children < 5 years; term 'Intellectual Disability' used for ≥ 5 yrs"),
("Significant delay","≥ 2 standard deviations below the mean on standardized developmental tests"),
("Exclusions", "Delay explained SOLELY by isolated motor deficit or severe uncorrected sensory impairment"),
("Severity (SQ)", "Mild: SQ 55–70 | Moderate: SQ 36–54 | Severe: SQ 21–35 | Profound: SQ < 20"),
("DSM-5 note", "DSM-5 uses GDD for children too young to complete standardized intellectual testing"),
]
rect(s, 0.4, 3.82, 12.5, 0.38, NAVY)
tb(s, "KEY CRITERIA", 0.5, 3.84, 12.3, 0.34, size=Pt(15), bold=True, color=WHITE)
for i, (k, v) in enumerate(rows):
bg = WHITE if i % 2 == 0 else OFFWHITE
y = 4.2 + i * 0.46
rect(s, 0.4, y, 12.5, 0.44, bg, LGRAY, 0.3)
tb(s, k, 0.5, y+0.04, 2.5, 0.36, size=Pt(16), bold=True,
color=NAVY, vanchor=MSO_ANCHOR.MIDDLE)
tb(s, v, 3.05, y+0.04, 9.75, 0.36, size=Pt(16),
color=DARK, vanchor=MSO_ANCHOR.MIDDLE)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 4 – GDD vs ID
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "GDD vs Intellectual Disability (ID) — Key Differences")
footer(s)
sbar(s, "GDD and ID are related but distinct diagnoses. GDD does NOT automatically become ID.", 1.22, STEEL, 0.38, Pt(16))
headers_row = ["Feature", "Global Developmental Delay (GDD)", "Intellectual Disability (ID)"]
compare = [
("Definition", "Significant delay in ≥2 developmental domains; assessed clinically or by standardized dev. tests",
"Deficits in intellectual functions AND adaptive behaviour; confirmed by standardized IQ + adaptive testing"),
("Age of use", "Children < 5 years of age",
"Children ≥ 5 years (when formal IQ testing is feasible)"),
("Diagnosis basis", "Clinical + standardized developmental test (DASII, BSID-III, Griffiths)",
"IQ < 70 on standardized IQ test (WISC-IV etc.) + adaptive functioning deficit"),
("IQ testing", "Not required / not feasible in < 5 yrs",
"Mandatory for diagnosis; IQ < 2 SD below mean"),
("Adaptive fn.", "Assessed qualitatively; formal testing may not be possible",
"Vineland-II, ABAS-3 — formal adaptive behaviour scale required"),
("Reversibility", "Potentially reversible with early intervention in some cases",
"Lifelong condition; management focuses on maximising function"),
("Prognosis", "~66% will later meet criteria for ID; ~20% will NOT",
"Stable diagnosis; degree of severity guides educational & social placement"),
("Classification", "Mild / Moderate / Severe / Profound (by SQ on adaptive scales)",
"Mild / Moderate / Severe / Profound (by IQ and adaptive functioning — DSM-5)"),
("ICD/DSM term", "DSM-5: 'Global Developmental Delay' (code 315.8)",
"DSM-5: 'Intellectual Developmental Disorder'; ICD-11: Disorders of intellectual development"),
]
col_xs = [0.4, 3.0, 8.15]
col_ws = [2.55, 5.1, 5.1]
rect(s, 0.4, 1.68, 12.75, 0.42, NAVY)
for ci, (hdr, cx, cw) in enumerate(zip(headers_row, col_xs, col_ws)):
tb(s, hdr, cx+0.06, 1.7, cw-0.12, 0.38, size=Pt(16), bold=True,
color=WHITE, vanchor=MSO_ANCHOR.MIDDLE)
for ri, (feat, gdd_txt, id_txt) in enumerate(compare):
bg = WHITE if ri % 2 == 0 else OFFWHITE
y = 2.1 + ri * 0.545
rect(s, 0.4, y, 12.75, 0.53, bg, LGRAY, 0.25)
tb(s, feat, col_xs[0]+0.06, y+0.04, col_ws[0]-0.12, 0.45,
size=Pt(15), bold=True, color=NAVY, vanchor=MSO_ANCHOR.MIDDLE)
tb(s, gdd_txt, col_xs[1]+0.06, y+0.04, col_ws[1]-0.12, 0.45,
size=Pt(14), color=DARK, wrap=True, vanchor=MSO_ANCHOR.MIDDLE)
tb(s, id_txt, col_xs[2]+0.06, y+0.04, col_ws[2]-0.12, 0.45,
size=Pt(14), color=DARK, wrap=True, vanchor=MSO_ANCHOR.MIDDLE)
# column dividers
for cx in [3.0, 8.15]:
rect(s, cx, 1.68, 0.02, 7.08, LGRAY)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 5 – PREVALENCE
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Prevalence of GDD")
footer(s)
prev_rows = [
("Global Estimates", "1–3%", "Based on standardized population surveys worldwide"),
("Turkey (recent)", "6.4%", "Higher due to broader screening sensitivity and methodology"),
("UAE (recent)", "8.0%", "Multicentre community-based study"),
("India — range", "3–13%", "Varies by age group, tools used, region surveyed; likely underestimated"),
("India — NFHS/community data", "~5–7%", "Estimates from selected community-based screening studies"),
("Gender ratio", "+30% ♂", "Boys affected 30% more; gap narrows with increasing age"),
("Urban vs Rural (India)", "Urban < Rural", "Higher prevalence in rural areas due to more risk factors (HIE, malnutrition, consanguinity)"),
]
rect(s, 0.4, 1.22, 12.5, 0.42, NAVY)
for ci, (lbl, cx, cw) in enumerate(zip(
["Region / Parameter", "Prevalence", "Notes / Comments"],
[0.5, 4.4, 6.3], [3.85, 1.85, 6.55])):
tb(s, lbl, cx, 1.24, cw, 0.38, size=Pt(16), bold=True, color=WHITE)
for i, (region, prev, note) in enumerate(prev_rows):
bg = WHITE if i % 2 == 0 else OFFWHITE
y = 1.64 + i * 0.68
rect(s, 0.4, y, 12.5, 0.66, bg, LGRAY, 0.3)
tb(s, region, 0.5, y+0.08, 3.8, 0.5, size=Pt(17), bold=True,
color=NAVY, vanchor=MSO_ANCHOR.MIDDLE)
fill_c = NAVY if i % 2 == 0 else STEEL
rect(s, 4.35, y+0.08, 1.85, 0.5, fill_c)
tb(s, prev, 4.37, y+0.08, 1.81, 0.5, size=Pt(18), bold=True,
color=WHITE, align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
tb(s, note, 6.28, y+0.08, 6.55, 0.5, size=Pt(16),
color=DARK, wrap=True, vanchor=MSO_ANCHOR.MIDDLE)
rect(s, 0.4, 6.44, 12.5, 0.64, OFFWHITE, STEEL, 0.8)
multi(s, [
("Key India-specific points:", True, NAVY),
(" • HIE and congenital hypothyroidism are more common causes vs. Western countries", False, DARK),
(" • Most Indian prevalence data is based on developmental screening only — not confirmed by standardized testing", False, DARK),
], 0.5, 6.46, 12.3, 0.6, size=Pt(16), ls=19)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 6 – ETIOLOGY OVERVIEW
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Etiology of GDD — Overview")
footer(s)
sbar(s, "Etiology is HETEROGENEOUS — Genetic (30–50%) + Non-Genetic (50–70%) | Classified by timing: Prenatal · Perinatal · Postnatal",
1.22, STEEL, 0.38, Pt(16))
etio_data = [
("GENETIC (30–50%)", [
"Chromosomal abnormalities — Down syndrome, Trisomy 13/18, deletions, duplications",
"Single-gene disorders — Fragile X (most common inherited cause), Rett syndrome (MECP2)",
"Genomic / microdeletion syndromes — 22q11.2 deletion (DiGeorge), Angelman, PWS",
"Inborn errors of metabolism — PKU, MSUD, organic acidurias, CDG (~1–5%)",
"Syndromic GDD — typical phenotype + dysmorphics (e.g. Down syndrome)",
"Non-syndromic GDD — GDD is the only discernible feature; pathology unknown",
]),
("PRENATAL — Non-genetic", [
"TORCH infections — CMV (most common congenital infection), Toxoplasma, Rubella, Syphilis",
"Intrauterine growth restriction (IUGR) — chronic placental insufficiency",
"Teratogen exposure — alcohol (Fetal Alcohol Spectrum Disorder), valproate, thalidomide",
"Brain malformations — lissencephaly, polymicrogyria, schizencephaly, holoprosencephaly",
"Maternal thyroid disorders — hypothyroidism in pregnancy impairs fetal brain development",
"Maternal diabetes, hypertension, severe anaemia",
]),
("PERINATAL", [
"Hypoxic Ischaemic Encephalopathy (HIE) — most common preventable cause in India",
"Prematurity — especially < 32 weeks / very low birth weight (< 1500 g)",
"Neonatal jaundice — severe unconjugated hyperbilirubinaemia causing kernicterus",
"Perinatal infections — neonatal meningitis, sepsis, herpes encephalitis",
"Neonatal hypoglycaemia — prolonged / severe episodes cause hippocampal & cortical damage",
"Neonatal hypothyroidism — congenital hypothyroidism if NBS missed / untreated",
]),
("POSTNATAL", [
"CNS infections — bacterial meningitis, viral encephalitis (Japanese encephalitis in India)",
"Traumatic brain injury — accidental or non-accidental (abusive head trauma)",
"Lead poisoning / heavy metal toxicity — environmental exposure in developing countries",
"Severe protein-energy malnutrition — stunting, micronutrient deficiencies affect brain",
"Acquired hypothyroidism — missed congenital hypothyroidism or autoimmune",
"Near-drowning, status epilepticus, hypoglycaemia in infancy",
]),
]
for idx, (title, items) in enumerate(etio_data):
col = NAVY if idx % 2 == 0 else STEEL
x = 0.4 + idx * 3.23
rect(s, x, 1.72, 3.05, 0.44, col)
tb(s, title, x+0.07, 1.74, 2.91, 0.4, size=Pt(15), bold=True,
color=WHITE, align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
rect(s, x, 2.16, 3.05, 4.92, WHITE, LGRAY, 0.5)
multi(s, [("• " + it, False, DARK) for it in items],
x+0.1, 2.22, 2.85, 4.78, size=Pt(16), ls=24)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 7 – ETIOLOGY PERCENTAGES
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Etiology — Percentage Breakdown")
footer(s)
bars = [
("Genetic causes — total", "30–50%", 0.50, False),
(" • Chromosomal / syndromic", "~15%", 0.30, True),
(" • Single-gene / genomic", "~15%", 0.30, True),
(" • Inborn errors of metabolism", "1–5%", 0.10, True),
("Hypoxic Ischaemic Encephalopathy", "10–15%", 0.28, False),
("Prematurity / Low birth weight", "8–12%", 0.22, False),
("CNS malformations", "5–8%", 0.16, False),
("CNS infections & toxic causes", "5–10%", 0.18, False),
("Unknown / Idiopathic", "30–40%", 0.40, False),
]
rect(s, 0.4, 1.22, 12.5, 0.42, NAVY)
tb(s, "Cause", 0.5, 1.24, 4.2, 0.38, size=Pt(16), bold=True, color=WHITE)
tb(s, "Proportion", 4.75, 1.24, 2.0, 0.38, size=Pt(16), bold=True, color=WHITE)
tb(s, "Visual Scale (approximate)", 6.85, 1.24, 6.0, 0.38, size=Pt(16), bold=True, color=WHITE)
BAR_MAX = 5.8
for i, (label, pct, frac, is_sub) in enumerate(bars):
bg = WHITE if i % 2 == 0 else OFFWHITE
y = 1.64 + i * 0.6
rect(s, 0.4, y, 12.5, 0.58, bg, LGRAY, 0.3)
tb(s, label.strip(), 0.5 + (0.35 if is_sub else 0), y+0.08,
4.1 - (0.35 if is_sub else 0), 0.42,
size=Pt(16 if not is_sub else 15),
bold=not is_sub, color=NAVY if not is_sub else MIDGRAY,
vanchor=MSO_ANCHOR.MIDDLE)
fill_c = NAVY if not is_sub else STEEL
rect(s, 4.75, y+0.09, 1.95, 0.4, fill_c)
tb(s, pct, 4.77, y+0.09, 1.91, 0.4, size=Pt(17), bold=True,
color=WHITE, align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
bw = BAR_MAX * frac
rect(s, 6.85, y+0.12, max(bw, 0.06), 0.34, fill_c)
if bw > 0.3:
tb(s, pct, 6.85 + bw + 0.08, y+0.12, 1.0, 0.34,
size=Pt(14), color=MIDGRAY, vanchor=MSO_ANCHOR.MIDDLE)
rect(s, 0.4, 7.05, 12.5, 0.32, OFFWHITE, STEEL, 0.7)
tb(s, "India-specific: HIE, congenital hypothyroidism and malnutrition contribute proportionally more than in Western countries",
0.5, 7.07, 12.2, 0.28, size=Pt(14), italic=True, color=NAVY)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 8 – SURVEILLANCE & SCREENING
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Developmental Surveillance & Screening (IAP 2022)")
footer(s)
rect(s, 0.4, 1.22, 5.95, 0.42, NAVY)
tb(s, "SURVEILLANCE — All Children", 0.5, 1.24, 5.75, 0.38,
size=Pt(17), bold=True, color=WHITE)
rect(s, 0.4, 1.64, 5.95, 5.45, WHITE, LGRAY, 0.6)
multi(s, [
("What is developmental surveillance?", True, NAVY),
("Ongoing, longitudinal process of monitoring child's development at every health visit using clinical skills, observations and parental reporting.", False, DARK),
("", False, DARK),
("Components of surveillance:", True, NAVY),
("• Elicit and attend to parental concerns", False, DARK),
("• Obtain a focused developmental history", False, DARK),
("• Observe the child directly during the visit", False, DARK),
("• Note protective and risk factors in the environment", False, DARK),
("• Record developmental observations in the health record", False, DARK),
("• Use IAP Red Flags Checklist at every visit", False, DARK),
("", False, DARK),
("When to act on surveillance?", True, NAVY),
("• Any parental concern — investigate further", False, DARK),
("• Missing a developmental milestone — refer for screening", False, DARK),
("• Presence of red flags — immediate referral", False, DARK),
("• Risk factors present — heightened surveillance", False, DARK),
], 0.52, 1.7, 5.73, 5.3, size=Pt(16), ls=21)
rect(s, 6.55, 1.22, 6.4, 0.42, STEEL)
tb(s, "SCREENING SCHEDULE — IAP 2022", 6.65, 1.24, 6.2, 0.38,
size=Pt(17), bold=True, color=WHITE)
sched_hdr = ["Category", "Age Point", "Recommended Tool(s)"]
sched_rows = [
("Normal Risk", "9–12 months", "DASII, ASQ-3, DDST-II, Trivandrum DD Chart"),
("Normal Risk", "18–24 months", "DASII, ASQ-3, M-CHAT-R/F (for ASD)"),
("Normal Risk", "School entry\n(4.5–5 yrs)", "DASII, Vineland-II, DDST-II"),
("High Risk\n(every 6 m)", "Birth to\n24 months", "BSID-III, Griffiths Mental Dev. Scale, DASII"),
("High Risk\n(yearly)", "2–5 years", "DASII, Vineland-II, Griffiths"),
("High Risk", "At school\nentry", "Full developmental + IQ assessment"),
]
col_xs = [6.55, 8.4, 9.98]
col_ws = [1.8, 1.55, 2.97]
rect(s, 6.55, 1.64, 6.4, 0.44, STEEL)
for ci, (hd, cx, cw) in enumerate(zip(sched_hdr, col_xs, col_ws)):
tb(s, hd, cx+0.05, 1.66, cw-0.1, 0.4,
size=Pt(14), bold=True, color=WHITE, vanchor=MSO_ANCHOR.MIDDLE)
for ri, (cat, age, tool) in enumerate(sched_rows):
bg = WHITE if ri % 2 == 0 else OFFWHITE
y = 2.08 + ri * 0.76
rect(s, 6.55, y, 6.4, 0.74, bg, LGRAY, 0.3)
tb(s, cat, col_xs[0]+0.05, y+0.08, col_ws[0]-0.1, 0.58, size=Pt(15), bold=True, color=NAVY, vanchor=MSO_ANCHOR.MIDDLE, wrap=True)
tb(s, age, col_xs[1]+0.05, y+0.08, col_ws[1]-0.1, 0.58, size=Pt(15), color=DARK, vanchor=MSO_ANCHOR.MIDDLE, wrap=True)
tb(s, tool, col_xs[2]+0.05, y+0.08, col_ws[2]-0.1, 0.58, size=Pt(14), color=DARK, vanchor=MSO_ANCHOR.MIDDLE, wrap=True)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 9 – CLINICAL EVALUATION
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Clinical Evaluation of a Child with GDD")
footer(s)
eval_data = [
("HISTORY", NAVY, [
"Antenatal: TORCH infections, teratogen/alcohol exposure, IUGR, maternal thyroid disease, diabetes, pre-eclampsia",
"Birth: Mode of delivery, APGAR score (1 & 5 min), need for resuscitation, birth asphyxia",
"Neonatal: Feeding difficulty, prolonged jaundice, seizures, hypoglycaemia, NICU admission, duration",
"Developmental: Age at attainment of each milestone; any regression / loss of milestones (key red flag)",
"Medical: Recurrent infections, hospitalizations, medications, known metabolic/chromosomal conditions",
"Family: Consanguinity (increases AR conditions), similar illness in siblings/relatives, miscarriages",
"Social: Socioeconomic status, quality of caregiving, nutritional intake, exposure to stimulation",
]),
("PHYSICAL EXAMINATION", STEEL, [
"Anthropometry: Plot height, weight AND head circumference on chart — microcephaly / macrocephaly are key findings",
"Dysmorphic features: Facial gestalt, ear shape/position, hand/foot anomalies — suggests syndromic/chromosomal GDD",
"Skin: Neurocutaneous markers — café-au-lait spots (NF1), ash-leaf macules (TSC), adenoma sebaceum (TSC), port wine stain",
"Neurological: Tone (hyper/hypotonia), deep tendon reflexes, primitive reflexes, gait, coordination, cerebellar signs",
"Eye examination: Cataracts (metabolic), corneal clouding (MPS), retinal pigmentation, optic atrophy — fundoscopy",
"Cardiovascular: Congenital heart defects associated with genetic syndromes (Down, DiGeorge, Williams)",
"Behavioural: Eye contact, response to name, social smile, pointing, joint attention, stereotypies, self-stimulation",
]),
]
for idx, (title, col, items) in enumerate(eval_data):
x = 0.4 + idx * 6.55
rect(s, x, 1.22, 6.2, 0.44, col)
tb(s, title, x+0.1, 1.24, 6.0, 0.4, size=Pt(18), bold=True, color=WHITE)
rect(s, x, 1.66, 6.2, 5.42, WHITE, LGRAY, 0.5)
multi(s, [("• " + it, False, DARK) for it in items],
x+0.12, 1.72, 5.96, 5.28, size=Pt(17), ls=26)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 10 – INVESTIGATIONS
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Investigations in GDD — Tiered Approach (IAP 2022)")
footer(s)
sbar(s, "Goal of investigations: Identify treatable conditions first · Establish etiology · Understand recurrence risk · Identify comorbidities",
1.22, STEEL, 0.38, Pt(15))
tier_data = [
("TIER 1\nALL CHILDREN", NAVY, [
"Thyroid function tests — TSH, Free T4 (exclude congenital/acquired hypothyroidism)",
"Metabolic screen — fasting blood glucose, serum ammonia, blood lactate, arterial blood gas",
"Urine metabolic screen — urine amino acids, organic acids, mucopolysaccharides (MPS screen)",
"Formal audiological evaluation — BERA (all children with GDD or communication delay)",
"Formal visual assessment — by ophthalmologist; ERG if retinal disorder suspected",
"Confirm newborn screening results — TSH, PKU, G6PD (if not done or results not available)",
]),
("TIER 2\nGUIDED BY CLUES", STEEL, [
"MRI Brain (preferred over CT) — abnormal neurological exam, micro/macrocephaly, focal deficits, regression",
"EEG — seizures suspected, developmental regression, Landau-Kleffner syndrome, electrical status epilepticus",
"Chromosomal Microarray (CMA) — FIRST-LINE genetic test in non-specific GDD (15–20% diagnostic yield)",
"Karyotype / FISH — if specific chromosomal syndrome suspected (Down syndrome, 22q11.2 deletion)",
"Plasma amino acids + urine organic acids — if metabolic disorder suspected clinically",
"Lead level — environmental exposure history; also zinc, copper, ceruloplasmin (Wilson's disease)",
]),
("TIER 3\nTARGETED", NAVY, [
"Whole Exome Sequencing (WES) — yield 25–30% additional after negative CMA; preferred if no clinical diagnosis",
"Whole Genome Sequencing (WGS) — reserved for unexplained GDD after WES; identifies non-coding variants",
"Fragile X testing (FMR1 PCR) — all males with unexplained GDD; females if maternal history of fragile X",
"Mitochondrial genome sequencing — maternal inheritance pattern, elevated lactate, multi-organ involvement",
"Lysosomal enzyme panel — MPS I, II, III, Niemann-Pick, Gaucher (hepatosplenomegaly, coarse features)",
"CSF analysis — lactate, amino acids, neurotransmitters (biogenic amine disorders)",
]),
]
for i, (title, col, items) in enumerate(tier_data):
x = 0.4 + i * 4.3
rect(s, x, 1.72, 4.1, 0.5, col)
tb(s, title, x+0.1, 1.74, 3.9, 0.46, size=Pt(15), bold=True,
color=WHITE, align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
rect(s, x, 2.22, 4.1, 4.35, WHITE, LGRAY, 0.5)
multi(s, [("• " + it, False, DARK) for it in items],
x+0.12, 2.28, 3.86, 4.2, size=Pt(15), ls=22)
rect(s, 0.4, 6.68, 12.5, 0.4, OFFWHITE, STEEL, 0.7)
multi(s, [
("Diagnostic yields: ", True, NAVY),
("CMA ~15–20% | WES (after CMA) ~25–30% | MRI Brain abnormal in ~30–50% | Metabolic ~1–5% | Overall with full workup ~50–60%",
False, DARK),
], 0.5, 6.7, 12.2, 0.36, size=Pt(15), ls=17)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 11 – MANAGEMENT
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Management of GDD — Multidisciplinary Approach")
footer(s)
sbar(s, "Key principle: Start intervention IMMEDIATELY after diagnosis — do NOT wait for etiology confirmation",
1.22, STEEL, 0.38, Pt(16))
mgmt_data = [
("EARLY INTERVENTION\n(Day 1 Priority)", NAVY, [
"Enrol in District Early Intervention Centre (DEIC) — free under RBSK scheme",
"Infant stimulation programs — sensory, motor, cognitive, communication",
"Parent-mediated therapy — training parents as primary therapists at home",
"Developmentally supportive care for high-risk NICU infants",
"Home-based programme — structured daily activities for the child",
"Kangaroo Mother Care for premature babies — promotes neurodevelopment",
]),
("MULTIDISCIPLINARY\nTHERAPY TEAM", STEEL, [
"Speech & Language Therapy (SLT) — communication, feeding, swallowing",
"Occupational Therapy (OT) — fine motor, ADL, sensory processing",
"Physiotherapy / NDT — gross motor, tone management, posture",
"Applied Behaviour Analysis (ABA) — structured for children with ASD",
"Feeding therapy — for oromotor dysfunction and dysphagia",
"Psychologist — cognitive, behavioural, family support",
]),
("SPECIAL EDUCATION\n& INCLUSION", NAVY, [
"Individualized Education Plan (IEP) — tailored goals, reviewed annually",
"Inclusive education in least restrictive environment wherever possible",
"Special schools — when inclusive setting is not meeting child's needs",
"AAC devices — PECS, speech-generating devices for non-verbal children",
"Sensory integration therapy for sensory processing difficulties",
"Vocational training for older adolescents / young adults",
]),
("MEDICAL &\nSPECIFIC", STEEL, [
"Treat underlying etiology: PKU-restricted diet, thyroxine for hypothyroidism, enzyme replacement for MPS",
"Anti-epileptic drugs (AEDs) — tailored to seizure type; avoid valproate in females if possible",
"Nutritional supplementation — iron, zinc, vitamin D, multivitamins as needed",
"Medications for comorbidities — methylphenidate (ADHD), risperidone (ASD/aggression)",
"Spasticity management — baclofen, botulinum toxin for cerebral palsy",
"Surgical interventions — for structural anomalies, orthopaedic correction (CP)",
]),
]
for i, (title, col, items) in enumerate(mgmt_data):
x = 0.4 + i * 3.24
rect(s, x, 1.72, 3.06, 0.5, col)
tb(s, title, x+0.06, 1.74, 2.94, 0.46, size=Pt(14), bold=True,
color=WHITE, align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
rect(s, x, 2.22, 3.06, 4.96, WHITE, LGRAY, 0.5)
multi(s, [("• " + it, False, DARK) for it in items],
x+0.1, 2.28, 2.86, 4.82, size=Pt(15), ls=23)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 12 – COMORBIDITIES
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Comorbidities in GDD — Prevalence (IAP 2022, Box I)")
footer(s)
sbar(s, "Comorbidities in GDD are common, frequently under-diagnosed, and significantly impact management and quality of life",
1.22, STEEL, 0.38, Pt(16))
col_data = [
("NEUROLOGICAL", NAVY, [
("Visual deficits", "15–75%"),
("Hearing impairment", "9–17%"),
("Epilepsy / Seizures", "5–30%"),
("Cerebral Palsy", "8–30%"),
("Feeding / Pseudobulbar dysfunction", "20–47%"),
("Sleep disturbances", "40–80%"),
("Microcephaly", "Variable"),
]),
("PSYCHIATRIC / BEHAVIOURAL", STEEL, [
("ADHD", "35–40%"),
("Autism Spectrum Disorder", "15–20%"),
("Disruptive / Aggressive behaviour", "26%"),
("Mood disorders", "Variable"),
("Anxiety disorders", "Variable"),
("Stereotypic movement disorders", "Common"),
("Self-injurious behaviour", "Variable"),
]),
("GENERAL MEDICAL", NAVY, [
("Protein-Energy Malnutrition", "40–70%"),
("Drooling (sialorrhoea)", "45%"),
("Constipation", "30–60%"),
("Recurrent infections", "Common"),
("Nutritional anaemia", "5.5%"),
("Dental / oral health problems", "Variable"),
("Gastro-oesophageal reflux", "Variable"),
]),
]
for ci, (sec, col, rows) in enumerate(col_data):
x = 0.4 + ci * 4.32
rect(s, x, 1.68, 4.1, 0.4, col)
tb(s, sec, x+0.08, 1.7, 3.94, 0.36,
size=Pt(15), bold=True, color=WHITE, align=PP_ALIGN.CENTER)
for ri, (cond, prev) in enumerate(rows):
bg = WHITE if ri % 2 == 0 else OFFWHITE
y = 2.08 + ri * 0.62
rect(s, x, y, 4.1, 0.6, bg, LGRAY, 0.3)
tb(s, cond, x+0.1, y+0.09, 2.75, 0.42,
size=Pt(16), color=DARK, vanchor=MSO_ANCHOR.MIDDLE)
prc = NAVY if ci != 1 else STEEL
rect(s, x+2.9, y+0.09, 1.15, 0.42, prc)
tb(s, prev, x+2.92, y+0.09, 1.11, 0.42, size=Pt(16),
bold=True, color=WHITE,
align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 13 – COMORBIDITY MANAGEMENT TABLE
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Management of Comorbidities in GDD — Summary Table")
footer(s)
tbl_cols = ["Comorbidity (Prevalence)", "Assessment Tools", "Non-Pharmacological", "Pharmacological / Specific"]
tbl_col_xs = [0.3, 2.45, 5.15, 8.55]
tbl_col_ws = [2.1, 2.65, 3.35, 4.45]
rect(s, 0.3, 1.22, 12.85, 0.44, NAVY)
for hdr, cx, cw in zip(tbl_cols, tbl_col_xs, tbl_col_ws):
tb(s, hdr, cx+0.06, 1.24, cw-0.12, 0.4,
size=Pt(14), bold=True, color=WHITE, vanchor=MSO_ANCHOR.MIDDLE)
rows_cm = [
("Epilepsy\n5–30%",
"EEG (seizure type), MRI Brain, drug levels",
"Seizure safety education, helmet, ketogenic diet (refractory), vagal nerve stimulation",
"AEDs: Valproate, Levetiracetam, Clobazam, Oxcarbazepine — based on seizure type"),
("ADHD\n35–40%",
"SNAP-IV, Conners, CBCL, ADHD-RS; rule out sleep disorder, anxiety",
"Behavioural parent training, classroom modifications, organisational skills therapy",
"Methylphenidate (>6 yr), Atomoxetine, Clonidine, Guanfacine"),
("ASD\n15–20%",
"CARS-2, ADOS-2, M-CHAT-R/F, ISAA; speech & OT assessment",
"ABA therapy, SLT, social skills groups, AAC, DIR/Floortime, sensory integration",
"Risperidone/Aripiprazole (aggression, self-injury); SSRI for anxiety — use cautiously"),
("Cerebral Palsy\n8–30%",
"GMFCS (motor), MACS (hand), spasticity scales, gait analysis",
"Physiotherapy (NDT), OT, AFOs, seating & positioning, aquatic therapy",
"Baclofen (oral/intrathecal), Botulinum toxin-A injections; orthopaedic surgery"),
("Visual deficits\n15–75%",
"Formal ophthalmology, ERG, VEP, OKN testing",
"Early visual stimulation, large-print materials, CVI therapy, orientation & mobility",
"Corrective lenses/glasses; surgery for cataract, strabismus, glaucoma"),
("Feeding issues\n20–47%",
"Video-fluoroscopic swallow study, FEES, SLP assessment",
"Feeding therapy, modified textures, postural positioning, oral desensitisation",
"PEG / NG tube if aspiration risk or severe malnutrition; anti-reflux therapy"),
("Sleep disorders\n40–80%",
"Sleep diary, actigraphy, polysomnography if OSA suspected",
"Sleep hygiene protocols, visual schedules, sensory strategies, light therapy",
"Melatonin (first-line, safest); Clonidine; avoid benzodiazepines in children"),
("PEM / malnutrition\n40–70%",
"Anthropometry, dietary recall, haematinics, albumin, vitamin D",
"High-calorie diet plan, feeding schedule, OT feeding therapy, caregiver education",
"Iron, zinc, vitamin D, B12 supplementation; therapeutic feeds (F100/RUTF) if severe"),
]
row_h = 0.64
for ri, row_data in enumerate(rows_cm):
bg = WHITE if ri % 2 == 0 else OFFWHITE
y = 1.66 + ri * row_h
rect(s, 0.3, y, 12.85, row_h - 0.02, bg, LGRAY, 0.25)
for ci, (cell, cx, cw) in enumerate(zip(row_data, tbl_col_xs, tbl_col_ws)):
tb(s, cell, cx+0.06, y+0.04, cw-0.12, row_h-0.1,
size=Pt(13 if ci > 0 else 14),
bold=(ci == 0), color=NAVY if ci == 0 else DARK,
wrap=True, vanchor=MSO_ANCHOR.MIDDLE)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 14 – COUNSELLING
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Counselling in GDD — IAP Guideline 6A")
footer(s)
sbar(s, '"Counselling is strongly recommended at initial diagnosis AND whenever new etiological information is available" — IAP 2022',
1.22, STEEL, 0.42, Pt(16))
counsel_data = [
("Disclosing the Diagnosis", NAVY, [
"Communicate clearly, directly and compassionately",
"Emphasise the child's strengths as well as deficits equally",
"Use simple language; avoid excessive medical jargon",
"Allow adequate time; do not rush the discussion",
"Validate and acknowledge parental emotions (grief, guilt, shock)",
"Involve both parents / main caregivers wherever possible",
"Offer a follow-up appointment specifically for questions",
]),
("Investigations & Etiology", STEEL, [
"Explain that GDD requires a stepwise investigation approach",
"Despite all investigations, etiology may NOT be found (~30–40%)",
"Pre-test genetic counselling mandatory before genetic tests",
"Explain Variant of Uncertain Significance (VUS) — inconclusive result",
"Review VUS in 2–3 years as databases expand",
"Counsel on cost and timeline — tests are expensive and time-consuming",
"Reassure that management begins regardless of etiology",
]),
("Management & Prognosis", NAVY, [
"Significant improvement IS possible with consistent, quality therapy",
"Set realistic but positive and hopeful expectations",
"~66% will be diagnosed with Intellectual Disability later",
"~20% achieve good social functioning despite neurodevelopmental diagnosis",
"Mild GDD has significantly better prognosis than moderate–severe",
"Early intervention is the single most important modifiable factor",
"Compliance and consistency with therapy is critical to outcome",
]),
("Legal, Social & Genetic", STEEL, [
"Rights of Persons with Disabilities (RPwD) Act 2016 — India",
"UDID Card (Unique Disability ID) — access to government benefits",
"RBSK scheme — free therapy, DEIC enrolment",
"Recurrence risk: empirical ~3–5% without diagnosis; specific with etiology",
"Autosomal recessive: 25% recurrence | X-linked: 50% of males",
"De novo mutations have low recurrence risk",
"Prenatal diagnosis available if molecular/cytogenetic cause identified",
]),
]
for i, (title, col, items) in enumerate(counsel_data):
row, ci = divmod(i, 2)
x = 0.4 + ci * 6.55
y = 1.72 + row * 2.82
rect(s, x, y, 6.2, 0.44, col)
tb(s, title, x+0.1, y+0.03, 6.0, 0.4, size=Pt(17), bold=True, color=WHITE)
rect(s, x, y+0.44, 6.2, 2.3, WHITE, LGRAY, 0.5)
multi(s, [("• " + it, False, DARK) for it in items],
x+0.12, y+0.5, 5.96, 2.2, size=Pt(16), ls=23)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 15 – PROGNOSIS & FOLLOW-UP
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Prognosis & Follow-Up in GDD")
footer(s)
rect(s, 0.4, 1.22, 6.1, 0.44, NAVY)
tb(s, "PROGNOSIS", 0.5, 1.24, 5.9, 0.4, size=Pt(18), bold=True, color=WHITE)
rect(s, 0.4, 1.66, 6.1, 5.42, WHITE, LGRAY, 0.6)
multi(s, [
("Overall outcome:", True, NAVY),
("• ~66% of children with GDD will eventually be diagnosed with Intellectual Disability (ID)", False, DARK),
("• ~20% achieve good social functioning despite a neurodevelopmental diagnosis", False, DARK),
("• Only a small proportion 'outgrow' GDD without a formal diagnosis", False, DARK),
("", False, DARK),
("Predictors of prognosis:", True, NAVY),
("• Severity of GDD — most consistent predictor; mild does much better than severe", False, DARK),
("• Underlying etiology — treatable causes (hypothyroid, PKU) have good outcomes", False, DARK),
("• Presence of epilepsy — worsens neurodevelopmental outcome significantly", False, DARK),
("• Age at diagnosis and initiation of therapy — earlier = better", False, DARK),
("• Quality & consistency of therapy — compliance is key", False, DARK),
("• Socioeconomic status & family support", False, DARK),
("• Availability of etiology-specific treatment", False, DARK),
("", False, DARK),
("Early intervention impact:", True, STEEL),
("• Documented to minimise delays with gains in adaptive, academic and social functioning", False, DARK),
("• Even severely delayed children can show meaningful improvement", False, DARK),
], 0.55, 1.72, 5.88, 5.28, size=Pt(16), ls=22)
rect(s, 6.7, 1.22, 6.25, 0.44, STEEL)
tb(s, "FOLLOW-UP PLAN", 6.8, 1.24, 6.05, 0.4, size=Pt(18), bold=True, color=WHITE)
rect(s, 6.7, 1.66, 6.25, 5.42, WHITE, LGRAY, 0.6)
fu_hdr = ["Phase / Age", "Frequency", "Key Focus Areas"]
fu_rows = [
("0–2 years", "Every 3 months", "Milestones, therapy progress, nutrition, hearing, vision"),
("2–5 years", "Every 6 months", "Therapy goals, comorbidities, IEP planning, school readiness"),
("School age\n(5–12)", "Yearly", "ID re-assessment, IEP review, academic progress, behaviour"),
("Adolescence\n(>12)", "6-monthly", "Transition planning, vocational training, legal guardianship"),
("Any time", "As clinically needed", "Regression, new seizures, new comorbidities, crisis"),
]
col_fx = [6.72, 8.42, 9.72]
col_fw = [1.65, 1.28, 3.2]
rect(s, 6.7, 1.66, 6.25, 0.44, STEEL)
for ci, (hd, cx, cw) in enumerate(zip(fu_hdr, col_fx, col_fw)):
tb(s, hd, cx+0.04, 1.68, cw-0.08, 0.4,
size=Pt(14), bold=True, color=WHITE, vanchor=MSO_ANCHOR.MIDDLE)
for ri, (phase, freq, focus) in enumerate(fu_rows):
bg = WHITE if ri % 2 == 0 else OFFWHITE
y = 2.1 + ri * 0.68
rect(s, 6.7, y, 6.25, 0.66, bg, LGRAY, 0.3)
tb(s, phase, col_fx[0]+0.04, y+0.08, col_fw[0]-0.08, 0.5,
size=Pt(15), bold=True, color=NAVY, vanchor=MSO_ANCHOR.MIDDLE, wrap=True)
tb(s, freq, col_fx[1]+0.04, y+0.08, col_fw[1]-0.08, 0.5,
size=Pt(14), color=DARK, vanchor=MSO_ANCHOR.MIDDLE)
tb(s, focus, col_fx[2]+0.04, y+0.08, col_fw[2]-0.08, 0.5,
size=Pt(14), color=DARK, vanchor=MSO_ANCHOR.MIDDLE, wrap=True)
rect(s, 6.7, 5.5, 6.25, 0.76, OFFWHITE, NAVY, 0.8)
multi(s, [
("Lead: Developmental Paediatrician / Paediatric Neurologist", True, NAVY),
("+ Speech therapist, OT, physiotherapist, psychologist, social worker, special educator", False, DARK),
], 6.8, 5.54, 6.05, 0.68, size=Pt(15), ls=21)
rect(s, 6.7, 6.32, 6.25, 0.66, OFFWHITE, STEEL, 0.8)
multi(s, [
("At age 5+: Re-assess formally", True, STEEL),
("If IQ < 70 + adaptive deficit → reclassify as Intellectual Disability (DSM-5 criteria)", False, DARK),
], 6.8, 6.35, 6.05, 0.6, size=Pt(15), ls=21)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 16 – GDD & GENETICS
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "GDD & Genetics")
footer(s)
sbar(s, "Genetic causes account for 30–50% of GDD — the SINGLE LARGEST etiological category",
1.22, STEEL, 0.38, Pt(16))
gen_data = [
("CHROMOSOMAL\nABNORMALITIES", NAVY, [
"Down syndrome (Trisomy 21) — most common chromosomal cause globally",
"Trisomy 18 (Edwards), Trisomy 13 (Patau) — severe GDD + multi-organ anomalies",
"Turner syndrome (45,X) — specific learning difficulties, not always GDD",
"Klinefelter (47,XXY) — language delay, learning difficulties",
"22q11.2 deletion (DiGeorge syndrome) — GDD, cardiac defects, immune deficiency",
"5p deletion (Cri-du-chat) — severe GDD, high-pitched cry",
"FIRST-LINE TEST: Chromosomal Microarray (CMA) — detects deletions/duplications",
]),
("SINGLE-GENE &\nGENOMIC DISORDERS", STEEL, [
"Fragile X syndrome (FMR1 CGG repeat expansion) — most common inherited cause of GDD in males",
"Rett syndrome (MECP2) — girls; regression after 6–18 months, hand-wringing",
"Angelman syndrome (UBE3A/15q11) — happy demeanour, seizures, absent speech",
"Prader-Willi syndrome (SNRPN/15q11) — hypotonia, feeding difficulty in infancy, obesity later",
"Tuberous Sclerosis (TSC1/TSC2) — cortical tubers, seizures, ASD, skin lesions",
"Neurofibromatosis type 1 (NF1) — café-au-lait, Lisch nodules, learning difficulties",
"TESTS: WES/WGS — when CMA is negative and no clinical diagnosis",
]),
("METABOLIC /\nBIOCHEMICAL", NAVY, [
"Phenylketonuria (PKU) — treatable if caught on NBS; dietary restriction prevents GDD",
"Congenital hypothyroidism — most common treatable cause of ID; prevented by NBS + early thyroxine",
"Mucopolysaccharidoses (MPS I, II, III) — coarse features, hepatosplenomegaly, corneal clouding",
"Organic acidurias — propionic, methylmalonic acidaemia; episodic metabolic crises",
"Congenital Disorders of Glycosylation (CDG) — inverted nipples, liver disease, ataxia",
"Wilson's disease — copper metabolism; liver + neurological involvement",
"TESTS: Urine organic acids, plasma amino acids, lysosomal enzyme panel",
]),
("GENETIC\nCOUNSELLING", STEEL, [
"Step 1: Establish accurate molecular/cytogenetic diagnosis before counselling",
"Step 2: Determine mode of inheritance — AR, AD, X-linked, de novo, imprinting",
"Autosomal recessive (AR) — 25% recurrence risk per pregnancy",
"X-linked — 50% of males affected; carrier females may be mildly affected",
"De novo mutations — low recurrence (< 1%) in parents; ~1–2% germline mosaicism",
"Offer prenatal diagnosis: CVS (10–12 wks) or amniocentesis (15–18 wks)",
"Cascade testing: offer testing to at-risk family members; explain VUS implications",
]),
]
for i, (title, col, items) in enumerate(gen_data):
row, ci = divmod(i, 2)
x = 0.4 + ci * 6.55
y = 1.7 + row * 2.88
rect(s, x, y, 6.2, 0.46, col)
tb(s, title, x+0.08, y+0.03, 6.04, 0.42, size=Pt(15), bold=True,
color=WHITE, align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
rect(s, x, y+0.46, 6.2, 2.34, WHITE, LGRAY, 0.5)
multi(s, [("• " + it, False, DARK) for it in items],
x+0.1, y+0.52, 6.0, 2.24, size=Pt(15), ls=22)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 17 – FLOWCHART: APPROACH TO CHILD WITH GDD (IAP)
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Flowchart: Approach to a Child with GDD (IAP Guidelines 2022)")
footer(s)
# Central spine — 13 steps tight-packed
spine_x = 3.9
spine_w = 5.5
steps = [
("Child < 5 years — Parental concern OR developmental flag at clinic visit", NAVY, 0.5),
("Detailed developmental, medical, family & social history", STEEL, 0.46),
("Comprehensive physical examination\n(anthropometry, dysmorphic features, neurological, skin, eyes, behaviour)", NAVY, 0.52),
("Administer standardized developmental test\n(DASII / BSID-III / DDST-II / Griffiths)", STEEL, 0.5),
("◆ Delay in ≥ 2 domains? Significant = ≥ 2 SD below mean?", NAVY, 0.48),
("GDD CONFIRMED\nClassify severity: Mild / Moderate / Severe / Profound", STEEL, 0.52),
("Initiate EARLY INTERVENTION immediately\n(DEIC enrolment, RBSK; do NOT wait for etiology)", NAVY, 0.5),
("Begin Tier 1 investigations simultaneously\n(TFT, metabolic screen, BERA, vision, urine metabolic)", STEEL, 0.48),
("Clinical clues → Tier 2 (MRI, EEG, CMA, karyotype)\nNo diagnosis → Tier 3 (WES/WGS, FMR1, mitochondrial)", NAVY, 0.52),
("Multidisciplinary management + structured family counselling", STEEL, 0.48),
("Screen and manage comorbidities at each visit\n(epilepsy, ADHD, ASD, feeding, vision, hearing)", NAVY, 0.5),
("Regular follow-up: 3-monthly (0–2 yr) · 6-monthly (2–5 yr) · Yearly after school entry", STEEL, 0.46),
("Age ≥ 5 years: Re-assess with IQ + adaptive testing → Re-classify as ID if criteria met", NAVY, 0.48),
]
y_cur = 1.22
for i, (txt, col, h) in enumerate(steps):
rect(s, spine_x, y_cur, spine_w, h, col, LGRAY, 0.5)
tb(s, txt, spine_x+0.1, y_cur+0.04, spine_w-0.2, h-0.08,
size=Pt(14), bold=(col == NAVY), color=WHITE,
align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE, wrap=True)
if i < len(steps) - 1:
arrow_v(s, spine_x + spine_w/2, y_cur + h, 0.07)
y_cur += h + 0.07
# LEFT notes
left_notes = [
(1.22, 1.66, "High-risk infants:\nNICU · HIE · LBW\nPremature · genetic syndrome\n→ Screen every 6 months\ntill 24 months", NAVY),
(3.12, 0.96, "No delay detected:\nContinue routine\nsurveillance;\nRepeat screen in\n3–6 months", STEEL),
(4.56, 0.88, "NO (< 2 SD or\nonly 1 domain):\nRepeat assessment\nin 3–6 months;\nMonitor closely", NAVY),
]
for ny, nh, ntxt, ncol in left_notes:
rect(s, 0.35, ny, 3.4, nh, OFFWHITE, ncol, 0.8)
tb(s, ntxt, 0.45, ny+0.06, 3.2, nh-0.12,
size=Pt(13), color=ncol, wrap=True, vanchor=MSO_ANCHOR.MIDDLE)
rect(s, 3.75, ny + nh/2 - 0.02, 0.15, 0.04, ncol)
# RIGHT notes
right_notes = [
(5.56, 1.02, "Syndromic GDD:\nDysmorphic features\n→ targeted genetic\ntesting first;\nClinical geneticist\nreferral", STEEL),
(7.24, 0.88, "Etiology identified:\n• Specific treatment\n• Accurate recurrence\n risk counselling\n• Cascade testing", NAVY),
(8.2, 0.88, "Etiology NOT found\n(~40% of cases):\n• Continue MDT Rx\n• Empirical risk 3–5%\n• Re-test in 2–3 yrs", STEEL),
]
for ny, nh, ntxt, ncol in right_notes:
rect(s, 9.55, ny, 3.45, nh, OFFWHITE, ncol, 0.8)
tb(s, ntxt, 9.65, ny+0.06, 3.25, nh-0.12,
size=Pt(13), color=ncol, wrap=True, vanchor=MSO_ANCHOR.MIDDLE)
rect(s, 9.4, ny + nh/2 - 0.02, 0.15, 0.04, ncol)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 18 – FLOWCHART: DEVELOPMENTAL SCREENING ALGORITHM
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Flowchart: Developmental Screening Algorithm (IAP 2022)")
footer(s)
for si, (track_title, track_col, steps_list) in enumerate([
("NORMAL RISK CHILD", NAVY, [
("Routine developmental surveillance\nat every well-child visit\n(Red flags checklist)", 0.58),
("Screen at 9–12 months\nDASII / ASQ-3 / DDST-II / Trivandrum DD Chart", 0.52),
("Screen at 18–24 months\nDASII + M-CHAT-R/F (for ASD screening)", 0.52),
("Screen at school entry (4.5–5 years)\nDASII / Vineland-II / DDST-II", 0.52),
("◆ Screen POSITIVE or parental concern\nat any point?", 0.52),
("Formal developmental assessment\n(standardized tests: DASII / BSID-III / Griffiths)", 0.52),
("Delay in ≥ 2 domains ≥ 2 SD →\nGDD confirmed → Developmental Paediatrician + MDT", 0.54),
]),
("HIGH RISK INFANT", STEEL, [
("Identify risk factors at birth:\nPrematurity, HIE, LBW, NICU, genetic syndrome,\ncongenital infection, NBS positive", 0.64),
("Screen every 6 months\nBirth → 24 months\nBSID-III / Griffiths / DASII", 0.52),
("Screen yearly\n24 months → 5 years\nDASII / Vineland-II", 0.48),
("Screen once at school entry\n(even if all prior screens normal)", 0.48),
("◆ Any screen positive at\nany age point?", 0.48),
("Immediate formal developmental assessment\n(DASII / BSID-III / Vineland-II)", 0.52),
("GDD confirmed →\nBegin Early Intervention at DEIC\n+ Etiological workup in parallel", 0.54),
]),
]):
x = 0.35 + si * 6.6
w = 6.22
rect(s, x, 1.22, w, 0.44, track_col)
tb(s, track_title, x+0.1, 1.24, w-0.2, 0.4,
size=Pt(18), bold=True, color=WHITE, align=PP_ALIGN.CENTER)
y_c = 1.66
for sj, (stxt, sh) in enumerate(steps_list):
rect(s, x, y_c, w, sh, track_col, LGRAY, 0.5)
tb(s, stxt, x+0.12, y_c+0.05, w-0.24, sh-0.1,
size=Pt(15), bold=False, color=WHITE,
align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE, wrap=True)
if sj < len(steps_list) - 1:
arrow_v(s, x + w/2, y_c + sh, 0.08)
y_c += sh + 0.08
# divider
rect(s, 6.57, 1.22, 0.06, 6.0, LGRAY)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 19 – FLOWCHART: INVESTIGATION PATHWAY
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Flowchart: Investigation Pathway in GDD")
footer(s)
fbox(s, "GDD CONFIRMED — Begin Systematic Investigations\n(Aim: identify treatable causes, etiology, recurrence risk, comorbidities)",
1.5, 1.22, 10.3, 0.56, NAVY, WHITE, Pt(15))
arrow_v(s, 6.65, 1.78, 0.1)
tiers = [
("TIER 1 — ALL CHILDREN (Do first, regardless of phenotype)", NAVY, [
"TFT — TSH, Free T4", "Metabolic screen: glucose, ammonia, lactate, ABG",
"Formal BERA (hearing)", "Visual assessment (ophthalmology)", "Urine metabolic screen"]),
("TIER 2 — GUIDED BY CLINICAL CLUES", STEEL, [
"MRI Brain — neuro signs, abnormal HC, regression",
"EEG — seizures, regression", "Chromosomal Microarray (CMA) — 1st-line genetic test",
"Karyotype / FISH — specific syndrome", "Lead, copper; plasma amino acids + urine organic acids"]),
("TIER 3 — TARGETED (after Tier 1 & 2 negative)", NAVY, [
"WES / WGS — unexplained GDD after CMA",
"Fragile X testing (FMR1) — all males",
"Mitochondrial genome panel — if elevated lactate",
"Lysosomal enzyme assays — MPS, Gaucher, Niemann-Pick",
"CSF analysis — biogenic amine disorders"]),
]
y_t = 1.96
for title, col, items in tiers:
rect(s, 0.4, y_t, 12.5, 0.38, col)
tb(s, title, 0.5, y_t+0.02, 12.3, 0.34,
size=Pt(15), bold=True, color=WHITE)
rect(s, 0.4, y_t+0.38, 12.5, 0.62, WHITE, LGRAY, 0.4)
for ii, it in enumerate(items):
tx = 0.5 + ii * 2.5
tb(s, "• " + it, tx, y_t+0.4, 2.44, 0.58,
size=Pt(14), color=DARK, wrap=True)
arrow_v(s, 6.65, y_t + 1.0, 0.08)
y_t += 1.08
# outcome split
rect(s, 0.4, y_t, 5.85, 0.38, STEEL)
tb(s, "Etiology IDENTIFIED", 0.5, y_t+0.02, 5.65, 0.34,
size=Pt(15), bold=True, color=WHITE, align=PP_ALIGN.CENTER)
rect(s, 0.4, y_t+0.38, 5.85, 0.72, WHITE, LGRAY, 0.5)
multi(s, [
("• Specific / etiology-directed management", False, DARK),
("• Accurate recurrence risk counselling", False, DARK),
("• Genetic counselling + prenatal diagnosis option", False, DARK),
("• Cascade family testing", False, DARK),
], 0.5, y_t+0.4, 5.65, 0.68, size=Pt(14), ls=19)
rect(s, 7.05, y_t, 5.85, 0.38, NAVY)
tb(s, "Etiology NOT Found (~40% of GDD)", 7.15, y_t+0.02, 5.65, 0.34,
size=Pt(15), bold=True, color=WHITE, align=PP_ALIGN.CENTER)
rect(s, 7.05, y_t+0.38, 5.85, 0.72, WHITE, LGRAY, 0.5)
multi(s, [
("• Continue multidisciplinary intervention", False, DARK),
("• Empirical recurrence risk ~3–5%", False, DARK),
("• Re-test with newer technologies in 2–3 years", False, DARK),
("• WGS if WES was previously the last test done", False, DARK),
], 7.15, y_t+0.4, 5.65, 0.68, size=Pt(14), ls=19)
tb(s, "COMMON: Multidisciplinary intervention continues regardless of whether etiology is found",
0.4, y_t + 1.14, 12.5, 0.28,
size=Pt(14), bold=True, color=STEEL, align=PP_ALIGN.CENTER)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 20 – FLOWCHART: MANAGEMENT ALGORITHM
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Flowchart: Management Algorithm in GDD")
footer(s)
fbox(s, "GDD DIAGNOSED — Initiate Management IMMEDIATELY (before etiology confirmed)",
1.6, 1.22, 10.1, 0.5, NAVY, WHITE, Pt(16))
arrow_v(s, 6.65, 1.72, 0.1)
pillars = [
("EARLY INTERVENTION\n(Day 1)", NAVY, [
"DEIC enrolment (RBSK — free)", "Infant stimulation", "Parent-mediated therapy", "Supportive NICU care"]),
("THERAPY TEAM", STEEL, [
"Speech & Language Therapy", "Occupational Therapy", "Physiotherapy / NDT", "ABA (for ASD)"]),
("SPECIAL EDUCATION", NAVY, [
"Individualized Education Plan", "Inclusive / special school", "AAC devices", "Vocational training"]),
("MEDICAL /\nSPECIFIC", STEEL, [
"Treat etiology (PKU, thyroid)", "AEDs for seizures", "Nutritional support", "Comorbidity management"]),
]
for i, (title, col, items) in enumerate(pillars):
x = 0.4 + i * 3.24
rect(s, x, 1.9, 3.06, 0.46, col)
tb(s, title, x+0.06, 1.92, 2.94, 0.42, size=Pt(14), bold=True,
color=WHITE, align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
rect(s, x, 2.36, 3.06, 1.72, WHITE, LGRAY, 0.5)
for j, it in enumerate(items):
tb(s, "• " + it, x+0.1, 2.4+j*0.41, 2.86, 0.38, size=Pt(15), color=DARK)
arrow_v(s, 6.65, 4.08, 0.1)
fbox(s, "Screen & Manage COMORBIDITIES at each follow-up visit\n(Epilepsy, ADHD, ASD, Feeding, Sleep, Vision, Hearing, Nutrition)",
1.6, 4.18, 10.1, 0.54, STEEL, WHITE, Pt(15), False)
arrow_v(s, 6.65, 4.72, 0.1)
for ci, (title, col, items) in enumerate([
("FAMILY COUNSELLING & SUPPORT", NAVY, [
"Structured counselling at every visit",
"Psychosocial support for caregivers",
"Legal aid: RPwD Act 2016, UDID card",
"Support groups; NGO referral",
]),
("FOLLOW-UP & REVIEW", STEEL, [
"Development in all domains at each visit",
"Therapy adherence and progress",
"IEP review; school placement",
"Age 5+: Re-assess → ID classification",
]),
]):
x = 0.4 + ci * 6.55
rect(s, x, 4.82, 6.2, 0.4, col)
tb(s, title, x+0.08, 4.84, 6.04, 0.36, size=Pt(15), bold=True, color=WHITE)
rect(s, x, 5.22, 6.2, 1.12, WHITE, LGRAY, 0.5)
multi(s, [("• " + it, False, DARK) for it in items],
x+0.1, 5.26, 6.0, 1.05, size=Pt(16), ls=24)
rect(s, 0.4, 6.44, 12.5, 0.42, NAVY)
tb(s, "GOAL: Maximise the child's functional potential and quality of life within available resources — Review at every visit",
0.5, 6.46, 12.3, 0.38, size=Pt(16), bold=True, color=WHITE, align=PP_ALIGN.CENTER)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 21 – KEY MESSAGES + REFERENCES
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Key Take-Home Messages")
footer(s)
messages = [
("1.", "GDD = significant delay in ≥ 2 developmental domains in children < 5 years; prevalence 1–3% globally, 3–13% in India"),
("2.", "GDD is NOT the same as Intellectual Disability — it is the under-5 equivalent; ~66% evolve to ID, ~20% do not"),
("3.", "Aetiology is heterogeneous; genetic causes (30–50%) are the single largest category — CMA is first-line genetic test"),
("4.", "Developmental surveillance at every well-child visit; formal screening at 9–12 m, 18–24 m, and school entry (IAP schedule)"),
("5.", "Detailed history + physical examination is the cornerstone — regression of milestones is a critical red flag"),
("6.", "Investigations are tiered: treat treatable causes first (thyroid, metabolic); escalate based on clinical clues"),
("7.", "Management is multidisciplinary and must start IMMEDIATELY — DEIC and RBSK are free government resources in India"),
("8.", "Comorbidities are very common: epilepsy (5–30%), ADHD (35–40%), ASD (15–20%), malnutrition (40–70%), sleep (40–80%)"),
("9.", "Structured family counselling is mandatory — at diagnosis, at each new investigation result, and at follow-up visits"),
("10.", "Early intervention is the most important modifiable prognostic factor; even severe cases benefit from quality therapy"),
]
rect(s, 0.4, 1.22, 12.5, 0.42, NAVY)
tb(s, "10 TAKE-HOME MESSAGES (IAP 2022)", 0.5, 1.24, 12.3, 0.38,
size=Pt(18), bold=True, color=WHITE)
for i, (num, msg) in enumerate(messages):
bg = WHITE if i % 2 == 0 else OFFWHITE
y = 1.64 + i * 0.51
rect(s, 0.4, y, 12.5, 0.49, bg, LGRAY, 0.25)
fill_c = NAVY if i % 2 == 0 else STEEL
rect(s, 0.4, y, 0.44, 0.49, fill_c)
tb(s, num, 0.41, y+0.05, 0.4, 0.39, size=Pt(16), bold=True, color=WHITE,
align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
tb(s, msg, 0.92, y+0.05, 11.88, 0.39,
size=Pt(16), color=DARK, vanchor=MSO_ANCHOR.MIDDLE)
rect(s, 0.4, 6.74, 12.5, 0.38, OFFWHITE, STEEL, 0.7)
multi(s, [
("References: ", True, NAVY),
("1. Juneja M et al. Indian Pediatrics 2022;59:401–415 | 2. Bradley & Daroff's Neurology 8e | 3. Harriet Lane Handbook 23e | 4. Thompson & Thompson Genetics 9e | 5. DSM-5 (APA 2013)", False, MIDGRAY)
], 0.5, 6.76, 12.3, 0.34, size=Pt(13), ls=16)
# ═════════════════════════════════════════════════════════════════════════════
out = "/tmp/workspace/gdd-seminar/GDD_Seminar_v3.pptx"
prs.save(out)
print(f"Saved: {out} — Total slides: {len(prs.slides)}")
cd /tmp/workspace/gdd-seminar && python build_gdd_v3.py 2>&1
ls -lh /tmp/workspace/gdd-seminar/GDD_Seminar_v3.pptx
GDD Seminar v3
Presentation · PPTX
| # | Slide | What's new / elaborated |
|---|---|---|
| 1 | Title slide | — |
| 2 | Outline | Updated with all 21 topics |
| 3 | Definition of GDD | Full criteria table with DSM-5 note |
| 4 | GDD vs Intellectual Disability | New — 9-row comparison table: definition, age, diagnosis basis, IQ, adaptive functioning, reversibility, prognosis, classification, DSM/ICD coding |
| 5 | Prevalence | 7 rows incl. India urban vs rural, NFHS data |
| 6 | Etiology overview | 6 bullet points per category, specific examples |
| 7 | Etiology % breakdown | Visual bar chart with India-specific note |
| 8 | Surveillance & Screening | Full explanation of surveillance components + complete IAP screening schedule table |
| 9 | Clinical Evaluation | 7 detailed points each for History and Examination |
| 10 | Investigations | 6 detailed tests per tier + diagnostic yield summary |
| 11 | Management | 6 detailed points per pillar |
| 12 | Comorbidities | 7 conditions per category with prevalence boxes |
| 13 | Comorbidity management table | Full 8-row table with assessment, non-pharm, pharm |
| 14 | Counselling | 7 points per section, 4 sections |
| 15 | Prognosis & Follow-up | Full predictors list + 5-row follow-up table |
| 16 | GDD & Genetics | 7 points per category including genetic counselling steps |
| 17 | Flowchart: Approach to child with GDD | 13-step IAP flowchart with left-side (high-risk, no delay, borderline) and right-side (syndromic, etiology found, etiology not found) branches |
| 18 | Screening algorithm flowchart | Two parallel streams, Normal vs High risk |
| 19 | Investigation pathway flowchart | 3-tier funnel with outcome split |
| 20 | Management algorithm flowchart | Pillars → comorbidities → counselling → review |
| 21 | Key messages + references | 10 take-home points + 5 references |
Simple investigation flowchart Investigation are mentioned thoroughly in paper Simply give me investigation without tier classification Mention severity of gdd according to sq and stick strictly to paper for data I’m seeing very irreverent things And for approach to child with gdd it’s okay if doesn’t fit in one slide I want chart to be as it is
~/gdd-seminar/build_gdd_v4.py
"""
GDD v4 – targeted fixes on top of v3 content:
1. Slide 3 (Definition): SQ severity exactly from paper
2. Slide 10 (Investigations): No tier labels — plain list exactly as in paper
3. Slide 17 (Approach flowchart): IAP Fig.5 exact, spread across 2 slides (17a & 17b)
4. New slide: IAP Fig.4 – Behaviour Problems flowchart
All other slides carried over from v3 content.
Palette: NAVY / STEEL / WHITE/OFFWHITE (unchanged from v2/v3)
"""
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
NAVY = RGBColor(0x1B, 0x3A, 0x6B)
STEEL = RGBColor(0x4A, 0x90, 0xA4)
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
OFFWHITE = RGBColor(0xF4, 0xF7, 0xFA)
DARK = RGBColor(0x1A, 0x1A, 0x2E)
LGRAY = RGBColor(0xD8, 0xE2, 0xEC)
MIDGRAY = RGBColor(0x6E, 0x8A, 0x9E)
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
BLANK = prs.slide_layouts[6]
# ── helpers ──────────────────────────────────────────────────────────────────
def rect(slide, x, y, w, h, fill, border=None, bw=0.8):
s = slide.shapes.add_shape(1, Inches(x), Inches(y), Inches(w), Inches(h))
s.fill.solid(); s.fill.fore_color.rgb = fill
if border: s.line.color.rgb = border; s.line.width = Pt(bw)
else: s.line.fill.background()
return s
def tb(slide, text, x, y, w, h, size=Pt(18), bold=False, italic=False,
color=DARK, align=PP_ALIGN.LEFT, wrap=True, vanchor=MSO_ANCHOR.TOP):
box = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
tf = box.text_frame
tf.word_wrap = wrap; tf.vertical_anchor = vanchor
tf.margin_left = tf.margin_right = tf.margin_top = tf.margin_bottom = Inches(0.04)
p = tf.paragraphs[0]; p.alignment = align
r = p.add_run(); r.text = text
r.font.size = size; r.font.bold = bold; r.font.italic = italic
r.font.color.rgb = color; r.font.name = "Calibri"
return box
def multi(slide, lines, x, y, w, h, size=Pt(18), wrap=True,
vanchor=MSO_ANCHOR.TOP, ls=None):
box = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
tf = box.text_frame
tf.word_wrap = wrap; tf.vertical_anchor = vanchor
tf.margin_left = tf.margin_right = Inches(0.05)
tf.margin_top = tf.margin_bottom = Inches(0.03)
first = True
for item in lines:
if isinstance(item, str): txt, bld, col = item, False, DARK
else:
txt = item[0]
bld = item[1] if len(item) > 1 else False
col = item[2] if len(item) > 2 else DARK
p = tf.paragraphs[0] if first else tf.add_paragraph()
first = False; p.alignment = PP_ALIGN.LEFT
if ls: p.line_spacing = Pt(ls)
r = p.add_run(); r.text = txt
r.font.size = size; r.font.bold = bld
r.font.color.rgb = col; r.font.name = "Calibri"
return box
def header(slide, title, sub=None):
rect(slide, 0, 0, 13.333, 1.0, NAVY)
rect(slide, 0, 1.0, 13.333, 0.05, STEEL)
tb(slide, title, 0.35, 0.07, 12.5, 0.86, size=Pt(28), bold=True,
color=WHITE, align=PP_ALIGN.LEFT, vanchor=MSO_ANCHOR.MIDDLE)
if sub:
tb(slide, sub, 0.35, 1.07, 12.5, 0.38, size=Pt(15), color=STEEL, italic=True)
rect(slide, 0, 1.05, 13.333, 6.45, OFFWHITE)
def footer(slide, note="IAP Consensus Guidelines 2022 – Juneja M et al. Indian Pediatrics 59:401–415"):
rect(slide, 0, 7.2, 13.333, 0.3, NAVY)
tb(slide, note, 0.3, 7.21, 12.7, 0.27, size=Pt(11),
color=LGRAY, italic=True, align=PP_ALIGN.CENTER)
def sbar(slide, text, y, col=NAVY, h=0.38, fs=Pt(16)):
rect(slide, 0.3, y, 12.7, h, col)
tb(slide, text, 0.38, y+0.02, 12.5, h-0.04, size=fs, bold=True,
color=WHITE, align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
def arrow_v(slide, cx, y, length=0.12):
rect(slide, cx-0.018, y, 0.036, length, STEEL)
def arrow_h(slide, x, cy, length=0.25):
rect(slide, x, cy-0.018, length, 0.036, STEEL)
def fbox(slide, text, x, y, w, h=0.52, fill=NAVY, tc=WHITE, fs=Pt(16), bold=True, border_col=None):
bc = border_col or STEEL
rect(slide, x, y, w, h, fill, bc, 0.7)
tb(slide, text, x+0.07, y+0.04, w-0.14, h-0.08,
size=fs, bold=bold, color=tc,
align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE, wrap=True)
def rounded_box(slide, text, x, y, w, h=0.52, fill=OFFWHITE, tc=DARK, fs=Pt(15), bold=False):
"""White box with NAVY border — mimics rounded rectangle"""
rect(slide, x, y, w, h, fill, NAVY, 1.0)
tb(slide, text, x+0.08, y+0.04, w-0.16, h-0.08,
size=fs, bold=bold, color=tc,
align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE, wrap=True)
def oval_box(slide, text, x, y, w, h=0.52, fill=OFFWHITE, tc=DARK, fs=Pt(15), bold=False):
"""Simulate oval with thin border"""
rect(slide, x, y, w, h, fill, STEEL, 1.2)
tb(slide, text, x+0.08, y+0.04, w-0.16, h-0.08,
size=fs, bold=bold, color=tc,
align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE, wrap=True)
def diamond_box(slide, text, x, y, w, h=0.52):
"""Decision box with thick NAVY border"""
rect(slide, x, y, w, h, WHITE, NAVY, 2.0)
tb(slide, text, x+0.08, y+0.04, w-0.16, h-0.08,
size=Pt(15), bold=True, color=NAVY,
align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE, wrap=True)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 1 – TITLE
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
rect(s, 0, 0, 13.333, 7.5, NAVY)
rect(s, 0, 2.55, 13.333, 0.06, STEEL)
rect(s, 0, 4.4, 13.333, 0.06, STEEL)
tb(s, "GLOBAL DEVELOPMENTAL DELAY", 0.6, 0.45, 12.1, 2.0,
size=Pt(44), bold=True, color=WHITE, align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
tb(s, "A Comprehensive Seminar Presentation", 0.6, 2.65, 12.1, 0.55,
size=Pt(22), color=LGRAY, italic=True, align=PP_ALIGN.CENTER)
tb(s, "Based on IAP Consensus Guidelines 2022", 0.6, 3.28, 12.1, 0.52,
size=Pt(20), bold=True, color=STEEL, align=PP_ALIGN.CENTER)
tb(s, "Juneja M, et al. Indian Pediatrics. 2022;59:401–415\nGrowth, Development & Behavioral Pediatrics • Neurology • Neurodevelopment Pediatrics — IAP",
0.6, 4.5, 12.1, 0.9, size=Pt(17), color=LGRAY, align=PP_ALIGN.CENTER)
tb(s, "August 2026", 0.6, 6.6, 12.1, 0.4, size=Pt(16), color=MIDGRAY, italic=True, align=PP_ALIGN.CENTER)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 2 – OUTLINE
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Seminar Outline")
footer(s)
col1 = ["1. Definition of GDD","2. GDD vs Intellectual Disability",
"3. Prevalence","4. Etiology (with percentages)",
"5. Developmental Surveillance & Screening","6. Clinical Evaluation",
"7. Investigations","8. Management",
"9. Comorbidities & Their Prevalence","10. Management of Comorbidities"]
col2 = ["11. Counselling in GDD","12. Prognosis & Follow-Up",
"13. GDD & Genetics",
"14. Flowchart: Approach to Child with GDD (IAP Fig.5) — Part 1",
"15. Flowchart: Approach to Child with GDD (IAP Fig.5) — Part 2",
"16. Flowchart: Developmental Screening Algorithm",
"17. Flowchart: Investigation Pathway",
"18. Flowchart: Management of Behaviour Problems (IAP Fig.4)",
"19. Key Messages & References"]
rect(s, 0.4, 1.22, 6.1, 5.85, WHITE, LGRAY, 0.7)
rect(s, 6.8, 1.22, 6.1, 5.85, WHITE, LGRAY, 0.7)
rect(s, 0.4, 1.22, 6.1, 0.4, NAVY); rect(s, 6.8, 1.22, 6.1, 0.4, NAVY)
tb(s, "Topics — Part 1", 0.5, 1.24, 5.9, 0.36, size=Pt(16), bold=True, color=WHITE)
tb(s, "Topics — Part 2", 6.9, 1.24, 5.9, 0.36, size=Pt(16), bold=True, color=WHITE)
multi(s, [(c, False, DARK) for c in col1], 0.55, 1.68, 5.85, 5.3, size=Pt(18), ls=32)
multi(s, [(c, False, DARK) for c in col2], 6.88, 1.68, 5.85, 5.3, size=Pt(18), ls=32)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 3 – DEFINITION (SQ severity EXACTLY from paper)
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Definition of Global Developmental Delay (GDD)")
footer(s)
rect(s, 0.4, 1.22, 12.5, 1.62, WHITE, NAVY, 1.5)
tb(s, "IAP / AAN DEFINITION", 0.52, 1.25, 5.5, 0.34, size=Pt(14), bold=True, color=NAVY)
multi(s, [
("GDD is defined as a significant delay in two or more developmental domains in children", False, DARK),
("under 5 years of age, where 'significant' = performance ≥ 2 standard deviations below the mean", False, DARK),
("on age-appropriate, standardized developmental tests.", True, NAVY),
], 0.55, 1.58, 12.2, 1.2, size=Pt(19), ls=27)
domains = ["Gross &\nFine Motor","Speech &\nLanguage","Cognition","Social /\nPersonal","Activities of\nDaily Living (ADL)"]
for i, d in enumerate(domains):
fill = NAVY if i%2==0 else STEEL
x = 0.4 + i*2.5
rect(s, x, 2.97, 2.38, 0.74, fill)
tb(s, d, x+0.05, 2.98, 2.28, 0.72, size=Pt(17), bold=True,
color=WHITE, align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
# Severity — EXACT from paper (Table 1C)
rect(s, 0.4, 3.85, 12.5, 0.4, NAVY)
tb(s, "SEVERITY CLASSIFICATION (as per IAP Guidelines 2022 — Table 1C)", 0.5, 3.87, 12.3, 0.36,
size=Pt(16), bold=True, color=WHITE)
sev_rows = [
("Severity", "Social Quotient (SQ)", "Description"),
("Mild", "55 – 70", "Child can acquire academic skills; can work under supervision; capable of self-care"),
("Moderate", "36 – 54", "Can acquire self-care skills; requires some support for daily activities"),
("Severe", "21 – 35", "Limited speech; may acquire basic self-care; needs continuous supervision"),
("Profound", "< 20", "Minimal communication; dependent for all care; significant physical comorbidities common"),
]
sev_col_xs = [0.4, 2.3, 4.6]
sev_col_ws = [1.86, 2.26, 8.04]
for ri, (sev, sq, desc) in enumerate(sev_rows):
bg = NAVY if ri==0 else (WHITE if ri%2==1 else OFFWHITE)
tc = WHITE if ri==0 else DARK
y = 4.25 + ri*0.56
rect(s, 0.4, y, 12.5, 0.54, bg, LGRAY, 0.3)
for ci, (cell, cx, cw) in enumerate(zip([sev,sq,desc], sev_col_xs, sev_col_ws)):
tb(s, cell, cx+0.06, y+0.06, cw-0.12, 0.42,
size=Pt(17 if ri>0 else 15), bold=(ri==0 or ci==0),
color=WHITE if ri==0 else (NAVY if ci==0 else DARK),
vanchor=MSO_ANCHOR.MIDDLE)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 4 – GDD vs ID
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "GDD vs Intellectual Disability (ID) — Key Differences")
footer(s)
sbar(s, "GDD and ID are related but distinct diagnoses — GDD does NOT automatically become ID", 1.22, STEEL, 0.38, Pt(16))
compare = [
("Feature", "Global Developmental Delay (GDD)", "Intellectual Disability (ID)"),
("Definition", "Significant delay in ≥2 developmental domains; assessed by standardized developmental tests", "Deficits in intellectual functions AND adaptive behaviour; confirmed by IQ + adaptive testing"),
("Age of use", "Children < 5 years", "Children ≥ 5 years (when formal IQ testing is feasible)"),
("Diagnosis", "Clinical + standardized developmental test (DASII, BSID-III)", "IQ < 70 on standardized IQ test + adaptive functioning deficit"),
("IQ testing", "Not required / not feasible < 5 yrs", "Mandatory; IQ < 2 SD below mean"),
("Adaptive fn.", "Qualitative assessment; formal testing may not be feasible", "Formal scale required (Vineland-II, ABAS-3)"),
("Reversibility", "Potentially reversible with early intervention in some cases", "Lifelong condition; management maximises function"),
("Prognosis", "~66% later meet criteria for ID; ~20% will NOT", "Stable lifelong diagnosis; severity guides placement"),
("DSM-5 code", "315.8 — Global Developmental Delay", "319 — Intellectual Developmental Disorder"),
]
col_xs = [0.4, 3.0, 8.15]; col_ws = [2.55, 5.1, 5.1]
rect(s, 0.4, 1.68, 12.75, 0.44, NAVY)
for hdr, cx, cw in zip(compare[0], col_xs, col_ws):
tb(s, hdr, cx+0.06, 1.7, cw-0.12, 0.4,
size=Pt(16), bold=True, color=WHITE, vanchor=MSO_ANCHOR.MIDDLE)
for ri, row in enumerate(compare[1:]):
bg = WHITE if ri%2==0 else OFFWHITE
y = 2.12 + ri*0.57
rect(s, 0.4, y, 12.75, 0.55, bg, LGRAY, 0.25)
for ci, (cell, cx, cw) in enumerate(zip(row, col_xs, col_ws)):
tb(s, cell, cx+0.06, y+0.05, cw-0.12, 0.45,
size=Pt(14), bold=(ci==0), color=NAVY if ci==0 else DARK,
wrap=True, vanchor=MSO_ANCHOR.MIDDLE)
for cx in [3.0, 8.15]:
rect(s, cx, 1.68, 0.02, 7.0, LGRAY)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 5 – PREVALENCE
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Prevalence of GDD")
footer(s)
prev_rows = [
("Global Estimates", "1–3%", "Based on standardized population surveys worldwide"),
("Turkey (recent report)", "6.4%", "Higher prevalence attributed to broader screening sensitivity"),
("UAE (recent report)", "8.0%", "Recent multicentre community-based study"),
("India — range", "3–13%", "Varies by age group, screening tools used, and region; most studies are screening-based"),
("Gender ratio", "+30% ♂", "GDD is reported to be 30% more common in boys; gap narrows with increasing age"),
]
rect(s, 0.4, 1.22, 12.5, 0.42, NAVY)
for lbl, cx, cw in zip(["Region / Parameter","Prevalence","Notes / Comments"], [0.5,4.4,6.3], [3.85,1.85,6.55]):
tb(s, lbl, cx, 1.24, cw, 0.38, size=Pt(16), bold=True, color=WHITE)
for i, (region, prev, note) in enumerate(prev_rows):
bg = WHITE if i%2==0 else OFFWHITE
y = 1.64 + i*0.82
rect(s, 0.4, y, 12.5, 0.8, bg, LGRAY, 0.3)
tb(s, region, 0.5, y+0.12, 3.8, 0.56, size=Pt(18), bold=True,
color=NAVY, vanchor=MSO_ANCHOR.MIDDLE)
fc = NAVY if i%2==0 else STEEL
rect(s, 4.35, y+0.12, 1.85, 0.56, fc)
tb(s, prev, 4.37, y+0.12, 1.81, 0.56, size=Pt(20), bold=True,
color=WHITE, align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
tb(s, note, 6.28, y+0.12, 6.55, 0.56, size=Pt(17),
color=DARK, wrap=True, vanchor=MSO_ANCHOR.MIDDLE)
rect(s, 0.4, 5.76, 12.5, 0.72, OFFWHITE, STEEL, 0.8)
multi(s, [
("Key India-specific points:", True, NAVY),
("• HIE and congenital hypothyroidism are more common causes vs. Western countries", False, DARK),
("• Prevalence likely underestimated as most Indian studies rely on developmental screening only, not formal standardized testing", False, DARK),
], 0.5, 5.78, 12.2, 0.68, size=Pt(16), ls=20)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 6 – ETIOLOGY OVERVIEW
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Etiology of GDD — Overview")
footer(s)
sbar(s, "Etiology is HETEROGENEOUS — Genetic (30–50%) + Non-Genetic (50–70%) | Classified by timing: Prenatal · Perinatal · Postnatal", 1.22, STEEL, 0.38, Pt(16))
etio_data = [
("GENETIC (30–50%)", [
"Chromosomal abnormalities — Down syndrome, trisomies, deletions, duplications",
"Single-gene disorders — Fragile X (most common inherited), Rett syndrome (MECP2)",
"Genomic / microdeletion syndromes — 22q11.2 deletion, Angelman, Prader-Willi",
"Inborn errors of metabolism — PKU, MSUD, organic acidurias, CDG (~1–5%)",
"Syndromic GDD — typical phenotype + dysmorphics (e.g. Down syndrome)",
"Non-syndromic GDD — GDD is the only discernible feature; pathology unknown",
]),
("PRENATAL — Non-genetic", [
"TORCH infections — CMV (most common congenital), Toxoplasma, Rubella, Syphilis",
"Intrauterine growth restriction (IUGR)",
"Teratogen exposure — alcohol (FASD), valproate in pregnancy",
"Brain malformations — lissencephaly, polymicrogyria, holoprosencephaly",
"Maternal thyroid disorders — hypothyroidism impairs fetal brain development",
"Maternal diabetes, hypertension, severe anaemia",
]),
("PERINATAL", [
"Hypoxic Ischaemic Encephalopathy (HIE) — most common preventable cause in India",
"Prematurity — especially < 32 weeks / VLBW (< 1500 g)",
"Neonatal jaundice — severe unconjugated hyperbilirubinaemia (kernicterus)",
"Perinatal infections — neonatal meningitis, sepsis, herpes encephalitis",
"Neonatal hypoglycaemia — prolonged/severe episodes cause cortical damage",
"Neonatal hypothyroidism — if NBS missed or untreated",
]),
("POSTNATAL", [
"CNS infections — bacterial meningitis, viral encephalitis (JE in India)",
"Traumatic brain injury — accidental or non-accidental",
"Lead poisoning / heavy metal toxicity",
"Severe protein-energy malnutrition with micronutrient deficiencies",
"Acquired hypothyroidism — missed congenital or autoimmune",
"Near-drowning, prolonged status epilepticus, recurrent hypoglycaemia",
]),
]
for idx, (title, items) in enumerate(etio_data):
col = NAVY if idx%2==0 else STEEL
x = 0.4 + idx*3.23
rect(s, x, 1.72, 3.05, 0.44, col)
tb(s, title, x+0.07, 1.74, 2.91, 0.4, size=Pt(15), bold=True,
color=WHITE, align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
rect(s, x, 2.16, 3.05, 4.92, WHITE, LGRAY, 0.5)
multi(s, [("• " + it, False, DARK) for it in items],
x+0.1, 2.22, 2.85, 4.78, size=Pt(16), ls=24)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 7 – ETIOLOGY PERCENTAGES
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Etiology — Percentage Breakdown (IAP 2022)")
footer(s)
bars = [
("Genetic causes — total", "30–50%", 0.50, False),
(" Chromosomal / syndromic", "~15%", 0.30, True),
(" Single-gene / genomic", "~15%", 0.30, True),
(" Inborn errors of metabolism", "1–5%", 0.10, True),
("Hypoxic Ischaemic Encephalopathy", "10–15%", 0.28, False),
("Prematurity / Low birth weight", "8–12%", 0.22, False),
("CNS malformations", "5–8%", 0.16, False),
("CNS infections & toxic causes", "5–10%", 0.18, False),
("Unknown / Idiopathic", "30–40%", 0.40, False),
]
rect(s, 0.4, 1.22, 12.5, 0.42, NAVY)
tb(s, "Cause", 0.5, 1.24, 4.2, 0.38, size=Pt(16), bold=True, color=WHITE)
tb(s, "Proportion", 4.75, 1.24, 2.0, 0.38, size=Pt(16), bold=True, color=WHITE)
tb(s, "Visual Scale (approximate)", 6.85, 1.24, 6.0, 0.38, size=Pt(16), bold=True, color=WHITE)
BAR_MAX = 5.8
for i, (label, pct, frac, is_sub) in enumerate(bars):
bg = WHITE if i%2==0 else OFFWHITE
y = 1.64 + i*0.6
rect(s, 0.4, y, 12.5, 0.58, bg, LGRAY, 0.3)
tb(s, label.strip(), 0.5+(0.35 if is_sub else 0), y+0.08,
4.1-(0.35 if is_sub else 0), 0.42,
size=Pt(16 if not is_sub else 15),
bold=not is_sub, color=NAVY if not is_sub else MIDGRAY,
vanchor=MSO_ANCHOR.MIDDLE)
fc = NAVY if not is_sub else STEEL
rect(s, 4.75, y+0.09, 1.95, 0.4, fc)
tb(s, pct, 4.77, y+0.09, 1.91, 0.4, size=Pt(17), bold=True,
color=WHITE, align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
bw = BAR_MAX*frac
rect(s, 6.85, y+0.12, max(bw,0.06), 0.34, fc)
rect(s, 0.4, 7.05, 12.5, 0.32, OFFWHITE, STEEL, 0.7)
tb(s, "India-specific: HIE, congenital hypothyroidism and malnutrition contribute proportionally more than in Western countries",
0.5, 7.07, 12.2, 0.28, size=Pt(14), italic=True, color=NAVY)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 8 – SURVEILLANCE & SCREENING
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Developmental Surveillance & Screening (IAP 2022)")
footer(s)
rect(s, 0.4, 1.22, 5.95, 0.42, NAVY)
tb(s, "SURVEILLANCE — All Children", 0.5, 1.24, 5.75, 0.38, size=Pt(17), bold=True, color=WHITE)
rect(s, 0.4, 1.64, 5.95, 5.45, WHITE, LGRAY, 0.6)
multi(s, [
("What is surveillance?", True, NAVY),
("Ongoing process of monitoring child's development at every health visit", False, DARK),
("", False, DARK),
("Components:", True, NAVY),
("• Elicit and attend to parental concerns", False, DARK),
("• Obtain a focused developmental history", False, DARK),
("• Directly observe the child during the visit", False, DARK),
("• Note protective and risk factors", False, DARK),
("• Record observations in health record", False, DARK),
("• Use IAP Red Flags Checklist at every visit", False, DARK),
("", False, DARK),
("When to act?", True, NAVY),
("• Any parental concern → investigate further", False, DARK),
("• Missing developmental milestone → refer for screening", False, DARK),
("• Presence of red flags → immediate referral", False, DARK),
], 0.52, 1.7, 5.73, 5.3, size=Pt(17), ls=22)
rect(s, 6.55, 1.22, 6.4, 0.42, STEEL)
tb(s, "SCREENING SCHEDULE — IAP 2022", 6.65, 1.24, 6.2, 0.38, size=Pt(17), bold=True, color=WHITE)
sched_hdr = ["Category","Age Point","Recommended Tools"]
sched_rows = [
("Normal Risk", "9–12 months", "DASII, ASQ-3, DDST-II, Trivandrum DD Chart"),
("Normal Risk", "18–24 months", "DASII, ASQ-3, M-CHAT-R/F (for ASD)"),
("Normal Risk", "School entry 4.5–5y","DASII, Vineland-II, DDST-II"),
("High Risk (6-mthly)", "Birth to 24 months", "BSID-III, Griffiths Mental Dev Scale, DASII"),
("High Risk (yearly)", "2–5 years", "DASII, Vineland-II, Griffiths"),
("High Risk", "At school entry", "Full developmental + IQ assessment"),
]
col_xs=[6.55,8.4,9.98]; col_ws=[1.8,1.55,2.97]
rect(s, 6.55, 1.64, 6.4, 0.44, STEEL)
for ci,(hd,cx,cw) in enumerate(zip(sched_hdr,col_xs,col_ws)):
tb(s, hd, cx+0.05, 1.66, cw-0.1, 0.4, size=Pt(14), bold=True, color=WHITE, vanchor=MSO_ANCHOR.MIDDLE)
for ri,(cat,age,tool) in enumerate(sched_rows):
bg = WHITE if ri%2==0 else OFFWHITE
y = 2.08+ri*0.76
rect(s, 6.55, y, 6.4, 0.74, bg, LGRAY, 0.3)
tb(s, cat, col_xs[0]+0.05, y+0.08, col_ws[0]-0.1, 0.58, size=Pt(15), bold=True, color=NAVY, vanchor=MSO_ANCHOR.MIDDLE, wrap=True)
tb(s, age, col_xs[1]+0.05, y+0.08, col_ws[1]-0.1, 0.58, size=Pt(15), color=DARK, vanchor=MSO_ANCHOR.MIDDLE, wrap=True)
tb(s, tool,col_xs[2]+0.05, y+0.08, col_ws[2]-0.1, 0.58, size=Pt(14), color=DARK, vanchor=MSO_ANCHOR.MIDDLE, wrap=True)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 9 – CLINICAL EVALUATION
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Clinical Evaluation of a Child with GDD")
footer(s)
eval_data = [
("HISTORY", NAVY, [
"Antenatal: TORCH infections, teratogen/alcohol, IUGR, maternal thyroid disease, diabetes",
"Birth: Mode of delivery, APGAR score, need for resuscitation, birth asphyxia (HIE)",
"Neonatal: Feeding difficulty, prolonged jaundice, seizures, hypoglycaemia, NICU admission",
"Developmental: Age at milestone attainment; any regression of skills (KEY red flag)",
"Medical: Recurrent infections, hospitalizations, medications, metabolic episodes",
"Family: Consanguinity, similar illness in relatives, miscarriages, ethnic background",
"Social: Socioeconomic status, quality of caregiving, nutritional intake, stimulation",
]),
("PHYSICAL EXAMINATION", STEEL, [
"Anthropometry: Plot head circumference, height, weight — microcephaly / macrocephaly",
"Dysmorphic features: Face, ears, hands, feet — suggests syndromic/chromosomal GDD",
"Skin: Neurocutaneous markers — café-au-lait (NF1), ash-leaf (TSC), adenoma sebaceum",
"Neurological: Tone (hyper/hypotonia), deep tendon reflexes, gait, coordination",
"Eyes: Cataracts (metabolic), corneal clouding (MPS), retinal pigmentation, optic atrophy",
"Cardiovascular: Congenital heart defects associated with genetic syndromes",
"Behaviour: Eye contact, response to name, joint attention, stereotypies, social smile",
]),
]
for idx,(title,col,items) in enumerate(eval_data):
x = 0.4+idx*6.55
rect(s, x, 1.22, 6.2, 0.44, col)
tb(s, title, x+0.1, 1.24, 6.0, 0.4, size=Pt(18), bold=True, color=WHITE)
rect(s, x, 1.66, 6.2, 5.42, WHITE, LGRAY, 0.5)
multi(s, [("• "+it, False, DARK) for it in items],
x+0.12, 1.72, 5.96, 5.28, size=Pt(17), ls=26)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 10 – INVESTIGATIONS (no tier labels, exactly from IAP paper)
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Investigations in GDD (IAP Guidelines 2022)")
footer(s)
sbar(s, "Aim: Identify treatable conditions · Establish etiology · Determine recurrence risk · Identify comorbidities",
1.22, STEEL, 0.36, Pt(15))
# LEFT column — investigations
rect(s, 0.4, 1.68, 7.5, 0.42, NAVY)
tb(s, "INVESTIGATIONS", 0.5, 1.7, 7.3, 0.38, size=Pt(17), bold=True, color=WHITE)
rect(s, 0.4, 2.1, 7.5, 5.0, WHITE, LGRAY, 0.6)
inv_groups = [
("For all children:", [
"Thyroid function tests (TSH, Free T4)ᵃ",
"Iron / Vitamin B12 deficiencyᵇ",
"Biotinidase deficiencyᶜ",
"CPK levelsᵈ",
]),
("If abnormal head size / neurological findings / seizures:", [
"Neuroimaging — preferably MRI brain",
"MRS (Magnetic Resonance Spectroscopy)ᵉ",
"EEG if epilepsy",
]),
("If consanguinity / positive family history / episodic decompensation:", [
"Investigate for Inborn Errors of Metabolism",
" — Plasma amino acids, urine organic acids",
" — Ammonia, lactate, pyruvate",
" — Lysosomal enzyme assays (MPS panel)",
" — Biotinidase, biotinidase activity",
]),
("No clear etiology / clinical suspicion of genetic syndrome:", [
"Genetic testing:",
" — Chromosomal Microarray (CMA) — first-line",
" — Karyotype / FISH if specific syndrome suspected",
" — Fragile X testing (FMR1) — all males",
" — Whole Exome Sequencing (WES) if above negative",
]),
]
y_inv = 2.18
for grp_title, items in inv_groups:
tb(s, grp_title, 0.5, y_inv, 7.2, 0.36, size=Pt(16), bold=True, color=STEEL)
y_inv += 0.36
for it in items:
tb(s, it, 0.55, y_inv, 7.1, 0.3, size=Pt(16), color=DARK)
y_inv += 0.3
y_inv += 0.06
# RIGHT column — footnotes + diagnostic yield
rect(s, 8.1, 1.68, 4.9, 0.42, STEEL)
tb(s, "FOOTNOTES (from IAP paper)", 8.2, 1.7, 4.7, 0.38, size=Pt(15), bold=True, color=WHITE)
rect(s, 8.1, 2.1, 4.9, 3.5, WHITE, LGRAY, 0.5)
multi(s, [
("ᵃ Especially in absence of documented newborn screening results", False, DARK),
("", False, DARK),
("ᵇ Especially in children having a restricted diet or pica", False, DARK),
("", False, DARK),
("ᶜ Especially in the absence of newborn screening", False, DARK),
("", False, DARK),
("ᵈ Boys with history or findings suggestive of conditions like Duchenne muscular dystrophy", False, DARK),
("", False, DARK),
("ᵉ Where mitochondrial disorder is suspected, or for diagnosis of cerebral creatine deficiency syndrome in children with unexplained GDD and normal MRI", False, DARK),
], 8.2, 2.14, 4.7, 3.42, size=Pt(14), ls=19)
rect(s, 8.1, 5.7, 4.9, 0.42, NAVY)
tb(s, "DIAGNOSTIC YIELD (approximate)", 8.2, 5.72, 4.7, 0.38, size=Pt(14), bold=True, color=WHITE)
rect(s, 8.1, 6.12, 4.9, 1.0, WHITE, LGRAY, 0.5)
multi(s, [
("• CMA: ~15–20% | WES (after CMA): ~25–30%", False, DARK),
("• MRI Brain: abnormal in ~30–50% of cases", False, DARK),
("• Metabolic tests: ~1–5% diagnostic yield", False, DARK),
("• Overall (full workup): ~50–60% etiology identified", False, DARK),
], 8.2, 6.16, 4.7, 0.92, size=Pt(15), ls=22)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 11 – MANAGEMENT
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Management of GDD — Multidisciplinary Approach")
footer(s)
sbar(s, "Key principle: Start intervention IMMEDIATELY — do NOT wait for etiology confirmation", 1.22, STEEL, 0.38, Pt(16))
mgmt_data = [
("EARLY INTERVENTION\n(Day 1 Priority)", NAVY, [
"Enrol in DEIC — free under RBSK scheme",
"Infant stimulation: sensory, motor, cognitive, communication",
"Parent-mediated therapy — train parents as primary therapists",
"Developmentally supportive NICU care for high-risk infants",
"Home-based structured programme of daily activities",
]),
("MULTIDISCIPLINARY\nTHERAPY", STEEL, [
"Speech & Language Therapy (SLT) — communication, feeding",
"Occupational Therapy (OT) — fine motor, ADL, sensory",
"Physiotherapy / NDT — gross motor, tone, posture",
"Applied Behaviour Analysis (ABA) — for ASD",
"Feeding therapy — oromotor dysfunction / dysphagia",
]),
("SPECIAL EDUCATION\n& INCLUSION", NAVY, [
"Individualized Education Plan (IEP) — reviewed annually",
"Inclusive education in least restrictive environment",
"Special schools when inclusive setting insufficient",
"AAC devices — PECS, speech-generating devices",
"Vocational training for older adolescents",
]),
("MEDICAL &\nSPECIFIC", STEEL, [
"Treat etiology: PKU diet, thyroxine, enzyme replacement",
"Anti-epileptic drugs — tailored to seizure type",
"Nutritional supplementation — iron, zinc, vitamin D",
"Medications for ADHD, ASD-related behaviours",
"Surgery for structural anomalies if indicated",
]),
]
for i,(title,col,items) in enumerate(mgmt_data):
x = 0.4+i*3.24
rect(s, x, 1.72, 3.06, 0.5, col)
tb(s, title, x+0.06, 1.74, 2.94, 0.46, size=Pt(14), bold=True,
color=WHITE, align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
rect(s, x, 2.22, 3.06, 4.96, WHITE, LGRAY, 0.5)
multi(s, [("• "+it, False, DARK) for it in items],
x+0.1, 2.28, 2.86, 4.82, size=Pt(16), ls=26)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 12 – COMORBIDITIES
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Comorbidities in GDD — Prevalence (IAP 2022, Box I)")
footer(s)
sbar(s, "Comorbidities are common, frequently under-diagnosed, and significantly impact management and quality of life", 1.22, STEEL, 0.38, Pt(16))
col_data = [
("NEUROLOGICAL", NAVY, [
("Visual deficits", "15–75%"),
("Hearing impairment", "9–17%"),
("Epilepsy / Seizures", "5–30%"),
("Cerebral Palsy", "8–30%"),
("Feeding / Pseudobulbar", "20–47%"),
("Sleep disturbances", "40–80%"),
]),
("PSYCHIATRIC / BEHAVIOURAL", STEEL, [
("ADHD", "35–40%"),
("Autism Spectrum Disorder", "15–20%"),
("Disruptive / Aggressive", "26%"),
("Mood / Anxiety disorders", "Variable"),
("Stereotypic movements", "Common"),
("Self-injurious behaviour", "Variable"),
]),
("GENERAL MEDICAL", NAVY, [
("Protein-Energy Malnutrition", "40–70%"),
("Drooling (sialorrhoea)", "45%"),
("Constipation", "30–60%"),
("Recurrent infections", "Common"),
("Nutritional anaemia", "5.5%"),
("Dental / oral health problems", "Variable"),
]),
]
for ci,(sec,col,rows) in enumerate(col_data):
x = 0.4+ci*4.32
rect(s, x, 1.68, 4.1, 0.4, col)
tb(s, sec, x+0.08, 1.7, 3.94, 0.36, size=Pt(15), bold=True, color=WHITE, align=PP_ALIGN.CENTER)
for ri,(cond,prev) in enumerate(rows):
bg = WHITE if ri%2==0 else OFFWHITE
y = 2.08+ri*0.68
rect(s, x, y, 4.1, 0.66, bg, LGRAY, 0.3)
tb(s, cond, x+0.1, y+0.1, 2.75, 0.46, size=Pt(17), color=DARK, vanchor=MSO_ANCHOR.MIDDLE)
pc = NAVY if ci!=1 else STEEL
rect(s, x+2.9, y+0.1, 1.15, 0.46, pc)
tb(s, prev, x+2.92, y+0.1, 1.11, 0.46, size=Pt(16), bold=True,
color=WHITE, align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 13 – COMORBIDITY MANAGEMENT TABLE
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Management of Comorbidities in GDD — Summary Table")
footer(s)
tbl_cols = ["Comorbidity","Assessment","Non-Pharmacological","Pharmacological / Specific"]
cx2=[0.3,2.45,5.15,8.55]; cw2=[2.1,2.65,3.35,4.45]
rect(s, 0.3, 1.22, 12.85, 0.44, NAVY)
for hdr,cx,cw in zip(tbl_cols,cx2,cw2):
tb(s, hdr, cx+0.06, 1.24, cw-0.12, 0.4, size=Pt(14), bold=True, color=WHITE, vanchor=MSO_ANCHOR.MIDDLE)
rows_cm = [
("Epilepsy\n5–30%","EEG, MRI Brain, drug levels","Seizure safety education, helmet use, ketogenic diet if refractory","AEDs: Valproate, Levetiracetam, Oxcarbazepine, Clobazam"),
("ADHD\n35–40%","SNAP-IV, Conners, CBCL","Behavioural parent training, classroom modifications","Methylphenidate (>6 yr), Atomoxetine, Clonidine"),
("ASD\n15–20%","CARS-2, ADOS-2, M-CHAT","ABA, SLT, social skills, AAC, sensory integration","Risperidone/Aripiprazole (aggression); SSRI for anxiety"),
("Cerebral Palsy\n8–30%","GMFCS, MACS, spasticity scales","Physiotherapy, OT, AFOs, seating/positioning aids","Baclofen; Botulinum toxin-A injections; orthopaedic surgery"),
("Visual deficits\n15–75%","Ophthalmology, ERG, VEP","Early visual stimulation, large-print, CVI therapy","Corrective lenses; surgery for cataract/strabismus"),
("Feeding issues\n20–47%","Video-fluoroscopy, SLP","Feeding therapy, modified textures, postural positioning","PEG/NG if aspiration risk; anti-reflux agents"),
("Sleep disorders\n40–80%","Sleep diary, polysomnography","Sleep hygiene, visual schedules, sensory strategies","Melatonin (first line); Clonidine; avoid benzodiazepines"),
("Malnutrition\n40–70%","Anthropometry, dietary recall, haematinics","High-calorie diet, feeding schedule, OT feeding therapy","Iron, zinc, vitamins A & D; RUTF if severe"),
]
row_h = 0.64
for ri,row_data in enumerate(rows_cm):
bg = WHITE if ri%2==0 else OFFWHITE
y = 1.66+ri*row_h
rect(s, 0.3, y, 12.85, row_h-0.02, bg, LGRAY, 0.25)
for ci,(cell,cx,cw) in enumerate(zip(row_data,cx2,cw2)):
tb(s, cell, cx+0.06, y+0.04, cw-0.12, row_h-0.1,
size=Pt(13 if ci>0 else 14), bold=(ci==0),
color=NAVY if ci==0 else DARK,
wrap=True, vanchor=MSO_ANCHOR.MIDDLE)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 14 – COUNSELLING
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Counselling in GDD — IAP Guideline 6A")
footer(s)
sbar(s, '"Counselling strongly recommended at initial diagnosis AND whenever new etiological information is available" — IAP 2022',
1.22, STEEL, 0.42, Pt(16))
counsel_data = [
("Disclosing the Diagnosis", NAVY, [
"Communicate clearly, directly and compassionately",
"Emphasise the child's strengths as well as deficits",
"Use simple language; avoid excessive jargon",
"Validate and acknowledge parental emotions (grief, guilt)",
"Involve both parents wherever possible",
"Offer a follow-up appointment specifically for questions",
]),
("Investigations & Etiology", STEEL, [
"Multiple investigations may be needed — explain stepwise approach",
"Despite all tests, etiology may NOT be found (~30–40%)",
"Pre-test genetic counselling mandatory before genetic tests",
"Explain Variant of Uncertain Significance (VUS)",
"Review VUS in 2–3 years as databases expand",
"Management begins regardless of etiology",
]),
("Management & Prognosis", NAVY, [
"Improvement IS possible with consistent, quality therapy",
"~66% will be diagnosed with ID; ~20% function well socially",
"Mild GDD has significantly better prognosis",
"Early intervention is the most important modifiable factor",
"Compliance with therapy is critical to outcome",
"Even severely delayed children can show meaningful gains",
]),
("Legal, Social & Genetic", STEEL, [
"RPwD Act 2016 — rights of persons with disabilities (India)",
"UDID Card — access to government disability benefits",
"RBSK scheme + DEIC — free therapy and services",
"Recurrence risk: empirical ~3–5% without diagnosis",
"AR: 25% | X-linked: 50% of males | De novo: < 1%",
"Offer prenatal diagnosis if molecular cause identified",
]),
]
for i,(title,col,items) in enumerate(counsel_data):
row, ci = divmod(i,2)
x = 0.4+ci*6.55; y = 1.72+row*2.82
rect(s, x, y, 6.2, 0.44, col)
tb(s, title, x+0.1, y+0.03, 6.0, 0.4, size=Pt(17), bold=True, color=WHITE)
rect(s, x, y+0.44, 6.2, 2.3, WHITE, LGRAY, 0.5)
multi(s, [("• "+it, False, DARK) for it in items],
x+0.12, y+0.5, 5.96, 2.2, size=Pt(17), ls=25)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 15 – PROGNOSIS & FOLLOW-UP
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Prognosis & Follow-Up in GDD")
footer(s)
rect(s, 0.4, 1.22, 6.1, 0.44, NAVY)
tb(s, "PROGNOSIS", 0.5, 1.24, 5.9, 0.4, size=Pt(18), bold=True, color=WHITE)
rect(s, 0.4, 1.66, 6.1, 5.42, WHITE, LGRAY, 0.6)
multi(s, [
("Overall outcomes:", True, NAVY),
("• ~66% will eventually be diagnosed with Intellectual Disability", False, DARK),
("• ~20% achieve good social functioning without full ID", False, DARK),
("• Degree of delay = most consistent predictor", False, DARK),
("• Mild GDD → significantly better long-term outcome", False, DARK),
("", False, DARK),
("Factors affecting prognosis:", True, NAVY),
("• Severity of GDD and its underlying etiology", False, DARK),
("• Presence of epilepsy — worsens outcome significantly", False, DARK),
("• Age at diagnosis and therapy initiation — earlier = better", False, DARK),
("• Quality and consistency of therapy; family compliance", False, DARK),
("• Socioeconomic status and family support system", False, DARK),
("• Availability of specific etiology-based treatment", False, DARK),
("", False, DARK),
("Early intervention:", True, STEEL),
("• Minimises delays; gains in adaptive, academic, social functioning", False, DARK),
("• Even severe GDD — meaningful improvement possible", False, DARK),
], 0.55, 1.72, 5.88, 5.28, size=Pt(17), ls=22)
rect(s, 6.7, 1.22, 6.25, 0.44, STEEL)
tb(s, "FOLLOW-UP PLAN", 6.8, 1.24, 6.05, 0.4, size=Pt(18), bold=True, color=WHITE)
rect(s, 6.7, 1.66, 6.25, 5.42, WHITE, LGRAY, 0.6)
fu_hdr=["Phase","Frequency","Key Focus"]
fu_rows=[
("0–2 years", "Every 3 months", "Milestones, therapies, nutrition, hearing, vision"),
("2–5 years", "Every 6 months", "Therapy goals, comorbidities, school readiness, IEP"),
("School age\n5–12","Yearly", "ID re-assessment, IEP review, academic progress"),
("Adolescence\n>12","6-monthly", "Transition planning, vocational training, guardianship"),
("Any time", "As clinically needed", "Regression, new seizures, new comorbidities"),
]
col_fx=[6.72,8.42,9.72]; col_fw=[1.65,1.28,3.2]
rect(s, 6.7, 1.66, 6.25, 0.44, STEEL)
for ci,(hd,cx,cw) in enumerate(zip(fu_hdr,col_fx,col_fw)):
tb(s, hd, cx+0.04, 1.68, cw-0.08, 0.4, size=Pt(14), bold=True, color=WHITE, vanchor=MSO_ANCHOR.MIDDLE)
for ri,(phase,freq,focus) in enumerate(fu_rows):
bg = WHITE if ri%2==0 else OFFWHITE
y = 2.1+ri*0.7
rect(s, 6.7, y, 6.25, 0.68, bg, LGRAY, 0.3)
tb(s, phase, col_fx[0]+0.04, y+0.08, col_fw[0]-0.08, 0.52, size=Pt(15), bold=True, color=NAVY, vanchor=MSO_ANCHOR.MIDDLE, wrap=True)
tb(s, freq, col_fx[1]+0.04, y+0.08, col_fw[1]-0.08, 0.52, size=Pt(14), color=DARK, vanchor=MSO_ANCHOR.MIDDLE)
tb(s, focus, col_fx[2]+0.04, y+0.08, col_fw[2]-0.08, 0.52, size=Pt(14), color=DARK, vanchor=MSO_ANCHOR.MIDDLE, wrap=True)
rect(s, 6.7, 5.62, 6.25, 0.6, OFFWHITE, NAVY, 0.8)
multi(s, [("Lead: Developmental Paediatrician / Paediatric Neurologist-led MDT", True, NAVY),
("+SLT, OT, Physiotherapist, Psychologist, Social worker, Special educator", False, DARK)],
6.8, 5.66, 6.05, 0.52, size=Pt(15), ls=21)
rect(s, 6.7, 6.28, 6.25, 0.6, OFFWHITE, STEEL, 0.8)
multi(s, [("At age 5+: Re-assess formally", True, STEEL),
("IQ < 70 + adaptive deficit → reclassify as Intellectual Disability", False, DARK)],
6.8, 6.32, 6.05, 0.52, size=Pt(15), ls=21)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 16 – GDD & GENETICS
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "GDD & Genetics")
footer(s)
sbar(s, "Genetic causes account for 30–50% of GDD — the SINGLE LARGEST etiological category", 1.22, STEEL, 0.38, Pt(16))
gen_data = [
("CHROMOSOMAL\nABNORMALITIES", NAVY, [
"Down syndrome (Trisomy 21) — most common chromosomal cause",
"Trisomy 18 (Edwards), Trisomy 13 (Patau) — severe GDD",
"Turner syndrome (45,X), Klinefelter (47,XXY)",
"22q11.2 deletion (DiGeorge) — GDD + cardiac + immune",
"5p deletion (Cri-du-chat) — severe GDD, high-pitched cry",
"FIRST-LINE TEST: Chromosomal Microarray (CMA)",
]),
("SINGLE-GENE &\nGENOMIC", STEEL, [
"Fragile X (FMR1) — most common inherited cause in males",
"Rett syndrome (MECP2) — girls; regression + hand-wringing",
"Angelman (UBE3A/15q11) — happy, absent speech, seizures",
"Prader-Willi (SNRPN/15q11) — hypotonia in infancy",
"Tuberous Sclerosis (TSC1/TSC2) — tubers, ASD, seizures",
"TEST: WES/WGS when CMA is negative",
]),
("METABOLIC /\nBIOCHEMICAL", NAVY, [
"PKU — treatable if on NBS; dietary restriction prevents GDD",
"Congenital hypothyroidism — treatable, most common cause of preventable ID",
"Mucopolysaccharidoses (MPS I, II, III)",
"Organic acidurias — propionic, methylmalonic acidaemia",
"Congenital Disorders of Glycosylation (CDG)",
"TEST: Urine organics, plasma amino acids, lysosomal panel",
]),
("GENETIC\nCOUNSELLING", STEEL, [
"Step 1: Establish accurate molecular/cytogenetic diagnosis",
"Step 2: Determine mode of inheritance (AR, AD, XL, de novo)",
"AR: 25% recurrence | X-linked: 50% of males",
"De novo mutations: low recurrence (< 1%; ~1–2% mosaicism)",
"Prenatal diagnosis: CVS (10–12 wks) / amniocentesis (15–18 wks)",
"Explain VUS — review in 2–3 years with new database data",
]),
]
for i,(title,col,items) in enumerate(gen_data):
row, ci = divmod(i,2)
x = 0.4+ci*6.55; y = 1.7+row*2.88
rect(s, x, y, 6.2, 0.46, col)
tb(s, title, x+0.08, y+0.03, 6.04, 0.42, size=Pt(15), bold=True,
color=WHITE, align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
rect(s, x, y+0.46, 6.2, 2.34, WHITE, LGRAY, 0.5)
multi(s, [("• "+it, False, DARK) for it in items],
x+0.1, y+0.52, 6.0, 2.24, size=Pt(16), ls=24)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 17 – IAP FIG.5 APPROACH FLOWCHART — PART 1 (top half)
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Approach to a Child with GDD — IAP Fig.5 (Part 1 of 2)")
footer(s, "Source: Juneja M et al. Indian Pediatrics 2022;59:401–415 — Fig.5")
# Step 1: Entry box
rounded_box(s, "DQ ≤ 70 in ≥ 2 developmental domains", 3.8, 1.22, 5.7, 0.56,
fill=WHITE, tc=DARK, fs=Pt(17), bold=True)
arrow_v(s, 6.65, 1.78, 0.18)
# Step 2: Big assessment box
rounded_box(s, "Detailed History and Examination\nHearing and Vision screening\nScreen for co-morbidities\nPlan investigations based on clinical assessment\nStart / refer for early intervention",
2.8, 1.96, 7.7, 1.08, fill=WHITE, tc=DARK, fs=Pt(16), bold=False)
arrow_v(s, 6.65, 3.04, 0.2)
# Step 3: 4-way branch — horizontal line then 4 arrows down
rect(s, 1.2, 3.24, 11.15, 0.04, STEEL) # horizontal connector
# 4 branch boxes
branches = [
(1.2, "Investigate for\ntreatable causes", 2.5),
(4.0, "Abnormal head size /\nneurological findings /\nseizures", 2.5),
(6.9, "Consanguinity / positive\nfamily history /\ndevelopmental regression,\nepisodic decompensation", 2.72),
(9.85, "No clear etiology /\nclinical suspicion of\ngenetic syndrome", 2.5),
]
for bx, btxt, bw in branches:
cx = bx + bw/2
arrow_v(s, cx, 3.24, 0.22)
oval_box(s, btxt, bx, 3.46, bw, 0.85, fill=WHITE, tc=DARK, fs=Pt(14))
arrow_v(s, 2.45, 4.31, 0.18)
arrow_v(s, 5.25, 4.31, 0.18)
arrow_v(s, 8.26, 4.31, 0.18)
arrow_v(s, 11.1, 4.31, 0.18)
# 4 result boxes below branches
result_boxes = [
(0.5, 4.49, 3.8, "Thyroid function testsᵃ\nIron/Vitamin B12 deficiencyᵇ\nBiotinidase deficiencyᶜ\nCPK levelsᵈ"),
(4.1, 4.49, 2.7, "Neuroimaging\n(preferably MRI)\nMRSᵉ\nEEG if epilepsy"),
(7.0, 4.49, 2.7, "Investigate for\nInborn Errors\nof Metabolism"),
(9.9, 4.49, 2.9, "Genetic\nTesting"),
]
for rx, ry, rw, rtxt in result_boxes:
rounded_box(s, rtxt, rx, ry, rw, 0.92, fill=WHITE, tc=DARK, fs=Pt(14))
# All 4 arrows converge down to "Diagnosis established?"
# Draw horizontal connector from mid-points
rect(s, 1.5, 5.41, 10.95, 0.04, STEEL)
arrow_v(s, 6.65, 5.41, 0.2)
diamond_box(s, "Diagnosis established?", 4.6, 5.61, 4.1, 0.58)
# Note at bottom
multi(s, [
("ᵃ Especially in absence of documented newborn screening | ᵇ Especially in children with restricted diet or pica", False, MIDGRAY),
("ᶜ Especially in absence of newborn screening | ᵈ Boys with findings suggestive of Duchenne MD | ᵉ Where mitochondrial disorder suspected, or for cerebral creatine deficiency in unexplained GDD with normal MRI", False, MIDGRAY),
("MRI = Magnetic Resonance Imaging | MRS = Magnetic Resonance Spectroscopy | EEG = Electroencephalogram | DQ = Developmental Quotient", False, MIDGRAY),
], 0.4, 6.3, 12.5, 0.7, size=Pt(12), ls=16)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 18 – IAP FIG.5 APPROACH FLOWCHART — PART 2 (bottom half)
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Approach to a Child with GDD — IAP Fig.5 (Part 2 of 2)")
footer(s, "Source: Juneja M et al. Indian Pediatrics 2022;59:401–415 — Fig.5")
# Entry: Diagnosis established? (repeated from bottom of Part 1)
diamond_box(s, "Diagnosis established?", 4.6, 1.22, 4.1, 0.58)
# YES branch (left)
arrow_v(s, 5.15, 1.8, 0.22)
rect(s, 5.11, 1.78, 1.0, 0.04, STEEL) # horizontal left
rect(s, 5.11, 1.78, 0.04, 0.24, STEEL) # vertical down
tb(s, "Yes", 4.5, 1.82, 0.6, 0.28, size=Pt(15), bold=True, color=STEEL, align=PP_ALIGN.CENTER)
# NO branch (right)
rect(s, 8.7, 1.5, 0.04, 0.3, STEEL)
rect(s, 8.7, 1.5, 2.0, 0.04, STEEL)
tb(s, "No", 9.0, 1.52, 0.5, 0.28, size=Pt(15), bold=True, color=STEEL, align=PP_ALIGN.CENTER)
arrow_v(s, 9.7, 1.78, 0.22)
# Central action box (YES side)
rounded_box(s, "Start treatment\nTreat co-morbidities\nFamily counselling\nDevelopmental interventions",
3.5, 2.02, 6.3, 0.96, fill=WHITE, tc=DARK, fs=Pt(16), bold=False)
arrow_v(s, 6.65, 2.98, 0.2)
# NO side box
rounded_box(s, "Periodic review and\nre-evaluation for\nestablishing diagnosis",
9.5, 2.02, 3.4, 0.96, fill=WHITE, tc=DARK, fs=Pt(15), bold=False)
# Regular follow-up
rounded_box(s, "Regular follow-up", 4.8, 3.18, 3.7, 0.56,
fill=WHITE, tc=DARK, fs=Pt(16), bold=True)
# Important additions from paper context
rect(s, 0.4, 4.1, 12.5, 0.42, STEEL)
tb(s, "KEY PRINCIPLES from IAP Guidelines (Guideline Statements)", 0.5, 4.12, 12.3, 0.38,
size=Pt(16), bold=True, color=WHITE)
rect(s, 0.4, 4.52, 12.5, 2.55, WHITE, LGRAY, 0.6)
multi(s, [
("Guideline 1A:", True, NAVY),
("A detailed history and clinical examination for assessment of developmental delay, etiological risk factors and comorbidities should be recorded as accurately as possible.", False, DARK),
("", False, DARK),
("Guideline 1B:", True, NAVY),
("Definitive diagnosis of GDD should be based on the results of standardized tests of development.", False, DARK),
("", False, DARK),
("Guideline 2A:", True, NAVY),
("Multidisciplinary intervention should be initiated soon after the delay is recognised, even before a formal diagnosis is made.", False, DARK),
("", False, DARK),
("Guideline 6A:", True, NAVY),
("Detailed structured counselling of family regarding diagnosis, etiology, comorbidities, investigations, management, prognosis and follow-up is recommended.", False, DARK),
], 0.55, 4.56, 12.2, 2.45, size=Pt(16), ls=22)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 19 – FLOWCHART: DEVELOPMENTAL SCREENING ALGORITHM
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Flowchart: Developmental Screening Algorithm (IAP 2022)")
footer(s)
for si,(track_title,track_col,steps_list) in enumerate([
("NORMAL RISK CHILD", NAVY, [
("Routine developmental surveillance at every well-child visit\n(IAP Red Flags Checklist)", 0.6),
("Screen at 9–12 months\nDASII / ASQ-3 / DDST-II / Trivandrum DD Chart", 0.54),
("Screen at 18–24 months\nDASII + M-CHAT-R/F (for ASD screening)", 0.54),
("Screen at school entry (4.5–5 years)\nDASII / Vineland-II / DDST-II", 0.54),
("◆ Screen POSITIVE or parental concern at any point?", 0.5),
("Formal developmental assessment\n(standardized tests: DASII / BSID-III / Griffiths)", 0.54),
("Delay in ≥ 2 domains ≥ 2 SD → GDD confirmed\nRefer to Developmental Paediatrician + MDT", 0.56),
]),
("HIGH RISK INFANT", STEEL, [
("Identify risk factors at birth:\nPrematurity, HIE, LBW, NICU, genetic syndrome,\ncongenital infection, NBS positive", 0.68),
("Screen every 6 months\nBirth → 24 months\nBSID-III / Griffiths / DASII", 0.56),
("Screen yearly\n24 months → 5 years\nDASII / Vineland-II", 0.5),
("Screen once at school entry\n(even if all prior screens normal)", 0.5),
("◆ Any screen positive at any age?", 0.5),
("Immediate formal developmental assessment\n(DASII / BSID-III / Vineland-II)", 0.54),
("GDD confirmed → Begin Early Intervention at DEIC\n+ Etiological workup in parallel", 0.56),
]),
]):
x = 0.35+si*6.6; w = 6.22
rect(s, x, 1.22, w, 0.44, track_col)
tb(s, track_title, x+0.1, 1.24, w-0.2, 0.4,
size=Pt(18), bold=True, color=WHITE, align=PP_ALIGN.CENTER)
y_c = 1.66
for sj,(stxt,sh) in enumerate(steps_list):
rect(s, x, y_c, w, sh, track_col, LGRAY, 0.5)
tb(s, stxt, x+0.12, y_c+0.05, w-0.24, sh-0.1,
size=Pt(15), bold=False, color=WHITE,
align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE, wrap=True)
if sj < len(steps_list)-1:
arrow_v(s, x+w/2, y_c+sh, 0.07)
y_c += sh+0.07
rect(s, 6.57, 1.22, 0.06, 6.0, LGRAY)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 20 – FLOWCHART: INVESTIGATION PATHWAY (SIMPLE — no tier labels)
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Flowchart: Investigation Pathway in GDD (IAP Guidelines 2022)")
footer(s, "Source: Juneja M et al. Indian Pediatrics 2022;59:401–415 — Fig.5")
fbox(s, "GDD CONFIRMED\n(DQ ≤ 70 in ≥ 2 developmental domains)", 2.8, 1.22, 7.7, 0.6, NAVY, WHITE, Pt(16))
arrow_v(s, 6.65, 1.82, 0.14)
rounded_box(s, "Detailed History & Examination | Hearing & Vision Screening | Screen for co-morbidities",
2.0, 1.96, 9.3, 0.52, fill=WHITE, tc=DARK, fs=Pt(15))
arrow_v(s, 6.65, 2.48, 0.14)
# 4 columns
cols = [
(0.4, 3.0, "Investigate for\nTREATABLE\nCAUSES",
"• Thyroid function tests\n• Iron / Vit B12\n• Biotinidase deficiency\n• CPK levels"),
(3.55, 3.0, "ABNORMAL HEAD\nSIZE / NEURO\nFINDINGS / SEIZURES",
"• MRI Brain (preferred)\n• MRS (if mito suspected)\n• EEG if epilepsy"),
(6.75, 3.0, "CONSANGUINITY /\nFAMILY HISTORY /\nREGRESSION",
"• Inborn Errors of Metabolism workup\n• Ammonia, lactate, pyruvate\n• Plasma amino acids\n• Urine organic acids\n• Lysosomal enzyme assays"),
(9.95, 3.0, "NO CLEAR\nETIOLOGY /\nGENETIC\nSUSPICION",
"• Chromosomal Microarray (CMA)\n• Karyotype / FISH\n• Fragile X (FMR1)\n• WES / WGS"),
]
# horizontal line at y=2.62
rect(s, 0.4, 2.62, 12.5, 0.04, STEEL)
for cx_val, _, title, body in cols:
col_cw = 2.95
col_cx = cx_val+0.1
col_center = cx_val + col_cw/2 + 0.1
arrow_v(s, col_center, 2.62, 0.2)
rounded_box(s, title, cx_val, 2.82, col_cw+0.1, 0.72,
fill=NAVY, tc=WHITE, fs=Pt(13), bold=True)
rect(s, cx_val, 3.54, col_cw+0.1, 1.78, WHITE, LGRAY, 0.5)
tb(s, body, cx_val+0.1, 3.58, col_cw-0.1, 1.7,
size=Pt(14), color=DARK, wrap=True)
arrow_v(s, col_center, 5.32, 0.18)
rect(s, 0.4, 5.32, 12.5, 0.04, STEEL)
arrow_v(s, 6.65, 5.36, 0.18)
diamond_box(s, "Diagnosis established?", 4.55, 5.54, 4.2, 0.56)
arrow_v(s, 6.65, 6.1, 0.14)
rect(s, 0.4, 6.24, 5.6, 0.52, WHITE, STEEL, 0.8)
multi(s, [("YES — Start treatment, treat co-morbidities,\nfamily counselling, developmental interventions → Regular follow-up", True, NAVY)],
0.5, 6.26, 5.4, 0.48, size=Pt(14), ls=18)
rect(s, 7.35, 6.24, 5.6, 0.52, WHITE, NAVY, 0.8)
multi(s, [("NO — Periodic review and re-evaluation\nfor establishing diagnosis", True, STEEL)],
7.45, 6.26, 5.4, 0.48, size=Pt(14), ls=18)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 21 – IAP FIG.4: BEHAVIOUR PROBLEMS FLOWCHART
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Management of Behavioural Problems in GDD (IAP Fig.4)")
footer(s, "Source: Juneja M et al. Indian Pediatrics 2022;59:401–415 — Fig.4")
# Root
rounded_box(s, "Behavior Problems", 4.6, 1.22, 4.1, 0.52, fill=WHITE, tc=DARK, fs=Pt(18), bold=True)
arrow_v(s, 6.65, 1.74, 0.18)
# Central box
rounded_box(s, "Identify the behaviors to be modified", 4.2, 1.92, 4.9, 0.56, fill=WHITE, tc=DARK, fs=Pt(16), bold=False)
# RIGHT: Marked hyperactivity/Aggression/SIB
rect(s, 9.25, 1.74, 3.7, 0.04, STEEL) # horizontal right
arrow_v(s, 12.95, 1.74, 0.18) # but draw within bounds
rect(s, 9.25, 1.74, 0.04, 0.36, STEEL)
tb(s, "Marked hyperactivity /\nAggression / SIB", 9.35, 1.5, 2.8, 0.4,
size=Pt(14), color=DARK, bold=False)
rounded_box(s, "Marked hyperactivity /\nAggression / SIB",
9.3, 1.22, 3.5, 0.56, fill=OFFWHITE, tc=DARK, fs=Pt(14))
arrow_h(s, 9.1, 2.0, 0.15) # arrow from right side of central box to right side
rect(s, 9.1, 1.97, 0.04, 0.08, STEEL)
rect(s, 9.1, 1.97, 0.25, 0.04, STEEL)
rounded_box(s, "Consider pharmacological\nmanagement or expert\npsychological intervention",
9.45, 1.92, 3.45, 0.72, fill=WHITE, tc=DARK, fs=Pt(14))
# LEFT: Common Causes
rounded_box(s, "Common Causes of problem behaviors\nCommunication deficits\nPoor understanding of social behavior\nInappropriate reinforcement techniques",
0.4, 1.5, 3.5, 1.0, fill=OFFWHITE, tc=DARK, fs=Pt(13))
rect(s, 3.9, 2.0, 0.3, 0.04, STEEL) # arrow from left box to central
rect(s, 3.9, 1.97, 0.04, 0.08, STEEL)
arrow_v(s, 6.65, 2.48, 0.18)
# Next central box
rounded_box(s, "Identify the cause of the problem behavior /\nIdentify function of the behavior using ABC chart",
3.8, 2.66, 5.7, 0.66, fill=WHITE, tc=DARK, fs=Pt(15))
# LEFT: Common function
rounded_box(s, "Common function of problem behaviors\nAttention seeking\nTo get demands fulfilled\nEscape behaviors",
0.4, 2.72, 3.2, 0.88, fill=OFFWHITE, tc=DARK, fs=Pt(13))
rect(s, 3.6, 3.1, 0.22, 0.04, STEEL)
rect(s, 3.6, 3.07, 0.04, 0.08, STEEL)
arrow_v(s, 6.65, 3.32, 0.18)
# Main restructure box
rounded_box(s,
"Restructure the environment to control the antecedent,\nOR\nModify the consequence to control inadvertent reinforcement of problem behaviors,\nAND\nStrengthen adaptive behaviors including communication skills",
2.8, 3.5, 7.5, 1.08, fill=WHITE, tc=DARK, fs=Pt(15))
# RIGHT: Formulate behaviour plan
rounded_box(s, "Formulate behavior plan\nbased on the ABC chart",
10.4, 3.7, 2.5, 0.72, fill=WHITE, tc=DARK, fs=Pt(14))
rect(s, 10.3, 4.04, 0.12, 0.04, STEEL)
rect(s, 10.3, 4.01, 0.04, 0.08, STEEL)
# LEFT: Rule out organic causes
rounded_box(s, "Rule out organic causes like pain, constipation, GER especially in non-verbal children",
0.4, 3.7, 2.7, 0.72, fill=OFFWHITE, tc=DARK, fs=Pt(13))
rect(s, 3.1, 4.04, 0.45, 0.04, STEEL)
rect(s, 3.1, 4.01, 0.04, 0.08, STEEL)
# Abbreviation footnotes
rect(s, 0.4, 5.1, 12.5, 0.58, OFFWHITE, STEEL, 0.7)
multi(s, [
("SIB = Self-injurious behaviors", False, DARK),
("ABC = Antecedent-Behavior-Consequence (Antecedent = event/situation before behavior; Behavior = the behavior exhibited; Consequence = events immediately after behavior)", False, DARK),
], 0.5, 5.12, 12.2, 0.54, size=Pt(14), ls=20)
# ═════════════════════════════════════════════════════════════════════════════
# SLIDE 22 – KEY MESSAGES + REFERENCES
# ═════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLANK)
header(s, "Key Take-Home Messages")
footer(s)
messages = [
("1.", "GDD = significant delay in ≥2 developmental domains in children < 5 yrs; prevalence 1–3% globally, 3–13% in India"),
("2.", "GDD ≠ Intellectual Disability — it is the under-5 equivalent; ~66% evolve to ID, ~20% do not"),
("3.", "Severity classified by Social Quotient (SQ): Mild 55–70 | Moderate 36–54 | Severe 21–35 | Profound < 20"),
("4.", "Etiology is heterogeneous; genetic causes (30–50%) are single largest category — CMA is first-line genetic test"),
("5.", "Developmental surveillance at every visit; formal screening at 9–12 m, 18–24 m, and school entry (IAP schedule)"),
("6.", "Investigations prioritize treatable causes: TFT, iron/B12, biotinidase, CPK — then neuroimaging, metabolic, genetic"),
("7.", "Management is multidisciplinary and must start IMMEDIATELY — DEIC and RBSK are free resources in India"),
("8.", "Comorbidities common: epilepsy (5–30%), ADHD (35–40%), ASD (15–20%), malnutrition (40–70%), sleep (40–80%)"),
("9.", "Structured family counselling is mandatory at diagnosis and at every new etiological finding (IAP Guideline 6A)"),
("10.", "Early intervention is the single most important modifiable prognostic factor — begin before etiology is confirmed"),
]
rect(s, 0.4, 1.22, 12.5, 0.42, NAVY)
tb(s, "10 TAKE-HOME MESSAGES (IAP 2022)", 0.5, 1.24, 12.3, 0.38,
size=Pt(18), bold=True, color=WHITE)
for i,(num,msg) in enumerate(messages):
bg = WHITE if i%2==0 else OFFWHITE
y = 1.64+i*0.51
rect(s, 0.4, y, 12.5, 0.49, bg, LGRAY, 0.25)
fc = NAVY if i%2==0 else STEEL
rect(s, 0.4, y, 0.44, 0.49, fc)
tb(s, num, 0.41, y+0.05, 0.4, 0.39, size=Pt(16), bold=True,
color=WHITE, align=PP_ALIGN.CENTER, vanchor=MSO_ANCHOR.MIDDLE)
tb(s, msg, 0.92, y+0.05, 11.88, 0.39,
size=Pt(16), color=DARK, vanchor=MSO_ANCHOR.MIDDLE)
rect(s, 0.4, 6.74, 12.5, 0.38, OFFWHITE, STEEL, 0.7)
multi(s, [
("References: ", True, NAVY),
("1. Juneja M et al. Indian Pediatrics 2022;59:401–415 | 2. Bradley & Daroff Neurology 8e | 3. Harriet Lane Handbook 23e | 4. Thompson & Thompson Genetics 9e | 5. DSM-5 (APA 2013)", False, MIDGRAY)
], 0.5, 6.76, 12.3, 0.34, size=Pt(13), ls=16)
# ═════════════════════════════════════════════════════════════════════════════
out = "/tmp/workspace/gdd-seminar/GDD_Seminar_v4.pptx"
prs.save(out)
print(f"Saved: {out} — Total slides: {len(prs.slides)}")
Make it