Create a ppt on Vinson Plummer syndrome that I can present it to 3rd bds students with all introduction clinical features and radiographs and histological slides

Reading File
Reading File
Reading File
Finding Sources
Searching the Web

Plummer Vinson syndrome clinical features radiograph histology dental students

Reading File
Reading Web Page

https://www.ncbi.nlm.nih.gov/books/NBK538306

Searching the Web

Plummer Vinson syndrome barium swallow radiograph image esophageal web histology slide

Running Command

node /home/daytona/skills/shared/scripts/fetch_images.js "https://prod-images-st…

Running Command

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

Writing File

~/pvs-presentation/build.js

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

// ─── Fetch images ──────────────────────────────────────────────────────────
const imageUrls = [
  "https://prod-images-static.radiopaedia.org/images/1112990/29dcd7db9c136ee7a549fa951c510e_gallery.jpg",  // 0 barium swallow esophageal web
  "https://prod-images-static.radiopaedia.org/images/693/7ec4bb54ec14be01684675be41ec83_gallery.jpeg",     // 1 another barium view
  "https://assets.cureus.com/uploads/figure/file/89777/article_river_00dbf0e0197a11ea9700e185ee98ff3a-Screen-Shot-2019-12-07-at-11.10.40-PM.png", // 2 clinical image
];

const imgs = JSON.parse(execSync(
  `node /home/daytona/skills/shared/scripts/fetch_images.js ${imageUrls.map(u => `"${u}"`).join(" ")}`
).toString());

// ─── Color palette ─────────────────────────────────────────────────────────
const DARK_BG   = "1A1A2E";   // deep navy
const MID_BG    = "16213E";   // darker navy
const ACCENT    = "E94560";   // vivid red-pink
const ACCENT2   = "F5A623";   // amber / gold
const WHITE     = "FFFFFF";
const LIGHT     = "D0E8FF";   // pale blue
const SUBTLE    = "7A8FA6";   // muted blue-grey

// ─── Helpers ───────────────────────────────────────────────────────────────
function addBackground(slide, color) {
  slide.background = { color: color || DARK_BG };
}

function titleBar(slide, text, y = 0, h = 0.65) {
  slide.addShape("rect", { x: 0, y, w: 10, h, fill: { color: ACCENT }, line: { color: ACCENT } });
  slide.addText(text, {
    x: 0.15, y: y + 0.04, w: 9.7, h: h - 0.08,
    fontSize: 20, bold: true, color: WHITE, fontFace: "Calibri", valign: "middle", margin: 0,
  });
}

function sectionLabel(slide, text, x, y, w = 4.5, h = 0.38) {
  slide.addShape("rect", { x, y, w, h, fill: { color: ACCENT2 }, line: { color: ACCENT2 }, rounding: true });
  slide.addText(text, { x, y, w, h, fontSize: 12, bold: true, color: "1A1A2E", fontFace: "Calibri", align: "center", valign: "middle", margin: 0 });
}

function bullets(slide, items, x, y, w, h, opts = {}) {
  const rows = items.map((item, i) => ({
    text: item,
    options: { bullet: { code: "25CF", color: ACCENT2 }, fontSize: opts.fontSize || 15, color: WHITE, fontFace: "Calibri", breakLine: i < items.length - 1 },
  }));
  slide.addText(rows, { x, y, w, h, valign: "top", ...opts });
}

// ─── Build presentation ────────────────────────────────────────────────────
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title  = "Plummer-Vinson Syndrome";
pres.author = "3rd BDS Lecture";

// ══════════════════════════════════════════════════════════════
// SLIDE 1 — TITLE
// ══════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  addBackground(s, DARK_BG);
  // decorative accent strip left
  s.addShape("rect", { x: 0, y: 0, w: 0.25, h: 5.625, fill: { color: ACCENT }, line: { color: ACCENT } });
  s.addShape("rect", { x: 0.25, y: 0, w: 0.08, h: 5.625, fill: { color: ACCENT2 }, line: { color: ACCENT2 } });
  // Main title
  s.addText("PLUMMER-VINSON SYNDROME", {
    x: 0.6, y: 1.4, w: 8.8, h: 1.0,
    fontSize: 38, bold: true, color: WHITE, fontFace: "Calibri",
    charSpacing: 3,
  });
  // Also known as
  s.addText("Paterson-Brown-Kelly Syndrome  |  Sideropenic Dysphagia", {
    x: 0.6, y: 2.5, w: 8.8, h: 0.45,
    fontSize: 16, color: ACCENT2, fontFace: "Calibri", italic: true,
  });
  // Red divider line
  s.addShape("line", { x: 0.6, y: 3.0, w: 8.8, h: 0, line: { color: ACCENT, width: 2 } });
  // Subtitle info
  s.addText("A Presentation for 3rd BDS Students\nDepartment of Oral Medicine & Radiology", {
    x: 0.6, y: 3.15, w: 8.8, h: 0.75,
    fontSize: 14, color: LIGHT, fontFace: "Calibri",
  });
  // Bottom tag
  s.addText("Iron Deficiency Anemia  •  Esophageal Webs  •  Dysphagia", {
    x: 0.6, y: 4.9, w: 8.8, h: 0.4,
    fontSize: 12, color: SUBTLE, fontFace: "Calibri", italic: true,
  });
}

// ══════════════════════════════════════════════════════════════
// SLIDE 2 — OVERVIEW / TABLE OF CONTENTS
// ══════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  addBackground(s, DARK_BG);
  titleBar(s, "OVERVIEW");
  const topics = [
    "01   Introduction & History",
    "02   Synonyms & Epidemiology",
    "03   Etiopathogenesis",
    "04   Clinical Features",
    "05   Oral Manifestations",
    "06   Investigations & Radiographs",
    "07   Histopathology",
    "08   Differential Diagnosis",
    "09   Malignant Potential",
    "10   Management & Prognosis",
  ];
  topics.forEach((t, i) => {
    const col = i < 5 ? 0 : 1;
    const row = i < 5 ? i : i - 5;
    const x = col === 0 ? 0.5 : 5.3;
    const y = 0.85 + row * 0.85;
    s.addShape("rect", { x, y, w: 4.5, h: 0.7, fill: { color: i % 2 === 0 ? MID_BG : "0F3460" }, line: { color: ACCENT, width: 1 }, rounding: true });
    s.addText(t, { x: x + 0.12, y, w: 4.3, h: 0.7, fontSize: 14, color: i % 2 === 0 ? WHITE : LIGHT, fontFace: "Calibri", valign: "middle", bold: i % 2 === 0 });
  });
}

// ══════════════════════════════════════════════════════════════
// SLIDE 3 — INTRODUCTION & HISTORY
// ══════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  addBackground(s, DARK_BG);
  titleBar(s, "INTRODUCTION & HISTORY");

  s.addText("What is Plummer-Vinson Syndrome?", {
    x: 0.4, y: 0.75, w: 9.2, h: 0.4,
    fontSize: 17, bold: true, color: ACCENT2, fontFace: "Calibri",
  });
  s.addText(
    "A rare condition characterized by the classic triad of:\n" +
    "post-cricoid dysphagia, iron-deficiency anemia, and upper esophageal webs.",
    {
      x: 0.4, y: 1.15, w: 9.2, h: 0.75,
      fontSize: 14, color: WHITE, fontFace: "Calibri",
    }
  );

  // Timeline boxes
  const history = [
    { year: "1908–1912", name: "Henry Stanley Plummer", desc: "Mayo Clinic — described esophageal spasm & iron deficiency cases" },
    { year: "1919", name: "Paterson & Brown-Kelly", desc: "British laryngologists — independently published the syndrome features" },
    { year: "1921", name: "Porter Paisley Vinson", desc: "Mayo Clinic — formally described the triad; eponym coined" },
    { year: "1926", name: "Arthur Hurst", desc: "British gastroenterologist — coined the term 'Plummer-Vinson Syndrome'" },
  ];

  history.forEach((h, i) => {
    const x = 0.3 + i * 2.35;
    s.addShape("rect", { x, y: 2.0, w: 2.2, h: 3.2, fill: { color: i % 2 === 0 ? "0F3460" : MID_BG }, line: { color: ACCENT, width: 1.5 }, rounding: true });
    s.addShape("rect", { x, y: 2.0, w: 2.2, h: 0.45, fill: { color: ACCENT }, line: { color: ACCENT }, rounding: true });
    s.addText(h.year, { x, y: 2.0, w: 2.2, h: 0.45, fontSize: 13, bold: true, color: WHITE, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 });
    s.addText(h.name, { x: x + 0.1, y: 2.52, w: 2.0, h: 0.55, fontSize: 11, bold: true, color: ACCENT2, fontFace: "Calibri", align: "center" });
    s.addText(h.desc, { x: x + 0.1, y: 3.1, w: 2.0, h: 1.0, fontSize: 10, color: LIGHT, fontFace: "Calibri", align: "center" });
  });
}

// ══════════════════════════════════════════════════════════════
// SLIDE 4 — SYNONYMS & EPIDEMIOLOGY
// ══════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  addBackground(s, DARK_BG);
  titleBar(s, "SYNONYMS & EPIDEMIOLOGY");

  // Left column - Synonyms
  sectionLabel(s, "OTHER NAMES", 0.3, 0.75);
  const synonyms = [
    "Paterson-Kelly Syndrome (UK)",
    "Paterson-Brown-Kelly Syndrome",
    "Brown-Kelly-Paterson Syndrome",
    "Sideropenic Dysphagia (Scandinavia)",
    "Waldenstrom & Kjellberg Syndrome",
  ];
  bullets(s, synonyms, 0.3, 1.2, 4.4, 2.8, { fontSize: 13 });

  // Right column - Epidemiology
  sectionLabel(s, "EPIDEMIOLOGY", 5.3, 0.75);
  const epi = [
    "Predominantly women (80–95% of cases)",
    "Age group: 40–70 years (4th decade peak)",
    "Post-menopausal women most affected",
    "Previously common in Northern Europe",
    "Now prevalent in India & Middle East",
    "Associated with iron deficiency prevalence",
    "Becoming increasingly rare with iron supplements",
  ];
  bullets(s, epi, 5.3, 1.2, 4.4, 3.5, { fontSize: 12 });

  // Divider
  s.addShape("line", { x: 4.95, y: 0.75, w: 0, h: 4.5, line: { color: ACCENT, width: 1.5 } });
}

// ══════════════════════════════════════════════════════════════
// SLIDE 5 — ETIOPATHOGENESIS
// ══════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  addBackground(s, DARK_BG);
  titleBar(s, "ETIOPATHOGENESIS");

  s.addText("Exact pathogenesis remains UNKNOWN — strongly linked to iron deficiency anemia", {
    x: 0.4, y: 0.72, w: 9.2, h: 0.4,
    fontSize: 13, color: ACCENT2, fontFace: "Calibri", italic: true, bold: true,
  });

  const factors = [
    {
      title: "Iron Deficiency",
      points: ["Iron is essential for iron-containing enzymes", "Deficiency → mucosal and muscular degeneration", "Cytochrome C oxidase depletion in mucosa"],
      color: ACCENT,
    },
    {
      title: "Genetic Predisposition",
      points: ["HLA-DR association suggested", "Familial clustering reported", "Autoimmune component proposed"],
      color: "0096C7",
    },
    {
      title: "Nutritional Deficiency",
      points: ["Riboflavin (B2) deficiency co-factor", "Pyridoxine (B6) deficiency", "Poor dietary intake — common in developing countries"],
      color: "2EC4B6",
    },
    {
      title: "Resulting Changes",
      points: ["Atrophy of esophageal mucosa", "Degeneration of muscle fibers", "Web formation (fibrous tissue + mucosa)", "Epithelial atrophy → premalignant change"],
      color: ACCENT2,
    },
  ];

  factors.forEach((f, i) => {
    const x = 0.3 + (i % 2) * 4.85;
    const y = 1.2 + Math.floor(i / 2) * 2.05;
    s.addShape("rect", { x, y, w: 4.5, h: 1.9, fill: { color: MID_BG }, line: { color: f.color, width: 2 }, rounding: true });
    s.addShape("rect", { x, y, w: 4.5, h: 0.38, fill: { color: f.color }, line: { color: f.color }, rounding: true });
    s.addText(f.title, { x, y, w: 4.5, h: 0.38, fontSize: 12, bold: true, color: WHITE, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 });
    const pts = f.points.map((p, pi) => ({
      text: p,
      options: { bullet: { code: "25B8", color: f.color }, fontSize: 11, color: LIGHT, fontFace: "Calibri", breakLine: pi < f.points.length - 1 },
    }));
    s.addText(pts, { x: x + 0.15, y: y + 0.42, w: 4.2, h: 1.4, valign: "top" });
  });
}

// ══════════════════════════════════════════════════════════════
// SLIDE 6 — CLASSIC TRIAD (visual)
// ══════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  addBackground(s, DARK_BG);
  titleBar(s, "THE CLASSIC TRIAD");

  const triadItems = [
    { num: "1", label: "Iron Deficiency\nAnemia", detail: "Microcytic hypochromic anemia\nHb may drop as low as 4 g/dL\nWeakness, fatigue, pallor", color: ACCENT },
    { num: "2", label: "Esophageal Webs", detail: "Thin mucosal folds in proximal esophagus\nPost-cricoid / upper esophagus\nSingle or multiple webs", color: ACCENT2 },
    { num: "3", label: "Post-cricoid\nDysphagia", detail: "Painless, intermittent initially\nSolids > liquids\nSymptoms when lumen <12 mm", color: "2EC4B6" },
  ];

  // Central circle
  s.addShape("ellipse", { x: 3.65, y: 1.85, w: 2.7, h: 2.7, fill: { color: "0F3460" }, line: { color: WHITE, width: 1 } });
  s.addText("PVS\nTRIAD", { x: 3.65, y: 2.55, w: 2.7, h: 1.3, fontSize: 22, bold: true, color: WHITE, fontFace: "Calibri", align: "center", valign: "middle" });

  // Three cards
  const positions = [
    { x: 0.2, y: 1.5 },
    { x: 0.2, y: 3.5 },
    { x: 6.85, y: 2.5 },
  ];

  triadItems.forEach((t, i) => {
    const { x, y } = positions[i];
    s.addShape("rect", { x, y, w: 3.2, h: 1.65, fill: { color: MID_BG }, line: { color: t.color, width: 2 }, rounding: true });
    s.addShape("ellipse", { x: x + 0.08, y: y + 0.08, w: 0.5, h: 0.5, fill: { color: t.color }, line: { color: t.color } });
    s.addText(t.num, { x: x + 0.08, y: y + 0.08, w: 0.5, h: 0.5, fontSize: 14, bold: true, color: WHITE, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 });
    s.addText(t.label, { x: x + 0.65, y: y + 0.08, w: 2.45, h: 0.55, fontSize: 12, bold: true, color: t.color, fontFace: "Calibri", valign: "middle" });
    s.addText(t.detail, { x: x + 0.12, y: y + 0.65, w: 2.95, h: 0.9, fontSize: 10, color: LIGHT, fontFace: "Calibri" });
    // Connector line to center
    if (i === 0) s.addShape("line", { x: 3.4, y: 2.3, w: -0.5, h: 0.5, line: { color: t.color, width: 1.5, dashType: "dash" } });
    if (i === 1) s.addShape("line", { x: 3.4, y: 3.55, w: -0.5, h: -0.5, line: { color: t.color, width: 1.5, dashType: "dash" } });
    if (i === 2) s.addShape("line", { x: 6.35, y: 3.2, w: 0.5, h: 0, line: { color: t.color, width: 1.5, dashType: "dash" } });
  });
}

// ══════════════════════════════════════════════════════════════
// SLIDE 7 — CLINICAL FEATURES
// ══════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  addBackground(s, DARK_BG);
  titleBar(s, "CLINICAL FEATURES");

  const left = [
    { heading: "Dysphagia", items: ["Painless, slowly progressive", "Initially solids, then semi-solids", "Cervical — felt in throat/neck", "Grade I: occasional on solids", "Grade II: semi-solid diet only"] },
    { heading: "Anemia Features", items: ["Weakness and fatigue", "Pallor", "Dyspnea on exertion", "Tachycardia", "Koilonychia (spoon nails)"] },
  ];

  const right = [
    { heading: "Additional Features", items: ["Glossitis — atrophic smooth tongue", "Angular cheilitis (fissuring)", "Pharyngitis & esophagitis", "Achlorhydria (gastric)", "Splenomegaly (occasional)", "Thyroid enlargement (goiter)"] },
    { heading: "Dental Relevance", items: ["Loss of teeth (edentia)", "Burning mouth / glossodynia", "Atrophic oral mucosa", "Weight loss in advanced cases"] },
  ];

  left.forEach((grp, i) => {
    const y = 0.72 + i * 2.45;
    sectionLabel(s, grp.heading, 0.3, y, 4.5, 0.38);
    bullets(s, grp.items, 0.3, y + 0.42, 4.5, 1.85, { fontSize: 12 });
  });

  right.forEach((grp, i) => {
    const y = 0.72 + i * 2.45;
    sectionLabel(s, grp.heading, 5.2, y, 4.5, 0.38);
    bullets(s, grp.items, 5.2, y + 0.42, 4.5, 1.85, { fontSize: 12 });
  });

  s.addShape("line", { x: 4.95, y: 0.72, w: 0, h: 4.7, line: { color: SUBTLE, width: 1 } });
}

// ══════════════════════════════════════════════════════════════
// SLIDE 8 — ORAL MANIFESTATIONS (dental focus)
// ══════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  addBackground(s, DARK_BG);
  titleBar(s, "ORAL MANIFESTATIONS — DENTAL RELEVANCE");

  s.addText("Dental surgeons play a KEY role in early detection of PVS through oral examination", {
    x: 0.4, y: 0.72, w: 9.2, h: 0.38,
    fontSize: 13, color: ACCENT2, fontFace: "Calibri", italic: true, bold: true,
  });

  const findings = [
    { title: "Atrophic Glossitis", desc: "Depapillation of tongue\nSmooth, beefy-red appearance\nGlossodynia (burning sensation)\nDifficulty in mastication", icon: "👅" },
    { title: "Angular Cheilitis", desc: "Fissuring at corners of mouth\nErythematous lesions\nCrusting and scaling\nRecurrent and chronic", icon: "💋" },
    { title: "Atrophic Oral Mucosa", desc: "Thinning of mucosal lining\nPale erythematous mucosa\nDecreased salivation\nSusceptible to trauma", icon: "🦷" },
    { title: "Edentia", desc: "Premature tooth loss\nReduced masticatory efficiency\nContributes to nutritional worsening\nAlveolar bone changes", icon: "🦴" },
  ];

  findings.forEach((f, i) => {
    const x = 0.3 + (i % 2) * 4.85;
    const y = 1.2 + Math.floor(i / 2) * 2.1;
    s.addShape("rect", { x, y, w: 4.5, h: 2.0, fill: { color: i % 2 === 0 ? "0F3460" : MID_BG }, line: { color: ACCENT, width: 1.5 }, rounding: true });
    s.addText(f.title, { x: x + 0.15, y: y + 0.1, w: 4.2, h: 0.4, fontSize: 13, bold: true, color: ACCENT2, fontFace: "Calibri" });
    s.addText(f.desc, { x: x + 0.15, y: y + 0.52, w: 4.2, h: 1.3, fontSize: 11, color: LIGHT, fontFace: "Calibri" });
  });
}

// ══════════════════════════════════════════════════════════════
// SLIDE 9 — INVESTIGATIONS
// ══════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  addBackground(s, DARK_BG);
  titleBar(s, "INVESTIGATIONS");

  const invxs = [
    {
      title: "Hematological",
      color: ACCENT,
      items: ["CBC — Hb often <10 g/dL", "Peripheral smear — microcytic hypochromic RBCs", "Serum ferritin — low (<12 µg/L)", "Serum iron — low", "TIBC — elevated", "Transferrin saturation — reduced"],
    },
    {
      title: "Endoscopy",
      color: ACCENT2,
      items: ["Gold standard for web visualization", "Thin, shelf-like mucosal folds seen", "Post-cricoid region (17–18 cm)", "Can unintentionally rupture webs", "Biopsy if malignancy suspected"],
    },
    {
      title: "Barium Swallow / Fluoroscopy",
      color: "2EC4B6",
      items: ["Best for web imaging (videofluoroscopy)", "Thin filling defect in proximal esophagus", "Eccentric or central lumen narrowing", "Lateral views most diagnostic", "Constriction at post-cricoid region"],
    },
    {
      title: "Other Tests",
      color: "0096C7",
      items: ["Thyroid function tests", "Stool for occult blood", "Celiac screen (associated condition)", "Autoimmune panel", "Achlorhydric gastric secretion test"],
    },
  ];

  invxs.forEach((inv, i) => {
    const x = 0.3 + (i % 2) * 4.85;
    const y = 0.75 + Math.floor(i / 2) * 2.35;
    s.addShape("rect", { x, y, w: 4.5, h: 2.2, fill: { color: MID_BG }, line: { color: inv.color, width: 2 }, rounding: true });
    s.addShape("rect", { x, y, w: 4.5, h: 0.38, fill: { color: inv.color }, line: { color: inv.color }, rounding: true });
    s.addText(inv.title, { x: x + 0.1, y, w: 4.3, h: 0.38, fontSize: 12, bold: true, color: WHITE, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 });
    const pts = inv.items.map((p, pi) => ({
      text: p,
      options: { bullet: { code: "25B8", color: inv.color }, fontSize: 11, color: LIGHT, fontFace: "Calibri", breakLine: pi < inv.items.length - 1 },
    }));
    s.addText(pts, { x: x + 0.15, y: y + 0.42, w: 4.2, h: 1.7, valign: "top" });
  });
}

// ══════════════════════════════════════════════════════════════
// SLIDE 10 — RADIOGRAPHS with images
// ══════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  addBackground(s, DARK_BG);
  titleBar(s, "RADIOGRAPHIC FEATURES — BARIUM SWALLOW");

  s.addText("KEY IMAGING: Barium Swallow / Videofluoroscopy", {
    x: 0.4, y: 0.72, w: 9.2, h: 0.35,
    fontSize: 13, bold: true, color: ACCENT2, fontFace: "Calibri",
  });

  // Left: text description
  const radFindings = [
    "Thin, shelf-like filling defect in proximal esophagus",
    "Post-cricoid region most affected (17–18 cm from incisors)",
    "Central or eccentric narrowing of lumen",
    "Webs visible on lateral projection",
    "May show single or multiple webs",
    "Videofluoroscopy — most sensitive technique",
    "Upper GI endoscopy confirms webs but may rupture them",
  ];
  bullets(s, radFindings, 0.3, 1.12, 4.2, 4.1, { fontSize: 12 });

  // Right: images
  if (imgs[0] && !imgs[0].error) {
    s.addImage({ data: imgs[0].base64, x: 5.0, y: 0.85, w: 2.3, h: 2.2 });
    s.addText("Barium swallow — esophageal web", { x: 5.0, y: 3.08, w: 2.3, h: 0.32, fontSize: 9, color: SUBTLE, fontFace: "Calibri", align: "center", italic: true });
  }
  if (imgs[1] && !imgs[1].error) {
    s.addImage({ data: imgs[1].base64, x: 7.45, y: 0.85, w: 2.3, h: 2.2 });
    s.addText("Post-cricoid web — lateral view", { x: 7.45, y: 3.08, w: 2.3, h: 0.32, fontSize: 9, color: SUBTLE, fontFace: "Calibri", align: "center", italic: true });
  }

  // X-ray note box
  s.addShape("rect", { x: 4.9, y: 3.5, w: 4.85, h: 1.9, fill: { color: "0F3460" }, line: { color: ACCENT, width: 1.5 }, rounding: true });
  s.addText("Clinical Note", { x: 5.1, y: 3.55, w: 4.5, h: 0.35, fontSize: 12, bold: true, color: ACCENT2, fontFace: "Calibri" });
  s.addText(
    "Dysphagia becomes symptomatic when the esophageal lumen narrows to <12 mm. " +
    "Barium esophagram is non-invasive and ideal for initial assessment.",
    { x: 5.1, y: 3.9, w: 4.5, h: 1.35, fontSize: 11, color: LIGHT, fontFace: "Calibri" }
  );
}

// ══════════════════════════════════════════════════════════════
// SLIDE 11 — HISTOPATHOLOGY
// ══════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  addBackground(s, DARK_BG);
  titleBar(s, "HISTOPATHOLOGY");

  // Clinical image if available
  if (imgs[2] && !imgs[2].error) {
    s.addImage({ data: imgs[2].base64, x: 6.8, y: 0.75, w: 2.9, h: 2.5 });
    s.addText("Esophageal web — endoscopic view", { x: 6.8, y: 3.27, w: 2.9, h: 0.28, fontSize: 9, color: SUBTLE, fontFace: "Calibri", align: "center", italic: true });
  }

  s.addText("Histological Features of Esophageal Webs:", {
    x: 0.4, y: 0.72, w: 6.2, h: 0.35,
    fontSize: 14, bold: true, color: ACCENT2, fontFace: "Calibri",
  });

  const histoFeatures = [
    { title: "Fibrosis", desc: "Submucosal fibrous tissue deposition", color: ACCENT },
    { title: "Epithelial Atrophy", desc: "Thinning of squamous epithelium, loss of normal thickness", color: ACCENT2 },
    { title: "Epithelial Hyperplasia", desc: "Paradoxical areas of hyperplasia in surrounding mucosa", color: "2EC4B6" },
    { title: "Hyperkeratosis", desc: "Excess keratin production on surface epithelium", color: "0096C7" },
    { title: "Basal Cell Hyperplasia", desc: "Increased mitotic activity in basal layer (premalignant indicator)", color: "E63946" },
    { title: "Chronic Inflammation", desc: "Lymphocytic and plasma cell infiltrate in submucosa", color: "8338EC" },
  ];

  histoFeatures.forEach((feat, i) => {
    const col = i < 3 ? 0 : 1;
    const row = i % 3;
    const x = col === 0 ? 0.3 : 3.5;
    const y = 1.15 + row * 1.45;
    s.addShape("rect", { x, y, w: 3.05, h: 1.3, fill: { color: MID_BG }, line: { color: feat.color, width: 2 }, rounding: true });
    s.addShape("rect", { x, y, w: 1.5, h: 0.32, fill: { color: feat.color }, line: { color: feat.color }, rounding: true });
    s.addText(feat.title, { x: x + 0.05, y, w: 1.45, h: 0.32, fontSize: 10, bold: true, color: WHITE, fontFace: "Calibri", valign: "middle", margin: 0 });
    s.addText(feat.desc, { x: x + 0.12, y: y + 0.36, w: 2.8, h: 0.8, fontSize: 10, color: LIGHT, fontFace: "Calibri", valign: "top" });
  });

  // Note on premalignant potential
  s.addShape("rect", { x: 6.7, y: 3.65, w: 3.0, h: 1.65, fill: { color: "3D0000" }, line: { color: ACCENT, width: 2 }, rounding: true });
  s.addText("⚠ Premalignant!", { x: 6.85, y: 3.72, w: 2.7, h: 0.38, fontSize: 13, bold: true, color: ACCENT, fontFace: "Calibri" });
  s.addText("Basal cell hyperplasia + chronic epithelial atrophy create conditions for malignant transformation to squamous cell carcinoma.", {
    x: 6.85, y: 4.12, w: 2.7, h: 1.1, fontSize: 10, color: LIGHT, fontFace: "Calibri",
  });
}

// ══════════════════════════════════════════════════════════════
// SLIDE 12 — DIFFERENTIAL DIAGNOSIS
// ══════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  addBackground(s, DARK_BG);
  titleBar(s, "DIFFERENTIAL DIAGNOSIS");

  const diffs = [
    {
      condition: "Pernicious Anemia",
      similarity: "Anemia, glossitis, dysphagia",
      distinction: "Megaloblastic (macrocytic) anemia\nB12 deficiency — intrinsic factor absent\nNeurological symptoms\nGastric fundus failure",
      color: ACCENT,
    },
    {
      condition: "Folic Acid Deficiency",
      similarity: "Megaloblastic anemia, glossitis, cheilosis",
      distinction: "Macrocytic anemia\nNo neurological symptoms\nNo achlorhydria\nTreated with folic acid",
      color: ACCENT2,
    },
    {
      condition: "Esophageal Carcinoma",
      similarity: "Progressive dysphagia",
      distinction: "Dysphagia to liquids + solids\nRapid weight loss\nOlder patients\nImaging shows irregular lesion",
      color: "E63946",
    },
    {
      condition: "Esophageal Stricture",
      similarity: "Dysphagia, filling defect on barium",
      distinction: "Usually from GERD/peptic injury\nLong segment narrowing\nNo iron deficiency\nNo webs on endoscopy",
      color: "2EC4B6",
    },
  ];

  diffs.forEach((d, i) => {
    const x = 0.25 + (i % 2) * 4.85;
    const y = 0.72 + Math.floor(i / 2) * 2.35;
    s.addShape("rect", { x, y, w: 4.55, h: 2.2, fill: { color: MID_BG }, line: { color: d.color, width: 2 }, rounding: true });
    s.addShape("rect", { x, y, w: 4.55, h: 0.4, fill: { color: d.color }, line: { color: d.color }, rounding: true });
    s.addText(d.condition, { x: x + 0.1, y, w: 4.3, h: 0.4, fontSize: 13, bold: true, color: WHITE, fontFace: "Calibri", valign: "middle", margin: 0 });
    s.addText("Similarity:", { x: x + 0.1, y: y + 0.45, w: 4.3, h: 0.28, fontSize: 10, bold: true, color: ACCENT2, fontFace: "Calibri" });
    s.addText(d.similarity, { x: x + 0.1, y: y + 0.73, w: 4.3, h: 0.3, fontSize: 10, color: LIGHT, fontFace: "Calibri", italic: true });
    s.addText("Key Distinction:", { x: x + 0.1, y: y + 1.05, w: 4.3, h: 0.25, fontSize: 10, bold: true, color: ACCENT, fontFace: "Calibri" });
    s.addText(d.distinction, { x: x + 0.1, y: y + 1.3, w: 4.3, h: 0.8, fontSize: 10, color: LIGHT, fontFace: "Calibri" });
  });
}

// ══════════════════════════════════════════════════════════════
// SLIDE 13 — MALIGNANT POTENTIAL
// ══════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  addBackground(s, "2D0000");  // dark red background for emphasis
  titleBar(s, "⚠ MALIGNANT POTENTIAL — PREMALIGNANT CONDITION", 0, 0.65);

  s.addText("PVS is a PRECANCEROUS CONDITION — carries significant risk of carcinoma", {
    x: 0.4, y: 0.72, w: 9.2, h: 0.38,
    fontSize: 14, bold: true, color: ACCENT, fontFace: "Calibri",
  });

  // Stats box
  s.addShape("rect", { x: 0.3, y: 1.18, w: 4.4, h: 1.55, fill: { color: "4D0000" }, line: { color: ACCENT, width: 2 }, rounding: true });
  s.addText("Reported Risk", { x: 0.4, y: 1.25, w: 4.2, h: 0.35, fontSize: 13, bold: true, color: ACCENT, fontFace: "Calibri" });
  s.addText(
    "4–16% risk of squamous cell carcinoma\nPost-cricoid and proximal esophagus\nPharyngeal carcinoma also reported\nMay present as tongue carcinoma",
    { x: 0.4, y: 1.62, w: 4.2, h: 1.0, fontSize: 12, color: LIGHT, fontFace: "Calibri" }
  );

  // Mechanism box
  s.addShape("rect", { x: 5.3, y: 1.18, w: 4.4, h: 1.55, fill: { color: "4D0000" }, line: { color: ACCENT2, width: 2 }, rounding: true });
  s.addText("Mechanism of Malignancy", { x: 5.4, y: 1.25, w: 4.2, h: 0.35, fontSize: 13, bold: true, color: ACCENT2, fontFace: "Calibri" });
  s.addText(
    "Chronic iron deficiency → mucosal atrophy\nEpithelial atrophy → dysplasia\nRepair mechanisms impaired\nChronic inflammation → oxidative stress\nProgression: Atrophy → Dysplasia → Ca in situ → SCC",
    { x: 5.4, y: 1.62, w: 4.2, h: 1.1, fontSize: 11, color: LIGHT, fontFace: "Calibri" }
  );

  // Follow-up importance
  s.addShape("rect", { x: 0.3, y: 2.85, w: 9.4, h: 0.65, fill: { color: ACCENT }, line: { color: ACCENT }, rounding: true });
  s.addText("Periodic endoscopic surveillance is MANDATORY — annual follow-up recommended", {
    x: 0.4, y: 2.9, w: 9.2, h: 0.55, fontSize: 14, bold: true, color: WHITE, fontFace: "Calibri", align: "center", valign: "middle",
  });

  // Related cancers
  const cancers = [
    { site: "Post-cricoid\nCarcinoma", detail: "Most common\nassociated SCC" },
    { site: "Esophageal\nSCC", detail: "Proximal third\nmost affected" },
    { site: "Pharyngeal\nCarcinoma", detail: "Hypopharynx\nmost common site" },
    { site: "Tongue\nCarcinoma", detail: "Rare but\ndocumented" },
  ];
  cancers.forEach((c, i) => {
    const x = 0.3 + i * 2.38;
    s.addShape("rect", { x, y: 3.6, w: 2.2, h: 1.75, fill: { color: "4D0000" }, line: { color: ACCENT2, width: 1.5 }, rounding: true });
    s.addText(c.site, { x: x + 0.1, y: 3.65, w: 2.0, h: 0.65, fontSize: 12, bold: true, color: ACCENT2, fontFace: "Calibri", align: "center" });
    s.addText(c.detail, { x: x + 0.1, y: 4.32, w: 2.0, h: 0.9, fontSize: 11, color: LIGHT, fontFace: "Calibri", align: "center" });
  });
}

// ══════════════════════════════════════════════════════════════
// SLIDE 14 — MANAGEMENT
// ══════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  addBackground(s, DARK_BG);
  titleBar(s, "MANAGEMENT & TREATMENT");

  const steps = [
    {
      step: "01",
      title: "Iron Supplementation",
      desc: "Elemental iron 150–200 mg/day\nFerrous sulfate 325 mg (60 mg iron) TDS\nIV Fe-dextran for severe cases\nMost features resolve with iron alone\nCorrects anemia & mucosal changes",
      color: ACCENT,
    },
    {
      step: "02",
      title: "Endoscopic Dilation",
      desc: "For dysphagia not responding to iron\nMechanical disruption of webs\nBalloon dilation (fluoroscopy-guided)\nSurgical dilation if needed\nRegular dilation sessions required",
      color: ACCENT2,
    },
    {
      step: "03",
      title: "Dietary Management",
      desc: "High iron diet (red meat, leafy greens)\nVitamin C to enhance iron absorption\nVitamin B supplementation (B2, B6)\nAvoid tea/coffee with iron-rich meals",
      color: "2EC4B6",
    },
    {
      step: "04",
      title: "Surveillance & Follow-up",
      desc: "Periodic endoscopic surveillance\nAnnual follow-up for malignancy\nBiopsy if suspicious lesions found\nMultidisciplinary team approach\nDentist involvement for oral care",
      color: "0096C7",
    },
  ];

  steps.forEach((step, i) => {
    const x = 0.2 + (i % 2) * 4.9;
    const y = 0.72 + Math.floor(i / 2) * 2.45;
    s.addShape("rect", { x, y, w: 4.65, h: 2.3, fill: { color: MID_BG }, line: { color: step.color, width: 2 }, rounding: true });
    s.addShape("ellipse", { x: x + 0.1, y: y + 0.1, w: 0.55, h: 0.55, fill: { color: step.color }, line: { color: step.color } });
    s.addText(step.step, { x: x + 0.1, y: y + 0.1, w: 0.55, h: 0.55, fontSize: 14, bold: true, color: WHITE, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 });
    s.addText(step.title, { x: x + 0.72, y: y + 0.15, w: 3.8, h: 0.45, fontSize: 13, bold: true, color: step.color, fontFace: "Calibri", valign: "middle" });
    s.addText(step.desc, { x: x + 0.2, y: y + 0.65, w: 4.3, h: 1.55, fontSize: 11, color: LIGHT, fontFace: "Calibri" });
  });
}

// ══════════════════════════════════════════════════════════════
// SLIDE 15 — SUMMARY
// ══════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  addBackground(s, DARK_BG);
  titleBar(s, "SUMMARY — KEY TAKE-HOME POINTS");

  const summaryPoints = [
    { pt: "Classic Triad", detail: "Iron deficiency anemia + Esophageal webs + Post-cricoid dysphagia" },
    { pt: "Demographics", detail: "Post-menopausal women (80–95%), 40–70 years, increasingly rare in developed countries" },
    { pt: "Oral Signs", detail: "Atrophic glossitis, angular cheilitis, atrophic mucosa — dental surgeons can detect early" },
    { pt: "Imaging", detail: "Barium swallow (videofluoroscopy) is key — thin shelf-like defect in proximal esophagus" },
    { pt: "Histology", detail: "Fibrosis + epithelial atrophy + hyperkeratosis + basal cell hyperplasia + chronic inflammation" },
    { pt: "Risk", detail: "4–16% risk of squamous cell carcinoma — MANDATORY annual surveillance" },
    { pt: "Treatment", detail: "Iron supplementation resolves most features; endoscopic dilation for persistent dysphagia" },
  ];

  summaryPoints.forEach((pt, i) => {
    const y = 0.72 + i * 0.7;
    s.addShape("rect", { x: 0.3, y, w: 1.55, h: 0.58, fill: { color: ACCENT }, line: { color: ACCENT }, rounding: true });
    s.addText(pt.pt, { x: 0.3, y, w: 1.55, h: 0.58, fontSize: 10, bold: true, color: WHITE, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 });
    s.addShape("rect", { x: 1.95, y, w: 7.75, h: 0.58, fill: { color: i % 2 === 0 ? "0F3460" : MID_BG }, line: { color: SUBTLE, width: 0.5 }, rounding: true });
    s.addText(pt.detail, { x: 2.05, y, w: 7.6, h: 0.58, fontSize: 11, color: WHITE, fontFace: "Calibri", valign: "middle" });
  });
}

// ══════════════════════════════════════════════════════════════
// SLIDE 16 — THANK YOU
// ══════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  addBackground(s, MID_BG);
  s.addShape("rect", { x: 0, y: 0, w: 10, h: 0.3, fill: { color: ACCENT }, line: { color: ACCENT } });
  s.addShape("rect", { x: 0, y: 5.325, w: 10, h: 0.3, fill: { color: ACCENT }, line: { color: ACCENT } });

  s.addText("THANK YOU", {
    x: 1, y: 1.2, w: 8, h: 1.2,
    fontSize: 56, bold: true, color: WHITE, fontFace: "Calibri", align: "center", charSpacing: 10,
  });
  s.addShape("line", { x: 2.5, y: 2.45, w: 5, h: 0, line: { color: ACCENT, width: 3 } });
  s.addText("Plummer-Vinson Syndrome", {
    x: 1, y: 2.6, w: 8, h: 0.5,
    fontSize: 20, color: ACCENT2, fontFace: "Calibri", align: "center", italic: true,
  });
  s.addText("Department of Oral Medicine & Radiology\n3rd BDS | Oral Medicine", {
    x: 1, y: 3.2, w: 8, h: 0.75,
    fontSize: 14, color: LIGHT, fontFace: "Calibri", align: "center",
  });

  // Key message box
  s.addShape("rect", { x: 1.5, y: 4.0, w: 7, h: 0.95, fill: { color: "0F3460" }, line: { color: ACCENT2, width: 2 }, rounding: true });
  s.addText(
    '"Early oral examination can detect PVS — the dental surgeon is on the front line."',
    { x: 1.6, y: 4.05, w: 6.8, h: 0.85, fontSize: 13, color: ACCENT2, fontFace: "Calibri", align: "center", valign: "middle", italic: true }
  );
}

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

cd /home/daytona/workspace/pvs-presentation && node build.js 2>&1

Running Command

ls -lh /home/daytona/workspace/pvs-presentation/Plummer_Vinson_Syndrome.pptx

Your presentation is ready! Download it here:

Plummer Vinson Syndrome

Presentation · PPTX


Here's what's included across the 16 slides (16x9, deep navy + red accent design):
#Slide
1Title slide — bold professional opener with alternate names
2Overview / Table of Contents — 10 topic blocks
3Introduction & History — 4-era timeline (Plummer 1908 → Hurst 1926)
4Synonyms & Epidemiology — all names, demographics, geographic prevalence
5Etiopathogenesis — iron deficiency, genetic, nutritional, and mucosal change factors
6Classic Triad — visual 3-card layout with the central PVS triad circle
7Clinical Features — dysphagia grading, anemia signs, koilonychia, glossitis, angular cheilitis, goiter, splenomegaly
8Oral Manifestations — dental-focused: atrophic glossitis, angular cheilitis, edentia, atrophic mucosa
9Investigations — hematology (Hb, ferritin, TIBC), endoscopy, barium swallow, other tests
10Radiographic Features — with 2 actual barium swallow images from Radiopaedia showing esophageal webs
11Histopathology — all 6 features (fibrosis, epithelial atrophy, hyperkeratosis, basal cell hyperplasia, chronic inflammation) + endoscopic image
12Differential Diagnosis — vs. Pernicious anemia, Folic acid deficiency, Esophageal Ca, Stricture
13Malignant Potential (dark red slide for emphasis) — 4–16% SCC risk, sites, mechanism, surveillance
14Management — iron replacement, endoscopic dilation, dietary advice, follow-up
15Summary — 7 key take-home points in a clean table layout
16Thank You slide — with the dental relevance quote
This is a shared conversation. Sign in to Orris to start your own chat.