~/cancer-presentation/cancer_pptx.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Cancer - Definition, Treatment & Anticancer Drug Classification";
pres.author = "Orris Medical Education";
// ─── THEME ───────────────────────────────────────────────────────────────────
const C = {
navy: "0D1B3E", // dominant dark
teal: "0A7E8C", // supporting accent
gold: "F4C544", // sharp accent
white: "FFFFFF",
light: "EFF4F9",
mid: "C9DDE8",
gray: "5A6478",
red: "C0392B",
green: "1A7A4A",
purple: "5B3A8E",
orange: "D4620A",
steel: "2E6EA6",
};
// ─── HELPER ──────────────────────────────────────────────────────────────────
function slideHeader(slide, title, subtitle) {
// navy bar across top
slide.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 0, w: 10, h: 0.8,
fill: { color: C.navy }, line: { color: C.navy }
});
// gold accent strip
slide.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 0.8, w: 10, h: 0.07,
fill: { color: C.gold }, line: { color: C.gold }
});
slide.addText(title, {
x: 0.15, y: 0, w: 9.7, h: 0.8, margin: 0,
fontSize: 22, bold: true, color: C.white,
fontFace: "Calibri", valign: "middle"
});
if (subtitle) {
slide.addText(subtitle, {
x: 0.15, y: 0.82, w: 9.7, h: 0.3,
fontSize: 12, color: C.teal, fontFace: "Calibri", italic: true
});
}
// light background
slide.background = { color: C.light };
}
function footerBar(slide, src) {
slide.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 5.35, w: 10, h: 0.275,
fill: { color: C.navy }, line: { color: C.navy }
});
slide.addText(src || "Source: Katzung's Basic & Clinical Pharmacology 16e | Goldman-Cecil Medicine", {
x: 0.2, y: 5.35, w: 9.6, h: 0.275, margin: 0,
fontSize: 8, color: C.mid, fontFace: "Calibri", valign: "middle"
});
}
function iconBox(slide, x, y, w, h, fillColor, icon, label, sub) {
slide.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x, y, w, h,
fill: { color: fillColor },
line: { color: fillColor },
rectRadius: 0.12,
shadow: { type: "outer", color: "000000", blur: 5, offset: 2, angle: 135, opacity: 0.12 }
});
slide.addText(icon, {
x, y: y + 0.08, w, h: 0.5, margin: 0,
fontSize: 22, align: "center", color: C.white, fontFace: "Segoe UI Emoji"
});
slide.addText(label, {
x, y: y + 0.55, w, h: 0.32, margin: 0,
fontSize: 11, bold: true, align: "center", color: C.white, fontFace: "Calibri"
});
if (sub) {
slide.addText(sub, {
x: x + 0.05, y: y + 0.85, w: w - 0.1, h: h - 0.9, margin: 0,
fontSize: 8.5, align: "center", color: C.white, fontFace: "Calibri",
wrap: true
});
}
}
// ─── SLIDE 1 — TITLE ─────────────────────────────────────────────────────────
{
const s = pres.addSlide();
s.background = { color: C.navy };
// Large cell-like decorative circle
s.addShape(pres.shapes.OVAL, {
x: 6.8, y: -0.6, w: 4.5, h: 4.5,
fill: { color: "1A2E5A" }, line: { color: "1A2E5A" }
});
s.addShape(pres.shapes.OVAL, {
x: 7.4, y: -0.2, w: 3.2, h: 3.2,
fill: { color: "243770" }, line: { color: "243770" }
});
s.addShape(pres.shapes.OVAL, {
x: -1, y: 3.5, w: 2.5, h: 2.5,
fill: { color: "1A2E5A" }, line: { color: "1A2E5A" }
});
// Gold accent line
s.addShape(pres.shapes.RECTANGLE, {
x: 0.5, y: 1.55, w: 1.5, h: 0.06,
fill: { color: C.gold }, line: { color: C.gold }
});
s.addText("CANCER", {
x: 0.5, y: 0.6, w: 8, h: 0.9,
fontSize: 54, bold: true, color: C.white, fontFace: "Calibri",
charSpacing: 8
});
s.addText("Definition | Treatment | Anticancer Drug Classification", {
x: 0.5, y: 1.65, w: 8.5, h: 0.5,
fontSize: 17, color: C.mid, fontFace: "Calibri", italic: true
});
// Tag boxes
const tags = ["Pharmacology", "Oncology", "Clinical Medicine"];
tags.forEach((t, i) => {
s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x: 0.5 + i * 2.3, y: 2.4, w: 2.1, h: 0.38,
fill: { color: C.teal }, line: { color: C.teal }, rectRadius: 0.19
});
s.addText(t, {
x: 0.5 + i * 2.3, y: 2.4, w: 2.1, h: 0.38, margin: 0,
fontSize: 10, bold: true, color: C.white, fontFace: "Calibri",
align: "center", valign: "middle"
});
});
s.addText("Based on Katzung's Pharmacology 16e | Goldman-Cecil Medicine", {
x: 0.5, y: 5.1, w: 9, h: 0.3,
fontSize: 9, color: C.gray, fontFace: "Calibri", italic: true
});
}
// ─── SLIDE 2 — AGENDA ────────────────────────────────────────────────────────
{
const s = pres.addSlide();
slideHeader(s, "Agenda");
footerBar(s);
const items = [
{ n: "01", title: "Definition of Cancer", sub: "What is cancer? Key hallmarks & types" },
{ n: "02", title: "Cancer vs Normal Cell", sub: "Benign vs malignant comparison" },
{ n: "03", title: "Treatment Modalities", sub: "Surgery, Radiation, Chemo, Immunotherapy & more" },
{ n: "04", title: "Classification of Anticancer Drugs", sub: "7 major classes with mechanisms & examples" },
{ n: "05", title: "Cell Cycle Specificity", sub: "Which drugs act at which phase" },
];
items.forEach((item, i) => {
const row = Math.floor(i / 3);
const col = i % 3;
const x = 0.3 + col * 3.2;
const y = 1.2 + row * 2.0;
const colors = [C.navy, C.teal, C.steel, C.purple, C.green];
s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x, y, w: 3.0, h: 1.7,
fill: { color: colors[i] }, line: { color: colors[i] },
rectRadius: 0.1,
shadow: { type: "outer", color: "000000", blur: 6, offset: 2, angle: 135, opacity: 0.15 }
});
s.addText(item.n, {
x, y: y + 0.1, w: 3.0, h: 0.45, margin: 0,
fontSize: 28, bold: true, color: C.gold, fontFace: "Calibri", align: "center"
});
s.addText(item.title, {
x: x + 0.1, y: y + 0.58, w: 2.8, h: 0.4, margin: 0,
fontSize: 12, bold: true, color: C.white, fontFace: "Calibri", align: "center"
});
s.addText(item.sub, {
x: x + 0.1, y: y + 1.0, w: 2.8, h: 0.55, margin: 0,
fontSize: 9, color: C.mid, fontFace: "Calibri", align: "center", wrap: true
});
});
}
// ─── SLIDE 3 — DEFINITION ────────────────────────────────────────────────────
{
const s = pres.addSlide();
slideHeader(s, "What is Cancer?", "Definition & Core Concepts");
footerBar(s);
// Big quote box
s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x: 0.3, y: 1.1, w: 9.4, h: 1.0,
fill: { color: C.navy }, line: { color: C.navy }, rectRadius: 0.1
});
s.addText([
{ text: "Cancer", options: { bold: true, color: C.gold } },
{ text: " is a group of diseases characterized by ", options: { color: C.white } },
{ text: "uncontrolled, autonomous proliferation", options: { bold: true, color: C.teal } },
{ text: " of cells that have escaped normal regulatory mechanisms of growth and division.", options: { color: C.white } }
], {
x: 0.4, y: 1.1, w: 9.2, h: 1.0, margin: 8,
fontSize: 13, fontFace: "Calibri", valign: "middle"
});
// 6 hallmarks
const hallmarks = [
{ icon: "🔁", label: "Self-sufficient\nGrowth Signals" },
{ icon: "🚫", label: "Evades\nGrowth Inhibitors" },
{ icon: "💀", label: "Resists\nApoptosis" },
{ icon: "♾️", label: "Limitless\nReplication" },
{ icon: "🩸", label: "Sustained\nAngiogenesis" },
{ icon: "🌐", label: "Invasion &\nMetastasis" },
];
hallmarks.forEach((h, i) => {
const x = 0.3 + i * 1.57;
s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x, y: 2.25, w: 1.45, h: 1.5,
fill: { color: i % 2 === 0 ? C.teal : C.steel },
line: { color: i % 2 === 0 ? C.teal : C.steel },
rectRadius: 0.1
});
s.addText(h.icon, {
x, y: 2.28, w: 1.45, h: 0.5, margin: 0,
fontSize: 20, align: "center", fontFace: "Segoe UI Emoji"
});
s.addText(h.label, {
x, y: 2.78, w: 1.45, h: 0.9, margin: 0,
fontSize: 9, bold: true, color: C.white, fontFace: "Calibri",
align: "center", wrap: true
});
});
s.addText("Hallmarks of Cancer (Hanahan & Weinberg)", {
x: 0.3, y: 3.82, w: 9.4, h: 0.25,
fontSize: 9, italic: true, color: C.gray, fontFace: "Calibri", align: "center"
});
// Types row
s.addText("Major Types by Tissue Origin:", {
x: 0.3, y: 4.12, w: 9.4, h: 0.3,
fontSize: 11, bold: true, color: C.navy, fontFace: "Calibri"
});
const types = [
["Carcinoma", "Epithelial cells", C.navy],
["Sarcoma", "Connective tissue", C.steel],
["Leukemia", "Blood-forming cells", C.teal],
["Lymphoma", "Lymphoid tissue", C.purple],
["Myeloma", "Plasma cells", C.green],
];
types.forEach(([name, org, clr], i) => {
s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x: 0.28 + i * 1.89, y: 4.44, w: 1.78, h: 0.65,
fill: { color: clr }, line: { color: clr }, rectRadius: 0.08
});
s.addText([
{ text: name + "\n", options: { bold: true, fontSize: 10, color: C.white } },
{ text: org, options: { fontSize: 8, color: C.mid } }
], {
x: 0.28 + i * 1.89, y: 4.44, w: 1.78, h: 0.65, margin: 4,
fontFace: "Calibri", align: "center", valign: "middle"
});
});
}
// ─── SLIDE 4 — BENIGN vs MALIGNANT ───────────────────────────────────────────
{
const s = pres.addSlide();
slideHeader(s, "Benign vs Malignant Tumors", "Key Distinguishing Features");
footerBar(s);
// Header row
const colW = 3.8;
[C.navy, C.teal, C.red].forEach((c, i) => {
s.addShape(pres.shapes.RECTANGLE, {
x: 0.15 + i * colW, y: 1.05, w: colW - 0.05, h: 0.42,
fill: { color: c }, line: { color: c }
});
});
["Feature", "Benign Tumor", "Malignant Tumor (Cancer)"].forEach((h, i) => {
s.addText(h, {
x: 0.15 + i * colW, y: 1.05, w: colW - 0.05, h: 0.42, margin: 0,
fontSize: 12, bold: true, color: C.white, fontFace: "Calibri",
align: "center", valign: "middle"
});
});
const rows = [
["Growth Rate", "Slow", "Rapid & uncontrolled"],
["Local Invasion", "❌ No", "✅ Yes"],
["Metastasis", "❌ No", "✅ Yes"],
["Differentiation", "Well-differentiated", "Poorly differentiated"],
["Capsule", "Usually present", "Absent"],
["Recurrence", "Rare after removal", "Common"],
["Threat to life", "Usually not", "Often fatal if untreated"],
];
rows.forEach((row, ri) => {
const bg = ri % 2 === 0 ? "EFF4F9" : C.white;
row.forEach((cell, ci) => {
s.addShape(pres.shapes.RECTANGLE, {
x: 0.15 + ci * colW, y: 1.47 + ri * 0.48, w: colW - 0.05, h: 0.48,
fill: { color: bg }, line: { color: C.mid }
});
const isGood = cell.includes("❌");
const isBad = cell.includes("✅");
s.addText(cell, {
x: 0.15 + ci * colW, y: 1.47 + ri * 0.48, w: colW - 0.05, h: 0.48, margin: 4,
fontSize: ci === 0 ? 11 : 10.5,
bold: ci === 0,
color: ci === 0 ? C.navy : (isBad ? C.red : (isGood ? C.green : C.gray)),
fontFace: "Calibri", valign: "middle", align: ci === 0 ? "left" : "center"
});
});
});
}
// ─── SLIDE 5 — TREATMENT ─────────────────────────────────────────────────────
{
const s = pres.addSlide();
slideHeader(s, "Treatment of Cancer", "Modalities & Goals");
footerBar(s);
const modalities = [
{ icon: "🔪", label: "Surgery", color: C.navy,
desc: "Remove solid tumors\nCurative for early-stage\nDebulking for advanced" },
{ icon: "☢️", label: "Radiation\nTherapy", color: C.steel,
desc: "Ionizing radiation\nDamages tumor DNA\nExternal or brachytherapy" },
{ icon: "💊", label: "Chemo-\ntherapy", color: C.teal,
desc: "Systemic cytotoxic drugs\nTargets rapidly dividing cells\nAdjuvant or neoadjuvant" },
{ icon: "🎯", label: "Targeted\nTherapy", color: C.purple,
desc: "TKIs, monoclonal Abs\nHits specific molecular targets\nFewer side effects" },
{ icon: "🛡️", label: "Immuno-\ntherapy", color: C.green,
desc: "PD-1/CTLA-4 inhibitors\nCAR-T cell therapy\nRestores immune attack" },
{ icon: "⚗️", label: "Hormonal\nTherapy", color: C.orange,
desc: "Blocks hormone receptors\nBreast & prostate cancer\nTamoxifen, Leuprolide" },
];
modalities.forEach((m, i) => {
const col = i % 3;
const row = Math.floor(i / 3);
const x = 0.22 + col * 3.2;
const y = 1.1 + row * 2.1;
s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x, y, w: 3.0, h: 1.95,
fill: { color: m.color }, line: { color: m.color }, rectRadius: 0.12,
shadow: { type: "outer", color: "000000", blur: 8, offset: 3, angle: 135, opacity: 0.15 }
});
s.addText(m.icon, {
x, y: y + 0.05, w: 3.0, h: 0.5, margin: 0,
fontSize: 24, align: "center", fontFace: "Segoe UI Emoji"
});
s.addText(m.label, {
x, y: y + 0.52, w: 3.0, h: 0.48, margin: 0,
fontSize: 12, bold: true, color: C.white, fontFace: "Calibri", align: "center"
});
s.addText(m.desc, {
x: x + 0.1, y: y + 0.98, w: 2.8, h: 0.9, margin: 0,
fontSize: 9, color: C.mid, fontFace: "Calibri", align: "center", wrap: true
});
});
}
// ─── SLIDE 6 — ANTICANCER DRUG OVERVIEW ──────────────────────────────────────
{
const s = pres.addSlide();
slideHeader(s, "Classification of Anticancer Drugs", "Overview — 7 Major Classes");
footerBar(s);
const classes = [
{ num: "I", label: "Alkylating Agents", color: C.navy, icon: "🧪", phase: "Non-specific" },
{ num: "II", label: "Antimetabolites", color: C.teal, icon: "🔬", phase: "S phase" },
{ num: "III", label: "Natural Products", color: C.steel, icon: "🌿", phase: "M / S / G2" },
{ num: "IV", label: "Hormonal Agents", color: C.purple, icon: "⚗️", phase: "Non-specific" },
{ num: "V", label: "Targeted / Biologicals", color: C.green, icon: "🎯", phase: "Non-specific" },
{ num: "VI", label: "Immunotherapy", color: C.orange, icon: "🛡️", phase: "Non-specific" },
{ num: "VII", label: "Miscellaneous", color: C.gray, icon: "💡", phase: "Varies" },
];
classes.forEach((c, i) => {
const x = 0.22 + (i % 4) * 2.4;
const y = 1.1 + Math.floor(i / 4) * 2.1;
s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x, y, w: 2.25, h: 1.85,
fill: { color: c.color }, line: { color: c.color }, rectRadius: 0.12,
shadow: { type: "outer", color: "000000", blur: 5, offset: 2, angle: 135, opacity: 0.12 }
});
s.addText(`Class ${c.num}`, {
x, y: y + 0.08, w: 2.25, h: 0.32, margin: 0,
fontSize: 10, bold: true, color: C.gold, fontFace: "Calibri", align: "center"
});
s.addText(c.icon, {
x, y: y + 0.36, w: 2.25, h: 0.42, margin: 0,
fontSize: 20, align: "center", fontFace: "Segoe UI Emoji"
});
s.addText(c.label, {
x: x + 0.05, y: y + 0.78, w: 2.15, h: 0.55, margin: 0,
fontSize: 10, bold: true, color: C.white, fontFace: "Calibri", align: "center", wrap: true
});
s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x: x + 0.2, y: y + 1.42, w: 1.85, h: 0.3,
fill: { color: "00000030" }, line: { color: "00000000" }, rectRadius: 0.15
});
s.addText(c.phase, {
x: x + 0.2, y: y + 1.42, w: 1.85, h: 0.3, margin: 0,
fontSize: 8.5, color: C.white, fontFace: "Calibri", align: "center", valign: "middle"
});
});
}
// ─── SLIDE 7 — CLASS I ALKYLATING ────────────────────────────────────────────
{
const s = pres.addSlide();
slideHeader(s, "Class I — Alkylating Agents", "Cell Cycle Non-Specific");
footerBar(s);
// Mechanism box
s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x: 0.3, y: 1.0, w: 9.4, h: 0.72,
fill: { color: C.navy }, line: { color: C.navy }, rectRadius: 0.1
});
s.addText([
{ text: "⚙️ Mechanism: ", options: { bold: true, color: C.gold } },
{ text: "Form covalent bonds with DNA, cross-link DNA strands, prevent replication. ", options: { color: C.white } },
{ text: "Cell cycle NON-specific.", options: { bold: true, color: C.teal } }
], {
x: 0.4, y: 1.0, w: 9.2, h: 0.72, margin: 6,
fontSize: 12, fontFace: "Calibri", valign: "middle"
});
const subclasses = [
{ name: "Nitrogen Mustards", examples: "Cyclophosphamide\nChlorambucil\nMelphalan\nIfosfamide", color: C.navy },
{ name: "Nitrosoureas", examples: "Carmustine (BCNU)\nLomustine (CCNU)\n(Cross BBB ✓)", color: C.steel },
{ name: "Alkyl Sulfonates", examples: "Busulfan", color: C.teal },
{ name: "Triazines", examples: "Dacarbazine\nTemozolomide", color: C.purple },
{ name: "Platinum Analogs", examples: "Cisplatin\nCarboplatin\nOxaliplatin", color: C.green },
];
subclasses.forEach((sc, i) => {
const x = 0.25 + (i % 3) * 3.18;
const y = 1.88 + Math.floor(i / 3) * 1.65;
s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x, y, w: 3.0, h: 1.55,
fill: { color: sc.color }, line: { color: sc.color }, rectRadius: 0.1
});
s.addText(sc.name, {
x, y: y + 0.07, w: 3.0, h: 0.35, margin: 0,
fontSize: 11, bold: true, color: C.gold, fontFace: "Calibri", align: "center"
});
s.addText(sc.examples, {
x: x + 0.1, y: y + 0.44, w: 2.8, h: 1.0, margin: 0,
fontSize: 9.5, color: C.white, fontFace: "Calibri", align: "center", wrap: true
});
});
s.addText("⚠️ Key Toxicities: Myelosuppression • Alopecia • Nausea/Vomiting • Hemorrhagic cystitis (Cyclophosphamide) • Nephrotoxicity (Cisplatin)", {
x: 0.3, y: 5.05, w: 9.4, h: 0.28,
fontSize: 8.5, color: C.red, fontFace: "Calibri", bold: true
});
}
// ─── SLIDE 8 — CLASS II ANTIMETABOLITES ──────────────────────────────────────
{
const s = pres.addSlide();
slideHeader(s, "Class II — Antimetabolites", "S Phase Specific");
footerBar(s);
s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x: 0.3, y: 1.0, w: 9.4, h: 0.72,
fill: { color: C.teal }, line: { color: C.teal }, rectRadius: 0.1
});
s.addText([
{ text: "⚙️ Mechanism: ", options: { bold: true, color: C.gold } },
{ text: "Structural analogs of normal metabolites that interfere with nucleic acid synthesis. ", options: { color: C.white } },
{ text: "S phase specific.", options: { bold: true, color: C.navy } }
], {
x: 0.4, y: 1.0, w: 9.2, h: 0.72, margin: 6,
fontSize: 12, fontFace: "Calibri", valign: "middle"
});
const groups = [
{
name: "Folate Antagonists", color: C.navy,
items: ["Methotrexate — inhibits DHFR", "Pemetrexed — multi-enzyme inhibitor"],
use: "ALL, Choriocarcinoma, NSCLC, RA"
},
{
name: "Pyrimidine Antagonists", color: C.steel,
items: ["5-Fluorouracil (5-FU) — inhibits thymidylate synthase", "Capecitabine — oral prodrug of 5-FU", "Cytarabine (Ara-C) — AML", "Gemcitabine — pancreatic, lung, breast"],
use: "Colon, breast, pancreatic cancers"
},
{
name: "Purine Antagonists", color: C.purple,
items: ["6-Mercaptopurine — ALL", "6-Thioguanine — AML", "Fludarabine — CLL", "Cladribine — Hairy cell leukemia"],
use: "Leukemias, Lymphomas"
},
];
groups.forEach((g, i) => {
const x = 0.25 + i * 3.18;
s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x, y: 1.88, w: 3.05, h: 3.2,
fill: { color: g.color }, line: { color: g.color }, rectRadius: 0.1
});
s.addText(g.name, {
x, y: 1.95, w: 3.05, h: 0.38, margin: 0,
fontSize: 11, bold: true, color: C.gold, fontFace: "Calibri", align: "center"
});
g.items.forEach((item, j) => {
s.addText("▸ " + item, {
x: x + 0.15, y: 2.38 + j * 0.52, w: 2.75, h: 0.48, margin: 0,
fontSize: 9, color: C.white, fontFace: "Calibri", wrap: true
});
});
s.addShape(pres.shapes.RECTANGLE, {
x, y: 4.72, w: 3.05, h: 0.02,
fill: { color: C.gold }, line: { color: C.gold }
});
s.addText("Use: " + g.use, {
x: x + 0.1, y: 4.76, w: 2.85, h: 0.25,
fontSize: 8, color: C.mid, fontFace: "Calibri", italic: true
});
});
}
// ─── SLIDE 9 — CLASS III NATURAL PRODUCTS ────────────────────────────────────
{
const s = pres.addSlide();
slideHeader(s, "Class III — Natural Product Drugs", "Vinca Alkaloids | Taxanes | Topo Inhibitors | Antitumor Antibiotics");
footerBar(s);
const groups = [
{
name: "Vinca Alkaloids\n(M phase)", color: C.navy, x: 0.2, y: 1.1,
items: ["Vinblastine — Hodgkin lymphoma, breast", "Vincristine — ALL, lymphoma", "Vinorelbine — NSCLC"],
mech: "↓ Tubulin polymerization → mitotic arrest in metaphase"
},
{
name: "Taxanes\n(M phase)", color: C.teal, x: 5.1, y: 1.1,
items: ["Paclitaxel — ovarian, breast, lung", "Docetaxel — breast, NSCLC, prostate"],
mech: "Stabilize microtubules → prevent depolymerization"
},
{
name: "Topo I Inhibitors\n(Camptothecins)", color: C.steel, x: 0.2, y: 3.1,
items: ["Irinotecan — CRC (FOLFIRI regimen)", "Topotecan — ovarian, SCLC"],
mech: "Irinotecan prodrug → SN-38 (1000× more potent)"
},
{
name: "Antitumor Antibiotics\n(Streptomyces)", color: C.purple, x: 5.1, y: 3.1,
items: ["Doxorubicin — breast, lymphoma, sarcoma", "Bleomycin — Hodgkin, germ cell → pulm. fibrosis", "Mitomycin C — GI cancers"],
mech: "DNA intercalation, Topo II inhibition, free radicals"
},
];
groups.forEach(g => {
s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x: g.x, y: g.y, w: 4.7, h: 1.85,
fill: { color: g.color }, line: { color: g.color }, rectRadius: 0.1,
shadow: { type: "outer", color: "000000", blur: 5, offset: 2, angle: 135, opacity: 0.12 }
});
s.addText(g.name, {
x: g.x + 0.1, y: g.y + 0.05, w: 4.5, h: 0.5, margin: 0,
fontSize: 11, bold: true, color: C.gold, fontFace: "Calibri"
});
s.addText("⚙️ " + g.mech, {
x: g.x + 0.1, y: g.y + 0.55, w: 4.5, h: 0.35, margin: 0,
fontSize: 8.5, color: C.mid, fontFace: "Calibri", italic: true, wrap: true
});
g.items.forEach((item, j) => {
s.addText("▸ " + item, {
x: g.x + 0.15, y: g.y + 0.92 + j * 0.28, w: 4.4, h: 0.28, margin: 0,
fontSize: 9, color: C.white, fontFace: "Calibri"
});
});
});
}
// ─── SLIDE 10 — CLASS IV HORMONAL ────────────────────────────────────────────
{
const s = pres.addSlide();
slideHeader(s, "Class IV — Hormonal Agents", "Hormone-sensitive Cancers: Breast & Prostate");
footerBar(s);
const table = [
["Drug / Class", "Mechanism", "Key Use"],
["Tamoxifen", "ER antagonist (SERM)", "Breast cancer (ER+)"],
["Fulvestrant", "ER degrader", "ER+ breast cancer"],
["Letrozole / Anastrozole", "Aromatase inhibitor → ↓ estrogen", "Postmenopausal breast cancer"],
["Leuprolide", "GnRH agonist → ↓ LH/FSH → ↓ androgens", "Prostate cancer"],
["Flutamide / Enzalutamide", "Androgen receptor blocker", "Prostate cancer"],
["Prednisone / Dexamethasone", "Lympholytic corticosteroid", "Lymphoma, leukemia, myeloma"],
];
const colWidths = [2.8, 4.0, 2.8];
const rowHeight = 0.52;
const startY = 1.1;
const startX = 0.22;
table.forEach((row, ri) => {
row.forEach((cell, ci) => {
const x = startX + colWidths.slice(0, ci).reduce((a, b) => a + b, 0) + ci * 0.05;
const y = startY + ri * rowHeight;
const isHeader = ri === 0;
s.addShape(pres.shapes.RECTANGLE, {
x, y, w: colWidths[ci], h: rowHeight,
fill: { color: isHeader ? C.navy : (ri % 2 === 0 ? "EFF4F9" : C.white) },
line: { color: C.mid }
});
s.addText(cell, {
x, y, w: colWidths[ci], h: rowHeight, margin: 5,
fontSize: isHeader ? 11 : 10,
bold: isHeader || ci === 0,
color: isHeader ? C.white : (ci === 0 ? C.navy : C.gray),
fontFace: "Calibri", valign: "middle",
align: isHeader ? "center" : "left", wrap: true
});
});
});
s.addText("💡 Hormonal therapy blocks hormone-dependent signaling that drives tumor growth in breast and prostate cancers.", {
x: 0.22, y: 4.9, w: 9.5, h: 0.4,
fontSize: 10, color: C.navy, fontFace: "Calibri",
fill: { color: "E8F4FD" }, italic: true
});
}
// ─── SLIDE 11 — CLASS V TARGETED ─────────────────────────────────────────────
{
const s = pres.addSlide();
slideHeader(s, "Class V — Targeted & Biological Agents", "Monoclonal Antibodies | TKIs | ADCs");
footerBar(s);
// Monoclonal Abs
s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x: 0.2, y: 1.05, w: 4.75, h: 2.0,
fill: { color: C.navy }, line: { color: C.navy }, rectRadius: 0.1
});
s.addText("🔬 Monoclonal Antibodies", {
x: 0.3, y: 1.08, w: 4.5, h: 0.38, margin: 0,
fontSize: 12, bold: true, color: C.gold, fontFace: "Calibri"
});
[
"Trastuzumab — HER2 | Breast cancer",
"Rituximab — CD20 | B-cell lymphoma",
"Cetuximab — EGFR | CRC, head/neck",
"Bevacizumab — VEGF-A | CRC, NSCLC, GBM",
"Ramucirumab — VEGFR2 | Gastric, NSCLC",
].forEach((item, i) => {
s.addText("▸ " + item, {
x: 0.35, y: 1.5 + i * 0.3, w: 4.5, h: 0.3, margin: 0,
fontSize: 9.5, color: C.white, fontFace: "Calibri"
});
});
// TKIs
s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x: 5.1, y: 1.05, w: 4.75, h: 2.0,
fill: { color: C.steel }, line: { color: C.steel }, rectRadius: 0.1
});
s.addText("🎯 Tyrosine Kinase Inhibitors (TKIs)", {
x: 5.2, y: 1.08, w: 4.5, h: 0.38, margin: 0,
fontSize: 12, bold: true, color: C.gold, fontFace: "Calibri"
});
[
"Imatinib — BCR-ABL, c-kit | CML, GIST",
"Erlotinib / Gefitinib — EGFR | NSCLC",
"Sorafenib — VEGFR2/3, Raf | RCC, HCC",
"Sunitinib — VEGFR, PDGFR | RCC, GIST",
"Pazopanib — VEGFR, PDGFR | RCC",
].forEach((item, i) => {
s.addText("▸ " + item, {
x: 5.2, y: 1.5 + i * 0.3, w: 4.5, h: 0.3, margin: 0,
fontSize: 9.5, color: C.white, fontFace: "Calibri"
});
});
// ADC + VEGF note
s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x: 0.2, y: 3.18, w: 9.65, h: 0.92,
fill: { color: C.purple }, line: { color: C.purple }, rectRadius: 0.1
});
s.addText("💉 Antibody-Drug Conjugate (ADC):", {
x: 0.3, y: 3.22, w: 4.5, h: 0.35, margin: 0,
fontSize: 11, bold: true, color: C.gold, fontFace: "Calibri"
});
s.addText("Trastuzumab-Deruxtecan — HER2-expressing tumors | Deruxtecan: Topo I inhibitor 10× more potent than SN-38 (Katzung 16e)", {
x: 0.3, y: 3.6, w: 9.3, h: 0.42, margin: 0,
fontSize: 9.5, color: C.white, fontFace: "Calibri"
});
s.addText("⚠️ Anti-VEGF agents (Bevacizumab, Sorafenib, Sunitinib): Risk of HTN, thromboembolism, GI perforation, poor wound healing. Metabolised by CYP3A4.", {
x: 0.2, y: 4.2, w: 9.65, h: 0.42,
fontSize: 8.5, color: C.red, fontFace: "Calibri", bold: true
});
}
// ─── SLIDE 12 — CLASS VI IMMUNOTHERAPY ───────────────────────────────────────
{
const s = pres.addSlide();
slideHeader(s, "Class VI — Immunotherapy", "Checkpoint Inhibitors | CAR-T | Cytokines");
footerBar(s);
const cards = [
{ icon: "🔓", title: "PD-1 / PD-L1\nInhibitors", color: C.navy,
items: ["Pembrolizumab (Keytruda)", "Nivolumab (Opdivo)", "Atezolizumab (anti-PD-L1)"],
mech: "Block PD-1/PD-L1 interaction → restore T-cell cytotoxic activity",
use: "Melanoma, NSCLC, bladder, HNSCC" },
{ icon: "🚧", title: "CTLA-4\nInhibitors", color: C.teal,
items: ["Ipilimumab (Yervoy)"],
mech: "Remove CTLA-4 inhibitory brake → enhance T-cell priming",
use: "Melanoma (± nivolumab combination)" },
{ icon: "🧬", title: "CAR-T Cell\nTherapy", color: C.purple,
items: ["Tisagenlecleucel (anti-CD19)", "Axicabtagene ciloleucel"],
mech: "Engineered T cells with chimeric antigen receptor targeting tumor antigens",
use: "Relapsed/refractory ALL, B-cell lymphoma" },
{ icon: "⚡", title: "Cytokines &\nOther", color: C.steel,
items: ["IL-2 (Aldesleukin)", "Interferon-α (IFN-α)"],
mech: "Stimulate proliferation of T cells and NK cells",
use: "RCC, melanoma, hairy cell leukemia" },
];
cards.forEach((c, i) => {
const x = 0.2 + (i % 2) * 4.9;
const y = 1.08 + Math.floor(i / 2) * 2.15;
s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x, y, w: 4.65, h: 2.0,
fill: { color: c.color }, line: { color: c.color }, rectRadius: 0.1,
shadow: { type: "outer", color: "000000", blur: 5, offset: 2, angle: 135, opacity: 0.12 }
});
s.addText(c.icon + " " + c.title, {
x: x + 0.1, y: y + 0.05, w: 4.4, h: 0.5, margin: 0,
fontSize: 11, bold: true, color: C.gold, fontFace: "Calibri"
});
s.addText("⚙️ " + c.mech, {
x: x + 0.1, y: y + 0.55, w: 4.4, h: 0.35, margin: 0,
fontSize: 8.5, color: C.mid, fontFace: "Calibri", italic: true, wrap: true
});
c.items.forEach((item, j) => {
s.addText("▸ " + item, {
x: x + 0.15, y: y + 0.92 + j * 0.26, w: 4.3, h: 0.26, margin: 0,
fontSize: 9, color: C.white, fontFace: "Calibri"
});
});
s.addText("Use: " + c.use, {
x: x + 0.1, y: y + 1.7, w: 4.4, h: 0.26, margin: 0,
fontSize: 8.5, color: C.gold, fontFace: "Calibri", italic: true
});
});
}
// ─── SLIDE 13 — CLASS VII + CELL CYCLE ───────────────────────────────────────
{
const s = pres.addSlide();
slideHeader(s, "Class VII — Miscellaneous | Cell Cycle Specificity", "");
footerBar(s);
// Misc table
const misc = [
["Drug", "Mechanism", "Use"],
["Hydroxyurea", "Inhibits ribonucleotide reductase (S phase)", "CML, sickle cell"],
["L-Asparaginase", "Depletes asparagine → ↓ protein synthesis", "ALL"],
["Procarbazine", "Alkylating + MAOI activity", "Hodgkin lymphoma (MOPP)"],
["Thalidomide /\nLenalidomide", "Antiangiogenic + immunomodulatory", "Multiple myeloma"],
];
misc.forEach((row, ri) => {
row.forEach((cell, ci) => {
const colW = [2.2, 4.5, 2.7];
const x = 0.2 + colW.slice(0, ci).reduce((a, b) => a + b, 0) + ci * 0.05;
const y = 1.05 + ri * 0.5;
s.addShape(pres.shapes.RECTANGLE, {
x, y, w: colW[ci], h: 0.5,
fill: { color: ri === 0 ? C.navy : (ri % 2 === 0 ? "EFF4F9" : C.white) },
line: { color: C.mid }
});
s.addText(cell, {
x, y, w: colW[ci], h: 0.5, margin: 4,
fontSize: ri === 0 ? 11 : 9.5,
bold: ri === 0 || ci === 0,
color: ri === 0 ? C.white : (ci === 0 ? C.navy : C.gray),
fontFace: "Calibri", valign: "middle", wrap: true
});
});
});
// Cell cycle chart
s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x: 0.2, y: 3.6, w: 9.65, h: 1.6,
fill: { color: C.navy }, line: { color: C.navy }, rectRadius: 0.1
});
s.addText("Cell Cycle Phase Specificity Summary", {
x: 0.3, y: 3.64, w: 9.4, h: 0.35, margin: 0,
fontSize: 12, bold: true, color: C.gold, fontFace: "Calibri", align: "center"
});
const phases = [
{ phase: "S Phase", drugs: "Antimetabolites\nHydroxyurea\nCamptothecins", color: C.teal },
{ phase: "M Phase", drugs: "Vinca Alkaloids\nTaxanes", color: C.steel },
{ phase: "G2 / M", drugs: "Bleomycin\nEtoposide", color: C.purple },
{ phase: "Non-Specific", drugs: "Alkylating Agents\nAnthracyclines\nHormonal agents", color: C.green },
];
phases.forEach((p, i) => {
const x = 0.35 + i * 2.37;
s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x, y: 4.02, w: 2.2, h: 1.1,
fill: { color: p.color }, line: { color: p.color }, rectRadius: 0.08
});
s.addText(p.phase, {
x, y: 4.05, w: 2.2, h: 0.33, margin: 0,
fontSize: 10, bold: true, color: C.gold, fontFace: "Calibri", align: "center"
});
s.addText(p.drugs, {
x, y: 4.38, w: 2.2, h: 0.72, margin: 0,
fontSize: 8.5, color: C.white, fontFace: "Calibri", align: "center", wrap: true
});
});
}
// ─── SLIDE 14 — SUMMARY ──────────────────────────────────────────────────────
{
const s = pres.addSlide();
s.background = { color: C.navy };
s.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 0, w: 10, h: 0.07,
fill: { color: C.gold }, line: { color: C.gold }
});
s.addShape(pres.shapes.RECTANGLE, {
x: 0, y: 5.555, w: 10, h: 0.07,
fill: { color: C.gold }, line: { color: C.gold }
});
s.addText("Key Takeaways", {
x: 0.5, y: 0.15, w: 9, h: 0.6,
fontSize: 28, bold: true, color: C.gold, fontFace: "Calibri", align: "center"
});
const points = [
["🔬 Cancer", "Uncontrolled autonomous cell proliferation escaping normal growth regulation; classified as carcinoma, sarcoma, leukemia, lymphoma, myeloma."],
["💊 Treatment", "Surgery · Radiation · Chemotherapy · Targeted therapy · Immunotherapy · Hormonal therapy — often combined for best outcomes."],
["🧪 Alkylating (I)", "Cell cycle non-specific; cross-link DNA. Cisplatin, Cyclophosphamide, Temozolomide."],
["🔬 Antimetabolites (II)", "S-phase specific; structural analogs. MTX (DHFR inhibitor), 5-FU, Gemcitabine, Cladribine."],
["🌿 Natural Products (III)", "Vinca alkaloids (M phase) · Taxanes (M phase) · Topo inhibitors · Antitumor antibiotics (Doxorubicin → cardiotoxicity)."],
["⚗️ Hormonal (IV)", "ER antagonists, aromatase inhibitors, GnRH agonists, androgen blockers — breast & prostate cancer."],
["🎯 Targeted/Immuno (V-VI)", "Monoclonal Abs (Trastuzumab, Bevacizumab), TKIs (Imatinib, Sorafenib), Checkpoint inhibitors (Pembrolizumab), CAR-T."],
];
points.forEach((p, i) => {
const col = i % 2;
const row = Math.floor(i / 2);
const x = 0.25 + col * 5.0;
const y = 0.88 + row * 1.1;
s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x, y, w: 4.75, h: 1.0,
fill: { color: "1A2E5A" }, line: { color: C.teal }, rectRadius: 0.08
});
s.addText([
{ text: p[0] + " ", options: { bold: true, color: C.gold, fontSize: 10 } },
{ text: p[1], options: { color: C.mid, fontSize: 9 } }
], {
x: x + 0.12, y, w: 4.5, h: 1.0, margin: 6,
fontFace: "Calibri", valign: "middle", wrap: true
});
});
s.addText("Orris Medical Education | Based on Katzung's Pharmacology 16e & Goldman-Cecil Medicine", {
x: 0.5, y: 5.3, w: 9, h: 0.25,
fontSize: 8.5, color: C.gray, fontFace: "Calibri", align: "center"
});
}
// ─── SAVE ─────────────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/cancer-presentation/Cancer_Anticancer_Drugs.pptx" })
.then(() => console.log("✅ Saved: Cancer_Anticancer_Drugs.pptx"))
.catch(e => { console.error("❌ Error:", e); process.exit(1); });