AML, ALL, Sickle cell anemia , thalasemia, CML, Microcytic hypochromic anemia and CML- Show me the histopath slides for all these conditions and in brief about each condition and suggest easy diagrams to draw in practical exam along with expected viva questions

Reading File
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Finding Sources
Reading File
Reading File
Finding Sources
Reading File
Loading Image
Loading Image
Loading Image
Loading Image
Reading File
Finding Sources
Reading File
Reading File
Loading Image
Loading Image
Reading File
Reading File
Reading File
Finding Sources
Reading File
Loading Image
Here is a comprehensive guide to all the conditions you asked about, with histopathology slides, clinical summaries, easy exam diagrams, and expected viva questions.

Hematology Practical Guide: 7 Blood Disorders


1. Acute Myeloid Leukemia (AML)

Histopathology Slide

Fig. 10.14 (Robbins Pathology) - Morphology of Acute Leukemias
AML and ALL morphology - blasts in bone marrow smear
(A) ALL - lymphoblasts with scant cytoplasm, condensed chromatin, inconspicuous nucleoli. (B) AML - myeloblasts with more cytoplasm and distinct nucleoli. (C) AML with Auer rods (arrow) - the pathognomonic finding for AML.

Brief Overview

  • What it is: Clonal neoplastic proliferation of myeloid blasts (≥20% blasts in marrow)
  • Age: Peak in adults >60 years; can arise at any age
  • Pathogenesis: Mutations blocking myeloid differentiation (PML-RARA in acute promyelocytic leukemia; BCR-ABL, IDH1/IDH2 in other subtypes) + proliferation-promoting mutations in RAS, tyrosine kinases
  • Key finding: Auer rods (fused azurophilic granules in blast cytoplasm) - pathognomonic for AML
  • Peripheral smear: Blasts with large nuclei, prominent nucleoli, moderate cytoplasm; WBC often >100,000/µL
  • Bone marrow: Hypercellular, packed with myeloblasts replacing normal elements
  • Clinical: Fever, fatigue, easy bleeding (from DIC in APL subtype), pancytopenia symptoms
  • Flow cytometry markers: CD34, CD33, CD13, MPO (myeloperoxidase), CD117
  • Treatment: Cytarabine-based chemotherapy; ATRA + arsenic trioxide for APL subtype (>90% cure!)

Easy Exam Diagram to Draw

AML PERIPHERAL SMEAR (draw these cells):
- Large blast cell: big round nucleus, 3-5 nucleoli, moderate gray cytoplasm
- AUER ROD: needle-shaped pink inclusion inside the blast cytoplasm ← label this!
- Scattered normal-looking RBCs around the blasts
- Reduced platelets
Mnemonic: AML = Auer rod, Myeloperoxidase positive, Large blasts

Viva Questions

  1. What are Auer rods and in which condition are they pathognomonic?
  2. What is the minimum blast percentage needed to diagnose AML?
  3. What is the translocation in acute promyelocytic leukemia and its treatment?
  4. Name the FAB classification subtypes of AML (M0-M7).
  5. How do you differentiate AML from ALL on peripheral smear?
  6. What is the role of ATRA in APL?
  7. Name myeloid markers used in flow cytometry.
  8. What is the most common AML subtype in adults vs. children?

2. Acute Lymphoblastic Leukemia (ALL)

Histopathology Slide

(See image above - Panel A: ALL lymphoblasts with scant cytoplasm, condensed chromatin)
Flow Cytometry in ALL vs AML:
Flow cytometry ALL vs AML - TdT, CD19, CD22, CD10, CD34, CD33, CD15, CD64
(A, B) B-ALL: tumor cells positive for TdT, CD22, CD19, CD10. (C, D) AML: positive for CD34, CD33, CD15; negative for CD64.

Brief Overview

  • What it is: Clonal proliferation of immature B- or T-lymphocyte precursors (lymphoblasts)
  • Age: Most common cancer in children 2-10 years (B-ALL); T-ALL peaks in adolescence
  • Pathogenesis: Mutations in transcription factors (PAX5 in B-ALL); t(12;21) ETV6-RUNX1 most common in childhood; t(9;22) Philadelphia chromosome in 25% of adult B-ALL (poor prognosis)
  • Key feature: TdT (terminal deoxynucleotidyl transferase) positive - hallmark of ALL
  • Peripheral smear: Lymphoblasts with scant cytoplasm, condensed chromatin, inconspicuous nucleoli; NO Auer rods
  • Bone marrow: Hypercellular with sheets of lymphoblasts
  • Clinical: Pancytopenia, lymphadenopathy, hepatosplenomegaly (more prominent than AML); T-ALL = mediastinal mass (thymic); CNS involvement
  • Prognosis: >80% cure rate in children; worse in adults and with Ph+ ALL
  • Treatment: Combination chemotherapy; tyrosine kinase inhibitors for Ph+ ALL; CAR-T cell therapy for relapsed B-ALL

Easy Exam Diagram to Draw

ALL PERIPHERAL SMEAR:
- Small-medium blasts: scant cytoplasm (thin rim), condensed chromatin
- NO Auer rods (important difference from AML!)
- Nucleoli: inconspicuous or absent
- Normal-looking RBCs in background (reduced)
Mnemonic: ALL = Affects children, Lymphoblasts, Lack Auer rods

Viva Questions

  1. What is TdT and why is it important in ALL diagnosis?
  2. What is the Philadelphia chromosome and which leukemia types does it appear in?
  3. How do ALL blasts differ from AML blasts morphologically?
  4. What is the significance of the t(12;21) ETV6-RUNX1 translocation?
  5. Why does T-ALL cause mediastinal masses?
  6. What are prognostic factors in childhood ALL?
  7. What are CAR-T cells and in which ALL subtypes are they used?
  8. How do you differentiate B-ALL from T-ALL?

3. Chronic Myeloid Leukemia (CML)

Histopathology Slide

CML peripheral blood smear - granulocytes at various stages of differentiation
Fig. 10.16 (Robbins) - CML peripheral blood smear. Granulocytic forms at various stages of differentiation are present, with immature forms (metamyelocytes, myelocytes, bands, neutrophils), basophilia, and eosinophilia.

Brief Overview

  • What it is: Myeloproliferative neoplasm arising from a transformed hematopoietic stem cell; NOT an acute leukemia
  • Age: Adults 25-60 years; peak 4th-5th decade
  • Pathogenesis: t(9;22) - Philadelphia chromosome → BCR-ABL fusion gene → constitutively active tyrosine kinase → uncontrolled granulocyte proliferation (differentiation preserved, unlike AML)
  • Peripheral smear: WBC often >100,000/µL with the full spectrum of granulocytes (myelocytes, metamyelocytes, bands, neutrophils) + basophilia + eosinophilia + thrombocytosis
  • Bone marrow: Hypercellular, granulocytic and megakaryocytic hyperplasia
  • Spleen: Massive splenomegaly (extramedullary hematopoiesis)
  • LAP score: Low (distinguishes from leukemoid reaction where LAP is high)
  • Phases: Chronic → Accelerated → Blast crisis (transforms to AML/ALL)
  • Treatment: Imatinib (tyrosine kinase inhibitor) - revolutionized CML treatment

Easy Exam Diagram to Draw

CML PERIPHERAL SMEAR:
Draw the "left shift spectrum" in one smear:
- Myeloblast (far left) → Promyelocyte → Myelocyte → Metamyelocyte → Band → Neutrophil
- Increase in basophils (dark granular cells)
- Increase in eosinophils
- Platelets may be increased
Label: "ALL stages visible" = hallmark
Mnemonic: CML = Chromosome 22 (Philadelphia), Massive spleen, Left shift (all stages)

Viva Questions

  1. What is the Philadelphia chromosome and how does it form?
  2. What is BCR-ABL and why does it cause CML?
  3. How does CML differ from a leukemoid reaction? (LAP score!)
  4. What are the three phases of CML?
  5. What is blast crisis and when does it occur?
  6. Name the tyrosine kinase inhibitors used in CML.
  7. Why is basophilia a key feature of CML?
  8. What is the LAP (leukocyte alkaline phosphatase) score in CML vs. leukemoid reaction?

4. Sickle Cell Anemia

Histopathology Slide

Sickle cell peripheral blood smear - sickle/crescent shaped red cells
Fig. 10.3 (Robbins) - Sickle cell anemia peripheral blood smear. (A) Low-power view showing sickled RBCs, anisocytosis, and target cells. (B) High-power view of elongated crescent/sickle-shaped irreversibly sickled cells.

Pathophysiology Diagram (for study)

Sickle cell disease pathophysiology - point mutation, HbS polymerization, microvascular occlusion, hemolysis
Fig. 10.4 (Robbins) - Complete pathophysiology of sickle cell disease from point mutation to clinical consequences.

Brief Overview

  • What it is: Autosomal recessive hemoglobinopathy; most common familial hemolytic anemia
  • Mutation: Single point mutation in β-globin gene: glutamate → valine at position 6 (GAG → GTG)
  • Pathogenesis: Deoxygenated HbS polymerizes → distorts RBCs into sickle shape → membrane damage → irreversible sickling → hemolysis (RBC life span = 20 days, normal = 120 days) AND microvascular occlusion
  • Peripheral smear: Elongated sickle/crescent-shaped RBCs, target cells, anisocytosis, reticulocytosis, Howell-Jolly bodies (after autosplenectomy)
  • Clinical: Hemolytic anemia, painful vaso-occlusive crises, autosplenectomy (spleen fibroses in adults), strokes, avascular necrosis, priapism, susceptibility to encapsulated bacteria (Streptococcus pneumoniae)
  • Lab: Hb electrophoresis shows HbS (replaced HbA); HbF levels variable
  • Treatment: Hydroxyurea (increases HbF), bone marrow transplant, gene therapy (emerging)

Easy Exam Diagram to Draw

SICKLE CELL SMEAR:
- Draw several normal round RBCs
- Draw 3-4 crescent/sickle shaped elongated cells ← label "sickle cell"
- Draw 1-2 target cells (bull's eye pattern) ← label "target cell"
- Label: "Irreversibly sickled cell" for the most distorted one
Mnemonic: SCA = Sickle + Crisis + Autosplenectomy

Viva Questions

  1. What is the genetic mutation in sickle cell anemia?
  2. Why do red cells sickle only on deoxygenation?
  3. What is autosplenectomy and why does it occur?
  4. Why are sickle cell patients prone to infections with encapsulated bacteria?
  5. What is a vaso-occlusive crisis and what triggers it?
  6. How does hydroxyurea help in sickle cell disease?
  7. How does HbF protect against sickling?
  8. What is the difference between sickle cell trait and sickle cell disease?

5. Thalassemia

Pathophysiology Diagram

Beta-thalassemia major pathophysiology - ineffective erythropoiesis, iron overload, skeletal deformities
Fig. 10.5 (Robbins) - Pathophysiology of β-thalassemia major. Reduced β-globin → excess α-globin aggregates → ineffective erythropoiesis → anemia → marrow expansion, skeletal deformities, iron overload, and secondary hemochromatosis.

Brief Overview

  • What it is: Group of inherited disorders with decreased α- or β-globin synthesis; leads to imbalanced globin chain production
  • Types:
    • β-thalassemia major (homozygous): severe anemia, needs transfusions, iron overload
    • β-thalassemia minor (heterozygous): asymptomatic to mild anemia
    • α-thalassemia (gene deletions): severity proportional to number of deleted α-globin genes (1 gene = silent; 4 genes = hydrops fetalis, lethal)
  • Pathogenesis: Reduced β-globin → excess unpaired α-globin chains precipitate → membrane damage → ineffective erythropoiesis + hemolysis
  • Peripheral smear: Microcytic, hypochromic RBCs, target cells, anisocytosis, poikilocytosis, nucleated RBCs (normoblasts), basophilic stippling in major
  • Bone marrow: Erythroid hyperplasia, with shift to early forms
  • Clinical (β-thalassemia major): Growth retardation, "crew-cut" skull on X-ray (marrow expansion), frontal bossing (chipmunk facies), hepatosplenomegaly, iron overload (hemosiderosis)
  • Lab: Hb electrophoresis - reduced/absent HbA, increased HbF, increased HbA2
  • Treatment: Blood transfusions + iron chelation (deferoxamine); bone marrow transplant for cure

Easy Exam Diagram to Draw

THALASSEMIA PERIPHERAL SMEAR:
- Small, pale RBCs (microcytic, hypochromic)
- Target cells (bull's eye pattern) ← very important
- Nucleated RBCs (normoblasts) - oval cells with nucleus visible
- Anisocytosis (cells vary in size)
- Basophilic stippling (blue dots inside RBC)
Label each finding separately!
Mnemonic: THAL = Target cells, Hypochromic, Anemia (severe), Low HbA

Viva Questions

  1. What is the genetic basis of α- vs β-thalassemia?
  2. Why do unpaired α-globin chains cause damage in β-thalassemia?
  3. What is ineffective erythropoiesis?
  4. Why is iron overload a problem in β-thalassemia major even without transfusions?
  5. What is the role of hepcidin in iron regulation?
  6. How do you distinguish thalassemia minor from iron deficiency anemia on lab tests?
  7. What is "crew-cut" appearance on skull X-ray?
  8. What is HbH disease?
  9. Why is hydrops fetalis fatal? Which form of thalassemia causes it?

6. Microcytic Hypochromic Anemia (Iron Deficiency Anemia)

Histopathology Slide

Iron deficiency anemia peripheral blood smear - hypochromic microcytic red cells with thin rim of hemoglobin
Fig. 14.22 (Robbins & Kumar Pathologic Basis of Disease) - Iron deficiency anemia peripheral blood smear. Note the hypochromic microcytic red cells containing only a narrow rim of peripheral hemoglobin ("pencil cells"), with scattered fully hemoglobinized cells (from recent transfusion).

Brief Overview

  • What it is: The most common type of anemia worldwide; due to iron deficiency impairing Hb synthesis
  • Causes: Chronic blood loss (most common, e.g., GI bleed, menorrhagia), poor dietary intake, malabsorption, increased demand (pregnancy, infancy)
  • Peripheral smear: Small (microcytic), pale (hypochromic) RBCs; central pallor >1/3 diameter; pencil cells (elongated hypochromic cells); anisocytosis and poikilocytosis in severe cases
  • Lab: Low serum iron, low ferritin, high TIBC (transferrin), high RDW (red cell distribution width), low transferrin saturation (<15%), low hepcidin
  • Clinical: Pallor, fatigue, koilonychia (spoon-shaped nails), glossitis, angular cheilitis, pica; Plummer-Vinson syndrome (IDA + esophageal webs + glossitis) in severe cases
  • RBC indices: Low MCV, low MCH, low MCHC
  • Treatment: Oral iron supplementation (ferrous sulfate); treat underlying cause; reticulocytosis expected at day 5-7 of treatment

Easy Exam Diagram to Draw

IDA PERIPHERAL SMEAR:
- Draw RBCs that are SMALLER than normal lymphocyte
- Central pallor = MORE than 1/3 of the cell diameter (exaggerated pale center)
- Draw 1-2 "pencil cells" (elongated, thin pale cells)
- Label: Microcytic + Hypochromic + Anisocytosis (varying sizes)
Reference: Normal RBC = about the size of a small lymphocyte nucleus
Mnemonic: IDA = Increased TIBC, Decreased ferritin, Anemia microcytic

Viva Questions

  1. What is the most common cause of microcytic hypochromic anemia worldwide?
  2. How do you differentiate IDA from thalassemia on lab tests?
  3. What is the Mentzer index and how is it used?
  4. What are the stages of iron deficiency?
  5. What is koilonychia and in which conditions does it occur?
  6. What is Plummer-Vinson syndrome?
  7. What lab test most accurately reflects iron stores?
  8. Why is TIBC elevated in iron deficiency but not in thalassemia?
  9. What is the role of hepcidin in iron metabolism?
  10. What RBC changes are seen on a blood smear in IDA?

7. CML (Chronic Myeloid Leukemia) - Note: this is listed twice in your question

CML has been fully covered above under item 3. If you meant CLL (Chronic Lymphocytic Leukemia), please let me know and I will add that condition.

Quick Comparison Table for Exam

FeatureAMLALLCMLSickle CellThalassemiaIDA
Cell typeMyeloblastsLymphoblastsMature granulocytes (all stages)Sickled RBCsHypochromic RBCsHypochromic RBCs
Auer rodsYes (pathognomonic)NoNoNoNoNo
Key markerMPO, CD33, CD13TdT, CD10, CD19 (B)BCR-ABL / Ph chrHbS on electrophoresisReduced HbA, high HbFLow ferritin, high TIBC
SpleenMild ↑Moderate ↑Massive ↑AutosplenectomyModerate ↑Normal
AgeAdults >60Children 2-10Adults 25-60Childhood onsetChildhood onsetAny
Key geneticPML-RARA, IDH1/2t(12;21), t(9;22)t(9;22) BCR-ABLβ-globin Glu→Valβ/α globin gene mutations-
TreatmentChemo; ATRA for APLChemo; TKI for Ph+ImatinibHydroxyurea, BMTTransfusion + chelationOral iron

Master Viva Tips

  • Whenever you see Auer rods → say AML immediately
  • TdT positive → always ALL
  • Philadelphia chromosome (t9;22) appears in BOTH CML and adult B-ALL (different BCR-ABL breakpoints)
  • Low LAP score = CML (vs. leukemoid reaction = high LAP)
  • Target cells are seen in both thalassemia AND sickle cell anemia
  • IDA vs. Thalassemia minor: Mentzer index = MCV/RBC count; <13 = thalassemia, >13 = IDA; ferritin is low in IDA, normal/high in thalassemia
  • Crew-cut skull X-ray = β-thalassemia major
  • Chipmunk facies = thalassemia major (due to marrow expansion causing frontal bossing and maxillary hypertrophy)

Sources: Robbins & Kumar Basic Pathology (9780323790185); Robbins, Cotran & Kumar Pathologic Basis of Disease (9780443264528); Henry's Clinical Diagnosis and Management by Laboratory Methods (9780323673204); Tietz Textbook of Laboratory Medicine 7th Ed (9780323775724)

Show me the comparision table

Here is the full comparison table, expanded for exam use:

Comprehensive Comparison Table: Blood Disorders

FeatureAMLALLCMLSickle Cell AnemiaThalassemia (β-major)Microcytic Hypochromic Anemia (IDA)
TypeAcute myeloid leukemiaAcute lymphoid leukemiaChronic myeloproliferativeHemoglobinopathyHemoglobinopathyNutritional/blood loss anemia
Cell of originMyeloid stem cellLymphoid precursor (B or T)Pluripotent hematopoietic stem cellRBC (structural Hb defect)RBC (globin synthesis defect)RBC (iron deficiency)
Age groupAdults >60 yrs (most common AL in adults)Children 2-10 yrs (most common childhood cancer)Adults 25-60 yrs; peak 4th-5th decadeInfancy onwards (after HbF falls at ~6 months)Infancy/childhoodAny age; common in women of reproductive age
GeneticsPML-RARA t(15;17) in APL; IDH1/IDH2; RUNX1t(12;21) ETV6-RUNX1 (childhood); t(9;22) BCR-ABL (adult)t(9;22) Philadelphia chromosome → BCR-ABLPoint mutation β-globin: Glu→Val at position 6β-globin point mutations (β-thal); α-globin deletions (α-thal)No genetic mutation (usually acquired)
Peripheral smear - Key findingMyeloblasts + Auer rods (pathognomonic)Lymphoblasts (scant cytoplasm, condensed chromatin)All granulocyte stages (left shift), basophilia, eosinophiliaSickle/crescent cells, target cells, Howell-Jolly bodiesMicrocytic hypochromic cells, target cells, nucleated RBCs, basophilic stipplingMicrocytic hypochromic RBCs, pencil cells, central pallor >1/3
Blast %≥20% blasts in marrow (diagnostic threshold)≥20% lymphoblasts in marrow<10% blasts (chronic phase); ≥20% = blast crisisNot applicableNot applicableNot applicable
Auer rodsYES - pathognomonicNONONONONO
TdTNegativePositive (hallmark of ALL)NegativeNegativeNegativeNegative
Key immunomarkersMPO+, CD33, CD13, CD117, CD34B-ALL: TdT, CD10, CD19, CD22; T-ALL: TdT, CD3, CD7BCR-ABL protein; CD34 (stem cell)HbS on electrophoresisHb electrophoresis (↓HbA, ↑HbF, ↑HbA2)Serum ferritin ↓, TIBC ↑
WBC countVariable; may be high or normalVariable; often markedly elevatedMarkedly elevated >100,000/µLNormal or slightly elevatedNormal or slightly elevatedNormal
RBC morphologyNormocytic (RBCs replaced by blasts)Normocytic (RBCs reduced)NormocyticSickle cells, target cells, anisocytosisMicrocytic, hypochromic, target cells, anisocytosis, poikilocytosisMicrocytic, hypochromic, pencil cells
MCVNormalNormalNormalNormal/lowLowLow
ReticulocytesLow (marrow failure)Low (marrow failure)Normal or elevatedElevated (hemolytic response)Elevated (compensation)Low (underproduction)
Serum ironNormalNormalNormalNormal/highNormal/highLow
Serum ferritinNormalNormalNormalNormal/highNormal/high (iron overload)Low (best indicator of iron stores)
TIBCNormalNormalNormalNormalNormalHigh
Hb electrophoresisNormalNormalNormalHbS replaces HbA↓/absent HbA; ↑HbF; ↑HbA2Normal
LAP scoreN/AN/ALow (key: distinguishes from leukemoid reaction where LAP is HIGH)N/AN/AN/A
Bone marrowHypercellular; packed myeloblasts replacing normal elementsHypercellular; sheets of lymphoblastsHypercellular; granulocytic + megakaryocytic hyperplasiaErythroid hyperplasiaErythroid hyperplasia; ineffective erythropoiesisErythroid hyperplasia; absent iron stores
SplenomegalyMildModerate (more pronounced than AML)Massive (extramedullary hematopoiesis)Children: moderate; Adults: autosplenectomy (fibrosed)Moderate to massiveAbsent
LymphadenopathyMildProminentMildAbsentAbsentAbsent
CNS involvementRareYes (CNS prophylaxis required)RareStroke (vascular occlusion)AbsentAbsent
Mediastinal massNoT-ALL: Yes (thymic involvement, 50-70%)NoNoNoNo
Infection susceptibilityNeutropenia → gram-negative bacteriaNeutropenia → opportunistic infectionsLess in chronic phaseEncapsulated bacteria (S. pneumoniae, H. influenzae) due to autosplenectomyYes (due to anemia-related immune compromise)Mild
Bleeding riskYes (thrombocytopenia; DIC in APL)Yes (thrombocytopenia)Less commonYes (vaso-occlusion; priapism)Less commonNo
Key clinical signGum infiltration (monocytic AML), DICBone pain, testicular enlargementMassive spleen, dragging sensation in abdomenPainful crises, dactylitis, jaundiceCrew-cut skull, chipmunk facies, growth retardationKoilonychia, glossitis, pica, angular cheilitis
Diagnosis confirmed byBone marrow biopsy; cytogenetics; flow cytometryBone marrow biopsy; flow cytometry; cytogeneticsBCR-ABL by PCR/FISH/karyotypeHb electrophoresis; sickling testHb electrophoresis; DNA analysisSerum ferritin + iron + TIBC; bone marrow iron stain
Natural historyWeeks to months if untreated; aggressiveWeeks to months if untreated; aggressiveSlow progression → accelerated → blast crisisEpisodic crises; chronic hemolysisProgressive; transfusion-dependentResponds to treatment; iron repletion
TreatmentCytarabine + anthracycline; ATRA + arsenic (APL)Combination chemotherapy; TKI for Ph+ ALL; CAR-T for relapsedImatinib (TKI); 2nd gen: dasatinib, nilotinibHydroxyurea (↑HbF), transfusion, BMT, gene therapyBlood transfusion + iron chelation (deferoxamine); BMTOral ferrous sulfate; treat underlying cause
PrognosisVariable; APL >90% cure; others 40-60%Children >80% cure; adults poorerExcellent with imatinib (median survival >10 yrs)Variable; chronic morbidityβ-major: shortened lifespan without BMTExcellent with treatment
Mentzer Index (MCV/RBC)N/AN/AN/AN/A<13 (thalassemia)>13 (IDA)

Key Differentiating Points to Memorize

ScenarioAnswer
Auer rods seen on smearAML
TdT positive blastALL
t(9;22) in adult leukemiaCML or adult B-ALL
Low LAP scoreCML (not leukemoid reaction)
Blast crisis with no prior historyThink CML transforming
Microcytic anemia + low ferritinIDA
Microcytic anemia + normal/high ferritin + target cellsThalassemia
Mentzer index <13Thalassemia
Mentzer index >13IDA
Crescent-shaped RBCs + vaso-occlusive painSickle cell disease
Crew-cut skull X-ray + chipmunk faciesβ-thalassemia major
Howell-Jolly bodies in adultSickle cell (autosplenectomy)
Massive splenomegaly + WBC >100,000CML
Mediastinal mass + leukemia in a teenagerT-ALL

Generate a high-yield PDF cheat sheet of these comparisons for exam prep

Reading File
Running Command

mkdir -p /home/daytona/workspace/hematology-cheatsheet && ls /home/daytona/workspace/

Writing File

~/hematology-cheatsheet/generate_cheatsheet.py

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

OUTPUT = "/home/daytona/workspace/hematology-cheatsheet/Hematology_CheatSheet.pdf"

# ── Colour palette ──────────────────────────────────────────────────────────
C_TITLE_BG   = colors.HexColor("#1a237e")   # deep indigo
C_TITLE_FG   = colors.white
C_HEAD_BG    = colors.HexColor("#283593")   # indigo
C_HEAD_FG    = colors.white
C_ROW_ALT    = colors.HexColor("#e8eaf6")   # very light indigo
C_ROW_EVEN   = colors.white
C_ACCENT_RED = colors.HexColor("#c62828")
C_ACCENT_GRN = colors.HexColor("#1b5e20")
C_ACCENT_ORG = colors.HexColor("#e65100")
C_GOLD       = colors.HexColor("#f9a825")
C_GOLD_BG    = colors.HexColor("#fff8e1")
C_BORDER     = colors.HexColor("#5c6bc0")
C_PINK_BG    = colors.HexColor("#fce4ec")
C_GREEN_BG   = colors.HexColor("#e8f5e9")
C_BLUE_BG    = colors.HexColor("#e3f2fd")
C_ORANGE_BG  = colors.HexColor("#fff3e0")
C_PURPLE_BG  = colors.HexColor("#f3e5f5")
C_TEAL_BG    = colors.HexColor("#e0f7fa")

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

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

sTitle = S("sTitle", fontSize=22, textColor=C_TITLE_FG, alignment=TA_CENTER,
           fontName="Helvetica-Bold", spaceAfter=4)
sSubtitle = S("sSubtitle", fontSize=11, textColor=colors.HexColor("#c5cae9"),
              alignment=TA_CENTER, fontName="Helvetica", spaceAfter=2)
sSection = S("sSection", fontSize=13, textColor=C_TITLE_BG,
             fontName="Helvetica-Bold", spaceBefore=10, spaceAfter=4)
sBody = S("sBody", fontSize=7.5, fontName="Helvetica", leading=10)
sBold = S("sBold", fontSize=7.5, fontName="Helvetica-Bold", leading=10)
sSmall = S("sSmall", fontSize=6.8, fontName="Helvetica", leading=9)
sSmallBold = S("sSmallBold", fontSize=6.8, fontName="Helvetica-Bold", leading=9)
sCell = S("sCell", fontSize=7, fontName="Helvetica", leading=9, alignment=TA_LEFT)
sCellB = S("sCellB", fontSize=7, fontName="Helvetica-Bold", leading=9, textColor=C_ACCENT_RED)
sCellH = S("sCellH", fontSize=7.5, fontName="Helvetica-Bold", leading=10,
           textColor=C_TITLE_FG, alignment=TA_CENTER)
sFooter = S("sFooter", fontSize=7, fontName="Helvetica-Oblique",
            textColor=colors.grey, alignment=TA_CENTER)
sMnem = S("sMnem", fontSize=8, fontName="Helvetica-Bold",
          textColor=C_ACCENT_ORG, leading=11)
sViva = S("sViva", fontSize=7.5, fontName="Helvetica", leading=10,
          textColor=colors.HexColor("#212121"))
sTip  = S("sTip",  fontSize=8,   fontName="Helvetica-Bold",
          textColor=C_ACCENT_GRN, leading=11)

def p(text, style=sBody):
    return Paragraph(text, style)

def bold(text):
    return f'<b>{text}</b>'

def red(text):
    return f'<font color="#c62828"><b>{text}</b></font>'

def grn(text):
    return f'<font color="#1b5e20"><b>{text}</b></font>'

def org(text):
    return f'<font color="#e65100"><b>{text}</b></font>'

# ── Table helper ──────────────────────────────────────────────────────────────
def make_table(data, col_widths, row_colors=None, font_size=7):
    """data is list of lists of Paragraphs/strings."""
    t = Table(data, colWidths=col_widths, repeatRows=1)
    style_cmds = [
        ("BACKGROUND", (0, 0), (-1, 0), C_HEAD_BG),
        ("TEXTCOLOR",  (0, 0), (-1, 0), C_HEAD_FG),
        ("FONTNAME",   (0, 0), (-1, 0), "Helvetica-Bold"),
        ("FONTSIZE",   (0, 0), (-1, 0), font_size),
        ("ALIGN",      (0, 0), (-1, 0), "CENTER"),
        ("VALIGN",     (0, 0), (-1,-1), "TOP"),
        ("FONTSIZE",   (0, 1), (-1,-1), font_size - 0.5),
        ("FONTNAME",   (0, 1), (-1,-1), "Helvetica"),
        ("ROWBACKGROUNDS", (0,1), (-1,-1), [C_ROW_EVEN, C_ROW_ALT]),
        ("GRID",       (0, 0), (-1,-1), 0.4, C_BORDER),
        ("LEFTPADDING",  (0,0), (-1,-1), 3),
        ("RIGHTPADDING", (0,0), (-1,-1), 3),
        ("TOPPADDING",   (0,0), (-1,-1), 2),
        ("BOTTOMPADDING",(0,0), (-1,-1), 2),
        # Highlight first column
        ("FONTNAME",   (0, 1), (0,-1), "Helvetica-Bold"),
        ("BACKGROUND", (0, 1), (0,-1), colors.HexColor("#e8eaf6")),
    ]
    if row_colors:
        for row_idx, col_idx, color in row_colors:
            style_cmds.append(("BACKGROUND", (col_idx, row_idx), (col_idx, row_idx), color))
    t.setStyle(TableStyle(style_cmds))
    return t

# ═══════════════════════════════════════════════════════════════════════════════
# BUILD DOCUMENT
# ═══════════════════════════════════════════════════════════════════════════════
doc = SimpleDocTemplate(
    OUTPUT,
    pagesize=landscape(A4),
    leftMargin=1.0*cm, rightMargin=1.0*cm,
    topMargin=1.2*cm,  bottomMargin=1.2*cm,
    title="Hematology High-Yield Cheat Sheet",
    author="Orris Medical Education"
)

story = []
W = landscape(A4)[0] - 2.0*cm   # usable width ≈ 275 mm

# ──────────────────────────────────────────────────────────────────────────────
# PAGE 1  ▸  TITLE + MASTER COMPARISON TABLE
# ──────────────────────────────────────────────────────────────────────────────

# Title banner
banner_data = [[p("🩸 HEMATOLOGY HIGH-YIELD CHEAT SHEET", sTitle)]]
banner = Table(banner_data, colWidths=[W])
banner.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,-1), C_TITLE_BG),
    ("TOPPADDING",    (0,0), (-1,-1), 8),
    ("BOTTOMPADDING", (0,0), (-1,-1), 4),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ("ROUNDEDCORNERS", [6]),
]))
story.append(banner)

sub_data = [[p("AML  •  ALL  •  CML  •  Sickle Cell  •  Thalassemia  •  Iron Deficiency Anemia  |  Practical Exam Edition", sSubtitle)]]
sub = Table(sub_data, colWidths=[W])
sub.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,-1), colors.HexColor("#283593")),
    ("TOPPADDING",    (0,0), (-1,-1), 3),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
]))
story.append(sub)
story.append(Spacer(1, 5))

story.append(p("MASTER COMPARISON TABLE", sSection))

# Column widths (total = W)
cw = [3.6*cm, 3.7*cm, 3.7*cm, 3.7*cm, 3.9*cm, 3.9*cm, 3.9*cm]

headers = [
    p("Feature", sCellH),
    p("AML", sCellH),
    p("ALL", sCellH),
    p("CML", sCellH),
    p("Sickle Cell Anemia", sCellH),
    p("Thalassemia (β-major)", sCellH),
    p("IDA (Microcytic)", sCellH),
]

rows = [
    ["Age / Incidence",
     "Adults >60 yrs\nMost common AL in adults",
     "Children 2-10 yrs\nMost common childhood cancer",
     "Adults 25-60 yrs\nPeak 4th-5th decade",
     "Infancy onwards\n(after HbF falls ~6 mo)",
     "Infancy / childhood\nMediterranean, African, Asian",
     "Any age\nCommon in women of reproductive age"],
    ["Genetics / Mutation",
     "PML-RARA t(15;17) in APL\nIDH1/IDH2; FLT3; RUNX1",
     "t(12;21) ETV6-RUNX1 (childhood)\nt(9;22) BCR-ABL (adult 25%)",
     "t(9;22) Philadelphia chr\nBCR-ABL fusion gene",
     "β-globin point mutation\nGlu→Val at position 6 (GAG→GTG)",
     "β-thal: β-globin point mutations\nα-thal: α-globin gene deletions",
     "No mutation (acquired)\nUsually iron loss / poor intake"],
    ["KEY Peripheral Smear Finding",
     "MYELOBLASTS\n+ AUER RODS (pathognomonic)",
     "LYMPHOBLASTS\n(scant cytoplasm, TdT+, no Auer rods)",
     "ALL granulocyte stages\n(left shift) + BASOPHILIA",
     "SICKLE/CRESCENT cells\nTarget cells, Howell-Jolly bodies",
     "Microcytic hypochromic\nTARGET CELLS, nucleated RBCs",
     "Microcytic hypochromic\nPENCIL CELLS, central pallor >1/3"],
    ["Blast %",
     "≥20% blasts (diagnostic)",
     "≥20% lymphoblasts",
     "<10% chronic; ≥20% = blast crisis",
     "N/A",
     "N/A",
     "N/A"],
    ["Auer Rods",
     "YES — PATHOGNOMONIC",
     "NO",
     "NO",
     "NO",
     "NO",
     "NO"],
    ["TdT",
     "Negative",
     "POSITIVE (hallmark)",
     "Negative",
     "Negative",
     "Negative",
     "Negative"],
    ["Key Markers / Lab",
     "MPO+, CD33, CD13, CD117, CD34",
     "B-ALL: TdT, CD10, CD19, CD22\nT-ALL: TdT, CD3, CD7",
     "BCR-ABL (PCR/FISH)\nLAP score LOW",
     "HbS on electrophoresis\nSickling test positive",
     "↓HbA, ↑HbF, ↑HbA2\n(Hb electrophoresis)",
     "↓Ferritin, ↑TIBC\n↓Serum iron, ↓Transferrin sat"],
    ["WBC Count",
     "Variable; may be markedly ↑",
     "Variable; often markedly ↑",
     "MARKEDLY ↑ >100,000/µL",
     "Normal / mild ↑",
     "Normal / mild ↑",
     "Normal"],
    ["MCV",
     "Normal",
     "Normal",
     "Normal",
     "Normal/low",
     "LOW (microcytic)",
     "LOW (microcytic)"],
    ["Ferritin",
     "Normal",
     "Normal",
     "Normal",
     "Normal / ↑",
     "Normal / ↑ (iron overload)",
     "LOW (best iron stores marker)"],
    ["TIBC",
     "Normal",
     "Normal",
     "Normal",
     "Normal",
     "Normal",
     "HIGH"],
    ["Splenomegaly",
     "Mild",
     "Moderate (> AML)",
     "MASSIVE\n(extramedullary haematopoiesis)",
     "Children: moderate\nAdults: AUTOSPLENECTOMY",
     "Moderate to massive",
     "Absent"],
    ["Bone Marrow",
     "Hypercellular\nPacked myeloblasts",
     "Hypercellular\nSheets of lymphoblasts",
     "Hypercellular\nGranulocytic + megakaryocytic hyperplasia",
     "Erythroid hyperplasia",
     "Erythroid hyperplasia\nIneffective erythropoiesis",
     "Erythroid hyperplasia\nAbsent iron stores (Perl's stain)"],
    ["Key Clinical Signs",
     "Gum infiltration (monocytic)\nDIC in APL, pancytopenia",
     "Bone pain, testicular swelling\nMediastinal mass (T-ALL)\nCNS involvement",
     "Massive spleen\nDragging abdominal sensation",
     "Painful vaso-occlusive crises\nDactylitis, priapism, stroke\nJaundice",
     "Crew-cut skull X-ray\nChipmunk facies, growth retardation\nHepato-splenomegaly",
     "Koilonychia, glossitis\nAngular cheilitis, pica\nPlummer-Vinson syndrome"],
    ["Mentzer Index\n(MCV ÷ RBC count)",
     "N/A",
     "N/A",
     "N/A",
     "N/A",
     "< 13 → Thalassemia",
     "> 13 → IDA"],
    ["Treatment",
     "Cytarabine + anthracycline\nATRA + arsenic for APL (>90% cure)",
     "Combination chemo\nTKI for Ph+ ALL; CAR-T for relapsed",
     "IMATINIB (TKI)\nDasatinib / nilotinib (2nd gen)",
     "Hydroxyurea (↑HbF)\nTransfusion, BMT, gene therapy",
     "Blood transfusion\n+ Iron chelation (deferoxamine)\nBMT for cure",
     "Oral ferrous sulfate\nTreat underlying cause"],
    ["Prognosis",
     "Variable; APL >90% cure\nOthers 40-60%",
     "Children >80% cure\nAdults poorer; Ph+ worse",
     "Excellent with imatinib\n(median survival >10 yrs)",
     "Chronic morbidity\nEpisodic crises; variable",
     "β-major: shortened lifespan\nwithout BMT",
     "Excellent with treatment"],
]

# Highlight specific cells
highlight = []
# Auer rods row (row index 4 = 5th data row = row 5 in table incl header)
AUR_ROW = 5
highlight.append((AUR_ROW, 1, colors.HexColor("#ffcdd2")))   # AML col red
for c in range(2, 7):
    highlight.append((AUR_ROW, c, colors.HexColor("#e8f5e9")))  # others green

# TdT row
TDT_ROW = 6
highlight.append((TDT_ROW, 2, colors.HexColor("#ffcdd2")))   # ALL col
for c in [1,3,4,5,6]:
    highlight.append((TDT_ROW, c, colors.HexColor("#e8f5e9")))

# KEY smear row
highlight.append((3, 1, colors.HexColor("#fff3e0")))
highlight.append((3, 2, colors.HexColor("#f3e5f5")))
highlight.append((3, 3, colors.HexColor("#e3f2fd")))
highlight.append((3, 4, colors.HexColor("#fce4ec")))
highlight.append((3, 5, colors.HexColor("#e0f7fa")))
highlight.append((3, 6, colors.HexColor("#fff8e1")))

table_data = [headers]
for r in rows:
    table_data.append([p(str(c), sCell) for c in r])

# Apply special bold/red to Auer rod and TdT cells
table_data[AUR_ROW][1] = p(red("YES — PATHOGNOMONIC"), sCell)
for c in range(2,7):
    table_data[AUR_ROW][c] = p(grn("NO"), sCell)
table_data[TDT_ROW][2] = p(red("POSITIVE (hallmark)"), sCell)
for c in [1,3,4,5,6]:
    table_data[TDT_ROW][c] = p(grn("Negative"), sCell)
# LAP score
table_data[8][3] = p("MARKEDLY ↑ >100,000/µL", sCell)
table_data[12][3] = p(org("MASSIVE\n(extramedullary haematopoiesis)"), sCell)
table_data[12][4] = p(org("Children: moderate\nAdults: AUTOSPLENECTOMY"), sCell)

master_table = Table(table_data, colWidths=cw, repeatRows=1)
master_table.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,0), C_HEAD_BG),
    ("TEXTCOLOR",  (0,0), (-1,0), C_HEAD_FG),
    ("FONTNAME",   (0,0), (-1,0), "Helvetica-Bold"),
    ("FONTSIZE",   (0,0), (-1,0), 7.5),
    ("ALIGN",      (0,0), (-1,0), "CENTER"),
    ("VALIGN",     (0,0), (-1,-1), "TOP"),
    ("FONTSIZE",   (0,1), (-1,-1), 6.8),
    ("ROWBACKGROUNDS", (0,1), (-1,-1), [C_ROW_EVEN, C_ROW_ALT]),
    ("GRID",       (0,0), (-1,-1), 0.4, C_BORDER),
    ("LEFTPADDING",  (0,0), (-1,-1), 3),
    ("RIGHTPADDING", (0,0), (-1,-1), 3),
    ("TOPPADDING",   (0,0), (-1,-1), 2),
    ("BOTTOMPADDING",(0,0), (-1,-1), 2),
    ("FONTNAME",   (0,1), (0,-1), "Helvetica-Bold"),
    ("BACKGROUND", (0,1), (0,-1), colors.HexColor("#e8eaf6")),
    # Auer rod row
    ("BACKGROUND", (AUR_ROW,1), (AUR_ROW,1), colors.HexColor("#ffcdd2")),
    ("BACKGROUND", (AUR_ROW,2), (AUR_ROW,6), colors.HexColor("#e8f5e9")),
    # TdT row
    ("BACKGROUND", (TDT_ROW,2), (TDT_ROW,2), colors.HexColor("#ffcdd2")),
    ("BACKGROUND", (TDT_ROW,1), (TDT_ROW,1), colors.HexColor("#e8f5e9")),
    ("BACKGROUND", (TDT_ROW,3), (TDT_ROW,6), colors.HexColor("#e8f5e9")),
    # Key smear row
    ("BACKGROUND", (3,1), (3,1), colors.HexColor("#fff3e0")),
    ("BACKGROUND", (3,2), (3,2), colors.HexColor("#f3e5f5")),
    ("BACKGROUND", (3,3), (3,3), colors.HexColor("#e3f2fd")),
    ("BACKGROUND", (3,4), (3,4), colors.HexColor("#fce4ec")),
    ("BACKGROUND", (3,5), (3,5), colors.HexColor("#e0f7fa")),
    ("BACKGROUND", (3,6), (3,6), colors.HexColor("#fff8e1")),
]))

story.append(master_table)
story.append(Spacer(1, 4))
story.append(p("Source: Robbins & Kumar Basic Pathology | Robbins Pathologic Basis of Disease | Henry's Clinical Diagnosis | Tietz Laboratory Medicine", sFooter))

# ──────────────────────────────────────────────────────────────────────────────
# PAGE 2  ▸  QUICK DIFFERENTIATORS + MNEMONICS + VIVA QUESTIONS
# ──────────────────────────────────────────────────────────────────────────────
story.append(PageBreak())

# Second banner
banner2_data = [[p("QUICK DIFFERENTIATORS  •  MNEMONICS  •  VIVA QUESTIONS", sTitle)]]
banner2 = Table(banner2_data, colWidths=[W])
banner2.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,-1), C_TITLE_BG),
    ("TOPPADDING",    (0,0), (-1,-1), 8),
    ("BOTTOMPADDING", (0,0), (-1,-1), 8),
]))
story.append(banner2)
story.append(Spacer(1, 6))

# ── Row 1: Quick differentiators table + Mnemonics side by side ──────────────
story.append(p("SCENARIO-BASED QUICK DIFFERENTIATORS", sSection))

diff_headers = [p("Clinical/Lab Finding", sCellH), p("Think of...", sCellH), p("Why?", sCellH)]
diff_rows = [
    ["Auer rods on smear", red("AML — immediately!"), "Fused azurophilic granules; pathognomonic for myeloid lineage"],
    ["TdT positive blast", red("ALL"), "Pre-B and pre-T cells exclusively express TdT"],
    ["t(9;22) in adult leukemia", org("CML or adult B-ALL"), "Different BCR-ABL breakpoints; both use TKI"],
    ["Low LAP score", org("CML"), "vs. Leukemoid reaction = HIGH LAP"],
    ["Massive splenomegaly + WBC >100,000", org("CML"), "Extramedullary haematopoiesis"],
    ["Mediastinal mass + leukemia in teenager", red("T-ALL"), "Thymic involvement in T-ALL (50-70%)"],
    ["Blast crisis + prior indolent leukemia", org("CML → AML/ALL"), "≥20% blasts = blast crisis; treat as AML"],
    ["Crescent-shaped RBCs + pain crisis", red("Sickle Cell Disease"), "Irreversibly sickled cells on deoxygenation"],
    ["Howell-Jolly bodies in adult", org("Sickle Cell — autosplenectomy"), "Spleen fibroses; can't remove nuclear remnants"],
    ["Crew-cut skull X-ray + chipmunk facies", red("β-Thalassemia Major"), "Marrow expansion → bone remodelling"],
    ["Microcytic anemia + LOW ferritin", red("IDA"), "Ferritin = best measure of iron stores"],
    ["Microcytic anemia + NORMAL/HIGH ferritin + target cells", red("Thalassemia"), "Globin synthesis defect, not iron deficiency"],
    ["Mentzer Index < 13  (MCV ÷ RBC count)", org("Thalassemia"), "RBC count relatively preserved in thalassemia"],
    ["Mentzer Index > 13", org("IDA"), "Fewer, smaller RBCs in iron deficiency"],
    ["Infection with encapsulated bacteria (S. pneumoniae)", red("Sickle Cell"), "Autosplenectomy → opsonisation defect"],
    ["APL (AML-M3) + DIC + t(15;17)", red("Acute Promyelocytic Leukemia"), "PML-RARA fusion; treat with ATRA + arsenic"],
    ["Gum hypertrophy + leukemia", org("AML with monocytic differentiation"), "Tissue infiltration by monocytic blasts"],
    ["Normal spleen + microcytic anemia in a woman", org("IDA — menorrhagia/GI bleed"), "Most common cause: chronic blood loss"],
]

diff_cw = [5.0*cm, 5.0*cm, 12.8*cm]
diff_data = [diff_headers] + [[p(r[0], sCellB if i < 2 else sCell),
                                 p(r[1], sCell),
                                 p(r[2], sCell)] for i, r in enumerate(diff_rows)]
diff_table = Table(diff_data, colWidths=diff_cw, repeatRows=1)
diff_table.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,0), C_HEAD_BG),
    ("TEXTCOLOR",  (0,0), (-1,0), C_HEAD_FG),
    ("FONTNAME",   (0,0), (-1,0), "Helvetica-Bold"),
    ("FONTSIZE",   (0,0), (-1,0), 8),
    ("VALIGN",     (0,0), (-1,-1), "TOP"),
    ("FONTSIZE",   (0,1), (-1,-1), 7),
    ("ROWBACKGROUNDS", (0,1), (-1,-1), [C_ROW_EVEN, C_ROW_ALT]),
    ("GRID",       (0,0), (-1,-1), 0.4, C_BORDER),
    ("LEFTPADDING",  (0,0), (-1,-1), 4),
    ("RIGHTPADDING", (0,0), (-1,-1), 4),
    ("TOPPADDING",   (0,0), (-1,-1), 2),
    ("BOTTOMPADDING",(0,0), (-1,-1), 2),
]))
story.append(diff_table)
story.append(Spacer(1, 6))

# ── Mnemonics ─────────────────────────────────────────────────────────────────
story.append(p("MEMORY AIDS & MNEMONICS", sSection))

mnem_items = [
    ("AML",          "A = Auer rods (pathognomonic)  |  M = Myeloperoxidase+  |  L = Large blasts with nucleoli",           C_PINK_BG),
    ("ALL",          "A = Affects children (peak 2-10 yrs)  |  L = Lymphoblasts  |  L = Lack Auer rods  |  TdT POSITIVE",    C_PURPLE_BG),
    ("CML",          "C = Chromosome 22 (Philadelphia)  |  M = Massive spleen  |  L = Left shift (ALL granulocyte stages)",  C_BLUE_BG),
    ("Sickle Cell",  "SCA = Sickle + Crisis + Autosplenectomy  |  HbS = Hb Stiff (polymerises on deoxygenation)",            C_ORANGE_BG),
    ("Thalassemia",  "THAL = Target cells + Hypochromic + Anemia (severe) + Low HbA  |  Crew-cut skull + Chipmunk facies",   C_TEAL_BG),
    ("IDA",          "IDA = Increased TIBC + Decreased ferritin + Anemia (microcytic)  |  Pencil cells + Koilonychia",       C_GREEN_BG),
]

mnem_data = [[p(bold(name), sSmallBold), p(hint, sSmall)] for name, hint, _ in mnem_items]
mnem_cw = [3.2*cm, 19.5*cm]
mnem_bg = [item[2] for item in mnem_items]

mnem_table = Table(mnem_data, colWidths=mnem_cw)
mnem_style = [
    ("VALIGN",     (0,0), (-1,-1), "MIDDLE"),
    ("FONTSIZE",   (0,0), (-1,-1), 7.5),
    ("GRID",       (0,0), (-1,-1), 0.4, C_BORDER),
    ("LEFTPADDING",  (0,0), (-1,-1), 6),
    ("TOPPADDING",   (0,0), (-1,-1), 3),
    ("BOTTOMPADDING",(0,0), (-1,-1), 3),
]
for i, (_, _, bg) in enumerate(mnem_items):
    mnem_style.append(("BACKGROUND", (0,i), (-1,i), bg))
mnem_table.setStyle(TableStyle(mnem_style))
story.append(mnem_table)
story.append(Spacer(1, 6))

# ── Viva Questions ────────────────────────────────────────────────────────────
story.append(p("TOP VIVA QUESTIONS — EXPECTED IN PRACTICALS", sSection))

viva_cols = [
    ("AML", C_PINK_BG, [
        "What are Auer rods? In which condition are they pathognomonic?",
        "What % blasts diagnoses AML?",
        "Translocation in APL and its treatment?",
        "FAB classification of AML (M0–M7)?",
        "Differentiate AML from ALL on smear.",
        "Role of ATRA in APL?",
        "Name myeloid markers (flow cytometry).",
    ]),
    ("ALL", C_PURPLE_BG, [
        "What is TdT and why important in ALL?",
        "Philadelphia chromosome — in which leukemias?",
        "Morphological difference: ALL vs AML blasts?",
        "Significance of t(12;21) ETV6-RUNX1?",
        "Why does T-ALL cause mediastinal mass?",
        "Prognostic factors in childhood ALL?",
        "What are CAR-T cells? When used?",
        "Differentiate B-ALL from T-ALL.",
    ]),
    ("CML", C_BLUE_BG, [
        "What is the Philadelphia chromosome?",
        "How does BCR-ABL cause CML?",
        "CML vs leukemoid reaction (LAP score!)",
        "Three phases of CML?",
        "What is blast crisis?",
        "Name TKIs used in CML.",
        "Why is basophilia a feature of CML?",
        "LAP score in CML vs leukemoid reaction?",
    ]),
    ("Sickle Cell", C_ORANGE_BG, [
        "Genetic mutation in sickle cell anemia?",
        "Why do RBCs sickle only on deoxygenation?",
        "What is autosplenectomy? Why does it occur?",
        "Why prone to encapsulated bacteria?",
        "What is a vaso-occlusive crisis? Triggers?",
        "How does hydroxyurea help?",
        "How does HbF protect against sickling?",
        "Sickle cell TRAIT vs DISEASE?",
    ]),
    ("Thalassemia", C_TEAL_BG, [
        "Genetic basis of α- vs β-thalassemia?",
        "Why do α-globin chains cause damage?",
        "What is ineffective erythropoiesis?",
        "Why does iron overload occur without transfusions?",
        "Role of hepcidin in iron regulation?",
        "Thalassemia minor vs IDA on lab tests?",
        "What is crew-cut skull X-ray?",
        "What is HbH disease?",
        "Why is hydrops fetalis fatal?",
    ]),
    ("IDA", C_GREEN_BG, [
        "Most common cause of microcytic anemia worldwide?",
        "How to differentiate IDA from thalassemia?",
        "What is the Mentzer index?",
        "Stages of iron deficiency?",
        "What is koilonychia?",
        "What is Plummer-Vinson syndrome?",
        "Which test best reflects iron stores?",
        "Why is TIBC elevated in IDA?",
        "Role of hepcidin in iron metabolism?",
        "RBC changes on blood smear in IDA?",
    ]),
]

viva_cw_each = W / 6

viva_row_heads = [p(bold(name), sCellH) for name, _, _ in viva_cols]
viva_head_row = [Table([[p(bold(name), sCellH)]], colWidths=[viva_cw_each]) for name, bg, _ in viva_cols]

# Build viva table: each column = one condition, rows = questions
max_q = max(len(qs) for _, _, qs in viva_cols)
viva_data = []
for qi in range(max_q):
    row = []
    for _, bg, qs in viva_cols:
        if qi < len(qs):
            row.append(p(f"{qi+1}. {qs[qi]}", sSmall))
        else:
            row.append(p("", sSmall))
    viva_data.append(row)

viva_col_widths = [viva_cw_each] * 6

# Build header row
viva_header = [p(bold(name), sCellH) for name, _, _ in viva_cols]
full_viva = [viva_header] + viva_data

viva_table = Table(full_viva, colWidths=viva_col_widths, repeatRows=1)
viva_style_cmds = [
    ("VALIGN",     (0,0), (-1,-1), "TOP"),
    ("FONTSIZE",   (0,1), (-1,-1), 6.8),
    ("GRID",       (0,0), (-1,-1), 0.4, C_BORDER),
    ("LEFTPADDING",  (0,0), (-1,-1), 4),
    ("RIGHTPADDING", (0,0), (-1,-1), 4),
    ("TOPPADDING",   (0,0), (-1,-1), 2),
    ("BOTTOMPADDING",(0,0), (-1,-1), 2),
    ("FONTNAME",   (0,0), (-1,0), "Helvetica-Bold"),
    ("FONTSIZE",   (0,0), (-1,0), 8),
    ("ALIGN",      (0,0), (-1,0), "CENTER"),
]
col_bgs = [bg for _, bg, _ in viva_cols]
for ci, bg in enumerate(col_bgs):
    viva_style_cmds.append(("BACKGROUND", (ci,0), (ci,0), C_HEAD_BG))
    viva_style_cmds.append(("TEXTCOLOR",  (ci,0), (ci,0), C_HEAD_FG))
    for ri in range(1, max_q+1):
        viva_style_cmds.append(("BACKGROUND", (ci,ri), (ci,ri), bg if ri % 2 == 1 else C_ROW_EVEN))
viva_table.setStyle(TableStyle(viva_style_cmds))
story.append(viva_table)
story.append(Spacer(1, 4))

# ── Key formula box ───────────────────────────────────────────────────────────
formula_text = (
    f"  {bold('KEY FORMULAS & THRESHOLDS:')}   "
    f"Mentzer Index = MCV ÷ RBC count  →  {red('<13')} = Thalassemia  |  {grn('>13')} = IDA     "
    f"Blast threshold for AML / ALL = {red('≥20%')} in marrow     "
    f"LAP score: {red('LOW')} in CML  |  {grn('HIGH')} in Leukemoid Reaction     "
    f"APL cure rate with ATRA + Arsenic: {grn('>90%')}     "
    f"Philadelphia chr = t(9;22)  →  found in {org('CML')} + {org('adult B-ALL')}"
)
formula_data = [[p(formula_text, sSmall)]]
formula_table = Table(formula_data, colWidths=[W])
formula_table.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,-1), C_GOLD_BG),
    ("BOX",        (0,0), (-1,-1), 1.2, C_GOLD),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",   (0,0), (-1,-1), 8),
]))
story.append(formula_table)
story.append(Spacer(1, 3))
story.append(p("Orris Medical Education  |  Based on: Robbins & Kumar Basic Pathology | Robbins Pathologic Basis of Disease | Henry's Clinical Diagnosis | Tietz Laboratory Medicine 7e", sFooter))

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

cd /home/daytona/workspace/hematology-cheatsheet && python generate_cheatsheet.py 2>&1

Running Command

ls -lh /home/daytona/workspace/hematology-cheatsheet/Hematology_CheatSheet.pdf

Your cheat sheet is ready! Download it here:

Hematology CheatSheet

PDF Document · PDF


What's inside (2 pages, landscape A4):
Page 1 - Master Comparison Table
  • All 7 conditions side by side across 17 rows
  • Color-coded cells: Auer rods row highlighted red (AML) / green (others); TdT row highlighted; Key smear findings each get a distinct color per condition
  • Covers: Age, Genetics, Peripheral smear, Blast %, Auer rods, TdT, Key markers, WBC, MCV, Ferritin, TIBC, Spleen, Bone marrow, Clinical signs, Mentzer index, Treatment, Prognosis
Page 2 - Quick Reference + Viva Prep
  • 18-row scenario-based differentiator table ("If you see X, think Y, because Z")
  • Mnemonics for all 6 conditions (color-coded boxes)
  • Viva question grid - all 6 conditions in columns, ~8-10 questions each
  • Golden formula box at the bottom: Mentzer index cutoffs, blast thresholds, LAP score rule, APL cure rate, Philadelphia chromosome summary
This is a shared conversation. Sign in to Orris to start your own chat.