Hi
Homeostasis short note
| Parameter | Normal Range / Target |
|---|---|
| Body temperature | 36-37°C (thermal neutral zone) |
| Blood glucose | Regulated by insulin/glucagon |
| Arterial blood pressure | ~120/80 mmHg |
| Plasma pH (H⁺) | 7.35-7.45 |
| Plasma K⁺, Ca²⁺, Na⁺ | Narrow electrolyte ranges |
| Blood O₂ / CO₂ | Controlled by chemoreceptors |
| Homeostatic Failure | Consequence |
|---|---|
| Temperature dysregulation | Hyperthermia / Hypothermia |
| Blood glucose dysregulation | Diabetes mellitus |
| Fluid/electrolyte imbalance | Cardiac arrhythmias, hypertension |
| Blood pressure dysregulation | Hypertensive crisis / Shock |
For exam preparation
| Component | Role | Example |
|---|---|---|
| Receptor / Sensor | Detects change in the variable | Thermoreceptors in skin/hypothalamus |
| Control center / Integrator | Compares with set-point; generates error signal | Hypothalamus |
| Effector | Produces a corrective response | Sweat glands, blood vessels |
| Parameter | Normal Value |
|---|---|
| Body temperature | 37°C |
| Blood glucose | 70-110 mg/dL (fasting) |
| Arterial pH | 7.35-7.45 |
| Plasma Na⁺ | 135-145 mEq/L |
| Plasma K⁺ | 3.5-5.0 mEq/L |
| Plasma Ca²⁺ | 8.5-10.5 mg/dL |
| PaO₂ | 80-100 mmHg |
| System | Homeostatic Role |
|---|---|
| Nervous system | Rapid responses (ANS - sympathetic/parasympathetic) |
| Endocrine system | Slower, sustained hormonal responses |
| Kidneys | Water, electrolyte, acid-base balance |
| Lungs | O₂/CO₂ and pH regulation |
| Liver | Blood glucose, protein, detoxification |
| Heart/Vessels | Blood pressure and perfusion |
| Failure | Disease |
|---|---|
| Blood glucose dysregulation | Diabetes mellitus |
| Temp dysregulation | Heat stroke / Hypothermia |
| BP dysregulation | Hypertension / Shock |
| Fluid/electrolyte imbalance | Cardiac arrhythmias, edema |
| Acid-base imbalance | Acidosis / Alkalosis |
"Homeostasis is the dynamic self-regulating process by which biological systems maintain internal stability while continuously adjusting to conditions optimal for survival, primarily through negative feedback mechanisms."
Create a study guide PDF I can download
ls /home/daytona/workspace/ 2>/dev/null || echo "workspace not found"
mkdir -p /home/daytona/workspace/homeostasis-guide && python3 -c "import reportl…
~/homeostasis-guide/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
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import PageBreak
OUTPUT = "/home/daytona/workspace/homeostasis-guide/Homeostasis_MBBS_Study_Guide.pdf"
# ── Colour palette ──────────────────────────────────────────────────────────
BLUE_DARK = colors.HexColor("#1a3a5c")
BLUE_MID = colors.HexColor("#2e6da4")
BLUE_LIGHT = colors.HexColor("#d6e8f7")
TEAL = colors.HexColor("#1e7a72")
TEAL_LIGHT = colors.HexColor("#d0eeec")
AMBER = colors.HexColor("#c07000")
AMBER_LIGHT= colors.HexColor("#fff3cd")
RED_DARK = colors.HexColor("#8b1a1a")
RED_LIGHT = colors.HexColor("#fde8e8")
GREY_LIGHT = colors.HexColor("#f4f6f9")
GREY_MID = colors.HexColor("#dce3ed")
WHITE = colors.white
BLACK = colors.HexColor("#1a1a1a")
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
rightMargin=1.8*cm, leftMargin=1.8*cm,
topMargin=2*cm, bottomMargin=2*cm,
title="Homeostasis – MBBS Study Guide",
author="Orris Medical"
)
styles = getSampleStyleSheet()
# Custom styles
def S(name, **kw):
return ParagraphStyle(name, **kw)
cover_title = S("CoverTitle", fontSize=30, textColor=WHITE,
fontName="Helvetica-Bold", alignment=TA_CENTER, leading=36)
cover_sub = S("CoverSub", fontSize=14, textColor=BLUE_LIGHT,
fontName="Helvetica", alignment=TA_CENTER, leading=20)
cover_tag = S("CoverTag", fontSize=11, textColor=colors.HexColor("#a8cce8"),
fontName="Helvetica-Oblique", alignment=TA_CENTER)
h1 = S("H1", fontSize=15, textColor=WHITE, fontName="Helvetica-Bold",
alignment=TA_LEFT, leading=20, spaceBefore=4, spaceAfter=4)
h2 = S("H2", fontSize=12, textColor=BLUE_DARK, fontName="Helvetica-Bold",
alignment=TA_LEFT, leading=16, spaceBefore=8, spaceAfter=4)
h3 = S("H3", fontSize=11, textColor=TEAL, fontName="Helvetica-Bold",
alignment=TA_LEFT, leading=14, spaceBefore=6, spaceAfter=2)
body = S("Body", fontSize=10, textColor=BLACK, fontName="Helvetica",
alignment=TA_JUSTIFY, leading=15, spaceBefore=2, spaceAfter=2)
bullet = S("Bullet", fontSize=10, textColor=BLACK, fontName="Helvetica",
alignment=TA_LEFT, leading=14, leftIndent=14, spaceBefore=1,
spaceAfter=1, bulletIndent=4)
bold_body = S("BoldBody", fontSize=10, textColor=BLACK,
fontName="Helvetica-Bold", leading=14)
note = S("Note", fontSize=9, textColor=AMBER, fontName="Helvetica-Oblique",
alignment=TA_LEFT, leading=13, leftIndent=8)
small_white = S("SmallWhite", fontSize=9, textColor=WHITE,
fontName="Helvetica", alignment=TA_CENTER)
summary_box = S("SummaryBox", fontSize=11, textColor=BLUE_DARK,
fontName="Helvetica-BoldOblique", alignment=TA_CENTER,
leading=16)
# ── Helper: section header bar ──────────────────────────────────────────────
def section_header(text, bg=BLUE_DARK):
data = [[Paragraph(text, h1)]]
t = Table(data, colWidths=[17.4*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("ROUNDEDCORNERS", [5,5,5,5]),
("TOPPADDING", (0,0), (-1,-1), 7),
("BOTTOMPADDING", (0,0), (-1,-1), 7),
("LEFTPADDING", (0,0), (-1,-1), 12),
]))
return t
def teal_header(text):
return section_header(text, bg=TEAL)
def amber_header(text):
data = [[Paragraph(text, S("H1A", fontSize=15, textColor=WHITE,
fontName="Helvetica-Bold", leading=20))]]
t = Table(data, colWidths=[17.4*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), AMBER),
("TOPPADDING", (0,0), (-1,-1), 7),
("BOTTOMPADDING", (0,0), (-1,-1), 7),
("LEFTPADDING", (0,0), (-1,-1), 12),
]))
return t
def red_header(text):
return section_header(text, bg=RED_DARK)
# ── Helper: info box ─────────────────────────────────────────────────────────
def info_box(text_paragraphs, bg=BLUE_LIGHT, border=BLUE_MID):
inner = [[p] for p in text_paragraphs]
t = Table(inner, colWidths=[16.6*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("BOX", (0,0), (-1,-1), 1.2, border),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
]))
return t
def amber_box(text_paragraphs):
return info_box(text_paragraphs, bg=AMBER_LIGHT, border=AMBER)
def red_box(text_paragraphs):
return info_box(text_paragraphs, bg=RED_LIGHT, border=RED_DARK)
# ── Helper: standard two-col table ──────────────────────────────────────────
def two_col_table(headers, rows, col_widths=None):
if col_widths is None:
col_widths = [6*cm, 11.4*cm]
header_style = S("TH", fontSize=10, textColor=WHITE,
fontName="Helvetica-Bold", alignment=TA_CENTER)
cell_style = S("TD", fontSize=9.5, textColor=BLACK,
fontName="Helvetica", alignment=TA_LEFT, leading=13)
data = [[Paragraph(h, header_style) for h in headers]]
for row in rows:
data.append([Paragraph(str(c), cell_style) for c in row])
t = Table(data, colWidths=col_widths, repeatRows=1)
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), BLUE_DARK),
("BACKGROUND", (0,1), (-1,-1), GREY_LIGHT),
("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, GREY_LIGHT]),
("BOX", (0,0), (-1,-1), 0.8, GREY_MID),
("INNERGRID", (0,0), (-1,-1), 0.5, GREY_MID),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8),
("ALIGN", (0,0), (-1,0), "CENTER"),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
return t
def three_col_table(headers, rows, col_widths=None):
if col_widths is None:
col_widths = [4.5*cm, 6.5*cm, 6.4*cm]
header_style = S("TH3", fontSize=10, textColor=WHITE,
fontName="Helvetica-Bold", alignment=TA_CENTER)
cell_style = S("TD3", fontSize=9.5, textColor=BLACK,
fontName="Helvetica", alignment=TA_LEFT, leading=13)
data = [[Paragraph(h, header_style) for h in headers]]
for row in rows:
data.append([Paragraph(str(c), cell_style) for c in row])
t = Table(data, colWidths=col_widths, repeatRows=1)
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), BLUE_DARK),
("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, GREY_LIGHT]),
("BOX", (0,0), (-1,-1), 0.8, GREY_MID),
("INNERGRID", (0,0), (-1,-1), 0.5, GREY_MID),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8),
("ALIGN", (0,0), (-1,0), "CENTER"),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
return t
# ════════════════════════════════════════════════════════════════════════════
# BUILD CONTENT
# ════════════════════════════════════════════════════════════════════════════
story = []
# ── COVER PAGE ───────────────────────────────────────────────────────────────
cover_bg = Table(
[[Paragraph("HOMEOSTASIS", cover_title)],
[Spacer(1, 0.3*cm)],
[Paragraph("MBBS First Year Physiology", cover_sub)],
[Spacer(1, 0.2*cm)],
[Paragraph("Study Guide for Theory Examinations", cover_tag)],
[Spacer(1, 1.2*cm)],
[Paragraph("FMGE • USMLE Step 1 • University Exams", cover_tag)],
[Spacer(1, 1.5*cm)],
[Paragraph("Prepared by Orris Medical AI | July 2026", small_white)],
],
colWidths=[17.4*cm]
)
cover_bg.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), BLUE_DARK),
("TOPPADDING", (0,0), (-1,-1), 24),
("BOTTOMPADDING", (0,0), (-1,-1), 24),
("LEFTPADDING", (0,0), (-1,-1), 20),
("RIGHTPADDING", (0,0), (-1,-1), 20),
("BOX", (0,0), (-1,-1), 3, BLUE_MID),
]))
story.append(Spacer(1, 3*cm))
story.append(cover_bg)
story.append(Spacer(1, 1.5*cm))
# Topics covered box on cover
topics = Table(
[[Paragraph("<b>Topics Covered</b>", S("TCH", fontSize=11, textColor=BLUE_DARK,
fontName="Helvetica-Bold", alignment=TA_CENTER))]]+
[[Paragraph(t, S("TCI", fontSize=10, textColor=BLACK, fontName="Helvetica",
alignment=TA_CENTER, leading=16))]
for t in [
"1. Definition & Historical Background",
"2. Feedback Mechanisms (Negative & Positive)",
"3. Components of Control Systems",
"4. Regulated Parameters & Normal Values",
"5. Organ Systems in Homeostasis",
"6. Homeostatic Imbalance & Diseases",
"7. Key Exam Points & Mnemonics",
"8. Practice Questions",
]],
colWidths=[17.4*cm]
)
topics.setStyle(TableStyle([
("BACKGROUND", (0,0), (0,0), BLUE_LIGHT),
("BACKGROUND", (0,1), (-1,-1), WHITE),
("BOX", (0,0), (-1,-1), 1, BLUE_MID),
("INNERGRID", (0,0), (-1,-1), 0.3, GREY_MID),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
]))
story.append(topics)
story.append(PageBreak())
# ── SECTION 1: DEFINITION ────────────────────────────────────────────────────
story.append(section_header("1. Definition & Historical Background"))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph(
"Homeostasis is the <b>tendency of the body to maintain a relatively stable internal "
"environment (milieu intérieur)</b> despite continuous fluctuations in the external "
"environment, by means of coordinated physiological processes.",
body))
story.append(Spacer(1, 0.3*cm))
story.append(info_box([
Paragraph("<b>Historical Landmarks</b>", bold_body),
Paragraph("• <b>Claude Bernard (1850s)</b> – introduced the concept of <i>milieu intérieur</i> "
"(internal environment). Stated: \"The internal environment is a necessary "
"condition for a free life.\"", bullet),
Paragraph("• <b>Walter B. Cannon (1932)</b> – coined the term <i>Homeostasis</i> "
"(from Greek: <i>homoios</i> = similar, <i>stasis</i> = standing still).", bullet),
]))
story.append(Spacer(1, 0.4*cm))
# ── SECTION 2: FEEDBACK MECHANISMS ──────────────────────────────────────────
story.append(section_header("2. Feedback Mechanisms"))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph(
"All homeostatic mechanisms operate through <b>feedback control systems</b>. "
"There are two types:", body))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("A. Negative Feedback (Most Common)", h2))
story.append(info_box([
Paragraph(
"The response of the effector <b>opposes</b> the original stimulus, "
"returning the variable back toward its set-point. "
"This is the basis of virtually all routine homeostatic regulation.",
body),
]))
story.append(Spacer(1, 0.25*cm))
story.append(Paragraph("<b>How it works – 4 essential elements:</b>", bold_body))
story.append(Spacer(1, 0.15*cm))
neg_fb_data = [
["Step", "Element", "Example (Blood Glucose)"],
["1", "Receptor / Sensor\nDetects the change", "Beta cells sense rising blood glucose"],
["2", "Set-point Comparator\nGenerates error signal", "Normal fasting glucose: 70–110 mg/dL"],
["3", "Gain / Amplification\nProduces output signal", "Insulin secreted from pancreas"],
["4", "Effector Mechanism\nCorrective response", "Cells take up glucose → blood glucose falls"],
]
story.append(three_col_table(neg_fb_data[0], neg_fb_data[1:], [2*cm, 7*cm, 8.4*cm]))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("<b>Classic Examples of Negative Feedback:</b>", bold_body))
neg_examples = [
["Variable", "Stimulus", "Response"],
["Blood Glucose", "Glucose rises after a meal",
"Insulin secreted → glucose uptake → glucose falls"],
["Body Temperature", "Temp rises above 37°C",
"Sweating + vasodilation → heat dissipation → temp normalises"],
["Blood Pressure", "BP rises",
"Baroreceptors → ↓ heart rate + vasodilation → BP normalises"],
["Blood pH", "pH falls (acidosis)",
"Lungs ↑ RR to blow off CO₂; Kidneys excrete H⁺"],
["Plasma Ca²⁺", "Ca²⁺ falls",
"PTH secreted → bone resorption + renal reabsorption → Ca²⁺ rises"],
["Plasma Na⁺/Water", "BP/volume falls",
"RAAS activated → aldosterone → Na⁺ & water retention"],
]
story.append(three_col_table(neg_examples[0], neg_examples[1:], [4*cm, 6.5*cm, 6.9*cm]))
story.append(Spacer(1, 0.4*cm))
story.append(Paragraph("B. Positive Feedback (Less Common)", h2))
story.append(info_box([
Paragraph(
"The response of the effector <b>amplifies</b> the original stimulus, "
"driving the process further away from the baseline until a specific end-point "
"is reached. Not used for routine regulation.", body),
]))
story.append(Spacer(1, 0.2*cm))
pos_examples = [
["Situation", "Positive Feedback Loop"],
["Childbirth (parturition)",
"Uterine contractions → oxytocin release → stronger contractions → delivery"],
["Blood clotting",
"Platelet activation → more platelets recruited → clot formation → vessel sealed"],
["LH surge (ovulation)",
"Rising oestrogen → LH surge → ovulation → corpus luteum forms"],
["Action potential",
"Membrane depolarisation → Na⁺ influx → more depolarisation → spike"],
]
story.append(two_col_table(pos_examples[0], pos_examples[1:], [5.5*cm, 11.9*cm]))
story.append(Spacer(1, 0.15*cm))
story.append(amber_box([
Paragraph(
"⚡ <b>Exam tip:</b> Negative feedback = homeostasis maintenance. "
"Positive feedback = completion of a process (not routine regulation).",
note)
]))
story.append(Spacer(1, 0.5*cm))
# ── SECTION 3: COMPONENTS ────────────────────────────────────────────────────
story.append(teal_header("3. Components of a Homeostatic Control System"))
story.append(Spacer(1, 0.3*cm))
comp_data = [
["Component", "Role", "Example"],
["Receptor / Sensor",
"Detects change in the controlled variable",
"Thermoreceptors in skin & hypothalamus"],
["Afferent pathway",
"Transmits signal from receptor to control centre",
"Sensory nerves / hormones in blood"],
["Control centre / Integrator",
"Compares signal to set-point; generates error signal",
"Hypothalamus, brainstem, endocrine glands"],
["Efferent pathway",
"Transmits correction signal to effector",
"Autonomic motor nerves / hormones"],
["Effector",
"Produces corrective response",
"Sweat glands, muscles, blood vessels"],
]
story.append(three_col_table(comp_data[0], comp_data[1:], [4.2*cm, 7*cm, 6.2*cm]))
story.append(Spacer(1, 0.5*cm))
# ── SECTION 4: PARAMETERS ────────────────────────────────────────────────────
story.append(section_header("4. Regulated Parameters & Normal Values"))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph(
"Homeostasis is maintained for the following key physiological parameters. "
"<b>Know the normal values – these are frequently tested!</b>", body))
story.append(Spacer(1, 0.25*cm))
param_data = [
["Parameter", "Normal Value / Range"],
["Body (core) temperature", "36.5 – 37.5°C (oral: ~37°C)"],
["Blood glucose (fasting)", "70 – 110 mg/dL (3.9 – 6.1 mmol/L)"],
["Arterial pH", "7.35 – 7.45"],
["PaO₂ (arterial oxygen)", "80 – 100 mmHg"],
["PaCO₂ (arterial CO₂)", "35 – 45 mmHg"],
["Plasma Na⁺", "135 – 145 mEq/L"],
["Plasma K⁺", "3.5 – 5.0 mEq/L"],
["Plasma Ca²⁺ (total)", "8.5 – 10.5 mg/dL (2.1 – 2.6 mmol/L)"],
["Plasma Mg²⁺", "1.7 – 2.2 mg/dL"],
["Arterial blood pressure", "Systolic: 100–140 / Diastolic: 60–90 mmHg"],
["Plasma osmolality", "275 – 295 mOsm/kg H₂O"],
["Serum albumin", "3.5 – 5.0 g/dL"],
]
story.append(two_col_table(param_data[0], param_data[1:], [8*cm, 9.4*cm]))
story.append(Spacer(1, 0.5*cm))
# ── SECTION 5: KEY FEATURES ──────────────────────────────────────────────────
story.append(teal_header("5. Key Features & Principles of Homeostasis"))
story.append(Spacer(1, 0.3*cm))
features = [
("<b>Redundancy</b>",
"Multiple systems regulate the same parameter. If one fails, others compensate. "
"Reason why some genetic knockouts do not produce expected defects."),
("<b>Hierarchy</b>",
"Feedback loops operate in a hierarchy: Hypothalamus → Pituitary → Target gland. "
"Example: HPA axis (hypothalamus → ACTH → cortisol → glucose regulation)."),
("<b>Antagonistic controls</b>",
"Some loops oppose each other to allow fine regulation. "
"Example: Insulin lowers glucose; glucagon, cortisol & epinephrine raise it."),
("<b>Steady state, not equilibrium</b>",
"A regulated parameter is held constant by the body actively matching "
"opposing forces. This requires continuous energy expenditure."),
("<b>Synergy</b>",
"ANS and endocrine system work together. "
"Example: Sympathetic activation + adrenaline both raise heart rate during stress."),
]
for title, text in features:
story.append(Paragraph(f"• {title}: {text}", bullet))
story.append(Spacer(1, 0.1*cm))
story.append(Spacer(1, 0.3*cm))
# ── SECTION 6: ORGAN SYSTEMS ─────────────────────────────────────────────────
story.append(section_header("6. Organ Systems in Homeostasis"))
story.append(Spacer(1, 0.3*cm))
organs = [
["System", "Primary Homeostatic Role"],
["Nervous System (ANS)", "Rapid responses; regulates heart rate, BP, digestion, sweating, pupil size"],
["Endocrine System", "Slow, sustained hormonal regulation of glucose, Ca²⁺, Na⁺, water, reproduction"],
["Kidneys", "Water balance, electrolyte balance, acid-base regulation, BP (RAAS)"],
["Lungs / Respiratory", "O₂ / CO₂ regulation; rapid acid-base (pH) adjustment"],
["Liver", "Blood glucose (glycogenesis/glycogenolysis), protein synthesis, detoxification"],
["Heart & Blood Vessels", "Blood pressure and tissue perfusion; baroreceptor reflex"],
["Hypothalamus", "Master integrator: temperature, thirst, hunger, sleep, endocrine control"],
["Skin", "Temperature regulation: sweating, piloerection, vasodilation/vasoconstriction"],
["GI Tract", "Nutrient absorption, gut hormone secretion, fluid balance"],
]
story.append(two_col_table(organs[0], organs[1:], [5.5*cm, 11.9*cm]))
story.append(Spacer(1, 0.5*cm))
# ── SECTION 7: IMBALANCE ─────────────────────────────────────────────────────
story.append(red_header("7. Homeostatic Imbalance & Disease"))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph(
"Failure to maintain homeostasis leads to <b>disease</b>. "
"Extreme failure leads to <b>death</b>; moderate failure leads to <b>sickness</b>. "
"(Guyton & Hall)", body))
story.append(Spacer(1, 0.25*cm))
disease_data = [
["Homeostatic Failure", "Clinical Consequence"],
["↑ Blood glucose (insulin deficiency)", "Diabetes mellitus – Type 1 / Type 2"],
["Failure of temperature regulation", "Heat stroke (hyperthermia) / Hypothermia"],
["↑ Blood pressure (chronic)", "Hypertension → heart failure, stroke, CKD"],
["↓ Blood pressure (acute)", "Shock → multi-organ failure"],
["Acid-base imbalance", "Acidosis (pH < 7.35) / Alkalosis (pH > 7.45)"],
["Na⁺/Water imbalance", "Hyponatraemia → cerebral oedema; Hypernatraemia"],
["↓ Plasma Ca²⁺ (hypocalcaemia)", "Tetany, seizures, prolonged QT interval"],
["Fluid overload (renal failure)", "Oedema, cardiac arrhythmias, hypertension, anaemia"],
["Loss of pH control (lungs/kidneys)", "Respiratory/metabolic acidosis or alkalosis"],
]
story.append(two_col_table(disease_data[0], disease_data[1:], [7.5*cm, 9.9*cm]))
story.append(Spacer(1, 0.5*cm))
# ── SECTION 8: EXAM POINTS ───────────────────────────────────────────────────
story.append(teal_header("8. High-Yield Exam Points & Mnemonics"))
story.append(Spacer(1, 0.3*cm))
story.append(amber_box([
Paragraph("<b>MNEMONIC – Components of a Control System: "
"\"RACE\"</b>", bold_body),
Paragraph("R – Receptor (sensor)", bullet),
Paragraph("A – Afferent pathway", bullet),
Paragraph("C – Control centre (integrator)", bullet),
Paragraph("E – Effector (via efferent pathway)", bullet),
]))
story.append(Spacer(1, 0.3*cm))
story.append(amber_box([
Paragraph("<b>MNEMONIC – Examples of Positive Feedback: "
"\"BLOCA\"</b>", bold_body),
Paragraph("B – Blood clotting", bullet),
Paragraph("L – LH surge (ovulation)", bullet),
Paragraph("O – Oxytocin / childbirth", bullet),
Paragraph("C – Crowning / action potential", bullet),
Paragraph("A – Activation of coagulation cascade", bullet),
]))
story.append(Spacer(1, 0.3*cm))
exam_points = [
"Negative feedback = homeostasis (opposes the stimulus)",
"Positive feedback = completion of a process (amplifies the stimulus)",
"Claude Bernard coined milieu intérieur; Walter Cannon coined homeostasis (1932)",
"Hypothalamus is the master centre for homeostasis integration",
"Homeostasis occurs at BOTH whole-body AND single-cell levels",
"Regulated state = steady state (requires energy); NOT equilibrium",
"The more vital the parameter, the more redundant systems regulate it",
"Antagonistic hormones allow fine-tuning: insulin vs. glucagon/cortisol/epinephrine",
"HPT / HPA / HPG axes are hierarchical homeostatic loops",
"Know normal values for temp, glucose, pH, PaO₂, PaCO₂, electrolytes!",
]
for i, pt in enumerate(exam_points, 1):
story.append(Paragraph(f" {i}. {pt}", bullet))
story.append(Spacer(1, 0.05*cm))
story.append(Spacer(1, 0.4*cm))
# ── SECTION 9: PRACTICE QUESTIONS ────────────────────────────────────────────
story.append(PageBreak())
story.append(section_header("9. Practice Questions (MCQ + Short Answer)"))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("Part A – Multiple Choice Questions", h2))
story.append(Spacer(1, 0.15*cm))
mcqs = [
("1. The term 'homeostasis' was coined by:",
"A. Claude Bernard\nB. Walter B. Cannon\nC. Charles Sherrington\nD. William Harvey",
"B. Walter B. Cannon (1932). Bernard coined milieu intérieur."),
("2. Which of the following is an example of POSITIVE feedback?",
"A. Insulin secretion after a meal\nB. Sweating when body temperature rises\n"
"C. Oxytocin release during labour\nD. Baroreceptor reflex",
"C. Oxytocin release during labour amplifies uterine contractions until delivery."),
("3. The FIRST element required for a negative feedback system is:",
"A. Effector mechanism\nB. Set-point comparator\nC. Receptor/Sensor\nD. Gain amplifier",
"C. Receptor/Sensor – must detect the change before any correction can occur."),
("4. Normal fasting blood glucose is:",
"A. 50–70 mg/dL\nB. 70–110 mg/dL\nC. 120–140 mg/dL\nD. 140–180 mg/dL",
"B. 70–110 mg/dL (3.9–6.1 mmol/L)."),
("5. In homeostasis, a 'steady state' differs from 'equilibrium' in that:",
"A. Steady state requires energy; equilibrium does not\n"
"B. Equilibrium requires more energy\nC. They are the same thing\n"
"D. Steady state is passive",
"A. A steady state is actively maintained and requires continuous energy expenditure."),
("6. The master integrating centre for homeostasis in the brain is:",
"A. Cerebral cortex\nB. Cerebellum\nC. Hypothalamus\nD. Medulla oblongata",
"C. Hypothalamus – integrates neural and endocrine responses for temperature, thirst, hunger, and endocrine axes."),
]
for q, options, answer in mcqs:
story.append(info_box([
Paragraph(f"<b>{q}</b>", bold_body),
Paragraph(options.replace("\n", "<br/>"), body),
Paragraph(f"✔ <b>Answer:</b> {answer}", note),
]))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("Part B – Short Answer Questions", h2))
story.append(Spacer(1, 0.15*cm))
saqs = [
("1. Define homeostasis. Name the physiologist who coined the term.",
"Homeostasis is the tendency of the body to maintain a stable internal environment despite external changes, through coordinated physiological processes. The term was coined by Walter B. Cannon in 1932. Claude Bernard introduced the concept of milieu intérieur in the 1850s."),
("2. Describe the four essential elements of a negative feedback mechanism with an example.",
"(1) Sensor – detects deviation of a parameter; (2) Set-point comparator – generates error signal; (3) Gain/amplification – produces output signal; (4) Effector – corrective response. Example: Blood glucose rises → beta cells sense it → insulin secreted → cells take up glucose → glucose returns to normal."),
("3. Distinguish between negative and positive feedback with two examples each.",
"Negative feedback opposes the stimulus and restores the set-point (e.g., temperature regulation, blood glucose). Positive feedback amplifies the stimulus to complete a process (e.g., childbirth/oxytocin, blood clotting cascade)."),
("4. List any five diseases resulting from homeostatic imbalance.",
"(1) Diabetes mellitus (blood glucose dysregulation); (2) Heat stroke (temperature); (3) Hypertension (blood pressure); (4) Metabolic acidosis (pH/acid-base); (5) Hypocalcaemia/tetany (plasma Ca²⁺ dysregulation)."),
]
for q, ans in saqs:
story.append(info_box([
Paragraph(f"<b>{q}</b>", bold_body),
], bg=TEAL_LIGHT, border=TEAL))
story.append(info_box([
Paragraph(f"<b>Model Answer:</b> {ans}", body),
]))
story.append(Spacer(1, 0.3*cm))
# ── CLOSING SUMMARY ───────────────────────────────────────────────────────────
story.append(Spacer(1, 0.3*cm))
story.append(info_box([
Paragraph(
"\"Homeostasis is the dynamic self-regulating process by which biological systems "
"maintain internal stability while continuously adjusting to conditions optimal for "
"survival, primarily through negative feedback mechanisms.\"",
summary_box),
Spacer(1, 0.15*cm),
Paragraph("— Write this as your opening / closing line in any exam answer on Homeostasis",
S("Attr", fontSize=9, textColor=BLUE_MID, fontName="Helvetica-Oblique",
alignment=TA_CENTER)),
], bg=BLUE_LIGHT, border=BLUE_DARK))
story.append(Spacer(1, 0.5*cm))
story.append(HRFlowable(width="100%", thickness=1, color=GREY_MID))
story.append(Spacer(1, 0.15*cm))
story.append(Paragraph(
"Generated by Orris Medical AI • Sources: Guyton & Hall, Ganong's Review of Medical Physiology, Medical Physiology (Boron & Boulpaep) • July 2026",
S("Footer", fontSize=8, textColor=colors.grey, alignment=TA_CENTER)))
# ── BUILD ─────────────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF created: {OUTPUT}")
python3 /home/daytona/workspace/homeostasis-guide/generate_pdf.py 2>&1
ls -lh /home/daytona/workspace/homeostasis-guide/Homeostasis_MBBS_Study_Guide.pd…
Homeostasis MBBS Study Guide
PDF Document · PDF
| Section | Content |
|---|---|
| Cover Page | Title, exam targets (FMGE, USMLE, University) |
| 1. Definition | Claude Bernard vs. Walter Cannon |
| 2. Feedback Mechanisms | Negative (4 elements) + Positive feedback with examples |
| 3. Control System Components | RACE mnemonic (Receptor, Afferent, Control centre, Effector) |
| 4. Normal Values Table | All key parameters - glucose, pH, temp, electrolytes, BP |
| 5. Key Principles | Redundancy, hierarchy, steady state, antagonism |
| 6. Organ Systems | Role of each system in homeostasis |
| 7. Homeostatic Imbalance | Disease table - frequently exam tested |
| 8. Exam Tips & Mnemonics | RACE + BLOCA mnemonics, 10 high-yield points |
| 9. Practice Questions | 6 MCQs with answers + 4 SAQs with model answers |