Yarr mere bhms 1st year ke mpmsu final exam hai
MPMSU BHMS 1st year Physiology Kriya Sharir important questions exam 2025 2026
BHMS 1st year Kriya Sharir previous year question paper MPMSU syllabus
https://nch.org.in/upload/3-Human-physiology-02-02-2024.pdf
| Phase | Duration | Event |
|---|---|---|
| Atrial Systole | 0.1 sec | Atria contract, blood ventricles mein jaata hai |
| Ventricular Systole | 0.3 sec | Ventricles contract, blood aorta/pulmonary artery mein jaata hai |
| Diastole (Total) | 0.4 sec | Sabka relaxation, heart blood se bharta hai |
| Blood Group | Antigen (RBC pe) | Antibody (Plasma mein) |
|---|---|---|
| A | A | Anti-B |
| B | B | Anti-A |
| AB | A + B | None (Universal Recipient) |
| O | None | Anti-A + Anti-B (Universal Donor) |
| Topic | Key Point |
|---|---|
| Vital Capacity | TLC - RV = ~4.8 L (max air exhale karo after max inhale) |
| GFR | ~125 mL/min, kidney kitna filter kare per minute |
| ECG waves | P (atrial), QRS (ventricular depol), T (ventricular repol) |
| Insulin | Beta cells (Pancreas), blood glucose giraata hai, diabetes mein absent |
| ADH/Vasopressin | Posterior pituitary, water reabsorption badhata hai |
| Neurotransmitters | ACh, Dopamine, Serotonin, GABA, Norepinephrine |
| ESR | Normal: Male <15, Female <20 mm/1st hr (Westergren method) |
| Platelets | 1.5-4 lakh/Β΅L, clotting mein help karte hain |
| Peristalsis | GI tract ka wave-like movement, food aage push karta hai |
| Vital Force | Hahnemann ka concept - body ko animate karne wali force |
Paper 1 st
[Extracellular]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ β Glycoproteins
| O O O O O O O O O O O O O O | β Hydrophilic heads
| | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | β Hydrophobic tails
| O O O O O O O O O O O O O O |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[Intracellular]
Intrinsic Pathway Extrinsic Pathway
(blood ke andar) (tissue damage se)
β β
Factor XII Factor VII
β β
βββββββ Common Path βββββββββ
β
Factor X activated
β
Prothrombin β THROMBIN (Factor II)
β
Fibrinogen β FIBRIN (Factor I)
β
Stable Clot banta hai
| Factor | Name |
|---|---|
| I | Fibrinogen |
| II | Prothrombin |
| IV | Calcium (CaΒ²+) |
| VIII | Antihemophilic factor (Hemophilia A mein absent) |
| Phase | Duration | Valves | Event |
|---|---|---|---|
| Atrial Systole | 0.1 sec | AV open, Semilunar closed | Atria contract, ventricles bharte hain |
| Isovolumetric Contraction | 0.05 sec | Sab band | Ventricle pressure badhti hai |
| Ventricular Ejection | 0.25 sec | Semilunar open | Blood aorta/PA mein jaata hai |
| Isovolumetric Relaxation | 0.08 sec | Sab band | Ventricular pressure girti hai |
| Rapid Filling | 0.11 sec | AV open | Ventricle jaldi bharta hai |
| Slow Filling | 0.19 sec | AV open | Dheere bharta hai |
CO = Stroke Volume Γ Heart Rate CO = 70 mL Γ 72 = ~5 L/min
| Volume | Value | Definition |
|---|---|---|
| Tidal Volume (TV) | 500 mL | Normal ek breath mein |
| IRV | 3000 mL | Extra inhale kar sako |
| ERV | 1100 mL | Extra exhale kar sako |
| RV | 1200 mL | Lungs mein hamesha bachi hui |
| Vital Capacity | 4600 mL | TV + IRV + ERV |
| TLC | 5800 mL | Sab milake |
| Cell | % | Function |
|---|---|---|
| Neutrophil | 60-70% | Bacteria khaata hai (Phagocytosis) - first responder |
| Eosinophil | 2-4% | Allergy + Parasitic infection |
| Basophil | 0-1% | Histamine release - allergy |
| Cell | % | Function |
|---|---|---|
| Lymphocyte | 20-30% | Antibody banate (B cells), Cell immunity (T cells) |
| Monocyte | 2-8% | Tissue mein jaake Macrophage banta hai |
"Never Let Monkeys Eat Bananas" Neutrophil - Lymphocyte - Monocyte - Eosinophil - Basophil
| Protein | % | Functions |
|---|---|---|
| Albumin | 55% | Oncotic pressure maintain, drugs + hormones carry karta hai |
| Globulin | 38% | Antibodies (immunoglobulins), transport |
| Fibrinogen | 7% | Clotting mein fibrin banata hai |
| Structure | Location | Rate |
|---|---|---|
| SA Node | Right Atrium (Pacemaker) | 70-80/min |
| AV Node | Interatrial septum | 40-60/min |
| Bundle of His | IV Septum | 20-40/min |
| Purkinje Fibres | Ventricular walls | 15-40/min |
Proerythroblast β Erythroblast β Normoblast β Reticulocyte β Mature RBC
COβ + HβO β HβCOβ β HβΊ + HCOββ»
| Topic | Key Value/Fact |
|---|---|
| Normal Hb | Male: 13-17 g/dL, Female: 12-15 g/dL |
| RBC count | Male: 5-5.5 million/Β΅L, Female: 4.5-5 million/Β΅L |
| Blood Volume | 5-6 L (body weight ka ~8%) |
| Platelet count | 1.5 - 4 lakh/Β΅L |
| Blood pH | 7.35 - 7.45 |
| Plasma = 55% | Blood ka 55% plasma, 45% cells |
| Hematocrit (PCV) | Male: 45%, Female: 40% |
| ESR | Male: < 15, Female: < 20 mm/1st hour |
| Normal BP | 120/80 mmHg |
| Heart Rate | 72 beats/min |
| Tidal Volume | 500 mL |
| Vital Capacity | 4600 mL |
| RBC life | 120 days |
| WBC life | Hours to days |
| Platelet life | 8-10 days |
Create a quick reference PDF for Paper 1 topics
mkdir -p /tmp/workspace/bhms-physiology && ls /tmp/workspace/
~/bhms-physiology/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm, mm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_RIGHT
from reportlab.platypus import PageBreak
OUTPUT = "/tmp/workspace/bhms-physiology/Kriya_Sharir_Paper1_QuickRef.pdf"
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
rightMargin=1.5*cm,
leftMargin=1.5*cm,
topMargin=2*cm,
bottomMargin=2*cm,
)
# ββ Colour Palette ββ
C_DARK = colors.HexColor("#1a237e") # deep indigo
C_MED = colors.HexColor("#283593") # medium indigo
C_LIGHT = colors.HexColor("#e8eaf6") # very light indigo bg
C_ACCENT = colors.HexColor("#d32f2f") # red accent
C_GREEN = colors.HexColor("#1b5e20") # dark green
C_YELLOW = colors.HexColor("#f9a825") # amber
C_TEAL = colors.HexColor("#006064") # teal
C_WHITE = colors.white
C_GREY = colors.HexColor("#f5f5f5")
C_BORDER = colors.HexColor("#9fa8da")
# ββ Styles ββ
base = getSampleStyleSheet()
def style(name, **kw):
s = ParagraphStyle(name, **kw)
return s
TITLE = style("MyTitle",
fontName="Helvetica-Bold", fontSize=20,
textColor=C_WHITE, alignment=TA_CENTER,
spaceAfter=4, leading=26)
SUBTITLE = style("MySubtitle",
fontName="Helvetica", fontSize=11,
textColor=C_WHITE, alignment=TA_CENTER,
spaceAfter=2)
SEC_HEAD = style("SecHead",
fontName="Helvetica-Bold", fontSize=13,
textColor=C_WHITE, alignment=TA_LEFT,
spaceBefore=10, spaceAfter=4, leading=18,
leftIndent=6)
SUBSEC = style("SubSec",
fontName="Helvetica-Bold", fontSize=11,
textColor=C_DARK, alignment=TA_LEFT,
spaceBefore=8, spaceAfter=3, leading=16)
BODY = style("MyBody",
fontName="Helvetica", fontSize=9,
textColor=colors.black, alignment=TA_LEFT,
spaceAfter=3, leading=14, leftIndent=8)
BODY_SMALL = style("MyBodySm",
fontName="Helvetica", fontSize=8.5,
textColor=colors.black, alignment=TA_LEFT,
spaceAfter=2, leading=13, leftIndent=8)
BULLET = style("MyBullet",
fontName="Helvetica", fontSize=9,
textColor=colors.black, alignment=TA_LEFT,
spaceAfter=2, leading=13, leftIndent=16, firstLineIndent=-8)
IMPBOX = style("ImpBox",
fontName="Helvetica-Bold", fontSize=8.5,
textColor=C_ACCENT, alignment=TA_LEFT,
spaceAfter=2, leading=13, leftIndent=8)
NOTE = style("Note",
fontName="Helvetica-Oblique", fontSize=8.5,
textColor=C_TEAL, alignment=TA_LEFT,
spaceAfter=2, leading=13, leftIndent=8)
FOOTER_S = style("Footer",
fontName="Helvetica-Oblique", fontSize=7.5,
textColor=colors.grey, alignment=TA_CENTER)
# ββ Helpers ββ
def section_header(text, color=C_DARK):
tbl = Table([[Paragraph(text, SEC_HEAD)]], colWidths=[17.5*cm])
tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), color),
("ROUNDEDCORNERS", [4, 4, 4, 4]),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 8),
]))
return tbl
def colored_table(data, col_widths, header_color=C_MED, stripe=True):
tbl = Table(data, colWidths=col_widths, repeatRows=1)
style_cmds = [
("BACKGROUND", (0,0), (-1,0), header_color),
("TEXTCOLOR", (0,0), (-1,0), C_WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 8.5),
("ALIGN", (0,0), (-1,-1), "LEFT"),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 6),
("GRID", (0,0), (-1,-1), 0.4, C_BORDER),
]
if stripe:
for i in range(1, len(data)):
bg = C_GREY if i % 2 == 0 else C_WHITE
style_cmds.append(("BACKGROUND", (0,i), (-1,i), bg))
tbl.setStyle(TableStyle(style_cmds))
return tbl
def tip_box(text, bg=C_LIGHT, tc=C_DARK):
inner = Paragraph(text, ParagraphStyle("tb", fontName="Helvetica",
fontSize=8.5, textColor=tc, leading=13))
t = Table([[inner]], colWidths=[17.5*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("BOX", (0,0), (-1,-1), 1, C_DARK),
]))
return t
def bullet(text):
return Paragraph(f"• {text}", BULLET)
def imp(text):
return Paragraph(f"★ {text}", IMPBOX)
def note(text):
return Paragraph(text, NOTE)
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# CONTENT
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story = []
# ββ COVER BANNER ββ
cover_data = [[
Paragraph("BHMS 1st Year", SUBTITLE),
],
[
Paragraph("Kriya Sharir (Physiology)", TITLE),
],
[
Paragraph("Paper 1 β Quick Reference Guide", SUBTITLE),
],
[
Paragraph("General Physiology β’ Blood β’ CVS β’ Respiratory System", SUBTITLE),
],
[
Paragraph("MPMSU Final Examination", SUBTITLE),
]]
cover_tbl = Table(cover_data, colWidths=[17.5*cm])
cover_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), C_DARK),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING", (0,0), (-1,-1), 8),
("ALIGN", (0,0), (-1,-1), "CENTER"),
]))
story.append(cover_tbl)
story.append(Spacer(1, 10))
# ββ NORMAL VALUES QUICK BOX ββ
story.append(section_header("π NORMAL VALUES β Exam Must Know!", C_ACCENT))
story.append(Spacer(1, 4))
nv_data = [
["Parameter", "Normal Value", "Parameter", "Normal Value"],
["Haemoglobin (Male)", "13β17 g/dL", "Blood pH", "7.35β7.45"],
["Haemoglobin (Female)", "12β15 g/dL", "Normal BP", "120/80 mmHg"],
["RBC (Male)", "5β5.5 million/Β΅L", "Heart Rate", "72 beats/min"],
["RBC (Female)", "4.5β5 million/Β΅L", "Cardiac Output", "~5 L/min"],
["WBC Total", "4,000β11,000/Β΅L", "Stroke Volume", "70 mL"],
["Platelets", "1.5β4 lakh/Β΅L", "Tidal Volume", "500 mL"],
["Hematocrit (Male)", "45%", "Vital Capacity", "4600 mL"],
["Hematocrit (Female)", "40%", "TLC", "5800 mL"],
["Plasma Proteins", "6β8 g/dL", "RV", "1200 mL"],
["Blood Volume", "5β6 L", "Blood Osmolality", "285β295 mOsm/kg"],
["ESR (Male)", "< 15 mm/1st hr", "Fibrinogen", "200β400 mg/dL"],
["ESR (Female)", "< 20 mm/1st hr", "PCV (Hematocrit)", "Male 45%, F 40%"],
["RBC Life Span", "120 days", "Platelet Life", "8β10 days"],
]
nv_tbl = colored_table(nv_data,
col_widths=[4.5*cm, 4.0*cm, 4.5*cm, 4.0*cm],
header_color=C_ACCENT)
story.append(nv_tbl)
story.append(Spacer(1, 8))
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SECTION 1 β GENERAL PHYSIOLOGY
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(section_header("1. GENERAL PHYSIOLOGY", C_DARK))
story.append(Spacer(1, 4))
story.append(Paragraph("Cell Membrane β Fluid Mosaic Model", SUBSEC))
cell_data = [
["Component", "Description / Function"],
["Phospholipid Bilayer", "Basic framework; hydrophilic heads outside, hydrophobic tails inside"],
["Integral Proteins", "Channels & carriers β span full membrane; allow selective transport"],
["Peripheral Proteins", "On surface only; enzyme/structural roles"],
["Cholesterol", "Maintains membrane fluidity (neither too rigid nor too fluid)"],
["Glycoproteins / Glycolipids", "Cell recognition, ABO antigens, receptor sites"],
]
story.append(colored_table(cell_data, col_widths=[5*cm, 12.5*cm]))
story.append(Spacer(1, 4))
story.append(Paragraph("Transport Across Membranes", SUBSEC))
trans_data = [
["Type", "Energy", "Direction", "Examples"],
["Simple Diffusion", "No (passive)", "High β Low conc.", "Oβ, COβ, alcohol"],
["Facilitated Diffusion", "No (passive)", "High β Low conc.", "Glucose (GLUT), ions"],
["Active Transport", "Yes (ATP)", "Low β High conc.", "NaβΊ/KβΊ ATPase pump"],
["Osmosis", "No (passive)", "Low solute β High solute", "Water across membranes"],
["Endocytosis / Exocytosis", "Yes (ATP)", "Bulk transport", "Proteins, large molecules"],
]
story.append(colored_table(trans_data, col_widths=[4*cm, 3.5*cm, 4.5*cm, 5.5*cm]))
story.append(Spacer(1, 4))
story.append(tip_box(
"β
Osmosis MCQ Trap: Isotonic (0.9% NaCl) β RBC normal | "
"Hypotonic β RBC swells β HEMOLYSIS | Hypertonic β RBC shrinks β CRENATION",
bg=colors.HexColor("#fff3e0"), tc=C_ACCENT
))
story.append(Spacer(1, 6))
story.append(Paragraph("Homeostasis", SUBSEC))
for b in [
"Definition: Maintenance of stable internal environment despite external changes.",
"Mechanism: Negative feedback (most common) β corrects deviation from set point.",
"Positive feedback: Amplifies the change (e.g., childbirth, blood clotting).",
"Homoeopathic angle: Vital Force (Hahnemann) = the animating principle maintaining homeostasis.",
]:
story.append(bullet(b))
story.append(Spacer(1, 6))
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SECTION 2 β BLOOD
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(section_header("2. BLOOD", C_TEAL))
story.append(Spacer(1, 4))
story.append(Paragraph("Composition of Blood", SUBSEC))
blood_comp = [
["Component", "% of Blood", "Key Points"],
["Plasma", "55%", "Water 91%, Proteins, Glucose, Hormones, Urea"],
["RBC (Erythrocytes)", "~44%", "Biconcave, No nucleus, Hb carries Oβ, Life = 120 days"],
["WBC (Leukocytes)", "< 1%", "5 types, Immunity, Life = hrsβdays"],
["Platelets (Thrombocytes)", "< 1%", "Clotting, No nucleus, Life = 8β10 days"],
]
story.append(colored_table(blood_comp, col_widths=[4*cm, 3.5*cm, 10*cm], header_color=C_TEAL))
story.append(Spacer(1, 5))
story.append(Paragraph("WBC Differential β Never Let Monkeys Eat Bananas", SUBSEC))
wbc_data = [
["WBC Type", "Normal %", "Key Function", "Special Feature"],
["Neutrophil (N)", "60β70%", "Phagocytosis β 1st responder to bacteria", "Multilobed nucleus"],
["Lymphocyte (L)", "20β30%", "B-cells: antibody; T-cells: cell immunity", "Large round nucleus"],
["Monocyte (M)", "2β8%", "Becomes Macrophage in tissues", "Kidney-shaped nucleus"],
["Eosinophil (E)", "2β4%", "Allergy & parasitic infections", "Bi-lobed, red granules"],
["Basophil (B)", "0β1%", "Releases histamine β allergy/inflammation", "Large blue granules"],
]
story.append(colored_table(wbc_data, col_widths=[4*cm, 2.5*cm, 6.5*cm, 4.5*cm], header_color=C_TEAL))
story.append(Spacer(1, 4))
story.append(Paragraph("Plasma Proteins", SUBSEC))
pp_data = [
["Protein", "Amount", "Main Functions"],
["Albumin", "55% (3.5β5 g/dL)", "Oncotic pressure, drug/hormone transport, buffer"],
["Globulin", "38%", "Immunoglobulins (antibodies), transport proteins (transferrin, ceruloplasmin)"],
["Fibrinogen", "7% (200β400 mg/dL)", "Converted to fibrin during clotting"],
]
story.append(colored_table(pp_data, col_widths=[3.5*cm, 4*cm, 10*cm], header_color=C_TEAL))
story.append(Spacer(1, 4))
story.append(tip_box(
"β
Albumin low β Oncotic pressure drops β Fluid leaks out of capillaries β OEDEMA (Swelling)",
bg=colors.HexColor("#e0f7fa"), tc=C_TEAL
))
story.append(Spacer(1, 5))
story.append(Paragraph("Blood Groups β ABO + Rh System", SUBSEC))
bg_data = [
["Blood Group", "Antigen on RBC", "Antibody in Plasma", "Can Donate To", "Can Receive From"],
["A", "A", "Anti-B", "A, AB", "A, O"],
["B", "B", "Anti-A", "B, AB", "B, O"],
["AB (Universal Recipient)", "A + B", "None", "AB only", "A, B, AB, O"],
["O (Universal Donor)", "None", "Anti-A + Anti-B", "A, B, AB, O", "O only"],
]
story.append(colored_table(bg_data, col_widths=[4.5*cm, 3*cm, 3.5*cm, 3*cm, 3.5*cm], header_color=C_TEAL))
story.append(Spacer(1, 4))
for b in [
"Rh+ = D antigen present (~85% Indians). Rhβ = D antigen absent.",
"Erythroblastosis Fetalis: Rhβ mother + Rh+ baby β mother forms anti-D β destroys baby's RBCs in next pregnancy.",
"Rh incompatibility prevention: Anti-D immunoglobulin (RhoGAM) given to Rhβ mother.",
]:
story.append(bullet(b))
story.append(Spacer(1, 5))
story.append(Paragraph("Erythropoiesis (RBC Formation)", SUBSEC))
ery_data = [
["Stage", "Site", "Key Requirement"],
["Fetal life", "Liver, Spleen, Yolk sac", "β"],
["Adult life", "Red Bone Marrow (flat bones)", "Iron, B12, Folic Acid, Erythropoietin (EPO)"],
]
story.append(colored_table(ery_data, col_widths=[4*cm, 7*cm, 6.5*cm], header_color=C_TEAL))
story.append(Spacer(1, 4))
story.append(tip_box(
"Maturation sequence: Proerythroblast β Erythroblast β Normoblast β Reticulocyte β Mature RBC | "
"EPO released by kidney in response to hypoxia | Destroyed in SPLEEN (RBC graveyard)",
bg=colors.HexColor("#e0f7fa"), tc=C_TEAL
))
story.append(Spacer(1, 5))
story.append(Paragraph("Haemostasis & Blood Coagulation", SUBSEC))
for b in [
"Step 1 β Vascular spasm: immediate vasoconstriction to reduce blood flow.",
"Step 2 β Platelet plug (Primary haemostasis): platelets adhere + aggregate at injury site.",
"Step 3 β Coagulation cascade (Secondary haemostasis): Fibrin clot formation.",
]:
story.append(bullet(b))
story.append(Spacer(1, 3))
clot_data = [
["Key Factor", "Number", "Significance"],
["Fibrinogen", "I", "Converted to Fibrin by Thrombin"],
["Prothrombin", "II", "Converted to Thrombin (active enzyme)"],
["Calcium", "IV", "Required in almost every step"],
["Antihemophilic Factor A", "VIII", "Deficient in Haemophilia A (commonest)"],
["Antihemophilic Factor B", "IX", "Deficient in Haemophilia B (Christmas disease)"],
["Stuart-Prower Factor", "X", "Common pathway β where intrinsic + extrinsic meet"],
]
story.append(colored_table(clot_data, col_widths=[5.5*cm, 3*cm, 9*cm], header_color=C_TEAL))
story.append(Spacer(1, 4))
story.append(tip_box(
"Vitamin K dependent factors: II, VII, IX, X | "
"Heparin: anticoagulant β activates antithrombin III | "
"Warfarin: inhibits Vit K β used in DVT/AF patients",
bg=colors.HexColor("#e0f7fa"), tc=C_TEAL
))
story.append(Spacer(1, 5))
story.append(Paragraph("Buffer Systems of Blood", SUBSEC))
buf_data = [
["Buffer System", "Location", "Importance"],
["Bicarbonate (HCOββ»/HβCOβ)", "Plasma + RBC", "Most important (50β60%) β lungs + kidneys regulate"],
["Haemoglobin Buffer", "RBC (inside)", "2nd most important; deoxyHb is better buffer"],
["Protein Buffer", "Plasma", "Albumin, globulins act as buffers"],
["Phosphate Buffer", "Kidney tubules", "Important for urinary pH regulation"],
]
story.append(colored_table(buf_data, col_widths=[5.5*cm, 4*cm, 8*cm], header_color=C_TEAL))
story.append(Spacer(1, 4))
story.append(tip_box(
"Acidosis: pH < 7.35 | Alkalosis: pH > 7.45 | "
"Respiratory acidosis: COβ retention (e.g., COPD) | Metabolic acidosis: HCOββ» loss (e.g., diarrhoea)",
bg=colors.HexColor("#e0f7fa"), tc=C_TEAL
))
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SECTION 3 β CARDIOVASCULAR SYSTEM
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(PageBreak())
story.append(section_header("3. CARDIOVASCULAR SYSTEM (CVS)", C_GREEN))
story.append(Spacer(1, 4))
story.append(Paragraph("Properties of Cardiac Muscle", SUBSEC))
prop_data = [
["Property", "Definition", "Clinical Relevance"],
["Automaticity", "Can generate its own impulse without external stimulus", "SA node = pacemaker"],
["Rhythmicity", "Impulses generated at regular intervals", "Regular heartbeat 72/min"],
["Conductivity", "Impulse conducted through specialised fibres", "Bundle of His, Purkinje fibres"],
["Contractility", "Ability to contract on stimulation", "Affected in heart failure"],
["Excitability", "Responds to adequate stimulus", "Action potential generation"],
["Refractoriness", "Cannot re-excite during contraction (absolute refractory period)", "Prevents tetanus of heart"],
]
story.append(colored_table(prop_data, col_widths=[4*cm, 7*cm, 6*cm], header_color=C_GREEN))
story.append(Spacer(1, 5))
story.append(Paragraph("Conducting System of Heart", SUBSEC))
cs_data = [
["Structure", "Location", "Intrinsic Rate", "Function"],
["SA Node (Pacemaker)", "Right Atrium", "70β80/min", "Initiates heartbeat β sets the pace"],
["AV Node", "Interatrial septum", "40β60/min", "Delays impulse 0.1 sec (allows atria to empty)"],
["Bundle of His", "IV Septum", "20β40/min", "Connects AV node to ventricles"],
["Right + Left Bundle Br.", "IV Septum sides", "20β40/min", "Transmits to respective ventricles"],
["Purkinje Fibres", "Ventricular walls", "15β40/min", "Rapid spread β simultaneous ventricular contraction"],
]
story.append(colored_table(cs_data, col_widths=[4.5*cm, 4*cm, 3*cm, 6*cm], header_color=C_GREEN))
story.append(Spacer(1, 4))
story.append(tip_box(
"β
SA Node fires fastest β overrides all others β Primary Pacemaker | "
"If SA node fails β AV node takes over (Junctional rhythm 40β60/min) | "
"Heart Block = AV node conduction blocked",
bg=colors.HexColor("#e8f5e9"), tc=C_GREEN
))
story.append(Spacer(1, 5))
story.append(Paragraph("Cardiac Cycle", SUBSEC))
cc_data = [
["Phase", "Duration", "Valves Open/Closed", "Event"],
["Atrial Systole", "0.1 sec", "AV open; Semilunar closed", "Atria contract; remaining blood enters ventricles"],
["Isovolumetric Contraction", "0.05 sec", "All valves CLOSED", "Ventricular pressure rises rapidly"],
["Rapid Ventricular Ejection", "0.25 sec", "Semilunar open; AV closed", "Blood ejected into aorta & pulmonary artery"],
["Isovolumetric Relaxation", "0.08 sec", "All valves CLOSED", "Ventricular pressure falls"],
["Rapid Ventricular Filling", "0.11 sec", "AV open; Semilunar closed", "Ventricles fill rapidly from atria"],
["Slow Filling (Diastasis)", "0.19 sec", "AV open", "Slow filling; heart at rest"],
]
story.append(colored_table(cc_data, col_widths=[4.5*cm, 2.5*cm, 4.5*cm, 6*cm], header_color=C_GREEN))
story.append(Spacer(1, 4))
hs_data = [
["Heart Sound", "Cause", "Heard Best At"],
["S1 'Lub'", "Closure of Mitral + Tricuspid (AV) valves", "Apex (Mitral area)"],
["S2 'Dub'", "Closure of Aortic + Pulmonary (Semilunar) valves", "Base of heart"],
["S3 (Pathological)", "Rapid ventricular filling (ventricular gallop)", "Heart failure"],
["S4 (Pathological)", "Atrial systole against stiff ventricle", "Hypertension, MI"],
]
story.append(colored_table(hs_data, col_widths=[3.5*cm, 8*cm, 6*cm], header_color=C_GREEN))
story.append(Spacer(1, 4))
story.append(Paragraph("Cardiac Output (CO)", SUBSEC))
story.append(tip_box(
"CO = Stroke Volume (SV) Γ Heart Rate (HR) = 70 mL Γ 72 = ~5 L/min | "
"Cardiac Index = CO / Body Surface Area = 3.2 L/min/mΒ² | "
"Ejection Fraction (EF) = SV/EDV Γ 100 = ~65% (normal > 55%) | "
"Starling's Law: Greater the stretch (preload) β Greater the force of contraction",
bg=colors.HexColor("#e8f5e9"), tc=C_GREEN
))
story.append(Spacer(1, 5))
story.append(Paragraph("ECG β Electrocardiogram", SUBSEC))
ecg_data = [
["Wave / Segment", "Represents", "Normal Duration"],
["P wave", "Atrial depolarization (SA node β AV node)", "< 0.12 sec"],
["PR interval", "Time from atrial to ventricular depolarization", "0.12β0.20 sec"],
["QRS complex", "Ventricular depolarization", "< 0.12 sec"],
["ST segment", "Ventricular plateau (no net current)", "Isoelectric (flat)"],
["T wave", "Ventricular repolarization", "Upright in most leads"],
["QT interval", "Total ventricular activity", "0.35β0.44 sec"],
]
story.append(colored_table(ecg_data, col_widths=[4.5*cm, 9*cm, 4*cm], header_color=C_GREEN))
story.append(Spacer(1, 4))
story.append(tip_box(
"Atrial repolarization is hidden within QRS complex | "
"ST elevation β Acute MI | ST depression β Ischaemia | "
"Prolonged QT β Risk of dangerous arrhythmia (Torsades de pointes)",
bg=colors.HexColor("#e8f5e9"), tc=C_GREEN
))
story.append(Spacer(1, 5))
story.append(Paragraph("Blood Pressure Regulation", SUBSEC))
bp_data = [
["Mechanism", "How It Works"],
["Baroreceptor Reflex", "Carotid sinus + Aortic arch detect BP changes β rapid reflex via ANS"],
["Renin-Angiotensin-Aldosterone (RAAS)", "Kidney JGA β Renin β Angiotensin II β vasoconstriction + Aldosterone β Na+ retention"],
["ADH (Vasopressin)", "Posterior pituitary β water reabsorption in kidney β increases blood volume"],
["Atrial Natriuretic Peptide (ANP)", "Released from atria when stretched β promotes Na+ & water loss β lowers BP"],
["Autonomic Nervous System", "SNS β increases HR + vasoconstriction; PNS β decreases HR (vagus nerve)"],
]
story.append(colored_table(bp_data, col_widths=[6*cm, 11.5*cm], header_color=C_GREEN))
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SECTION 4 β RESPIRATORY SYSTEM
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(PageBreak())
story.append(section_header("4. RESPIRATORY SYSTEM", C_MED))
story.append(Spacer(1, 4))
story.append(Paragraph("Mechanics of Breathing", SUBSEC))
mech_data = [
["Phase", "Type", "Mechanism", "Muscles Used"],
["Inspiration", "Active", "Diaphragm + ext. intercostals contract β thoracic volumeβ β pressureβ β air in", "Diaphragm, External intercostals"],
["Expiration (quiet)", "Passive", "Muscles relax β elastic recoil of lungs β volumeβ β pressureβ β air out", "No active muscles"],
["Forced Expiration", "Active", "Internal intercostals + abdominal muscles contract", "Internal intercostals, Abdominals"],
]
story.append(colored_table(mech_data, col_widths=[3*cm, 2.5*cm, 7.5*cm, 4.5*cm]))
story.append(Spacer(1, 5))
story.append(Paragraph("Lung Volumes & Capacities (Spirometry)", SUBSEC))
lv_data = [
["Volume / Capacity", "Normal Value", "Definition"],
["Tidal Volume (TV)", "500 mL", "Air in one normal breath"],
["Inspiratory Reserve Vol. (IRV)", "3000 mL", "Extra air inhaled beyond normal breath"],
["Expiratory Reserve Vol. (ERV)", "1100 mL", "Extra air exhaled beyond normal breath"],
["Residual Volume (RV)", "1200 mL", "Air always remaining in lungs (cannot be exhaled)"],
["Inspiratory Capacity (IC)", "3500 mL", "TV + IRV"],
["Functional Residual Cap. (FRC)", "2300 mL", "ERV + RV (at end of quiet expiration)"],
["Vital Capacity (VC)", "4600 mL", "TV + IRV + ERV β Maximum voluntary breath"],
["Total Lung Capacity (TLC)", "5800 mL", "VC + RV β All air lungs can hold"],
]
story.append(colored_table(lv_data, col_widths=[5.5*cm, 3*cm, 9*cm]))
story.append(Spacer(1, 4))
story.append(tip_box(
"β
RV cannot be measured by spirometer (cannot be exhaled) | "
"FRC = quiet end-expiratory position | "
"Dead Space = 150 mL (air in conducting airways β no gas exchange occurs here) | "
"Alveolar Ventilation = (TV β Dead Space) Γ RR = (500β150) Γ 12 = 4200 mL/min",
bg=C_LIGHT, tc=C_DARK
))
story.append(Spacer(1, 5))
story.append(Paragraph("Transport of Respiratory Gases", SUBSEC))
gas_data = [
["Gas", "Form", "% Transported", "Details"],
["Oβ", "Bound to Haemoglobin (Oxyhemoglobin)", "97%", "1 Hb carries 4 Oβ molecules; pOβ determines binding"],
["Oβ", "Dissolved in plasma", "3%", "Proportional to pOβ (Henry's Law)"],
["COβ", "Bicarbonate (HCOββ»)", "70%", "COβ + HβO β HβCOβ β HβΊ + HCOββ» (Carbonic anhydrase)"],
["COβ", "Carbaminohaemoglobin", "23%", "COβ binds to globin portion of Hb"],
["COβ", "Dissolved in plasma", "7%", "Small but important for pCOβ"],
]
story.append(colored_table(gas_data, col_widths=[2*cm, 5.5*cm, 3.5*cm, 6.5*cm]))
story.append(Spacer(1, 4))
story.append(tip_box(
"Chloride Shift (Hamburger Phenomenon): HCOββ» exits RBC β Clβ» enters to maintain electrical neutrality | "
"Bohr Effect: βCOβ/βTemp/βHβΊ β Oβ dissociation curve shifts RIGHT β Oβ released to tissues | "
"Haldane Effect: Deoxygenated Hb carries more COβ",
bg=C_LIGHT, tc=C_DARK
))
story.append(Spacer(1, 5))
story.append(Paragraph("Regulation of Respiration", SUBSEC))
reg_data = [
["Centre / Receptor", "Location", "Function"],
["Respiratory Centre", "Medulla oblongata", "DRG: inspiration; VRG: expiration (forced)"],
["Pneumotaxic Centre", "Pons", "Limits inspiration β switches to expiration"],
["Apneustic Centre", "Pons (lower)", "Prolongs inspiration (apneusis)"],
["Central Chemoreceptors", "Medulla surface", "Respond to βCOβ/βHβΊ in CSF β βventilation"],
["Peripheral Chemoreceptors", "Carotid + Aortic bodies", "Respond to βOβ, βCOβ, βpH β βventilation"],
["Hering-Breuer Reflex", "Lung stretch receptors (vagus)", "Inflation inhibits further inspiration (prevents overinflation)"],
]
story.append(colored_table(reg_data, col_widths=[5*cm, 5*cm, 7.5*cm]))
story.append(Spacer(1, 4))
story.append(tip_box(
"Primary stimulus for breathing = βCOβ (not βOβ) | "
"In COPD patients: Oβ becomes the drive (Hypoxic drive) β giving high Oβ can stop breathing!",
bg=C_LIGHT, tc=C_ACCENT
))
story.append(Spacer(1, 5))
story.append(Paragraph("Haemoglobin & Oxygen Dissociation Curve", SUBSEC))
hb_data = [
["Feature", "Detail"],
["Structure", "4 globin chains + 4 heme groups; each heme has 1 FeΒ²+ that binds 1 Oβ"],
["Types", "HbA (adult, Ξ±βΞ²β) β’ HbAβ (Ξ±βΞ΄β) β’ HbF (fetal, Ξ±βΞ³β β higher Oβ affinity)"],
["CO Poisoning", "CO binds Hb 250Γ more strongly than Oβ β forms carboxyhaemoglobin β cherry-red skin"],
["Sickle Cell", "Abnormal HbS (Ξ²-chain mutation) β deoxygenation β sickling β haemolysis"],
["Thalassaemia", "Reduced synthesis of Ξ± or Ξ² chains β hypochromic microcytic anaemia"],
["Curve shift RIGHT", "βCOβ, βTemp, βHβΊ, β2,3-DPG β Oβ released more easily (Bohr effect)"],
["Curve shift LEFT", "βCOβ, βTemp, βHβΊ, Fetal Hb β Oβ held more tightly"],
]
story.append(colored_table(hb_data, col_widths=[5*cm, 12.5*cm]))
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SECTION 5 β MCQ RAPID FIRE
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(PageBreak())
story.append(section_header("5. MCQ RAPID FIRE β High Yield Points", C_ACCENT))
story.append(Spacer(1, 4))
mcq_col1 = [
["#", "Question", "Answer"],
["1", "Universal Blood Donor", "O Negative (Oβ)"],
["2", "Universal Blood Recipient", "AB Positive (AB+)"],
["3", "Pacemaker of the heart", "SA Node"],
["4", "Largest WBC", "Monocyte"],
["5", "Most abundant WBC", "Neutrophil"],
["6", "Most abundant plasma protein", "Albumin"],
["7", "Clotting factor absent in Haemophilia A", "Factor VIII"],
["8", "Clotting factor absent in Haemophilia B", "Factor IX"],
["9", "Vitamin K dependent factors", "II, VII, IX, X"],
["10", "RBC life span", "120 days"],
["11", "Site of RBC destruction", "Spleen"],
["12", "Erythropoietin secreted by", "Kidney (Juxtaglomerular cells)"],
["13", "Blood group with no antigens on RBC", "Group O"],
["14", "Blood group with no antibodies in plasma", "Group AB"],
]
story.append(colored_table(mcq_col1, col_widths=[1.2*cm, 9*cm, 7.3*cm], header_color=C_ACCENT))
story.append(Spacer(1, 4))
mcq_col2 = [
["#", "Question", "Answer"],
["15", "Normal cardiac output", "~5 L/min"],
["16", "Normal stroke volume", "70 mL"],
["17", "Tidal volume (normal breath)", "500 mL"],
["18", "Vital Capacity", "4600 mL"],
["19", "Residual Volume (cannot be exhaled)", "1200 mL"],
["20", "Primary stimulus for breathing", "β COβ (not βOβ)"],
["21", "Main transport form of COβ in blood", "Bicarbonate (HCOββ») β 70%"],
["22", "Main transport form of Oβ in blood", "Oxyhemoglobin β 97%"],
["23", "Respiratory centre location", "Medulla Oblongata"],
["24", "Hering-Breuer reflex prevents", "Over-inflation of lungs"],
["25", "Normal blood pH", "7.35β7.45"],
["26", "Most important blood buffer", "Bicarbonate buffer"],
["27", "Fluid Mosaic Model β proposed by", "Singer & Nicolson (1972)"],
["28", "Absolute refractory period prevents", "Tetanus of cardiac muscle"],
]
story.append(colored_table(mcq_col2, col_widths=[1.2*cm, 9*cm, 7.3*cm], header_color=C_ACCENT))
story.append(Spacer(1, 6))
# ββ Exam Tips ββ
story.append(section_header("6. EXAM STRATEGY & TIPS", colors.HexColor("#4a148c")))
story.append(Spacer(1, 6))
tips = [
("LAQ Strategy (10 marks):", "Definition β Classification β Detailed mechanism/phases (with table if possible) β Diagram β Clinical significance β Homoeopathic connection (1-2 lines)"),
("SAQ Strategy (5 marks):", "Definition β 2β3 main points with headings β Small table or list β Normal value if applicable"),
("Short Note (2-3 marks):", "3β5 key bullet points. Be concise, include at least one value."),
("Diagrams that fetch marks:", "Cardiac Cycle (Wiggers diagram), Spirogram (lung volumes), Coagulation Cascade, Conducting System of Heart, ODC (Oβ dissociation curve)"),
("BHMS specific β always add:", "Vital Force (Hahnemann) concept when writing about homeostasis, health, and body regulation β examiners expect this in BHMS papers."),
("Common mistakes to avoid:", "Do not mix Kriya Sharir Paper 1 & 2 topics. Paper 1 = General + Blood + CVS + Respiratory ONLY."),
]
for head, content in tips:
row = [[
Paragraph(f"<b>{head}</b>", ParagraphStyle("th", fontName="Helvetica-Bold",
fontSize=9, textColor=colors.HexColor("#4a148c"), leading=13)),
Paragraph(content, ParagraphStyle("tc", fontName="Helvetica",
fontSize=8.5, textColor=colors.black, leading=13)),
]]
t = Table(row, colWidths=[5*cm, 12.5*cm])
t.setStyle(TableStyle([
("VALIGN", (0,0), (-1,-1), "TOP"),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
("LINEBELOW", (0,0), (-1,-1), 0.3, colors.HexColor("#ce93d8")),
("BACKGROUND", (0,0), (0,-1), colors.HexColor("#f3e5f5")),
]))
story.append(t)
story.append(Spacer(1, 10))
# ββ Footer note ββ
story.append(HRFlowable(width="100%", thickness=1, color=C_BORDER))
story.append(Spacer(1, 4))
story.append(Paragraph(
"BHMS 1st Year β Kriya Sharir Paper 1 Quick Reference | MPMSU Final Exam | "
"All the best! Study smart. 💕",
FOOTER_S
))
# ββ BUILD ββ
doc.build(story)
print(f"PDF created: {OUTPUT}")
cd /tmp/workspace/bhms-physiology && python generate_pdf.py 2>&1
ls -lh /tmp/workspace/bhms-physiology/Kriya_Sharir_Paper1_QuickRef.pdf
Kriya Sharir Paper1 QuickRef
PDF Document Β· PDF
| Section | Content |
|---|---|
| Normal Values Table | Sab important values ek jagah (Hb, RBC, WBC, BP, TV, VC, etc.) |
| Section 1 - General Physiology | Cell Membrane (Fluid Mosaic), Transport types, Osmosis, Homeostasis |
| Section 2 - Blood | Composition, WBC types (Never Let Monkeys...), Plasma proteins, Blood groups ABO+Rh, Erythropoiesis, Coagulation cascade, Buffer systems |
| Section 3 - CVS | Cardiac muscle properties, Conducting system, Cardiac cycle with all phases, Heart sounds, CO formula, ECG waves, BP regulation |
| Section 4 - Respiratory | Mechanics of breathing, Lung volumes spirometry table, Gas transport (Oβ + COβ), Respiratory regulation, Hb & ODC curve |
| Section 5 - MCQ Rapid Fire | 28 high-yield MCQs with answers |
| Section 6 - Exam Tips | LAQ/SAQ strategy, diagrams list, BHMS-specific Vital Force point |
Unit blood me se kitne no. Ke q.ayenge according to CBDC based mpmsu
MPMSU BHMS 1st year Kriya Sharir Paper 1 CBDC marking scheme marks distribution unit wise 2024 2025
CBDC BHMS Kriya Sharir syllabus unit blood marks weightage question paper pattern
https://homoeopathy.ac.in/uploads/1st-BHMS(CBDC)---2024_Summβ¦
| Theme | Topic | Total Marks | MCQ | SAQ | LAQ |
|---|---|---|---|---|---|
| A | General Physiology | 07 | β | β | β |
| B | Biophysics | 07 | β | β | β |
| C | Body Fluids & Blood + Immune Mechanism | 26 | β | β | β |
| D | Cardiovascular System | 16 | β | β | β |
| E | Respiratory System | 16 | β | β | β |
| F | Excretory System | 16 | β | β | β |
| G | Skin & Integumentary System | 06 | β | β | β |
| H | Nerve Muscle Physiology | 06 | β | β | β |
| TOTAL | 100 |
| Question Type | Blood (Theme C) se kitne |
|---|---|
| MCQ (1 mark each) | ~2 questions = 2 marks |
| SAQ (5 marks each) | ~2 questions = 10 marks |
| LAQ (10 marks each) | ~1 question = 10β14 marks |
| Total | ~26 marks |
"Questions can be asked from any paper's syllabus into any question paper. Students cannot claim that the question was not from the syllabus."
- CBDC official guideline
Blood unit ke liye detailed Q&A banao - sabhi expected questions cover karte hue
~/bhms-physiology/generate_blood_qa.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, PageBreak, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
OUTPUT = "/tmp/workspace/bhms-physiology/Blood_Unit_DetailedQA.pdf"
doc = SimpleDocTemplate(
OUTPUT, pagesize=A4,
rightMargin=1.5*cm, leftMargin=1.5*cm,
topMargin=2*cm, bottomMargin=2*cm,
)
# ββ Colours ββ
C_DARK = colors.HexColor("#880E4F") # deep maroon (blood theme)
C_MED = colors.HexColor("#AD1457")
C_LIGHT = colors.HexColor("#FCE4EC")
C_ACCENT = colors.HexColor("#B71C1C")
C_BLUE = colors.HexColor("#1565C0")
C_GREEN = colors.HexColor("#1B5E20")
C_TEAL = colors.HexColor("#006064")
C_PURPLE = colors.HexColor("#4A148C")
C_ORANGE = colors.HexColor("#E65100")
C_GREY = colors.HexColor("#F5F5F5")
C_BORDER = colors.HexColor("#F48FB1")
C_WHITE = colors.white
C_BLACK = colors.black
C_AMBER = colors.HexColor("#FF6F00")
# ββ Styles ββ
def S(name, **kw):
return ParagraphStyle(name, **kw)
TITLE = S("T", fontName="Helvetica-Bold", fontSize=22, textColor=C_WHITE,
alignment=TA_CENTER, leading=28, spaceAfter=4)
SUB = S("Sub", fontName="Helvetica", fontSize=11, textColor=C_WHITE,
alignment=TA_CENTER, leading=15, spaceAfter=3)
QHEAD = S("QH", fontName="Helvetica-Bold", fontSize=13, textColor=C_WHITE,
alignment=TA_LEFT, leading=18, leftIndent=6, spaceBefore=2)
AHEAD = S("AH", fontName="Helvetica-Bold", fontSize=10.5, textColor=C_DARK,
alignment=TA_LEFT, leading=15, spaceBefore=6, spaceAfter=2)
BODY = S("B", fontName="Helvetica", fontSize=9.5, textColor=C_BLACK,
alignment=TA_JUSTIFY, leading=14, leftIndent=8, spaceAfter=3)
BULLET = S("Bul", fontName="Helvetica", fontSize=9.5, textColor=C_BLACK,
alignment=TA_LEFT, leading=14, leftIndent=18, firstLineIndent=-10, spaceAfter=2)
IMP = S("Imp", fontName="Helvetica-Bold", fontSize=9.5, textColor=C_ACCENT,
alignment=TA_LEFT, leading=14, leftIndent=8, spaceAfter=2)
NOTE = S("Note", fontName="Helvetica-Oblique", fontSize=9, textColor=C_TEAL,
alignment=TA_LEFT, leading=13, leftIndent=8, spaceAfter=2)
MCQ_Q = S("MQ", fontName="Helvetica-Bold", fontSize=9.5, textColor=C_PURPLE,
alignment=TA_LEFT, leading=14, leftIndent=0, spaceAfter=1)
MCQ_A = S("MA", fontName="Helvetica", fontSize=9.5, textColor=C_GREEN,
alignment=TA_LEFT, leading=14, leftIndent=10, spaceAfter=5)
FOOTER = S("Ft", fontName="Helvetica-Oblique", fontSize=7.5,
textColor=colors.grey, alignment=TA_CENTER)
PGHEAD = S("PH", fontName="Helvetica-Bold", fontSize=10, textColor=C_DARK,
alignment=TA_RIGHT)
# ββ Helpers ββ
W = 17.5 * cm
def banner(text, sub=None, color=C_DARK):
rows = [[Paragraph(text, TITLE)]]
if sub:
rows.append([Paragraph(sub, SUB)])
t = Table(rows, colWidths=[W])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), color),
("TOPPADDING", (0,0), (-1,-1), 10),
("BOTTOMPADDING", (0,0), (-1,-1), 10),
]))
return t
def sec_head(text, color=C_DARK):
t = Table([[Paragraph(text, QHEAD)]], colWidths=[W])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), color),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 8),
]))
return t
def q_box(qnum, text, marks, color=C_MED):
label = f"Q{qnum}. {text} [{marks} Marks]"
t = Table([[Paragraph(label, QHEAD)]], colWidths=[W])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), color),
("TOPPADDING", (0,0), (-1,-1), 7),
("BOTTOMPADDING", (0,0), (-1,-1), 7),
("LEFTPADDING", (0,0), (-1,-1), 10),
]))
return t
def tip(text, bg=C_LIGHT, tc=C_ACCENT):
t = Table([[Paragraph(text, S("tip", fontName="Helvetica", fontSize=9,
textColor=tc, leading=13))]], colWidths=[W])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("BOX", (0,0), (-1,-1), 1, C_MED),
]))
return t
def ct(data, cws, hc=C_MED):
tbl = Table(data, colWidths=cws, repeatRows=1)
cmds = [
("BACKGROUND", (0,0), (-1,0), hc),
("TEXTCOLOR", (0,0), (-1,0), C_WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 8.5),
("ALIGN", (0,0), (-1,-1), "LEFT"),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 6),
("GRID", (0,0), (-1,-1), 0.4, C_BORDER),
]
for i in range(1, len(data)):
cmds.append(("BACKGROUND", (0,i), (-1,i),
C_GREY if i % 2 == 0 else C_WHITE))
tbl.setStyle(TableStyle(cmds))
return tbl
def bul(text): return Paragraph(f"• {text}", BULLET)
def imp(text): return Paragraph(f"★ {text}", IMP)
def note(text): return Paragraph(text, NOTE)
def sp(n=6): return Spacer(1, n)
def hr(): return HRFlowable(width="100%", thickness=0.5, color=C_BORDER)
# βββββββββββββββββββββββββββββββββββββββββββββββββββ
story = []
# ββ COVER ββ
story.append(banner(
"BLOOD UNIT β Complete Q&A",
"BHMS 1st Year | Kriya Sharir Paper 1 | CBDC / MPMSU | Theme C: 26 Marks",
C_DARK
))
story.append(sp(8))
story.append(tip(
"This document covers ALL expected questions from the Blood Unit (Theme C β 26 marks). "
"Includes: 3 LAQs (10 marks each) + 5 SAQs (5 marks each) + MCQ points + Diagrams guide.",
bg=colors.HexColor("#880E4F"), tc=C_WHITE
))
story.append(sp(6))
marks_data = [
["Question Type", "Marks Each", "From Blood Unit", "Total from Blood"],
["MCQ", "1 mark", "~2 questions", "~2 marks"],
["SAQ (Short Answer)", "5 marks", "~2 questions", "~10 marks"],
["LAQ (Long Answer)", "10 marks", "1β2 questions", "~14 marks"],
["TOTAL (Theme C)", "β", "β", "26 marks"],
]
story.append(ct(marks_data, [4.5*cm, 3.5*cm, 4.5*cm, 4.5*cm]))
story.append(sp(10))
# ββββββββββββββββββββββββββββββββββββββββββββββββββ
# SECTION A: LAQ (10 marks)
# ββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(sec_head("SECTION A β LONG ANSWER QUESTIONS (LAQ) | 10 Marks Each", C_ACCENT))
story.append(sp(6))
# βββββββββββββββββββββββββββββββββββββββββββββββββ
# LAQ 1: BLOOD COAGULATION
# βββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(q_box(1, "Describe the mechanism of Blood Coagulation (Haemostasis). Add a labelled diagram of the Coagulation Cascade.", "10", C_ACCENT))
story.append(sp(5))
story.append(Paragraph("ANSWER:", AHEAD))
story.append(Paragraph(
"<b>Definition:</b> Haemostasis is the physiological process by which bleeding is arrested "
"after injury to a blood vessel. It involves three sequential phases.",
BODY))
story.append(sp(4))
story.append(Paragraph("<b>PHASE 1 β Vascular Spasm</b>", AHEAD))
for b in [
"Immediate reflex vasoconstriction occurs within seconds of injury.",
"Local myogenic spasm + nervous reflexes + local humoral factors (thromboxane A2, serotonin) cause the vessel to contract.",
"Reduces blood flow through the damaged area, buying time for platelet plug formation.",
"Lasts: Several minutes to hours.",
]:
story.append(bul(b))
story.append(sp(4))
story.append(Paragraph("<b>PHASE 2 β Platelet Plug Formation (Primary Haemostasis)</b>", AHEAD))
for b in [
"Exposed sub-endothelial collagen activates platelets (platelet activation).",
"Platelets adhere to collagen via von Willebrand Factor (vWF) β this is ADHESION.",
"Activated platelets release ADP, thromboxane A2, serotonin β recruit more platelets β AGGREGATION.",
"A loose platelet plug forms β this is PRIMARY haemostasis.",
"Sufficient to stop bleeding in small vessel injuries.",
]:
story.append(bul(b))
story.append(sp(4))
story.append(Paragraph("<b>PHASE 3 β Coagulation Cascade (Secondary Haemostasis)</b>", AHEAD))
story.append(Paragraph(
"The coagulation cascade converts the loose platelet plug into a stable fibrin clot through "
"two pathways that converge into a common final pathway.",
BODY))
story.append(sp(3))
cascade_data = [
["INTRINSIC PATHWAY", "EXTRINSIC PATHWAY", "COMMON PATHWAY"],
["Triggered by blood contact with\ndamaged vessel wall (collagen)",
"Triggered by tissue damage\n(Tissue Factor / Factor III released)",
"Both pathways activate Factor X"],
["Factor XII (Hageman Factor)\nβ\nFactor XI\nβ\nFactor IX + VIII",
"Factor VII + Tissue Factor\nβ\nFactor X activated directly",
"Factor Xa + Factor V\nβ\nProthrombinase complex"],
["Slower (takes minutes)",
"Faster (dominant in vivo)",
"Prothrombin (II) β Thrombin\nFibrinogen (I) β Fibrin\nFactor XIII: cross-links fibrin"],
]
story.append(ct(cascade_data, [5.5*cm, 5.5*cm, 6.5*cm], hc=C_ACCENT))
story.append(sp(5))
story.append(Paragraph("<b>Important Clotting Factors (Must Memorise)</b>", AHEAD))
cf_data = [
["Factor", "Name", "Key Role / Notes"],
["I", "Fibrinogen", "Converted to Fibrin by Thrombin"],
["II", "Prothrombin", "Converted to Thrombin (key enzyme of cascade)"],
["III", "Tissue Factor (Thromboplastin)", "Initiates Extrinsic pathway"],
["IV", "Calcium (CaΒ²βΊ)", "Required at ALMOST EVERY step β MCQ favourite"],
["V", "Labile Factor", "Cofactor; forms prothrombinase with Xa"],
["VII", "Stable Factor", "Extrinsic pathway; Vitamin K dependent"],
["VIII", "Antihemophilic Factor A","Absent in Haemophilia A (most common)"],
["IX", "Antihemophilic Factor B","Absent in Haemophilia B (Christmas Disease)"],
["X", "Stuart-Prower Factor", "Common pathway entry point"],
["XI", "Plasma Thromboplastin Antecedent", "Intrinsic pathway"],
["XII", "Hageman Factor", "Contact activation β starts intrinsic pathway"],
["XIII", "Fibrin Stabilising Factor", "Cross-links fibrin β stable clot"],
]
story.append(ct(cf_data, [1.8*cm, 5.5*cm, 10.2*cm], hc=C_PURPLE))
story.append(sp(5))
story.append(Paragraph("<b>Vitamin K Dependent Factors</b>", AHEAD))
story.append(tip(
"Vitamin K dependent: Factors II, VII, IX, X (Mnemonic: '1972' β II, VII, IX, X) | "
"Warfarin blocks Vitamin K β inhibits these factors β used as anticoagulant in DVT, AF | "
"Heparin β activates Antithrombin III β inhibits thrombin + Xa",
bg=colors.HexColor("#FFF3E0"), tc=C_ORANGE
))
story.append(sp(5))
story.append(Paragraph("<b>Fibrinolysis β Clot Dissolution</b>", AHEAD))
for b in [
"After wound healing, the clot must be dissolved β this is FIBRINOLYSIS.",
"Plasminogen β activated to PLASMIN (by tPA β tissue Plasminogen Activator).",
"Plasmin digests fibrin β clot dissolves.",
"Produces Fibrin Degradation Products (FDPs) / D-dimers β used clinically to detect clots.",
]:
story.append(bul(b))
story.append(sp(4))
story.append(Paragraph("<b>Coagulation Diagram (Draw in Exam)</b>", AHEAD))
diag_data = [
["INTRINSIC PATH", " ", "EXTRINSIC PATH"],
["Factor XII (contact)", "β¬", "Tissue Factor + Factor VII"],
["Factor XI", " ", "β¬"],
["Factor IX", " ", "Factor X ββββββββββ"],
["Factor IX + VIII + CaΒ²βΊ + PL", "βββββ", "Factor X (activated)"],
[" ", " ", "Factor X + V + CaΒ²βΊ + PL"],
[" ", " ", "β PROTHROMBINASE"],
[" ", " ", "Prothrombin (II) β THROMBIN"],
[" ", " ", "β"],
[" ", " ", "Fibrinogen (I) β FIBRIN"],
[" ", " ", "Factor XIII β Stable Fibrin Clot"],
]
diag = Table(diag_data, colWidths=[5.5*cm, 3*cm, 9*cm])
diag.setStyle(TableStyle([
("FONTNAME", (0,0), (-1,-1), "Helvetica"),
("FONTSIZE", (0,0), (-1,-1), 8.5),
("BACKGROUND", (0,0), (-1,0), C_LIGHT),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("TEXTCOLOR", (0,0), (-1,0), C_ACCENT),
("ALIGN", (0,0), (-1,-1), "LEFT"),
("TOPPADDING", (0,0), (-1,-1), 3),
("BOTTOMPADDING", (0,0), (-1,-1), 3),
("LEFTPADDING", (0,0), (-1,-1), 6),
("BOX", (0,0), (-1,-1), 1, C_BORDER),
("INNERGRID", (0,0), (-1,-1), 0.3, C_BORDER),
]))
story.append(diag)
story.append(sp(4))
story.append(tip(
"β
Exam Tip: Write all 3 phases clearly with headings. Draw cascade diagram. "
"Mention Haemophilia A (Factor VIII) and B (Factor IX). Mention Vitamin K factors. "
"Add 2 lines on Homoeopathic connection: Vital Force maintains vascular integrity.",
bg=C_LIGHT, tc=C_DARK
))
# βββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(PageBreak())
# LAQ 2: ERYTHROPOIESIS
# βββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(q_box(2, "Describe Erythropoiesis β Formation, Stages, Regulation and Factors.", "10", C_ACCENT))
story.append(sp(5))
story.append(Paragraph("ANSWER:", AHEAD))
story.append(Paragraph(
"<b>Definition:</b> Erythropoiesis is the process of formation and maturation of Red Blood Cells "
"(Erythrocytes). In a healthy adult, approximately 2β3 million RBCs are produced every second.",
BODY))
story.append(sp(4))
story.append(Paragraph("<b>Sites of Erythropoiesis (Age-wise)</b>", AHEAD))
site_data = [
["Age / Stage", "Site of RBC Production"],
["First 2 months of fetal life", "Yolk Sac (extra-embryonic)"],
["2nd β 7th month (fetal)", "Liver (primary site) + Spleen"],
["Last 2 months of fetal life", "Red Bone Marrow begins"],
["Birth onwards (child & adult)", "Red Bone Marrow ONLY β flat bones: sternum, vertebrae, ribs, ileum, skull"],
["Old age / disease", "Liver and spleen may reactivate (extramedullary erythropoiesis)"],
]
story.append(ct(site_data, [5*cm, 12.5*cm]))
story.append(sp(5))
story.append(Paragraph("<b>Stages of Erythropoiesis (Maturation Sequence)</b>", AHEAD))
stage_data = [
["Stage", "Key Features", "Nucleus"],
["Proerythroblast\n(Pronormoblast)", "Largest cell; basophilic cytoplasm; Hb synthesis begins", "Large, prominent"],
["Basophilic Erythroblast", "Deeply basophilic; active RNA; Hb increasing", "Large"],
["Polychromatophilic Erythroblast", "Both acidophilic + basophilic staining; Hb ββ", "Smaller"],
["Orthochromatic Erythroblast\n(Late Normoblast)", "Mainly acidophilic; nearly full Hb", "Pyknotic (shrinking)"],
["Reticulocyte", "No nucleus; residual RNA network; released into blood", "NO nucleus"],
["Mature RBC (Erythrocyte)", "Biconcave disc; full Hb content; no nucleus, no mitochondria", "ABSENT"],
]
story.append(ct(stage_data, [5*cm, 7.5*cm, 5*cm]))
story.append(sp(4))
story.append(tip(
"Mnemonic for stages: 'Pro-BPON-Reti-RBC' | "
"Reticulocyte count = 0.5β2% of RBCs in blood (raised in haemolytic anaemia) | "
"Normal RBC: biconcave, 6β8 Β΅m diameter, no nucleus, life = 120 days",
bg=colors.HexColor("#E8F5E9"), tc=C_GREEN
))
story.append(sp(5))
story.append(Paragraph("<b>Regulation of Erythropoiesis</b>", AHEAD))
story.append(Paragraph(
"<b>Erythropoietin (EPO)</b> is the primary hormonal regulator.",
BODY))
for b in [
"Produced mainly by: Peritubular cells of KIDNEY (90%) + Liver (10%).",
"Stimulus for EPO release: Tissue HYPOXIA (low Oβ) β high altitude, anaemia, lung disease.",
"Action of EPO: Stimulates bone marrow β β RBC production β β Oβ carrying capacity.",
"Negative feedback: When Oβ levels normalise, EPO production falls.",
"Clinical use: Recombinant EPO (rHuEPO) used in anaemia of chronic kidney disease.",
"Abuse: Misused by athletes (blood doping) to increase Oβ delivery to muscles.",
]:
story.append(bul(b))
story.append(sp(5))
story.append(Paragraph("<b>Factors Required for Normal Erythropoiesis</b>", AHEAD))
fac_data = [
["Factor / Nutrient", "Role", "Deficiency Causes"],
["Iron (FeΒ²βΊ)", "Essential for Haem synthesis (part of Haemoglobin)", "Iron Deficiency Anaemia β microcytic hypochromic"],
["Vitamin B12 (Cobalamin)", "DNA synthesis; requires Intrinsic Factor for absorption", "Megaloblastic / Pernicious Anaemia"],
["Folic Acid (Vit B9)", "DNA synthesis (purine + pyrimidine)", "Megaloblastic Anaemia (macrocytic)"],
["Erythropoietin (EPO)", "Stimulates stem cells to differentiate into RBCs", "Anaemia of CKD"],
["Protein (Amino acids)", "Globin chain synthesis", "Nutritional anaemia"],
["Copper (Cu)", "Iron absorption + Hb synthesis facilitator", "Mild anaemia"],
["Vitamin C", "Enhances iron absorption (reduces FeΒ³βΊ β FeΒ²βΊ)", "Impaired iron absorption"],
["Vitamin B6 (Pyridoxine)", "Haem synthesis", "Sideroblastic anaemia"],
["Thyroid hormone, Androgens", "Stimulate EPO + bone marrow directly", "Anaemia of hypothyroidism"],
]
story.append(ct(fac_data, [4.5*cm, 6*cm, 7*cm]))
story.append(sp(5))
story.append(Paragraph("<b>Fate of RBC β Destruction</b>", AHEAD))
for b in [
"After 120 days, old RBCs become rigid and are trapped in the SPLEEN (RBC Graveyard).",
"Macrophages of spleen + liver phagocytose old RBCs.",
"Haemoglobin broken down: Globin β amino acids (recycled); Haem β Bilirubin (excreted in bile).",
"Iron is recycled β stored as ferritin/haemosiderin or reused for new Hb synthesis.",
]:
story.append(bul(b))
story.append(sp(4))
story.append(tip(
"β
Exam Tip: Draw the maturation stages table. Write EPO regulation clearly. "
"Mention Vitamin B12 needs Intrinsic Factor (from gastric parietal cells) β key for Pernicious Anaemia.",
bg=C_LIGHT, tc=C_DARK
))
# βββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(PageBreak())
# LAQ 3: BLOOD GROUPS
# βββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(q_box(3, "Describe ABO and Rh Blood Group Systems. Explain the clinical significance and transfusion reactions.", "10", C_ACCENT))
story.append(sp(5))
story.append(Paragraph("ANSWER:", AHEAD))
story.append(Paragraph(
"<b>Blood Group Systems</b> classify blood based on the presence or absence of specific "
"<b>antigens</b> on the surface of Red Blood Cells and corresponding <b>antibodies</b> in plasma. "
"The most clinically important are ABO and Rh systems.",
BODY))
story.append(sp(4))
story.append(Paragraph("<b>ABO Blood Group System β Landsteiner (1900)</b>", AHEAD))
story.append(Paragraph(
"Based on <b>Landsteiner's Law</b>: If an antigen is absent from RBCs, "
"the corresponding antibody WILL be present in plasma.",
BODY))
story.append(sp(3))
abo_data = [
["Blood Group", "Antigen on RBC", "Antibody in Plasma", "Frequency (Indians)", "Special Name"],
["A", "A antigen", "Anti-B", "~28%", "β"],
["B", "B antigen", "Anti-A", "~38%", "β"],
["AB", "A + B antigens", "NONE", "~9%", "Universal Recipient"],
["O", "NONE", "Anti-A + Anti-B", "~25%", "Universal Donor"],
]
story.append(ct(abo_data, [2.8*cm, 3.5*cm, 4*cm, 3.7*cm, 3.5*cm]))
story.append(sp(4))
story.append(Paragraph("<b>Transfusion Compatibility Chart</b>", AHEAD))
comp_data = [
["Recipient's Blood Group", "Can Safely Receive From"],
["A", "A, O"],
["B", "B, O"],
["AB (Universal Recipient)", "A, B, AB, O β can receive from ALL"],
["O (Universal Donor)", "O only β can receive from O only"],
]
story.append(ct(comp_data, [6*cm, 11.5*cm]))
story.append(sp(5))
story.append(Paragraph("<b>Rh Blood Group System</b>", AHEAD))
for b in [
"Discovered by Landsteiner and Wiener (1940) β named after Rhesus monkey.",
"Based on the D antigen (most important of ~50 Rh antigens).",
"Rh Positive (Rh+): D antigen PRESENT on RBCs (~93β95% of Indians).",
"Rh Negative (Rhβ): D antigen ABSENT on RBCs (~5β7% of Indians).",
"Unlike ABO β Rh antibodies are NOT naturally present; they form only after exposure (sensitisation).",
]:
story.append(bul(b))
story.append(sp(5))
story.append(Paragraph("<b>Erythroblastosis Fetalis (Haemolytic Disease of Newborn)</b>", AHEAD))
ef_data = [
["Step", "Event"],
["1st Pregnancy", "Rhβ mother + Rh+ father β Rh+ baby. At delivery, fetal RBCs enter mother's blood."],
["Sensitisation", "Mother's immune system produces Anti-D IgG antibodies (takes weeks β 1st baby usually unaffected)."],
["2nd Pregnancy", "If 2nd baby is Rh+, mother's Anti-D antibodies cross placenta β destroy fetal RBCs."],
["Disease", "Fetal: severe haemolytic anaemia, jaundice, hydrops fetalis, kernicterus (brain damage from bilirubin)."],
["Prevention", "Anti-D Immunoglobulin (RhoGAM) given to Rhβ mother within 72 hrs of delivery/abortion. Prevents sensitisation."],
]
story.append(ct(ef_data, [4*cm, 13.5*cm]))
story.append(sp(5))
story.append(Paragraph("<b>Transfusion Reaction β What Happens if Wrong Blood Given?</b>", AHEAD))
for b in [
"Donor antigen meets recipient antibody β AGGLUTINATION (clumping of RBCs).",
"Agglutinated RBCs block capillaries β ischaemia in organs.",
"Complement activation β HAEMOLYSIS (RBC rupture) β release of free Hb β haemoglobinaemia.",
"Free Hb β kidneys β blocks renal tubules β ACUTE RENAL FAILURE.",
"Clinical features: fever, chills, back pain, haemoglobinuria (cola-coloured urine), hypotension, shock.",
"Management: Stop transfusion immediately, IV fluids, mannitol (to protect kidneys), symptomatic treatment.",
]:
story.append(bul(b))
story.append(sp(4))
story.append(tip(
"β
Exam Tip: Draw the ABO table with antigens + antibodies. Explain Erythroblastosis Fetalis in steps. "
"Mention RhoGAM. Add 1 line: Homoeopathy treats the individual constitution β blood group can reflect "
"constitutional tendencies (correlation with miasms is a point examiners appreciate).",
bg=C_LIGHT, tc=C_DARK
))
# ββββββββββββββββββββββββββββββββββββββββββββββββββ
# SECTION B: SAQ (5 marks)
# ββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(PageBreak())
story.append(sec_head("SECTION B β SHORT ANSWER QUESTIONS (SAQ) | 5 Marks Each", C_BLUE))
story.append(sp(6))
# SAQ 1: WBC
story.append(q_box(4, "Classify WBC (Leukocytes). Describe their functions.", "5", C_BLUE))
story.append(sp(4))
story.append(Paragraph("ANSWER:", AHEAD))
story.append(Paragraph(
"<b>Definition:</b> WBCs (Leukocytes) are nucleated, colourless blood cells that form the "
"cellular defence system of the body. Normal count: <b>4,000 β 11,000 cells/Β΅L</b>.",
BODY))
story.append(sp(3))
wbc_data = [
["Type", "Normal %", "Size / Nucleus", "Main Function", "Increased In"],
["GRANULOCYTES", "", "", "", ""],
["Neutrophil", "60β70%", "10β14 Β΅m; multi-lobed", "Phagocytosis of bacteria; 1st responder to acute infection", "Bacterial infections, Appendicitis"],
["Eosinophil", "2β4%", "Bi-lobed; red granules", "Allergy (IgE mediated); anti-parasitic; phagocytosis of Ag-Ab complexes", "Allergy, Asthma, Parasites"],
["Basophil", "0β1%", "Bi-lobed; large blue granules", "Releases Histamine + Heparin; role in allergy & inflammation", "Allergy, CML"],
["AGRANULOCYTES", "", "", "", ""],
["Lymphocyte", "20β30%", "Large round nucleus", "B cells: antibody production; T cells: cell-mediated immunity; NK cells: kill tumours/viruses", "Viral infections, TB, Leukaemia"],
["Monocyte", "2β8%", "Kidney-shaped nucleus; largest WBC", "Phagocytosis; becomes Macrophage in tissues; antigen presentation to T cells", "Chronic infections, TB, Typhoid"],
]
story.append(ct(wbc_data, [3*cm, 2*cm, 4*cm, 5.5*cm, 3*cm], hc=C_BLUE))
story.append(sp(4))
story.append(tip(
"Mnemonic: Never Let Monkeys Eat Bananas = Neutrophil, Lymphocyte, Monocyte, Eosinophil, Basophil | "
"Leukocytosis = WBC > 11,000 | Leukopaenia = WBC < 4,000 | Leukaemia = malignant proliferation",
bg=colors.HexColor("#E3F2FD"), tc=C_BLUE
))
story.append(sp(8))
# SAQ 2: ANAEMIA
story.append(q_box(5, "Define Anaemia. Classify it and describe Iron Deficiency Anaemia in detail.", "5", C_BLUE))
story.append(sp(4))
story.append(Paragraph("ANSWER:", AHEAD))
story.append(Paragraph(
"<b>Definition:</b> Anaemia is a condition in which the haemoglobin concentration (or RBC count) "
"falls below the normal range for age and sex, resulting in reduced Oβ carrying capacity of blood.",
BODY))
story.append(sp(3))
story.append(Paragraph("<b>Normal Hb values:</b>", AHEAD))
hb_data = [
["Category", "Normal Hb", "Anaemia if below"],
["Adult Male", "13β17 g/dL", "< 13 g/dL"],
["Adult Female", "12β15 g/dL", "< 12 g/dL"],
["Pregnant Female", "11β14 g/dL", "< 11 g/dL"],
["Children (6β14 yrs)", "12β15 g/dL", "< 12 g/dL"],
]
story.append(ct(hb_data, [5*cm, 4*cm, 5*cm]))
story.append(sp(4))
story.append(Paragraph("<b>Classification of Anaemia</b>", AHEAD))
anem_data = [
["Based on RBC Morphology", "Type", "Cause"],
["Microcytic Hypochromic", "Small pale RBCs (MCV < 80 fl)", "Iron deficiency, Thalassaemia, Lead poisoning"],
["Normocytic Normochromic", "Normal size + colour", "Acute blood loss, Haemolytic anaemia, Aplastic anaemia"],
["Macrocytic / Megaloblastic", "Large RBCs (MCV > 100 fl)", "Vit B12 deficiency, Folic acid deficiency"],
]
story.append(ct(anem_data, [5.5*cm, 4*cm, 8*cm], hc=C_BLUE))
story.append(sp(4))
anem2_data = [
["Based on Aetiology", "Details"],
["Iron Deficiency Anaemia", "Most common worldwide; microcytic hypochromic; Feβ, ferritinβ, TIBCβ"],
["Megaloblastic Anaemia", "B12/Folate deficiency; macrocytic; hypersegmented neutrophils"],
["Pernicious Anaemia", "Autoimmune β no Intrinsic Factor β B12 not absorbed β megaloblastic"],
["Haemolytic Anaemia", "RBCs destroyed prematurely; reticulocytosis; Coombs test +ve"],
["Sickle Cell Anaemia", "HbS β deoxygenation β sickling β haemolysis + vaso-occlusion"],
["Aplastic Anaemia", "Bone marrow failure; pancytopaenia; very serious"],
["Thalassaemia", "Genetic β reduced globin chain synthesis; common in India"],
]
story.append(ct(anem2_data, [5*cm, 12.5*cm], hc=C_BLUE))
story.append(sp(4))
story.append(tip(
"Iron Deficiency Anaemia features: Fatigue, pallor, koilonychia (spoon nails), glossitis, "
"pica (craving chalk/mud), angular stomatitis. Lab: Hbβ, MCVβ, MCHβ, serum ferritinβ, TIBCβ.",
bg=colors.HexColor("#E3F2FD"), tc=C_BLUE
))
story.append(sp(8))
# SAQ 3: PLASMA PROTEINS
story.append(q_box(6, "Describe Plasma Proteins β types, properties and functions.", "5", C_BLUE))
story.append(sp(4))
story.append(Paragraph("ANSWER:", AHEAD))
story.append(Paragraph(
"<b>Plasma proteins</b> are macromolecules present in blood plasma. "
"Total plasma protein concentration: <b>6β8 g/dL</b>. "
"Synthesised mainly by the LIVER (70β80%). "
"They provide the colloid osmotic (oncotic) pressure of plasma (~25 mmHg).",
BODY))
story.append(sp(3))
pp_data = [
["Protein", "Normal Level", "Synthesised By", "Key Functions"],
["Albumin (55%)", "3.5β5.5 g/dL", "Liver", "β Maintains oncotic pressure (most important)\nβ‘ Transports drugs, hormones (T4, cortisol), bilirubin, fatty acids\nβ’ Buffer function\nβ£ Protein reserve of body"],
["Globulins (38%)", "2.0β3.5 g/dL", "Liver + Plasma cells", "Ξ±-globulins: transport proteins (ceruloplasmin, haptoglobin)\nΞ²-globulins: transferrin (Fe transport), complement\nΞ³-globulins: IMMUNOGLOBULINS (IgG, IgA, IgM, IgE, IgD) = Antibodies"],
["Fibrinogen (7%)", "200β400 mg/dL", "Liver", "Clotting β converted to Fibrin by Thrombin\nAcute phase reactant (rises in inflammation)"],
]
story.append(ct(pp_data, [3*cm, 3*cm, 3.5*cm, 8*cm]))
story.append(sp(4))
story.append(Paragraph("<b>Oncotic Pressure and Oedema</b>", AHEAD))
for b in [
"Oncotic (colloid osmotic) pressure is created mainly by ALBUMIN (due to its high concentration + molecular weight).",
"It opposes the outward filtration of fluid from capillaries β keeps water inside vessels.",
"Albumin β (hypoalbuminaemia) β oncotic pressure β β fluid leaks into interstitium β OEDEMA.",
"Causes of hypoalbuminaemia: Liver disease (cirrhosis), Nephrotic syndrome (protein in urine), Malnutrition, Protein-losing enteropathy.",
"A:G ratio (Albumin:Globulin) = normally >1.0; reversed in liver disease/chronic infections.",
]:
story.append(bul(b))
story.append(sp(8))
# SAQ 4: BUFFER SYSTEMS
story.append(q_box(7, "Describe the Buffer Systems of Blood. How is blood pH maintained?", "5", C_BLUE))
story.append(sp(4))
story.append(Paragraph("ANSWER:", AHEAD))
story.append(Paragraph(
"<b>Buffer:</b> A substance that resists changes in pH when acid or base is added. "
"Normal blood pH: <b>7.35 β 7.45</b> (slightly alkaline). "
"The body uses multiple buffer systems working together to maintain this narrow range.",
BODY))
story.append(sp(3))
buf_data = [
["Buffer System", "Location", "% Contribution", "Mechanism"],
["Bicarbonate Buffer\n(HβCOβ / HCOββ»)", "Plasma + RBC", "50β60%\n(Most Important)", "COβ + HβO β HβCOβ β HβΊ + HCOββ»\nLungs control COβ; Kidneys control HCOββ»\nKidneyβLung teamwork = primary pH control"],
["Haemoglobin Buffer", "Inside RBC", "~30%\n(2nd Most)", "Deoxyhaemoglobin is a better buffer than oxyhaemoglobin\nBinds HβΊ released when COβ enters RBC (Chloride Shift)"],
["Protein Buffer\n(Plasma proteins)", "Plasma", "~7%", "Amino acid side chains (βNHβ and βCOOH) act as weak acids/bases\nAlbumin is main plasma buffer"],
["Phosphate Buffer\n(HβPOββ» / HPOβΒ²β»)", "RBC + Renal tubules", "~5%", "More important inside cells and in urine\nKidney tubular fluid pH regulation"],
]
story.append(ct(buf_data, [4*cm, 3*cm, 3*cm, 7.5*cm]))
story.append(sp(4))
story.append(Paragraph("<b>Acid-Base Disorders</b>", AHEAD))
ab_data = [
["Condition", "pH", "Primary Defect", "Compensation", "Common Cause"],
["Respiratory Acidosis", "< 7.35", "β pCOβ", "Kidneys retain HCOββ»", "COPD, Hypoventilation"],
["Respiratory Alkalosis", "> 7.45", "β pCOβ", "Kidneys excrete HCOββ»", "Hyperventilation, Anxiety"],
["Metabolic Acidosis", "< 7.35", "β HCOββ»", "Lungs β ventilation (Kussmaul breathing)", "Diarrhoea, Renal failure, DKA"],
["Metabolic Alkalosis", "> 7.45", "β HCOββ»", "Lungs β ventilation", "Vomiting, Antacid excess"],
]
story.append(ct(ab_data, [4.5*cm, 1.5*cm, 3.5*cm, 4.5*cm, 3.5*cm], hc=C_TEAL))
story.append(sp(8))
# SAQ 5: HAEMOGLOBIN
story.append(q_box(8, "Describe the Structure and Functions of Haemoglobin.", "5", C_BLUE))
story.append(sp(4))
story.append(Paragraph("ANSWER:", AHEAD))
story.append(Paragraph(
"<b>Haemoglobin (Hb)</b> is the oxygen-carrying metalloprotein inside Red Blood Cells. "
"It is responsible for the red colour of blood. "
"<b>Normal values:</b> Male: 13β17 g/dL | Female: 12β15 g/dL.",
BODY))
story.append(sp(3))
story.append(Paragraph("<b>Structure of Haemoglobin</b>", AHEAD))
for b in [
"Molecular weight: ~68,000 Daltons (68 kDa).",
"Each Hb molecule = 4 subunits (tetramer): 4 GLOBIN chains + 4 HAEM groups.",
"Each HAEM group = porphyrin ring + 1 iron atom (FeΒ²βΊ β ferrous form).",
"Each FeΒ²βΊ binds 1 molecule of Oβ β so 1 Hb carries 4 Oβ molecules.",
"HbA (Adult): Ξ±βΞ²β (most common in adults, >96%).",
"HbAβ: Ξ±βΞ΄β (~2.5%) β elevated in Beta-Thalassaemia trait.",
"HbF (Foetal): Ξ±βΞ³β β higher Oβ affinity (leftward shifted ODC) β replaced by HbA after birth.",
]:
story.append(bul(b))
story.append(sp(4))
story.append(Paragraph("<b>Functions of Haemoglobin</b>", AHEAD))
hb_func = [
["Function", "Details"],
["Oβ Transport", "Carries Oβ from lungs to tissues as OXYHEMOGLOBIN (HbOβ). Each gram of Hb carries 1.34 mL Oβ."],
["COβ Transport", "~23% of COβ is carried as CARBAMINOHAEMOGLOBIN (COβ binds to globin chains)."],
["HβΊ Buffer", "Hb is the most important intracellular buffer in blood. Accepts HβΊ released from COβ+HβO reaction."],
["NO Transport", "Carries nitric oxide (NO) β regulates vasodilation."],
["Bohr Effect", "βCOβ/βHβΊ/βTemp β Hb releases Oβ more readily at tissues (Oβ dissociation curve shifts RIGHT)."],
["Haldane Effect", "Deoxygenated Hb binds more COβ than oxygenated Hb β facilitates COβ removal at lungs."],
]
story.append(ct(hb_func, [4.5*cm, 13*cm]))
story.append(sp(4))
story.append(tip(
"CO Poisoning: CO binds Hb 250Γ stronger than Oβ β Carboxyhaemoglobin β bright cherry-red skin β cellular hypoxia | "
"MetHb: FeΒ²βΊ oxidised to FeΒ³βΊ β cannot carry Oβ β treat with methylene blue",
bg=colors.HexColor("#E3F2FD"), tc=C_BLUE
))
story.append(sp(8))
# SAQ 6: PLATELET
story.append(q_box(9, "Describe the formation, properties and functions of Platelets (Thrombocytes).", "5", C_BLUE))
story.append(sp(4))
story.append(Paragraph("ANSWER:", AHEAD))
plat_data = [
["Feature", "Detail"],
["Normal Count", "1.5β4 lakh / Β΅L (150,000 β 400,000/Β΅L)"],
["Size", "2β4 Β΅m diameter (smallest formed element of blood)"],
["Nucleus", "ABSENT (cell fragments, not complete cells)"],
["Origin", "Derived from MEGAKARYOCYTES in bone marrow"],
["Life Span", "8β10 days; destroyed in spleen"],
["Thrombopoietin (TPO)", "Hormone regulating platelet production β secreted by liver + kidney"],
]
story.append(ct(plat_data, [5*cm, 12.5*cm]))
story.append(sp(4))
story.append(Paragraph("<b>Functions of Platelets</b>", AHEAD))
for b in [
"PRIMARY HAEMOSTASIS: Adhere to damaged vessel wall (adhesion via vWF) + aggregate to form platelet plug.",
"Platelet activation: Release ADP, thromboxane Aβ, serotonin, platelet factor 4 β attract more platelets.",
"Provide phospholipid surface (PF3) for coagulation cascade reactions.",
"Vascular repair: Release growth factors (PDGF, VEGF) β promote vessel healing.",
"Clot retraction: Platelets pull fibrin strands β compact, firm clot.",
]:
story.append(bul(b))
story.append(sp(4))
story.append(Paragraph("<b>Platelet Count Disorders</b>", AHEAD))
plt_dis = [
["Condition", "Count", "Features"],
["Thrombocytopaenia", "< 1.5 lakh/Β΅L", "Bleeding tendency; petechiae, purpura; causes: ITP, dengue, aplastic anaemia"],
["Thrombocythaemia", "> 6 lakh/Β΅L", "Clotting tendency; causes: myeloproliferative disorders"],
["Normal", "1.5β4 lakh/Β΅L", "No bleeding or clotting issues"],
]
story.append(ct(plt_dis, [5*cm, 4*cm, 8.5*cm]))
# ββββββββββββββββββββββββββββββββββββββββββββββββββ
# SECTION C: MCQ POWER POINTS
# ββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(PageBreak())
story.append(sec_head("SECTION C β MCQ POWER POINTS | Blood Unit", C_PURPLE))
story.append(sp(6))
mcq_list = [
("1", "Universal Blood Donor", "O Negative (Oβ)", "No A, B antigens + no Rh antigen"),
("2", "Universal Blood Recipient", "AB Positive (AB+)", "Has both antigens β no antibodies in plasma"),
("3", "ABO system discovered by", "Karl Landsteiner (1900)", "Nobel Prize 1930"),
("4", "Most common blood group in Indians", "B positive (B+)", "~38% Indians"),
("5", "Rh antigen is", "D antigen", "Most important of 50 Rh antigens"),
("6", "Rh incompatibility prevented by", "Anti-D immunoglobulin (RhoGAM)", "Given within 72 hrs"),
("7", "RBC life span", "120 days", "Destroyed in spleen"),
("8", "Site of RBC destruction", "Spleen (RBC Graveyard)", "Also liver to some extent"),
("9", "Erythropoietin is secreted by", "Kidney (90%) + Liver (10%)", "Stimulus = tissue hypoxia"),
("10", "Clotting factor absent in Haemophilia A", "Factor VIII", "X-linked recessive"),
("11", "Clotting factor absent in Haemophilia B", "Factor IX", "Christmas Disease"),
("12", "Vitamin K dependent factors", "II, VII, IX, X", "Mnemonic: 1, 7, 9, 10"),
("13", "Most common type of anaemia worldwide", "Iron Deficiency Anaemia", "Microcytic hypochromic"),
("14", "Intrinsic Factor for B12 absorption produced by", "Gastric parietal cells", "Absent β Pernicious anaemia"),
("15", "Largest WBC", "Monocyte", "Becomes macrophage in tissues"),
("16", "Most abundant WBC", "Neutrophil (60β70%)", "First responder to bacteria"),
("17", "WBC increased in allergy", "Eosinophil", "Also in parasitic infections"),
("18", "Antibodies are produced by", "Plasma cells (B lymphocytes)", "IgG most abundant"),
("19", "Most abundant plasma protein", "Albumin (55%)", "Main oncotic pressure protein"),
("20", "Low albumin causes", "Oedema (pitting)", "Due to βoncotic pressure"),
("21", "Normal platelet count", "1.5 β 4 lakh/Β΅L", "Thrombocytopaenia if < 1.5 lakh"),
("22", "Platelet life span", "8β10 days", "Destroyed in spleen"),
("23", "Normal WBC count", "4,000 β 11,000/Β΅L", "Leucocytosis > 11,000"),
("24", "Normal blood pH", "7.35 β 7.45", "Acidosis < 7.35; Alkalosis > 7.45"),
("25", "Haematocrit (PCV) in adult male", "~45%", "Female ~40%"),
("26", "Clotting factor requiring CaΒ²βΊ", "Almost ALL factors", "CaΒ²βΊ = Factor IV"),
("27", "Primary stimulus for haemostasis", "Collagen exposure", "Activates platelets + Factor XII"),
("28", "Fibrin clot dissolved by", "Plasmin", "From plasminogen via tPA"),
]
for q in mcq_list:
row = [[
Paragraph(f"<b>{q[0]}.</b> {q[1]}", MCQ_Q),
Paragraph(f"✔ {q[2]} <font color='#006064'><i>({q[3]})</i></font>", MCQ_A),
]]
t = Table(row, colWidths=[7.5*cm, 10*cm])
t.setStyle(TableStyle([
("VALIGN", (0,0), (-1,-1), "TOP"),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 6),
("LINEBELOW", (0,0), (-1,-1), 0.3, colors.HexColor("#CE93D8")),
("BACKGROUND", (0,0), (0,-1), colors.HexColor("#F3E5F5")),
("BACKGROUND", (1,0), (1,-1), colors.HexColor("#E8F5E9")),
]))
story.append(t)
# ββββββββββββββββββββββββββββββββββββββββββββββββββ
# SECTION D: DIAGRAM GUIDE
# ββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(PageBreak())
story.append(sec_head("SECTION D β DIAGRAMS GUIDE & QUICK REVISION TABLES", C_ORANGE))
story.append(sp(6))
story.append(Paragraph("Which Diagrams to Draw in Exam", AHEAD))
diag_table = [
["Diagram", "Used in Which Question", "Key Elements to Label"],
["Coagulation Cascade", "LAQ on Haemostasis (Q1)", "Intrinsic/Extrinsic paths, common pathway, Thrombin, Fibrin"],
["Blood Cell Types", "SAQ on WBC / Blood composition", "RBC, WBC (5 types), Platelets β size comparison"],
["Erythropoiesis stages", "LAQ on Erythropoiesis (Q2)", "6 stages from Proerythroblast to mature RBC"],
["Oβ Dissociation Curve (ODC)", "SAQ on Hb", "S-shaped curve, Bohr effect shift, HbF vs HbA"],
["ABO blood group diagram", "LAQ on Blood Groups (Q3)", "Antigens on RBC, antibodies in plasma β all 4 groups"],
["Haemolytic Transfusion Reaction", "LAQ Q3 clinical significance", "Agglutination β haemolysis β renal failure flowchart"],
]
story.append(ct(diag_table, [4.5*cm, 5*cm, 8*cm], hc=C_ORANGE))
story.append(sp(8))
story.append(Paragraph("CRITICAL NORMAL VALUES β Last Minute Revision", AHEAD))
nv_data = [
["Parameter", "Value", "Parameter", "Value"],
["Hb (Male)", "13β17 g/dL", "Hb (Female)", "12β15 g/dL"],
["RBC (Male)", "5β5.5 million/Β΅L", "RBC (Female)", "4.5β5 million/Β΅L"],
["WBC (Total)", "4,000β11,000/Β΅L", "Neutrophil %", "60β70%"],
["Lymphocyte %", "20β30%", "Monocyte %", "2β8%"],
["Eosinophil %", "2β4%", "Basophil %", "0β1%"],
["Platelet Count", "1.5β4 lakh/Β΅L", "Platelet Life", "8β10 days"],
["Hematocrit (M)", "45%", "Hematocrit (F)", "40%"],
["ESR (Male)", "< 15 mm/1st hr", "ESR (Female)", "< 20 mm/1st hr"],
["Plasma Proteins", "6β8 g/dL", "Albumin", "3.5β5.5 g/dL"],
["Blood pH", "7.35β7.45", "Blood Volume", "5β6 L (70β80 mL/kg)"],
["RBC Life Span", "120 days", "WBC Life", "Hours to days"],
["Reticulocyte %", "0.5β2%", "Oncotic Pressure", "~25 mmHg (albumin)"],
]
story.append(ct(nv_data, [4.5*cm, 4*cm, 4.5*cm, 4*cm]))
story.append(sp(8))
# ββ Final tips ββ
story.append(sec_head("EXAM SUCCESS STRATEGY β Blood Unit (26 Marks)", C_DARK))
story.append(sp(5))
tips_list = [
("LAQ (Most likely):", "Blood Coagulation OR Erythropoiesis OR Blood Groups β ANY ONE LAQ (10 marks) is almost certain."),
("SAQs (2 expected):", "Most common: WBC differential + Anaemia types OR Plasma Proteins + Haemoglobin structure."),
("MCQs (2 expected):", "Normal values, Universal donor/recipient, Vitamin K factors β revise the MCQ section above."),
("Every LAQ:", "Definition β Classification/Types β Mechanism (detailed) β Diagram β Normal values β Clinical significance β 1 line Homoeopathic/Vital Force connection."),
("Time Management:", "Give 20β22 minutes to each LAQ. 8β10 minutes per SAQ. 30 seconds per MCQ."),
("Common Mistake:", "Do NOT confuse Factor VIII (Haemophilia A) with Factor IX (Haemophilia B). Examiners check this."),
]
for head, content in tips_list:
row = [[
Paragraph(f"<b>{head}</b>", S("th2", fontName="Helvetica-Bold", fontSize=9, textColor=C_DARK, leading=13)),
Paragraph(content, S("tc2", fontName="Helvetica", fontSize=9, textColor=C_BLACK, leading=13)),
]]
t = Table(row, colWidths=[4.5*cm, 13*cm])
t.setStyle(TableStyle([
("VALIGN", (0,0), (-1,-1), "TOP"),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8),
("LINEBELOW", (0,0), (-1,-1), 0.4, C_BORDER),
("BACKGROUND", (0,0), (0,-1), C_LIGHT),
]))
story.append(t)
story.append(sp(10))
story.append(hr())
story.append(sp(4))
story.append(Paragraph(
"BHMS 1st Year β Kriya Sharir Paper 1 | Blood Unit Complete Q&A | CBDC / MPMSU | "
"Sources: Medical Physiology (Boulpaep & Boron), Guyton & Hall, Harper's Biochemistry | All the best! 💕",
FOOTER
))
doc.build(story)
print(f"PDF saved: {OUTPUT}")
cd /tmp/workspace/bhms-physiology && python generate_blood_qa.py 2>&1
~/bhms-physiology/generate_blood_qa.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/bhms-physiology/generate_blood_qa.py'
cd /tmp/workspace/bhms-physiology && python generate_blood_qa.py 2>&1
ls -lh /tmp/workspace/bhms-physiology/
Blood Unit DetailedQA
PDF Document Β· PDF
| Q | Topic | Kya Cover Hua |
|---|---|---|
| Q1 | Blood Coagulation & Haemostasis | Vascular Spasm β Platelet Plug β Full Cascade (Intrinsic + Extrinsic + Common) + All Factors table + Fibrinolysis + Diagram |
| Q2 | Erythropoiesis | Site (age-wise) + 6 maturation stages + EPO regulation + All factors required (Iron, B12, Folate, etc.) + Fate of RBC |
| Q3 | Blood Groups ABO + Rh | Landsteiner's Law + Full ABO table + Compatibility chart + Erythroblastosis Fetalis (step-by-step) + Transfusion Reaction |