Give me MBBS exam oriented answers for all these questions from either the standard textbook (williams) or dc dutta
Create a PDF cheat sheet of these 14 topics for quick exam revision
ls -la /home/daytona/workspace/ 2>/dev/null && mkdir -p /home/daytona/workspace/obs-cheatsheet
~/obs-cheatsheet/generate_cheatsheet.py
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.lib import colors
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, KeepTogether
)
from reportlab.lib.enums import TA_LEFT, TA_CENTER
from reportlab.platypus import PageBreak
OUTPUT = "/home/daytona/workspace/obs-cheatsheet/OBG_Cheatsheet_MBBS.pdf"
# ── Colour palette ──────────────────────────────────────────────────────────
NAVY = colors.HexColor("#1A3557")
TEAL = colors.HexColor("#117A8B")
GOLD = colors.HexColor("#D4A017")
LGRAY = colors.HexColor("#F2F4F7")
DGRAY = colors.HexColor("#4A4A4A")
WHITE = colors.white
RED = colors.HexColor("#C0392B")
GREEN = colors.HexColor("#1D7A4F")
# ── Styles ───────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()
def s(name, **kw):
return ParagraphStyle(name, parent=styles["Normal"], **kw)
H1 = s("H1", fontSize=20, textColor=WHITE, alignment=TA_CENTER, fontName="Helvetica-Bold", spaceAfter=4)
H2 = s("H2", fontSize=12, textColor=WHITE, fontName="Helvetica-Bold", spaceBefore=2, spaceAfter=2)
H3 = s("H3", fontSize=9.5,textColor=NAVY, fontName="Helvetica-Bold", spaceBefore=3, spaceAfter=1)
H4 = s("H4", fontSize=8.5,textColor=TEAL, fontName="Helvetica-Bold", spaceBefore=2, spaceAfter=1)
BODY= s("BODY",fontSize=8, textColor=DGRAY, fontName="Helvetica", spaceAfter=1, leading=11)
BULL= s("BULL",fontSize=8, textColor=DGRAY, fontName="Helvetica", leftIndent=10, spaceAfter=1, leading=11)
KP = s("KP", fontSize=7.5,textColor=RED, fontName="Helvetica-Bold", spaceAfter=1)
FOOT= s("FOOT",fontSize=7, textColor=DGRAY, alignment=TA_CENTER, fontName="Helvetica-Oblique")
def b(text): return f"<b>{text}</b>"
def col(text, c): return f'<font color="{c}">{text}</font>'
# ── Helper builders ──────────────────────────────────────────────────────────
def topic_header(title, num):
data = [[Paragraph(f"{num}. {title}", H2)]]
t = Table(data, colWidths=[17*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), NAVY),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8),
]))
return t
def kp(text):
return Paragraph(f"★ {text}", KP)
def bullet(text):
return Paragraph(f"• {text}", BULL)
def sub(text):
return Paragraph(text, H4)
def body(text):
return Paragraph(text, BODY)
def hr():
return HRFlowable(width="100%", thickness=0.5, color=colors.HexColor("#CCCCCC"), spaceAfter=4)
def two_col_table(rows, col1_title="", col2_title="", col1w=6*cm, col2w=11*cm):
"""Simple 2-column table."""
header_row = None
if col1_title or col2_title:
header_row = [
Paragraph(b(col1_title), s("th", fontSize=8, fontName="Helvetica-Bold", textColor=WHITE)),
Paragraph(b(col2_title), s("th", fontSize=8, fontName="Helvetica-Bold", textColor=WHITE)),
]
data = []
if header_row:
data.append(header_row)
for r in rows:
data.append([Paragraph(r[0], BODY), Paragraph(r[1], BODY)])
t = Table(data, colWidths=[col1w, col2w])
style = [
("GRID", (0,0), (-1,-1), 0.3, colors.HexColor("#AAAAAA")),
("BACKGROUND", (0,0), (-1,0), TEAL if header_row else LGRAY),
("ROWBACKGROUNDS", (0,1 if header_row else 0), (-1,-1), [WHITE, LGRAY]),
("TOPPADDING", (0,0), (-1,-1), 3),
("BOTTOMPADDING", (0,0), (-1,-1), 3),
("LEFTPADDING", (0,0), (-1,-1), 4),
("VALIGN", (0,0), (-1,-1), "TOP"),
]
t.setStyle(TableStyle(style))
return t
def three_col_table(rows, titles, widths):
data = [[Paragraph(b(t), s("th", fontSize=8, fontName="Helvetica-Bold", textColor=WHITE)) for t in titles]]
for r in rows:
data.append([Paragraph(c, BODY) for c in r])
t = Table(data, colWidths=widths)
t.setStyle(TableStyle([
("GRID", (0,0), (-1,-1), 0.3, colors.HexColor("#AAAAAA")),
("BACKGROUND", (0,0), (-1,0), TEAL),
("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, LGRAY]),
("TOPPADDING", (0,0), (-1,-1), 3),
("BOTTOMPADDING", (0,0), (-1,-1), 3),
("LEFTPADDING", (0,0), (-1,-1), 4),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
return t
# ── Cover banner ─────────────────────────────────────────────────────────────
def cover_banner():
data = [[Paragraph("OBG EXAM CHEAT SHEET", H1)],
[Paragraph("Obstetrics & Gynaecology | MBBS Final Year | Based on DC Dutta & Williams",
s("sub", fontSize=10, textColor=GOLD, alignment=TA_CENTER, fontName="Helvetica-Bold"))],
[Paragraph("14 High-Yield Topics",
s("sub2", fontSize=9, textColor=colors.HexColor("#BFC9D4"), alignment=TA_CENTER, fontName="Helvetica"))]]
t = Table(data, colWidths=[17*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), NAVY),
("TOPPADDING", (0,0), (-1,-1), 10),
("BOTTOMPADDING", (0,0), (-1,-1), 10),
("ALIGN", (0,0), (-1,-1), "CENTER"),
]))
return t
# ════════════════════════════════════════════════════════════════════════════
# CONTENT
# ════════════════════════════════════════════════════════════════════════════
def build_story():
story = []
# ── COVER ─────────────────────────────────────────────────────────────
story.append(cover_banner())
story.append(Spacer(1, 0.3*cm))
# Quick index table
index_data = [
[Paragraph(b("No."), BODY), Paragraph(b("Topic"), BODY), Paragraph(b("No."), BODY), Paragraph(b("Topic"), BODY)],
[body("1"), body("APH - Overview"), body("8"), body("Intrauterine Fetal Death")],
[body("2"), body("Placenta Previa"), body("9"), body("HTN in Pregnancy")],
[body("3"), body("Abruptio Placentae"), body("10"), body("Endometriosis")],
[body("4"), body("Antenatal Fetal Surveillance"), body("11"), body("Uterine Polyp")],
[body("5"), body("Antenatal Care / Fitness"), body("12"), body("PID")],
[body("6"), body("Malposition & Malpresentation"), body("13"), body("Fibroid")],
[body("7"), body("Preterm Labour"), body("14"), body("Caesarean Section")],
]
idx_t = Table(index_data, colWidths=[1*cm, 7.5*cm, 1*cm, 7.5*cm])
idx_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), TEAL),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, LGRAY]),
("GRID", (0,0), (-1,-1), 0.3, colors.HexColor("#AAAAAA")),
("TOPPADDING", (0,0), (-1,-1), 3), ("BOTTOMPADDING", (0,0), (-1,-1), 3),
("LEFTPADDING", (0,0), (-1,-1), 4),
]))
story.append(idx_t)
story.append(Spacer(1, 0.4*cm))
story.append(hr())
# ═══════════════════════════════════════════════
# 1. APH
# ═══════════════════════════════════════════════
story.append(KeepTogether([
topic_header("ANTEPARTUM HAEMORRHAGE (APH)", 1),
Spacer(1, 0.15*cm),
kp("Def: Bleeding from genital tract after 28 weeks (Dutta) / 20 weeks (Williams) before delivery"),
Spacer(1,0.1*cm),
sub("Causes"),
two_col_table([
[b("Placenta Previa"), "Painless, bright red, recurrent - placenta in LUS"],
[b("Abruptio Placentae"), "Painful, dark, concealed - premature separation of normally sited placenta"],
[b("Vasa Previa"), "Fetal vessels over os - fetal blood loss; associated with velamentous insertion"],
[b("Local causes"), "Cervicitis, ectropion, polyp, varicosities, trauma"],
], "Cause", "Key Feature", 4*cm, 13*cm),
Spacer(1,0.1*cm),
sub("General Management"),
bullet("Admit, IV access x2, CBC, G&X, coagulation profile"),
bullet("USG to locate placenta (before any PV exam)"),
bullet("CTG continuous fetal monitoring"),
bullet("IV fluid resuscitation; blood transfusion as needed"),
hr(),
]))
# ═══════════════════════════════════════════════
# 2. PLACENTA PREVIA
# ═══════════════════════════════════════════════
story.append(KeepTogether([
topic_header("PLACENTA PREVIA", 2),
Spacer(1, 0.15*cm),
kp("Def: Placenta implanted in Lower Uterine Segment (LUS), partially/completely covering internal os"),
Spacer(1,0.1*cm),
sub("Dutta's Classification"),
two_col_table([
["Type I (Low-lying)", "In LUS but not reaching os"],
["Type II (Marginal)", "Reaches margin of internal os"],
["Type III (Partial)", "Partially covers os"],
["Type IV (Central / Complete)", "Completely covers os → ALWAYS LSCS"],
], "Type", "Description", 5*cm, 12*cm),
Spacer(1,0.1*cm),
sub("Clinical Features"),
bullet("Painless, revealed, BRIGHT RED, recurrent PV bleeding"),
bullet("Soft non-tender uterus; high presenting part / malpresentation"),
bullet("FHS usually present; NO PV examination"),
sub("Management"),
two_col_table([
[b("Expectant"), "<37 wks, stable: Admit, bed rest, blood transfusion, steroids if <34 wks"],
[b("Active - Type I/II"), "Induction of labour if at term with stable mother"],
[b("Active - Type III/IV"), "LSCS (always for Type IV)"],
[b("Complications"), "PPH, morbidly adherent placenta (accreta/increta/percreta)"],
], "Approach", "Details", 3.5*cm, 13.5*cm),
hr(),
]))
# ═══════════════════════════════════════════════
# 3. ABRUPTIO PLACENTAE
# ═══════════════════════════════════════════════
story.append(KeepTogether([
topic_header("ABRUPTIO PLACENTAE", 3),
Spacer(1, 0.15*cm),
kp("Def: Premature separation of normally situated placenta after 20 weeks"),
Spacer(1,0.1*cm),
sub("Sher's Grading"),
two_col_table([
["Grade 0", "Asymptomatic; diagnosed retrospectively on histology"],
["Grade 1", "Mild vaginal bleed; no fetal distress"],
["Grade 2", "Moderate; fetal distress present; uterine tenderness"],
["Grade 3A", "Severe; IUFD; no coagulopathy"],
["Grade 3B", "Severe; IUFD + DIC (coagulopathy)"],
], "Grade", "Features", 2.5*cm, 14.5*cm),
Spacer(1,0.1*cm),
sub("Clinical Features"),
bullet("Sudden, painful (constant) PV bleeding; may be concealed"),
bullet("Board-like rigid uterus with severe tenderness"),
bullet("Shock disproportionate to visible blood loss (concealed)"),
bullet("FHS absent in severe cases"),
sub("Complications - Mnemonic: DIC-ARF-PPH"),
two_col_table([
[b("DIC"), "Thromboplastin release → consumption coagulopathy"],
[b("Acute Renal Failure"), "ATN / Bilateral cortical necrosis"],
[b("Couvelaire Uterus"), "Blood infiltrates myometrium → blue-purple, woody; may need hysterectomy"],
[b("PPH"), "Atonic due to Couvelaire or coagulopathy"],
[b("Sheehan's syndrome"), "Pituitary necrosis from severe shock"],
], "Complication", "Mechanism", 4*cm, 13*cm),
sub("Management"),
bullet("Mild/preterm: Expectant; close monitoring, steroids if <34 wks"),
bullet("Moderate/Severe: Immediate delivery - vaginal if fetus dead / CS if fetal distress"),
bullet("Correct coagulopathy: FFP, cryoprecipitate, platelets"),
hr(),
]))
# ═══════════════════════════════════════════════
# 4. ANTENATAL FETAL SURVEILLANCE
# ═══════════════════════════════════════════════
story.append(KeepTogether([
topic_header("ANTENATAL FETAL SURVEILLANCE", 4),
Spacer(1, 0.15*cm),
kp("Goal: Detect fetal compromise before irreversible damage"),
Spacer(1,0.1*cm),
sub("Methods Summary"),
two_col_table([
[b("Fetal Movement Count (Cardiff)"), "Count to 10 movements within 12 hrs; report if <10"],
[b("Non-Stress Test (NST)"), "REACTIVE = 2 accelerations ≥15 bpm for ≥15 sec in 20 min; NON-REACTIVE = concern"],
[b("Contraction Stress Test (CST)"), "3 contractions in 10 min; NEGATIVE (no late decels) = reassuring; POSITIVE = uteroplacental insufficiency"],
[b("Biophysical Profile (BPP)"), "5 parameters, max score 10 (see below)"],
[b("Modified BPP"), "NST + Amniotic Fluid Index (AFI)"],
[b("Doppler - Umbilical artery"), "S/D ratio; Absent/Reversed EDF = severe IUGR → deliver"],
], "Test", "Interpretation", 4.5*cm, 12.5*cm),
Spacer(1,0.1*cm),
sub("BPP - Manning's Scoring (each parameter 0 or 2)"),
three_col_table([
["NST", "2 accelerations in 20 min", "Non-reactive = 0"],
["Fetal Breathing Movements", "≥1 episode ≥30 sec in 30 min", "Absent = 0"],
["Fetal Movements", "≥3 discrete body/limb movements", "<3 = 0"],
["Fetal Tone", "≥1 extension-flexion cycle", "Absent = 0"],
["Amniotic Fluid Volume", "≥1 pocket ≥2 cm in 2 planes", "Absent/<2 cm = 0"],
], ["Parameter", "Normal (2)", "Abnormal (0)"], [4*cm, 6.5*cm, 6.5*cm]),
Spacer(1,0.1*cm),
two_col_table([
["Score 8-10", "Normal; reassure; repeat as indicated"],
["Score 6", "Equivocal - repeat in 24 hours; deliver if >36 wks"],
["Score ≤4", "DELIVER regardless of gestational age"],
], "Score", "Action", 2.5*cm, 14.5*cm),
hr(),
]))
# ═══════════════════════════════════════════════
# 5. ANTENATAL CARE
# ═══════════════════════════════════════════════
story.append(KeepTogether([
topic_header("ANTENATAL CARE (ANTENATAL FITNESS)", 5),
Spacer(1, 0.15*cm),
kp("ANC Schedule: Every 4 wks till 28 wks → every 2 wks till 36 wks → weekly till term"),
kp("WHO recommends minimum 8 contacts (older: 4 focused ANC visits)"),
Spacer(1,0.1*cm),
sub("Routine Investigations"),
two_col_table([
["Blood", "Group & Rh, CBC, Blood glucose (FBS), VDRL, HBsAg, HIV, Rubella IgG"],
["Urine", "Albumin, Sugar, Microscopy (every visit)"],
["USG", "10-13 wks (dating/NT), 18-20 wks (anomaly scan), 32-34 wks (growth)"],
["Maternal serum", "AFP (15-20 wks) for NTD; Double/Triple/Quad screen for Down's"],
], "Type", "Tests", 2.5*cm, 14.5*cm),
Spacer(1,0.1*cm),
sub("Supplementation (High-yield MCQ)"),
two_col_table([
[b("Folic Acid"), "5 mg/day preconception → 12 weeks (prevents NTD)"],
[b("Iron + Folic acid"), "100 mg elemental iron + 500 mcg FA daily from 14 weeks"],
[b("Calcium"), "500 mg twice daily from 2nd trimester (prevents pre-eclampsia)"],
[b("Tetanus Toxoid"), "TT1 early pregnancy; TT2 at 4-8 wks after TT1 (≥36 wks before delivery)"],
], "Supplement", "Dose / Timing", 3.5*cm, 13.5*cm),
hr(),
]))
# ═══════════════════════════════════════════════
# 6. MALPOSITION & MALPRESENTATION
# ═══════════════════════════════════════════════
story.append(KeepTogether([
topic_header("MALPOSITION & MALPRESENTATION", 6),
Spacer(1, 0.15*cm),
kp("Malposition = vertex presenting but in abnormal position (e.g., OP)"),
kp("Malpresentation = non-vertex presentation (breech, face, brow, shoulder)"),
Spacer(1,0.1*cm),
sub("Occipito-Posterior Position (OP) - Most common malposition"),
bullet("ROP most common; associated with anthropoid/android pelvis"),
bullet("Features: Prolonged labour, severe backache, early urge to push"),
bullet("Management: Await spontaneous rotation (90%); if fails → Kielland's forceps or CS"),
Spacer(1,0.1*cm),
sub("Breech Presentation"),
two_col_table([
[b("Types"), "Frank/Extended (most common, 65%) | Complete | Footling | Knee"],
[b("Causes"), "Prematurity (#1), placenta previa, uterine anomaly, hydrocephalus, polyhydramnios, twins"],
[b("ECV"), "External Cephalic Version at 36-37 weeks; CI: LSCS scar, abruption, placenta previa, IUGR"],
[b("Vaginal breech"), "Only frank breech, experienced operator, adequate pelvis, no other complications"],
[b("LSCS"), "Footling/complete breech, primigravida, large fetus, fetal compromise, failed ECV"],
], "Feature", "Details", 3*cm, 14*cm),
Spacer(1,0.1*cm),
sub("Face, Brow & Shoulder"),
three_col_table([
["Face", "Mentum = denominator; Mentum anterior → vaginal possible; Mentum posterior → ALWAYS LSCS"],
["Brow", "Largest diameter (mento-vertical 13.5 cm); usually obstructed → LSCS; may convert"],
["Shoulder/Transverse", "Shoulder presents; no engagement; grand multipara, PP, tumour → ALWAYS LSCS at term"],
], ["Presentation", "Key Point"], [3*cm, 14*cm]),
hr(),
]))
# ═══════════════════════════════════════════════
# 7. PRETERM LABOUR
# ═══════════════════════════════════════════════
story.append(KeepTogether([
topic_header("PRETERM LABOUR", 7),
Spacer(1, 0.15*cm),
kp("Def: Labour between 20-37 completed weeks; #1 cause of neonatal morbidity & mortality"),
kp("Fetal fibronectin <50 ng/mL → delivery UNLIKELY in 7 days (high NPV)"),
Spacer(1,0.1*cm),
sub("Tocolytic Agents (to gain 48 hrs for steroids)"),
two_col_table([
[b("1st Line: Nifedipine"), "Calcium channel blocker; oral; SE: flushing, hypotension"],
[b("1st Line: Atosiban"), "Oxytocin receptor antagonist; IV; fewer SEs; expensive"],
[b("Indomethacin"), "COX inhibitor; use <32 weeks only; risk of premature closure of ductus arteriosus"],
[b("Salbutamol/Ritodrine"), "Beta-2 agonists; many SEs (tachycardia, pulmonary oedema); less used now"],
[b("Contraindications"), "Chorioamnionitis, major abruption, severe IUGR, maternal instability, >34 weeks"],
], "Drug", "Details", 4.5*cm, 12.5*cm),
Spacer(1,0.1*cm),
sub("Key Interventions"),
two_col_table([
[b("Corticosteroids"), "Betamethasone 12 mg IM x2 (24 hrs apart) OR Dexamethasone 6 mg IM x4; 24-34 wks → fetal lung maturity"],
[b("MgSO4"), "Neuroprotection if <32 weeks (reduces cerebral palsy); 4g IV bolus → 1g/hr"],
[b("Antibiotics"), "If PPROM: Erythromycin 250 mg QDS x10 days (ORACLE trial)"],
[b("GBS prophylaxis"), "Penicillin G IV if GBS positive on swab"],
[b("Cervical cerclage"), "Prophylactic if cervical incompetence (short cervix <25 mm at 16-24 wks)"],
], "Intervention", "Details", 4*cm, 13*cm),
hr(),
]))
# ═══════════════════════════════════════════════
# 8. IUFD
# ═══════════════════════════════════════════════
story.append(KeepTogether([
topic_header("INTRAUTERINE FETAL DEATH (IUFD)", 8),
Spacer(1, 0.15*cm),
kp("Def: Death of fetus ≥20 weeks before complete expulsion (Stillbirth = ≥28 weeks)"),
kp("Gold Standard Diagnosis: USG - Absent cardiac activity"),
Spacer(1,0.1*cm),
sub("Causes"),
three_col_table([
["Maternal", "Fetal", "Placental/Cord"],
["Pre-eclampsia, DM, APS", "Chromosomal, anomalies", "Abruption, cord accidents"],
["SLE, thyroid disease", "Infections (CMV, toxo)", "Velamentous insertion"],
["Severe anaemia, sickle cell", "Hydrops fetalis, IUGR", "Circumvallate placenta"],
], ["Maternal", "Fetal", "Placental/Cord"], [5.5*cm, 5.5*cm, 6*cm]),
Spacer(1,0.1*cm),
sub("Radiological Signs (late, on X-ray)"),
bullet("Spalding's sign: Overlapping skull bones (after 5-7 days)"),
bullet("Roberts' sign: Gas in fetal vessels / heart (early putrefaction)"),
bullet("Hyperflexion of spine; exaggerated curvature"),
Spacer(1,0.1*cm),
sub("Investigations After IUFD"),
bullet("TORCH titres, VDRL, blood glucose, TFT, APS screen (anticardiolipin Ab, lupus anticoagulant)"),
bullet("Kleihauer-Betke test (fetomaternal haemorrhage); Karyotype (if anomaly suspected)"),
bullet("Placental histopathology; Autopsy with parental consent"),
sub("Management"),
bullet("If >4 weeks retention → DIC risk → monitor fibrinogen (falls below 150 mg/dL)"),
bullet("IOL: Misoprostol (PGE1) or Dinoprostone (PGE2) - method of choice"),
bullet("Psychological support, bereavement counselling, follow-up at 6 weeks"),
hr(),
]))
# ═══════════════════════════════════════════════
# 9. HTN IN PREGNANCY
# ═══════════════════════════════════════════════
story.append(KeepTogether([
topic_header("HYPERTENSION IN PREGNANCY", 9),
Spacer(1, 0.15*cm),
kp("HTN in pregnancy = SBP ≥140 OR DBP ≥90 mmHg on 2 occasions ≥4 hrs apart"),
Spacer(1,0.1*cm),
sub("Classification"),
two_col_table([
[b("Gestational HTN"), "BP ≥140/90 after 20 wks, NO proteinuria; normalises <12 wks postpartum"],
[b("Pre-eclampsia"), "HTN + proteinuria (>300 mg/24h or PCR ≥0.3) after 20 wks"],
[b("Chronic HTN"), "HTN before 20 wks or pre-existing, persists >12 wks postpartum"],
[b("Superimposed PET"), "Chronic HTN + new proteinuria or worsening after 20 wks"],
[b("Eclampsia"), "Pre-eclampsia + tonic-clonic seizures (not otherwise explained)"],
], "Type", "Definition", 4*cm, 13*cm),
Spacer(1,0.1*cm),
sub("Severe Features of Pre-eclampsia (any ONE = severe)"),
bullet("BP ≥160/110 on 2 occasions 4 hrs apart"),
bullet("Thrombocytopenia <100,000/μL"),
bullet("Renal insufficiency: Cr >1.1 mg/dL or doubling baseline"),
bullet("Liver: LFTs >2x normal, severe epigastric/RUQ pain"),
bullet("Pulmonary oedema; New headache unresponsive to medication; Visual disturbances"),
Spacer(1,0.1*cm),
sub("HELLP Syndrome"),
kp("H = Haemolysis | EL = Elevated Liver enzymes | LP = Low Platelets"),
bullet("Epigastric pain, nausea, vomiting; Serious complication → deliver regardless of GA"),
Spacer(1,0.1*cm),
sub("Antihypertensives in Pregnancy"),
two_col_table([
[b("Labetalol"), "1st line (oral and IV); alpha + beta blocker"],
[b("Methyldopa"), "Safe, widely used; oral; used in chronic HTN"],
[b("Nifedipine"), "Oral calcium channel blocker; 2nd line"],
[b("Hydralazine IV"), "Acute severe HTN; vasodilator"],
[b("AVOID"), "ACE inhibitors, ARBs (teratogenic in 2nd/3rd trimester)"],
], "Drug", "Notes", 3.5*cm, 13.5*cm),
Spacer(1,0.1*cm),
sub("MgSO4 (Seizure Prophylaxis & Treatment)"),
bullet("Pritchard regimen: 4g IV + 5g IM each buttock (loading) → 5g IM q4h (maintenance)"),
bullet("Sibai regimen: 6g IV bolus → 2g/hr infusion"),
bullet("Toxicity: Loss of DTRs → Respiratory arrest → Cardiac arrest"),
kp("MgSO4 ANTIDOTE = 10 mL of 10% Calcium Gluconate IV"),
sub("Definitive Treatment = DELIVERY"),
bullet("Mild: at 37 weeks | Severe features: at 34 weeks | Eclampsia/HELLP: Immediate"),
hr(),
]))
# ═══════════════════════════════════════════════
# 10. ENDOMETRIOSIS
# ═══════════════════════════════════════════════
story.append(KeepTogether([
topic_header("ENDOMETRIOSIS", 10),
Spacer(1, 0.15*cm),
kp("Def: Functional endometrial glands + stroma OUTSIDE the uterine cavity"),
kp("Gold Standard Diagnosis: Laparoscopy + biopsy"),
Spacer(1,0.1*cm),
sub("Pathogenesis"),
bullet("Sampson's theory (retrograde menstruation) - most accepted"),
bullet("Coelomic metaplasia (Meyer's theory); Lymphovascular spread"),
sub("Common Sites: Ovaries (#1) > Uterosacral ligaments > POD > Bladder > Bowel"),
sub("Clinical Features - The 3 Ds"),
two_col_table([
[b("Dysmenorrhoea"), "Progressive, secondary (worsens each cycle) - HALLMARK"],
[b("Dyspareunia"), "Deep dyspareunia (posterior fornix, uterosacral involvement)"],
[b("Dyschezia"), "Painful defaecation - bowel involvement"],
[b("Infertility"), "20-40% of infertile women have endometriosis"],
[b("Signs"), "Retroverted fixed uterus, nodularity in POD/uterosacral ligaments, tender adnexa"],
], "Feature", "Details", 3.5*cm, 13.5*cm),
Spacer(1,0.1*cm),
sub("ASRM Staging"),
two_col_table([
["Stage I (Minimal)", "Superficial peritoneal implants"],
["Stage II (Mild)", "Deeper implants, small endometriomas"],
["Stage III (Moderate)", "Endometriomas, peritubal/periovarian adhesions"],
["Stage IV (Severe)", "Large endometriomas, dense adhesions, severe distortion of anatomy"],
], "Stage", "Description", 3.5*cm, 13.5*cm),
Spacer(1,0.1*cm),
sub("Treatment"),
two_col_table([
[b("NSAIDs / COX inhibitors"), "Symptom relief (pain)"],
[b("Combined OCP"), "Continuous pill - suppresses menstruation"],
[b("Progestins"), "Norethisterone, MPA, Dienogest (1st line for pain)"],
[b("GnRH agonists"), "Leuprolide - induces pseudomenopause; use with add-back therapy; max 6 months"],
[b("Danazol"), "Androgenic; effective but SE (virilisation, dyslipidaemia) limit use"],
[b("LNG-IUS (Mirena)"), "Effective for dysmenorrhoea and pelvic pain"],
[b("Conservative surgery"), "Laparoscopic excision/ablation of implants; drain endometrioma >4 cm"],
[b("Definitive surgery"), "TAH + BSO - for severe disease, completed family; medical treatment after if <50 yrs"],
], "Treatment", "Notes", 4.5*cm, 12.5*cm),
hr(),
]))
# ═══════════════════════════════════════════════
# 11. UTERINE POLYP
# ═══════════════════════════════════════════════
story.append(KeepTogether([
topic_header("UTERINE / ENDOMETRIAL POLYP", 11),
Spacer(1, 0.15*cm),
kp("Def: Focal overgrowth of endometrium containing glands, stroma & blood vessels on a stalk"),
Spacer(1,0.1*cm),
sub("Clinical Features"),
bullet("Intermenstrual bleeding (IMB) - most common presentation"),
bullet("Postcoital bleeding; Menorrhagia; Postmenopausal bleeding (must exclude malignancy)"),
bullet("Usually asymptomatic; incidental finding on USG"),
bullet("May cause infertility (mechanical obstruction of ostia)"),
sub("Investigations"),
bullet("TVS (Transvaginal USG): Echogenic mass in endometrial cavity"),
bullet("SIS (Saline Infusion Sonography): Better delineation of submucous lesion"),
bullet("Hysteroscopy + biopsy: GOLD STANDARD - direct visualisation"),
sub("Treatment"),
bullet("Hysteroscopic polypectomy (resection) - treatment of choice"),
bullet("Small asymptomatic polyps may regress spontaneously"),
bullet("Histopathology mandatory - exclude endometrial carcinoma"),
kp("Malignant transformation rare (~0.5%) but always send for histology"),
hr(),
]))
# ═══════════════════════════════════════════════
# 12. PID
# ═══════════════════════════════════════════════
story.append(KeepTogether([
topic_header("PELVIC INFLAMMATORY DISEASE (PID)", 12),
Spacer(1, 0.15*cm),
kp("Def: Infection of upper female genital tract (endometrium, tubes, ovaries, peritoneum)"),
kp("CDC Minimum Diagnosis: ANY ONE of - Uterine tenderness / Adnexal tenderness / CET"),
Spacer(1,0.1*cm),
sub("Organisms"),
bullet("Neisseria gonorrhoeae; Chlamydia trachomatis (most important STI pathogens)"),
bullet("Anaerobes, E. coli, Mycoplasma hominis, Gardnerella (polymicrobial)"),
sub("Clinical Features"),
two_col_table([
["Lower abdominal pain", "Bilateral, constant, dull; worse with movement"],
["Vaginal discharge", "Purulent, malodorous"],
["Fever", ">38.3°C; with cervical excitation tenderness (CET)"],
["Dyspareunia", "Deep; recent onset"],
["Fitz-Hugh-Curtis", "Perihepatitis; RUQ pain + tenderness; violin-string adhesions on laparoscopy"],
], "Feature", "Detail", 3.5*cm, 13.5*cm),
Spacer(1,0.1*cm),
sub("Complications (Mnemonic: FICHES)"),
bullet("F = Fitz-Hugh-Curtis syndrome; I = Infertility (tubal factor); C = Chronic pelvic pain"),
bullet("H = Hydrosalpinx; E = Ectopic pregnancy; S = Salpingitis / TOA (tubo-ovarian abscess)"),
Spacer(1,0.1*cm),
sub("Treatment (CDC 2021)"),
two_col_table([
[b("Outpatient"), "Ceftriaxone 500 mg IM STAT + Doxycycline 100 mg BD × 14 days + Metronidazole 500 mg BD × 14 days"],
[b("Inpatient indications"), "Surgical emergency cannot be excluded, TOA, no oral tolerance, failure of outpatient Rx, pregnancy"],
[b("Inpatient Regimen A"), "Cefoxitin 2g IV q6h + Doxycycline 100 mg q12h → oral doxy to complete 14 days"],
[b("Inpatient Regimen B"), "Clindamycin 900 mg IV q8h + Gentamicin 2 mg/kg load → 1.5 mg/kg q8h"],
], "Setting", "Regimen", 4*cm, 13*cm),
hr(),
]))
# ═══════════════════════════════════════════════
# 13. FIBROID
# ═══════════════════════════════════════════════
story.append(KeepTogether([
topic_header("UTERINE FIBROID (LEIOMYOMA)", 13),
Spacer(1, 0.15*cm),
kp("Most common pelvic tumour in women; benign smooth muscle tumour"),
kp("Malignant change to leiomyosarcoma: <1%"),
Spacer(1,0.1*cm),
sub("Types by Location"),
two_col_table([
[b("Intramural"), "Most common type; within myometrium"],
[b("Subserosal"), "Under serosa; can become pedunculated; less bleeding"],
[b("Submucous"), "Under endometrium; MOST symptomatic - causes heavy menorrhagia"],
[b("Cervical"), "Rare; can obstruct labour or urinary tract"],
[b("Broad ligament/Parasitic"), "Between leaves of broad ligament; parasitic = detached, gets blood supply elsewhere"],
], "Type", "Features", 3.5*cm, 13.5*cm),
Spacer(1,0.1*cm),
sub("Clinical Features"),
bullet("Menorrhagia (heavy regular bleeding) - esp. submucous"),
bullet("Pelvic pressure: urinary frequency (anterior), constipation (posterior)"),
bullet("Dysmenorrhoea, dyspareunia, infertility, recurrent miscarriage"),
bullet("Uterine enlargement: irregular, firm, non-tender, 'cobblestone' surface"),
Spacer(1,0.1*cm),
sub("Degenerations (Mnemonic: HRCCS)"),
two_col_table([
[b("Hyaline"), "Most common; fibrous tissue replaces smooth muscle"],
[b("Red / Carneous"), "Pregnancy-related; acute pain + fever in 2nd trimester; Rx = analgesics (conservative)"],
[b("Cystic"), "Post-hyaline; fluid-filled spaces"],
[b("Calcific"), "Post-menopause; 'womb stone' on X-ray"],
[b("Sarcomatous"), "Malignant change; <1%; rapid growth, irregular vascularity"],
], "Type", "Features", 3*cm, 14*cm),
Spacer(1,0.1*cm),
sub("Fibroid in Pregnancy"),
bullet("Red degeneration (most common complication in pregnancy) → analgesics, bed rest"),
bullet("Increased risk: preterm labour, malpresentation, placenta previa, PPH, CS"),
sub("Treatment"),
two_col_table([
[b("Medical"), "GnRH agonists (Leuprolide) - shrink by 40%; pre-op use; Tranexamic acid, NSAIDs for symptoms; Ulipristal acetate (SPRM)"],
[b("Myomectomy"), "Surgical removal of fibroid; preserves uterus; for fertility; laparoscopic or open"],
[b("Hysterectomy"), "Definitive treatment; for completed family with severe/multiple fibroids"],
[b("UAE"), "Uterine Artery Embolisation; preserves uterus; interventional radiology; not for those planning pregnancy"],
[b("MRgFUS"), "MRI-guided Focused Ultrasound Surgery - non-invasive; limited availability"],
], "Approach", "Details", 3.5*cm, 13.5*cm),
hr(),
]))
# ═══════════════════════════════════════════════
# 14. CAESAREAN SECTION
# ═══════════════════════════════════════════════
story.append(KeepTogether([
topic_header("CAESAREAN SECTION (LSCS)", 14),
Spacer(1, 0.15*cm),
kp("Def: Delivery of fetus ≥28 weeks through laparotomy + hysterotomy incisions"),
kp("Most common incision: Pfannenstiel (skin) + Transverse LUS (uterus)"),
Spacer(1,0.1*cm),
sub("Types"),
two_col_table([
[b("LSCS"), "Most common; transverse incision in lower uterine segment; less bleeding, better healing"],
[b("Classical CS"), "Vertical incision in upper segment; risk of scar rupture in next pregnancy; used for preterm, transverse lie, anterior placenta previa"],
[b("Perimortem CS"), "Within 4-5 minutes of maternal cardiac arrest; improves maternal resuscitation"],
], "Type", "Features", 3.5*cm, 13.5*cm),
Spacer(1,0.1*cm),
sub("Indications"),
three_col_table([
[b("Absolute"), b("Relative"), b("Fetal")],
["CPD", "LSCS on request", "Severe fetal distress"],
["PP Type III/IV", "Previous 2 LSCS", "Cord prolapse (live fetus)"],
["Prev. classical scar", "Breech in primigravida", "Malpresentation (brow, shoulder)"],
["Obstructed labour", "PET with unfavourable cx", "IUGR with abnormal Doppler"],
["Pelvic tumour blocking", "DM with macrosomia", "Active HSV at term"],
], ["Absolute", "Relative", "Fetal"], [5.5*cm, 5.5*cm, 6*cm]),
Spacer(1,0.1*cm),
sub("Complications"),
two_col_table([
[b("Immediate"), "Haemorrhage; bladder/ureter/bowel injury; anaesthetic complications; visceral adhesions"],
[b("Short term"), "Wound infection; endometritis; ileus; DVT/PE; urinary retention"],
[b("Long term"), "Uterine scar rupture in future pregnancy; placenta accreta spectrum; adhesions; infertility"],
], "Timing", "Complications", 3*cm, 14*cm),
Spacer(1,0.1*cm),
sub("VBAC (Vaginal Birth After Caesarean)"),
bullet("Eligible: 1 previous LSCS, transverse LUS scar, no recurrent indication, adequate pelvis"),
bullet("Success rate: 60-80%"),
bullet("Risk: Uterine scar dehiscence/rupture (0.5-1%); continuous CTG monitoring mandatory"),
kp("VBAC contraindicated: Previous classical scar, previous uterine rupture, 3+ LSCS"),
hr(),
]))
# ═══════════════════════════════════════════════
# QUICK MCQ REVISION TABLE
# ═══════════════════════════════════════════════
story.append(PageBreak())
banner_data = [[Paragraph("QUICK MCQ REVISION - HIGH YIELD FACTS", H1)]]
banner_t = Table(banner_data, colWidths=[17*cm])
banner_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), TEAL),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING", (0,0), (-1,-1), 8),
]))
story.append(banner_t)
story.append(Spacer(1, 0.2*cm))
mcq_rows = [
["APH Definition", "After 28 weeks - Dutta / After 20 weeks - Williams"],
["Placenta Previa Type IV", "ALWAYS LSCS; no attempt at vaginal delivery"],
["Abruption complication", "DIC + Couvelaire uterus + ARF; Couvelaire = blood infiltrates myometrium"],
["BPP Score ≤4", "Deliver immediately regardless of gestational age"],
["NST Reactive", "2 accelerations ≥15 bpm for ≥15 sec in 20 minutes"],
["Umbilical Doppler", "Absent/Reversed EDF in UA = severe IUGR; deliver"],
["Folic acid in ANC", "5 mg/day from preconception to 12 weeks (prevents NTD)"],
["TT vaccination", "TT1 early; TT2 at 4-8 weeks after TT1 (≥36 weeks before EDD)"],
["OP position", "Most common malposition; ROP most common; causes prolonged labour, backache"],
["Mentum posterior face", "Cannot deliver vaginally - ALWAYS LSCS"],
["Brow presentation", "Largest diameter (mento-vertical 13.5 cm) - usually LSCS"],
["Tocolysis 1st line", "Nifedipine OR Atosiban"],
["Corticosteroids", "Betamethasone 12 mg IM x2; 24-34 weeks; 24 hrs apart"],
["MgSO4 <32 weeks", "Neuroprotection against cerebral palsy (not just seizure prophylaxis)"],
["IUFD gold standard", "USG: absent cardiac activity"],
["Spalding's sign", "Overlapping skull bones on X-ray after 5-7 days of IUFD"],
["IUFD retention >4 wks", "DIC risk; fibrinogen falls; monitor coagulation"],
["Preeclampsia Rx", "Definitive = Delivery; MgSO4 for seizure prophylaxis; Labetalol for BP"],
["MgSO4 antidote", "10 mL of 10% Calcium Gluconate IV"],
["HELLP syndrome", "Haemolysis + Elevated Liver enzymes + Low Platelets; deliver regardless of GA"],
["Endometriosis Dx", "Laparoscopy + biopsy (Gold Standard)"],
["Endometriosis staging", "ASRM I-IV; Chocolate cyst = endometrioma = Stage III"],
["Endometriosis CA-125", "Elevated but non-specific; used for monitoring response to treatment"],
["Polyp diagnosis", "Hysteroscopy + biopsy (Gold Standard)"],
["Polyp malignancy", "~0.5% malignant transformation; always histopathology"],
["PID minimum criteria", "ANY ONE: Uterine / Adnexal / Cervical excitation tenderness"],
["PID outpatient Rx", "Ceftriaxone 500 mg IM + Doxy 100 mg BD + Metronidazole 500 mg BD x14 days"],
["Fitz-Hugh-Curtis", "Perihepatitis in PID; violin-string adhesions on laparoscopy"],
["Fibroid most symptomatic", "Submucous fibroid - causes worst menorrhagia"],
["Red degeneration", "In pregnancy (2nd trimester); pain + fever; Rx = analgesics only (conservative)"],
["Fibroid Rx (fertility)", "Myomectomy preserves uterus; UAE contraindicated if planning pregnancy"],
["LSCS incision", "Pfannenstiel skin incision; Transverse LUS uterine incision"],
["VBAC criteria", "1 previous LSCS + transverse LUS scar + no recurrent indication + continuous CTG"],
["VBAC contraindication", "Previous classical CS scar / previous uterine rupture / 3+ previous LSCS"],
["Twins - Hellin's law", "Twins 1:80; Triplets 1:80²; Quads 1:80³"],
["TTTS", "Twin-Twin Transfusion Syndrome; only in MCDA twins; Rx = laser ablation of anastomoses"],
["Multiple pregnancy chorion", "DCDA: lambda/twin-peak sign; MCDA: T-sign on USG"],
["ECV timing", "36-37 weeks; CI = previous LSCS scar, placenta previa, IUGR, abruption"],
]
for row in mcq_rows:
story.append(two_col_table(
[[b(row[0]), row[1]]],
col1w=6*cm, col2w=11*cm
))
# Footer
story.append(Spacer(1, 0.5*cm))
story.append(Paragraph(
"Sources: DC Dutta's Textbook of Obstetrics (9th ed.) | DC Dutta's Gynaecology (7th ed.) | "
"Williams Obstetrics (25th ed.) | Berek & Novak's Gynecology | Creasy & Resnik's Maternal-Fetal Medicine",
FOOT
))
return story
# ── Build PDF ─────────────────────────────────────────────────────────────────
def on_page(canvas, doc):
canvas.saveState()
canvas.setFont("Helvetica", 7)
canvas.setFillColor(colors.HexColor("#999999"))
canvas.drawCentredString(A4[0]/2, 1.0*cm, f"OBG Cheat Sheet | MBBS Exam Revision | Page {doc.page}")
canvas.restoreState()
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
rightMargin=2*cm, leftMargin=2*cm,
topMargin=1.5*cm, bottomMargin=1.5*cm,
title="OBG MBBS Exam Cheat Sheet",
author="Orris"
)
story = build_story()
doc.build(story, onFirstPage=on_page, onLaterPages=on_page)
print(f"PDF generated: {OUTPUT}")
cd /home/daytona/workspace/obs-cheatsheet && python generate_cheatsheet.py 2>&1
ls -lh /home/daytona/workspace/obs-cheatsheet/OBG_Cheatsheet_MBBS.pdf
OBG Cheatsheet MBBS
PDF Document · PDF
Give me the answers for these fast please
| Stage | Duration (Primip / Multip) | Events |
|---|---|---|
| First | 12 hrs / 6 hrs | Onset of true labour → full dilation (10 cm) |
| Second | 1 hr / 30 min | Full dilation → delivery of fetus |
| Third | 15 min / 10 min | Delivery of fetus → expulsion of placenta |
| Fourth | 1 hour postpartum | Observation for PPH |
| Factor | 0 | 1 | 2 | 3 |
|---|---|---|---|---|
| Dilation | Closed | 1-2 cm | 3-4 cm | ≥5 cm |
| Effacement | 0-30% | 40-50% | 60-70% | ≥80% |
| Station | -3 | -2 | -1/0 | +1/+2 |
| Consistency | Firm | Medium | Soft | - |
| Position | Posterior | Mid | Anterior | - |
| Obstructed Labour (Unscarred) | Scarred Uterus |
|---|---|
| CPD (most common in unscarred) | Previous LSCS (most common overall) |
| Malpresentation (transverse lie) | Previous myomectomy, hysterotomy |
| Injudicious oxytocin use | Previous classical CS |
| Grand multiparity | Uterine anomaly repair |
| Neglected labour |
| Cause | Management |
|---|---|
| Imperforate hymen | Cruciate incision of hymen |
| MRKH | Vaginal dilators (Frank's method); surgical vaginoplasty (McIndoe) |
| Turner syndrome (45,X) | Oestrogen + progesterone HRT; no fertility potential |
| Kallmann syndrome | GnRH pulsatile therapy or gonadotropin induction if fertility desired |
| Hyperprolactinaemia | Dopamine agonists (Cabergoline/Bromocriptine) |
| AIS (46,XY) | Gonadectomy (malignancy risk) + oestrogen HRT |
| CAH | Corticosteroids + surgical correction of virilised genitalia |
| Investigation | What it detects |
|---|---|
| Day 2 FSH, LH, oestradiol | Ovarian reserve |
| Mid-luteal progesterone (Day 21) | Confirms ovulation |
| Prolactin, TSH | Endocrine causes |
| Pelvic USG + AFC | Ovarian reserve, PCOS, fibroids |
| HSG (Hysterosalpingography) | Tubal patency + uterine cavity |
| Laparoscopy + chromopertubation | Gold standard for tubes + peritoneum |
| Hysteroscopy | Uterine cavity (submucous fibroid, polyp, adhesions) |
| AMH (Anti-Müllerian Hormone) | Best marker of ovarian reserve |
| Endometrial biopsy | Luteal phase defect, TB endometritis |
| TORCH titres | Subclinical infection |
| Organism | Discharge | Symptoms | Diagnosis | Treatment |
|---|---|---|---|---|
| Bacterial Vaginosis (Gardnerella) | Grey-white, thin, fishy smell | Malodour, no itch | Clue cells on wet mount; Whiff test +ve; pH >4.5 | Metronidazole 400 mg BD x7 days |
| Candida albicans | White, curdy, thick ("cottage cheese") | Intense pruritus vulvae, burning | Pseudohyphae on KOH prep | Clotrimazole vaginal pessary / Fluconazole 150 mg oral |
| Trichomonas vaginalis | Yellow-green, frothy, foul smell | Pruritus, dysuria | "Strawberry cervix"; motile trichomonads on wet mount | Metronidazole 2g stat (treat partner too) |
| Chlamydia / Gonorrhoea | Mucopurulent cervical discharge | Pelvic pain, CET | NAAT swab; Gram stain | Ceftriaxone + Azithromycin / Doxycycline |
| Ligament | Attachment | Function |
|---|---|---|
| Transverse cervical (Mackenrodt's / Cardinal) ligament | Cervix → lateral pelvic wall | Most important ligamentous support; prevents prolapse |
| Uterosacral ligaments | Cervix → sacrum | Keeps uterus anteverted; important in prolapse |
| Round ligaments | Cornu → inguinal ring → labia majora | Keeps uterus anteverted; weak support |
| Pubocervical (anterior) ligaments | Cervix → pubis | Support anterior vaginal wall |
| Broad ligament | Uterus → lateral wall | Maintains position; NOT a true support |
| Indication | Dose/Route |
|---|---|
| Induction of labour | IV infusion: 0.5-2 mU/min, increase every 30 min; max 20-40 mU/min |
| Augmentation of labour | Same IV infusion protocol |
| Active management of 3rd stage (AMTSL) | 10 IU IM immediately after delivery of fetus (1st line) |
| PPH treatment | 20-40 IU in 500 mL NS IV infusion + 10 IU IM |
| Uterotonic after CS | 5 IU slow IV bolus |