PPT for Radiology of bronchogenic carcinoma by Grainger and allison

Reading File
Reading File
Reading File
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Running Command

mkdir -p /home/daytona/workspace/bronchogenic-carcinoma-ppt && ls /home/daytona/workspace/bronchogenic-carcinoma-ppt

Writing File

~/bronchogenic-carcinoma-ppt/build.js

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

// ── Fetch images as base64 ──────────────────────────────────────────────────
const imageUrls = [
  "https://cdn.orris.care/cdss_images/b5b188885db55a5b1db8d8b37091818c37706dcaa8430d38a0dfc2d0617182ee.png", // Fig 8.10 Bronchial carcinoma left lower lobe
  "https://cdn.orris.care/cdss_images/22d2ffba5947511f15772f2b1c951117bd3d9ed23344b07357dbd7c3f72d8368.png", // Fig 8.11 Corona radiata
  "https://cdn.orris.care/cdss_images/da7f9af9f90e2ca566e1caa8cb623803e025e680978a63e6b9628184ed6723f2.png", // Fig 8.12 Lung cancer mimicking pneumonia
  "https://cdn.orris.care/cdss_images/e9acbec40153419d3749b75a92631392e1841e983a5c46550423e8103aa3cc31.png", // Fig 8.20 Mediastinal invasion
  "https://cdn.orris.care/cdss_images/d8de589ed7e7853314099ac121150229d5897d993c3d85d9b0eb677d091084e5.png", // Fig 8.21 MRI aortic invasion
  "https://cdn.orris.care/cdss_images/5a9529b356a0043abf0d26c0987f9094f3ee7c92b4fd416498073468f808b09e.png", // Fig 8.22 Pancoast tumour
  "https://cdn.orris.care/cdss_images/8ac4b47191dfa67e5aabd9543f62a708df5d5a6412baf4b43e6a86bcbf5dde5f.png", // Fig 8.23 Cavitating carcinoma
  "https://cdn.orris.care/cdss_images/f8c0ed2634bc4ebfa98aa0369058845c092b5b38d7156adc86a75ff3fe456f1d.png", // Fig 8.13 Cavitation CXR
];

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

function img(idx) {
  return images[idx] && images[idx].base64 ? images[idx].base64 : null;
}

// ── Colour palette ─────────────────────────────────────────────────────────
const DARK     = "0D1B2A"; // deep navy
const MID      = "1B4F72"; // mid blue
const ACCENT   = "E74C3C"; // clinical red
const GOLD     = "F39C12"; // warm amber
const LIGHT    = "D6EAF8"; // pale blue
const WHITE    = "FFFFFF";
const OFFWHITE = "F5F8FC";
const GRAY     = "5D6D7E";

let pres = new pptxgen();
pres.layout = "LAYOUT_WIDE";
pres.title = "Radiology of Bronchogenic Carcinoma";
pres.author = "Grainger & Allison's Diagnostic Radiology";

// ── Helper: section divider ─────────────────────────────────────────────────
function addDivider(slide, colorHex, w) {
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0.01, w: w || 13.3, h: 0.06, fill: { color: colorHex }, line: { color: colorHex } });
}

// ── Helper: footer ──────────────────────────────────────────────────────────
function addFooter(slide, label) {
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 7.2, w: 13.3, h: 0.3, fill: { color: DARK }, line: { color: DARK } });
  slide.addText(`Grainger & Allison's Diagnostic Radiology  |  ${label}`, {
    x: 0.3, y: 7.2, w: 12.7, h: 0.3,
    fontSize: 8, color: "AABCCE", italic: true, valign: "middle"
  });
}

// ─────────────────────────────────────────────────────────────────────────────
// SLIDE 1 — TITLE
// ─────────────────────────────────────────────────────────────────────────────
{
  let s = pres.addSlide();
  // full background
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: DARK }, line: { color: DARK } });
  // decorative left stripe
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.25, h: 7.5, fill: { color: ACCENT }, line: { color: ACCENT } });
  // decorative right stripe
  s.addShape(pres.ShapeType.rect, { x: 13.05, y: 0, w: 0.25, h: 7.5, fill: { color: GOLD }, line: { color: GOLD } });
  // horizontal accent bar
  s.addShape(pres.ShapeType.rect, { x: 0.25, y: 3.8, w: 12.8, h: 0.06, fill: { color: ACCENT }, line: { color: ACCENT } });

  s.addText("RADIOLOGY OF", {
    x: 0.6, y: 1.2, w: 12.1, h: 0.8,
    fontSize: 30, color: LIGHT, bold: false, align: "center", charSpacing: 8, fontFace: "Calibri"
  });
  s.addText("BRONCHOGENIC CARCINOMA", {
    x: 0.6, y: 2.0, w: 12.1, h: 1.4,
    fontSize: 54, color: WHITE, bold: true, align: "center", charSpacing: 2, fontFace: "Calibri"
  });
  s.addText("Based on Grainger & Allison's Diagnostic Radiology", {
    x: 0.6, y: 4.0, w: 12.1, h: 0.5,
    fontSize: 18, color: GOLD, italic: true, align: "center", fontFace: "Calibri"
  });
  s.addText("A Textbook of Medical Imaging", {
    x: 0.6, y: 4.5, w: 12.1, h: 0.4,
    fontSize: 14, color: LIGHT, align: "center", fontFace: "Calibri"
  });
  s.addText("Chapter 8: Pulmonary Neoplasms", {
    x: 0.6, y: 6.4, w: 12.1, h: 0.4,
    fontSize: 13, color: GRAY, align: "center", fontFace: "Calibri"
  });
}

// ─────────────────────────────────────────────────────────────────────────────
// SLIDE 2 — OVERVIEW / OUTLINE
// ─────────────────────────────────────────────────────────────────────────────
{
  let s = pres.addSlide();
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: OFFWHITE }, line: { color: OFFWHITE } });
  addDivider(s, ACCENT);
  s.addText("OVERVIEW", { x: 0.4, y: 0.15, w: 12.5, h: 0.55, fontSize: 26, bold: true, color: DARK, fontFace: "Calibri" });

  const topics = [
    { n: "01", title: "Epidemiology & Aetiology", sub: "Smoking, radon, asbestos, occupational factors" },
    { n: "02", title: "Pathological Classification", sub: "Squamous, adenocarcinoma, small cell, large cell" },
    { n: "03", title: "Screening & Early Detection", sub: "LDCT, NLST, Lung-RADS" },
    { n: "04", title: "Imaging Features", sub: "Peripheral & central tumours on CXR & CT" },
    { n: "05", title: "TNM Staging (8th Edition)", sub: "T, N, M descriptors" },
    { n: "06", title: "Intrathoracic Spread", sub: "Mediastinal, chest wall, pleural invasion" },
    { n: "07", title: "Extrathoracic Staging", sub: "Adrenals, brain, bone, liver, PET/CT" },
    { n: "08", title: "Imaging Protocols", sub: "CT, PET/CT, MRI roles" },
  ];

  const cols = 4;
  const bw = 2.9, bh = 1.35, gap = 0.25;
  const startX = 0.4, startY = 0.85;
  topics.forEach((t, i) => {
    const col = i % cols;
    const row = Math.floor(i / cols);
    const x = startX + col * (bw + gap);
    const y = startY + row * (bh + gap);
    s.addShape(pres.ShapeType.rect, { x, y, w: bw, h: bh, fill: { color: WHITE }, line: { color: MID, pt: 1.2 } });
    s.addShape(pres.ShapeType.rect, { x, y, w: 0.5, h: bh, fill: { color: MID }, line: { color: MID } });
    s.addText(t.n, { x, y, w: 0.5, h: bh, fontSize: 14, bold: true, color: WHITE, align: "center", valign: "middle", fontFace: "Calibri" });
    s.addText(t.title, { x: x + 0.55, y: y + 0.12, w: bw - 0.65, h: 0.45, fontSize: 12, bold: true, color: DARK, fontFace: "Calibri" });
    s.addText(t.sub, { x: x + 0.55, y: y + 0.58, w: bw - 0.65, h: 0.6, fontSize: 9.5, color: GRAY, fontFace: "Calibri", wrap: true });
  });
  addFooter(s, "Overview");
}

// ─────────────────────────────────────────────────────────────────────────────
// SLIDE 3 — EPIDEMIOLOGY & AETIOLOGY
// ─────────────────────────────────────────────────────────────────────────────
{
  let s = pres.addSlide();
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: DARK }, line: { color: DARK } });
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 4.2, h: 7.5, fill: { color: MID }, line: { color: MID } });
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.18, h: 7.5, fill: { color: ACCENT }, line: { color: ACCENT } });

  s.addText("EPIDEMIOLOGY\n& AETIOLOGY", {
    x: 0.3, y: 1.5, w: 3.6, h: 2.0,
    fontSize: 26, bold: true, color: WHITE, align: "center", valign: "middle", fontFace: "Calibri"
  });
  s.addText("Grainger & Allison Ch. 8", {
    x: 0.3, y: 5.8, w: 3.6, h: 0.5,
    fontSize: 10, color: LIGHT, align: "center", italic: true, fontFace: "Calibri"
  });

  const points = [
    ["Smoking", "Major risk factor by a large margin; up to 60 identified carcinogens in tobacco smoke. Nicotine promotes tumour growth. Passive smoking increases lung cancer risk by 20-30%."],
    ["Adenocarcinoma Rise", "Prevalence of adenocarcinoma rising markedly; squamous & SCLC falling — linked to 'light' cigarettes with lower nicotine and perforated filters causing deeper inhalation."],
    ["Radon", "222Radon: second only to smoking as a cause of bronchogenic carcinoma. Geological variation determines exposure levels."],
    ["Asbestos", "Strong synergistic relationship with smoking; relative risk ~50x higher in smoking asbestos workers vs non-smoking, non-exposed individuals."],
    ["Other factors", "Air pollution (PM2.5), occupational exposures (nickel, chrome, arsenic, polycyclic hydrocarbons), prior lung disease (fibrosing alveolitis, TB)."],
  ];

  let y = 0.5;
  points.forEach(([title, text]) => {
    s.addShape(pres.ShapeType.rect, { x: 4.5, y, w: 0.12, h: 0.9, fill: { color: GOLD }, line: { color: GOLD } });
    s.addText(title, { x: 4.75, y: y, w: 8.2, h: 0.3, fontSize: 13, bold: true, color: GOLD, fontFace: "Calibri" });
    s.addText(text, { x: 4.75, y: y + 0.3, w: 8.2, h: 0.65, fontSize: 10, color: LIGHT, fontFace: "Calibri", wrap: true });
    y += 1.1;
  });
  addFooter(s, "Epidemiology & Aetiology");
}

// ─────────────────────────────────────────────────────────────────────────────
// SLIDE 4 — PATHOLOGICAL CLASSIFICATION
// ─────────────────────────────────────────────────────────────────────────────
{
  let s = pres.addSlide();
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: OFFWHITE }, line: { color: OFFWHITE } });
  addDivider(s, MID);
  s.addText("PATHOLOGICAL CLASSIFICATION", { x: 0.4, y: 0.15, w: 12.5, h: 0.55, fontSize: 26, bold: true, color: DARK, fontFace: "Calibri" });

  const types = [
    { label: "Squamous Cell\nCarcinoma", pct: "~30%", color: "C0392B", details: ["Central origin (main/lobar bronchi)", "Cavitation most common in this type", "Pancoast tumours often squamous", "Declining with 'light' cigarettes"] },
    { label: "Adenocarcinoma", pct: "~40%", color: "1A5276", details: ["Peripheral origin; now most common", "Lepidic growth (ground-glass pattern)", "Strong EGFR/ALK mutation association", "Can mimic pneumonia on imaging"] },
    { label: "Small Cell\nLung Cancer", pct: "~15%", color: "117A65", details: ["Central, perihilar location", "Rapid growth; early metastasis", "Strongly smoking-related", "Limited vs extensive disease staging"] },
    { label: "Large Cell\nCarcinoma", pct: "~10%", color: "7D3C98", details: ["Peripheral, large bulky mass", "Diagnosis of exclusion", "No specific glandular/squamous features", "Poor prognosis"] },
  ];

  types.forEach((t, i) => {
    const x = 0.4 + i * 3.2;
    s.addShape(pres.ShapeType.rect, { x, y: 0.85, w: 3.0, h: 0.65, fill: { color: t.color }, line: { color: t.color } });
    s.addText(t.label, { x, y: 0.85, w: 3.0, h: 0.65, fontSize: 12, bold: true, color: WHITE, align: "center", valign: "middle", fontFace: "Calibri" });
    s.addShape(pres.ShapeType.rect, { x, y: 1.5, w: 3.0, h: 0.5, fill: { color: "F8F9FA" }, line: { color: t.color, pt: 1.5 } });
    s.addText(t.pct, { x, y: 1.5, w: 3.0, h: 0.5, fontSize: 22, bold: true, color: t.color, align: "center", valign: "middle", fontFace: "Calibri" });
    s.addShape(pres.ShapeType.rect, { x, y: 2.0, w: 3.0, h: 4.5, fill: { color: WHITE }, line: { color: t.color, pt: 1.2 } });
    t.details.forEach((d, j) => {
      s.addText([
        { text: "• ", options: { bold: true, color: t.color } },
        { text: d, options: { color: DARK } }
      ], { x: x + 0.1, y: 2.1 + j * 0.75, w: 2.8, h: 0.7, fontSize: 10.5, fontFace: "Calibri", wrap: true });
    });
  });

  // NSCLC vs SCLC banner
  s.addShape(pres.ShapeType.rect, { x: 0.4, y: 6.7, w: 12.5, h: 0.5, fill: { color: DARK }, line: { color: DARK } });
  s.addText("NSCLC (Squamous + Adenocarcinoma + Large Cell) = ~85%   |   SCLC = ~15%", {
    x: 0.4, y: 6.7, w: 12.5, h: 0.5, fontSize: 11.5, color: WHITE, align: "center", valign: "middle", fontFace: "Calibri", bold: true
  });
  addFooter(s, "Pathological Classification");
}

// ─────────────────────────────────────────────────────────────────────────────
// SLIDE 5 — LUNG CANCER SCREENING
// ─────────────────────────────────────────────────────────────────────────────
{
  let s = pres.addSlide();
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: DARK }, line: { color: DARK } });
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.18, h: 7.5, fill: { color: GOLD }, line: { color: GOLD } });

  s.addText("LUNG CANCER SCREENING", {
    x: 0.4, y: 0.2, w: 12.5, h: 0.65, fontSize: 30, bold: true, color: WHITE, fontFace: "Calibri"
  });
  s.addShape(pres.ShapeType.rect, { x: 0.4, y: 0.85, w: 12.5, h: 0.04, fill: { color: GOLD }, line: { color: GOLD } });

  // Left column: CXR screening
  s.addText("Chest X-Ray Screening", { x: 0.4, y: 1.0, w: 5.8, h: 0.4, fontSize: 15, bold: true, color: GOLD, fontFace: "Calibri" });
  const cxrPoints = [
    "PLCO trial (154,000 patients): no reduction in lung cancer mortality with CXR alone",
    "Mayo Lung Project RCT: stage shift in more frequent screeners but no overall survival benefit at 20 years",
    "Conclusion: CXR alone has no useful role in lung cancer screening"
  ];
  cxrPoints.forEach((p, i) => {
    s.addText("• " + p, { x: 0.4, y: 1.5 + i * 0.8, w: 5.8, h: 0.75, fontSize: 10.5, color: LIGHT, fontFace: "Calibri", wrap: true });
  });

  // Right column: CT screening
  s.addShape(pres.ShapeType.rect, { x: 6.6, y: 1.0, w: 6.5, h: 5.8, fill: { color: MID }, line: { color: MID } });
  s.addText("Low-Dose CT (LDCT) Screening", { x: 6.8, y: 1.05, w: 6.1, h: 0.45, fontSize: 15, bold: true, color: WHITE, fontFace: "Calibri" });
  const ctPoints = [
    "NLST (National Lung Screening Trial): 20% reduction in lung cancer mortality with annual LDCT vs CXR",
    "NELSON trial (Europe): 24-26% reduction in lung cancer mortality",
    "Eligibility: age 55-74, ≥30 pack-year history, current/former smoker",
    "ELCAP project: LDCT detects lung cancers at earlier (curable) stage",
    "Nodule management: Lung-RADS/Fleischner Society guidelines",
    "Volumetric CT with nodule volume doubling time assessment"
  ];
  ctPoints.forEach((p, i) => {
    s.addText("• " + p, { x: 6.8, y: 1.55 + i * 0.82, w: 6.0, h: 0.78, fontSize: 10, color: WHITE, fontFace: "Calibri", wrap: true });
  });
  addFooter(s, "Lung Cancer Screening");
}

// ─────────────────────────────────────────────────────────────────────────────
// SLIDE 6 — PERIPHERAL TUMOURS: IMAGING FEATURES
// ─────────────────────────────────────────────────────────────────────────────
{
  let s = pres.addSlide();
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: OFFWHITE }, line: { color: OFFWHITE } });
  addDivider(s, ACCENT);
  s.addText("PERIPHERAL TUMOURS — IMAGING FEATURES", {
    x: 0.4, y: 0.15, w: 9.0, h: 0.55, fontSize: 22, bold: true, color: DARK, fontFace: "Calibri"
  });
  s.addText("~40% of bronchial carcinomas", {
    x: 9.5, y: 0.2, w: 3.4, h: 0.45, fontSize: 12, color: ACCENT, bold: true, align: "right", fontFace: "Calibri"
  });

  // Image panel left
  if (img(0)) {
    s.addImage({ data: img(0), x: 0.3, y: 0.85, w: 4.5, h: 3.2 });
    s.addText("Fig 8.10 — Bronchial carcinoma left lower lobe: rounded, lobular configuration with posterior notch", {
      x: 0.3, y: 4.05, w: 4.5, h: 0.5, fontSize: 8.5, color: GRAY, italic: true, fontFace: "Calibri"
    });
  }
  if (img(1)) {
    s.addImage({ data: img(1), x: 0.3, y: 4.6, w: 4.5, h: 2.4 });
    s.addText("Fig 8.11 — Corona radiata sign: spiculated edges radiating into adjacent lung", {
      x: 0.3, y: 7.0, w: 4.5, h: 0.38, fontSize: 8.5, color: GRAY, italic: true, fontFace: "Calibri"
    });
  }

  const feats = [
    ["Shape & Margins", "Approximately spherical/oval; lobulation indicates uneven growth; corona radiata (fine spicules) highly suggestive of malignancy; smooth margins rare"],
    ["Cavitation", "Any size; squamous cell most common; wall thickness ≥8mm; irregular inner wall; fluid levels; best seen on CT"],
    ["Calcification", "6-10% on CT; engulfed granulomatous calcification; dystrophic amorphous calcification <10%"],
    ["Pleural Tail", "Peripheral line/tail from mass to pleura; represents atelectasis or lymphatic obstruction"],
    ["Ground-Glass", "Lepidic adenocarcinoma: air bronchogram ± ground-glass halo; mimics pneumonia"],
    ["Size / Growth", "Doubling time 20-400 days; malignancy likely if doubling in <400 days; size >3cm warrants urgent evaluation"],
  ];

  feats.forEach(([h, t], i) => {
    const y = 0.88 + i * 1.02;
    s.addShape(pres.ShapeType.rect, { x: 5.1, y, w: 7.8, h: 0.97, fill: { color: WHITE }, line: { color: LIGHT, pt: 0.8 } });
    s.addShape(pres.ShapeType.rect, { x: 5.1, y, w: 0.12, h: 0.97, fill: { color: ACCENT }, line: { color: ACCENT } });
    s.addText(h, { x: 5.28, y: y + 0.05, w: 7.5, h: 0.3, fontSize: 11.5, bold: true, color: DARK, fontFace: "Calibri" });
    s.addText(t, { x: 5.28, y: y + 0.36, w: 7.5, h: 0.55, fontSize: 9.5, color: GRAY, fontFace: "Calibri", wrap: true });
  });
  addFooter(s, "Peripheral Tumours");
}

// ─────────────────────────────────────────────────────────────────────────────
// SLIDE 7 — CENTRAL TUMOURS & COLLAPSE / CONSOLIDATION
// ─────────────────────────────────────────────────────────────────────────────
{
  let s = pres.addSlide();
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: DARK }, line: { color: DARK } });
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.18, h: 7.5, fill: { color: GOLD }, line: { color: GOLD } });

  s.addText("CENTRAL TUMOURS", {
    x: 0.4, y: 0.2, w: 7.5, h: 0.65, fontSize: 30, bold: true, color: WHITE, fontFace: "Calibri"
  });
  s.addShape(pres.ShapeType.rect, { x: 0.4, y: 0.85, w: 12.5, h: 0.04, fill: { color: GOLD }, line: { color: GOLD } });

  // 2-column layout
  const leftItems = [
    ["Definition", "Arising in main, lobar, or segmental bronchi at or close to the hilum"],
    ["CXR — Direct Signs", "Hilar mass; hilar enlargement; peribronchial tumour (thickening around bronchus)"],
    ["Bronchial Obstruction", "Lobar/segmental collapse (Golden S sign in RUL), obstructive consolidation, atelectasis"],
    ["Golden S Sign", "Right upper lobe collapse with central obstructing mass creating reversed S curve; pathognomonic for central obstructing tumour"],
    ["Air Trapping", "Air trapping distal to partial obstruction; expiratory CT for confirmation"],
  ];
  const rightItems = [
    ["Post-obstructive Changes", "Mucous plugging → bronchiectasis → obstructive pneumonitis; volume loss of affected lobe"],
    ["CT Bronchoscopy", "Multiplanar CT reconstructions map extent of endobronchial disease; virtual bronchoscopy"],
    ["Endobronchial Lesions", "Best assessed with CT (multiplanar reformat); squamous most common; direct mucosal involvement"],
    ["Hilar Vessels", "CT with contrast distinguishes hilar vascular structures from hilar lymphadenopathy or mass"],
    ["PET/CT Value", "FDG avidity differentiates post-obstructive consolidation from tumour extension"],
  ];

  leftItems.forEach(([h, t], i) => {
    s.addShape(pres.ShapeType.rect, { x: 0.4, y: 1.0 + i * 1.2, w: 6.1, h: 1.12, fill: { color: MID }, line: { color: MID } });
    s.addText(h, { x: 0.55, y: 1.05 + i * 1.2, w: 5.8, h: 0.35, fontSize: 12, bold: true, color: GOLD, fontFace: "Calibri" });
    s.addText(t, { x: 0.55, y: 1.4 + i * 1.2, w: 5.8, h: 0.65, fontSize: 10, color: WHITE, fontFace: "Calibri", wrap: true });
  });

  rightItems.forEach(([h, t], i) => {
    s.addShape(pres.ShapeType.rect, { x: 6.8, y: 1.0 + i * 1.2, w: 6.1, h: 1.12, fill: { color: "0E3460" }, line: { color: "0E3460" } });
    s.addText(h, { x: 6.95, y: 1.05 + i * 1.2, w: 5.8, h: 0.35, fontSize: 12, bold: true, color: GOLD, fontFace: "Calibri" });
    s.addText(t, { x: 6.95, y: 1.4 + i * 1.2, w: 5.8, h: 0.65, fontSize: 10, color: WHITE, fontFace: "Calibri", wrap: true });
  });
  addFooter(s, "Central Tumours");
}

// ─────────────────────────────────────────────────────────────────────────────
// SLIDE 8 — LUNG CANCER MIMICS & SPECIAL PATTERNS
// ─────────────────────────────────────────────────────────────────────────────
{
  let s = pres.addSlide();
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: OFFWHITE }, line: { color: OFFWHITE } });
  addDivider(s, ACCENT);
  s.addText("SPECIAL PATTERNS & MIMICS", {
    x: 0.4, y: 0.15, w: 12.5, h: 0.55, fontSize: 26, bold: true, color: DARK, fontFace: "Calibri"
  });

  if (img(2)) {
    s.addImage({ data: img(2), x: 0.3, y: 0.85, w: 6.0, h: 3.5 });
    s.addText("Fig 8.12 — (A) Squamous cell carcinoma resembling pneumonia in right upper zone. (B) Apical adenocarcinoma with ground-glass margins and air bronchogram.", {
      x: 0.3, y: 4.35, w: 6.0, h: 0.6, fontSize: 8.5, color: GRAY, italic: true, fontFace: "Calibri"
    });
  }

  const items = [
    ["Lung Cancer Mimicking Pneumonia", "Some adenocarcinomas present with consolidation and air bronchograms — indistinguishable from pneumonia on imaging. Key clue: no clinical response to antibiotics after 6 weeks → biopsy."],
    ["Pancoast / Superior Sulcus Tumour", "Apex tumour resembling apical pleural thickening. Associated with Horner syndrome, brachial plexus invasion. MRI superior for assessing chest wall and nerve involvement (T1/T2 triplanar)."],
    ["Cavitating Carcinoma", "Thick irregular cavity wall (>8mm) with tumour nodules. Squamous most common. Must differentiate from lung abscess (smooth thin wall, fever) and TB."],
    ["Solitary Pulmonary Nodule", "Malignancy probability based on size, morphology, growth rate. PET/CT: SUV >2.5 suggests malignancy. Fleischner/Lung-RADS guidelines guide management."],
  ];

  items.forEach(([h, t], i) => {
    const y = 0.88 + i * 1.6;
    s.addShape(pres.ShapeType.rect, { x: 6.6, y, w: 6.4, h: 1.5, fill: { color: WHITE }, line: { color: MID, pt: 1 } });
    s.addShape(pres.ShapeType.rect, { x: 6.6, y, w: 0.15, h: 1.5, fill: { color: ACCENT }, line: { color: ACCENT } });
    s.addText(h, { x: 6.85, y: y + 0.08, w: 6.0, h: 0.38, fontSize: 12, bold: true, color: DARK, fontFace: "Calibri" });
    s.addText(t, { x: 6.85, y: y + 0.45, w: 6.0, h: 1.0, fontSize: 9.5, color: GRAY, fontFace: "Calibri", wrap: true });
  });
  addFooter(s, "Special Patterns & Mimics");
}

// ─────────────────────────────────────────────────────────────────────────────
// SLIDE 9 — TNM STAGING 8th EDITION
// ─────────────────────────────────────────────────────────────────────────────
{
  let s = pres.addSlide();
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: DARK }, line: { color: DARK } });
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.18, h: 7.5, fill: { color: ACCENT }, line: { color: ACCENT } });

  s.addText("TNM STAGING — 8th EDITION (2016)", {
    x: 0.4, y: 0.15, w: 12.5, h: 0.65, fontSize: 28, bold: true, color: WHITE, fontFace: "Calibri"
  });

  // T descriptor
  s.addShape(pres.ShapeType.rect, { x: 0.4, y: 0.95, w: 3.9, h: 0.42, fill: { color: ACCENT }, line: { color: ACCENT } });
  s.addText("T — PRIMARY TUMOUR", { x: 0.4, y: 0.95, w: 3.9, h: 0.42, fontSize: 13, bold: true, color: WHITE, align: "center", valign: "middle", fontFace: "Calibri" });
  const tItems = [
    ["T1a", "≤1 cm surrounded by lung"],
    ["T1b", ">1 to ≤2 cm"],
    ["T1c", ">2 to ≤3 cm"],
    ["T2a", ">3 to ≤4 cm or main bronchus/visceral pleura/atelectasis"],
    ["T2b", ">4 to ≤5 cm"],
    ["T3", ">5 to ≤7 cm or chest wall/pericardium/phrenic nerve"],
    ["T4", ">7 cm or mediastinum/heart/great vessels/carina/trachea"],
  ];
  tItems.forEach(([t, d], i) => {
    const y = 1.45 + i * 0.78;
    s.addShape(pres.ShapeType.rect, { x: 0.4, y, w: 0.7, h: 0.72, fill: { color: ACCENT }, line: { color: ACCENT } });
    s.addText(t, { x: 0.4, y, w: 0.7, h: 0.72, fontSize: 12, bold: true, color: WHITE, align: "center", valign: "middle", fontFace: "Calibri" });
    s.addShape(pres.ShapeType.rect, { x: 1.1, y, w: 3.2, h: 0.72, fill: { color: MID }, line: { color: MID } });
    s.addText(d, { x: 1.15, y, w: 3.1, h: 0.72, fontSize: 9.5, color: WHITE, valign: "middle", fontFace: "Calibri", wrap: true });
  });

  // N descriptor
  s.addShape(pres.ShapeType.rect, { x: 4.6, y: 0.95, w: 3.9, h: 0.42, fill: { color: "117A65" }, line: { color: "117A65" } });
  s.addText("N — NODAL STATUS", { x: 4.6, y: 0.95, w: 3.9, h: 0.42, fontSize: 13, bold: true, color: WHITE, align: "center", valign: "middle", fontFace: "Calibri" });
  const nItems = [
    ["N0", "No regional node metastasis"],
    ["N1", "Ipsilateral peribronchial/hilar nodes"],
    ["N2", "Ipsilateral mediastinal/subcarinal nodes"],
    ["N3", "Contralateral mediastinal/hilar or scalene/supraclavicular nodes"],
  ];
  nItems.forEach(([n, d], i) => {
    const y = 1.45 + i * 1.2;
    s.addShape(pres.ShapeType.rect, { x: 4.6, y, w: 0.7, h: 1.12, fill: { color: "117A65" }, line: { color: "117A65" } });
    s.addText(n, { x: 4.6, y, w: 0.7, h: 1.12, fontSize: 14, bold: true, color: WHITE, align: "center", valign: "middle", fontFace: "Calibri" });
    s.addShape(pres.ShapeType.rect, { x: 5.3, y, w: 3.2, h: 1.12, fill: { color: "0E6655" }, line: { color: "0E6655" } });
    s.addText(d, { x: 5.35, y, w: 3.1, h: 1.12, fontSize: 10, color: WHITE, valign: "middle", fontFace: "Calibri", wrap: true });
  });

  // M descriptor
  s.addShape(pres.ShapeType.rect, { x: 8.8, y: 0.95, w: 4.2, h: 0.42, fill: { color: GOLD }, line: { color: GOLD } });
  s.addText("M — METASTASIS", { x: 8.8, y: 0.95, w: 4.2, h: 0.42, fontSize: 13, bold: true, color: DARK, align: "center", valign: "middle", fontFace: "Calibri" });
  const mItems = [
    ["M0", "No distant metastasis"],
    ["M1a", "Separate tumour nodule in contralateral lobe; pleural/pericardial nodules; malignant pleural/pericardial effusion"],
    ["M1b", "Single extrathoracic metastasis"],
    ["M1c", "Multiple extrathoracic metastases (≥1 organ)"],
  ];
  mItems.forEach(([m, d], i) => {
    const y = 1.45 + i * 1.2;
    s.addShape(pres.ShapeType.rect, { x: 8.8, y, w: 0.7, h: 1.12, fill: { color: "B7950B" }, line: { color: "B7950B" } });
    s.addText(m, { x: 8.8, y, w: 0.7, h: 1.12, fontSize: 12, bold: true, color: WHITE, align: "center", valign: "middle", fontFace: "Calibri" });
    s.addShape(pres.ShapeType.rect, { x: 9.5, y, w: 3.5, h: 1.12, fill: { color: "7D6608" }, line: { color: "7D6608" } });
    s.addText(d, { x: 9.55, y, w: 3.4, h: 1.12, fontSize: 9.5, color: WHITE, valign: "middle", fontFace: "Calibri", wrap: true });
  });
  addFooter(s, "TNM Staging 8th Edition");
}

// ─────────────────────────────────────────────────────────────────────────────
// SLIDE 10 — INTRATHORACIC STAGING: MEDIASTINAL INVASION
// ─────────────────────────────────────────────────────────────────────────────
{
  let s = pres.addSlide();
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: OFFWHITE }, line: { color: OFFWHITE } });
  addDivider(s, MID);
  s.addText("INTRATHORACIC STAGING: MEDIASTINAL INVASION", {
    x: 0.4, y: 0.15, w: 12.5, h: 0.55, fontSize: 22, bold: true, color: DARK, fontFace: "Calibri"
  });

  // images
  if (img(3)) {
    s.addImage({ data: img(3), x: 0.3, y: 0.85, w: 4.5, h: 3.0 });
    s.addText("Fig 8.20 — CT mediastinal windows: NSCLC invading right main bronchus, pulmonary artery, SVC (stented), and aorta.", {
      x: 0.3, y: 3.85, w: 4.5, h: 0.55, fontSize: 8.5, italic: true, color: GRAY, fontFace: "Calibri"
    });
  }
  if (img(4)) {
    s.addImage({ data: img(4), x: 0.3, y: 4.5, w: 4.5, h: 2.7 });
    s.addText("Fig 8.21 — MRI: LLL tumour directly invading aortic wall (altered signal).", {
      x: 0.3, y: 7.2, w: 4.5, h: 0.3, fontSize: 8.5, italic: true, color: GRAY, fontFace: "Calibri"
    });
  }

  const points = [
    ["CT Criteria for Mediastinal Invasion", "Obliteration of fat plane; >180° contact with aorta; compression/displacement of SVC; direct invasion of pericardium or great vessels (T4)"],
    ["CT Limitations", "Cannot definitively exclude mediastinal invasion when fat plane present; specificity ~50% for mediastinal invasion"],
    ["MRI Advantages", "Superior soft-tissue contrast; assesses aortic wall invasion (altered T1/T2 signal); dynamic cine for fixation; preferred for Pancoast tumours"],
    ["Pericardial Invasion", "T3 descriptor; pericardial effusion alone insufficient; direct extension shown by pericardial thickening/nodularity on CT"],
    ["Nodal Criteria (CT)", "Short axis >1 cm in mediastinal nodes = enlarged; however, enlarged does not always mean malignant (sensitivity 60-70%)"],
    ["PET/CT for Nodes", "Higher sensitivity than CT alone; however, histological confirmation still required before denying surgery"],
  ];

  points.forEach(([h, t], i) => {
    const y = 0.88 + i * 1.08;
    s.addShape(pres.ShapeType.rect, { x: 5.1, y, w: 8.0, h: 1.0, fill: { color: WHITE }, line: { color: LIGHT, pt: 0.8 } });
    s.addShape(pres.ShapeType.rect, { x: 5.1, y, w: 0.12, h: 1.0, fill: { color: MID }, line: { color: MID } });
    s.addText(h, { x: 5.28, y: y + 0.05, w: 7.7, h: 0.32, fontSize: 11.5, bold: true, color: DARK, fontFace: "Calibri" });
    s.addText(t, { x: 5.28, y: y + 0.37, w: 7.7, h: 0.58, fontSize: 9.5, color: GRAY, fontFace: "Calibri", wrap: true });
  });
  addFooter(s, "Intrathoracic Staging: Mediastinal Invasion");
}

// ─────────────────────────────────────────────────────────────────────────────
// SLIDE 11 — CHEST WALL & PLEURAL INVASION / PANCOAST
// ─────────────────────────────────────────────────────────────────────────────
{
  let s = pres.addSlide();
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: DARK }, line: { color: DARK } });
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.18, h: 7.5, fill: { color: ACCENT }, line: { color: ACCENT } });

  s.addText("CHEST WALL & PLEURAL INVASION — PANCOAST TUMOUR", {
    x: 0.4, y: 0.2, w: 12.5, h: 0.6, fontSize: 22, bold: true, color: WHITE, fontFace: "Calibri"
  });
  s.addShape(pres.ShapeType.rect, { x: 0.4, y: 0.8, w: 12.5, h: 0.04, fill: { color: ACCENT }, line: { color: ACCENT } });

  // image: Pancoast
  if (img(5)) {
    s.addImage({ data: img(5), x: 0.4, y: 0.92, w: 5.5, h: 3.5 });
    s.addText("Fig 8.22 — Pancoast tumour: (A) axial T1, (B) coronal T2 MRI, (C) CT — chest wall and left 2nd rib involvement.", {
      x: 0.4, y: 4.45, w: 5.5, h: 0.55, fontSize: 8.5, italic: true, color: LIGHT, fontFace: "Calibri"
    });
  }
  // image: cavitation
  if (img(6)) {
    s.addImage({ data: img(6), x: 0.4, y: 5.1, w: 5.5, h: 2.2 });
    s.addText("Fig 8.23 — Cavitating carcinoma: preserved extrapleural fat plane — chest wall likely spared.", {
      x: 0.4, y: 7.3, w: 5.5, h: 0.2, fontSize: 8.5, italic: true, color: LIGHT, fontFace: "Calibri"
    });
  }

  const items = [
    ["Chest Wall Invasion — CT Signs", "Bone destruction or soft tissue mass = definitive. Contact/pleural thickening is equivocal. Obliteration of extrapleural fat plane increases suspicion."],
    ["MRI for Chest Wall", "More accurate than CT for chest wall invasion; T1/T2 triplanar with respiratory gating; dynamic cine sequences for fixation"],
    ["Pancoast Tumour (T3/T4)", "Superior sulcus tumour; clinically: shoulder pain, Horner syndrome (ptosis, miosis, anhidrosis), brachial plexus neuralgia; MRI mandatory"],
    ["Pleural Invasion (T2)", "Visceral pleural invasion = T2; parietal pleural/chest wall = T3. Malignant pleural effusion = M1a"],
    ["Clinical Rule", "Chest wall pain is the single most specific indicator of parietal pleural or chest wall invasion — more reliable than imaging alone"],
    ["Surgical Implications", "Chest wall invasion does not preclude surgery but requires en-bloc resection; increases morbidity/mortality; 5-year survival significantly reduced"],
  ];

  items.forEach(([h, t], i) => {
    const y = 0.92 + i * 1.08;
    s.addShape(pres.ShapeType.rect, { x: 6.2, y, w: 6.8, h: 1.0, fill: { color: MID }, line: { color: MID } });
    s.addText(h, { x: 6.35, y: y + 0.05, w: 6.5, h: 0.32, fontSize: 11.5, bold: true, color: GOLD, fontFace: "Calibri" });
    s.addText(t, { x: 6.35, y: y + 0.38, w: 6.5, h: 0.57, fontSize: 9.5, color: WHITE, fontFace: "Calibri", wrap: true });
  });
  addFooter(s, "Chest Wall, Pleural & Pancoast Tumour");
}

// ─────────────────────────────────────────────────────────────────────────────
// SLIDE 12 — NODAL STAGING & PET/CT
// ─────────────────────────────────────────────────────────────────────────────
{
  let s = pres.addSlide();
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: OFFWHITE }, line: { color: OFFWHITE } });
  addDivider(s, ACCENT);
  s.addText("NODAL STAGING & ROLE OF PET/CT", {
    x: 0.4, y: 0.15, w: 12.5, h: 0.55, fontSize: 26, bold: true, color: DARK, fontFace: "Calibri"
  });

  // nodal stations visual (text-based)
  s.addShape(pres.ShapeType.rect, { x: 0.4, y: 0.88, w: 5.8, h: 6.35, fill: { color: WHITE }, line: { color: MID, pt: 1.2 } });
  s.addShape(pres.ShapeType.rect, { x: 0.4, y: 0.88, w: 5.8, h: 0.42, fill: { color: MID }, line: { color: MID } });
  s.addText("NODAL STATION GROUPS", { x: 0.4, y: 0.88, w: 5.8, h: 0.42, fontSize: 13, bold: true, color: WHITE, align: "center", valign: "middle", fontFace: "Calibri" });

  const stations = [
    ["N1 Nodes (ipsilateral)", "• 10: Hilar\n• 11: Interlobar\n• 12: Lobar\n• 13: Segmental\n• 14: Subsegmental"],
    ["N2 Nodes (ipsilateral mediastinal)", "• 1: Highest mediastinal\n• 2: Upper paratracheal\n• 3: Pre/retrovascular\n• 4: Lower paratracheal\n• 5: Subaortic (AP window)\n• 6: Para-aortic\n• 7: Subcarinal\n• 8: Para-oesophageal\n• 9: Pulmonary ligament"],
    ["N3 Nodes (contralateral)", "• Contralateral mediastinal\n• Contralateral hilar\n• Scalene / supraclavicular"],
  ];
  let y2 = 1.4;
  stations.forEach(([h, t]) => {
    s.addText(h, { x: 0.55, y: y2, w: 5.5, h: 0.38, fontSize: 11.5, bold: true, color: MID, fontFace: "Calibri" });
    s.addShape(pres.ShapeType.rect, { x: 0.55, y: y2 + 0.38, w: 0.04, h: 0.04 }); // spacer
    s.addText(t, { x: 0.55, y: y2 + 0.4, w: 5.5, h: 1.4, fontSize: 9.5, color: DARK, fontFace: "Calibri", wrap: true });
    y2 += 2.0;
  });

  const petItems = [
    ["CT Criteria for Nodal Involvement", "Short axis >1 cm in mediastinal nodes; poor specificity — enlarged nodes may be reactive; normal-sized nodes may harbour micrometastases"],
    ["PET/CT Advantages", "FDG uptake identifies metabolically active nodal disease; detects occult mediastinal disease not visible on CT; SUV threshold varies"],
    ["PET/CT — Key Stats", "Detects occult metastatic disease in 11-14% of patients planned for curative resection; alters management in up to 40%"],
    ["Endoscopic Staging", "EBUS-TBNA / EUS-FNA: tissue sampling of mediastinal nodes; gold standard when imaging equivocal"],
    ["Mediastinoscopy", "Required to confirm nodal involvement before denying surgery; PET positivity alone insufficient for excluding resection"],
    ["No Enlarged Nodes + Normal PET", "Likelihood of nodal involvement so low that mediastinoscopy can be omitted for peripheral tumours"],
  ];

  petItems.forEach(([h, t], i) => {
    const y = 0.88 + i * 1.07;
    s.addShape(pres.ShapeType.rect, { x: 6.5, y, w: 6.5, h: 1.0, fill: { color: WHITE }, line: { color: LIGHT, pt: 0.8 } });
    s.addShape(pres.ShapeType.rect, { x: 6.5, y, w: 0.12, h: 1.0, fill: { color: ACCENT }, line: { color: ACCENT } });
    s.addText(h, { x: 6.7, y: y + 0.05, w: 6.2, h: 0.32, fontSize: 11.5, bold: true, color: DARK, fontFace: "Calibri" });
    s.addText(t, { x: 6.7, y: y + 0.37, w: 6.2, h: 0.58, fontSize: 9.5, color: GRAY, fontFace: "Calibri", wrap: true });
  });
  addFooter(s, "Nodal Staging & PET/CT");
}

// ─────────────────────────────────────────────────────────────────────────────
// SLIDE 13 — EXTRATHORACIC STAGING & IMAGING PROTOCOLS
// ─────────────────────────────────────────────────────────────────────────────
{
  let s = pres.addSlide();
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: DARK }, line: { color: DARK } });
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.18, h: 7.5, fill: { color: GOLD }, line: { color: GOLD } });

  s.addText("EXTRATHORACIC STAGING & IMAGING PROTOCOLS", {
    x: 0.4, y: 0.2, w: 12.5, h: 0.6, fontSize: 24, bold: true, color: WHITE, fontFace: "Calibri"
  });
  s.addShape(pres.ShapeType.rect, { x: 0.4, y: 0.82, w: 12.5, h: 0.04, fill: { color: GOLD }, line: { color: GOLD } });

  // Left: metastatic sites
  s.addShape(pres.ShapeType.rect, { x: 0.4, y: 0.92, w: 5.8, h: 0.42, fill: { color: ACCENT }, line: { color: ACCENT } });
  s.addText("COMMON METASTATIC SITES", { x: 0.4, y: 0.92, w: 5.8, h: 0.42, fontSize: 13, bold: true, color: WHITE, align: "center", valign: "middle", fontFace: "Calibri" });
  const metSites = [
    ["Adrenal Glands", "Most common; included in standard chest CT (extend to upper abdomen with portal venous phase)"],
    ["Brain", "Especially SCLC and adenocarcinoma; MRI brain superior to CT for detection; prophylactic cranial irradiation in SCLC"],
    ["Bones", "Bone scan or PET/CT; lytic or mixed lesions; vertebral metastases may cause cord compression"],
    ["Liver", "Included in extended chest CT; PET/CT sensitive for hepatic FDG-avid metastases"],
    ["Distant Nodes", "Supraclavicular, retroperitoneal, iliac; FDG-PET most sensitive"],
  ];
  metSites.forEach(([h, t], i) => {
    s.addShape(pres.ShapeType.rect, { x: 0.4, y: 1.4 + i * 1.18, w: 5.8, h: 1.1, fill: { color: MID }, line: { color: MID } });
    s.addText(h, { x: 0.55, y: 1.45 + i * 1.18, w: 5.5, h: 0.32, fontSize: 11.5, bold: true, color: GOLD, fontFace: "Calibri" });
    s.addText(t, { x: 0.55, y: 1.77 + i * 1.18, w: 5.5, h: 0.65, fontSize: 9.5, color: WHITE, fontFace: "Calibri", wrap: true });
  });

  // Right: imaging protocols
  s.addShape(pres.ShapeType.rect, { x: 6.5, y: 0.92, w: 6.5, h: 0.42, fill: { color: GOLD }, line: { color: GOLD } });
  s.addText("IMAGING MODALITY ROLES", { x: 6.5, y: 0.92, w: 6.5, h: 0.42, fontSize: 13, bold: true, color: DARK, align: "center", valign: "middle", fontFace: "Calibri" });
  const protocols = [
    ["CT Chest + Abdomen", "Primary modality; 1-3mm collimation multidetector CT; isotropic voxels for MPR; extended to liver and adrenals; portal venous phase"],
    ["PET/CT (FDG)", "Skull base to upper thigh; 5-7 bed positions; ~35 min; detects occult disease altering management in 40%; now routine before radical therapy in Europe"],
    ["MRI Thorax", "Problem-solving: Pancoast, aortic invasion, diaphragm integrity; DWI differentiates tumour vs collapse; dynamic cine for fixation"],
    ["MRI Brain", "Mandatory for SCLC; recommended for stage III/IV NSCLC; gadolinium-enhanced; superior to CT for small metastases"],
    ["Bone Scan", "Symptomatic patients; superseded by PET/CT where available; MRI for vertebral metastasis assessment"],
  ];
  protocols.forEach(([h, t], i) => {
    s.addShape(pres.ShapeType.rect, { x: 6.5, y: 1.4 + i * 1.18, w: 6.5, h: 1.1, fill: { color: "0E3460" }, line: { color: "0E3460" } });
    s.addText(h, { x: 6.65, y: 1.45 + i * 1.18, w: 6.2, h: 0.32, fontSize: 11.5, bold: true, color: GOLD, fontFace: "Calibri" });
    s.addText(t, { x: 6.65, y: 1.77 + i * 1.18, w: 6.2, h: 0.65, fontSize: 9.5, color: WHITE, fontFace: "Calibri", wrap: true });
  });
  addFooter(s, "Extrathoracic Staging & Imaging Protocols");
}

// ─────────────────────────────────────────────────────────────────────────────
// SLIDE 14 — SMALL CELL LUNG CANCER (SCLC)
// ─────────────────────────────────────────────────────────────────────────────
{
  let s = pres.addSlide();
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: OFFWHITE }, line: { color: OFFWHITE } });
  addDivider(s, "117A65");
  s.addText("SMALL CELL LUNG CANCER (SCLC)", {
    x: 0.4, y: 0.15, w: 12.5, h: 0.55, fontSize: 26, bold: true, color: DARK, fontFace: "Calibri"
  });

  const sclcData = [
    { heading: "Epidemiology", color: "117A65", items: ["~15% of all lung cancers", "Almost exclusively smoking-related", "More common in men; rising in women"] },
    { heading: "Imaging Features", color: "1A5276", items: ["Central/perihilar bulky mediastinal mass", "Rapid growth with early hilar/mediastinal adenopathy", "Peripheral primary rare (<5%)", "Superior vena cava obstruction common"] },
    { heading: "Staging (Veterans System)", color: "7D3C98", items: ["Limited Disease: confined to one hemithorax ± ipsilateral nodes; can be encompassed in radiation field", "Extensive Disease: beyond hemithorax, distant metastases, malignant effusion"] },
    { heading: "Imaging Protocol", color: "C0392B", items: ["CT chest/abdomen/pelvis for staging", "MRI brain: mandatory in all patients", "PET/CT increasing use", "Bone marrow biopsy where clinically indicated"] },
    { heading: "Biomarkers", color: "B7950B", items: ["Biomarker testing NOT required (unlike NSCLC)", "No druggable mutations targeted by oral kinase inhibitors", "Response to chemo-radiation usually rapid"] },
    { heading: "Key Clinical Points", color: "5D6D7E", items: ["Rapid progression; median survival without treatment ~3 months", "Chemotherapy mainstay; prophylactic cranial irradiation (limited disease)", "Re-biopsy at progression becoming standard"] },
  ];

  const cols2 = 3;
  sclcData.forEach((d, i) => {
    const col = i % cols2;
    const row = Math.floor(i / cols2);
    const x = 0.4 + col * 4.3;
    const y = 0.88 + row * 3.0;
    s.addShape(pres.ShapeType.rect, { x, y, w: 4.0, h: 0.42, fill: { color: d.color }, line: { color: d.color } });
    s.addText(d.heading, { x, y, w: 4.0, h: 0.42, fontSize: 12, bold: true, color: WHITE, align: "center", valign: "middle", fontFace: "Calibri" });
    s.addShape(pres.ShapeType.rect, { x, y: y + 0.42, w: 4.0, h: 2.4, fill: { color: WHITE }, line: { color: d.color, pt: 1 } });
    d.items.forEach((item, j) => {
      s.addText("• " + item, { x: x + 0.1, y: y + 0.52 + j * 0.7, w: 3.8, h: 0.65, fontSize: 9.5, color: DARK, fontFace: "Calibri", wrap: true });
    });
  });
  addFooter(s, "Small Cell Lung Cancer");
}

// ─────────────────────────────────────────────────────────────────────────────
// SLIDE 15 — SUMMARY & KEY TAKE-HOMES
// ─────────────────────────────────────────────────────────────────────────────
{
  let s = pres.addSlide();
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: DARK }, line: { color: DARK } });
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.18, h: 7.5, fill: { color: GOLD }, line: { color: GOLD } });
  s.addShape(pres.ShapeType.rect, { x: 13.12, y: 0, w: 0.18, h: 7.5, fill: { color: ACCENT }, line: { color: ACCENT } });

  s.addText("KEY TAKE-HOME POINTS", {
    x: 0.4, y: 0.2, w: 12.5, h: 0.65, fontSize: 32, bold: true, color: WHITE, align: "center", fontFace: "Calibri"
  });
  s.addShape(pres.ShapeType.rect, { x: 2.5, y: 0.9, w: 8.3, h: 0.06, fill: { color: GOLD }, line: { color: GOLD } });

  const keys = [
    "Corona radiata on CT is highly suggestive of bronchogenic carcinoma; smooth spherical nodules are rare",
    "Squamous cell carcinoma is most likely to cavitate; adenocarcinoma most likely to mimic pneumonia",
    "TNM 8th edition: T descriptors in 1 cm increments up to 5 cm; measurement = solid component",
    "CT has poor specificity (~50%) for mediastinal invasion; MRI is preferred for Pancoast and aortic involvement",
    "Enlarged nodes on CT do NOT confirm malignancy; biopsy (EBUS/mediastinoscopy) required before denying surgery",
    "PET/CT detects occult metastatic disease in 11-14%; alters management in up to 40% of patients",
    "Normal CT nodes + normal PET: mediastinoscopy can be omitted for peripheral NSCLC",
    "LDCT screening (NLST): 20% mortality reduction; NELSON trial: 24-26% — now recommended in high-risk smokers",
    "SCLC staging: Limited vs Extensive; MRI brain mandatory in ALL SCLC patients",
    "Chest wall pain is the single most specific clinical indicator of parietal pleural/chest wall invasion",
  ];

  keys.forEach((k, i) => {
    const col = i < 5 ? 0 : 1;
    const row = col === 0 ? i : i - 5;
    const x = 0.4 + col * 6.5;
    const y = 1.1 + row * 1.22;
    s.addShape(pres.ShapeType.rect, { x, y, w: 0.42, h: 0.42, fill: { color: GOLD }, line: { color: GOLD } });
    s.addText(String(i + 1), { x, y, w: 0.42, h: 0.42, fontSize: 14, bold: true, color: DARK, align: "center", valign: "middle", fontFace: "Calibri" });
    s.addText(k, { x: x + 0.5, y, w: 5.7, h: 0.9, fontSize: 10, color: WHITE, valign: "middle", fontFace: "Calibri", wrap: true });
  });

  s.addText("Source: Grainger & Allison's Diagnostic Radiology — A Textbook of Medical Imaging, Chapter 8", {
    x: 0.4, y: 7.15, w: 12.5, h: 0.3, fontSize: 9, color: GRAY, align: "center", italic: true, fontFace: "Calibri"
  });
}

// ─────────────────────────────────────────────────────────────────────────────
// WRITE FILE
// ─────────────────────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/bronchogenic-carcinoma-ppt/Radiology_Bronchogenic_Carcinoma_Grainger_Allison.pptx" })
  .then(() => console.log("PPT created successfully"))
  .catch(e => console.error("Error:", e));
Running Command

cd /home/daytona/workspace/bronchogenic-carcinoma-ppt && node build.js 2>&1

Running Command

ls -lh /home/daytona/workspace/bronchogenic-carcinoma-ppt/

Your presentation is ready:

Radiology Bronchogenic Carcinoma Grainger Allison

Presentation · PPTX


What's inside (15 slides, sourced directly from Grainger & Allison Ch. 8):
SlideContent
1Title slide — bold dark navy with red/gold accents
2Visual overview / table of contents (8 topic cards)
3Epidemiology & Aetiology — smoking, radon, asbestos, pollution
4Pathological Classification — Squamous / Adenocarcinoma / SCLC / Large Cell with proportions
5Lung Cancer Screening — CXR trials (PLCO, Mayo) vs LDCT (NLST, NELSON)
6Peripheral Tumours — corona radiata, cavitation, calcification, ground-glass, with 2 textbook CT/CXR images
7Central Tumours — collapse patterns, Golden S sign, air trapping, endobronchial lesions
8Special Patterns & Mimics — pneumonia mimic, Pancoast, cavitation vs abscess, SPN, with image
9TNM 8th Edition Staging — full T/N/M descriptors in colour-coded columns
10Intrathoracic Staging: Mediastinal Invasion — CT/MRI criteria, with 2 images (Figs 8.20, 8.21)
11Chest Wall / Pleural Invasion / Pancoast — MRI role, clinical pain rule, with Figs 8.22 & 8.23
12Nodal Staging & PET/CT — nodal station map, CT vs PET criteria, EBUS
13Extrathoracic Staging & Imaging Protocols — adrenals, brain, bone, liver; CT/PET/MRI roles
14SCLC — imaging, Limited vs Extensive disease staging, biomarkers
1510 Key Take-Home Points summary
This is a shared conversation. Sign in to Orris to start your own chat.