Make a ppt on ckd in Pediatrics
mkdir -p /tmp/workspace/ckd-pediatrics && cat > /tmp/workspace/ckd-pediatrics/create_ppt.py << 'PYEOF' 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.oxml.ns import qn from pptx.oxml import parse_xml from lxml import etree from io import BytesIO # ── Color Palette ────────────────────────────────────────────────────────────── NAVY = RGBColor(0x0D, 0x2B, 0x5E) # deep navy (title bg, accent) TEAL = RGBColor(0x00, 0x86, 0x8A) # teal highlight LIGHT_BG = RGBColor(0xF0, 0xF6, 0xFB) # slide body bg WHITE = RGBColor(0xFF, 0xFF, 0xFF) DARK_TXT = RGBColor(0x1A, 0x1A, 0x2E) ACCENT1 = RGBColor(0x00, 0xB4, 0xD8) # cyan accent ACCENT2 = RGBColor(0xEF, 0x7B, 0x45) # orange accent YELLOW = RGBColor(0xFF, 0xD1, 0x66) LIGHT_TEAL= RGBColor(0xE0, 0xF5, 0xF5) GREEN = RGBColor(0x2D, 0x9C, 0x5A) RED = RGBColor(0xC0, 0x39, 0x2B) prs = Presentation() prs.slide_width = Inches(13.333) prs.slide_height = Inches(7.5) blank = prs.slide_layouts[6] # fully blank # ────────────────────────────────────────────────────────────────────────────── # HELPER FUNCTIONS # ────────────────────────────────────────────────────────────────────────────── def fill_slide_bg(slide, color): bg = slide.background fill = bg.fill fill.solid() fill.fore_color.rgb = color def add_rect(slide, x, y, w, h, fill_color=None, line_color=None, line_width=0): shape = slide.shapes.add_shape( 1, # MSO_SHAPE_TYPE.RECTANGLE Inches(x), Inches(y), Inches(w), Inches(h) ) if fill_color: shape.fill.solid() shape.fill.fore_color.rgb = fill_color else: shape.fill.background() if line_color: shape.line.color.rgb = line_color shape.line.width = Pt(line_width) else: shape.line.fill.background() return shape def add_text(slide, text, x, y, w, h, font_name="Calibri", size=18, bold=False, color=DARK_TXT, align=PP_ALIGN.LEFT, wrap=True, italic=False, v_anchor=MSO_ANCHOR.TOP): tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h)) tf = tb.text_frame tf.word_wrap = wrap tf.vertical_anchor = v_anchor tf.margin_left = 0; tf.margin_right = 0 tf.margin_top = 0; tf.margin_bottom = 0 p = tf.paragraphs[0] p.alignment = align run = p.add_run() run.text = text run.font.name = font_name run.font.size = Pt(size) run.font.bold = bold run.font.italic = italic run.font.color.rgb = color return tf def add_bullet_slide(slide, title, bullets, title_color=WHITE, bullet_color=DARK_TXT, bg_color=LIGHT_BG, header_color=NAVY): fill_slide_bg(slide, bg_color) # Header bar add_rect(slide, 0, 0, 13.333, 1.15, fill_color=header_color) add_text(slide, title, 0.35, 0.12, 12.5, 0.9, font_name="Calibri", size=28, bold=True, color=title_color, align=PP_ALIGN.LEFT, v_anchor=MSO_ANCHOR.MIDDLE) # Accent line add_rect(slide, 0, 1.15, 13.333, 0.06, fill_color=TEAL) # Bullets tb = slide.shapes.add_textbox(Inches(0.5), Inches(1.45), Inches(12.4), Inches(5.75)) tf = tb.text_frame tf.word_wrap = True tf.margin_left = 0; tf.margin_right = 0 tf.margin_top = 0; tf.margin_bottom = 0 first = True for b in bullets: if first: p = tf.paragraphs[0] first = False else: p = tf.add_paragraph() if b.startswith("##"): # sub-header p.alignment = PP_ALIGN.LEFT run = p.add_run() run.text = b[2:].strip() run.font.name = "Calibri" run.font.size = Pt(17) run.font.bold = True run.font.color.rgb = TEAL p.space_before = Pt(10) elif b.startswith("--"): # sub-bullet p.level = 1 p.alignment = PP_ALIGN.LEFT run = p.add_run() run.text = " " + b[2:].strip() run.font.name = "Calibri" run.font.size = Pt(15) run.font.bold = False run.font.color.rgb = bullet_color p.space_before = Pt(2) else: p.alignment = PP_ALIGN.LEFT run = p.add_run() run.text = "• " + b.strip() run.font.name = "Calibri" run.font.size = Pt(16.5) run.font.bold = False run.font.color.rgb = bullet_color p.space_before = Pt(5) return tf # ══════════════════════════════════════════════════════════════════════════════ # SLIDE 1 — TITLE SLIDE # ══════════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) fill_slide_bg(slide, NAVY) # Diagonal accent shape add_rect(slide, 8.8, 0, 4.6, 7.5, fill_color=RGBColor(0x09, 0x1E, 0x4A)) add_rect(slide, 0, 5.8, 13.333, 1.7, fill_color=TEAL) # Title add_text(slide, "Chronic Kidney Disease", 0.6, 1.4, 9.5, 1.4, font_name="Calibri", size=46, bold=True, color=WHITE, align=PP_ALIGN.LEFT) add_text(slide, "in Pediatrics", 0.6, 2.75, 9.5, 1.1, font_name="Calibri", size=40, bold=False, color=ACCENT1, align=PP_ALIGN.LEFT) # Subtitle add_text(slide, "Epidemiology • Etiology • Staging • Complications • Management", 0.6, 3.9, 9.2, 0.8, font_name="Calibri", size=16, bold=False, color=RGBColor(0xB0, 0xD4, 0xF1), align=PP_ALIGN.LEFT) # Source tag add_text(slide, "Source: Brenner & Rector's The Kidney, 2-Volume Set", 0.6, 6.15, 9.0, 0.55, font_name="Calibri", size=12, bold=False, color=DARK_TXT, align=PP_ALIGN.LEFT) # ══════════════════════════════════════════════════════════════════════════════ # SLIDE 2 — OVERVIEW / OUTLINE # ══════════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) add_bullet_slide(slide, "Presentation Outline", [ "Definition & Classification of Pediatric CKD", "Epidemiology & Incidence", "Spectrum of Etiologies in Children", "Pathophysiology & Staging (KDIGO)", "Clinical Presentation & Diagnosis", "Growth Failure in CKD", "Cardiovascular Complications", "Anemia, Bone Disease & Other Complications", "Progression of CKD in Children", "Management Principles", "Renal Replacement Therapy & Transplantation", ]) # ══════════════════════════════════════════════════════════════════════════════ # SLIDE 3 — DEFINITION & CLASSIFICATION # ══════════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) fill_slide_bg(slide, LIGHT_BG) add_rect(slide, 0, 0, 13.333, 1.15, fill_color=NAVY) add_rect(slide, 0, 1.15, 13.333, 0.06, fill_color=TEAL) add_text(slide, "Definition & Classification", 0.35, 0.12, 12.5, 0.9, size=28, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE) # Definition box add_rect(slide, 0.4, 1.4, 12.5, 1.3, fill_color=RGBColor(0xD6, 0xED, 0xF7), line_color=TEAL, line_width=1.2) add_text(slide, "CKD is defined as abnormalities of kidney structure or function present for >3 months, " "with implications for health. In children, GFR is normalized to 1.73 m² BSA.", 0.6, 1.5, 12.1, 1.1, size=15.5, bold=False, color=DARK_TXT, wrap=True) # GFR staging table headers = ["Stage", "Description", "GFR (mL/min/1.73 m²)"] rows = [ ["G1", "Normal or high", "≥ 90"], ["G2", "Mildly decreased", "60 – 89"], ["G3a", "Mildly-moderately decreased", "45 – 59"], ["G3b", "Moderately-severely decreased", "30 – 44"], ["G4", "Severely decreased", "15 – 29"], ["G5", "Kidney failure (ESRD)", "< 15"], ] col_x = [0.4, 2.2, 8.5] col_w = [1.7, 6.2, 3.8] row_colors = [RGBColor(0xD6, 0xED, 0xF7), RGBColor(0xB8, 0xDE, 0xF0), RGBColor(0xFD, 0xF3, 0xD0), RGBColor(0xFD, 0xF3, 0xD0), RGBColor(0xFB, 0xD5, 0xB5), RGBColor(0xF8, 0xB4, 0x9D)] # Header row for i, (hdr, cx, cw) in enumerate(zip(headers, col_x, col_w)): add_rect(slide, cx, 2.9, cw, 0.38, fill_color=NAVY) add_text(slide, hdr, cx+0.05, 2.91, cw-0.1, 0.36, size=13, bold=True, color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE) for r, (row, rc) in enumerate(zip(rows, row_colors)): for i, (cell, cx, cw) in enumerate(zip(row, col_x, col_w)): add_rect(slide, cx, 3.3 + r*0.42, cw, 0.42, fill_color=rc, line_color=RGBColor(0xCC,0xCC,0xCC), line_width=0.5) add_text(slide, cell, cx+0.05, 3.31+r*0.42, cw-0.1, 0.4, size=13, bold=(i==0), color=DARK_TXT, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE) add_text(slide, "KDIGO 2012 Classification", 0.4, 6.0, 5.0, 0.4, size=11, bold=True, color=TEAL, italic=True) # ══════════════════════════════════════════════════════════════════════════════ # SLIDE 4 — EPIDEMIOLOGY # ══════════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) add_bullet_slide(slide, "Epidemiology & Incidence", [ "Prevalence of ESRD in children <15 years (Europe): 34 per million age-related population (pmarp)", "Annual incidence of ESRD: 6.5 pmarp (~1.0 per million population)", "In children/adolescents up to age 19: prevalence 80–90 pmp, incidence ~15 pmp", "Pediatric ESRD incidence is only 10% of that in young adults and <2% of older adults", "## Incidence by Age Group", "--Highest in adolescence: 8 pmarp", "--Middle childhood: 4.6 pmarp (lowest)", "--Children <5 years: 6.7 pmarp", "## Sex Distribution", "--Males affected ~50% more often than females", "--Due to predominance of urinary tract abnormalities in boys (e.g., posterior urethral valves)", "## Key Characteristics in Children", "--Predominantly genetic/congenital origin", "--Frequently associated with extrarenal abnormalities", "--Neurodevelopmental and sensory dysfunction common", ]) # ══════════════════════════════════════════════════════════════════════════════ # SLIDE 5 — ETIOLOGY / SPECTRUM # ══════════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) fill_slide_bg(slide, LIGHT_BG) add_rect(slide, 0, 0, 13.333, 1.15, fill_color=NAVY) add_rect(slide, 0, 1.15, 13.333, 0.06, fill_color=TEAL) add_text(slide, "Spectrum of Etiologies in Children", 0.35, 0.12, 12.5, 0.9, size=28, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE) # Boxes for each etiology group groups = [ ("Congenital Anomalies of Kidney & Urinary Tract (CAKUT)", "~50%", "• Renal hypoplasia/dysplasia\n• Obstructive uropathy\n• VUR-associated nephropathy\n• Posterior urethral valves", ACCENT1, RGBColor(0xE8, 0xF8, 0xFF)), ("Glomerular Disorders", "~25%", "• FSGS, MPGN\n• IgA nephropathy\n• Lupus nephritis\n• ANCA-associated GN", ACCENT2, RGBColor(0xFF, 0xF0, 0xE8)), ("Cystic & Hereditary Diseases", "~15%", "• ADPKD / ARPKD\n• Alport syndrome\n• Nephronophthisis\n• Bardet-Biedl syndrome", GREEN, RGBColor(0xE8, 0xF8, 0xEE)), ("Metabolic & Systemic Diseases", "~10%", "• Cystinosis\n• Oxalosis (hyperoxaluria Type 1)\n• Systemic vasculitis\n• Diabetic nephropathy (adolescents)", TEAL, RGBColor(0xE0, 0xF5, 0xF5)), ] positions = [(0.3, 1.35), (6.8, 1.35), (0.3, 4.05), (6.8, 4.05)] for (title, pct, body, accent, bg), (bx, by) in zip(groups, positions): add_rect(slide, bx, by, 6.2, 2.55, fill_color=bg, line_color=accent, line_width=1.5) add_rect(slide, bx, by, 6.2, 0.48, fill_color=accent) add_text(slide, title, bx+0.12, by+0.04, 4.8, 0.42, size=13, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE) add_text(slide, pct, bx+5.0, by+0.04, 1.1, 0.42, size=16, bold=True, color=WHITE, align=PP_ALIGN.RIGHT, v_anchor=MSO_ANCHOR.MIDDLE) add_text(slide, body, bx+0.18, by+0.58, 5.9, 1.9, size=13.5, bold=False, color=DARK_TXT, wrap=True) # ══════════════════════════════════════════════════════════════════════════════ # SLIDE 6 — PATHOPHYSIOLOGY # ══════════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) add_bullet_slide(slide, "Pathophysiology of CKD in Children", [ "## Glomerular Hyperfiltration", "--Surviving nephrons undergo compensatory hyperfiltration → glomerular hypertension", "--Leads to progressive glomerulosclerosis and proteinuria", "## Tubulointerstitial Fibrosis", "--Hallmark of progressive CKD regardless of initial etiology", "--TGF-β driven epithelial-mesenchymal transition and fibrosis", "## Reduced Nephron Mass", "--Congenital hypoplasia → reduced nephron endowment at birth", "--Oligomeganephronia: reduced nephron number with hypertrophied glomeruli", "## RAAS Activation", "--Angiotensin II drives fibrosis, hypertension, and proteinuria", "--ACE-I / ARB therapy: cornerstone of renoprotection", "## Pediatric-Specific Factors", "--Low GFR at birth; maturation continues through 2 years of age", "--Reduced tubular transport capacity in neonates", "--Growth hormone resistance and IGF-1 insensitivity in CKD", ]) # ══════════════════════════════════════════════════════════════════════════════ # SLIDE 7 — CLINICAL PRESENTATION & DIAGNOSIS # ══════════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) fill_slide_bg(slide, LIGHT_BG) add_rect(slide, 0, 0, 13.333, 1.15, fill_color=NAVY) add_rect(slide, 0, 1.15, 13.333, 0.06, fill_color=TEAL) add_text(slide, "Clinical Presentation & Diagnosis", 0.35, 0.12, 12.5, 0.9, size=28, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE) # Left column — symptoms add_rect(slide, 0.3, 1.35, 5.9, 5.95, fill_color=RGBColor(0xE8, 0xF8, 0xFF), line_color=ACCENT1, line_width=1) add_rect(slide, 0.3, 1.35, 5.9, 0.45, fill_color=ACCENT1) add_text(slide, "Clinical Features", 0.45, 1.37, 5.7, 0.42, size=15, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE) symptoms = ( "• Asymptomatic (incidental finding)\n" "• Failure to thrive / poor weight gain\n" "• Pallor (anemia)\n" "• Hypertension\n" "• Polyuria / polydipsia (tubular defects)\n" "• Edema / proteinuria\n" "• Bone pain / rickets (renal osteodystrophy)\n" "• Delayed puberty / growth retardation\n" "• Developmental delay / cognitive issues\n" "• Antenatal diagnosis (hydronephrosis)" ) add_text(slide, symptoms, 0.5, 1.9, 5.6, 5.3, size=14, bold=False, color=DARK_TXT, wrap=True) # Right column — investigations add_rect(slide, 6.55, 1.35, 6.5, 5.95, fill_color=RGBColor(0xE8, 0xF8, 0xEE), line_color=GREEN, line_width=1) add_rect(slide, 6.55, 1.35, 6.5, 0.45, fill_color=GREEN) add_text(slide, "Investigations", 6.7, 1.37, 6.3, 0.42, size=15, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE) investigations = ( "• Serum creatinine → eGFR (Schwartz formula)\n" " eGFR = 0.413 × Height (cm) / Creatinine (mg/dL)\n\n" "• Urinalysis: protein, RBC casts, WBC\n" "• Urine protein:creatinine ratio\n" "• CBC: anemia (normocytic/normochromic)\n" "• Electrolytes: hyperkalemia, metabolic acidosis\n" "• BUN, uric acid\n" "• Calcium, phosphate, PTH, Vitamin D\n" "• Renal ultrasound: size, echogenicity, cysts\n" "• VCUG (if VUR suspected)\n" "• Kidney biopsy (glomerular disease)\n" "• Genetic testing (hereditary nephropathies)" ) add_text(slide, investigations, 6.7, 1.9, 6.2, 5.3, size=13.5, bold=False, color=DARK_TXT, wrap=True) # ══════════════════════════════════════════════════════════════════════════════ # SLIDE 8 — GROWTH FAILURE # ══════════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) add_bullet_slide(slide, "Growth Failure in Pediatric CKD", [ "Most significant complication unique to children with CKD", "Final adult height is below 3rd percentile in up to 40% of children with CKD", "## Mechanisms", "--Growth hormone resistance: decreased GH receptor expression, reduced IGF-1 signaling", "--Metabolic acidosis: suppresses GH axis, increases protein catabolism", "--Malnutrition: inadequate caloric intake, anorexia", "--Renal osteodystrophy: disrupts growth plate integrity", "--Chronic anemia: reduced oxygen delivery to tissues", "--Glucocorticoid excess (from immunosuppression in glomerular diseases)", "## Prevention & Treatment", "--Correct metabolic acidosis with sodium bicarbonate (target HCO3 >22 mEq/L)", "--Ensure adequate nutritional intake (nasogastric / gastrostomy feeding if needed)", "--Recombinant human growth hormone (rhGH): 0.05 mg/kg/day SC", "--Indications: CKD with height <−1.88 SD (below 3rd %ile), not at transplant", "--Optimize hemoglobin and mineral-bone parameters", "--Early transplantation can restore catch-up growth", ]) # ══════════════════════════════════════════════════════════════════════════════ # SLIDE 9 — CARDIOVASCULAR COMPLICATIONS # ══════════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) fill_slide_bg(slide, LIGHT_BG) add_rect(slide, 0, 0, 13.333, 1.15, fill_color=RED) add_rect(slide, 0, 1.15, 13.333, 0.06, fill_color=ACCENT2) add_text(slide, "Cardiovascular Comorbidity in Pediatric CKD", 0.35, 0.12, 12.5, 0.9, size=26, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE) cv_items = [ ("Hypertension", "Present in >50% of children with CKD\nLeading to LVH and accelerated CV risk\nTarget BP <50th percentile for age/sex/height\nFirst-line: ACE-I / ARBs"), ("Left Ventricular Hypertrophy", "Most common structural abnormality\nPresent in 30-50% of pediatric CKD patients\nRisk factor for sudden cardiac death\nRegresses with BP control and dialysis adequacy"), ("Dyslipidemia", "Elevated triglycerides, reduced HDL\nLDL-C may be normal or elevated\nContributes to accelerated atherosclerosis"), ("Vascular Stiffness", "Increased pulse wave velocity\nEndothelial dysfunction\nAortic calcification reported even in children\nOmega-3 supplementation studied"), ] for i, (title, body) in enumerate(cv_items): col = i % 2 row = i // 2 bx = 0.3 + col * 6.5 by = 1.4 + row * 2.9 add_rect(slide, bx, by, 6.2, 2.7, fill_color=WHITE, line_color=RED, line_width=1.2) add_rect(slide, bx, by, 6.2, 0.45, fill_color=RED) add_text(slide, title, bx+0.12, by+0.04, 6.0, 0.4, size=14, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE) add_text(slide, body, bx+0.15, by+0.52, 5.9, 2.1, size=13, bold=False, color=DARK_TXT, wrap=True) # ══════════════════════════════════════════════════════════════════════════════ # SLIDE 10 — ANEMIA, BONE DISEASE & OTHER COMPLICATIONS # ══════════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) fill_slide_bg(slide, LIGHT_BG) add_rect(slide, 0, 0, 13.333, 1.15, fill_color=NAVY) add_rect(slide, 0, 1.15, 13.333, 0.06, fill_color=YELLOW) add_text(slide, "Anemia, Bone Disease & Other Complications", 0.35, 0.12, 12.5, 0.9, size=26, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE) compl = [ ("Anemia of CKD", ACCENT1, RGBColor(0xE8,0xF8,0xFF), "• Decreased EPO production by fibrotic kidney\n" "• Iron deficiency often co-exists\n" "• Target Hgb: 11–12 g/dL in children\n" "• Treatment: IV iron supplementation first\n" "• Erythropoiesis-stimulating agents (ESAs)\n" "• Darbepoetin or epoetin alfa SC/IV"), ("Mineral Bone Disease\n(CKD-MBD)", GREEN, RGBColor(0xE8,0xF8,0xEE), "• Secondary hyperparathyroidism\n" "• Hyperphosphatemia → phosphate binders\n" "• Low calcitriol → active Vitamin D supplementation\n" "• Rickets and bone deformities in children\n" "• Target PTH: 2–9× upper limit of normal\n" "• Avoid prolonged hypocalcemia"), ("Metabolic Acidosis", TEAL, RGBColor(0xE0,0xF5,0xF5), "• Occurs from GFR <25-30 mL/min/1.73 m²\n" "• Worsens growth failure and catabolism\n" "• Increases bone demineralization\n" "• Target serum HCO3 >22 mEq/L\n" "• Oral sodium bicarbonate or sodium citrate"), ("Neurocognitive & Psychosocial", ACCENT2, RGBColor(0xFF,0xF0,0xE8), "• Impaired neurodevelopment especially <5 yrs\n" "• Reduced school performance\n" "• Behavioral and emotional problems\n" "• Uremic encephalopathy in advanced CKD\n" "• Multidisciplinary psychosocial support\n" "• Cognitive monitoring essential"), ] for i, (title, accent, bg, body) in enumerate(compl): col = i % 2 row = i // 2 bx = 0.3 + col * 6.5 by = 1.35 + row * 2.95 add_rect(slide, bx, by, 6.2, 2.85, fill_color=bg, line_color=accent, line_width=1.2) add_rect(slide, bx, by, 6.2, 0.48, fill_color=accent) add_text(slide, title, bx+0.12, by+0.04, 6.0, 0.42, size=13.5, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE) add_text(slide, body, bx+0.12, by+0.56, 5.9, 2.2, size=13, bold=False, color=DARK_TXT, wrap=True) # ══════════════════════════════════════════════════════════════════════════════ # SLIDE 11 — PROGRESSION OF CKD # ══════════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) add_bullet_slide(slide, "Progression of CKD in Children", [ "Overall progression to ESRD is slower in children than adults with the same GFR", "Rate varies by underlying etiology — glomerular diseases progress faster than congenital", "## Factors Accelerating Progression", "--Proteinuria: strongest modifiable predictor — each 1 g/g increase ↑ risk 3–5×", "--Hypertension: uncontrolled BP accelerates glomerulosclerosis", "--Metabolic acidosis and hyperphosphatemia", "--Recurrent UTIs in structural anomalies (VUR)", "--Obesity and dyslipidemia in adolescents", "## Factors Associated with Slower Progression", "--Lower baseline proteinuria", "--Well-controlled blood pressure", "--CAKUT etiology (vs glomerular)", "--Female sex (in some studies)", "## Monitoring Intervals", "--eGFR: every 3–6 months (CKD G3–G4), every 1–3 months (CKD G4–G5)", "--Urine protein:creatinine ratio at every visit", "--Annual echocardiogram, growth assessment, neurodevelopmental review", ]) # ══════════════════════════════════════════════════════════════════════════════ # SLIDE 12 — MANAGEMENT PRINCIPLES # ══════════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) fill_slide_bg(slide, LIGHT_BG) add_rect(slide, 0, 0, 13.333, 1.15, fill_color=NAVY) add_rect(slide, 0, 1.15, 13.333, 0.06, fill_color=TEAL) add_text(slide, "Management Principles", 0.35, 0.12, 12.5, 0.9, size=28, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE) mgmt = [ ("Blood Pressure\nControl", "Target: <50th percentile\nACE-I/ARB first-line\nReduces proteinuria & slows progression", NAVY), ("Nutrition", "High caloric density\nProtein: 100–140% RDA\nPhosphate restriction\nNasogastric if needed", GREEN), ("Metabolic Acidosis", "Sodium bicarbonate\n1–3 mEq/kg/day\nTarget HCO3 >22 mEq/L", TEAL), ("Anemia", "IV iron first\nESA (epoetin/darbepoetin)\nTarget Hgb 11–12 g/dL", ACCENT2), ("CKD-MBD", "Phosphate binders\nActive Vitamin D\nCalcimimetics (adolescents)", GREEN), ("Growth", "Correct acidosis & nutrition\nrhGH 0.05 mg/kg/day SC\nPre-transplant if height SDS <−2", RED), ("Immunosuppression", "For glomerular diseases:\nCorticosteroids, MMF,\nCalcineurin inhibitors", ACCENT1), ("Avoid Nephrotoxins", "NSAIDs, aminoglycosides\nContrast agents\nVolume depletion", ACCENT2), ] for i, (title, body, color) in enumerate(mgmt): col = i % 4 row = i // 4 bx = 0.25 + col * 3.22 by = 1.35 + row * 2.9 add_rect(slide, bx, by, 3.05, 2.75, fill_color=WHITE, line_color=color, line_width=1.5) add_rect(slide, bx, by, 3.05, 0.5, fill_color=color) add_text(slide, title, bx+0.1, by+0.04, 2.9, 0.44, size=12.5, bold=True, color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE) add_text(slide, body, bx+0.1, by+0.57, 2.85, 2.1, size=12.5, bold=False, color=DARK_TXT, wrap=True) # ══════════════════════════════════════════════════════════════════════════════ # SLIDE 13 — RENAL REPLACEMENT THERAPY & TRANSPLANT # ══════════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) fill_slide_bg(slide, LIGHT_BG) add_rect(slide, 0, 0, 13.333, 1.15, fill_color=NAVY) add_rect(slide, 0, 1.15, 13.333, 0.06, fill_color=TEAL) add_text(slide, "Renal Replacement Therapy & Transplantation", 0.35, 0.12, 12.5, 0.9, size=25, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE) panels = [ ("Hemodialysis (HD)", ACCENT1, RGBColor(0xE8,0xF8,0xFF), "• 3-4×/week, 3-4 hrs per session\n" "• Vascular access: fistula/graft/catheter\n" "• Pediatric-specific circuits required\n" "• Kt/V ≥1.2 per session\n" "• Risk: hypotension, access infections\n" "• Daily home HD improving outcomes"), ("Peritoneal Dialysis (PD)", TEAL, RGBColor(0xE0,0xF5,0xF5), "• Preferred in young children (<5 years)\n" "• Automated (APD) or continuous\n" "• Preserves residual renal function longer\n" "• Better BP control\n" "• Risk: peritonitis, catheter complications\n" "• Allows home therapy — school attendance"), ("Kidney Transplantation", GREEN, RGBColor(0xE8,0xF8,0xEE), "• Optimal RRT for children — best quality of life\n" "• Living donor preferred (better outcomes)\n" "• Pre-emptive transplant (no prior dialysis) ideal\n" "• Immunosuppression: tacrolimus + MMF + steroid\n" "• CAKUT: evaluate bladder before transplant\n" "• Catch-up growth after transplant possible\n" "• 5-year graft survival >80% in most centers"), ] for i, (title, accent, bg, body) in enumerate(panels): bx = 0.3 + i * 4.35 add_rect(slide, bx, 1.35, 4.15, 5.95, fill_color=bg, line_color=accent, line_width=1.5) add_rect(slide, bx, 1.35, 4.15, 0.48, fill_color=accent) add_text(slide, title, bx+0.12, 1.37, 3.95, 0.44, size=14.5, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE) add_text(slide, body, bx+0.15, 1.9, 3.9, 5.3, size=13, bold=False, color=DARK_TXT, wrap=True) # ══════════════════════════════════════════════════════════════════════════════ # SLIDE 14 — SUMMARY / KEY TAKEAWAYS # ══════════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) fill_slide_bg(slide, NAVY) add_rect(slide, 0, 0, 13.333, 1.3, fill_color=TEAL) add_text(slide, "Key Takeaways", 0.45, 0.15, 12.5, 1.0, size=32, bold=True, color=WHITE, align=PP_ALIGN.LEFT, v_anchor=MSO_ANCHOR.MIDDLE) takeaways = [ ("01", "CAKUT accounts for ~50% of pediatric CKD — always investigate structural anomalies"), ("02", "Growth failure is the hallmark complication in children; rhGH is effective & indicated"), ("03", "Cardiovascular disease starts early — BP control with ACE-I/ARB is paramount"), ("04", "Correct metabolic acidosis, anemia, and MBD aggressively to slow progression"), ("05", "Peritoneal dialysis is preferred in young children; transplantation is the gold standard RRT"), ("06", "Multidisciplinary care (nephrology, nutrition, neurology, psychology) is essential"), ] for i, (num, text) in enumerate(takeaways): by = 1.55 + i * 0.9 add_rect(slide, 0.35, by, 0.7, 0.7, fill_color=TEAL) add_text(slide, num, 0.35, by+0.05, 0.7, 0.62, size=16, bold=True, color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE) add_rect(slide, 1.15, by, 11.8, 0.7, fill_color=RGBColor(0x12, 0x38, 0x72)) add_text(slide, text, 1.3, by+0.08, 11.5, 0.58, size=15, bold=False, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE) add_text(slide, "Brenner & Rector's The Kidney, 2-Volume Set | KDIGO CKD Guidelines 2012", 0.35, 7.05, 12.6, 0.4, size=11, bold=False, color=RGBColor(0x80,0xA0,0xC0), align=PP_ALIGN.CENTER) # ══════════════════════════════════════════════════════════════════════════════ # SAVE # ══════════════════════════════════════════════════════════════════════════════ out = "/tmp/workspace/ckd-pediatrics/CKD_in_Pediatrics.pptx" prs.save(out) print(f"Saved: {out}") PYEOF python /tmp/workspace/ckd-pediatrics/create_ppt.py
python -c " from pptx import Presentation prs = Presentation('/tmp/workspace/ckd-pediatrics/CKD_in_Pediatrics.pptx') print(f'Slides: {len(prs.slides)}') for i, slide in enumerate(prs.slides, 1): texts = [] for shape in slide.shapes: if shape.has_text_frame: t = shape.text_frame.text.strip() if t: texts.append(t[:60]) print(f'Slide {i}: {\" | \".join(texts[:3])}') "
CKD in Pediatrics
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Title slide |
| 2 | Presentation outline |
| 3 | KDIGO CKD staging table (G1–G5 with GFR ranges, color-coded) |
| 4 | Epidemiology - incidence by age, sex distribution |
| 5 | Etiology spectrum in 4 boxes: CAKUT (~50%), Glomerular (~25%), Cystic/Hereditary (~15%), Metabolic/Systemic (~10%) |
| 6 | Pathophysiology - hyperfiltration, fibrosis, RAAS, pediatric-specific factors |
| 7 | Clinical presentation (left) + investigations including Schwartz eGFR formula (right) |
| 8 | Growth failure - mechanisms + rhGH treatment |
| 9 | Cardiovascular complications - HTN, LVH, dyslipidemia, vascular stiffness |
| 10 | Anemia, CKD-MBD, metabolic acidosis, neurocognitive complications |
| 11 | Progression - risk factors, monitoring intervals |
| 12 | Management grid - 8 categories (BP, nutrition, acidosis, anemia, MBD, growth, immunosuppression, nephrotoxin avoidance) |
| 13 | RRT - hemodialysis vs peritoneal dialysis vs transplantation |
| 14 | 6 key takeaways on dark navy background |