This is my syllabus of medicine for 6th semester. Teach me whole syllabus and prepare a master pdf for my theory and mcq exams so that none of the questions shall be left. Use diagrams illustrations and flowcharts to teach the conceptsvand retain them for a longer time. Make summary table to revise the concepts and teach in a way like you are teaching a high school student.
This syllabus has 30+ topics β creating a complete master PDF covering all of them with diagrams, flowcharts, MCQs, and summary tables will be an extremely large document. How would you like me to approach this? Β· What level of detail do you need for each topic?
Which module would you like me to start with?
mkdir -p /tmp/workspace/respiratory-module && ls /tmp/workspace/
Do a thing. Split the syllabus system wise and teach me system wise so that you can make pdf fast and accurate
| Topic | Key Areas |
|---|---|
| Heart Failure | Types, pathophysiology, Framingham criteria, management |
| Hypertension | Classification, JNC, end-organ damage, treatment |
| Acute Rheumatic Fever | Jones criteria, strep connection, prophylaxis |
| Valvular Heart Disease (MS, MR) | Murmurs, Echo findings, surgery |
| Valvular Heart Disease (repeat) | Revisit + additional valves |
| Topic | Key Areas |
|---|---|
| Pneumonia | CAP vs HAP, CURB-65, pathogens, treatment |
| Pleural Effusion / Empyema Thoracis | Transudate vs exudate, Light's criteria, management |
| Lung Abscess | Aspiration, anaerobes, cavitation, treatment |
| Influenza | Subtypes, pandemic, oseltamivir, vaccine |
| Topic | Key Areas |
|---|---|
| COVID-19 | Variants, cytokine storm, management |
| Sepsis | Sepsis-3 definition, SOFA score, bundles |
| Meningitis | CSF analysis, empiric treatment |
| HIV | CD4 counts, OIs, ART |
| PUO | Causes, workup algorithm |
| Encephalitis | Viral causes, HSV, acyclovir |
| Tetanus | Clostridium, toxin mechanism, prevention |
| Chickenpox / Herpes Zoster | VZV, Ramsay Hunt, treatment |
| Abdominal TB | Peritoneal, intestinal, ascites |
| Topic | Key Areas |
|---|---|
| Chronic Liver Disease / Cirrhosis | Child-Pugh, MELD, portal hypertension |
| Complications of Cirrhosis | SBP, HRS, HE, varices |
| Inflammatory Bowel Disease | Crohn's vs UC, extraintestinal |
| Irritable Bowel Syndrome | Rome IV criteria, management |
| Abdominal TB | (shared with Infectious module) |
| Topic | Key Areas |
|---|---|
| Leukemia | ALL/AML/CLL/CML, Philadelphia chromosome, treatment |
| Lymphoma | Hodgkin vs Non-Hodgkin, Reed-Sternberg, staging |
| Topic | Key Areas |
|---|---|
| Acute Kidney Injury | KDIGO staging, prerenal/intrinsic/postrenal |
| Tubulo-interstitial Disease | Causes, cast nephropathy |
| Gout | Uric acid, tophi, colchicine, allopurinol |
| Osteoarthritis | Cartilage degeneration, X-ray changes |
| Rheumatoid Arthritis | Pannus, RF, anti-CCP, DMARDs |
| Topic | Key Areas |
|---|---|
| Parathyroid & Calcium Metabolism | PTH, hypercalcemia, hypoparathyroidism |
| Cushing Syndrome | Cortisol excess, dexamethasone suppression test |
| Parkinson Disease | Dopamine deficiency, TRAP, levodopa |
| Motor Neuron Disease | UMN vs LMN signs, ALS |
| Encephalitis | (shared with Infectious) |
| Meningitis | (shared with Infectious) |
Which module do you want me to build the PDF for first?
Dont generate the pdf. Teach me the modules in this chat
BONE MARROW FACTORY
|
Stem Cell (Master cell)
|
_____|_____
| |
Myeloid Lymphoid
(factory A) (factory B)
| |
RBCs, WBCs, B-cells, T-cells
Platelets,
Granulocytes
π΄ If factory A goes CRAZY β MYELOID LEUKEMIA (AML / CML)
π΅ If factory B goes CRAZY β LYMPHOID LEUKEMIA (ALL / CLL)
| Feature | ALL | AML | CML | CLL |
|---|---|---|---|---|
| Full name | Acute Lymphoblastic | Acute Myeloid | Chronic Myeloid | Chronic Lymphocytic |
| Age | Children (2-5 yrs) | Adults (>60 yrs) | Middle-age (40-50) | Elderly (>60 yrs) |
| Cell type | Lymphoblast | Myeloblast | Mature myeloid | Mature lymphocyte |
| Key marker | TdT +, CD10+ | Auer rods | Philadelphia chromosome | CD5+, CD23+ |
| Chromosome | t(12;21) good prognosis | t(8;21), t(15;17) | t(9;22) - Ph chromosome | del 13q (good), del 17p (bad) |
| Onset | Sudden (days-weeks) | Sudden | Slow (months) | Very slow (years) |
| Prognosis | Best (80% cure in kids) | Moderate | Good with TKI | Incurable but slow |
| Treatment | Chemo (BFM protocol) | Chemo + ATRA for M3 | Imatinib (Gleevec) | Watch & wait / Ibrutinib |
"The child who gets bone pain, bruises easily, and looks pale"
P - Pallor (anemia - factory not making RBCs)
A - Aches (bone pain - marrow packed with blasts)
L - Lymphadenopathy (swollen glands)
E - Easy bruising / bleeding (low platelets)
B - Big liver & spleen (hepatosplenomegaly)
L - Lumps (testicular swelling in boys!)
A - Anemia symptoms (fatigue, weakness)
S - Swollen face (mediastinal mass pressing SVC)
T - Temperature (fever - infection risk)
CBC: β WBC (or normal or β) + β RBC + β Platelets
Bone Marrow Biopsy: >20% BLASTS (diagnostic!)
Chest X-ray: Mediastinal widening (T-cell ALL)
Special markers:
- TdT positive (terminal deoxynucleotidyl transferase)
- CD10 positive (CALLA - Common ALL Antigen)
- CD19+ (B-cell ALL), CD3+ (T-cell ALL)
Phase 1: INDUCTION (4-6 weeks) β Kill 99% blasts
Drugs: Vincristine + Prednisolone + L-Asparaginase
Phase 2: CONSOLIDATION β Kill hidden blasts
High-dose Methotrexate
Phase 3: MAINTENANCE (2-3 years) β Prevent relapse
Daily 6-Mercaptopurine + weekly Methotrexate
"The adult who suddenly develops fever, bleeding gums, and has Auer rods on smear"
AUER RODS = Pink needle-shaped crystals inside blast cells
= PATHOGNOMONIC of AML
(You see Auer rods β Think AML immediately!)
| FAB | Type | Key Feature |
|---|---|---|
| M0 | Undifferentiated | Least differentiated |
| M1 | Without maturation | Few granules |
| M2 | With maturation | t(8;21), Auer rods |
| M3 | Promyelocytic (APL) | β οΈ DIC risk! t(15;17), PML-RARA |
| M4 | Myelomonocytic | Gum hypertrophy |
| M5 | Monocytic | Gum hypertrophy, skin infiltration |
| M6 | Erythroleukemia | Bizarre RBC precursors |
| M7 | Megakaryoblastic | Down syndrome association |
M3 = Acute Promyelocytic Leukemia
= t(15;17) β PML-RARA fusion gene
= MEDICAL EMERGENCY (causes DIC = bleeding everywhere!)
= Treatment: ATRA (All-Trans Retinoic Acid) + Arsenic trioxide
= ATRA differentiates the blasts into normal cells!
= Best prognosis of all AML subtypes β
Induction: "7+3" regimen
- Cytarabine (Ara-C) Γ 7 days
- Anthracycline (Daunorubicin) Γ 3 days
Consolidation: High-dose Cytarabine
Refractory/Relapse: Bone Marrow Transplant (BMT)
"The man with a HUGE spleen, WBC of 100,000, and the Philadelphia chromosome"
Normal: Chromosome 9 + Chromosome 22
β SWAP PIECES β
Result: Long Chr 9 + SHORT Chr 22 (= Philadelphia Chr)
β
BCR-ABL gene
β
Abnormal tyrosine kinase
β
Uncontrolled WBC production
β
CML!
CHRONIC PHASE (years) β Blasts <10%, asymptomatic or mild
β (without treatment)
ACCELERATED PHASE (months) β Blasts 10-20%, symptoms worsen
β
BLAST CRISIS (weeks) β Blasts >20%, acts like AML/ALL
= Medical emergency, very poor prognosis
Old days: Chemotherapy (poor results)
1998: IMATINIB (Gleevec) = TKI (Tyrosine Kinase Inhibitor)
= Blocks BCR-ABL kinase = TARGETED THERAPY
= Changed CML from fatal to CHRONIC disease!
Newer TKIs: Dasatinib, Nilotinib, Bosutinib (2nd generation)
Ponatinib (3rd generation, for T315I mutation)
Goal of treatment: DEEP MOLECULAR RESPONSE
(PCR undetectable BCR-ABL)
"The elderly person found to have a high lymphocyte count on a routine blood test with no symptoms"
CBC: Lymphocytosis (lymphocytes >5000/Β΅L for >3 months)
Blood Smear: SMUDGE CELLS (lymphocytes crushed during smear prep)
= Pathognomonic of CLL!
Immunophenotype: CD5+ CD19+ CD23+ (B-cells with abnormal CD5)
(CD5 is normally a T-cell marker!)
Stage 0: Lymphocytosis only (best prognosis)
Stage I: + Lymphadenopathy
Stage II: + Splenomegaly/hepatomegaly
Stage III: + Anemia (Hb <11)
Stage IV: + Thrombocytopenia (platelets <100,000) β worst prognosis
Early stage (Rai 0-I): Watch and Wait (don't treat!)
Advanced stage:
- Ibrutinib (BTK inhibitor) - oral, well tolerated
- FCR (Fludarabine + Cyclophosphamide + Rituximab)
- Venetoclax (BCL-2 inhibitor)
Patient presents with HIGH WBC count
|
___________________
| |
BLASTS on smear? No blasts, mature cells?
| |
ACUTE leukemia CHRONIC leukemia
| |
| Smudge cells? β CLL
| Basophilia + massive spleen? β CML
|
Auer rods? β AML (Myeloid)
TdT+, CD10+? β ALL (Lymphoid)
Leukemia = cancer IN the blood/bone marrow Lymphoma = cancer IN the lymph NODES/lymphoid tissue (But they overlap! Leukemia can involve nodes, lymphoma can spill into blood)
LYMPHOMA
|
|________________________
| |
HODGKIN NON-HODGKIN
LYMPHOMA (HL) LYMPHOMA (NHL)
| |
Reed-Sternberg cells Many subtypes
Young adults Older adults
Bimodal age B-cell (85%)
Curable ~90% T-cell (15%)
Spreads contiguously Spreads randomly
"The young person with painless neck swelling, night sweats, and a Reed-Sternberg cell on biopsy"
Reed-Sternberg Cell = OWL EYE APPEARANCE
= LARGE binucleated cell
= Each nucleus has a prominent eosinophilic nucleolus
= Looks like OWL EYES staring at you!
= CD15+ and CD30+ (key markers)
= Derived from GERMINAL CENTER B CELLS
= EBV positive in ~40% cases
Peak 1: Young adults (15-35 years) β Most common
Peak 2: Elderly (>55 years)
Why bimodal? Different subtypes dominate in each peak
| Subtype | Frequency | Age | Key Features | Prognosis |
|---|---|---|---|---|
| Nodular Sclerosis (NS) | 70% (most common!) | Young women | Collagen bands, lacunar cells, mediastinal mass | Good |
| Mixed Cellularity (MC) | 20-25% | Middle-age | EBV+++ (70%), many RS cells | Good |
| Lymphocyte Rich | 5% | Any | Few RS cells, many lymphocytes | Best |
| Lymphocyte Depleted | <1% | Elderly, HIV | Many RS cells, few lymphocytes | Worst |
| Nodular Lymphocyte Predominant | 5% | Young males | "Popcorn cells" (LP cells), CD20+, CD15-, CD30- | Very good |
π§ Exam Trick: NS = Most common overall. MC = Most EBV. LD = Worst prognosis. NLP = Different markers (CD20+, CD15-)
PAINLESS lymphadenopathy (neck most common β mediastinum β elsewhere)
B SYMPTOMS (systemic, indicate advanced disease):
B1 - Fever >38Β°C (Pel-Ebstein fever = cyclical fever, classic for HL)
B2 - drenching night sweats
B3 - weight loss >10% body weight in 6 months
Other features:
- Pruritus (itching)
- Alcohol-induced pain at lymph node sites (CLASSIC for HL!)
- Mediastinal mass (causes cough, SVC syndrome)
Stage I: ONE lymph node region
Stage II: TWO or more, SAME side of diaphragm
Stage III: Both sides of diaphragm
Stage IV: Extranodal involvement (liver, bone marrow, lung)
Add:
A = No B symptoms
B = Has B symptoms
E = Extranodal extension (from node to adjacent tissue)
S = Spleen involved
Example: Stage IIIB = Both sides of diaphragm + has fever/sweats/weight loss
EARLY STAGE (I-IIA):
ABVD chemotherapy Γ 2-4 cycles + Radiation therapy (ISRT)
ADVANCED STAGE (IIB-IV):
ABVD Γ 6 cycles Β± Radiation
Or Escalated BEACOPP (higher dose, more toxic)
ABVD = Adriamycin (Doxorubicin)
Bleomycin
Vinblastine
Dacarbazine
Relapsed/Refractory:
Brentuximab vedotin (anti-CD30)
PD-1 inhibitors (Nivolumab, Pembrolizumab)
Auto-SCT (Stem Cell Transplant)
"Older adult with widespread lymphadenopathy, no predictable spread pattern, and much more complex"
| Feature | Hodgkin | Non-Hodgkin |
|---|---|---|
| Age | Young (bimodal) | Older (>50 yrs) |
| Spread | Contiguous (step by step) | Non-contiguous (random) |
| RS cells | YES (diagnostic) | NO |
| Extranodal | Rare | Common |
| Cure rate | ~90% | Variable (20-90%) |
| EBV | 40% | Some subtypes |
| Waldeyer's ring | Rare | Common |
| Mesenteric nodes | Rare | Common |
NHL
|
|________________________________
| |
B-CELL (85-90%) T/NK-CELL (10-15%)
| |
|_______________ Peripheral T-cell lymphoma
| | Anaplastic large cell (ALCL)
INDOLENT AGGRESSIVE NK/T-cell nasal type
(slow growing) (fast growing)
| |
Follicular Diffuse Large B-Cell (DLBCL) β Most common NHL!
CLL/SLL Burkitt Lymphoma
Marginal Zone Mantle Cell Lymphoma
= MOST COMMON NHL (30% of all NHLs)
= AGGRESSIVE (grows fast, but potentially CURABLE)
= CD20+, CD19+
= Treatment: R-CHOP (Rituximab + CHOP)
CHOP = Cyclophosphamide, Hydroxydaunorubicin, Oncovin, Prednisolone
= Cure rate: ~60-70%
= 2nd most common NHL (20%)
= INDOLENT (slow-growing, but NOT curable with chemo!)
= t(14;18) β BCL-2 overexpression β cells don't die (apoptosis blocked!)
= "Watch and wait" for asymptomatic patients
= Can transform to DLBCL (Richter-like transformation) β worse prognosis
= FASTEST growing cancer in humans! (doubling time ~24 hours!)
= c-MYC translocation t(8;14)
= "Starry sky pattern" on histology
(macrophages eating dead tumor cells = stars in dark sky of tumor cells)
= 3 types:
- Endemic (Africa): jaw/facial mass, EBV+
- Sporadic: abdomen, EBV-
- Immunodeficiency-related: HIV patients
= Treatment: Intensive chemo (R-CODOX-M/IVAC)
= Tumor Lysis Syndrome is a MAJOR risk during treatment!
| Feature | ALL | AML | CML | CLL | HL | NHL |
|---|---|---|---|---|---|---|
| Age | Children | Adults | Middle | Elderly | Young adult | >50 yrs |
| Key cell | Lymphoblast | Myeloblast | Mature myeloid | Mature lymphocyte | RS cell | Varies |
| Key marker | TdT+, CD10 | Auer rods | Ph chromosome | Smudge cells, CD5+ | CD15+, CD30+ | CD20+ (B-cell) |
| Chromosome | t(12;21) | t(15;17) for APL | t(9;22) | del13q | β | t(14;18) follicular; t(8;14) Burkitt |
| Treatment | Chemo (BFM) | 7+3, ATRA (APL) | Imatinib | Ibrutinib | ABVD | R-CHOP (DLBCL) |
| Prognosis | 80% cure | Moderate | Good (TKI) | Incurable/slow | 90% cure | Variable |
βββββββββββββββββββββββββββββββββββββββββββββββ
β LEUKEMIA QUICK RECALL β
β ALL β Kids, TdT+, BFM chemo β
β AML β Adults, Auer rods, 7+3 β
β APL(M3) β t(15;17), ATRA, DIC β
β CML β Ph chr t(9;22), Imatinib β
β CLL β Elderly, Smudge cells, CD5+ β
β β
β LYMPHOMA QUICK RECALL β
β HL β Young, RS cell (CD15+CD30+), ABVD β
β NS β Most common HL subtype β
β DLBCL β Most common NHL, R-CHOP β
β Follicular β t(14;18), indolent β
β Burkitt β t(8;14), starry sky, fastest β
βββββββββββββββββββββββββββββββββββββββββββββββ
Make a co.plied pdf for this topic module 5 with images to visualize an
mkdir -p /tmp/workspace/haematology-module5 && ls /tmp/workspace/
cat << 'PYEOF' > /tmp/workspace/haematology-module5/build_pdf.py import requests import io import os 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, PageBreak, HRFlowable, Image, KeepTogether) from reportlab.platypus.flowables import HRFlowable from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_JUSTIFY from reportlab.graphics.shapes import Drawing, Rect, String, Line, Polygon, Circle from reportlab.graphics import renderPDF from PIL import Image as PILImage OUTPUT = "/tmp/workspace/haematology-module5/Module5_Haematology.pdf" # ββ Color Palette ββββββββββββββββββββββββββββββββββββββββββββββββ DARK_BLUE = colors.HexColor("#1A237E") MED_BLUE = colors.HexColor("#1565C0") LIGHT_BLUE = colors.HexColor("#E3F2FD") ACCENT_RED = colors.HexColor("#C62828") LIGHT_RED = colors.HexColor("#FFEBEE") ACCENT_GREEN = colors.HexColor("#2E7D32") LIGHT_GREEN = colors.HexColor("#E8F5E9") GOLD = colors.HexColor("#F57F17") LIGHT_GOLD = colors.HexColor("#FFFDE7") PURPLE = colors.HexColor("#6A1B9A") LIGHT_PURPLE = colors.HexColor("#F3E5F5") TEAL = colors.HexColor("#00695C") LIGHT_TEAL = colors.HexColor("#E0F2F1") DARK_GRAY = colors.HexColor("#37474F") MID_GRAY = colors.HexColor("#78909C") LIGHT_GRAY = colors.HexColor("#ECEFF1") WHITE = colors.white # ββ Styles βββββββββββββββββββββββββββββββββββββββββββββββββββββββ styles = getSampleStyleSheet() def make_style(name, parent='Normal', **kwargs): return ParagraphStyle(name, parent=styles[parent], **kwargs) cover_title = make_style('CoverTitle', fontSize=36, textColor=WHITE, fontName='Helvetica-Bold', alignment=TA_CENTER, spaceAfter=6) cover_sub = make_style('CoverSub', fontSize=18, textColor=colors.HexColor("#90CAF9"), fontName='Helvetica', alignment=TA_CENTER, spaceAfter=4) cover_info = make_style('CoverInfo', fontSize=13, textColor=colors.HexColor("#B3E5FC"), fontName='Helvetica', alignment=TA_CENTER) ch_header = make_style('ChHeader', fontSize=22, textColor=WHITE, fontName='Helvetica-Bold', alignment=TA_CENTER, spaceAfter=4) section_h = make_style('SectionH', fontSize=15, textColor=DARK_BLUE, fontName='Helvetica-Bold', spaceBefore=10, spaceAfter=4, borderPad=4) sub_h = make_style('SubH', fontSize=12, textColor=MED_BLUE, fontName='Helvetica-Bold', spaceBefore=6, spaceAfter=3) body = make_style('Body', fontSize=10, textColor=DARK_GRAY, fontName='Helvetica', leading=15, spaceAfter=4, alignment=TA_JUSTIFY) bullet_style = make_style('Bullet', fontSize=10, textColor=DARK_GRAY, fontName='Helvetica', leading=14, spaceAfter=2, leftIndent=14, bulletIndent=4) code_style = make_style('Code', fontSize=9, textColor=DARK_GRAY, fontName='Courier', leading=13, spaceAfter=2, leftIndent=10, backColor=LIGHT_GRAY) highlight = make_style('Highlight', fontSize=10, textColor=ACCENT_RED, fontName='Helvetica-Bold', spaceAfter=3) caption_style = make_style('Caption', fontSize=8, textColor=MID_GRAY, fontName='Helvetica-Oblique', alignment=TA_CENTER, spaceAfter=6) mcq_q = make_style('McqQ', fontSize=10, textColor=DARK_BLUE, fontName='Helvetica-Bold', spaceBefore=6, spaceAfter=2) mcq_opt = make_style('McqOpt', fontSize=10, textColor=DARK_GRAY, fontName='Helvetica', leading=13, leftIndent=10, spaceAfter=1) mcq_ans = make_style('McqAns', fontSize=10, textColor=ACCENT_GREEN, fontName='Helvetica-Bold', spaceAfter=4) mnemonic_style= make_style('Mnemonic', fontSize=10, textColor=PURPLE, fontName='Helvetica-Bold', leading=14, spaceAfter=3) flashcard_sty = make_style('Flashcard', fontSize=10, textColor=DARK_BLUE, fontName='Helvetica-Bold', leading=14) # ββ Helper: download image from URL βββββββββββββββββββββββββββββ def fetch_img_flowable(url, width_cm=12, caption=""): try: r = requests.get(url, timeout=10) img_data = io.BytesIO(r.content) pil = PILImage.open(img_data) w, h = pil.size aspect = h / w display_w = width_cm * cm display_h = display_w * aspect img_data.seek(0) flowable = Image(img_data, width=display_w, height=display_h) flowable.hAlign = 'CENTER' items = [flowable] if caption: items.append(Paragraph(caption, caption_style)) return items except Exception as e: return [Paragraph(f"[Image: {caption}]", caption_style)] # ββ Helper: colored box ββββββββββββββββββββββββββββββββββββββββββ def colored_box(text, bg=LIGHT_BLUE, border=MED_BLUE, text_style=None): if text_style is None: text_style = body data = [[Paragraph(text, text_style)]] t = Table(data, colWidths=[16.5*cm]) t.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,-1), bg), ('BOX', (0,0), (-1,-1), 1.2, border), ('LEFTPADDING',(0,0), (-1,-1), 10), ('RIGHTPADDING',(0,0),(-1,-1), 10), ('TOPPADDING', (0,0), (-1,-1), 8), ('BOTTOMPADDING',(0,0),(-1,-1), 8), ('ROUNDEDCORNERS', [4]), ])) return t # ββ Helper: section header bar βββββββββββββββββββββββββββββββββββ def section_bar(title, color=MED_BLUE): data = [[Paragraph(title, make_style('tmp', fontSize=13, textColor=WHITE, fontName='Helvetica-Bold', alignment=TA_LEFT))]] t = Table(data, colWidths=[16.5*cm]) t.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,-1), color), ('LEFTPADDING',(0,0), (-1,-1), 12), ('TOPPADDING', (0,0), (-1,-1), 6), ('BOTTOMPADDING',(0,0),(-1,-1), 6), ])) return t # ββ Helper: fancy table ββββββββββββββββββββββββββββββββββββββββββ def fancy_table(headers, rows, col_widths=None, header_bg=MED_BLUE): cell_style = ParagraphStyle('cell', fontSize=9, textColor=DARK_GRAY, fontName='Helvetica', leading=12) hdr_style = ParagraphStyle('hdr', fontSize=9, textColor=WHITE, fontName='Helvetica-Bold', leading=12) data = [[Paragraph(h, hdr_style) for h in headers]] for row in rows: data.append([Paragraph(str(c), cell_style) for c in row]) if col_widths is None: w = 16.5*cm / len(headers) col_widths = [w]*len(headers) t = Table(data, colWidths=col_widths, repeatRows=1) style = [ ('BACKGROUND', (0,0), (-1,0), header_bg), ('TEXTCOLOR', (0,0), (-1,0), WHITE), ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'), ('GRID', (0,0), (-1,-1), 0.5, colors.HexColor("#B0BEC5")), ('ROWBACKGROUNDS',(0,1),(-1,-1), [WHITE, LIGHT_GRAY]), ('VALIGN', (0,0), (-1,-1), 'TOP'), ('LEFTPADDING', (0,0), (-1,-1), 6), ('RIGHTPADDING', (0,0), (-1,-1), 6), ('TOPPADDING', (0,0), (-1,-1), 4), ('BOTTOMPADDING',(0,0), (-1,-1), 4), ] t.setStyle(TableStyle(style)) return t # ββ Draw flowchart (canvas drawing) βββββββββββββββββββββββββββββ def make_flowchart(): d = Drawing(465, 260) # Background d.add(Rect(0, 0, 465, 260, fillColor=LIGHT_GRAY, strokeColor=None)) # Title d.add(String(232, 245, "LEUKEMIA DIAGNOSTIC FLOWCHART", fontSize=11, fillColor=DARK_BLUE, fontName='Helvetica-Bold', textAnchor='middle')) # Box helper def box(x, y, w, h, txt, bg, txt_color=DARK_GRAY, fs=9): d.add(Rect(x, y, w, h, fillColor=bg, strokeColor=DARK_BLUE, strokeWidth=1)) d.add(String(x+w/2, y+h/2-4, txt, fontSize=fs, fillColor=txt_color, fontName='Helvetica-Bold', textAnchor='middle')) # Arrow helper def arrow(x1,y1,x2,y2): d.add(Line(x1, y1, x2, y2, strokeColor=MID_GRAY, strokeWidth=1.5)) # arrowhead d.add(Polygon([x2-4, y2+4, x2+4, y2+4, x2, y2-2], fillColor=MID_GRAY, strokeColor=MID_GRAY)) # Top box box(155, 215, 155, 28, "HIGH WBC COUNT", DARK_BLUE, WHITE, 10) arrow(232, 215, 232, 188) # Blasts? box(145, 158, 174, 25, "BLASTS on smear?", MED_BLUE, WHITE, 9) # YES β left d.add(Line(145, 170, 90, 170, strokeColor=MID_GRAY, strokeWidth=1.5)) d.add(String(115, 175, "YES", fontSize=8, fillColor=ACCENT_RED, fontName='Helvetica-Bold', textAnchor='middle')) arrow(90, 170, 90, 140) # NO β right d.add(Line(319, 170, 375, 170, strokeColor=MID_GRAY, strokeWidth=1.5)) d.add(String(347, 175, "NO", fontSize=8, fillColor=ACCENT_GREEN, fontName='Helvetica-Bold', textAnchor='middle')) arrow(375, 170, 375, 140) # ACUTE box box(30, 110, 120, 25, "ACUTE Leukemia", ACCENT_RED, WHITE, 9) # CHRONIC box box(315, 110, 120, 25, "CHRONIC Leukemia", ACCENT_GREEN, WHITE, 9) # Acute β subtypes arrow(70, 110, 40, 82) arrow(110, 110, 140, 82) # Chronic β subtypes arrow(350, 110, 330, 82) arrow(390, 110, 410, 82) # ALL box(5, 55, 78, 24, "ALL", colors.HexColor("#1565C0"), WHITE, 9) d.add(String(44, 48, "TdT+, CD10+\nChildren", fontSize=7, fillColor=MID_GRAY, fontName='Helvetica', textAnchor='middle')) # AML box(95, 55, 78, 24, "AML", colors.HexColor("#B71C1C"), WHITE, 9) d.add(String(134, 48, "Auer rods\nAdults", fontSize=7, fillColor=MID_GRAY, fontName='Helvetica', textAnchor='middle')) # CLL box(300, 55, 78, 24, "CLL", colors.HexColor("#1B5E20"), WHITE, 9) d.add(String(339, 48, "Smudge cells\nCD5+", fontSize=7, fillColor=MID_GRAY, fontName='Helvetica', textAnchor='middle')) # CML box(390, 55, 75, 24, "CML", colors.HexColor("#004D40"), WHITE, 9) d.add(String(427, 48, "Ph chr\nBasophilia", fontSize=7, fillColor=MID_GRAY, fontName='Helvetica', textAnchor='middle')) return d # ββ Draw lymphoma comparison diagram ββββββββββββββββββββββββββββ def make_lymphoma_diagram(): d = Drawing(465, 200) d.add(Rect(0, 0, 465, 200, fillColor=LIGHT_GRAY, strokeColor=None)) d.add(String(232, 185, "HODGKIN vs NON-HODGKIN LYMPHOMA", fontSize=11, fillColor=DARK_BLUE, fontName='Helvetica-Bold', textAnchor='middle')) # HL box d.add(Rect(20, 30, 195, 145, fillColor=LIGHT_RED, strokeColor=ACCENT_RED, strokeWidth=2)) d.add(String(117, 162, "HODGKIN LYMPHOMA", fontSize=10, fillColor=ACCENT_RED, fontName='Helvetica-Bold', textAnchor='middle')) hl_lines = ["RS Cell: CD15+ CD30+","Age: 15-35 yrs (bimodal)", "Spread: Contiguous","B symptoms present", "EBV: 40% cases","Cure: ~90%","Rx: ABVD chemo"] for i, line in enumerate(hl_lines): d.add(String(30, 148-i*16, "β’ "+line, fontSize=8, fillColor=DARK_GRAY, fontName='Helvetica', textAnchor='start')) # NHL box d.add(Rect(250, 30, 195, 145, fillColor=LIGHT_BLUE, strokeColor=MED_BLUE, strokeWidth=2)) d.add(String(347, 162, "NON-HODGKIN LYMPHOMA", fontSize=10, fillColor=MED_BLUE, fontName='Helvetica-Bold', textAnchor='middle')) nhl_lines = ["No RS cells","Age: >50 yrs","Spread: Non-contiguous", "Extranodal common","85-90% B-cell origin", "Cure: Variable","Rx: R-CHOP (DLBCL)"] for i, line in enumerate(nhl_lines): d.add(String(260, 148-i*16, "β’ "+line, fontSize=8, fillColor=DARK_GRAY, fontName='Helvetica', textAnchor='start')) # VS circle d.add(Circle(232, 102, 20, fillColor=GOLD, strokeColor=WHITE, strokeWidth=2)) d.add(String(232, 98, "VS", fontSize=12, fillColor=WHITE, fontName='Helvetica-Bold', textAnchor='middle')) return d # ββ Ann Arbor staging diagram ββββββββββββββββββββββββββββββββββββ def make_staging_diagram(): d = Drawing(465, 130) d.add(Rect(0, 0, 465, 130, fillColor=LIGHT_PURPLE, strokeColor=None)) d.add(String(232, 115, "ANN ARBOR STAGING", fontSize=11, fillColor=PURPLE, fontName='Helvetica-Bold', textAnchor='middle')) stages = [ ("I", "1 node region", LIGHT_GREEN, ACCENT_GREEN), ("II", "2+ regions\nSame side", LIGHT_BLUE, MED_BLUE), ("III", "Both sides\nof diaphragm", LIGHT_GOLD, GOLD), ("IV", "Extranodal\n(liver/marrow)", LIGHT_RED, ACCENT_RED), ] for i, (stage, desc, bg, border) in enumerate(stages): x = 20 + i*113 d.add(Rect(x, 20, 100, 80, fillColor=bg, strokeColor=border, strokeWidth=2)) d.add(String(x+50, 82, f"Stage {stage}", fontSize=11, fillColor=border, fontName='Helvetica-Bold', textAnchor='middle')) for j, line in enumerate(desc.split('\n')): d.add(String(x+50, 60-j*14, line, fontSize=8, fillColor=DARK_GRAY, fontName='Helvetica', textAnchor='middle')) if i < 3: d.add(Line(x+103, 60, x+110, 60, strokeColor=MID_GRAY, strokeWidth=2)) d.add(String(x+108, 65, "β", fontSize=10, fillColor=MID_GRAY, fontName='Helvetica', textAnchor='middle')) return d # ββ CML phases diagram βββββββββββββββββββββββββββββββββββββββββββ def make_cml_phases(): d = Drawing(465, 100) d.add(Rect(0, 0, 465, 100, fillColor=LIGHT_TEAL, strokeColor=None)) d.add(String(232, 88, "CML: 3 PHASES", fontSize=11, fillColor=TEAL, fontName='Helvetica-Bold', textAnchor='middle')) phases = [ ("CHRONIC", "Blasts <10%\nYears, mild symptoms", LIGHT_GREEN, ACCENT_GREEN), ("ACCELERATED", "Blasts 10-20%\nMonths, worsening", LIGHT_GOLD, GOLD), ("BLAST CRISIS", "Blasts >20%\nWeeks, emergency!", LIGHT_RED, ACCENT_RED), ] for i, (phase, desc, bg, border) in enumerate(phases): x = 15 + i*152 d.add(Rect(x, 15, 138, 65, fillColor=bg, strokeColor=border, strokeWidth=2)) d.add(String(x+69, 70, phase, fontSize=9, fillColor=border, fontName='Helvetica-Bold', textAnchor='middle')) for j, line in enumerate(desc.split('\n')): d.add(String(x+69, 52-j*14, line, fontSize=8, fillColor=DARK_GRAY, fontName='Helvetica', textAnchor='middle')) if i < 2: d.add(String(x+145, 47, "β", fontSize=14, fillColor=ACCENT_RED, fontName='Helvetica-Bold', textAnchor='middle')) return d # ββ Page template βββββββββββββββββββββββββββββββββββββββββββββββ def on_page(canvas, doc): canvas.saveState() # Header bar canvas.setFillColor(DARK_BLUE) canvas.rect(0, A4[1]-28, A4[0], 28, fill=1, stroke=0) canvas.setFont('Helvetica-Bold', 9) canvas.setFillColor(WHITE) canvas.drawString(20, A4[1]-18, "MODULE 5 β HAEMATOLOGY: LEUKEMIA & LYMPHOMA") canvas.drawRightString(A4[0]-20, A4[1]-18, "6th Semester Medicine") # Footer canvas.setFillColor(LIGHT_GRAY) canvas.rect(0, 0, A4[0], 22, fill=1, stroke=0) canvas.setFont('Helvetica', 8) canvas.setFillColor(MID_GRAY) canvas.drawString(20, 6, "Sources: Robbins Pathology | Goldman-Cecil Medicine | Harrison's Principles | Tietz Lab Medicine") canvas.drawRightString(A4[0]-20, 6, f"Page {doc.page}") canvas.restoreState() # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ # BUILD CONTENT # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ story = [] # ββ COVER PAGE ββββββββββββββββββββββββββββββββββββββββββββββββββ story.append(Spacer(1, 2*cm)) cover_bg_data = [[Paragraph("MODULE 5", cover_title)]] cover_t = Table([[Paragraph("MODULE 5", cover_title)]], colWidths=[16.5*cm]) cover_t.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,-1), DARK_BLUE), ('TOPPADDING', (0,0), (-1,-1), 30), ('BOTTOMPADDING', (0,0), (-1,-1), 10), ])) story.append(cover_t) cover_t2 = Table([[Paragraph("HAEMATOLOGY", make_style('ct2', fontSize=30, textColor=WHITE, fontName='Helvetica-Bold', alignment=TA_CENTER))]], colWidths=[16.5*cm]) cover_t2.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,-1), DARK_BLUE), ('TOPPADDING', (0,0), (-1,-1), 5), ('BOTTOMPADDING', (0,0), (-1,-1), 5), ])) story.append(cover_t2) cover_t3 = Table([[Paragraph("LEUKEMIA & LYMPHOMA", make_style('ct3', fontSize=20, textColor=colors.HexColor("#90CAF9"), fontName='Helvetica-Bold', alignment=TA_CENTER))]], colWidths=[16.5*cm]) cover_t3.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,-1), DARK_BLUE), ('TOPPADDING', (0,0), (-1,-1), 5), ('BOTTOMPADDING', (0,0), (-1,-1), 30), ])) story.append(cover_t3) story.append(Spacer(1, 1*cm)) story.append(colored_box( "<b>What you will learn:</b><br/>" "β ALL, AML, CML, CLL β classification, features, treatment, mnemonics<br/>" "β Hodgkin & Non-Hodgkin Lymphoma β subtypes, staging, treatment<br/>" "β Diagnostic flowcharts, histology images, summary tables<br/>" "β 25 high-yield MCQs with explained answers<br/>" "β Quick revision flashcards", bg=LIGHT_BLUE, border=MED_BLUE)) story.append(Spacer(1, 0.5*cm)) info_data = [ ["Subject:", "Medicine β 6th Semester"], ["Module:", "5 β Haematology & Oncology"], ["Topics:", "Leukemia (ALL, AML, CML, CLL) | Lymphoma (HL, NHL)"], ["Sources:", "Robbins Pathology | Goldman-Cecil | Harrison's | Tietz"], ] info_t = Table(info_data, colWidths=[3.5*cm, 13*cm]) info_t.setStyle(TableStyle([ ('FONTNAME', (0,0), (0,-1), 'Helvetica-Bold'), ('FONTNAME', (1,0), (1,-1), 'Helvetica'), ('FONTSIZE', (0,0), (-1,-1), 10), ('TEXTCOLOR', (0,0), (0,-1), DARK_BLUE), ('TEXTCOLOR', (1,0), (1,-1), DARK_GRAY), ('BOTTOMPADDING', (0,0), (-1,-1), 5), ('TOPPADDING', (0,0), (-1,-1), 5), ('LINEBELOW', (0,0), (-1,-2), 0.3, LIGHT_GRAY), ])) story.append(info_t) story.append(PageBreak()) # βββββββββββββββ SECTION 1: LEUKEMIA βββββββββββββββββββββββββββ story.append(section_bar("SECTION 1: LEUKEMIA β CANCER OF BLOOD & BONE MARROW", DARK_BLUE)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("Understanding the Big Picture", section_h)) story.append(Paragraph( "Think of your <b>bone marrow as a blood cell factory</b>. It has two main production lines: " "the <b>Myeloid line</b> (makes RBCs, platelets, granulocytes) and the <b>Lymphoid line</b> " "(makes B-cells and T-cells). Leukemia occurs when one of these lines goes haywire β producing " "immature, non-functional cells called <b>blasts</b> that crowd out normal cells.", body)) story.append(colored_box( "<b>KEY RULE:</b> Myeloid line goes crazy β <b>AML or CML</b> | " "Lymphoid line goes crazy β <b>ALL or CLL</b><br/>" "<b>ACUTE</b> = sudden onset, immature blasts, needs urgent treatment | " "<b>CHRONIC</b> = slow onset, more mature cells, manageable", bg=LIGHT_GOLD, border=GOLD)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("Diagnostic Flowchart", section_h)) story.append(make_flowchart()) story.append(Spacer(1, 0.4*cm)) # ββ Master comparison table ββββββββββββββββββββββββββββββββββββββ story.append(Paragraph("The 4 Types of Leukemia β Master Comparison", section_h)) headers = ["Feature", "ALL", "AML", "CML", "CLL"] rows = [ ["Full name", "Acute Lymphoblastic", "Acute Myeloid", "Chronic Myeloid", "Chronic Lymphocytic"], ["Age group", "Children 2-5 yrs", "Adults >60 yrs", "Middle age 40-50", "Elderly >60 yrs"], ["Cell origin", "Lymphoblast", "Myeloblast", "Myeloid stem cell", "Mature B-lymphocyte"], ["Key finding", "TdT+, CD10+", "Auer rods", "Ph chromosome", "Smudge cells, CD5+"], ["Chromosome", "t(12;21) good\nt(9;22) bad", "t(15;17) = APL\nt(8;21)", "t(9;22) BCR-ABL", "del 13q (good)\ndel 17p (bad)"], ["WBC count", "Variable (high/low)", "Variable", "Very high 50-500K", "High lymphocytes"], ["Onset", "Days to weeks", "Days to weeks", "Months (slow)", "Years (very slow)"], ["Treatment", "BFM chemo protocol", "7+3 / ATRA for APL", "Imatinib (TKI)", "Ibrutinib / Watch & Wait"], ["Prognosis", "80% cure (children)", "Moderate", "Excellent with TKI", "Incurable but slow"], ["Special", "#1 childhood cancer", "Auer rods = path.", "Imatinib revolution", "Most common adult leuk."], ] story.append(fancy_table(headers, rows, [3.5*cm,3.2*cm,3.2*cm,3.2*cm,3.2*cm])) story.append(PageBreak()) # ββ ALL βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ story.append(section_bar("1A. ALL β Acute Lymphoblastic Leukemia", ACCENT_RED)) story.append(Spacer(1, 0.3*cm)) story.append(colored_box( '<b>Remember it as:</b> "The child who gets <b>bone pain</b>, bruises easily, ' 'looks <b>pale</b>, and has a swollen face or testes"', bg=LIGHT_RED, border=ACCENT_RED)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("Epidemiology", sub_h)) for pt in [ "Most common malignant disease of childhood β 25% of all childhood cancers", "~2000-2500 new cases/year | Peak incidence: 2-3 years of age", "3Γ more common in White children than African American | Hispanic incidence is high", "95% remission rate | 80% disease-free at 5 years β one of the best cure rates!", ]: story.append(Paragraph("β’ " + pt, bullet_style)) story.append(Spacer(1, 0.2*cm)) story.append(Paragraph('Mnemonic: "PALE BLAST" for Symptoms', sub_h)) mnemonic_data = [ ["P", "Pallor", "Anemia β factory not making RBCs"], ["A", "Aches", "Bone pain β marrow packed with blasts"], ["L", "Lymphadenopathy", "Swollen lymph nodes"], ["E", "Easy bruising/bleeding", "Low platelets (thrombocytopenia)"], ["B", "Big liver & spleen", "Hepatosplenomegaly"], ["L", "Lumps in testes", "Testicular enlargement in boys!"], ["A", "Asthenia", "Fatigue and weakness"], ["S", "Swollen face/neck", "Mediastinal mass β SVC syndrome"], ["T", "Temperature (fever)", "Neutropenia β infection risk"], ] t = Table(mnemonic_data, colWidths=[0.8*cm, 4.5*cm, 11.2*cm]) t.setStyle(TableStyle([ ('BACKGROUND', (0,0), (0,-1), ACCENT_RED), ('TEXTCOLOR', (0,0), (0,-1), WHITE), ('FONTNAME', (0,0), (0,-1), 'Helvetica-Bold'), ('FONTSIZE', (0,0), (-1,-1), 9), ('FONTNAME', (1,0), (1,-1), 'Helvetica-Bold'), ('TEXTCOLOR', (1,0), (1,-1), DARK_BLUE), ('ROWBACKGROUNDS', (0,0), (-1,-1), [WHITE, LIGHT_RED]), ('GRID', (0,0), (-1,-1), 0.5, colors.HexColor("#FFCDD2")), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ('LEFTPADDING', (0,0), (-1,-1), 6), ('TOPPADDING', (0,0), (-1,-1), 4), ('BOTTOMPADDING', (0,0), (-1,-1), 4), ])) story.append(t) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("Investigations", sub_h)) inv_data = [ ["Test", "Finding", "Significance"], ["CBC", "β or β WBC, β RBC, β Platelets", "Marrow failure β blasts crowding out normal cells"], ["Bone Marrow Biopsy", ">20% blasts (DIAGNOSTIC)", "Gold standard test for all leukemias"], ["Blood smear", "Lymphoblasts visible", "Immature cells with scant cytoplasm"], ["Immunophenotype", "TdT+, CD10+, CD19+ (B-cell)\nor CD3+ (T-cell)", "Distinguishes ALL subtypes"], ["Chest X-ray", "Mediastinal widening", "T-cell ALL β thymic mass"], ["CSF analysis", "Blast cells in CSF", "CNS involvement"], ["Cytogenetics", "t(12;21) = good prognosis\nt(9;22) = poor prognosis", "Guides therapy intensity"], ] story.append(fancy_table(inv_data[0], inv_data[1:], [3.5*cm, 5.5*cm, 7.5*cm])) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("Treatment Protocol (3 Phases)", sub_h)) rx_data = [ ["Phase", "Duration", "Drugs/Goal", "Target"], ["INDUCTION", "4-6 weeks", "Vincristine + Prednisolone\n+ L-Asparaginase Β± Daunorubicin", "Eliminate 99% blasts β achieve remission"], ["CONSOLIDATION", "Weeks-months", "High-dose Methotrexate\n+ 6-Mercaptopurine", "Kill residual/hidden blasts"], ["MAINTENANCE", "2-3 years", "Daily 6-MP + weekly Methotrexate", "Prevent relapse"], ["CNS Prophylaxis", "Throughout", "Intrathecal Methotrexate", "Prevent CNS sanctuary disease"], ] story.append(fancy_table(rx_data[0], rx_data[1:], [3*cm, 2.5*cm, 5.5*cm, 5.5*cm], ACCENT_RED)) story.append(PageBreak()) # ββ AML βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ story.append(section_bar("1B. AML β Acute Myeloid Leukemia", colors.HexColor("#B71C1C"))) story.append(Spacer(1, 0.3*cm)) story.append(colored_box( '<b>Remember it as:</b> "The adult who suddenly develops fever, bleeding gums (gingival hypertrophy), ' 'pallor, and the blood smear shows <b>Auer rods</b> inside blast cells"', bg=LIGHT_RED, border=ACCENT_RED)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("KEY PATHOLOGY: Auer Rods", sub_h)) story.append(colored_box( "<b>Auer Rods</b> = Pink, needle-shaped crystalline inclusions inside myeloblasts<br/>" "Seen on peripheral blood smear or bone marrow aspirate<br/>" "<b>PATHOGNOMONIC of AML</b> β if you see Auer rods, answer is AML (especially M3/APL can have faggot cells)", bg=LIGHT_GOLD, border=GOLD)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("FAB Classification (M0-M7) β High Yield for Exams!", sub_h)) fab_data = [ ["FAB", "Name", "Key Feature", "Special Note"], ["M0", "Undifferentiated AML", "Least differentiated, MPO-", "Rare"], ["M1", "Without maturation", "Few azurophilic granules, Auer rods", "MPO+"], ["M2", "With maturation", "Most Auer rods, t(8;21)", "Good prognosis"], ["M3 β ", "Acute Promyelocytic (APL)", "Faggot cells, t(15;17), DIC!", "ATRA treatment β BEST prognosis!"], ["M4", "Myelomonocytic", "Gum hypertrophy, t(9;11)", "Monocytic features"], ["M5", "Monocytic", "Gum infiltration, skin nodules", "Young patients"], ["M6", "Erythroleukemia", "Bizarre RBC precursors, PAS+", "Rare, older adults"], ["M7", "Megakaryoblastic", "Down syndrome!, anti-platelet Ab", "Pediatric"], ] story.append(fancy_table(fab_data[0], fab_data[1:], [1.5*cm,4*cm,5.5*cm,5.5*cm], colors.HexColor("#B71C1C"))) story.append(Spacer(1, 0.3*cm)) story.append(colored_box( "<b>β‘ EXAM BOMB β M3 (APL):</b><br/>" "β’ Translocation: <b>t(15;17)</b> β PML-RARA fusion gene<br/>" "β’ Complication: <b>DIC</b> (Disseminated Intravascular Coagulation) β bleeding everywhere!<br/>" "β’ Treatment: <b>ATRA</b> (All-Trans Retinoic Acid) + Arsenic Trioxide<br/>" "β’ Mechanism: ATRA differentiates promyelocytes into mature cells<br/>" "β’ Prognosis: <b>BEST of all AML subtypes</b>", bg=LIGHT_RED, border=ACCENT_RED)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("Treatment", sub_h)) story.append(Paragraph( '<b>"7+3" Induction Regimen:</b> Cytarabine (Ara-C) Γ 7 days + Anthracycline (Daunorubicin) Γ 3 days<br/>' '<b>Consolidation:</b> High-dose Cytarabine (HiDAC)<br/>' '<b>APL:</b> ATRA + Arsenic Trioxide (ATO) β no traditional chemo needed!<br/>' '<b>Relapse/Refractory:</b> Allogeneic Stem Cell Transplant (allo-SCT)', body)) story.append(PageBreak()) # ββ CML βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ story.append(section_bar("1C. CML β Chronic Myeloid Leukemia", TEAL)) story.append(Spacer(1, 0.3*cm)) story.append(colored_box( '<b>Remember it as:</b> "The middle-aged man with a <b>MASSIVE spleen</b>, WBC of 100,000+, ' 'and the <b>Philadelphia chromosome</b> on cytogenetics"', bg=LIGHT_TEAL, border=TEAL)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("The Philadelphia Chromosome β Most Important Concept!", sub_h)) ph_data = [ ["Step", "What Happens"], ["1. Normal chromosomes", "Chromosome 9 (ABL gene) + Chromosome 22 (BCR gene)"], ["2. Translocation t(9;22)", "Pieces SWAP between chromosomes 9 and 22"], ["3. Result", "Elongated Chr 9 + SHORTENED Chr 22 = Philadelphia Chromosome"], ["4. Fusion gene", "BCR-ABL chimeric gene formed on shortened chromosome 22"], ["5. Effect", "BCR-ABL = constitutively active tyrosine kinase β uncontrolled WBC production"], ["6. Target", "BCR-ABL is blocked by IMATINIB β dramatic disease control"], ] story.append(fancy_table(ph_data[0], ph_data[1:], [4*cm, 12.5*cm], TEAL)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("3 Phases of CML", sub_h)) story.append(make_cml_phases()) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("Clinical Features", sub_h)) cf_data = [ ["Symptom/Sign", "Details", "Why it happens"], ["Massive splenomegaly", "Dragging LUQ pain, earliest sign", "Extramedullary haematopoiesis"], ["Very high WBC", "50,000 β 500,000/Β΅L", "Uncontrolled myeloid proliferation"], ["Basophilia", "High basophil count on smear", "Pathognomonic of CML (vs leukemoid)"], ["B symptoms", "Fever, night sweats, weight loss", "Cytokine release"], ["Low LAP score", "Leukocyte Alkaline Phosphatase β", "Key to distinguish CML from leukemoid reaction"], ["Hyperuricemia", "Gout-like symptoms", "High cell turnover"], ] story.append(fancy_table(cf_data[0], cf_data[1:], [4*cm, 5*cm, 7.5*cm], TEAL)) story.append(Spacer(1, 0.3*cm)) story.append(colored_box( "<b>THE IMATINIB REVOLUTION:</b><br/>" "Before 1998: CML was fatal within 5 years<br/>" "1998 onwards: <b>Imatinib (Gleevec)</b> β first targeted cancer therapy β blocks BCR-ABL kinase<br/>" "Result: CML transformed from fatal to a CHRONIC, manageable disease!<br/>" "Newer TKIs: Dasatinib, Nilotinib (2nd gen) | Ponatinib (3rd gen, for T315I mutation)", bg=LIGHT_TEAL, border=TEAL)) story.append(PageBreak()) # ββ CLL βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ story.append(section_bar("1D. CLL β Chronic Lymphocytic Leukemia", ACCENT_GREEN)) story.append(Spacer(1, 0.3*cm)) story.append(colored_box( '<b>Remember it as:</b> "The elderly person whose <b>routine blood test</b> showed a high lymphocyte count β ' 'no symptoms β smudge cells on smear β CD5 positive B-cells"', bg=LIGHT_GREEN, border=ACCENT_GREEN)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("Key Features", sub_h)) for pt in [ "Most common leukemia in adults in Western countries", "Often an INCIDENTAL finding on routine CBC β patient may have NO symptoms for years", "Mature B-lymphocytes that are immunologically incompetent (can't fight infections!)", "Paradox: high lymphocyte count, but patient gets repeated infections", ]: story.append(Paragraph("β’ " + pt, bullet_style)) story.append(Spacer(1, 0.2*cm)) story.append(Paragraph("Diagnostic Findings", sub_h)) diag_data = [ ["Test", "Finding", "Significance"], ["CBC", "Lymphocytosis >5000/Β΅L for >3 months", "Diagnostic criterion"], ["Blood smear", "SMUDGE CELLS (crushed lymphocytes)", "Pathognomonic of CLL!"], ["Immunophenotype", "CD5+, CD19+, CD23+, CD20 (dim)", "CD5 = normally T-cell marker (abnormal on B-cells)"], ["Bone marrow", ">30% lymphocytes in marrow", "Confirms marrow infiltration"], ["Cytogenetics", "del 13q = best | del 17p = worst", "Prognostic markers"], ["ZAP-70 / CD38", "If positive = worse prognosis", "Unmutated IGHV gene"], ] story.append(fancy_table(diag_data[0], diag_data[1:], [3.5*cm, 5.5*cm, 7.5*cm], ACCENT_GREEN)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("Rai Staging System (Exam Favourite!)", sub_h)) rai_data = [ ["Stage", "Features", "Prognosis", "Median Survival"], ["0", "Lymphocytosis only", "Best", ">10 years"], ["I", "Lymphocytosis + Lymphadenopathy", "Good", "~7 years"], ["II", "+ Hepatomegaly or Splenomegaly", "Intermediate", "~5 years"], ["III", "+ Anemia (Hb <11 g/dL)", "Poor", "~2 years"], ["IV", "+ Thrombocytopenia (<100K)", "Worst", "~1 year"], ] story.append(fancy_table(rai_data[0], rai_data[1:], [2*cm, 5.5*cm, 3*cm, 4*cm], ACCENT_GREEN)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("Complications", sub_h)) comp_data = [ ["Complication", "Details", "Management"], ["AIHA (Autoimmune Hemolytic Anemia)", "Body produces antibodies against own RBCs", "Steroids, IVIG"], ["Richter Transformation", "CLL transforms to aggressive DLBCL (10-15%)", "Intensive chemo, poor prognosis"], ["Hypogammaglobulinemia", "Repeated bacterial infections (pneumonia, UTI)", "IVIG replacement"], ["Autoimmune Thrombocytopenia (ITP)", "Platelet destruction by antibodies", "Steroids"], ] story.append(fancy_table(comp_data[0], comp_data[1:], [4.5*cm, 5.5*cm, 6.5*cm], ACCENT_GREEN)) story.append(PageBreak()) # βββββββββββββββ SECTION 2: LYMPHOMA ββββββββββββββββββββββββββββ story.append(section_bar("SECTION 2: LYMPHOMA β CANCER OF LYMPH NODES", DARK_BLUE)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("Leukemia vs Lymphoma β Quick Concept", sub_h)) story.append(colored_box( "<b>Leukemia</b> = cancer primarily IN the blood/bone marrow | cells circulate in blood<br/>" "<b>Lymphoma</b> = cancer primarily IN lymph nodes/lymphoid tissue | forms solid tumors<br/>" "<i>Note: They overlap β lymphoma can spill into blood (leukemic phase), leukemia can involve nodes</i>", bg=LIGHT_BLUE, border=MED_BLUE)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("Hodgkin vs Non-Hodgkin Overview", section_h)) story.append(make_lymphoma_diagram()) story.append(Spacer(1, 0.3*cm)) # Comparison table cmp_data = [ ["Feature", "Hodgkin Lymphoma", "Non-Hodgkin Lymphoma"], ["Age", "15-35 yrs (bimodal peak)", "Mostly >50 yrs"], ["RS Cells", "YES β DIAGNOSTIC", "Absent"], ["Spread pattern", "Contiguous (stepwise)", "Non-contiguous (random)"], ["Extranodal involvement", "Rare", "Common"], ["Mesenteric nodes", "Rare", "Common"], ["Waldeyer's ring", "Rare", "Common"], ["EBV association", "40% cases", "Some subtypes (Burkitt, PTLD)"], ["B-cell vs T-cell", "B-cell origin (RS cell)", "85% B-cell, 15% T-cell"], ["Cure rate", "~90% early stage", "Variable 20-90%"], ["Treatment", "ABVD chemotherapy", "R-CHOP (DLBCL)"], ] story.append(fancy_table(cmp_data[0], cmp_data[1:], [4.5*cm, 6*cm, 6*cm])) story.append(PageBreak()) # ββ Hodgkin Lymphoma βββββββββββββββββββββββββββββββββββββββββββββ story.append(section_bar("2A. HODGKIN LYMPHOMA (HL)", ACCENT_RED)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("The Reed-Sternberg Cell β Most Important Cell!", sub_h)) story.append(colored_box( "<b>Reed-Sternberg (RS) Cell:</b><br/>" "β’ LARGE binucleated cell (15-45 Β΅m diameter)<br/>" "β’ Each nucleus has a prominent <b>eosinophilic nucleolus</b> with clear halo<br/>" "β’ Resembles an <b>OWL looking at you</b> (OWL EYE APPEARANCE)<br/>" "β’ Immunophenotype: <b>CD15+ and CD30+</b> | CD45-, CD20-<br/>" "β’ Origin: Germinal center B cells (proven by immunoglobulin gene rearrangement studies)<br/>" "β’ EBV present in RS cells in ~40% overall (70% in mixed cellularity subtype)", bg=LIGHT_RED, border=ACCENT_RED)) story.append(Spacer(1, 0.3*cm)) # RS cell image from Robbins img_items = fetch_img_flowable( "https://cdn.orris.care/cdss_images/c1975d6d2a7fe6433070eaf569f24f1731c40effe2f6c55404f4591d5f239aed.png", width_cm=10, caption="FIG. Reed-Sternberg Cell β Large binucleated cell with prominent 'owl-eye' nucleoli surrounded " "by lymphocytes, macrophages, and eosinophils. (Source: Robbins & Kumar Basic Pathology)") for item in img_items: story.append(item) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("5 Subtypes of Hodgkin Lymphoma", sub_h)) hl_sub_data = [ ["Subtype", "Freq", "Age/Sex", "Key Features", "RS Cells", "Prognosis"], ["Nodular Sclerosis (NS)", "70%\n(MOST\nCOMMON)", "Young women\n15-34 yrs", "Collagen bands, lacunar cells, mediastinal mass", "Lacunar variant", "Good"], ["Mixed Cellularity (MC)", "20-25%", "Middle age\nMale", "EBV+++ (70%), heterogeneous infiltrate", "Classic RS cells (plentiful)", "Good"], ["Lymphocyte Rich", "5%", "Any age", "Abundant lymphocytes, rare RS cells", "Rare", "Best"], ["Lymphocyte Depleted", "<1%", "Elderly/HIV", "Few lymphocytes, many RS cells, fibrosis", "Numerous", "WORST"], ["Nodular LP (NLP)", "5%", "Young males", "Popcorn/LP cells, CD20+, CD15-, CD30-", "LP cells ('popcorn')", "Excellent"], ] story.append(fancy_table(hl_sub_data[0], hl_sub_data[1:], [3*cm, 1.5*cm, 2.5*cm, 4.5*cm, 2.5*cm, 2.5*cm], ACCENT_RED)) story.append(Spacer(1, 0.2*cm)) story.append(colored_box( "<b>Exam Tricks:</b><br/>" "β’ NS = Most common subtype overall<br/>" "β’ MC = Most EBV-associated (70%)<br/>" "β’ LD = Worst prognosis<br/>" "β’ NLP = Different markers: CD20+, CD15-, CD30- (unlike classical HL)", bg=LIGHT_GOLD, border=GOLD)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("Clinical Features", sub_h)) story.append(Paragraph( "<b>Classic presentation:</b> Young adult with <b>painless cervical lymphadenopathy</b> " "(rubbery, non-tender nodes). Spreads contiguously β neck β mediastinum β para-aortic.", body)) story.append(Spacer(1, 0.2*cm)) b_sym_data = [ ["B Symptoms (indicate advanced disease)", "Other Features"], ["Fever >38Β°C\n(Pel-Ebstein = cyclical fever β CLASSIC for HL!)", "Pruritus (itching) β can be first symptom"], ["Drenching night sweats", "Alcohol-induced pain at node sites β PATHOGNOMONIC of HL!"], ["Weight loss >10% in 6 months", "Mediastinal mass β cough, dyspnea, SVC syndrome"], ] story.append(fancy_table(b_sym_data[0], b_sym_data[1:], [8.25*cm, 8.25*cm], ACCENT_RED)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("Ann Arbor Staging", sub_h)) story.append(make_staging_diagram()) story.append(Spacer(1, 0.2*cm)) story.append(Paragraph( "<b>Suffixes:</b> A = no B symptoms | B = has B symptoms | E = extranodal extension | S = spleen<br/>" "<b>Example:</b> Stage IIIB = Both sides of diaphragm + fever/sweats/weight loss", body)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("Treatment", sub_h)) rx_hl = [ ["Stage", "Treatment", "Drugs"], ["Early (I-IIA)", "ABVD Γ 2-4 cycles + Radiation (ISRT)", "A=Adriamycin, B=Bleomycin, V=Vinblastine, D=Dacarbazine"], ["Advanced (IIB-IV)", "ABVD Γ 6 cycles Β± Radiation\nOR Escalated BEACOPP", "Higher dose, more toxic, for younger fit patients"], ["Relapsed/Refractory", "Brentuximab vedotin (anti-CD30)\n+ Auto-SCT", "PD-1 inhibitors: Nivolumab, Pembrolizumab"], ] story.append(fancy_table(rx_hl[0], rx_hl[1:], [3*cm, 6*cm, 7.5*cm], ACCENT_RED)) story.append(colored_box( "<b>Prognosis:</b> Stage I-IIA: >90% 5-year survival | Stage IV: ~50% 5-year survival<br/>" "HL is one of the <b>most curable cancers</b> β even advanced disease responds well to treatment!", bg=LIGHT_GREEN, border=ACCENT_GREEN)) story.append(PageBreak()) # ββ Non-Hodgkin Lymphoma βββββββββββββββββββββββββββββββββββββββββ story.append(section_bar("2B. NON-HODGKIN LYMPHOMA (NHL)", MED_BLUE)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("Classification Overview", sub_h)) nhl_class = [ ["Category", "Subtype", "Frequency", "Key Feature", "Treatment"], ["INDOLENT\n(slow-growing,\nnot curable)", "Follicular Lymphoma", "20% of NHL", "t(14;18), BCL-2 overexpression\nGerminal center origin", "Watch & wait\nRituximab, Bendamustine"], ["", "CLL/SLL", "7% of NHL", "Same disease as CLL\njust in node form", "Same as CLL"], ["", "Marginal Zone / MALT", "8% of NHL", "H. pylori association\n(gastric MALT)", "H. pylori eradication!"], ["AGGRESSIVE\n(fast-growing,\ncurable!)", "DLBCL", "30% (most common!)", "CD20+, c-MYC overexpression\nB-cell origin", "R-CHOP (curative ~60-70%)"], ["", "Burkitt Lymphoma", "<5%", "t(8;14), c-MYC\nStarry sky pattern\nFASTEST growing cancer!", "R-CODOX-M/IVAC\nIntensive chemo"], ["", "Mantle Cell Lymphoma", "5-7%", "t(11;14), Cyclin D1\nCD5+ (like CLL!)\nAggressive + incurable", "R-CHOP + BTKi"], ["VERY\nAGGRESSIVE", "Peripheral T-cell Lymphoma", "5-10%", "T-cell origin\nCD3+, CD4+ or CD8+", "CHOP-based, poor prognosis"], ] story.append(fancy_table(nhl_class[0], nhl_class[1:], [2.5*cm,3.5*cm,2cm,4.5*cm,4*cm])) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("The 3 Most Important NHL Subtypes", section_h)) # DLBCL story.append(section_bar("DLBCL β Diffuse Large B-Cell Lymphoma (Most Common NHL)", colors.HexColor("#1565C0"))) for pt in [ "<b>Most common NHL worldwide</b> β 30% of all NHLs", "AGGRESSIVE but potentially CURABLE", "CD20+, CD19+, BCL6+ β B-cell origin", "Presents with rapidly enlarging lymph node mass Β± B symptoms Β± extranodal sites", "Treatment: <b>R-CHOP</b> (6 cycles) β Rituximab + Cyclophosphamide + Doxorubicin + Vincristine + Prednisone", "Cure rate: ~60-70% with R-CHOP | Relapsed: Auto-SCT or CAR-T therapy", ]: story.append(Paragraph("β’ " + pt, bullet_style)) story.append(Spacer(1, 0.3*cm)) # Follicular story.append(section_bar("Follicular Lymphoma (2nd most common NHL)", colors.HexColor("#4527A0"))) for pt in [ "20% of NHLs | <b>Most common INDOLENT lymphoma</b>", "<b>t(14;18)</b> translocation β BCL-2 overexpression β cells CANNOT undergo apoptosis!", "Patients often asymptomatic for years with 'waxing and waning' lymphadenopathy", "NOT curable with conventional chemotherapy β but patients can live 10+ years", "<b>Watch and wait</b> for asymptomatic patients (treatment doesn't improve survival in early disease)", "Can transform to DLBCL (~30% over 10 years) β Richter transformation", ]: story.append(Paragraph("β’ " + pt, bullet_style)) story.append(Spacer(1, 0.3*cm)) # Burkitt story.append(section_bar("Burkitt Lymphoma β Fastest Growing Cancer!", colors.HexColor("#4E342E"))) story.append(Spacer(1, 0.2*cm)) bk_data = [ ["Feature", "Details"], ["Growth rate", "FASTEST growing cancer β tumor doubles in ~24-48 hours!"], ["Translocation", "t(8;14) β c-MYC oncogene next to IgH enhancer β massive MYC expression"], ["Histology", "'Starry sky' pattern β macrophages (stars) eating apoptotic tumor cells (dark sky)"], ["Immunophenotype", "CD19+, CD20+, CD10+, BCL6+, BCL2 NEGATIVE (high apoptosis!)"], ["3 Types", "Endemic (Africa): jaw/facial mass, EBV+\nSporadic: ileocecum, abdomen, EBV-\nHIV-related: any site"], ["Treatment", "R-CODOX-M/IVAC β intensive, rapid cycles"], ["Key complication", "TUMOR LYSIS SYNDROME β massive cell death β βK+, βphosphate, βuric acid, βCa++ β renal failure!"], ["Prognosis", "Children/young adults: curable | Older adults: worse"], ] story.append(fancy_table(bk_data[0], bk_data[1:], [4*cm, 12.5*cm], colors.HexColor("#4E342E"))) story.append(Spacer(1, 0.3*cm)) # Burkitt starry sky image img_items2 = fetch_img_flowable( "https://cdn.orris.care/cdss_images/d742a270270db78fe05bfe30483d7959b33a1d1785d95f378c6ab93dab034c30.png", width_cm=10, caption="FIG. Burkitt Lymphoma β 'Starry sky' pattern: pale macrophages (stars) scattered among dark " "tumor cells (sky). High mitotic index visible. (Source: Robbins, Cotran & Kumar Pathologic Basis of Disease)") for item in img_items2: story.append(item) story.append(PageBreak()) # ββ HL Histology images ββββββββββββββββββββββββββββββββββββββββββ story.append(section_bar("HISTOLOGY IMAGES β Visual Learning", DARK_BLUE)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("Nodular Sclerosis HL β Lacunar Cell & Collagen Bands", sub_h)) img3 = fetch_img_flowable( "https://cdn.orris.care/cdss_images/336acaf28dbe4ed7a67c7afd9dc098d029abd5b089073c135ed169c0a4d4def7.png", width_cm=9, caption="FIG. Hodgkin Lymphoma, Nodular Sclerosis β Lacunar cell (RS variant) lying in a clear space " "(lacune), surrounded by lymphocytes. (Source: Robbins Basic Pathology)") for item in img3: story.append(item) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("Nodular Sclerosis HL β Collagen Bands", sub_h)) img4 = fetch_img_flowable( "https://cdn.orris.care/cdss_images/50bb21a3feb502a42f3058447eabbbcafbbb23b8b1ea08161ebb0a2443913ccb.png", width_cm=9, caption="FIG. Hodgkin Lymphoma, Nodular Sclerosis β Low-power view showing collagen bands (pink) " "dividing lymphoid tissue into nodules. (Source: Robbins Basic Pathology)") for item in img4: story.append(item) story.append(PageBreak()) # ββ MASTER SUMMARY TABLE βββββββββββββββββββββββββββββββββββββββββ story.append(section_bar("MASTER SUMMARY TABLE β All Haematological Malignancies", DARK_BLUE)) story.append(Spacer(1, 0.3*cm)) sum_data = [ ["Disease","Age","Key Cell/Finding","Key Marker","Chromosome","Treatment","Prognosis"], ["ALL","Children 2-5","Lymphoblast","TdT+, CD10+","t(12;21) good\nt(9;22) bad","BFM chemo\n3 phases","80% cure"], ["AML","Adults >60","Myeloblast\n+ Auer rods","MPO+","t(15;17) APL\nt(8;21)","7+3 / ATRA\nfor APL","Moderate"], ["CML","40-50 yrs","Mature myeloid\nBasophilia","Low LAP","t(9;22)\nPh chromosome","Imatinib\n(TKI)","Excellent"], ["CLL","Elderly >60","Smudge cells","CD5+CD19+\nCD23+","del 13q\ndel 17p (bad)","Ibrutinib\nWatch&Wait","Incurable\nbut slow"], ["HL","15-35 (bimodal)","Reed-Sternberg\nOWL EYE","CD15+\nCD30+","None specific","ABVD","~90% cure"], ["DLBCL",">50 yrs","Large B-cells","CD20+, BCL6+","None specific","R-CHOP","~65% cure"], ["Follicular",">50 yrs","Small cleaved\nB-cells","CD10+, BCL2+","t(14;18)","Watch&Wait\nRituximab","Indolent\n10+ yrs"], ["Burkitt","Children/young","Starry sky\nHigh mitosis","CD20+, BCL2-","t(8;14)\nc-MYC","R-CODOX-M","Curable in\nyoung"], ] story.append(fancy_table(sum_data[0], sum_data[1:], [2.3*cm,2*cm,2.5*cm,2.3*cm,2.3*cm,2.5*cm,2.5*cm])) story.append(PageBreak()) # ββββββββββββββ MCQ SECTION ββββββββββββββββββββββββββββββββββββββ story.append(section_bar("HIGH-YIELD MCQs (25 Questions) β Theory & Clinical", DARK_BLUE)) story.append(Spacer(1, 0.3*cm)) mcqs = [ # (question, [A,B,C,D], correct_letter, explanation) ("1. A 3-year-old child presents with pallor, bone pain, and hepatosplenomegaly. CBC shows WBC 80,000/Β΅L with 90% blasts. Bone marrow shows TdT+, CD10+ cells. The MOST LIKELY diagnosis is:", ["A. AML", "B. CML", "C. ALL", "D. CLL"], "C", "ALL is the most common childhood leukemia (peak 2-3 yrs). TdT+ and CD10+ (CALLA) are hallmarks of ALL. The presentation β bone pain, pallor, hepatosplenomegaly in a child β is classic."), ("2. Which of the following findings on a peripheral blood smear is PATHOGNOMONIC of AML?", ["A. Smudge cells", "B. Auer rods", "C. Tear drop cells", "D. Target cells"], "B", "Auer rods are pink needle-shaped crystalline inclusions inside myeloblasts β seen ONLY in AML, making them pathognomonic. Smudge cells = CLL. Tear drop cells = myelofibrosis."), ("3. A 45-year-old man has WBC 250,000/Β΅L with marked basophilia, massive splenomegaly, and a low LAP score. Cytogenetics show t(9;22). The FIRST-LINE treatment is:", ["A. Imatinib", "B. ABVD chemotherapy", "C. Hydroxyurea", "D. Bone marrow transplant"], "A", "CML with Philadelphia chromosome t(9;22) is treated with Imatinib (Gleevec), a BCR-ABL tyrosine kinase inhibitor. This revolutionized CML treatment in 1998. Low LAP distinguishes CML from leukemoid reaction."), ("4. A patient with AML M3 (APL) presents with spontaneous bleeding and DIC. The SPECIFIC treatment is:", ["A. Fresh frozen plasma only", "B. ATRA + Arsenic trioxide", "C. 7+3 chemotherapy", "D. Platelet transfusion only"], "B", "APL (M3, t(15;17), PML-RARA) is treated with ATRA (All-Trans Retinoic Acid) + Arsenic Trioxide. ATRA differentiates promyelocytes into mature cells, resolving DIC. This is the best prognosis AML subtype."), ("5. Which chromosomal abnormality defines Chronic Myeloid Leukemia?", ["A. t(8;21)", "B. t(15;17)", "C. t(9;22)", "D. t(14;18)"], "C", "t(9;22) creates the Philadelphia chromosome β BCR-ABL fusion gene β present in >95% of CML cases. t(8;21) = AML M2. t(15;17) = APL (M3). t(14;18) = Follicular lymphoma."), ("6. An elderly man is found to have lymphocytosis on a routine blood test. Smear shows crushed lymphocytes. Immunophenotyping shows CD5+, CD19+, CD23+. Best next step:", ["A. Start R-CHOP immediately", "B. Bone marrow biopsy and Rai staging", "C. Splenectomy", "D. Radiation therapy"], "B", "This is CLL β smudge cells + CD5+ B-cells are pathognomonic. Rai staging guides management. Early stage (0-I) = watch and wait. Do not treat early CLL without symptoms."), ("7. Which CLL complication represents transformation to an aggressive lymphoma?", ["A. AIHA", "B. Richter transformation", "C. Hypogammaglobulinemia", "D. ITP"], "B", "Richter transformation = CLL transforming to DLBCL (diffuse large B-cell lymphoma) in 10-15% of cases. Poor prognosis. AIHA = autoimmune hemolytic anemia (also a CLL complication, but not transformation)."), ("8. The Reed-Sternberg cell expresses which markers?", ["A. CD20+, CD3+", "B. TdT+, CD10+", "C. CD15+, CD30+", "D. CD5+, CD23+"], "C", "RS cells in classical Hodgkin lymphoma are CD15+ and CD30+ but NEGATIVE for CD45 (LCA), CD20, and CD3. CD15+CD30+ is THE classic RS cell immunophenotype for exam purposes."), ("9. The most common subtype of Hodgkin Lymphoma is:", ["A. Mixed Cellularity", "B. Lymphocyte Depleted", "C. Nodular Sclerosis", "D. Nodular LP"], "C", "Nodular Sclerosis = 70% of HL cases. It is the most common subtype, especially in young women and adolescents. It characteristically involves the mediastinum and has lacunar RS cell variants."), ("10. A young man with Hodgkin Lymphoma develops pain in his lymph nodes after drinking alcohol. This symptom is:", ["A. Non-specific and seen in many lymphomas", "B. Pathognomonic of Hodgkin Lymphoma", "C. Indicative of NHL", "D. A sign of transformation"], "B", "Alcohol-induced pain at lymph node sites is PATHOGNOMONIC of Hodgkin lymphoma. The mechanism is unclear but it is a classic board/exam question. Combined with Pel-Ebstein cyclical fever, it points strongly to HL."), ("11. Ann Arbor Stage IIIB Hodgkin Lymphoma means:", ["A. 1 node region, with fever", "B. Both sides of diaphragm involved + B symptoms", "C. Bone marrow involvement only", "D. Extranodal disease only"], "B", "Stage III = lymph node involvement on BOTH sides of the diaphragm. Suffix B = presence of B symptoms (fever >38Β°C, night sweats, weight loss >10%). Stage IV = extranodal involvement."), ("12. The standard 1st-line chemotherapy for early-stage Hodgkin Lymphoma is:", ["A. R-CHOP", "B. ABVD", "C. FCR", "D. BFM protocol"], "B", "ABVD = Adriamycin (Doxorubicin) + Bleomycin + Vinblastine + Dacarbazine. It is the standard 1st-line regimen for both early and advanced HL. R-CHOP = DLBCL. FCR = CLL."), ("13. The most common type of Non-Hodgkin Lymphoma worldwide is:", ["A. Follicular lymphoma", "B. Burkitt lymphoma", "C. DLBCL", "D. Mantle cell lymphoma"], "C", "DLBCL (Diffuse Large B-Cell Lymphoma) = 30% of all NHLs = MOST COMMON NHL. It is aggressive but potentially curable with R-CHOP. Follicular = 2nd most common (20%)."), ("14. A 10-year-old African child presents with a rapidly growing jaw mass. Biopsy shows a 'starry sky' pattern with t(8;14). The diagnosis is:", ["A. Hodgkin Lymphoma", "B. DLBCL", "C. Burkitt Lymphoma", "D. Follicular Lymphoma"], "C", "Endemic Burkitt lymphoma β African child + jaw mass + EBV positive + t(8;14) + starry sky pattern = classic. Burkitt is the fastest growing cancer with ~24 hr doubling time."), ("15. Which translocation is associated with Follicular Lymphoma and leads to BCL-2 overexpression?", ["A. t(9;22)", "B. t(14;18)", "C. t(8;14)", "D. t(15;17)"], "B", "t(14;18) juxtaposes BCL-2 gene (chr 18) with IgH enhancer (chr 14) β BCL-2 overexpression β anti-apoptotic effect β cells accumulate in lymph nodes. This is the hallmark of follicular lymphoma."), ("16. Which leukemia has the BEST prognosis in childhood?", ["A. AML", "B. CML", "C. CLL", "D. ALL"], "D", "ALL in children has 95% remission rate and 80% disease-free survival at 5 years β the best of any childhood cancer. The BFM protocol (induction β consolidation β maintenance) achieves this remarkable result."), ("17. What is the LAP (Leukocyte Alkaline Phosphatase) score in CML?", ["A. High", "B. Normal", "C. Low", "D. Absent"], "C", "Low LAP score is a key feature of CML, distinguishing it from leukemoid reaction (high LAP). In leukemoid reaction, WBC is raised due to infection/inflammation but LAP is high. In CML, LAP is LOW."), ("18. Tumor lysis syndrome is a major risk in treatment of:", ["A. CLL", "B. Follicular lymphoma", "C. Burkitt lymphoma", "D. HL Stage I"], "C", "Burkitt lymphoma has the fastest proliferation rate. When killed by chemo, massive cell lysis releases K+, phosphate, uric acid β hyperkalemia, hyperphosphatemia, hypocalcemia, hyperuricemia β renal failure. Prevent with allopurinol/rasburicase + hydration."), ("19. A patient with CML in blast crisis. Blasts are TdT+ and CD10+. This means:", ["A. Lymphoid blast crisis β better response to ALL-type chemotherapy", "B. Myeloid blast crisis β treat with AML regimen", "C. It is in chronic phase", "D. No treatment needed"], "A", "CML blast crisis can be lymphoid (25-30%) or myeloid (70%). Lymphoid blast crisis shows TdT+, CD10+ (B-lymphoid markers) and responds better to ALL-type chemotherapy + imatinib. Myeloid = AML-type regimen."), ("20. The 'Pel-Ebstein fever' pattern (cyclical fever) is classically associated with:", ["A. Malaria", "B. Hodgkin Lymphoma", "C. CML accelerated phase", "D. Burkitt lymphoma"], "B", "Pel-Ebstein fever = cyclical pattern of fever (high for days-weeks, then afebrile for days-weeks) is classically described in Hodgkin lymphoma. It is one of the B symptoms and a classic exam question."), ("21. Which AML subtype is associated with Down syndrome?", ["A. M2", "B. M3", "C. M5", "D. M7"], "D", "M7 (Acute Megakaryoblastic Leukemia) has a strong association with Down syndrome (trisomy 21). Children with Down syndrome have 10-20Γ higher risk of AML, and M7 is the predominant subtype. Also M0 in transient leukemia of Down."), ("22. Nodular Lymphocyte Predominant Hodgkin Lymphoma (NLP-HL) differs from classical HL in that:", ["A. It has RS cells", "B. It is CD15+ CD30+", "C. LP cells are CD20+ and CD15-", "D. It responds poorly to treatment"], "C", "NLP-HL has 'popcorn cells' (LP cells) that are CD20+, CD45+, CD15-, CD30- β completely different from classical RS cells. This has treatment implications: anti-CD20 (Rituximab) can be used. Prognosis is excellent."), ("23. The FAB subtype of AML that presents with bleeding gums and DIC, and is treated with ATRA is:", ["A. M1", "B. M3", "C. M5", "D. M6"], "B", "M3 = APL = t(15;17) = bleeding from DIC + Auer rod 'faggot cells' = ATRA is specific treatment. This is THE most important AML subtype to know for exams. It is a medical emergency but has BEST prognosis with ATRA."), ("24. Which of the following is TRUE about Follicular Lymphoma?", ["A. It is curable with R-CHOP", "B. Asymptomatic early disease should be treated immediately", "C. BCL-2 is overexpressed due to t(14;18)", "D. It transforms to ALL"], "C", "t(14;18) β BCL-2 overexpression β anti-apoptosis β indolent course. FL is NOT curable with conventional chemo. Asymptomatic patients are watched (watch & wait). It transforms to DLBCL (Richter-like), NOT ALL."), ("25. A 65-year-old man develops fever, WBC 120,000, massive splenomegaly, and a peripheral smear showing the full myeloid spectrum from myeloblasts to mature granulocytes with basophilia. The NEXT BEST test is:", ["A. Bone marrow trephine for RS cells", "B. BCR-ABL PCR/FISH for Philadelphia chromosome", "C. TdT immunostaining", "D. CD5/CD19 flow cytometry"], "B", "This presentation = CML. The full myeloid spectrum + basophilia + massive spleen = CML until proven otherwise. BCR-ABL PCR or FISH for Philadelphia chromosome t(9;22) is the CONFIRMATORY test. Low LAP also supports CML."), ] for i, (q, opts, ans, exp) in enumerate(mcqs): story.append(Paragraph(q, mcq_q)) for opt in opts: story.append(Paragraph(opt, mcq_opt)) story.append(Paragraph(f"Answer: {ans}", mcq_ans)) story.append(Paragraph(f"Explanation: {exp}", body)) story.append(HRFlowable(width="100%", thickness=0.5, color=LIGHT_GRAY, spaceAfter=4)) if i == 12: # Page break mid-MCQs story.append(PageBreak()) story.append(section_bar("HIGH-YIELD MCQs (Continued)", DARK_BLUE)) story.append(Spacer(1, 0.3*cm)) story.append(PageBreak()) # ββ QUICK REVISION FLASHCARDS ββββββββββββββββββββββββββββββββββββ story.append(section_bar("QUICK REVISION FLASHCARDS β Last-Minute Review", GOLD)) story.append(Spacer(1, 0.3*cm)) cards = [ ("LEUKEMIA QUICK RECALL", DARK_BLUE, "ALL β Children | TdT+, CD10+ | BFM 3-phase chemo | 80% cure\n" "AML β Adults | Auer rods | 7+3 protocol | M3=ATRA+ATO\n" "CML β Ph chr t(9;22) | BCR-ABL | Imatinib | 3 phases\n" "CLL β Elderly | Smudge cells | CD5+CD19+ | Ibrutinib"), ("LYMPHOMA QUICK RECALL", ACCENT_RED, "HL β Young adult | RS cell (CD15+CD30+) | OWL EYE | ABVD\n" "NS = Most common HL | MC = Most EBV | LD = Worst prognosis\n" "DLBCL = Most common NHL | R-CHOP | Curable\n" "Follicular = t(14;18) BCL-2 | Indolent | Watch & Wait\n" "Burkitt = t(8;14) c-MYC | Starry sky | FASTEST cancer"), ("KEY CHROMOSOMES", TEAL, "t(9;22) β CML (Ph chromosome)\n" "t(15;17) β APL/M3 (ATRA target)\n" "t(8;21) β AML M2\n" "t(14;18) β Follicular lymphoma (BCL-2)\n" "t(8;14) β Burkitt lymphoma (c-MYC)\n" "t(11;14) β Mantle cell lymphoma (Cyclin D1)"), ("CLASSIC EXAM TRAPS", ACCENT_RED, "Low LAP β CML (not leukemoid reaction)\n" "Alcohol pain at node β Hodgkin lymphoma\n" "Pel-Ebstein fever β Hodgkin lymphoma\n" "DIC + blast crisis β APL M3 β give ATRA first!\n" "CD5+ B-cell β CLL (or Mantle cell lymphoma)\n" "Smudge cells β CLL | Auer rods β AML\n" "Starry sky β Burkitt | Lacunar cells β NS-HL"), ("TREATMENT QUICK RECALL", DARK_BLUE, "ALL β Vincristine + Prednisolone + L-Asp (induction)\n" "AML β 7+3 (Cytarabine 7 days + Anthracycline 3 days)\n" "APL β ATRA + Arsenic Trioxide (NO traditional chemo!)\n" "CML β Imatinib (1st gen TKI) β Dasatinib/Nilotinib (2nd gen)\n" "CLL β Watch & Wait (early) | Ibrutinib (advanced)\n" "HL β ABVD Β± Radiation\n" "DLBCL β R-CHOP Γ 6 cycles\n" "Burkitt β R-CODOX-M/IVAC"), ("B SYMPTOMS (for staging)", MED_BLUE, "B1: Fever >38Β°C (unexplained)\n" "B2: Night sweats (drenching)\n" "B3: Weight loss >10% in 6 months\n\n" "Presence of B symptoms β Stage XB (worse prognosis)\n" "Absence β Stage XA (better prognosis)"), ] # Lay cards in 2-column grid for i in range(0, len(cards), 2): row_data = [] for j in range(2): if i+j < len(cards): title, color, content = cards[i+j] card_content = ( f'<font color="{color.hexval() if hasattr(color,"hexval") else "#1A237E"}"><b>{title}</b></font><br/><br/>' + content.replace('\n','<br/>') ) cell = Paragraph(card_content, ParagraphStyle('card', fontSize=9, fontName='Helvetica', leading=14, textColor=DARK_GRAY)) else: cell = Paragraph("", body) row_data.append(cell) t = Table([row_data], colWidths=[8*cm, 8*cm]) t.setStyle(TableStyle([ ('BOX', (0,0), (0,0), 1.5, cards[i][1]), ('BOX', (1,0), (1,0), 1.5, cards[min(i+1,len(cards)-1)][1] if i+1<len(cards) else DARK_BLUE), ('BACKGROUND', (0,0), (-1,-1), LIGHT_GRAY), ('LEFTPADDING', (0,0), (-1,-1), 10), ('RIGHTPADDING', (0,0), (-1,-1), 10), ('TOPPADDING', (0,0), (-1,-1), 10), ('BOTTOMPADDING', (0,0), (-1,-1), 10), ('COLPADDING', (0,0), (-1,-1), 8), ])) story.append(t) story.append(Spacer(1, 0.3*cm)) # ββ BUILD PDF βββββββββββββββββββββββββββββββββββββββββββββββββββββ doc = SimpleDocTemplate( OUTPUT, pagesize=A4, topMargin=1.2*cm, bottomMargin=1.2*cm, leftMargin=1.5*cm, rightMargin=1.5*cm, title="Module 5 β Haematology: Leukemia & Lymphoma", author="6th Semester Medicine", ) doc.build(story, onFirstPage=on_page, onLaterPages=on_page) print(f"PDF built successfully: {OUTPUT}") PYEOF echo "Script written"
cd /tmp/workspace/haematology-module5 && python build_pdf.py 2>&1
~/haematology-module5/build_pdf.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/haematology-module5/build_pdf.py'
cd /tmp/workspace/haematology-module5 && python build_pdf.py 2>&1
ls -lh /tmp/workspace/haematology-module5/Module5_Haematology.pdf
Module5 Haematology
PDF Document Β· PDF
| Section | Content |
|---|---|
| π Cover Page | Module overview, learning objectives, sources |
| π¬ Diagnostic Flowchart | Step-by-step visual from "high WBC" to ALL/AML/CML/CLL |
| π Master Comparison Table | All 4 leukemias side-by-side |
| π΄ ALL | PALE BLAST mnemonic, investigations table, 3-phase treatment |
| π΄ AML | Auer rods, FAB M0-M7 classification, M3/APL emergency box |
| π‘ CML | Philadelphia chromosome step-by-step, CML 3-phases diagram, Imatinib story |
| π’ CLL | Smudge cells, Rai staging, Richter transformation |
| πΌ RS Cell Image | Real Robbins histology β owl-eye Reed-Sternberg cell |
| πΌ Burkitt Starry Sky Image | Real histology from Robbins Cotran |
| πΌ HL Lacunar Cell Image | Nodular Sclerosis lacunar cells |
| πΌ HL Collagen Bands Image | Nodular Sclerosis low-power view |
| π Master Summary Table | All 8 diseases in one comparison |
| β 25 MCQs | Theory + clinical vignettes, full explained answers |
| π Quick Revision Flashcards | 6 color-coded cards for last-minute review |