Write 10 mark answer on t and nk cell lymphoma which consist of ethology, genetics,microscopy, cd marker and prognosis
| Subtype | Etiological Agent |
|---|---|
| Extranodal NK-/T-cell lymphoma | Epstein-Barr virus (EBV) - all tumor cells contain identical EBV episomes; clonal EBV infection from a single infected cell |
| Adult T-cell leukemia/lymphoma | HTLV-1 (Human T-cell Leukemia Virus type 1) - endemic in southern Japan, West Africa, and the Caribbean basin |
| ALCL (ALK+) | No viral association; occurs in children/young adults; chromosomal translocations drive oncogenesis |
| PTCL-NOS | No single etiology; multifactorial |
| Nodal T-follicular helper cell lymphoma | Associated with underlying clonal hematopoiesis; EBV-positive B-cell proliferations frequently co-exist |


| Subtype | Positive Markers | Negative / Variable |
|---|---|---|
| PTCL-NOS | CD2, CD3, CD5 (pan-T); CD45RO, CD43; CD4+ (more common than CD8+) | One or more pan-T antigens aberrantly lost; CD68 rarely positive |
| Extranodal NK-/T-Cell Lymphoma | CD56 (NK marker), cytoplasmic CD3ε, EBV (EBER+), cytotoxic granule proteins (TIA-1, granzyme B) | Surface CD3− (no TCR gene rearrangements), CD16−, CD21− |
| ALCL (ALK+) | CD30 (universally positive; Ki-1), ALK protein (nuclear and cytoplasmic with t(2;5)); variable CD3, CD5, CD4, CD43, CD45RO; CD25, EMA sometimes positive | CD3 often negative; surface T-cell markers often lost |
| ALCL (ALK-) | CD30 (universally positive) | ALK negative; generally similar phenotype to ALK+ |
| ATL | CD4+, CD3+, CD2+, CD25 (IL-2 receptor, strongly positive) | CD8− |
| Nodal T-follicular helper cell lymphoma | CD4+, BCL6, PD-1, CXCL13, ICOS, CD10 (Tfh markers) | - |
| Subtype | Prognosis | Notes |
|---|---|---|
| ALCL (ALK+) | Good - 5-year survival ~75-80% | Best prognosis among T-cell lymphomas; ALK inhibitors effective in chemotherapy-resistant cases |
| ALCL (ALK-) | Intermediate-poor | Substantially worse than ALK+; CD30 targeted therapy (brentuximab vedotin) effective |
| PTCL-NOS | Poor | Significantly worse than comparably aggressive B-cell lymphomas (e.g., DLBCL); cures reported but rare |
| Extranodal NK-/T-cell lymphoma | Poor (advanced disease) | Responds to radiation therapy for localized disease; relatively chemotherapy-resistant; allogeneic HSCT and immune checkpoint inhibitors offer hope in advanced disease |
| ATL | Very poor | Highly aggressive; median survival months in acute form; smoldering/chronic forms indolent |
| Nodal T-follicular helper cell lymphoma | Intermediate-poor | Median OS ~3 years with standard chemotherapy |
| Feature | PTCL-NOS | NK-/T-cell Lymphoma | ALCL (ALK+) | ATL |
|---|---|---|---|---|
| Etiology | None specific | EBV | Chromosomal t(2;5) | HTLV-1 |
| Key gene | TCR rearrangement | JAK/STAT, TP53 | NPM-ALK fusion | TP53, CDKN2A |
| Morphology | Pleomorphic, mixed cells | Angioinvasive, necrosis, azurophilic granules | Hallmark cells, horseshoe nuclei | Flower/cloverleaf cells |
| Key CD markers | CD2, CD3, CD5 (aberrant loss) | CD56+, cCD3ε+, surface CD3− | CD30+, ALK+ | CD4+, CD25+ |
| Prognosis | Poor | Poor (advanced) | Good (75-80% CR) | Very poor |
Create a 10 marker PDF for NK-cell sarcoma in md pathology exam which include types etiology microscopy cd marker and prognosis according latest who classification
NK cell neoplasms WHO 5th edition 2022 classification extranodal NK/T cell lymphoma nasal type aggressive NK cell leukemia
ls -la /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace && ls -la /tmp/workspace/
mkdir -p /tmp/workspace/nk-cell-lymphoma && cat > /tmp/workspace/nk-cell-lymphoma/make_pdf.py << 'PYEOF' from reportlab.lib.pagesizes import A4 from reportlab.lib import colors from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.units import cm, mm from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable, KeepTogether) from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.ttfonts import TTFont OUTPUT = "/tmp/workspace/nk-cell-lymphoma/NK_Cell_Lymphoma_10_Mark.pdf" # ── Colours ────────────────────────────────────────────────────────────────── DARK_BLUE = colors.HexColor("#0D2B55") MED_BLUE = colors.HexColor("#1A4E8C") LIGHT_BLUE = colors.HexColor("#D6E8FF") ACCENT = colors.HexColor("#C0392B") LIGHT_GREY = colors.HexColor("#F4F6F8") MID_GREY = colors.HexColor("#BDC3C7") WHITE = colors.white BLACK = colors.black doc = SimpleDocTemplate( OUTPUT, pagesize=A4, leftMargin=2*cm, rightMargin=2*cm, topMargin=2*cm, bottomMargin=2*cm ) styles = getSampleStyleSheet() # ── Custom styles ──────────────────────────────────────────────────────────── def S(name, **kw): return ParagraphStyle(name, **kw) title_style = S("Title", fontName="Helvetica-Bold", fontSize=18, textColor=WHITE, alignment=TA_CENTER, leading=22, spaceAfter=4) subtitle_style = S("Subtitle", fontName="Helvetica", fontSize=10, textColor=LIGHT_BLUE, alignment=TA_CENTER, leading=14, spaceAfter=2) badge_style = S("Badge", fontName="Helvetica-Bold", fontSize=9, textColor=WHITE, alignment=TA_CENTER) section_head = S("SectionHead", fontName="Helvetica-Bold", fontSize=12, textColor=WHITE, alignment=TA_LEFT, leading=16) body = S("Body", fontName="Helvetica", fontSize=9.5, textColor=BLACK, leading=14, alignment=TA_JUSTIFY, spaceAfter=4) body_bold = S("BodyBold", fontName="Helvetica-Bold", fontSize=9.5, textColor=BLACK, leading=14, alignment=TA_LEFT) bullet_style = S("Bullet", fontName="Helvetica", fontSize=9.5, textColor=BLACK, leading=13, leftIndent=12, bulletIndent=0, spaceAfter=2) sub_bullet = S("SubBullet", fontName="Helvetica", fontSize=9, textColor=colors.HexColor("#333333"), leading=12, leftIndent=24, bulletIndent=12, spaceAfter=1) table_head_style = S("TableHead", fontName="Helvetica-Bold", fontSize=8.5, textColor=WHITE, alignment=TA_CENTER, leading=11) table_body_style = S("TableBody", fontName="Helvetica", fontSize=8.5, textColor=BLACK, alignment=TA_LEFT, leading=11) footer_style = S("Footer", fontName="Helvetica-Oblique", fontSize=7.5, textColor=colors.HexColor("#777777"), alignment=TA_CENTER) key_point_style = S("KeyPoint", fontName="Helvetica-BoldOblique", fontSize=9, textColor=ACCENT, leading=13, leftIndent=8) # ── Helper: section header block ───────────────────────────────────────────── def section_header(text, color=MED_BLUE): tbl = Table([[Paragraph(text, section_head)]], colWidths=[17*cm]) tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), color), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 10), ("ROUNDEDCORNERS", [4,4,4,4]), ])) return tbl def note_box(text, bg=LIGHT_BLUE): tbl = Table([[Paragraph(text, S("nb", fontName="Helvetica", fontSize=9, textColor=DARK_BLUE, leading=13, leftIndent=4))]], colWidths=[17*cm]) tbl.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), 12), ("BOX", (0,0), (-1,-1), 1, MED_BLUE), ])) return tbl def sp(n=6): return Spacer(1, n) # ═══════════════════════════════════════════════════════════════════════════ # TITLE BANNER # ═══════════════════════════════════════════════════════════════════════════ def title_banner(): banner = Table( [[Paragraph("T / NK Cell Lymphoma", title_style)], [Paragraph("MD Pathology Examination • 10 Marks", subtitle_style)], [Paragraph("Based on WHO Classification of Haematolymphoid Tumours 5th Edition (2022)", subtitle_style)]], colWidths=[17*cm] ) banner.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), DARK_BLUE), ("TOPPADDING", (0,0), (-1,-1), 10), ("BOTTOMPADDING", (0,0), (-1,-1), 10), ("LEFTPADDING", (0,0), (-1,-1), 10), ("BOX", (0,0), (-1,-1), 2, MED_BLUE), ])) return banner # ═══════════════════════════════════════════════════════════════════════════ # BUILD CONTENT # ═══════════════════════════════════════════════════════════════════════════ story = [] story.append(title_banner()) story.append(sp(14)) # ── INTRO ───────────────────────────────────────────────────────────────── story.append(section_header("INTRODUCTION")) story.append(sp(5)) story.append(Paragraph( "T and NK cell lymphomas are a heterogeneous group of mature (peripheral) lymphoid neoplasms " "derived from post-thymic T lymphocytes or natural killer (NK) cells. They account for " "<b>10–15% of all Non-Hodgkin Lymphomas (NHLs)</b> in Western countries, with significantly " "higher rates (~25–35%) in Asia. As a group, they carry a worse prognosis than comparably " "aggressive B-cell neoplasms such as DLBCL.", body)) story.append(sp(8)) # ── WHO 2022 CLASSIFICATION ─────────────────────────────────────────────── story.append(section_header("WHO 5th EDITION (2022) — NK-CELL NEOPLASM TYPES", MED_BLUE)) story.append(sp(5)) who_data = [ [Paragraph("WHO 2022 Entity", table_head_style), Paragraph("Key Feature", table_head_style), Paragraph("Behaviour", table_head_style)], [Paragraph("Extranodal NK/T-cell lymphoma (ENKTL)\n[\"nasal type\" qualifier REMOVED in WHO-5]", table_body_style), Paragraph("EBV+, nasal & extranasal sites, angioinvasive", table_body_style), Paragraph("Aggressive", table_body_style)], [Paragraph("Aggressive NK-cell leukaemia (ANKL)", table_body_style), Paragraph("EBV+, systemic, leukemic picture; includes intravascular NK/T-cell lymphoma (now moved here from WHO-4R)", table_body_style), Paragraph("Very aggressive", table_body_style)], [Paragraph("Chronic lymphoproliferative disorder of NK cells (CLPD-NK)", table_body_style), Paragraph("Indolent, persistent NK-cell lymphocytosis", table_body_style), Paragraph("Indolent", table_body_style)], [Paragraph("Indolent NK-cell lymphoproliferative disorder of GI tract (provisional)", table_body_style), Paragraph("Localised GI mucosal NK-cell infiltrates", table_body_style), Paragraph("Indolent", table_body_style)], [Paragraph("EBV-positive nodal NK-cell lymphoma", table_body_style), Paragraph("NEW entity in WHO-5; nodal presentation", table_body_style), Paragraph("Aggressive", table_body_style)], [Paragraph("Hydroa vacciniforme lymphoproliferative disorder (HV-LPD)", table_body_style), Paragraph("EBV+; children in Asia/Latin America; UV-exacerbated skin lesions", table_body_style), Paragraph("Variable", table_body_style)], ] who_tbl = Table(who_data, colWidths=[6*cm, 7.5*cm, 3.5*cm]) who_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), DARK_BLUE), ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_GREY]), ("TEXTCOLOR", (0,0), (-1,0), WHITE), ("GRID", (0,0), (-1,-1), 0.5, MID_GREY), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 6), ("VALIGN", (0,0), (-1,-1), "TOP"), ])) story.append(who_tbl) story.append(sp(4)) story.append(note_box( "⭐ WHO-5 KEY CHANGE: 'Nasal type' qualifier dropped from ENKTL name — disease can arise at any extranodal site. " "Intravascular NK/T-cell lymphoma reclassified under ANKL. EBV-positive nodal NK-cell lymphoma is a NEW entity." )) story.append(sp(10)) # ── ETIOLOGY ───────────────────────────────────────────────────────────── story.append(section_header("ETIOLOGY")) story.append(sp(5)) etio_data = [ [Paragraph("Entity", table_head_style), Paragraph("Etiological Agent / Mechanism", table_head_style)], [Paragraph("Extranodal NK/T-cell lymphoma (ENKTL)", table_body_style), Paragraph("Epstein-Barr Virus (EBV) — all tumor cells carry clonal EBV episomes indicating origin from a single EBV-infected cell. Entry mechanism is unclear as NK cells LACK CD21 (the EBV B-cell receptor). EBV latency type II pattern (LMP1/LMP2A expression).", table_body_style)], [Paragraph("Aggressive NK-cell leukaemia (ANKL)", table_body_style), Paragraph("EBV+ (not universal). JAK/STAT & RAS/MAPK pathway mutations. Epigenetic modifier mutations (TET2, CREBBP, KMT2D). PD-L1/PD-L2 alterations drive immune evasion.", table_body_style)], [Paragraph("HV-LPD", table_body_style), Paragraph("EBV infection in childhood. UV light exacerbates lesions. Mosquito bite hypersensitivity is associated (mosquito salivary gland antigens contain EBV-stimulating proteins).", table_body_style)], ] etio_tbl = Table(etio_data, colWidths=[5.5*cm, 11.5*cm]) etio_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), DARK_BLUE), ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_GREY]), ("GRID", (0,0), (-1,-1), 0.5, MID_GREY), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 6), ("VALIGN", (0,0), (-1,-1), "TOP"), ])) story.append(etio_tbl) story.append(sp(5)) story.append(Paragraph("<b>Epidemiology:</b>", body_bold)) story.append(Paragraph( "• ENKTL: Prevalent in East Asians and Native Americans of Central/South America. " "Accounts for 2–11% of all lymphomas in East Asia vs. <1% in the West. " "Median age 52–58 years. Male:female = 1.5:1.", bullet_style)) story.append(Paragraph( "• ANKL: Rarer (~1/6th incidence of ENKTL); fulminant onset, often in young adults.", bullet_style)) story.append(Paragraph( "• Genetic predisposition: EBV-specific immune response variants (HLA-A, B, C genes) influence susceptibility.", bullet_style)) story.append(sp(10)) # ── MICROSCOPY ─────────────────────────────────────────────────────────── story.append(section_header("MICROSCOPY (HISTOPATHOLOGY)")) story.append(sp(5)) story.append(Paragraph("<b>1. Extranodal NK/T-cell Lymphoma (ENKTL)</b>", body_bold)) story.append(sp(3)) micro_items_enktl = [ ("Pattern", "Diffuse lymphoid infiltrate effacing normal tissue architecture."), ("Angioinvasion", "Tumor cells <b>surround and invade small to medium vessel walls</b> — the hallmark feature. Leads to <b>extensive ischemic (coagulative) necrosis</b>."), ("Cell morphology", "Spectrum from <b>small to large</b> neoplastic cells. Medium-sized cells predominate with irregular, angulated nuclei, moderately condensed chromatin, and pale cytoplasm."), ("Granules", "On touch preparations: <b>large azurophilic (reddish-purple) cytoplasmic granules</b> — identical to normal NK cell granules."), ("Background", "Mixed inflammatory background with neutrophils, plasma cells, histiocytes. <b>Mucosal ulceration</b> is characteristic."), ("Special stain", "EBER (EBV-encoded RNA) in-situ hybridisation (ISH) is <b>positive in virtually all cases</b> — diagnostic gold standard."), ] for label, text in micro_items_enktl: story.append(Paragraph(f"<b>{label}:</b> {text}", bullet_style)) story.append(sp(7)) story.append(Paragraph("<b>2. Aggressive NK-cell Leukaemia (ANKL)</b>", body_bold)) story.append(sp(3)) for item in [ "Peripheral blood and bone marrow infiltration by large granular lymphocytes.", "Cells have <b>irregular, folded nuclei</b> with prominent nucleoli and pale cytoplasm with azurophilic granules.", "Hemophagocytosis (macrophages engulfing blood cells) frequently seen in bone marrow — associated hemophagocytic lymphohistiocytosis (HLH).", "Liver/spleen diffusely infiltrated in sinusoids.", ]: story.append(Paragraph(f"• {item}", bullet_style)) story.append(sp(7)) story.append(Paragraph("<b>3. HV-LPD (Cutaneous NK/T-cell)</b>", body_bold)) story.append(sp(3)) for item in [ "Dermis and subcutaneous fat infiltrated by <b>intermediate-sized, atypical granular lymphocytes</b> within and around walls of small and medium vessels.", "Epidermotropism may be noted.", "Papulovesicular lesions with scarring on sun-exposed areas (face and extremities).", ]: story.append(Paragraph(f"• {item}", bullet_style)) story.append(sp(10)) # ── CD MARKERS ─────────────────────────────────────────────────────────── story.append(section_header("IMMUNOPHENOTYPE (CD MARKERS)")) story.append(sp(5)) cd_data = [ [Paragraph("Marker", table_head_style), Paragraph("ENKTL", table_head_style), Paragraph("ANKL", table_head_style), Paragraph("CLPD-NK", table_head_style), Paragraph("HV-LPD", table_head_style)], [Paragraph("CD2", table_body_style), Paragraph("✓ Positive", table_body_style), Paragraph("✓ Positive", table_body_style), Paragraph("✓ Positive", table_body_style), Paragraph("Variable", table_body_style)], [Paragraph("Surface CD3", table_body_style), Paragraph("✗ NEGATIVE", S("n",fontName="Helvetica-Bold",fontSize=8.5,textColor=ACCENT,leading=11)), Paragraph("✗ Negative", table_body_style), Paragraph("✗ Negative", table_body_style), Paragraph("Variable", table_body_style)], [Paragraph("Cytoplasmic CD3ε", table_body_style), Paragraph("✓ POSITIVE", S("p",fontName="Helvetica-Bold",fontSize=8.5,textColor=colors.HexColor("#1A7A1A"),leading=11)), Paragraph("✓ Positive", table_body_style), Paragraph("✓ Positive", table_body_style), Paragraph("✓ Positive", table_body_style)], [Paragraph("CD4", table_body_style), Paragraph("✗ Negative", table_body_style), Paragraph("✗ Negative", table_body_style), Paragraph("✗ Negative", table_body_style), Paragraph("✗ Negative", table_body_style)], [Paragraph("CD5", table_body_style), Paragraph("✗ Negative", table_body_style), Paragraph("✗ Negative", table_body_style), Paragraph("Variable", table_body_style), Paragraph("✗ Negative", table_body_style)], [Paragraph("CD8", table_body_style), Paragraph("Variable", table_body_style), Paragraph("Variable", table_body_style), Paragraph("✓ Positive", table_body_style), Paragraph("Variable", table_body_style)], [Paragraph("CD16", table_body_style), Paragraph("✗ NEGATIVE", S("n2",fontName="Helvetica-Bold",fontSize=8.5,textColor=ACCENT,leading=11)), Paragraph("✓ Positive", table_body_style), Paragraph("✓ Positive", table_body_style), Paragraph("Variable", table_body_style)], [Paragraph("CD56 ★", table_body_style), Paragraph("✓ POSITIVE", S("p2",fontName="Helvetica-Bold",fontSize=8.5,textColor=colors.HexColor("#1A7A1A"),leading=11)), Paragraph("✓ Positive", table_body_style), Paragraph("✓ Positive", table_body_style), Paragraph("✓ Positive", table_body_style)], [Paragraph("CD57", table_body_style), Paragraph("✗ Negative", table_body_style), Paragraph("✗ Negative", table_body_style), Paragraph("✓ Positive", table_body_style), Paragraph("Variable", table_body_style)], [Paragraph("TIA-1 / Granzyme B / Perforin", table_body_style), Paragraph("✓ Positive (cytotoxic granules)", table_body_style), Paragraph("✓ Positive", table_body_style), Paragraph("✓ Positive", table_body_style), Paragraph("✓ Positive", table_body_style)], [Paragraph("EBV (EBER-ISH)", table_body_style), Paragraph("✓✓ ALWAYS+", S("p3",fontName="Helvetica-Bold",fontSize=8.5,textColor=colors.HexColor("#1A7A1A"),leading=11)), Paragraph("Usually+", table_body_style), Paragraph("✗ Negative", table_body_style), Paragraph("✓ Positive", table_body_style)], [Paragraph("TCR gene rearrangement", table_body_style), Paragraph("Germline (no rearrangement)", table_body_style), Paragraph("Germline", table_body_style), Paragraph("Germline", table_body_style), Paragraph("Germline", table_body_style)], [Paragraph("CD43 / CD45RO / HLA-DR", table_body_style), Paragraph("✓ Positive", table_body_style), Paragraph("✓ Positive", table_body_style), Paragraph("Variable", table_body_style), Paragraph("Variable", table_body_style)], ] col_widths = [4.5*cm, 3.7*cm, 3*cm, 3*cm, 2.8*cm] cd_tbl = Table(cd_data, colWidths=col_widths) cd_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), DARK_BLUE), ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_GREY]), ("GRID", (0,0), (-1,-1), 0.5, MID_GREY), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 5), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), # highlight CD56 row ("BACKGROUND", (0,8), (-1,8), colors.HexColor("#FFF3CD")), # highlight EBER row ("BACKGROUND", (0,11), (-1,11), colors.HexColor("#E8F8E8")), ])) story.append(cd_tbl) story.append(sp(5)) story.append(note_box( "★ CD56 is the hallmark NK cell marker but is NOT lineage-specific. " "ENKTL classic phenotype: CD2+, surface CD3−, cytoplasmic CD3ε+, CD56+, CD16−, EBER+. " "Absence of TCR gene rearrangement confirms NK cell (not T-cell) origin." )) story.append(sp(10)) # ── GENETICS ───────────────────────────────────────────────────────────── story.append(section_header("GENETICS & MOLECULAR PATHOLOGY")) story.append(sp(5)) story.append(Paragraph("<b>Extranodal NK/T-cell Lymphoma (ENKTL)</b>", body_bold)) gen_items = [ "No specific cytogenetic abnormality; <b>del(6)(q21;q25)</b> or <b>i(6p10)</b> described occasionally", "<b>TCR genes in germline configuration</b> (no rearrangement) — confirms NK lineage", "Recurrent mutations: <b>JAK/STAT pathway</b> (STAT3, STAT5B), epigenetic regulators (TET2, ARID1A), <b>TP53</b>", "<b>PD-L1 / PD-L2 amplification</b> and 3'-UTR rearrangements of PD-L1 gene → immune evasion (important therapeutic target)", "All tumor cells contain <b>monoclonal EBV episomes</b> — proves clonal origin from single infected cell", "EBV latency pattern: <b>Type II</b> (EBNA1, LMP1, LMP2A expressed; EBER always +)", ] for item in gen_items: story.append(Paragraph(f"• {item}", bullet_style)) story.append(sp(5)) story.append(Paragraph("<b>Aggressive NK-cell Leukaemia (ANKL)</b>", body_bold)) ankl_items = [ "Mutations in <b>JAK/STAT</b> and <b>RAS/MAPK</b> signaling pathways", "Epigenetic modifier mutations: <b>TET2, CREBBP, KMT2D</b>", "Immune checkpoint molecule alterations: <b>CD274 (PD-L1), PDCD1LG2 (PD-L2)</b>", "UV-related mutational signature described in some cases", ] for item in ankl_items: story.append(Paragraph(f"• {item}", bullet_style)) story.append(sp(10)) # ── PROGNOSIS ───────────────────────────────────────────────────────────── story.append(section_header("PROGNOSIS")) story.append(sp(5)) prog_data = [ [Paragraph("Entity", table_head_style), Paragraph("Prognosis", table_head_style), Paragraph("5-Year OS", table_head_style), Paragraph("Key Prognostic Points", table_head_style)], [Paragraph("ENKTL — Stage I/II (Localised)", table_body_style), Paragraph("Intermediate", S("pg",fontName="Helvetica-Bold",fontSize=8.5,textColor=colors.HexColor("#1A7A1A"),leading=11)), Paragraph("~50–70%", table_body_style), Paragraph("Responds well to CCRT (concurrent chemoradiotherapy) + L-asparaginase-based regimens (SMILE protocol)", table_body_style)], [Paragraph("ENKTL — Stage III/IV (Advanced)", table_body_style), Paragraph("Poor", S("pg2",fontName="Helvetica-Bold",fontSize=8.5,textColor=ACCENT,leading=11)), Paragraph("~20–30%", table_body_style), Paragraph("Chemotherapy-resistant (P-glycoprotein over-expression). HSCT and PD-1 inhibitors (pembrolizumab/sintilimab) used for R/R disease.", table_body_style)], [Paragraph("Aggressive NK-cell Leukaemia (ANKL)", table_body_style), Paragraph("Very Poor", S("pg3",fontName="Helvetica-Bold",fontSize=8.5,textColor=ACCENT,leading=11)), Paragraph("<10%", table_body_style), Paragraph("Fulminant disease; median OS days–weeks. HLH, multi-organ failure. HSCT only potentially curative.", table_body_style)], [Paragraph("CLPD-NK", table_body_style), Paragraph("Good", S("pg4",fontName="Helvetica-Bold",fontSize=8.5,textColor=colors.HexColor("#1A7A1A"),leading=11)), Paragraph(">80%", table_body_style), Paragraph("Indolent course. Watch-and-wait approach. Cytopenias may need treatment.", table_body_style)], [Paragraph("HV-LPD", table_body_style), Paragraph("Variable → Poor", S("pg5",fontName="Helvetica-Bold",fontSize=8.5,textColor=colors.orange,leading=11)), Paragraph("Variable", table_body_style), Paragraph("May transform to overt ENKTL or systemic ANKL. Mosquito-bite allergy subtype has poor outlook.", table_body_style)], ] prog_tbl = Table(prog_data, colWidths=[4*cm, 2.5*cm, 2.2*cm, 8.3*cm]) prog_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), DARK_BLUE), ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_GREY, WHITE, LIGHT_GREY, WHITE]), ("GRID", (0,0), (-1,-1), 0.5, MID_GREY), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 5), ("VALIGN", (0,0), (-1,-1), "TOP"), ])) story.append(prog_tbl) story.append(sp(5)) story.append(Paragraph("<b>Prognostic Scoring:</b> The Korean Prognostic Index (KPI) and PINK-E score " "(Prognostic Index for Natural Killer/T-cell Lymphoma with EBV DNA) are validated tools.", body)) story.append(Paragraph( "PINK-E factors: <b>age >60, Stage III/IV, distant lymph node involvement, non-nasal type, " "elevated EBV DNA</b>. Each factor scores 1 point; score 3–5 = high-risk group.", bullet_style)) story.append(sp(5)) story.append(note_box( "⭐ KEY EXAM POINT — Treatment rationale: ENKTL is relatively RESISTANT to CHOP " "(P-glycoprotein-mediated MDR). L-asparaginase-based regimens (SMILE: Dex/Mtx/Ifos/L-aspa/Etop) and " "radiotherapy are the backbone of treatment. PD-1/PD-L1 checkpoint inhibitors are now standard " "for relapsed/refractory ENKTL (WHO-5 era)." )) story.append(sp(10)) # ── SUMMARY TABLE ──────────────────────────────────────────────────────── story.append(section_header("QUICK SUMMARY — COMPARISON TABLE")) story.append(sp(5)) sum_data = [ [Paragraph("Feature", table_head_style), Paragraph("ENKTL", table_head_style), Paragraph("ANKL", table_head_style), Paragraph("CLPD-NK", table_head_style)], [Paragraph("Origin", table_body_style), Paragraph("NK cell (rarely γδ T)", table_body_style), Paragraph("NK cell", table_body_style), Paragraph("NK cell", table_body_style)], [Paragraph("EBV", table_body_style), Paragraph("Always +", table_body_style), Paragraph("Usually +", table_body_style), Paragraph("Negative", table_body_style)], [Paragraph("Key site", table_body_style), Paragraph("Nasal cavity/extranodal", table_body_style), Paragraph("Blood/marrow/spleen", table_body_style), Paragraph("Blood", table_body_style)], [Paragraph("Angioinvasion", table_body_style), Paragraph("Hallmark ✓", table_body_style), Paragraph("Absent", table_body_style), Paragraph("Absent", table_body_style)], [Paragraph("CD56", table_body_style), Paragraph("+", table_body_style), Paragraph("+", table_body_style), Paragraph("+", table_body_style)], [Paragraph("CD16", table_body_style), Paragraph("−", table_body_style), Paragraph("+", table_body_style), Paragraph("+", table_body_style)], [Paragraph("TCR rearrangement", table_body_style), Paragraph("Germline", table_body_style), Paragraph("Germline", table_body_style), Paragraph("Germline", table_body_style)], [Paragraph("Prognosis", table_body_style), Paragraph("Poor (Stage III/IV)", table_body_style), Paragraph("Very poor (<10% OS)", table_body_style), Paragraph("Good (indolent)", table_body_style)], ] sum_tbl = Table(sum_data, colWidths=[4.25*cm, 4.25*cm, 4.25*cm, 4.25*cm]) sum_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), DARK_BLUE), ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_GREY]*10), ("GRID", (0,0), (-1,-1), 0.5, MID_GREY), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 6), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ])) story.append(sum_tbl) story.append(sp(12)) # ── FOOTER ──────────────────────────────────────────────────────────────── story.append(HRFlowable(width="100%", thickness=1, color=MED_BLUE)) story.append(sp(4)) story.append(Paragraph( "Sources: Robbins & Cotran Pathologic Basis of Disease (10th ed.) | Henry's Clinical Diagnosis & Management by Laboratory Methods | " "Andrews' Diseases of the Skin | WHO Classification of Haematolymphoid Tumours, 5th Edition (2022) | " "Nature Leukemia 2022 (WHO-HAEM5 classification paper) | PMC 2025 review — non-B lymphoid neoplasms", footer_style)) # ── BUILD ───────────────────────────────────────────────────────────────── doc.build(story) print("PDF created:", OUTPUT) PYEOF python3 /tmp/workspace/nk-cell-lymphoma/make_pdf.py
ls -lh /tmp/workspace/nk-cell-lymphoma/NK_Cell_Lymphoma_10_Mark.pdf
NK Cell Lymphoma 10 Mark
PDF Document · PDF