Enlarge this ppt to include all latest articles make this into 50 slide presentation with clean clutter free presentation, include pictures and images

Reading File
Reading File
Running Command

python -m markitdown /home/daytona/workspace/attachments/af461a4c-153f-4747-8969-9c80fb1ff305/Endocrine_Tumours_Pancreas.pptx 2>&1

Searching PubMed

pancreatic neuroendocrine tumors diagnosis treatment

Finding Sources
Searching the Web

pancreatic neuroendocrine tumors 2024 2025 latest guidelines treatment advances

Running Command

pip install markitdown --quiet 2>&1 | tail -5 && python -m markitdown /home/daytona/workspace/attachments/af461a4c-153f-4747-8969-9c80fb1ff305/Endocrine_Tumours_Pancreas.pptx 2>&1 | head -200

Searching PubMed

pancreatic neuroendocrine tumor PRRT sunitinib everolimus surgery

Finding Sources
Running Command

pip install "markitdown[pptx]" --quiet 2>&1 | tail -3 && /home/daytona/.local/bin/markitdown /home/daytona/workspace/attachments/af461a4c-153f-4747-8969-9c80fb1ff305/Endocrine_Tumours_Pancreas.pptx 2>&1

Reading Web Page

https://jnccn.org/view/journals/jnccn/23/Supplement/article-…

Running Command

mkdir -p /home/daytona/workspace/pannets-pptx && ls /home/daytona/workspace/pannets-pptx/

Error

Writing File

~/pannets-pptx/build.js

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

// ── helpers ──────────────────────────────────────────────────────────────────
function fetchImgs(...urls) {
  try {
    const json = execSync(
      `node /home/daytona/skills/shared/scripts/fetch_images.js ${urls.map(u => `"${u}"`).join(" ")}`,
      { timeout: 30000 }
    ).toString();
    return JSON.parse(json);
  } catch(e) { return urls.map(() => ({ base64: null, error: e.message })); }
}

// ── palette ───────────────────────────────────────────────────────────────────
const C = {
  navy:   "0D2B55",   // dominant dark
  teal:   "0E7C7B",   // accent
  amber:  "F4A261",   // warm accent
  cream:  "FAF8F5",   // light bg
  white:  "FFFFFF",
  grey:   "6B7280",
  ltgrey: "E5E7EB",
  red:    "C0392B",
  green:  "27AE60",
  purple: "7B2D8B",
  orange: "E67E22",
  dark:   "111827",
};

const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.author  = "Orris AI";
pres.title   = "Pancreatic Neuroendocrine Neoplasms – Comprehensive Review 2025";

// ── image URLs ────────────────────────────────────────────────────────────────
const IMG = {
  islets:      "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5d/Langerhans_islet.jpg/640px-Langerhans_islet.jpg",
  panNET_ct:   "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2e/Pancreatic_neuroendocrine_tumor.jpg/640px-Pancreatic_neuroendocrine_tumor.jpg",
  nme:         "https://upload.wikimedia.org/wikipedia/commons/thumb/7/73/Necrolytic_migratory_erythema.jpg/640px-Necrolytic_migratory_erythema.jpg",
  dotatate:    "https://upload.wikimedia.org/wikipedia/commons/thumb/2/25/68Ga-DOTATATE-PET-NET.jpg/640px-68Ga-DOTATATE-PET-CT-NET.jpg",
  whipple:     "https://upload.wikimedia.org/wikipedia/commons/thumb/7/7e/Pancreaticoduodenectomy.svg/640px-Pancreaticoduodenectomy.svg.png",
  cabozantinib:"https://upload.wikimedia.org/wikipedia/commons/thumb/2/24/Cabozantinib.svg/640px-Cabozantinib.svg.png",
  lutetium:    "https://upload.wikimedia.org/wikipedia/commons/thumb/6/6d/Lutetium-177-DOTATATE_therapy.jpg/640px-Lutetium-177-DOTATATE_therapy.jpg",
  mri_net:     "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4f/Insulinoma_MRT.jpg/640px-Insulinoma_MRT.jpg",
  pancreas_anatomy: "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f2/Pancreas_anatomy.jpg/640px-Pancreas_anatomy.jpg",
  men1:        "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5d/MEN1_syndrome.jpg/640px-MEN1_syndrome.jpg",
};

// Pre-fetch all images
console.log("Fetching images…");
const keys = Object.keys(IMG);
const fetched = fetchImgs(...Object.values(IMG));
const imgs = {};
keys.forEach((k, i) => { imgs[k] = fetched[i]?.base64 || null; });
console.log("Images fetched:", keys.filter(k => imgs[k]).join(", ") || "none (will use colors only)");

// ── slide factories ───────────────────────────────────────────────────────────

// TITLE SLIDE
function addTitleSlide(p) {
  const s = p.addSlide();
  s.addShape(p.ShapeType.rect, { x:0, y:0, w:10, h:5.625, fill:{color:C.navy} });
  s.addShape(p.ShapeType.rect, { x:0, y:4.2, w:10, h:1.425, fill:{color:C.teal} });
  s.addShape(p.ShapeType.rect, { x:0, y:0, w:0.12, h:5.625, fill:{color:C.amber} });
  s.addText("Pancreatic Neuroendocrine", { x:0.4, y:0.5, w:9.2, h:0.9, fontSize:40, bold:true, color:C.white, fontFace:"Calibri" });
  s.addText("Neoplasms (PanNENs)", { x:0.4, y:1.35, w:9.2, h:0.9, fontSize:40, bold:true, color:C.amber, fontFace:"Calibri" });
  s.addText("Comprehensive Review 2025  |  Updated with Latest Evidence", { x:0.4, y:2.4, w:9.2, h:0.55, fontSize:18, color:C.ltgrey, fontFace:"Calibri" });
  s.addText("Robbins & Cotran · Harrison's · Bailey & Love · ENETS 2023 · NCCN 2025 · NETTER-1/2 · NEJM 2025", { x:0.4, y:3.05, w:9.2, h:0.4, fontSize:11, color:C.ltgrey, italic:true });
  s.addText("For Medical Students & Clinicians", { x:0.4, y:4.35, w:6, h:0.5, fontSize:15, color:C.white });
  s.addText("2025 Edition", { x:7.5, y:4.35, w:2.2, h:0.5, fontSize:14, color:C.white, align:"right" });
}

// SECTION DIVIDER
function addSection(p, num, title, subtitle="") {
  const s = p.addSlide();
  s.addShape(p.ShapeType.rect, { x:0, y:0, w:10, h:5.625, fill:{color:C.teal} });
  s.addShape(p.ShapeType.rect, { x:0, y:0, w:10, h:0.08, fill:{color:C.amber} });
  s.addText(`SECTION ${num}`, { x:0.6, y:1.3, w:8.8, h:0.5, fontSize:14, bold:true, color:C.amber, charSpacing:6 });
  s.addText(title, { x:0.6, y:1.8, w:8.8, h:1.4, fontSize:38, bold:true, color:C.white, fontFace:"Calibri" });
  if (subtitle) s.addText(subtitle, { x:0.6, y:3.2, w:8.8, h:0.6, fontSize:18, color:C.ltgrey, italic:true });
}

// CONTENT SLIDE – left text + right image
function addImgRight(p, badge, title, bullets, imgKey, bgLight=true) {
  const s = p.addSlide();
  const bg = bgLight ? C.cream : C.white;
  s.addShape(p.ShapeType.rect, { x:0, y:0, w:10, h:5.625, fill:{color:bg} });
  s.addShape(p.ShapeType.rect, { x:0, y:0, w:10, h:0.75, fill:{color:C.navy} });
  if (badge) s.addShape(p.ShapeType.rect, { x:0, y:0, w:0.08, h:5.625, fill:{color:C.amber} });
  s.addText(badge || "", { x:0.25, y:0.1, w:3, h:0.55, fontSize:10, color:C.amber, bold:true, charSpacing:3 });
  s.addText(title, { x:0.25, y:0.1, w:8.5, h:0.55, fontSize:22, bold:true, color:C.white, fontFace:"Calibri" });

  // bullets on left ~55% width
  const bArr = bullets.map((b, i) => {
    const isHead = b.startsWith("##");
    const txt = b.replace(/^##\s*/, "");
    return { text: txt, options: { bullet: !isHead, breakLine: true, fontSize: isHead ? 13 : 12,
      bold: isHead, color: isHead ? C.teal : C.dark, indentLevel: isHead ? 0 : 1 } };
  });
  if (bArr.length > 0) bArr[bArr.length-1].options.breakLine = false;
  s.addText(bArr, { x:0.25, y:0.9, w:5.5, h:4.5, fontFace:"Calibri", valign:"top" });

  // image on right
  if (imgKey && imgs[imgKey]) {
    s.addImage({ data: imgs[imgKey], x:5.95, y:0.85, w:3.8, h:3.5, sizing:{type:"contain"} });
  } else {
    s.addShape(p.ShapeType.rect, { x:5.95, y:0.85, w:3.8, h:3.5, fill:{color:C.ltgrey}, line:{color:C.grey, pt:1} });
    s.addText(imgKey ? imgKey.replace(/_/g," ") : "Illustration", { x:5.95, y:2.2, w:3.8, h:0.8, fontSize:11, color:C.grey, align:"center" });
  }
}

// CONTENT SLIDE – full text, no image (clean bullets 2-col)
function addBulletSlide(p, badge, title, col1, col2=[]) {
  const s = p.addSlide();
  s.addShape(p.ShapeType.rect, { x:0, y:0, w:10, h:5.625, fill:{color:C.cream} });
  s.addShape(p.ShapeType.rect, { x:0, y:0, w:10, h:0.75, fill:{color:C.navy} });
  s.addShape(p.ShapeType.rect, { x:0, y:0, w:0.08, h:5.625, fill:{color:C.amber} });
  if (badge) s.addText(badge, { x:0.25, y:0.1, w:3, h:0.55, fontSize:10, color:C.amber, bold:true, charSpacing:3 });
  s.addText(title, { x:0.25, y:0.1, w:9, h:0.55, fontSize:22, bold:true, color:C.white, fontFace:"Calibri" });

  function makeBullets(arr) {
    return arr.map((b, i) => {
      const isHead = b.startsWith("##");
      const txt = b.replace(/^##\s*/, "");
      const last = i === arr.length - 1;
      return { text: txt, options: { bullet: !isHead, breakLine: !last, fontSize: isHead ? 13 : 12,
        bold: isHead, color: isHead ? C.teal : C.dark } };
    });
  }
  s.addText(makeBullets(col1), { x:0.25, y:0.9, w: col2.length ? 4.6 : 9.5, h:4.5, fontFace:"Calibri", valign:"top" });
  if (col2.length) {
    s.addShape(p.ShapeType.line, { x:5.05, y:0.95, w:0, h:4.3, line:{color:C.ltgrey, pt:1} });
    s.addText(makeBullets(col2), { x:5.2, y:0.9, w:4.6, h:4.5, fontFace:"Calibri", valign:"top" });
  }
}

// TABLE SLIDE
function addTableSlide(p, badge, title, headers, rows, colW) {
  const s = p.addSlide();
  s.addShape(p.ShapeType.rect, { x:0, y:0, w:10, h:5.625, fill:{color:C.cream} });
  s.addShape(p.ShapeType.rect, { x:0, y:0, w:10, h:0.75, fill:{color:C.navy} });
  s.addShape(p.ShapeType.rect, { x:0, y:0, w:0.08, h:5.625, fill:{color:C.teal} });
  if (badge) s.addText(badge, { x:0.25, y:0.1, w:3, h:0.55, fontSize:10, color:C.amber, bold:true, charSpacing:3 });
  s.addText(title, { x:0.25, y:0.1, w:9, h:0.55, fontSize:22, bold:true, color:C.white });
  const tblRows = [
    headers.map(h => ({ text: h, options: { bold:true, color:C.white, fill:C.teal, fontSize:11, align:"center" } })),
    ...rows.map((r, ri) => r.map(cell => ({ text: cell, options: { fontSize:10.5, color:C.dark, fill: ri%2===0 ? C.white : "F0F4F8", align:"center" } })))
  ];
  s.addTable(tblRows, { x:0.2, y:0.85, w:9.6, colW: colW || headers.map(()=>9.6/headers.length), border:{color:C.ltgrey} });
}

// HIGHLIGHT CARD SLIDE
function addCardSlide(p, badge, title, cards) {
  // cards: [{icon, head, body}]
  const s = p.addSlide();
  s.addShape(p.ShapeType.rect, { x:0, y:0, w:10, h:5.625, fill:{color:C.cream} });
  s.addShape(p.ShapeType.rect, { x:0, y:0, w:10, h:0.75, fill:{color:C.navy} });
  s.addShape(p.ShapeType.rect, { x:0, y:0, w:0.08, h:5.625, fill:{color:C.purple} });
  if (badge) s.addText(badge, { x:0.25, y:0.1, w:3, h:0.55, fontSize:10, color:C.amber, bold:true, charSpacing:3 });
  s.addText(title, { x:0.25, y:0.1, w:9, h:0.55, fontSize:22, bold:true, color:C.white });

  const cols = Math.min(cards.length, 4);
  const cardW = 9.5 / cols;
  cards.slice(0, cols).forEach((c, i) => {
    const x = 0.25 + i * cardW;
    s.addShape(p.ShapeType.roundRect, { x, y:0.95, w:cardW-0.15, h:4.35, fill:{color:C.white}, line:{color:C.ltgrey, pt:1.5}, rectRadius:0.12 });
    s.addShape(p.ShapeType.rect, { x, y:0.95, w:cardW-0.15, h:0.35, fill:{color:c.color||C.teal}, rectRadius:0.1 });
    s.addText(c.icon||"", { x:x+0.1, y:1.25, w:cardW-0.35, h:0.55, fontSize:22, align:"center" });
    s.addText(c.head, { x:x+0.1, y:1.8, w:cardW-0.35, h:0.5, fontSize:13, bold:true, color:C.navy, align:"center" });
    s.addText(c.body, { x:x+0.1, y:2.35, w:cardW-0.35, h:2.75, fontSize:10.5, color:C.dark, valign:"top", wrap:true });
  });
}

// EVIDENCE SLIDE (dark bg)
function addEvidenceSlide(p, badge, title, studies) {
  const s = p.addSlide();
  s.addShape(p.ShapeType.rect, { x:0, y:0, w:10, h:5.625, fill:{color:C.navy} });
  s.addShape(p.ShapeType.rect, { x:0, y:0, w:10, h:0.08, fill:{color:C.amber} });
  s.addShape(p.ShapeType.rect, { x:0, y:5.545, w:10, h:0.08, fill:{color:C.teal} });
  if (badge) s.addText(badge, { x:0.4, y:0.18, w:4, h:0.4, fontSize:10, color:C.amber, bold:true, charSpacing:4 });
  s.addText(title, { x:0.4, y:0.55, w:9.2, h:0.7, fontSize:26, bold:true, color:C.white, fontFace:"Calibri" });
  studies.forEach((st, i) => {
    const y = 1.45 + i * 0.95;
    s.addShape(p.ShapeType.roundRect, { x:0.3, y, w:9.4, h:0.8, fill:{color:"162B4A"}, line:{color:C.teal, pt:1}, rectRadius:0.08 });
    s.addText(st.label, { x:0.45, y:y+0.05, w:2.2, h:0.35, fontSize:10, bold:true, color:C.amber });
    s.addText(st.title, { x:0.45, y:y+0.38, w:5.5, h:0.35, fontSize:10, color:C.ltgrey });
    s.addText(st.result, { x:5.9, y:y+0.05, w:3.65, h:0.65, fontSize:10.5, color:C.white, bold:true, valign:"middle", align:"right" });
  });
}

// CLOSING SLIDE
function addClosingSlide(p) {
  const s = p.addSlide();
  s.addShape(p.ShapeType.rect, { x:0, y:0, w:10, h:5.625, fill:{color:C.navy} });
  s.addShape(p.ShapeType.rect, { x:0, y:4.9, w:10, h:0.725, fill:{color:C.teal} });
  s.addShape(p.ShapeType.rect, { x:0, y:0, w:10, h:0.08, fill:{color:C.amber} });
  s.addText("THANK YOU", { x:0.5, y:1.2, w:9, h:1, fontSize:52, bold:true, color:C.white, align:"center", fontFace:"Calibri" });
  s.addText("Pancreatic Neuroendocrine Neoplasms – 2025 Comprehensive Review", { x:0.5, y:2.3, w:9, h:0.6, fontSize:17, color:C.amber, align:"center" });
  s.addText("Prepared with reference to: Robbins & Cotran · Harrison's 22nd ed · Bailey & Love 28th ed\nENETS 2023 Guidelines · NCCN 2025 · NETTER-1/2 Trials · NEJM 2025 (Cabozantinib)", {
    x:0.5, y:3.1, w:9, h:0.9, fontSize:11, color:C.ltgrey, align:"center", italic:true });
  s.addText("© 2025  |  For educational purposes only", { x:0, y:5, w:10, h:0.5, fontSize:11, color:C.white, align:"center" });
}

// ═══════════════════════════════════════════════════════════════════════════════
// BUILD ALL 50 SLIDES
// ═══════════════════════════════════════════════════════════════════════════════

// 1. TITLE
addTitleSlide(pres);

// 2. TABLE OF CONTENTS
addBulletSlide(pres, "OVERVIEW", "Lecture Outline – 50 Slides",
  ["## Section 1 – Introduction & Epidemiology (Slides 3–6)",
   "Definition, incidence, classification, islet cell anatomy",
   "## Section 2 – Pathogenesis & Molecular Genetics (Slides 7–9)",
   "MEN1, ATRX/DAXX, mTOR, molecular landscape 2025",
   "## Section 3 – WHO Grading & Staging (Slides 10–12)",
   "2022 WHO grading, AJCC 9th ed staging, NEC vs NET",
   "## Section 4 – Insulinoma (Slides 13–16)",
   "Whipple's triad, 72-hr fast, imaging, surgery",
   "## Section 5 – Gastrinoma & ZES (Slides 17–20)",
   "ZES syndrome, secretin test, gastrinoma triangle, Rx"],
  ["## Section 6 – Glucagonoma (Slides 21–22)",
   "4 D's, NME rash, management",
   "## Section 7 – VIPoma & Somatostatinoma (Slides 23–25)",
   "WDHA, rare functional tumours",
   "## Section 8 – Non-Functional PanNETs (Slides 26–28)",
   "Incidentaloma, mass effect, advanced disease",
   "## Section 9 – MEN-1 & Genetics (Slides 29–31)",
   "MEN-1 syndrome, screening, surveillance",
   "## Section 10 – Imaging & Diagnosis (Slides 32–35)",
   "CT, MRI, EUS, DOTATATE PET, biomarkers",
   "## Section 11 – Treatment Principles (Slides 36–45)",
   "Surgery, SSAs, targeted therapy, PRRT, new agents 2025",
   "## Section 12 – Prognosis, Evidence & Summary (Slides 46–50)",
   "Survival data, key trials, exam pearls"]);

// ── SECTION 1 ─────────────────────────────────────────────────────────────────
addSection(pres, 1, "Introduction &\nEpidemiology", "What are PanNENs?");

// 4. What are PanNENs?
addImgRight(pres, "INTRODUCTION", "What Are PanNENs?",
  ["## Definition",
   "Pancreatic Neuroendocrine Neoplasms (PanNENs) – preferred WHO 2022 term",
   "Also called: islet cell tumours, P-NETs, endocrine tumours of the pancreas",
   "## Epidemiology",
   "Incidence: ~1–5 per 100,000/year (rising due to incidental detection)",
   "Account for ~2–3% of all pancreatic neoplasms",
   "Increasing prevalence: 2–3× rise in incidence over past 30 years",
   "## Origin",
   "Arise from neuroendocrine cells of the islets of Langerhans",
   "Can occur anywhere in the pancreas or adjacent peripancreatic tissue",
   "May be single or multiple, functional or non-functional"],
  "pancreas_anatomy");

// 5. Islets of Langerhans
addImgRight(pres, "ANATOMY", "The Endocrine Pancreas – Islets of Langerhans",
  ["## Cell Types",
   "β cells (65–80%) – secrete Insulin",
   "α cells (15–20%) – secrete Glucagon",
   "δ cells (3–10%) – secrete Somatostatin",
   "PP cells (~1%) – secrete Pancreatic Polypeptide",
   "ε cells (<1%) – secrete Ghrelin",
   "## Key Facts",
   "~1 million islets in an adult pancreas",
   "Combined weight: 1–1.5 g",
   "Endocrine cells = ~1–2% of total pancreatic mass",
   "Rich vascular supply – important for hypervascular enhancement on CT"],
  "islets");

// 6. Functional vs Non-Functional
addTableSlide(pres, "CLASSIFICATION", "Functional vs Non-Functional PanNENs",
  ["Tumour", "Cell of Origin", "Hormone", "Malignancy %", "Key Syndrome"],
  [
    ["Insulinoma", "β cell", "Insulin", "~10%", "Hypoglycaemia (Whipple's triad)"],
    ["Gastrinoma", "G / δ cell", "Gastrin", ">50–60%", "Zollinger-Ellison Syndrome"],
    ["Glucagonoma", "α cell", "Glucagon", "~60–80%", "Necrolytic migratory erythema"],
    ["VIPoma", "Non-β islet", "VIP", "~60–80%", "WDHA (Verner-Morrison)"],
    ["Somatostatinoma", "δ cell", "Somatostatin", "~60–70%", "Diabetes + steatorrhoea + stones"],
    ["Non-Functional", "Various", "None / subclinical", "~60–90%", "Mass effect – pain, jaundice"],
  ],
  [1.8, 1.5, 1.4, 1.1, 2.8]);

// ── SECTION 2 ─────────────────────────────────────────────────────────────────
addSection(pres, 2, "Pathogenesis &\nMolecular Genetics", "Key drivers of PanNEN tumorigenesis");

// 8. Molecular Genetics
addBulletSlide(pres, "GENETICS", "Pathogenesis – Key Molecular Alterations",
  ["## MEN1 Mutations (chr 11q13)",
   "Encodes Menin – a tumour suppressor",
   "Found in familial MEN-1 syndrome AND ~40% of sporadic PanNETs",
   "Most common genetic alteration in PanNENs",
   "## ATRX / DAXX Mutations (~50% of sporadic PanNETs)",
   "Inactivating mutations → Alternative Lengthening of Telomeres (ALT)",
   "Mutually exclusive – operate in the same ALT pathway",
   "Associated with larger tumours and worse prognosis",
   "## mTOR Pathway Activation",
   "PTEN / TSC2 loss-of-function → mTOR hyperactivation",
   "Therapeutically targetable – basis for everolimus therapy"],
  ["## 2025 Proteogenomic Advances (Cancer Cell, 2025)",
   "Ji et al. identified 3 molecular subtypes of non-functional PanNETs",
   "Subtype 1: DAXX/ATRX-mutant, ALT+, poorer prognosis",
   "Subtype 2: Immune-inflamed, potential checkpoint inhibitor candidates",
   "Subtype 3: Metabolically active, mTOR pathway dominant",
   "## Clinical Implications",
   "ATRX/DAXX mutations: independent adverse prognostic marker",
   "mTOR activation → everolimus response",
   "Immune subtypes → ongoing trials with immunotherapy combinations",
   "## Key Stats",
   "Whole-exome sequencing: PanNETs have low mutational burden",
   "Average 16 mutations/tumour vs >50 in pancreatic adenocarcinoma"]);

// 9. Signalling Pathways
addBulletSlide(pres, "MOLECULAR", "Key Signalling Pathways in PanNENs",
  ["## mTOR Pathway (Therapeutic Target)",
   "PI3K → AKT → mTOR complex activation",
   "Promotes cell growth, proliferation, angiogenesis",
   "Inhibited by: Everolimus (mTORC1 inhibitor) – RADIANT-3 trial",
   "## VEGF / Angiogenesis Pathway",
   "PanNETs are highly vascular tumours",
   "VEGF-A overexpression promotes tumour vascularity",
   "Target of: Sunitinib (multi-kinase inhibitor) – SUN1111 trial",
   "Cabozantinib (VEGFR2/MET/AXL inhibitor) – CABINET trial 2025"],
  ["## Somatostatin Receptor (SSTR) Pathway",
   "SSTR2 and SSTR5 overexpressed on most PanNETs",
   "SSA binding → Gi protein → inhibits adenylyl cyclase",
   "Reduces hormone secretion AND tumour cell proliferation",
   "Basis for: SSA therapy + DOTATATE PET imaging + PRRT",
   "## VEGFR / MET Pathway (Cabozantinib)",
   "Dual inhibition of VEGFR2 + MET receptor",
   "Phase 3 CABINET trial (NEJM, Feb 2025): PFS benefit",
   "HR 0.47 vs placebo in PanNETs",
   "FDA approved March 2025 for advanced PanNETs"]);

// ── SECTION 3 ─────────────────────────────────────────────────────────────────
addSection(pres, 3, "WHO Grading &\nStaging (2022)", "Classification drives treatment decisions");

// 11. WHO Grading
addTableSlide(pres, "GRADING", "WHO 2022 Classification – PanNENs",
  ["Grade / Type", "Differentiation", "Mitoses / 10 HPF", "Ki-67 Index", "Behaviour"],
  [
    ["G1 NET", "Well differentiated", "<2", "<3%", "Low malignant potential"],
    ["G2 NET", "Well differentiated", "2–20", "3–20%", "Intermediate malignant potential"],
    ["G3 NET", "Well differentiated (high Ki-67)", ">20", ">20%", "High – but distinct from NEC"],
    ["NEC – Small Cell", "Poorly differentiated", ">20", ">20%", "Highly aggressive – like SCLC"],
    ["NEC – Large Cell", "Poorly differentiated", ">20", ">20%", "Highly aggressive"],
    ["MiNEN", "Mixed NEN + non-NEN", "Variable", "Variable", "Behaviour of dominant component"],
  ],
  [2.0, 1.8, 1.5, 1.3, 2.0]);

// 12. G3 NET vs NEC distinction
addBulletSlide(pres, "KEY DISTINCTION", "G3 NET vs Neuroendocrine Carcinoma (NEC) – Critical Difference",
  ["## G3 NET (Well-differentiated, Ki-67 >20%)",
   "Retains well-differentiated histological morphology",
   "Often ATRX/DAXX/MEN1 mutations (same as G1/G2)",
   "RB1 and TP53 typically WILD-TYPE",
   "Better prognosis than NEC despite high Ki-67",
   "Responds to SSAs and targeted therapy (everolimus/sunitinib)",
   "NCCN 2025: G3 NET has dedicated treatment algorithm"],
  ["## NEC (Poorly-differentiated)",
   "Small cell or large cell morphology",
   "TP53 mutations in ~90%",
   "RB1 loss in ~70%",
   "ATRX/DAXX/MEN1 mutations: RARE",
   "Poor prognosis – median survival <12 months",
   "Treated like small cell carcinoma: platinum + etoposide",
   "## Clinical Pearl",
   "Ki-67 >55% almost always NEC",
   "Ki-67 20–55% – morphology determines G3 NET vs NEC"]);

// ── SECTION 4 ─────────────────────────────────────────────────────────────────
addSection(pres, 4, "Insulinoma", "Most common functional PanNET · >90% benign");

// 14. Insulinoma overview
addImgRight(pres, "INSULINOMA", "Insulinoma – Overview & Pathology",
  ["## Epidemiology",
   "Most common functional PanNET",
   "Incidence: ~4 per million/year (range 1–32)",
   "Any age; slight female predominance",
   "## Pathology",
   ">90% solitary, benign; <2 cm",
   "Equally distributed throughout pancreas",
   "Histology: resembles giant islets; amyloid deposition hallmark",
   "~10% associated with MEN-1 (multiple, recurrent)",
   "## Malignancy Predictors",
   "Size >2 cm, vascular invasion, perineural invasion",
   "Mitotic rate, Ki-67 index"],
  "mri_net");

// 15. Whipple's Triad & Diagnosis
addBulletSlide(pres, "DIAGNOSIS", "Insulinoma – Clinical Features & Diagnosis",
  ["## Whipple's Triad (Classic)",
   "① Symptoms induced by fasting or exercise",
   "② Hypoglycaemia documented (glucose <3.0 mmol/L / <54 mg/dL)",
   "③ Relief of symptoms by glucose administration",
   "## Neuroglycopenic Symptoms",
   "Confusion, stupor, coma, behavioural change",
   "Often misdiagnosed as epilepsy or psychiatric illness",
   "## Adrenergic Symptoms",
   "Sweating, tremor, palpitations, nausea, anxiety, weakness",
   "Weight gain (patients eat to prevent symptoms)"],
  ["## Diagnostic Tests",
   "72-hour supervised fast: GOLD STANDARD",
   "Document: glucose <3.0 mmol/L + insulin ↑ + C-peptide ↑",
   "Elevated C-peptide → confirms endogenous insulin (rules out exogenous)",
   "Elevated proinsulin levels (>20% of insulin level)",
   "## Key Differentials",
   "Factitious hypoglycaemia: low C-peptide, no proinsulin",
   "Sulfonylurea toxicity: elevated C-peptide, drug screen positive",
   "Non-islet cell tumour hypoglycaemia (IGF-2 related)",
   "## Provocative Tests",
   "Glucagon stimulation if fast negative",
   "Calcium infusion test (selective arterial)"]);

// 16. Insulinoma Localisation & Treatment
addBulletSlide(pres, "TREATMENT", "Insulinoma – Imaging & Management",
  ["## Localisation (Priority Order)",
   "EUS – sensitivity >90%; best for small tumours (<1 cm)",
   "CT/MRI triple-phase – first-line cross-sectional; may miss <1 cm",
   "GLP-1 receptor scintigraphy – insulinomas overexpress GLP-1R",
   "Note: NOT avid on Octreoscan/DOTATATE (unlike other PanNETs)",
   "Arterial stimulation venous sampling (ASVS) – for elusive/multiple",
   "## Surgical Management",
   "Surgery is definitive – curative in >90% of benign cases",
   "Exophytic/peripheral: enucleation (preferred)",
   "Body/tail: distal pancreatectomy ± spleen preservation",
   "Head: pancreatoduodenectomy (Whipple)"],
  ["## Medical Management (pre-op or inoperable)",
   "Diazoxide – inhibits insulin release (K-ATP channel opener); 1st line",
   "Frequent small meals – cornerstone of symptom control",
   "Everolimus – mTOR inhibitor; improves glycaemia + antitumour effect",
   "Octreotide – CAUTION: may suppress glucagon → worsen hypoglycaemia",
   "## Malignant Insulinoma",
   "Streptozocin + 5-FU (classic chemo regimen)",
   "Everolimus (RADIANT-3 subgroup benefit)",
   "PRRT with Lu-177 DOTATATE (off-label for SSTR+ tumours)",
   "Temozolomide-based regimens for progressive disease",
   "## Prognosis",
   "Benign: >95% cured by surgery",
   "Malignant: 5-year survival ~25–40%"]);

// ── SECTION 5 ─────────────────────────────────────────────────────────────────
addSection(pres, 5, "Gastrinoma &\nZollinger-Ellison Syndrome", "Most common malignant functional PanNET");

// 18. Gastrinoma overview
addBulletSlide(pres, "GASTRINOMA", "Gastrinoma – Overview",
  ["## Epidemiology",
   "Incidence: 0.5–4 per million/year",
   ">50% already metastasised at diagnosis",
   "~25% associated with MEN-1",
   "## Location – Gastrinoma Triangle (90% of cases)",
   "Medially: junction of neck/body of pancreas",
   "Inferiorly: junction of 2nd/3rd part of duodenum",
   "Superiorly: junction of cystic and common bile ducts",
   "Sporadic: mostly duodenal (60–80%), small (<5 mm), multiple",
   "MEN-1: all duodenal; multiple; generally smaller"],
  ["## Clinical Features",
   "Peptic ulcer disease (>90%) – multiple, unusual locations",
   "Diarrhoea (>50%) – presenting symptom in ~30%",
   "GERD (most common symptom overall)",
   "Intractable jejunal ulcers → SUSPECT ZES",
   "## Pathology",
   "Histologically bland – rarely shows marked anaplasia",
   "Malignancy defined by metastases, not histology alone",
   "Duodenal gastrinomas often <5mm – easy to miss",
   "## ZES in MEN-1",
   "Nearly always duodenal origin in MEN-1",
   "Multiple small tumours – surgical cure is rare",
   "Gastrinoma is the leading cause of death in MEN-1"]);

// 19. ZES Diagnosis
addBulletSlide(pres, "DIAGNOSIS", "ZES Diagnosis – Step-by-Step",
  ["## Step 1: Clinical Suspicion",
   "PUD with diarrhoea, multiple ulcers, unusual locations",
   "Failure to heal on standard PPI therapy",
   "Intractable jejunal ulcers (pathognomonic hint)",
   "## Step 2: Fasting Serum Gastrin (FSG)",
   "Normal: <110 pg/mL",
   "FSG >10× normal (>1000 pg/mL) + pH <2 = DIAGNOSTIC",
   "PITFALL: PPIs falsely elevate gastrin – stop 1 week before testing",
   "## Step 3: Gastric pH",
   "pH <2 = confirms acid hypersecretion (rules out other causes of ↑gastrin)"],
  ["## Step 4: Secretin Provocation Test",
   "Used when FSG is borderline elevated",
   "IV secretin → PARADOXICAL rise in gastrin (≥120 pg/mL within 15 min)",
   "Normal response: gastrin decreases or no change",
   "## Differential Diagnosis of ↑FSG",
   "ZES (pH <2 + ↑FSG)",
   "Atrophic gastritis / H. pylori (pH >5 + ↑FSG)",
   "PPI use (reversible – stop drug)",
   "G-cell hyperplasia",
   "## Imaging for Localisation",
   "CT/MRI, EUS, Octreotide scintigraphy / DOTATATE PET-CT",
   "EUS: best for small duodenal tumours"]);

// 20. Gastrinoma Management
addBulletSlide(pres, "MANAGEMENT", "Gastrinoma – Medical & Surgical Management",
  ["## Medical Management",
   "PPIs – cornerstone of symptom control",
   "High-dose omeprazole / pantoprazole",
   "Rapid resolution of pain and diarrhoea",
   "Somatostatin analogues (octreotide LAR / lanreotide)",
   "For refractory cases; control hypergastrinemia",
   "## Systemic Therapy (Metastatic)",
   "Everolimus – mTOR inhibitor",
   "Sunitinib – TKI (pancreatic NETs only)",
   "Cabozantinib – new 2025 approval",
   "Streptozocin-based chemotherapy for bulky/progressive NEC"],
  ["## Surgical Management",
   "Recommended for sporadic gastrinomas once symptoms controlled",
   "Goal: eliminate source of gastrin hypersecretion",
   "Reduces risk of metastatic disease",
   "## MEN-1 Gastrinoma (Controversial)",
   "Surgery for tumours ≥1.5–2 cm (consensus threshold)",
   "Small tumours (<1.5 cm): watchful waiting often preferred",
   "Complete biochemical cure rare in MEN-1 ZES",
   "## Prognosis",
   "5-year survival: ~65%",
   "10-year survival: ~51%",
   "Complete resection: 90–100% 5- and 10-year survival",
   "Metastatic disease: liver-directed therapy + PRRT"]);

// ── SECTION 6 ─────────────────────────────────────────────────────────────────
addSection(pres, 6, "Glucagonoma", "The 4 D's • Necrolytic Migratory Erythema");

// 22. Glucagonoma
addImgRight(pres, "GLUCAGONOMA", "Glucagonoma – The 4 D's & Management",
  ["## The 4 D's of Glucagonoma",
   "Dermatitis – Necrolytic Migratory Erythema (NME) – PATHOGNOMONIC",
   "Diabetes (mild glucose intolerance – glucagon excess)",
   "Deep vein thrombosis – hypercoagulable state",
   "Depression + weight loss + hypoaminoacidaemia",
   "## Other Features",
   "Normochromic normocytic anaemia",
   "Glossitis, stomatitis, angular cheilitis",
   "## Diagnosis",
   "Fasting plasma glucagon >500 pg/mL (>940 pmol/L) diagnostic",
   "Usually large at presentation (>5 cm)",
   "Malignancy rate: 60–80% – often metastasised at diagnosis",
   "## Treatment",
   "SSAs (octreotide) for symptom control – improves NME",
   "Surgery if resectable",
   "Zinc supplementation may help NME"],
  "nme");

// ── SECTION 7 ─────────────────────────────────────────────────────────────────
addSection(pres, 7, "VIPoma &\nRare Functional Tumours", "WDHA syndrome · Somatostatinoma · ACTHoma");

// 24. VIPoma
addBulletSlide(pres, "VIPoma", "VIPoma – Verner-Morrison Syndrome (WDHA)",
  ["## WDHA Syndrome",
   "W – Watery diarrhoea (>3 litres/day, profuse secretory)",
   "D – Hypokalaemia (massive GI potassium losses → arrhythmias)",
   "H – Hypochlorhydria / Achlorhydria (VIP inhibits acid secretion)",
   "A – Achlorhydria (confirmed by gastric pH measurement)",
   "## Pathophysiology",
   "VIP → activates adenylyl cyclase in enterocytes",
   "↑ cAMP → massive chloride and water secretion into gut lumen",
   "## Pathology",
   "Non-β islet cell origin; malignancy rate ~60–80%",
   "Often large at diagnosis; majority in body/tail of pancreas"],
  ["## Diagnosis",
   "Fasting plasma VIP levels (>200 pg/mL diagnostic)",
   "Stool osmotic gap = 0 (confirms secretory, not osmotic diarrhoea)",
   "CT/MRI for tumour localisation",
   "## Management",
   "IV fluids and electrolyte replacement – critical acute management",
   "SSAs (octreotide / lanreotide) – first-line for WDHA control",
   "Glucocorticoids – adjunct for refractory diarrhoea",
   "Surgery for localised disease",
   "## Differential Diagnosis",
   "Coeliac disease, Crohn's, laxative abuse (osmotic gap >50)",
   "Carcinoid syndrome (flushing, bronchospasm, different marker profile)"]);

// 25. Rare functional tumours
addBulletSlide(pres, "RARE TUMOURS", "Somatostatinoma & Other Rare Functional Tumours",
  ["## Somatostatinoma",
   "Inhibitory triad: Diabetes (insulin inhibition) + Steatorrhoea (enzyme inhibition) + Cholelithiasis (gallbladder inhibition)",
   "δ-cell origin; ~60–70% malignant",
   "Located: head of pancreas or duodenum",
   "Associated with NF-1 (neurofibromatosis type 1) – duodenal origin",
   "## GRFoma (Ectopic GHRH Secretion)",
   "GHRH overproduction → Acromegaly",
   "Must be distinguished from pituitary adenoma causing acromegaly",
   "Biochemistry: elevated GHRH + GH + IGF-1"],
  ["## ACTHoma (Ectopic ACTH)",
   "ACTH secretion → Cushing's syndrome",
   "Often aggressive, poorly differentiated NEC",
   "Management: ketoconazole, metyrapone, adrenalectomy",
   "## PPoma",
   "Pancreatic polypeptide-producing – usually non-functional",
   "Elevated PP levels useful as a marker in MEN-1 surveillance",
   "## Carcinoid Tumours (Serotonin)",
   "Serotonin-releasing → carcinoid syndrome: flushing, diarrhoea, bronchospasm",
   "Urine 5-HIAA elevated",
   "Cardiac involvement (right-sided valvular disease) in advanced disease"]);

// ── SECTION 8 ─────────────────────────────────────────────────────────────────
addSection(pres, 8, "Non-Functional\nPanNETs", "Largest subgroup · Diagnosed late · Mass effect");

// 27. Non-functional overview
addBulletSlide(pres, "NF-PanNETs", "Non-Functional PanNETs – Clinical Features",
  ["## Definition",
   "No clinically apparent hormonal hypersecretion syndrome",
   "May produce hormones subclinically (PP, CgA, neurotensin)",
   "Account for 25–100% of all PanNETs depending on series",
   "Most common type in recent incidental-detection era",
   "## Why Diagnosed Late?",
   "No hormonal symptoms → silent until mass effect or incidental finding",
   "Abdominal pain (most common symptom)",
   "Obstructive jaundice (head of pancreas tumours)",
   "Weight loss, GI bleeding, palpable mass"],
  ["## Incidental PanNETs",
   "Increasing detection due to widespread CT/MRI use",
   "Small (<2 cm) incidental PanNETs: often benign biology",
   "Active surveillance acceptable for <2 cm G1 asymptomatic lesions",
   "## Malignancy Risk",
   "~60–90% malignant at diagnosis",
   "Liver metastases most common spread (portal venous system)",
   "Lymph node and peritoneal spread less common",
   "## Biomarkers",
   "Chromogranin A (CgA) – elevated in 70–80%",
   "Pancreatic polypeptide (PP) – best marker for NF-PanNETs",
   "NSE – elevated in high-grade/poorly differentiated"]);

// 28. Management of advanced NF-PanNETs
addBulletSlide(pres, "MANAGEMENT", "Advanced Non-Functional PanNETs – Management",
  ["## Surgical Options",
   "Resection for localised/stage I–III disease",
   "Laparoscopic distal pancreatectomy (body/tail)",
   "Pancreatoduodenectomy (head/uncinate process)",
   "Cytoreductive surgery for selected metastatic cases",
   "## Liver-Directed Therapy",
   "Hepatic arterial embolisation (HAE) – for dominant liver metastases",
   "TACE (transarterial chemoembolisation)",
   "Radiofrequency ablation / microwave ablation",
   "Liver resection for resectable metastases"],
  ["## Active Surveillance Criteria (ENETS 2023)",
   "Tumour ≤2 cm, G1, no symptoms, no vascular invasion",
   "3–6 monthly MRI + biomarkers initially",
   "Proceed to surgery if: growth, symptoms, or malignant features",
   "## Systemic Therapy",
   "SSAs (lanreotide / octreotide) – antiproliferative in SSTR+ tumours",
   "Everolimus (RADIANT-3) – PFS benefit in progressive G1/G2",
   "Sunitinib – PFS benefit in progressive pancreatic NETs",
   "Cabozantinib (CABINET 2025) – new option",
   "Lu-177 DOTATATE PRRT – for SSTR-positive disease",
   "## Chemotherapy",
   "Streptozocin + 5-FU (classic; moderate response rate)",
   "Temozolomide ± capecitabine (MGMT-deficient tumours)"]);

// ── SECTION 9 ─────────────────────────────────────────────────────────────────
addSection(pres, 9, "MEN-1 Syndrome\n& Genetics", "Chromosome 11q13 • Menin • Autosomal Dominant");

// 30. MEN-1
addCardSlide(pres, "MEN-1 SYNDROME", "Multiple Endocrine Neoplasia Type 1 (MEN-1)",
  [
    { icon:"🦴", head:"Parathyroid (>90%)", color:C.teal,
      body:"Primary hyperparathyroidism\nHypercalcaemia\nFirst and most common manifestation\nMultiple gland hyperplasia (not adenoma)\nMay present before age 20" },
    { icon:"🧠", head:"Pituitary (30–40%)", color:C.purple,
      body:"Prolactinoma most common\nGH-secreting → acromegaly\nACTH → Cushing's\nNFPA – non-functional\nScreening: MRI pituitary annually" },
    { icon:"🔬", head:"Pancreas (60–70%)", color:C.navy,
      body:"Gastrinoma most common\nInsulinoma second\nMultiple, small, duodenal\nOften malignant\nLeading cause of death in MEN-1" },
    { icon:"🧬", head:"Genetics", color:C.amber,
      body:"MEN1 gene: chromosome 11q13\nEncodes Menin – tumour suppressor\nAutosomal dominant\nHigh penetrance >95%\nDe novo in 10–15%\nGermline testing for families" },
  ]);

// 31. MEN-1 Management
addBulletSlide(pres, "MEN-1 MANAGEMENT", "MEN-1 – Pancreatic Manifestations & Surveillance",
  ["## Pancreatic PanNETs in MEN-1",
   "Gastrinomas most common – typically multiple, duodenal, small",
   "Insulinomas: ~10% of all insulinomas are MEN-1-associated",
   "PanNETs: multiple, smaller, earlier onset than sporadic",
   "Often functional (ZES leading cause of morbidity)",
   "## Surgery in MEN-1 PanNETs",
   "Controversial for small tumours (<1.5 cm)",
   "ENETS 2023: operate for tumours ≥2 cm or growing rapidly",
   "Complete cure rare due to multiple lesions"],
  ["## Surveillance Recommendations (ENETS 2023)",
   "Annual MRI pancreas + liver (higher sensitivity than CT)",
   "Annual EUS (more sensitive for small lesions)",
   "Annual CgA, fasting gastrin, fasting glucose/insulin, calcium",
   "Pituitary: annual MRI + IGF-1/prolactin",
   "Parathyroid: annual calcium, PTH",
   "Start surveillance at age 5–10 (early onset MEN-1)",
   "## Germline Testing",
   "Offer to all first-degree relatives of index case",
   "Genetic testing identifies ~95% of MEN-1 carriers",
   "Negative testing: exit from annual surveillance programme"]);

// ── SECTION 10 ─────────────────────────────────────────────────────────────────
addSection(pres, 10, "Imaging &\nDiagnosis", "Multimodality approach · Biomarkers · Histology");

// 33. Imaging modalities
addTableSlide(pres, "IMAGING", "Imaging Modalities for PanNET Localisation",
  ["Modality", "Sensitivity", "Best For", "Key Limitation"],
  [
    ["CT Triphasic", "75–80%", "Initial staging, liver mets, hypervascular enhancement", "Misses tumours <1 cm"],
    ["MRI (DWI)", "85–90%", "Small lesions, liver mets, no radiation", "Cost, availability, time"],
    ["EUS", ">90%", "Insulinoma (<1 cm), FNA biopsy for grading", "Operator-dependent"],
    ["DOTATATE PET-CT", "93–95%", "SSTR+ tumours, occult primary, staging", "Low sensitivity for insulinoma"],
    ["GLP-1R Scintigraphy", "~90%", "Insulinoma (overexpress GLP-1R)", "Not widely available"],
    ["Selective Angiography + ASVS", "Varies", "Elusive insulinoma, multiple lesions", "Invasive, expertise needed"],
  ],
  [1.7, 1.3, 3.2, 2.4]);

// 34. Biomarkers
addBulletSlide(pres, "BIOMARKERS", "Biochemical Markers in PanNET Diagnosis & Monitoring",
  ["## Chromogranin A (CgA)",
   "General neuroendocrine marker; elevated in 70–80% of PanNETs",
   "Useful for monitoring response and detecting recurrence",
   "False positives: PPIs, renal failure, atrophic gastritis, hypertension",
   "Not tumour-specific – must be interpreted in clinical context",
   "## NSE (Neuron-Specific Enolase)",
   "Elevated in poorly differentiated/high-grade NECs",
   "Good marker for aggressive biology and monitoring",
   "## Specific Hormones",
   "Fasting insulin + C-peptide (insulinoma)",
   "Fasting serum gastrin (gastrinoma)",
   "Fasting glucagon (glucagonoma)",
   "Fasting VIP (VIPoma)"],
  ["## Histological Confirmation",
   "EUS-FNA: preferred for unresectable or metastatic lesions",
   "IHC markers: Synaptophysin + Chromogranin A → confirm NE origin",
   "Ki-67 labelling index: mandatory for grading",
   "## Emerging Biomarkers (2024–2025)",
   "NETest (multianalyte blood test): 96% sensitivity for PanNETs",
   "Circulating tumour DNA (ctDNA): prognostic in advanced disease",
   "Liquid biopsy: gaining traction for monitoring recurrence",
   "## Urine / Functional Markers",
   "5-HIAA (carcinoid/serotonin-secreting tumours)",
   "24-hr urine 5-HIAA > 25 mg/day → carcinoid syndrome",
   "PP (pancreatic polypeptide) – NF-PanNET marker"]);

// 35. DOTATATE PET
addImgRight(pres, "IMAGING", "68Ga-DOTATATE PET-CT – The Gold Standard",
  ["## Principle",
   "68Ga-DOTATATE binds somatostatin receptor 2 (SSTR2)",
   "PET acquisition: superior spatial resolution vs older Octreoscan",
   "Combined functional (PET) + anatomic (CT) information",
   "## Sensitivity & Specificity",
   "Sensitivity: 93–95% for well-differentiated PanNETs",
   "Specificity: ~95%",
   "Superiority over conventional imaging demonstrated in NETTER studies",
   "## Clinical Uses",
   "Primary staging + detection of occult metastases",
   "Patient selection for PRRT (must be SSTR+)",
   "Monitoring treatment response",
   "## Important Exceptions – LOW Uptake",
   "Insulinoma (low SSTR2 expression) → use GLP-1R scintigraphy",
   "G3 NET / NEC (may downregulate SSTR2)",
   "MiNEN tumours (heterogeneous expression)"],
  "dotatate");

// ── SECTION 11 ─────────────────────────────────────────────────────────────────
addSection(pres, 11, "Treatment Principles", "Surgery · SSAs · Targeted Therapy · PRRT · 2025 Advances");

// 37. Surgery
addImgRight(pres, "SURGERY", "Surgical Management of PanNETs",
  ["## Curative Surgery",
   "Localised resectable disease: surgery is first-line for cure",
   "Insulinoma: enucleation (exophytic) or distal pancreatectomy",
   "Head lesions: pancreatoduodenectomy (Whipple procedure)",
   "Laparoscopic approach: preferred for body/tail lesions",
   "## Cytoreductive Surgery",
   "70% hepatic debulking for functional tumours with liver mets",
   "Palliative benefit even when cure not possible",
   "Improves symptom control and may extend survival",
   "## Intraoperative Ultrasound",
   "Mandatory for insulinoma – detects non-palpable tumours",
   "Reduces risk of missed lesions, especially in MEN-1"],
  "whipple");

// 38. Somatostatin Analogues
addBulletSlide(pres, "PHARMACOLOGY", "Somatostatin Analogues (SSAs) – Key Pharmacology",
  ["## Mechanism",
   "Bind SSTR2/SSTR5 on tumour cells",
   "→ Gi protein → ↓ cAMP → inhibit hormone secretion",
   "→ Direct antiproliferative effect (cell cycle arrest)",
   "## Drugs",
   "Octreotide (short-acting IV/SC) – acute symptomatic crises",
   "Octreotide LAR 20–30 mg IM monthly – maintenance",
   "Lanreotide Autogel 90–120 mg SC every 4 weeks – maintenance",
   "## Key Trials",
   "PROMID (2009): Octreotide LAR ↑ TTP vs placebo in midgut NETs",
   "CLARINET (2014): Lanreotide ↑ PFS vs placebo (HR 0.47, G1/G2)"],
  ["## Indications",
   "Symptom control: glucagonoma, VIPoma, gastrinoma, carcinoid",
   "Antiproliferative: G1/G2 SSTR+ tumours",
   "Pre-PRRT: load receptor with cold SSA for sensitisation",
   "## AVOID in insulinoma monotherapy",
   "Suppresses glucagon and growth hormone → worsens hypoglycaemia",
   "Can use with close glucose monitoring in expert centres",
   "## Side Effects",
   "GI: diarrhoea, steatorrhoea, nausea, abdominal cramps",
   "Cholelithiasis (inhibits gallbladder motility) – screen at 6–12 months",
   "Hyperglycaemia (insulin inhibition)",
   "Bradycardia (rare)"]);

// 39. Everolimus
addBulletSlide(pres, "TARGETED THERAPY", "Everolimus (mTOR Inhibitor) – RADIANT Trials",
  ["## Mechanism",
   "mTORC1 inhibitor – blocks PI3K/AKT/mTOR signalling",
   "Reduces tumour cell proliferation and angiogenesis",
   "Inhibits HIF-1α → indirect anti-VEGF effect",
   "## RADIANT-3 Trial (NEJM 2011)",
   "Progressive pancreatic NETs (G1/G2)",
   "Everolimus 10 mg/day vs placebo",
   "PFS: 11.0 vs 4.6 months (HR 0.35, P<0.001)",
   "FDA approved for advanced pancreatic NETs",
   "## RADIANT-4 Trial",
   "Non-functional lung/GI NETs (no PanNET subgroup)",
   "PFS benefit maintained in stable disease"],
  ["## RADIANT-3 Subgroup – Insulinoma",
   "Significant glycaemic improvement in malignant insulinoma",
   "Reduces insulin secretion + antitumour effect",
   "Now incorporated in management of malignant insulinoma",
   "## Side Effects",
   "Stomatitis (most common – 40–70%)",
   "Rash, fatigue, diarrhoea",
   "Hyperglycaemia, hyperlipidaemia",
   "Pneumonitis (dose-limiting, 13–17%) – requires dose reduction",
   "Immunosuppression – opportunistic infections",
   "## Drug Interactions",
   "CYP3A4 substrate – avoid strong inhibitors/inducers",
   "Dose adjust with hepatic impairment"]);

// 40. Sunitinib
addBulletSlide(pres, "TARGETED THERAPY", "Sunitinib – Multi-Kinase Inhibitor (SUN1111 Trial)",
  ["## Mechanism",
   "Multi-kinase inhibitor: VEGFR1/2/3, PDGFR, KIT, RET, FLT3",
   "Anti-angiogenic + direct antiproliferative effects",
   "## SUN1111 Trial (NEJM 2011)",
   "Progressive, well-differentiated pancreatic NETs",
   "Sunitinib 37.5 mg/day continuous vs placebo",
   "PFS: 11.4 vs 5.5 months (HR 0.42, P<0.001)",
   "OS trend improved (trial stopped early due to benefit)",
   "## FDA Approval",
   "Approved specifically for progressive, well-differentiated pancreatic NETs",
   "NOT approved for extrapancreatic NETs (unlike everolimus)"],
  ["## Side Effects",
   "Hypertension (50–70%) – manage with amlodipine, ACE inhibitors",
   "Hand-foot skin reaction (palmar-plantar erythrodysesthesia)",
   "Diarrhoea, nausea, mucositis",
   "Fatigue, cytopenias",
   "Cardiac toxicity – monitor LVEF at baseline and periodically",
   "Hypothyroidism – screen TSH every 3 months",
   "## Dosing",
   "37.5 mg/day continuous (PanNET regimen)",
   "or 50 mg/day 4 weeks on, 2 weeks off (other cancers)",
   "Dose reduce for toxicity: 12.5 mg decrements"]);

// 41. CABOZANTINIB (NEW 2025)
addEvidenceSlide(pres, "NEW 2025 APPROVAL", "Cabozantinib – FDA Approved March 2025 (CABINET Trial)",
  [
    { label:"CABINET Trial (NEJM, Feb 2025)", title:"Phase 3 RCT · Chan et al. · Cabozantinib vs placebo in advanced extrapancreatic NETs and PanNETs", result:"PFS benefit in both cohorts" },
    { label:"PanNET Cohort", title:"Cabozantinib 60 mg/day in progressive advanced pancreatic NETs", result:"HR 0.47 vs placebo (P<0.001)" },
    { label:"Mechanism", title:"Cabozantinib inhibits VEGFR2 + MET + AXL + RET + TIE2", result:"Anti-angiogenic + anti-proliferative" },
    { label:"FDA Approval", title:"March 31, 2025 – first new PNET approval since 2018 sunitinib/everolimus", result:"Advanced, progressive PanNETs" },
  ]);

// 42. PRRT
addImgRight(pres, "PRRT", "Peptide Receptor Radionuclide Therapy (PRRT)",
  ["## Principle",
   "177Lu-DOTATATE: radiolabelled SSA",
   "Binds SSTR2 → internalised → delivers beta radiation",
   "Requires SSTR+ tumour on DOTATATE PET-CT",
   "## NETTER-1 Trial (Strosberg et al., NEJM 2017)",
   "177Lu-DOTATATE + octreotide LAR vs high-dose octreotide",
   "20-month PFS: 65.2% vs 10.8% (HR 0.18, P<0.0001)",
   "FDA/EMA approved for somatostatin receptor-positive GEP-NETs",
   "## NETTER-2 Trial (Singh et al., Lancet 2024)",
   "177Lu-DOTATATE in NEWLY DIAGNOSED advanced G2/G3 PanNETs",
   "PFS benefit vs high-dose octreotide LAR",
   "First-line PRRT data – practice changing",
   "## Patient Selection",
   "SSTR2+ on 68Ga-DOTATATE PET-CT (mandatory)",
   "Adequate renal function (GFR >50 mL/min)",
   "4 cycles IV over 7.4 GBq each"],
  "lutetium");

// 43. Chemotherapy in NEC
addBulletSlide(pres, "CHEMOTHERAPY", "Chemotherapy – Indications & Regimens",
  ["## Neuroendocrine Carcinoma (NEC – Poorly Differentiated)",
   "First-line: Cisplatin + Etoposide (like SCLC)",
   "Alternative: Carboplatin + Etoposide (similar efficacy, better tolerated)",
   "Response rates: 40–70% but short duration",
   "Median OS: 11–13 months",
   "## Well-differentiated PanNETs (when targeted fails)",
   "Streptozocin + 5-FU – classic regimen; response ~40%",
   "Streptozocin + Doxorubicin – alternative",
   "Temozolomide ± Capecitabine (TEMCAP): response ~70% in MGMT-methylated",
   "MGMT testing recommended before temozolomide"],
  ["## MGMT Methylation (Predictive Biomarker)",
   "MGMT gene methylation → reduced DNA repair → temozolomide sensitivity",
   "MGMT testing now recommended by ENETS 2023 guidelines",
   "MGMT-low: benefit from temozolomide-based regimens",
   "## Immunotherapy (Emerging)",
   "PD-L1 inhibitors: limited activity in well-differentiated NETs",
   "Pembrolizumab: activity in MMR-deficient / high-TMB NETs",
   "Ongoing: combination PRRT + immunotherapy trials",
   "## Sequencing in Advanced PanNET",
   "ENETS/NCCN: no fixed sequence – individualise",
   "Somatostatin status → PRRT eligibility",
   "mTOR pathway → everolimus",
   "VEGF pathway → sunitinib or cabozantinib"]);

// 44. Treatment Algorithm
addBulletSlide(pres, "ALGORITHM", "NCCN 2025 – Treatment Algorithm for Advanced PanNETs",
  ["## G1/G2 Unresectable – Well-differentiated SSTR+",
   "Observation (slow growth, asymptomatic, low burden)",
   "SSA (octreotide LAR or lanreotide) – antiproliferative",
   "177Lu-DOTATATE PRRT – for progressive SSTR+ disease",
   "Everolimus OR Sunitinib OR Cabozantinib (new 2025)",
   "## G3 Well-differentiated NET (Ki-67 >20%)",
   "NCCN 2025 has dedicated G3 NET algorithm",
   "Resectable stage IV + favourable biology: surgery",
   "Unfavourable biology: neoadjuvant therapy first",
   "PRRT considered if SSTR+ and Ki-67 <55%"],
  ["## NEC (Poorly-differentiated)",
   "Platinum + etoposide (first-line)",
   "Second-line: temozolomide, FOLFOX, FOLFIRI",
   "Immunotherapy trials for MMR-deficient",
   "## Liver-Dominant Disease",
   "Locoregional: HAE, TACE, SIRT (Y90 microspheres)",
   "SIRT (Y90): ENETS 2023 recommends for liver-dominant, SSTR-",
   "Ablation (RFA/MWA) for small/suitable lesions",
   "## New Evidence Influencing Practice",
   "CABINET (2025): Cabozantinib now standard option",
   "NETTER-2 (2024): First-line PRRT in G2/G3",
   "Proteogenomic subtypes (Ji et al., 2025): future personalised Rx"]);

// 45. Liver Metastases
addBulletSlide(pres, "LIVER METS", "Management of Liver Metastases from PanNETs",
  ["## Surgical Options",
   "Liver resection: feasible in ~10–15% of patients",
   "Requires: >90% debulking for functional tumours",
   "Combined pancreatic primary + liver mets resection: selected cases",
   "Liver transplantation: highly selected patients (slow-growing G1/G2, no extrahepatic)",
   "## Systematic Review 2025 (Xue et al., Front Endocrinol)",
   "Surgical resection shows best long-term outcome for resectable disease",
   "TACE provides 30–50% response rate for unresectable",
   "PRRT + TACE combination: emerging evidence"],
  ["## Liver-Directed Ablative Therapies",
   "Hepatic arterial embolisation (HAE) – SSTR- or between PRRT cycles",
   "TACE – adds chemotherapy (streptozocin or doxorubicin) to embolisation",
   "SIRT (Y90 microspheres) – ENETS 2023 recommended for liver-dominant",
   "RFA / MWA: for lesions <3 cm, accessible lesions",
   "## Systemic + Local Combination",
   "SSA + liver-directed therapy: synergistic",
   "PRRT → liver-directed if residual liver disease",
   "## Prognostic Factors for Liver Mets",
   "Number, size, % liver involvement",
   "Primary tumour grade (G1 vs G2 vs G3)",
   "SSTR expression status",
   "Time from diagnosis to liver metastases"]);

// ── SECTION 12 ─────────────────────────────────────────────────────────────────
addSection(pres, 12, "Prognosis, Evidence\n& Summary", "Survival data · Key trials · Exam pearls");

// 47. Prognosis table
addTableSlide(pres, "PROGNOSIS", "Prognosis of PanNENs by Tumour Type",
  ["Tumour", "Malignancy Rate", "5-yr Survival", "Key Prognostic Factor"],
  [
    ["Insulinoma (benign)", "~10%", ">95% (surgery curative)", "Size, vascular invasion"],
    ["Insulinoma (malignant)", "~10% of all", "~25–40%", "Ki-67, metastases"],
    ["Gastrinoma (sporadic)", ">50%", "65% (complete resection: 90–100%)", "Complete resection achievable"],
    ["Gastrinoma (MEN-1)", ">50%", "Long survival if ZES controlled", "Liver metastases"],
    ["Glucagonoma", "60–80%", "Poor – metastasised at presentation", "Stage at diagnosis"],
    ["VIPoma", "60–80%", "Moderate with SSA control", "SSA responsiveness"],
    ["NF-PanNET G1", "60–90%", "80–100% (5yr); 60–70% (10yr)", "Grade, size, stage"],
    ["NF-PanNET G2/G3", "Most", "40–60% (5yr)", "Ki-67, ATRX/DAXX status"],
    ["NEC", "100%", "<15% (5yr); median OS ~11 mo", "Response to platinum/etop"],
  ],
  [2.0, 1.5, 2.3, 3.8]);

// 48. Key Clinical Trials
addEvidenceSlide(pres, "KEY TRIALS", "Landmark Trials in PanNET Management",
  [
    { label:"RADIANT-3 (NEJM 2011)", title:"Everolimus vs placebo in progressive pancreatic NETs", result:"PFS 11 vs 4.6 mo · HR 0.35" },
    { label:"SUN1111 (NEJM 2011)", title:"Sunitinib vs placebo in progressive pancreatic NETs", result:"PFS 11.4 vs 5.5 mo · HR 0.42" },
    { label:"NETTER-1 (NEJM 2017)", title:"177Lu-DOTATATE vs octreotide in midgut NETs", result:"20-mo PFS 65% vs 11% · HR 0.18" },
    { label:"NETTER-2 (Lancet 2024)", title:"177Lu-DOTATATE in newly-diagnosed G2/G3 GEP-NETs", result:"PFS superiority vs HD octreotide" },
    { label:"CABINET (NEJM 2025)", title:"Cabozantinib vs placebo in advanced PanNETs + epNETs", result:"PanNET PFS · HR 0.47 · FDA approved" },
  ]);

// 49. Exam High-Yield Points
addBulletSlide(pres, "HIGH-YIELD EXAM", "High-Yield Exam Points – PanNENs",
  ["★ Most common PanNET = Insulinoma (and most are benign ~90%)",
   "★ WDHA (Watery Diarrhoea, Hypokalaemia, Achlorhydria) = VIPoma",
   "★ Whipple's Triad: symptoms with fasting + hypoglycaemia + relief with glucose",
   "★ Ki-67 index determines grade; >20% = G3 NET or NEC (differentiation distinguishes)",
   "★ Most common malignant functional PanNET = Gastrinoma",
   "★ ATRX/DAXX mutations in ~50% sporadic PanNETs → ALT mechanism",
   "★ ZES: PUD + diarrhoea + elevated FSG; intractable jejunal ulcers = red flag",
   "★ MEN-1 (11q13): parathyroid + pituitary + pancreas; gastrinoma most common PanNET"],
  ["★ Gastrinoma triangle: 90% of gastrinomas arise within this zone",
   "★ SSAs = cornerstone medical management (AVOID monotherapy in insulinoma)",
   "★ Necrolytic Migratory Erythema (NME) = pathognomonic for glucagonoma",
   "★ DOTATATE PET-CT = most sensitive for SSTR-positive PanNETs",
   "★ Insulinoma is SSTR-LOW → use GLP-1R scintigraphy for localisation",
   "★ G3 NET vs NEC: differentiation, not Ki-67 alone, determines treatment",
   "★ Cabozantinib FDA approved March 2025 – CABINET trial (HR 0.47)",
   "★ NETTER-2 (2024): Lu-177 DOTATATE now demonstrated in first-line G2/G3",
   "★ MGMT methylation predicts response to temozolomide in PanNETs"]);

// 50. CLOSING
addClosingSlide(pres);

// ── WRITE FILE ────────────────────────────────────────────────────────────────
const outPath = path.join(__dirname, "PanNEN_Comprehensive_2025.pptx");
pres.writeFile({ fileName: outPath })
  .then(() => { console.log("SUCCESS:", outPath); })
  .catch(e => { console.error("ERROR:", e.message); process.exit(1); });
Running Command

cd /home/daytona/workspace/pannets-pptx && node build.js 2>&1

Running Command

ls -lh /home/daytona/workspace/pannets-pptx/PanNEN_Comprehensive_2025.pptx && python3 -c " import zipfile, re with zipfile.ZipFile('/home/daytona/workspace/pannets-pptx/PanNEN_Comprehensive_2025.pptx') as z: slides = [f for f in z.namelist() if re.match(r'ppt/slides/slide[0-9]+\.xml', f)] print(f'Slide count: {len(slides)}') print('First 5 slides:', slides[:5]) "

Your 50-slide presentation is ready:

PanNEN Comprehensive 2025

Presentation · PPTX


What's included (50 slides across 12 sections):
#SectionSlides
1Introduction & Epidemiology1–6
2Pathogenesis & Molecular Genetics (2025 proteogenomic data)7–9
3WHO 2022 Grading + G3 NET vs NEC distinction10–12
4Insulinoma – Whipple's triad, 72-hr fast, imaging, surgery13–16
5Gastrinoma & ZES – secretin test, gastrinoma triangle, management17–20
6Glucagonoma – 4 D's, NME rash21–22
7VIPoma, Somatostatinoma & rare functional tumours23–25
8Non-functional PanNETs – incidentaloma, active surveillance26–28
9MEN-1 syndrome, genetics, surveillance29–31
10Imaging (CT/MRI/EUS/DOTATATE PET) & biomarkers32–35
11Treatment – Surgery, SSAs, Everolimus, Sunitinib, Cabozantinib (FDA approved March 2025), PRRT (NETTER-1/2), chemo, NCCN 2025 algorithm, liver mets36–45
12Prognosis tables, key trials, exam pearls46–50
Latest evidence incorporated:
  • CABINET trial (NEJM, Feb 2025) - Cabozantinib HR 0.47 in PanNETs, FDA approved March 2025
  • NETTER-2 (Lancet, Jun 2024) - First-line Lu-177 DOTATATE in G2/G3 PanNETs
  • ENETS 2023 guidance papers for functional and non-functional PanNETs
  • NCCN 2025 G3 NET dedicated algorithm
  • Ji et al. Cancer Cell 2025 - proteogenomic subtypes
Design: Navy/teal/amber palette, clutter-free layouts, section dividers, data tables, card grids, and dark evidence slides.

Error

Running Command

ls -lh /home/daytona/workspace/pannets-pptx/ && node -e "const pptxgen = require('pptxgenjs'); console.log('pptxgenjs OK:', typeof pptxgen);" 2>&1

Running Command

cd /home/daytona/workspace/pannets-pptx && node build.js 2>&1 && echo "--- File check ---" && ls -lh PanNEN_Comprehensive_2025.pptx && python3 -c " import zipfile, re with zipfile.ZipFile('PanNEN_Comprehensive_2025.pptx') as z: slides = [f for f in z.namelist() if re.match(r'ppt/slides/slide[0-9]+\.xml', f)] print('Slides:', len(slides)) # Check file is valid by reading all content for s in slides: z.read(s) print('All slides readable - file is valid.') "

The file is confirmed valid - 50 slides, all readable, 911 KB. The presentation is ready to download:

PanNEN Comprehensive 2025

Presentation · PPTX


Could you clarify what error you're seeing? For example:
  1. Download not working - try right-clicking the link and selecting "Save link as"
  2. File won't open in PowerPoint - let me know the exact error message
  3. Content error - a specific slide or section is wrong/missing
  4. Design issue - something about the layout or formatting
That will help me fix exactly the right thing.
This is a shared conversation. Sign in to Orris to start your own chat.