And merge both files in 1 Can you put the questions at the end. And also I’ve got an exam I don’t know anything. Explain everything in detail in simple words like you’re teaching it to a very dumb kid
python -m markitdown /home/daytona/workspace/attachments/bc4ecf77-407a-4c4e-b055-656141487890/Lecture_8_Oncology_DH_26.pptx 2>/dev/null
python -m markitdown /home/daytona/workspace/attachments/bc4ecf77-407a-4c4e-b055-656141487890/Lecture_9_Oncology_DH_26.pptx 2>/dev/null
python3 -c " from pptx import Presentation import sys prs = Presentation('/home/daytona/workspace/attachments/bc4ecf77-407a-4c4e-b055-656141487890/Lecture_8_Oncology_DH_26.pptx') for i, slide in enumerate(prs.slides): print(f'=== SLIDE {i+1} ===') for shape in slide.shapes: if shape.has_text_frame: for para in shape.text_frame.paragraphs: text = para.text.strip() if text: print(text) print() " 2>/dev/null
python3 -c " from pptx import Presentation import sys prs = Presentation('/home/daytona/workspace/attachments/bc4ecf77-407a-4c4e-b055-656141487890/Lecture_9_Oncology_DH_26.pptx') for i, slide in enumerate(prs.slides): print(f'=== SLIDE {i+1} ===') for shape in slide.shapes: if shape.has_text_frame: for para in shape.text_frame.paragraphs: text = para.text.strip() if text: print(text) print() " 2>/dev/null
pip install python-pptx --quiet 2>&1 | tail -3; python3 -c "from pptx import Presentation; print('ok')"
python3 << 'EOF' from pptx import Presentation for fname, label in [ ('/home/daytona/workspace/attachments/bc4ecf77-407a-4c4e-b055-656141487890/Lecture_8_Oncology_DH_26.pptx', 'L8'), ('/home/daytona/workspace/attachments/bc4ecf77-407a-4c4e-b055-656141487890/Lecture_9_Oncology_DH_26.pptx', 'L9'), ]: prs = Presentation(fname) print(f'\n\n========== {label} ==========') for i, slide in enumerate(prs.slides): print(f'\n--- Slide {i+1} ---') for shape in slide.shapes: if hasattr(shape, 'text_frame'): for para in shape.text_frame.paragraphs: t = para.text.strip() if t: print(t) EOF
mkdir -p /home/daytona/workspace/oncology-merged && ls /home/daytona/workspace/oncology-merged/
~/oncology-merged/build.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Oncology Lectures 8 & 9 – Complete Study Guide";
pres.author = "D. Hakimian";
// ─── THEME COLORS ───────────────────────────────────────────────
const BG = "0D1B2A"; // deep navy
const ACCENT = "1E88E5"; // bright blue
const ACCENT2 = "00BFA5"; // teal
const GOLD = "FFB300"; // amber
const WHITE = "FFFFFF";
const LTGRAY = "E3EAF4";
const MIDGRAY = "546E7A";
const DARK = "1A2940";
const RED = "EF5350";
const GREEN = "66BB6A";
const ORANGE = "FFA726";
// ─── HELPERS ────────────────────────────────────────────────────
function titleSlide(title, subtitle) {
const s = pres.addSlide();
// full dark background
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: BG } });
// left accent bar
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.18, h: 5.625, fill: { color: ACCENT } });
// bottom accent line
s.addShape(pres.ShapeType.rect, { x: 0, y: 5.25, w: 10, h: 0.08, fill: { color: ACCENT2 } });
s.addText(title, {
x: 0.5, y: 1.5, w: 9, h: 1.4,
fontSize: 40, bold: true, color: WHITE, align: "center",
fontFace: "Calibri"
});
if (subtitle) {
s.addText(subtitle, {
x: 0.5, y: 3.1, w: 9, h: 0.8,
fontSize: 20, color: ACCENT2, align: "center",
fontFace: "Calibri"
});
}
return s;
}
function sectionDivider(text, sub) {
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: DARK } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 2.45, w: 10, h: 0.1, fill: { color: ACCENT } });
s.addText(text, {
x: 0.5, y: 1.5, w: 9, h: 1.2,
fontSize: 36, bold: true, color: WHITE, align: "center", fontFace: "Calibri"
});
if (sub) {
s.addText(sub, {
x: 0.5, y: 3.0, w: 9, h: 0.7,
fontSize: 18, color: LTGRAY, align: "center", fontFace: "Calibri", italic: true
});
}
return s;
}
function contentSlide(title, bullets, opts = {}) {
const s = pres.addSlide();
const bg = opts.bg || "F5F8FF";
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: bg } });
// header bar
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.85, fill: { color: BG } });
// accent pip
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.18, h: 0.85, fill: { color: ACCENT } });
s.addText(title, {
x: 0.35, y: 0, w: 9.5, h: 0.85,
fontSize: 22, bold: true, color: WHITE, valign: "middle",
fontFace: "Calibri", margin: 0
});
// build rich text bullet array
const textArr = [];
bullets.forEach((b, i) => {
if (typeof b === "string") {
textArr.push({ text: b, options: { bullet: { type: "bullet" }, breakLine: i < bullets.length - 1, fontSize: opts.fontSize || 14, color: "1A2940", fontFace: "Calibri" } });
} else {
// { text, color, bold, sub }
textArr.push({ text: b.text, options: { bullet: b.sub ? false : { type: "bullet" }, indentLevel: b.sub ? 1 : 0, breakLine: i < bullets.length - 1, fontSize: b.fontSize || opts.fontSize || (b.sub ? 12 : 14), color: b.color || "1A2940", bold: b.bold || false, fontFace: "Calibri" } });
}
});
s.addText(textArr, {
x: 0.4, y: 0.95, w: 9.2, h: 4.55,
valign: "top", fontFace: "Calibri"
});
return s;
}
function twoColSlide(title, leftTitle, leftBullets, rightTitle, rightBullets) {
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: "F5F8FF" } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.85, fill: { color: BG } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.18, h: 0.85, fill: { color: ACCENT } });
s.addText(title, { x: 0.35, y: 0, w: 9.5, h: 0.85, fontSize: 22, bold: true, color: WHITE, valign: "middle", fontFace: "Calibri", margin: 0 });
// left column
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.0, w: 4.4, h: 0.38, fill: { color: ACCENT }, line: { type: "none" } });
s.addText(leftTitle, { x: 0.3, y: 1.0, w: 4.4, h: 0.38, fontSize: 13, bold: true, color: WHITE, align: "center", valign: "middle", fontFace: "Calibri", margin: 0 });
const leftArr = leftBullets.map((b, i) => ({ text: typeof b === "string" ? b : b.text, options: { bullet: { type: "bullet" }, breakLine: i < leftBullets.length - 1, fontSize: 12, color: "1A2940", fontFace: "Calibri" } }));
s.addText(leftArr, { x: 0.3, y: 1.42, w: 4.4, h: 4.0, valign: "top" });
// right column
s.addShape(pres.ShapeType.rect, { x: 5.2, y: 1.0, w: 4.4, h: 0.38, fill: { color: ACCENT2 }, line: { type: "none" } });
s.addText(rightTitle, { x: 5.2, y: 1.0, w: 4.4, h: 0.38, fontSize: 13, bold: true, color: WHITE, align: "center", valign: "middle", fontFace: "Calibri", margin: 0 });
const rightArr = rightBullets.map((b, i) => ({ text: typeof b === "string" ? b : b.text, options: { bullet: { type: "bullet" }, breakLine: i < rightBullets.length - 1, fontSize: 12, color: "1A2940", fontFace: "Calibri" } }));
s.addText(rightArr, { x: 5.2, y: 1.42, w: 4.4, h: 4.0, valign: "top" });
return s;
}
function caseSlide(title, fields) {
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: "F0F4FF" } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.82, fill: { color: DARK } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.18, h: 0.82, fill: { color: GOLD } });
s.addText(title, { x: 0.35, y: 0, w: 9.5, h: 0.82, fontSize: 20, bold: true, color: GOLD, valign: "middle", fontFace: "Calibri", margin: 0 });
let y = 0.95;
fields.forEach(f => {
const labelW = 1.9;
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: labelW, h: 0.42, fill: { color: ACCENT }, line: { type: "none" } });
s.addText(f.label, { x: 0.3, y, w: labelW, h: 0.42, fontSize: 11, bold: true, color: WHITE, valign: "middle", align: "center", fontFace: "Calibri", margin: 0 });
s.addText(f.value, { x: 2.35, y: y + 0.03, w: 7.4, h: 0.42, fontSize: 12, color: "1A2940", valign: "middle", fontFace: "Calibri" });
y += 0.5;
});
return s;
}
function qaSlide(qNum, question, answer) {
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: "0D1B2A" } });
// Q badge
s.addShape(pres.ShapeType.roundRect, { x: 0.35, y: 0.4, w: 0.65, h: 0.65, rectRadius: 0.12, fill: { color: GOLD }, line: { type: "none" } });
s.addText(`Q${qNum}`, { x: 0.35, y: 0.4, w: 0.65, h: 0.65, fontSize: 18, bold: true, color: DARK, align: "center", valign: "middle", fontFace: "Calibri", margin: 0 });
s.addText(question, { x: 1.1, y: 0.38, w: 8.6, h: 0.75, fontSize: 17, bold: true, color: WHITE, valign: "middle", fontFace: "Calibri" });
// Answer box
s.addShape(pres.ShapeType.roundRect, { x: 0.35, y: 1.35, w: 9.3, h: 4.0, rectRadius: 0.15, fill: { color: "172336" }, line: { color: ACCENT2, pt: 1.5 } });
s.addText(answer, { x: 0.55, y: 1.45, w: 8.9, h: 3.75, fontSize: 13, color: LTGRAY, valign: "top", fontFace: "Calibri", wrap: true });
return s;
}
// ════════════════════════════════════════════════════════════════
// COVER
// ════════════════════════════════════════════════════════════════
titleSlide("ONCOLOGY", "Lectures 8 & 9 | Complete Study Guide\nGenitourinary, Uterine & Systemic Cancers");
// ════════════════════════════════════════════════════════════════
// LECTURE 8 – GENITOURINARY & UTERINE CANCERS
// ════════════════════════════════════════════════════════════════
sectionDivider("LECTURE 8", "Genitourinary & Uterine Cancers");
// --- Epidemiology
contentSlide("Epidemiology: How Common Are These Cancers?", [
{ text: "Think of this as a league table – who gets diagnosed most often and who dies most often:", bold: true, color: MIDGRAY },
"Prostate cancer – ~1.47 million new cases/year (7th most common worldwide) | ~397,000 deaths",
"Bladder cancer – ~614,000 new cases (9th overall) | ~220,000 deaths | More common in men",
"Kidney cancer – ~435,000 new cases | ~156,000 deaths",
"Uterine cancer – ~420,000 new cases | ~98,000 deaths",
"Testicular cancer – ~72,000 new cases | ~9,100 deaths (young men, but very curable)",
"Penile cancer – ~37,700 new cases | rare but serious",
{ text: "Key takeaway: prostate & bladder are the big killers here; testicular is rare and very treatable.", bold: true, color: ACCENT }
]);
// --- Uterine cancer overview
contentSlide("Uterine Cancer – What Is It?", [
{ text: "The uterus has layers. Cancer can start in different layers → different types:", bold: true },
{ text: "Endometrial carcinoma (90–95% of cases) – starts in the inner lining (endometrium):", bold: true, color: ACCENT },
{ text: "Endometrioid – the most common, looks like normal endometrium gone rogue", sub: true },
{ text: "Serous – aggressive, looks like ovarian serous cancer", sub: true },
{ text: "Clear cell – aggressive, named for clear-looking cells under microscope", sub: true },
{ text: "Carcinosarcoma – mixed: starts as epithelial but also looks like connective tissue cancer", sub: true },
{ text: "Undifferentiated/Dedifferentiated – very aggressive; cells lost all specialisation", sub: true },
{ text: "Uterine sarcomas (rare, start in muscle/connective tissue):", bold: true, color: ACCENT2 },
{ text: "Leiomyosarcoma – muscle cancer (like a fibroid gone very bad)", sub: true },
{ text: "Endometrial stromal sarcoma – connective tissue cancer", sub: true },
{ text: "Simple rule: if it starts in the lining → carcinoma. If in the wall/muscle → sarcoma.", bold: true, color: GOLD }
]);
// --- Genetic mutations endometrial
contentSlide("Endometrial Cancer – Known Gene Mutations (The Old List)", [
{ text: "These are mutations scientists knew about first. Think of each gene as a brake or a gas pedal:", bold: true, color: MIDGRAY },
{ text: "PTEN – a tumour suppressor (brake). Loss of PTEN = no brakes → cells keep dividing", bold: false },
{ text: "PIK3CA / PIK3R1 – part of the PI3K pathway (gas pedal for growth). Mutation = stuck on.", bold: false },
{ text: "CTNNB1 – encodes β-catenin (Wnt pathway). Mutation activates survival & growth signals.", bold: false },
{ text: "KRAS – another growth gas pedal. Mutated KRAS = always on.", bold: false },
{ text: "TP53 – the guardian of the genome (brake). Loss → genomic chaos, aggressive tumour.", bold: false },
{ text: "dMMR – mismatch repair deficiency. Like a spell-checker turned off → lots of mutations accumulate. GREAT target for immunotherapy (PD-1 inhibitors).", bold: false },
{ text: "ERBB2 (HER2) – receptor on cell surface; amplified HER2 = hyper-active growth signal. Target with anti-HER2 drugs (e.g., trastuzumab).", bold: false },
{ text: "Memory trick: PTEN, TP53 = brakes. KRAS, PIK3CA, HER2 = gas pedals. dMMR = broken spell-checker.", bold: true, color: GOLD }
]);
// --- ARID1A SMARCA
contentSlide("Endometrial Cancer – New Mutations: ARID1A/B & SMARCA2/A4", [
{ text: "What is chromatin remodelling? Imagine DNA wrapped tightly around a spool. Cells need to unwind sections of DNA to read genes.", bold: true, color: ACCENT },
"The SWI/SNF complex (containing ARID1A/B and SMARCA2/A4) is the machine that does this unwinding.",
"This complex normally SUPPRESSES tumour formation by controlling which genes get read.",
{ text: "When ARID1A/B or SMARCA2/A4 are mutated → the complex breaks → suppression is lost → tumour genes get read all the time.", bold: false, color: RED },
{ text: "Clinical relevance: these mutations make tumours sensitive to certain targeted drugs (PARP inhibitors, ATR inhibitors).", bold: true, color: GREEN }
]);
// --- POLE
contentSlide("Endometrial Cancer – New Mutations: POLE", [
{ text: "POLE = DNA Polymerase Epsilon. Its job is to copy DNA AND proofread the copy.", bold: true, color: ACCENT },
"When the proofreading domain is mutated → the copying machine has no spell-check.",
"Result: ULTRA-high mutation burden – the tumour is riddled with mutations (thousands!).",
{ text: "Why is this GOOD news?", bold: true, color: GREEN },
{ text: "All those mutations = lots of neoantigens (new weird proteins on the cell surface).", sub: true },
{ text: "The immune system recognises these weird proteins and attacks the tumour.", sub: true },
{ text: "PD-1/PD-L1 checkpoint inhibitors work extremely well in POLE-mutated tumours.", sub: true },
{ text: "Analogy: POLE mutation = a factory that makes defective products wearing wrong uniforms. Your immune security guards (T-cells) easily spot and destroy them.", bold: true, color: GOLD }
]);
// --- PPP2R1A
contentSlide("Endometrial Cancer – New Mutations: PPP2R1A", [
{ text: "PPP2R1A is a subunit of the Protein Phosphatase 2A (PP2A) complex.", bold: true, color: ACCENT },
"PP2A's job: act as a brake on the cell cycle (stop cells from dividing too fast).",
"PP2A also triggers apoptosis (programmed cell death) when cells are damaged.",
{ text: "When PPP2R1A is mutated → PP2A doesn't work → brakes fail:", bold: false, color: RED },
{ text: "Cell cycle spins out of control → constant uncontrolled proliferation.", sub: true },
{ text: "DNA damage is no longer fixed → mutations pile up.", sub: true },
{ text: "Because mutations pile up, the tumour over-expresses PD-L1 → responds well to checkpoint immunotherapy.", sub: true },
{ text: "Key clinical point: PPP2R1A-mutated tumours are more immunotherapy-responsive because of their mutation accumulation.", bold: true, color: GOLD }
]);
// --- FBXW7
contentSlide("Endometrial Cancer – New Mutations: FBXW7", [
{ text: "FBXW7 is the 'label maker' for destruction – it tags pro-survival oncoproteins so the cell can destroy them.", bold: true, color: ACCENT },
"Proteins it normally destroys: Cyclin E1 (cell cycle driver), c-MYC (growth promoter), Notch1 (survival signal).",
{ text: "When FBXW7 is mutated → label maker is broken → oncoproteins pile up → cancer cells survive and grow unchecked.", bold: false, color: RED },
{ text: "Consequences of FBXW7 mutation:", bold: true },
{ text: "Chemotherapy resistance (cell survives DNA damage)", sub: true },
{ text: "Potential immunotherapy resistance (PD-L1 affected)", sub: true },
{ text: "Consider mTOR inhibitors (the pathway is now over-active)", sub: true },
{ text: "High-risk patient – needs aggressive or alternative treatment strategy.", sub: true },
{ text: "Analogy: FBXW7 is a recycling bin. If broken, the house fills with junk (oncoproteins) and becomes unliveable.", bold: true, color: GOLD }
]);
// --- NSMP
contentSlide("Endometrial Cancer – NSMP (No Specific Molecular Profile)", [
{ text: "NSMP = No Specific Molecular Profile. This is the MOST COMMON subtype (~45% of endometrial cancers).", bold: true, color: ACCENT },
{ text: "Characteristics:", bold: true },
{ text: "Copy-number LOW (genome is relatively stable)", sub: true },
{ text: "TP53 wild-type (normal p53 = still has functional DNA guardian)", sub: true },
{ text: "Usually ESTROGEN-DRIVEN – too much oestrogen makes the lining grow too much.", sub: true },
{ text: "Treatment strategy (target the hormone driving it):", bold: true, color: GREEN },
{ text: "Post-menopause → Aromatase inhibitors (block oestrogen production by fat cells)", sub: true },
{ text: "Pre-menopause → ER/PR receptor blockers (block oestrogen from binding the receptor)", sub: true },
{ text: "Analogy: NSMP tumour is like a plant that only grows when you water it with oestrogen. Stop the water → plant dies.", bold: true, color: GOLD }
]);
// --- Urothelial cancer
contentSlide("Urothelial Cancer – What Is It?", [
{ text: "Urothelial = cancer of the urothelium (the lining of the bladder, renal pelvis, and ureter).", bold: true, color: ACCENT },
"Most cases arise in the bladder; some in the kidney drainage system.",
{ text: "Two biological classes – this is the most important distinction:", bold: true },
{ text: "NMIBC (Non-Muscle-Invasive Bladder Cancer) – cancer stays in the lining, has NOT eaten into the muscle wall. More manageable.", sub: true, color: GREEN },
{ text: "MIBC (Muscle-Invasive / Metastatic Bladder Cancer) – cancer has invaded the muscle. Much more dangerous.", sub: true, color: RED },
{ text: "Key mutations:", bold: true },
{ text: "FGFR3 – fibroblast growth factor receptor (gas pedal). Targetable with FGFR inhibitors.", sub: true },
{ text: "TP53 / RB1 – tumour suppressors (brakes). Loss = aggressive disease.", sub: true },
{ text: "ERBB2/HER2 – growth receptor amplification.", sub: true },
{ text: "TERT promoter – keeps telomeres long → cells become immortal.", sub: true },
{ text: "CDKN2A – cell cycle brake. Loss = faster proliferation.", sub: true },
{ text: "FIRST LINE treatment = BCG (Bacillus Calmette-Guérin) – a live bacterial vaccine injected into the bladder that teaches the immune system to attack tumour cells.", bold: true, color: GOLD }
]);
// --- Nectin-4
contentSlide("Urothelial Cancer – Nectin-4: A Smart Drug Target", [
{ text: "Nectin-4 is a surface protein (sits on the outside of cells) that helps cells stick together.", bold: true, color: ACCENT },
"In bladder cancer (and breast, pancreatic, ovarian, NSCLC), Nectin-4 is massively overexpressed.",
"This overexpression drives: tumour proliferation, cell migration (spreading), angiogenesis (new blood vessels to feed the tumour).",
{ text: "Why is this a great drug target?", bold: true, color: GREEN },
{ text: "It's on the surface → easy to reach with antibody-based drugs.", sub: true },
{ text: "It's overexpressed in tumour cells but low in normal cells → selective killing.", sub: true },
{ text: "Drug: Enfortumab vedotin – an antibody-drug conjugate (ADC). The antibody homes to Nectin-4; the attached toxin kills the cell from inside.", sub: true },
{ text: "Think of it as a guided missile: Nectin-4 is the address label; the toxin is the warhead.", bold: true, color: GOLD }
]);
// --- RCC
contentSlide("Renal Cell Carcinoma (Kidney Cancer) – Subtypes & Drivers", [
{ text: "Three main subtypes based on how they look under a microscope:", bold: true, color: ACCENT },
{ text: "Clear Cell RCC (~70-75% of cases):", bold: true },
{ text: "Driver: VHL gene loss (tumour suppressor). VHL normally tags HIF-α for destruction.", sub: true },
{ text: "VHL loss → HIF-α builds up → turns on VEGF (vascular growth factor) → tumour grows its own blood supply.", sub: true },
{ text: "Treatment: VEGF inhibitors (e.g., sunitinib, bevacizumab) + PD-1 inhibitors.", sub: true, color: GREEN },
{ text: "Chromophobe RCC:", bold: true },
{ text: "Driver: mitochondrial mutations → mitochondria are damaged → no apoptosis → cells immortal.", sub: true },
{ text: "Papillary RCC:", bold: true },
{ text: "Driver: MET mutation (receptor tyrosine kinase). Targetable with MET inhibitors.", sub: true },
{ text: "Clinical memory: VHL → clear cell → VEGF inhibitors. MET → papillary. Mitochondria → chromophobe.", bold: true, color: GOLD }
]);
// --- Prostate cancer
contentSlide("Prostate Cancer – Overview", [
{ text: "Almost always adenocarcinoma (cancer of gland cells). Almost always HORMONE-DRIVEN.", bold: true, color: ACCENT },
"Androgens (testosterone, DHT) bind to the Androgen Receptor (AR) → tell prostate cells to grow.",
{ text: "Treatment is AR-status dependent:", bold: true },
{ text: "ADT (Androgen Deprivation Therapy) – reduce testosterone to starve the tumour. Works if AR is normal.", sub: true },
{ text: "If AR is MUTATED → ADT doesn't work → need more aggressive chemo.", sub: true },
{ text: "Key molecular tests and their consequences:", bold: true, color: ACCENT2 },
{ text: "BRCA1/2 mutation → DNA repair defect → PARP inhibitors (olaparib) create 'synthetic lethality' → cancer cell self-destructs.", sub: true },
{ text: "MSI (microsatellite instability) status → if MSI-High → PD-1 checkpoint inhibitors work.", sub: true },
{ text: "AR mutation status → determines if hormone therapy will work.", sub: true },
{ text: "Local disease → surgery (radical prostatectomy). Metastatic → ADT first, then targeted therapy based on biomarkers.", bold: true, color: GOLD }
]);
// --- Testicular GCT
contentSlide("Testicular Germ Cell Tumours (TGCT)", [
{ text: "Most curable solid metastatic cancer that exists. Even when it has spread.", bold: true, color: GREEN },
"Affects mostly young men (20–35 years old).",
{ text: "Two subtypes:", bold: true, color: ACCENT },
{ text: "Seminoma – slow-growing, very sensitive to radiation.", sub: true },
{ text: "Non-seminoma (NSGCT) – faster growing but still very platinum-sensitive.", sub: true },
{ text: "Treatment sequence:", bold: true },
{ text: "1st: Radical inguinal orchiectomy (remove the affected testicle through the groin – NOT through the scrotum to avoid lymphatic spread).", sub: true },
{ text: "ALWAYS counsel sperm banking before surgery/chemo (preserve fertility).", sub: true, color: GOLD },
{ text: "If recurrence: chemotherapy (BEP – bleomycin, etoposide, cisplatin) + radiotherapy.", sub: true },
"No clear molecular profiling is used to guide timing – staging and surveillance are the key tools.",
{ text: "Why so curable? Germ cells are exquisitely sensitive to platinum-based chemotherapy.", bold: true, color: GOLD }
]);
// --- Penile cancer
contentSlide("Penile Cancer", [
{ text: "Rare but important. Mostly driven by HPV (Human Papillomavirus), subtypes 16 and 18.", bold: true, color: ACCENT },
"HPV integrates into the cell's DNA and inactivates tumour suppressors (p53, Rb).",
{ text: "Non-HPV risk factors:", bold: true },
{ text: "Phimosis (foreskin cannot retract → chronic inflammation → DNA damage)", sub: true },
{ text: "Chronic inflammation (same mechanism)", sub: true },
{ text: "Smoking (carcinogens in tobacco damage DNA)", sub: true },
{ text: "Treatment:", bold: true, color: GREEN },
{ text: "Surgery (resection) + Radiotherapy for localised disease.", sub: true },
{ text: "Because HPV creates a high mutational burden → PD-1 checkpoint inhibitors are effective (immune system recognises mutated cells).", sub: true },
{ text: "Prevention: HPV vaccination (subtypes 16 & 18) significantly reduces risk.", bold: true, color: GOLD }
]);
// --- Case studies Lec 8
sectionDivider("LECTURE 8 – CASE STUDIES", "Apply what you've learned");
caseSlide("Case 1: 63-year-old Woman – Uterine Cancer", [
{ label: "Presentation", value: "Post-menopausal bleeding (blood after menopause = red flag!), fatigue" },
{ label: "Imaging", value: "TVUS → 14 mm endometrial thickening. MRI → deep myometrial invasion + pelvic involvement" },
{ label: "Molecular", value: "Loss of MSH2/MSH6 = dMMR/MSI-High. TP53 normal. ER/PR positive." },
{ label: "Diagnosis", value: "Stage IIIC1 Endometrioid Endometrial Carcinoma (spread to pelvic lymph nodes)" },
{ label: "Treatment", value: "Hysterectomy + bilateral salpingo-oophorectomy + chemotherapy + PD-1 inhibitors (because MSI-High → immunotherapy works!)" },
{ label: "Why PD-1?", value: "dMMR (MSH2/MSH6 loss) = lots of mutations → lots of neoantigens → immune can see tumour → checkpoint blockade releases immune brakes" }
]);
caseSlide("Case 2: 71-year-old Man – Bladder Cancer", [
{ label: "Presentation", value: "Painless gross hematuria (blood in urine with NO pain – classic bladder cancer sign)" },
{ label: "Imaging", value: "CT urogram → bladder wall mass → muscle-invasive disease confirmed" },
{ label: "Molecular", value: "FGFR3 mutation + TERT promoter mutation" },
{ label: "Diagnosis", value: "Muscle-Invasive Urothelial Carcinoma with metastatic recurrence" },
{ label: "Treatment", value: "Chemotherapy → Cystectomy (bladder removal) → FGFR inhibitor (erdafitinib) after metastasis" },
{ label: "Why FGFR inhibitor?", value: "FGFR3 is mutated → constitutively active → FGFR inhibitor turns it off. Used post-metastasis when surgery is no longer enough." }
]);
caseSlide("Case 3: 59-year-old Man – Kidney Cancer", [
{ label: "Presentation", value: "Hematuria, weight loss, hypertension (high BP because tumour compresses renal vasculature)" },
{ label: "Imaging", value: "CT abdomen → 8 cm renal mass + lung metastases" },
{ label: "Molecular", value: "VHL loss" },
{ label: "Diagnosis", value: "Metastatic Clear Cell Renal Cell Carcinoma" },
{ label: "Treatment", value: "PD-1 checkpoint inhibitor + VEGF inhibitor (combination)" },
{ label: "Why VEGF?", value: "VHL loss → HIF-α accumulates → VEGF overproduced → tumour builds its own blood supply. Block VEGF = starve the tumour." }
]);
caseSlide("Case 4: 67-year-old Man – Prostate Cancer", [
{ label: "Presentation", value: "Back pain (bone mets!), urinary hesitancy (tumour pressing on urethra)" },
{ label: "Imaging", value: "Bone scan → diffuse osseous metastases. MRI prostate → positive." },
{ label: "Molecular", value: "BRCA2 mutation + PTEN loss" },
{ label: "Diagnosis", value: "Metastatic castration-sensitive prostate adenocarcinoma" },
{ label: "Treatment", value: "ADT first → then PARP inhibitor (olaparib) after castration resistance develops" },
{ label: "Why PARP?", value: "BRCA2 mutation = broken DNA repair → PARP inhibitor stops the backup repair too → synthetic lethality → cancer cell cannot repair DNA → dies." }
]);
caseSlide("Case 5: 26-year-old Man – Testicular Cancer", [
{ label: "Presentation", value: "Painless testicular mass + back pain (retroperitoneal lymph node mets!)" },
{ label: "Imaging", value: "Ultrasound → heterogeneous testicular lesion. CT → retroperitoneal LN metastases." },
{ label: "Diagnosis", value: "Metastatic Non-Seminomatous Germ Cell Tumour (NSGCT)" },
{ label: "Treatment", value: "Radical inguinal orchiectomy + BEP chemotherapy" },
{ label: "Key point", value: "Even with retroperitoneal spread, cure is expected with platinum-based chemotherapy. Always bank sperm before treatment!" }
]);
// ════════════════════════════════════════════════════════════════
// LECTURE 9 – SYSTEMIC CANCERS
// ════════════════════════════════════════════════════════════════
sectionDivider("LECTURE 9", "Systemic Cancers: Leukemia, Lymphoma, Multiple Myeloma & More");
// --- Intro systemic
contentSlide("Systemic Cancers – What Makes Them Different?", [
{ text: "Solid tumour (e.g., lung cancer) = stays in one place first, then spreads.", bold: true, color: ACCENT },
{ text: "Systemic cancer = arises in blood/immune/lymph system → ALREADY everywhere from the start.", bold: true, color: RED },
"These cancer cells live in blood, bone marrow, and lymph nodes – organs that are distributed throughout the body.",
"Therefore treatment is ALWAYS systemic (whole-body) → chemotherapy, immunotherapy, targeted drugs.",
{ text: "The 4 main types:", bold: true, color: ACCENT2 },
{ text: "Leukemia – cancer of blood cell precursors (in bone marrow/blood)", sub: true },
{ text: "Lymphoma – cancer of mature lymphocytes (in lymph nodes/spleen)", sub: true },
{ text: "Multiple myeloma – cancer of plasma cells (antibody factories in bone marrow)", sub: true },
{ text: "Pancreatic cancer – included here because it is an endocrine organ (honorary systemic)", sub: true },
{ text: "Key incidence: Leukemia ~644k, NHL ~457k, Multiple Myeloma ~156k, Pancreatic ~511k cases/year.", bold: false, color: MIDGRAY }
]);
// --- Leukemia overview
contentSlide("Leukemia – The Four Types at a Glance", [
{ text: "Leukemia = cancer of white blood cell precursors. Two axes:", bold: true, color: ACCENT },
{ text: "Acute vs Chronic: How fast does it progress?", bold: true },
{ text: "Acute = cells are immature blasts that can't mature. Life-threatening quickly (weeks).", sub: true, color: RED },
{ text: "Chronic = cells mature but live too long. Progresses over months/years.", sub: true, color: ORANGE },
{ text: "Myeloid vs Lymphoid: Which cell line is affected?", bold: true },
{ text: "Myeloid = affects granulocytes, monocytes, red cells, platelets.", sub: true },
{ text: "Lymphoid = affects T and B lymphocytes.", sub: true },
{ text: "This gives us 4 types:", bold: true, color: ACCENT2 },
{ text: "AML – Acute Myeloid Leukemia (most common acute leukemia in adults)", sub: true },
{ text: "ALL – Acute Lymphoblastic Leukemia (most common childhood cancer)", sub: true },
{ text: "CML – Chronic Myeloid Leukemia (adults, BCR-ABL1 driven)", sub: true },
{ text: "CLL – Chronic Lymphocytic Leukemia (most common adult leukemia overall)", sub: true }
]);
// --- AML
contentSlide("Acute Myeloid Leukemia (AML)", [
{ text: "Most common ACUTE leukemia in adults. Median age 65–70 years.", bold: true, color: ACCENT },
{ text: "Risk factors:", bold: true },
{ text: "Radiation exposure (e.g., past radiotherapy)", sub: true },
{ text: "Benzene (industrial chemical solvent)", sub: true },
{ text: "Prior chemotherapy ('therapy-related AML')", sub: true },
{ text: "Myelodysplastic syndrome (pre-leukemia condition)", sub: true },
{ text: "Core concept: AML = immature myeloid blasts that pile up in bone marrow, crowding out normal blood cell production → anaemia, infections, bleeding.", bold: true },
{ text: "Key mutations (know these for your exam!):", bold: true, color: ACCENT2 },
{ text: "FLT3-ITD: tyrosine kinase stuck ON → poor prognosis → FLT3 inhibitors (midostaurin)", sub: true },
{ text: "NPM1: DNA management protein mutated → sensitive to chemo IF FLT3 is normal", sub: true },
{ text: "IDH1/IDH2: metabolic enzyme mutated → targetable with IDH inhibitors", sub: true },
{ text: "TP53: very poor prognosis → genome chaos → strong chemo needed", sub: true },
{ text: "PML-RARA: defines APL subtype → DIC risk → treat with ATRA + Arsenic trioxide", sub: true }
]);
// --- APL special
contentSlide("AML Special Subtype: APL & the PML-RARA Fusion", [
{ text: "APL = Acute Promyelocytic Leukemia. Defined by the PML-RARA translocation (chromosome 15-17 swap).", bold: true, color: ACCENT },
"This fusion protein blocks myeloid cells from maturing → blasts pile up.",
{ text: "DANGER: APL causes DIC (Disseminated Intravascular Coagulation):", bold: true, color: RED },
{ text: "The leukemia cells release clotting factors → clots form everywhere in blood vessels → uses up all clotting factors → then uncontrollable bleeding.", sub: true },
{ text: "DIC is LIFE-THREATENING. Treat with blood thinners (heparin) immediately.", sub: true, color: RED },
{ text: "Unique treatment – force the cells to grow up:", bold: true, color: GREEN },
{ text: "ATRA (All-Trans Retinoic Acid) – vitamin A derivative that forces blast cells to differentiate (mature) into normal neutrophils.", sub: true },
{ text: "Arsenic Trioxide (ATO) – also forces differentiation AND destroys the PML-RARA protein directly.", sub: true },
{ text: "APL was once the most lethal leukemia. Now it's one of the most CURABLE (~90% survival) with ATRA + ATO.", bold: true, color: GOLD }
]);
// --- ALL
contentSlide("Acute Lymphoblastic Leukemia (ALL)", [
{ text: "Most common cancer in CHILDREN. Peak age 2–5 years. Smaller adult peak.", bold: true, color: ACCENT },
"ALL = immature lymphoid blasts accumulate. B-ALL (B-cell precursors) is most common.",
{ text: "Key mutations:", bold: true, color: ACCENT2 },
{ text: "BCR-ABL1 fusion ('Philadelphia chromosome'): constitutive tyrosine kinase signalling → excellent prognosis with TKI (imatinib/dasatinib). Ironically good prognosis now despite being high-risk historically.", sub: true, color: GREEN },
{ text: "TEL-AML1 (ETV6-RUNX1) fusion: good prognosis. RUNX1 = differentiation master. Chemo + corticosteroids work well.", sub: true, color: GREEN },
{ text: "MLL rearrangements: histone modification gene lost → poor prognosis → Menin-fusion complex inhibitors.", sub: true, color: RED },
{ text: "NOTCH1 mutation: affects T-cell development. Good prognosis. Chemotherapy effective.", sub: true },
{ text: "Important: ALL can spread to the CNS! → always give intrathecal chemotherapy (injected directly into spinal fluid) as CNS prophylaxis.", bold: true, color: GOLD }
]);
// --- CML + CLL
twoColSlide("CML vs CLL – Chronic Leukemias",
"CML (Chronic Myeloid Leukemia)",
[
"Common adult leukemia in Western countries",
"Elderly patients",
"THE defining mutation: BCR-ABL1 fusion (Philadelphia chromosome t(9;22))",
"BCR-ABL1 = constitutively active tyrosine kinase → unstoppable proliferation",
"Treatment: TKI (imatinib – 'Gleevec') → one of oncology's greatest success stories",
"Also BCL-2 inhibitors (venetoclax)",
"Has 3 phases: chronic → accelerated → blast crisis (most dangerous)"
],
"CLL (Chronic Lymphocytic Leukemia)",
[
"MOST common adult leukemia overall",
"Elderly patients, often discovered incidentally",
"B-lymphocytes that live forever (anti-apoptotic) but can't fight infection properly",
"TP53 del17p = very bad prognosis",
"IGHV unmutated = higher risk",
"Treatment: BTK inhibitors (ibrutinib) + BCL-2 inhibitors (venetoclax)",
"Avoid DNA-damaging chemo if TP53 mutated (won't work!)",
"CAR-T cells + bone marrow transplant for aggressive/refractory cases"
]
);
// --- Lymphoma intro
contentSlide("Lymphoma – What Is It?", [
{ text: "Lymphoma = cancer of MATURE lymphocytes (white blood cells that already grew up).", bold: true, color: ACCENT },
"Unlike leukemia (which is in blood/bone marrow), lymphoma mainly lives in lymph nodes, spleen, and lymphatic tissue.",
"Classic presentation: painless swollen lymph nodes in neck, armpit, or groin.",
{ text: "Two major families:", bold: true, color: ACCENT2 },
{ text: "Hodgkin Lymphoma (HL) – defined by REED-STERNBERG CELLS", bold: true },
{ text: "Reed-Sternberg cells = giant, multinucleated B-cells that look like 'owl eyes' under the microscope. Their presence = HL.", sub: true },
{ text: "Non-Hodgkin Lymphoma (NHL) – no Reed-Sternberg cells", bold: true },
{ text: "NHL is an umbrella term for 60+ different lymphoma types.", sub: true },
{ text: "Can arise from B-cells (most common), T-cells, or NK cells.", sub: true },
{ text: "Memory trick: HL = Reed-Sternberg cells present. NHL = absent. HL is rarer but more uniform; NHL is common and diverse.", bold: true, color: GOLD }
]);
// --- Hodgkin
contentSlide("Hodgkin Lymphoma – Causes & Treatment", [
{ text: "Triggers:", bold: true, color: ACCENT },
{ text: "EBV (Epstein-Barr Virus) – the 'mono virus'. EBV can immortalise B-cells.", sub: true },
{ text: "HIV/immunosuppression – weakened immune system fails to control abnormal B-cells.", sub: true },
{ text: "Key mutations/pathways:", bold: true },
{ text: "JAK/STAT pathway activation → uncontrolled cell growth signal.", sub: true },
{ text: "NF-κB activation → anti-apoptotic survival signal.", sub: true },
{ text: "B2M loss → MHC-I not expressed → tumour becomes invisible to immune system.", sub: true },
{ text: "PD-L1 overexpression → tumour puts up 'don't kill me' flag → immune brakes engaged.", sub: true },
{ text: "Treatment:", bold: true, color: GREEN },
{ text: "Chemotherapy (ABVD regimen) + PD-1 checkpoint inhibitors (because PD-L1 is high). This combination works very well.", sub: true },
{ text: "If TP53 mutated → stem cell transplant required (chemo won't work properly).", sub: true },
{ text: "Hodgkin lymphoma has one of the BEST cure rates among lymphomas (~85–90% with modern treatment).", bold: true, color: GOLD }
]);
// --- NHL
contentSlide("Non-Hodgkin Lymphoma – Indolent vs Aggressive", [
{ text: "NHL = 60+ subtypes. Classified by growth speed:", bold: true, color: ACCENT },
{ text: "INDOLENT (slow-growing):", bold: true, color: GREEN },
{ text: "Most common: Follicular lymphoma", sub: true },
{ text: "Key feature: t(14;18) translocation → BCL2 gene placed next to immunoglobulin heavy chain promoter (which is ALWAYS on in B-cells).", sub: true },
{ text: "Result: BCL-2 protein massively overproduced → cells cannot die → they accumulate slowly.", sub: true },
{ text: "Low Ki-67 index (low proliferation rate). May not need immediate treatment – watch and wait.", sub: true },
{ text: "AGGRESSIVE (fast-growing):", bold: true, color: RED },
{ text: "Most common: Diffuse Large B-Cell Lymphoma (DLBCL)", sub: true },
{ text: "Key mutations: TP53 (aggressive growth), MYC (proliferation), BCL2 (anti-apoptosis), BCL6 (mutation driver)", sub: true },
{ text: "Double/triple hit: MYC + BCL2 + BCL6 all mutated = WORST prognosis. High Ki-67.", sub: true },
{ text: "Treatment: R-CHOP chemotherapy (cyclophosphamide, doxorubicin, vincristine, prednisone + rituximab). CAR-T for relapsed cases.", sub: true },
{ text: "BCL6 normally helps B-cells mutate antibodies – when permanently stuck on, it suppresses p53 and DNA repair.", bold: true, color: GOLD }
]);
// --- Multiple myeloma
contentSlide("Multiple Myeloma – Cancer of Antibody Factories", [
{ text: "Plasma cells normally make antibodies (immunoglobulins) to fight infection. In myeloma, a CLONAL plasma cell goes rogue and makes monoclonal antibody (M-protein) – useless junk antibody.", bold: true, color: ACCENT },
"These rogue plasma cells live in bone marrow and destroy it from within.",
{ text: "Classic presentation remembered by 'CRAB':", bold: true, color: GOLD },
{ text: "C = HyperCalcemia (bones dissolve → calcium floods blood → confusion, kidney stones)", sub: true, color: ORANGE },
{ text: "R = Renal failure (M-protein clogs kidney tubules)", sub: true, color: ORANGE },
{ text: "A = Anemia (bone marrow crowded → fewer red cells made)", sub: true, color: ORANGE },
{ text: "B = Bone lesions / pain (plasma cells eat bone → lytic lesions → fractures)", sub: true, color: ORANGE },
{ text: "Primary cytogenetics:", bold: true },
{ text: "Hyperdiploid (~45%): extra chromosome copies → generally slower, better prognosis.", sub: true, color: GREEN },
{ text: "Non-hyperdiploid (~40%): IGH translocations → oncogenes placed next to always-on B-cell promoter → more aggressive.", sub: true, color: RED }
]);
// --- Myeloma treatment
contentSlide("Multiple Myeloma – Mutations & Treatment", [
{ text: "Secondary somatic mutations (develop as disease progresses):", bold: true, color: ACCENT },
{ text: "BRAF, KRAS – growth signalling (gas pedals stuck on)", sub: true },
{ text: "TP53 – genome guardian lost → very poor prognosis", sub: true },
{ text: "DIS3 & FAM46C – RNA translation and protein stability genes", sub: true },
{ text: "MYC – proliferation driver", sub: true },
{ text: "Treatments (often used in combination):", bold: true, color: GREEN },
{ text: "Proteasome inhibitors (Bortezomib): block the cell's garbage disposal system → misfolded proteins pile up → plasma cell collapses under its own junk.", sub: true },
{ text: "Lenalidomide: multi-function drug – binds ubiquitin complex, activates T-cells, boosts NK cells, blocks IL-6 (myeloma's survival signal), blocks VEGF (anti-angiogenesis).", sub: true },
{ text: "CAR-T cells: engineered T-cells programmed to kill BCMA-expressing myeloma cells.", sub: true },
{ text: "Autologous stem cell transplant (ASCT): high-dose chemo wipes out bone marrow, then patient's own stem cells are reinfused.", sub: true },
{ text: "Lenalidomide = the Swiss Army knife of myeloma treatment. It does everything.", bold: true, color: GOLD }
]);
// --- Pancreatic cancer
contentSlide("Pancreatic Cancer – The Silent Killer", [
{ text: "One of the deadliest cancers. ~511,000 cases vs ~467,000 deaths → nearly everyone who gets it dies from it.", bold: true, color: RED },
{ text: "WHY so deadly? Usually diagnosed LATE (no early symptoms, sits deep behind other organs).", bold: true },
{ text: "Risk factors:", bold: true, color: ACCENT },
{ text: "Smoking (most modifiable risk factor)", sub: true },
{ text: "Chronic pancreatitis (repeated inflammation → DNA damage → cancer)", sub: true },
{ text: "Diabetes (especially new-onset type 2 in older adults = red flag)", sub: true },
{ text: "Obesity", sub: true },
{ text: "BRCA1/2 mutations (hereditary risk)", sub: true },
{ text: "Key driver mutations:", bold: true, color: ACCENT2 },
{ text: "KRAS mutation (~90% of cases) – the master gas pedal, very hard to target directly.", sub: true },
{ text: "TP53 loss – genome guardian gone.", sub: true },
{ text: "SMAD4/CDKN2A loss – further tumour suppressor loss.", sub: true },
{ text: "Treatment: Gemcitabine/nab-paclitaxel or FOLFIRINOX chemo. If BRCA mutated → PARP inhibitors! If MSI-High → PD-1 inhibitors.", bold: true, color: GOLD }
]);
// --- Skin cancer
contentSlide("Skin Cancer – Honorable Mention", [
{ text: "Most frequently diagnosed cancer worldwide. Rising incidence (UV exposure, fair-skinned populations).", bold: true, color: ACCENT },
{ text: "Three main types:", bold: true },
{ text: "Basal Cell Carcinoma (BCC) – most common. >99% local only. Rarely metastasizes (<1%). Locally destructive but rarely fatal.", sub: true, color: GREEN },
{ text: "Squamous Cell Carcinoma (SCC) – second most common. Low but real metastatic potential.", sub: true, color: ORANGE },
{ text: "Melanoma – least common but MOST lethal. 80–90% lethality once metastatic.", sub: true, color: RED },
{ text: "Key advantage of skin cancer: EASY to biopsy!", bold: true },
{ text: "Biopsy is quick and uncomplicated → molecular profiling is fast → personalised treatment is straightforward.", sub: true },
{ text: "Melanoma key mutations:", bold: true, color: ACCENT2 },
{ text: "BRAF V600E (~50% of melanomas) → BRAF inhibitors (vemurafenib) + MEK inhibitors (trametinib) – the MAPK cascade blockade.", sub: true },
{ text: "PD-L1 overexpression → PD-1 checkpoint inhibitors (pembrolizumab, nivolumab).", sub: true },
{ text: "BRAF + MEK combination is now standard of care for BRAF V600E melanoma.", bold: true, color: GOLD }
]);
// --- Case studies Lec 9
sectionDivider("LECTURE 9 – CASE STUDIES", "Blood, bone marrow and beyond");
caseSlide("Case 1: 68-year-old Man – AML", [
{ label: "Presentation", value: "Fatigue, recurrent infections, easy bruising" },
{ label: "Workup", value: "Leukocytosis, anemia, thrombocytopenia (low platelets) | Blasts in blood and bone marrow" },
{ label: "Molecular", value: "FLT3-ITD: Positive | NPM1: Neg | TP53: Neg | IDH1/2: Neg | PML-RARA: Neg" },
{ label: "Diagnosis", value: "AML (myeloblastic subtype)" },
{ label: "Treatment", value: "Induction chemo (cytarabine + anthracycline: DNA damage) + FLT3 inhibitor (midostaurin – blocks constitutively active FLT3 tyrosine kinase) + Consider stem cell transplant" },
{ label: "Why FLT3?", value: "FLT3-ITD = internal tandem duplication → receptor always active → cells never stop dividing. Inhibiting FLT3 cuts off this survival signal." }
]);
caseSlide("Case 2: 9-year-old Girl – B-ALL", [
{ label: "Presentation", value: "Bone pain, fever, swollen lymph nodes (lymphadenopathy)" },
{ label: "Molecular", value: "TEL-AML1 fusion: Positive | BCR-ABL1: Neg | High-risk deletions: Neg" },
{ label: "Diagnosis", value: "B-cell Acute Lymphoblastic Leukemia (B-ALL)" },
{ label: "Treatment", value: "Multi-agent chemo: antimetabolites (block DNA synthesis) + vinca alkaloids (microtubule disruption) + topoisomerase inhibitors (DNA strand breaks)" },
{ label: "CNS prophylaxis", value: "Intrathecal methotrexate injected into spinal fluid to prevent/treat CNS spread" },
{ label: "Why no TKI?", value: "TEL-AML1 fusion responds to standard chemo. BCR-ABL1 is absent → no need for imatinib. Good prognosis expected." }
]);
caseSlide("Case 3: 45-year-old Man – CML", [
{ label: "Presentation", value: "High WBC (leukocytosis), massive spleen enlargement (splenomegaly)" },
{ label: "Molecular", value: "BCR-ABL1 fusion: Positive (Philadelphia chromosome)" },
{ label: "Diagnosis", value: "Chronic Myeloid Leukemia (CML) – chronic phase" },
{ label: "Treatment", value: "TKI (imatinib/dasatinib) – oral daily pill that blocks BCR-ABL1 ATP-binding site → turns off constitutive tyrosine kinase signalling → downstream RAS/MAPK and JAK/STAT pathways go quiet" },
{ label: "Prognosis", value: "Excellent on TKI therapy. CML was once a death sentence; now most patients have near-normal life expectancy." }
]);
caseSlide("Case 4: 72-year-old Woman – CLL", [
{ label: "Presentation", value: "Lymphadenopathy (swollen nodes), recurrent infections (can't make good antibodies)" },
{ label: "Molecular", value: "TP53 mutation/del17p: Positive | IGHV unmutated: Positive (both = high risk)" },
{ label: "Diagnosis", value: "Chronic Lymphocytic Leukemia (CLL)" },
{ label: "Why NOT chemo?", value: "TP53 deletion = apoptosis is broken. DNA-damaging chemo relies on p53 to trigger cell death → won't work → avoid it!" },
{ label: "Treatment", value: "BTK inhibitor (ibrutinib) – blocks B-cell receptor survival signalling. + BCL-2 inhibitor (venetoclax) – forces the apoptosis pathway to open." }
]);
caseSlide("Case 5: 24-year-old Man – Hodgkin Lymphoma", [
{ label: "Presentation", value: "Painless neck lymphadenopathy + B symptoms (fever, night sweats, weight loss)" },
{ label: "Pathology", value: "Reed-Sternberg cells: CD30+ CD15+ (classic HL markers)" },
{ label: "Molecular", value: "EBV-associated: Positive | PD-L1 overexpression: Positive" },
{ label: "Diagnosis", value: "Classical Hodgkin Lymphoma" },
{ label: "Treatment", value: "ABVD chemo (DNA strand breaks + microtubule inhibition + antimetabolites) + PD-1 checkpoint inhibitor (blocks PD-L1 'don't kill me' signal → immune system can attack)" }
]);
caseSlide("Case 6: 60-year-old Woman – Indolent NHL", [
{ label: "Presentation", value: "Painless lymphadenopathy (found incidentally or slowly noticed)" },
{ label: "Molecular", value: "t(14;18) → BCL2 overexpression: Positive" },
{ label: "Diagnosis", value: "Indolent Non-Hodgkin Lymphoma (Follicular Lymphoma)" },
{ label: "Approach", value: "If ASYMPTOMATIC: Watch and wait – slow-growing, treatment may not prolong life at this stage." },
{ label: "When treatment needed", value: "Rituximab (anti-CD20 antibody → kills B-cells via complement + ADCC) +/- chemo (DNA damage + mitotic arrest)" },
{ label: "Why watch and wait?", value: "BCL-2 overexpression = very slow turnover. Chemo targets dividing cells; low Ki-67 = few cells dividing → treatment side effects may outweigh benefit early on." }
]);
caseSlide("Case 7: 58-year-old Man – Aggressive NHL (DLBCL)", [
{ label: "Presentation", value: "Rapidly growing neck mass + B symptoms (fast = aggressive)" },
{ label: "Molecular", value: "MYC: Pos | BCL2: Pos | BCL6: Pos → Double/Triple hit biology" },
{ label: "Diagnosis", value: "Aggressive NHL (Diffuse Large B-Cell Lymphoma, Double/Triple Hit)" },
{ label: "Treatment", value: "R-CHOP: rituximab (CD20 targeting) + cyclophosphamide (DNA alkylation) + doxorubicin (topoisomerase II inhibitor) + vincristine (microtubule disruption) + prednisone (anti-inflammatory)" },
{ label: "If relapsed", value: "CAR-T cell therapy (CD19-directed engineered T-cells) – the newest weapon" }
]);
caseSlide("Case 8: 70-year-old Man – Multiple Myeloma", [
{ label: "Presentation", value: "Bone pain, anemia, renal dysfunction (CRAB!)" },
{ label: "Molecular", value: "t(4;14): Positive (high-risk) | del17p: Negative" },
{ label: "Diagnosis", value: "Multiple Myeloma" },
{ label: "Treatment", value: "Bortezomib (proteasome inhibitor) + Lenalidomide (immunomodulator/anti-IL6/anti-VEGF) + dexamethasone + Consider autologous stem cell transplant" },
{ label: "Why bortezomib?", value: "Plasma cells produce massive amounts of immunoglobulin. Block the proteasome → misfolded proteins pile up → unfolded protein response → plasma cell apoptosis." }
]);
caseSlide("Case 9: 66-year-old Man – Pancreatic Cancer", [
{ label: "Presentation", value: "Jaundice (bile duct obstruction), weight loss, liver mets + ductal enlargement on MRI" },
{ label: "Molecular", value: "KRAS: Positive | TP53: Positive | BRCA: Negative | MSI: Negative" },
{ label: "Diagnosis", value: "Pancreatic ductal adenocarcinoma (metastatic)" },
{ label: "Treatment", value: "FOLFIRINOX or gemcitabine/nab-paclitaxel chemotherapy (targets rapidly dividing cells via DNA damage and replication arrest)" },
{ label: "If BRCA+", value: "PARP inhibitors (synthetic lethality – BRCA cells can't repair DNA damage → die)" },
{ label: "If MSI-H", value: "PD-1 checkpoint inhibitors would be added. Pembrolizumab approved for MSI-H solid tumors." }
]);
caseSlide("Case 10: 52-year-old Woman – Melanoma", [
{ label: "Presentation", value: "Changing pigmented lesion (new pigmented spot or existing mole changing shape/color/size = URGENT)" },
{ label: "Molecular", value: "BRAF V600E: Positive | PD-L1 expression: Positive" },
{ label: "Diagnosis", value: "Melanoma (BRAF V600E mutated)" },
{ label: "Treatment", value: "PD-1 checkpoint inhibitor (pembrolizumab/nivolumab) – restores T-cell killing of tumour cells" },
{ label: "Also add", value: "BRAF inhibitor (vemurafenib) + MEK inhibitor (trametinib) – MAPK cascade blockade: mutant BRAF → MEK → ERK = stuck on. Both inhibitors = pathway fully blocked." }
]);
// ════════════════════════════════════════════════════════════════
// EXAM QUESTIONS SECTION
// ════════════════════════════════════════════════════════════════
sectionDivider("EXAM QUESTIONS", "Test yourself – questions from both lectures");
const questions = [
// L8 questions
["1", "What are the two main categories of uterine cancer, and which is most common?",
"1. Endometrial carcinoma (90–95% of cases) – most common.\n Subtypes: endometrioid, serous, clear cell, carcinosarcoma, undifferentiated.\n2. Uterine sarcomas – rare, arise from muscle (leiomyosarcoma) or connective tissue (endometrial stromal sarcoma).\n\nEndometrial carcinoma is by far the most common."],
["2", "What does POLE mutation do, and why is it a GOOD prognostic sign?",
"POLE encodes the proofreading domain of DNA polymerase epsilon.\nMutation → spell-checker is broken → ultrahigh mutation burden.\nThis creates thousands of neoantigens on the tumour surface → the immune system strongly recognises and attacks the tumour.\nResult: POLE-mutated endometrial cancers respond EXTREMELY WELL to PD-1/PD-L1 immunotherapy.\nCounterintuitively: more mutations = better immune response = better prognosis."],
["3", "Explain FBXW7 mutation and its treatment consequences.",
"FBXW7 is a substrate recognition component of the SCF-type E3 ubiquitin ligase complex.\nNormally tags oncoproteins (Cyclin E1, c-MYC, Notch1) for proteasomal degradation.\nMutation → label maker is broken → oncoproteins accumulate → tumour progression.\nConsequences:\n• Chemotherapy resistance (cells survive DNA damage)\n• mTOR pathway overactivation → consider mTOR inhibitors\n• Potential immunotherapy resistance\n• High-risk patient category"],
["4", "What is BCG therapy in bladder cancer? Why is it used?",
"BCG = Bacillus Calmette-Guérin, a live attenuated strain of Mycobacterium bovis.\nIt is instilled directly into the bladder.\nMechanism: triggers a local immune response → recruits T-cells and macrophages → these immune cells attack residual tumour cells.\nUsed as first-line treatment for NON-MUSCLE-INVASIVE bladder cancer (NMIBC) after surgical resection (TURBT).\nIt reduces recurrence rates and prevents progression to muscle-invasive disease."],
["5", "Explain the VHL → VEGF pathway in clear cell renal cell carcinoma.",
"VHL (von Hippel-Lindau) protein normally tags HIF-1α/2α (hypoxia-inducible factors) for destruction.\nWhen VHL is LOST: HIF-α accumulates → acts as if the cell is always in hypoxia.\nHIF-α turns on VEGF (vascular endothelial growth factor) + other angiogenic genes.\nVEGF → tumour grows its own massive blood supply (angiogenesis).\nTreatment: VEGF inhibitors (sunitinib, axitinib, bevacizumab) cut off blood supply to tumour.\nAlso combine with PD-1 inhibitors to boost immune response."],
["6", "What is NSMP and how do you treat it?",
"NSMP = No Specific Molecular Profile. The most common endometrial subtype (~45%).\nCharacterised by: copy-number low profile + TP53 wild-type.\nUsually driven by OESTROGEN → oestrogen stimulates endometrial growth.\nTreatment (block the oestrogen):\n• Post-menopause → Aromatase inhibitors (block conversion of androgens to oestrogen in fat tissue)\n• Pre-menopause → ER/PR receptor blockers (e.g., tamoxifen) – prevent oestrogen binding its receptor"],
["7", "What is the difference between NMIBC and MIBC? Why does it matter?",
"NMIBC (Non-Muscle-Invasive Bladder Cancer): tumour confined to urothelial lining and lamina propria. Has NOT breached the detrusor muscle.\n→ Treat with TURBT (endoscopic resection) + BCG instillation. Bladder preserved.\n\nMIBC (Muscle-Invasive Bladder Cancer): tumour has invaded detrusor muscle or beyond.\n→ Much higher risk of metastasis. Treat with neoadjuvant chemo + radical cystectomy (remove entire bladder). Higher mortality.\n\nDistinction matters because: NMIBC = bladder-sparing. MIBC = usually requires bladder removal."],
// L9 questions
["8", "Name the 4 types of leukemia. What does 'acute' vs 'chronic' mean?",
"4 types: AML, ALL, CML, CLL.\n\nAcute: cells are immature blasts stuck in an early stage of development. They can't function and accumulate rapidly. Symptoms develop within weeks. Life-threatening quickly.\n\nChronic: cells can mature but live too long (escape apoptosis). Disease develops over months to years. Less immediately dangerous but can transform to acute phase.\n\nMyeloid: affects granulocytes, monocytes, platelets/red cell precursors.\nLymphoid: affects B and T lymphocytes."],
["9", "What is the PML-RARA translocation? Why is it dangerous and how is it treated?",
"PML-RARA: chromosomal translocation t(15;17) creates a fusion protein between PML and the retinoic acid receptor alpha.\nThis fusion blocks myeloid differentiation → promyelocytes pile up → defines APL (Acute Promyelocytic Leukemia).\n\nDanger: APL cells release clotting factors → DIC (Disseminated Intravascular Coagulation) → life-threatening clotting/bleeding.\n\nTreatment:\n1. Heparin (anticoagulant) for DIC\n2. ATRA (All-Trans Retinoic Acid) → forces cells to differentiate (mature) past the block\n3. Arsenic Trioxide (ATO) → also forces differentiation + destroys the PML-RARA protein\n\nResult: ~90% cure rate – one of oncology's greatest successes."],
["10", "What is the BCR-ABL1 mutation? Which leukemias carry it?",
"BCR-ABL1 = Philadelphia chromosome, t(9;22) translocation.\nCreates a fusion oncoprotein with constitutively active tyrosine kinase activity.\nThe kinase is ALWAYS ON → cells constantly receive 'proliferate and survive' signals.\n\nFound in:\n• CML (Chronic Myeloid Leukemia) – defining mutation in ~95% of cases\n• ALL (Acute Lymphoblastic Leukemia) – Philadelphia+ ALL, worse prognosis if untreated\n\nTreatment: Tyrosine kinase inhibitors (imatinib/dasatinib/nilotinib) → block the ATP-binding site → kinase cannot function.\nImatinib (Gleevec) transformed CML from a fatal disease to manageable chronic condition."],
["11", "What are Reed-Sternberg cells? Which lymphoma are they specific to?",
"Reed-Sternberg cells are large, binucleated or multinucleated B-lymphocytes with prominent nucleoli that look like 'owl eyes' under the microscope.\nThey are pathognomonic (disease-defining) for HODGKIN LYMPHOMA.\nTheir presence → HL diagnosis confirmed.\nTheir absence → Non-Hodgkin Lymphoma by definition.\n\nRS cells in HL express CD30 and CD15 (used as diagnostic markers on biopsy)."],
["12", "Explain the t(14;18) translocation in follicular lymphoma.",
"Translocation moves the BCL2 gene from chromosome 18 to chromosome 14, next to the immunoglobulin heavy chain (IgH) promoter.\nThe IgH promoter is CONSTITUTIVELY ACTIVE in B-cells (B-cells always make antibodies).\nResult: BCL2 is massively overproduced.\nBCL-2 protein is an anti-apoptotic protein (prevents cell death).\nFollicular lymphoma cells cannot die → they accumulate slowly (low Ki-67).\n\nClinical implication: Slow-growing ('indolent'). Often watch and wait. When treatment needed: anti-CD20 (rituximab) + chemo."],
["13", "What is the CRAB acronym in multiple myeloma?",
"CRAB = the classic end-organ damage criteria for multiple myeloma diagnosis:\n\nC = HyperCalcemia: osteoclasts activated by myeloma → bone destruction → calcium released into blood → confusion, constipation, kidney stones.\nR = Renal failure: monoclonal light chains (Bence Jones proteins) clog kidney tubules → kidney damage.\nA = Anemia: plasma cells crowd bone marrow → red cell production suppressed → fatigue, pallor.\nB = Bone lesions: lytic (punched-out) lesions from osteoclast activation → bone pain, pathological fractures.\n\nAt least one CRAB feature is required to distinguish symptomatic myeloma requiring treatment from MGUS or smouldering myeloma."],
["14", "How does bortezomib work against myeloma?",
"Bortezomib is a proteasome inhibitor.\nThe proteasome is the cell's garbage disposal – it degrades misfolded and excess proteins.\nPlasma cells produce enormous amounts of immunoglobulin → generate lots of misfolded protein waste.\nNormal plasma cells NEED functioning proteasomes to survive.\n\nWhen bortezomib blocks the proteasome:\n→ Misfolded proteins pile up (unfolded protein response / UPR)\n→ ER stress becomes overwhelming\n→ Apoptosis is triggered\n\nMyeloma cells are MORE sensitive to this than normal cells because they produce so much protein to begin with."],
["15", "Why is CLL with TP53 mutation (del17p) treated with BTK/BCL-2 inhibitors instead of chemotherapy?",
"Standard chemotherapy works by causing DNA damage → p53 detects the damage → triggers apoptosis (cell death).\n\nIn TP53-deleted/mutated CLL: p53 is non-functional.\nChemo damages DNA but p53 cannot respond → apoptosis signal never fires → chemo is INEFFECTIVE and just causes side effects.\n\nSolution: bypass p53 entirely.\n• BTK inhibitors (ibrutinib): block B-cell receptor survival signalling → cells deprived of survival stimulus.\n• BCL-2 inhibitors (venetoclax): directly open the mitochondrial apoptosis pathway → forces cell death WITHOUT needing p53."],
["16", "What is 'double hit' lymphoma? Why is it particularly bad?",
"Double hit lymphoma (DHL) = DLBCL with CONCURRENT rearrangements of MYC + BCL2 (and sometimes BCL6 = triple hit).\n\nMYC: master proliferation driver → cells divide extremely fast.\nBCL-2: anti-apoptotic → cells cannot die.\nBCL-6: represses p53 and DNA repair → mutations accumulate unchecked.\n\nCombination = tumour cells proliferate fast AND cannot die AND accumulate mutations.\nHigh Ki-67 index (>90% in some cases).\nVery poor prognosis with standard R-CHOP therapy.\nRequires more intensive regimens (R-EPOCH, dose-adjusted) + CAR-T cells for relapsed/refractory disease."],
["17", "Explain the mechanism of ATRA in treating APL.",
"APL is caused by PML-RARA fusion protein, which blocks the retinoic acid receptor from functioning → myeloid cells CANNOT mature past the promyelocyte stage → blasts accumulate.\n\nATRA (All-Trans Retinoic Acid) = a synthetic vitamin A derivative.\nMechanism: ATRA floods the cell → binds the RARA component of the fusion protein with HIGH AFFINITY → overcomes the block → the differentiation programme RESTARTS → promyelocytes mature into neutrophils.\n\nThis is called DIFFERENTIATION THERAPY: instead of killing cancer cells directly, you force them to grow up and become normal cells.\nATRA combined with Arsenic Trioxide → ~90% complete remission in APL."],
["18", "What makes lenalidomide special in myeloma treatment?",
"Lenalidomide (an IMiD = immunomodulatory drug) is uniquely multi-functional:\n\n1. Protein degradation: binds CRBN (cereblon, part of ubiquitin ligase complex) → marks abnormal myeloma survival proteins for proteasomal destruction → stops proliferation.\n2. T-cell activation: stimulates T-cell proliferation → boosts anti-tumour immune response.\n3. NK cell enhancement: strengthens NK cells to detect and kill myeloma cells.\n4. Anti-cytokine: reduces IL-6 secretion (IL-6 is the main myeloma survival/growth signal) and TNF-α.\n5. Anti-angiogenesis: blocks VEGF → cuts off tumour blood supply.\n\nIt is used in induction, maintenance, and relapsed/refractory settings."],
["19", "A patient has BRAF V600E melanoma with PD-L1 expression. What is the treatment rationale?",
"Two parallel treatment strategies:\n\n1. Immune checkpoint blockade (PD-L1 overexpressed):\nPD-L1 on tumour cells binds PD-1 on T-cells → T-cells deactivated → tumour invisible to immune system.\nPD-1 inhibitor (pembrolizumab/nivolumab) blocks this interaction → T-cells reactivated → attack tumour.\n\n2. MAPK pathway blockade (BRAF V600E mutated):\nBRAF V600E = constitutively active BRAF → MEK → ERK pathway → constant proliferation signal.\nBRAF inhibitor (vemurafenib/dabrafenib) blocks mutant BRAF.\nMEK inhibitor (trametinib) added downstream to prevent resistance.\nCombination = double blockade of the same pathway at two points.\n\nCurrent standard: both strategies are often used (checkpoint inhibition + BRAF/MEK inhibition) for maximum effect."],
["20", "Walk through the general diagnostic and treatment workflow for a systemic cancer (e.g., leukemia).",
"Step 1 – Clinical presentation: fatigue, infections, bleeding, lymphadenopathy, bone pain, B symptoms.\n\nStep 2 – Blood work: CBC (complete blood count) → leukocytosis/cytopenia patterns suggest leukemia vs lymphoma.\n\nStep 3 – Bone marrow biopsy: defines blast percentage, cell morphology, immunophenotype.\n\nStep 4 – Molecular profiling:\n• Cytogenetics (FISH/karyotype): detect translocations (BCR-ABL1, PML-RARA, t(14;18))\n• Next-gen sequencing: FLT3, NPM1, IDH, TP53, KRAS, etc.\n\nStep 5 – Risk stratification: good/intermediate/poor risk based on molecular profile.\n\nStep 6 – Treatment:\n• Low-risk: standard chemo.\n• High-risk (TP53, FLT3): targeted agents + intensified chemo + stem cell transplant.\n• Immunotherapy indications: MSI-H, PD-L1+, CD20+ (rituximab), CD19 (CAR-T).\n\nStep 7 – MRD monitoring: measurable residual disease guides further treatment decisions."]
];
questions.forEach(([num, q, a]) => qaSlide(num, q, a));
// Final slide
const fin = pres.addSlide();
fin.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: BG } });
fin.addShape(pres.ShapeType.rect, { x: 0, y: 2.5, w: 10, h: 0.08, fill: { color: ACCENT } });
fin.addText("Good luck on your exam! 🎯", { x: 0.5, y: 1.4, w: 9, h: 1.2, fontSize: 36, bold: true, color: WHITE, align: "center", fontFace: "Calibri" });
fin.addText("Lectures 8 & 9 | Oncology | D. Hakimian", { x: 0.5, y: 3.0, w: 9, h: 0.6, fontSize: 18, color: ACCENT2, align: "center", fontFace: "Calibri" });
pres.writeFile({ fileName: "/home/daytona/workspace/oncology-merged/Oncology_L8_L9_Complete_Study_Guide.pptx" })
.then(() => console.log("DONE"))
.catch(e => { console.error(e); process.exit(1); });
cd /home/daytona/workspace/oncology-merged && node build.js 2>&1
ls -lh /home/daytona/workspace/oncology-merged/Oncology_L8_L9_Complete_Study_Guide.pptx
Oncology L8 L9 Complete Study Guide
Presentation · PPTX
| Section | Slides |
|---|---|
| Cover slide | 1 |
| LECTURE 8 – Genitourinary & Uterine Cancers | |
| Epidemiology | 1 |
| Uterine cancer (types + explained simply) | 2 |
| All gene mutations explained (PTEN, POLE, FBXW7, PPP2R1A, ARID1A, NSMP) | 6 |
| Bladder cancer (Nectin-4, BCG, FGFR3) | 2 |
| Kidney, Prostate, Testicular, Penile cancers | 4 |
| Case studies 1–5 (L8) | 5 |
| LECTURE 9 – Systemic Cancers | |
| Leukemia (AML, APL special, ALL, CML vs CLL) | 5 |
| Lymphoma (HL, NHL indolent vs aggressive) | 3 |
| Multiple myeloma + Lenalidomide + treatment | 2 |
| Pancreatic cancer + Skin/Melanoma | 2 |
| Case studies 1–10 (L9) | 10 |
| 20 Exam Q&A slides (questions + full answers) | 20 |
Can you make it into a pdf
which libreoffice && libreoffice --version 2>/dev/null
libreoffice --headless --convert-to pdf --outdir /home/daytona/workspace/oncology-merged/ /home/daytona/workspace/oncology-merged/Oncology_L8_L9_Complete_Study_Guide.pptx 2>&1
chmod 777 /home/daytona/workspace/oncology-merged/ && libreoffice --headless --convert-to pdf --outdir /home/daytona/workspace/oncology-merged/ /home/daytona/workspace/oncology-merged/Oncology_L8_L9_Complete_Study_Guide.pptx 2>&1
mkdir -p /home/daytona/workspace/oncology-pdf && ls -la /home/daytona/workspace/oncology-pdf/ && libreoffice --headless --convert-to pdf --outdir /home/daytona/workspace/oncology-pdf/ /home/daytona/workspace/oncology-merged/Oncology_L8_L9_Complete_Study_Guide.pptx 2>&1
cp /home/daytona/workspace/oncology-merged/Oncology_L8_L9_Complete_Study_Guide.pptx /tmp/study.pptx && libreoffice --headless --convert-to pdf --outdir /tmp/ /tmp/study.pptx 2>&1 && ls -lh /tmp/study.pdf
cp /tmp/study.pdf /home/daytona/workspace/oncology-merged/Oncology_L8_L9_Complete_Study_Guide.pdf && ls -lh /home/daytona/workspace/oncology-merged/Oncology_L8_L9_Complete_Study_Guide.pdf
Oncology L8 L9 Complete Study Guide
PDF Document · PDF
I wanted it like notes.
~/oncology-merged/build_notes.py
#!/usr/bin/env python3
"""Generate a clean study-notes PDF for Oncology Lectures 8 & 9."""
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.lib import colors
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, HRFlowable,
KeepTogether, PageBreak, Table, TableStyle
)
from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_JUSTIFY
from reportlab.platypus import ListFlowable, ListItem
# ── Output path ──────────────────────────────────────────────────────────────
OUTPUT = "/home/daytona/workspace/oncology-merged/Oncology_L8_L9_Study_Notes.pdf"
# ── Colours ──────────────────────────────────────────────────────────────────
NAVY = colors.HexColor("#0D1B2A")
BLUE = colors.HexColor("#1565C0")
TEAL = colors.HexColor("#00796B")
GOLD = colors.HexColor("#F57F17")
RED = colors.HexColor("#C62828")
GREEN = colors.HexColor("#2E7D32")
LGRAY = colors.HexColor("#ECEFF1")
MGRAY = colors.HexColor("#546E7A")
BLACK = colors.black
WHITE = colors.white
ORANGE = colors.HexColor("#E65100")
# ── Styles ───────────────────────────────────────────────────────────────────
def make_styles():
s = {}
s['cover_title'] = ParagraphStyle('cover_title',
fontName='Helvetica-Bold', fontSize=28, textColor=WHITE,
alignment=TA_CENTER, spaceAfter=8)
s['cover_sub'] = ParagraphStyle('cover_sub',
fontName='Helvetica', fontSize=13, textColor=colors.HexColor("#90CAF9"),
alignment=TA_CENTER, spaceAfter=4)
s['h1'] = ParagraphStyle('h1',
fontName='Helvetica-Bold', fontSize=18, textColor=WHITE,
backColor=NAVY, borderPadding=(6, 10, 6, 10),
spaceBefore=18, spaceAfter=8, leading=22)
s['h2'] = ParagraphStyle('h2',
fontName='Helvetica-Bold', fontSize=14, textColor=BLUE,
spaceBefore=14, spaceAfter=4, leading=18,
borderPadding=(0,0,2,0))
s['h3'] = ParagraphStyle('h3',
fontName='Helvetica-BoldOblique', fontSize=12, textColor=TEAL,
spaceBefore=8, spaceAfter=2, leading=16)
s['body'] = ParagraphStyle('body',
fontName='Helvetica', fontSize=10.5, textColor=colors.HexColor("#1A2940"),
leading=16, spaceBefore=3, spaceAfter=3, alignment=TA_JUSTIFY)
s['bullet'] = ParagraphStyle('bullet',
fontName='Helvetica', fontSize=10.5, textColor=colors.HexColor("#1A2940"),
leading=15, spaceBefore=1, spaceAfter=1,
leftIndent=14, firstLineIndent=-10)
s['sub_bullet'] = ParagraphStyle('sub_bullet',
fontName='Helvetica', fontSize=10, textColor=colors.HexColor("#37474F"),
leading=14, spaceBefore=1, spaceAfter=1,
leftIndent=28, firstLineIndent=-10)
s['callout'] = ParagraphStyle('callout',
fontName='Helvetica-BoldOblique', fontSize=10.5,
textColor=colors.HexColor("#4A148C"),
backColor=colors.HexColor("#F3E5F5"),
borderPadding=(6, 8, 6, 8),
spaceBefore=6, spaceAfter=6, leading=15)
s['keypoint'] = ParagraphStyle('keypoint',
fontName='Helvetica-Bold', fontSize=10.5, textColor=GOLD,
backColor=colors.HexColor("#1A2940"),
borderPadding=(6, 8, 6, 8),
spaceBefore=6, spaceAfter=6, leading=15)
s['case_title'] = ParagraphStyle('case_title',
fontName='Helvetica-Bold', fontSize=11.5, textColor=WHITE,
backColor=colors.HexColor("#1A3A5C"),
borderPadding=(5, 8, 5, 8),
spaceBefore=10, spaceAfter=4, leading=15)
s['qa_q'] = ParagraphStyle('qa_q',
fontName='Helvetica-Bold', fontSize=11, textColor=WHITE,
backColor=NAVY, borderPadding=(6,8,6,8),
spaceBefore=14, spaceAfter=0, leading=16)
s['qa_a'] = ParagraphStyle('qa_a',
fontName='Helvetica', fontSize=10.5, textColor=colors.HexColor("#1A2940"),
backColor=colors.HexColor("#E8F5E9"),
borderPadding=(6,8,6,8),
spaceBefore=0, spaceAfter=8, leading=15, alignment=TA_JUSTIFY)
s['toc_h'] = ParagraphStyle('toc_h',
fontName='Helvetica-Bold', fontSize=12, textColor=NAVY,
spaceBefore=6, spaceAfter=1)
s['toc_item'] = ParagraphStyle('toc_item',
fontName='Helvetica', fontSize=10.5, textColor=BLACK,
leftIndent=14, spaceBefore=1, spaceAfter=1)
s['page_num'] = ParagraphStyle('page_num',
fontName='Helvetica', fontSize=9, textColor=MGRAY, alignment=TA_CENTER)
s['section_banner'] = ParagraphStyle('section_banner',
fontName='Helvetica-Bold', fontSize=20, textColor=WHITE,
backColor=BLUE, borderPadding=(10, 14, 10, 14),
alignment=TA_CENTER, spaceBefore=0, spaceAfter=12, leading=26)
return s
ST = make_styles()
def b(text): return f"<b>{text}</b>"
def i(text): return f"<i>{text}</i>"
def col(text, c): return f'<font color="{c}">{text}</font>'
def H1(text):
return [Spacer(1, 0.15*cm), Paragraph(text, ST['h1']), Spacer(1, 0.1*cm)]
def H2(text):
return [Spacer(1, 0.1*cm), Paragraph(text, ST['h2']),
HRFlowable(width="100%", thickness=1.2, color=BLUE, spaceAfter=3)]
def H3(text):
return [Paragraph(text, ST['h3'])]
def P(text):
return [Paragraph(text, ST['body'])]
def BULLET(items):
"""items = list of (text, level) where level 0=bullet, 1=sub"""
out = []
for item in items:
if isinstance(item, tuple):
text, level = item
else:
text, level = item, 0
style = ST['sub_bullet'] if level == 1 else ST['bullet']
prefix = "◦ " if level == 1 else "• "
out.append(Paragraph(prefix + text, style))
return out
def CALLOUT(text):
return [Paragraph(text, ST['callout'])]
def KEYPOINT(text):
return [Paragraph("🔑 " + text, ST['keypoint'])]
def CASE(title, rows):
"""rows = list of (label, value)"""
elems = [Paragraph(title, ST['case_title'])]
data = [[Paragraph(b(r[0]), ParagraphStyle('cl', fontName='Helvetica-Bold',
fontSize=9.5, textColor=WHITE)),
Paragraph(r[1], ParagraphStyle('cv', fontName='Helvetica',
fontSize=9.5, leading=13, textColor=BLACK))]
for r in rows]
t = Table(data, colWidths=[3.5*cm, 13.5*cm])
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (0,-1), colors.HexColor("#1565C0")),
('BACKGROUND', (1,0), (1,-1), colors.HexColor("#E3F2FD")),
('BACKGROUND', (1,1), (1,-1), colors.HexColor("#FFFFFF")),
('ROWBACKGROUNDS', (1,0), (1,-1), [colors.HexColor("#E3F2FD"), colors.HexColor("#FFFFFF")]),
('ALIGN', (0,0), (0,-1), 'CENTER'),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor("#90CAF9")),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 6),
('RIGHTPADDING', (0,0), (-1,-1), 6),
]))
elems.append(t)
elems.append(Spacer(1, 0.2*cm))
return elems
def QA(num, question, answer):
elems = [
Paragraph(f"Q{num}. {question}", ST['qa_q']),
Paragraph(answer.replace('\n', '<br/>'), ST['qa_a']),
]
return elems
def SECTION_BREAK(title, subtitle=""):
elems = [PageBreak(), Spacer(1, 1.5*cm),
Paragraph(title, ST['section_banner'])]
if subtitle:
elems.append(Paragraph(subtitle, ParagraphStyle('sb',
fontName='Helvetica-Oblique', fontSize=12, textColor=MGRAY,
alignment=TA_CENTER, spaceBefore=0, spaceAfter=20)))
elems.append(Spacer(1, 0.5*cm))
return elems
# ── Page template ────────────────────────────────────────────────────────────
def on_first_page(canvas, doc):
w, h = A4
canvas.saveState()
canvas.setFillColor(NAVY)
canvas.rect(0, 0, w, h, fill=1, stroke=0)
canvas.setFillColor(BLUE)
canvas.rect(0, h*0.38, w, h*0.26, fill=1, stroke=0)
canvas.setFillColor(TEAL)
canvas.rect(0, h*0.38, w, 4, fill=1, stroke=0)
canvas.setFont("Helvetica-Bold", 36)
canvas.setFillColor(WHITE)
canvas.drawCentredString(w/2, h*0.72, "ONCOLOGY")
canvas.setFont("Helvetica-Bold", 22)
canvas.setFillColor(colors.HexColor("#90CAF9"))
canvas.drawCentredString(w/2, h*0.63, "Lectures 8 & 9 — Complete Study Notes")
canvas.setFont("Helvetica", 13)
canvas.setFillColor(colors.HexColor("#B0BEC5"))
canvas.drawCentredString(w/2, h*0.55, "Genitourinary & Uterine Cancers | Systemic Cancers")
canvas.drawCentredString(w/2, h*0.50, "D. Hakimian, M.Sc. Synthetic Biotechnology")
canvas.setFont("Helvetica-BoldOblique", 11)
canvas.setFillColor(GOLD)
canvas.drawCentredString(w/2, h*0.32, "Explained simply — everything you need for your exam")
canvas.restoreState()
def on_later_pages(canvas, doc):
w, h = A4
canvas.saveState()
canvas.setFillColor(NAVY)
canvas.rect(0, 0, w, 0.7*cm, fill=1, stroke=0)
canvas.setFont("Helvetica", 8)
canvas.setFillColor(colors.HexColor("#90CAF9"))
canvas.drawString(1*cm, 0.22*cm, "Oncology — Lectures 8 & 9 Study Notes")
canvas.drawRightString(w - 1*cm, 0.22*cm, f"Page {doc.page}")
canvas.restoreState()
# ── Build content ─────────────────────────────────────────────────────────────
story = []
# Cover page spacer (content starts on page 2)
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════
# LECTURE 8 – GENITOURINARY & UTERINE CANCERS
# ═══════════════════════════════════════════════════════════════════
story += SECTION_BREAK("LECTURE 8", "Genitourinary & Uterine Cancers")
# ── 1. Epidemiology ──────────────────────────────────────────────
story += H1("1. Epidemiology")
story += P("Before diving into the biology, it helps to know how common each cancer is. The numbers below are global annual estimates.")
story += BULLET([
(b("Prostate cancer") + " — ~1.47 million new cases/year. The 4th most common cancer overall and 8th leading cause of cancer death (~397,000 deaths).", 0),
(b("Bladder cancer") + " — ~614,000 new cases (9th overall), ~220,000 deaths. Significantly more common in men.", 0),
(b("Kidney cancer") + " — ~435,000 new cases, ~156,000 deaths.", 0),
(b("Uterine cancer") + " — ~420,000 new cases, ~98,000 deaths. Refers primarily to cancer of the uterine body (corpus uteri).", 0),
(b("Testicular cancer") + " — ~72,000 new cases, ~9,100 deaths. Affects young men but is highly curable.", 0),
(b("Penile cancer") + " — ~37,700 new cases. Rare but important to recognise.", 0),
])
story += KEYPOINT("Prostate and bladder cancer are the dominant killers in this group. Testicular cancer is rare and very treatable — even when metastatic.")
# ── 2. Uterine Cancer ─────────────────────────────────────────────
story += H1("2. Uterine Cancer")
story += P("Uterine cancer arises from the uterus and is divided into two broad families based on which tissue the cancer originates from.")
story += H2("2.1 Endometrial Carcinoma (90–95% of cases)")
story += P("This is by far the most common form. It starts in the " + b("endometrium") + " — the inner lining of the uterus that thickens with each menstrual cycle. There are five histological subtypes:")
story += BULLET([
(b("Endometrioid carcinoma") + " — the most common subtype. Looks like normal endometrium gone rogue. Usually well-differentiated and oestrogen-driven.", 0),
(b("Serous carcinoma") + " — aggressive. Resembles ovarian serous cancer. Often TP53-mutated.", 0),
(b("Clear cell carcinoma") + " — aggressive. Named for the clear, glycogen-filled cytoplasm visible under the microscope.", 0),
(b("Carcinosarcoma") + " — a mixed tumour. Starts as an epithelial carcinoma but develops connective-tissue (sarcomatous) features too.", 0),
(b("Undifferentiated/Dedifferentiated carcinoma") + " — the most aggressive subtype. Cells have completely lost their specialised identity.", 0),
])
story += H2("2.2 Uterine Sarcomas (rare)")
story += P("These arise from the supportive tissues of the uterus rather than the lining:")
story += BULLET([
(b("Leiomyosarcoma") + " — arises from the smooth muscle of the uterine wall (myometrium). Think of it as a malignant version of a uterine fibroid.", 0),
(b("Endometrial stromal sarcoma") + " — arises from the connective tissue stroma of the endometrium.", 0),
])
story += CALLOUT("Simple rule: cancer in the lining → carcinoma. Cancer in the wall/muscle → sarcoma.")
# ── 2.3 Gene mutations ───────────────────────────────────────────
story += H2("2.3 Molecular Drivers of Endometrial Carcinoma")
story += P("Endometrial carcinomas are divided into " + b("known mutations") + " (well-characterised) and " + b("newer molecular subtypes") + " discovered through genomic profiling.")
story += H3("Known (Established) Mutations")
story += BULLET([
(b("PTEN") + " — a tumour suppressor (acts as a brake). Loss of PTEN removes a key restraint on the PI3K/AKT growth pathway → uncontrolled cell division.", 0),
(b("PIK3CA / PIK3R1") + " — components of the PI3K pathway (a growth gas pedal). Mutations lock these into a permanently active state.", 0),
(b("CTNNB1") + " — encodes β-catenin, a key player in the Wnt pathway. Mutations activate survival and proliferation signals.", 0),
(b("KRAS") + " — a RAS-family GTPase (growth gas pedal). Mutated KRAS is constitutively active.", 0),
(b("TP53") + " — the 'guardian of the genome' (major brake). Loss leads to genomic chaos and highly aggressive tumours.", 0),
(b("dMMR (Mismatch Repair Deficiency)") + " — loss of DNA spell-checker proteins (MLH1, MSH2, MSH6, PMS2). Results in microsatellite instability (MSI-H) and a high neoantigen burden. Excellent target for " + b("PD-1/PD-L1 checkpoint inhibitors") + ".", 0),
(b("ERBB2 (HER2)") + " — a cell-surface growth receptor. Amplification drives hyper-active growth signalling. Targetable with anti-HER2 drugs (e.g., trastuzumab).", 0),
])
story += H3("Newer Molecular Subtypes")
story += P(b("ARID1A/B & SMARCA2/A4 — SWI/SNF Chromatin Remodelling"))
story += P("Imagine DNA tightly coiled around spools (nucleosomes). The SWI/SNF complex is the machine that uncoils specific sections so genes can be read. This complex normally " + b("suppresses tumour formation") + " by tightly regulating gene accessibility. When ARID1A/B or SMARCA2/A4 are mutated, the complex breaks → suppression is lost → oncogenes are permanently accessible and over-expressed. These mutations sensitise tumours to PARP inhibitors and ATR inhibitors.")
story += P(b("POLE — DNA Polymerase Epsilon Proofreading Domain"))
story += P("POLE encodes the proofreading subunit of DNA polymerase epsilon — essentially the spell-checker of the DNA-copying machine. A mutation here disables proofreading, resulting in an " + b("ultra-high tumour mutation burden") + " (thousands of mutations). Paradoxically this is " + col("good news", "#2E7D32") + ": all those mutations generate large numbers of " + b("neoantigens") + " (foreign-looking proteins) on the tumour surface. The immune system recognises them strongly, making POLE-mutated tumours extremely sensitive to " + b("PD-1/PD-L1 immunotherapy") + ".")
story += KEYPOINT("POLE mutation = broken spell-checker → thousands of mutations → immune system goes to town on the tumour → excellent prognosis with immunotherapy.")
story += P(b("PPP2R1A — Protein Phosphatase 2A (PP2A) Subunit"))
story += P("PP2A is a major cellular brake: it slows the cell cycle and triggers apoptosis (programmed cell death) when damage is detected. PPP2R1A encodes a structural subunit. When mutated, PP2A fails → the cell cycle spins out of control → proliferation is unchecked → DNA damage accumulates → the tumour over-expresses PD-L1. The resulting high mutation burden makes these tumours " + b("responsive to immunotherapy") + ".")
story += P(b("FBXW7 — Ubiquitin Ligase Substrate Receptor"))
story += P("FBXW7 is the 'label maker' of cellular quality control. As part of the SCF-type E3 ubiquitin ligase complex, it tags key oncoproteins — Cyclin E1, c-MYC, Notch1 — for proteasomal degradation. When FBXW7 is mutated, the label maker is broken: these oncoproteins pile up and drive tumour progression. Clinical consequences include " + b("chemotherapy resistance") + ", " + b("mTOR pathway over-activation") + " (consider mTOR inhibitors), potential immunotherapy resistance, and a high-risk patient category.")
story += P(b("NSMP — No Specific Molecular Profile"))
story += P("NSMP is the " + b("most common") + " endometrial subtype (~45% of cases). It is characterised by a copy-number low profile and wild-type TP53. The tumours are typically " + b("oestrogen-driven") + " — excess oestrogen stimulates endometrial proliferation. Treatment strategy targets the hormone:")
story += BULLET([
("Post-menopause: " + b("Aromatase inhibitors") + " block conversion of androgens to oestrogen in peripheral fat tissue.", 0),
("Pre-menopause: " + b("ER/PR receptor blockers") + " (e.g., tamoxifen, megestrol) prevent oestrogen binding to its receptor.", 0),
])
story += CALLOUT("Analogy: NSMP tumour is a plant that only grows when watered with oestrogen. Stop the water → the plant dies.")
# ── 3. Urothelial Cancer ─────────────────────────────────────────
story += H1("3. Urothelial Cancer (Bladder Cancer)")
story += P("Urothelial cancer arises from the " + b("urothelium") + " — the specialised epithelium lining the bladder, renal pelvis, and ureter. The vast majority (>90%) arise in the bladder.")
story += H2("3.1 Biological Classification")
story += BULLET([
(b("NMIBC (Non-Muscle-Invasive Bladder Cancer)") + " — confined to the urothelial lining and lamina propria. Has not breached the detrusor muscle. More manageable; bladder can often be preserved.", 0),
(b("MIBC (Muscle-Invasive / Metastatic Bladder Cancer)") + " — has invaded the detrusor muscle or beyond. High metastatic risk. Usually requires radical cystectomy (bladder removal).", 0),
])
story += H2("3.2 Key Molecular Alterations")
story += BULLET([
(b("FGFR3") + " — fibroblast growth factor receptor 3; a growth-signalling gas pedal. More common in NMIBC. " + b("Targetable with FGFR inhibitors") + " (e.g., erdafitinib).", 0),
(b("TP53 / RB1") + " — tumour suppressors. Loss drives aggressive, muscle-invasive disease.", 0),
(b("ERBB2 (HER2)") + " — growth receptor amplification.", 0),
(b("TERT promoter") + " — mutation keeps telomeres long → cell immortality.", 0),
(b("CDKN2A") + " — cell cycle brake. Loss → faster proliferation.", 0),
])
story += H2("3.3 First-Line Treatment: BCG")
story += P(b("BCG (Bacillus Calmette-Guérin)") + " is a live attenuated strain of " + i("Mycobacterium bovis") + " instilled directly into the bladder after surgical resection (TURBT). It triggers a local immune response — recruiting T-cells and macrophages — which then attack residual tumour cells. BCG is first-line for NMIBC and significantly reduces recurrence and progression rates.")
story += H2("3.4 Nectin-4: A Smart Drug Target")
story += P("Nectin-4 is a cell-adhesion surface protein that, when overexpressed in tumour cells (bladder, breast, pancreatic, ovarian, NSCLC), drives proliferation, migration, and angiogenesis. Because it sits on the cell surface and is selectively overexpressed in cancer cells, it is an ideal antibody-drug conjugate (ADC) target. " + b("Enfortumab vedotin") + " is the approved ADC: the antibody homes to Nectin-4, delivering a cytotoxic payload directly inside the cell.")
story += KEYPOINT("Think of Enfortumab vedotin as a guided missile: Nectin-4 is the address label; the toxin is the warhead.")
# ── 4. Renal Cell Carcinoma ──────────────────────────────────────
story += H1("4. Renal Cell Carcinoma (Kidney Cancer)")
story += P("RCC has three main subtypes with distinct histologies and genetic drivers:")
story += BULLET([
(b("Clear Cell RCC (~70–75%)") + " — driven by loss of the " + b("VHL tumour suppressor gene") + ". VHL normally tags HIF-1α/2α for degradation. When VHL is lost, HIF-α accumulates → acts as if the cell is in permanent hypoxia → turns on " + b("VEGF") + " (vascular growth factor) → tumour builds its own blood supply. Treatment: " + b("VEGF inhibitors") + " (sunitinib, axitinib) + " + b("PD-1 inhibitors") + ".", 0),
(b("Chromophobe RCC") + " — driven by mitochondrial mutations that disable apoptosis. Cells are effectively immortal.", 0),
(b("Papillary RCC") + " — driven by " + b("MET mutation") + " (receptor tyrosine kinase). Targetable with MET inhibitors.", 0),
])
story += KEYPOINT("VHL loss → HIF-α up → VEGF up → angiogenesis. Block VEGF = starve the tumour of its blood supply.")
# ── 5. Prostate Cancer ───────────────────────────────────────────
story += H1("5. Prostate Cancer")
story += P("Prostate cancer is almost always " + b("adenocarcinoma") + " (cancer of glandular cells) and is typically " + b("hormone-driven") + ". Androgens (testosterone, DHT) bind the Androgen Receptor (AR) and drive cell growth.")
story += H2("5.1 Treatment Principles")
story += BULLET([
("Localised disease → " + b("radical prostatectomy") + " (surgical removal).", 0),
(b("ADT (Androgen Deprivation Therapy)") + " — reduces testosterone to starve the tumour. Only works if AR is functional. If AR is mutated → ADT fails → need more aggressive chemotherapy.", 0),
])
story += H2("5.2 Key Molecular Tests")
story += BULLET([
(b("BRCA1/2 mutation") + " → DNA repair defect → " + b("PARP inhibitors") + " (e.g., olaparib) exploit synthetic lethality: PARP inhibition + BRCA deficiency = cancer cell cannot repair DNA → self-destructs.", 0),
(b("MSI status") + " → if MSI-High → " + b("PD-1 checkpoint inhibitors") + " are effective.", 0),
(b("AR mutation status") + " → determines whether hormone therapy will work.", 0),
])
# ── 6. Testicular GCT ───────────────────────────────────────────
story += H1("6. Testicular Germ Cell Tumours (TGCT)")
story += P("TGCTs are the " + b("most curable solid metastatic cancer") + " known to medicine — even when they have spread. They mostly affect young men aged 20–35.")
story += BULLET([
(b("Seminoma") + " — slow-growing, highly sensitive to radiation and platinum chemotherapy.", 0),
(b("Non-seminoma (NSGCT)") + " — faster growing but still exquisitely sensitive to platinum-based chemotherapy (BEP: bleomycin, etoposide, cisplatin).", 0),
])
story += P(b("Standard treatment:") + " Radical " + b("inguinal") + " orchiectomy (through the groin, NOT the scrotum — to prevent inadvertent lymphatic spread to the inguinal nodes). If recurrent after surgery: BEP chemotherapy ± radiotherapy.")
story += KEYPOINT("ALWAYS recommend sperm banking before surgery or chemotherapy — fertility preservation is critical in young men.")
# ── 7. Penile Cancer ────────────────────────────────────────────
story += H1("7. Penile Cancer")
story += P("Penile cancer is rare but important. The majority of cases are " + b("HPV-driven") + " (subtypes 16 and 18), which integrate into host DNA and inactivate TP53 and Rb tumour suppressors.")
story += BULLET([
("Non-HPV risk factors: " + b("phimosis") + " (chronic inflammation), smoking (carcinogen exposure).", 0),
("Standard treatment: surgical resection + radiotherapy.", 0),
("Because HPV creates a high mutational burden, " + b("PD-1 checkpoint inhibitors") + " are effective.", 0),
(b("HPV vaccination") + " (subtypes 16 & 18) is the most effective prevention strategy.", 0),
])
# ── Case Studies L8 ─────────────────────────────────────────────
story += H1("8. Case Studies — Lecture 8")
story += CASE("Case 1 | 63-year-old Woman — Uterine Cancer", [
("Presentation", "Post-menopausal bleeding (blood after menopause = ALWAYS a red flag) + fatigue"),
("Imaging", "TVUS → 14 mm endometrial thickening. MRI → deep myometrial invasion + pelvic nodal involvement"),
("Molecular", "Loss of MSH2/MSH6 = dMMR/MSI-High. TP53 wild-type. ER/PR positive."),
("Diagnosis", "Stage IIIC1 Endometrioid Endometrial Carcinoma"),
("Treatment", "Hysterectomy + bilateral salpingo-oophorectomy + chemotherapy + PD-1 inhibitors"),
("Rationale", "dMMR (MSH2/MSH6 loss) = broken spell-checker → high neoantigen load → immune system can see the tumour → PD-1 blockade removes the last immune brake"),
])
story += CASE("Case 2 | 71-year-old Man — Bladder Cancer", [
("Presentation", "Painless gross haematuria — blood in urine with NO pain is the classic bladder cancer warning sign"),
("Imaging", "CT urogram → bladder wall mass → muscle-invasive disease confirmed"),
("Molecular", "FGFR3 mutation + TERT promoter mutation"),
("Diagnosis", "Muscle-Invasive Urothelial Carcinoma with metastatic recurrence"),
("Treatment", "Neoadjuvant chemotherapy → radical cystectomy → FGFR inhibitor (erdafitinib) on metastatic recurrence"),
("Rationale", "FGFR3 mutation = constitutively active growth receptor. FGFR inhibitor turns it off. Used post-metastasis when surgery alone is insufficient."),
])
story += CASE("Case 3 | 59-year-old Man — Kidney Cancer", [
("Presentation", "Haematuria, weight loss, hypertension (tumour compresses renal vasculature → renin release → BP up)"),
("Imaging", "CT abdomen → 8 cm renal mass + lung metastases"),
("Molecular", "VHL loss"),
("Diagnosis", "Metastatic Clear Cell Renal Cell Carcinoma"),
("Treatment", "PD-1 checkpoint inhibitor + VEGF inhibitor (combination)"),
("Rationale", "VHL loss → HIF-α up → VEGF overproduction → tumour builds own blood supply. VEGF inhibitor starves it; PD-1 inhibitor releases immune brakes."),
])
story += CASE("Case 4 | 67-year-old Man — Prostate Cancer", [
("Presentation", "Back pain (bone metastases!) + urinary hesitancy (tumour compressing urethra)"),
("Imaging", "Bone scan → diffuse osseous metastases. MRI prostate positive."),
("Molecular", "BRCA2 mutation + PTEN loss"),
("Diagnosis", "Metastatic castration-sensitive prostate adenocarcinoma"),
("Treatment", "ADT first → PARP inhibitor (olaparib) after castration resistance develops"),
("Rationale", "BRCA2 mutation = broken homologous recombination repair. PARP inhibition blocks the backup repair pathway too → synthetic lethality → cancer cell cannot repair DNA → dies."),
])
story += CASE("Case 5 | 26-year-old Man — Testicular Cancer", [
("Presentation", "Painless testicular mass + back pain (retroperitoneal lymph node metastases!)"),
("Imaging", "Ultrasound → heterogeneous testicular lesion. CT → retroperitoneal LN metastases."),
("Diagnosis", "Metastatic Non-Seminomatous Germ Cell Tumour (NSGCT)"),
("Treatment", "Radical inguinal orchiectomy + BEP chemotherapy"),
("Key point", "Even with retroperitoneal spread, cure is the expected outcome with platinum-based chemo. Sperm banking before treatment is mandatory."),
])
# ═══════════════════════════════════════════════════════════════════
# LECTURE 9 – SYSTEMIC CANCERS
# ═══════════════════════════════════════════════════════════════════
story += SECTION_BREAK("LECTURE 9", "Systemic Cancers: Leukemia, Lymphoma, Multiple Myeloma & More")
# ── 1. What are systemic cancers ────────────────────────────────
story += H1("1. What Makes Systemic Cancers Different?")
story += P("A solid tumour (e.g., lung cancer) stays in one organ initially and then spreads. Systemic cancers are different: they arise from cells of the " + b("haematopoietic or immune system") + " — cells that normally circulate throughout the body in blood, bone marrow, and lymphatic tissue. Because the parent cell type is already systemic, the cancer is " + b("disseminated from the outset") + ". Treatment is therefore always systemic.")
story += P("Pancreatic cancer is included in this lecture because it arises from an endocrine/exocrine organ with widespread metabolic impact, even though it is technically a solid tumour.")
story += H2("1.1 Epidemiology")
story += BULLET([
(b("Leukemia") + " — ~644,000 new cases, ~335,000 deaths per year", 0),
(b("Non-Hodgkin Lymphoma") + " — ~457,000 new cases, ~255,000 deaths", 0),
(b("Hodgkin Lymphoma") + " — ~88,000 new cases, ~28,000 deaths", 0),
(b("Multiple Myeloma") + " — ~156,000 new cases, ~113,000 deaths", 0),
(b("Pancreatic Cancer") + " — ~511,000 new cases, ~467,000 deaths (near-unity mortality ratio)", 0),
])
# ── 2. Leukemia ─────────────────────────────────────────────────
story += H1("2. Leukemia")
story += P("Leukemia is cancer of " + b("white blood cell precursors") + ". It is classified along two axes:")
story += BULLET([
(b("Acute vs Chronic") + ": Acute = immature blast cells that cannot mature; develops in weeks; immediately life-threatening. Chronic = cells mature but live too long (fail to undergo apoptosis); progresses over months to years.", 0),
(b("Myeloid vs Lymphoid") + ": Myeloid = granulocytes, monocytes, red cell/platelet precursors. Lymphoid = B and T lymphocytes.", 0),
])
story += P("This gives four main types: " + b("AML, ALL, CML, CLL") + ".")
story += H2("2.1 Acute Myeloid Leukemia (AML)")
story += P("The most common acute leukemia in adults. Median age at diagnosis is 65–70 years. AML occurs when myeloid blast cells proliferate uncontrollably and fail to differentiate, crowding out normal bone marrow → anaemia, infections, and bleeding.")
story += P(b("Risk factors:") + " radiation, benzene exposure, prior chemotherapy (therapy-related AML), and progression from myelodysplastic syndrome.")
story += H3("Key AML Mutations")
story += BULLET([
(b("FLT3-ITD") + " — internal tandem duplication in FLT3 receptor tyrosine kinase → constitutively active → unstoppable proliferation. " + col("Poor prognosis.", "#C62828") + " Treatment: FLT3 inhibitors (midostaurin, gilteritinib).", 0),
(b("NPM1") + " — nucleophosmin; involved in DNA management. Mutated NPM1 is very sensitive to chemotherapy " + i("if FLT3-ITD is absent") + ".", 0),
(b("IDH1/IDH2") + " — metabolic enzymes. Mutations produce an oncometabolite (2-HG) that disrupts epigenetics. Targetable with IDH inhibitors (enasidenib, ivosidenib).", 0),
(b("TP53") + " — genome guardian lost → genomic chaos → very poor prognosis. Requires intensive chemotherapy strategies.", 0),
(b("RUNX1") + " — master differentiation transcription factor. Mutation → misfunctioning differentiation. High-risk subtype; consider venetoclax (BCL-2 inhibitor).", 0),
(b("PML-RARA") + " — defines the APL subtype (see below).", 0),
])
story += H3("Special Subtype: APL and the PML-RARA Fusion")
story += P("APL (Acute Promyelocytic Leukemia) is defined by the " + b("t(15;17)") + " translocation creating the PML-RARA fusion protein. This fusion blocks the retinoic acid receptor → myeloid cells are stuck at the promyelocyte stage and cannot mature.")
story += P(col(b("DANGER: DIC (Disseminated Intravascular Coagulation)"), "#C62828") + " — APL cells release tissue factor and other procoagulants → clots form throughout the bloodstream → clotting factors are consumed → then uncontrolled bleeding. This is life-threatening and requires immediate anticoagulation.")
story += P(b("Unique treatment — differentiation therapy:"))
story += BULLET([
(b("ATRA (All-Trans Retinoic Acid)") + " — a vitamin A derivative. Overwhelms the PML-RARA block by flooding the cell with retinoic acid, forcing promyelocytes to mature into functional neutrophils.", 0),
(b("Arsenic Trioxide (ATO)") + " — also forces differentiation AND directly degrades the PML-RARA fusion protein.", 0),
])
story += KEYPOINT("APL was once the most lethal leukemia. With ATRA + ATO, it now has a ~90% cure rate — one of oncology's greatest triumphs.")
story += H2("2.2 Acute Lymphoblastic Leukemia (ALL)")
story += P("ALL is the " + b("most common cancer in children") + " (peak age 2–5 years) but also has a smaller adult peak. It arises from immature lymphoid progenitors (most commonly B-cell precursors in B-ALL).")
story += BULLET([
(b("BCR-ABL1 (Philadelphia chromosome, t(9;22))") + " — constitutive tyrosine kinase signalling. " + col("Excellent prognosis", "#2E7D32") + " with TKI therapy (imatinib, dasatinib). Without TKI, historically poor.", 0),
(b("TEL-AML1 (ETV6-RUNX1) fusion") + " — " + col("good prognosis", "#2E7D32") + ". RUNX1 is a differentiation master. Responds well to multi-agent chemotherapy + corticosteroids.", 0),
(b("MLL rearrangements") + " — histone modification gene disrupted → " + col("poor prognosis", "#C62828") + ". Target with Menin-fusion complex inhibitors.", 0),
(b("NOTCH1") + " — affects T-cell development (common in T-ALL). " + col("Good prognosis", "#2E7D32") + " with standard chemotherapy.", 0),
])
story += CALLOUT("Important: ALL can spread to the CNS. Always give intrathecal chemotherapy (directly into spinal fluid) as CNS prophylaxis.")
story += H2("2.3 Chronic Myeloid Leukemia (CML)")
story += P("CML is defined by the " + b("BCR-ABL1 fusion") + " (Philadelphia chromosome, t(9;22)) in virtually all cases. This creates a constitutively active tyrosine kinase that drives non-stop myeloid proliferation. CML progresses through three phases: chronic → accelerated → blast crisis.")
story += P("Treatment: " + b("Tyrosine kinase inhibitors (TKIs)") + " — imatinib (Gleevec) was the first targeted cancer therapy and transformed CML from a uniformly fatal disease to a manageable chronic condition with near-normal life expectancy. Also: BCL-2 inhibitors (venetoclax) for refractory cases.")
story += H2("2.4 Chronic Lymphocytic Leukemia (CLL)")
story += P("CLL is the " + b("most common adult leukemia") + " overall. B-lymphocytes accumulate in blood, lymph nodes, and bone marrow. They are functionally useless (cannot mount a proper immune response) but refuse to die.")
story += BULLET([
(b("TP53 deletion/mutation (del17p)") + " — very poor prognosis. Apoptosis is non-functional.", 0),
(b("IGHV unmutated") + " — higher risk disease.", 0),
(b("Treatment") + ": BTK inhibitors (ibrutinib — blocks B-cell receptor survival signalling) + BCL-2 inhibitors (venetoclax — forces mitochondrial apoptosis). " + col(b("Avoid DNA-damaging chemotherapy if TP53 is mutated"), "#C62828") + " — chemo relies on p53 to trigger cell death, so it simply won't work.", 0),
("Advanced/refractory: CAR-T cell therapy and allogeneic bone marrow transplantation.", 0),
])
# ── 3. Lymphoma ─────────────────────────────────────────────────
story += H1("3. Lymphoma")
story += P("Lymphomas are cancers of " + b("mature lymphocytes") + " arising predominantly in lymph nodes, spleen, and lymphatic tissue. They present as painless lymphadenopathy (swollen nodes), often in the neck, axilla, or groin. The defining distinction is the presence or absence of " + b("Reed-Sternberg cells") + ".")
story += H2("3.1 Hodgkin Lymphoma (HL)")
story += P("HL is defined pathologically by the " + b("Reed-Sternberg cell") + " — a giant, binucleated or multinucleated B-lymphocyte with prominent 'owl-eye' nucleoli. These cells express " + b("CD30 and CD15") + ", which serve as diagnostic markers. HL is relatively uniform in biology and has excellent treatment responses.")
story += H3("Drivers and Pathways")
story += BULLET([
(b("EBV (Epstein-Barr Virus)") + " — the 'mono virus' can immortalise B-cells and trigger lymphomagenesis.", 0),
(b("JAK/STAT pathway activation") + " — constitutive growth and survival signalling.", 0),
(b("NF-κB activation") + " — anti-apoptotic survival signal.", 0),
(b("B2M loss") + " — prevents MHC-I expression → tumour cells become invisible to cytotoxic T-cells.", 0),
(b("PD-L1 overexpression") + " — tumour puts up the 'don't kill me' flag, engaging PD-1 on T-cells and disabling them.", 0),
])
story += P(b("Treatment:") + " ABVD chemotherapy (doxorubicin, bleomycin, vinblastine, dacarbazine) combined with " + b("PD-1 checkpoint inhibitors") + " (because PD-L1 is highly expressed). If TP53 is mutated, stem-cell transplant is required. Cure rate: ~85–90% with modern therapy.")
story += H2("3.2 Non-Hodgkin Lymphoma (NHL)")
story += P("NHL is an umbrella term for over 60 distinct lymphoma subtypes arising from B-cells (most common), T-cells, or NK cells. No Reed-Sternberg cells. Two main growth phenotypes:")
story += H3("Indolent NHL — Follicular Lymphoma")
story += P("The most common indolent subtype. Defined by the " + b("t(14;18)") + " translocation: the BCL2 gene is moved next to the immunoglobulin heavy chain (IgH) promoter on chromosome 14. The IgH promoter is constitutively active in B-cells (B-cells always need to make antibodies), so BCL-2 protein is " + b("massively overproduced") + ". BCL-2 is an anti-apoptotic protein → cells cannot die → they accumulate slowly (low Ki-67 index).")
story += BULLET([
("If asymptomatic: " + b("watch and wait") + " — chemo targets dividing cells; low proliferation = limited benefit.", 0),
("When treatment needed: " + b("rituximab") + " (anti-CD20 antibody → depletes B-cells via complement + ADCC) ± chemotherapy.", 0),
])
story += H3("Aggressive NHL — Diffuse Large B-Cell Lymphoma (DLBCL)")
story += P("The most common aggressive NHL subtype. Fast-growing (high Ki-67 index), requires immediate intensive therapy.")
story += BULLET([
(b("TP53") + " — aggressive, genomically unstable proliferation.", 0),
(b("MYC") + " — master proliferation driver (more divisions per day).", 0),
(b("BCL2") + " — anti-apoptotic (cells won't die despite all the DNA damage).", 0),
(b("BCL6") + " — normally facilitates antibody diversity in germinal centres by suppressing p53 and MMR. If permanently mutated ON, it continuously suppresses DNA repair and p53 → mutations accumulate.", 0),
])
story += P(b("Double/Triple Hit:") + " Concurrent MYC + BCL2 ± BCL6 rearrangements = worst prognosis. Cells divide fast AND refuse to die AND accumulate mutations.")
story += P(b("Treatment:") + " R-CHOP (rituximab + cyclophosphamide + doxorubicin + vincristine + prednisone). Relapsed/refractory: " + b("CAR-T cell therapy") + " (CD19-directed engineered T-cells).")
# ── 4. Multiple Myeloma ─────────────────────────────────────────
story += H1("4. Multiple Myeloma")
story += P("Multiple myeloma is cancer of " + b("plasma cells") + " — the terminally differentiated B-cells that live in bone marrow and produce antibodies. In myeloma, a clonal plasma cell expands and produces a monoclonal immunoglobulin (" + b("M-protein") + ") — a useless antibody — while crowding out normal bone marrow function.")
story += H2("4.1 Classic Presentation — CRAB")
story += BULLET([
(col(b("C"), "#E65100") + " = " + b("HyperCalcemia") + ": osteoclasts activated by myeloma cells eat bone → calcium floods the blood → confusion, constipation, kidney stones, cardiac arrhythmias.", 0),
(col(b("R"), "#E65100") + " = " + b("Renal failure") + ": M-protein light chains (Bence Jones proteins) precipitate in and clog kidney tubules.", 0),
(col(b("A"), "#E65100") + " = " + b("Anaemia") + ": myeloma cells crowd bone marrow → red cell production suppressed → fatigue, pallor, dyspnoea.", 0),
(col(b("B"), "#E65100") + " = " + b("Bone lesions") + ": lytic (punched-out) lesions from osteoclast activation → bone pain, pathological fractures, spinal cord compression.", 0),
])
story += H2("4.2 Cytogenetics")
story += BULLET([
(b("Hyperdiploid (~45%)") + " — extra copies of odd-numbered chromosomes (3, 5, 7, 9, 11, 15, 19, 21). " + col("Relatively favourable prognosis.", "#2E7D32"), 0),
(b("Non-hyperdiploid (~40%)") + " — IGH translocations place oncogenes next to the constitutively active immunoglobulin heavy chain promoter → oncogene over-expression. " + col("More aggressive.", "#C62828"), 0),
])
story += P(b("Secondary mutations") + " that develop over time: BRAF, KRAS (growth signalling), TP53 (very poor prognosis), DIS3 and FAM46C (RNA/protein stability), MYC (proliferation).")
story += H2("4.3 Treatments")
story += BULLET([
(b("Bortezomib (proteasome inhibitor)") + " — blocks the cell's garbage disposal. Plasma cells produce enormous amounts of protein; when they can't dispose of misfolded waste, the unfolded protein response triggers apoptosis. Myeloma cells are uniquely sensitive.", 0),
(b("Lenalidomide (IMiD)") + " — the Swiss Army knife of myeloma. It: (1) binds cereblon to degrade myeloma survival proteins, (2) activates T-cells and NK cells, (3) blocks IL-6 (the main myeloma survival cytokine), (4) inhibits VEGF (anti-angiogenesis).", 0),
(b("CAR-T cell therapy") + " — engineered T-cells targeting BCMA (B-cell maturation antigen) on myeloma cells.", 0),
(b("Autologous stem cell transplant (ASCT)") + " — high-dose melphalan ablates the bone marrow; patient's own harvested stem cells are reinfused.", 0),
])
# ── 5. Pancreatic Cancer ────────────────────────────────────────
story += H1("5. Pancreatic Cancer")
story += P("Pancreatic cancer is among the deadliest malignancies: ~511,000 new cases vs ~467,000 deaths annually (close to 1:1 case-to-fatality ratio). The main reason is " + b("late diagnosis") + " — the pancreas sits deep behind other organs, symptoms are vague (jaundice, weight loss, new-onset diabetes), and there is no established screening programme.")
story += H2("5.1 Risk Factors")
story += BULLET([
("Smoking — the most important modifiable risk factor.", 0),
("Chronic pancreatitis — repeated inflammation → cumulative DNA damage.", 0),
("Diabetes — especially new-onset type 2 in an older adult (can be an early sign, not just a risk factor).", 0),
("Obesity, high-fat diet.", 0),
("BRCA1/2 mutations — hereditary predisposition.", 0),
])
story += H2("5.2 Key Driver Mutations")
story += BULLET([
(b("KRAS") + " — mutated in ~90% of cases. The master growth gas pedal. Historically very difficult to target directly (now KRAS G12C inhibitors emerging).", 0),
(b("TP53") + " — genome guardian lost.", 0),
(b("SMAD4 / CDKN2A") + " — further tumour suppressor losses.", 0),
])
story += H2("5.3 Treatment")
story += BULLET([
("Standard chemotherapy: FOLFIRINOX (oxaliplatin + irinotecan + leucovorin + 5-FU) or gemcitabine + nab-paclitaxel.", 0),
("If " + b("BRCA mutated") + " → " + b("PARP inhibitors") + " (synthetic lethality: broken HR repair + PARP inhibition = cannot fix DNA = cell dies).", 0),
("If " + b("MSI-High") + " → " + b("PD-1 checkpoint inhibitors") + " (pembrolizumab).", 0),
])
# ── 6. Skin Cancer ──────────────────────────────────────────────
story += H1("6. Skin Cancer (Honorable Mention)")
story += P("Skin cancer is the " + b("most frequently diagnosed cancer worldwide") + ", with rising incidence in fair-skinned populations due to UV exposure.")
story += BULLET([
(b("Basal Cell Carcinoma (BCC)") + " — most common type. Locally destructive but metastasises in <1% of cases. Rarely fatal.", 0),
(b("Squamous Cell Carcinoma (SCC)") + " — second most common. Low but real metastatic potential.", 0),
(b("Melanoma") + " — least common but most lethal (~80–90% lethality once metastatic). Arises from melanocytes.", 0),
])
story += P(b("Key advantage: easy biopsy.") + " A quick skin biopsy gives rapid molecular profiling → personalised treatment is fast.")
story += H3("Melanoma: Key Mutations and Treatment")
story += BULLET([
(b("BRAF V600E (~50% of melanomas)") + " — constitutively active BRAF → MEK → ERK → constant proliferation. Target with BRAF inhibitor (vemurafenib/dabrafenib) + MEK inhibitor (trametinib). Combination = double blockade of the MAPK cascade.", 0),
(b("PD-L1 overexpression") + " → PD-1 inhibitors (pembrolizumab, nivolumab) restore T-cell attack on the tumour.", 0),
("For BRAF V600E + PD-L1: both strategies are used together for maximum effect.", 0),
])
# ── Case Studies L9 ─────────────────────────────────────────────
story += H1("7. Case Studies — Lecture 9")
story += CASE("Case 1 | 68-year-old Man — AML", [
("Presentation", "Fatigue, recurrent infections, easy bruising → pancytopenia pattern"),
("Workup", "Leukocytosis, anaemia, thrombocytopenia; blasts in peripheral blood and bone marrow"),
("Molecular", "FLT3-ITD: Positive | NPM1: Neg | TP53: Neg | IDH1/2: Neg | PML-RARA: Neg"),
("Treatment", "Induction chemo (cytarabine + anthracycline) + FLT3 inhibitor (midostaurin) ± HSCT"),
("Rationale", "FLT3-ITD = receptor always active → FLT3 inhibitor blocks ATP binding → proliferation signal cut off"),
])
story += CASE("Case 2 | 9-year-old Girl — B-ALL", [
("Presentation", "Bone pain, fever, lymphadenopathy"),
("Molecular", "TEL-AML1 fusion: Positive | BCR-ABL1: Neg"),
("Treatment", "Multi-agent chemo (antimetabolites + vinca alkaloids + topoisomerase inhibitors) + intrathecal MTX for CNS prophylaxis"),
("Rationale", "TEL-AML1 = good prognosis, no TKI needed. Intrathecal chemo is mandatory to prevent CNS relapse."),
])
story += CASE("Case 3 | 45-year-old Man — CML", [
("Presentation", "Leukocytosis, massive splenomegaly (spleen engorged with myeloid cells)"),
("Molecular", "BCR-ABL1 fusion: Positive"),
("Treatment", "TKI (imatinib/dasatinib) — daily oral pill blocking BCR-ABL1 ATP site"),
("Rationale", "BCR-ABL1 = constitutive tyrosine kinase. TKI blocks it → RAS/MAPK and JAK/STAT pathways go quiet → cells stop proliferating."),
])
story += CASE("Case 4 | 72-year-old Woman — CLL", [
("Presentation", "Lymphadenopathy, recurrent infections"),
("Molecular", "TP53 del17p: Positive | IGHV unmutated: Positive → high risk"),
("Why not chemo?", "TP53 is deleted → apoptosis pathway broken → chemotherapy (which kills by triggering p53-mediated apoptosis) will not work"),
("Treatment", "BTK inhibitor (ibrutinib) + BCL-2 inhibitor (venetoclax) → bypass p53 entirely"),
])
story += CASE("Case 5 | 24-year-old Man — Hodgkin Lymphoma", [
("Presentation", "Painless neck nodes + B symptoms (fever, night sweats, weight loss)"),
("Pathology", "Reed-Sternberg cells: CD30+ CD15+ | EBV+"),
("Molecular", "PD-L1 overexpression: Positive"),
("Treatment", "ABVD chemotherapy + PD-1 checkpoint inhibitor (PD-L1 overexpression = perfect target for pembrolizumab/nivolumab)"),
])
story += CASE("Case 6 | 60-year-old Woman — Indolent NHL (Follicular)", [
("Presentation", "Painless lymphadenopathy (found incidentally or slowly noticed)"),
("Molecular", "t(14;18) → BCL2 overexpression: Positive | Low Ki-67"),
("Treatment", "If asymptomatic: watch and wait. When needed: rituximab (anti-CD20) ± chemo"),
("Rationale", "BCL2 overexpression = slow accumulation of immortal cells. Chemo targets dividing cells; few cells divide → limited benefit early. Rituximab kills CD20+ B-cells regardless of proliferation rate."),
])
story += CASE("Case 7 | 58-year-old Man — Aggressive NHL (DLBCL, Double/Triple Hit)", [
("Presentation", "Rapidly growing neck mass + B symptoms"),
("Molecular", "MYC: Pos | BCL2: Pos | BCL6: Pos → Double/Triple hit biology"),
("Treatment", "R-CHOP (rituximab + cyclophosphamide + doxorubicin + vincristine + prednisone). Relapsed: CAR-T (CD19-directed)"),
])
story += CASE("Case 8 | 70-year-old Man — Multiple Myeloma", [
("Presentation", "Bone pain, anaemia, renal dysfunction — classic CRAB"),
("Molecular", "t(4;14): Positive (high-risk) | del17p: Negative"),
("Treatment", "Bortezomib + lenalidomide + dexamethasone (VRd) → consider ASCT"),
("Rationale", "Bortezomib = proteasome inhibitor (plasma cells overwhelmed by misfolded protein → apoptosis). Lenalidomide = multi-target IMiD."),
])
story += CASE("Case 9 | 66-year-old Man — Pancreatic Cancer", [
("Presentation", "Jaundice, weight loss, liver mets + ductal enlargement on MRI → obstructive jaundice from tumour in head of pancreas"),
("Molecular", "KRAS+, TP53+, BRCA neg, MSI neg"),
("Treatment", "FOLFIRINOX or gemcitabine/nab-paclitaxel. If BRCA+: PARP inhibitors. If MSI-H: pembrolizumab."),
])
story += CASE("Case 10 | 52-year-old Woman — Melanoma", [
("Presentation", "Changing pigmented lesion (new or evolving mole = urgent biopsy)"),
("Molecular", "BRAF V600E: Positive | PD-L1: Positive"),
("Treatment", "PD-1 inhibitor (pembrolizumab) + BRAF inhibitor (vemurafenib) + MEK inhibitor (trametinib) — dual MAPK cascade blockade + immune checkpoint release"),
])
# ═══════════════════════════════════════════════════════════════════
# EXAM QUESTIONS
# ═══════════════════════════════════════════════════════════════════
story += SECTION_BREAK("EXAM QUESTIONS", "20 Questions with Full Answers — Both Lectures")
qa_pairs = [
("1", "What are the two main categories of uterine cancer, and which is most common?",
"The two categories are:\n1. Endometrial carcinoma (90–95% of cases) — the most common form. Subtypes: endometrioid, serous, clear cell, carcinosarcoma, undifferentiated.\n2. Uterine sarcomas — rare, arising from muscle (leiomyosarcoma) or connective tissue (endometrial stromal sarcoma).\nEndometrial carcinoma is by far the most common."),
("2", "What does POLE mutation do, and why is it actually a good prognostic sign?",
"POLE encodes the proofreading domain of DNA polymerase epsilon. When mutated, the spell-checker is disabled → ultra-high mutation burden (thousands of mutations). These mutations generate large numbers of neoantigens on the tumour surface → the immune system strongly recognises and attacks the tumour → POLE-mutated endometrial cancers respond extremely well to PD-1/PD-L1 immunotherapy. More mutations = better immune recognition = better prognosis."),
("3", "Explain the FBXW7 mutation and its clinical consequences.",
"FBXW7 normally acts as the 'label maker' — it tags pro-survival oncoproteins (Cyclin E1, c-MYC, Notch1) for proteasomal destruction. When mutated, the label maker is broken → oncoproteins pile up → tumour progression. Clinical consequences: chemotherapy resistance, mTOR pathway over-activation (consider mTOR inhibitors), potential immunotherapy resistance, and a high-risk patient classification."),
("4", "What is BCG therapy in bladder cancer and why is it used?",
"BCG (Bacillus Calmette-Guérin) is a live attenuated mycobacterial strain instilled directly into the bladder after surgical resection (TURBT). It triggers a local innate and adaptive immune response — recruiting T-cells and macrophages — which then attack residual tumour cells. It is first-line treatment for non-muscle-invasive bladder cancer (NMIBC) and reduces both recurrence rates and progression to muscle-invasive disease."),
("5", "Explain the VHL → VEGF pathway in clear cell renal cell carcinoma.",
"VHL protein normally tags HIF-1α/2α for proteasomal degradation. When VHL is lost, HIF-α accumulates → the cell behaves as if in permanent hypoxia → HIF-α turns on VEGF and other angiogenic genes → the tumour builds its own extensive blood supply (angiogenesis). Treatment: VEGF inhibitors (sunitinib, axitinib, bevacizumab) cut off the blood supply; combined with PD-1 inhibitors to boost immune response."),
("6", "What is NSMP and how is it treated?",
"NSMP (No Specific Molecular Profile) is the most common endometrial subtype (~45%). Characterised by copy-number low profile and TP53 wild-type. Usually driven by oestrogen. Treatment targets the hormonal driver: post-menopause → aromatase inhibitors (block oestrogen synthesis in fat tissue); pre-menopause → ER/PR receptor blockers (tamoxifen/megestrol) that prevent oestrogen binding its receptor."),
("7", "What is the difference between NMIBC and MIBC? Why does it matter clinically?",
"NMIBC: tumour confined to urothelial lining and lamina propria, has not breached the detrusor muscle. Treatment: TURBT + intravesical BCG. Bladder is preserved. MIBC: tumour has invaded the detrusor muscle or beyond. Much higher metastatic risk. Treatment: neoadjuvant platinum chemotherapy + radical cystectomy (bladder removal). The distinction is critical because NMIBC is bladder-sparing while MIBC usually requires cystectomy."),
("8", "Name the 4 types of leukemia. What do 'acute' and 'chronic' mean?",
"4 types: AML, ALL, CML, CLL.\nAcute: cells are immature blasts stuck in an early developmental stage, unable to function. They accumulate rapidly; symptoms develop within weeks. Life-threatening quickly.\nChronic: cells mature but escape apoptosis (live too long). Disease develops over months to years. Less immediately life-threatening but can transform to acute phase.\nMyeloid: affects granulocytes, monocytes, platelets/red cell precursors. Lymphoid: affects B and T lymphocytes."),
("9", "What is the PML-RARA translocation? Why is it dangerous and how is it treated?",
"PML-RARA: t(15;17) translocation creating a fusion protein that blocks myeloid differentiation → promyelocytes pile up → APL (Acute Promyelocytic Leukemia). DANGER: APL cells release procoagulants → DIC (life-threatening clotting/bleeding cycle). Treatment: (1) heparin for DIC; (2) ATRA (all-trans retinoic acid) — forces cells to differentiate past the block; (3) Arsenic Trioxide — also forces differentiation and destroys the PML-RARA protein. Cure rate: ~90%."),
("10", "What is the BCR-ABL1 mutation? Which leukemias carry it?",
"BCR-ABL1 = Philadelphia chromosome, t(9;22) translocation. Creates a fusion oncoprotein with constitutively active tyrosine kinase → cells constantly receive proliferate/survive signals. Found in: CML (defining mutation in ~95%) and Ph+ ALL (worse prognosis if untreated). Treatment: TKIs (imatinib, dasatinib, nilotinib) block the ATP-binding site → kinase cannot function."),
("11", "What are Reed-Sternberg cells? Which lymphoma are they specific to?",
"Reed-Sternberg cells are large, binucleated or multinucleated B-lymphocytes with prominent 'owl-eye' nucleoli. They are pathognomonic (disease-defining) for Hodgkin Lymphoma. Their presence confirms HL; their absence means Non-Hodgkin Lymphoma by definition. They express CD30 and CD15, which are used as diagnostic markers on biopsy."),
("12", "Explain the t(14;18) translocation in follicular lymphoma.",
"The translocation moves the BCL2 gene from chromosome 18 to chromosome 14, placing it next to the immunoglobulin heavy chain (IgH) promoter. IgH is constitutively active in B-cells. Result: BCL-2 protein is massively overproduced. BCL-2 is anti-apoptotic → follicular lymphoma cells cannot die → they accumulate slowly (low Ki-67). Indolent course: watch and wait if asymptomatic. When treatment is needed: rituximab (anti-CD20) ± chemotherapy."),
("13", "What is the CRAB acronym in multiple myeloma?",
"CRAB = end-organ damage criteria for symptomatic myeloma:\nC = HyperCalcemia: osteoclasts activated → bone destruction → calcium floods blood.\nR = Renal failure: Bence Jones proteins (light chains) clog kidney tubules.\nA = Anaemia: myeloma crowds bone marrow → red cell production suppressed.\nB = Bone lesions: lytic (punched-out) lesions → bone pain, pathological fractures.\nAt least one CRAB criterion distinguishes symptomatic myeloma (requiring treatment) from MGUS or smouldering myeloma."),
("14", "How does bortezomib work against myeloma?",
"Bortezomib is a proteasome inhibitor. The proteasome is the cell's garbage disposal system — it degrades misfolded and excess proteins. Plasma cells produce massive amounts of immunoglobulin → generate lots of misfolded protein waste → they depend heavily on functioning proteasomes to survive. When bortezomib blocks the proteasome: misfolded proteins pile up → unfolded protein response (UPR) → endoplasmic reticulum stress becomes overwhelming → apoptosis is triggered. Myeloma cells are far more sensitive than normal cells because of their extreme protein-production load."),
("15", "Why is CLL with TP53 mutation (del17p) treated with BTK/BCL-2 inhibitors instead of chemotherapy?",
"Standard chemotherapy causes DNA damage, relying on p53 to detect this damage and trigger apoptosis. In TP53-deleted CLL, p53 is non-functional: chemo damages DNA, but the apoptosis signal never fires → the drug has no effect and only causes side effects. Solution: bypass p53 entirely. BTK inhibitors (ibrutinib) deprive cells of B-cell receptor survival signalling. BCL-2 inhibitors (venetoclax) directly open the mitochondrial apoptosis pathway — forcing cell death without needing p53."),
("16", "What is 'double hit' lymphoma? Why is it particularly bad?",
"Double hit lymphoma (DHL) = DLBCL with concurrent rearrangements of MYC + BCL2 (triple hit adds BCL6). MYC = master proliferation driver → cells divide extremely fast. BCL-2 = anti-apoptotic → cells cannot die. BCL-6 = represses p53 and DNA repair → mutations accumulate. Combination: tumour cells proliferate fast AND cannot die AND accumulate mutations. Very high Ki-67 (>90%). Poor prognosis with standard R-CHOP → requires dose-intensified regimens (R-EPOCH) and CAR-T for relapsed/refractory disease."),
("17", "Explain the mechanism of ATRA in treating APL.",
"APL is caused by the PML-RARA fusion protein, which blocks retinoic acid receptor activity → myeloid cells stuck at promyelocyte stage. ATRA (All-Trans Retinoic Acid) is a synthetic vitamin A derivative. Mechanism: ATRA floods the cell at high concentrations → binds the RARA component of the fusion protein with high affinity → overcomes the differentiation block → promyelocytes resume maturation into functional neutrophils. This is differentiation therapy: instead of killing cancer cells directly, you force them to grow up. Combined with Arsenic Trioxide: ~90% complete remission."),
("18", "What makes lenalidomide special in myeloma treatment?",
"Lenalidomide (an IMiD) is uniquely multi-functional:\n1. Protein degradation: binds cereblon → marks myeloma survival proteins for proteasomal destruction → stops proliferation.\n2. T-cell activation: stimulates T-cell proliferation → boosts anti-tumour immunity.\n3. NK cell enhancement: strengthens NK cells to detect and kill myeloma cells.\n4. Anti-cytokine: reduces IL-6 (the main myeloma survival/growth signal) and TNF-α.\n5. Anti-angiogenesis: blocks VEGF → cuts off tumour blood supply.\nUsed in induction, maintenance, and relapsed/refractory settings."),
("19", "A patient has BRAF V600E melanoma with PD-L1 expression. What is the treatment rationale?",
"Two parallel strategies:\n1. Immune checkpoint blockade (PD-L1 overexpressed): PD-L1 on tumour binds PD-1 on T-cells → T-cells deactivated. PD-1 inhibitor (pembrolizumab/nivolumab) blocks this → T-cells reactivated → attack tumour.\n2. MAPK pathway blockade (BRAF V600E mutated): mutant BRAF → MEK → ERK = permanently on → constant proliferation. BRAF inhibitor (vemurafenib/dabrafenib) + MEK inhibitor (trametinib) = double blockade at two points in the same pathway (prevents single-point resistance). Current standard: both strategies combined for maximum effect."),
("20", "Walk through the general diagnostic and treatment workflow for a systemic cancer.",
"Step 1 — Clinical presentation: fatigue, infections, bleeding, lymphadenopathy, bone pain, B symptoms (fever, night sweats, weight loss).\nStep 2 — Blood work (CBC): leukocytosis/cytopenia patterns suggest leukemia vs lymphoma.\nStep 3 — Bone marrow biopsy: defines blast %, cell morphology, immunophenotype.\nStep 4 — Molecular profiling: cytogenetics (FISH/karyotype for translocations) + NGS (FLT3, NPM1, IDH, TP53, KRAS etc.).\nStep 5 — Risk stratification: good/intermediate/poor risk based on molecular profile.\nStep 6 — Treatment: low-risk → standard chemo; high-risk (TP53, FLT3) → targeted agents + intensified chemo + stem cell transplant; immunotherapy where indicated (MSI-H, PD-L1+, CD20+, CD19 for CAR-T).\nStep 7 — MRD monitoring: measurable residual disease guides further treatment decisions.")
]
for num, q, a in qa_pairs:
story += QA(num, q, a)
# Final page
story.append(PageBreak())
story.append(Spacer(1, 4*cm))
story.append(Paragraph("Good luck on your exam!", ParagraphStyle('gl',
fontName='Helvetica-Bold', fontSize=26, textColor=NAVY, alignment=TA_CENTER)))
story.append(Spacer(1, 0.5*cm))
story.append(Paragraph("Oncology Lectures 8 & 9 | D. Hakimian, M.Sc.", ParagraphStyle('gl2',
fontName='Helvetica-Oblique', fontSize=12, textColor=MGRAY, alignment=TA_CENTER)))
# ── Build PDF ────────────────────────────────────────────────────────────────
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
leftMargin=1.8*cm,
rightMargin=1.8*cm,
topMargin=1.5*cm,
bottomMargin=1.5*cm,
title="Oncology Lectures 8 & 9 — Study Notes",
author="D. Hakimian"
)
doc.build(
story,
onFirstPage=on_first_page,
onLaterPages=on_later_pages
)
print(f"PDF saved to: {OUTPUT}")
python3 /home/daytona/workspace/oncology-merged/build_notes.py 2>&1
ls -lh /home/daytona/workspace/oncology-merged/Oncology_L8_L9_Study_Notes.pdf
Oncology L8 L9 Study Notes
PDF Document · PDF