Ihc studies in lymphoma

Reading File
IHC (immunohistochemistry) in lymphoma is a broad topic covering markers for B-cell, T-cell, and NK-cell lymphomas, as well as Hodgkin lymphoma. Let me search the medical library for comprehensive coverage.
Searching sources...
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Finding Sources
Finding Sources
Reading File
Reading File
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Now I have comprehensive data. Let me also fetch a few key IHC images to enrich the answer.
Loading Image
Loading Image
I now have all the information needed for a comprehensive answer. Here is the full synthesis:

IHC Studies in Lymphoma

Immunohistochemistry (IHC) is the cornerstone of lymphoma diagnosis and classification. It confirms lymphoid lineage, determines B-cell vs. T-cell origin, identifies specific subtypes, guides treatment decisions (e.g., rituximab eligibility), and in some cases provides prognostic information.

1. Core Lineage Markers (Initial Panel)

MarkerLineage/RoleKey Notes
CD45 (LCA)Pan-leukocytePositive in NHL; negative in classic HL (Reed-Sternberg cells)
CD20B-cell markerAll mature B-cell lymphomas; therapeutic target for rituximab
CD79aB-cell markerMore sensitive than CD20 in some B-cell lymphomas
PAX5B-cell transcription factorPresent on Reed-Sternberg cells in classic HL (weak)
CD3Pan-T-cell markerT-cell lymphomas
CD5T-cell/subset B-cellAlso positive in CLL/SLL and mantle cell lymphoma
CD10Follicle center markerFollicular lymphoma, DLBCL (GCB type), Burkitt
Ki-67Proliferation indexVery high (>95%) in Burkitt lymphoma; helps grade

2. Hodgkin Lymphoma (HL)

Classic HL (Nodular Sclerosis, Mixed Cellularity, Lymphocyte-Rich, Lymphocyte-Depleted)

Reed-Sternberg (RS) cells have a characteristic immunophenotype:
  • CD30+ (nearly 100%) - large membranous/Golgi staining
  • CD15+ (75-85%) - specific for classic RS cells
  • PAX5+ (weak) - confirms B-cell origin
  • CD45- (negative - key distinction from NHL)
  • CD20-, CD79a- (usually negative)
  • EBV (LMP-1)+ in ~70% Mixed-Cellularity, >90% Lymphocyte-Depleted
The RS cells have a characteristic phenotype: CD30+, CD15+, PAX5 (weak)+, CD45-, with lack of B-cell and T-cell markers. - Robbins, Cotran & Kumar Pathologic Basis of Disease

Nodular Lymphocyte Predominant HL (NLPHL) - distinct entity

The "popcorn cells" (L&H variants) differ from classic RS cells:
  • CD20+, BCL6+ (germinal center B-cell phenotype)
  • CD15-, CD30- (usually)
  • CD45+
  • EBV rarely associated
NLPHL vs. Classic HL distinction by IHC is critical, as NLPHL has a different clinical course and treatment.

3. B-Cell Non-Hodgkin Lymphomas

A. Diffuse Large B-Cell Lymphoma (DLBCL) - most common NHL

Basic panel: CD20+, CD79a+, PAX5+, CD45+
Subtyping by Hans Algorithm (IHC):
StepMarkerInterpretation
1CD10If >30% positive → GCB type
2BCL6If CD10-, BCL6- → non-GCB (ABC)
3MUM1If BCL6+, MUM1+ → non-GCB (ABC); MUM1- → GCB
Full IHC combination table:
CD10BCL6MUM1Phenotype
++-GCB
+--GCB
-+-GCB
-++non-GCB (ABC)
--+non-GCB (ABC)
Additional markers:
  • BCL2+ in 25-80% of DLBCLs (especially GCB via t(14;18))
  • MYC rearrangement in ~10%; concurrent BCL2 rearrangement = "double-hit lymphoma" (HGBL) - extremely poor prognosis
  • BCL6 rearranged in more ABC cases
- Harrison's Principles of Internal Medicine 22E; Quick Compendium of Clinical Pathology 5th ed.

B. Follicular Lymphoma (FL)

  • CD20+, CD10+, BCL6+, BCL2+ (overexpressed due to t(14;18))
  • CD5-, cyclin D1-, CD23- (negative panel distinguishes from MCL and CLL)
  • CD21+ FDC meshwork highlights follicular architecture
  • BCL2 positivity in neoplastic follicles vs. negative in reactive follicles is diagnostically useful

C. Mantle Cell Lymphoma (MCL)

  • CD20+, CD5+, cyclin D1+ (hallmark - due to t(11;14))
  • CD10-, CD23-, BCL6-
  • SOX11+ (most cases, helps identify cyclin D1-negative MCL)
  • Ki-67 high in blastoid variant

D. Burkitt Lymphoma

  • CD20+, CD10+, BCL6+, sIg+
  • Ki-67 ~100% (near 100% proliferative rate)
  • BCL2- (key: BCL2 is negative, unlike FL)
  • c-MYC rearrangement (t(8;14) in 80%, t(2;8) or t(8;22) in others)
- Sleisenger & Fordtran's Gastrointestinal and Liver Disease

E. MALT Lymphoma (Marginal Zone Lymphoma)

  • CD20+, CD79a+
  • CD5-, CD10-, CD23-, cyclin D1-, BCL6- (negative panel rules out CLL, MCL, FL)
  • BCL2+ may be present but is not diagnostic
  • Forms lymphoepithelial lesions
- Murray & Nadel's Textbook of Respiratory Medicine

F. Small Lymphocytic Lymphoma (SLL)/CLL

  • CD20+ (dim), CD5+, CD23+
  • CD10-, cyclin D1-
  • CD23+ differentiates from MCL (CD23-)

G. T-Cell/Histiocyte-Rich Large B-Cell Lymphoma (TCRBCL)

  • Large B cells: CD20+, CD10+, BCL6+ (pan-B markers)
  • Background small T cells: CD3+, CD8+ predominantly
  • Histiocytes: CD68+
  • Large B cells: CD15-, CD30-, EBV-
TCRBCL IHC panel showing CD3+ background T cells (panel d), CD68+ histiocytes (panel e), and CD20+/CD10+ large B cells (panels f,g)

4. T-Cell / NK-Cell Lymphomas

LymphomaKey IHC Profile
Peripheral T-cell lymphoma NOSCD3+, CD4+ or CD8+, variable loss of CD5/CD7
Anaplastic Large Cell Lymphoma (ALCL)CD30+, ALK+ (ALK+ has better prognosis), CD3 often negative
Angioimmunoblastic T-cell Lymphoma (AITL)CD3+, CD4+, PD-1+, CXCL13+, CD10+, CD21+ FDC expanded meshwork
NK/T-cell Lymphoma, nasal typeCD2+, CD56+, cytoplasmic CD3+, EBV+, granzyme B+
Hepatosplenic T-cell LymphomaCD3+, TCRγδ+, CD4-, CD8- (double negative), CD56+
Adult T-cell Leukemia/Lymphoma (ATLL)CD3+, CD4+, CD25+, CD7 often lost; HTLV-1+
Key tip: In T-cell lymphomas, look for aberrant loss of pan-T markers (CD3, CD5, CD7) - this suggests neoplasia. - Henry's Clinical Diagnosis and Management by Laboratory Methods

5. Summary: Quick Reference IHC Panel by Lymphoma Type

LymphomaCD20CD5CD10CD23Cyclin D1CD30CD15BCL2Ki-67
SLL/CLLdim++-+---+low
MCL++--+--+variable
FL+-+----+low-mod
DLBCL+-+/-----+/-high
Burkitt+-+-----~100%
MALT MZL+------+/-low
Classic HL (RS)-----++--
NLPHL (L&H)+--------
ALCL-----+--high

6. Role of IHC in Specific Contexts

  • Undifferentiated tumor workup: CD45 (lymphoma vs. carcinoma vs. melanoma) is the first step. A CD45+ large cell tumor prompts a full lymphoma panel.
  • Double-hit lymphoma: MYC + BCL2 (and/or BCL6) IHC positivity, confirmed by FISH - poor prognosis DLBCL.
  • CNS lymphoma: Perivascular CD20+ large cells are characteristic of primary CNS DLBCL.
  • Skin lymphomas: CD30 is key for lymphomatoid papulosis and ALCL; CD8 for cytotoxic T-cell lymphomas.
  • Burkitt vs. DLBCL: Ki-67 ~100% + BCL2 negativity favors Burkitt; MYC FISH is confirmatory.
DLBCL - primary CNS lymphoma showing tight perivascular aggregates of large lymphocytes with strong CD20 expression (panel d)

Key sources: Robbins, Cotran & Kumar Pathologic Basis of Disease; Harrison's Principles of Internal Medicine 22E; Quick Compendium of Clinical Pathology 5th ed.; Henry's Clinical Diagnosis and Management by Laboratory Methods; Murray & Nadel's Textbook of Respiratory Medicine.

Generate a quick reference PDF for lymphoma IHC stain interpretation

Reading File
Reading File
Running Command

ls /home/daytona/workspace/ && python3 -c "import reportlab; print('reportlab ok')" && python3 -c "from reportlab.lib import colors; print('colors ok')"

Running Command

mkdir -p /home/daytona/workspace/lymphoma-ihc

Writing File

~/lymphoma-ihc/generate_pdf.py

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm, mm
from reportlab.platypus import (
    SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
    HRFlowable, KeepTogether, PageBreak
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT
from reportlab.platypus import BaseDocTemplate, Frame, PageTemplate
from reportlab.lib.colors import HexColor

OUTPUT = "/home/daytona/workspace/lymphoma-ihc/Lymphoma_IHC_Quick_Reference.pdf"

# ── Colour palette ──────────────────────────────────────────────────────────
NAVY      = HexColor("#1B3A6B")
TEAL      = HexColor("#1A7A8A")
AMBER     = HexColor("#E67E22")
LIGHT_BG  = HexColor("#F0F4F8")
HEADER_BG = HexColor("#1B3A6B")
ROW_ALT   = HexColor("#E8F0F7")
WHITE     = colors.white
BLACK     = colors.black
POS_GREEN = HexColor("#1E7E34")
NEG_RED   = HexColor("#C0392B")
VAR_AMBER = HexColor("#D4860B")

# ── Styles ───────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()

TITLE_STYLE = ParagraphStyle("Title", fontName="Helvetica-Bold", fontSize=22,
                              textColor=WHITE, alignment=TA_CENTER, spaceAfter=4)
SUBTITLE_STYLE = ParagraphStyle("Subtitle", fontName="Helvetica", fontSize=11,
                                 textColor=HexColor("#B8D4E8"), alignment=TA_CENTER, spaceAfter=2)
DATE_STYLE = ParagraphStyle("Date", fontName="Helvetica-Oblique", fontSize=9,
                              textColor=HexColor("#B8D4E8"), alignment=TA_CENTER)

SECTION_STYLE = ParagraphStyle("Section", fontName="Helvetica-Bold", fontSize=13,
                                textColor=WHITE, alignment=TA_LEFT,
                                leftIndent=6, spaceAfter=0, spaceBefore=0)

BODY_STYLE = ParagraphStyle("Body", fontName="Helvetica", fontSize=8.5,
                              textColor=BLACK, spaceAfter=3, leading=12)
BODY_BOLD  = ParagraphStyle("BodyBold", fontName="Helvetica-Bold", fontSize=8.5,
                              textColor=BLACK, spaceAfter=3, leading=12)
CAPTION    = ParagraphStyle("Caption", fontName="Helvetica-Oblique", fontSize=7.5,
                              textColor=HexColor("#555555"), spaceAfter=4)
FOOTNOTE   = ParagraphStyle("Footnote", fontName="Helvetica-Oblique", fontSize=7,
                              textColor=HexColor("#666666"), spaceAfter=2)

# cell styles
TH_STYLE = ParagraphStyle("TH", fontName="Helvetica-Bold", fontSize=8,
                            textColor=WHITE, alignment=TA_CENTER, leading=10)
TD_STYLE = ParagraphStyle("TD", fontName="Helvetica", fontSize=7.8,
                            textColor=BLACK, alignment=TA_CENTER, leading=10)
TD_LEFT  = ParagraphStyle("TDL", fontName="Helvetica", fontSize=7.8,
                            textColor=BLACK, alignment=TA_LEFT, leading=10)
TD_BOLD  = ParagraphStyle("TDB", fontName="Helvetica-Bold", fontSize=7.8,
                            textColor=BLACK, alignment=TA_LEFT, leading=10)

def pos(text="+"):  return Paragraph(f'<font color="#1E7E34"><b>{text}</b></font>', TD_STYLE)
def neg(text="−"):  return Paragraph(f'<font color="#C0392B"><b>{text}</b></font>', TD_STYLE)
def var(text="+/−"): return Paragraph(f'<font color="#D4860B"><b>{text}</b></font>', TD_STYLE)
def th(text):        return Paragraph(f"<b>{text}</b>", TH_STYLE)
def td(text):        return Paragraph(text, TD_STYLE)
def tdl(text):       return Paragraph(text, TD_LEFT)
def tdb(text):       return Paragraph(f"<b>{text}</b>", TD_BOLD)

def section_bar(title):
    """Returns a coloured section header bar."""
    data = [[Paragraph(f"<b>{title}</b>", SECTION_STYLE)]]
    t = Table(data, colWidths=[17.7*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), TEAL),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING",   (0,0), (-1,-1), 8),
        ("ROUNDEDCORNERS", [3]),
    ]))
    return t

def base_table_style(header_rows=1):
    return [
        ("BACKGROUND",    (0,0),  (-1, header_rows-1), NAVY),
        ("TEXTCOLOR",     (0,0),  (-1, header_rows-1), WHITE),
        ("FONTNAME",      (0,0),  (-1, header_rows-1), "Helvetica-Bold"),
        ("FONTSIZE",      (0,0),  (-1,-1), 8),
        ("ROWBACKGROUNDS",(0, header_rows), (-1,-1), [WHITE, ROW_ALT]),
        ("GRID",          (0,0),  (-1,-1), 0.4, HexColor("#AAAAAA")),
        ("TOPPADDING",    (0,0),  (-1,-1), 4),
        ("BOTTOMPADDING", (0,0),  (-1,-1), 4),
        ("LEFTPADDING",   (0,0),  (-1,-1), 4),
        ("RIGHTPADDING",  (0,0),  (-1,-1), 4),
        ("VALIGN",        (0,0),  (-1,-1), "MIDDLE"),
    ]

# ── Header / footer callbacks ────────────────────────────────────────────────
def on_first_page(canvas, doc):
    canvas.saveState()
    w, h = A4
    # navy banner
    canvas.setFillColor(NAVY)
    canvas.rect(0, h-3.8*cm, w, 3.8*cm, fill=1, stroke=0)
    # teal accent stripe
    canvas.setFillColor(TEAL)
    canvas.rect(0, h-4.1*cm, w, 0.3*cm, fill=1, stroke=0)
    canvas.restoreState()

def on_later_pages(canvas, doc):
    canvas.saveState()
    w, h = A4
    # slim top bar
    canvas.setFillColor(NAVY)
    canvas.rect(0, h-1.2*cm, w, 1.2*cm, fill=1, stroke=0)
    canvas.setFont("Helvetica-Bold", 8)
    canvas.setFillColor(WHITE)
    canvas.drawString(1.5*cm, h-0.85*cm, "LYMPHOMA IHC — QUICK REFERENCE")
    canvas.drawRightString(w-1.5*cm, h-0.85*cm, f"Page {doc.page}")
    # footer
    canvas.setFillColor(NAVY)
    canvas.rect(0, 0, w, 0.8*cm, fill=1, stroke=0)
    canvas.setFont("Helvetica-Oblique", 7)
    canvas.setFillColor(HexColor("#B8D4E8"))
    canvas.drawCentredString(w/2, 0.28*cm,
        "Sources: Robbins Pathology · Harrison's Internal Medicine 22E · Quick Compendium of Clinical Pathology 5e · Henry's Lab Methods")
    canvas.restoreState()

# ── Build document ────────────────────────────────────────────────────────────
doc = SimpleDocTemplate(
    OUTPUT,
    pagesize=A4,
    leftMargin=1.5*cm, rightMargin=1.5*cm,
    topMargin=4.5*cm, bottomMargin=1.5*cm,
    title="Lymphoma IHC Quick Reference",
    author="Orris Medical AI",
)

story = []

# ── Cover header content ──────────────────────────────────────────────────────
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph("LYMPHOMA IHC", TITLE_STYLE))
story.append(Paragraph("Quick Reference Guide for Immunohistochemical Stain Interpretation", SUBTITLE_STYLE))
story.append(Paragraph("Based on WHO Classification · Robbins Pathology · Harrison's 22E · Quick Compendium 5e", DATE_STYLE))
story.append(Spacer(1, 0.6*cm))

# ── LEGEND ────────────────────────────────────────────────────────────────────
legend_data = [
    [th("Symbol"), th("Meaning")],
    [pos("+"),  tdl("Positive / Expressed")],
    [neg("−"),  tdl("Negative / Not expressed")],
    [var("+/−"),tdl("Variable / Inconsistent expression")],
    [pos("dim+"),tdl("Weakly / dimly positive")],
    [td("~100%"),tdl("Near-100% proliferative index (Ki-67)")],
]
legend_table = Table(legend_data, colWidths=[2.5*cm, 6*cm])
legend_table.setStyle(TableStyle(base_table_style()))

story.append(KeepTogether([
    section_bar("LEGEND"),
    Spacer(1, 0.15*cm),
    legend_table,
    Spacer(1, 0.5*cm),
]))

# ── SECTION 1: CORE LINEAGE PANEL ────────────────────────────────────────────
lineage_data = [
    [th("Marker"), th("Lineage / Role"), th("Key Diagnostic Use")],
    [tdb("CD45 (LCA)"), tdl("Pan-leukocyte"), tdl("ALL lymphomas +; Negative in classic Reed-Sternberg cells (HL)")],
    [tdb("CD20"),       tdl("B-cell"),       tdl("Mature B-cell lymphomas; rituximab therapeutic target")],
    [tdb("CD79a"),      tdl("B-cell"),       tdl("Sensitive B-cell marker; positive when CD20 lost (e.g. post-rituximab)")],
    [tdb("PAX5"),       tdl("B-cell TF"),    tdl("Weak + in Reed-Sternberg cells; confirms B origin in classic HL")],
    [tdb("CD3"),        tdl("Pan-T-cell"),   tdl("T-cell lymphomas; surface loss suggests neoplasia")],
    [tdb("CD5"),        tdl("T-cell + B subset"), tdl("CLL/SLL and MCL among B-cell lymphomas; absent in FL/DLBCL")],
    [tdb("CD10"),       tdl("Follicle center"), tdl("FL, DLBCL-GCB, Burkitt, AITL; absent in MCL/MZL/CLL")],
    [tdb("BCL6"),       tdl("GC B-cell TF"), tdl("FL, DLBCL-GCB; AITL (T-cells); NLPHL L&H cells")],
    [tdb("MUM1/IRF4"),  tdl("Post-GC/plasma cell"), tdl("DLBCL-ABC subtype; plasma cell myeloma; ALCL")],
    [tdb("BCL2"),       tdl("Anti-apoptotic"), tdl("FL (t14;18), DLBCL; Negative in Burkitt (key distinction)")],
    [tdb("Cyclin D1"),  tdl("Cell cycle"),   tdl("Hallmark of MCL t(11;14); also hairy cell leukemia")],
    [tdb("CD30"),       tdl("Activation marker"), tdl("Classic HL RS cells, ALCL, lymphomatoid papulosis")],
    [tdb("CD15"),       tdl("Granulocyte/RS"), tdl("Classic HL RS cells 75–85%; absent in NLPHL")],
    [tdb("Ki-67"),      tdl("Proliferation"), tdl("~100% Burkitt; high in DLBCL/ALCL; low in FL/SLL/MCL")],
    [tdb("EBV (LMP-1)"),tdl("Viral marker"), tdl("HL mixed-cellularity 70%, lymphocyte-depleted >90%; NK/T lymphoma")],
]
lineage_table = Table(lineage_data, colWidths=[2.6*cm, 3.1*cm, 12*cm])
lineage_table.setStyle(TableStyle(base_table_style()))

story.append(KeepTogether([
    section_bar("1 · CORE LINEAGE & DIAGNOSTIC MARKERS"),
    Spacer(1, 0.15*cm),
    lineage_table,
    Spacer(1, 0.5*cm),
]))

# ── SECTION 2: MASTER IHC TABLE ──────────────────────────────────────────────
# Columns: Lymphoma | CD20 | CD5 | CD10 | CD23 | CycD1 | BCL2 | BCL6 | CD30 | CD15 | CD45 | Ki-67
master_headers = [th(x) for x in [
    "Lymphoma", "CD20","CD5","CD10","CD23","CyclinD1","BCL2","BCL6","CD30","CD15","CD45","Ki-67"
]]
master_data = [master_headers,
    [tdb("SLL / CLL"),    pos("dim+"), pos(), neg(),  pos(),  neg(),   pos(),   neg(),  neg(),  neg(),  pos(),  td("Low")],
    [tdb("MCL"),          pos(),       pos(), neg(),  neg(),  pos("✓"),pos(),   neg(),  neg(),  neg(),  pos(),  td("Var")],
    [tdb("Follicular"),   pos(),       neg(), pos(),  neg(),  neg(),   pos("✓"),pos(),  neg(),  neg(),  pos(),  td("Low")],
    [tdb("MALT/MZL"),     pos(),       neg(), neg(),  neg(),  neg(),   var(),   neg(),  neg(),  neg(),  pos(),  td("Low")],
    [tdb("DLBCL-GCB"),    pos(),       neg(), pos(),  neg(),  neg(),   var(),   pos(),  neg(),  neg(),  pos(),  td("High")],
    [tdb("DLBCL-ABC"),    pos(),       neg(), neg(),  neg(),  neg(),   var(),   neg(),  neg(),  neg(),  pos(),  td("High")],
    [tdb("Burkitt"),      pos(),       neg(), pos(),  neg(),  neg(),   neg("✓"),pos(),  neg(),  neg(),  pos(),  td("~100%")],
    [tdb("Classic HL"),   neg(),       neg(), neg(),  neg(),  neg(),   neg(),   neg(),  pos("✓"),pos("✓"),neg("✓"),td("Var")],
    [tdb("NLPHL"),        pos("✓"),    neg(), neg(),  neg(),  neg(),   neg(),   pos(),  neg(),  neg(),  pos(),  td("Low")],
    [tdb("ALCL (ALK+)"),  neg(),       neg(), neg(),  neg(),  neg(),   neg(),   neg(),  pos("✓"),neg(),  pos(),  td("High")],
    [tdb("PTCL-NOS"),     neg(),       neg(), neg(),  neg(),  neg(),   neg(),   neg(),  neg(),  neg(),  pos(),  td("High")],
    [tdb("NK/T-cell"),    neg(),       neg(), neg(),  neg(),  neg(),   neg(),   neg(),  neg(),  neg(),  pos(),  td("High")],
]

# Highlight special "key" cells
col_widths = [2.8*cm, 1.3*cm, 1.1*cm, 1.1*cm, 1.15*cm, 1.5*cm, 1.15*cm, 1.15*cm, 1.15*cm, 1.15*cm, 1.15*cm, 1.3*cm]
master_table = Table(master_data, colWidths=col_widths)
ts = base_table_style()
# mark key diagnostics with light gold
key_cells = [
    (5,2),(5,3),(5,4),(5,5),   # MCL cyclin D1
    (6,3),(6,7),                # FL CD10, BCL2
    (9,11),                     # Burkitt Ki67
    (8,9),(8,10),(8,11),        # Classic HL CD30 CD15 CD45
    (9,8),                      # NLPHL CD20
    (10,9),                     # ALCL CD30
]
for (row,col) in key_cells:
    ts.append(("BACKGROUND", (col,row), (col,row), HexColor("#FFF3CD")))

master_table.setStyle(TableStyle(ts))

story.append(KeepTogether([
    section_bar("2 · MASTER IHC PROFILE TABLE"),
    Spacer(1, 0.15*cm),
    master_table,
    Spacer(1, 0.15*cm),
    Paragraph("✓ = hallmark/diagnostic marker  |  Highlighted cells = key distinguishing markers", CAPTION),
    Spacer(1, 0.4*cm),
]))

# ── SECTION 3: HODGKIN LYMPHOMA ───────────────────────────────────────────────
hl_data = [
    [th("Subtype"), th("% of HL"), th("RS Cell Variant"), th("IHC Profile"), th("EBV"), th("Notes")],
    [tdb("Nodular Sclerosis"),     td("65–70%"), tdl("Lacunar cells"),           tdl("CD30+, CD15+, PAX5+w, CD45−"), td("Rare"),   tdl("Young adults; mediastinal disease")],
    [tdb("Mixed Cellularity"),     td("20–25%"), tdl("Classic RS cells"),        tdl("CD30+, CD15+, PAX5+w, CD45−"), td("~70%"),   tdl("Older males; advanced stage")],
    [tdb("Lymphocyte-Rich"),       td("~5%"),    tdl("Mononuclear variants"),    tdl("CD30+, CD15+, PAX5+w, CD45−"), td("~40%"),   tdl("Good prognosis")],
    [tdb("Lymphocyte-Depleted"),   td("<5%"),    tdl("Pleomorphic RS"),          tdl("CD30+, CD15+, PAX5+w, CD45−"), td(">90%"),   tdl("Poorest prognosis; rule out ALCL")],
    [tdb("NLPHL (non-classic)"),   td("~5%"),    tdl("Popcorn/L&H cells"),       tdl("CD20+, BCL6+, CD30−, CD15−, CD45+"), td("Rare"), tdl("Different entity; better prognosis")],
]
hl_table = Table(hl_data, colWidths=[3.4*cm, 1.6*cm, 2.8*cm, 4.8*cm, 1.2*cm, 3.9*cm])
hl_ts = base_table_style()
# NLPHL row highlight in amber background
for col in range(6):
    hl_ts.append(("BACKGROUND", (col, 5), (col, 5), HexColor("#FFF3CD")))
hl_table.setStyle(TableStyle(hl_ts))

story.append(KeepTogether([
    section_bar("3 · HODGKIN LYMPHOMA — SUBTYPE IHC"),
    Spacer(1, 0.15*cm),
    hl_table,
    Spacer(1, 0.15*cm),
    Paragraph("w = weakly positive  |  NLPHL = Nodular Lymphocyte Predominant HL (highlighted — distinct from classic HL)", CAPTION),
    Spacer(1, 0.4*cm),
]))

# ── SECTION 4: DLBCL SUBTYPING — HANS ALGORITHM ─────────────────────────────
hans_data = [
    [th("Step"), th("Marker"), th("Threshold"), th("Result")],
    [td("1"), tdb("CD10"), tdl("> 30% positive"), tdl("→ GCB type (stop)")],
    [td("2"), tdb("BCL6"), tdl("Positive"), tdl("→ Proceed to step 3; if negative → non-GCB (ABC)")],
    [td("3"), tdb("MUM1"), tdl("Positive"), tdl("→ non-GCB (ABC); if negative → GCB")],
]
hans_table = Table(hans_data, colWidths=[1.5*cm, 2.5*cm, 4.5*cm, 9.2*cm])
hans_table.setStyle(TableStyle(base_table_style()))

combo_data = [
    [th("CD10"), th("BCL6"), th("MUM1"), th("Phenotype"), th("Common Genetics"), th("Prognosis")],
    [pos(), pos(), neg(), tdb("GCB"),       tdl("t(14;18) BCL2; BCL6 rare"), tdl("Better (R-CHOP sensitive)")],
    [pos(), neg(), neg(), tdb("GCB"),       tdl("t(14;18) BCL2"),            tdl("Better")],
    [neg(), pos(), neg(), tdb("GCB"),       tdl("BCL6 rearrangement"),       tdl("Better")],
    [neg(), pos(), pos(), tdb("non-GCB (ABC)"), tdl("BCL6 t(3;X)"),         tdl("Worse")],
    [neg(), neg(), pos(), tdb("non-GCB (ABC)"), tdl("NF-κB activation"),    tdl("Worse")],
]
combo_table = Table(combo_data, colWidths=[1.8*cm, 1.8*cm, 1.8*cm, 3.2*cm, 5.5*cm, 3.6*cm])
combo_table.setStyle(TableStyle(base_table_style()))

story.append(KeepTogether([
    section_bar("4 · DLBCL SUBTYPING — HANS ALGORITHM (IHC)"),
    Spacer(1, 0.15*cm),
    Paragraph("<b>Step-wise evaluation:</b>", BODY_BOLD),
    Spacer(1, 0.1*cm),
    hans_table,
    Spacer(1, 0.25*cm),
    Paragraph("<b>Full combination matrix:</b>", BODY_BOLD),
    Spacer(1, 0.1*cm),
    combo_table,
    Spacer(1, 0.15*cm),
    Paragraph(
        "Double-hit lymphoma: MYC rearrangement + BCL2 and/or BCL6 rearrangement — confirm by FISH. "
        "Extremely poor prognosis (median OS 12–18 months). MYC protein >40% + BCL2 >50% by IHC = "
        '"double-expressor" — also adverse even without rearrangements.',
        BODY_STYLE),
    Spacer(1, 0.4*cm),
]))

# ── SECTION 5: T-CELL / NK-CELL LYMPHOMAS ────────────────────────────────────
tcell_data = [
    [th("Lymphoma"), th("Key Positive Markers"), th("Key Negative"), th("Special Marker"), th("Notes")],
    [tdb("PTCL-NOS"),    tdl("CD3, CD4 or CD8"), tdl("No single defining marker"), tdl("Aberrant T-cell Ag loss"), tdl("Diagnosis of exclusion")],
    [tdb("ALCL ALK+"),   tdl("CD30 (strong), EMA"), tdl("CD3 often −"), tdl("ALK (nuclear+cytoplasmic)"), tdl("Better prognosis; t(2;5) NPM-ALK")],
    [tdb("ALCL ALK−"),   tdl("CD30 (strong), EMA"), tdl("ALK−"),        tdl("DUSP22 or TP63 by FISH"), tdl("Worse prognosis")],
    [tdb("AITL"),        tdl("CD3, CD4, PD-1, CXCL13, CD10"), tdl("CD8"), tdl("CD21+ expanded FDC meshwork, EBER+"), tdl("TFH cell origin")],
    [tdb("NK/T-cell"),   tdl("CD56, CD2, cytoCD3, Granzyme B"), tdl("sCD3−, CD5−"), tdl("EBV (EBER) in situ hybridisation +"), tdl("Nasal type; aggressive")],
    [tdb("Hepatosplenic"), tdl("CD3, CD56"), tdl("CD4−, CD8−"), tdl("TCRγδ+"), tdl("Young males; sinusoidal")],
    [tdb("ATLL"),        tdl("CD3, CD4, CD25"), tdl("CD7 (often lost)"), tdl("HTLV-1 serology"), tdl("FoxP3+ (regulatory T-cell)")],
    [tdb("MF / Sézary"), tdl("CD3, CD4"), tdl("CD7, CD26 loss"), tdl("CD4:CD8 ratio >10 in blood"), tdl("Epidermotropic; indolent")],
]
tcell_table = Table(tcell_data, colWidths=[2.8*cm, 4.2*cm, 2.5*cm, 4.4*cm, 3.8*cm])
tcell_table.setStyle(TableStyle(base_table_style()))

story.append(KeepTogether([
    section_bar("5 · T-CELL & NK-CELL LYMPHOMAS"),
    Spacer(1, 0.15*cm),
    tcell_table,
    Spacer(1, 0.15*cm),
    Paragraph("AITL = Angioimmunoblastic T-cell Lymphoma  |  ALCL = Anaplastic Large Cell Lymphoma  |  MF = Mycosis Fungoides  |  TFH = T follicular helper", CAPTION),
    Spacer(1, 0.4*cm),
]))

# ── PAGE 2: DIFFERENTIAL DIAGNOSIS PANELS ────────────────────────────────────
story.append(PageBreak())

# ── SECTION 6: KEY DIFFERENTIALS ──────────────────────────────────────────────
diff_data = [
    [th("Differential"), th("CD5"), th("CD10"), th("CD23"), th("Cyclin D1"), th("BCL2"), th("SOX11"), th("Key Distinguisher")],
    [tdb("CLL/SLL"),   pos("dim"), neg(), pos(), neg(), pos(), neg(), tdl("CD23+, CD5+, dim CD20, dim sIg")],
    [tdb("MCL"),       pos(),      neg(), neg(), pos("✓"),pos(),pos("✓"),tdl("Cyclin D1+ (FISH if negative); SOX11+")],
    [tdb("FL"),        neg(),      pos(), neg(), neg(), pos("✓"),neg(),tdl("CD10+, BCL2+, follicular pattern, t(14;18)")],
    [tdb("MZL/MALT"),  neg(),      neg(), neg(), neg(), var(), neg(), tdl("All negative — diagnosis by exclusion + morphology")],
]
diff_table = Table(diff_data, colWidths=[2.6*cm, 1.4*cm, 1.4*cm, 1.5*cm, 2.2*cm, 1.4*cm, 1.5*cm, 6.2*cm])
diff_table.setStyle(TableStyle(base_table_style()))

story.append(KeepTogether([
    section_bar("6 · DIFFERENTIAL: SMALL B-CELL LYMPHOMAS"),
    Spacer(1, 0.15*cm),
    diff_table,
    Spacer(1, 0.4*cm),
]))

# ── Burkitt vs DLBCL ──────────────────────────────────────────────────────────
bvd_data = [
    [th("Feature"),        th("Burkitt Lymphoma"),               th("DLBCL")],
    [tdb("CD20"),          pos(),                                pos()],
    [tdb("CD10"),          pos(),                                var()],
    [tdb("BCL6"),          pos(),                                var()],
    [tdb("BCL2"),          neg("✓ negative"),                    var()],
    [tdb("MUM1"),          neg(),                                var()],
    [tdb("Ki-67"),         td("~100% ✓"),                        td("60–90%")],
    [tdb("MYC"),           tdl("Rearranged (FISH) 100%"),        tdl("~10% rearranged")],
    [tdb("Morphology"),    tdl('"Starry sky" — tingible-body macrophages'), tdl("Large atypical cells, necrosis")],
    [tdb("Translocation"), tdl("t(8;14), t(2;8), t(8;22)"),     tdl("t(14;18) in GCB; BCL6 in ABC")],
]
bvd_table = Table(bvd_data, colWidths=[3.2*cm, 7.25*cm, 7.25*cm])
bvd_table.setStyle(TableStyle(base_table_style()))

story.append(KeepTogether([
    section_bar("7 · DIFFERENTIAL: BURKITT vs DLBCL"),
    Spacer(1, 0.15*cm),
    bvd_table,
    Spacer(1, 0.4*cm),
]))

# ── Classic HL vs NLPHL ────────────────────────────────────────────────────────
hl_diff_data = [
    [th("Feature"),    th("Classic HL"),                     th("NLPHL")],
    [tdb("RS/Tumor cell"), tdl("Classic RS, lacunar, mononuclear"), tdl("Popcorn/L&H cells")],
    [tdb("CD20"),      neg(),                                pos("✓")],
    [tdb("CD45"),      neg("✓"),                             pos()],
    [tdb("CD15"),      pos("✓"),                             neg("✓")],
    [tdb("CD30"),      pos("✓"),                             neg("rare+")],
    [tdb("PAX5"),      pos("weak"),                          pos("strong")],
    [tdb("BCL6"),      neg(),                                pos("✓")],
    [tdb("EBV"),       var("+/− (subtype dependent)"),       neg("Rare")],
    [tdb("EMA"),       neg(),                                pos("+/−")],
    [tdb("Background"),tdl("T-cells, eosinophils, plasma cells"), tdl("B-cell-rich nodules, FDC meshwork")],
    [tdb("Prognosis"), tdl("Excellent with chemo-RT"),      tdl("Excellent; late relapses possible")],
]
hl_diff_table = Table(hl_diff_data, colWidths=[3.2*cm, 7.25*cm, 7.25*cm])
hl_diff_table.setStyle(TableStyle(base_table_style()))

story.append(KeepTogether([
    section_bar("8 · DIFFERENTIAL: CLASSIC HL vs NLPHL"),
    Spacer(1, 0.15*cm),
    hl_diff_table,
    Spacer(1, 0.4*cm),
]))

# ── SECTION 9: PRACTICAL TIPS ─────────────────────────────────────────────────
tips = [
    ("<b>CD45 first:</b> A CD45-negative large cell tumour raises HL, germ cell tumour, carcinoma, or melanoma "
     "before NHL. Always confirm with CD30/CD15 (HL) or keratins/PLAP (carcinoma/GCT)."),
    ("<b>BCL2 in follicular lymphoma:</b> BCL2+ in neoplastic follicles vs. BCL2− in reactive follicles. "
     "Confirm t(14;18) by FISH when in doubt."),
    ("<b>Burkitt BCL2:</b> BCL2 negativity with Ki-67 ~100% virtually excludes DLBCL and is a red flag for Burkitt. "
     "Always confirm MYC rearrangement by FISH."),
    ("<b>Double-expressor DLBCL:</b> MYC >40% + BCL2 >50% by IHC without FISH-confirmed rearrangement still "
     "confers adverse prognosis but does not define 'double-hit lymphoma'. FISH is needed for the latter."),
    ("<b>ALK in ALCL:</b> ALK+ ALCL (t(2;5), NPM-ALK fusion) — nuclear+cytoplasmic staining. "
     "ALK− ALCL — identical morphology and CD30 positivity but ALK absent; worse prognosis."),
    ("<b>CD5+ B-cell lymphoma:</b> MCL (cyclin D1+, SOX11+) vs CLL/SLL (CD23+, dim sIg). "
     "Rarely, DLBCL can be CD5+ — aggressive behaviour."),
    ("<b>T-cell marker loss:</b> In T-cell lymphomas, aberrant loss of CD3, CD5, or CD7 supports neoplasia. "
     "Normal T-cells express all three."),
    ("<b>EBV in NK/T-cell lymphoma:</b> EBER (EBV-encoded RNA) by in situ hybridisation is the preferred method "
     "— more sensitive than LMP-1 by IHC."),
    ("<b>Hairy Cell Leukaemia:</b> CD20+, CD11c+, CD25+, CD103+ (TRAP+). CD5−, CD23−. "
     "BRAF V600E IHC (VE1 antibody) positive in >95%."),
]

tips_story = [
    section_bar("9 · PRACTICAL DIAGNOSTIC TIPS"),
    Spacer(1, 0.15*cm),
]
for i, tip in enumerate(tips, 1):
    tips_story.append(Paragraph(f"<b>{i}.</b>  {tip}", BODY_STYLE))

story.append(KeepTogether(tips_story))
story.append(Spacer(1, 0.5*cm))

# ── SECTION 10: QUICK ALGORITHM BOXES ─────────────────────────────────────────
algo_data = [
    [th("Clinical Scenario"), th("First IHC Panel"), th("Decision")],
    [tdl("Undifferentiated large cell"), tdl("CD45, CK, S100, CD30"), tdl("CD45+ → lymphoma panel | CD45− → carcinoma/melanoma/HL")],
    [tdl("Small B-cell lymphoma"), tdl("CD5, CD10, CD23, Cyclin D1"), tdl("See Section 6 algorithm above")],
    [tdl("Large B-cell lymphoma"), tdl("CD20, CD10, BCL6, MUM1, BCL2, Ki-67"), tdl("Apply Hans algorithm; add MYC IHC if high grade")],
    [tdl("Mediastinal mass"), tdl("CD20, CD30, CD15, CD45, PAX5"), tdl("HL vs PMBCL (CD20+ CD23+ BCL6+ MAL+) vs T-LBL")],
    [tdl("Suspect Burkitt"), tdl("CD20, CD10, BCL6, BCL2, Ki-67, MYC FISH"), tdl("BCL2−, Ki-67 ~100%, MYC FISH+ = Burkitt")],
    [tdl("Suspect T-cell NHL"), tdl("CD3, CD4, CD8, CD5, CD7, CD30, ALK"), tdl("Loss of CD5/CD7 supports neoplasia; CD30+ → ALCL panel")],
    [tdl("Skin lymphoma"), tdl("CD3, CD4, CD8, CD20, CD30, CD56"), tdl("CD4+ epidermotropic = MF; CD30+ = lymphomatoid papulosis/pcALCL")],
]
algo_table = Table(algo_data, colWidths=[4.0*cm, 5.5*cm, 8.2*cm])
algo_table.setStyle(TableStyle(base_table_style()))

story.append(KeepTogether([
    section_bar("10 · CLINICAL SCENARIO — PANEL SELECTION GUIDE"),
    Spacer(1, 0.15*cm),
    algo_table,
    Spacer(1, 0.4*cm),
]))

# ── FOOTER DISCLAIMER ─────────────────────────────────────────────────────────
story.append(HRFlowable(width="100%", thickness=0.5, color=NAVY))
story.append(Spacer(1, 0.15*cm))
story.append(Paragraph(
    "This quick-reference document is intended for educational and clinical support purposes. "
    "IHC interpretation must always be correlated with morphology, clinical context, and molecular findings. "
    "Sources: Robbins, Cotran & Kumar Pathologic Basis of Disease; Harrison's Principles of Internal Medicine 22E; "
    "Quick Compendium of Clinical Pathology 5th Edition; Henry's Clinical Diagnosis and Management by Laboratory Methods; "
    "Murray & Nadel's Textbook of Respiratory Medicine. WHO Classification of Tumours of Haematopoietic and Lymphoid Tissues.",
    FOOTNOTE))

# ── Build PDF ─────────────────────────────────────────────────────────────────
doc.build(story,
          onFirstPage=on_first_page,
          onLaterPages=on_later_pages)

print(f"PDF generated: {OUTPUT}")
Running Command

python3 /home/daytona/workspace/lymphoma-ihc/generate_pdf.py 2>&1

Running Command

ls -lh /home/daytona/workspace/lymphoma-ihc/Lymphoma_IHC_Quick_Reference.pdf

Your PDF is ready:

Lymphoma IHC Quick Reference

PDF Document · PDF


Here's what's included across the 2-page document:
SectionContents
LegendSymbol key: +, −, +/−, dim+, ~100%
1. Core Lineage MarkersCD45, CD20, CD79a, PAX5, CD3, CD5, CD10, BCL6, MUM1, BCL2, Cyclin D1, CD30, CD15, Ki-67, EBV
2. Master IHC Profile Table12 lymphoma types across 11 markers - with highlighted hallmark cells
3. Hodgkin Lymphoma SubtypesAll 5 HL subtypes with RS cell variant, IHC profile, EBV association
4. DLBCL Hans AlgorithmStep-wise CD10/BCL6/MUM1 subtyping table + full combination matrix + double-hit note
5. T-cell & NK-cell LymphomasPTCL, ALCL ALK+/−, AITL, NK/T, Hepatosplenic, ATLL, MF/Sézary
6. Small B-cell DifferentialCLL vs MCL vs FL vs MALT comparison
7. Burkitt vs DLBCL9-point IHC + genetics comparison
8. Classic HL vs NLPHLSide-by-side IHC distinction table
9. Practical Diagnostic Tips9 high-yield pearls (BCL2, double-expressor, ALK, CD5, etc.)
10. Panel Selection GuideScenario-based first-line panel recommendations
Color-coded throughout with navy/teal headers, green + / red − symbols, and gold highlighting for hallmark markers.

Discuss NHL who classification, molecular markers and recent advances

Reading File
This is a broad, multi-faceted query. I'll run parallel searches across the medical library and PubMed simultaneously for maximum coverage.
Searching sources...
Finding Sources
Finding Sources
Searching PubMed

"non-Hodgkin lymphoma" AND "WHO classification" AND "molecular"

Reading File
Finding Sources
Searching PubMed

"lymphoma" AND "molecular pathogenesis" AND "targeted therapy"

Reading File
Finding Sources
Searching PubMed

"CAR-T cell" AND "lymphoma" AND "outcomes"

Reading File
Finding Sources
Searching PubMed

"bispecific antibody" AND "large B cell lymphoma"

Finding Sources
Finding Sources
Searching PubMed

"5th edition WHO classification" AND "lymphoid neoplasms" AND "2022"

Reading Article

PMID: 38978094

Reading Article

PMID: 36788062

Finding Sources
Finding Sources
Finding Sources
Searching PubMed

"follicular lymphoma" AND "molecular markers" AND "prognosis"

Reading File
Searching PubMed

"DLBCL" AND "genetic subtypes" AND "EZB MCD BN2 N1"

Reading File
Searching PubMed

"DLBCL" AND "genetic subtypes" AND "targeted therapy"

Searching PubMed

"lymphoma" AND "BTK inhibitor" AND "novel therapy" AND "2024"

Searching the Web

WHO 5th edition 2022 lymphoma classification changes NHL new entities ICC

Searching the Web

NHL recent advances 2024 2025 CAR-T bispecific antibody ADC tafasitamab loncastuximab polatuzumab

Reading Article

PMID: 41448213

I now have comprehensive data from multiple authoritative sources. Here is the full synthesis:

Non-Hodgkin Lymphoma (NHL): WHO Classification, Molecular Markers, and Recent Advances


1. Overview and Epidemiology

NHL represents a heterogeneous group of lymphoid malignancies arising from B-cells (~85%), T-cells (~15%), and NK-cells (rare). It is the sixth most common cancer globally, with approximately 80,000 new cases per year in the US. The median age at diagnosis is in the 6th-7th decade, though some subtypes (Burkitt, lymphoblastic lymphoma) predominantly affect children and young adults.

2. WHO Classification - Historical Evolution

EditionYearKey Features
Working Formulation1982Low/intermediate/high grade by clinical behavior
REAL Classification1994Introduced disease entities (not just grade)
WHO 3rd edition2001Adopted cell of origin; morphology + IHC + genetics
WHO 4th edition2008Expanded provisional entities
WHO 4th revised (HAEM4R)2016/2017Added new entities; GCB/ABC DLBCL subtypes formalized
WHO 5th edition (HAEM5)2022Genetic-first approach; new ICC also published
The 2022 dual publication of both the WHO 5th edition (HAEM5) and the International Consensus Classification (ICC) marked the first time two parallel major classification systems have co-existed. Both use HAEM4R as a starting point and are driven by genomic data, but differ in nomenclature and handling of certain entities. - Ferry et al., J Hematol Oncol 2024 [PMID: 38978094]

3. WHO 2016/HAEM5 Classification of NHL (Full Listing)

Mature B-Cell Neoplasms (indolent to aggressive)

Indolent:
  • Chronic lymphocytic leukemia / Small lymphocytic lymphoma (CLL/SLL)
  • Splenic marginal zone lymphoma (SMZL)
  • Hairy cell leukemia (HCL)
  • Lymphoplasmacytic lymphoma / Waldenström macroglobulinemia
  • Extranodal marginal zone lymphoma of MALT type
  • Nodal marginal zone lymphoma
  • Follicular lymphoma (FL) - including in situ follicular neoplasia, duodenal-type FL
  • Primary cutaneous follicle center lymphoma
Aggressive / Intermediate:
  • Mantle cell lymphoma (MCL) - including in situ mantle cell neoplasia
  • Diffuse large B-cell lymphoma (DLBCL), NOS - GCB type, ABC type
  • T-cell/histiocyte-rich large B-cell lymphoma
  • Primary DLBCL of the CNS
  • Primary cutaneous DLBCL, leg type
  • EBV+ DLBCL, NOS; EBV+ mucocutaneous ulcer
  • DLBCL associated with chronic inflammation
  • Primary mediastinal (thymic) large B-cell lymphoma (PMBCL)
  • Intravascular large B-cell lymphoma
  • ALK+ large B-cell lymphoma; Plasmablastic lymphoma; Primary effusion lymphoma
  • Burkitt lymphoma
  • High-grade B-cell lymphoma (HGBL) with MYC and BCL2/BCL6 rearrangements ("double-hit"/"triple-hit")
  • High-grade B-cell lymphoma, NOS
  • Large B-cell lymphoma with IRF4 rearrangement

Mature T- and NK-Cell Neoplasms

Indolent/Cutaneous:
  • Mycosis fungoides (MF)
  • Sézary syndrome
  • Primary cutaneous CD30+ lymphoproliferative disorders (lymphomatoid papulosis, pc-ALCL)
  • Subcutaneous panniculitis-like T-cell lymphoma
Aggressive:
  • Peripheral T-cell lymphoma (PTCL), NOS
  • Anaplastic large cell lymphoma (ALCL) - ALK+, ALK-
  • Angioimmunoblastic T-cell lymphoma (AITL) and TFH-cell lymphomas
  • Adult T-cell leukemia/lymphoma (ATLL - HTLV-1+)
  • Extranodal NK/T-cell lymphoma, nasal type
  • Enteropathy-associated T-cell lymphoma (EATL)
  • Hepatosplenic T-cell lymphoma
  • Hydroa vacciniforme-like lymphoproliferative disorder
- Goldman-Cecil Medicine, Table 171-4; WHO Classification HAEM4R 2016

4. Key Molecular Markers by NHL Subtype

4A. B-Cell Lymphomas - Molecular Genetics

CLL / SLL

  • IGHV mutation status: Unmutated IGHV (U-CLL) = worse prognosis; mutated IGHV (M-CLL) = better
  • Cytogenetics: del(17p)/TP53 mutation (worst, ibrutinib/venetoclax preferred); del(11q) (ATM); trisomy 12; del(13q) (best)
  • NOTCH1, SF3B1, BIRC3 mutations: adverse prognostic significance
  • BCR signaling: Chronic active BCR signaling through BTK - therapeutic target for ibrutinib/acalabrutinib/zanubrutinib

Follicular Lymphoma (FL)

  • t(14;18)(q32;q21) - IGH-BCL2 fusion: present in 85-90%; BCL2 overexpression leads to anti-apoptotic block
  • EZH2 mutations (Tyr641): in ~20% of FL; promote epigenetic silencing; therapeutic target (tazemetostat)
  • CREBBP/EP300 mutations: histone acetyltransferase pathway; seen in >60% of FL
  • TNFRSF14 (HVEM) mutations: associated with adverse prognosis
  • FLIPI score (FL International Prognostic Index) uses clinical parameters; M7-FLIPI integrates 7 mutated genes + FLIPI

Mantle Cell Lymphoma (MCL)

  • t(11;14)(q13;q32) - IGH-CCND1: present in ~95%; cyclin D1 overexpression drives G1-S cell cycle progression
  • SOX11: expressed in ~90%; absent in indolent leukemic non-nodal MCL
  • TP53 mutations/del(17p): most adverse; ~15-20%
  • CDKN2A deletion, CCND1 amplification: secondary events
  • ATM mutations: ~40%, associated with genomic instability
  • Blastoid variant: CDKN2A deletion common; very poor prognosis
  • Ibrutinib / acalabrutinib / zanubrutinib (BTK inhibitors) highly active; venetoclax (BCL2 inhibitor) also active

DLBCL - Cell of Origin (COO)

  • GCB type (~50%): germinal center B-cell origin; BCL2 t(14;18); better prognosis with R-CHOP
  • ABC type (~30%): activated B-cell origin; chronic active BCR signaling; NF-κB activation; worse prognosis with R-CHOP
DLBCL Genetic Subtypes (Chapuy/Schmitz/LymphGen models):
Recent NGS studies have proposed recurrent genetic subtypes of DLBCL that go beyond COO:
SubtypeKey MutationsBiologyNotes
EZB (GCB-like)EZH2, BCL2 rearrangementEpigenetic dysregulationMost common GCB subtype
MCD (ABC-like)MYD88 L265P, CD79BBCR/TLR signalingOverlaps with ABC type
BN2 (GCB-like)BCL6 fusions, NOTCH2Marginal zone-like featuresBetter prognosis
N1NOTCH1 mutationsNOTCH pathwayWorse prognosis
ST2SGK1, TET2-GCB-enriched
A53TP53 biallelic inactivationGenomic instabilityAdverse
Note: These genetic subtype models show strong consensus on the broad categories but translation into clinical practice/routine diagnostics is still evolving. - Cutmore et al., Mod Pathol 2023 [PMID: 36788062]

High-Grade B-Cell Lymphoma (HGBL) - "Double/Triple Hit"

  • MYC + BCL2 rearrangement (double-hit, 5-15% of all DLBCL): constitutive Myc proliferative drive + BCL2 anti-apoptosis = extreme aggression
  • MYC + BCL6 rearrangement (or all three = triple-hit): also classifies as HGBL
  • Mostly GCB subtype; blastoid/Burkitt-like morphology possible
  • Standard R-CHOP is inadequate; DA-EPOCH-R or intensified regimens used
  • Median OS only 12-18 months without aggressive treatment - Henry's Clinical Diagnosis and Management by Laboratory Methods
"Double-expressor" DLBCL: MYC protein >40% + BCL2 protein >50% by IHC without confirmed gene rearrangements - also adverse prognosis but distinct from double-hit.

Burkitt Lymphoma

  • t(8;14)(q24;q32) IGH-MYC (80%); t(2;8) or t(8;22) for kappa/lambda partners
  • MYC translocation is defining; BCL2 negative; Ki-67 ~100%
  • Three clinical forms: endemic (EBV-associated, jaw/face in African children), sporadic, immunodeficiency-associated
  • IDH1 mutations in ~30%; DDX3X mutations recently identified

4B. T-Cell Lymphomas - Molecular Genetics

PTCL (Peripheral T-Cell Lymphoma)

NGS studies have revealed that PTCL pathogenesis is increasingly understood through epigenetic and signaling mutations:
  • TFH lymphomas (AITL): characteristic mutations in IDH2 (Arg172), RHOA (Gly17Val), DNMT3A, TET2, CD28 - often concurrent and considered a mutational "path" toward AITL. Gene fusions ITK-SYK (t(5;9)) occur in a subset
  • ALCL ALK+: t(2;5) NPM-ALK or variant fusions - constitutive ALK kinase activity; crizotinib/lorlatinib active
  • ALCL ALK-: DUSP22-IRF4 rearrangement (30%, favorable) vs TP63 rearrangement (8%, poor); rest NOS
  • T-LGLL: STAT3 mutations (~30%); less commonly STAT5B - JAK-STAT pathway dysregulation
  • T-PLL: TCL1A rearrangement via inv(14)(q11q32) in ~80%; ATM mutations common - Henry's Clinical Diagnosis and Management by Laboratory Methods

Mycosis Fungoides / Sézary Syndrome

  • Complex chromosomal gains and losses; TP53, CDKN2A, JAK3, STAT5B mutations in advanced disease
  • ATLL (HTLV-1+): constitutive NF-κB activation; PD-L1 overexpression

5. Key Prognostic Scoring Systems

International Prognostic Index (IPI) for Aggressive NHL

Five adverse factors (1 point each):
  1. Age > 60 years
  2. LDH > normal
  3. ECOG performance status 2-4
  4. Ann Arbor stage III or IV
  5. 1 extranodal site
ScoreRisk GroupApproximate 5-yr OS (R-CHOP era)
0-1Low~75%
2Low-intermediate~65%
3High-intermediate~50%
4-5High~35%
- Goldman-Cecil Medicine

Ann Arbor Staging (also used for NHL)

StageDescription
ISingle lymph node region or single extralymphatic site
II≥2 lymph node regions, same side of diaphragm
IIILymph node regions on both sides of diaphragm
IVDiffuse extralymphatic involvement
A/BB = fever >38°C, night sweats, >10% weight loss

6. Recent Advances (2022-2026)

6A. CAR-T Cell Therapy

Three FDA-approved anti-CD19 CAR-T products for large B-cell lymphoma:
  • Axicabtagene ciloleucel (Yescarta) - anti-CD19; ZUMA-1/7 trials
  • Tisagenlecleucel (Kymriah) - anti-CD19; JULIET trial
  • Lisocabtagene maraleucel (Breyanzi) - anti-CD19; TRANSFORM trial
Key outcome data: ~40% of LBCL patients remain in long-term remission after CAR-T. Non-relapse mortality (toxicity) from CRS and ICANS remains ~5% across trials. - Cordas Dos Santos et al., Nat Med 2024 [PMID: 38977912]
2026 advance - optimal sequencing: A meta-analysis (Lancet Haematol 2026, [PMID: 41448213]) of 2,122 patients found that using bispecific antibody before CAR-T (rather than after) significantly improved CAR-T complete response rates (53.7% vs 29.4%, p=0.0008). This is reshaping thinking about the optimal treatment sequence for relapsed/refractory LBCL.
ASH 2025 triple-therapy data: Phase 2 study combining mosunetuzumab (bispecific) + polatuzumab vedotin (ADC) + CAR-T in relapsed LBCL achieved 90% complete remission at day 90 in 24 patients - targeting three different antigens simultaneously to counter immune escape.

6B. Bispecific Antibodies (BsAbs) - CD20×CD3

These redirect T-cells directly to CD20+ lymphoma cells, bypassing the need for antigen presentation:
DrugTargetApprovalKey Trial
GlofitamabCD20×CD3FDA 2023Fixed-duration 12 cycles; CR ~35% in R/R DLBCL
EpcoritamabCD20×CD3FDA 2023SC injection; CR ~39% in R/R DLBCL
MosunetuzumabCD20×CD3FDA 2022Approved for R/R follicular lymphoma
Meta-analysis (Blood 2024, [PMID: 38696731]): CAR-T vs BsAb in 3rd+ line LBCL - comparable efficacy; patient selection and logistics should guide choice. BsAbs offer off-the-shelf availability; CAR-T offers potentially higher cure rates.
  • Gerhard & von Keudell, Best Pract Res Clin Haematol 2024 [PMID: 40074512]
  • BSH Guideline for R/R LBCL, Br J Haematol 2025 [PMID: 40384597]

6C. Antibody-Drug Conjugates (ADCs)

DrugTarget/PayloadIndication
Polatuzumab vedotinAnti-CD79b + MMAEFL (R/R); DLBCL frontline (Pola-R-CHP, POLARIX trial - improved PFS vs R-CHOP)
Loncastuximab tesirineAnti-CD19 + PBD dimerR/R DLBCL (LOTIS-2: ORR 48.3%, CR 24.1%); active post-CAR-T failure
TafasitamabAnti-CD19 (Fc-enhanced)R/R DLBCL (with lenalidomide, L-MIND trial)
Brentuximab vedotinAnti-CD30 + MMAEALCL, HL, CD30+ lymphomas

6D. Targeted Small Molecules

DrugTargetNHL Application
Ibrutinib (1st gen BTKi)BTKMCL, CLL, WM, MZL; MCD-type DLBCL
Acalabrutinib, ZanubrutinibBTK (more selective)CLL, MCL; fewer off-target effects
VenetoclaxBCL2CLL (esp. del(17p)); FL, MCL (investigational/approved combinations)
TazemetostatEZH2FL with EZH2 mutations (FDA approved 2020)
Idelalisib, Duvelisib, CopanlisibPI3K-δ/γFL (2nd+ line)
Lenalidomide + R (R²)ImmunomodulatoryFL, MCL, DLBCL
Crizotinib/lorlatinib for ALK+ ALCL: ALK inhibitors show high response rates (ORR >80%) in relapsed ALK+ ALCL; lorlatinib active in crizotinib-resistant cases.

6E. WHO 5th Edition (HAEM5) 2022 - Key Changes for NHL

Major updates vs 2016 HAEM4R:
  1. "Tumor-like lesions" category introduced - including indolent lesions that may not require immediate treatment
  2. "Double-hit" lymphomas: WHO-HAEM5 integrates them more broadly; ICC retains HGBL with MYC+BCL2/BCL6 as a distinct entity
  3. NLPHL renamed in ICC to "Nodular Lymphocyte Predominant B-cell Lymphoma (NLPBL)" and moved to large B-cell lymphoma category with grading system (1A vs 1B) - WHO-HAEM5 retains NLPHL
  4. Elimination of B-cell prolymphocytic leukemia (B-PLL) as a distinct entity in both systems
  5. Stronher genetic emphasis: TFH-cell lymphomas (AITL, follicular T-cell lymphoma, PTCL with TFH phenotype) now grouped together based on shared mutations (RHOA, IDH2, TET2, DNMT3A)
  6. New entities recognized: EBV+ inflammatory follicular dendritic cell sarcoma; BCL6/NOTCH2 subtype MZL; IRF4-rearranged large B-cell lymphoma formalized
- Ferry JA et al., J Hematol Oncol 2024 [PMID: 38978094] (note erratum PMID 39198876); Oishi N et al., Curr Hematol Malig Rep 2023 [PMID: 37870698]

6F. Artificial Intelligence and Digital Pathology

Emerging tools integrating gene expression, IHC patterns, and morphology are being studied to automate COO subtyping, detect genetic subtypes, and predict prognosis in NHL - [Carreras et al., Explor Target Antitumor Ther 2024, PMID: 38745770]. The NanoString Lymph2Cx assay uses a 20-gene panel to classify GCB vs ABC from FFPE tissue.

7. Summary Molecular Landscape by Major NHL Entity

NHL SubtypeDefining Genetic EventKey Signaling PathwayTargeted Agent
CLL/SLLIGHV status; del(17p)/TP53; NOTCH1/SF3B1BCR → BTKIbrutinib, venetoclax
FLt(14;18) BCL2; EZH2 Tyr641; CREBBPBCL2; epigeneticTazemetostat (EZH2+); venetoclax
MCLt(11;14) Cyclin D1; TP53; ATMCyclin D1 / BCRIbrutinib/acalabrutinib; venetoclax
DLBCL-GCBt(14;18) BCL2; EZH2; BCL6BCL2; epigeneticPolatuzumab-R-CHP frontline
DLBCL-ABCMYD88 L265P; CD79B; BCL6 t(3;X)NF-κB; BCR/TLRIbrutinib (MCD subtype)
HGBL "DH"MYC + BCL2/BCL6Proliferation + anti-apoptosisDA-EPOCH-R; CAR-T
Burkittt(8;14) MYCMYC overexpressionDA-EPOCH-R; high-dose regimens
AITL/TFHRHOA G17V; IDH2 R172; TET2; DNMT3AEpigenetic dysregulationEnasidenib (IDH2i, investigational)
ALCL ALK+t(2;5) NPM-ALKALK kinaseCrizotinib, lorlatinib
T-LGLLSTAT3/STAT5BJAK-STATRuxolitinib (investigational)

Key recent references:

Causes of lymphadenopathy.discuss approach to the diagnosis of the lymphoma

Finding Sources
Finding Sources
Searching PubMed

"lymphadenopathy" AND "diagnosis" AND "approach"

Finding Sources
Finding Sources
Reading Article

PMID: 39085185

Reading File
Reading File
Reading File
Reading File
Reading File
Finding Sources
Finding Sources
Reading File
Reading File
Finding Sources
Reading File
Finding Sources
Finding Sources
Finding Sources
Searching the Web

approach to diagnosis of lymphoma workup 2024 biopsy flow cytometry FISH NGS staging

I now have comprehensive data from all sources. Here is the full, detailed answer:

Lymphadenopathy: Causes and Approach to Diagnosis of Lymphoma


PART 1: LYMPHADENOPATHY - DEFINITION AND BASIC PHYSIOLOGY

Lymph nodes are secondary lymphoid organs (normally <1 cm diameter) distributed along lymphatic vessels that filter lymphatic fluid and intercept antigens. They consist of B lymphocytes (follicles), T lymphocytes (paracortex), macrophages, and dendritic cells. Lymph enters via afferent lymphatics into the subcapsular sinus and exits via a single efferent lymphatic at the hilum.
Lymphadenopathy = enlargement beyond normal size, reflecting:
  1. Reactive proliferation of resident immune cells in response to foreign antigen
  2. Infiltration by neoplastic cells (lymphoma, metastatic carcinoma, leukemia)
  3. Deposition of foreign material (lipid storage diseases, sarcoidosis)
What is "normal"?
  • Submandibular nodes up to 1 cm in children/young adults - physiologically palpable
  • Inguinal nodes up to 2 cm in adults - considered normal
  • Any supraclavicular/scalene node = always abnormal, demands investigation
  • In primary care: >2/3 of lymphadenopathy is nonspecific/viral; <1% is malignancy
  • Of patients referred for evaluation: 84% benign; 16% malignant (lymphoma or metastatic carcinoma)
- Harrison's Principles of Internal Medicine 22E; Goldman-Cecil Medicine

PART 2: CAUSES OF LYMPHADENOPATHY

I. INFECTIOUS DISEASES (Most Common Overall)

A. Viral

VirusNodes InvolvedFeatures
EBV (Infectious Mononucleosis)Cervical (posterior > anterior), generalizedFever, pharyngitis, splenomegaly, atypical lymphocytosis
CMVGeneralizedMononucleosis-like, milder pharyngitis
HIVGeneralized (persistent generalized lymphadenopathy - PGL)Early HIV; axillary + cervical + inguinal
RubellaPosterior auricular, suboccipital, posterior cervicalRash, low fever
MeaslesCervicalKoplik spots, maculopapular rash
AdenovirusCervicalPharyngitis, conjunctivitis
HerpesvirusRegional (near site)Vesicular lesions
Varicella-ZosterGeneralizedVesicular rash
HHV-8GeneralizedCastleman disease, Kaposi sarcoma

B. Bacterial

OrganismNodes InvolvedFeatures
Streptococcus/StaphylococcusCervical, regionalTender, warm, fluctuant; acute onset
Mycobacterium tuberculosisCervical (scrofula), mediastinal, hilarCaseating; can be matted, collar stud abscess
Atypical mycobacteria (NTM)Cervical (children)Painless, violaceous skin
Cat-scratch disease (Bartonella)Axillary > cervicalCat scratch/bite history; stellate microabscesses
BrucellosisGeneralizedAnimal exposure, Malta fever
TularemiaRegional (painful)Rabbit/tick exposure; ulceroglandular form
Syphilis (primary)Inguinal (rubbery, painless)Primary chancre
Syphilis (secondary)Generalized (painless)Rash on palms/soles
Plague (Yersinia pestis)Axillary/inguinal (bubo)Extremely tender, rapidly enlarging
LGV (Chlamydia)Inguinal (buboes)Genital ulcer, groove sign
LeprosyRegionalThickened nerve, skin lesions
DiphtheriaCervical ("bull neck")Grey pseudomembrane

C. Fungal

  • Histoplasmosis: mediastinal/hilar - mimics lymphoma/TB; endemic (Ohio-Mississippi valley)
  • Coccidioidomycosis: hilar; desert exposure
  • Paracoccidioidomycosis: cervical, mediastinal

D. Parasitic

ParasiteSiteKey Feature
ToxoplasmosisPosterior cervical (painless)Most common specific cause of benign lymphadenopathy in adults
LeishmaniasisGeneralized + splenomegalyKala-azar
TrypanosomiasisPosterior cervical (Winterbottom sign)African sleeping sickness
FilariasisInguinalLymphedema, tropical

E. Rickettsial

  • Scrub typhus, rickettsialpox, Q fever: regional lymphadenopathy near eschar

II. IMMUNOLOGIC / AUTOIMMUNE DISEASES

ConditionPatternFeatures
Rheumatoid arthritisGeneralizedJoint disease
SLEGeneralized, tenderANA+, multi-system
DermatomyositisGeneralizedMuscle weakness, heliotrope rash
Sjögren's syndromeCervical, parotidDry eyes/mouth; risk of MALT lymphoma
Serum sicknessGeneralizedDrug/antigen exposure, urticaria, arthralgia
Drug hypersensitivityGeneralizedDiphenylhydantoin (phenytoin), hydralazine, allopurinol, carbamazepine, gold - pseudo-lymphoma
Angioimmunoblastic lymphadenopathyGeneralizedPolyclonal hypergammaglobulinemia; may transform to AITL
IgG4-related diseaseSalivary glands, mediastinalStoriform fibrosis, elevated IgG4
IRISGeneralizedImmune reconstitution in HIV on ART
Graft-vs-host diseaseGeneralizedPost-transplant
Autoimmune lymphoproliferative syndrome (ALPS)GeneralizedFAS mutations, failure of apoptosis
Juvenile idiopathic arthritis (Still's)GeneralizedQuotidian fever, salmon rash
Primary biliary cirrhosisPortal, retroperitoneal

III. MALIGNANT DISEASES

A. Hematologic

  • Hodgkin lymphoma - Contiguous cervical/mediastinal; rubbery, discrete
  • Non-Hodgkin lymphomas - Variable; generalized or localized; rubbery
  • Acute lymphocytic leukemia (ALL) - Generalized, sudden onset
  • Chronic lymphocytic leukemia (CLL) - Generalized, soft, symmetric
  • Acute myeloid leukemia (AML) - Less prominent; may be leukemic spread
  • Hairy cell leukemia - Splenomegaly > adenopathy
  • Plasma cell myeloma - Rarely nodal; bone disease predominates
  • Waldenstrom macroglobulinemia - Generalized
  • Malignant histiocytosis / histiocytic sarcoma

B. Metastatic Carcinoma (by anatomical drainage)

RegionTypical Primaries
CervicalHead & neck, thyroid, lung, esophagus
Left supraclavicular (Virchow's node)GI primaries (gastric, pancreatic, colon), lung, breast
Right supraclavicularLung, esophagus, breast
AxillaryBreast, melanoma, lung, upper limb
InguinalRectum, genitalia (cervix, vulva, penis), melanoma, lower limb
MediastinalLung, lymphoma, germ cell tumors
RetroperitonealGerm cell tumors (testicular), renal, lymphoma
Key rule: Supraclavicular/scalene adenopathy is always pathological and carries high risk of malignancy. Retroperitoneal/intra-abdominal adenopathy is usually malignant.

IV. MISCELLANEOUS / OTHER CAUSES

CauseKey Feature
SarcoidosisBilateral hilar adenopathy ("bat wing"), non-caseating granulomas
Castleman diseaseGiant lymph node hyperplasia; unicentric or multicentric (HHV-8)
Kikuchi-Fujimoto diseaseHistiocytic necrotizing lymphadenitis; young Asian women; cervical; self-limiting
Rosai-Dorfman diseaseSinus histiocytosis with massive lymphadenopathy; extranodal disease
Kawasaki diseaseCervical + fever + mucocutaneous features; children
Dermatopathic lymphadenitisDraining skin with chronic dermatitis
Gaucher/Niemann-Pick/Fabry diseasesLipid storage; hepatosplenomegaly > adenopathy
HyperthyroidismCervical; rarely adenopathy
Congestive heart failurePassive congestion
Histiocytosis X (LCH)Children; bone/skin lesions
Familial Mediterranean feverEpisodic; abdominal adenopathy
- Harrison's Principles of Internal Medicine 22E, Table 70-1; Goldman-Cecil Medicine

PART 3: APPROACH TO DIAGNOSIS OF LYMPHOMA

Step 1 - History (Clinical Red Flags)

Constitutional "B Symptoms" (formal staging criteria):
  • Unexplained fever >38°C
  • Drenching night sweats
  • Unexplained weight loss >10% body weight in 6 months
Additional History Points:
  • Duration and rate of growth: Rapid growth in weeks suggests aggressive lymphoma (DLBCL, Burkitt) or infectious; slow growth over months suggests indolent lymphoma (FL, CLL)
  • Pain: Tender nodes suggest infection; painless firmness favors lymphoma. Alcohol-induced pain in nodes is a classic (though rare) finding in Hodgkin lymphoma
  • Age: Children/young adults - more likely HL, Burkitt, ALL, infectious; >50 years - malignancy more likely
  • Immunosuppression: HIV/AIDS, organ transplant, immunosuppressive therapy - increased risk of EBV-related lymphomas, PTLD
  • Drug history: Phenytoin, hydralazine, allopurinol - pseudo-lymphoma
  • Occupational/exposure history: Tuberculosis contacts, animal exposure, sexual history (STI)
  • Family history of hematologic malignancy

Step 2 - Physical Examination

Node Characteristics:
FeatureBenign/ReactiveSuspicious for LymphomaMetastatic Carcinoma
ConsistencySoft, rubberyRubbery, firmHard ("stone-like")
TendernessTender (infection)Usually nontenderNontender
MobilityMobileMobileFixed, matted
SurfaceSmoothSmooth/discreteIrregular
Overlying skinNormal or erythematousNormalMay be inflamed
SizeUsually <1 cmOften >2 cmVariable
DistributionRegionalRegional or generalizedRegional (drainage area)
Key physical examination points:
  • Size >2 cm in young patients (9-25 yr) is a strong predictor of malignancy on biopsy
  • Supraclavicular location: always abnormal; high-risk for lymphoma or metastatic cancer
  • Generalized lymphadenopathy (≥3 noncontiguous regions): suggests systemic disease - infections (EBV, CMV, HIV, toxoplasmosis), autoimmune (SLE), or hematologic malignancy
  • Splenomegaly + lymphadenopathy: implies systemic illness - mononucleosis, lymphoma, leukemia, SLE, sarcoidosis, toxoplasmosis, cat-scratch disease
  • Complete ENT examination in cervical adenopathy with tobacco/alcohol history (exclude head/neck primary)
  • Assess for hepatomegaly, skin lesions, arthritis, signs of systemic disease
Site-specific clues for malignancy:
SiteMalignant Differential
Posterior cervicalLymphoma, head/neck malignancy, scalp lesion
Anterior cervicalHead/neck primary, thyroid cancer
Left supraclavicularGI primary (Virchow's node), lung, lymphoma
Right supraclavicularLung, lymphoma, breast
AxillaryBreast cancer (women), melanoma, lymphoma
MediastinalHL (anterior), DLBCL/PMBCL, thymoma, germ cell, sarcoid, TB
RetroperitonealTesticular GCT (young men), lymphoma, renal
InguinalRectal, cervical, penile, vulvar cancers, melanoma
- Harrison's Principles of Internal Medicine 22E

Step 3 - Initial Laboratory Investigations

Tier 1 - Basic workup for any significant lymphadenopathy:
TestWhy
CBC + peripheral smearAtypical lymphocytes (EBV/CMV); blasts (leukemia); lymphocytosis with smudge cells (CLL); anemia/thrombocytopenia
ESR / CRPNonspecific but elevated in infection, HL, autoimmune
LDHElevated in aggressive lymphoma (also hemolysis, hepatitis) - prognostic
Uric acidElevated in high-turnover lymphomas (Burkitt); tumor lysis risk
Liver function tests / Alk PhosHepatic infiltration by lymphoma; biliary obstruction
Renal functionBaseline; ureteral obstruction by retroperitoneal nodes
Serum protein electrophoresisMonoclonal band in myeloma, WM; polyclonal hypergammaglobulinemia in AITL
Chest X-rayMediastinal widening (HL, PMBCL); pulmonary infiltrate; hilar adenopathy
Tier 2 - Directed by clinical suspicion:
TestIndication
Monospot / EBV / CMV serologyMononucleosis syndrome
HIV serology (4th gen Ag/Ab)Generalized adenopathy in risk group
Toxoplasma IgM/IgGPainless posterior cervical; cat exposure
Mantoux / IGRA / sputum AFBTB suspected
ANA, anti-dsDNA, RF, complementAutoimmune workup
Beta-2 microglobulinPrognostic in NHL/myeloma
Serum immunoglobulinsMyeloma, WM, CLL
HTLV-1 serologyATLL suspected (endemic area, Caribbean/Japan)
Flow cytometry (peripheral blood)Lymphocytosis with CLL or lymphoma in leukemic phase

Step 4 - Imaging

Ultrasound of Lymph Nodes:
  • Excellent for superficial nodes; low cost; no radiation
  • Benign features: oval shape, preserved echogenic hilum, hilar vascularity
  • Malignant features: round shape, absent hilum, peripheral/mixed vascularity, heterogeneous echogenicity, cortical thickening >3mm
CT Scan (chest/abdomen/pelvis with contrast):
  • Standard for staging lymphoma once diagnosis established
  • Worrisome features (American College of Radiology):
    1. Short axis ≥1 cm in retroperitoneum
    2. Abnormal architecture (round, absent hilum)
    3. Necrosis or hypervascularity
    4. Cluster of ≥3 nodes in one station or ≥2 nodes in ≥2 regions
18F-FDG PET/CT:
  • Gold standard for staging and response assessment in FDG-avid lymphomas (HL, DLBCL, FL, ALCL)
  • Deauville 5-point scoring scale for interim/end-of-treatment response
  • In HL: if PET/CT negative, bone marrow biopsy may be omitted (negative predictive value >99%)
  • Lugano Classification (2014): PET/CT-based staging replaces Cotswolds modification
MRI:
  • Preferred for CNS involvement (primary CNS lymphoma, leptomeningeal disease)
  • Also useful for bone/hepatosplenic disease without radiation exposure
- Grainger & Allison's Diagnostic Radiology; Cummings Otolaryngology

Step 5 - Biopsy (The Definitive Step)

Indications for biopsy:
  • Nodes ≥2 cm with hard texture, supraclavicular location, age >40 years - all have positive predictive value for malignancy
  • No improvement or progression after 4-6 weeks observation
  • Associated B symptoms
  • Mediastinal or retroperitoneal nodes
  • Rapidly enlarging node without obvious infectious cause
Types of Biopsy:
TypeRoleLimitations
Excisional lymph node biopsyGold standard for lymphoma diagnosisMost invasive; preserves architecture
Core needle biopsy (CNB)Good alternative when excision impractical; CT/US-guidedMay miss architecture; multiple cores needed
Fine-needle aspiration (FNA)Adequate for metastatic carcinoma, infection cultureInadequate for lymphoma - cannot distinguish malignant from reactive; discouraged if lymphoma is suspected
Incisional biopsyLarge bulky nodes
Bone marrow biopsyStaging (HL/NHL)Trephine + aspirate
Key principle: Face-to-face discussion between clinician and pathologist is the most effective approach for challenging cases. FNA is specifically discouraged in suspected lymphoma because it cannot assess nodal architecture, which is required for accurate classification. - Goldman-Cecil Medicine
What tissue gets sent:
  • Fresh tissue in saline to pathology (for flow cytometry)
  • Fixed tissue in formalin (for IHC/histology)
  • Snap-frozen or FFPE for molecular studies

Step 6 - Pathological Workup of Lymph Node Biopsy

TISSUE OBTAINED
      │
      ├─ Histology (H&E) ──────── Architecture (follicular vs diffuse vs sinusoidal)
      │                           Cell morphology, size, mitotic rate
      │
      ├─ Immunohistochemistry ─── Lineage (B vs T vs NK), subtype markers
      │   (IHC)                   (CD20, CD3, CD10, BCL2, BCL6, MUM1, CD30, CD15, etc.)
      │
      ├─ Flow Cytometry ────────── Light chain restriction (B-cell clonality)
      │                           T-cell antigen loss, NK markers
      │                           CD45/scatter (blasts vs mature)
      │
      ├─ Cytogenetics (karyotype) ─ t(14;18) FL, t(11;14) MCL, t(8;14) Burkitt
      │                              t(2;5) ALCL, complex karyotype
      │
      ├─ FISH ─────────────────── MYC, BCL2, BCL6 rearrangements (double/triple hit)
      │                           IGH-BCL2 (FL), CCND1-IGH (MCL), NPM-ALK (ALCL)
      │
      └─ NGS / Molecular ──────── MYD88 L265P (DLBCL-ABC/WM), EZH2 (FL/GCB)
                                  TP53, RHOA (AITL), IDH2 (AITL)
                                  TCR/IGH gene rearrangement (clonality PCR)
                                  NanoString Lymph2Cx (GCB vs ABC DLBCL)
The key question in the biopsy: Is the lymphoid proliferation clonal (one clone = neoplasia) or polyclonal (many clones = reactive)?
  • B cells: Light chain restriction (κ or λ only) = clonal = neoplastic
  • T cells: Loss of T-cell markers (CD3, CD5, CD7) or TCR gene rearrangement = supports clonal T-cell process

Step 7 - Staging (Once Lymphoma Diagnosed)

Lugano Classification (modified Ann Arbor) for NHL:
StageDescription
ISingle lymph node region or single extralymphatic site (IE)
II≥2 lymph node regions, same side of diaphragm; or localized extralymphatic + nodal (IIE)
IIILymph node regions on both sides of diaphragm
IVDiffuse/disseminated extralymphatic involvement (bone marrow, liver, lung, bone, CNS)
ANo B symptoms
BFever >38°C, night sweats, >10% weight loss
BulkyMass ≥10 cm (or mediastinal mass >1/3 thoracic diameter in HL)
Staging workup for NHL:
InvestigationPurpose
PET/CT (whole body)Staging, disease activity, response assessment
CT chest/abdomen/pelvisStaging (if PET not available)
Bone marrow biopsyStaging (in lymphomas not fully stageable by PET/CT)
LP + CSF cytology/flowHigh-risk DLBCL (CNS IPI score ≥4), testicular/breast/adrenal involvement, Burkitt, lymphoblastic
EchocardiogramBaseline before anthracycline-based therapy
Serum LDHIPI scoring
HIV serologyAll new NHL diagnoses
Hepatitis B surface Ag + core AbBefore rituximab (risk of HBV reactivation)
Pregnancy testReproductive-age women
Fertility counselingBefore gonadotoxic chemotherapy
- Cummings Otolaryngology; Grainger & Allison's Diagnostic Radiology; Goldman-Cecil Medicine

Summary Algorithm: Approach to Suspected Lymphoma

Palpable lymphadenopathy
          │
          ▼
History + Physical Examination
          │
    ┌─────┴──────┐
Benign features    Suspicious features
(tender, <1cm,     (painless, >2cm, firm,
young, febrile,    rubbery, supraclavicular,
no B sx)           B symptoms, age >40,
    │              generalized, splenomegaly)
    ▼                     │
CBC, Monospot              ▼
Observe 4-6 wks     CBC + Smear, LDH, LFTs,
Antibiotics if      Uric acid, CXR, HIV,
bacterial           Beta-2M, SPEP
    │                     │
Resolved?           Imaging (CT/PET-CT)
    │                     │
   Yes → discharge         ▼
   No  ─────────→  EXCISIONAL BIOPSY
                   (send fresh + fixed tissue)
                          │
                    H&E + IHC + Flow
                    Cytogenetics + FISH
                    Molecular/NGS
                          │
                   DIAGNOSIS CONFIRMED
                          │
                   STAGING + WORKUP
                   (bone marrow, CSF,
                    cardiac echo, HBV,
                    HIV, fertility)
                          │
                   TREATMENT PLANNING

Important Pitfalls:
  1. Never use steroids empirically for unexplained lymphadenopathy - they shrink lymphoma temporarily, delay diagnosis, and alter biopsy results
  2. FNA is insufficient for lymphoma diagnosis - always request excisional biopsy when lymphoma is suspected
  3. Observe for no longer than 4-6 weeks before biopsy in suspicious nodes - delayed diagnosis worsens outcomes in aggressive lymphoma
  4. Always check Hepatitis B before starting rituximab - reactivation can be fatal
  5. Virchow's node (left supraclavicular) from a GI primary should prompt upper GI endoscopy before any lymphoma treatment plan
Sources: Harrison's Principles of Internal Medicine 22E; Goldman-Cecil Medicine; Cummings Otolaryngology; Grainger & Allison's Diagnostic Radiology; Harriet Lane Handbook; Stanford et al., Pediatrics in Review 2024 [PMID: 39085185]
This is a shared conversation. Sign in to Orris to start your own chat.