maternal changes in pregnancy in each system

Reading File
Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Reading File
Finding Sources
Reading File
Finding Sources
Reading File
Reading File
Finding Sources
I now have comprehensive information from authoritative textbooks. Let me compile the full answer.

Maternal Physiological Changes in Pregnancy - System by System

Sources: Morgan & Mikhail's Clinical Anesthesiology 7e, Guyton & Hall Medical Physiology, Creasy & Resnik's Maternal-Fetal Medicine

1. Cardiovascular System

ParameterChange
Cardiac output+40% at term
Stroke volume+30%
Heart rate+20%
Blood volume+35% (total)
Plasma volume+55%
Systolic BP-5%
Diastolic BP-15%
Peripheral vascular resistance-15%
Pulmonary vascular resistance-30%
Key mechanisms and points:
  • Cardiac output begins rising in the first trimester due to decreased peripheral resistance (likely from progesterone and prostacyclin vasodilation), reaches a nadir in the second trimester, then plateaus.
  • The 55% rise in plasma volume exceeds the 45% rise in red blood cell mass, producing physiological dilutional anaemia - haemoglobin rarely falls below 11 g/dL.
  • Total blood volume increases by 1,000-1,500 mL, reaching ~90 mL/kg at term, providing a safety margin against delivery blood loss (200-500 mL vaginal; 800-1,000 mL caesarean).
  • Cardiac chambers enlarge; myocardial hypertrophy is seen on echocardiography.
  • The ECG shows left axis deviation and T-wave changes from diaphragmatic elevation shifting the heart leftward.
  • Central venous pressure (CVP), pulmonary artery pressure, and PCWP remain unchanged despite increased cardiac output.
  • After week 20, the gravid uterus compresses the inferior vena cava in the supine position, reducing venous return and cardiac output. About 5% of women develop supine hypotension syndrome (aortocaval compression) - treated by left lateral tilt (>15° wedge under right hip).
  • Chronic partial caval obstruction causes venous stasis, dependent oedema, and varicosities in the lower limbs.
Uterine blood flow at term: ~600-700 mL/min (~10% of cardiac output), compared to 50 mL/min in the non-pregnant state. It is maximally vasodilated with no autoregulation, but remains sensitive to alpha-adrenergic agonists.

2. Respiratory System

ParameterChange
Oxygen consumption+20 to 50%
Minute ventilation+50%
Tidal volume+40%
Respiratory rate+15%
PaO₂slightly increased
PaCO₂decreased to 28-32 mmHg (-15%)
HCO₃-15% (compensatory)
FRC-20%
Airway resistance-35%
Vital capacityminimally affected
Key mechanisms and points:
  • Progesterone is the primary driver - it increases minute ventilation even beyond what the metabolic demand requires, by sensitising the respiratory centre to CO₂.
  • The result is a chronic respiratory alkalosis, compensated by renal HCO₃ excretion (serum HCO₃ falls to ~20 mEq/L).
  • Elevated 2,3-DPG shifts the O₂-Hb dissociation curve rightward (P₅₀ increases from 27 to 30 mmHg), enhancing O₂ delivery to tissues.
  • In the third trimester, the growing uterus elevates the diaphragm by ~4 cm, reducing FRC by up to 20%. This is mainly an expiratory reserve volume reduction; diaphragmatic excursion itself is not restricted.
  • Decreased FRC + increased O₂ consumption = rapid desaturation during apnoea (critical during intubation - preoxygenation is mandatory).
  • Airway mucosa becomes engorged - the upper airways are more prone to trauma, bleeding, and obstruction. Smaller endotracheal tubes (6.0-6.5 mm) are recommended.
  • Flow-volume loops are unaffected; physiological dead space decreases but intrapulmonary shunting increases toward term.
  • Chest X-ray shows prominent vascular markings and elevated diaphragm.

3. Haematological System

ParameterChange
Haemoglobin-20% (dilutional)
Platelets-10% (3rd trimester)
Clotting factors+30-250%
WBCup to 21,000/µL (leukocytosis)
Hypercoagulable state:
  • Fibrinogen and factors VII, VIII, IX, X, and XII all increase. Factor XI may decrease.
  • This is adaptive - it limits haemorrhage at delivery.
  • Accelerated fibrinolysis appears in the late third trimester.
  • Increased risk of deep vein thrombosis (DVT) due to venous stasis + hypercoagulability.
Anaemia:
  • Physiological dilutional anaemia from disproportionate plasma volume expansion.
  • Iron deficiency anaemia develops easily - the fetus needs ~375 mg iron for blood formation; the mother needs an additional ~600 mg for expanded red cell mass. Iron stores are often only 100-700 mg total.
  • Folate deficiency is also common without supplementation.

4. Renal System

ParameterChange
GFR+50%
Renal plasma flowincreased
Serum creatininedecreased (as low as 0.5 mg/dL)
BUNdecreased (as low as 9 mg/dL)
Plasma osmolality-8 to 10 mOsm/kg
Key points:
  • Increased GFR causes glycosuria (1-10 g/day) and mild proteinuria (<300 mg/day) from reduced renal tubular thresholds - these are normal findings in pregnancy and should not be overinterpreted.
  • Renal tubular reabsorptive capacity for Na, Cl, and water increases ~50% (driven by aldosterone and estrogen), preventing excessive salt and water loss despite the rise in GFR.
  • Kidneys and ureters enlarge; urinary stasis promotes UTIs (especially asymptomatic bacteriuria).
  • Plasma osmolality is reset downward by about 10 mOsm/kg.

5. Gastrointestinal System

  • Gastroesophageal reflux and esophagitis are common. Gastric motility is reduced (progesterone effect). The enlarging uterus displaces the stomach upward and anteriorly, causing incompetence of the lower oesophageal sphincter.
  • These changes place the parturient at high risk for aspiration (Mendelson's syndrome risk). Opioids and anticholinergics worsen this by further reducing LES pressure.
  • Gastric acidity and gastric volume do not significantly change.
  • High progesterone levels inhibit cholecystokinin release, causing incomplete gallbladder emptying. Combined with altered bile acid composition, this predisposes to cholesterol gallstone formation.
  • Constipation is common due to reduced GI motility and mechanical pressure from the uterus.

6. Hepatic System

  • Overall hepatic blood flow and function are preserved.
  • Minor elevations in AST, ALT, and LDH in the third trimester.
  • Alkaline phosphatase is mildly elevated (placental secretion - not a sign of liver disease).
  • Serum albumin decreases mildly due to plasma volume expansion → reduced colloid oncotic pressure → dependent oedema.
  • Pseudocholinesterase activity decreases by 25-30% at term (may not normalise until 6 weeks postpartum). This is rarely clinically significant for succinylcholine duration but worth noting.
  • Ester local anaesthetic metabolism is not appreciably altered.

7. Metabolic and Endocrine System

Carbohydrate/Insulin metabolism:
  • Human placental lactogen (hPL/hCS) causes peripheral insulin resistance, making pregnancy a diabetogenic state.
  • Insulin levels rise steadily; pancreatic beta cells undergo hyperplasia.
  • Blood glucose and amino acid levels are low (favoured toward fetus); free fatty acids, ketones, and triglycerides are elevated (resembles starvation between meals).
Thyroid:
  • hCG (structurally similar to TSH) and elevated estrogens cause thyroid gland enlargement and increased thyroid-binding globulin.
  • Total T₃ and T₄ are elevated, but free T₄, free T₃, and TSH remain normal - physiologically euthyroid.
Calcium:
  • Total serum calcium decreases (from lowered albumin), but ionised calcium concentration is normal.
Adrenal/Mineralocorticoid:
  • Elevated aldosterone and estrogen increase renal tubular reabsorption of sodium.

8. Central Nervous System

  • Minimum alveolar concentration (MAC) for inhalational anaesthetics decreases progressively, up to 40% at term, returning to normal by day 3 post-delivery.
    • Mechanism: progesterone (sedating at high levels, up to 20x normal at term) + β-endorphin surge during labour.
  • Sensitivity to regional anaesthetics is enhanced. Epidural and spinal local anaesthetic requirements are reduced by up to 30%.
    • Mechanism: engorgement of the epidural venous plexus (from IVC compression) reduces spinal CSF volume and epidural space volume, enhancing cephalad spread.
    • Positive (rather than negative) epidural pressure is found in parturients.
  • Increased risk of unintentional intravascular injection of epidural catheter (engorged epidural veins).

9. Musculoskeletal System

  • Relaxin (secreted by placenta and endometrium throughout pregnancy) softens the cervix, inhibits uterine contractions, and relaxes the pubic symphysis and pelvic joints.
  • Ligamentous laxity of the spine increases risk of back injury and back pain (a common complaint in pregnancy).
  • The lumbar lordosis increases as the uterus grows, shifting the centre of gravity.

10. Skin and Integumentary System

  • Spider angiomata and palmar erythema appear due to elevated estrogen (increased skin vasodilation).
  • Striae gravidarum (stretch marks) on the abdomen, breasts, and thighs.
  • Linea nigra (hyperpigmentation of the midline abdomen) and melasma (chloasma, the "mask of pregnancy") are due to elevated MSH and estrogen.
  • Increased sebaceous gland activity; some women experience acne or skin oiliness.

Quick Reference Summary Table

SystemKey Changes
CardiovascularCO +40%, plasma volume +55%, BP slightly decreased, HR +20%, dilutional anaemia
RespiratoryMinute ventilation +50%, FRC -20%, chronic resp. alkalosis (PaCO₂ 28-32 mmHg)
HaematologicalHypercoagulable, dilutional anaemia, leukocytosis, thrombocytopaenia (mild)
RenalGFR +50%, creatinine/BUN decreased, glycosuria & mild proteinuria (normal)
GIGastric reflux risk, reduced motility, aspiration risk, gallstone predisposition
HepaticAlk phos elevated (placental), albumin reduced, pseudocholinesterase -25-30%
Metabolic/EndocrineInsulin resistance, thyroid enlargement (euthyroid), gestational diabetes risk
CNSMAC -40%, regional anaesthetic requirements reduced, enhanced sensitivity
MusculoskeletalJoint laxity (relaxin), lumbar lordosis, back pain
SkinMelasma, linea nigra, spider naevi, striae

Create a summary document on pregnancy physiology for quick reference

Asking for Preferences
Reading File
Reading File
Running Command

mkdir -p /home/daytona/workspace/pregnancy-physiology && ls /home/daytona/worksp…

Writing File

~/pregnancy-physiology/generate_pdf.py

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm, mm
from reportlab.platypus import (
    SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
    HRFlowable, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import PageBreak

OUTPUT = "/home/daytona/workspace/pregnancy-physiology/Pregnancy_Physiology_Quick_Reference.pdf"

# ── Colour palette ──────────────────────────────────────────────────────────
DEEP_TEAL   = colors.HexColor("#1A5C6B")
MID_TEAL    = colors.HexColor("#2A7D8C")
LIGHT_TEAL  = colors.HexColor("#D6EFF3")
ACCENT_PINK = colors.HexColor("#C0507A")
LIGHT_PINK  = colors.HexColor("#FAE6EE")
GOLD        = colors.HexColor("#D4A017")
LIGHT_GOLD  = colors.HexColor("#FDF5DC")
GREY_BG     = colors.HexColor("#F4F6F8")
DARK_TEXT   = colors.HexColor("#1E1E2E")
MID_GREY    = colors.HexColor("#6B7280")
WHITE       = colors.white

# ── Styles ───────────────────────────────────────────────────────────────────
base_styles = getSampleStyleSheet()

def make_style(name, parent="Normal", **kwargs):
    return ParagraphStyle(name, parent=base_styles[parent], **kwargs)

title_style = make_style("DocTitle",
    fontSize=26, textColor=WHITE, alignment=TA_CENTER,
    fontName="Helvetica-Bold", spaceAfter=4, leading=32)

subtitle_style = make_style("DocSubtitle",
    fontSize=12, textColor=colors.HexColor("#B2DDE6"),
    alignment=TA_CENTER, fontName="Helvetica", spaceAfter=2, leading=16)

section_heading = make_style("SecHeading",
    fontSize=13, textColor=WHITE, fontName="Helvetica-Bold",
    leading=18, spaceAfter=0, spaceBefore=0)

sub_heading = make_style("SubHeading",
    fontSize=10, textColor=DEEP_TEAL, fontName="Helvetica-Bold",
    leading=14, spaceAfter=2, spaceBefore=4)

body_style = make_style("Body",
    fontSize=9, textColor=DARK_TEXT, fontName="Helvetica",
    leading=13, spaceAfter=2, spaceBefore=1)

bullet_style = make_style("Bullet",
    fontSize=9, textColor=DARK_TEXT, fontName="Helvetica",
    leading=13, spaceAfter=1, spaceBefore=0,
    leftIndent=10, firstLineIndent=-8)

key_style = make_style("KeyPoint",
    fontSize=9, textColor=colors.HexColor("#7B2D52"),
    fontName="Helvetica-BoldOblique", leading=13, spaceAfter=2,
    leftIndent=6)

table_header_style = ParagraphStyle("TH",
    parent=base_styles["Normal"],
    fontSize=8.5, textColor=WHITE,
    fontName="Helvetica-Bold", leading=12, alignment=TA_CENTER)

table_cell_style = ParagraphStyle("TC",
    parent=base_styles["Normal"],
    fontSize=8.5, textColor=DARK_TEXT,
    fontName="Helvetica", leading=12, alignment=TA_LEFT)

table_cell_center = ParagraphStyle("TCC",
    parent=base_styles["Normal"],
    fontSize=8.5, textColor=DARK_TEXT,
    fontName="Helvetica", leading=12, alignment=TA_CENTER)

change_up = ParagraphStyle("Up",
    parent=base_styles["Normal"],
    fontSize=8.5, textColor=colors.HexColor("#166534"),
    fontName="Helvetica-Bold", leading=12, alignment=TA_CENTER)

change_dn = ParagraphStyle("Dn",
    parent=base_styles["Normal"],
    fontSize=8.5, textColor=colors.HexColor("#991B1B"),
    fontName="Helvetica-Bold", leading=12, alignment=TA_CENTER)

change_nc = ParagraphStyle("NC",
    parent=base_styles["Normal"],
    fontSize=8.5, textColor=MID_GREY,
    fontName="Helvetica", leading=12, alignment=TA_CENTER)

# ── Helpers ──────────────────────────────────────────────────────────────────
def section_header(title, icon=""):
    data = [[Paragraph(f"{icon}  {title}" if icon else title, section_heading)]]
    t = Table(data, colWidths=[17.5*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), MID_TEAL),
        ("ROUNDEDCORNERS", [4, 4, 4, 4]),
        ("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 bullet(text):
    return Paragraph(f"• {text}", bullet_style)

def key_point(text):
    return Paragraph(f"★  {text}", key_style)

def small_hr():
    return HRFlowable(width="100%", thickness=0.5,
                      color=colors.HexColor("#D1D5DB"), spaceAfter=4, spaceBefore=4)

def mini_table(headers, rows, col_widths=None):
    """Build a styled mini-table."""
    data = [[Paragraph(h, table_header_style) for h in headers]]
    for row in rows:
        styled = []
        for cell in row:
            if isinstance(cell, str):
                if cell.startswith("+"):
                    styled.append(Paragraph(cell, change_up))
                elif cell.startswith("-") or cell.startswith("↓"):
                    styled.append(Paragraph(cell, change_dn))
                elif cell in ("Unchanged", "Normal", "—"):
                    styled.append(Paragraph(cell, change_nc))
                else:
                    styled.append(Paragraph(cell, table_cell_center))
            else:
                styled.append(cell)
        data.append(styled)

    if col_widths is None:
        col_widths = [17.5*cm / len(headers)] * len(headers)

    t = Table(data, colWidths=col_widths, repeatRows=1)
    style = TableStyle([
        ("BACKGROUND",    (0,0), (-1,0),   DEEP_TEAL),
        ("ROWBACKGROUNDS",(0,1), (-1,-1),  [WHITE, GREY_BG]),
        ("GRID",          (0,0), (-1,-1),  0.4, colors.HexColor("#D1D5DB")),
        ("TOPPADDING",    (0,0), (-1,-1),  4),
        ("BOTTOMPADDING", (0,0), (-1,-1),  4),
        ("LEFTPADDING",   (0,0), (-1,-1),  5),
        ("RIGHTPADDING",  (0,0), (-1,-1),  5),
        ("VALIGN",        (0,0), (-1,-1),  "MIDDLE"),
    ])
    t.setStyle(style)
    return t

def sp(n=6):
    return Spacer(1, n)

# ── Cover banner ─────────────────────────────────────────────────────────────
def cover_banner():
    banner_data = [[
        Paragraph("MATERNAL PHYSIOLOGY IN PREGNANCY", title_style),
        Paragraph("Quick Reference Guide for Medical Students", subtitle_style),
        Paragraph("Sources: Morgan &amp; Mikhail's Clinical Anesthesiology 7e | Guyton &amp; Hall Medical Physiology | Creasy &amp; Resnik's Maternal-Fetal Medicine", subtitle_style),
    ]]
    banner = Table([[Paragraph("MATERNAL PHYSIOLOGY IN PREGNANCY", title_style)],
                    [Paragraph("Quick Reference Guide  •  Medical Students", subtitle_style)],
                    [Paragraph("Sources: Morgan &amp; Mikhail 7e | Guyton &amp; Hall | Creasy &amp; Resnik", subtitle_style)]],
                   colWidths=[17.5*cm])
    banner.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,-1), DEEP_TEAL),
        ("TOPPADDING",    (0,0), (-1,-1), 8),
        ("BOTTOMPADDING", (0,0), (-1,-1), 8),
        ("LEFTPADDING",   (0,0), (-1,-1), 16),
        ("RIGHTPADDING",  (0,0), (-1,-1), 16),
    ]))
    return banner

# ── Master numeric summary table ──────────────────────────────────────────────
def master_table():
    headers = ["System / Parameter", "Change", "Value / Detail"]
    rows = [
        # Cardiovascular
        ["CARDIOVASCULAR", "", ""],
        ["Cardiac output",        "+40%",      "At term; mainly 1st trimester"],
        ["Plasma volume",         "+55%",      "Exceeds RBC mass rise (+45%)"],
        ["Blood volume",          "+35%",      "+1,000-1,500 mL total"],
        ["Stroke volume",         "+30%",      ""],
        ["Heart rate",            "+20%",      "~15 bpm increase"],
        ["Systolic BP",           "-5%",       "Nadir mid-2nd trimester"],
        ["Diastolic BP",          "-15%",      "Nadir mid-2nd trimester"],
        ["Peripheral resistance", "-15%",      "Progesterone + prostacyclin"],
        ["Pulmonary resistance",  "-30%",      ""],
        ["CVP / PCWP",            "Unchanged", "Despite raised CO"],
        # Respiratory
        ["RESPIRATORY", "", ""],
        ["Minute ventilation",    "+50%",      "Progesterone drives this"],
        ["Tidal volume",          "+40%",      "Primary mechanism"],
        ["Respiratory rate",      "+15%",      ""],
        ["O2 consumption",        "+20-50%",   ""],
        ["FRC",                   "-20%",      "Returns to normal 48h post-delivery"],
        ["Airway resistance",     "-35%",      ""],
        ["PaO2",                  "+10%",      "Mild hyperventilation effect"],
        ["PaCO2",                 "-15%",      "28-32 mmHg at term"],
        ["HCO3",                  "-15%",      "Compensatory; ~20 mEq/L"],
        # Haematological
        ["HAEMATOLOGICAL", "", ""],
        ["Haemoglobin",           "-20%",      "Min >11 g/dL (dilutional)"],
        ["Platelets",             "-10%",      "3rd trimester; gestational thrombocytopaenia"],
        ["Clotting factors",      "+30-250%",  "Factors VII, VIII, IX, X, XII"],
        ["WBC",                   "+",         "Up to 21,000/uL (leukocytosis)"],
        # Renal
        ["RENAL", "", ""],
        ["GFR",                   "+50%",      ""],
        ["Serum creatinine",      "-",         "As low as 0.5 mg/dL"],
        ["BUN",                   "-",         "As low as 9 mg/dL"],
        ["Plasma osmolality",     "-",         "-8 to 10 mOsm/kg"],
        # CNS / Anaesthesia
        ["CNS / ANAESTHESIA", "", ""],
        ["MAC (volatiles)",       "-40%",      "Returns to normal day 3 post-delivery"],
        ["Epidural LA dose",      "-30%",      "Engorgement of epidural veins"],
        # Metabolic
        ["METABOLIC / ENDOCRINE", "", ""],
        ["Insulin resistance",    "+",         "hPL causes peripheral resistance"],
        ["Thyroid (total T4/T3)", "+",         "Free T4/T3/TSH remain normal"],
        ["Pseudocholinesterase",  "-25-30%",   "Rarely clinically significant"],
    ]

    col_w = [7.5*cm, 3*cm, 7*cm]
    data = [[Paragraph(h, table_header_style) for h in headers]]
    for row in rows:
        param, change, detail = row
        # Section separator rows (ALL CAPS, no change)
        if change == "" and detail == "":
            data.append([
                Paragraph(param, ParagraphStyle("SecRow",
                    parent=base_styles["Normal"],
                    fontSize=8.5, textColor=WHITE,
                    fontName="Helvetica-Bold", leading=12)),
                Paragraph("", table_cell_center),
                Paragraph("", table_cell_center),
            ])
        else:
            if change.startswith("+"):
                ch_p = Paragraph(change, change_up)
            elif change.startswith("-"):
                ch_p = Paragraph(change, change_dn)
            elif change == "Unchanged":
                ch_p = Paragraph(change, change_nc)
            else:
                ch_p = Paragraph(change, table_cell_center)
            data.append([
                Paragraph(param, table_cell_style),
                ch_p,
                Paragraph(detail, table_cell_style),
            ])

    t = Table(data, colWidths=col_w, repeatRows=1)

    # Base style
    ts = TableStyle([
        ("BACKGROUND",    (0,0),  (-1,0),   DEEP_TEAL),
        ("ROWBACKGROUNDS",(0,1),  (-1,-1),  [WHITE, GREY_BG]),
        ("GRID",          (0,0),  (-1,-1),  0.4, colors.HexColor("#D1D5DB")),
        ("TOPPADDING",    (0,0),  (-1,-1),  4),
        ("BOTTOMPADDING", (0,0),  (-1,-1),  4),
        ("LEFTPADDING",   (0,0),  (-1,-1),  5),
        ("RIGHTPADDING",  (0,0),  (-1,-1),  5),
        ("VALIGN",        (0,0),  (-1,-1),  "MIDDLE"),
    ])

    # Colour the section separator rows
    sep_indices = [i+1 for i, row in enumerate(rows) if row[1] == "" and row[2] == ""]
    for idx in sep_indices:
        ts.add("BACKGROUND", (0, idx), (-1, idx), MID_TEAL)
        ts.add("SPAN",       (0, idx), (-1, idx))

    t.setStyle(ts)
    return t

# ── Build document ────────────────────────────────────────────────────────────
def build():
    doc = SimpleDocTemplate(
        OUTPUT,
        pagesize=A4,
        leftMargin=1.8*cm, rightMargin=1.8*cm,
        topMargin=1.5*cm,  bottomMargin=1.5*cm,
        title="Maternal Physiology in Pregnancy – Quick Reference",
        author="Orris AI",
    )

    story = []

    # ── Cover ──
    story.append(cover_banner())
    story.append(sp(10))

    # ── Master numeric table ──
    story.append(section_header("MASTER SUMMARY TABLE", ""))
    story.append(sp(6))
    story.append(master_table())
    story.append(sp(14))

    # ── PAGE 2 onwards: System-by-system ──
    story.append(PageBreak())

    # ===== 1. CARDIOVASCULAR =====
    story.append(section_header("1.  CARDIOVASCULAR SYSTEM"))
    story.append(sp(6))

    story.append(KeepTogether([
        Paragraph("Haemodynamic Changes", sub_heading),
        bullet("CO rises 40% at term; mainly due to SV (+30%) and HR (+20%)"),
        bullet("Plasma volume rises 55%; RBC mass rises 45% → dilutional anaemia (Hb rarely <11 g/dL)"),
        bullet("Total blood volume +1,000–1,500 mL; reaches ~90 mL/kg at term"),
        bullet("Systolic BP falls ~5%, diastolic BP falls ~15% (nadir mid-2nd trimester)"),
        bullet("Peripheral vascular resistance -15%; pulmonary vascular resistance -30%"),
        bullet("CVP, PAP, and PCWP remain unchanged despite elevated CO"),
        sp(4),
        Paragraph("Structural Changes", sub_heading),
        bullet("Cardiac chambers enlarge; myocardial hypertrophy on echo"),
        bullet("Diaphragm elevation shifts heart leftward → left axis deviation and T-wave changes on ECG"),
        bullet("Chest X-ray: prominent vascular markings, apparent cardiac enlargement"),
        sp(4),
        Paragraph("Aortocaval Compression (supine after week 20)", sub_heading),
        bullet("Gravid uterus compresses IVC → impeded venous return → reduced CO"),
        bullet("~5% develop supine hypotension syndrome (pallor, sweating, nausea)"),
        bullet("Treatment: left lateral tilt (>15 degree wedge under right hip)"),
        bullet("Chronic compression → venous stasis, oedema, varicosities, distended epidural veins"),
        sp(4),
        key_point("Blood loss at delivery: 200–500 mL (vaginal) vs 800–1,000 mL (C-section). Expanded volume provides safety margin."),
    ]))
    story.append(sp(8))

    # ===== 2. RESPIRATORY =====
    story.append(section_header("2.  RESPIRATORY SYSTEM"))
    story.append(sp(6))

    story.append(KeepTogether([
        Paragraph("Ventilation", sub_heading),
        bullet("Minute ventilation +50% (tidal volume +40%, RR +15%)"),
        bullet("Progesterone sensitises respiratory centre to CO2 → hyperventilation"),
        bullet("PaCO2 falls to 28–32 mmHg; compensatory HCO3 excretion (renal) → serum HCO3 ~20 mEq/L"),
        bullet("Chronic respiratory alkalosis is NORMAL in pregnancy"),
        sp(4),
        Paragraph("Lung Volumes", sub_heading),
        bullet("FRC falls 20% at term (mainly reduced expiratory reserve volume)"),
        bullet("Vital capacity and closing capacity are minimally affected"),
        bullet("Returns to normal within 48 h post-delivery"),
        sp(4),
        Paragraph("Oxygen Delivery", sub_heading),
        bullet("O2 consumption +20–50%; PaO2 slightly increased"),
        bullet("2,3-DPG elevated → P50 shifts from 27 to 30 mmHg (rightward shift) → enhanced O2 offloading to tissues"),
        bullet("Increased CO amplifies total O2 delivery despite lower Hb"),
        sp(4),
        Paragraph("Airway", sub_heading),
        bullet("Airway resistance -35% (progesterone-mediated bronchodilation)"),
        bullet("Mucosal engorgement → risk of trauma, bleeding, and obstruction during intubation"),
        bullet("Use smaller ETT (6.0–6.5 mm) for general anaesthesia"),
        sp(4),
        key_point("CRITICAL: Decreased FRC + increased O2 consumption = rapid desaturation during apnoea. Pre-oxygenation before GA is MANDATORY."),
    ]))
    story.append(sp(8))

    # ===== 3. HAEMATOLOGICAL =====
    story.append(section_header("3.  HAEMATOLOGICAL SYSTEM"))
    story.append(sp(6))

    story.append(KeepTogether([
        Paragraph("Anaemia", sub_heading),
        bullet("Dilutional anaemia: plasma volume +55% vs RBC mass +45%"),
        bullet("Hb rarely falls below 11 g/dL; this is physiological"),
        bullet("Iron stores often inadequate (fetus needs 375 mg + mother needs 600 mg extra)"),
        bullet("Folate supplementation essential to prevent megaloblastic anaemia"),
        sp(4),
        Paragraph("Hypercoagulability (adaptive)", sub_heading),
        bullet("Fibrinogen and factors VII, VIII, IX, X, XII all increase (+30 to +250%)"),
        bullet("Factor XI may decrease"),
        bullet("Accelerated fibrinolysis appears in late 3rd trimester"),
        bullet("DVT risk increased: hypercoagulability + venous stasis from IVC compression"),
        sp(4),
        Paragraph("Other", sub_heading),
        bullet("Leukocytosis up to 21,000/uL in 3rd trimester (normal; do not over-interpret)"),
        bullet("Platelet count -10% (gestational thrombocytopaenia; usually benign)"),
    ]))
    story.append(sp(8))

    # ===== 4. RENAL =====
    story.append(section_header("4.  RENAL SYSTEM"))
    story.append(sp(6))

    story.append(KeepTogether([
        bullet("GFR +50%; renal plasma flow also increased"),
        bullet("Serum creatinine as low as 0.5 mg/dL; BUN as low as 9 mg/dL"),
        bullet("A 'normal' creatinine of 1.0 mg/dL may indicate significant renal impairment in pregnancy"),
        bullet("Reduced renal tubular thresholds → glycosuria (1–10 g/day) and proteinuria (<300 mg/day) are normal"),
        bullet("Plasma osmolality reset -8 to 10 mOsm/kg (new normal set point)"),
        bullet("Na/Cl/water reabsorption capacity +50% (aldosterone + oestrogen)"),
        bullet("Urinary stasis (ureteral dilation from progesterone + mechanical) → increased UTI risk"),
        sp(4),
        key_point("Normal serum creatinine in pregnancy is 0.4–0.6 mg/dL. A value of 0.9 mg/dL may already signal dysfunction."),
    ]))
    story.append(sp(8))

    # ===== 5. GI =====
    story.append(section_header("5.  GASTROINTESTINAL SYSTEM"))
    story.append(sp(6))

    story.append(KeepTogether([
        Paragraph("Reflux and Aspiration Risk", sub_heading),
        bullet("Progesterone relaxes lower oesophageal sphincter → GORD and oesophagitis very common"),
        bullet("Uterus displaces stomach upward/anteriorly → mechanical incompetence of LOS"),
        bullet("Gastric motility reduced (progesterone)"),
        bullet("Gastric volume and acidity NOT significantly changed"),
        bullet("Opioids and anticholinergics worsen reflux risk"),
        sp(4),
        key_point("HIGH aspiration risk (Mendelson syndrome) in parturients under GA. Rapid-sequence induction + cricoid pressure indicated."),
        sp(4),
        Paragraph("Gallbladder", sub_heading),
        bullet("Progesterone inhibits cholecystokinin → incomplete gallbladder emptying"),
        bullet("Altered bile acid composition + stasis → predisposition to cholesterol gallstones"),
        sp(4),
        Paragraph("Other", sub_heading),
        bullet("Constipation from reduced motility and uterine compression"),
        bullet("Nausea and vomiting of pregnancy (NVP): peaks at 8–10 weeks; driven by hCG"),
    ]))
    story.append(sp(8))

    # ===== 6. HEPATIC =====
    story.append(section_header("6.  HEPATIC SYSTEM"))
    story.append(sp(6))

    story.append(KeepTogether([
        bullet("Overall hepatic blood flow and synthetic function: UNCHANGED"),
        bullet("Minor AST, ALT, LDH elevation in 3rd trimester may be seen (mild)"),
        bullet("Alkaline phosphatase elevated (placental isoform — NOT pathological)"),
        bullet("Serum albumin mildly decreased (plasma volume dilution) → reduced colloid oncotic pressure → dependent oedema"),
        bullet("Pseudocholinesterase (butyrylcholinesterase) activity -25 to 30% at term"),
        bullet("Does not normalise until ~6 weeks postpartum; rarely causes clinically significant prolongation of succinylcholine"),
        bullet("High progesterone → incomplete gallbladder emptying → cholestasis/gallstone risk"),
        sp(4),
        key_point("Elevated ALP is normal in pregnancy (placental secretion). Elevated transaminases are not — investigate further."),
    ]))
    story.append(sp(8))

    # ===== 7. METABOLIC / ENDOCRINE =====
    story.append(section_header("7.  METABOLIC AND ENDOCRINE SYSTEM"))
    story.append(sp(6))

    story.append(KeepTogether([
        Paragraph("Carbohydrate Metabolism", sub_heading),
        bullet("Human placental lactogen (hPL / hCS) causes peripheral insulin resistance"),
        bullet("Pregnancy is a DIABETOGENIC state; insulin levels rise throughout"),
        bullet("Pancreatic beta cell hyperplasia occurs in response"),
        bullet("Between meals: low blood glucose + low amino acids; elevated FFAs, ketones, triglycerides"),
        bullet("These 'accelerated starvation' changes prioritise fetal nutrition"),
        sp(4),
        Paragraph("Thyroid", sub_heading),
        bullet("hCG (structural TSH homology) + oestrogens → thyroid enlargement + increased TBG"),
        bullet("Total T3 and T4 are elevated (increased TBG-bound fraction)"),
        bullet("Free T4, free T3, and TSH remain NORMAL — mother is euthyroid"),
        sp(4),
        Paragraph("Calcium", sub_heading),
        bullet("Total serum calcium decreases (due to lower albumin)"),
        bullet("Ionised calcium (physiologically active) remains normal"),
        sp(4),
        Paragraph("Adrenal", sub_heading),
        bullet("Aldosterone and oestrogen elevated → enhanced renal Na/water retention"),
        bullet("Cortisol levels increase but most is bound; free cortisol only modestly elevated"),
    ]))
    story.append(sp(8))

    # ===== 8. CNS =====
    story.append(section_header("8.  CENTRAL NERVOUS SYSTEM"))
    story.append(sp(6))

    story.append(KeepTogether([
        Paragraph("General Anaesthesia", sub_heading),
        bullet("MAC for all volatile agents decreases up to 40% at term"),
        bullet("Progesterone (up to 20x normal at term) is the main mechanism; beta-endorphins during labour also contribute"),
        bullet("MAC returns to normal by day 3 post-delivery"),
        sp(4),
        Paragraph("Regional Anaesthesia", sub_heading),
        bullet("Enhanced sensitivity to local anaesthetics; epidural dose requirements reduced up to 30%"),
        bullet("IVC compression distends epidural venous plexus → decreased spinal CSF volume and epidural space volume"),
        bullet("Cephalad spread of LA solutions is enhanced"),
        bullet("Epidural pressure may be positive (rather than usual negative)"),
        bullet("Engorged epidural veins → increased risk of intravascular catheter placement"),
        sp(4),
        key_point("Minimum local analgesic concentration (MLAC) = EC50 for spinal analgesia. Used in obstetric anaesthesia to compare potencies."),
    ]))
    story.append(sp(8))

    # ===== 9. MUSCULOSKELETAL =====
    story.append(section_header("9.  MUSCULOSKELETAL SYSTEM"))
    story.append(sp(6))

    story.append(KeepTogether([
        bullet("Relaxin (from placenta and endometrium) softens cervix, inhibits uterine contractions, relaxes pubic symphysis and pelvic joints"),
        bullet("Ligamentous laxity of the spine → increased back injury risk"),
        bullet("Lumbar lordosis increases to compensate for shifting centre of gravity"),
        bullet("Back pain is one of the most common musculoskeletal complaints of pregnancy"),
        bullet("Carpal tunnel syndrome: fluid retention and oedema compress median nerve at wrist"),
    ]))
    story.append(sp(8))

    # ===== 10. SKIN =====
    story.append(section_header("10.  SKIN AND INTEGUMENTARY SYSTEM"))
    story.append(sp(6))

    story.append(KeepTogether([
        mini_table(
            ["Finding", "Location / Description", "Mechanism"],
            [
                ["Melasma (Chloasma)", "Face — 'mask of pregnancy'", "Elevated MSH + oestrogen"],
                ["Linea nigra", "Midline abdomen", "Elevated MSH"],
                ["Spider angiomata", "Face, upper trunk", "Elevated oestrogen (vasodilation)"],
                ["Palmar erythema", "Palms", "Elevated oestrogen"],
                ["Striae gravidarum", "Abdomen, breasts, thighs", "Mechanical stretching + cortisol"],
                ["Increased hair growth", "Hirsutism in some", "Elevated androgens"],
                ["Telogen effluvium", "Post-partum hair loss", "Hormone withdrawal"],
            ],
            col_widths=[5*cm, 6*cm, 6.5*cm]
        ),
    ]))
    story.append(sp(12))

    # ===== CLINICAL PEARLS PAGE =====
    story.append(PageBreak())
    story.append(section_header("CLINICAL PEARLS FOR EXAMS AND PRACTICE"))
    story.append(sp(8))

    pearls = [
        ("Rapid desaturation on apnoea",
         "Decreased FRC + increased O2 demand. Pre-oxygenate BEFORE induction of GA. A healthy pregnant patient can desaturate within 60 seconds of apnoea."),
        ("Aspiration risk",
         "Reduced LOS tone + delayed gastric emptying + mechanical stomach displacement. Rapid-sequence induction (RSI) is standard for GA in pregnancy after 16–20 weeks."),
        ("Supine hypotension",
         "After 20 weeks, always tilt patient left (or wedge right hip). IVC compression reduces CO and uteroplacental perfusion."),
        ("Aortocaval compression vs vasovagal",
         "Supine hypotension in late pregnancy is aortocaval compression until proven otherwise. Left tilt fixes it immediately."),
        ("Dilutional anaemia — do not over-treat",
         "Hb 10–11 g/dL is physiological. Transfuse only if symptomatic anaemia or if there is evidence of iron/folate deficiency."),
        ("Renal function — re-calibrate norms",
         "Normal creatinine in pregnancy is 0.4–0.6 mg/dL. Any creatinine approaching 1.0 mg/dL warrants investigation."),
        ("Glycosuria in pregnancy",
         "Usually physiological (reduced tubular threshold). Diagnose gestational diabetes by OGTT — not by urine glucose."),
        ("Alkaline phosphatase elevation",
         "Normal in pregnancy (placental isoform). Elevated transaminases are not normal — consider HELLP, intrahepatic cholestasis, viral hepatitis."),
        ("Hypercoagulability",
         "Prophylactic LMWH is considered in high-risk pregnancies. Immobility, bed rest, and caesarean section further amplify DVT risk."),
        ("MAC reduction",
         "Use 40% less volatile agent in pregnant patients. Progesterone is the main mechanism. Important for GA of non-obstetric surgery in pregnancy."),
        ("Epidural LA doses",
         "Reduce epidural dose by 30% compared to non-pregnant patients. IVC compression distends epidural veins, reducing epidural space and enhancing drug spread."),
        ("Free thyroid hormones",
         "Total T3/T4 are elevated (increased TBG), but FREE T4, FREE T3, and TSH are NORMAL. Always use free hormones to assess thyroid status in pregnancy."),
    ]

    for i, (title_text, body_text) in enumerate(pearls):
        bg = LIGHT_TEAL if i % 2 == 0 else LIGHT_PINK
        title_p = Paragraph(title_text, ParagraphStyle("PearlTitle",
            parent=base_styles["Normal"],
            fontSize=9.5, textColor=DEEP_TEAL,
            fontName="Helvetica-Bold", leading=13))
        body_p = Paragraph(body_text, ParagraphStyle("PearlBody",
            parent=base_styles["Normal"],
            fontSize=9, textColor=DARK_TEXT,
            fontName="Helvetica", leading=13))

        pearl_data = [[title_p, body_p]]
        pearl_t = Table(pearl_data, colWidths=[5.5*cm, 12*cm])
        pearl_t.setStyle(TableStyle([
            ("BACKGROUND",    (0,0), (-1,-1), bg),
            ("TOPPADDING",    (0,0), (-1,-1), 6),
            ("BOTTOMPADDING", (0,0), (-1,-1), 6),
            ("LEFTPADDING",   (0,0), (-1,-1), 8),
            ("RIGHTPADDING",  (0,0), (-1,-1), 8),
            ("VALIGN",        (0,0), (-1,-1), "TOP"),
            ("LINEBELOW",     (0,0), (-1,-1), 0.5, WHITE),
        ]))
        story.append(pearl_t)

    story.append(sp(14))

    # ===== FOOTER =====
    story.append(small_hr())
    story.append(Paragraph(
        "Compiled from: Morgan &amp; Mikhail's Clinical Anesthesiology 7e | Guyton &amp; Hall Textbook of Medical Physiology | "
        "Creasy &amp; Resnik's Maternal-Fetal Medicine | Barash Clinical Anesthesia 9e",
        ParagraphStyle("Footer", parent=base_styles["Normal"],
            fontSize=7.5, textColor=MID_GREY,
            alignment=TA_CENTER, fontName="Helvetica-Oblique", leading=11)))

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

if __name__ == "__main__":
    build()
Running Command

cd /home/daytona/workspace/pregnancy-physiology && python generate_pdf.py 2>&1

Running Command

ls -lh /home/daytona/workspace/pregnancy-physiology/

Your quick reference PDF is ready. Here is your download link:

Pregnancy Physiology Quick Reference

PDF Document · PDF


What's inside (3 pages, A4):
Page 1
  • Colour-coded title banner
  • Master summary table covering all systems with numeric changes (+/- % values colour-coded green for increases, red for decreases), all in one place for fast scanning
Page 2 - System-by-System Sections (10 systems) Each section has a teal header and covers:
  1. Cardiovascular - haemodynamics, structural changes, aortocaval compression
  2. Respiratory - ventilation, lung volumes, O2 delivery, airway changes
  3. Haematological - dilutional anaemia, hypercoagulability, leukocytosis
  4. Renal - GFR changes, recalibrated normal values, glycosuria
  5. Gastrointestinal - reflux/aspiration risk, gallstone predisposition
  6. Hepatic - what changes vs what stays normal, ALP caveat
  7. Metabolic/Endocrine - insulin resistance, thyroid (free vs total), calcium
  8. CNS - MAC reduction, regional anaesthesia sensitivity
  9. Musculoskeletal - relaxin effects, back pain, carpal tunnel
  10. Skin - table of findings with mechanisms
Page 3 - Clinical Pearls
  • 12 exam-focused pearls (rapid desaturation, aspiration risk, supine hypotension, renal recalibration, free thyroid hormones, etc.) in alternating teal/pink cards for easy reading
This is a shared conversation. Sign in to Orris to start your own chat.