Introduction

Hematology is the study of blood, blood-forming organs, and blood diseases. This chapter outlines three fundamental procedures used in the clinical laboratory: the Complete Blood Count (CBC), Hemoglobin estimation using the Sahli method, and Blood Grouping (ABO/Rh).


1. Complete Blood Count (CBC)

1.1 Principle

Modern automated CBC analysis relies primarily on two principles:

  1. Electrical Impedance (Coulter Principle): Cells are suspended in an electrolyte solution and pass through a small aperture. As a cell passes through, it creates a change in electrical resistance (impedance) proportional to the cell’s volume. This counts and sizes RBCs, WBCs, and Platelets.
  2. Light Scattering (Flow Cytometry): A laser beam is directed at a stream of cells. The way light scatters (forward vs. side scatter) provides information about cell granularity and lobularity, allowing for the differentiation of WBCs (neutrophils, lymphocytes, etc.).

1.2 Key Parameters

A standard CBC includes:

  • RBC (Red Blood Cell Count): Number of erythrocytes.
  • Hgb (Hemoglobin): Oxygen-carrying capacity.
  • Hct (Hematocrit): Volume percentage of RBCs in blood.
  • MCV (Mean Corpuscular Volume): Average size of RBCs.
  • WBC (White Blood Cell Count): Total leukocytes.
  • Plt (Platelets): Thrombocytes involved in clotting.

1.3 Data Visualization in R

Below is an R simulation showing the distribution of Hemoglobin levels in a healthy population vs. anemic patients.

# Simulating Data
set.seed(123)
healthy_hb <- rnorm(100, mean = 14, sd = 1.5)
anemic_hb <- rnorm(100, mean = 9, sd = 1.5)

df_hb <- data.frame(
  Hemoglobin = c(healthy_hb, anemic_hb),
  Group = c(rep("Healthy", 100), rep("Anemic", 100))
)

# Plotting the distribution
ggplot(df_hb, aes(x = Hemoglobin, fill = Group)) +
  geom_density(alpha = 0.5) +
  geom_vline(xintercept = 12, linetype="dashed", color="black") +
  labs(title = "Hemoglobin Distribution: Healthy vs Anemic",
       subtitle = "Dashed line represents lower limit of normal (approx)",
       x = "Hemoglobin (g/dL)",
       y = "Density") +
  theme_minimal()


2. Sahli’s Hemoglobinometer (Acid Hematin Method)

While automated analyzers are standard, Sahli’s method remains an important educational tool and a backup method in resource-limited settings.

2.1 Principle

Hemoglobin is converted into acid hematin by the action of dilute hydrochloric acid (0.1 N HCl). The resulting solution has a brown color. This color is matched against standard brown glass comparators in the Sahli’s comparator box by adding distilled water drop by drop.

Reaction: \[Hb + 0.1 N HCl \rightarrow Acid Hematin (Brown Color)\]

2.2 Reagents and Equipment

  1. Sahli’s Comparator box (with standard glass).
  2. Hemoglobin pipette (marked at 20 \(\mu\)L or 0.02 mL).
  3. Sahli’s graduated tube.
  4. 0.1 N HCl.
  5. Distilled water.
  6. Glass rod (stirrer).

2.3 Procedure

  1. Add 0.1 N HCl into the graduated tube up to the mark 2 (lowest mark).
  2. Draw blood up to the 20 \(\mu\)L mark using the Hb pipette. Wipe the tip.
  3. Expel blood into the acid solution and rinse the pipette by drawing in the acid mixture.
  4. Mix and let stand for 10 minutes to allow full conversion to acid hematin.
  5. Add distilled water drop by drop, stirring with the glass rod, until the color matches the standard glass comparator.
  6. Read the result at the lower meniscus on the graduated tube (g/dL).

2.4 Sources of Error

  • Improper mixing.
  • Inadequate time for reaction (less than 10 mins).
  • Visual matching is subjective (human error).
  • Carboxyhemoglobin and Methemoglobin are not converted to acid hematin.

3. Blood Grouping (ABO and Rh Typing)

3.1 Principle

Blood grouping is based on Hemagglutination. * Antigens are present on the surface of RBCs. * Antibodies are present in the antisera (reagents). * When a specific antigen meets its corresponding antibody (e.g., Antigen A + Anti-A), clumping (agglutination) occurs.

3.2 Reagents

  • Anti-A Sera: (Blue color) - Contains antibodies against A antigen.
  • Anti-B Sera: (Yellow color) - Contains antibodies against B antigen.
  • Anti-D Sera: (Colorless/Pink) - Contains antibodies against Rh(D) antigen.

3.3 Procedure (Slide Method)

  1. Place three separate drops of blood on a clean glass slide or tile.
  2. Add 1 drop of Anti-A to the first, Anti-B to the second, and Anti-D to the third.
  3. Mix separate circles using separate applicator sticks.
  4. Rock the slide gently for 2 minutes.
  5. Observe for macroscopic agglutination.

3.4 Interpretation Logic (R Implementation)

The following table illustrates how results are interpreted. We can use R to create a logic function for interpretation.

# Function to determine blood group
determine_blood_type <- function(agg_A, agg_B, agg_D) {
  
  # Determine ABO
  abo <- ifelse(agg_A & agg_B, "AB",
         ifelse(agg_A & !agg_B, "A",
         ifelse(!agg_A & agg_B, "B", "O")))
  
  # Determine Rh
  rh <- ifelse(agg_D, "Positive (+)", "Negative (-)")
  
  return(paste(abo, rh))
}

# Create a reference table (Data Frame)
results_table <- expand.grid(Anti_A = c(FALSE, TRUE), 
                             Anti_B = c(FALSE, TRUE), 
                             Anti_D = c(FALSE, TRUE))

# Apply the function to the table
results_table$Result <- mapply(determine_blood_type, 
                               results_table$Anti_A, 
                               results_table$Anti_B, 
                               results_table$Anti_D)

# Display table nicely
kable(results_table, 
      col.names = c("Agglutination with Anti-A", 
                    "Agglutination with Anti-B", 
                    "Agglutination with Anti-D", 
                    "Blood Group"),
      caption = "Table 3.1: Blood Group Interpretation Guide")
Table 3.1: Blood Group Interpretation Guide
Agglutination with Anti-A Agglutination with Anti-B Agglutination with Anti-D Blood Group
FALSE FALSE FALSE O Negative (-)
TRUE FALSE FALSE A Negative (-)
FALSE TRUE FALSE B Negative (-)
TRUE TRUE FALSE AB Negative (-)
FALSE FALSE TRUE O Positive (+)
TRUE FALSE TRUE A Positive (+)
FALSE TRUE TRUE B Positive (+)
TRUE TRUE TRUE AB Positive (+)

4. Summary


End of Chapter ```

How to use this:

  1. Install R and RStudio.
  2. Open RStudio and create a new file: File > New File > R Markdown.
  3. Delete the default dummy text in the new file.
  4. Copy and paste the code block above into the file.
  5. Click the Knit button (icon looks like a ball of yarn) to generate the formatted document.