Solved according to marks distribution in proper way
python3 -c " from docx import Document doc = Document('/tmp/workspace/attachments/4267cda5-cda3-4a7c-ae63-617ae212f0fb/unit test 3 2025-26.docx') for p in doc.paragraphs: style = p.style.name if p.style else 'None' if p.text.strip(): print(f'[{style}] {p.text}') for table in doc.tables: print('--- TABLE ---') for row in table.rows: for cell in row.cells: if cell.text.strip(): print(cell.text.strip(), end=' | ') print() "
mkdir -p /tmp/workspace/unit-test-physiology && ls /tmp/workspace/unit-test-physiology/
~/unit-test-physiology/build_answers.py
from docx import Document
from docx.shared import Pt, Inches, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
import copy
doc = Document()
# ── Page margins ──────────────────────────────────────────────────────────────
from docx.shared import Inches as In
section = doc.sections[0]
section.top_margin = In(0.8)
section.bottom_margin = In(0.8)
section.left_margin = In(1.0)
section.right_margin = In(1.0)
# ── Style helpers ─────────────────────────────────────────────────────────────
normal_style = doc.styles['Normal']
normal_style.font.name = 'Times New Roman'
normal_style.font.size = Pt(12)
def add_title(doc, text):
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = p.add_run(text)
run.bold = True
run.font.size = Pt(13)
run.font.color.rgb = RGBColor(0x00, 0x00, 0x8B) # dark blue
def add_heading1(doc, text):
p = doc.add_paragraph()
run = p.add_run(text)
run.bold = True
run.underline = True
run.font.size = Pt(12)
run.font.color.rgb = RGBColor(0xC0, 0x00, 0x00) # dark red
def add_heading2(doc, text):
p = doc.add_paragraph()
run = p.add_run(text)
run.bold = True
run.font.size = Pt(12)
def add_body(doc, text):
p = doc.add_paragraph(text)
p.paragraph_format.left_indent = Inches(0.2)
p.runs[0].font.size = Pt(11)
def add_bullet(doc, text, bold_prefix=None):
p = doc.add_paragraph(style='List Bullet')
p.paragraph_format.left_indent = Inches(0.3)
if bold_prefix:
run_b = p.add_run(bold_prefix)
run_b.bold = True
run_b.font.size = Pt(11)
run_normal = p.add_run(text)
run_normal.font.size = Pt(11)
else:
run = p.add_run(text)
run.font.size = Pt(11)
def add_numbered(doc, text, bold_prefix=None):
p = doc.add_paragraph(style='List Number')
p.paragraph_format.left_indent = Inches(0.3)
if bold_prefix:
run_b = p.add_run(bold_prefix)
run_b.bold = True
run_b.font.size = Pt(11)
run_normal = p.add_run(text)
run_normal.font.size = Pt(11)
else:
run = p.add_run(text)
run.font.size = Pt(11)
def add_marks_note(doc, text):
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.RIGHT
run = p.add_run(text)
run.italic = True
run.font.size = Pt(10)
run.font.color.rgb = RGBColor(0x55, 0x55, 0x55)
def add_divider(doc):
p = doc.add_paragraph()
p.paragraph_format.space_before = Pt(2)
p.paragraph_format.space_after = Pt(2)
run = p.add_run('─' * 80)
run.font.size = Pt(8)
run.font.color.rgb = RGBColor(0xCC, 0xCC, 0xCC)
# ══════════════════════════════════════════════════════════════════════════════
# HEADER
# ══════════════════════════════════════════════════════════════════════════════
add_title(doc, 'DEPARTMENT OF PHYSIOLOGY')
add_title(doc, 'THIRD UNIT TEST — MBBS Batch 2025-26')
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = p.add_run('Subject: Physiology | Time: 1.30 Hrs | Max. Marks: 50')
run.font.size = Pt(11)
p2 = doc.add_paragraph()
p2.alignment = WD_ALIGN_PARAGRAPH.CENTER
run2 = p2.add_run('SOLVED ANSWER SHEET')
run2.bold = True
run2.font.size = Pt(12)
run2.font.color.rgb = RGBColor(0x00, 0x80, 0x00)
doc.add_paragraph()
add_divider(doc)
# ══════════════════════════════════════════════════════════════════════════════
# Q1 LONG ANSWER QUESTION (2+3+2+3+5 = 15 marks)
# ══════════════════════════════════════════════════════════════════════════════
add_heading1(doc, 'Q.1 Long Answer Question (2+3+2+3+5 = 15 marks)')
doc.add_paragraph()
p = doc.add_paragraph()
run = p.add_run('Clinical Scenario: ')
run.bold = True
run.font.size = Pt(11)
run2 = p.add_run(
'A 65-year-old male, chronic smoker and alcoholic, presented to the emergency '
'with chest pain, sweating and dyspnoea for one hour. Pulse 100 bpm, BP 126/84 mmHg, '
'ECG showing ST elevation in leads II, III and aVF.')
run2.font.size = Pt(11)
doc.add_paragraph()
# ── (a) Diagnosis (2 marks) ───────────────────────────────────────────────────
add_heading2(doc, '(a) Diagnosis with Two Features [2 Marks]')
add_body(doc, 'Diagnosis: ACUTE INFERIOR WALL MYOCARDIAL INFARCTION (AWMI)')
doc.add_paragraph()
add_body(doc, 'Two features supporting the diagnosis:')
add_numbered(doc, 'ST-segment elevation in the inferior leads (II, III and aVF) — the hallmark of inferior wall MI, indicating occlusion of the Right Coronary Artery (RCA) or, less commonly, a dominant Left Circumflex (LCx) artery.')
add_numbered(doc, 'Classic triad of symptoms — chest pain (ischaemic), sweating (sympathetic activation) and dyspnoea (reduced cardiac output/pulmonary congestion) in an older male with atherosclerosis risk factors (smoking, alcohol).')
doc.add_paragraph()
# ── (b) Physiological basis (3 marks) ────────────────────────────────────────
add_heading2(doc, '(b) Physiological Basis of Chest Pain, Dyspnoea and Sweating [3 Marks]')
add_body(doc, '')
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('1. Chest Pain (Angina-like):')
run.bold = True
run.font.size = Pt(11)
add_body(doc,
'During myocardial ischaemia, lack of oxygen causes anaerobic metabolism in cardiac muscle. '
'Metabolic by-products accumulate — lactic acid, bradykinin, histamine, potassium ions, adenosine — '
'which stimulate type C (pain) afferent fibres in the myocardium. These travel via cardiac sympathetic '
'nerves (T1–T5 sympathetic ganglia) to the spinal cord and then to the thalamus and cortex, '
'producing a visceral, crushing, substernal chest pain that may radiate to the left arm and jaw '
'(referred pain via dermatomes T1–T4).')
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('2. Dyspnoea (Breathlessness):')
run.bold = True
run.font.size = Pt(11)
add_body(doc,
'Infarction of the inferior wall reduces left ventricular (or right ventricular) pumping ability. '
'Reduced cardiac output leads to increased pulmonary venous pressure and pulmonary congestion. '
'Pulmonary oedema stimulates juxtacapillary (J) receptors (Hering-Breuer extension not involved here), '
'sending signals via vagal afferents to the respiratory centre in the medulla, increasing respiratory '
'drive. Also, acidosis from poor perfusion stimulates central and peripheral chemoreceptors, further '
'intensifying breathlessness.')
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('3. Sweating (Diaphoresis):')
run.bold = True
run.font.size = Pt(11)
add_body(doc,
'In response to the pain and fall in cardiac output, the sympathetic nervous system is massively '
'activated (catecholamine surge — adrenaline + noradrenaline). Sympathetic cholinergic fibres '
'innervate eccrine sweat glands, causing profuse cold, clammy sweating. This is a typical feature '
'of sympathetic over-activity (shock state) accompanying acute MI.')
doc.add_paragraph()
# ── (c) ECG changes (2 marks) ─────────────────────────────────────────────────
add_heading2(doc, '(c) Reason for ECG Changes (ST Elevation in II, III, aVF) [2 Marks]')
add_body(doc,
'The inferior wall of the left ventricle is supplied by the Right Coronary Artery (RCA) in '
'~80% of individuals. In this patient, acute thrombotic occlusion of the RCA causes transmural '
'ischaemia/infarction of the inferior wall.')
doc.add_paragraph()
add_body(doc, 'Ionic basis of ST elevation:')
add_bullet(doc, 'Ischaemic myocardial cells cannot maintain resting membrane potential — they partially depolarise. This creates a "current of injury" — a potential difference between injured (depolarised) and normal (polarised) zones.')
add_bullet(doc, 'During systole: injured cells cannot repolarise fully → the ST segment (representing plateau of ventricular repolarisation) is shifted upwards relative to the baseline in leads facing the injured area.')
add_bullet(doc, 'Leads II, III and aVF look at the inferior surface of the heart — they record the maximal ST elevation. Reciprocal ST depression is seen in leads I and aVL (looking from the opposite direction).')
add_body(doc, 'Summary: ST elevation = transmural ischaemia of the inferior wall from RCA occlusion.')
doc.add_paragraph()
# ── (d) Stokes-Adams syndrome (3 marks) ──────────────────────────────────────
add_heading2(doc, "(d) Stokes-Adams Syndrome [3 Marks]")
add_body(doc,
"Stokes-Adams syndrome (Adams-Stokes attacks) refers to sudden episodes of syncope (loss of "
"consciousness) caused by a sudden marked decrease in cardiac output, most commonly due to "
"complete heart block (3rd degree AV block) with a prolonged period of ventricular asystole before "
"an escape rhythm is established.")
doc.add_paragraph()
add_body(doc, 'Features:')
add_numbered(doc, 'Aetiology: Complete AV block → ventricles rely on slow idioventricular escape rhythm (20–40 bpm). The pause between the last conducted beat and the first escape beat can last 5–30 seconds → cerebral hypoperfusion → syncope.')
add_numbered(doc, 'Clinical presentation: Sudden, brief loss of consciousness without warning; pallor (from absent cardiac output); followed by flushing when rhythm resumes. Convulsions may occur if asystole > 10 seconds. No neurological deficit after recovery.')
add_numbered(doc, 'ECG findings: P waves occurring at normal sinus rate, QRS complexes at a slow, independent rate (AV dissociation), wide QRS complexes (if ventricular origin).')
add_body(doc, 'Treatment: Permanent cardiac pacemaker implantation.')
doc.add_paragraph()
# ── (e) Cardiac output definition + regulation (5 marks) ─────────────────────
add_heading2(doc, '(e) Definition of Cardiac Output and its Regulation in Detail [5 Marks]')
add_body(doc,
'Definition: Cardiac output (CO) is the volume of blood pumped by each ventricle per minute.')
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('CO = Heart Rate (HR) × Stroke Volume (SV)')
run.bold = True
run.font.size = Pt(11)
add_body(doc, 'Normal resting cardiac output ≈ 5 L/min (HR 72 bpm × SV 70 mL).')
doc.add_paragraph()
add_body(doc, 'REGULATION OF CARDIAC OUTPUT:')
doc.add_paragraph()
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('I. Intrinsic (Frank-Starling) Mechanism:')
run.bold = True
run.underline = True
run.font.size = Pt(11)
add_body(doc,
'The heart has the inherent ability to increase its force of contraction in response to an '
'increase in end-diastolic volume (EDV — the preload). When venous return rises, more blood '
'fills the ventricle → sarcomere stretch → increased overlap of actin and myosin → greater '
'cross-bridge formation → increased force of contraction → increased stroke volume. '
'This is the Frank-Starling Law of the Heart.')
add_bullet(doc, 'Increased venous return → increased EDV (preload) → increased SV → increased CO.')
add_bullet(doc, 'Ensures that the left and right ventricles pump equal outputs over time.')
doc.add_paragraph()
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('II. Extrinsic Neural Regulation (Autonomic Nervous System):')
run.bold = True
run.underline = True
run.font.size = Pt(11)
add_body(doc, 'A. Sympathetic stimulation (via β1-adrenergic receptors):')
add_bullet(doc, 'Chronotropy (+): Increases heart rate by increasing the slope of pacemaker potential in SA node.')
add_bullet(doc, 'Inotropy (+): Increases force of ventricular contraction (increased intracellular Ca²⁺ via cAMP).')
add_bullet(doc, 'Lusitropy (+): Faster relaxation — increases CO by allowing better filling.')
add_bullet(doc, 'Net effect: Both HR and SV increase → CO increases significantly (up to 25 L/min during exercise).')
add_body(doc, 'B. Parasympathetic stimulation (via muscarinic M2 receptors):')
add_bullet(doc, 'Chronotropy (−): Decreases heart rate by slowing SA node depolarisation (increased K⁺ conductance).')
add_bullet(doc, 'Mild negative inotropy on atria. Little direct effect on ventricles.')
add_bullet(doc, 'Net effect: CO decreases.')
doc.add_paragraph()
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('III. Humoral/Hormonal Regulation:')
run.bold = True
run.underline = True
run.font.size = Pt(11)
add_bullet(doc, 'Catecholamines (adrenaline, noradrenaline): Increase CO via β1 stimulation.')
add_bullet(doc, 'Thyroid hormone: Increases HR and myocardial contractility → increases CO (hyperthyroid state = high CO).')
add_bullet(doc, 'Glucagon, glucocorticoids: Mildly increase CO.')
add_bullet(doc, 'Acetylcholine: Decreases HR → decreases CO.')
doc.add_paragraph()
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('IV. Preload, Afterload and Contractility:')
run.bold = True
run.underline = True
run.font.size = Pt(11)
add_bullet(doc, 'Preload (EDV): ↑ preload → ↑ SV (Frank-Starling). Determined by venous return, blood volume, venous tone.')
add_bullet(doc, 'Afterload (aortic pressure / systemic vascular resistance): ↑ afterload → ↓ SV → ↓ CO. Heart must work harder to eject against resistance.')
add_bullet(doc, 'Contractility (Inotropic state): Independent of preload/afterload. ↑ contractility → ↑ SV → ↑ CO. Increased by catecholamines, digoxin, Ca²⁺, etc.')
doc.add_paragraph()
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('V. Local Metabolic Regulation (Tissue Demand):')
run.bold = True
run.underline = True
run.font.size = Pt(11)
add_body(doc,
'Active tissues produce metabolic vasodilators (CO₂, H⁺, adenosine, K⁺, hypoxia). These '
'dilate local arterioles → decrease peripheral resistance → increase venous return → increase '
'CO (via Frank-Starling). This is the dominant mechanism during exercise: increased O₂ demand '
'of muscles → local vasodilation → increased venous return → increased CO.')
add_divider(doc)
# ══════════════════════════════════════════════════════════════════════════════
# Q2 SHORT NOTES (5 × 7 = 35 marks)
# ══════════════════════════════════════════════════════════════════════════════
add_heading1(doc, 'Q.2 Short Notes (5×7 = 35 marks)')
# ────────────────────────────────────────────────────────────────────────────
# (a) O2-Hb Dissociation Curve (7 marks)
# ────────────────────────────────────────────────────────────────────────────
add_heading2(doc, '(a) Oxygen-Haemoglobin Dissociation Curve — Diagram, Factors and Sigmoid Shape [7 Marks]')
add_body(doc,
'The oxygen-haemoglobin (O₂-Hb) dissociation curve represents the relationship between '
'the partial pressure of oxygen (PO₂) and the percentage saturation of haemoglobin with oxygen.')
doc.add_paragraph()
add_body(doc, 'Key values on the normal curve:')
add_bullet(doc, 'PO₂ = 100 mmHg (alveolar): Hb saturation ≈ 97% (arterial blood)')
add_bullet(doc, 'PO₂ = 40 mmHg (tissues): Hb saturation ≈ 75% (venous blood)')
add_bullet(doc, 'PO₂ = 26 mmHg (P50): Hb saturation = 50% (P50 — affinity index)')
doc.add_paragraph()
add_body(doc, '[DIAGRAM NOTE: Draw an S-shaped (sigmoid) curve with PO₂ on X-axis (0-100 mmHg) and % Hb saturation on Y-axis (0-100%). Mark: PO₂ 40 mmHg (75% sat), PO₂ 60 mmHg (90% sat), PO₂ 100 mmHg (97% sat). Show right-shift and left-shift curves with labels.]')
doc.add_paragraph()
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('Why is the Curve Sigmoid-Shaped?')
run.bold = True
run.underline = True
run.font.size = Pt(11)
add_body(doc, 'The sigmoid shape is due to co-operative binding (allosteric interaction):')
add_numbered(doc, 'Haemoglobin is a tetramer with 4 subunits (2α + 2β chains), each carrying one haem group with one Fe²⁺ ion that binds one O₂ molecule.')
add_numbered(doc, 'When the first O₂ binds to one haem group, it induces a conformational change (R-state/relaxed state) that increases the affinity of the remaining 3 subunits for O₂ — this is positive cooperativity.')
add_numbered(doc, 'At low PO₂, very few O₂ molecules are bound (T-state/tense state, low affinity) — this creates the flat lower part of the curve.')
add_numbered(doc, 'As PO₂ rises, cooperative binding accelerates — the curve rises steeply in the middle portion.')
add_numbered(doc, 'At high PO₂, all 4 sites are nearly saturated — the curve flattens at the top (plateau).')
add_body(doc, 'Physiological significance: The flat upper portion ensures adequate loading in the lungs even if PO₂ drops to 60 mmHg. The steep middle portion ensures efficient unloading of O₂ in tissues at PO₂ 40 mmHg.')
doc.add_paragraph()
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('Factors Shifting the Curve:')
run.bold = True
run.underline = True
run.font.size = Pt(11)
add_body(doc, 'RIGHT SHIFT (↑ P50 = decreased affinity = more O₂ released to tissues) — favoured in tissues:')
add_bullet(doc, '↑ CO₂ (Bohr effect)', '')
add_bullet(doc, '↓ pH (acidosis — Bohr effect)')
add_bullet(doc, '↑ Temperature')
add_bullet(doc, '↑ 2,3-BPG (bisphosphoglycerate) — in anaemia, chronic hypoxia, high altitude')
add_body(doc, 'LEFT SHIFT (↓ P50 = increased affinity = more O₂ held by Hb) — favoured in lungs:')
add_bullet(doc, '↓ CO₂')
add_bullet(doc, '↑ pH (alkalosis)')
add_bullet(doc, '↓ Temperature')
add_bullet(doc, '↓ 2,3-BPG')
add_bullet(doc, 'Fetal Hb (HbF) — binds 2,3-BPG less avidly → left shift → better O₂ extraction from mother')
add_bullet(doc, 'Carboxyhaemoglobin (CO poisoning) — left shift + reduced O₂-carrying capacity')
doc.add_paragraph()
add_divider(doc)
# ────────────────────────────────────────────────────────────────────────────
# (b) Compensatory mechanisms in hemorrhagic shock (7 marks)
# ────────────────────────────────────────────────────────────────────────────
add_heading2(doc, '(b) Compensatory Mechanisms in Haemorrhagic Shock [7 Marks]')
add_body(doc,
'Haemorrhagic shock occurs due to significant blood/fluid loss resulting in inadequate tissue '
'perfusion. The body activates multiple compensatory mechanisms to restore blood pressure and '
'cardiac output.')
doc.add_paragraph()
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('1. Immediate Cardiovascular Reflexes (within seconds):')
run.bold = True
run.font.size = Pt(11)
add_bullet(doc, 'Fall in BP → baroreceptors (carotid sinus, aortic arch) detect reduced stretch → increased sympathetic tone and decreased vagal tone.')
add_bullet(doc, 'Increased HR (tachycardia) and increased contractility → maintains CO.')
add_bullet(doc, 'Vasoconstriction of arterioles and veins (via α1-adrenergic receptors) → increases SVR → maintains MAP.')
add_bullet(doc, 'Venoconstriction: reduces venous capacitance → increases venous return and preload.')
doc.add_paragraph()
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('2. Neuroendocrine Response (within minutes):')
run.bold = True
run.font.size = Pt(11)
add_bullet(doc, 'Renin-Angiotensin-Aldosterone System (RAAS): Reduced renal perfusion → renin release → angiotensin II → potent vasoconstriction + aldosterone → Na⁺ and water retention → plasma volume expansion.')
add_bullet(doc, 'ADH (Vasopressin): Released from posterior pituitary in response to low BP and increased osmolality → water retention by renal collecting ducts → increases plasma volume. Also causes vasoconstriction.')
add_bullet(doc, 'Catecholamines (adrenaline from adrenal medulla): Increase HR, contractility, vasoconstriction. Also increase blood glucose (glycogenolysis) for metabolic demands.')
add_bullet(doc, 'Cortisol: Increases gluconeogenesis; supports cardiovascular response to catecholamines.')
doc.add_paragraph()
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('3. Fluid Shift from Interstitium to Plasma (Transcapillary Refill):')
run.bold = True
run.font.size = Pt(11)
add_bullet(doc, 'Reduced capillary hydrostatic pressure (due to arteriolar vasoconstriction) → net fluid absorption from interstitial space into capillaries → increases plasma volume by up to 0.5 L.')
add_bullet(doc, 'This mechanism can restore up to 1 L in the first hour and is the basis of "autotransfusion".')
doc.add_paragraph()
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('4. Haematological Compensation:')
run.bold = True
run.font.size = Pt(11)
add_bullet(doc, 'Spleen contracts (in animals) → releases stored RBCs → increases O₂-carrying capacity.')
add_bullet(doc, 'Erythropoietin (EPO) release from kidney → stimulates erythropoiesis → RBC production over days to weeks.')
add_bullet(doc, 'Plasma protein synthesis increases → restores oncotic pressure over 24–48 hours.')
doc.add_paragraph()
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('5. Tissue-Level Compensation:')
run.bold = True
run.font.size = Pt(11)
add_bullet(doc, 'Peripheral O₂ extraction increases: tissues extract more O₂ from each unit of blood (↓ venous PO₂).')
add_bullet(doc, 'Anaerobic metabolism → lactic acid accumulation → Bohr effect → right shift of O₂-Hb curve → more O₂ delivered to tissues.')
add_body(doc, 'NOTE: These mechanisms are self-limiting. If > 30–40% blood volume is lost (Class III/IV shock), compensatory mechanisms fail → decompensated shock → death if untreated.')
doc.add_paragraph()
add_divider(doc)
# ────────────────────────────────────────────────────────────────────────────
# (c) Long-term regulation of blood pressure (7 marks)
# ────────────────────────────────────────────────────────────────────────────
add_heading2(doc, '(c) Long-Term Regulation of Blood Pressure [7 Marks]')
add_body(doc,
'Long-term BP regulation is primarily achieved by the kidney through control of extracellular '
'fluid (ECF) volume and blood volume. This is also called the "infinite gain" mechanism because '
'it can, in theory, completely correct a sustained deviation in BP over time.')
doc.add_paragraph()
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('1. Renal Pressure-Natriuresis Mechanism (Guyton\'s Concept):')
run.bold = True
run.underline = True
run.font.size = Pt(11)
add_body(doc,
'The kidney regulates BP through its control of urinary output:')
add_bullet(doc, '↑ BP → ↑ glomerular filtration + ↓ tubular reabsorption → natriuresis and diuresis → reduced ECF and blood volume → reduced venous return → reduced CO → BP returns to normal.')
add_bullet(doc, '↓ BP → ↓ urinary output → fluid retention → ↑ blood volume → ↑ venous return → ↑ CO → BP rises back to normal.')
doc.add_paragraph()
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('2. Renin-Angiotensin-Aldosterone System (RAAS):')
run.bold = True
run.underline = True
run.font.size = Pt(11)
add_bullet(doc, 'Low renal perfusion → Juxtaglomerular (JG) cells release renin → converts angiotensinogen to angiotensin I.')
add_bullet(doc, 'ACE (in lungs) converts Ang I → Angiotensin II.')
add_bullet(doc, 'Angiotensin II: (a) Direct vasoconstriction → ↑ SVR → ↑ BP. (b) Stimulates aldosterone from adrenal cortex → Na⁺ + water retention → ↑ blood volume → ↑ BP. (c) Stimulates ADH release and thirst.')
add_bullet(doc, 'Long-term: Na⁺ and water retention elevates blood volume and hence MAP over days to weeks.')
doc.add_paragraph()
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('3. ADH (Antidiuretic Hormone / Vasopressin):')
run.bold = True
run.underline = True
run.font.size = Pt(11)
add_bullet(doc, 'Released from posterior pituitary in response to ↑ osmolality or ↓ BP.')
add_bullet(doc, 'Acts on V2 receptors in renal collecting duct → inserts aquaporin-2 channels → water reabsorption → restores blood volume and BP.')
add_bullet(doc, 'Also acts on V1 receptors → vasoconstriction (pressor effect).')
doc.add_paragraph()
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('4. Atrial Natriuretic Peptide (ANP) and BNP:')
run.bold = True
run.underline = True
run.font.size = Pt(11)
add_bullet(doc, 'Released by atria (ANP) and ventricles (BNP) when stretched by ↑ blood volume.')
add_bullet(doc, 'Causes natriuresis, diuresis and vasodilation → reduces blood volume and BP.')
add_bullet(doc, 'Acts as a counter-regulatory mechanism against RAAS and ADH.')
doc.add_paragraph()
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('5. Aldosterone (Independent role):')
run.bold = True
run.underline = True
run.font.size = Pt(11)
add_bullet(doc, 'Acts on principal cells of renal collecting duct → activates ENaC channels → Na⁺ reabsorption + K⁺/H⁺ secretion.')
add_bullet(doc, 'Chronically elevated aldosterone (primary hyperaldosteronism / Conn\'s syndrome) causes hypertension due to persistent Na⁺ and water retention.')
doc.add_paragraph()
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('6. Structural Autoregulation of Vascular Resistance:')
run.bold = True
run.underline = True
run.font.size = Pt(11)
add_bullet(doc, 'Chronically elevated CO leads to local metabolic autoregulation → vasoconstriction → elevated SVR. Over months-years, chronic hypertension → vascular remodelling (hypertrophy of arteriolar walls) → sustained ↑ SVR → chronic hypertension.')
doc.add_paragraph()
add_divider(doc)
# ────────────────────────────────────────────────────────────────────────────
# (d) Acclimatization at high altitudes (7 marks)
# ────────────────────────────────────────────────────────────────────────────
add_heading2(doc, '(d) Acclimatization at High Altitudes [7 Marks]')
add_body(doc,
'Acclimatization refers to the physiological adjustments that occur when an individual '
'ascends to high altitude (>2500 m) where barometric pressure and inspired PO₂ are reduced. '
'At high altitude, the FiO₂ remains 21% but barometric pressure falls → alveolar PO₂ falls → '
'arterial hypoxaemia → various adaptive responses.')
doc.add_paragraph()
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('Immediate Responses (within hours):')
run.bold = True
run.underline = True
run.font.size = Pt(11)
add_numbered(doc, 'Hyperventilation: Hypoxia stimulates peripheral chemoreceptors (carotid/aortic bodies) → increased respiratory rate and depth → ↓ PaCO₂ (hypocapnia) → respiratory alkalosis. This is the first and most important response.')
add_numbered(doc, 'Tachycardia and increased cardiac output: Sympathetic activation from hypoxia → increased HR and CO → more O₂ delivered per unit time.')
add_numbered(doc, 'Redistribution of blood flow to vital organs (brain, heart).')
doc.add_paragraph()
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('Compensatory Responses (within hours to days):')
run.bold = True
run.underline = True
run.font.size = Pt(11)
add_numbered(doc, 'Renal compensation for respiratory alkalosis: Kidneys excrete HCO₃⁻ (bicarbonate) → pH returns toward normal (metabolic compensation). This allows ventilation to increase further without limiting alkalosis.')
add_numbered(doc, 'Increased 2,3-BPG: Hypoxia activates glycolysis in RBCs → ↑ 2,3-BPG → right shift of O₂-Hb curve → better O₂ unloading to tissues. (Note: Right shift also slightly impairs O₂ loading in lungs, but at extreme altitude, this is balanced by the renal alkalosis compensation.)')
doc.add_paragraph()
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('Long-Term Acclimatization (days to weeks):')
run.bold = True
run.underline = True
run.font.size = Pt(11)
add_numbered(doc, 'Polycythaemia (increased RBC production): Renal peritubular cells sense hypoxia → ↑ Erythropoietin (EPO) → stimulates bone marrow erythropoiesis → ↑ RBC count, Hb, haematocrit → ↑ O₂-carrying capacity of blood. Haematocrit may rise from 45% to 60–65%.')
add_numbered(doc, 'Increased capillary density (angiogenesis): More capillaries per unit tissue → reduced diffusion distance → better O₂ delivery.')
add_numbered(doc, 'Increased mitochondrial density and myoglobin content: Cells become more efficient at extracting and using O₂.')
add_numbered(doc, 'Pulmonary vasoconstriction (hypoxic pulmonary vasoconstriction — HPV): Redirects blood from poorly ventilated areas to better-ventilated areas. Chronic HPV → pulmonary hypertension → right ventricular hypertrophy (cor pulmonale) — a maladaptation at extreme altitude.')
add_numbered(doc, 'Gradual decrease in HR and CO back toward normal as blood O₂ content improves.')
add_body(doc,
'Net result of acclimatization: Arterial O₂ content and delivery to tissues is maintained '
'despite low atmospheric PO₂, allowing sustained physical activity at high altitude.')
doc.add_paragraph()
add_divider(doc)
# ────────────────────────────────────────────────────────────────────────────
# (e) Functions of bile + enterohepatic circulation (7 marks)
# ────────────────────────────────────────────────────────────────────────────
add_heading2(doc, '(e) Functions of Bile and Enterohepatic Circulation of Bile Salts [7 Marks]')
add_body(doc,
'Bile is a greenish-yellow alkaline fluid secreted by hepatocytes and stored/concentrated in '
'the gallbladder. Total daily secretion: ~500–1000 mL. pH ≈ 7.8–8.6.')
doc.add_paragraph()
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('Composition of Bile:')
run.bold = True
run.font.size = Pt(11)
add_bullet(doc, 'Water (97%), bile salts (primary: cholic acid, chenodeoxycholic acid; secondary: deoxycholic acid, lithocholic acid), bile pigments (bilirubin, biliverdin), cholesterol, phospholipids (lecithin), electrolytes, mucus.')
doc.add_paragraph()
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('Functions of Bile:')
run.bold = True
run.underline = True
run.font.size = Pt(11)
add_numbered(doc, 'Emulsification of fats: Bile salts are amphipathic (hydrophilic + hydrophobic ends). They break large fat droplets into small micelles (emulsification) → greatly increase surface area for lipase action. Without bile, fat digestion is markedly impaired.')
add_numbered(doc, 'Formation of micelles for fat absorption: Bile salts form mixed micelles with monoglycerides, fatty acids, fat-soluble vitamins (A, D, E, K) and cholesterol → transport them to the brush border of enterocytes for absorption.')
add_numbered(doc, 'Absorption of fat-soluble vitamins: A, D, E, K require bile for absorption. Bile deficiency → steatorrhoea + fat-soluble vitamin deficiencies.')
add_numbered(doc, 'Cholesterol excretion: Main route of cholesterol excretion from the body is via bile.')
add_numbered(doc, 'Excretion of bilirubin and other waste products: Bilirubin (from Hb breakdown) is conjugated in liver and excreted in bile → intestinal bacteria convert it to urobilinogen/stercobilinogen → gives stool its brown colour.')
add_numbered(doc, 'Alkalinisation of duodenum: Bile (alkaline, HCO₃⁻ rich) neutralises gastric acid entering duodenum → optimal pH for pancreatic enzyme activity.')
add_numbered(doc, 'Intestinal motility: Bile salts stimulate peristalsis in the small intestine.')
doc.add_paragraph()
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('Enterohepatic Circulation of Bile Salts:')
run.bold = True
run.underline = True
run.font.size = Pt(11)
add_body(doc,
'The enterohepatic circulation is the recycling of bile salts between the liver and the intestine. '
'The total bile salt pool is ~3–5 g, but it cycles 6–10 times per day, delivering a total of '
'20–30 g of bile salts to the intestine daily.')
add_numbered(doc, 'Liver synthesises primary bile acids (cholic and chenodeoxycholic acid) from cholesterol, conjugates them with glycine or taurine → bile salts. Secreted into bile ducts → gallbladder.')
add_numbered(doc, 'On eating → CCK (cholecystokinin) released from duodenum → gallbladder contracts → bile salts released into duodenum.')
add_numbered(doc, 'Bile salts assist fat digestion and absorption in the jejunum.')
add_numbered(doc, 'In the terminal ileum: ~95% of bile salts are actively reabsorbed by specific Na⁺-dependent transporters (ASBT — apical sodium-dependent bile acid transporter).')
add_numbered(doc, 'Absorbed bile salts enter portal circulation → return to liver → re-secreted into bile (hepatic extraction 70–90%).')
add_numbered(doc, 'Only ~5% of bile salts escape into the colon, where bacteria deconjugate them → secondary bile acids (deoxycholic and lithocholic acid) → some reabsorbed, rest excreted in stool.')
add_body(doc,
'Significance: The enterohepatic circulation conserves bile salts and reduces the need for '
'de novo synthesis. Bile acid sequestrants (e.g., cholestyramine) interrupt this cycle → '
'more bile acids synthesised from cholesterol → serum cholesterol falls (used as treatment for '
'hypercholesterolaemia).')
doc.add_paragraph()
add_divider(doc)
# ────────────────────────────────────────────────────────────────────────────
# (f) Role of peripheral chemoreceptors in regulation of respiration (7 marks)
# ────────────────────────────────────────────────────────────────────────────
add_heading2(doc, '(f) Role of Peripheral Chemoreceptors in Regulation of Respiration [7 Marks]')
add_body(doc,
'Peripheral chemoreceptors are specialised sensory cells located outside the CNS that monitor '
'the chemical composition of arterial blood and send signals to the respiratory centre to '
'maintain homeostasis.')
doc.add_paragraph()
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('Location:')
run.bold = True
run.font.size = Pt(11)
add_bullet(doc, 'Carotid bodies: Located at the bifurcation of the common carotid arteries. More important. Afferents via the carotid sinus nerve (branch of glossopharyngeal nerve, CN IX) → nucleus tractus solitarius (NTS) → respiratory centres.')
add_bullet(doc, 'Aortic bodies: Located in the aortic arch. Afferents via the vagus nerve (CN X). Less important for respiratory control.')
doc.add_paragraph()
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('Cell Types:')
run.bold = True
run.font.size = Pt(11)
add_bullet(doc, 'Type I (glomus) cells: The main chemosensory cells. Contain dopamine, serotonin, and other neurotransmitters. Sense changes in PO₂, PCO₂ and pH.')
add_bullet(doc, 'Type II (sustentacular) cells: Supporting cells, similar to glial cells. Not chemosensory.')
doc.add_paragraph()
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('Stimuli (in order of sensitivity for peripheral chemoreceptors):')
run.bold = True
run.font.size = Pt(11)
add_numbered(doc, 'Hypoxia (↓ PaO₂ < 60 mmHg): PRIMARY stimulus. Mechanism: ↓ PO₂ → inhibits K⁺ channels in glomus cells → cell depolarisation → Ca²⁺ influx → dopamine/neurotransmitter release → afferent nerve firing → respiratory centre. Significant response only when PaO₂ falls below 60 mmHg (steep part of O₂-Hb curve). Important in patients with chronic hypoxia (COPD) where hypoxic drive becomes the primary stimulus ("hypoxic drive").')
add_numbered(doc, 'Hypercapnia (↑ PaCO₂): Peripheral chemoreceptors contribute ~20% of the ventilatory response to CO₂ (the remaining 80% is from central chemoreceptors at the medullary surface). PaCO₂ acts partly via local pH change at the receptor.')
add_numbered(doc, 'Acidosis (↓ pH): Unlike central chemoreceptors (which respond only to changes in CSF pH/PCO₂), peripheral chemoreceptors respond DIRECTLY to blood pH changes, including metabolic acidosis. This is important in: diabetic ketoacidosis, lactic acidosis — peripheral chemoreceptors drive Kussmaul breathing (deep, rapid respirations).')
add_numbered(doc, 'Other stimuli: Ischaemia, hypotension, nicotine, cytotoxic drugs (cyanide, CO).')
doc.add_paragraph()
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('Response:')
run.bold = True
run.font.size = Pt(11)
add_bullet(doc, 'Stimulation → increased firing rate → signals sent to dorsal respiratory group (DRG) in medulla → increased depth (tidal volume) and rate of breathing → increased minute ventilation.')
add_bullet(doc, 'Also trigger cardiovascular responses: bradycardia and hypertension (trigeminal-vagal reflex) when stimulated in isolation — though during hypoxia this is overridden by cortical/ventilatory responses causing tachycardia.')
doc.add_paragraph()
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('Clinical Importance:')
run.bold = True
run.font.size = Pt(11)
add_bullet(doc, 'COPD patients: Central chemoreceptors become insensitive to chronic hypercapnia → peripheral hypoxic drive becomes primary respiratory stimulus. Administration of high-flow O₂ → abolishes hypoxic drive → apnoea ("CO₂ narcosis" risk).')
add_bullet(doc, 'Cheyne-Stokes breathing: Alternating hyperpnoea and apnoea; occurs in heart failure and CNS lesions due to delay in chemoreceptor feedback loop.')
add_bullet(doc, 'High altitude: Peripheral chemoreceptors (carotid bodies) drive hyperventilation in response to hypoxia, initiating acclimatisation.')
doc.add_paragraph()
add_divider(doc)
# ────────────────────────────────────────────────────────────────────────────
# (g) Composition and regulation of pancreatic juice (7 marks)
# ────────────────────────────────────────────────────────────────────────────
add_heading2(doc, '(g) Composition and Regulation of Secretion of Pancreatic Juice [7 Marks]')
add_body(doc,
'The pancreas is a mixed exocrine/endocrine organ. The exocrine pancreas secretes pancreatic '
'juice — ~1.5–2 L/day. It is the most important digestive fluid in the body, containing enzymes '
'for digestion of proteins, carbohydrates and fats, along with bicarbonate to neutralise '
'gastric acid.')
doc.add_paragraph()
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('Composition of Pancreatic Juice:')
run.bold = True
run.underline = True
run.font.size = Pt(11)
add_body(doc, 'A. Aqueous (Electrolyte) Component — secreted by ductal cells (centroacinar cells):')
add_bullet(doc, 'Water: 97%')
add_bullet(doc, 'Sodium (Na⁺): Similar to plasma (~140 mEq/L)')
add_bullet(doc, 'Potassium (K⁺): Similar to plasma (~5 mEq/L)')
add_bullet(doc, 'Bicarbonate (HCO₃⁻): KEY component — 70–120 mEq/L at high flow rates (highest of any body fluid). Neutralises gastric acid in duodenum → pH 6.0–7.0.')
add_bullet(doc, 'Chloride (Cl⁻): Inversely related to HCO₃⁻ (sum = ~155 mEq/L, matching total anion content)')
add_bullet(doc, 'pH: 7.8–8.4 (alkaline, due to high HCO₃⁻)')
add_body(doc, 'B. Enzymatic Component — secreted by acinar cells (as inactive zymogens):')
add_body(doc, 'Proteases (secreted as inactive zymogens):')
add_bullet(doc, 'Trypsinogen → activated by enterokinase (enteropeptidase) in duodenum → Trypsin (active). Trypsin then activates all other zymogens (cascade amplification).')
add_bullet(doc, 'Chymotrypsinogen → Chymotrypsin (cleaves aromatic/large neutral amino acids)')
add_bullet(doc, 'Proelastase → Elastase (cleaves elastic fibres)')
add_bullet(doc, 'Procarboxypeptidase A and B → Carboxypeptidases (exopeptidases: cleave C-terminal amino acids)')
add_body(doc, 'Amylolytic enzyme:')
add_bullet(doc, 'Pancreatic amylase: Secreted in active form. Hydrolyses starch and glycogen to maltose, maltotriose and α-limit dextrins.')
add_body(doc, 'Lipolytic enzymes:')
add_bullet(doc, 'Pancreatic lipase (colipase-dependent): Hydrolyses triglycerides to 2-monoglyceride and 2 free fatty acids. Requires colipase (also secreted by pancreas) to displace bile salts from lipid surface.')
add_bullet(doc, 'Phospholipase A₂ (secreted as prophospholipase): Cleaves phospholipids.')
add_bullet(doc, 'Cholesterol esterase: Hydrolyses cholesterol esters.')
add_body(doc, 'Nucleases:')
add_bullet(doc, 'DNase and RNase: Digest nucleic acids.')
doc.add_paragraph()
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('Regulation of Pancreatic Secretion:')
run.bold = True
run.underline = True
run.font.size = Pt(11)
add_body(doc, '3 Phases of Regulation:')
add_numbered(doc,
'Cephalic phase (10% of total): Sight, smell, taste and chewing of food → vagal stimulation (ACh) → '
'direct stimulation of acinar cells → enzyme-rich pancreatic secretion. Abolished by vagotomy.')
add_numbered(doc,
'Gastric phase (10%): Distension of stomach → vagovagal reflex → enzyme-rich secretion from pancreas. '
'Also, some gastrin from G-cells stimulates acinar cells.')
add_numbered(doc,
'Intestinal phase (80% — most important):\n'
' • SECRETIN: Acid (H⁺) entering duodenum (pH < 4.5) → S-cells of duodenum release secretin → acts on ductal cells → large volume of HCO₃⁻-rich pancreatic juice. (Secretin effect: "voluminous + alkaline" juice.)\n'
' • CCK (Cholecystokinin): Fat and protein digestion products entering duodenum → I-cells release CCK → acts on acinar cells (CCK₁/A receptors) → enzyme-rich pancreatic juice + gallbladder contraction. (CCK effect: "enzyme-rich" juice.)\n'
' • Synergism: Secretin + CCK act synergistically — together they produce a response greater than either alone.\n'
' • Vagal potentiation: Vagal tone enhances the response to both secretin and CCK.')
doc.add_paragraph()
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
run = p.add_run('Protective Mechanisms against Autodigestion:')
run.bold = True
run.font.size = Pt(11)
add_bullet(doc, 'Zymogens stored in membrane-bound granules (zymogen granules) — enzymes segregated from cell cytoplasm.')
add_bullet(doc, 'Trypsin inhibitors (SPINK1 / pancreatic secretory trypsin inhibitor, PSTI) present in pancreatic juice and acinar cells neutralise any prematurely activated trypsin.')
add_bullet(doc, 'Enterokinase is only present in duodenal lumen — activation occurs distally, away from the pancreas.')
add_bullet(doc, 'Failure of these mechanisms → acute pancreatitis (autodigestion of pancreatic tissue).')
doc.add_paragraph()
add_divider(doc)
# Footer
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = p.add_run('— End of Solved Answer Sheet —')
run.italic = True
run.font.size = Pt(10)
run.font.color.rgb = RGBColor(0x88, 0x88, 0x88)
# Save
out_path = '/tmp/workspace/unit-test-physiology/Physiology_Unit_Test_3_Solved.docx'
doc.save(out_path)
print(f'Saved: {out_path}')
cd /tmp/workspace/unit-test-physiology && python3 build_answers.py
~/unit-test-physiology/build_answers.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/unit-test-physiology/build_answers.py'
cd /tmp/workspace/unit-test-physiology && python3 build_answers.py
Physiology Unit Test 3 Solved
Word Document · DOCX
Solved according to the mark distribution
python3 -c " from docx import Document doc = Document('/tmp/workspace/attachments/4267cda5-cda3-4a7c-ae63-617ae212f0fb/UNIT TEST 1.docx') for p in doc.paragraphs: style = p.style.name if p.style else 'None' if p.text.strip(): print(f'[{style}] {p.text}') for table in doc.tables: print('--- TABLE ---') for row in table.rows: for cell in row.cells: if cell.text.strip(): print(cell.text.strip(), end=' | ') print() "
mkdir -p /tmp/workspace/unit-test-1-physiology
~/unit-test-1-physiology/build_ut1.py
from docx import Document
from docx.shared import Pt, Inches, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
doc = Document()
# Page margins
section = doc.sections[0]
section.top_margin = Inches(0.8)
section.bottom_margin = Inches(0.8)
section.left_margin = Inches(1.0)
section.right_margin = Inches(1.0)
# Normal style
ns = doc.styles['Normal']
ns.font.name = 'Times New Roman'
ns.font.size = Pt(12)
# ── Helpers ───────────────────────────────────────────────────────────────────
def h_center(doc, text, size=13, bold=True, color=None):
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = p.add_run(text)
r.bold = bold
r.font.size = Pt(size)
if color:
r.font.color.rgb = RGBColor(*color)
def h1(doc, text):
p = doc.add_paragraph()
r = p.add_run(text)
r.bold = True; r.underline = True
r.font.size = Pt(12)
r.font.color.rgb = RGBColor(0xC0, 0x00, 0x00)
def h2(doc, text):
p = doc.add_paragraph()
r = p.add_run(text)
r.bold = True; r.font.size = Pt(11)
def body(doc, text, indent=0.2):
p = doc.add_paragraph(text)
p.paragraph_format.left_indent = Inches(indent)
if p.runs:
p.runs[0].font.size = Pt(11)
def bullet(doc, text, indent=0.35, bold_prefix=None):
p = doc.add_paragraph(style='List Bullet')
p.paragraph_format.left_indent = Inches(indent)
if bold_prefix:
rb = p.add_run(bold_prefix); rb.bold = True; rb.font.size = Pt(11)
r = p.add_run(text); r.font.size = Pt(11)
def numbered(doc, text, indent=0.35, bold_prefix=None):
p = doc.add_paragraph(style='List Number')
p.paragraph_format.left_indent = Inches(indent)
if bold_prefix:
rb = p.add_run(bold_prefix); rb.bold = True; rb.font.size = Pt(11)
r = p.add_run(text); r.font.size = Pt(11)
def divider(doc):
p = doc.add_paragraph()
r = p.add_run('─' * 90)
r.font.size = Pt(7)
r.font.color.rgb = RGBColor(0xCC, 0xCC, 0xCC)
def marks_note(doc, text):
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.RIGHT
r = p.add_run(text); r.italic = True; r.font.size = Pt(10)
r.font.color.rgb = RGBColor(0x55, 0x55, 0x55)
def spacer(doc):
doc.add_paragraph()
# ══════════════════════════════════════════════════════════════════════════════
# HEADER
# ══════════════════════════════════════════════════════════════════════════════
h_center(doc, 'National Capital Region Institute of Medical Sciences', size=13, color=(0x00,0x00,0x8B))
h_center(doc, 'Department of Physiology', size=12, color=(0x00,0x00,0x8B))
h_center(doc, 'UNIT TEST-1 | MBBS Batch 2025-26 | Max. Marks: 40', size=11, bold=False)
h_center(doc, 'SOLVED ANSWER SHEET', size=13, color=(0x00,0x80,0x00))
divider(doc)
# ══════════════════════════════════════════════════════════════════════════════
# Q.1 ESSAY TYPE (3+8+4 = 15 marks)
# ══════════════════════════════════════════════════════════════════════════════
h1(doc, 'Q.1 Essay Type Question (3+8+4 = 15 marks)')
spacer(doc)
body(doc,
'Q: Classify different transport mechanisms across the cell membrane. Describe '
'sodium-potassium ATPase pump with well-labelled diagram, its functions and clinical significance.')
spacer(doc)
# ── Part A: Classification of transport mechanisms [3 marks] ─────────────────
h2(doc, 'PART A: Classification of Transport Mechanisms Across Cell Membrane [3 Marks]')
spacer(doc)
body(doc, 'Transport across the cell membrane is broadly classified as:')
spacer(doc)
h2(doc, 'I. Passive Transport (No energy required — moves along concentration/electrochemical gradient):')
bullet(doc, 'Simple Diffusion: Lipid-soluble, non-polar, small molecules (O₂, CO₂, steroids, alcohol, urea) diffuse directly through the lipid bilayer. Rate governed by Fick\'s law of diffusion.')
bullet(doc, 'Facilitated Diffusion: Lipid-insoluble, polar or large molecules transported via carrier proteins (uniporters) or channel proteins along their concentration gradient. No energy needed. Shows saturation kinetics and specificity. Examples: glucose (GLUT1-4), fructose, amino acids.')
bullet(doc, 'Osmosis: Movement of water across a semipermeable membrane from low to high solute concentration (down water\'s concentration gradient). Via aquaporins (AQP channels).')
bullet(doc, 'Filtration: Bulk flow of water + solutes driven by hydrostatic pressure (e.g., glomerular filtration).')
spacer(doc)
h2(doc, 'II. Active Transport (Energy — ATP — required; moves against concentration/electrochemical gradient):')
p = doc.add_paragraph(); p.paragraph_format.left_indent = Inches(0.35)
rb = p.add_run('A. Primary Active Transport: '); rb.bold = True; rb.font.size = Pt(11)
r = p.add_run('Directly uses ATP hydrolysis. Examples:')
r.font.size = Pt(11)
bullet(doc, 'Na⁺-K⁺ ATPase pump (most important)')
bullet(doc, 'Ca²⁺-ATPase pump (SERCA — sarcoplasmic reticulum; PMCA — plasma membrane)')
bullet(doc, 'H⁺-K⁺ ATPase pump (gastric parietal cells — acid secretion)')
bullet(doc, 'Iodide pump (thyroid follicular cells)')
p = doc.add_paragraph(); p.paragraph_format.left_indent = Inches(0.35)
rb = p.add_run('B. Secondary Active Transport: '); rb.bold = True; rb.font.size = Pt(11)
r = p.add_run('Uses electrochemical gradient of Na⁺ (created by Na⁺-K⁺ ATPase) as driving force. Indirectly uses ATP.')
r.font.size = Pt(11)
bullet(doc, 'Cotransport (Symport): Na⁺ and glucose move in the same direction (SGLT1 in intestine, SGLT2 in kidney). Na⁺ and amino acids; Na⁺ and Cl⁻.')
bullet(doc, 'Counter-transport (Antiport): Na⁺ and Ca²⁺ move in opposite directions (NCX — Na⁺-Ca²⁺ exchanger); Na⁺ and H⁺ (NHE).')
spacer(doc)
h2(doc, 'III. Vesicular (Bulk) Transport:')
bullet(doc, 'Endocytosis: Cell engulfs extracellular material into vesicles.')
bullet(doc, ' → Phagocytosis (large particles — bacteria, debris; by macrophages, neutrophils)')
bullet(doc, ' → Pinocytosis (fluid droplets — "cell drinking")')
bullet(doc, ' → Receptor-mediated endocytosis (specific macromolecules — LDL, transferrin, insulin — via clathrin-coated pits)')
bullet(doc, ' → Caveolae-dependent endocytosis (lipid rafts/caveolae — cholesterol transport, signalling)')
bullet(doc, 'Exocytosis: Cell expels contents of vesicles (e.g., neurotransmitter release, hormone secretion).')
bullet(doc, 'Transcytosis: Endocytosis at one surface + exocytosis at opposite surface (e.g., IgG across placenta, intestinal epithelium).')
spacer(doc)
# ── Part B: Na⁺-K⁺ ATPase pump [8 marks] ────────────────────────────────────
h2(doc, 'PART B: Sodium-Potassium ATPase (Na⁺-K⁺) Pump — Mechanism + Diagram [8 Marks]')
spacer(doc)
h2(doc, 'Structure:')
bullet(doc, 'A transmembrane protein (P-type ATPase) made of 2 subunits: α-subunit (catalytic, 110 kDa — contains ATP binding site, Na⁺ and K⁺ binding sites, ouabain binding site) and β-subunit (regulatory glycoprotein, 55 kDa).')
bullet(doc, 'Universally present in virtually all animal cells; particularly abundant in neurons, cardiac muscle and renal tubular cells.')
spacer(doc)
h2(doc, 'Mechanism of Action (Albers-Post Cycle):')
numbered(doc, 'In E1 (high-affinity for Na⁺) conformation: 3 Na⁺ ions bind to intracellular binding sites of the α-subunit.')
numbered(doc, 'ATP is hydrolysed → ADP released + the pump is phosphorylated (E1-P state). Energy is used.')
numbered(doc, 'Phosphorylation causes conformational change → E2-P state (low affinity for Na⁺, high affinity for K⁺). The 3 Na⁺ ions are expelled to the extracellular space.')
numbered(doc, '2 K⁺ ions from the extracellular space bind to the pump in E2-P conformation.')
numbered(doc, 'Dephosphorylation occurs (inorganic phosphate released) → pump returns to E1 conformation. The 2 K⁺ ions are released into the intracellular space.')
numbered(doc, 'Cycle repeats. Net: 3 Na⁺ out : 2 K⁺ in per ATP hydrolysed.')
spacer(doc)
body(doc, '[DIAGRAM: Draw the Na⁺-K⁺ pump as a transmembrane protein spanning the lipid bilayer. Show α and β subunits. Inside cell: 3 Na⁺ arrows pointing outward, ATP → ADP+Pi. Outside cell: 2 K⁺ arrows pointing inward. Label: ATP binding site, phosphorylation site, Na⁺ binding sites (×3), K⁺ binding sites (×2). Arrow showing cycle direction. Note: Ouabain/cardiac glycoside binding site on extracellular face of α-subunit.]', indent=0.3)
spacer(doc)
h2(doc, 'Characteristics of the Pump:')
bullet(doc, 'Electrogenic: Moves 3 Na⁺ out for every 2 K⁺ in → net loss of 1 positive charge per cycle → makes inside of cell slightly more negative → contributes ~-4 mV to resting membrane potential.')
bullet(doc, 'Requires Mg²⁺-ATP (not just ATP) — Mg²⁺ is a cofactor.')
bullet(doc, 'Inhibited by ouabain (cardiac glycoside binding site) and other cardiac glycosides (digoxin, digitalis).')
bullet(doc, 'Rate is proportional to intracellular [Na⁺] — regulated by load.')
spacer(doc)
# ── Part C: Functions and clinical significance [4 marks] ────────────────────
h2(doc, 'PART C: Functions and Clinical Significance [4 Marks]')
spacer(doc)
h2(doc, 'Functions of the Na⁺-K⁺ ATPase Pump:')
numbered(doc, 'Maintenance of resting membrane potential (RMP): Creates and maintains the Na⁺ and K⁺ gradients (Na⁺ high outside, K⁺ high inside) that are the basis of the RMP (~-70 mV in neurons). Also directly contributes -4 mV (electrogenic effect).')
numbered(doc, 'Cell volume regulation: Without the pump, Na⁺ leaking into the cell would cause osmotic water influx and cell swelling (lysis). The pump continuously extrudes Na⁺, preventing cell swelling — maintains cell volume homeostasis.')
numbered(doc, 'Driving secondary active transport: The Na⁺ gradient created by this pump provides energy for cotransport (SGLT1 — glucose absorption in intestine) and counter-transport (NHE — Na⁺/H⁺ exchange in kidney). Hence this pump indirectly drives absorption of glucose, amino acids, and other nutrients.')
numbered(doc, 'Maintenance of excitability: Essential for repolarisation of neurons and muscle cells after action potentials. Continuous pump activity restores Na⁺ and K⁺ gradients between action potentials.')
numbered(doc, 'Thermogenesis: The pump consumes ~25–40% of basal metabolic energy in resting cells (up to 70% in neurons) — major source of body heat.')
numbered(doc, 'Renal tubular reabsorption: Na⁺-K⁺ pump on the basolateral membrane of renal tubular cells drives Na⁺ reabsorption, which in turn drives water reabsorption.')
spacer(doc)
h2(doc, 'Clinical Significance:')
bullet(doc, 'Cardiac Glycosides (Digoxin/Digitalis): Inhibit the Na⁺-K⁺ pump → ↑ intracellular Na⁺ → reduces activity of Na⁺-Ca²⁺ exchanger (NCX, which normally uses Na⁺ gradient to extrude Ca²⁺) → ↑ intracellular Ca²⁺ → increased myocardial contractility (positive inotropy). Used in heart failure and atrial fibrillation. Toxicity (digoxin toxicity): hyperkalaemia, cardiac arrhythmias, visual disturbances, nausea.')
bullet(doc, 'Hyperkalaemia: High extracellular K⁺ inhibits the pump → depolarisation of cell membrane → muscle weakness, cardiac arrhythmias, paralysis (dangerous in renal failure).')
bullet(doc, 'Ischaemia/Hypoxia: No ATP → pump fails → Na⁺ accumulates inside cells → osmotic cell swelling → cell death (irreversible cell injury in stroke and MI).')
bullet(doc, 'Hypothyroidism: Thyroid hormone upregulates Na⁺-K⁺ pump expression → reduced pump activity in hypothyroidism contributes to reduced metabolic rate.')
bullet(doc, 'Anaesthetics (lidocaine, tetrodotoxin): Block Na⁺ channels (different from pump) but pump activity determines baseline excitability — relevant in local anaesthesia.')
bullet(doc, 'Ouabain-like compounds: Endogenous ouabain-like compounds (marinobufagenin) inhibit the pump → implicated in essential hypertension pathogenesis.')
divider(doc)
# ══════════════════════════════════════════════════════════════════════════════
# Q.2 SHORT NOTES (5 × 5 = 25 marks)
# ══════════════════════════════════════════════════════════════════════════════
h1(doc, 'Q.2 Short Notes (5×5 = 25 marks)')
# ── SN1: Positive Feedback Mechanism [5 marks] ────────────────────────────────
spacer(doc)
h2(doc, 'Short Note 1: Positive Feedback Mechanism with Examples [5 Marks]')
spacer(doc)
body(doc,
'Positive feedback is a control mechanism in which the output of a system amplifies or enhances '
'the initiating stimulus, moving the system further away from the set point (unlike negative '
'feedback which restores the set point). It is inherently unstable and self-amplifying — it '
'continues until a definitive endpoint is reached or the system is interrupted.')
spacer(doc)
h2(doc, 'Characteristics:')
bullet(doc, 'Amplifying / explosive / self-reinforcing')
bullet(doc, 'Generally operates towards a specific end-point (completion)')
bullet(doc, 'Useful in physiological situations requiring a rapid, all-or-nothing response')
bullet(doc, 'Can be dangerous if uncontrolled (pathological positive feedback)')
spacer(doc)
h2(doc, 'Physiological Examples:')
numbered(doc, 'Action Potential (Hodgkin Cycle): Depolarisation → voltage-gated Na⁺ channels open → Na⁺ influx → further depolarisation → more Na⁺ channels open → more Na⁺ influx → rapid "explosive" upstroke of action potential. This is classic positive feedback. It is terminated by Na⁺ channel inactivation and K⁺ channel opening (repolarisation).')
numbered(doc, 'Parturition (Childbirth — Ferguson\'s Reflex): Fetal head presses on cervix → uterine stretch → oxytocin released from posterior pituitary → uterine contractions → more cervical stretch → more oxytocin → stronger contractions. Continues until delivery of baby (endpoint). Terminated by removal of fetal head pressure.')
numbered(doc, 'Blood Clotting (Coagulation Cascade): Vessel injury → thrombin formation → thrombin activates factors V and VIII (positive feedback) → more thrombin generated → amplification of clot formation. Endpoint: stable fibrin clot. Controlled by anticoagulants (antithrombin, protein C/S).')
numbered(doc, 'Ovulation (LH Surge): Rising oestrogen levels → instead of inhibiting LH (as in negative feedback), at high levels → stimulates GnRH + LH surge (positive feedback) → massive LH peak → ovulation. This occurs only once per cycle as the follicle ruptures.')
numbered(doc, 'Platelet Aggregation: ADP and thromboxane A₂ released by activated platelets → recruit more platelets → more ADP/TXA₂ → amplified aggregation (positive feedback) until stable platelet plug formed.')
spacer(doc)
h2(doc, 'Pathological Positive Feedback (Vicious cycles):')
bullet(doc, 'Septic shock: Reduced CO → reduced tissue perfusion → lactic acidosis → myocardial depression → further reduced CO → death.')
bullet(doc, 'Haemorrhagic shock (severe): Progressive blood loss → reduced CO → ischaemia → vasodilator metabolites → further BP drop → death.')
divider(doc)
# ── SN2: Methods of measurement of body fluids [5 marks] ──────────────────────
spacer(doc)
h2(doc, 'Short Note 2: Different Methods of Measurement of Body Fluids [5 Marks]')
spacer(doc)
body(doc,
'Total Body Water (TBW) constitutes approximately 60% of body weight in an adult male '
'(~42 L in 70 kg). Body fluid compartments are measured using the Dilution Principle / '
'Indicator Dilution Method.')
spacer(doc)
h2(doc, 'Principle of Indicator Dilution Method:')
body(doc, 'Volume = Amount of substance administered ÷ Concentration of substance at equilibrium')
body(doc, ' V = Q / C (where Q = amount injected, C = equilibrium concentration)')
body(doc, 'The indicator must: (a) distribute only in the compartment being measured, (b) be non-toxic, (c) not be metabolised or excreted during the measurement period, (d) be easily and accurately measurable.')
spacer(doc)
h2(doc, 'Compartments and Indicators Used:')
# Build a simple table
table = doc.add_table(rows=1, cols=4)
table.style = 'Table Grid'
hdr = table.rows[0].cells
hdr[0].text = 'Compartment'
hdr[1].text = 'Volume (70 kg adult)'
hdr[2].text = 'Indicator'
hdr[3].text = 'Notes'
for cell in hdr:
for para in cell.paragraphs:
for run in para.runs:
run.bold = True
run.font.size = Pt(10)
data = [
('Total Body Water (TBW)', '42 L (60% BW)', 'Tritiated water (³H₂O)\nDeuterium (D₂O)\nAntipyrine', 'Distributes in all water compartments'),
('Extracellular Fluid (ECF)', '14 L (20% BW)', 'Inulin, mannitol, sucrose\nRadioactive Na⁺ (²⁴Na)\nThiosulfate, Cl⁻ (³⁶Cl)', 'Does NOT cross cell membrane\nDoes not enter cells'),
('Intracellular Fluid (ICF)', '28 L (40% BW)', 'Cannot measure directly', 'ICF = TBW − ECF'),
('Plasma Volume', '3 L (~5% BW)', 'Evans blue dye (T-1824)\nRadioiodinated serum albumin\n(¹³¹I-albumin)', 'Binds to plasma albumin\nStays within vascular space'),
('Blood Volume', '5 L (~7% BW)', '⁵¹Cr-labelled RBCs\n(chromium-tagged RBCs)', 'Also: BV = PV / (1−Hct)'),
('Interstitial Fluid (ISF)', '11 L (15% BW)', 'Cannot measure directly', 'ISF = ECF − Plasma Volume'),
]
for row_data in data:
row = table.add_row().cells
for i, text in enumerate(row_data):
row[i].text = text
for para in row[i].paragraphs:
for run in para.runs:
run.font.size = Pt(10)
spacer(doc)
h2(doc, 'Other Methods:')
bullet(doc, 'Bioelectrical Impedance Analysis (BIA): Measures resistance of body to a small electrical current. Fat-free mass conducts better than fat. Clinically used to estimate TBW and body composition.')
bullet(doc, 'Isotope Dilution (Heavy water / Deuterium oxide, D₂O): Most accurate method for TBW in clinical research. Non-radioactive, safe in pregnant women and children.')
bullet(doc, 'Haematocrit method: Blood volume can be calculated from plasma volume and haematocrit: BV = PV/(1−Hct).')
h2(doc, 'Key Relationships:')
bullet(doc, 'TBW = ICF + ECF')
bullet(doc, 'ECF = Plasma + Interstitial fluid (+ transcellular fluid ~1L)')
bullet(doc, 'Blood volume = Plasma volume + RBC volume')
divider(doc)
# ── SN3: Apoptosis [5 marks] ──────────────────────────────────────────────────
spacer(doc)
h2(doc, 'Short Note 3: Apoptosis [5 Marks]')
spacer(doc)
body(doc,
'Apoptosis is programmed cell death — an energy-dependent, genetically regulated, '
'physiological process of cell suicide that eliminates unwanted, damaged or potentially '
'harmful cells without causing inflammation. Coined by Kerr, Wyllie and Currie (1972). '
'It is distinct from necrosis (uncontrolled, pathological cell death).')
spacer(doc)
h2(doc, 'Morphological Features of Apoptosis:')
bullet(doc, 'Cell shrinkage (pyknosis — nuclear condensation)')
bullet(doc, 'Chromatin condensation and margination along nuclear envelope')
bullet(doc, 'DNA fragmentation into oligonucleosomal fragments (ladder pattern on gel electrophoresis — "DNA ladder")')
bullet(doc, 'Membrane blebbing → formation of apoptotic bodies (membrane-bound fragments containing organelles and nuclear debris)')
bullet(doc, 'Apoptotic bodies are phagocytosed by neighbouring cells and macrophages — NO inflammatory response')
bullet(doc, 'Cell membrane remains intact throughout (unlike necrosis where membrane ruptures early)')
spacer(doc)
h2(doc, 'Mechanisms / Pathways:')
numbered(doc, 'Intrinsic (Mitochondrial) Pathway: Triggered by internal stresses (DNA damage, oxidative stress, growth factor withdrawal). → Pro-apoptotic proteins (Bax, Bak) form pores in mitochondrial outer membrane → release of Cytochrome C → binds Apaf-1 + caspase-9 → "Apoptosome" → activates executioner caspases (caspase-3, 6, 7) → cell death. Anti-apoptotic proteins (Bcl-2, Bcl-XL) inhibit this pathway.')
numbered(doc, 'Extrinsic (Death Receptor) Pathway: Triggered by extracellular death signals binding to death receptors (Fas/CD95, TNFR1). FasL binds Fas → DISC (Death-Inducing Signalling Complex) → caspase-8 activation → activates caspase-3 → cell death.')
numbered(doc, 'Common Final Pathway: Both pathways converge at executioner caspase-3, which cleaves structural proteins (cytoskeleton, nuclear lamins), activates DNases (CAD — caspase-activated DNase) → DNA ladder.')
spacer(doc)
h2(doc, 'Physiological Roles:')
bullet(doc, 'Embryonic development: Sculpting of fingers (removal of interdigital webbing), formation of neural tube')
bullet(doc, 'Immune system: Deletion of autoreactive T-cells (thymic selection), clonal deletion')
bullet(doc, 'Tissue homeostasis: Balances cell proliferation, eliminates aged/senescent cells')
bullet(doc, 'Removal of cells with DNA damage (prevents cancer)')
spacer(doc)
h2(doc, 'Apoptosis vs Necrosis:')
bullet(doc, 'Apoptosis: Programmed, energy-dependent, no inflammation, cell shrinkage, DNA ladder, apoptotic bodies, single cells')
bullet(doc, 'Necrosis: Accidental, energy-independent, inflammation present, cell swelling/lysis, random DNA degradation, affects groups of cells')
spacer(doc)
h2(doc, 'Clinical Significance:')
bullet(doc, 'Excessive apoptosis: Neurodegenerative diseases (Alzheimer\'s, Parkinson\'s, ALS), AIDS (CD4⁺ T-cell depletion), ischaemic injury')
bullet(doc, 'Deficient apoptosis: Cancer (Bcl-2 overexpression in follicular lymphoma — t(14;18) translocation), autoimmune diseases')
bullet(doc, 'Cancer therapy target: Many chemotherapy drugs (e.g., taxanes, cisplatin) and radiation work by inducing apoptosis in tumour cells. Bcl-2 inhibitors (venetoclax) are used in CLL.')
divider(doc)
# ── SN4: Intercellular Junctions [5 marks] ────────────────────────────────────
spacer(doc)
h2(doc, 'Short Note 4: Intercellular Junctions [5 Marks]')
spacer(doc)
body(doc,
'Intercellular junctions (cell junctions) are specialised structures at points of contact '
'between adjacent cells or between cells and the extracellular matrix (ECM). They maintain '
'tissue integrity, allow intercellular communication and regulate paracellular permeability.')
spacer(doc)
h2(doc, '1. Tight Junctions (Zonula Occludens):')
bullet(doc, 'Location: Apical region of epithelial and endothelial cells (e.g., intestinal epithelium, blood-brain barrier).')
bullet(doc, 'Structure: Transmembrane proteins claudins and occludins form "kisses" between adjacent cell membranes — fuse outer leaflets, obliterating intercellular space.')
bullet(doc, 'Function: (a) Barrier function — prevents paracellular diffusion of molecules between cells ("gate function"). (b) "Fence function" — prevents lateral diffusion of membrane proteins from apical to basolateral domains → maintains cell polarity.')
bullet(doc, 'Clinical: Disruption of tight junctions in BBB → cerebral oedema. Mutations in claudin-16 → familial hypomagnesaemia.')
h2(doc, '2. Adherens Junctions (Zonula Adherens):')
bullet(doc, 'Location: Just below tight junctions in epithelial cells.')
bullet(doc, 'Structure: E-cadherin (Ca²⁺-dependent transmembrane protein) connects adjacent cells. Intracellularly linked to actin cytoskeleton via catenins (α, β, γ-catenin).')
bullet(doc, 'Function: Mechanical attachment between cells; cell shape regulation; signal transduction.')
bullet(doc, 'Clinical: Loss of E-cadherin (mutation or methylation) → loss of cell-cell adhesion → epithelial-mesenchymal transition (EMT) → metastasis in carcinomas (e.g., gastric cancer — CDH1 mutations).')
h2(doc, '3. Desmosomes (Macula Adherens):')
bullet(doc, 'Location: Skin (epidermis), cardiac muscle, uterine epithelium — tissues under mechanical stress.')
bullet(doc, 'Structure: Desmogleins and desmocollins (cadherin family) connect cells; intracellularly linked to intermediate filaments (keratin in epithelium, desmin in cardiac muscle) via desmoplakin and plakoglobin.')
bullet(doc, 'Function: Provide strong mechanical attachment — "spot-welds" between cells.')
bullet(doc, 'Clinical: Pemphigus vulgaris — autoantibodies against desmoglein 3 → loss of desmosomes → acantholysis (separation of epidermal cells) → blistering skin disease.')
h2(doc, '4. Gap Junctions (Nexus):')
bullet(doc, 'Location: Cardiac muscle (intercalated discs), smooth muscle, neurons, liver, lens of eye.')
bullet(doc, 'Structure: Connexins (6 connexins form a connexon/hemichannel; 2 connexons from adjacent cells align to form a gap junction channel). Channel diameter ~1.5 nm. Allow passage of molecules <1000 Da (ions, cAMP, Ca²⁺, glucose).')
bullet(doc, 'Function: (a) Electrical coupling — rapid spread of action potential in cardiac muscle (syncytial contraction). (b) Metabolic coupling — sharing of nutrients/second messengers between cells. (c) Co-ordinated contraction in smooth muscle and uterus.')
bullet(doc, 'Clinical: Connexin 26 (GJB2) mutations → sensorineural deafness (most common cause of hereditary hearing loss). Cardiac gap junction disruption → re-entry arrhythmias.')
h2(doc, '5. Hemidesmosomes:')
bullet(doc, 'Location: Basal surface of epithelial cells — connects cells to basement membrane.')
bullet(doc, 'Structure: Integrins (α6β4) connect to laminin in the basement membrane; intracellularly linked to keratin intermediate filaments via BPAG1 (bullous pemphigoid antigen 1).')
bullet(doc, 'Function: Anchors epithelial cells to the underlying ECM/basement membrane.')
bullet(doc, 'Clinical: Bullous pemphigoid — autoantibodies against BPAG2 (collagen XVII) or BPAG1 → loss of hemidesmosomes → subepidermal blistering.')
divider(doc)
# ── SN5: Genesis of Resting Membrane Potential [5 marks] ──────────────────────
spacer(doc)
h2(doc, 'Short Note 5: Genesis of Resting Membrane Potential (RMP) [5 Marks]')
spacer(doc)
body(doc,
'The resting membrane potential (RMP) is the electrical potential difference across the '
'plasma membrane of an excitable cell at rest (no stimulation). In neurons, RMP ≈ -70 mV '
'(inside negative relative to outside). In skeletal muscle: -90 mV; cardiac muscle: -90 mV.')
spacer(doc)
h2(doc, 'Ionic Basis — Concentration Gradients:')
table2 = doc.add_table(rows=1, cols=4)
table2.style = 'Table Grid'
hdr2 = table2.rows[0].cells
hdr2[0].text = 'Ion'
hdr2[1].text = 'Intracellular (mM)'
hdr2[2].text = 'Extracellular (mM)'
hdr2[3].text = 'Nernst Potential'
for cell in hdr2:
for para in cell.paragraphs:
for run in para.runs:
run.bold = True; run.font.size = Pt(10)
ion_data = [
('Na⁺', '12', '145', '+67 mV'),
('K⁺', '140', '4', '-94 mV'),
('Cl⁻', '4', '120', '-90 mV'),
('Ca²⁺', '0.0001', '1.2', '+132 mV'),
('A⁻ (organic anions)', '138', 'negligible', 'Non-diffusible'),
]
for row_data in ion_data:
row2 = table2.add_row().cells
for i, text in enumerate(row_data):
row2[i].text = text
for para in row2[i].paragraphs:
for run in para.runs:
run.font.size = Pt(10)
spacer(doc)
h2(doc, 'Genesis of RMP — Step by Step:')
numbered(doc,
'Unequal ion distribution: Na⁺-K⁺-ATPase pump actively maintains high intracellular K⁺ '
'(140 mEq/L vs 4 mEq/L outside) and low intracellular Na⁺ (12 mEq/L vs 145 mEq/L outside). '
'Large organic anions (proteins, phosphates — A⁻) are trapped inside the cell and cannot cross the membrane.')
numbered(doc,
'Selective K⁺ permeability at rest: At rest, the cell membrane is predominantly permeable to K⁺ '
'(via leak K⁺ channels — inward rectifier K⁺ channels, Kir) and relatively impermeable to Na⁺ and Cl⁻. '
'PK : PNa : PCl = 1 : 0.04 : 0.45 (Goldman-Hodgkin-Katz equation values).')
numbered(doc,
'K⁺ diffusion creates negative charge: K⁺ ions diffuse OUT of the cell down their concentration gradient '
'through leak channels. As K⁺ leaves, it takes positive charge with it → inside of cell becomes increasingly '
'negative. The large non-diffusible organic anions (A⁻) remain behind, adding to the negativity inside.')
numbered(doc,
'Equilibrium — Nernst potential for K⁺: As the inside becomes negative, it attracts K⁺ back (electrical '
'gradient opposes further diffusion). At equilibrium, the K⁺ Nernst potential = -94 mV (the tendency to '
'diffuse out equals the electrical pull back in). The actual RMP (-70 mV) is less negative than EK because '
'of slight Na⁺ influx (Na⁺ Nernst potential = +67 mV; small inward leak of Na⁺ partially depolarises '
'the membrane).')
numbered(doc,
'Goldman-Hodgkin-Katz (GHK) equation: Accounts for permeability to all ions:\n'
' Vm = (RT/F) × ln [(PK[K⁺]o + PNa[Na⁺]o + PCl[Cl⁻]i) / (PK[K⁺]i + PNa[Na⁺]i + PCl[Cl⁻]o)]\n'
' At rest, K⁺ permeability dominates → Vm ≈ -70 mV (between EK and ENa, closer to EK).')
numbered(doc,
'Contribution of Na⁺-K⁺ pump: The pump directly contributes -4 mV (electrogenic — removes 3 Na⁺, '
'brings in 2 K⁺ per cycle, net outward positive current). More importantly, it maintains the ionic '
'gradients that are the primary basis of the RMP.')
spacer(doc)
h2(doc, 'Summary — RMP = -70 mV because:')
bullet(doc, 'High K⁺ permeability at rest → K⁺ diffuses out → negative interior')
bullet(doc, 'Trapped intracellular organic anions (A⁻) → contribute to negativity')
bullet(doc, 'Small Na⁺ leak inward → partially reduces negativity')
bullet(doc, 'Na⁺-K⁺ pump → electrogenic contribution (-4 mV) + maintains gradients')
spacer(doc)
h2(doc, 'Factors affecting RMP:')
bullet(doc, 'Hyperkalaemia (↑ extracellular K⁺): Reduces K⁺ gradient → less K⁺ diffuses out → RMP becomes less negative (depolarisation) → increased excitability → cardiac arrhythmias, muscle weakness (in severe hyperkalaemia, paradoxical inexcitability due to Na⁺ channel inactivation).')
bullet(doc, 'Hypokalaemia: ↑ K⁺ gradient → more K⁺ efflux → hyperpolarisation → decreased excitability.')
bullet(doc, 'Na⁺-K⁺ pump failure (ischaemia, ouabain): Loss of ionic gradients → membrane depolarisation → loss of excitability.')
divider(doc)
# ══════════════════════════════════════════════════════════════════════════════
# MCQ SECTION
# ══════════════════════════════════════════════════════════════════════════════
h1(doc, 'MCQ SECTION — Unit Test 1 (Answers with Explanations) (10 marks)')
spacer(doc)
mcqs = [
('Q1', 'Nernst potential for K⁺', 'C. −90 mV',
'The Nernst equation: EK = (RT/zF) × ln([K⁺]o/[K⁺]i) = (61/1) × log(4/140) ≈ 61 × (−1.54) ≈ −94 mV. '
'The closest answer is −90 mV. (Standard value cited in most physiology textbooks is −90 to −94 mV.)'),
('Q2', 'False regarding facilitated diffusion', 'C. Does not follow saturation kinetics',
'This statement is FALSE — facilitated diffusion DOES follow saturation kinetics (Michaelis-Menten kinetics) '
'because it depends on a limited number of carrier proteins. When all carriers are occupied, rate cannot increase '
'further (Vmax). All other options are TRUE about facilitated diffusion.'),
('Q3', 'All are examples of primary active transport EXCEPT', 'C. Na⁺-Glucose cotransport',
'Na⁺-Glucose cotransport (SGLT) is SECONDARY active transport — it uses the Na⁺ electrochemical gradient '
'(created by Na⁺-K⁺ ATPase) as energy, NOT direct ATP hydrolysis. All others (Na⁺-K⁺ ATPase, K⁺-H⁺ ATPase, '
'Iodide pump) directly hydrolyse ATP = primary active transport.'),
('Q4', 'Cytoskeleton comprises', 'A. Microtubules and microfilaments',
'The cytoskeleton consists of three components: (1) Microtubules (tubulin — 25 nm diameter), '
'(2) Microfilaments / Actin filaments (actin — 7 nm), (3) Intermediate filaments (8–10 nm, e.g., keratin, '
'vimentin, desmin, neurofilaments). The cell membrane, Golgi complex and cell junctions are separate structures.'),
('Q5', 'All are families of cell adhesion molecules EXCEPT', 'D. Hemidesmosomes',
'Hemidesmosomes are cell junctions (not a family of adhesion molecules per se). The four major families of '
'cell adhesion molecules (CAMs) are: (1) Integrins, (2) Cadherins, (3) Selectins, (4) Immunoglobulin '
'superfamily CAMs (ICAMs, NCAMs). Hemidesmosomes USE integrins as their adhesion molecule but are not '
'themselves a CAM family.'),
('Q6', 'Homeostasis is maximally controlled by', 'A. Endocrine and nervous system',
'The endocrine system and nervous system are the two primary regulatory systems that maintain homeostasis '
'by monitoring and adjusting the internal environment. The nervous system provides rapid, short-term control; '
'the endocrine system provides slower, sustained regulation. Together they control virtually all homeostatic '
'mechanisms (temperature, fluid balance, blood glucose, BP, etc.).'),
('Q7', 'Cell volume is mainly dependent upon activity of', 'B. Na⁺-K⁺ pump',
'The Na⁺-K⁺ ATPase pump is the primary regulator of cell volume. It continuously pumps Na⁺ out, preventing '
'osmotic water influx. Without it, Na⁺ (and accompanying water) would accumulate → cell swelling → lysis. '
'The Donnan equilibrium/pump-leak model: the pump counteracts the osmotic effect of intracellular organic '
'anions. This is why pump failure (ischaemia) rapidly causes cell swelling.'),
('Q8', 'Calculate Gain — BP scenario', 'D. −2',
'Gain = Correction achieved / Error remaining\n'
' • Normal BP = 100 mmHg\n'
' • Disturbed BP = 175 mmHg (error induced = +75 mmHg)\n'
' • Baroreceptors bring BP to 125 mmHg\n'
' • Correction achieved = 175 − 125 = 50 mmHg\n'
' • Error remaining = 125 − 100 = +25 mmHg\n'
' • Gain = −(Correction / Error remaining) = −50/25 = −2\n'
'(Negative sign because negative feedback — correction opposes the error.)'),
('Q9', 'Caveolae-dependent uptake is a type of', 'A. Endocytosis',
'Caveolae are flask-shaped plasma membrane invaginations rich in cholesterol and sphingolipids, coated with '
'caveolin-1 protein. Caveolae-dependent uptake is a form of endocytosis (specifically non-clathrin-mediated '
'endocytosis). It is involved in transcytosis, signalling molecule internalisation, and cholesterol transport. '
'Distinct from clathrin-mediated endocytosis but still classified as endocytosis.'),
('Q10', 'Majority of plasma osmolality is contributed by', 'C. Na⁺, Cl⁻ and HCO₃⁻ ions',
'Normal plasma osmolality ≈ 285–295 mOsm/kg. Na⁺ and its anions (Cl⁻ and HCO₃⁻) contribute ~270 mOsm '
'(~92% of total). Glucose contributes ~5 mOsm, Urea ~5 mOsm, Plasma proteins ~1.3 mOsm (they contribute '
'oncotic pressure but only a tiny fraction of osmolality). K⁺, Mg²⁺, Ca²⁺ are present in small amounts. '
'Hence Na⁺ is the dominant determinant of plasma osmolality.'),
]
for qnum, qtitle, answer, explanation in mcqs:
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.2)
rb = p.add_run(f'{qnum}: {qtitle}'); rb.bold = True; rb.font.size = Pt(11)
p2 = doc.add_paragraph()
p2.paragraph_format.left_indent = Inches(0.35)
ra = p2.add_run(f'Answer: {answer}')
ra.bold = True; ra.font.size = Pt(11)
ra.font.color.rgb = RGBColor(0x00, 0x70, 0x00)
body(doc, f'Explanation: {explanation}', indent=0.35)
spacer(doc)
divider(doc)
# Footer
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = p.add_run('— End of Solved Answer Sheet — Unit Test 1 | Physiology | MBBS 2025-26 —')
r.italic = True; r.font.size = Pt(10)
r.font.color.rgb = RGBColor(0x88, 0x88, 0x88)
out_path = '/tmp/workspace/unit-test-1-physiology/Physiology_Unit_Test_1_Solved.docx'
doc.save(out_path)
print(f'Saved: {out_path}')
cd /tmp/workspace/unit-test-1-physiology && python3 build_ut1.py