D/t

I'll help you with "D/t" - but I want to make sure I give you exactly what you need. This abbreviation could mean a few different things.
Asking for Preferences

What does 'D/t' refer to in your context?

Pathology

The user is asking about "D/t" in the context of pathology. "D/t" in pathology/medical notes stands for "due to" - used to indicate causation. But they may also want a broader pathology topic. Let me clarify before diving in.
Asking for Preferences

What specifically would you like about 'D/t' in pathology?

What is the pathogenesis of, uh, CLL? Uh, in, um... Give it to me in a flowchart manner. Not too detailed, but having all important details.

CLL (Chronic Lymphocytic Leukemia) pathogenesis involves clonal expansion of mature B-cells with defective apoptosis. Let me pull the authoritative textbook content first.
Searching sources...
Reading File
Finding Sources
Finding Sources
Good sources found. Let me read the key pathology textbooks - Robbins Basic Pathology and Goldman-Cecil for CLL pathogenesis.
Reading File
Reading File
I now have excellent content from Robbins Basic Pathology and Goldman-Cecil. Let me read a bit more of the Goldman-Cecil pathobiology section for completeness.
Reading File
I now have comprehensive information. Let me compile this into a clear flowchart-style pathogenesis overview.

Pathogenesis of CLL - Flowchart

NORMAL MATURE B-CELL
        │
        ▼
┌─────────────────────────────────────┐
│  PRECURSOR STAGE: Monoclonal B-cell │
│  Lymphocytosis (MBL)                │
│  • Lymphoid-primed HSCs → mature    │
│    B-cells expand oligoclonally     │
│  • Acquisition of genetic events    │
│    drives progression to CLL        │
└─────────────────────────────────────┘
        │
        ▼
┌─────────────────────────────────────┐
│  KEY DRIVER: B-CELL RECEPTOR (BCR)  │
│  Signaling                          │
│  • CLL cells express clonal         │
│    rearranged Ig heavy + light chain│
│  • ~40% carry "stereotyped BCRs"    │
│    → suggests antigen stimulation   │
│    drives clonal expansion          │
│                                     │
│  IGHV mutation status:              │
│  • Mutated IGHV (>2% from germline) │
│    → indolent, low BCR activation   │
│  • Unmutated IGHV (≤2%)             │
│    → aggressive, high BCR activation│
│    → drives survival + proliferation│
└─────────────────────────────────────┘
        │
        ▼
┌─────────────────────────────────────┐
│  BCR SIGNALS → BTK                  │
│  (Bruton Tyrosine Kinase)           │
│  • BTK upregulates pro-survival and │
│    pro-proliferative genes          │
│  ← Target of ibrutinib, acalabrutinib│
└─────────────────────────────────────┘
        │
        ▼
┌─────────────────────────────────────┐
│  CHROMOSOMAL ABNORMALITIES          │
│  (by FISH, unbalanced - not         │
│   translocations)                   │
│                                     │
│  del(13q) [most common, ~55%]       │
│  → loss of miRNAs (miR-15a/16-1)   │
│  → loss of negative regulation      │
│  → BCL2 OVEREXPRESSION              │
│                                     │
│  del(11q) → ATM loss → DNA repair ↓│
│  Trisomy 12 → uncertain mechanism   │
│  del(17p) → TP53 loss               │
│  → most aggressive, chemo-resistant │
└─────────────────────────────────────┘
        │
        ▼
┌─────────────────────────────────────┐
│  BCL2 OVEREXPRESSION                │
│  • Blocks apoptosis                 │
│  • Cell survival > proliferation    │
│    (CLL is an "accumulation" disease│
│    more than a proliferation disease│
│  ← Target of venetoclax             │
└─────────────────────────────────────┘
        │
        ▼
┌─────────────────────────────────────┐
│  TUMOR MICROENVIRONMENT             │
│  • CLL cells receive survival       │
│    signals from stromal cells,      │
│    T-cells, nurse-like cells        │
│  • Epigenetic signature resembles   │
│    memory B-cell developmental stage│
└─────────────────────────────────────┘
        │
        ▼
┌─────────────────────────────────────┐
│  IMMUNE DYSREGULATION               │
│  • Accumulation of CLL cells        │
│    suppresses normal B-cell function│
│  → Hypogammaglobulinemia            │
│  → Increased infection risk         │
│  • ~15% develop warm autoantibodies │
│    (AIHA, ITP) - made by normal     │
│    bystander B-cells (impaired      │
│    immune tolerance)                │
└─────────────────────────────────────┘
        │
        ▼
┌─────────────────────────────────────┐
│  CLONAL EVOLUTION / PROGRESSION     │
│  • Acquisition of TP53 mutation     │
│    (del 17p) → Richter transformation│
│  → Transformation to DLBCL          │
│    (Richter Syndrome, ~5%)          │
└─────────────────────────────────────┘

Summary of Key Molecular Players

FactorRole
del(13q)Most common; miR-15a/16-1 loss → BCL2↑
BCL2Blocks apoptosis; cells accumulate rather than proliferate
BCR / IgAntigen-driven clonal selection; stereotyped subsets
BTKDownstream of BCR; promotes survival + growth
Unmutated IGHVHigh BCR activation → aggressive disease
del(17p)/TP53DNA damage response failure → worst prognosis
del(11q)/ATMDNA repair deficiency

Sources:
  • Robbins & Kumar Basic Pathology, p. 411 - CLL pathogenesis with BCL2 and BTK signaling
  • Goldman-Cecil Medicine - IGHV mutation status, chromosomal abnormalities, BCR stereotyping

We're very smart, you know? Uh... This thing. This is too detailed and I cannot understand anything. I wanted to give it to me in a very small way, like small pathway, uh, and also give me immunophenotype too. Do not confuse me. Make it easy for me.

Got it! Simple and clean. Let me grab the immunophenotype data quickly.
Finding Sources
Here you go - simple and clean:

CLL Pathogenesis (Simple)

Normal B-cell
     ↓
Antigen stimulation via B-Cell Receptor (BCR)
     ↓
BCR → BTK → pro-survival signals
     ↓
del(13q) → BCL2 ↑ → Apoptosis blocked
     ↓
B-cells ACCUMULATE (don't die)
     ↓
CLL
That's the core idea: BCR drives growth, BCL2 blocks death, cells pile up.

CLL Immunophenotype

MarkerResult
CD19✅ +
CD20✅ + (dim)
CD23✅ +
CD5✅ + (T-cell marker, aberrantly expressed)
CD10❌ -
FMC7❌ -
Surface Ig✅ + (dim)
Memory trick: CLL = CD5 + CD23 + on a B-cell. The CD5 is the key - it's a T-cell marker that CLL steals, which is what makes it distinctive.
  • Robbins & Kumar Basic Pathology, p. 411

But you've not given, like, uh, the... What are the mutations and all in the pathogenesis?

Sure! Here are the key mutations, added simply into the pathway:

CLL Pathogenesis + Mutations (Simple)

Normal B-cell
     ↓
Antigen stimulation → BCR signaling → BTK activated
     ↓
  ┌─────────────────────────────────────────┐
  │         KEY MUTATIONS / HITS            │
  │                                         │
  │  del(13q) → loses miR-15a/16-1          │
  │           → BCL2 ↑ (no apoptosis)       │
  │                                         │
  │  del(11q) → loses ATM                   │
  │           → DNA repair fails            │
  │                                         │
  │  Trisomy 12 → unknown, ↑ proliferation  │
  │                                         │
  │  del(17p) / TP53 mutation               │
  │           → worst prognosis             │
  │           → chemo resistance            │
  └─────────────────────────────────────────┘
     ↓
BCL2 ↑ → Apoptosis blocked → cells ACCUMULATE
     ↓
CLL
     ↓  (if del 17p acquired later)
Richter Transformation → DLBCL

Mutations at a Glance

MutationWhat it doesPrognosis
del(13q)BCL2 ↑, most common (~55%)Good
Trisomy 12↑ proliferationIntermediate
del(11q)ATM loss, DNA repair ↓Poor
del(17p) / TP53No DNA damage responseWorst
One line summary: del(13q) is the most common and most favorable. del(17p)/TP53 is the worst - these patients don't respond to chemotherapy at all.
  • Robbins & Kumar Basic Pathology; Goldman-Cecil Medicine

Immunophenotype from Robbins

Reading File
Straight from Robbins, Cotran & Kumar - Pathologic Basis of Disease:

CLL/SLL Immunophenotype

MarkerStatusNote
CD19✅ +Pan B-cell marker
CD20✅ +Pan B-cell marker
CD23✅ +
CD5✅ +Normally a T-cell marker; expressed on a small subset of normal B-cells
Surface Ig (IgM or IgM+IgD)✅ + (low level)
BCL2✅ + (high level)Anti-apoptotic protein
"The tumor cells express the pan B-cell markers CD19 and CD20, as well as CD23 and CD5, the latter a marker that is found on T cells and a small subset of normal B cells." — Robbins, Cotran & Kumar Pathologic Basis of Disease
Key takeaway: CD5 + CD23 co-expression on a B-cell = CLL/SLL. That's the classic distinguishing feature.

Um... Classification of AML. From Robbins. Uh, what should I study for, from that, uh, for my, like... For an essay question of AML in, uh, TMG University question.

Finding Sources
Reading File
Reading File
Here's everything you need from Robbins for an AML essay question:

AML Classification (WHO) - Robbins

Two big categories:

Category I: AML with Specific Genetic Aberrations

SubtypeTranslocationPrognosisKey Feature
AML with RUNX1::RUNX1T1t(8;21)FavorableAuer rods easily found
AML with CBFB::MYH11inv(16)FavorableAbnormal eosinophils
Acute Promyelocytic Leukemia (APL)t(15;17) PML::RARAVery favorableBundles of Auer rods; high DIC risk
AML with KMT2A rearrangementt(11q23)PoorMonocytic differentiation
AML with mutated NPM1-Favorable
AML with myelodysplasia-related changesdel 5q / 7qPoor

Category II: AML Defined by Differentiation

(All intermediate prognosis)
SubtypeKey Point
Minimally differentiatedMPO negative; diagnosed by flow cytometry
Without maturation>3% blasts MPO+
With maturationFull myelocytic maturation
MyelomonocyticMyeloid + monocytic
MonocyticNonspecific esterase+
Erythroid>50% dysplastic erythroid precursors
MegakaryocyticMost common AML in Down syndrome

For Your Essay - What to Focus On

For a university essay on AML, cover these in order:
  1. Definition - tumor of myeloid progenitors, mutations block differentiation → blasts accumulate → marrow failure (anemia, thrombocytopenia, neutropenia)
  2. Classification - WHO two categories above (just the table is enough)
  3. Pathogenesis - 4 mutation types:
    • Transcription factor mutations (t(8;21), inv(16), t(15;17))
    • Epigenetic regulator mutations (IDH1/2, DNMT3A)
    • Signal transduction mutations (FLT3 - most common, poor prognosis)
    • Tumor suppressor loss (TP53)
  4. APL (M3) specifically - t(15;17), PML-RARα fusion, treated with ATRA (all-trans retinoic acid) which forces differentiation - classic exam favourite
  5. Morphology - blasts >20% in marrow; Auer rods (pink needle-like inclusions in blasts) = pathognomonic for AML
  6. Clinical features - marrow failure symptoms + DIC especially in APL

APL/t(15;17) is the highest-yield subtype for essays - it has a unique mechanism, unique treatment (ATRA), and unique complication (DIC). Examiners love it.
- Robbins, Cotran & Kumar Pathologic Basis of Disease, Table 13.10

Create a summary PDF on AML classification for quick revision

Reading File
Running Command

ls /home/daytona/workspace/ 2>/dev/null || echo "workspace empty or not found"

Running Command

mkdir -p /home/daytona/workspace/aml-revision && python3 -c "import reportlab; print('reportlab ok')"

Writing File

~/aml-revision/generate_pdf.py

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table,
                                 TableStyle, HRFlowable)
from reportlab.lib.enums import TA_CENTER, TA_LEFT

OUTPUT = "/home/daytona/workspace/aml-revision/AML_Classification_Summary.pdf"

doc = SimpleDocTemplate(
    OUTPUT,
    pagesize=A4,
    rightMargin=1.8*cm, leftMargin=1.8*cm,
    topMargin=1.8*cm, bottomMargin=1.8*cm
)

# ── Colours ──────────────────────────────────────────────────────────────────
DARK_BLUE   = colors.HexColor("#1A3A5C")
MED_BLUE    = colors.HexColor("#2E6DA4")
LIGHT_BLUE  = colors.HexColor("#D6E8F7")
ACCENT_RED  = colors.HexColor("#C0392B")
ACCENT_GRN  = colors.HexColor("#1E8449")
ACCENT_ORG  = colors.HexColor("#D35400")
LIGHT_GREY  = colors.HexColor("#F4F6F7")
MID_GREY    = colors.HexColor("#BDC3C7")
WHITE       = colors.white
YELLOW_BG   = colors.HexColor("#FFF9C4")
YELLOW_BDR  = colors.HexColor("#F9A825")

styles = getSampleStyleSheet()

def S(name, **kw):
    return ParagraphStyle(name, **kw)

title_style = S("Title2",
    fontSize=22, textColor=WHITE, alignment=TA_CENTER,
    fontName="Helvetica-Bold", spaceAfter=4)

subtitle_style = S("Sub2",
    fontSize=11, textColor=LIGHT_BLUE, alignment=TA_CENTER,
    fontName="Helvetica", spaceAfter=2)

source_style = S("Src",
    fontSize=8, textColor=MID_GREY, alignment=TA_CENTER,
    fontName="Helvetica-Oblique")

sec_header = S("SecH",
    fontSize=13, textColor=WHITE, fontName="Helvetica-Bold",
    alignment=TA_LEFT, spaceAfter=2, spaceBefore=8)

body = S("Body2",
    fontSize=9.5, textColor=colors.HexColor("#2C3E50"),
    fontName="Helvetica", spaceAfter=3, leading=14)

bold_body = S("BoldBody",
    fontSize=9.5, textColor=DARK_BLUE,
    fontName="Helvetica-Bold", spaceAfter=2)

note_style = S("Note",
    fontSize=9, textColor=colors.HexColor("#5D4037"),
    fontName="Helvetica-Oblique", spaceAfter=2, leading=13)

bullet_style = S("Bullet",
    fontSize=9.5, textColor=colors.HexColor("#2C3E50"),
    fontName="Helvetica", leftIndent=14, spaceAfter=2, leading=13)


def section_header(text, bg=MED_BLUE):
    data = [[Paragraph(text, sec_header)]]
    t = Table(data, colWidths=[17.4*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), bg),
        ("TOPPADDING",    (0,0), (-1,-1), 6),
        ("BOTTOMPADDING", (0,0), (-1,-1), 6),
        ("LEFTPADDING",   (0,0), (-1,-1), 10),
        ("ROUNDEDCORNERS", [4]),
    ]))
    return t


story = []

# ── TITLE BANNER ─────────────────────────────────────────────────────────────
banner_data = [[
    Paragraph("AML Classification", title_style),
    Paragraph("Quick Revision Summary", subtitle_style),
    Paragraph("Source: Robbins, Cotran & Kumar – Pathologic Basis of Disease", source_style),
]]
# Stack vertically in one cell using a nested table approach
title_content = [
    [Paragraph("AML Classification", title_style)],
    [Paragraph("Quick Revision Summary", subtitle_style)],
    [Paragraph("Source: Robbins, Cotran & Kumar – Pathologic Basis of Disease", source_style)],
]
banner = Table(title_content, colWidths=[17.4*cm])
banner.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,-1), DARK_BLUE),
    ("TOPPADDING",    (0,0), (-1,-1), 8),
    ("BOTTOMPADDING", (0,0), (-1,-1), 8),
    ("LEFTPADDING",   (0,0), (-1,-1), 12),
    ("RIGHTPADDING",  (0,0), (-1,-1), 12),
    ("ROUNDEDCORNERS", [6]),
]))
story.append(banner)
story.append(Spacer(1, 10))

# ── DEFINITION BOX ───────────────────────────────────────────────────────────
story.append(section_header("📌  Definition"))
story.append(Spacer(1, 4))
story.append(Paragraph(
    "AML is a <b>tumor of hematopoietic progenitors</b> caused by acquired oncogenic mutations "
    "that <b>impede differentiation</b>, leading to accumulation of immature myeloid blasts in the marrow. "
    "Replacement of marrow → failure → <b>Anemia, Thrombocytopenia, Neutropenia</b>.",
    body))
story.append(Paragraph(
    "Incidence peaks after age <b>60 years</b>. Diagnosis requires <b>&gt;20% blasts</b> in bone marrow.",
    body))
story.append(Spacer(1, 6))

# ── WHO CLASSIFICATION TABLE ─────────────────────────────────────────────────
story.append(section_header("🔬  WHO Classification (Table 13.10, Robbins)"))
story.append(Spacer(1, 5))

# Header row
hdr = [
    Paragraph("<b>Subtype</b>", S("th", fontSize=9, textColor=WHITE, fontName="Helvetica-Bold", alignment=TA_CENTER)),
    Paragraph("<b>Translocation / Mutation</b>", S("th2", fontSize=9, textColor=WHITE, fontName="Helvetica-Bold", alignment=TA_CENTER)),
    Paragraph("<b>Prognosis</b>", S("th3", fontSize=9, textColor=WHITE, fontName="Helvetica-Bold", alignment=TA_CENTER)),
    Paragraph("<b>Key Feature</b>", S("th4", fontSize=9, textColor=WHITE, fontName="Helvetica-Bold", alignment=TA_CENTER)),
]

def P(t, clr=colors.HexColor("#2C3E50"), bold=False):
    fn = "Helvetica-Bold" if bold else "Helvetica"
    return Paragraph(t, S("td", fontSize=8.5, textColor=clr, fontName=fn, leading=12))

def prog(text, color):
    return Paragraph(f"<b>{text}</b>", S("pg", fontSize=8.5, textColor=color, fontName="Helvetica-Bold", alignment=TA_CENTER))

CAT1_ROWS = [
    # subtype, mutation, prognosis, key feature
    ["AML with RUNX1::RUNX1T1",       "t(8;21)",     "Favorable",      "Auer rods easily found; abnormal cytoplasmic granules"],
    ["AML with CBFB::MYH11",          "inv(16)",      "Favorable",      "Myelocytic + monocytic diff.; abnormal eosinophils"],
    ["APL – PML::RARA\n(Acute Promyelocytic)", "t(15;17)",   "VERY Favorable", "Bundles of Auer rods; HIGH DIC risk → treat with ATRA"],
    ["AML with KMT2A rearrangement",  "t(11q23)",    "Poor",           "Monocytic differentiation"],
    ["AML with mutated NPM1",         "NPM1 mut",    "Favorable",      "Detected by DNA sequencing"],
    ["AML, myelodysplasia-related",   "del(5q)/del(7q)", "Poor",       "SRSF2, SF3B1, ASXL1 mutations"],
]

PROG_COLOR = {
    "Favorable":      ACCENT_GRN,
    "VERY Favorable": colors.HexColor("#0D6E3A"),
    "Poor":           ACCENT_RED,
    "Intermediate":   ACCENT_ORG,
}

cat1_label = [
    [Paragraph("<b>CATEGORY I – AML with Specific Genetic Aberrations</b>",
               S("cl", fontSize=9, textColor=WHITE, fontName="Helvetica-Bold")),
     "", "", ""]
]

rows = [hdr]
for r in CAT1_ROWS:
    rows.append([
        P(r[0], DARK_BLUE, bold=True),
        P(r[1], MED_BLUE, bold=True),
        prog(r[2], PROG_COLOR.get(r[2], ACCENT_ORG)),
        P(r[3]),
    ])

# Category II
CAT2_ROWS = [
    ["Minimally differentiated",   "—",  "Intermediate", "MPO negative; diagnosed by flow cytometry"],
    ["Without maturation",         "—",  "Intermediate", ">3% blasts MPO positive"],
    ["With maturation",            "—",  "Intermediate", "Full range of myelocytic maturation"],
    ["Myelomonocytic",             "—",  "Intermediate", "Myeloid + monocytic differentiation"],
    ["Monocytic",                  "—",  "Intermediate", "Nonspecific esterase positive; monoblasts"],
    ["Erythroid",                  "—",  "Intermediate", ">50% dysplastic erythroid precursors"],
    ["Megakaryocytic",             "—",  "Intermediate", "Most common AML in Down syndrome; marrow fibrosis"],
]

cat2_label = [[
    Paragraph("<b>CATEGORY II – AML Defined by Differentiation (all Intermediate prognosis)</b>",
              S("cl2", fontSize=9, textColor=WHITE, fontName="Helvetica-Bold")),
    "", "", ""
]]

rows += cat2_label
rows += [[
    P(r[0], DARK_BLUE, bold=True),
    P(r[1], MED_BLUE),
    prog(r[2], PROG_COLOR.get(r[2], ACCENT_ORG)),
    P(r[3]),
] for r in CAT2_ROWS]

col_w = [4.5*cm, 3.2*cm, 2.5*cm, 7.2*cm]
tbl = Table(rows, colWidths=col_w, repeatRows=1)

n_cat1 = len(CAT1_ROWS)
n_cat2 = len(CAT2_ROWS)
total_rows = 1 + n_cat1 + 1 + n_cat2  # hdr + cat1 + cat2_label + cat2

cat2_label_row = 1 + n_cat1  # 0-indexed: row 7

tbl_style = TableStyle([
    # Header
    ("BACKGROUND",    (0,0),  (-1,0),  MED_BLUE),
    ("TEXTCOLOR",     (0,0),  (-1,0),  WHITE),
    ("ALIGN",         (0,0),  (-1,-1), "LEFT"),
    ("VALIGN",        (0,0),  (-1,-1), "MIDDLE"),
    ("TOPPADDING",    (0,0),  (-1,-1), 5),
    ("BOTTOMPADDING", (0,0),  (-1,-1), 5),
    ("LEFTPADDING",   (0,0),  (-1,-1), 6),
    ("RIGHTPADDING",  (0,0),  (-1,-1), 6),
    ("GRID",          (0,0),  (-1,-1), 0.4, MID_GREY),
    # Cat 1 rows alternating
    *[("BACKGROUND", (0, i), (-1, i), LIGHT_BLUE if i % 2 == 0 else WHITE)
      for i in range(1, cat2_label_row)],
    # Cat 2 label span
    ("BACKGROUND",    (0, cat2_label_row), (-1, cat2_label_row), DARK_BLUE),
    ("SPAN",          (0, cat2_label_row), (-1, cat2_label_row)),
    # Cat 2 rows alternating
    *[("BACKGROUND", (0, i), (-1, i), LIGHT_GREY if i % 2 == 0 else WHITE)
      for i in range(cat2_label_row+1, total_rows)],
    ("FONTNAME",      (0,0),  (-1,0),  "Helvetica-Bold"),
    ("ROWBACKGROUNDS", (0, 1), (-1, cat2_label_row-1), [LIGHT_BLUE, WHITE]),
])
tbl.setStyle(tbl_style)
story.append(tbl)
story.append(Spacer(1, 8))

# ── PATHOGENESIS FLOW ────────────────────────────────────────────────────────
story.append(section_header("⚡  Pathogenesis – 4 Mutation Categories"))
story.append(Spacer(1, 4))

path_data = [
    ["1. Transcription Factor Mutations",
     "t(8;21) → RUNX1 disrupted\ninv(16) → CBFB disrupted\nt(15;17) → PML-RARα fusion\n→ Block myeloid differentiation"],
    ["2. Epigenetic Regulator Mutations",
     "IDH1/IDH2 mutations\nDNMT3A mutations\n→ Abnormal epigenetic patterns"],
    ["3. Signal Transduction Mutations",
     "FLT3 – most common mutation in AML\n→ Drives survival & proliferation\n→ Poor prognosis"],
    ["4. Tumor Suppressor Loss",
     "TP53 mutations\n→ No DNA damage response\n→ Worst prognosis"],
]

path_rows = []
for cat, detail in path_data:
    path_rows.append([
        Paragraph(f"<b>{cat}</b>", S("pc", fontSize=9, textColor=DARK_BLUE, fontName="Helvetica-Bold", leading=13)),
        Paragraph(detail.replace("\n", "<br/>"),
                  S("pd", fontSize=9, textColor=colors.HexColor("#2C3E50"), fontName="Helvetica", leading=13)),
    ])

path_tbl = Table(path_rows, colWidths=[5.5*cm, 11.9*cm])
path_tbl.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (0,-1), LIGHT_BLUE),
    ("BACKGROUND",    (1,0), (1,-1), WHITE),
    *[("BACKGROUND",  (1,i), (1,i),  LIGHT_GREY) for i in range(0, 4, 2)],
    ("VALIGN",        (0,0), (-1,-1), "TOP"),
    ("TOPPADDING",    (0,0), (-1,-1), 6),
    ("BOTTOMPADDING", (0,0), (-1,-1), 6),
    ("LEFTPADDING",   (0,0), (-1,-1), 8),
    ("GRID",          (0,0), (-1,-1), 0.4, MID_GREY),
]))
story.append(path_tbl)
story.append(Spacer(1, 8))

# ── APL STAR BOX ─────────────────────────────────────────────────────────────
story.append(section_header("⭐  APL – Highest Yield Exam Subtype", bg=colors.HexColor("#7B241C")))
story.append(Spacer(1, 4))

apl_rows = [
    ["Translocation",  "t(15;17) → PML::RARα fusion protein"],
    ["Mechanism",      "Fusion protein blocks myeloid differentiation at promyelocyte stage"],
    ["Morphology",     "Promyelocytes with BUNDLES of Auer rods (faggot cells)"],
    ["Complication",   "HIGH risk of DIC (release of granule contents)"],
    ["Treatment",      "ATRA (All-Trans Retinoic Acid) → forces differentiation → cures APL"],
    ["Prognosis",      "VERY FAVORABLE with ATRA treatment"],
]

apl_tbl = Table(
    [[Paragraph(f"<b>{k}</b>", S("ak", fontSize=9, textColor=colors.HexColor("#7B241C"), fontName="Helvetica-Bold")),
      Paragraph(v, S("av", fontSize=9, textColor=DARK_BLUE, fontName="Helvetica", leading=13))]
     for k, v in apl_rows],
    colWidths=[3.5*cm, 13.9*cm]
)
apl_tbl.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (0,-1), colors.HexColor("#FDECEA")),
    ("BACKGROUND",    (1,0), (1,-1), WHITE),
    *[("BACKGROUND",  (1,i), (1,i),  YELLOW_BG) for i in range(0, 6, 2)],
    ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",   (0,0), (-1,-1), 8),
    ("GRID",          (0,0), (-1,-1), 0.4, MID_GREY),
]))
story.append(apl_tbl)
story.append(Spacer(1, 8))

# ── MORPHOLOGY ────────────────────────────────────────────────────────────────
story.append(section_header("🔍  Key Morphology Points"))
story.append(Spacer(1, 4))

morph_items = [
    "<b>Blasts &gt;20%</b> in bone marrow → diagnostic threshold for AML",
    "<b>Auer rods</b> = pink needle-like cytoplasmic inclusions in myeloblasts → <b>pathognomonic for AML</b>",
    "Bundles of Auer rods = <b>'faggot cells'</b> → specific to APL (M3)",
    "Proliferation centers = NOT seen in AML (seen in CLL/SLL)",
    "Peripheral blood smear: leukocytosis with circulating blasts",
]
for item in morph_items:
    story.append(Paragraph(f"• {item}", bullet_style))

story.append(Spacer(1, 8))

# ── PROGNOSIS QUICK GUIDE ─────────────────────────────────────────────────────
story.append(section_header("📊  Prognosis Quick Guide"))
story.append(Spacer(1, 4))

prog_data = [
    [Paragraph("<b>VERY FAVORABLE</b>", S("pv", fontSize=9, textColor=colors.HexColor("#0D6E3A"), fontName="Helvetica-Bold")),
     Paragraph("t(15;17) APL → ATRA treatment → near cure", body)],
    [Paragraph("<b>FAVORABLE</b>", S("pf", fontSize=9, textColor=ACCENT_GRN, fontName="Helvetica-Bold")),
     Paragraph("t(8;21), inv(16), NPM1 mutation", body)],
    [Paragraph("<b>INTERMEDIATE</b>", S("pi", fontSize=9, textColor=ACCENT_ORG, fontName="Helvetica-Bold")),
     Paragraph("AML defined by differentiation (Category II)", body)],
    [Paragraph("<b>POOR</b>", S("pp", fontSize=9, textColor=ACCENT_RED, fontName="Helvetica-Bold")),
     Paragraph("t(11q23)/KMT2A rearrangement, myelodysplasia-related, FLT3 mutation", body)],
    [Paragraph("<b>WORST</b>", S("pw", fontSize=9, textColor=colors.HexColor("#7B241C"), fontName="Helvetica-Bold")),
     Paragraph("del(17p) / TP53 mutation → chemo resistant", body)],
]
prog_tbl = Table(prog_data, colWidths=[3.8*cm, 13.6*cm])
prog_tbl.setStyle(TableStyle([
    ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",   (0,0), (-1,-1), 8),
    ("GRID",          (0,0), (-1,-1), 0.4, MID_GREY),
    *[("BACKGROUND",  (0,i), (-1,i), LIGHT_GREY if i%2==0 else WHITE) for i in range(5)],
]))
story.append(prog_tbl)
story.append(Spacer(1, 8))

# ── MEMORY TRICKS ─────────────────────────────────────────────────────────────
story.append(section_header("💡  Memory Tricks"))
story.append(Spacer(1, 4))

tricks = [
    "<b>t(15;17)</b> = <b>15 + 17 = 32</b> → Remember: APL is treatable with <b>ATRA</b> → very favorable",
    "<b>Auer rods</b> = AML's signature; <b>bundles of Auer rods</b> = APL specifically",
    "<b>FLT3</b> = most common mutation overall in AML → Poor prognosis (targeted by midostaurin)",
    "<b>inv(16)</b> = look for abnormal <b>eosinophils</b> in the marrow",
    "<b>Down syndrome + AML</b> → always think <b>Megakaryocytic</b> subtype",
    "<b>DIC + leukemia</b> → always think <b>APL (M3)</b> first",
]
for trick in tricks:
    story.append(Paragraph(f"✦  {trick}", bullet_style))

story.append(Spacer(1, 6))

# ── FOOTER ────────────────────────────────────────────────────────────────────
story.append(HRFlowable(width="100%", thickness=0.5, color=MID_GREY))
story.append(Spacer(1, 3))
story.append(Paragraph(
    "Robbins, Cotran &amp; Kumar – Pathologic Basis of Disease | Table 13.10 | Quick Revision by Orris",
    S("ft", fontSize=7.5, textColor=MID_GREY, fontName="Helvetica-Oblique", alignment=TA_CENTER)
))

# ── BUILD ─────────────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF saved to: {OUTPUT}")
Running Command

python3 /home/daytona/workspace/aml-revision/generate_pdf.py

Your PDF is ready! Here's your download link:

AML Classification Summary

PDF Document · PDF

Here's what's inside:
  • Definition - what AML is in one sentence
  • WHO Classification Table - both Category I (genetic) and Category II (differentiation), with prognosis color-coded
  • Pathogenesis - the 4 mutation categories (transcription factors, epigenetic, signal transduction, TP53)
  • APL spotlight - t(15;17), PML-RARα, Auer rod bundles, DIC, ATRA treatment
  • Prognosis quick guide - from Very Favorable to Worst
  • Memory tricks - for exam recall (Down syndrome, DIC, FLT3, etc.)
All sourced directly from Robbins, Cotran & Kumar Table 13.10.
This is a shared conversation. Sign in to Orris to start your own chat.