A 32 YEAR OLD PRIMIGRAVIDA AT 37 WEEKS OF GESTATION PRESENTED WITH ACTIVE BLEEDING PER VAGINA
At 37 weeks, the risk is highest because the lower uterine segment is actively elongating and dilating, tearing marginal placental vessels.
| Feature | Placenta Previa | Abruptio Placentae |
|---|---|---|
| Pain | Painless | Painful (uterine tenderness) |
| Bleeding color | Bright red | Dark, clotted |
| Uterus | Soft, non-tender | Tender, hypertonic, "woody" |
| Fetal position | Abnormal (transverse/breech) | Usually normal |
| Fetal heart rate | Usually normal initially | Often abnormal |
| Shock | Proportional to visible loss | May be disproportionate (concealed) |
| Coagulopathy (DIC) | Rare | Common in severe cases |
| Ultrasound | Diagnostic (shows low placenta) | Often normal US (doesn't exclude) |
| Investigation | Purpose |
|---|---|
| CBC (hemoglobin, hematocrit, platelets) | Assess blood loss, thrombocytopenia |
| Type and crossmatch (4+ units pRBC) | Prepare for transfusion |
| Coagulation studies: PT, aPTT, fibrinogen | Rule out DIC |
| Fibrin degradation products / D-dimer | DIC screen |
| Renal function, LFTs | Assess end-organ compromise |
| Kleihauer-Betke test | If Rh-negative, quantify fetomaternal hemorrhage |
| Urine output monitoring | Shock assessment |
Normal pregnancy fibrinogen = 400-450 mg/dL. Values <300 mg/dL indicate significant coagulation factor consumption. Values <150 mg/dL = severe abruption / DIC.
Note: A normal ultrasound does NOT exclude placental abruption - fresh blood is isoechoic to placenta.
GIVE ANSWER OF THESE QUESTIONS FOR MBBS UNIVERSITY EXAM WRITING PATTERN
| Feature | Placenta Previa | Abruptio Placentae | Vasa Previa |
|---|---|---|---|
| Pain | Painless | Painful (uterine tenderness) | No abdominal pain |
| Bleeding color | Bright red | Dark, clotted | Bright red (fetal blood) |
| Uterus | Soft, non-tender | Hard, tender, "woody" | Soft |
| Uterine tone | Normal | Hypertonic/tetanic | Normal |
| Fetal presentation | Abnormal (transverse/breech) | Usually normal | May be abnormal |
| Fetal heart rate | Usually normal | Bradycardia/distress | Severe fetal bradycardia (fetal exsanguination) |
| Shock | Proportional to visible loss | Disproportionate (concealed blood) | Fetal shock primarily |
| DIC | Rare | Common in severe cases | Rare |
| Ultrasound | Diagnostic (low-lying placenta) | Often normal (does NOT exclude) | Doppler shows vessels at os |
| Who bleeds? | Mother | Mother | Fetus (fetal blood) |
| Apt test | Negative | Negative | Positive (fetal Hb) |
Key clinical rule: NEVER perform digital vaginal examination until placenta previa is excluded by ultrasound - it can precipitate catastrophic hemorrhage.
| Test | Purpose |
|---|---|
| CBC with platelets | Assess blood loss, thrombocytopenia |
| Type and crossmatch (4 units pRBC) | Prepare for transfusion |
| PT, aPTT, Fibrinogen level | Screen for DIC (normal pregnancy fibrinogen = 400-450 mg/dL; <300 mg/dL = significant consumption) |
| Serum urea, electrolytes, creatinine | Renal function / shock |
| Kleihauer-Betke test | If Rh-negative patient (quantify fetomaternal hemorrhage) |
| Severity | Fetal Status | Management |
|---|---|---|
| Mild | Reassuring FHR | Term: ARM + oxytocin augmentation → vaginal delivery |
| Moderate-Severe | Fetal distress | Emergency LSCS |
| Severe with fetal demise | Dead fetus | Vaginal delivery if mother stable (uterus will contract) |
| Sign | Monochorionic (MC) | Dichorionic (DC) |
|---|---|---|
| Number of placentas | One (single/fused) | Two (or clearly separate) |
| Lambda/Twin peak sign | Absent | Present (wedge of placental tissue projecting into base of inter-twin membrane) |
| T-sign | Present (thin membrane meets placenta at right angle - T-shaped) | Absent |
| Inter-twin membrane thickness | Thin (<2mm) - 2 layers amnion | Thick (>2mm) - 4 layers (2 chorion + 2 amnion) |
| Fetal sex | Same sex | May be different sex (DC/DZ) |
| Membrane layers | 2 (amnioamniotic) | 4 (dichorionic-diamniotic) |
Mnemonic: "DC has a T-peak (Twin Peak/Lambda), MC has a T-sign"
| System | Complication |
|---|---|
| Cardiovascular | Increased risk of preeclampsia (3x), gestational hypertension |
| Anemia | Iron and folate deficiency anemia (increased demand) |
| Preterm labor | 50% of twins deliver before 37 weeks |
| Gestational diabetes | Increased risk |
| Polyhydramnios | More common in MC twins |
| Malpresentation | Abnormal lie of second twin |
| PPH | Uterine atony (overdistension) |
| Placenta previa/abruption | Increased incidence |
| Cesarean delivery | Higher rate |
| Complication | Details |
|---|---|
| Preterm birth | Leading cause of morbidity; mean delivery at 35-36 weeks |
| IUGR / FGR | Fetal growth restriction (especially MC twins) |
| Twin-Twin Transfusion Syndrome (TTTS) | Only in MC/DA twins; donor (anemia, oligohydramnios) + recipient (polycythemia, polyhydramnios); Quintero staging I-V |
| Twin Anemia Polycythemia Sequence (TAPS) | Chronic inter-twin blood transfusion without fluid shifts |
| Selective IUGR (sIUGR) | One twin grows poorly due to unequal placental sharing |
| Conjoined twins | MC/MA twins fail to separate |
| Acardiac twin (TRAP sequence) | Reverse arterial perfusion in MC twins |
| Cord entanglement | In monoamniotic twins (MA) |
| Discordant growth | Birth weight difference >25% |
| Higher perinatal mortality | 3-7x higher than singletons |
| Congenital anomalies | Higher in MZ twins |
| Interval | Investigation |
|---|---|
| Every 2 weeks | Growth scan + Doppler (umbilical artery, MCA) |
| Every 2 weeks (MC twins) | Additional TTTS surveillance - amniotic fluid in both sacs, bladder filling |
| Weekly from 32 weeks | Non-stress test (NST) / Biophysical Profile (BPP) |
| Regular | BP, urine protein (preeclampsia screening) |
| Type | Recommended Delivery |
|---|---|
| DCDA (Dichorionic-Diamniotic) | 38 weeks |
| MCDA (Monochorionic-Diamniotic) | 36-37 weeks |
| MCMA (Monochorionic-Monoamniotic) | 32-34 weeks (elective CS) |
| Feature | Modified WHO Partograph | WHO Labor Care Guide (LCG) (2020) |
|---|---|---|
| Year of introduction | 1994 (modified from original 1972) | 2020 |
| Alert/Action lines | Alert line (1 cm/hour) + Action line (4 hours to right) | No action line |
| Latent phase recorded | Original: Yes; Modified: No | No |
| Cervical dilation plot | Active phase begins at 4 cm | Active phase begins at 5 cm (aligns with new WHO guidelines) |
| Time basis | Starts at admission in active labor | Starts at active phase (≥5 cm dilation) |
| Cervical progress threshold | 1 cm/hour required | More individualized; slower progress acceptable |
| Fetal wellbeing | FHR, liquor, moulding, presenting part | FHR, liquor, oxytocin, medications |
| Maternal vitals | Pulse, BP, temperature | Pulse, BP, temperature, urine output |
| Contractions | Frequency, duration | Frequency, duration, oxytocin dose |
| Key philosophy | Diagnosis of abnormal labor | Holistic labor care; avoid unnecessary interventions |
| Over-diagnosis concern | Over-diagnoses dystocia (many normal labors cross action line) | Reduces unnecessary cesarean sections |
| WHO recommendation | No longer recommended by WHO (2018 ANC guidelines) | Current WHO recommendation |
The WHO LCG replaces the partograph and emphasizes positive birth experience, focusing on preventing unnecessary interventions while identifying truly abnormal labor.
| Drug | Dose | Route | Notes |
|---|---|---|---|
| Oxytocin (1st line) | 10 IU | IM | Immediately after baby delivery; if IV in situ: 5 IU slow IV |
| Carbetocin | 100 mcg | IM or IV | Long-acting oxytocin analogue; preferred in C-section |
| Misoprostol | 600 mcg | Oral/sublingual | Used where oxytocin unavailable (room temperature stable) |
| Ergometrine | 0.2 mg | IM | Avoid in hypertension; causes vasoconstriction |
| Syntometrine | Oxytocin + ergometrine | IM | More effective than oxytocin alone; more side effects |
| Type | Feature |
|---|---|
| Type 1 DM | Absolute insulin deficiency; autoimmune; may worsen in pregnancy |
| Type 2 DM | Insulin resistance; may be undiagnosed before pregnancy |
| MODY (Maturity-Onset Diabetes of the Young) | Rare genetic form |
| Measurement | Normal | GDM Diagnosis (any ONE value) |
|---|---|---|
| Fasting | <92 mg/dL | ≥92 mg/dL |
| 1-hour post 75g | <180 mg/dL | ≥180 mg/dL |
| 2-hour post 75g | <153 mg/dL | ≥153 mg/dL |
| Complication | Mechanism/Details |
|---|---|
| Macrosomia | Fetal hyperinsulinemia → excess fat deposition; birth weight >4000g; risk of shoulder dystocia, birth trauma |
| Congenital Anomalies | Pre-existing (overt) DM in first trimester → NTDs, cardiac defects (VSD, transposition), sacral agenesis (pathognomonic), renal anomalies, holoprosencephaly |
| Intrauterine Fetal Demise (IUFD) | Fetal hypoxia from polycythemia, acidosis; unexplained stillbirth |
| Neonatal Hypoglycemia | Fetal hyperinsulinism persists after birth + maternal glucose supply cut → blood glucose <40 mg/dL |
| Neonatal Hyperbilirubinemia (Jaundice) | Polycythemia → RBC breakdown → excess bilirubin |
| Respiratory Distress Syndrome (RDS) | Hyperinsulinemia inhibits surfactant synthesis (cortisol-opposing effect) → delayed lung maturity |
| Polycythemia | Fetal hypoxia → increased erythropoietin → excess RBCs |
| Neonatal Hypocalcemia / Hypomagnesemia | Altered mineral metabolism |
| Organomegaly | Hepatomegaly, cardiomegaly (hypertrophic cardiomyopathy) |
| Intrauterine Growth Restriction (IUGR) | Severe maternal vascular disease (DM type 1 with nephropathy/retinopathy) → placental insufficiency |
| Preterm birth | Polyhydramnios → uterine distension → preterm labor |
| Long-term obesity and DM | Offspring have increased risk of obesity and T2DM in later life (Barker hypothesis/fetal programming) |
Mnemonic for neonatal complications of GDM: MACROSOMIA
- Macrosomia
- Anomalies (congenital)
- Cardiomegaly
- RDS
- Organomegaly
- Stillbirth
- Obesity (long-term)
- Metabolic (hypoglycemia, hypocalcemia)
- IUGR (in vascular DM)
- Anemia/polycythemia
| Regimen | Dose | Schedule |
|---|---|---|
| Two-dose (RCOG preferred) | 500 IU (100 mcg) Anti-D | At 28 weeks AND 34 weeks gestation |
| Single-dose (NICE 2008) | 1500 IU (300 mcg) Anti-D | At 28 weeks gestation (single dose equally effective) |
| Sensitizing Event | Dose of Anti-D | Timing |
|---|---|---|
| Threatened miscarriage (<12 weeks) | 250 IU | Within 72 hours |
| Miscarriage / TOP (<12 weeks) | 250 IU | Within 72 hours |
| Ectopic pregnancy | 250 IU | Within 72 hours |
| Threatened miscarriage (>12 weeks) | 500 IU | Within 72 hours |
| Amniocentesis / CVS / cordocentesis | 500 IU | Within 72 hours; test for FMH |
| Antepartum hemorrhage (any gestation) | 500 IU | Within 72 hours; KB test |
| External cephalic version (ECV) | 500 IU | Within 72 hours |
| Abdominal trauma | 500 IU | Within 72 hours |
| Delivery (if baby Rh+) | 500 IU minimum | Within 72 hours postnatal (ideally within 2 hours); KB test to check if more needed |
| Complication | Details |
|---|---|
| Fetal Anemia | Progressive hemolysis → severe anemia → high-output cardiac failure |
| Hydrops Fetalis | Severe anemia → cardiac failure → generalized edema (skin, ascites, pleural/pericardial effusion, placental edema) → most severe form; fetal death |
| Intrauterine Fetal Death (IUFD) | From hydrops + severe anemia |
| Neonatal Jaundice (Hemolytic) | Unconjugated hyperbilirubinemia within 24 hours of birth (pathological - always investigate) |
| Kernicterus | Unconjugated bilirubin crosses blood-brain barrier (neonatal BBB immature) → bilirubin deposits in basal ganglia and brainstem → choreoathetosis, hearing loss, intellectual disability, upward gaze palsy (Parinaud phenomenon), death |
| Hepatosplenomegaly | Extramedullary hematopoiesis (liver, spleen compensate for marrow); splenomegaly from RBC destruction |
| Thrombocytopenia | Marrow overwhelmed; platelet production reduced |
| Hypoglycemia | Islet cell hyperplasia (hydropic fetuses) → hyperinsulinism |
| Neonatal Heart Failure | From severe anemia |
| Stillbirth | Severe untreated cases |
Exam tip: In MBBS university exams, marks are awarded for organized presentation with headings, clear tables where appropriate, and covering all sub-parts in proportion to the marks allocated. Use the mark distribution (e.g., 1+3+4+7) to gauge how much to write for each sub-part.
Create a study guide PDF with all 5 questions for exam revision
ls /home/daytona/workspace/ 2>/dev/null && echo "---" && python3 -c "import reportlab; print('reportlab ok')" 2>/dev/null && python3 -c "from reportlab.platypus import SimpleDocTemplate; print('platypus ok')"
mkdir -p /home/daytona/workspace/obstetrics-study-guide
~/obstetrics-study-guide/build_pdf.py
#!/usr/bin/env python3
"""
MBBS Obstetrics Paper-I Study Guide PDF Builder
Uses ReportLab Platypus for professional multi-page layout
"""
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import mm, cm
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, PageBreak, KeepTogether
)
from reportlab.platypus.flowables import KeepTogether
from reportlab.lib.colors import HexColor
import os
OUTPUT = "/home/daytona/workspace/obstetrics-study-guide/Obstetrics_Paper1_StudyGuide.pdf"
# ── Color palette ────────────────────────────────────────────────────────────
C_NAVY = HexColor("#1a3a5c")
C_TEAL = HexColor("#0d7377")
C_GOLD = HexColor("#c8a951")
C_LIGHT_BG = HexColor("#eef4f8")
C_ROW_ALT = HexColor("#f5f9fc")
C_RED = HexColor("#c0392b")
C_GREEN = HexColor("#1a6b3a")
C_ORANGE = HexColor("#d35400")
C_WHITE = colors.white
C_BLACK = colors.black
# ── Document ─────────────────────────────────────────────────────────────────
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
topMargin=18*mm, bottomMargin=18*mm,
leftMargin=18*mm, rightMargin=18*mm,
title="Obstetrics Paper-I Study Guide",
author="Orris Medical AI",
subject="MBBS University Exam Revision",
)
W = A4[0] - 36*mm # usable width
# ── Styles ───────────────────────────────────────────────────────────────────
base = getSampleStyleSheet()
def S(name, parent="Normal", **kw):
return ParagraphStyle(name, parent=base[parent], **kw)
sTitle = S("sTitle", "Title", fontSize=22, textColor=C_NAVY,
fontName="Helvetica-Bold", alignment=TA_CENTER, spaceAfter=4)
sSubtitle = S("sSubtitle", "Normal", fontSize=12, textColor=C_TEAL,
fontName="Helvetica-BoldOblique", alignment=TA_CENTER, spaceAfter=2)
sMeta = S("sMeta", "Normal", fontSize=9, textColor=colors.grey,
alignment=TA_CENTER, spaceAfter=16)
sQHead = S("sQHead", "Normal", fontSize=13, textColor=C_WHITE,
fontName="Helvetica-Bold", spaceAfter=0, spaceBefore=14,
leftIndent=6, leading=17)
sSection = S("sSection", "Normal", fontSize=11, textColor=C_NAVY,
fontName="Helvetica-Bold", spaceBefore=10, spaceAfter=3,
borderPad=2)
sSubsec = S("sSubsec", "Normal", fontSize=10, textColor=C_TEAL,
fontName="Helvetica-Bold", spaceBefore=7, spaceAfter=2)
sBody = S("sBody", "Normal", fontSize=9.5, leading=14,
spaceAfter=4, alignment=TA_JUSTIFY)
sBullet = S("sBullet", "Normal", fontSize=9.5, leading=13,
leftIndent=14, firstLineIndent=-10, spaceAfter=2)
sNote = S("sNote", "Normal", fontSize=8.5, textColor=C_ORANGE,
fontName="Helvetica-Oblique", leftIndent=8, spaceAfter=4)
sTH = S("sTH", "Normal", fontSize=8.5, textColor=C_WHITE,
fontName="Helvetica-Bold", alignment=TA_CENTER, leading=11)
sTD = S("sTD", "Normal", fontSize=8.5, leading=11,
alignment=TA_LEFT)
sTDc = S("sTDc", "Normal", fontSize=8.5, leading=11,
alignment=TA_CENTER)
sMnemo = S("sMnemo", "Normal", fontSize=9, textColor=C_GREEN,
fontName="Helvetica-Bold", leftIndent=10, spaceAfter=3)
# ── Helpers ───────────────────────────────────────────────────────────────────
def hr(color=C_TEAL, thickness=0.8):
return HRFlowable(width="100%", thickness=thickness, color=color, spaceAfter=4)
def question_header(num, text, marks):
"""Colored banner for each question."""
tbl = Table(
[[Paragraph(f"Q{num} {text} [{marks}]", sQHead)]],
colWidths=[W], rowHeights=[22]
)
tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), C_NAVY),
("ROUNDEDCORNERS", [4,4,4,4]),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("TOPPADDING", (0,0), (-1,-1), 4),
]))
return tbl
def section_box(text):
tbl = Table([[Paragraph(text, sSection)]], colWidths=[W])
tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), C_LIGHT_BG),
("LEFTPADDING", (0,0), (-1,-1), 8),
("RIGHTPADDING", (0,0), (-1,-1), 8),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0), (-1,-1), 4),
("LINEBELOW", (0,0), (-1,-1), 1.5, C_TEAL),
]))
return tbl
def marks_badge(label, marks):
"""Small inline marks indicator."""
tbl = Table(
[[Paragraph(f"<b>{label}</b>", sTDc), Paragraph(f"<b>{marks} marks</b>", sTDc)]],
colWidths=[W*0.7, W*0.3], rowHeights=[14]
)
tbl.setStyle(TableStyle([
("BACKGROUND", (1,0), (1,0), C_GOLD),
("BACKGROUND", (0,0), (0,0), C_LIGHT_BG),
("FONTSIZE", (0,0), (-1,-1), 8),
("TOPPADDING", (0,0), (-1,-1), 2),
("BOTTOMPADDING",(0,0), (-1,-1), 2),
]))
return tbl
def make_table(headers, rows, col_widths=None):
"""Build a styled data table."""
if col_widths is None:
n = len(headers)
col_widths = [W / n] * n
data = [[Paragraph(h, sTH) for h in headers]]
for row in rows:
data.append([Paragraph(str(c), sTD) for c in row])
t = Table(data, colWidths=col_widths, repeatRows=1)
style = [
("BACKGROUND", (0,0), (-1,0), C_TEAL),
("ROWBACKGROUNDS",(0,1),(-1,-1), [C_WHITE, C_ROW_ALT]),
("GRID", (0,0), (-1,-1), 0.4, colors.lightgrey),
("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), "TOP"),
]
t.setStyle(TableStyle(style))
return t
def bp(text):
return Paragraph(f"• {text}", sBullet)
def body(text):
return Paragraph(text, sBody)
def note(text):
return Paragraph(f"⚠ {text}", sNote)
def sub(text):
return Paragraph(text, sSubsec)
def sp(n=4):
return Spacer(1, n)
# ══════════════════════════════════════════════════════════════════════════════
# CONTENT
# ══════════════════════════════════════════════════════════════════════════════
story = []
# ── COVER ────────────────────────────────────────────────────────────────────
story += [
Spacer(1, 30*mm),
Paragraph("OBSTETRICS", sTitle),
Paragraph("Paper – I | Model Answers", sSubtitle),
Spacer(1, 6*mm),
hr(C_GOLD, 2),
Spacer(1, 4*mm),
Paragraph("MBBS University Examination — Exam Revision Study Guide", sMeta),
Paragraph("Based on 2024 Question Paper • Written in University Exam Pattern", sMeta),
Spacer(1, 10*mm),
]
# Contents box
toc_rows = [
["Q1", "Antepartum Hemorrhage – Diagnosis, Differentiation, Management", "1+3+4+7 = 15"],
["Q2", "Twin Pregnancy – Predisposing Factors, Chorionicity, Complications, Management", "2+3+4+6 = 15"],
["Q3", "WHO Labor Care Guide vs Partograph + AMTSL", "3+7 = 10"],
["Q4", "Hyperglycemia in Pregnancy – Causes, Screening, Fetal Complications", "3+3+4 = 10"],
["Q5", "Antenatal Anti-D Prophylaxis + Neonatal Complications in Rh-negative Pregnancy", "6+4 = 10"],
]
story.append(make_table(["No.", "Topic", "Marks"], toc_rows, [W*0.07, W*0.72, W*0.21]))
story.append(Spacer(1, 6*mm))
story.append(note("All answers follow the university long-answer pattern with marks proportional to sub-parts."))
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════════════════
# Q1: ANTEPARTUM HEMORRHAGE
# ══════════════════════════════════════════════════════════════════════════════
story.append(question_header(1,
"32-yr primigravida, 37 weeks, active bleeding PV",
"1+3+4+7 = 15 marks"))
story.append(sp(6))
# i) Diagnosis
story.append(marks_badge("i) What is the diagnosis?", 1))
story.append(sp(4))
story.append(section_box("Diagnosis: Antepartum Hemorrhage (APH)"))
story.append(body(
"APH is defined as <b>bleeding from the genital tract after 28 weeks of gestation and before delivery</b>. "
"The most likely cause in this primigravida at 37 weeks with <i>active, painless</i> bright-red bleeding is "
"<b>Placenta Previa</b>."
))
story.append(sp(6))
# ii) Differentiation
story.append(marks_badge("ii) How can you differentiate the causes?", 3))
story.append(sp(4))
story.append(make_table(
["Feature", "Placenta Previa", "Abruptio Placentae", "Vasa Previa"],
[
["Pain", "Painless", "Painful, uterine tenderness", "No abdominal pain"],
["Blood color", "Bright red", "Dark, clotted", "Bright red (FETAL)"],
["Uterus", "Soft, non-tender", "Hard, woody, hypertonic", "Soft"],
["Fetal lie", "Abnormal (transverse/breech)", "Usually normal", "May be abnormal"],
["Fetal HR", "Usually normal", "Bradycardia / distress", "Severe bradycardia"],
["Shock", "Proportional to visible loss", "Disproportionate (concealed)", "Fetal shock primarily"],
["DIC", "Rare", "Common (severe cases)", "Rare"],
["US diagnosis", "Diagnostic (low placenta)", "Often normal — does NOT exclude", "Doppler vessels at os"],
["Who bleeds?", "Mother", "Mother", "Fetus (Apt test +ve)"],
],
[W*0.16, W*0.28, W*0.28, W*0.28]
))
story.append(note("NEVER perform digital vaginal examination until placenta previa is excluded by ultrasound."))
story.append(sp(6))
# iii) Immediate management
story.append(marks_badge("iii) Write down the immediate management.", 4))
story.append(sp(4))
imm_steps = [
("A — Airway & O2",
["Call obstetric emergency team immediately",
"Left lateral decubitus position (prevent aortocaval compression)",
"O2 by face mask at 8-10 L/min"]),
("B — IV Access & Fluid Resuscitation",
["Two large-bore IV cannulas (14–16G)",
"Rapid IV crystalloid (Normal saline / Ringer's lactate)",
"Do NOT perform digital vaginal examination until US done"]),
("C — Urgent Investigations",
["CBC with platelets — assess blood loss",
"Type and crossmatch (4 units pRBC) — prepare for transfusion",
"PT, aPTT, Fibrinogen — screen for DIC (normal pregnancy fibrinogen = 400–450 mg/dL; <300 = significant consumption; <150 = severe)",
"Serum urea, electrolytes, creatinine — renal function",
"Kleihauer-Betke test — if Rh-negative (quantify fetomaternal hemorrhage)"]),
("D — Monitoring",
["Continuous CTG (cardiotocography) — fetal heart rate monitoring",
"Urine output via catheter (target >30 mL/hour)",
"Maternal pulse, BP, SpO2 every 15 minutes"]),
("E — Ultrasound",
["Transvaginal ultrasound (TVS) — gold standard for placental localization",
"Empty bladder first (full bladder falsely suggests low placenta)",
"Assess placental position relative to internal os; retroplacental hematoma"]),
("F — Rh Status",
["If Rh-negative: administer 300 mcg Rh immune globulin within 72 hours"]),
("G — Blood Products if actively bleeding",
["FFP if coagulopathy present",
"Cryoprecipitate if fibrinogen <100 mg/dL",
"Platelets if count <50,000",
"Massive transfusion protocol: pRBC : FFP : Platelets = 1:1:1"]),
]
for title, bullets in imm_steps:
story.append(sub(title))
for b in bullets:
story.append(bp(b))
story.append(sp(6))
# iv) Definitive management
story.append(marks_badge("iv) What is the definitive management?", 7))
story.append(sp(4))
story.append(section_box("A. Placenta Previa — Cesarean Section (Vaginal delivery absolutely contraindicated)"))
story.append(sub("Pre-operative preparation:"))
for b in [
"2 large-bore IVs in situ; 4 units crossmatched blood available",
"Neuraxial (spinal/epidural) anesthesia preferred if hemodynamically stable — less blood loss than GA",
"General anesthesia if actively hemorrhaging / hemodynamically unstable",
"Warn of Placenta Accreta Spectrum risk (accreta/increta/percreta) — risk ↑ with prior cesarean + previa",
]:
story.append(bp(b))
story.append(sub("Intraoperative:"))
for b in [
"Lower Segment Cesarean Section (LSCS) by senior obstetrician",
"Have uterotonics ready: Oxytocin 10 IU IV/IM after delivery of baby",
"Prepare for possible hysterectomy if accreta spectrum found",
"Blood products on standby",
]:
story.append(bp(b))
story.append(sub("Postoperative:"))
for b in [
"Monitor for PPH — lower uterine segment contracts poorly",
"Continue IV oxytocin infusion",
"Monitor Hb, coagulation, urine output",
]:
story.append(bp(b))
story.append(sp(5))
story.append(section_box("B. Abruptio Placentae — Management by Severity"))
story.append(make_table(
["Severity", "Fetal Status", "Management"],
[
["Mild (Grade I)", "Reassuring FHR", "At term: ARM + oxytocin augmentation → trial of vaginal delivery"],
["Moderate (Grade II)", "Fetal distress", "Emergency LSCS"],
["Severe (Grade III)", "Fetal demise", "Vaginal delivery if mother stable; manage DIC aggressively"],
],
[W*0.22, W*0.25, W*0.53]
))
story.append(sub("Coagulopathy management (DIC):"))
for b in [
"Monitor fibrinogen every 4–6 hours",
"FFP 15 mL/kg to restore coagulation factors",
"Cryoprecipitate if fibrinogen <100 mg/dL (target >150 mg/dL)",
"Tranexamic acid 1 g IV over 10 min (antifibrinolytic)",
"Platelet transfusion if <50,000",
]:
story.append(bp(b))
story.append(sp(5))
story.append(section_box("C. Vasa Previa — Immediate Emergency Cesarean Section"))
story.append(body("Minutes determine fetal survival. Neonatal resuscitation team on standby. Fetal blood transfusion may be required neonatally."))
story.append(sp(5))
story.append(section_box("Neonatal Management (All Cases)"))
for b in [
"Neonatologist/NICU team present at delivery",
"Cord blood for Hb, blood group, Coombs test",
"Vitamin K 1 mg IM to neonate",
"At 37 weeks: watch for mild respiratory distress syndrome",
]:
story.append(bp(b))
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════════════════
# Q2: TWIN PREGNANCY
# ══════════════════════════════════════════════════════════════════════════════
story.append(question_header(2,
"30-yr primigravida, twin pregnancy, 34 weeks, mild abdominal pain",
"2+3+4+6 = 15 marks"))
story.append(sp(6))
story.append(marks_badge("i) Predisposing factors for twin pregnancy", 2))
story.append(sp(4))
story.append(sub("Dizygotic (Fraternal) Twins — 2/3 of all twins:"))
for b in [
"Family history of twins (maternal side — hereditary hypergonadotropism)",
"Advanced maternal age (>35 yrs) — higher FSH levels → multiple follicle recruitment",
"Multiparity",
"Assisted Reproductive Technology (ART): ovulation induction (clomiphene, gonadotropins), IVF with multiple embryo transfer",
"African race — highest spontaneous twinning rate worldwide",
"Tall stature and high nutritional status (elevated IGF-1)",
"Previous twin pregnancy",
]:
story.append(bp(b))
story.append(sub("Monozygotic (Identical) Twins — 1/3:"))
for b in [
"Largely random / spontaneous (constant rate ~3–4/1000 births worldwide)",
"ART can also increase MZ twinning (zona pellucida manipulation)",
]:
story.append(bp(b))
story.append(sp(6))
story.append(marks_badge("ii) How can you determine chorionicity?", 3))
story.append(sp(4))
story.append(note("Chorionicity determination is critical — monochorionic twins have far higher risk of complications (TTTS, TAPS, sIUGR)."))
story.append(body("<b>Best timing: First trimester (11–14 weeks)</b> — accuracy ~99% vs ~90% in second trimester."))
story.append(make_table(
["Sign", "Monochorionic (MC)", "Dichorionic (DC)"],
[
["Placenta", "Single (one)", "Two (or clearly separate)"],
["Twin peak/Lambda sign", "Absent", "Present — wedge of placental tissue into membrane base"],
["T-sign", "Present — membrane meets placenta at 90° (T-shape)", "Absent"],
["Membrane thickness", "Thin (<2 mm) — 2 layers amnion", "Thick (>2 mm) — 4 layers (2 chorion + 2 amnion)"],
["Fetal sex", "Same sex", "May differ"],
],
[W*0.25, W*0.37, W*0.38]
))
story.append(Paragraph("Mnemonic: <b>DC has Lambda/Twin-Peak sign; MC has T-sign</b>", sMnemo))
story.append(sp(6))
story.append(marks_badge("iii) Complications of multiple pregnancy", 4))
story.append(sp(4))
story.append(sub("Maternal Complications:"))
story.append(make_table(
["System", "Complication"],
[
["Hypertensive", "Pre-eclampsia (3× risk), gestational hypertension"],
["Haematological", "Iron and folate deficiency anaemia (increased demand)"],
["Obstetric", "Preterm labour (50% twins deliver <37 weeks), Malpresentation, PPH (uterine atony from overdistension)"],
["Placental", "Placenta praevia, abruption, polyhydramnios"],
["Metabolic", "Gestational diabetes mellitus"],
["Delivery", "Higher cesarean section rate"],
],
[W*0.22, W*0.78]
))
story.append(sp(4))
story.append(sub("Fetal / Neonatal Complications:"))
story.append(make_table(
["Complication", "Details"],
[
["Preterm birth", "Leading cause of morbidity; mean delivery 35–36 weeks"],
["IUGR / FGR", "Fetal growth restriction, especially in MC twins"],
["Twin-Twin Transfusion Syndrome (TTTS)", "Only MC/DA twins. Donor: anaemia, oligohydramnios. Recipient: polycythaemia, polyhydramnios. Quintero staging I–V"],
["Twin Anaemia Polycythaemia Sequence (TAPS)", "Chronic inter-twin blood transfusion without fluid shifts (MC twins)"],
["Selective IUGR (sIUGR)", "Unequal placental sharing → one twin grows poorly"],
["Conjoined twins", "MC/MA twins — incomplete separation"],
["TRAP sequence", "Acardiac twin — reverse arterial perfusion (MC twins)"],
["Cord entanglement", "Monoamniotic (MA) twins"],
["Discordant growth", "Birthweight difference >25% between twins"],
["Congenital anomalies", "Higher rate in MZ twins"],
["Perinatal mortality", "3–7× higher than singletons"],
],
[W*0.35, W*0.65]
))
story.append(sp(6))
story.append(marks_badge("iv) Outline management till delivery", 6))
story.append(sp(4))
story.append(section_box("At Presentation (34 weeks, mild abdominal pain):"))
for b in [
"Admit to hospital",
"Rule out threatened preterm labour: cervical assessment, CTG, fetal fibronectin",
"Rule out PPROM: speculum exam, PAMG-1 test (AmniSure) or ferning",
"Confirm chorionicity (ideally from first trimester scan records)",
]:
story.append(bp(b))
story.append(section_box("Pharmacological Management:"))
story.append(sub("Corticosteroids (if delivery anticipated <34–35 weeks):"))
story.append(bp("Betamethasone 12 mg IM × 2 doses, 24 hours apart (fetal lung maturity)"))
story.append(sub("Tocolysis (if in preterm labour):"))
for b in [
"Nifedipine 10–20 mg oral (first-line calcium channel blocker)",
"Atosiban (oxytocin antagonist) IV — preferred in Europe",
"Beta-sympathomimetics avoided in twins (cardiac risk from overdistension)",
]:
story.append(bp(b))
story.append(sub("Neuroprotection (<32 weeks):"))
story.append(bp("Magnesium sulphate IV — cerebral palsy prevention (neuroprotection)"))
story.append(section_box("Ongoing Antenatal Surveillance:"))
story.append(make_table(
["Frequency", "Investigation"],
[
["Every 2 weeks", "Growth scan + Doppler (umbilical artery, MCA PI)"],
["Every 2 weeks (MC twins)", "TTTS surveillance: amniotic fluid in both sacs, bladder filling"],
["Weekly from 32 weeks", "Non-stress test (NST) / Biophysical Profile (BPP)"],
["Each visit", "BP, urine protein (pre-eclampsia screen), Hb"],
],
[W*0.25, W*0.75]
))
story.append(section_box("Timing & Mode of Delivery:"))
story.append(make_table(
["Twin Type", "Recommended Delivery Time", "Mode"],
[
["DCDA (Dichorionic-Diamniotic)", "38 weeks", "Vaginal if cephalic-cephalic; CS if non-cephalic"],
["MCDA (Monochorionic-Diamniotic)", "36–37 weeks", "Vaginal possible; CS if complicated"],
["MCMA (Monochorionic-Monoamniotic)", "32–34 weeks", "Elective Cesarean Section"],
],
[W*0.35, W*0.28, W*0.37]
))
story.append(section_box("During Labour:"))
for b in [
"Two neonatologists / NICU team at delivery",
"Continuous fetal monitoring of BOTH twins (twin CTG)",
"IV access, blood group and crossmatch",
"Anaesthesia team on standby",
"Interval between Twin 1 and Twin 2: ideally <30 minutes",
"Internal podalic version + breech extraction if Twin 2 malpresents after Twin 1 delivery",
"Active management of third stage: oxytocin 10 IU IM after delivery of 2nd twin",
]:
story.append(bp(b))
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════════════════
# Q3: WHO LABOR CARE GUIDE + AMTSL
# ══════════════════════════════════════════════════════════════════════════════
story.append(question_header(3,
"WHO Labor Care Guide vs Modified Partograph + AMTSL Components",
"3+7 = 10 marks"))
story.append(sp(6))
story.append(marks_badge("i) Compare WHO Labor Care Guide with Modified WHO Partograph", 3))
story.append(sp(4))
story.append(make_table(
["Feature", "Modified WHO Partograph (1994)", "WHO Labor Care Guide (LCG 2020)"],
[
["Year", "1994 (modified from 1972 original)", "2020"],
["Alert / Action lines", "Alert line (1 cm/hr) + Action line (4 hrs to right)", "No action/alert line"],
["Active phase start", "4 cm dilation", "5 cm dilation (aligns with new WHO guidelines)"],
["Latent phase", "Not recorded (modified version)", "Not recorded"],
["Cervical progress requirement", "1 cm/hour expected", "More individualized; slower progress acceptable"],
["Fetal monitoring", "FHR, liquor, moulding, presenting part", "FHR, liquor, oxytocin, medications"],
["Maternal monitoring", "Pulse, BP, temperature", "Pulse, BP, temperature, urine output"],
["Over-intervention risk", "High — many normal labours cross action line", "Reduced — fewer unnecessary CS"],
["Philosophy", "Diagnose abnormal labour, trigger intervention", "Positive birth experience; avoid unnecessary interventions"],
["WHO current status", "No longer recommended (WHO 2018)", "Current WHO recommendation"],
],
[W*0.26, W*0.37, W*0.37]
))
story.append(note("The LCG replaces the partograph and emphasises a positive birth experience while identifying truly abnormal labour."))
story.append(sp(6))
story.append(marks_badge("ii) Active Management of Third Stage of Labor (AMTSL)", 7))
story.append(sp(4))
story.append(body(
"<b>Definition:</b> AMTSL is a set of routine interventions given after delivery of the baby to reduce the risk of "
"<b>Postpartum Haemorrhage (PPH)</b> — the <b>leading cause of maternal mortality</b> worldwide. "
"AMTSL reduces PPH incidence by <b>60–70%</b>."
))
story.append(sp(4))
story.append(section_box("Component 1 — Uterotonic Drug Administration (Most Important)"))
story.append(body("<b>Given within 1 minute of delivery of the baby</b>"))
story.append(make_table(
["Drug", "Dose", "Route", "Notes"],
[
["Oxytocin (1st line)", "10 IU", "IM (or 5 IU slow IV if IV in situ)", "Immediate after baby delivery; short-acting"],
["Carbetocin", "100 mcg", "IM or IV", "Long-acting oxytocin analogue; preferred at cesarean"],
["Misoprostol", "600 mcg", "Oral / sublingual", "Where oxytocin unavailable; room-temperature stable"],
["Ergometrine", "0.2 mg", "IM", "Avoid in hypertension; causes vasoconstriction"],
["Syntometrine", "Oxytocin + Ergometrine", "IM", "More effective; more side effects"],
],
[W*0.22, W*0.13, W*0.20, W*0.45]
))
story.append(body("<b>Mechanism:</b> Oxytocin stimulates uterine smooth muscle contraction → myometrial retraction → compression of uterine blood vessels → reduced blood loss."))
story.append(sp(5))
story.append(section_box("Component 2 — Controlled Cord Traction (CCT) — Brandt-Andrews Method"))
for b in [
"Clamp and cut cord at 1–3 minutes after delivery (delayed cord clamping)",
"Wait for signs of placental separation: gush of blood PV, cord lengthening, uterus becomes globular and rises in abdomen",
"Apply suprapubic counter-pressure (guard uterus with one hand above pubic symphysis)",
"Apply steady, gentle downward traction on cord in direction of birth canal",
"As placenta descends, change direction of traction upward (follows vaginal curve)",
"Ask patient to bear down with contractions",
"NEVER apply cord traction without uterine counter-pressure — risk of uterine inversion",
]:
story.append(bp(b))
story.append(sp(5))
story.append(section_box("Component 3 — Uterine Massage (After placenta delivery)"))
for b in [
"Immediately after placenta is delivered, massage the uterine fundus through the abdomen",
"Confirm uterus is well-contracted (hard, globular — 'contracted to size of orange')",
"Sustained uterine massage is NO LONGER recommended (WHO 2012) — only fundal assessment",
"Empty bladder (full bladder displaces uterus → atony)",
]:
story.append(bp(b))
story.append(sp(5))
story.append(section_box("Additional Post-Placenta Steps:"))
for b in [
"Inspect placenta and membranes for completeness (retained placenta → PPH)",
"Inspect perineum and cervix for lacerations — repair if present",
"Monitor uterine tone every 15 minutes for first 2 hours (fourth stage of labour)",
"If placenta not delivered within 30 minutes after uterotonic → Retained Placenta → manual removal under anaesthesia",
]:
story.append(bp(b))
story.append(sp(4))
story.append(make_table(
["Normal third stage", "Alert threshold"],
[
["Delivered within 15–30 minutes", "Not delivered by 30 minutes = Retained Placenta"],
["Blood loss <500 mL (vaginal)", "PPH if ≥500 mL (vaginal) or ≥1000 mL (CS)"],
],
[W*0.5, W*0.5]
))
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════════════════
# Q4: HYPERGLYCEMIA IN PREGNANCY
# ══════════════════════════════════════════════════════════════════════════════
story.append(question_header(4,
"Hyperglycemia in Pregnancy — Causes, Screening, Fetal Complications",
"3+3+4 = 10 marks"))
story.append(sp(6))
story.append(marks_badge("i) Causes of hyperglycemia in pregnancy", 3))
story.append(sp(4))
story.append(section_box("A. Gestational Diabetes Mellitus (GDM) — Most Common"))
story.append(body(
"<b>Definition:</b> Glucose intolerance first recognised during pregnancy, regardless of whether it persists after delivery."
))
story.append(body(
"<b>Pathophysiology:</b> Placental hormones (hPL, progesterone, cortisol, oestrogen) cause progressive peripheral "
"insulin resistance. GDM occurs when pancreatic beta-cells cannot overcome this resistance. "
"hPL peaks at 24–28 weeks → hence GDM screening at 24–28 weeks."
))
story.append(sp(4))
story.append(section_box("B. Pre-existing (Overt) Diabetes in Pregnancy"))
story.append(make_table(
["Type", "Features"],
[
["Type 1 DM", "Absolute insulin deficiency; autoimmune; may worsen in pregnancy"],
["Type 2 DM", "Insulin resistance; may be undiagnosed before pregnancy"],
["MODY", "Maturity-Onset Diabetes of the Young — rare genetic form"],
],
[W*0.25, W*0.75]
))
story.append(sp(4))
story.append(section_box("C. Secondary Causes"))
story.append(make_table(
["Cause", "Mechanism"],
[
["Corticosteroid therapy", "Betamethasone (for fetal lung maturity) → transient maternal hyperglycaemia"],
["Cushing syndrome", "Excess cortisol → insulin resistance"],
["Acromegaly", "Excess GH → insulin resistance"],
["Pancreatitis / pancreatic disease", "Reduced insulin secretory capacity"],
["Phaeochromocytoma", "Catecholamine-induced insulin resistance"],
],
[W*0.35, W*0.65]
))
story.append(sp(6))
story.append(marks_badge("ii) Screening for hyperglycemia in pregnancy", 3))
story.append(sp(4))
story.append(body("<b>Universal screening recommended at 24–28 weeks for all pregnant women.</b>"))
story.append(sub("One-Step Approach (WHO/IADPSG Recommended):"))
story.append(body("75g Oral Glucose Tolerance Test (OGTT) after overnight fast (8–14 hours)"))
story.append(make_table(
["Measurement", "Normal", "GDM (any ONE value meets/exceeds)"],
[
["Fasting", "<92 mg/dL", "≥92 mg/dL"],
["1-hour post-75g", "<180 mg/dL", "≥180 mg/dL"],
["2-hour post-75g", "<153 mg/dL", "≥153 mg/dL"],
],
[W*0.33, W*0.25, W*0.42]
))
story.append(sp(4))
story.append(sub("Two-Step Approach (ACOG / North American):"))
story.append(make_table(
["Step", "Test", "Threshold"],
[
["Step 1 (Screening)", "50g GCT — no fasting required; 1-hour plasma glucose", ">140 mg/dL → proceed to Step 2"],
["Step 2 (Diagnostic)", "100g OGTT (fasting) — Carpenter-Coustan criteria (≥2 values must be met)",
"Fasting ≥95 | 1-hr ≥180 | 2-hr ≥155 | 3-hr ≥140 mg/dL"],
],
[W*0.14, W*0.53, W*0.33]
))
story.append(sp(4))
story.append(sub("Early Screening (<13 weeks) — High-Risk Patients:"))
story.append(body("<b>Risk factors:</b> BMI >30 | previous GDM | macrosomic baby (>4 kg) | family history DM | PCOS | glycosuria | previous unexplained stillbirth"))
story.append(make_table(
["Test", "Result", "Interpretation"],
[
["Fasting plasma glucose", "≥126 mg/dL", "Overt DM"],
["HbA1c", "≥6.5%", "Overt DM"],
["Fasting plasma glucose", "92–125 mg/dL", "GDM"],
],
[W*0.33, W*0.25, W*0.42]
))
story.append(note("If early screen is negative, repeat screening at 24–28 weeks."))
story.append(sp(6))
story.append(marks_badge("iii) Fetal complications of hyperglycemia in pregnancy", 4))
story.append(sp(4))
story.append(make_table(
["Complication", "Mechanism / Details"],
[
["Macrosomia", "Fetal hyperinsulinaemia → excess fat deposition; BW >4000 g; risk of shoulder dystocia, birth trauma, operative delivery"],
["Congenital Anomalies (pre-existing DM)", "First-trimester hyperglycaemia → NTDs, VSD, TGA, sacral agenesis (pathognomonic), renal anomalies, holoprosencephaly"],
["Intrauterine Fetal Death (IUFD)", "Fetal hypoxia from polycythaemia and acidosis; unexplained stillbirth"],
["Neonatal Hypoglycaemia", "Fetal hyperinsulinism persists after birth + maternal glucose supply cut off → BG <40 mg/dL"],
["Neonatal Hyperbilirubinemia (Jaundice)", "Polycythaemia → RBC breakdown → excess unconjugated bilirubin"],
["Respiratory Distress Syndrome (RDS)", "Hyperinsulinaemia inhibits surfactant synthesis (antagonises cortisol) → delayed lung maturity"],
["Polycythaemia", "Fetal hypoxia → ↑ erythropoietin → excess RBCs"],
["Neonatal Hypocalcaemia / Hypomagnesaemia", "Altered mineral metabolism; risk of neonatal seizures"],
["Organomegaly / Cardiomyopathy", "Hepatomegaly, hypertrophic cardiomyopathy from hyperinsulinism"],
["IUGR", "Severe maternal vascular disease (DM1 with nephropathy/retinopathy) → placental insufficiency"],
["Preterm birth", "Polyhydramnios → uterine overdistension → preterm labour"],
["Long-term obesity and T2DM", "Fetal programming (Barker hypothesis) — offspring at increased lifetime risk"],
],
[W*0.32, W*0.68]
))
story.append(Paragraph("Mnemonic (Neonatal complications of GDM): <b>MACROSOMIA</b> — Macrosomia | Anomalies | Cardiomegaly | RDS | Organomegaly | Stillbirth | Obesity (long-term) | Metabolic (hypoglycaemia, hypocalcaemia) | IUGR | Anaemia/polycythaemia", sMnemo))
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════════════════
# Q5: ANTI-D PROPHYLAXIS
# ══════════════════════════════════════════════════════════════════════════════
story.append(question_header(5,
"Antenatal Anti-D Prophylaxis in Rh-negative Pregnancy + Neonatal Complications",
"6+4 = 10 marks"))
story.append(sp(6))
story.append(marks_badge("i) Guidelines for antenatal anti-D prophylaxis in Rh-negative pregnancy", 6))
story.append(sp(4))
story.append(body(
"<b>Background:</b> Rh(D)-negative women (~15% of population) are at risk of sensitisation when exposed to "
"Rh(D)-positive fetal red cells. Sensitisation → maternal anti-D IgG → crosses placenta → destroys fetal RBCs → "
"<b>Haemolytic Disease of the Fetus and Newborn (HDFN)</b>. "
"<b>Anti-D immunoglobulin (RhIG)</b> prevents sensitisation by clearing fetal RBCs before the maternal immune response is mounted."
))
story.append(sp(4))
story.append(section_box("A. Routine Antenatal Anti-D Prophylaxis (RAADP)"))
story.append(make_table(
["Regimen", "Dose", "Schedule"],
[
["Two-dose (RCOG preferred)", "500 IU (100 mcg) anti-D", "At 28 weeks AND 34 weeks gestation"],
["Single-dose (NICE 2008)", "1500 IU (300 mcg) anti-D", "Single dose at 28 weeks — equally effective"],
],
[W*0.28, W*0.25, W*0.47]
))
story.append(body("Route: <b>IM injection (deltoid muscle)</b>. Check for pre-existing sensitisation (anti-D antibodies) at booking — if already sensitised, RAADP is not indicated; fetal surveillance begins instead."))
story.append(sp(5))
story.append(section_box("B. Anti-D for Sensitising Events — Given after EACH event"))
story.append(make_table(
["Sensitising Event", "Dose", "Timing"],
[
["Threatened miscarriage (<12 weeks)", "250 IU", "Within 72 hours"],
["Miscarriage / TOP (<12 weeks)", "250 IU", "Within 72 hours"],
["Ectopic pregnancy", "250 IU", "Within 72 hours"],
["Threatened miscarriage (>12 weeks)", "500 IU", "Within 72 hours"],
["Amniocentesis / CVS / cordocentesis", "500 IU", "Within 72 hours; test for FMH"],
["Antepartum haemorrhage (any gestation)", "500 IU", "Within 72 hours; KB test"],
["External cephalic version (ECV)", "500 IU", "Within 72 hours"],
["Abdominal trauma", "500 IU", "Within 72 hours"],
["Delivery (if baby Rh+)", "500 IU minimum", "Within 72 hrs (ideally 2 hrs); KB test to check if more needed"],
],
[W*0.42, W*0.18, W*0.40]
))
story.append(note("CRITICAL: Anti-D must be given within 72 hours of sensitising event (can be extended to 10 days exceptionally)."))
story.append(sp(5))
story.append(section_box("C. Dose Adjustment for Large Fetomaternal Haemorrhage (FMH)"))
for b in [
"Kleihauer-Betke (KB) test or flow cytometry performed after sensitising events >20 weeks",
"Standard dose (500 IU) covers up to 4 mL fetal RBCs",
"If FMH >4 mL: additional anti-D required — 125 IU per additional mL of fetal blood",
]:
story.append(bp(b))
story.append(sp(5))
story.append(section_box("D. Post-natal Prophylaxis"))
for b in [
"Cord blood at delivery: ABO and Rh grouping + Direct Coombs Test (DCT)",
"If baby is Rh(D) positive → give 500 IU anti-D IM to mother within 72 hours",
"If baby is Rh(D) negative → no anti-D needed",
"KB test on maternal blood → increase dose if large FMH detected",
]:
story.append(bp(b))
story.append(sp(5))
story.append(section_box("E. When NOT to Give Anti-D"))
for b in [
"Already sensitised (anti-D antibodies present on booking screen)",
"Fetus/baby confirmed Rh(D) negative",
"Patient is Rh(D) positive",
]:
story.append(bp(b))
story.append(sp(6))
story.append(marks_badge("ii) Neonatal complications in Rh-negative pregnancy", 4))
story.append(sp(4))
story.append(body(
"These complications arise in an <b>Rh-positive baby</b> of a <b>sensitised Rh-negative mother</b>. "
"Maternal anti-D antibodies (IgG) cross the placenta, coat fetal Rh+ RBCs, and trigger immune destruction. "
"The clinical syndrome is called <b>Haemolytic Disease of the Fetus and Newborn (HDFN) / Erythroblastosis Fetalis</b>."
))
story.append(sp(4))
story.append(make_table(
["Complication", "Mechanism / Details"],
[
["Fetal Anaemia", "Progressive haemolysis → severe anaemia → high-output cardiac failure"],
["Hydrops Fetalis", "Severe anaemia → cardiac failure → generalised oedema (skin, ascites, pleural/pericardial effusion, placental oedema) → fetal death"],
["Intrauterine Fetal Death (IUFD)", "From severe hydrops and anaemia"],
["Neonatal Jaundice (Haemolytic)", "Unconjugated hyperbilirubinaemia within 24 hours of birth (pathological — always investigate)"],
["Kernicterus", "Unconjugated bilirubin crosses immature BBB → deposits in basal ganglia → choreoathetosis, hearing loss, intellectual disability, upward gaze palsy (Parinaud sign), death"],
["Hepatosplenomegaly", "Extramedullary haematopoiesis (liver, spleen compensate for marrow failure)"],
["Thrombocytopenia", "Marrow overwhelmed; reduced platelet production"],
["Hypoglycaemia", "Islet cell hyperplasia in hydropic fetuses → hyperinsulinism"],
["Neonatal Heart Failure", "From severe anaemia"],
["Stillbirth", "Severe untreated cases"],
],
[W*0.30, W*0.70]
))
story.append(sp(4))
story.append(section_box("Severity Classification and Treatment:"))
story.append(make_table(
["Severity", "Cord Hb", "Treatment"],
[
["Mild HDFN", ">12 g/dL", "Phototherapy"],
["Moderate HDFN", "8–12 g/dL", "Phototherapy + possible exchange transfusion; IVIG"],
["Severe HDFN / Hydrops", "<8 g/dL", "Intrauterine transfusion (antenatally) + exchange transfusion (postnatally)"],
],
[W*0.22, W*0.20, W*0.58]
))
story.append(sp(4))
story.append(sub("Neonatal Treatment Options:"))
for b in [
"Phototherapy — converts unconjugated bilirubin to water-soluble isomers for excretion",
"Exchange transfusion — removes sensitised RBCs + antibodies + bilirubin; replaces with Rh-negative blood",
"IVIG (IV immunoglobulin) — reduces haemolysis rate",
"Intrauterine transfusion — cordocentesis + intravascular transfusion if severe hydrops detected antenatally",
]:
story.append(bp(b))
story.append(sp(10))
story.append(hr(C_GOLD, 1.5))
story.append(Paragraph(
"Sources: Rosen's Emergency Medicine 10e • Tintinalli's Emergency Medicine 9e • "
"Barash's Clinical Anesthesia 9e • Morgan & Mikhail's Clinical Anesthesiology 7e • "
"Creasy & Resnik's Maternal-Fetal Medicine • RCOG Green-top Guideline No. 65",
S("sfooter", "Normal", fontSize=7.5, textColor=colors.grey, alignment=TA_CENTER)
))
# ── Build ─────────────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF created: {OUTPUT}")
cd /home/daytona/workspace/obstetrics-study-guide && python3 build_pdf.py 2>&1
python3 -c " from pypdf import PdfReader r = PdfReader('/home/daytona/workspace/obstetrics-study-guide/Obstetrics_Paper1_StudyGuide.pdf') print(f'Pages: {len(r.pages)}') import os size = os.path.getsize('/home/daytona/workspace/obstetrics-study-guide/Obstetrics_Paper1_StudyGuide.pdf') print(f'File size: {size/1024:.1f} KB') "
Obstetrics Paper1 StudyGuide
PDF Document · PDF
| Section | Content |
|---|---|
| Cover page | Title, question index with marks breakdown |
| Q1 (15 marks) | APH diagnosis, previa vs abruption vs vasa previa comparison table, immediate management checklist (A-G), definitive management by cause |
| Q2 (15 marks) | Twin predisposing factors, chorionicity (DC Lambda vs MC T-sign table), maternal + fetal complications table, management till delivery with drug doses |
| Q3 (10 marks) | WHO LCG vs Modified Partograph comparison table, all 3 AMTSL components with technique steps, uterotonic drug table |
| Q4 (10 marks) | GDM pathophysiology, WHO/IADPSG OGTT criteria, two-step ACOG approach, fetal complications table with MACROSOMIA mnemonic |
| Q5 (10 marks) | RAADP regimens, sensitising events table with doses and timing, dose adjustment for large FMH, HDFN neonatal complications table, severity + treatment guide |
I CANT DOWNLOAD THE PDF PLEASE RESHARE IT
ls -lh /home/daytona/workspace/obstetrics-study-guide/ 2>&1
cd /home/daytona/workspace/obstetrics-study-guide && python3 build_pdf.py 2>&1 && ls -lh Obstetrics_Paper1_StudyGuide.pdf
Obstetrics Paper1 StudyGuide
PDF Document · PDF
Give the pdf in image format so I can download every page
python3 -c "import fitz; print('pymupdf ok, version:', fitz.version)"
which pdftoppm && pdftoppm -v 2>&1 | head -2
mkdir -p /home/daytona/workspace/obstetrics-study-guide/pages && pdftoppm -r 180 -png /home/daytona/workspace/obstetrics-study-guide/Obstetrics_Paper1_StudyGuide.pdf /home/daytona/workspace/obstetrics-study-guide/pages/page && ls -lh /home/daytona/workspace/obstetrics-study-guide/pages/
page 01
Image · PNG
page 02
Image · PNG
page 03
Image · PNG
page 04
Image · PNG
page 05
Image · PNG
page 06
Image · PNG
page 07
Image · PNG
page 08
Image · PNG
page 09
Image · PNG
page 10
Image · PNG
page 11
Image · PNG
page 12
Image · PNG