hematology malignancies 101

Your credits are exhausted. You can purchase a top-up or subscribe to a plan to continue using Orris. If you're already subscribed, your daily credits will reset tomorrow.

hematology malignancies 101

Reading File
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Excellent - I now have comprehensive material from Robbins Pathology covering the full scope of hematologic malignancies. I have enough to write a thorough "101" overview. Let me compile the final answer.

Hematologic Malignancies 101

A structured overview based on Robbins, Cotran & Kumar Pathologic Basis of Disease and Harrison's Principles of Internal Medicine, 22nd Edition (2025).

The Big Picture

Hematologic malignancies arise from clonal proliferation of hematopoietic cells - the same cells that normally give rise to red cells, granulocytes, monocytes, platelets, and lymphocytes from a common hematopoietic stem cell (HSC). Because these cells circulate or migrate widely, the disease is usually systemic from the start - unlike solid tumors that spread later.
They fall into three broad lineages:
LineageOriginMajor Diseases
MyeloidMyeloid progenitors (bone marrow)AML, MDS, CML, PV, ET, MF
LymphoidB, T, or NK cellsALL, CLL, lymphomas, myeloma
HistiocyticDendritic cells / macrophagesLangerhans cell histiocytosis

I. Lymphoid Neoplasms

Arise from B or T cells arrested at various stages of maturation. A key rule: the genetic hit that causes malignancy often mimics the normal stage of differentiation at which the cell is stuck.

Precursor Lymphoid Neoplasms

Acute Lymphoblastic Leukemia / Lymphoma (ALL)

  • Most common cancer in children (peak age 3-5); B-cell >> T-cell
  • Presents with bone marrow failure: anemia, thrombocytopenia, neutropenia
  • Lymphoblasts (immature, TdT+) flood the marrow
  • Key genetics:
    • t(12;21) ETV6-RUNX1 - most common in pediatric B-ALL; favorable
    • t(9;22) BCR-ABL1 (Philadelphia chromosome) - present in ~25% of adult ALL; poor prognosis without targeted therapy
    • MLL/KMT2A rearrangements - infant ALL; poor prognosis
  • T-ALL: often presents as mediastinal mass in adolescent males
  • Treatment: multi-agent chemotherapy; imatinib/dasatinib for Ph+ ALL

Mature (Peripheral) B-Cell Neoplasms

Chronic Lymphocytic Leukemia / Small Lymphocytic Lymphoma (CLL/SLL)

  • Most common leukemia in adults in the Western world
  • Clonal proliferation of small, mature-appearing B cells (CD5+, CD19+, CD23+)
  • Smudge cells on peripheral smear - a classic finding
  • Indolent; many patients have prolonged survival without treatment
  • Del(17p) and TP53 mutation = poor prognosis
  • Complications: autoimmune hemolytic anemia (AIHA), hypogammaglobulinemia, Richter transformation to DLBCL

Follicular Lymphoma

  • Second most common NHL in adults; indolent
  • t(14;18) - overexpresses BCL-2, blocking apoptosis
  • Histology: neoplastic germinal centers throughout the node
  • Paradox: highly responsive to therapy but rarely curable with chemotherapy alone; tends to relapse and may transform to DLBCL

Diffuse Large B-Cell Lymphoma (DLBCL)

  • Most common NHL overall (~30-40% of adult NHL)
  • Aggressive but potentially curable with R-CHOP (rituximab + cyclophosphamide + doxorubicin + vincristine + prednisone)
  • GCB vs. ABC (activated B-cell) subtypes have different prognoses
  • BCL-2, BCL-6, MYC rearrangements important prognostically

Burkitt Lymphoma

  • Extremely aggressive; doubling time ~24 hours
  • t(8;14) - MYC overexpression (also t(2;8) or t(8;22))
  • "Starry sky" appearance on histology - macrophages engulfing apoptotic tumor cells
  • Three forms: endemic (African, jaw masses, EBV-associated), sporadic, immunodeficiency-associated
  • Highly curable with intensive short-duration chemotherapy

Multiple Myeloma (Plasma Cell Myeloma)

  • Clonal proliferation of terminally differentiated B cells (plasma cells) in bone marrow
  • Secretes monoclonal immunoglobulin (M-protein) - most commonly IgG or IgA
  • Diagnostic criteria (CRAB + SLiM):
    • C - hyperCalcemia
    • R - Renal insufficiency
    • A - Anemia
    • B - Bone lesions (lytic "punched-out" on X-ray)
      • SLiM: >60% clonal plasma cells, involved/uninvolved FLC ratio >100, >1 focal lesion on MRI
  • Rouleaux formation on blood smear; elevated ESR
  • Precursor: MGUS (monoclonal gammopathy of undetermined significance) → smoldering myeloma → myeloma
  • Treatment: proteasome inhibitors (bortezomib), IMiDs (lenalidomide), daratumumab + autologous SCT in eligible patients

Hodgkin Lymphoma (HL)

  • Unique: neoplastic Reed-Sternberg cells (large binucleated "owl-eye" cells) in an inflammatory background
  • Classic HL (cHL) types: nodular sclerosis (most common, young adults, mediastinum), mixed cellularity, lymphocyte-rich, lymphocyte-depleted
  • Nodular lymphocyte-predominant HL (NLPHL) - distinct entity; RS variants called "popcorn cells" (CD20+, CD15-, CD30-)
  • Classic RS cell: CD15+, CD30+, CD20-, EBV-associated in many cases
  • Bimodal age distribution: young adults (15-35) and >55 years
  • Contiguous lymph node spread (unlike NHL which is noncontiguous)
  • Highly curable: >90% cure rate in early-stage disease with ABVD chemotherapy ± radiation

II. Myeloid Neoplasms

Acute Myeloid Leukemia (AML)

  • Clonal expansion of myeloid blasts (≥20% blasts in marrow by WHO criteria)
  • WHO 2022 5th edition classification: grouped by defining genetic abnormalities (which take diagnostic precedence regardless of blast count in some cases)
  • Key favorable cytogenetics:
    • t(8;21) RUNX1-RUNX1T1 - AML with Auer rods
    • inv(16) or t(16;16) CBFB-MYH11 - eosinophilic marrow
    • APL: t(15;17) PML-RARA - acute promyelocytic leukemia; emergency due to DIC risk; treated with ATRA + arsenic trioxide (not standard chemo)
  • Poor prognosis: complex karyotype, monosomy 5/7, TP53, FLT3-ITD
  • FLT3 inhibitors (midostaurin, quizartinib), IDH1/2 inhibitors (ivosidenib, enasidenib) are targeted options
  • Standard induction: "7+3" (cytarabine 7 days + daunorubicin/idarubicin 3 days)

Myelodysplastic Neoplasms (MDS)

  • Clonal HSC disorder: ineffective hematopoiesis with peripheral cytopenias despite a cellular marrow
  • Dysplastic changes in ≥1 cell lines; blast count <20% (otherwise AML)
  • Risk of transformation to AML ("pre-leukemia")
  • Key cytogenetics: del(5q) - relatively favorable; monosomy 7 - poor
  • IPSS-R scoring guides prognosis and treatment intensity
  • Treatment: ESAs, lenalidomide (for del5q), azacitidine/decitabine (hypomethylating agents), allogeneic SCT for eligible patients

Myeloproliferative Neoplasms (MPNs)

All characterized by proliferation of mature, functional cells; driver mutations activate JAK-STAT signaling.
DiseaseKey MutationHallmarkRisk
CMLBCR-ABL1 (Ph chr)Leukocytosis, splenomegaly, basophiliaBlast crisis
Polycythemia Vera (PV)JAK2 V617F (>95%)Erythrocytosis, hyperviscosity, pruritus after bathingThrombosis, MF transformation
Essential Thrombocythemia (ET)JAK2, CALR, or MPLThrombocytosis (>450 × 10⁹/L)Thrombosis or bleeding
Primary Myelofibrosis (MF)JAK2, CALR, or MPLFibrotic marrow, extramedullary hematopoiesis, leukoerythroblastic smearTransformation to AML
  • CML is the paradigm of targeted therapy: imatinib (TKI) transformed it from a fatal disease to a chronic, manageable condition with near-normal life expectancy
  • JAK2 inhibitors (ruxolitinib, fedratinib) are mainstay for PV and MF

III. Key Concepts That Cut Across All Categories

The WHO Classification Framework (5th ed., 2022)

Integrates morphology, immunophenotype, cytogenetics, and molecular genetics. Genetic abnormalities now take precedence over morphology in many entities.

Clonal Hematopoiesis

  • Small clonal mutations (most commonly DNMT3A, TET2, ASXL1) accumulate in HSCs with aging
  • CHIP (Clonal Hematopoiesis of Indeterminate Potential): present in ~10% of people >70 years
  • Associated with increased risk of overt hematologic malignancy and cardiovascular disease
  • Represents the earliest identifiable step in the continuum toward leukemia

Normal Cell of Origin Determines Behavior

A key principle from Robbins: "Virtually all lymphoid neoplasms resemble normal immune cells at discrete stages of differentiation... this is clinically relevant because it allows the application of ancillary studies (immunophenotyping) to define neoplasms and is the basis for many of the clinical behaviors of specific tumor types."

Staging vs. Grading

  • Hematologic malignancies are not staged like solid tumors - they are already systemic at presentation in most cases
  • For lymphomas: Ann Arbor staging (I-IV) and Lugano modification are used
  • For CLL: Rai and Binet staging
  • For myeloma: ISS (International Staging System) based on beta-2 microglobulin and albumin

Treatment Pillars

ApproachExamples
Cytotoxic chemotherapy7+3 (AML), R-CHOP (DLBCL), ABVD (HL)
Targeted therapyImatinib (CML), ATRA (APL), BTK inhibitors (CLL/MCL)
ImmunotherapyRituximab (anti-CD20), blinatumomab (BiTE), CAR-T cells
Stem cell transplantAutologous (myeloma), allogeneic (AML, ALL, MDS, MF)
Hypomethylating agentsAzacitidine, decitabine (MDS, AML elderly)

Quick Reference: "Must-Know" Associations

FindingDiagnosis
Reed-Sternberg cells (owl-eye)Hodgkin lymphoma
Philadelphia chromosome t(9;22)CML (or high-risk ALL)
t(15;17) + DIC in AMLAPL - treat with ATRA STAT
t(14;18) BCL-2 overexpressionFollicular lymphoma
t(8;14) MYC overexpressionBurkitt lymphoma
Starry sky histologyBurkitt lymphoma
Smudge cells + CD5+/CD23+CLL
Lytic bone lesions + M-proteinMultiple myeloma
JAK2 V617F + erythrocytosisPolycythemia vera
AUER rods in blastsAML (esp. t(8;21) or APL)
TdT+ lymphoblastsALL
del(5q) + anemiaMDS (lenalidomide-responsive)

Sources: Robbins, Cotran & Kumar Pathologic Basis of Disease (10th ed.); Harrison's Principles of Internal Medicine, 22nd ed. (2025, McGraw-Hill)

i have a presentation on Plasma Cell Disorders MGUS Smouldering myeloma Multiple Myeloma Pathophysiology Clinical Features - specific CRAB criteria Recurrent infections Bone pain Renal impairment Investigations - specific Management - specific prepare slides please

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

mkdir -p /tmp/workspace/plasma-cell-disorders && ls /tmp/workspace/plasma-cell-disorders/

Writing File

~/plasma-cell-disorders/build_pptx.py

from pptx import Presentation
from pptx.util import Inches, Pt, Emu
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.oxml.ns import qn
from lxml import etree
from io import BytesIO

# ── Colour palette ─────────────────────────────────────────────────────────────
NAVY       = RGBColor(0x0D, 0x2D, 0x6B)   # deep navy  – headers / accents
TEAL       = RGBColor(0x00, 0x7B, 0x8A)   # teal       – sub-accents / bullets
LIGHT_BLUE = RGBColor(0xD6, 0xEA, 0xF8)   # sky blue   – content bg
WHITE      = RGBColor(0xFF, 0xFF, 0xFF)
DARK_GREY  = RGBColor(0x22, 0x22, 0x22)
MID_GREY   = RGBColor(0x55, 0x55, 0x55)
GOLD       = RGBColor(0xE6, 0xAC, 0x00)
RED_ACCENT = RGBColor(0xC0, 0x39, 0x2B)
GREEN      = RGBColor(0x1A, 0x7A, 0x3C)
AMBER      = RGBColor(0xD4, 0x6F, 0x00)

prs = Presentation()
prs.slide_width  = Inches(13.333)
prs.slide_height = Inches(7.5)
blank = prs.slide_layouts[6]

# ── Helper utilities ────────────────────────────────────────────────────────────
def add_rect(slide, x, y, w, h, fill_color=None, line_color=None, line_width=None):
    shape = slide.shapes.add_shape(1, Inches(x), Inches(y), Inches(w), Inches(h))
    if fill_color:
        shape.fill.solid()
        shape.fill.fore_color.rgb = fill_color
    else:
        shape.fill.background()
    if line_color:
        shape.line.color.rgb = line_color
        if line_width:
            shape.line.width = Pt(line_width)
    else:
        shape.line.fill.background()
    return shape

def add_tb(slide, x, y, w, h, text="", font_size=18, bold=False, color=DARK_GREY,
           align=PP_ALIGN.LEFT, wrap=True, italic=False):
    tb  = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
    tf  = tb.text_frame
    tf.word_wrap = wrap
    tf.margin_left = tf.margin_right = tf.margin_top = tf.margin_bottom = 0
    p   = tf.paragraphs[0]
    p.alignment = align
    if text:
        run = p.add_run()
        run.text = text
        run.font.size  = Pt(font_size)
        run.font.bold  = bold
        run.font.italic = italic
        run.font.color.rgb = color
        run.font.name  = "Calibri"
    return tf

def add_bullet_tb(slide, x, y, w, h, items, font_size=15, color=DARK_GREY,
                  bullet_color=TEAL, bold_first=False, line_spacing=1.15):
    tb  = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
    tf  = tb.text_frame
    tf.word_wrap = True
    tf.margin_left = tf.margin_right = tf.margin_top = tf.margin_bottom = 0
    for i, item in enumerate(items):
        p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
        p.space_before = Pt(2)
        run = p.add_run()
        run.text = f"  •  {item}"
        run.font.size  = Pt(font_size)
        run.font.name  = "Calibri"
        run.font.bold  = (bold_first and i == 0)
        run.font.color.rgb = color
    return tf

def header_bar(slide, title, subtitle=None):
    """Navy top bar with title + optional subtitle"""
    add_rect(slide, 0, 0, 13.333, 1.15, fill_color=NAVY)
    add_tb(slide, 0.4, 0.08, 12.5, 0.65, title, font_size=30, bold=True,
           color=WHITE, align=PP_ALIGN.LEFT)
    if subtitle:
        add_tb(slide, 0.4, 0.72, 12.5, 0.38, subtitle, font_size=14,
               color=RGBColor(0xAD, 0xD8, 0xE6), align=PP_ALIGN.LEFT, italic=True)

def footer_bar(slide, text="Plasma Cell Disorders | Hematology"):
    add_rect(slide, 0, 7.2, 13.333, 0.3, fill_color=NAVY)
    add_tb(slide, 0.3, 7.21, 12.5, 0.27, text, font_size=9,
           color=RGBColor(0xAD, 0xD8, 0xE6), align=PP_ALIGN.LEFT)

def divider(slide, y):
    add_rect(slide, 0.4, y, 12.5, 0.03, fill_color=TEAL)

def card(slide, x, y, w, h, bg=LIGHT_BLUE, border=TEAL, border_w=1.2):
    add_rect(slide, x, y, w, h, fill_color=bg, line_color=border, line_width=border_w)

# ══════════════════════════════════════════════════════════════════════════════
#  SLIDE 1 – TITLE
# ══════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, fill_color=NAVY)
# diagonal accent strip
add_rect(s, 0, 5.8, 13.333, 1.7, fill_color=TEAL)
add_rect(s, 0, 5.6, 13.333, 0.25, fill_color=GOLD)

add_tb(s, 1, 1.2, 11, 1.0, "PLASMA CELL DISORDERS", font_size=42, bold=True,
       color=WHITE, align=PP_ALIGN.CENTER)
add_tb(s, 1, 2.3, 11, 0.5, "MGUS  ·  Smouldering Myeloma  ·  Multiple Myeloma",
       font_size=20, color=GOLD, align=PP_ALIGN.CENTER, italic=True)
divider_line = s.shapes.add_shape(1, Inches(3.5), Inches(2.95), Inches(6.3), Inches(0.04))
divider_line.fill.solid(); divider_line.fill.fore_color.rgb = GOLD
divider_line.line.fill.background()

add_tb(s, 1, 3.1, 11, 0.45,
       "Pathophysiology  ·  Clinical Features  ·  Investigations  ·  Management",
       font_size=16, color=RGBColor(0xAD, 0xD8, 0xE6), align=PP_ALIGN.CENTER)
add_tb(s, 1, 5.95, 11, 0.5, "Hematology Oncology Presentation", font_size=14,
       color=WHITE, align=PP_ALIGN.CENTER, italic=True)

# ══════════════════════════════════════════════════════════════════════════════
#  SLIDE 2 – OVERVIEW / SPECTRUM
# ══════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, fill_color=WHITE)
header_bar(s, "The Plasma Cell Disorder Spectrum",
           "A continuum of clonal plasma cell proliferation")
footer_bar(s)

# Spectrum arrow bar
add_rect(s, 0.4, 1.4, 12.5, 0.55, fill_color=RGBColor(0xE8, 0xF4, 0xFD))
for x_pos, lbl, clr in [
    (0.5,  "MGUS",               GREEN),
    (3.8,  "Smouldering MM",     AMBER),
    (7.6,  "Multiple Myeloma",   RED_ACCENT),
]:
    add_rect(s, x_pos, 1.4, 3.0, 0.55, fill_color=clr)
    add_tb(s, x_pos, 1.4, 3.0, 0.55, lbl, font_size=16, bold=True,
           color=WHITE, align=PP_ALIGN.CENTER)
# arrow connectors text
add_tb(s, 3.5, 1.48, 0.6, 0.4, "➜", font_size=22, color=NAVY, align=PP_ALIGN.CENTER)
add_tb(s, 7.3, 1.48, 0.6, 0.4, "➜", font_size=22, color=NAVY, align=PP_ALIGN.CENTER)
add_tb(s, 10.6, 1.45, 2.3, 0.55, "~1%/yr risk", font_size=11,
       color=AMBER, align=PP_ALIGN.CENTER, italic=True)

# Three columns
cols = [
    (0.35, "MGUS", GREEN, [
        "M-protein < 3 g/dL",
        "Clonal BM plasma cells < 10%",
        "No CRAB criteria",
        "No end-organ damage",
        "~1% per year risk of progression",
        "Prevalence: ~3% in adults >50 yrs",
    ]),
    (4.55, "Smouldering MM", AMBER, [
        "M-protein ≥ 3 g/dL  OR",
        "Clonal BM plasma cells 10–60%",
        "No CRAB / myeloma defining events",
        "2-year risk: ~10% in standard risk",
        "High-risk: up to 50% in 2 years",
        "Active surveillance mandatory",
    ]),
    (8.75, "Multiple Myeloma", RED_ACCENT, [
        "Clonal BM plasma cells ≥ 10%",
        "CRAB criteria present  OR",
        "Any myeloma-defining event",
        "Biopsy-proven plasmacytoma",
        "Requires immediate treatment",
        "Median survival: 5–7 years",
    ]),
]
for cx, ctitle, cclr, citems in cols:
    card(s, cx, 2.1, 4.05, 0.45, bg=cclr, border=cclr)
    add_tb(s, cx+0.05, 2.1, 3.95, 0.45, ctitle, font_size=14, bold=True,
           color=WHITE, align=PP_ALIGN.CENTER)
    card(s, cx, 2.55, 4.05, 4.3, bg=RGBColor(0xF5, 0xF9, 0xFF), border=cclr, border_w=1.5)
    add_bullet_tb(s, cx+0.1, 2.62, 3.85, 4.1, citems, font_size=13, color=DARK_GREY)

# ══════════════════════════════════════════════════════════════════════════════
#  SLIDE 3 – PATHOPHYSIOLOGY
# ══════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, fill_color=WHITE)
header_bar(s, "Pathophysiology of Multiple Myeloma",
           "Clonal plasma cell expansion driving multi-organ dysfunction")
footer_bar(s)

# Left column – molecular basis
card(s, 0.35, 1.3, 5.8, 5.65, bg=RGBColor(0xEA, 0xF4, 0xFF), border=NAVY, border_w=1.5)
add_tb(s, 0.45, 1.35, 5.6, 0.4, "Molecular Basis", font_size=15, bold=True, color=NAVY)
divider(s, 1.77)
mol_items = [
    "HSC → B-cell → germinal centre → plasma cell",
    "Initiating hit: Ig gene translocations (t(4;14), t(14;16), t(11;14))",
    "Secondary hits: MYC dysregulation, RAS/MAPK mutations, del(17p) TP53",
    "RANKL upregulation → osteoclast activation → bone destruction",
    "IL-6 (myeloma growth factor) secreted by stromal cells",
    "DKK1 inhibits Wnt → suppresses osteoblasts",
    "Excess M-protein → renal tubular injury (cast nephropathy)",
    "BM infiltration → cytopenias (anaemia, thrombocytopenia)",
    "Suppressed normal Ig → hypogammaglobulinaemia → infections",
]
add_bullet_tb(s, 0.45, 1.85, 5.6, 5.1, mol_items, font_size=12.5, color=DARK_GREY)

# Right column – bone marrow microenvironment
card(s, 6.5, 1.3, 6.48, 5.65, bg=RGBColor(0xFD, 0xF0, 0xF0), border=RED_ACCENT, border_w=1.5)
add_tb(s, 6.6, 1.35, 6.3, 0.4, "The Myeloma Bone Marrow Niche", font_size=15,
       bold=True, color=RED_ACCENT)
divider(s, 1.77)
bm_items = [
    "Myeloma cells interact with BM stromal cells via adhesion molecules (VLA-4, VCAM-1)",
    "Stromal contact triggers NF-κB, PI3K/AKT, RAS/MAPK → survival & drug resistance",
    "Angiogenesis increased (VEGF secretion)",
    "Immunosuppressive milieu: Tregs, MDSCs, PD-L1 expression",
    "Osteolytic cycle: M-cells → ↑RANKL + ↓OPG → osteoclasts → bone destruction",
    "Calcium released from bone → hypercalcaemia",
    "Bence Jones proteins (free light chains) filtered → tubular damage → AKI/CKD",
    "Amyloid deposits possible (AL amyloidosis) with systemic infiltration",
]
add_bullet_tb(s, 6.6, 1.85, 6.2, 5.1, bm_items, font_size=12.5, color=DARK_GREY)

# ══════════════════════════════════════════════════════════════════════════════
#  SLIDE 4 – CLINICAL FEATURES + CRAB
# ══════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, fill_color=WHITE)
header_bar(s, "Clinical Features — CRAB Criteria & Myeloma-Defining Events",
           "End-organ damage requiring initiation of therapy")
footer_bar(s)

# CRAB boxes
crab_data = [
    ("C", "HyperCalcaemia",  RED_ACCENT,
     ["Serum Ca > 0.25 mmol/L above ULN  or  > 2.75 mmol/L",
      "Mechanism: RANKL-mediated osteoclast activation",
      "Features: Nausea, polyuria, polydipsia, confusion",
      "'Bones, Groans, Moans, Psychic Overtones'"]),
    ("R", "Renal Failure",   AMBER,
     ["Creatinine > 177 µmol/L  or  CrCl < 40 mL/min",
      "Mechanisms: Cast nephropathy (commonest), amyloid,",
      "  hypercalcaemia, hyperuricaemia, drug toxicity",
      "Light chains precipitate with Tamm-Horsfall protein"]),
    ("A", "Anaemia",         TEAL,
     ["Hb < 100 g/L  or  > 20 g/L below LLN",
      "Mechanism: BM infiltration + cytokine suppression",
      "Normocytic normochromic; Rouleaux on blood film",
      "Raised ESR due to M-protein"]),
    ("B", "Bone Lesions",    NAVY,
     ["Lytic bone lesions on skeletal survey / WB-MRI",
      "Mechanism: Osteoclast activation, osteoblast suppression",
      "Sites: Skull, spine, ribs, pelvis, proximal long bones",
      "Vertebral fractures → back pain, cord compression"]),
]
box_w = 3.1
for i, (letter, title, clr, pts) in enumerate(crab_data):
    xpos = 0.25 + i * 3.27
    # Coloured letter box
    add_rect(s, xpos, 1.3, 0.7, 0.7, fill_color=clr)
    add_tb(s, xpos, 1.3, 0.7, 0.7, letter, font_size=32, bold=True,
           color=WHITE, align=PP_ALIGN.CENTER)
    add_rect(s, xpos+0.7, 1.3, 2.5, 0.7, fill_color=clr)
    add_tb(s, xpos+0.72, 1.32, 2.4, 0.65, title, font_size=14, bold=True,
           color=WHITE, align=PP_ALIGN.LEFT)
    card(s, xpos, 2.0, 3.2, 3.2, bg=RGBColor(0xF7, 0xF9, 0xFF), border=clr, border_w=1.2)
    add_bullet_tb(s, xpos+0.1, 2.08, 3.0, 3.0, pts, font_size=11.5, color=DARK_GREY)

# SLiM criteria bar
add_rect(s, 0.25, 5.3, 12.83, 1.65, fill_color=RGBColor(0xF0, 0xF0, 0xFF))
add_tb(s, 0.4, 5.32, 12.5, 0.35,
       "SLiM — Myeloma-Defining Events (trigger treatment even without CRAB)",
       font_size=13, bold=True, color=NAVY)
slim_items = [
    "S – Sixty percent (≥60%) clonal plasma cells in bone marrow",
    "Li – Light chain ratio: involved/uninvolved FLC ratio ≥ 100",
    "M – MRI: >1 focal lesion (≥5 mm) on whole-body MRI",
]
add_bullet_tb(s, 0.4, 5.7, 12.5, 1.1, slim_items, font_size=12.5, color=DARK_GREY)

# ══════════════════════════════════════════════════════════════════════════════
#  SLIDE 5 – CLINICAL FEATURES: RECURRENT INFECTIONS, BONE PAIN, RENAL
# ══════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, fill_color=WHITE)
header_bar(s, "Key Clinical Features in Detail",
           "Recurrent Infections · Bone Pain · Renal Impairment")
footer_bar(s)

panels = [
    (0.3, "🦠  Recurrent Infections", TEAL,
     ["Hypogammaglobulinaemia: clonal Ig suppresses normal B-cell function",
      "CD4+ T-cell and NK-cell dysfunction",
      "Neutropenia from BM infiltration ± chemotherapy",
      "Organisms: Streptococcus pneumoniae, H. influenzae (encapsulated bacteria)",
      "Viral reactivation: Herpes zoster, CMV in transplant patients",
      "Prophylaxis: IVIG replacement, cotrimoxazole (PCP), antiviral cover",
      "Pneumococcal & flu vaccines recommended at diagnosis",
      "Common presentation: recurrent pneumonia, sinusitis, UTI",
     ]),
    (4.6, "🦴  Bone Pain", RED_ACCENT,
     ["Presenting symptom in ~70% of patients",
      "Mechanism: Osteoclast activation (RANKL/OPG imbalance) + loss of osteoblast function",
      "Sites: Back (vertebrae), ribs, skull, sternum, long bones",
      "Pathological fractures: vertebral collapse → acute severe back pain",
      "Spinal cord compression: emergency! (5%) → paraplegia if untreated",
      "'Punched-out' lytic lesions on plain X-ray (skeletal survey)",
      "Whole-body low-dose CT or WB-MRI preferred over plain films",
      "Bisphosphonates (zoledronic acid) or denosumab for bone protection",
     ]),
    (8.9, "🩺  Renal Impairment", AMBER,
     ["Present in ~50% at diagnosis; 20% require dialysis",
      "Cast nephropathy (myeloma kidney): FLC + Tamm-Horsfall protein → tubular obstruction",
      "Direct tubular toxicity of free light chains (proximal tubular injury)",
      "Hypercalcaemia → nephrocalcinosis + volume depletion → AKI",
      "AL amyloidosis: glomerular deposits → nephrotic syndrome",
      "NSAID use + dehydration worsens renal function",
      "Reversible with hydration + prompt myeloma treatment",
      "Daratumumab-based regimens preferred in renal failure",
     ]),
]
for px, ptitle, pclr, pitems in panels:
    card(s, px, 1.3, 4.1, 5.7, bg=RGBColor(0xF5, 0xF8, 0xFF), border=pclr, border_w=2.0)
    add_rect(s, px, 1.3, 4.1, 0.52, fill_color=pclr)
    add_tb(s, px+0.1, 1.3, 3.9, 0.52, ptitle, font_size=14, bold=True,
           color=WHITE, align=PP_ALIGN.LEFT)
    add_bullet_tb(s, px+0.12, 1.9, 3.86, 5.0, pitems, font_size=11.5, color=DARK_GREY)

# ══════════════════════════════════════════════════════════════════════════════
#  SLIDE 6 – INVESTIGATIONS
# ══════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, fill_color=WHITE)
header_bar(s, "Investigations",
           "Establishing diagnosis, staging & risk stratification")
footer_bar(s)

inv_cols = [
    (0.3, "Blood Tests", NAVY, [
        "FBC: normocytic anaemia, Rouleaux on film, raised ESR",
        "U&E / LFTs: renal impairment, raised Ca²⁺, LDH",
        "Serum protein electrophoresis (SPEP): M-protein band",
        "Serum immunofixation: identifies Ig class (IgG, IgA, light chain)",
        "Serum free light chain (FLC) assay: κ/λ ratio",
        "β₂-microglobulin (ISS staging), albumin (ISS staging)",
        "LDH: correlates with tumour burden",
        "Uric acid, coagulation screen",
    ]),
    (4.55, "Urine Tests", TEAL, [
        "24-hour urine: protein quantification",
        "Urine electrophoresis (UPEP): Bence Jones protein (monoclonal FLC)",
        "Urine immunofixation: confirms light chain type",
        "Urine FLC: serial monitoring of response",
        " ",
        "Bone Marrow",
        "Trephine biopsy + aspirate: ≥10% clonal plasma cells",
        "Flow cytometry: CD138+, CD38+, CD19-, CD56+",
        "FISH / cytogenetics: del(17p), t(4;14), t(14;16), t(11;14), del(1p), gain 1q",
    ]),
    (8.8, "Imaging", RED_ACCENT, [
        "Whole-body low-dose CT (WBLDCT): first-line imaging",
        "  → Lytic lesions, fractures, soft tissue masses",
        "Whole-body MRI (WB-MRI): bone marrow involvement,",
        "  sensitivity for smouldering MM / cord compression",
        "PET-CT: disease extent, treatment response, extramedullary",
        "Skeletal survey (plain X-ray): historic; less sensitive",
        "Echocardiogram: if AL amyloidosis suspected",
        "Bone density (DEXA): baseline for bisphosphonate monitoring",
    ]),
]
for cx, ctitle, cclr, citems in inv_cols:
    add_rect(s, cx, 1.3, 4.15, 0.48, fill_color=cclr)
    add_tb(s, cx+0.1, 1.3, 3.95, 0.48, ctitle, font_size=15, bold=True,
           color=WHITE, align=PP_ALIGN.LEFT)
    card(s, cx, 1.78, 4.15, 5.12, bg=RGBColor(0xF5, 0xF9, 0xFF), border=cclr, border_w=1.2)
    add_bullet_tb(s, cx+0.12, 1.88, 3.92, 4.9, citems, font_size=12, color=DARK_GREY)

# ══════════════════════════════════════════════════════════════════════════════
#  SLIDE 7 – STAGING
# ══════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, fill_color=WHITE)
header_bar(s, "Staging & Risk Stratification",
           "International Staging System (ISS) and Revised ISS (R-ISS)")
footer_bar(s)

# ISS table
add_tb(s, 0.4, 1.28, 6.0, 0.38, "International Staging System (ISS)",
       font_size=14, bold=True, color=NAVY)
iss_rows = [
    ("Stage", "Criteria", "Median OS", NAVY, WHITE),
    ("I",   "β₂M < 3.5 mg/L  AND  Albumin ≥ 35 g/L",    "62 months", GREEN,       WHITE),
    ("II",  "Neither Stage I nor Stage III",               "44 months", AMBER,       WHITE),
    ("III", "β₂M ≥ 5.5 mg/L",                             "29 months", RED_ACCENT,  WHITE),
]
row_h = 0.56
for ri, (s1, s2, s3, rbg, rtxt) in enumerate(iss_rows):
    y = 1.68 + ri * row_h
    add_rect(s, 0.4, y, 0.9, row_h, fill_color=rbg, line_color=WHITE, line_width=0.5)
    add_rect(s, 1.3, y, 4.5, row_h, fill_color=rbg, line_color=WHITE, line_width=0.5)
    add_rect(s, 5.8, y, 1.8, row_h, fill_color=rbg, line_color=WHITE, line_width=0.5)
    add_tb(s, 0.42, y+0.06, 0.86, row_h-0.1, s1, font_size=13 if ri>0 else 12,
           bold=(ri==0), color=rtxt, align=PP_ALIGN.CENTER)
    add_tb(s, 1.32, y+0.06, 4.45, row_h-0.1, s2, font_size=12 if ri>0 else 12,
           bold=(ri==0), color=rtxt)
    add_tb(s, 5.82, y+0.06, 1.75, row_h-0.1, s3, font_size=12 if ri>0 else 12,
           bold=(ri==0), color=rtxt, align=PP_ALIGN.CENTER)

# R-ISS
add_tb(s, 7.9, 1.28, 5.0, 0.38, "Revised ISS (R-ISS)",
       font_size=14, bold=True, color=NAVY)
r_iss = [
    ("R-ISS I",   "ISS I + standard cytogenetics + LDH ≤ ULN",   "Not reached", GREEN),
    ("R-ISS II",  "Not R-ISS I or III",                            "83 months",  AMBER),
    ("R-ISS III", "ISS III + high-risk cytogenetics OR LDH > ULN", "43 months",  RED_ACCENT),
]
for ri2, (st, crit, os, clr) in enumerate(r_iss):
    y2 = 1.68 + ri2 * 1.0
    add_rect(s, 7.9, y2, 5.0, 0.95, fill_color=RGBColor(0xF5, 0xF9, 0xFF),
             line_color=clr, line_width=1.5)
    add_rect(s, 7.9, y2, 2.0, 0.95, fill_color=clr)
    add_tb(s, 7.92, y2+0.12, 1.96, 0.7, st, font_size=13, bold=True,
           color=WHITE, align=PP_ALIGN.CENTER)
    add_tb(s, 9.93, y2+0.04, 2.9, 0.45, crit, font_size=11, color=DARK_GREY, wrap=True)
    add_tb(s, 9.93, y2+0.5, 2.9, 0.38, f"Median OS: {os}", font_size=11,
           color=MID_GREY, italic=True)

# High-risk cytogenetics
add_rect(s, 7.9, 4.75, 5.0, 2.1, fill_color=RGBColor(0xFF, 0xF0, 0xF0),
         line_color=RED_ACCENT, line_width=1.5)
add_tb(s, 8.0, 4.78, 4.8, 0.38, "High-Risk Cytogenetics", font_size=13,
       bold=True, color=RED_ACCENT)
hrc = ["del(17p) / TP53 mutation", "t(4;14) – FGFR3/MMSET",
       "t(14;16) – MAF", "t(14;20) – MAFB", "Gain 1q / del 1p"]
add_bullet_tb(s, 8.0, 5.18, 4.8, 1.5, hrc, font_size=12, color=DARK_GREY)

# Amyloid / other note
add_rect(s, 0.4, 4.75, 7.1, 2.1, fill_color=RGBColor(0xF0, 0xF5, 0xFF),
         line_color=NAVY, line_width=1.2)
add_tb(s, 0.55, 4.78, 6.8, 0.38, "Myeloma Defining Events (MDEs) — SLiM Criteria",
       font_size=13, bold=True, color=NAVY)
slim2 = [
    "≥60% clonal plasma cells in BM (regardless of M-protein level)",
    "Serum FLC ratio ≥100 (involved ÷ uninvolved)",
    ">1 focal lesion on WB-MRI (≥5 mm each)",
    "Any of the above → diagnosis of MM + treatment required",
]
add_bullet_tb(s, 0.55, 5.18, 6.8, 1.5, slim2, font_size=12, color=DARK_GREY)

# ══════════════════════════════════════════════════════════════════════════════
#  SLIDE 8 – MANAGEMENT OVERVIEW
# ══════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, fill_color=WHITE)
header_bar(s, "Management Overview",
           "MGUS · Smouldering MM · Active Myeloma")
footer_bar(s)

mgmt_cols = [
    (0.3, "MGUS", GREEN, [
        "NO treatment required",
        "Baseline investigations to confirm no end-organ damage",
        "Monitor M-protein & FLC ratio every 6–12 months",
        "Repeat BM biopsy only if progression suspected",
        "Patient education: symptoms to report",
        "Lifestyle: stay hydrated, avoid nephrotoxins",
        "Annual review lifelong",
        "Risk stratification guides monitoring intensity:",
        "  – Low risk: M-protein <1.5 g/dL, IgG, normal FLC → q12m",
        "  – High risk: IgA/IgM, M-protein >1.5 g/dL → q6m",
    ]),
    (4.6, "Smouldering MM", AMBER, [
        "Standard risk: close observation (no treatment)",
        "High-risk SMM: lenalidomide ± dexamethasone considered",
        "QUIREDEX / E3A06 trials support early Rx for high-risk",
        "Daratumumab monotherapy (AQUILA trial) approved high-risk",
        "Definition of high-risk SMM (Mayo 2018):",
        "  – BM plasma cells ≥20%",
        "  – M-protein ≥2 g/dL",
        "  – FLC ratio ≥20",
        "Monitoring: CBC, chemistry, SPEP q3–4 months",
        "WB-MRI at baseline and q12–24 months",
    ]),
    (8.9, "Active MM — Goals", RED_ACCENT, [
        "Reduce tumour burden & achieve deep remission",
        "Prevent/treat complications (bone, renal, infection)",
        "Assess transplant eligibility first",
        "Response categories (IMWG):",
        "  – sCR → CR → VGPR → PR → SD → PD",
        "MRD negativity (10⁻⁵ by NGF/NGS) = best predictor",
        "Novel targets: BCMA, GPRC5D, FcRH5",
        "CAR-T cell therapy: ide-cel, cilta-cel (relapsed/refractory)",
        "Bispecifics: teclistamab, elranatamab",
        "Allogeneic SCT: investigational",
    ]),
]
for cx, ctitle, cclr, citems in mgmt_cols:
    add_rect(s, cx, 1.3, 4.1, 0.48, fill_color=cclr)
    add_tb(s, cx+0.1, 1.3, 3.9, 0.48, ctitle, font_size=15, bold=True,
           color=WHITE, align=PP_ALIGN.LEFT)
    card(s, cx, 1.78, 4.1, 5.12, bg=RGBColor(0xF5, 0xF9, 0xFF), border=cclr, border_w=1.2)
    add_bullet_tb(s, cx+0.12, 1.88, 3.86, 4.9, citems, font_size=11.5, color=DARK_GREY)

# ══════════════════════════════════════════════════════════════════════════════
#  SLIDE 9 – INDUCTION & TRANSPLANT
# ══════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, fill_color=WHITE)
header_bar(s, "Active Myeloma — Induction Therapy & Stem Cell Transplant",
           "Treatment stratified by transplant eligibility")
footer_bar(s)

# Transplant eligible
card(s, 0.3, 1.3, 6.1, 5.7, bg=RGBColor(0xE8, 0xF8, 0xF5), border=GREEN, border_w=2.0)
add_rect(s, 0.3, 1.3, 6.1, 0.5, fill_color=GREEN)
add_tb(s, 0.4, 1.3, 5.9, 0.5, "Transplant-Eligible (<65–70 yrs, good PS)",
       font_size=14, bold=True, color=WHITE)
te_items = [
    "Induction (3–4 cycles): VRd (Bortezomib + Lenalidomide + Dexamethasone)",
    "  OR DRd (Daratumumab + Lenalidomide + Dexamethasone) — preferred in high risk",
    "  OR VCd (Bortezomib + Cyclophosphamide + Dexamethasone)",
    "",
    "Stem Cell Collection:",
    "  G-CSF ± plerixafor for mobilisation",
    "  Collect peripheral blood stem cells (minimum 2 × 10⁶ CD34+/kg)",
    "",
    "High-Dose Chemotherapy: Melphalan 200 mg/m²",
    "",
    "Autologous SCT — improves PFS and OS vs. conventional chemo",
    "",
    "Consolidation: additional VRd cycles (optional)",
    "Maintenance: Lenalidomide until progression (standard)",
    "  Bortezomib added for t(4;14) or del(17p) (high-risk)",
    "",
    "Tandem transplant: considered for high-risk disease",
]
add_bullet_tb(s, 0.4, 1.85, 5.9, 5.1, te_items, font_size=11.5, color=DARK_GREY)

# Transplant ineligible
card(s, 6.8, 1.3, 6.2, 5.7, bg=RGBColor(0xFD, 0xF5, 0xE6), border=AMBER, border_w=2.0)
add_rect(s, 6.8, 1.3, 6.2, 0.5, fill_color=AMBER)
add_tb(s, 6.9, 1.3, 6.0, 0.5, "Transplant-Ineligible (>70 yrs or significant comorbidity)",
       font_size=14, bold=True, color=WHITE)
ti_items = [
    "Preferred regimen: DRd (Daratumumab + Lenalidomide + Dex)",
    "  – MAIA trial: significant OS benefit vs. Rd alone",
    "",
    "Alternative: DVd (Daratumumab + Bortezomib + Melphalan + Pred)",
    "  – ALCYONE trial: OS benefit in elderly patients",
    "",
    "VMP (Bortezomib + Melphalan + Prednisone): older standard",
    "Rd (Lenalidomide + low-dose Dexamethasone): well-tolerated",
    "",
    "Dose modifications required for:",
    "  – Renal impairment (lenalidomide dose reduce per CrCl)",
    "  – Peripheral neuropathy (bortezomib → switch to ixazomib)",
    "",
    "Maintenance: Lenalidomide until progression",
    "  Daratumumab SC maintenance also an option",
    "",
    "Supportive: bisphosphonate (zoledronic acid q4w x 2 yrs)",
    "DVT prophylaxis with lenalidomide (aspirin or LMWH)",
]
add_bullet_tb(s, 6.9, 1.85, 5.9, 5.1, ti_items, font_size=11.5, color=DARK_GREY)

# ══════════════════════════════════════════════════════════════════════════════
#  SLIDE 10 – SUPPORTIVE CARE
# ══════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, fill_color=WHITE)
header_bar(s, "Supportive Care & Complication Management",
           "Treating the consequences of myeloma")
footer_bar(s)

supp = [
    (0.3,  1.3, "Bone Disease",      NAVY, [
        "Bisphosphonates: Zoledronic acid 4 mg IV q4w (2 yrs min)",
        "Denosumab (anti-RANKL): preferred in renal impairment",
        "Kyphoplasty / vertebroplasty for painful vertebral fractures",
        "Radiotherapy (8–10 Gy) for localised painful bone lesions",
        "Orthopaedic surgery for impending pathological fractures",
        "Dental review before bisphosphonate (osteonecrosis risk)",
    ]),
    (0.3,  4.55, "Renal Support",     TEAL, [
        "IV hydration: maintain UO >3 L/day",
        "Avoid NSAIDs, contrast, nephrotoxins",
        "Treat hypercalcaemia (IVF + furosemide ± bisphosphonate)",
        "Haemodialysis if severe AKI / chronic renal failure",
        "Bortezomib-based regimens: safe in renal failure",
        "Lenalidomide: dose-reduce per CrCl",
    ]),
    (6.8,  1.3, "Infection Prevention", TEAL, [
        "Pneumococcal & influenza vaccination",
        "Cotrimoxazole (PCP prophylaxis during high-dose steroids)",
        "Aciclovir / valaciclovir (VZV prophylaxis with bortezomib)",
        "IVIG replacement if severe hypogammaglobulinaemia",
        "G-CSF for neutropenia (chemotherapy-induced)",
        "Central venous catheter care protocols",
    ]),
    (6.8,  4.55, "Anaemia & Haematological", RED_ACCENT, [
        "Blood transfusion for symptomatic anaemia",
        "Erythropoiesis-stimulating agents (ESAs) in selected patients",
        "Thromboprophylaxis: aspirin/LMWH with IMiD-based therapy",
        "Treat hypercalcaemia promptly (bisphosphonate IV + IVF)",
        "Allopurinol for tumour lysis syndrome risk",
        "Plasmapheresis for hyperviscosity (rare, Waldenstrom's more)",
    ]),
]
for sx, sy, stitle, sclr, sitems in supp:
    card(s, sx, sy, 6.1, 3.05, bg=RGBColor(0xF5, 0xF8, 0xFF), border=sclr, border_w=1.5)
    add_rect(s, sx, sy, 6.1, 0.4, fill_color=sclr)
    add_tb(s, sx+0.1, sy, 5.9, 0.4, stitle, font_size=13, bold=True, color=WHITE)
    add_bullet_tb(s, sx+0.12, sy+0.45, 5.86, 2.5, sitems, font_size=11.5, color=DARK_GREY)

# ══════════════════════════════════════════════════════════════════════════════
#  SLIDE 11 – RELAPSED / REFRACTORY + NOVEL THERAPIES
# ══════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, fill_color=WHITE)
header_bar(s, "Relapsed & Refractory Myeloma — Novel Therapies",
           "Emerging agents transforming outcomes")
footer_bar(s)

therapy_classes = [
    (0.3,  1.3, "IMiDs",                    TEAL,       ["Thalidomide (historic)", "Lenalidomide (Revlimid)", "Pomalidomide (Imnovid)", "Mechanism: Cereblon-mediated degradation of IKZF1/3"]),
    (3.55, 1.3, "Proteasome Inhibitors",    NAVY,       ["Bortezomib (IV/SC) – 1st gen", "Carfilzomib (Kyprolis) – 2nd gen", "Ixazomib (Ninlaro) – oral", "Mechanism: Inhibit 26S proteasome → UPR → apoptosis"]),
    (6.8,  1.3, "Monoclonal Antibodies",    RED_ACCENT, ["Daratumumab (anti-CD38)", "Isatuximab (anti-CD38)", "Elotuzumab (anti-SLAMF7)", "Mechanism: ADCC, CDC, phagocytosis"]),
    (10.05,1.3, "Alkylating / Steroids",    MID_GREY,   ["Melphalan (HD conditioning)", "Cyclophosphamide (VCD)", "Dexamethasone (backbone)", "Bendamustine (salvage)"]),
    (0.3,  4.3, "CAR-T Cell Therapy",       RGBColor(0x6A,0x0D,0xAD), ["Ide-cel (idecabtagene vicleucei)", "Cilta-cel (ciltacabtagene autoleucel)", "Target: BCMA (B-cell maturation antigen)", "Deep MRD-negative responses; FDA approved RRMM"]),
    (3.55, 4.3, "Bispecific Antibodies",    RGBColor(0x00,0x66,0x00), ["Teclistamab (BCMA × CD3)", "Elranatamab (BCMA × CD3)", "Talquetamab (GPRC5D × CD3)", "Linvoseltamab (BCMA × CD3)"]),
    (6.8,  4.3, "Exportin-1 Inhibitor",     AMBER,      ["Selinexor (Xpovio)", "Blocks nuclear export of TSPs", "Used in penta-refractory disease", "Oral agent, combined with dexamethasone"]),
    (10.05,4.3, "Antibody-Drug Conjugates", RGBColor(0x8B,0x00,0x00), ["Belantamab mafodotin (BCMA-ADC)", "Target: BCMA + MMAF cytotoxin", "Corneal microdeposits (keratopathy)", "Re-evaluated post KarMMa-3 trial data"]),
]
for tx, ty, ttitle, tclr, titems in therapy_classes:
    card(s, tx, ty, 2.9, 2.85, bg=RGBColor(0xF5, 0xF8, 0xFF), border=tclr, border_w=1.5)
    add_rect(s, tx, ty, 2.9, 0.4, fill_color=tclr)
    add_tb(s, tx+0.08, ty, 2.74, 0.4, ttitle, font_size=11.5, bold=True, color=WHITE)
    add_bullet_tb(s, tx+0.1, ty+0.45, 2.7, 2.3, titems, font_size=10.5, color=DARK_GREY)

# ══════════════════════════════════════════════════════════════════════════════
#  SLIDE 12 – SUMMARY / KEY TAKE-AWAYS
# ══════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, fill_color=NAVY)
add_rect(s, 0, 1.1, 13.333, 6.4, fill_color=WHITE)
header_bar(s, "Summary & Key Take-Aways", "Plasma Cell Disorders at a Glance")
footer_bar(s)

takeaways = [
    ("1", "Spectrum",      "MGUS → Smouldering MM → Active MM represents a continuous biological spectrum of clonal plasma cell evolution."),
    ("2", "Pathophysiology","M-protein, osteoclast activation, marrow infiltration and immune suppression drive all the key features."),
    ("3", "Diagnose MM",   "≥10% clonal BM plasma cells + CRAB criteria OR SLiM myeloma-defining events."),
    ("4", "Work-up",       "SPEP + immunofixation + FLC assay + BM biopsy + FISH + WB-CT/MRI. β₂M + albumin for ISS staging."),
    ("5", "Treatment",     "Triplet induction (VRd or DRd) → ASCT in eligible → maintenance lenalidomide. Daratumumab backbone for most."),
    ("6", "Complications", "Manage bone disease (bisphosphonates), renal failure (hydration, avoid nephrotoxins), infections (prophylaxis)."),
    ("7", "Novel Rx",      "CAR-T (ide-cel, cilta-cel) and bispecifics (teclistamab) are transforming outcomes in RRMM."),
    ("8", "Prognosis",     "R-ISS III: ~43-month median OS. MRD-negativity is the best surrogate for prolonged survival."),
]
cols_per_row = 4
row_h2 = 2.55
for i, (num, title, body) in enumerate(takeaways):
    col = i % cols_per_row
    row = i // cols_per_row
    bx = 0.3 + col * 3.23
    by = 1.3 + row * row_h2
    add_rect(s, bx, by, 3.0, row_h2 - 0.12,
             fill_color=RGBColor(0xF0, 0xF5, 0xFF), line_color=TEAL, line_width=1.0)
    add_rect(s, bx, by, 0.5, row_h2 - 0.12, fill_color=TEAL)
    add_tb(s, bx, by + 0.4, 0.5, 0.7, num, font_size=18, bold=True,
           color=WHITE, align=PP_ALIGN.CENTER)
    add_tb(s, bx+0.55, by+0.06, 2.4, 0.38, title, font_size=12, bold=True, color=NAVY)
    add_tb(s, bx+0.55, by+0.45, 2.4, 1.9, body, font_size=10.5, color=DARK_GREY, wrap=True)

# ── Save ───────────────────────────────────────────────────────────────────────
out = "/tmp/workspace/plasma-cell-disorders/Plasma_Cell_Disorders.pptx"
buf = BytesIO()
prs.save(buf)
with open(out, "wb") as f:
    f.write(buf.getvalue())
print(f"Saved: {out}")
Running Command

cd /tmp/workspace/plasma-cell-disorders && python build_pptx.py 2>&1

Running Command

python -c " from pptx import Presentation prs = Presentation('/tmp/workspace/plasma-cell-disorders/Plasma_Cell_Disorders.pptx') print(f'Slides: {len(prs.slides)}') for i, slide in enumerate(prs.slides, 1): texts = [s.text_frame.text.strip().split('\n')[0][:60] for s in slide.shapes if s.has_text_frame and s.text_frame.text.strip()] print(f' Slide {i}: {texts[0] if texts else \"(no text)\"}') "

Your presentation is ready - 12 slides covering everything you asked for:

Plasma Cell Disorders

Presentation · PPTX


Here is what's in each slide:
#SlideContent
1TitleCover slide with topic and subtopic overview
2The SpectrumSide-by-side MGUS / Smouldering / Active MM comparison with diagnostic thresholds
3PathophysiologyMolecular basis (Ig translocations, IL-6, RANKL/OPG), BM microenvironment, how M-protein causes each complication
4CRAB + SLiM CriteriaFull CRAB boxes with mechanisms + SLiM myeloma-defining events
5Clinical FeaturesDeep-dive panels on Recurrent Infections, Bone Pain, and Renal Impairment
6InvestigationsBlood tests (SPEP, FLC, β₂M), Urine tests (BJP, UPEP), BM biopsy, Imaging (WB-CT, MRI, PET)
7StagingISS + R-ISS tables with OS data; high-risk cytogenetics; SLiM recap
8Management OverviewMGUS monitoring, Smouldering MM (watch vs. treat), Active MM goals/response criteria
9Induction & TransplantTransplant-eligible (VRd → ASCT → lenalidomide maintenance) vs. ineligible (DRd/DVd)
10Supportive CareBone (bisphosphonates), Renal (hydration), Infections (prophylaxis), Haematological
11Novel Therapies8-panel grid: IMiDs, PIs, anti-CD38, alkylators, CAR-T (ide-cel/cilta-cel), Bispecifics, Selinexor, ADCs
12Summary8 key take-away cards
Color coding: Green = MGUS, Amber = Smouldering, Red = Active MM - consistent throughout. Sources: Goldman-Cecil Medicine (Rajkumar chapter) + Robbins Pathology + Harrison's 22E.
This is a shared conversation. Sign in to Orris to start your own chat.