Create an presentation for the pathology seminar in the topic of Benign prostatic hyperplasia include microscopy pathology etiology
BPH benign prostatic hyperplasia histology microscopy pathology images corpora amylacea
mkdir -p /home/daytona/workspace/bph-seminar && ls /home/daytona/workspace/bph-s…
~/bph-seminar/bph_presentation.js
const pptxgen = require("pptxgenjs");
const { execSync } = require("child_process");
// Fetch images using the helper script
const imageUrls = [
"https://cdn.orris.care/cdss_images/2db33245f95991f1ce10cf933403a040f351d6ac8d385719defbc5fbcef4f3fa.png",
"https://cdn.orris.care/cdss_images/83e49923722df6ae7223f45442a06bf50e99954c3879054eabf878b69b2bf306.png",
"https://medicine.nus.edu.sg/pathweb/wp-content/uploads/2025/07/1221-2086-4011-1823.2-Prostate-BPH.png",
"https://medicine.nus.edu.sg/pathweb/wp-content/uploads/2025/07/1221-2086-4011-1823.3-Prostate-BPH.png"
];
let images = [];
try {
images = JSON.parse(execSync(
`node /home/daytona/skills/shared/scripts/fetch_images.js ${imageUrls.map(u => `"${u}"`).join(" ")}`,
{ maxBuffer: 50 * 1024 * 1024 }
).toString());
} catch(e) {
console.error("Image fetch error:", e.message);
images = imageUrls.map(u => ({ url: u, base64: null, error: e.message }));
}
const robbinsImg = images[0]; // BPH gross + micro composite
const corporaImg = images[1]; // corpora amylacea
const nusImg1 = images[2]; // NUS pathweb BPH low power
const nusImg2 = images[3]; // NUS pathweb BPH high power
// ─── COLOR PALETTE ───────────────────────────────────────────
const DARK_BG = "0D1B2A"; // deep navy - title/chapter slides
const MID_BG = "1B3A5C"; // medium navy
const LIGHT_BG = "F0F4F8"; // near-white content slides
const ACCENT1 = "E85D04"; // vivid orange accent
const ACCENT2 = "90E0EF"; // soft cyan
const WHITE = "FFFFFF";
const BODY_TEXT = "1C2B3A";
const SUBTEXT = "4A6380";
let pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.author = "Pathology Seminar";
pres.title = "Benign Prostatic Hyperplasia";
// ═══════════════════════════════════════════════════════════════
// HELPER FUNCTIONS
// ═══════════════════════════════════════════════════════════════
function darkSlide(title, subtitle) {
let sl = pres.addSlide();
sl.background = { color: DARK_BG };
// Decorative bar left
sl.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.12, h: 5.625, fill: { color: ACCENT1 } });
// Subtle grid lines
sl.addShape(pres.ShapeType.rect, { x: 0.12, y: 0, w: 9.88, h: 5.625, fill: { color: DARK_BG }, line: { color: DARK_BG } });
if (title) {
sl.addText(title, {
x: 0.5, y: 1.8, w: 9, h: 1.2,
fontSize: 42, bold: true, color: WHITE, fontFace: "Calibri",
align: "center"
});
}
if (subtitle) {
sl.addText(subtitle, {
x: 0.5, y: 3.0, w: 9, h: 0.8,
fontSize: 18, color: ACCENT2, fontFace: "Calibri Light",
align: "center", italic: true
});
}
return sl;
}
function contentSlide(title, accent) {
let sl = pres.addSlide();
sl.background = { color: LIGHT_BG };
const bar = accent || ACCENT1;
// Header bar
sl.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.85, fill: { color: DARK_BG } });
sl.addShape(pres.ShapeType.rect, { x: 0, y: 0.85, w: 10, h: 0.06, fill: { color: bar } });
sl.addText(title, {
x: 0.3, y: 0.05, w: 9.4, h: 0.75,
fontSize: 22, bold: true, color: WHITE, fontFace: "Calibri",
valign: "middle"
});
return sl;
}
function chapterSlide(chapter, title) {
let sl = pres.addSlide();
sl.background = { color: MID_BG };
sl.addShape(pres.ShapeType.rect, { x: 0, y: 2.2, w: 10, h: 1.2, fill: { color: ACCENT1 } });
sl.addText(chapter, {
x: 0.5, y: 0.5, w: 9, h: 1,
fontSize: 14, color: ACCENT2, fontFace: "Calibri", align: "center", charSpacing: 6
});
sl.addText(title, {
x: 0.5, y: 2.25, w: 9, h: 1.1,
fontSize: 34, bold: true, color: WHITE, fontFace: "Calibri", align: "center"
});
return sl;
}
function bullet(text, level) {
level = level || 0;
return {
text: text,
options: {
bullet: level === 0 ? { indent: 15 } : { indent: 30, code: "25E6" },
color: level === 0 ? BODY_TEXT : SUBTEXT,
fontSize: level === 0 ? 15 : 13,
fontFace: "Calibri",
breakLine: true,
indentLevel: level,
paraSpaceAfter: level === 0 ? 8 : 4
}
};
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 1 - TITLE
// ═══════════════════════════════════════════════════════════════
{
let sl = pres.addSlide();
sl.background = { color: DARK_BG };
// Full-width gradient band
sl.addShape(pres.ShapeType.rect, { x: 0, y: 2.5, w: 10, h: 1.7, fill: { color: ACCENT1 } });
sl.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.15, h: 5.625, fill: { color: ACCENT2 } });
sl.addText("BENIGN PROSTATIC", {
x: 0.4, y: 0.5, w: 9.2, h: 1,
fontSize: 44, bold: true, color: WHITE, fontFace: "Calibri", align: "center", charSpacing: 2
});
sl.addText("HYPERPLASIA", {
x: 0.4, y: 1.4, w: 9.2, h: 0.9,
fontSize: 44, bold: true, color: ACCENT2, fontFace: "Calibri", align: "center", charSpacing: 2
});
sl.addText("Pathology Seminar", {
x: 0.4, y: 2.55, w: 9.2, h: 0.5,
fontSize: 20, bold: true, color: WHITE, fontFace: "Calibri", align: "center"
});
sl.addText("Etiology | Morphology | Microscopy | Clinical Features | Management", {
x: 0.4, y: 3.1, w: 9.2, h: 0.5,
fontSize: 14, color: WHITE, fontFace: "Calibri Light", align: "center", italic: true
});
sl.addText("Source: Robbins & Kumar Basic Pathology, 10th Edition", {
x: 0.4, y: 5.1, w: 9.2, h: 0.4,
fontSize: 11, color: ACCENT2, fontFace: "Calibri", align: "center"
});
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 2 - OVERVIEW / OUTLINE
// ═══════════════════════════════════════════════════════════════
{
let sl = contentSlide("Outline");
const items = [
["01", "Introduction & Epidemiology"],
["02", "Etiology & Pathogenesis"],
["03", "Gross Morphology"],
["04", "Microscopic Pathology"],
["05", "Histological Images"],
["06", "Clinical Features & Complications"],
["07", "Management"],
["08", "Summary"],
];
const cols = 2;
items.forEach((item, i) => {
const col = i % cols;
const row = Math.floor(i / cols);
const x = 0.4 + col * 5;
const y = 1.15 + row * 0.95;
sl.addShape(pres.ShapeType.rect, { x, y, w: 4.6, h: 0.78, fill: { color: DARK_BG }, line: { color: ACCENT1, pt: 1 }, rounding: true });
sl.addText(item[0], { x: x + 0.08, y: y + 0.05, w: 0.7, h: 0.68, fontSize: 22, bold: true, color: ACCENT1, fontFace: "Calibri", valign: "middle", align: "center" });
sl.addText(item[1], { x: x + 0.85, y: y + 0.05, w: 3.6, h: 0.68, fontSize: 14, color: WHITE, fontFace: "Calibri", valign: "middle" });
});
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 3 - INTRODUCTION & EPIDEMIOLOGY
// ═══════════════════════════════════════════════════════════════
chapterSlide("CHAPTER 01", "Introduction & Epidemiology");
{
let sl = contentSlide("Introduction & Epidemiology");
sl.addText([
bullet("BPH results from stromal and glandular proliferation - most common benign prostatic disease in men >50 years"),
bullet("Frequency rises progressively with age, reaching 90% by the eighth decade of life"),
bullet("Enlargement of the prostate in BPH is a major cause of urinary obstruction"),
bullet("Not a pre-malignant condition - does NOT increase the risk of carcinoma"),
bullet("Affects the transition zone and periurethral region of the prostate"),
], { x: 0.4, y: 1.05, w: 5.7, h: 4.2, valign: "top" });
// Stat boxes on right
const stats = [
["90%", "Prevalence by\n8th decade"],
[">50 yrs", "Age of onset"],
["60-100g", "Enlarged weight\n(3-5x normal)"],
];
stats.forEach((s, i) => {
const y = 1.2 + i * 1.35;
sl.addShape(pres.ShapeType.rect, { x: 6.4, y, w: 3.2, h: 1.05, fill: { color: DARK_BG }, line: { color: ACCENT1, pt: 2 }, rounding: true });
sl.addText(s[0], { x: 6.4, y: y + 0.02, w: 3.2, h: 0.55, fontSize: 26, bold: true, color: ACCENT1, fontFace: "Calibri", align: "center", valign: "middle" });
sl.addText(s[1], { x: 6.4, y: y + 0.53, w: 3.2, h: 0.48, fontSize: 11, color: ACCENT2, fontFace: "Calibri", align: "center" });
});
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 4 - ETIOLOGY chapter
// ═══════════════════════════════════════════════════════════════
chapterSlide("CHAPTER 02", "Etiology & Pathogenesis");
// ═══════════════════════════════════════════════════════════════
// SLIDE 5 - HORMONAL PATHOGENESIS
// ═══════════════════════════════════════════════════════════════
{
let sl = contentSlide("Etiology: Hormonal Pathogenesis");
// Pathway boxes: Testosterone -> 5a-reductase -> DHT -> AR -> Growth
const steps = [
{ label: "Testosterone\n(Circulating)", color: "1B4F72" },
{ label: "5α-Reductase\n(Type 2)\nin Prostate", color: ACCENT1 },
{ label: "DHT\n(Dihydrotestosterone)\n10x more potent", color: "C0392B" },
{ label: "Nuclear Androgen\nReceptors (AR)", color: "6C3483" },
{ label: "Gene Expression\n→ Cell Proliferation\n& Survival", color: "145A32" },
];
steps.forEach((s, i) => {
const x = 0.3 + i * 1.88;
sl.addShape(pres.ShapeType.rect, { x, y: 1.1, w: 1.75, h: 1.35, fill: { color: s.color }, line: { color: WHITE, pt: 1 }, rounding: true });
sl.addText(s.label, { x, y: 1.1, w: 1.75, h: 1.35, fontSize: 11, bold: true, color: WHITE, fontFace: "Calibri", align: "center", valign: "middle" });
if (i < steps.length - 1) {
sl.addShape(pres.ShapeType.rightArrow, { x: x + 1.75, y: 1.62, w: 0.13, h: 0.3, fill: { color: ACCENT1 } });
}
});
sl.addText([
bullet("BPH does NOT occur in males castrated before puberty or with androgen-insensitivity syndromes"),
bullet("DHT-induced growth factors increase stromal cell proliferation and decrease epithelial cell apoptosis"),
bullet("Estrogen role: With aging, testosterone levels decline while estrogen remains stable or rises"),
{ text: "Estrogens may act synergistically with DHT to drive growth of both epithelial and stromal cells", options: { bullet: { indent: 30, code: "25E6" }, color: SUBTEXT, fontSize: 13, fontFace: "Calibri", breakLine: true, indentLevel: 1 } },
bullet("Alpha-1 adrenergic receptors in prostatic smooth muscle contribute to dynamic obstruction component"),
], { x: 0.4, y: 2.65, w: 9.2, h: 2.7, valign: "top" });
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 6 - ZONE ANATOMY
// ═══════════════════════════════════════════════════════════════
{
let sl = contentSlide("Anatomical Zones: Where BPH Originates");
// Zone diagram using shapes
const zones = [
{ label: "Transition Zone\n~5% of gland\nBPH ORIGIN", x: 2.2, y: 1.4, w: 2.2, h: 2.0, color: ACCENT1 },
{ label: "Central Zone\n~25% of gland", x: 4.5, y: 1.1, w: 2.2, h: 1.5, color: MID_BG },
{ label: "Peripheral Zone\n~70% of gland\nCa origin", x: 1.2, y: 3.5, w: 4.5, h: 1.3, color: "2E4057" },
];
zones.forEach(z => {
sl.addShape(pres.ShapeType.ellipse, { x: z.x, y: z.y, w: z.w, h: z.h, fill: { color: z.color }, line: { color: WHITE, pt: 1.5 } });
sl.addText(z.label, { x: z.x, y: z.y, w: z.w, h: z.h, fontSize: 10, bold: true, color: WHITE, fontFace: "Calibri", align: "center", valign: "middle" });
});
sl.addText("Urethra\n(compressed)", { x: 2.95, y: 2.1, w: 1.5, h: 0.8, fontSize: 11, color: ACCENT2, fontFace: "Calibri", align: "center", bold: true });
sl.addText([
bullet("BPH originates in the periurethral transition zone"),
bullet("Hyperplastic nodules encroach on the urethra, compressing it to a slit-like orifice"),
bullet("Distinct from prostatic carcinoma which arises in the peripheral zone"),
bullet("Transition zone normally constitutes only ~5% of gland volume"),
bullet("In BPH, the enlarged transition zone can account for >80% of total prostate volume"),
], { x: 6.6, y: 1.1, w: 3.15, h: 4.2, valign: "top" });
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 7 - CHAPTER: MORPHOLOGY
// ═══════════════════════════════════════════════════════════════
chapterSlide("CHAPTER 03", "Gross Morphology");
// ═══════════════════════════════════════════════════════════════
// SLIDE 8 - GROSS PATHOLOGY WITH IMAGE
// ═══════════════════════════════════════════════════════════════
{
let sl = contentSlide("Gross Morphology");
if (robbinsImg && robbinsImg.base64) {
sl.addImage({ data: robbinsImg.base64, x: 0.3, y: 1.05, w: 5.4, h: 3.5 });
sl.addText("FIG. 16.11 — Robbins & Kumar Basic Pathology\n(A) Cross-section: nodules compressing urethra into slit-like lumen\n(B) Low-power: glandular nodules flanking urethra (C) High-power: basal cells present (arrows)", {
x: 0.3, y: 4.55, w: 5.4, h: 0.85,
fontSize: 9, italic: true, color: SUBTEXT, fontFace: "Calibri"
});
}
sl.addText([
bullet("Weight increases 3-5 fold: 60-100 g or greater"),
bullet("Affects the transition zone → encroaches on the urethra"),
bullet("Urethra compressed to a slit-like orifice"),
bullet("Cross-section: hyperplastic nodules of variable color and consistency"),
bullet("Nodules may appear:"),
{ text: "Solid (predominantly stromal/fibromuscular)", options: { bullet: { indent: 30, code: "25E6" }, color: SUBTEXT, fontSize: 12, fontFace: "Calibri", breakLine: true, indentLevel: 1 } },
{ text: "Cystic (dilated glands) or mixed", options: { bullet: { indent: 30, code: "25E6" }, color: SUBTEXT, fontSize: 12, fontFace: "Calibri", breakLine: true, indentLevel: 1 } },
bullet("7 MRI subtypes based on location of hyperplasia have been described"),
], { x: 5.9, y: 1.1, w: 3.85, h: 4.3, valign: "top" });
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 9 - CHAPTER: MICROSCOPY
// ═══════════════════════════════════════════════════════════════
chapterSlide("CHAPTER 04", "Microscopic Pathology");
// ═══════════════════════════════════════════════════════════════
// SLIDE 10 - MICROSCOPY TEXT
// ═══════════════════════════════════════════════════════════════
{
let sl = contentSlide("Microscopic Features of BPH");
sl.addText([
bullet("Hyperplastic nodules: variable proportions of glandular elements AND fibromuscular stroma"),
bullet("Glandular (epithelial) component:"),
{ text: "Tall, columnar epithelial cells (inner layer)", options: { bullet: { indent: 30, code: "25E6" }, color: SUBTEXT, fontSize: 13, fontFace: "Calibri", breakLine: true, indentLevel: 1 } },
{ text: "Peripheral layer of flattened BASAL CELLS — KEY distinguishing feature", options: { bullet: { indent: 30, code: "25E6" }, color: ACCENT1, fontSize: 13, fontFace: "Calibri", bold: true, breakLine: true, indentLevel: 1 } },
{ text: "Two-cell layer: absent in prostatic adenocarcinoma (diagnostic importance!)", options: { bullet: { indent: 30, code: "25E6" }, color: SUBTEXT, fontSize: 13, fontFace: "Calibri", breakLine: true, indentLevel: 1 } },
bullet("Papillary infoldings of glandular epithelium into the lumina"),
bullet("Corpora amylacea: laminated proteinaceous secretory concretions within glandular lumina"),
{ text: "Pink, rounded, calcified bodies", options: { bullet: { indent: 30, code: "25E6" }, color: SUBTEXT, fontSize: 13, fontFace: "Calibri", breakLine: true, indentLevel: 1 } },
{ text: "Increase in number with age", options: { bullet: { indent: 30, code: "25E6" }, color: SUBTEXT, fontSize: 13, fontFace: "Calibri", breakLine: true, indentLevel: 1 } },
bullet("Stromal component:"),
{ text: "Fibromuscular stroma with smooth muscle proliferation", options: { bullet: { indent: 30, code: "25E6" }, color: SUBTEXT, fontSize: 13, fontFace: "Calibri", breakLine: true, indentLevel: 1 } },
{ text: "Alpha-1 adrenergic receptors mediate smooth muscle tone", options: { bullet: { indent: 30, code: "25E6" }, color: SUBTEXT, fontSize: 13, fontFace: "Calibri", breakLine: true, indentLevel: 1 } },
], { x: 0.4, y: 1.05, w: 9.2, h: 4.3, valign: "top" });
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 11 - CHAPTER: HISTOLOGICAL IMAGES
// ═══════════════════════════════════════════════════════════════
chapterSlide("CHAPTER 05", "Histological Images");
// ═══════════════════════════════════════════════════════════════
// SLIDE 12 - MICROSCOPY IMAGE: COMPOSITE
// ═══════════════════════════════════════════════════════════════
{
let sl = pres.addSlide();
sl.background = { color: "0A1628" };
sl.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.75, fill: { color: DARK_BG } });
sl.addShape(pres.ShapeType.rect, { x: 0, y: 0.75, w: 10, h: 0.06, fill: { color: ACCENT1 } });
sl.addText("BPH Histopathology — Composite (Robbins & Kumar)", {
x: 0.3, y: 0.05, w: 9.4, h: 0.68, fontSize: 20, bold: true, color: WHITE, fontFace: "Calibri", valign: "middle"
});
if (robbinsImg && robbinsImg.base64) {
sl.addImage({ data: robbinsImg.base64, x: 0.5, y: 0.9, w: 9, h: 3.6 });
}
sl.addShape(pres.ShapeType.rect, { x: 0, y: 4.6, w: 10, h: 1.0, fill: { color: DARK_BG } });
sl.addText([
{ text: "A ", options: { bold: true, color: ACCENT1, fontSize: 13, fontFace: "Calibri" } },
{ text: "Cross-section: BPH nodules compressing urethra into slit-like lumen ", options: { color: WHITE, fontSize: 13, fontFace: "Calibri" } },
{ text: "B ", options: { bold: true, color: ACCENT1, fontSize: 13, fontFace: "Calibri" } },
{ text: "Low-power: hyperplastic glandular nodules flanking urethra ", options: { color: WHITE, fontSize: 13, fontFace: "Calibri" } },
{ text: "C ", options: { bold: true, color: ACCENT1, fontSize: 13, fontFace: "Calibri" } },
{ text: "High-power: tall columnar cells with BASAL CELLS present (arrows)", options: { color: ACCENT2, fontSize: 13, fontFace: "Calibri" } },
], { x: 0.3, y: 4.62, w: 9.4, h: 0.96, valign: "middle", align: "center" });
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 13 - CORPORA AMYLACEA IMAGE
// ═══════════════════════════════════════════════════════════════
{
let sl = pres.addSlide();
sl.background = { color: "0A1628" };
sl.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.75, fill: { color: DARK_BG } });
sl.addShape(pres.ShapeType.rect, { x: 0, y: 0.75, w: 10, h: 0.06, fill: { color: ACCENT1 } });
sl.addText("Corpora Amylacea in BPH", {
x: 0.3, y: 0.05, w: 9.4, h: 0.68, fontSize: 20, bold: true, color: WHITE, fontFace: "Calibri", valign: "middle"
});
if (corporaImg && corporaImg.base64) {
sl.addImage({ data: corporaImg.base64, x: 1.0, y: 0.92, w: 5.0, h: 3.7 });
}
sl.addShape(pres.ShapeType.rect, { x: 6.2, y: 0.92, w: 3.6, h: 3.7, fill: { color: DARK_BG }, line: { color: ACCENT1, pt: 1 }, rounding: true });
sl.addText([
{ text: "Corpora Amylacea\n", options: { bold: true, color: ACCENT1, fontSize: 15, fontFace: "Calibri", breakLine: true } },
bullet("Laminated, proteinaceous concretions in glandular lumina"),
bullet("Appear as rounded, pink, calcified bodies on H&E"),
bullet("Central radiating pattern surrounded by lamellar layers"),
bullet("Amyloid-like composition"),
bullet("Number increases with age"),
bullet("Pathognomonic of BPH in context"),
bullet("Arise adjacent to damaged prostate epithelium"),
], { x: 6.25, y: 1.0, w: 3.5, h: 3.5, valign: "top" });
sl.addText("eFIG. 16.3 — Robbins & Kumar Basic Pathology (Elsevier)", {
x: 1.0, y: 4.62, w: 5.0, h: 0.4, fontSize: 10, italic: true, color: ACCENT2, fontFace: "Calibri", align: "center"
});
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 14 - KEY MICROSCOPY COMPARISON TABLE
// ═══════════════════════════════════════════════════════════════
{
let sl = contentSlide("Microscopy: BPH vs Prostatic Adenocarcinoma", "C0392B");
const rows = [
["Feature", "BPH", "Adenocarcinoma"],
["Glandular Architecture", "Large, irregular glands with papillary infoldings", "Small, crowded, back-to-back glands"],
["Epithelial Layers", "Two layers (columnar + basal cells)", "Single layer — NO basal cells"],
["Basal Cell Layer", "Present (KEY feature)", "Absent (KEY feature)"],
["Nuclear Atypia", "Absent / minimal", "Present with prominent nucleoli"],
["Luminal Contents", "Corpora amylacea common", "Crystalloids / blue mucin"],
["Stromal Component", "Abundant fibromuscular stroma", "Reduced / desmoplastic"],
["Zone of Origin", "Transition zone (periurethral)", "Peripheral zone (~70%)"],
];
const colWidths = [2.2, 3.6, 3.6];
const rowH = 0.52;
rows.forEach((row, ri) => {
row.forEach((cell, ci) => {
const x = 0.25 + colWidths.slice(0, ci).reduce((a, b) => a + b, 0);
const y = 1.05 + ri * rowH;
const bg = ri === 0 ? DARK_BG : (ri % 2 === 0 ? "E8EEF4" : WHITE);
const fc = ri === 0 ? WHITE : (ci === 0 ? BODY_TEXT : BODY_TEXT);
const fb = ri === 0 || ci === 0;
sl.addShape(pres.ShapeType.rect, { x, y, w: colWidths[ci], h: rowH, fill: { color: bg }, line: { color: "CCCCCC", pt: 0.5 } });
sl.addText(cell, { x: x + 0.05, y, w: colWidths[ci] - 0.1, h: rowH, fontSize: ri === 0 ? 12 : 10.5, bold: fb, color: fc, fontFace: "Calibri", valign: "middle", wrap: true });
});
});
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 15 - CHAPTER: CLINICAL FEATURES
// ═══════════════════════════════════════════════════════════════
chapterSlide("CHAPTER 06", "Clinical Features & Complications");
// ═══════════════════════════════════════════════════════════════
// SLIDE 16 - CLINICAL FEATURES
// ═══════════════════════════════════════════════════════════════
{
let sl = contentSlide("Clinical Features (LUTS)");
const luts = [
{ title: "STORAGE SYMPTOMS", items: ["Urinary frequency", "Nocturia", "Urgency"], color: "1A5276" },
{ title: "VOIDING SYMPTOMS", items: ["Hesitancy (difficulty starting)", "Weak / intermittent stream", "Straining to void"], color: ACCENT1 },
{ title: "POST-MICTURITION", items: ["Overflow dribbling", "Incomplete emptying", "Residual urine"], color: "145A32" },
];
luts.forEach((g, i) => {
const x = 0.3 + i * 3.2;
sl.addShape(pres.ShapeType.rect, { x, y: 1.05, w: 3.0, h: 0.5, fill: { color: g.color }, rounding: true });
sl.addText(g.title, { x, y: 1.05, w: 3.0, h: 0.5, fontSize: 11, bold: true, color: WHITE, fontFace: "Calibri", align: "center", valign: "middle" });
g.items.forEach((item, j) => {
sl.addShape(pres.ShapeType.rect, { x, y: 1.62 + j * 0.55, w: 3.0, h: 0.48, fill: { color: j % 2 === 0 ? LIGHT_BG : WHITE }, line: { color: g.color, pt: 0.5 } });
sl.addText("• " + item, { x: x + 0.1, y: 1.62 + j * 0.55, w: 2.8, h: 0.48, fontSize: 12, color: BODY_TEXT, fontFace: "Calibri", valign: "middle" });
});
});
sl.addText([
bullet("Mechanism: Urinary obstruction from prostatic enlargement + smooth muscle contraction (dynamic component)"),
bullet("Bladder hypertrophy and distention from increased resistance to outflow"),
bullet("Residual urine acts as culture medium for bacteria — predisposes to recurrent UTIs (cystitis, pyelonephritis)"),
bullet("Dysuria (painful micturition) may occur"),
bullet("Complete obstruction can cause acute urinary retention, bladder distention, and hydronephrosis"),
], { x: 0.3, y: 3.35, w: 9.4, h: 2.1, valign: "top" });
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 17 - CHAPTER: MANAGEMENT
// ═══════════════════════════════════════════════════════════════
chapterSlide("CHAPTER 07", "Management");
// ═══════════════════════════════════════════════════════════════
// SLIDE 18 - MANAGEMENT
// ═══════════════════════════════════════════════════════════════
{
let sl = contentSlide("Management of BPH");
const cats = [
{
title: "MEDICAL THERAPY",
color: "1A5276",
items: [
"α1-Adrenergic Blockers — tamsulosin, terazosin, alfuzosin",
"Relax prostatic smooth muscle (dynamic component)",
"5α-Reductase Inhibitors — finasteride, dutasteride",
"Block DHT synthesis from testosterone",
"Combination therapy for larger glands",
"PDE-5 Inhibitors — tadalafil (off-label for LUTS)"
]
},
{
title: "SURGICAL THERAPY",
color: ACCENT1,
items: [
"TURP — Transurethral Resection of Prostate (gold standard)",
"HIFU — High-intensity focused ultrasound",
"Laser therapy (HoLEP, GreenLight PVP)",
"Transurethral electrovaporization",
"Radiofrequency ablation (Rezum)",
"Open prostatectomy for very large glands (>100g)"
]
}
];
cats.forEach((c, i) => {
const x = 0.3 + i * 4.85;
sl.addShape(pres.ShapeType.rect, { x, y: 1.05, w: 4.6, h: 0.5, fill: { color: c.color }, rounding: true });
sl.addText(c.title, { x, y: 1.05, w: 4.6, h: 0.5, fontSize: 13, bold: true, color: WHITE, fontFace: "Calibri", align: "center", valign: "middle" });
c.items.forEach((item, j) => {
sl.addShape(pres.ShapeType.rect, { x, y: 1.62 + j * 0.56, w: 4.6, h: 0.5, fill: { color: j % 2 === 0 ? LIGHT_BG : WHITE }, line: { color: c.color, pt: 0.5 } });
sl.addText("• " + item, { x: x + 0.1, y: 1.62 + j * 0.56, w: 4.4, h: 0.5, fontSize: 10.5, color: BODY_TEXT, fontFace: "Calibri", valign: "middle" });
});
});
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 19 - SUMMARY
// ═══════════════════════════════════════════════════════════════
chapterSlide("CHAPTER 08", "Summary");
{
let sl = contentSlide("Key Takeaways");
const points = [
["Epidemiology", "Most common benign prostatic disease; >50 yrs, 90% prevalence by 8th decade"],
["Etiology", "DHT (via 5α-reductase type 2) is the primary driver; estrogen has synergistic role"],
["Zone", "Transition zone (periurethral) — distinct from carcinoma which arises in peripheral zone"],
["Gross", "Prostate 60-100g (3-5x); nodules compressing urethra to slit-like orifice"],
["Microscopy", "Two-cell glandular layer (columnar + basal cells); corpora amylacea; fibromuscular stroma"],
["vs. Cancer", "Basal cells PRESENT in BPH; ABSENT in adenocarcinoma — key diagnostic distinction"],
["Clinical", "LUTS (frequency, nocturia, hesitancy, weak stream); risk of UTI, urinary retention"],
["Management", "α1-blockers + 5α-RI (medical); TURP or laser (surgical for refractory cases)"],
];
points.forEach((p, i) => {
const col = i % 2;
const row = Math.floor(i / 2);
const x = 0.3 + col * 4.85;
const y = 1.1 + row * 1.05;
sl.addShape(pres.ShapeType.rect, { x, y, w: 4.6, h: 0.95, fill: { color: DARK_BG }, line: { color: ACCENT1, pt: 1 }, rounding: true });
sl.addText(p[0], { x: x + 0.1, y: y + 0.04, w: 1.3, h: 0.87, fontSize: 11, bold: true, color: ACCENT1, fontFace: "Calibri", valign: "middle" });
sl.addText(p[1], { x: x + 1.35, y: y + 0.04, w: 3.15, h: 0.87, fontSize: 11, color: WHITE, fontFace: "Calibri", valign: "middle" });
});
}
// ═══════════════════════════════════════════════════════════════
// SLIDE 20 - CLOSING
// ═══════════════════════════════════════════════════════════════
{
let sl = pres.addSlide();
sl.background = { color: DARK_BG };
sl.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.15, h: 5.625, fill: { color: ACCENT1 } });
sl.addShape(pres.ShapeType.rect, { x: 0.15, y: 2.4, w: 9.85, h: 0.08, fill: { color: ACCENT2 } });
sl.addText("Thank You", {
x: 0.5, y: 0.9, w: 9, h: 1.3,
fontSize: 52, bold: true, color: WHITE, fontFace: "Calibri", align: "center"
});
sl.addText("Benign Prostatic Hyperplasia — Pathology Seminar", {
x: 0.5, y: 2.6, w: 9, h: 0.6,
fontSize: 18, color: ACCENT2, fontFace: "Calibri Light", align: "center", italic: true
});
sl.addText("References:\nRobbins & Kumar Basic Pathology, 10th Edition (Elsevier)\nRobbins, Cotran & Kumar Pathologic Basis of Disease, 10th Edition (Elsevier)\nCampbell-Walsh-Wein Urology, 12th Edition", {
x: 1.5, y: 3.4, w: 7, h: 1.8,
fontSize: 12, color: SUBTEXT, fontFace: "Calibri", align: "center"
});
}
// ═══════════════════════════════════════════════════════════════
// WRITE FILE
// ═══════════════════════════════════════════════════════════════
pres.writeFile({ fileName: "/home/daytona/workspace/bph-seminar/BPH_Pathology_Seminar.pptx" })
.then(() => console.log("SUCCESS: /home/daytona/workspace/bph-seminar/BPH_Pathology_Seminar.pptx"))
.catch(err => { console.error("ERROR:", err); process.exit(1); });
cd /home/daytona/workspace/bph-seminar && node bph_presentation.js 2>&1
ls -lh /home/daytona/workspace/bph-seminar/BPH_Pathology_Seminar.pptx
BPH Pathology Seminar
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Title slide |
| 2 | Outline (8 chapters) |
| 3-4 | Introduction & Epidemiology (90% by 8th decade; key stats) |
| 5 | Chapter opener |
| 6 | Etiology - DHT pathway diagram: Testosterone → 5α-Reductase → DHT → Androgen Receptor → Gene Expression; estrogen's synergistic role |
| 7 | Zone Anatomy - Transition zone as BPH origin vs peripheral zone for carcinoma |
| 8 | Chapter opener |
| 9 | Gross Morphology - 60-100g weight; slit-like urethra; with Robbins FIG. 16.11 composite image |
| 10 | Chapter opener |
| 11 | Microscopic Features - Two-cell layer (columnar + basal cells), corpora amylacea, fibromuscular stroma |
| 12 | Chapter opener |
| 13 | Histopathology image slide - Robbins composite (gross cross-section + low/high power) with labeled callouts |
| 14 | Corpora amylacea image slide with labeled description |
| 15 | BPH vs Adenocarcinoma comparison table - 8 features side-by-side |
| 16 | Chapter opener |
| 17 | Clinical Features (LUTS) - storage, voiding, post-micturition symptoms + complications |
| 18 | Chapter opener |
| 19 | Management - Medical (α1-blockers, 5α-RI) vs Surgical (TURP, HIFU, laser, etc.) |
| 20 | Key Takeaways summary grid |
| 21 | Closing / Thank You with references |