PPT on approach to Hematuria in pediatrics
ls /home/daytona/workspace/ 2>/dev/null || echo "workspace empty or missing"
mkdir -p /home/daytona/workspace/hematuria-peds-ppt
~/hematuria-peds-ppt/build.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Approach to Hematuria in Pediatrics";
pres.author = "Orris Medical Education";
// ── Color palette ──────────────────────────────────────────────────────────
const C = {
navy: "0D2B55", // dominant dark
teal: "1A7A8A", // section accent
gold: "E8A020", // highlight accent
cream: "F5F0E8", // light background
white: "FFFFFF",
red: "C0392B", // gross hematuria
blue: "2471A3", // microscopic hematuria
lightTeal: "D4EEF1",
lightGold: "FCF0D5",
midGray: "5D6D7E",
lightGray: "ECF0F1",
};
// ── Helper: section banner ─────────────────────────────────────────────────
function addSectionBanner(slide, label) {
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.35, fill: { color: C.gold }, line: { color: C.gold } });
slide.addText(label, { x: 0, y: 0, w: 10, h: 0.35, fontSize: 9, bold: true, color: C.navy, align: "center", valign: "middle", margin: 0 });
}
// ── Helper: slide title bar ────────────────────────────────────────────────
function addTitleBar(slide, title, sub) {
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0.35, w: 10, h: 0.92, fill: { color: C.navy }, line: { color: C.navy } });
slide.addText(title, { x: 0.3, y: 0.35, w: 9.4, h: 0.6, fontSize: 22, bold: true, color: C.white, valign: "bottom", margin: 0 });
if (sub) {
slide.addText(sub, { x: 0.3, y: 0.95, w: 9.4, h: 0.32, fontSize: 12, color: C.gold, valign: "top", margin: 0 });
}
}
// ── Helper: footer ─────────────────────────────────────────────────────────
function addFooter(slide, note) {
slide.addShape(pres.ShapeType.rect, { x: 0, y: 5.35, w: 10, h: 0.275, fill: { color: C.navy }, line: { color: C.navy } });
slide.addText(note || "Campbell-Walsh-Wein Urology | Pediatric Nephrology Reference", {
x: 0.3, y: 5.35, w: 9.4, h: 0.275, fontSize: 8, color: C.gold, valign: "middle", margin: 0
});
}
// ── Helper: colored box ────────────────────────────────────────────────────
function addBox(slide, x, y, w, h, fill, line) {
slide.addShape(pres.ShapeType.rect, { x, y, w, h, fill: { color: fill }, line: { color: line || fill } });
}
// ── Helper: bullet block ───────────────────────────────────────────────────
function bulletsText(items, opts = {}) {
return items.map((t, i) => ({
text: t,
options: { bullet: { code: "2022", indent: 10 }, breakLine: i < items.length - 1, ...opts }
}));
}
// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 1 — Title
// ══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
// Full dark background
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.navy }, line: { color: C.navy } });
// Decorative teal side panel
s.addShape(pres.ShapeType.rect, { x: 7.6, y: 0, w: 2.4, h: 5.625, fill: { color: C.teal }, line: { color: C.teal } });
// Gold accent bar
s.addShape(pres.ShapeType.rect, { x: 0, y: 1.5, w: 7.6, h: 0.08, fill: { color: C.gold }, line: { color: C.gold } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 4.0, w: 7.6, h: 0.08, fill: { color: C.gold }, line: { color: C.gold } });
s.addText("APPROACH TO", { x: 0.5, y: 0.6, w: 7, h: 0.55, fontSize: 18, bold: false, color: C.gold, charSpacing: 6 });
s.addText("HEMATURIA", { x: 0.5, y: 1.1, w: 7, h: 1.1, fontSize: 52, bold: true, color: C.white, charSpacing: 2 });
s.addText("IN PEDIATRICS", { x: 0.5, y: 2.15, w: 7, h: 0.7, fontSize: 26, bold: false, color: C.lightTeal, charSpacing: 4 });
s.addText([
{ text: "Definition • Epidemiology • Classification", options: { breakLine: true } },
{ text: "Causes • Evaluation • Management", options: {} }
], { x: 0.5, y: 3.0, w: 7, h: 0.8, fontSize: 13, color: C.lightGray, italic: true });
// Right panel content
s.addText("KEY TOPICS", { x: 7.7, y: 0.4, w: 2.2, h: 0.4, fontSize: 10, bold: true, color: C.white, align: "center", charSpacing: 3 });
const topics = ["Definition", "Epidemiology", "Causes", "History & Exam", "Investigations", "Gross vs Micro", "Glomerular vs Non-", "Management", "Red Flags", "Referral"];
topics.forEach((t, i) => {
s.addText(`${i + 1}. ${t}`, { x: 7.65, y: 0.9 + i * 0.42, w: 2.3, h: 0.38, fontSize: 9.5, color: C.white, align: "left" });
});
}
// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 2 — Definition & Epidemiology
// ══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.cream }, line: { color: C.cream } });
addSectionBanner(s, "DEFINITION & EPIDEMIOLOGY");
addTitleBar(s, "What is Hematuria?", "Definitions and key epidemiological facts");
// Two cards
// Left card - gross
addBox(s, 0.3, 1.45, 4.5, 1.4, C.red, C.red);
s.addText("GROSS HEMATURIA", { x: 0.3, y: 1.45, w: 4.5, h: 0.4, fontSize: 12, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
addBox(s, 0.3, 1.85, 4.5, 1.0, "FDDBD8", "FDDBD8");
s.addText([
{ text: "• Visible red or tea-colored urine", options: { breakLine: true } },
{ text: "• Confirmed by dipstick + microscopy", options: { breakLine: true } },
{ text: "• ~0.13% of pediatric ED visits", options: {} }
], { x: 0.4, y: 1.88, w: 4.3, h: 0.95, fontSize: 11, color: C.navy });
// Right card - microscopic
addBox(s, 5.2, 1.45, 4.5, 1.4, C.blue, C.blue);
s.addText("MICROSCOPIC HEMATURIA", { x: 5.2, y: 1.45, w: 4.5, h: 0.4, fontSize: 12, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
addBox(s, 5.2, 1.85, 4.5, 1.0, "D4E8F7", "D4E8F7");
s.addText([
{ text: "• Yellow urine, dipstick positive for blood", options: { breakLine: true } },
{ text: "• >5 RBCs/hpf on freshly spun sample", options: { breakLine: true } },
{ text: "• ~1% of school-age children", options: {} }
], { x: 5.3, y: 1.88, w: 4.3, h: 0.95, fontSize: 11, color: C.navy });
// Epidemiology key points
addBox(s, 0.3, 3.0, 9.4, 1.5, C.lightTeal, C.teal);
s.addText("EPIDEMIOLOGY AT A GLANCE", { x: 0.3, y: 3.0, w: 9.4, h: 0.35, fontSize: 11, bold: true, color: C.teal, align: "center", valign: "middle", margin: 4 });
s.addText([
{ text: "Microscopic hematuria: ~1% prevalence in school-age children (Dodge et al., 1976; Vehaskari et al., 1979)", options: { breakLine: true } },
{ text: "<25% persist on repeat testing; most resolve spontaneously within 1 year • Definitive diagnosis established in <30% of cases", options: { breakLine: true } },
{ text: "Gross hematuria: easier to diagnose — underlying cause identified in majority of cases", options: {} }
], { x: 0.5, y: 3.35, w: 9.0, h: 1.1, fontSize: 10.5, color: C.navy });
addFooter(s, "Campbell-Walsh-Wein Urology, Pediatric Nephrology Chapter | BOX 21.1");
}
// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 3 — Causes of Hematuria (Gross)
// ══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.cream }, line: { color: C.cream } });
addSectionBanner(s, "ETIOLOGY");
addTitleBar(s, "Causes of Gross Hematuria in Children", "BOX 21.1 – Campbell-Walsh-Wein Urology");
const grossCauses = [
["UTI / Cystitis", "Most common cause — 26% of cases"],
["Perineal Irritation", "11% of cases"],
["Trauma", "7% — CT abdomen often needed"],
["Meatal Stenosis / Ulceration", "7% in boys"],
["Coagulation Abnormalities", "Bleeding diathesis — 3%"],
["Nephrolithiasis / Hypercalciuria", "Flank pain, family history of stones"],
["Glomerulonephritis", "Tea-colored urine, HTN, edema, proteinuria"],
["Wilms Tumor / Bladder Tumor", "Abdominal mass in young children"],
["Renal Vein Thrombosis", "Neonates, hypercoagulable states"],
["Nutcracker Syndrome", "Left renal vein compression"],
["Sickle Cell Disease/Trait", "Papillary necrosis, sickling"],
["Benign Idiopathic Urethrorrhagia", "Prepubertal boys, blood spots in underwear"],
];
const cols = [grossCauses.slice(0, 6), grossCauses.slice(6)];
cols.forEach((col, ci) => {
col.forEach((item, ri) => {
const x = ci === 0 ? 0.25 : 5.15;
const y = 1.45 + ri * 0.64;
const bg = ri % 2 === 0 ? "FFFFFF" : C.lightGray;
addBox(s, x, y, 4.7, 0.58, bg, "D5D8DC");
s.addText(item[0], { x: x + 0.1, y: y + 0.04, w: 4.5, h: 0.28, fontSize: 10.5, bold: true, color: C.navy, valign: "top" });
s.addText(item[1], { x: x + 0.1, y: y + 0.3, w: 4.5, h: 0.24, fontSize: 9, color: C.midGray, valign: "top" });
});
});
addFooter(s, "Campbell-Walsh-Wein Urology | Diven & Travis, 2000");
}
// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 4 — Causes of Microscopic Hematuria
// ══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.cream }, line: { color: C.cream } });
addSectionBanner(s, "ETIOLOGY");
addTitleBar(s, "Causes of Microscopic Hematuria", "Broad differential — definitive diagnosis in <30%");
const microGroups = [
{ label: "Glomerular", color: C.teal, items: ["Thin Basement Membrane Disease", "IgA Nephropathy", "Alport Syndrome", "Post-infectious GN", "Lupus Nephritis", "MPGN"] },
{ label: "Non-Glomerular", color: C.blue, items: ["Hypercalciuria / Nephrolithiasis", "UTI / Pyelonephritis", "Congenital Anomalies (CAKUT)", "Exercise-induced", "Drugs / Interstitial Nephritis", "Sickle Cell Disease/Trait"] },
{ label: "Other", color: C.midGray, items: ["Transient (fever, vigorous exercise)", "Benign Familial Hematuria", "Protein overload syndromes", "Hemolysis / Rhabdomyolysis", "Hypergammaglobulinemia"] },
];
microGroups.forEach((grp, gi) => {
const x = 0.2 + gi * 3.27;
addBox(s, x, 1.42, 3.0, 0.44, grp.color, grp.color);
s.addText(grp.label, { x, y: 1.42, w: 3.0, h: 0.44, fontSize: 12, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
grp.items.forEach((item, ii) => {
const bg = ii % 2 === 0 ? "FFFFFF" : C.lightGray;
addBox(s, x, 1.86 + ii * 0.56, 3.0, 0.52, bg, "D5D8DC");
s.addText(item, { x: x + 0.12, y: 1.9 + ii * 0.56, w: 2.8, h: 0.44, fontSize: 10, color: C.navy, valign: "middle" });
});
});
addFooter(s, "Campbell-Walsh-Wein Urology | Pediatric Nephrology BOX 21.1");
}
// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 5 — History Taking
// ══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.cream }, line: { color: C.cream } });
addSectionBanner(s, "CLINICAL EVALUATION");
addTitleBar(s, "History Taking", "A systematic and detailed history guides the entire work-up");
const histBlocks = [
{
title: "CHIEF COMPLAINT",
color: C.navy,
items: ["Duration: acute vs. chronic/intermittent", "Gross vs. microscopic (dipstick vs. naked eye)", "Color: red (lower tract) vs. tea/cola (glomerular)", "Timing: initial, terminal, or total stream"]
},
{
title: "ASSOCIATED SYMPTOMS",
color: C.teal,
items: ["Fever → UTI, post-infectious GN", "Dysuria, frequency → UTI", "Flank / abdominal pain → stones, trauma, thrombosis", "Rash, joint pain → HSP, SLE", "Headache, visual changes, edema → hypertension / nephritic syndrome", "Weight gain, periorbital puffiness → nephrotic"]
},
{
title: "FAMILY HISTORY",
color: C.blue,
items: ["Hematuria (thin BM disease, Alport)", "Hearing loss (Alport syndrome)", "Nephrolithiasis (urolithiasis)", "Sickle cell disease / trait", "Renal disease / ESRD", "Bleeding disorders / coagulopathy"]
},
{
title: "MEDICAL / DRUG HISTORY",
color: C.midGray,
items: ["Recent throat / skin infection → ASO / APSGN", "Recent URTI → IgA nephropathy", "Vigorous exercise → exercise hematuria", "Medications (NSAIDs, cyclophosphamide)", "History of trauma (recent or remote)"]
}
];
histBlocks.forEach((blk, bi) => {
const x = bi < 2 ? 0.2 + bi * 4.9 : 0.2 + (bi - 2) * 4.9;
const y = bi < 2 ? 1.45 : 3.35;
addBox(s, x, y, 4.6, 0.38, blk.color, blk.color);
s.addText(blk.title, { x, y, w: 4.6, h: 0.38, fontSize: 10.5, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
addBox(s, x, y + 0.38, 4.6, 1.42, "FFFFFF", "D5D8DC");
s.addText(bulletsText(blk.items, { fontSize: 9.5, color: C.navy }), { x: x + 0.1, y: y + 0.42, w: 4.4, h: 1.35 });
});
addFooter(s, "Campbell-Walsh-Wein Urology | Pediatric Nephrology Chapter");
}
// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 6 — Physical Examination
// ══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.cream }, line: { color: C.cream } });
addSectionBanner(s, "CLINICAL EVALUATION");
addTitleBar(s, "Physical Examination", "Findings that direct the differential diagnosis");
const examItems = [
{ icon: "BP", label: "Blood Pressure", detail: "Hypertension → glomerulonephritis, renal parenchymal disease, renal artery involvement" },
{ icon: "WT", label: "Weight / Edema", detail: "Peripheral edema, periorbital puffiness, ascites → nephritic or nephrotic syndrome" },
{ icon: "SKN", label: "Skin / Rash", detail: "Palpable purpura (legs, buttocks) → IgA Vasculitis (HSP) | Butterfly rash → SLE" },
{ icon: "JNT", label: "Joints", detail: "Arthritis / arthralgia → HSP, SLE, systemic vasculitis" },
{ icon: "ABD", label: "Abdomen / Flanks", detail: "Abdominal mass → Wilms tumor | Flank tenderness → pyelonephritis, stone, trauma | Renal bruit → AV fistula" },
{ icon: "EAR", label: "Hearing (ENT)", detail: "Sensorineural hearing loss → Alport syndrome (X-linked COL4A5 mutation)" },
{ icon: "GEN", label: "Genitalia / Perineum", detail: "Perineal irritation, meatal abnormalities, urethral discharge → local causes of gross hematuria" },
{ icon: "EYE", label: "Eyes", detail: "Anterior lenticonus → Alport syndrome | Retinal changes → severe hypertension or SLE" },
];
examItems.forEach((item, i) => {
const col = i < 4 ? 0 : 1;
const row = i % 4;
const x = 0.2 + col * 5.0;
const y = 1.45 + row * 1.0;
addBox(s, x, y, 0.72, 0.72, C.teal, C.teal);
s.addText(item.icon, { x, y, w: 0.72, h: 0.72, fontSize: 8, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
addBox(s, x + 0.72, y, 4.1, 0.72, i % 2 === 0 ? "FFFFFF" : C.lightGray, "D5D8DC");
s.addText(item.label, { x: x + 0.82, y: y + 0.04, w: 3.9, h: 0.28, fontSize: 10.5, bold: true, color: C.navy });
s.addText(item.detail, { x: x + 0.82, y: y + 0.32, w: 3.9, h: 0.38, fontSize: 9, color: C.midGray });
});
addFooter(s, "Campbell-Walsh-Wein Urology | Pediatric Nephrology Chapter");
}
// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 7 — Urinalysis & Urine Microscopy
// ══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.cream }, line: { color: C.cream } });
addSectionBanner(s, "INVESTIGATIONS — STEP 1");
addTitleBar(s, "Urinalysis & Urine Microscopy", "The single most critical step in evaluation of hematuria");
// Central importance box
addBox(s, 0.25, 1.45, 9.5, 0.55, C.lightGold, C.gold);
s.addText("ALWAYS examine a FRESHLY VOIDED urine sample with microscopic assessment — this is the critical first step", {
x: 0.35, y: 1.45, w: 9.3, h: 0.55, fontSize: 11, bold: true, color: C.navy, valign: "middle", italic: true
});
const uaRows = [
{ test: "Dipstick Heme +, no RBCs on microscopy", interpretation: "Hemoglobinuria (hemolysis) or Myoglobinuria (rhabdomyolysis)", color: "FFE8D4" },
{ test: "Normal RBC morphology (isomorphic)", interpretation: "Non-glomerular origin → lower urinary tract, stones, infection, trauma", color: "D4EEF1" },
{ test: "Dysmorphic / crenated RBCs (acanthocytes)", interpretation: "Glomerular origin → GN, thin BM disease, Alport", color: "D4F0D4" },
{ test: "RBC casts in sediment", interpretation: "PATHOGNOMONIC of glomerulonephritis — defines nephritic syndrome", color: "FCF0D5" },
{ test: "WBCs / bacteria", interpretation: "Urinary tract infection → send urine culture", color: "ECDDF5" },
{ test: "Crystals (calcium oxalate, uric acid)", interpretation: "Urolithiasis / hypercalciuria — consider 24h urine calcium", color: "D4EEF1" },
{ test: "Proteinuria (dipstick 2+ or higher)", interpretation: "Glomerular disease — quantify with urine protein:creatinine ratio", color: "FFE8D4" },
];
uaRows.forEach((row, i) => {
addBox(s, 0.25, 2.08 + i * 0.49, 4.5, 0.45, row.color, "C0C0C0");
s.addText(row.test, { x: 0.35, y: 2.1 + i * 0.49, w: 4.3, h: 0.41, fontSize: 9.5, bold: true, color: C.navy, valign: "middle" });
addBox(s, 4.75, 2.08 + i * 0.49, 5.0, 0.45, row.color, "C0C0C0");
s.addText(row.interpretation, { x: 4.85, y: 2.1 + i * 0.49, w: 4.8, h: 0.41, fontSize: 9.5, color: C.navy, valign: "middle" });
});
s.addText("FINDING", { x: 0.25, y: 1.98, w: 4.5, h: 0.1, fontSize: 9, bold: true, color: C.teal, align: "center" });
s.addText("INTERPRETATION", { x: 4.75, y: 1.98, w: 5.0, h: 0.1, fontSize: 9, bold: true, color: C.teal, align: "center" });
addFooter(s, "Campbell-Walsh-Wein Urology | Feld et al., 1998");
}
// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 8 — Glomerular vs Non-Glomerular Hematuria
// ══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.cream }, line: { color: C.cream } });
addSectionBanner(s, "CLINICAL DIFFERENTIATION");
addTitleBar(s, "Glomerular vs. Non-Glomerular Hematuria", "Key clinical and laboratory distinguishing features");
const rows = [
["Feature", "Glomerular", "Non-Glomerular"],
["Urine color", "Tea / cola / brown colored", "Red / pink / bright red"],
["RBC morphology", "Dysmorphic, acanthocytes", "Isomorphic (normal)"],
["RBC casts", "Present (pathognomonic)", "Absent"],
["Proteinuria", "Often significant (2+ or more)", "Absent or trace"],
["Hypertension", "Common", "Rare (unless underlying cause)"],
["Edema", "May be present", "Absent"],
["Pain", "Rarely painful", "Often painful (stones, UTI, trauma)"],
["Common causes", "GN, thin BM disease, Alport, IgA", "UTI, stones, trauma, tumor"],
];
rows.forEach((row, ri) => {
const isHeader = ri === 0;
const bg0 = isHeader ? C.navy : (ri % 2 === 0 ? "FFFFFF" : C.lightGray);
const bg1 = isHeader ? C.red : (ri % 2 === 0 ? "FDDBD8" : "FADBD8");
const bg2 = isHeader ? C.teal : (ri % 2 === 0 ? C.lightTeal : "C8E4EA");
const fsize = isHeader ? 10.5 : 10;
const textCol = isHeader ? C.white : C.navy;
const y = 1.42 + ri * 0.46;
addBox(s, 0.2, y, 2.8, 0.44, bg0, "C0C0C0");
addBox(s, 3.0, y, 3.3, 0.44, bg1, "C0C0C0");
addBox(s, 6.3, y, 3.45, 0.44, bg2, "C0C0C0");
s.addText(row[0], { x: 0.28, y: y + 0.04, w: 2.65, h: 0.36, fontSize: fsize, bold: isHeader, color: textCol, valign: "middle" });
s.addText(row[1], { x: 3.08, y: y + 0.04, w: 3.15, h: 0.36, fontSize: fsize, bold: isHeader, color: textCol, valign: "middle" });
s.addText(row[2], { x: 6.38, y: y + 0.04, w: 3.28, h: 0.36, fontSize: fsize, bold: isHeader, color: textCol, valign: "middle" });
});
addFooter(s, "Campbell-Walsh-Wein Urology | Pediatric Nephrology Chapter");
}
// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 9 — Laboratory Investigations
// ══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.cream }, line: { color: C.cream } });
addSectionBanner(s, "INVESTIGATIONS — STEP 2");
addTitleBar(s, "Laboratory Investigations", "Tailored to history, examination, and urinalysis findings");
// 3-column approach
const labCols = [
{
title: "INITIAL WORKUP\n(ALL patients)",
color: C.navy,
items: [
"Urinalysis with microscopy",
"Urine culture (if UTI suspected)",
"Urine protein:creatinine ratio",
"Blood pressure measurement",
"Renal ultrasonography"
]
},
{
title: "GLOMERULAR PANEL\n(if glomerular features)",
color: C.teal,
items: [
"Serum creatinine, electrolytes, BUN",
"Serum albumin",
"CBC with differential",
"C3 and C4 complement levels",
"ASO / anti-DNase B titres (APSGN)",
"ANA screening (if SLE suspected)",
"ANCA (if vasculitis suspected)"
]
},
{
title: "UROLOGICAL PANEL\n(if non-glomerular features)",
color: C.blue,
items: [
"24h urine calcium (hypercalciuria)",
"Spot urine calcium:creatinine ratio",
"Urine culture and sensitivity",
"Serum uric acid",
"Sickle cell screen (if indicated)",
"PT / PTT / bleeding time (coagulopathy)",
"CT KUB (stone protocol if needed)"
]
}
];
labCols.forEach((col, ci) => {
const x = 0.2 + ci * 3.27;
addBox(s, x, 1.42, 3.0, 0.72, col.color, col.color);
s.addText(col.title, { x: x + 0.05, y: 1.42, w: 2.9, h: 0.72, fontSize: 10, bold: true, color: C.white, align: "center", valign: "middle" });
col.items.forEach((item, ii) => {
const bg = ii % 2 === 0 ? "FFFFFF" : C.lightGray;
addBox(s, x, 2.14 + ii * 0.48, 3.0, 0.46, bg, "D5D8DC");
s.addText("• " + item, { x: x + 0.1, y: 2.18 + ii * 0.48, w: 2.8, h: 0.38, fontSize: 9.5, color: C.navy, valign: "middle" });
});
});
addFooter(s, "Campbell-Walsh-Wein Urology | Pediatric Nephrology Chapter");
}
// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 10 — Imaging
// ══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.cream }, line: { color: C.cream } });
addSectionBanner(s, "INVESTIGATIONS — STEP 3");
addTitleBar(s, "Imaging in Pediatric Hematuria", "First-line modality: renal ultrasonography (no radiation)");
const imgData = [
{
modality: "Renal Ultrasound",
color: C.teal,
badge: "FIRST LINE",
badgeColor: C.gold,
indications: "All children with gross hematuria, suspected stones, masses, structural anomalies, or glomerular disease",
detects: "Stones, hydronephrosis, CAKUT, cystic kidneys (PKD), renal masses, renal vein thrombosis"
},
{
modality: "CT Abdomen/Pelvis",
color: C.navy,
badge: "TRAUMA / STONE",
badgeColor: C.red,
indications: "Gross hematuria + trauma | Suspected nephrolithiasis (non-contrast CT) | ≥50 RBC/hpf after trauma",
detects: "Renal lacerations, contusions, vascular injury, stone location and size, tumor extent"
},
{
modality: "VCUG",
color: C.blue,
badge: "STRUCTURAL",
badgeColor: C.blue,
indications: "Recurrent UTI with structural concern, VUR evaluation, bladder outflow obstruction",
detects: "Vesicoureteral reflux grade, posterior urethral valves, bladder diverticula"
},
{
modality: "Cystoscopy",
color: C.midGray,
badge: "PERSISTENT",
badgeColor: C.midGray,
indications: "Persistent gross hematuria without identifiable cause after US + labs",
detects: "Bladder lesions, bleeding sites, ureteral orifice abnormalities; rarely needed in children"
}
];
imgData.forEach((item, i) => {
const x = i < 2 ? 0.2 + i * 4.9 : 0.2 + (i - 2) * 4.9;
const y = i < 2 ? 1.42 : 3.4;
addBox(s, x, y, 4.6, 0.38, item.color, item.color);
s.addText(item.modality, { x: x + 0.08, y, w: 3.4, h: 0.38, fontSize: 11, bold: true, color: C.white, valign: "middle" });
addBox(s, x + 3.5, y + 0.06, 1.0, 0.26, item.badgeColor, item.badgeColor);
s.addText(item.badge, { x: x + 3.5, y: y + 0.06, w: 1.0, h: 0.26, fontSize: 7.5, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
addBox(s, x, y + 0.38, 4.6, 1.58, "FFFFFF", "D5D8DC");
s.addText("Indicated when:", { x: x + 0.1, y: y + 0.42, w: 4.4, h: 0.24, fontSize: 9.5, bold: true, color: C.teal });
s.addText(item.indications, { x: x + 0.1, y: y + 0.62, w: 4.4, h: 0.58, fontSize: 9, color: C.navy });
s.addText("Detects:", { x: x + 0.1, y: y + 1.18, w: 4.4, h: 0.22, fontSize: 9.5, bold: true, color: C.teal });
s.addText(item.detects, { x: x + 0.1, y: y + 1.38, w: 4.4, h: 0.5, fontSize: 9, color: C.midGray });
});
addFooter(s, "Harriet Lane Handbook 23e | Campbell-Walsh-Wein Urology");
}
// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 11 — Age-Based Glomerular Disease
// ══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.cream }, line: { color: C.cream } });
addSectionBanner(s, "GLOMERULAR CAUSES — AGE-BASED APPROACH");
addTitleBar(s, "Glomerular Disease by Age Group", "BOX 21.3 – Campbell-Walsh-Wein Urology");
const ageGroups = [
{
label: "< 1 YEAR",
color: C.red,
diseases: [
"Congenital infections",
"Diffuse mesangial sclerosis",
"Congenital nephrotic syndrome",
"Infantile nephrotic syndrome",
"Denys-Drash syndrome",
"Frasier syndrome",
"Genetic renal diseases",
]
},
{
label: "1 – 10 YEARS",
color: C.teal,
diseases: [
"Post-streptococcal GN (APSGN)",
"Minimal Change Nephrotic Syndrome",
"Focal Segmental Glomerulosclerosis",
"IgA Vasculitis (HSP)",
"Hemolytic Uremic Syndrome",
"Alport Syndrome",
"Thin BM nephropathy",
]
},
{
label: "≥ 7 YEARS",
color: C.navy,
diseases: [
"Systemic Lupus Erythematosus",
"Systemic Vasculitis / ANCA",
"IgA Nephropathy",
"Membranoproliferative GN",
"Membranous Nephropathy",
"Crescentic (Rapidly Progressive) GN",
"Secondary FSGS",
]
}
];
ageGroups.forEach((grp, gi) => {
const x = 0.2 + gi * 3.27;
addBox(s, x, 1.42, 3.0, 0.52, grp.color, grp.color);
s.addText(grp.label, { x, y: 1.42, w: 3.0, h: 0.52, fontSize: 14, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
grp.diseases.forEach((d, di) => {
const bg = di % 2 === 0 ? "FFFFFF" : C.lightGray;
addBox(s, x, 1.94 + di * 0.52, 3.0, 0.5, bg, "D5D8DC");
s.addText("• " + d, { x: x + 0.1, y: 1.98 + di * 0.52, w: 2.8, h: 0.42, fontSize: 10, color: C.navy, valign: "middle" });
});
});
addFooter(s, "Campbell-Walsh-Wein Urology BOX 21.3 — Common Age Ranges for Glomerular Diseases");
}
// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 12 — Approach Algorithm (Flowchart-style)
// ══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: "1A2A3A" }, line: { color: "1A2A3A" } });
addSectionBanner(s, "DIAGNOSTIC ALGORITHM");
s.addText("Stepwise Approach to Hematuria in Pediatrics", { x: 0.2, y: 0.35, w: 9.6, h: 0.72, fontSize: 20, bold: true, color: C.white, valign: "middle" });
// Step boxes
const steps = [
{ num: "1", label: "CONFIRM HEMATURIA", sub: "UA + urine microscopy (freshly voided)\n>5 RBC/hpf on 2+ occasions", color: C.teal, x: 0.2, y: 1.15 },
{ num: "2", label: "RULE OUT PSEUDOHEMATURIA", sub: "Dipstick+ but no RBCs → Hb/Mb\nDrugs, foods (beets, rifampicin)", color: C.midGray, x: 3.55, y: 1.15 },
{ num: "3", label: "GLOMERULAR vs NON-GLOMERULAR", sub: "RBC morphology, casts, proteinuria,\nurine color, hypertension", color: C.navy, x: 6.9, y: 1.15 },
];
steps.forEach(st => {
addBox(s, st.x, st.y, 3.1, 1.5, st.color, st.color);
s.addText(st.num, { x: st.x, y: st.y, w: 0.5, h: 0.5, fontSize: 14, bold: true, color: C.gold, align: "center", valign: "middle" });
s.addText(st.label, { x: st.x + 0.08, y: st.y + 0.5, w: 2.94, h: 0.36, fontSize: 10, bold: true, color: C.white, align: "center" });
s.addText(st.sub, { x: st.x + 0.1, y: st.y + 0.85, w: 2.9, h: 0.6, fontSize: 8.5, color: C.lightGray, align: "center" });
});
// Arrows
s.addShape(pres.ShapeType.rightArrow, { x: 3.3, y: 1.6, w: 0.3, h: 0.5, fill: { color: C.gold }, line: { color: C.gold } });
s.addShape(pres.ShapeType.rightArrow, { x: 6.65, y: 1.6, w: 0.3, h: 0.5, fill: { color: C.gold }, line: { color: C.gold } });
// Step 4 & 5 side by side
addBox(s, 0.2, 2.85, 4.6, 2.4, C.teal, C.teal);
s.addText("4 GLOMERULAR WORKUP", { x: 0.25, y: 2.85, w: 4.5, h: 0.38, fontSize: 10.5, bold: true, color: C.white, valign: "middle" });
const gl4 = ["C3, C4 complement levels", "ASO / anti-DNase B", "ANA, ANCA", "Serum Cr, albumin, CBC", "Renal biopsy if indicated", "Refer pediatric nephrology"];
gl4.forEach((item, i) => {
s.addText("• " + item, { x: 0.35, y: 3.28 + i * 0.33, w: 4.3, h: 0.3, fontSize: 9.5, color: C.white });
});
addBox(s, 5.15, 2.85, 4.6, 2.4, C.blue, C.blue);
s.addText("5 NON-GLOMERULAR WORKUP", { x: 5.2, y: 2.85, w: 4.5, h: 0.38, fontSize: 10.5, bold: true, color: C.white, valign: "middle" });
const ng5 = ["Urine culture (rule out UTI)", "24h urine calcium / Ca:Cr ratio", "Renal ultrasound (first-line imaging)", "CT scan if trauma or stones suspected", "Cystoscopy (persistent unexplained)", "Refer urology if structural cause"];
ng5.forEach((item, i) => {
s.addText("• " + item, { x: 5.25, y: 3.28 + i * 0.33, w: 4.35, h: 0.3, fontSize: 9.5, color: C.white });
});
// Down arrows
s.addShape(pres.ShapeType.downArrow, { x: 2.4, y: 2.6, w: 0.5, h: 0.28, fill: { color: C.gold }, line: { color: C.gold } });
s.addShape(pres.ShapeType.downArrow, { x: 7.1, y: 2.6, w: 0.5, h: 0.28, fill: { color: C.gold }, line: { color: C.gold } });
addFooter(s, "Campbell-Walsh-Wein Urology | Pediatric Nephrology Reference");
}
// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 13 — Specific Conditions: APSGN, IgA, HSP
// ══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.cream }, line: { color: C.cream } });
addSectionBanner(s, "KEY GLOMERULAR CONDITIONS");
addTitleBar(s, "Common Glomerular Causes in Children", "APSGN • IgA Nephropathy • IgA Vasculitis (HSP)");
const conditions = [
{
name: "APSGN",
full: "Acute Post-Streptococcal GN",
color: C.teal,
age: "1–10 years",
features: ["Tea-colored urine (nephritis)", "Hypertension, edema", "Preceding throat (1–3 wks) or skin (3–6 wks) infection", "↓ C3, normal C4", "↑ ASO / anti-DNase B titers"],
management: "Supportive: antihypertensives, diuretics, salt restriction. Penicillin if active strep. Self-limiting."
},
{
name: "IgA Nephropathy",
full: "Berger Disease",
color: C.blue,
age: "Older children / teens",
features: ["Synpharyngitic gross hematuria (during URTI)", "Recurrent episodes of gross hematuria", "Normal complement levels", "Biopsy: mesangial IgA deposits", "Variable proteinuria"],
management: "ACE inhibitor if proteinuria. Omega-3, tonsillectomy debated. Immunosuppression for progressive disease."
},
{
name: "IgA Vasculitis",
full: "Henoch-Schonlein Purpura (HSP)",
color: C.red,
age: "2–10 years",
features: ["Palpable purpura (legs, buttocks)", "Arthritis / arthralgia", "Abdominal pain", "Renal involvement: hematuria ± proteinuria", "Normal platelets / coagulation"],
management: "Supportive. Steroids for severe abdominal pain / arthritis. Nephrology referral if significant nephritis."
}
];
conditions.forEach((cond, ci) => {
const x = 0.2 + ci * 3.27;
addBox(s, x, 1.42, 3.0, 0.55, cond.color, cond.color);
s.addText(cond.name, { x, y: 1.42, w: 3.0, h: 0.3, fontSize: 12.5, bold: true, color: C.white, align: "center", valign: "middle" });
s.addText(cond.full, { x, y: 1.7, w: 3.0, h: 0.24, fontSize: 8.5, color: C.white, align: "center", italic: true });
addBox(s, x, 1.97, 3.0, 0.25, C.lightGold, C.gold);
s.addText("Age: " + cond.age, { x, y: 1.97, w: 3.0, h: 0.25, fontSize: 9, bold: true, color: C.navy, align: "center", valign: "middle" });
s.addText("Key Features:", { x: x + 0.1, y: 2.25, w: 2.8, h: 0.24, fontSize: 9.5, bold: true, color: cond.color });
cond.features.forEach((f, fi) => {
s.addText("• " + f, { x: x + 0.1, y: 2.48 + fi * 0.3, w: 2.8, h: 0.27, fontSize: 9, color: C.navy });
});
addBox(s, x, 4.98, 3.0, 0.38, cond.color, cond.color);
s.addText("Rx: " + cond.management.substring(0, 70) + "...", { x: x + 0.05, y: 4.98, w: 2.9, h: 0.38, fontSize: 8, color: C.white, valign: "middle" });
});
addFooter(s, "Campbell-Walsh-Wein Urology | Pediatric Nephrology Chapter BOX 21.3");
}
// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 14 — Alport & Thin BM Disease
// ══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.cream }, line: { color: C.cream } });
addSectionBanner(s, "HEREDITARY NEPHROPATHIES");
addTitleBar(s, "Alport Syndrome & Thin Basement Membrane Disease", "Hereditary causes of persistent microscopic hematuria");
// Alport
addBox(s, 0.2, 1.42, 4.65, 3.8, "FFFFFF", C.navy);
addBox(s, 0.2, 1.42, 4.65, 0.45, C.navy, C.navy);
s.addText("ALPORT SYNDROME", { x: 0.2, y: 1.42, w: 4.65, h: 0.45, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle" });
const alportItems = [
["Genetics", "X-linked (80%) — COL4A5 mutation\nAutosomal recessive — COL4A3/A4"],
["Renal", "Persistent microscopic hematuria → progressive nephritis → ESRD (teens–young adult in males)"],
["Hearing", "Sensorineural hearing loss (bilateral, progressive)"],
["Eyes", "Anterior lenticonus, macular flecks"],
["EM", "GBM thinning + splitting ('basket-weave' lamellation)"],
["Management", "ACE inhibitors (delay progression)\nAvoid nephrotoxins\nGenetic counseling\nRenal transplant for ESRD"],
];
alportItems.forEach((item, i) => {
s.addText(item[0] + ":", { x: 0.3, y: 1.95 + i * 0.53, w: 1.1, h: 0.48, fontSize: 9.5, bold: true, color: C.navy, valign: "top" });
s.addText(item[1], { x: 1.35, y: 1.95 + i * 0.53, w: 3.4, h: 0.48, fontSize: 9, color: C.midGray, valign: "top" });
});
// Thin BM
addBox(s, 5.15, 1.42, 4.65, 3.8, "FFFFFF", C.teal);
addBox(s, 5.15, 1.42, 4.65, 0.45, C.teal, C.teal);
s.addText("THIN BASEMENT MEMBRANE DISEASE", { x: 5.15, y: 1.42, w: 4.65, h: 0.45, fontSize: 11, bold: true, color: C.white, align: "center", valign: "middle" });
const tbmItems = [
["Genetics", "Autosomal dominant\nHeterozygous COL4A3 or COL4A4"],
["Renal", "Isolated persistent microscopic hematuria\nBenign prognosis in most cases"],
["Family Hx", "Family history of microscopic hematuria (3–4 generations)"],
["EM", "Diffuse thinning of GBM (<200 nm)\nNo splitting or lamellation"],
["Hearing / Eyes", "Normal hearing and vision (unlike Alport)"],
["Management", "Observation and monitoring\nBP control if proteinuria develops\nAnnual follow-up with UA + BP"],
];
tbmItems.forEach((item, i) => {
s.addText(item[0] + ":", { x: 5.25, y: 1.95 + i * 0.53, w: 1.1, h: 0.48, fontSize: 9.5, bold: true, color: C.teal, valign: "top" });
s.addText(item[1], { x: 6.3, y: 1.95 + i * 0.53, w: 3.4, h: 0.48, fontSize: 9, color: C.midGray, valign: "top" });
});
addFooter(s, "Campbell-Walsh-Wein Urology BOX 21.3 | Comprehensive Clinical Nephrology");
}
// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 15 — Hypercalciuria & Nephrolithiasis
// ══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.cream }, line: { color: C.cream } });
addSectionBanner(s, "NON-GLOMERULAR — STONES & HYPERCALCIURIA");
addTitleBar(s, "Hypercalciuria & Nephrolithiasis", "Most common metabolic cause of hematuria in children");
addBox(s, 0.2, 1.42, 9.6, 0.62, C.lightGold, C.gold);
s.addText("Hypercalciuria is the most common metabolic abnormality causing hematuria in children — present in up to 30% of cases of isolated microscopic hematuria", {
x: 0.3, y: 1.42, w: 9.4, h: 0.62, fontSize: 11, italic: true, color: C.navy, valign: "middle"
});
const cols3 = [
{
title: "DIAGNOSIS",
color: C.teal,
items: [
"Spot urine Ca:Cr ratio >0.2 mg/mg (children >2 yrs)",
"24h urine calcium >4 mg/kg/day",
"Family history of kidney stones",
"Renal ultrasound (calculi, nephrocalcinosis)",
"Plain abdominal X-ray (radiopaque stones)",
"Non-contrast CT KUB (gold standard for stones)"
]
},
{
title: "CLINICAL FEATURES",
color: C.navy,
items: [
"Gross or microscopic hematuria",
"Colicky flank / groin pain (older children)",
"Dysuria, urgency, frequency",
"Nausea, vomiting with renal colic",
"Passage of stone / gravel in urine",
"Younger children: irritability, vomiting"
]
},
{
title: "MANAGEMENT",
color: C.blue,
items: [
"Increase fluid intake (goal 2L/m²/day)",
"Thiazide diuretics (idiopathic hypercalciuria)",
"Low sodium diet (reduces Ca excretion)",
"Low oxalate diet (calcium oxalate stones)",
"Citrate supplementation (alkalinizes urine)",
"Urological referral for obstructing stones"
]
}
];
cols3.forEach((col, ci) => {
const x = 0.2 + ci * 3.27;
addBox(s, x, 2.15, 3.0, 0.42, col.color, col.color);
s.addText(col.title, { x, y: 2.15, w: 3.0, h: 0.42, fontSize: 11, bold: true, color: C.white, align: "center", valign: "middle" });
col.items.forEach((item, ii) => {
const bg = ii % 2 === 0 ? "FFFFFF" : C.lightGray;
addBox(s, x, 2.57 + ii * 0.48, 3.0, 0.46, bg, "D5D8DC");
s.addText("• " + item, { x: x + 0.1, y: 2.6 + ii * 0.48, w: 2.8, h: 0.4, fontSize: 9.5, color: C.navy, valign: "middle" });
});
});
addFooter(s, "Campbell-Walsh-Wein Urology | Pediatric Nephrology Reference");
}
// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 16 — Red Flags & When to Refer
// ══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.cream }, line: { color: C.cream } });
addSectionBanner(s, "RED FLAGS & REFERRAL");
addTitleBar(s, "Red Flags & When to Refer", "Features that require urgent nephrology or urology referral");
// Red flags
addBox(s, 0.2, 1.42, 9.6, 0.38, C.red, C.red);
s.addText("RED FLAG FEATURES — Require Urgent Evaluation", {
x: 0.2, y: 1.42, w: 9.6, h: 0.38, fontSize: 11.5, bold: true, color: C.white, align: "center", valign: "middle"
});
const redFlags = [
["Hypertension", "Suggests glomerular or renovascular disease"],
["Edema / Weight gain", "Nephrotic or nephritic syndrome"],
["Significant proteinuria", "Glomerular pathology — biopsy may be needed"],
["Impaired renal function", "Rapidly progressive GN — urgent biopsy"],
["RBC casts", "Pathognomonic glomerulonephritis"],
["Abdominal mass", "Wilms tumor — urgent imaging"],
["Clotting abnormality", "Bleeding diathesis — hematology referral"],
["Systemic features: rash, fever, arthritis", "SLE, HSP, vasculitis"],
];
redFlags.forEach((rf, i) => {
const col = i < 4 ? 0 : 1;
const row = i % 4;
const x = 0.2 + col * 4.9;
const y = 1.88 + row * 0.55;
addBox(s, x, y, 4.65, 0.5, i % 2 === 0 ? "FDDBD8" : "FAD7D5", C.red);
s.addText(rf[0], { x: x + 0.1, y: y + 0.05, w: 2.0, h: 0.22, fontSize: 10, bold: true, color: C.red });
s.addText(rf[1], { x: x + 0.1, y: y + 0.26, w: 4.4, h: 0.2, fontSize: 9, color: C.navy });
});
// Referral guidance
addBox(s, 0.2, 4.1, 9.6, 1.2, C.lightTeal, C.teal);
s.addText("REFERRAL GUIDANCE", { x: 0.3, y: 4.1, w: 9.4, h: 0.3, fontSize: 10.5, bold: true, color: C.teal });
s.addText([
{ text: "Nephrology: ", options: { bold: true, color: C.teal, breakLine: false } },
{ text: "Glomerular features, proteinuria, hypertension, impaired GFR, systemic disease, RBC casts, hereditary nephropathy ", options: { color: C.navy, breakLine: true } },
{ text: "Urology: ", options: { bold: true, color: C.blue, breakLine: false } },
{ text: "Persistent gross hematuria without apparent cause, suspected stones/obstruction, abdominal mass, structural anomalies, urethrorrhagia >2 years", options: { color: C.navy } }
], { x: 0.3, y: 4.4, w: 9.4, h: 0.85, fontSize: 10.5 });
addFooter(s, "Campbell-Walsh-Wein Urology | Pediatric Nephrology Chapter");
}
// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 17 — Isolated Microscopic Hematuria: Management
// ══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.cream }, line: { color: C.cream } });
addSectionBanner(s, "MANAGEMENT");
addTitleBar(s, "Managing Isolated Microscopic Hematuria", "A watchful waiting approach for asymptomatic children");
addBox(s, 0.2, 1.42, 9.6, 0.55, C.lightGold, C.gold);
s.addText("In the absence of RBC casts, proteinuria, or family history of progressive renal disease — most patients may be OBSERVED and retested in 6–12 months", {
x: 0.3, y: 1.42, w: 9.4, h: 0.55, fontSize: 11, italic: true, color: C.navy, valign: "middle"
});
const mgmtFlow = [
{ step: "CONFIRM", detail: "Repeat UA x2 over 2–4 weeks to confirm persistence (>5 RBC/hpf both times)", color: C.teal },
{ step: "ASSESS", detail: "BP, urine protein:Cr ratio, family history, renal function baseline", color: C.navy },
{ step: "STRATIFY", detail: "Low risk: isolated, asymptomatic, no family history of ESRD\nHigh risk: + proteinuria, + hypertension, + family history of progressive renal disease", color: C.blue },
{ step: "FOLLOW-UP", detail: "Low risk: Annual review — UA, BP, growth monitoring, no biopsy needed\nHigh risk: Nephrology referral, consider biopsy", color: C.midGray },
];
mgmtFlow.forEach((m, i) => {
const x = 0.2 + i * 2.42;
addBox(s, x, 2.1, 2.1, 0.45, m.color, m.color);
s.addText(m.step, { x, y: 2.1, w: 2.1, h: 0.45, fontSize: 12, bold: true, color: C.white, align: "center", valign: "middle" });
addBox(s, x, 2.55, 2.1, 1.8, "FFFFFF", "D5D8DC");
s.addText(m.detail, { x: x + 0.08, y: 2.6, w: 1.95, h: 1.7, fontSize: 9.5, color: C.navy, valign: "top" });
if (i < 3) {
s.addShape(pres.ShapeType.rightArrow, { x: x + 2.1, y: 2.25, w: 0.32, h: 0.35, fill: { color: C.gold }, line: { color: C.gold } });
}
});
addBox(s, 0.2, 4.52, 9.6, 0.78, C.lightTeal, C.teal);
s.addText([
{ text: "When to consider RENAL BIOPSY: ", options: { bold: true, color: C.teal, breakLine: false } },
{ text: "Persistent proteinuria + hematuria | Declining GFR | Hypertension | Suspected IgA nephropathy, Alport, MPGN | Clinical features of systemic disease", options: { color: C.navy } }
], { x: 0.3, y: 4.52, w: 9.4, h: 0.78, fontSize: 10.5, valign: "middle" });
addFooter(s, "Campbell-Walsh-Wein Urology | Feld et al., 1998");
}
// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 18 — Summary
// ══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.navy }, line: { color: C.navy } });
addSectionBanner(s, "SUMMARY");
s.addText("Key Takeaways", { x: 0.3, y: 0.35, w: 9.4, h: 0.72, fontSize: 26, bold: true, color: C.white, valign: "middle" });
s.addShape(pres.ShapeType.rect, { x: 0, y: 1.05, w: 10, h: 0.06, fill: { color: C.gold }, line: { color: C.gold } });
const takeaways = [
{ n: "1", txt: "Hematuria = >5 RBCs/hpf on freshly spun urine on 2+ occasions. Confirm before extensive work-up." },
{ n: "2", txt: "Dipstick+ with no RBCs on microscopy → think hemoglobinuria or myoglobinuria, not true hematuria." },
{ n: "3", txt: "Determine glomerular vs. non-glomerular origin using RBC morphology, casts, and proteinuria." },
{ n: "4", txt: "Most common cause of gross hematuria in children: UTI (26%), followed by perineal irritation, trauma." },
{ n: "5", txt: "Isolated microscopic hematuria occurs in ~1% of school-age children and mostly resolves within 1 year." },
{ n: "6", txt: "Always measure blood pressure — hypertension narrows the differential toward glomerular or renovascular disease." },
{ n: "7", txt: "Renal ultrasound is the first-line imaging modality; reserve CT for trauma, stones, or tumor." },
{ n: "8", txt: "Refer to nephrology if: proteinuria, hypertension, impaired GFR, or glomerular features on UA." },
];
takeaways.forEach((t, i) => {
const col = i < 4 ? 0 : 1;
const row = i % 4;
const x = 0.2 + col * 5.0;
const y = 1.18 + row * 1.06;
s.addShape(pres.ShapeType.rect, { x, y, w: 0.46, h: 0.46, fill: { color: C.gold }, line: { color: C.gold } });
s.addText(t.n, { x, y, w: 0.46, h: 0.46, fontSize: 14, bold: true, color: C.navy, align: "center", valign: "middle", margin: 0 });
s.addText(t.txt, { x: x + 0.54, y: y, w: 4.3, h: 0.92, fontSize: 9.5, color: C.white, valign: "middle" });
});
s.addShape(pres.ShapeType.rect, { x: 0, y: 5.35, w: 10, h: 0.275, fill: { color: C.teal }, line: { color: C.teal } });
s.addText("Source: Campbell-Walsh-Wein Urology | Harriet Lane Handbook 23e | Pediatric Nephrology Reference", {
x: 0.3, y: 5.35, w: 9.4, h: 0.275, fontSize: 8, color: C.white, valign: "middle", align: "center"
});
}
// ── Write file ─────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/hematuria-peds-ppt/Pediatric_Hematuria.pptx" })
.then(() => console.log("SUCCESS: File written"))
.catch(err => { console.error("ERROR:", err); process.exit(1); });
cd /home/daytona/workspace/hematuria-peds-ppt && node build.js 2>&1
ls -lh /home/daytona/workspace/hematuria-peds-ppt/
Pediatric Hematuria
Presentation · PPTX
| # | Slide | Content |
|---|---|---|
| 1 | Title | Bold dark design with topic overview panel |
| 2 | Definition & Epidemiology | Gross vs. microscopic hematuria defined; prevalence data |
| 3 | Causes of Gross Hematuria | Full table with 12 causes + clinical context (UTI 26%, trauma 7%, etc.) |
| 4 | Causes of Microscopic Hematuria | Three-column layout: glomerular / non-glomerular / other |
| 5 | History Taking | 4-block grid: chief complaint, associated symptoms, family history, drug/medical history |
| 6 | Physical Examination | 8 key findings with icons: BP, edema, rash, joints, abdomen, hearing, genitalia, eyes |
| 7 | Urinalysis & Urine Microscopy | Interpretation table: dysmorphic RBCs, casts, crystals, proteinuria, Hb/Mb |
| 8 | Glomerular vs. Non-Glomerular | Color-coded comparison table (8 distinguishing features) |
| 9 | Laboratory Investigations | Three-tier panel: initial workup / glomerular panel / urological panel |
| 10 | Imaging | Ultrasound, CT, VCUG, Cystoscopy - indications and what each detects |
| 11 | Glomerular Disease by Age Group | BOX 21.3 layout: <1 yr / 1-10 yrs / ≥7 yrs |
| 12 | Diagnostic Algorithm | Flowchart: Confirm → Rule out pseudo → Glomerular vs Non-glomerular → workup |
| 13 | APSGN, IgA Nephropathy, HSP | Three-column card design with features + management |
| 14 | Alport & Thin BM Disease | Side-by-side comparison of hereditary nephropathies |
| 15 | Hypercalciuria & Nephrolithiasis | Diagnosis, clinical features, management |
| 16 | Red Flags & Referral | 8 red flag features + nephrology vs. urology referral criteria |
| 17 | Managing Isolated Microscopic Hematuria | 4-step management flow + renal biopsy indications |
| 18 | Summary | 8 key takeaways on a dark navy background |