detailed slide show on benign prostatic hypertrophy from smith and tangos and campbell

Reading File
Reading File
Reading File
Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Searching Images

benign prostatic hyperplasia pathology anatomy zones

Reading File
Searching Images

TURP transurethral resection prostate surgical technique

Reading File
Running Command

mkdir -p /home/daytona/workspace/bph-presentation && ls /home/daytona/workspace/…

Writing File

~/bph-presentation/create_bph.js

const pptxgen = require("pptxgenjs");
const { execSync } = require("child_process");

// ─── Fetch images as base64 ───────────────────────────────────────────────────
const imageUrls = [
  "https://cdn.orris.care/cdss_images/Pathology_1760054422051_bdf8da5f-f6f4-414c-8056-66bd451bf4de.jpg",   // gross BPH pathology - median lobe
  "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_bc45e5331ea4d95bf8c24ee92fdb6ca391dd8f1c31f0aeae5a12e6c5be48a8d3.jpg", // MRI T2 transition zone
  "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_c78264686386afece1f827a6e47c0faa5af3c485b3feb4297d5e4d020b6f7ab9.jpg", // MRI comparison normal vs BPH vs PCa
  "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_f238f3fce5f523afc1a5273b859cc70d35829937a85455f334c4c3382f44fa99.jpg", // TURP illustration
  "https://cdn.orris.care/cdss_images/224c06eb80e45cfe4cbcf1aaa5cf4ae4d8cdf3eafc7b7dd771d7a12b5a5709b3.png",   // PSA vs prostate volume chart
];

let imgs = [];
try {
  const raw = execSync(
    `node /home/daytona/skills/shared/scripts/fetch_images.js ` +
    imageUrls.map(u => `"${u}"`).join(" "),
    { maxBuffer: 50 * 1024 * 1024 }
  ).toString();
  imgs = JSON.parse(raw);
} catch (e) {
  console.error("Image fetch failed:", e.message);
  imgs = imageUrls.map(() => ({ base64: null, error: "fetch failed" }));
}

// ─── Color palette ────────────────────────────────────────────────────────────
const C = {
  navy:    "0D2B45",   // dominant dark
  teal:    "1B6CA8",   // supporting mid-blue
  sky:     "4DB6E3",   // accent bright
  white:   "FFFFFF",
  offwhite:"F2F7FA",
  text:    "1C2B3A",
  muted:   "8095A8",
  yellow:  "F5A623",
  red:     "D0021B",
  green:   "27AE60",
};

// ─── Presentation setup ───────────────────────────────────────────────────────
let pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title   = "Benign Prostatic Hyperplasia";
pres.subject = "Urology";
pres.author  = "Smith & Tanagho / Campbell-Walsh-Wein";

// ─── Helper: dark header bar ──────────────────────────────────────────────────
function headerBar(slide, title, subtitle) {
  slide.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 1.05, fill: { color: C.navy } });
  slide.addShape(pres.shapes.RECTANGLE, { x: 0, y: 1.05, w: 10, h: 0.06, fill: { color: C.sky } });
  slide.addText(title, {
    x: 0.35, y: 0.0, w: 9.3, h: 0.75,
    fontSize: 24, bold: true, color: C.white, valign: "middle", margin: 0,
  });
  if (subtitle) {
    slide.addText(subtitle, {
      x: 0.35, y: 0.72, w: 9.3, h: 0.38,
      fontSize: 12, color: C.sky, valign: "top", margin: 0, italic: true,
    });
  }
}

// ─── Helper: footer ───────────────────────────────────────────────────────────
function footer(slide, source) {
  slide.addShape(pres.shapes.RECTANGLE, { x: 0, y: 5.42, w: 10, h: 0.2, fill: { color: C.navy } });
  slide.addText(source || "Smith & Tanagho's General Urology, 19e  |  Campbell-Walsh-Wein Urology", {
    x: 0.2, y: 5.42, w: 9.6, h: 0.2,
    fontSize: 7, color: C.muted, valign: "middle", margin: 0,
  });
}

// ─── Helper: bullet list ──────────────────────────────────────────────────────
function makeBullets(items, opts = {}) {
  return items.map((item, i) => ({
    text: item,
    options: {
      bullet: { code: "2022" },
      fontSize: opts.fontSize || 16,
      color: opts.color || C.text,
      paraSpaceBefore: i === 0 ? 0 : (opts.spacing || 6),
      breakLine: i < items.length - 1,
    },
  }));
}

// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 1 – TITLE
// ═══════════════════════════════════════════════════════════════════════════════
{
  let s = pres.addSlide();
  // full-slide dark gradient-like background
  s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.navy } });
  s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 3.8, w: 10, h: 1.825, fill: { color: "122036" } });
  // Teal accent bar
  s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 2.4, w: 10, h: 0.08, fill: { color: C.sky } });

  s.addText("BENIGN PROSTATIC\nHYPERPLASIA", {
    x: 0.6, y: 0.6, w: 8.8, h: 1.9,
    fontSize: 44, bold: true, color: C.white, align: "center", valign: "middle",
    charSpacing: 2,
  });
  s.addText("BPH — From Pathophysiology to Management", {
    x: 0.6, y: 2.55, w: 8.8, h: 0.55,
    fontSize: 18, color: C.sky, align: "center", italic: true, valign: "middle",
  });
  s.addText("Sources:", {
    x: 0.6, y: 3.2, w: 8.8, h: 0.35,
    fontSize: 11, color: C.muted, align: "center", bold: true,
  });
  s.addText("Smith & Tanagho's General Urology, 19th Edition\nCampbell-Walsh-Wein Urology, 12th Edition", {
    x: 0.6, y: 3.5, w: 8.8, h: 0.8,
    fontSize: 13, color: "A8C8E0", align: "center",
  });
  s.addText("UROLOGY", {
    x: 0.6, y: 5.1, w: 8.8, h: 0.35,
    fontSize: 9, color: C.muted, align: "center", charSpacing: 8,
  });
}

// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 2 – OVERVIEW / OUTLINE
// ═══════════════════════════════════════════════════════════════════════════════
{
  let s = pres.addSlide();
  s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.offwhite } });
  headerBar(s, "Lecture Overview", "What we will cover");
  footer(s);

  const topics = [
    ["01", "Definition & Epidemiology",   "Prevalence, risk factors, demographics"],
    ["02", "Anatomy & Zones",             "McNeal's zonal anatomy, transition zone"],
    ["03", "Etiology & Pathogenesis",     "Androgens, growth factors, stem cells"],
    ["04", "Pathology & Pathophysiology", "Mechanical vs dynamic obstruction, bladder changes"],
    ["05", "Clinical Presentation",       "Obstructive & irritative symptoms, IPSS"],
    ["06", "Investigations",              "DRE, PSA, urodynamics, imaging"],
    ["07", "Medical Management",          "α-blockers, 5α-RI, PDE5i, combination therapy"],
    ["08", "Surgical Management",         "TURP, HoLEP, laser, minimally invasive procedures"],
    ["09", "Complications",               "AUR, bladder decompensation, hematuria, stones"],
  ];

  topics.forEach(([num, title, sub], i) => {
    const col  = i < 5 ? 0 : 1;
    const row  = i < 5 ? i : i - 5;
    const xOff = col === 0 ? 0.3 : 5.2;
    const yOff = 1.3 + row * 0.82;

    s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
      x: xOff, y: yOff, w: 4.6, h: 0.66,
      fill: { color: C.white },
      line: { color: C.sky, pt: 1.5 },
      shadow: { type: "outer", color: "000000", blur: 4, offset: 1, angle: 135, opacity: 0.08 },
      rectRadius: 0.08,
    });
    s.addShape(pres.shapes.RECTANGLE, { x: xOff, y: yOff, w: 0.38, h: 0.66, fill: { color: C.teal }, rectRadius: 0 });
    s.addText(num, { x: xOff, y: yOff, w: 0.38, h: 0.66, fontSize: 10, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
    s.addText(title, { x: xOff + 0.44, y: yOff + 0.04, w: 4.1, h: 0.3, fontSize: 12, bold: true, color: C.navy, margin: 0 });
    s.addText(sub,   { x: xOff + 0.44, y: yOff + 0.32, w: 4.1, h: 0.28, fontSize: 9.5, color: C.muted, margin: 0 });
  });
}

// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 3 – EPIDEMIOLOGY
// ═══════════════════════════════════════════════════════════════════════════════
{
  let s = pres.addSlide();
  s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.offwhite } });
  headerBar(s, "Epidemiology", "Smith & Tanagho, 19e — Chapter 38");
  footer(s);

  // Big stat cards
  const stats = [
    { val: "20%", label: "Men 41–50 yrs\nHistologic BPH" },
    { val: "50%", label: "Men 51–60 yrs\nHistologic BPH" },
    { val: "90%", label: "Men > 80 yrs\nHistologic BPH" },
    { val: "25%", label: "Age 55 yrs\nObstructive symptoms" },
    { val: "50%", label: "Age 75 yrs\nDecreased stream" },
  ];

  stats.forEach((st, i) => {
    const x = 0.3 + i * 1.88;
    s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
      x: x, y: 1.25, w: 1.72, h: 1.6,
      fill: { color: C.navy }, rectRadius: 0.1,
    });
    s.addText(st.val, {
      x: x, y: 1.3, w: 1.72, h: 0.8,
      fontSize: 28, bold: true, color: C.sky, align: "center", valign: "middle", margin: 0,
    });
    s.addText(st.label, {
      x: x, y: 2.1, w: 1.72, h: 0.65,
      fontSize: 9.5, color: C.white, align: "center", valign: "top", margin: 0,
    });
  });

  s.addShape(pres.shapes.RECTANGLE, { x: 0.3, y: 3.05, w: 9.4, h: 0.04, fill: { color: C.sky } });

  s.addText("Key Risk Factors", { x: 0.35, y: 3.15, w: 9.3, h: 0.32, fontSize: 14, bold: true, color: C.navy });
  s.addText(makeBullets([
    "Age — most important, non-modifiable risk factor",
    "Hereditary: ~50% of men <60 undergoing BPH surgery have heritable form; autosomal dominant trait; 4× increased relative risk in first-degree male relatives",
    "Racial differences reported; androgen and estrogen levels implicated",
    "Functional testes required — castration results in regression of established BPH",
  ], { fontSize: 13 }), { x: 0.35, y: 3.45, w: 9.3, h: 1.8, valign: "top" });
}

// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 4 – ANATOMY & ZONES
// ═══════════════════════════════════════════════════════════════════════════════
{
  let s = pres.addSlide();
  s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.offwhite } });
  headerBar(s, "Prostatic Zonal Anatomy", "McNeal's classification — BPH arises in the Transition Zone");
  footer(s);

  // Left: text
  s.addText("McNeal's Zones", { x: 0.35, y: 1.2, w: 5.0, h: 0.38, fontSize: 14, bold: true, color: C.navy });

  const zones = [
    { z: "Transition Zone (TZ)", pct: "5–10%", desc: "Periurethral; site of BPH", col: C.teal },
    { z: "Central Zone (CZ)",    pct: "25%",   desc: "Surrounds ejaculatory ducts; rarely involved in BPH", col: C.sky },
    { z: "Peripheral Zone (PZ)", pct: "70%",   desc: "Bulk of posterior prostate; site of most prostate cancers", col: "27AE60" },
    { z: "Anterior Fibromuscular Stroma", pct: "—", desc: "No glandular elements; smooth muscle & fibrous tissue", col: C.yellow },
  ];

  zones.forEach((z, i) => {
    const y = 1.65 + i * 0.83;
    s.addShape(pres.shapes.RECTANGLE, { x: 0.35, y: y, w: 0.22, h: 0.6, fill: { color: z.col } });
    s.addText(z.z, { x: 0.65, y: y + 0.03, w: 4.5, h: 0.28, fontSize: 12, bold: true, color: C.navy, margin: 0 });
    s.addText(`${z.pct} of gland — ${z.desc}`, { x: 0.65, y: y + 0.3, w: 4.5, h: 0.28, fontSize: 10, color: C.muted, margin: 0 });
  });

  s.addText("BPH is a hyperplastic process originating in the periurethral transition zone.\nMicroscopy shows nodular growth with variable stroma (smooth muscle, collagen) and epithelium.", {
    x: 0.35, y: 5.0, w: 5.0, h: 0.5,
    fontSize: 9.5, color: C.muted, italic: true,
  });

  // Right: MRI image
  if (imgs[1] && !imgs[1].error) {
    s.addImage({ data: imgs[1].base64, x: 5.6, y: 1.2, w: 4.0, h: 3.8, altText: "T2 MRI BPH transition zone" });
    s.addText("T2 MRI: TZ expansion compresses peripheral zone (arrows)", {
      x: 5.6, y: 5.0, w: 4.0, h: 0.45,
      fontSize: 8.5, color: C.muted, italic: true, align: "center",
    });
  }
}

// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 5 – ETIOLOGY & PATHOGENESIS
// ═══════════════════════════════════════════════════════════════════════════════
{
  let s = pres.addSlide();
  s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.offwhite } });
  headerBar(s, "Etiology & Pathogenesis", "Campbell-Walsh-Wein — Chapter 144 & Smith & Tanagho Ch. 38");
  footer(s);

  // Central circle concept
  s.addShape(pres.shapes.OVAL, { x: 3.9, y: 2.0, w: 2.2, h: 1.1, fill: { color: C.navy } });
  s.addText("BPH\nPathogenesis", { x: 3.9, y: 2.0, w: 2.2, h: 1.1, fontSize: 11, bold: true, color: C.white, align: "center", valign: "middle" });

  // Spokes
  const factors = [
    { label: "Androgens\n(DHT via 5α-reductase)", x: 0.15, y: 1.55, w: 2.3, h: 0.75 },
    { label: "Estrogens\n(induction of AR, aging)", x: 3.6, y: 0.8, w: 2.8, h: 0.75 },
    { label: "Stromal-Epithelial\nInteractions", x: 7.4, y: 1.55, w: 2.4, h: 0.75 },
    { label: "Growth Factors\n(EGF, FGF, IGF)", x: 7.4, y: 3.0, w: 2.4, h: 0.75 },
    { label: "Impaired Apoptosis\n(bcl-2 ↑)", x: 3.6, y: 3.95, w: 2.8, h: 0.75 },
    { label: "α-Adrenergic\nNeurotransmitters", x: 0.15, y: 3.0, w: 2.3, h: 0.75 },
  ];

  factors.forEach((f) => {
    s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
      x: f.x, y: f.y, w: f.w, h: f.h,
      fill: { color: C.teal }, rectRadius: 0.08,
    });
    s.addText(f.label, {
      x: f.x, y: f.y, w: f.w, h: f.h,
      fontSize: 10.5, bold: true, color: C.white, align: "center", valign: "middle",
    });
  });

  s.addText("Key concept: BPH results from both ↑ cell proliferation AND ↓ programmed cell death (apoptosis)\nCastration → regression of BPH; DHT is the key intracellular androgen", {
    x: 0.3, y: 4.9, w: 9.4, h: 0.55,
    fontSize: 10, color: C.navy, italic: true, align: "center",
  });
}

// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 6 – PATHOLOGY (Gross + Histology)
// ═══════════════════════════════════════════════════════════════════════════════
{
  let s = pres.addSlide();
  s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.offwhite } });
  headerBar(s, "Pathology of BPH", "Gross & Microscopic Features");
  footer(s);

  // Left: gross image
  if (imgs[0] && !imgs[0].error) {
    s.addImage({ data: imgs[0].base64, x: 0.3, y: 1.2, w: 4.0, h: 3.5, altText: "Gross BPH pathology median lobe" });
    s.addText("Gross autopsy specimen: BPH with median lobe enlargement projecting into bladder neck", {
      x: 0.3, y: 4.72, w: 4.0, h: 0.55,
      fontSize: 8.5, color: C.muted, italic: true, align: "center",
    });
  }

  // Right: key points
  s.addText("Gross Pathology", { x: 4.6, y: 1.2, w: 5.1, h: 0.35, fontSize: 14, bold: true, color: C.navy });
  s.addText(makeBullets([
    "Develops in the transition zone (periurethral)",
    "Nodular enlargement — tan/brown, firm nodules",
    "Median lobe protrudes into bladder neck → ball-valve obstruction",
    "Prostate can weigh from normal ~20 g up to >200 g in severe BPH",
  ], { fontSize: 12 }), { x: 4.6, y: 1.55, w: 5.1, h: 1.6, valign: "top" });

  s.addShape(pres.shapes.RECTANGLE, { x: 4.6, y: 3.2, w: 5.1, h: 0.04, fill: { color: C.sky } });
  s.addText("Microscopic Pathology", { x: 4.6, y: 3.3, w: 5.1, h: 0.35, fontSize: 14, bold: true, color: C.navy });
  s.addText(makeBullets([
    "Hyperplasia (↑ cell number), not hypertrophy",
    "Variable proportions: stroma (smooth muscle + collagen) vs epithelium",
    "Smooth muscle-dominant BPH → responds to α-blockers",
    "Epithelium-dominant BPH → responds to 5α-reductase inhibitors",
    "Collagen-dominant BPH → poor response to medical therapy",
  ], { fontSize: 11.5 }), { x: 4.6, y: 3.65, w: 5.1, h: 1.8, valign: "top" });
}

// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 7 – PATHOPHYSIOLOGY
// ═══════════════════════════════════════════════════════════════════════════════
{
  let s = pres.addSlide();
  s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.offwhite } });
  headerBar(s, "Pathophysiology", "Mechanical vs Dynamic Obstruction — Bladder Response");
  footer(s);

  // Column 1
  s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x: 0.3, y: 1.25, w: 2.9, h: 1.9, fill: { color: C.navy }, rectRadius: 0.1 });
  s.addText("MECHANICAL\nOBSTRUCTION", { x: 0.3, y: 1.25, w: 2.9, h: 0.55, fontSize: 12, bold: true, color: C.sky, align: "center", valign: "middle" });
  s.addText("Enlarged prostate intrudes into urethra/bladder neck → ↑ outlet resistance\nMedian lobe enlargement not palpable on DRE (poor size-symptom correlation)", {
    x: 0.4, y: 1.78, w: 2.7, h: 1.3, fontSize: 10, color: C.white, valign: "top",
  });

  // Column 2
  s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x: 3.55, y: 1.25, w: 2.9, h: 1.9, fill: { color: C.teal }, rectRadius: 0.1 });
  s.addText("DYNAMIC\nOBSTRUCTION", { x: 3.55, y: 1.25, w: 2.9, h: 0.55, fontSize: 12, bold: true, color: C.white, align: "center", valign: "middle" });
  s.addText("Prostatic stroma rich in α-adrenergic receptors → smooth muscle tone\nα-blockade decreases tone → reduces outlet resistance\nExplains variable, fluctuating symptoms", {
    x: 3.65, y: 1.78, w: 2.7, h: 1.3, fontSize: 10, color: C.white, valign: "top",
  });

  // Column 3
  s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x: 6.8, y: 1.25, w: 2.9, h: 1.9, fill: { color: "C0392B" }, rectRadius: 0.1 });
  s.addText("BLADDER\nRESPONSE", { x: 6.8, y: 1.25, w: 2.9, h: 0.55, fontSize: 12, bold: true, color: C.white, align: "center", valign: "middle" });
  s.addText("Detrusor hypertrophy & hyperplasia\nCollagen deposition → ↓ compliance\nDetrusor instability (LUTS)\nTrabeculation → sacculation → diverticula", {
    x: 6.9, y: 1.78, w: 2.7, h: 1.3, fontSize: 10, color: C.white, valign: "top",
  });

  // Arrow flow
  s.addShape(pres.shapes.RIGHT_ARROW, { x: 3.2, y: 1.85, w: 0.35, h: 0.5, fill: { color: C.yellow } });
  s.addShape(pres.shapes.RIGHT_ARROW, { x: 6.45, y: 1.85, w: 0.35, h: 0.5, fill: { color: C.yellow } });

  // Symptoms breakdown
  s.addShape(pres.shapes.RECTANGLE, { x: 0.3, y: 3.3, w: 9.4, h: 0.04, fill: { color: C.sky } });
  s.addText("Resultant Symptoms", { x: 0.3, y: 3.4, w: 9.4, h: 0.32, fontSize: 13, bold: true, color: C.navy });

  s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x: 0.3, y: 3.8, w: 4.5, h: 1.6, fill: { color: C.white }, line: { color: C.teal, pt: 1.5 }, rectRadius: 0.08 });
  s.addText("OBSTRUCTIVE (Voiding)", { x: 0.4, y: 3.83, w: 4.3, h: 0.3, fontSize: 11, bold: true, color: C.teal });
  s.addText("Hesitancy · Decreased force/caliber\nSense of incomplete emptying · Double voiding\nStraining to urinate · Post-void dribbling", {
    x: 0.4, y: 4.12, w: 4.3, h: 1.2, fontSize: 11, color: C.text,
  });

  s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x: 5.2, y: 3.8, w: 4.5, h: 1.6, fill: { color: C.white }, line: { color: "C0392B", pt: 1.5 }, rectRadius: 0.08 });
  s.addText("IRRITATIVE (Storage)", { x: 5.3, y: 3.83, w: 4.3, h: 0.3, fontSize: 11, bold: true, color: "C0392B" });
  s.addText("Urgency · Frequency · Nocturia\nUrge incontinence (detrusor instability)\nOverflow incontinence (retention)", {
    x: 5.3, y: 4.12, w: 4.3, h: 1.2, fontSize: 11, color: C.text,
  });
}

// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 8 – CLINICAL FINDINGS & IPSS
// ═══════════════════════════════════════════════════════════════════════════════
{
  let s = pres.addSlide();
  s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.offwhite } });
  headerBar(s, "Clinical Findings & IPSS", "International Prostate Symptom Score — Gold Standard Assessment");
  footer(s);

  // IPSS card
  s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x: 0.3, y: 1.2, w: 5.4, h: 4.2, fill: { color: C.white }, line: { color: C.sky, pt: 2 }, rectRadius: 0.1,
    shadow: { type: "outer", color: "000000", blur: 6, offset: 2, angle: 135, opacity: 0.1 } });
  s.addShape(pres.shapes.RECTANGLE, { x: 0.3, y: 1.2, w: 5.4, h: 0.5, fill: { color: C.teal }, rectRadius: 0 });
  s.addText("INTERNATIONAL PROSTATE SYMPTOM SCORE (IPSS)", {
    x: 0.35, y: 1.2, w: 5.3, h: 0.5, fontSize: 10, bold: true, color: C.white, align: "center", valign: "middle",
  });

  const ipssRows = [
    ["7 Questions", "Obstructive + irritative; scored 0–5 each"],
    ["Score 0–7",   "MILD symptoms"],
    ["Score 8–19",  "MODERATE symptoms"],
    ["Score 20–35", "SEVERE symptoms"],
    ["+ QoL question", "Bother score (0 = delighted, 6 = terrible)"],
    ["Reliability", "Extensively validated, >100 languages"],
  ];

  ipssRows.forEach(([k, v], i) => {
    const y = 1.82 + i * 0.58;
    const bg = i % 2 === 0 ? C.offwhite : C.white;
    s.addShape(pres.shapes.RECTANGLE, { x: 0.35, y: y, w: 5.3, h: 0.55, fill: { color: bg } });
    s.addText(k, { x: 0.4, y: y + 0.1, w: 1.8, h: 0.35, fontSize: 11, bold: true, color: C.navy, margin: 0 });
    s.addText(v, { x: 2.2, y: y + 0.1, w: 3.3, h: 0.35, fontSize: 11, color: C.text, margin: 0 });
  });

  // Right column: clinical exam
  s.addText("Clinical Examination", { x: 6.0, y: 1.2, w: 3.7, h: 0.35, fontSize: 14, bold: true, color: C.navy });
  s.addText(makeBullets([
    "Digital Rectal Exam (DRE): size, consistency, nodules — poor correlation with symptom severity",
    "Focused neurologic exam: exclude neurogenic causes",
    "Urinalysis: exclude infection, hematuria, glycosuria",
    "Serum PSA: prostate volume predictor (log-linear), cancer screening, guides 5α-RI response",
    "Serum creatinine: upper tract obstruction",
    "Post-void residual (PVR) by ultrasound",
    "Uroflowmetry: Qmax <10 mL/s suggests obstruction",
  ], { fontSize: 11 }), { x: 6.0, y: 1.65, w: 3.7, h: 3.8, valign: "top" });
}

// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 9 – PSA & IMAGING
// ═══════════════════════════════════════════════════════════════════════════════
{
  let s = pres.addSlide();
  s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.offwhite } });
  headerBar(s, "PSA, Imaging & Urodynamics", "Investigations in BPH — Campbell-Walsh Ch.144");
  footer(s, "Campbell-Walsh-Wein Urology 12e — Chapter 144");

  // PSA chart
  if (imgs[4] && !imgs[4].error) {
    s.addImage({ data: imgs[4].base64, x: 0.3, y: 1.2, w: 4.5, h: 3.2, altText: "PSA vs prostate volume" });
    s.addText("PSA vs. Prostate Volume (log-linear relationship stratified by age)", {
      x: 0.3, y: 4.4, w: 4.5, h: 0.45,
      fontSize: 8.5, color: C.muted, italic: true, align: "center",
    });
  }

  // MRI comparison image
  if (imgs[2] && !imgs[2].error) {
    s.addImage({ data: imgs[2].base64, x: 5.1, y: 1.2, w: 4.6, h: 2.6, altText: "MRI comparison normal BPH PCa" });
    s.addText("T2-MRI comparison: Normal vs BPH (TZ expansion) vs Prostate Cancer (PZ lesion)", {
      x: 5.1, y: 3.82, w: 4.6, h: 0.45,
      fontSize: 8.5, color: C.muted, italic: true, align: "center",
    });
  }

  s.addShape(pres.shapes.RECTANGLE, { x: 5.1, y: 4.35, w: 4.6, h: 0.04, fill: { color: C.sky } });
  s.addText(makeBullets([
    "Transrectal ultrasound (TRUS): prostate volume estimation",
    "MRI: zonal anatomy, cancer staging, surgical planning",
    "Urodynamics: pressure-flow studies differentiate BOO from detrusor underactivity",
    "Cystoscopy: evaluate for bladder stones, diverticula, stricture",
  ], { fontSize: 10.5 }), { x: 5.1, y: 4.42, w: 4.6, h: 1.1, valign: "top" });
}

// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 10 – MEDICAL MANAGEMENT (α-BLOCKERS & 5α-RI)
// ═══════════════════════════════════════════════════════════════════════════════
{
  let s = pres.addSlide();
  s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.offwhite } });
  headerBar(s, "Medical Management — Alpha-Blockers & 5α-Reductase Inhibitors", "Smith & Tanagho Ch.38 · Campbell-Walsh Ch.145");
  footer(s);

  // Table: α-blockers
  s.addShape(pres.shapes.RECTANGLE, { x: 0.3, y: 1.2, w: 9.4, h: 0.38, fill: { color: C.teal } });
  s.addText("α₁-ADRENERGIC BLOCKERS — Mechanism: block prostatic/bladder neck α₁-receptors → ↓ smooth muscle tone → ↓ dynamic obstruction", {
    x: 0.4, y: 1.22, w: 9.2, h: 0.34, fontSize: 10.5, bold: true, color: C.white, valign: "middle", margin: 0,
  });

  const abRows = [
    ["Drug", "Class", "Dose", "Notes"],
    ["Tamsulosin",    "α₁A-selective", "0.4–0.8 mg/day", "Fewer CV effects; retrograde ejaculation; floppy iris"],
    ["Silodosin",     "α₁A-selective", "8 mg/day",       "Most uro-selective; high rates ejaculatory dysfunction"],
    ["Alfuzosin",     "α₁-selective",  "10 mg/day",      "Extended release; minimal ejaculatory side effects"],
    ["Terazosin",     "α₁, long-acting","5–10 mg/day",   "Dose titration needed; useful if concurrent HTN"],
    ["Doxazosin",     "α₁, long-acting","4–8 mg/day",    "Dose titration; CV side effects (dizziness, syncope)"],
  ];

  abRows.forEach((row, i) => {
    const y = 1.6 + i * 0.37;
    const bg = i === 0 ? C.navy : (i % 2 === 0 ? C.white : C.offwhite);
    s.addShape(pres.shapes.RECTANGLE, { x: 0.3, y: y, w: 9.4, h: 0.35, fill: { color: bg } });
    const cols = [1.0, 2.0, 1.7, 4.7];
    const xs   = [0.32, 1.34, 3.36, 5.08];
    row.forEach((cell, ci) => {
      s.addText(cell, {
        x: xs[ci], y: y + 0.04, w: cols[ci], h: 0.28,
        fontSize: i === 0 ? 10 : 9.5,
        bold: i === 0,
        color: i === 0 ? C.sky : C.text,
        margin: 0,
      });
    });
  });

  // 5α-RI section
  s.addShape(pres.shapes.RECTANGLE, { x: 0.3, y: 3.65, w: 9.4, h: 0.38, fill: { color: C.navy } });
  s.addText("5α-REDUCTASE INHIBITORS — Block T→DHT conversion → ↓ epithelial component → prostate shrinks ~30% in 6 months", {
    x: 0.4, y: 3.67, w: 9.2, h: 0.34, fontSize: 10.5, bold: true, color: C.sky, valign: "middle", margin: 0,
  });

  const fivRows = [
    ["Finasteride 5 mg/day",  "Type II 5α-RI", "PSA ↓ 50%; efficacy only if prostate >40 cm³; decreased libido, ED, ↓ ejaculate"],
    ["Dutasteride 0.5 mg/day","Types I+II 5α-RI", "Dual inhibition; similar efficacy; AUR ↓ 57%, surgery ↓ 48% in COMBAT trial"],
  ];
  fivRows.forEach((row, i) => {
    const y = 4.1 + i * 0.6;
    s.addShape(pres.shapes.RECTANGLE, { x: 0.3, y: y, w: 9.4, h: 0.55, fill: { color: i === 0 ? C.offwhite : C.white } });
    s.addText(row[0], { x: 0.35, y: y + 0.08, w: 2.2, h: 0.4, fontSize: 10.5, bold: true, color: C.navy, margin: 0 });
    s.addText(row[1], { x: 2.55, y: y + 0.08, w: 1.6, h: 0.4, fontSize: 10, color: C.teal, margin: 0 });
    s.addText(row[2], { x: 4.15, y: y + 0.08, w: 5.5, h: 0.4, fontSize: 10, color: C.text, margin: 0 });
  });
}

// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 11 – COMBINATION & OTHER MEDICAL THERAPIES
// ═══════════════════════════════════════════════════════════════════════════════
{
  let s = pres.addSlide();
  s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.offwhite } });
  headerBar(s, "Combination & Additional Medical Therapies", "Campbell-Walsh Ch.145 — Evidence-Based Combinations");
  footer(s, "Campbell-Walsh-Wein Urology 12e — Chapter 145");

  const therapies = [
    {
      title: "α-Blocker + 5α-RI (CombAT/MTOPS)",
      color: C.teal,
      points: [
        "CombAT trial (dutasteride + tamsulosin): 32% ↓ AUR, 21% ↓ surgical intervention vs monotherapy",
        "MTOPS (doxazosin + finasteride): 67% ↓ clinical progression vs placebo",
        "Combination superior for large prostates (>30–40 g) with severe symptoms",
        "Best suited for patients with BOTH storage and voiding LUTS",
      ]
    },
    {
      title: "Antimuscarinics (Overactive Bladder Component)",
      color: C.navy,
      points: [
        "Oxybutynin, tolterodine, solifenacin — target M2/M3 receptors → ↓ detrusor contractions",
        "Use in men with predominant storage LUTS (urgency, frequency)",
        "Risk of urinary retention; caution if PVR >200 mL or Qmax <10 mL/s",
        "Combination with α-blockers reduces IPSS storage sub-scores",
      ]
    },
    {
      title: "PDE5 Inhibitors (Tadalafil 5 mg/day)",
      color: "27AE60",
      points: [
        "FDA-approved for LUTS/BPH; approved also for concurrent ED",
        "↑ cGMP → smooth muscle relaxation in prostate, bladder, urethra",
        "Improves IPSS ~3–5 points; does NOT improve urinary flow rate significantly",
        "Preferred in men with concurrent erectile dysfunction",
      ]
    },
  ];

  therapies.forEach((th, i) => {
    const y = 1.22 + i * 1.4;
    s.addShape(pres.shapes.RECTANGLE, { x: 0.3, y: y, w: 9.4, h: 0.35, fill: { color: th.color } });
    s.addText(th.title, { x: 0.4, y: y, w: 9.2, h: 0.35, fontSize: 11.5, bold: true, color: C.white, valign: "middle", margin: 0 });
    s.addText(makeBullets(th.points, { fontSize: 11 }), {
      x: 0.35, y: y + 0.38, w: 9.3, h: 0.96, valign: "top",
    });
  });
}

// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 12 – SURGICAL MANAGEMENT
// ═══════════════════════════════════════════════════════════════════════════════
{
  let s = pres.addSlide();
  s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.offwhite } });
  headerBar(s, "Surgical Management of BPH", "Campbell-Walsh Ch.144/145 · Smith & Tanagho Ch.38");
  footer(s);

  // TURP image
  if (imgs[3] && !imgs[3].error) {
    s.addImage({ data: imgs[3].base64, x: 0.3, y: 1.22, w: 3.5, h: 2.8, altText: "TURP resectoscope diagram" });
    s.addText("TURP: resectoscope removes obstructing tissue from bladder neck to verumontanum", {
      x: 0.3, y: 4.05, w: 3.5, h: 0.45,
      fontSize: 8.5, color: C.muted, italic: true, align: "center",
    });
  }

  // Indications
  s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x: 0.3, y: 4.55, w: 3.5, h: 0.8, fill: { color: C.navy }, rectRadius: 0.08 });
  s.addText("Absolute Indications", { x: 0.4, y: 4.55, w: 3.3, h: 0.28, fontSize: 10, bold: true, color: C.sky, margin: 0 });
  s.addText("AUR refractory to TWOC · Recurrent UTI · Bladder stones · Renal insufficiency from obstruction · Recurrent gross hematuria", {
    x: 0.4, y: 4.82, w: 3.3, h: 0.5, fontSize: 9, color: C.white,
  });

  // Procedures table
  const procs = [
    { name: "TURP (gold standard)", detail: "Monopolar or bipolar; resects to surgical capsule; best studied", note: "TURP syndrome (monopolar); 30-day mortality 0.77% (1990)" },
    { name: "HoLEP", detail: "Holmium laser enucleation; equivalent outcomes; for any prostate size", note: "Steep learning curve; low bleeding; catheter time ↓" },
    { name: "GreenLight PVP", detail: "KTP/LBO laser; outpatient; for anticoagulated/high-risk patients", note: "Mixed outcomes vs TURP; more expensive" },
    { name: "Simple Open/Robotic\nProstatectomy", detail: "For large glands >80–100 g; suprapubic (transvesical) or retropubic", note: "Best for bladder pathology concomitant" },
    { name: "UroLift", detail: "Implants compress lateral lobes; no thermal injury; day procedure", note: "Contraindicated: median lobe, prostate >100 g" },
    { name: "Rezum (Water Vapor)", detail: "Steam injected into TZ → convective necrosis; preserves ejaculation", note: "Symptom improvement over 3 months; can treat median lobe" },
    { name: "TUMT", detail: "Transurethral microwave thermotherapy; office-based; >45°C required", note: "Variable results; results difficult to predict" },
  ];

  procs.forEach((p, i) => {
    const y = 1.22 + i * 0.57;
    const bg = i % 2 === 0 ? C.white : C.offwhite;
    s.addShape(pres.shapes.RECTANGLE, { x: 4.0, y: y, w: 5.7, h: 0.54, fill: { color: bg } });
    s.addText(p.name, { x: 4.05, y: y + 0.04, w: 1.6, h: 0.25, fontSize: 10, bold: true, color: C.navy, margin: 0 });
    s.addText(p.detail, { x: 4.05, y: y + 0.28, w: 1.6, h: 0.22, fontSize: 8.5, color: C.muted, margin: 0 });
    s.addText(p.note,  { x: 5.68, y: y + 0.08, w: 4.0, h: 0.38, fontSize: 9.5, color: C.text, margin: 0 });
  });
  s.addShape(pres.shapes.RECTANGLE, { x: 4.0, y: 1.2, w: 5.7, h: 0.34, fill: { color: C.navy } });
  s.addText("Procedure", { x: 4.05, y: 1.22, w: 1.65, h: 0.3, fontSize: 10, bold: true, color: C.sky, margin: 0 });
  s.addText("Details / Evidence / Notes", { x: 5.68, y: 1.22, w: 4.0, h: 0.3, fontSize: 10, bold: true, color: C.sky, margin: 0 });
}

// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 13 – COMPLICATIONS
// ═══════════════════════════════════════════════════════════════════════════════
{
  let s = pres.addSlide();
  s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.offwhite } });
  headerBar(s, "Complications of BPH", "Campbell-Walsh-Wein — Chapter 144 (Complications Section)");
  footer(s, "Campbell-Walsh-Wein Urology 12e — Chapter 144");

  const comps = [
    { icon: "⚠", title: "Acute Urinary Retention (AUR)", col: "C0392B",
      points: ["Incidence: 5–30% of indications for surgery", "TWOC (trial without catheter) success ~50–60%", "Strong indication for 5α-RI to prevent recurrence", "Risk factors: large prostate, high PSA, low Qmax, severe IPSS"] },
    { icon: "🔵", title: "Bladder Decompensation", col: C.teal,
      points: ["Trabeculation → sacculation → diverticula", "↑ PVR → recurrent UTI", "Risk of irreversible detrusor damage if untreated", "Dense connective tissue deposition; fibrosis"] },
    { icon: "🔴", title: "Upper Tract Complications", col: C.navy,
      points: ["Hydronephrosis, hydroureter from back-pressure", "Renal insufficiency (serum creatinine ↑)", "Prevalence of hydronephrosis 7.6–14.8% in BPH clinic patients", "Renal failure: absolute indication for surgery"] },
    { icon: "🟡", title: "Other Complications", col: "E67E22",
      points: ["Bladder stones: 8× more prevalent vs controls", "Recurrent UTI from incomplete bladder emptying", "Hematuria — exclude cancer first", "Urinary incontinence (overflow or urge types)"] },
  ];

  comps.forEach((c, i) => {
    const col = i < 2 ? 0 : 1;
    const row = i < 2 ? i : i - 2;
    const x   = col === 0 ? 0.3 : 5.2;
    const y   = 1.2 + row * 2.15;
    s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
      x: x, y: y, w: 4.6, h: 2.0,
      fill: { color: C.white }, line: { color: c.col, pt: 2 }, rectRadius: 0.08,
      shadow: { type: "outer", color: "000000", blur: 4, offset: 1, angle: 135, opacity: 0.08 },
    });
    s.addShape(pres.shapes.RECTANGLE, { x: x, y: y, w: 4.6, h: 0.42, fill: { color: c.col }, rectRadius: 0 });
    s.addText(c.title, { x: x + 0.1, y: y, w: 4.4, h: 0.42, fontSize: 12, bold: true, color: C.white, valign: "middle", margin: 0 });
    s.addText(makeBullets(c.points, { fontSize: 11 }), { x: x + 0.1, y: y + 0.45, w: 4.4, h: 1.5, valign: "top" });
  });
}

// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 14 – NATURAL HISTORY & WATCHFUL WAITING
// ═══════════════════════════════════════════════════════════════════════════════
{
  let s = pres.addSlide();
  s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.offwhite } });
  headerBar(s, "Natural History & Watchful Waiting", "Campbell-Walsh Ch.144 — Evidence from Olmsted County & VA Cooperative Study");
  footer(s, "Campbell-Walsh-Wein Urology 12e — Chapter 144");

  // Timeline concept
  s.addText("Disease Progression Timeline", { x: 0.35, y: 1.2, w: 9.3, h: 0.35, fontSize: 13, bold: true, color: C.navy });

  const stages = [
    { label: "Histologic BPH\n(asymptomatic)", sub: "Starts 30s–40s", col: C.sky },
    { label: "LUTS Onset\n(moderate)", sub: "50s–60s", col: C.teal },
    { label: "Symptoms\n(severe)", sub: "60s–70s", col: "E67E22" },
    { label: "Complications\n(AUR, retention)", sub: "Variable", col: "C0392B" },
  ];
  stages.forEach((st, i) => {
    const x = 0.4 + i * 2.3;
    s.addShape(pres.shapes.OVAL, { x: x, y: 1.7, w: 2.0, h: 0.9, fill: { color: st.col } });
    s.addText(st.label, { x: x, y: 1.72, w: 2.0, h: 0.9, fontSize: 10, bold: true, color: C.white, align: "center", valign: "middle" });
    s.addText(st.sub, { x: x, y: 2.64, w: 2.0, h: 0.3, fontSize: 9, color: C.muted, align: "center" });
    if (i < 3) s.addShape(pres.shapes.RIGHT_ARROW, { x: x + 2.0, y: 2.0, w: 0.3, h: 0.35, fill: { color: C.navy } });
  });

  s.addShape(pres.shapes.RECTANGLE, { x: 0.3, y: 3.05, w: 9.4, h: 0.04, fill: { color: C.sky } });

  s.addText("Watchful Waiting (Active Surveillance)", { x: 0.35, y: 3.15, w: 4.5, h: 0.35, fontSize: 13, bold: true, color: C.navy });
  s.addText(makeBullets([
    "Appropriate for mild symptoms (IPSS ≤7) or moderate symptoms with low bother",
    "~40% of men improve spontaneously; ~45% remain stable over 5 years",
    "VA Cooperative Study: patients crossing over later to TURP had LESS improvement than early TURP group",
    "Annual reassessment: IPSS, Qmax, PVR, PSA, creatinine",
  ], { fontSize: 12 }), { x: 0.35, y: 3.52, w: 4.5, h: 1.9, valign: "top" });

  s.addText("Treatment Decision Guide", { x: 5.1, y: 3.15, w: 4.5, h: 0.35, fontSize: 13, bold: true, color: C.navy });
  const decRows = [
    ["IPSS 0–7",    "Watchful waiting",      C.green  ],
    ["IPSS 8–19",   "Medical therapy",       C.teal   ],
    ["IPSS 20–35",  "Medical → Surgery",     "E67E22" ],
    ["AUR/Stones",  "Surgery (absolute)",    "C0392B" ],
    ["Renal failure","Surgery (immediate)",  "8E24AA" ],
  ];
  decRows.forEach(([score, tx, col], i) => {
    const y = 3.56 + i * 0.38;
    s.addShape(pres.shapes.RECTANGLE, { x: 5.1, y: y, w: 4.5, h: 0.36, fill: { color: i % 2 === 0 ? C.offwhite : C.white } });
    s.addShape(pres.shapes.RECTANGLE, { x: 5.1, y: y, w: 0.15, h: 0.36, fill: { color: col } });
    s.addText(score, { x: 5.28, y: y + 0.05, w: 1.2, h: 0.26, fontSize: 10.5, bold: true, color: C.navy, margin: 0 });
    s.addText(tx,    { x: 6.5, y: y + 0.05, w: 3.05, h: 0.26, fontSize: 10.5, color: C.text, margin: 0 });
  });
}

// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 15 – SUMMARY
// ═══════════════════════════════════════════════════════════════════════════════
{
  let s = pres.addSlide();
  s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.navy } });
  s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 1.08, w: 10, h: 0.06, fill: { color: C.sky } });

  s.addText("KEY TAKEAWAYS", {
    x: 0.5, y: 0.15, w: 9, h: 0.9, fontSize: 30, bold: true, color: C.white, align: "center", valign: "middle", charSpacing: 4,
  });

  const takeaways = [
    ["Prevalence",    "Histologic BPH: 20% (40s) → 50% (50–60s) → 90% (>80s); most common benign tumour in men"],
    ["Pathogenesis",  "Multifactorial: androgens (DHT), estrogens, growth factors, impaired apoptosis; transition zone origin"],
    ["Pathophysiology","Dual mechanism: mechanical + dynamic obstruction; secondary bladder changes (trabeculation, instability)"],
    ["Symptoms",      "IPSS: 7 items; 0–7 mild, 8–19 moderate, 20–35 severe; obstructive + irritative symptoms"],
    ["Medical Rx",    "α-blockers (rapid symptom relief) + 5α-RI (large glands, long-term prevention); combination superior"],
    ["Surgery",       "TURP is gold standard; HoLEP equivalent for all sizes; UroLift/Rezum for selected patients"],
    ["Complications", "AUR (surgical indication), bladder decompensation, hydronephrosis, renal failure, bladder stones"],
  ];

  takeaways.forEach(([heading, body], i) => {
    const y = 1.3 + i * 0.6;
    s.addShape(pres.shapes.RECTANGLE, { x: 0.3, y: y, w: 9.4, h: 0.56, fill: { color: i % 2 === 0 ? "0F3050" : "112840" } });
    s.addShape(pres.shapes.RECTANGLE, { x: 0.3, y: y, w: 0.12, h: 0.56, fill: { color: C.sky } });
    s.addText(heading, { x: 0.48, y: y + 0.1, w: 1.55, h: 0.35, fontSize: 11, bold: true, color: C.sky, margin: 0 });
    s.addText(body,    { x: 2.05, y: y + 0.1, w: 7.6, h: 0.38, fontSize: 11, color: C.white, margin: 0 });
  });

  s.addText("Smith & Tanagho's General Urology, 19e  |  Campbell-Walsh-Wein Urology, 12e", {
    x: 0.3, y: 5.38, w: 9.4, h: 0.22,
    fontSize: 8, color: C.muted, align: "center",
  });
}

// ─── Write file ────────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/bph-presentation/BPH_Slideshow.pptx" })
  .then(() => console.log("SUCCESS: BPH_Slideshow.pptx created"))
  .catch(e => { console.error("ERROR:", e); process.exit(1); });
Running Command

cd /home/daytona/workspace/bph-presentation && node create_bph.js 2>&1

You've run out of free credits. Sign up for a free account to continue using Orris.
This is a shared conversation. Sign in to Orris to start your own chat.