PPT for Radiology of bronchogenic carcinoma by Grainger and allison
mkdir -p /home/daytona/workspace/bronchogenic-carcinoma-ppt && ls /home/daytona/workspace/bronchogenic-carcinoma-ppt
~/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));
cd /home/daytona/workspace/bronchogenic-carcinoma-ppt && node build.js 2>&1
ls -lh /home/daytona/workspace/bronchogenic-carcinoma-ppt/
Radiology Bronchogenic Carcinoma Grainger Allison
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Title slide — bold dark navy with red/gold accents |
| 2 | Visual overview / table of contents (8 topic cards) |
| 3 | Epidemiology & Aetiology — smoking, radon, asbestos, pollution |
| 4 | Pathological Classification — Squamous / Adenocarcinoma / SCLC / Large Cell with proportions |
| 5 | Lung Cancer Screening — CXR trials (PLCO, Mayo) vs LDCT (NLST, NELSON) |
| 6 | Peripheral Tumours — corona radiata, cavitation, calcification, ground-glass, with 2 textbook CT/CXR images |
| 7 | Central Tumours — collapse patterns, Golden S sign, air trapping, endobronchial lesions |
| 8 | Special Patterns & Mimics — pneumonia mimic, Pancoast, cavitation vs abscess, SPN, with image |
| 9 | TNM 8th Edition Staging — full T/N/M descriptors in colour-coded columns |
| 10 | Intrathoracic Staging: Mediastinal Invasion — CT/MRI criteria, with 2 images (Figs 8.20, 8.21) |
| 11 | Chest Wall / Pleural Invasion / Pancoast — MRI role, clinical pain rule, with Figs 8.22 & 8.23 |
| 12 | Nodal Staging & PET/CT — nodal station map, CT vs PET criteria, EBUS |
| 13 | Extrathoracic Staging & Imaging Protocols — adrenals, brain, bone, liver; CT/PET/MRI roles |
| 14 | SCLC — imaging, Limited vs Extensive disease staging, biomarkers |
| 15 | 10 Key Take-Home Points summary |