Yarr mere bhms 1st year ke mpmsu final exam hai

Asking for Preferences
Asking for Preferences
Searching the Web

MPMSU BHMS 1st year Physiology Kriya Sharir important questions exam 2025 2026

Searching the Web

BHMS 1st year Kriya Sharir previous year question paper MPMSU syllabus

Reading Web Page

https://nch.org.in/upload/3-Human-physiology-02-02-2024.pdf

Ab main apni knowledge + NCH syllabus + MPMSU paper pattern ke basis par comprehensive expected Q&A deta hoon.

πŸ“š BHMS 1st Year - Kriya Sharir (Physiology)

MPMSU Final Exam - Expected Questions with Answers


πŸ”΄ LONG ANSWER QUESTIONS (LAQ) - 10 marks


Q1. Cardiac Cycle kya hota hai? Uske events explain karo.

Answer:
Cardiac cycle ek complete heartbeat hai - ek systole (contraction) + ek diastole (relaxation).
Duration: ~0.8 seconds (72 beats/min pe)
Events:
PhaseDurationEvent
Atrial Systole0.1 secAtria contract, blood ventricles mein jaata hai
Ventricular Systole0.3 secVentricles contract, blood aorta/pulmonary artery mein jaata hai
Diastole (Total)0.4 secSabka relaxation, heart blood se bharta hai
Heart Sounds:
  • S1 ("Lub") - Mitral + Tricuspid valve band hone se
  • S2 ("Dub") - Aortic + Pulmonary valve band hone se
Cardiac Output (CO) = Stroke Volume x Heart Rate = 70 ml x 72 = ~5040 ml/min (~5L/min)

Q2. Menstrual Cycle ka varnan karo. (Bahut baar aata hai!)

Answer:
Normal duration: 28 days. Reproductive age mein hoti hai (menarche se menopause tak).
4 Phases:
1. Menstrual Phase (Day 1-5):
  • Endometrium shed hota hai
  • Estrogen + Progesterone low hoti hain
  • Blood loss: ~30-80 mL
2. Proliferative/Follicular Phase (Day 6-13):
  • FSH se follicle develop hota hai
  • Estrogen badh jaati hai
  • Endometrium thick hoti hai
3. Ovulation (Day 14):
  • LH surge se ovum release hota hai
  • Most fertile time
4. Secretory/Luteal Phase (Day 15-28):
  • Corpus luteum progesterone banata hai
  • Endometrium glands active
  • Agar pregnancy nahi - corpus luteum degenerate, hormones gir jaate hain, menstruation fir hoti hai
Hormones: FSH, LH (pituitary se), Estrogen, Progesterone (ovary se)

Q3. Blood Groups (ABO System) samjhao.

Answer:
Landsteiner's Law pe based hai.
Blood GroupAntigen (RBC pe)Antibody (Plasma mein)
AAAnti-B
BBAnti-A
ABA + BNone (Universal Recipient)
ONoneAnti-A + Anti-B (Universal Donor)
Rh Factor:
  • Rh+ = D antigen present (85% Indians)
  • Rh- = D antigen absent
Transfusion Reaction: Incompatible blood dene se agglutination + hemolysis ho jaata hai - patient die kar sakta hai.
Erythroblastosis Fetalis: Rh- maa ka Rh+ baby - maa antibodies banati hai jo baby ke RBCs destroy kar dete hain.

🟑 SHORT ANSWER QUESTIONS (SAQ) - 5 marks


Q4. Juxtaglomerular Apparatus (JGA) kya hai?

Answer:
JGA kidney mein hoti hai - afferent arteriole + distal convoluted tubule ke junction pe.
Components:
  1. Juxtaglomerular (JG) cells - afferent arteriole mein, renin secrete karte hain
  2. Macula Densa - DCT mein, NaCl sense karta hai
  3. Mesangial cells - support dete hain
Function: Blood pressure control - Renin-Angiotensin-Aldosterone System (RAAS) activate karta hai.
  • BP gira β†’ JGA β†’ Renin release β†’ Angiotensin I β†’ Angiotensin II β†’ BP badhata hai + Aldosterone release β†’ Na+ retain β†’ water retain β†’ BP aur badhta hai

Q5. Haemoglobin ki structure aur function batao.

Answer:
  • Normal value: Male: 13-17 g/dL, Female: 12-15 g/dL
  • Structure: 4 globin chains + 4 heme groups (each mein FeΒ²+ hota hai)
  • Types: HbA (adult), HbA2, HbF (fetal)
Functions:
  1. Oβ‚‚ carry karna (lungs se tissues tak) - oxyhemoglobin banata hai
  2. COβ‚‚ carry karna (tissues se lungs tak) - carbaminohemoglobin
  3. Buffer ka kaam karta hai (blood pH maintain)
  4. NO carry karna

Q6. Anemia ke types batao.

Answer:
Anemia = Hemoglobin ya RBC ki count normal se kam.
Classification:
  1. Iron Deficiency Anemia - sabse common, microcytic hypochromic RBCs
  2. Megaloblastic Anemia - B12/Folic acid ki kami, macrocytic RBCs
  3. Pernicious Anemia - Intrinsic factor absent, B12 absorb nahi hota
  4. Hemolytic Anemia - RBCs jaldi toot jaate hain (sickle cell, thalassemia)
  5. Aplastic Anemia - Bone marrow kaam nahi karta

Q7. Synapse kya hai? Uski properties batao.

Answer:
Synapse = 2 neurons ke beech ka junction jahan signal pass hota hai.
Parts: Pre-synaptic terminal β†’ Synaptic cleft β†’ Post-synaptic membrane
Chemical Transmission: Neurotransmitter (Acetylcholine, Dopamine, etc.) release hota hai.
Properties:
  1. One-way conduction - sirf pre β†’ post direction mein
  2. Synaptic delay - ~0.5 milliseconds
  3. Fatigue - repeated stimulation pe response kam ho jaata hai
  4. Summation - temporal + spatial dono types
  5. Convergence & Divergence

Q8. Reflex Arc explain karo.

Answer:
Reflex = voluntary control ke bina automatic response to stimulus.
Reflex Arc ke 5 components:
  1. Receptor - stimulus detect karta hai
  2. Afferent nerve - signal spinal cord tak laata hai
  3. Nerve Centre - spinal cord/brain mein processing
  4. Efferent nerve - response le jaata hai
  5. Effector - muscle/gland - action karta hai
Types:
  • Monosynaptic - 1 synapse, e.g., Knee jerk reflex
  • Polysynaptic - multiple synapses, e.g., Withdrawal reflex

🟒 SHORT NOTES - 3 marks (MCQ/Viva important)

TopicKey Point
Vital CapacityTLC - RV = ~4.8 L (max air exhale karo after max inhale)
GFR~125 mL/min, kidney kitna filter kare per minute
ECG wavesP (atrial), QRS (ventricular depol), T (ventricular repol)
InsulinBeta cells (Pancreas), blood glucose giraata hai, diabetes mein absent
ADH/VasopressinPosterior pituitary, water reabsorption badhata hai
NeurotransmittersACh, Dopamine, Serotonin, GABA, Norepinephrine
ESRNormal: Male <15, Female <20 mm/1st hr (Westergren method)
Platelets1.5-4 lakh/Β΅L, clotting mein help karte hain
PeristalsisGI tract ka wave-like movement, food aage push karta hai
Vital ForceHahnemann ka concept - body ko animate karne wali force

πŸ’‘ Exam Tips:

  • Diagrams zaroor banao - Cardiac Cycle, Menstrual Cycle, Reflex Arc, JGA - diagrams ke marks alag milte hain
  • Normal values yaad karo - Hb, BP (120/80), Pulse (72/min), RBC count
  • Homoeopathic angle - Vital Force ka physiology se connection zaroor likhna (BHMS specific point hai)
  • Paper 1 vs Paper 2 - MPMSU mein Kriya Sharir 2 papers hote hain: Paper 1 (General + Blood + CVS + Respiratory), Paper 2 (Renal + Endocrine + Nervous + Reproductive)
Agar koi specific topic aur detail mein chahiye ya MCQs chahiye, toh batao! All the best exam ke liye! πŸ€

Paper 1 st

Paper 1 ke liye focus areas: General Physiology + Blood + CVS + Respiratory System
Ab main in sabke expected questions with answers deta hoon - ekdum exam-ready format mein.

πŸ“š BHMS 1st Year - Kriya Sharir Paper 1

MPMSU Final Exam - Complete Expected Q&A


πŸ”΄ LONG ANSWER QUESTIONS (LAQ) - 10 Marks


Q1. Cell membrane ki structure aur functions batao.

Answer:
Structure - Fluid Mosaic Model (Singer & Nicolson, 1972):
Bilipid layer hoti hai - do layers of phospholipids jinke hydrophilic heads bahar aur hydrophobic tails andar hote hain.
Components:
  • Phospholipid bilayer - basic framework
  • Proteins - 2 types:
    • Integral proteins - membrane ke andar dhase hue (channels, carriers)
    • Peripheral proteins - bahar surface pe
  • Cholesterol - fluidity maintain karta hai
  • Glycoproteins / Glycolipids - cell recognition mein kaam aate hain
Diagram:
[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]
Functions:
  1. Selective permeability - sirf zaruri cheezein andar jaane deta hai
  2. Receptor function - hormones, drugs bind hote hain
  3. Transport - active/passive
  4. Cell recognition (ABO blood group antigens)
  5. Enzyme activity

Q2. Blood Coagulation (Haemostasis) ka mechanism samjhao.

Answer:
Haemostasis = blood vessel injury ke baad bleeding rokna.
3 Steps:
Step 1 - Vascular Spasm:
  • Injured vessel turant contract karta hai
  • Blood flow temporarily kam hota hai
Step 2 - Platelet Plug Formation:
  • Platelets injured wall se chipak jaate hain (adhesion)
  • Zyada platelets aate hain (aggregation)
  • Temporary plug banta hai
Step 3 - Coagulation Cascade:
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
Important Clotting Factors:
FactorName
IFibrinogen
IIProthrombin
IVCalcium (CaΒ²+)
VIIIAntihemophilic factor (Hemophilia A mein absent)
Vitamin K - Factors II, VII, IX, X ke liye zaruri hai.

Q3. Cardiac Cycle explain karo. (Most Important!)

Answer:
Definition: Ek complete heartbeat - ek systole + ek diastole.
Duration: 0.8 seconds (72 beats/min pe)
Phases:
PhaseDurationValvesEvent
Atrial Systole0.1 secAV open, Semilunar closedAtria contract, ventricles bharte hain
Isovolumetric Contraction0.05 secSab bandVentricle pressure badhti hai
Ventricular Ejection0.25 secSemilunar openBlood aorta/PA mein jaata hai
Isovolumetric Relaxation0.08 secSab bandVentricular pressure girti hai
Rapid Filling0.11 secAV openVentricle jaldi bharta hai
Slow Filling0.19 secAV openDheere bharta hai
Heart Sounds:
  • S1 "Lub" - Mitral + Tricuspid (AV valves) band hone se
  • S2 "Dub" - Aortic + Pulmonary (Semilunar) band hone se
Cardiac Output:
CO = Stroke Volume Γ— Heart Rate CO = 70 mL Γ— 72 = ~5 L/min
Regulation of CO:
  • Starling's Law - jitna stretch, utna force se contraction (preload)
  • Heart Rate - SNS badhata, PNS giraata hai

Q4. Respiratory Mechanism - Breathing kaise hoti hai?

Answer:
Inspiration (Active process):
  • Diaphragm contract karta hai β†’ neeche jaata hai
  • External intercostals contract β†’ chest bahar jaata hai
  • Intrathoracic pressure gir jaati hai (atmospheric se kam)
  • Air lungs mein enter karti hai
Expiration (Passive process at rest):
  • Diaphragm relax β†’ upar jaata hai
  • Elastic recoil of lungs
  • Chest andar aata hai
  • Air bahar jaati hai
Lung Volumes (Normal values - yaad karo!):
VolumeValueDefinition
Tidal Volume (TV)500 mLNormal ek breath mein
IRV3000 mLExtra inhale kar sako
ERV1100 mLExtra exhale kar sako
RV1200 mLLungs mein hamesha bachi hui
Vital Capacity4600 mLTV + IRV + ERV
TLC5800 mLSab milake
Transport of Oβ‚‚:
  • 97% - Hemoglobin ke saath (Oxyhemoglobin)
  • 3% - Plasma mein dissolved
Transport of COβ‚‚:
  • 70% - Bicarbonate (HCO₃⁻) form mein
  • 23% - Carbaminohemoglobin
  • 7% - Dissolved in plasma

🟑 SHORT ANSWER QUESTIONS (SAQ) - 5 Marks


Q5. WBC (Leukocytes) ke types batao.

Answer:
Normal Count: 4,000 - 11,000/Β΅L
2 Main Types:
A. Granulocytes (granules hote hain):
Cell%Function
Neutrophil60-70%Bacteria khaata hai (Phagocytosis) - first responder
Eosinophil2-4%Allergy + Parasitic infection
Basophil0-1%Histamine release - allergy
B. Agranulocytes (granules nahi):
Cell%Function
Lymphocyte20-30%Antibody banate (B cells), Cell immunity (T cells)
Monocyte2-8%Tissue mein jaake Macrophage banta hai
Differential Count yaad karna:
"Never Let Monkeys Eat Bananas" Neutrophil - Lymphocyte - Monocyte - Eosinophil - Basophil

Q6. Osmosis aur Osmotic Pressure samjhao.

Answer:
Osmosis: Semi-permeable membrane ke through, water low concentration (hypotonic) se high solute concentration (hypertonic) ki taraf move karta hai.
Osmotic Pressure: Woh pressure jo osmosis rokne ke liye lagana pade.
Blood ka Normal Osmolality: 285-295 mOsm/kg
RBC ke context mein:
  • Isotonic solution (0.9% NaCl) β†’ RBC normal rahega
  • Hypotonic solution β†’ Water andar jayega β†’ RBC swell β†’ Hemolysis
  • Hypertonic solution β†’ Water bahar jayega β†’ RBC shrink β†’ Crenation
Clinical use: IV fluids always isotonic dete hain (Normal Saline, Ringer's Lactate)

Q7. Plasma Proteins ke functions batao.

Answer:
Normal Total Protein: 6-8 g/dL
Protein%Functions
Albumin55%Oncotic pressure maintain, drugs + hormones carry karta hai
Globulin38%Antibodies (immunoglobulins), transport
Fibrinogen7%Clotting mein fibrin banata hai
Oncotic (Colloid Osmotic) Pressure:
  • Mainly albumin se hoti hai (~25 mmHg)
  • Capillary se fluid bahar jaane se rokti hai
  • Albumin kam β†’ edema (swelling) hoti hai

Q8. Conducting System of Heart batao.

Answer:
Heart ka apna electrical system hota hai jo heartbeat generate karta hai.
SA Node β†’ AV Node β†’ Bundle of His β†’ Right + Left Bundle Branches β†’ Purkinje Fibres
StructureLocationRate
SA NodeRight Atrium (Pacemaker)70-80/min
AV NodeInteratrial septum40-60/min
Bundle of HisIV Septum20-40/min
Purkinje FibresVentricular walls15-40/min
SA Node = Primary Pacemaker - highest rate hoti hai, isliye wo pace set karta hai.
ECG Waves:
  • P wave - Atrial depolarization
  • QRS complex - Ventricular depolarization
  • T wave - Ventricular repolarization

Q9. Erythropoiesis kya hai? (RBC kaise banta hai)

Answer:
Erythropoiesis = Red Blood Cell ka formation.
Site:
  • Fetus mein: Liver + Spleen
  • Adult mein: Red Bone Marrow (flat bones - sternum, vertebrae, pelvis)
Stages:
Proerythroblast β†’ Erythroblast β†’ Normoblast β†’ Reticulocyte β†’ Mature RBC
Requirements:
  • Iron (FeΒ²+) - Hb synthesis ke liye
  • Vitamin B12 + Folic Acid - DNA synthesis ke liye
  • Erythropoietin (EPO) - kidney se, hypoxia pe release hota hai
  • Protein, Copper
Life of RBC: 120 days
Destruction: Spleen mein (RBC graveyard)

Q10. Buffer Systems of Blood

Answer:
Blood pH normal: 7.35 - 7.45 (slightly alkaline)
4 Buffer Systems:
  1. Bicarbonate Buffer (Most Important):
    COβ‚‚ + Hβ‚‚O β‡Œ Hβ‚‚CO₃ β‡Œ H⁺ + HCO₃⁻
    • Lungs COβ‚‚ expel karte hain - pH badhata hai
    • Kidneys HCO₃⁻ retain karte hain
  2. Hemoglobin Buffer - RBC ke andar
  3. Protein Buffer - plasma proteins
  4. Phosphate Buffer - renal tubules mein zyada important
Acidosis (pH < 7.35) vs Alkalosis (pH > 7.45)

🟒 SHORT NOTES / MCQ Points - 2-3 Marks

TopicKey Value/Fact
Normal HbMale: 13-17 g/dL, Female: 12-15 g/dL
RBC countMale: 5-5.5 million/Β΅L, Female: 4.5-5 million/Β΅L
Blood Volume5-6 L (body weight ka ~8%)
Platelet count1.5 - 4 lakh/Β΅L
Blood pH7.35 - 7.45
Plasma = 55%Blood ka 55% plasma, 45% cells
Hematocrit (PCV)Male: 45%, Female: 40%
ESRMale: < 15, Female: < 20 mm/1st hour
Normal BP120/80 mmHg
Heart Rate72 beats/min
Tidal Volume500 mL
Vital Capacity4600 mL
RBC life120 days
WBC lifeHours to days
Platelet life8-10 days

🧠 MCQ Traps - Yaad Rakho!

  1. Universal Donor = O negative (O-)
  2. Universal Recipient = AB positive (AB+)
  3. Pacemaker of heart = SA Node
  4. Largest WBC = Monocyte
  5. Most abundant WBC = Neutrophil
  6. Most abundant plasma protein = Albumin
  7. Blood clotting mein CaΒ²+ = Factor IV
  8. Erythropoietin = Kidney se nikalta hai
  9. Normal platelet plug = Primary haemostasis
  10. Fibrin clot = Secondary haemostasis

✍️ Diagrams zaroor banao:

  • Fluid Mosaic Model (Cell Membrane)
  • Coagulation Cascade
  • Cardiac Cycle (Wiggers Diagram simple version)
  • Conducting System of Heart
  • Lung Volumes diagram (Spirogram)

Agar koi specific question aur depth mein chahiye - diagram chahiye - ya MCQ practice karni hai toh bol do! πŸ’ͺ Best of luck exam mein! πŸ€

Create a quick reference PDF for Paper 1 topics

Reading File
Running Command

mkdir -p /tmp/workspace/bhms-physiology && ls /tmp/workspace/

Writing File

~/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"&#x2022; {text}", BULLET)

def imp(text):
    return Paragraph(f"&#9733; {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. &#128149;",
    FOOTER_S
))

# ── BUILD ──
doc.build(story)
print(f"PDF created: {OUTPUT}")
Running Command

cd /tmp/workspace/bhms-physiology && python generate_pdf.py 2>&1

Running Command

ls -lh /tmp/workspace/bhms-physiology/Kriya_Sharir_Paper1_QuickRef.pdf

Tera PDF ready hai! πŸŽ‰ Download kar lo:

Kriya Sharir Paper1 QuickRef

PDF Document Β· PDF


PDF mein kya-kya hai:

SectionContent
Normal Values TableSab important values ek jagah (Hb, RBC, WBC, BP, TV, VC, etc.)
Section 1 - General PhysiologyCell Membrane (Fluid Mosaic), Transport types, Osmosis, Homeostasis
Section 2 - BloodComposition, WBC types (Never Let Monkeys...), Plasma proteins, Blood groups ABO+Rh, Erythropoiesis, Coagulation cascade, Buffer systems
Section 3 - CVSCardiac muscle properties, Conducting system, Cardiac cycle with all phases, Heart sounds, CO formula, ECG waves, BP regulation
Section 4 - RespiratoryMechanics of breathing, Lung volumes spirometry table, Gas transport (Oβ‚‚ + COβ‚‚), Respiratory regulation, Hb & ODC curve
Section 5 - MCQ Rapid Fire28 high-yield MCQs with answers
Section 6 - Exam TipsLAQ/SAQ strategy, diagrams list, BHMS-specific Vital Force point
Print kar ke exam se pehle ek baar scan kar lena - sab kuch ek jagah hai! πŸ’ͺ Best of luck! πŸ€

Unit blood me se kitne no. Ke q.ayenge according to CBDC based mpmsu

Searching the Web

MPMSU BHMS 1st year Kriya Sharir Paper 1 CBDC marking scheme marks distribution unit wise 2024 2025

Searching the Web

CBDC BHMS Kriya Sharir syllabus unit blood marks weightage question paper pattern

Reading Web Page

https://homoeopathy.ac.in/uploads/1st-BHMS(CBDC)---2024_Summ…

NCH ke official CBDC syllabus document se exact data mil gaya! Ab clearly batata hoon:

🩸 Blood Unit - CBDC Paper 1 Marks Breakdown

CBDC syllabus mein Blood Unit ko "Theme C: Body Fluids & Immune Mechanism" ke naam se list kiya gaya hai.

πŸ“Š Paper 1 - Theme-wise Marks Distribution (Official CBDC)

ThemeTopicTotal MarksMCQSAQLAQ
AGeneral Physiology07βœ…βœ…βŒ
BBiophysics07βœ…βœ…βŒ
CBody Fluids & Blood + Immune Mechanism26βœ…βœ…βœ…
DCardiovascular System16βœ…βœ…βœ…
ERespiratory System16βœ…βœ…βœ…
FExcretory System16βœ…βœ…βœ…
GSkin & Integumentary System06βœ…βœ…βŒ
HNerve Muscle Physiology06βœ…βœ…βŒ
TOTAL100

🩸 Blood Unit (Theme C) = 26 Marks out of 100

Paper 1 ka Format:

  • MCQ = 10 marks (10 questions Γ— 1 mark)
  • SAQ = 40 marks (8 questions Γ— 5 marks)
  • LAQ = 50 marks (5 questions Γ— 10 marks)

Blood Unit se expected split:

Question TypeBlood (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

⚠️ Important Note

"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
Matlab exact question distribution fixed nahi hoti β€” ye sirf expected weightage hai. Blood ka 1 LAQ aana almost confirm hai kyunki Theme C ka 26 marks hai aur LAQ bhi allowed hai.

🎯 Blood Unit ke Top Questions (26 marks ke liye prepare karo):

LAQ (10 marks) - Ek zaroor aayega:

  1. Blood Coagulation / Haemostasis (sabse zyada aata hai)
  2. ABO Blood Groups + Rh Factor
  3. Erythropoiesis (RBC formation)

SAQ (5 marks each) - 2 aayenge:

  1. WBC types (Differential count)
  2. Plasma proteins
  3. Anaemia types
  4. Buffer systems of blood
  5. Platelet functions / Primary haemostasis

MCQ (1 mark each) - 2 aayenge:

  • Normal values (Hb, RBC, WBC, platelet count)
  • Universal donor/recipient
  • Vitamin K factors
  • RBC life span
  • Erythropoietin source

Blood = Paper 1 ka sabse bada single unit (26 marks) - isse zyada focus dena bilkul sahi decision hai! πŸ’ͺ

Blood unit ke liye detailed Q&A banao - sabhi expected questions cover karte hue

Reading File
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Finding Sources
Writing File

~/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"&#x2022;  {text}", BULLET)
def imp(text): return Paragraph(f"&#9733;  {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"&#x2714;  {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! &#128149;",
    FOOTER
))

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

cd /tmp/workspace/bhms-physiology && python generate_blood_qa.py 2>&1

Editing File

~/bhms-physiology/generate_blood_qa.py

Successfully replaced 1 instance(s) of the string in '/tmp/workspace/bhms-physiology/generate_blood_qa.py'
Running Command

cd /tmp/workspace/bhms-physiology && python generate_blood_qa.py 2>&1

Running Command

ls -lh /tmp/workspace/bhms-physiology/

Tera Blood Unit Complete Q&A PDF ready hai! 🩸

Blood Unit DetailedQA

PDF Document Β· PDF


PDF mein kya-kya cover hua β€” (38 KB, Full Detail)

πŸ“‹ Section A β€” LAQ (10 marks each) β€” 3 Complete Answers:

QTopicKya Cover Hua
Q1Blood Coagulation & HaemostasisVascular Spasm β†’ Platelet Plug β†’ Full Cascade (Intrinsic + Extrinsic + Common) + All Factors table + Fibrinolysis + Diagram
Q2ErythropoiesisSite (age-wise) + 6 maturation stages + EPO regulation + All factors required (Iron, B12, Folate, etc.) + Fate of RBC
Q3Blood Groups ABO + RhLandsteiner's Law + Full ABO table + Compatibility chart + Erythroblastosis Fetalis (step-by-step) + Transfusion Reaction

πŸ“ Section B β€” SAQ (5 marks each) β€” 6 Answers:

  • Q4 WBC β€” 5 types, functions, differential count table
  • Q5 Anaemia β€” Classification (morphological + aetiological) + IDA in detail
  • Q6 Plasma Proteins β€” Albumin, Globulin, Fibrinogen + Oedema mechanism
  • Q7 Buffer Systems β€” 4 buffers + Acid-Base disorders table
  • Q8 Haemoglobin β€” Structure + Functions + Bohr/Haldane effects
  • Q9 Platelets β€” Formation, properties, functions, disorders

⚑ Section C β€” 28 MCQ Power Points (Blood unit ke sab tricky MCQs)

πŸ“ Section D β€” Diagrams guide + Critical Normal Values table + Exam Strategy


Dono PDFs milake tera complete Blood Unit revision set ready hai! πŸ’ͺ Best of luck! πŸ€
This is a shared conversation. Sign in to Orris to start your own chat.