Give a detailed md ms obgyn level chapter based on books like williams gynaecology , dc dutta etc. on hypertensive disorders in pregnancy. Preeclampsia, eclampsia, extragenital pathologies and pregnancy (dm and ut)
preeclampsia management guidelines 2023 2024
Now make a chapter with same prompt on contracted pelvis(anatomical and functional)cpd. Conduction of labor in cpd
"cephalopelvic disproportion" OR "contracted pelvis" labor management
| Diameter | Boundaries | Normal Value |
|---|---|---|
| Anteroposterior (AP) diameters | ||
| Anatomical conjugate (true conjugate) | Upper border pubic symphysis → sacral promontory | 11.0 cm |
| Obstetric conjugate | Posterior surface of pubic symphysis (most posterior projecting point) → sacral promontory | ≥10.0 cm (min. 10 cm) |
| Diagonal conjugate | Lower border of pubic symphysis → sacral promontory | ≥12.0 cm (normally 12.5 cm) |
| Conjugata vera (obstetric conjugate) | Same as obstetric conjugate | ≥10.0 cm |
| Transverse diameter | Maximum transverse distance between iliopectineal lines | 13.0-13.5 cm |
| Oblique diameters | Sacroiliac joint → opposite iliopectineal eminence | 12.0-12.5 cm (L > R by 0.5 cm) |
Critical relationship:
- Diagonal conjugate is the ONLY AP diameter clinically measurable per vaginam
- Obstetric conjugate = Diagonal conjugate - 1.5 to 2.0 cm
- Obstetric conjugate is the shortest AP diameter of the inlet and the most clinically important
- The fetal head must negotiate the obstetric conjugate to enter the pelvis
| Diameter | Normal Value |
|---|---|
| Interspinous (transverse) diameter | ≥10.0 cm (average 10.5 cm) |
| AP diameter (pubic symphysis lower border → sacrum S4-S5 junction) | 11.5-12.0 cm |
| Posterior sagittal diameter | 4.5-5.0 cm |
Midpelvis contraction: Interspinous diameter ≤10.0 cm. The most common cause of midpelvic arrest in modern obstetrics.
| Diameter | Measurement | Normal Value |
|---|---|---|
| Intertuberous (bituberous) diameter | Between inner surfaces of ischial tuberosities | ≥8.0 cm |
| AP diameter (pubic symphysis lower border → coccyx tip) | Anatomical | 9.5 cm |
| AP diameter (lower pubic symphysis → sacrococcygeal joint) | True obstetric | 11.5 cm (with coccyx displacement) |
| Posterior sagittal diameter | Midpoint of intertuberous line → sacrococcygeal junction | 7.5-9.0 cm |
| Pubic arch angle | Angle under pubic arch | ≥90° (>85° adequate) |
Outlet contraction: Intertuberous diameter ≤8.0 cm; pubic arch angle <80°.
| Feature | Gynecoid | Android | Anthropoid | Platypelloid |
|---|---|---|---|---|
| Inlet shape | Round | Heart/Wedge | Oval (AP long) | Flat oval |
| AP/Transverse | ~Equal | AP<Trans (narrow anterior) | AP>Trans | AP<<Trans |
| Ischial spines | Not prominent | Prominent | Variable | Not prominent |
| Sacrosciatic notch | Medium | Narrow | Wide | Wide |
| Pubic arch | Wide (>90°) | Narrow (<80°) | Narrow | Wide |
| Common engagement | OA | OP | OP | Transverse |
| Labor prognosis | Best | Worst | Moderate | Variable |
| Incidence (approx.) | 50% | 20-30% | 25-35% | <5% |
| Degree | Obstetric Conjugate | Significance |
|---|---|---|
| Borderline | 9.5-10.0 cm | Trial of labor possible; close monitoring |
| Moderate | 8.5-9.5 cm | Trial of labor cautiously; small fetus may deliver |
| Severe | <8.5 cm | Absolute contraction; cesarean section |
| Condition | Type of Deformity |
|---|---|
| Small stature (<145 cm) | Generally contracted; all diameters proportionately small |
| Achondroplasia | Generally contracted; small AP and transverse diameters; short sacrum; cesarean mandatory in most cases |
| Hypopituitary dwarfism | Generally contracted; proportionate reduction |
| Condition | Deformity | Mechanism |
|---|---|---|
| Rickets (Vitamin D deficiency) | Flat (rachitic) pelvis; reduced obstetric conjugate; increased transverse | Bone softening in childhood; promontory pushed forward by weight |
| Osteomalacia | Triradiate deformity; severe bilateral compression | Adult bone softening; acetabula pushed inward; classic "beak" pelvis |
| Condition | Deformity |
|---|---|
| Pelvic fractures (especially pubic symphysis, acetabulum) | Asymmetric deformity; callus may protrude into cavity |
| Coxalgia / Hip disease in childhood | Oblique contraction on affected side |
| Dislocated hip | Unilateral asymmetry |
| Condition | Effect on Pelvis |
|---|---|
| Scoliosis | Oblique or asymmetric contraction |
| Spondylolisthesis | Inlet AP reduced by anterior vertebral displacement |
| Kyphosis (spinal) | AP diameter of inlet reduced; compensatory changes |
| Poliomyelitis | If lower limbs affected, altered weight bearing; asymmetric deformity |
| Coxalgia | Femoral head may protrude into pelvis; oblique (Naegele-type) deformity |
| Finding | Score 0 | Score 1 | Score 2 |
|---|---|---|---|
| Diagonal conjugate | <11.5 cm | 11.5-12.5 cm | >12.5 cm |
| Sacrum concavity | Flat/convex | Slightly curved | Well curved |
| Ischial spines | Very prominent | Moderately prominent | Not palpable |
| Sacrosciatic notch | <2 fingers | 2 fingers | >2 fingers |
| Pubic arch | <80° | 80-90° | >90° |
| Bituberous diameter | <7.5 cm | 7.5-8.5 cm | >8.5 cm |
Important concept (DC Dutta): "True CPD is rare; relative CPD is more common. The diagnosis of CPD should never be made before a proper trial of labor (unless absolute contraction exists)."
| Presentation | Attitude | Leading diameter | Measurement |
|---|---|---|---|
| Vertex (well flexed) | Complete flexion | Suboccipitobregmatic | 9.5 cm |
| Vertex (poorly flexed) | Partial deflexion | Suboccipitofrontal | 10.0 cm |
| Brow (forehead leads) | Partial extension | Mentovertical (largest) | 13.5 cm - essentially impossible in normal pelvis |
| Face (chin leads) | Complete extension | Submentobregmatic | 9.5 cm |
"The pelvis is tried and the result is certain only after a reasonable attempt at vaginal delivery." - Munro Kerr
Trial of forceps is NOT a "see if you can do it" - it is a carefully planned procedure with a ready alternative.
| Diameter | Plane | Normal | Contracted |
|---|---|---|---|
| Diagonal conjugate | Inlet | ≥12.5 cm | <12.0 cm suspect; <11.5 cm likely CPD |
| Obstetric conjugate | Inlet | ≥10.0 cm | <10.0 cm contracted; <8.5 cm absolute |
| Transverse diameter | Inlet | 13.5 cm | <12.0 cm |
| Interspinous diameter | Midpelvis | ≥10.5 cm | <10.0 cm contracted; <8.5 cm severe |
| Bituberous diameter | Outlet | ≥8.0 cm | <8.0 cm contracted; <7.0 cm severe |
| Pubic arch angle | Outlet | ≥90° | <80° narrow |
| External conjugate | - | 18-20 cm | <17 cm suspect |
SUSPECTED CPD
│
├─ Obstetric conjugate <8.5 cm? ──YES──► CESAREAN (primary)
│
├─ Absolute contraindication? ────YES──► CESAREAN (primary)
│
└─ NO absolute contraindication
│
└─► TRIAL OF LABOR
│
Monitor on partograph
Adequate contractions?
│
NO ──► Augment oxytocin (if no contraindication)
│
YES (≥200 MVU)
│
Progress?
│
YES ──► Continue labor; reassess each hour
│
NO (arrest of active phase/descent)
│
├─ Head low (station +2/+3), no distress?
│ └──► TRIAL OF FORCEPS (in theater)
│ Success ──► Vaginal delivery
│ Failure ──► CESAREAN
│
└─ Head not accessible / severe moulding (+3) / fetal distress?
└──► CESAREAN SECTION
| Type | Engagement | Rotation | Common Arrest | Prognosis |
|---|---|---|---|---|
| Gynecoid | OA/OT | Normal rotation to OA | Rare | Excellent |
| Android | OP/OT | Failure of rotation; OP persists | Deep transverse; OP | Poor |
| Anthropoid | OP | May deliver as OP | Delayed rotation | Fair |
| Platypelloid | Transverse | Persistent transverse | Transverse arrest | Variable |
Now send me a pdf version of the above response
ls -la /home/daytona/workspace/
mkdir -p /home/daytona/workspace/obgyn-chapters && python3 -c "import reportlab;…
python3 -c " from weasyprint import HTML, CSS print('weasyprint available') " 2>…
~/obgyn-chapters/build_cpd_pdf.py
#!/usr/bin/env python3
"""
Build a well-formatted PDF of the Contracted Pelvis / CPD chapter
using ReportLab's Platypus (high-level) API.
"""
from reportlab.lib.pagesizes import A4
from reportlab.lib.units import cm
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_JUSTIFY
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, PageBreak, KeepTogether
)
from reportlab.platypus.tableofcontents import TableOfContents
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
import os
OUTPUT = "/home/daytona/workspace/obgyn-chapters/Contracted_Pelvis_CPD_Chapter.pdf"
# ── Colour palette ────────────────────────────────────────────────────────────
DARK_BLUE = colors.HexColor("#1a3a5c")
MID_BLUE = colors.HexColor("#2e6da4")
LIGHT_BLUE = colors.HexColor("#d6e8f7")
ACCENT_RED = colors.HexColor("#c0392b")
TABLE_HDR = colors.HexColor("#2e6da4")
TABLE_ALT = colors.HexColor("#eaf3fb")
RULE_COLOR = colors.HexColor("#2e6da4")
# ── Styles ────────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()
def make_style(name, parent="Normal", **kw):
s = ParagraphStyle(name, parent=styles[parent], **kw)
styles.add(s)
return s
# Chapter title
ST_CHAPTER = make_style("ChapterTitle",
fontSize=20, leading=26, textColor=DARK_BLUE,
spaceAfter=6, spaceBefore=12, fontName="Helvetica-Bold",
alignment=TA_CENTER)
# Subtitle
ST_SUBTITLE = make_style("Subtitle",
fontSize=11, leading=14, textColor=MID_BLUE,
spaceAfter=4, spaceBefore=2, fontName="Helvetica-Oblique",
alignment=TA_CENTER)
# Part heading (PART I / PART II …)
ST_PART = make_style("PartHeading",
fontSize=14, leading=18, textColor=colors.white,
spaceAfter=8, spaceBefore=14, fontName="Helvetica-Bold",
backColor=DARK_BLUE, borderPadding=(4, 6, 4, 6),
alignment=TA_LEFT)
# H1 section heading
ST_H1 = make_style("H1",
fontSize=13, leading=17, textColor=DARK_BLUE,
spaceAfter=4, spaceBefore=10, fontName="Helvetica-Bold",
borderPadding=(0, 0, 2, 0))
# H2 sub-section
ST_H2 = make_style("H2",
fontSize=11, leading=15, textColor=MID_BLUE,
spaceAfter=3, spaceBefore=8, fontName="Helvetica-Bold")
# H3 sub-sub-section
ST_H3 = make_style("H3",
fontSize=10, leading=14, textColor=DARK_BLUE,
spaceAfter=2, spaceBefore=6, fontName="Helvetica-BoldOblique")
# Body text
ST_BODY = make_style("Body",
fontSize=10, leading=14, textColor=colors.black,
spaceAfter=4, spaceBefore=2, fontName="Helvetica",
alignment=TA_JUSTIFY)
# Bullet
ST_BULLET = make_style("Bullet",
fontSize=10, leading=13, textColor=colors.black,
spaceAfter=2, spaceBefore=1, fontName="Helvetica",
leftIndent=14, firstLineIndent=-10,
alignment=TA_JUSTIFY)
# Sub-bullet
ST_SUBBULLET = make_style("SubBullet",
fontSize=9.5, leading=13, textColor=colors.black,
spaceAfter=1, spaceBefore=0, fontName="Helvetica",
leftIndent=26, firstLineIndent=-10,
alignment=TA_JUSTIFY)
# Callout / note box
ST_NOTE = make_style("Note",
fontSize=9.5, leading=13, textColor=DARK_BLUE,
spaceAfter=4, spaceBefore=4, fontName="Helvetica-Oblique",
leftIndent=10, rightIndent=10,
backColor=LIGHT_BLUE, borderPadding=(6, 6, 6, 6))
# Code/monospace (algorithm box)
ST_CODE = make_style("Code",
fontSize=8.5, leading=12, textColor=colors.black,
spaceAfter=4, spaceBefore=4, fontName="Courier",
leftIndent=8, rightIndent=8,
backColor=colors.HexColor("#f4f4f4"),
borderPadding=(4, 4, 4, 4))
# Reference
ST_REF = make_style("Ref",
fontSize=8.5, leading=12, textColor=colors.HexColor("#444444"),
spaceAfter=2, spaceBefore=1, fontName="Helvetica",
leftIndent=14, firstLineIndent=-14)
def h(text, style):
return Paragraph(text, style)
def body(text):
return Paragraph(text, ST_BODY)
def bullet(text, sub=False):
prefix = "• " if not sub else " – "
return Paragraph(prefix + text, ST_SUBBULLET if sub else ST_BULLET)
def note(text):
return Paragraph(text, ST_NOTE)
def spacer(n=0.2):
return Spacer(1, n * cm)
def hr():
return HRFlowable(width="100%", thickness=1, color=RULE_COLOR,
spaceAfter=4, spaceBefore=4)
def make_table(data, col_widths=None, header_rows=1):
"""Build a styled table. data[0] is assumed to be the header row."""
page_w = A4[0] - 3.6 * cm # usable width
if col_widths is None:
ncols = len(data[0])
col_widths = [page_w / ncols] * ncols
t = Table(data, colWidths=col_widths, repeatRows=header_rows)
style_cmds = [
# Header
("BACKGROUND", (0, 0), (-1, header_rows - 1), TABLE_HDR),
("TEXTCOLOR", (0, 0), (-1, header_rows - 1), colors.white),
("FONTNAME", (0, 0), (-1, header_rows - 1), "Helvetica-Bold"),
("FONTSIZE", (0, 0), (-1, header_rows - 1), 9),
("ALIGN", (0, 0), (-1, header_rows - 1), "CENTER"),
# Body
("FONTNAME", (0, header_rows), (-1, -1), "Helvetica"),
("FONTSIZE", (0, header_rows), (-1, -1), 9),
("ALIGN", (0, header_rows), (-1, -1), "LEFT"),
("VALIGN", (0, 0), (-1, -1), "TOP"),
# Alternating rows
*[("BACKGROUND", (0, r), (-1, r), TABLE_ALT)
for r in range(header_rows, len(data), 2)],
# Grid
("GRID", (0, 0), (-1, -1), 0.4, colors.HexColor("#b0c8e0")),
("TOPPADDING", (0, 0), (-1, -1), 4),
("BOTTOMPADDING",(0, 0), (-1, -1), 4),
("LEFTPADDING", (0, 0), (-1, -1), 5),
("RIGHTPADDING", (0, 0), (-1, -1), 5),
("ROWBACKGROUNDS", (0, 0), (-1, -1), [colors.white, TABLE_ALT]),
]
# override header background explicitly
for r in range(header_rows):
style_cmds.append(("BACKGROUND", (0, r), (-1, r), TABLE_HDR))
t.setStyle(TableStyle(style_cmds))
return t
# ─────────────────────────────────────────────────────────────────────────────
# Build the story
# ─────────────────────────────────────────────────────────────────────────────
story = []
def add(*items):
for it in items:
story.append(it)
# ── Title page ────────────────────────────────────────────────────────────────
add(
spacer(1.5),
h("Contracted Pelvis, Cephalopelvic Disproportion,\nand Conduct of Labor in CPD", ST_CHAPTER),
spacer(0.3),
h("A Comprehensive Chapter for MD / MS OBGyn Postgraduate Level", ST_SUBTITLE),
spacer(0.4),
h("Based on: Williams Obstetrics (26e) · DC Dutta's Obstetrics (9e)\n"
"Creasy & Resnik's Maternal-Fetal Medicine (8e) · Munro Kerr's Operative Obstetrics\n"
"Oxorn-Foote Human Labor & Birth", ST_SUBTITLE),
spacer(0.6),
hr(),
spacer(0.3),
)
# ═══════════════════════════════════════════════════════════════════════════
# PART I
# ═══════════════════════════════════════════════════════════════════════════
add(h("PART I: THE OBSTETRIC PELVIS — ANATOMY AND MEASUREMENTS", ST_PART), spacer(0.2))
add(h("1. Pelvic Anatomy — Obstetric Relevance", ST_H1))
add(body(
"The bony pelvis forms the rigid birth canal through which the fetus must negotiate during "
"labor. It is composed of four bones: two innominate bones (each formed by ilium, ischium, "
"and pubis), the sacrum, and the coccyx, joined at the pubic symphysis, two sacroiliac "
"joints, and the sacrococcygeal joint."
))
add(body(
"For obstetric purposes, the pelvis is divided by the <b>linea terminalis (pelvic brim/inlet)</b> into:"
))
add(bullet("<b>False pelvis</b> (pelvis major): above the brim; limited obstetric significance"))
add(bullet("<b>True pelvis</b> (pelvis minor): below the brim; forms the birth canal"))
add(body("The true pelvis has three planes of clinical importance:"))
add(bullet("The <b>Inlet</b> (pelvic brim)"))
add(bullet("The <b>Cavity</b> (midpelvis)"))
add(bullet("The <b>Outlet</b>"))
add(spacer())
add(h("2. Pelvic Planes and Standard Diameters", ST_H1))
add(h("2.1 Pelvic Inlet (Pelvic Brim)", ST_H2))
add(body(
"The inlet is bounded anteriorly by the upper border of the pubic symphysis, laterally by "
"the iliopectineal lines, and posteriorly by the sacral promontory."
))
add(spacer(0.2))
# Inlet table
inlet_data = [
["Diameter", "Boundaries / Notes", "Normal Value"],
["Anatomical conjugate\n(true conjugate)",
"Upper border pubic symphysis → sacral promontory", "11.0 cm"],
["Obstetric conjugate\n★ MOST IMPORTANT AP",
"Most posterior point of pubic symphysis → sacral promontory", "≥ 10.0 cm"],
["Diagonal conjugate\n(clinically measurable)",
"Lower border pubic symphysis → sacral promontory", "≥ 12.5 cm"],
["Transverse diameter",
"Maximum transverse between iliopectineal lines", "13.0–13.5 cm"],
["Oblique diameter (×2)",
"Sacroiliac joint → opposite iliopectineal eminence", "12.0–12.5 cm"],
]
add(make_table(inlet_data, col_widths=[4.2*cm, 9.0*cm, 3.4*cm]))
add(spacer(0.2))
add(note(
"★ KEY FORMULA: Obstetric conjugate = Diagonal conjugate − 1.5 cm "
"(or −2.0 cm if pubic arch is narrow / symphysis is thick). "
"The diagonal conjugate is the ONLY AP inlet diameter clinically measurable per vaginam. "
"If the sacral promontory cannot be reached, the pelvis is almost certainly adequate (DC > 12 cm)."
))
add(spacer(0.3))
add(note(
"Inlet contraction: Obstetric conjugate < 10.0 cm. "
"Absolute contraction: OC < 8.5 cm → cesarean section without trial of labor."
))
add(spacer(0.3))
add(h("2.2 Midpelvis (Pelvic Cavity)", ST_H2))
add(body(
"The clinically critical plane passes through the <b>ischial spines</b> — "
"the plane of least dimensions."
))
mid_data = [
["Diameter", "Normal Value", "Contracted When"],
["Interspinous (transverse) ★", "≥ 10.5 cm", "< 10.0 cm"],
["AP diameter (symphysis lower border → S4–S5)", "11.5–12.0 cm", "< 10.5 cm"],
["Posterior sagittal diameter", "4.5–5.0 cm", "< 3.5 cm"],
]
add(make_table(mid_data, col_widths=[6.5*cm, 4.0*cm, 4.0*cm]))
add(spacer(0.2))
add(note(
"★ Midpelvic contraction (interspinous diameter ≤ 10.0 cm) is the MOST COMMON cause "
"of labor arrest in modern obstetrics — it cannot be directly measured by clinical "
"examination; imaging (CT/MRI pelvimetry) is required for definitive assessment."
))
add(body(
"<b>Clinical signs of midpelvic contraction:</b> prominent ischial spines (\"knife-like\"); "
"convergent side walls; shallow sacrosciatic notch (< 2 fingerwidths); forward-tilted flat sacrum; "
"android pelvic configuration overall."
))
add(spacer(0.3))
add(h("2.3 Pelvic Outlet", ST_H2))
outlet_data = [
["Diameter", "Normal Value", "Contracted When"],
["Intertuberous (bituberous) ★", "≥ 8.0 cm", "< 8.0 cm"],
["AP diameter (symphysis → coccyx tip)", "9.5 cm (anatomical)", "—"],
["AP obstetric (symphysis → sacrococcygeal jn.)", "11.5 cm", "< 10 cm"],
["Posterior sagittal diameter", "7.5–9.0 cm", "< 6.0 cm"],
["Pubic arch angle", "≥ 90°", "< 80° (android)"],
]
add(make_table(outlet_data, col_widths=[6.0*cm, 4.0*cm, 4.5*cm]))
add(spacer(0.2))
add(note(
"Thom's Rule: Intertuberous diameter + Posterior sagittal diameter ≥ 15 cm = adequate outlet. "
"Clinical estimate of IT diameter: a normal adult fist (~8.5 cm) should fit between tuberosities."
))
add(spacer(0.4))
# ── Pelvic types ──────────────────────────────────────────────────────────────
add(h("3. Caldwell-Moloy Classification of Pelvic Types", ST_H1))
add(body(
"Caldwell and Moloy (1933) classified the pelvis into four pure types based on "
"the shape of the posterior segment of the inlet. In clinical practice most pelves are "
"mixed types combining features of two pure types."
))
add(spacer(0.2))
types_data = [
["Feature", "Gynecoid\n(50%)", "Android\n(20–30%)", "Anthropoid\n(25–35%)", "Platypelloid\n(< 5%)"],
["Inlet shape", "Round / oval", "Heart / wedge", "Long oval (AP)", "Flat / kidney"],
["AP vs Transverse", "~Equal", "AP < Trans\n(narrow anterior)", "AP > Trans", "AP << Trans"],
["Ischial spines", "Not prominent", "Very prominent", "Variable", "Not prominent"],
["Sacrosciatic notch", "Medium", "Narrow", "Wide", "Wide"],
["Pubic arch", "> 90°", "< 80°", "Narrow", "Wide"],
["Typical engagement", "OA/OT", "OP", "OP", "Transverse"],
["Labor prognosis", "★★★ Best", "★ Worst", "★★ Moderate", "Variable"],
]
add(make_table(types_data,
col_widths=[3.5*cm, 3.1*cm, 3.2*cm, 3.2*cm, 3.0*cm]))
add(spacer(0.2))
add(note(
"Android pelvis: highest cesarean section rate of all types. "
"Associated with persistent OP and deep transverse arrest. "
"Anthropoid pelvis: OP delivery or long rotation; fair prognosis. "
"Platypelloid pelvis: head MUST engage in transverse diameter."
))
add(spacer(0.4))
add(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════
# PART II
# ═══════════════════════════════════════════════════════════════════════════
add(h("PART II: CONTRACTED PELVIS", ST_PART), spacer(0.2))
add(h("4. Definition and Classification", ST_H1))
add(body(
"A <b>contracted pelvis</b> is one in which any important diameter is reduced to the extent "
"that it interferes with the normal mechanism of labor. Contraction may occur at the inlet, "
"midpelvis, or outlet — or at all levels (generally contracted pelvis)."
))
add(spacer(0.1))
add(h("Classification by Level:", ST_H3))
add(bullet("Inlet contraction (obstetric conjugate < 10.0 cm)"))
add(bullet("Midpelvic contraction (interspinous diameter ≤ 10.0 cm)"))
add(bullet("Outlet contraction (intertuberous diameter ≤ 8.0 cm)"))
add(bullet("Combined / generalized contraction (all planes reduced)"))
add(spacer(0.2))
add(h("5. Inlet Contraction", ST_H1))
inlet_deg = [
["Degree", "Obstetric Conjugate", "Clinical Significance"],
["Borderline", "9.5 – 10.0 cm", "Trial of labor possible with close monitoring"],
["Moderate", "8.5 – 9.5 cm", "Cautious trial; small fetus may deliver"],
["Severe (absolute)", "< 8.5 cm", "Cesarean section; trial of labor contraindicated"],
]
add(make_table(inlet_deg, col_widths=[3.5*cm, 4.5*cm, 8.5*cm]))
add(spacer(0.3))
add(h("Asynclitism — Adaptive Mechanism for Inlet Contraction", ST_H3))
add(body(
"When the inlet is borderline contracted, the fetal head may engage by "
"<b>asynclitism</b> — the sagittal suture is deflected from the true transverse, "
"allowing one parietal bone to precede the other through the inlet."
))
add(bullet("<b>Anterior asynclitism (Naegele's obliquity):</b> anterior parietal bone leads; sagittal suture closer to sacrum — more common and more favorable"))
add(bullet("<b>Posterior asynclitism (Litzmann's obliquity):</b> posterior parietal bone leads; sagittal suture closer to pubis — less favorable"))
add(spacer(0.3))
add(h("6. Midpelvic Contraction", ST_H1))
add(body(
"The <b>most clinically important</b> and <b>most common</b> cause of labor arrest in "
"well-nourished populations (where inlet contraction is rare). "
"The head may negotiate the inlet successfully but become arrested at the midcavity — "
"the site of <b>deep transverse arrest</b> and <b>persistent OP position</b>."
))
add(note(
"Interspinous diameter sum rule: interspinous + posterior sagittal < 13.5 cm is ominous "
"and highly predictive of operative delivery."
))
add(spacer(0.3))
add(h("7. Outlet Contraction", ST_H1))
add(body(
"Isolated outlet contraction is relatively rare. A narrow pubic arch (<80°) forces "
"the fetal head posteriorly into the smaller posterior triangle of the outlet, "
"risking severe perineal and anal sphincter injury. Outlet contraction almost always "
"coexists with midpelvic contraction (funnel/android pelvis)."
))
add(spacer(0.3))
add(h("8. Causes of Contracted Pelvis — Systematic Classification", ST_H1))
add(h("8.1 Developmental / Constitutional", ST_H2))
causes_dev = [
["Condition", "Type of Deformity"],
["Short stature (< 145 cm)", "Generally contracted; all diameters proportionately small"],
["Achondroplasia", "Generally contracted; short sacrum; cesarean mandatory in most"],
["Hypopituitary dwarfism", "Generally contracted; proportionate reduction"],
]
add(make_table(causes_dev, col_widths=[6.0*cm, 10.5*cm]))
add(spacer(0.3))
add(h("8.2 Nutritional / Metabolic", ST_H2))
causes_nut = [
["Condition", "Deformity", "Mechanism"],
["Rickets (Vit. D deficiency)\n★ Most common in developing world",
"Flat (rachitic) pelvis; reduced OC; increased transverse",
"Childhood bone softening; promontory pushed forward by weight-bearing"],
["Osteomalacia",
"Triradiate deformity; severe bilateral compression; 'beak' pelvis",
"Adult bone softening; acetabula pushed inward"],
]
add(make_table(causes_nut, col_widths=[4.5*cm, 5.5*cm, 6.5*cm]))
add(spacer(0.3))
add(h("8.3 Traumatic / Post-Injury", ST_H2))
causes_trauma = [
["Condition", "Deformity"],
["Pelvic fractures (pubic symphysis, acetabulum)", "Asymmetric; callus may protrude into cavity"],
["Coxalgia / Hip disease in childhood", "Oblique (Naegele-type) contraction on affected side"],
["Dislocated hip", "Unilateral asymmetry; femoral head may intrude"],
]
add(make_table(causes_trauma, col_widths=[6.0*cm, 10.5*cm]))
add(spacer(0.3))
add(h("8.4 Spinal and Lower Limb Deformities", ST_H2))
causes_spine = [
["Condition", "Effect on Pelvis"],
["Scoliosis", "Oblique or asymmetric contraction"],
["Spondylolisthesis (L5–S1)", "Anterior vertebral displacement reduces inlet AP diameter"],
["Kyphosis", "AP diameter of inlet reduced; compensatory changes"],
["Poliomyelitis", "Altered weight-bearing; asymmetric deformity"],
]
add(make_table(causes_spine, col_widths=[5.5*cm, 11.0*cm]))
add(spacer(0.3))
add(h("8.5 Rare Specific Types", ST_H2))
add(bullet("<b>Naegele's pelvis:</b> Unilateral sacral synostosis (absent one sacral wing); hemipelvis obliterated on affected side; extremely rare; cesarean mandatory"))
add(bullet("<b>Robert's pelvis:</b> Bilateral sacral synostosis; AP extremely reduced; both iliosacral joints fused; extremely rare"))
add(bullet("<b>Spondylolisthetic pelvis:</b> Forward slip of L5 on S1 reduces inlet AP diameter"))
add(spacer(0.4))
add(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════
# PART III
# ═══════════════════════════════════════════════════════════════════════════
add(h("PART III: CLINICAL ASSESSMENT OF THE PELVIS", ST_PART), spacer(0.2))
add(h("9. Clinical Pelvimetry", ST_H1))
add(body(
"Clinical examination is the first-line method and remains valuable despite advances in imaging. "
"Best performed at 36–38 weeks (soft tissues most relaxed)."
))
add(spacer(0.2))
add(h("9.1 External Pelvimetry", ST_H2))
add(body(
"<b>Baudelocque's external conjugate:</b> depression below L5 spinous process → upper border of "
"pubic symphysis. Normal: 18–20 cm. Approximate obstetric conjugate = EC − 8 to 9 cm. "
"Largely replaced by internal methods due to variable soft-tissue thickness."
))
ext_table = [
["Measurement", "Landmarks", "Normal"],
["External conjugate (Baudelocque)", "Sub-L5 depression → upper pubic symphysis", "18–20 cm"],
["Interspinous (external)", "Between ASIS bilaterally", "24–26 cm"],
["Intercristal", "Widest points of iliac crests", "26–28 cm"],
["Intertrochanteric", "Greater trochanters", "28–30 cm"],
]
add(make_table(ext_table, col_widths=[5.0*cm, 7.0*cm, 4.5*cm]))
add(spacer(0.3))
add(h("9.2 Internal (Vaginal) Pelvimetry — Most Important", ST_H2))
add(h("Step 1 — Diagonal Conjugate Measurement", ST_H3))
add(body(
"With two fingers inserted vaginally, the middle finger reaches for the sacral promontory. "
"The examining hand is then elevated until the index finger contacts the inferior border of the "
"pubic symphysis; the point of contact is marked. "
"Distance measured = diagonal conjugate (normally ≥ 12.5 cm)."
))
add(bullet("Promontory <b>not reachable</b> → pelvis almost certainly adequate (DC > 12 cm) → reassuring"))
add(bullet("Promontory <b>easily reached</b> → suspect inlet contraction"))
add(bullet("OC = DC − 1.5 cm (normal arch) or DC − 2.0 cm (narrow arch / thick symphysis)"))
add(spacer(0.2))
add(h("Step 2 — Midpelvis Assessment", ST_H3))
add(bullet("Sacrum: run fingers along curve — concave (normal) vs. flat/convex (abnormal)"))
add(bullet("Ischial spines: not palpable / barely palpable / prominent / very prominent (\"knife-like\")"))
add(bullet("Sacrosciatic notch: 2–3 fingers easily = adequate (> 3 cm); < 2 fingers = narrowed"))
add(bullet("Sidewall assessment: straight/divergent (good) vs. convergent (android — poor)"))
add(spacer(0.2))
add(h("Step 3 — Outlet Assessment", ST_H3))
add(bullet("Bituberous diameter: fist between ischial tuberosities (normal fist ≈ 8.5 cm)"))
add(bullet("Pubic arch angle: both thumbs under arch — normal ≥ 90°; android < 80°"))
add(bullet("Apply Thom's rule: IT + PS ≥ 15 cm = adequate outlet"))
add(spacer(0.3))
add(h("10. Radiological Pelvimetry", ST_H1))
rad_data = [
["Method", "Radiation", "Advantages", "Disadvantages / Current Role"],
["X-ray pelvimetry", "Significant fetal dose", "Widely available historically; measures all diameters",
"Radiation; poor predictive value for VD success; NOT recommended routinely for cephalic presentation"],
["CT pelvimetry ★", "1/5 to 1/10 of X-ray", "Accurate; reproducible; lower radiation; preferred when imaging needed",
"Some radiation; cost"],
["MRI pelvimetry", "None", "No radiation; soft tissue detail; fetal size assessment possible",
"Cost; time; availability; less practical intrapartum"],
]
add(make_table(rad_data, col_widths=[3.0*cm, 2.5*cm, 5.0*cm, 6.0*cm]))
add(spacer(0.2))
add(note(
"CT pelvimetry is now preferred over X-ray when imaging is required. "
"Minimum safe measurements for vaginal breech delivery: Inlet AP ≥ 11 cm; "
"Inlet transverse ≥ 12 cm; Interspinous diameter ≥ 9 cm."
))
add(spacer(0.4))
add(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════
# PART IV
# ═══════════════════════════════════════════════════════════════════════════
add(h("PART IV: CEPHALOPELVIC DISPROPORTION (CPD)", ST_PART), spacer(0.2))
add(h("11. Definition and Concept", ST_H1))
add(body(
"<b>Cephalopelvic disproportion (CPD)</b> exists when the fetal head is too large to "
"negotiate the maternal pelvis, either due to:"
))
add(bullet("<b>Anatomical CPD:</b> Pelvis genuinely too small (contracted pelvis)"))
add(bullet("<b>Functional CPD:</b> Pelvis adequate but fetal head too large (macrocephaly, macrosomia, deflexion increasing presenting diameter)"))
add(bullet("<b>Relative CPD:</b> Both structures are normal but their relative proportions create disproportion"))
add(spacer(0.2))
add(note(
"DC Dutta's dictum: \"True CPD is rare; relative CPD is more common. The diagnosis of CPD "
"should never be made before a proper trial of labor — unless absolute contraction exists.\""
))
add(spacer(0.3))
add(h("12. Presenting Diameters vs. Pelvic Capacity", ST_H1))
diam_data = [
["Presentation", "Attitude", "Leading Diameter", "Size"],
["Vertex (well flexed)", "Complete flexion", "Suboccipitobregmatic", "9.5 cm ← smallest, best"],
["Vertex (poorly flexed)", "Partial deflexion", "Suboccipitofrontal", "10.0 cm"],
["Brow", "Partial extension", "Mentovertical ★", "13.5 cm ← largest; impossible vaginally"],
["Face (mento-anterior)", "Complete extension", "Submentobregmatic", "9.5 cm"],
]
add(make_table(diam_data, col_widths=[4.0*cm, 3.5*cm, 4.5*cm, 4.5*cm]))
add(spacer(0.3))
add(h("13. Moulding — Key Adaptive Mechanism", ST_H1))
add(body(
"The fetal skull bones overlap at the sutures and fontanelles during labor, reducing "
"the effective presenting diameter. This is <b>moulding</b>, and it is the most important "
"compensatory mechanism allowing borderline CPD to resolve."
))
add(spacer(0.1))
mould_data = [
["Grade", "Finding", "Clinical Significance"],
["0", "Sutures palpable; bones not touching", "Normal"],
["+1", "Bones touching, not overlapping", "Mild; acceptable"],
["+2", "Bones overlapping; reducible", "Moderate; monitor closely"],
["+3 ★★", "Bones overlapping; NOT reducible", "DANGER — significant CPD; contraindication to instrumental delivery"],
]
add(make_table(mould_data, col_widths=[1.8*cm, 7.0*cm, 7.7*cm]))
add(spacer(0.2))
add(note("+3 moulding = STOP all instrumental attempts = CESAREAN SECTION"))
add(spacer(0.3))
add(h("14. Diagnosis of CPD", ST_H1))
add(h("Antenatal Signs:", ST_H3))
add(bullet("Unengaged head at term in a <b>primigravida</b> — significant; investigate for CPD, placenta previa, polyhydramnios, malpresentation"))
add(bullet("Contracted pelvis on clinical pelvimetry"))
add(bullet("Estimated fetal weight disproportionate to pelvic capacity"))
add(spacer(0.2))
add(h("Intrapartum Signs of CPD:", ST_H3))
add(bullet("Failure of descent despite adequate contractions (≥ 200 Montevideo units)"))
add(bullet("Persistent occiput posterior position (especially android pelvis)"))
add(bullet("Deep transverse arrest (head at or below ischial spines in transverse; failure to rotate)"))
add(bullet("Progressive moulding (+2 to +3); growing caput succedaneum"))
add(bullet("Bandl's retraction ring (pathological) — signals impending uterine rupture"))
add(bullet("Haematuria (bladder compression between head and pubic symphysis)"))
add(spacer(0.4))
add(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════
# PART V
# ═══════════════════════════════════════════════════════════════════════════
add(h("PART V: CONDUCT OF LABOR IN CPD", ST_PART), spacer(0.2))
add(h("15. Trial of Labor", ST_H1))
add(body(
"A <b>trial of labor (TOL)</b> is the conduct of labor under careful supervision to determine "
"whether vaginal delivery is possible when doubt exists about pelvic adequacy. "
"It is NOT a prolonged wait — it is an <b>active, time-limited, closely monitored functional test</b> "
"of the head-pelvis relationship."
))
add(spacer(0.2))
add(h("Prerequisites — ALL Must Be Met:", ST_H3))
add(bullet("Live fetus in <b>cephalic (vertex) presentation</b>"))
add(bullet("Effective uterine activity present or achievable"))
add(bullet("No absolute contraindications to vaginal delivery"))
add(bullet("<b>Fully equipped maternity unit</b> with immediate cesarean capability, blood bank, NICU"))
add(bullet("Experienced obstetrician in continuous attendance or immediately available"))
add(bullet("Continuous electronic fetal monitoring (EFM)"))
add(bullet("Informed consent of the patient"))
add(spacer(0.2))
add(h("Contraindications to Trial of Labor — Proceed Directly to Cesarean:", ST_H3))
add(bullet("Obstetric conjugate < 8.5 cm (absolute inlet contraction)"))
add(bullet("Interspinous diameter < 8.5 cm with average or large fetus"))
add(bullet("Severe outlet contraction (IT < 7.0 cm) + midpelvic contraction"))
add(bullet("Previous classical (vertical) uterine incision"))
add(bullet("Previous uterine rupture"))
add(bullet("Malpresentation with suspected CPD (brow, transverse lie)"))
add(bullet("Active severe fetal compromise, placenta previa, cord prolapse"))
add(spacer(0.3))
add(h("16. Progress Criteria During Trial of Labor", ST_H1))
add(h("Cervical Dilatation (Active Phase):", ST_H3))
add(bullet("<b>Friedman criteria:</b> Minimum 1.2 cm/h (primigravida), 1.5 cm/h (multipara) in active phase"))
add(bullet("<b>ACOG/NICHD 2014 criteria:</b> Active phase arrest = < 0.5 cm/4 hours with adequate contractions (≥ 200 MVU) OR < 0.5 cm/6 h with ruptured membranes + oxytocin"))
add(spacer(0.2))
add(h("Descent:", ST_H3))
add(bullet("Arrest of descent: no progress for > 1 h in second stage = reassess"))
add(bullet("Maximum second stage: 3 h (primigravida with epidural), 2 h (without epidural) — ACOG 2014 allows longer if documented progress"))
add(spacer(0.2))
add(h("Montevideo Units (MVU) — Assessing Contraction Adequacy:", ST_H3))
add(body(
"Montevideo units = sum of amplitudes (mmHg above baseline) of all contractions in a 10-minute "
"window. <b>Adequate uterine activity = ≥ 200 MVU for ≥ 2 hours.</b>"
))
add(bullet("Progress inadequate + < 200 MVU → <b>augment with oxytocin first</b> before diagnosing CPD"))
add(bullet("Progress inadequate + ≥ 200 MVU → <b>suspect CPD</b> → reassess; consider cesarean"))
add(spacer(0.3))
add(h("17. The WHO Partograph — Essential Tool", ST_H1))
add(body(
"The partograph is the standard monitoring tool for labor progress. "
"Crossing the <b>action line</b> (4 hours to the right of the alert line, which starts at 4 cm "
"dilatation at a rate of 1 cm/hour) mandates intervention."
))
add(spacer(0.1))
add(h("Components:", ST_H3))
add(bullet("<b>Cervicograph:</b> Cervical dilatation plotted against time; alert line (1 cm/h from 4 cm); action line 4 h to right"))
add(bullet("<b>Descent:</b> Proportion of head palpable abdominally (5/5 = fully above; 0/5 = engaged/not palpable)"))
add(bullet("<b>Fetal condition:</b> FHR, membranes, liquor color, moulding grade, caput"))
add(bullet("<b>Uterine contractions:</b> Frequency, duration, strength (assessed every 30 min)"))
add(bullet("<b>Maternal condition:</b> BP, pulse, temperature, urine output"))
add(bullet("<b>Drugs:</b> Oxytocin dose, analgesia administered"))
add(spacer(0.3))
add(h("18. Oxytocin Augmentation in CPD", ST_H1))
add(body(
"Oxytocin augments contractions when they are <b>inadequate</b>. "
"It must NOT be used when CPD is suspected with already-adequate contractions — "
"risk of uterine rupture."
))
add(bullet("<b>Low-dose protocol:</b> Start 1–2 mU/min; increase by 1–2 mU/min every 30 min; maximum 20–40 mU/min"))
add(bullet("Must be accompanied by: continuous EFM + regular vaginal assessment + experienced attendant"))
add(spacer(0.1))
add(h("Do NOT augment when:", ST_H3))
add(bullet("Obvious CPD (adequate contractions, no progress)"))
add(bullet("Previous uterine scar (relative contraindication)"))
add(bullet("Grand multiparity (relative contraindication — increased rupture risk)"))
add(bullet("Abnormal FHR pattern"))
add(spacer(0.3))
add(h("19. Deep Transverse Arrest and Persistent OP — Management", ST_H1))
add(h("Deep Transverse Arrest (DTA):", ST_H2))
add(body(
"Head descends to or below the ischial spines in the transverse diameter but fails to rotate "
"to OA. Caused by prominent ischial spines, android/anthropoid pelvis, or inadequate contractions."
))
dta_data = [
["Management Option", "Indications / Notes"],
["Oxytocin augmentation", "First step if contractions inadequate (< 200 MVU)"],
["Kielland's rotational forceps", "Direct rotation from transverse → OA; requires expertise; risk of maternal and fetal injury"],
["Manual rotation + forceps/vacuum", "Experienced operators; less common"],
["Ventouse with autorotation", "Less reliable for true transverse arrest"],
["Cesarean section ★", "Rotation fails; head not accessible; +3 moulding; fetal distress; preferred in most centers"],
]
add(make_table(dta_data, col_widths=[5.0*cm, 11.5*cm]))
add(spacer(0.3))
add(h("Persistent Occiput Posterior (POP):", ST_H2))
add(bullet("<b>Long rotation to OA:</b> if android features not severe; favorable outcome possible"))
add(bullet("<b>Direct OP (face-to-pubes) delivery:</b> possible with wide outlet; occipitomental diameter (13.5 cm) needs adequate outlet"))
add(bullet("<b>Kielland's rotation:</b> OP → OA via transverse; for experienced operators only"))
add(bullet("<b>Cesarean section:</b> arrest of descent; rotation fails; distress"))
add(spacer(0.4))
add(PageBreak())
add(h("20. Trial of Forceps", ST_H1))
add(body(
"A <b>trial of forceps</b> is an attempt at instrumental vaginal delivery in conditions where "
"vaginal delivery is thought possible but not certain. It must be performed in the operating "
"theater with cesarean section fully prepared."
))
add(spacer(0.1))
add(h("Prerequisites:", ST_H3))
add(bullet("Head at station 0 or below (ideally +2/+3) — AT or BELOW ischial spines"))
add(bullet("Cervix fully dilated; membranes ruptured"))
add(bullet("Fetal position known with certainty"))
add(bullet("Adequate anesthesia (preferably regional)"))
add(bullet("Operator skilled and experienced with the specific forceps"))
add(bullet("<b>Theater ready; cesarean team scrubbed and prepared BEFORE first traction pull</b>"))
add(bullet("Patient counseled and consented for possible cesarean"))
add(spacer(0.2))
add(h("DC Dutta's Rules of Trial Forceps — The 'No' Rules:", ST_H3))
add(bullet("<b>No</b> undue force"))
add(bullet("<b>No</b> prolonged attempt (maximum 3–4 pulls)"))
add(bullet("<b>No</b> application when +3 moulding is present"))
add(bullet("<b>No</b> high forceps (head above ischial spines = absolute contraindication)"))
add(bullet("<b>No</b> rotational forceps except by trained specialists"))
add(spacer(0.2))
add(note(
"Failure of trial of forceps = immediate cesarean section. "
"A trial of forceps is NOT a 'see if you can do it' exercise — "
"it is a carefully planned procedure with a ready alternative."
))
add(spacer(0.3))
add(h("21. Vacuum Extraction in CPD", ST_H1))
vac_data = [
["Advantage", "Disadvantage"],
["Less maternal trauma than forceps", "Slower than forceps; higher failure rate"],
["No exact position knowledge needed", "Scalp injury: chignon, abrasion, cephalohematoma"],
["Allows autorotation (favorable)", "Not suitable for face presentation or preterm < 34 wks"],
["Less analgesia required", "Severe moulding (+3) = contraindication"],
]
add(make_table(vac_data, col_widths=[7.5*cm, 8.0*cm]))
add(spacer(0.2))
add(h("Absolute Contraindications to Vacuum:", ST_H3))
add(bullet("Head above pelvic inlet (unengaged)"))
add(bullet("Face presentation; after-coming head in breech"))
add(bullet("Gestation < 34 weeks (risk intracranial haemorrhage)"))
add(bullet("+3 moulding"))
add(bullet("Fetal bleeding disorder"))
add(spacer(0.3))
add(h("22. Cesarean Section in CPD", ST_H1))
add(h("Indications for Primary Cesarean Section:", ST_H2))
add(bullet("Obstetric conjugate < 8.5 cm (absolute inlet contraction)"))
add(bullet("Interspinous diameter < 8.5 cm with average or large fetus"))
add(bullet("Severe bony deformity (fracture callus, bilateral hip dislocation, achondroplasia)"))
add(bullet("Malpresentation with suspected CPD"))
add(bullet("Classical uterine scar; previous uterine rupture"))
add(spacer(0.2))
add(h("Impacted Head at Cesarean — Special Technique:", ST_H3))
add(body(
"When the fetal head is deeply impacted in the pelvis at the time of cesarean, "
"straightforward delivery from above may be impossible."
))
add(bullet("<b>'Push' technique:</b> Assistant disimpacts the head vaginally (pushes upward) while the surgeon delivers from above"))
add(bullet("<b>Patwardhan technique:</b> Used for deeply impacted head in obstructed labor at cesarean — deliver trunk and lower limbs first, then disimpact and deliver the head last"))
add(spacer(0.4))
add(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════
# PART VI — Obstructed labor
# ═══════════════════════════════════════════════════════════════════════════
add(h("PART VI: OBSTRUCTED LABOR — CATASTROPHIC CONSEQUENCE OF NEGLECTED CPD", ST_PART), spacer(0.2))
add(h("23. Definition and Causes", ST_H1))
add(body(
"<b>Obstructed labor</b> is labor in which, despite strong uterine contractions, the presenting "
"part cannot advance due to mechanical obstruction. It is a true obstetric emergency and a "
"leading cause of maternal and perinatal mortality in developing countries."
))
add(h("Common Causes:", ST_H3))
add(bullet("Contracted pelvis / CPD (most common)"))
add(bullet("Malpresentation: shoulder, brow, face-chin posterior"))
add(bullet("Fetal macrosomia"))
add(bullet("Pelvic tumors: cervical fibroid, ovarian cyst, sacrococcygeal teratoma"))
add(bullet("Hydrocephalus"))
add(spacer(0.3))
add(h("24. Signs of Obstructed Labor", ST_H1))
add(h("Maternal Signs:", ST_H2))
add(bullet("<b>Bandl's retraction ring (pathological retraction ring) ★★:</b> Visible/palpable transverse ridge between the thick upper and thin lower uterine segment; rises progressively toward the umbilicus — signals IMPENDING UTERINE RUPTURE"))
add(bullet("Extreme maternal distress, exhaustion, dehydration, tachycardia, pyrexia"))
add(bullet("Lower uterine segment: thin, tender, 'wooden' hard"))
add(bullet("<b>Haematuria:</b> bladder compressed between impacted head and pubic symphysis → ischemic necrosis → vesicovaginal fistula (VVF) if neglected"))
add(bullet("Ketones, proteinuria in urine; metabolic acidosis"))
add(spacer(0.2))
add(h("Fetal Signs:", ST_H2))
add(bullet("Severe caput succedaneum (puffy oedematous scalp swelling)"))
add(bullet("<b>+3 moulding</b> (bones overlapping, not reducible) — cardinal sign"))
add(bullet("FHR abnormalities (late decelerations, variable decelerations, bradycardia)"))
add(bullet("Fetal death if neglected"))
add(spacer(0.3))
add(h("25. Management of Obstructed Labor", ST_H1))
add(h("Immediate Resuscitation (ALL patients):", ST_H3))
add(bullet("IV access × 2 large-bore cannulae; IV fluids rapidly (crystalloids)"))
add(bullet("Urinary catheterization (relieve bladder compression; strict intake/output)"))
add(bullet("Correct electrolyte imbalance and metabolic acidosis"))
add(bullet("Broad-spectrum antibiotics (amoxicillin-clavulanate + metronidazole)"))
add(bullet("Blood crossmatch; ensure availability"))
add(bullet("Continuous EFM; fetal assessment"))
add(spacer(0.2))
add(h("Definitive Treatment:", ST_H3))
add(bullet("<b>Cesarean section</b> is the delivery of choice for the vast majority of obstructed labor cases (live or recently dead fetus)"))
add(bullet("Patwardhan technique for deeply impacted head at cesarean (as above)"))
add(spacer(0.2))
add(h("Destructive Operations (Dead Fetus ONLY — Last Resort):", ST_H3))
add(note(
"CAUTION: Destructive operations are NEVER appropriate for a live fetus. "
"They are reserved for resource-limited settings where cesarean is not available and the fetus is confirmed dead."
))
add(bullet("<b>Craniotomy / cranioclasis:</b> perforation + crushing of skull; reduces head size"))
add(bullet("<b>Decapitation:</b> separation of head from trunk in neglected shoulder presentation"))
add(bullet("<b>Cleidotomy:</b> division of fetal clavicles to reduce shoulder width"))
add(bullet("<b>Evisceration:</b> removal of thoracic/abdominal contents to collapse trunk"))
add(spacer(0.3))
add(h("26. Complications of Obstructed Labor", ST_H1))
comp_data = [
["Complication", "Mechanism / Notes"],
["Uterine rupture ★★", "Overdistension + thinning of lower segment → rupture; most feared immediate complication"],
["Vesicovaginal fistula (VVF)", "Prolonged head compression → bladder necrosis → fistula formation"],
["Rectovaginal fistula", "Posterior perineal pressure necrosis"],
["Puerperal sepsis", "Ascending infection after prolonged labor with ruptured membranes"],
["Postpartum haemorrhage", "Uterine atony after prolonged labor; DIC"],
["Perinatal asphyxia / death", "Prolonged compression of umbilical cord and fetal hypoxia"],
["Maternal death", "Uterine rupture, haemorrhage, sepsis if neglected"],
]
add(make_table(comp_data, col_widths=[4.5*cm, 12.0*cm]))
add(spacer(0.4))
add(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════
# PART VII — Special situations
# ═══════════════════════════════════════════════════════════════════════════
add(h("PART VII: SPECIAL SITUATIONS", ST_PART), spacer(0.2))
add(h("27. Breech with Contracted Pelvis", ST_H1))
add(body(
"The combination of breech presentation and contracted pelvis is particularly dangerous. "
"The after-coming head — the largest and most rigid part — negotiates the pelvis last "
"and cannot be delivered if the pelvis is inadequate. "
"<b>Head entrapment</b> is the most feared complication and is rapidly fatal without prompt relief."
))
add(spacer(0.1))
add(note(
"Minimum safe measurements for vaginal breech delivery (ALL must be met): "
"Inlet AP (OC) ≥ 11 cm | Inlet transverse ≥ 12 cm | Interspinous diameter ≥ 9 cm. "
"Any measurement below these values → cesarean section."
))
add(spacer(0.3))
add(h("28. Face and Brow Presentations with CPD", ST_H1))
face_data = [
["Presentation", "Leading Diameter", "Vaginal Delivery Possible?"],
["Face — Mento-anterior (MA)", "Submentobregmatic (9.5 cm)", "Yes, in adequate pelvis"],
["Face — Mento-posterior (MP)", "Mentovertical (13.5 cm)", "NO — cesarean in ALL cases"],
["Brow", "Mentovertical (13.5 cm)", "NO — virtually always cesarean"],
]
add(make_table(face_data, col_widths=[5.0*cm, 5.0*cm, 6.5*cm]))
add(spacer(0.3))
add(h("29. Previous Cesarean with Suspected CPD (VBAC)", ST_H1))
add(body(
"Trial of scar (VBAC) with suspected CPD requires careful assessment. "
"If previous CPD was due to <b>relative disproportion</b> (large baby, not true bony contracted pelvis), "
"a trial may be appropriate if the current baby is estimated to be smaller. "
"If <b>true bony CPD</b> was the indication: repeat cesarean is generally advised."
))
add(spacer(0.4))
add(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════
# PART VIII — High-yield summary
# ═══════════════════════════════════════════════════════════════════════════
add(h("PART VIII: HIGH-YIELD SUMMARY", ST_PART), spacer(0.2))
add(h("Table A: Key Pelvic Measurements — Normal vs. Contracted", ST_H1))
summary_table = [
["Diameter", "Plane", "Normal Value", "Borderline", "Absolute Contraction"],
["Diagonal conjugate", "Inlet", "≥ 12.5 cm", "12.0–12.5 cm", "< 11.5 cm"],
["Obstetric conjugate ★", "Inlet", "≥ 10.0 cm", "9.5–10.0 cm", "< 8.5 cm"],
["Transverse diameter", "Inlet", "13.5 cm", "12.0–13.0 cm", "< 12.0 cm"],
["Interspinous ★★", "Midpelvis", "≥ 10.5 cm", "10.0–10.5 cm", "< 8.5 cm"],
["Bituberous (IT)", "Outlet", "≥ 8.0 cm", "7.5–8.0 cm", "< 7.0 cm"],
["Pubic arch angle", "Outlet", "≥ 90°", "80–90°", "< 80°"],
["External conjugate", "—", "18–20 cm", "17–18 cm", "< 17 cm"],
]
add(make_table(summary_table, col_widths=[3.8*cm, 2.8*cm, 3.0*cm, 3.0*cm, 3.9*cm]))
add(spacer(0.3))
add(h("Table B: Pelvic Types — Labor Outcomes", ST_H1))
type_out = [
["Type", "Engagement", "Rotation", "Common Arrest", "Prognosis"],
["Gynecoid (50%)", "OA / OT", "Normal → OA", "Rare", "★★★ Excellent"],
["Android (20–30%)", "OP / OT", "Failure; OP persists", "DTA; POP", "★ Poor"],
["Anthropoid (25–35%)", "OP", "May deliver as OP", "Delayed rotation", "★★ Fair"],
["Platypelloid (< 5%)", "Transverse", "Persistent transverse", "Transverse arrest", "Variable"],
]
add(make_table(type_out, col_widths=[3.0*cm, 3.0*cm, 3.5*cm, 3.5*cm, 3.5*cm]))
add(spacer(0.3))
add(h("Management Algorithm: Suspected CPD", ST_H1))
algo = [
"SUSPECTED CPD",
"",
" ├─ Obstetric conjugate < 8.5 cm? ──YES──► PRIMARY CESAREAN SECTION",
" ├─ Absolute contraindication present? ─YES──► PRIMARY CESAREAN SECTION",
" │",
" └─► TRIAL OF LABOR (in equipped centre, experienced attendant, continuous EFM)",
" │",
" Monitor on WHO Partograph",
" │",
" Contractions adequate? (≥ 200 MVU × 2 h)",
" │",
" NO ──► Augment with oxytocin (if no contraindication) ──► Reassess",
" │",
" YES (≥ 200 MVU) ── Progress?",
" │",
" YES ──► Continue; reassess hourly",
" │",
" NO (active phase / descent arrest)",
" │",
" ├─ Head low (+2/+3 station), no distress, no +3 moulding?",
" │ └──► TRIAL OF FORCEPS (in theater, cesarean team ready)",
" │ Success ──► Vaginal delivery",
" │ Failure ──► IMMEDIATE CESAREAN SECTION",
" │",
" └─ Head not accessible / +3 moulding / fetal distress / Bandl's ring",
" └──► CESAREAN SECTION",
]
for line in algo:
story.append(Paragraph(line if line else " ", ST_CODE))
add(spacer(0.3))
add(h("High-Yield One-Liners for Examinations", ST_H1))
oneliners = [
"Only AP diameter measurable per vaginam: <b>Diagonal conjugate</b>",
"Formula: Obstetric conjugate = DC − 1.5 cm (normal arch) or DC − 2.0 cm (narrow arch)",
"Most important diameter for engagement: <b>Obstetric conjugate (inlet)</b>",
"Most common cause of labor arrest in developed world: <b>Midpelvic contraction</b>",
"<b>Bandl's ring</b> = pathological retraction ring = impending uterine rupture = EMERGENCY CESAREAN",
"<b>+3 moulding</b> = contraindication to ALL instrumental delivery = CESAREAN",
"Adequate MVU for diagnosing CPD: ≥ 200 MVU for ≥ 2 hours without progress",
"Thom's rule for outlet: IT + PS ≥ 15 cm = adequate",
"Most common pelvic type in women: <b>Gynecoid (50%)</b>",
"Worst pelvic type for labor: <b>Android</b>",
"Rickets causes: <b>Flat (rachitic) pelvis</b> — reduced AP, increased transverse",
"Osteomalacia causes: <b>Triradiate deformity</b>",
"Spondylolisthesis: reduces <b>inlet AP</b> diameter",
"Naegele's pelvis: <b>unilateral oblique contraction</b> (absent one sacral wing)",
"Trial of forceps MUST be done: in <b>operating theater with cesarean ready</b>",
"Patwardhan technique: for <b>deeply impacted head at cesarean</b> (deliver trunk first)",
"Destructive operations: <b>ONLY for dead fetus</b>; NEVER for live fetus",
"VVF: complication of <b>obstructed/neglected labor</b> — prolonged head → bladder compression",
"Most common cause of contracted pelvis in developing countries: <b>Rickets / Vitamin D deficiency</b>",
"Suspected contracted pelvis if height: <b>< 145 cm</b> (varies by ethnicity)",
"Brow presentation vaginal delivery: <b>virtually impossible</b> (mentovertical = 13.5 cm)",
"Mento-posterior face presentation: <b>ALWAYS cesarean</b>",
"Ventouse contraindicated at: <b>< 34 weeks gestation</b> (risk intracranial haemorrhage)",
"Definition of CPD (Dutta): disproportion between fetal head and maternal pelvis — true CPD rare; relative CPD more common",
]
for ol in oneliners:
story.append(Paragraph("• " + ol, ST_BULLET))
story.append(Spacer(1, 0.08*cm))
add(spacer(0.4))
add(hr())
add(h("References", ST_H1))
refs = [
"Creasy & Resnik's Maternal-Fetal Medicine: Principles and Practice, 8th Edition — Chapter 40 (Breech presentation; radiographic pelvimetry criteria)",
"DC Dutta's Obstetrics, 9th Edition — Chapters: Pelvis, Contracted Pelvis, Dystocia, Obstructed Labor, Trial of Labor",
"Williams Obstetrics, 26th Edition — Chapters: Dystocia, Abnormal Labor, Operative Vaginal Delivery",
"Munro Kerr's Operative Obstetrics, 12th Edition",
"Oxorn-Foote Human Labor & Birth, 5th Edition",
"Caldwell WE, Moloy HC. Anatomical variations in the female pelvis and their effect on labor. Am J Obstet Gynecol. 1933;26:479–505.",
"Kissler K, Hurt KJ. The Pathophysiology of Labor Dystocia: Theme with Variations. Reprod Sci. 2023 Mar [PMID: 35817950]",
"Friedman EA, Cohen WR. The active phase of labor. Am J Obstet Gynecol. 2023 May [PMID: 36997397]",
"Anikwe CC et al. Maternal and fetal outcome of obstructed labour. Afr Health Sci. 2022 Jun [PMID: 36407379]",
]
for r in refs:
story.append(Paragraph("• " + r, ST_REF))
story.append(Spacer(1, 0.1*cm))
add(spacer(0.3))
add(note("This chapter is written at the MD/MS OBGyn postgraduate level. "
"All clinical decisions must be individualized and made in consultation with appropriate specialist teams."))
# ── Page numbering ─────────────────────────────────────────────────────────────
def on_page(canvas, doc):
canvas.saveState()
# Header bar
canvas.setFillColor(DARK_BLUE)
canvas.rect(1.8*cm, A4[1]-1.4*cm, A4[0]-3.6*cm, 0.5*cm, fill=1, stroke=0)
canvas.setFillColor(colors.white)
canvas.setFont("Helvetica-Bold", 8)
canvas.drawString(2.0*cm, A4[1]-1.15*cm, "Contracted Pelvis, CPD and Conduct of Labor in CPD")
canvas.drawRightString(A4[0]-1.8*cm, A4[1]-1.15*cm, "MD/MS OBGyn Chapter")
# Footer
canvas.setFillColor(colors.HexColor("#666666"))
canvas.setFont("Helvetica", 8)
canvas.drawCentredString(A4[0]/2, 1.0*cm, f"Page {doc.page}")
canvas.restoreState()
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
rightMargin=1.8*cm, leftMargin=1.8*cm,
topMargin=2.0*cm, bottomMargin=1.8*cm,
title="Contracted Pelvis, CPD and Conduct of Labor",
author="Orris Medical AI",
subject="MD/MS OBGyn Level Chapter",
)
doc.build(story, onFirstPage=on_page, onLaterPages=on_page)
print(f"PDF written to: {OUTPUT}")
cd /home/daytona/workspace/obgyn-chapters && python3 build_cpd_pdf.py 2>&1
~/obgyn-chapters/build_cpd_pdf.py
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/obgyn-chapters/build_cpd_pdf.py'
cd /home/daytona/workspace/obgyn-chapters && python3 build_cpd_pdf.py 2>&1
python3 -c "from reportlab.lib.styles import getSampleStyleSheet; s=getSampleSty…
~/obgyn-chapters/build_cpd_pdf.py
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/obgyn-chapters/build_cpd_pdf.py'
cd /home/daytona/workspace/obgyn-chapters && python3 build_cpd_pdf.py 2>&1
ls -lh /home/daytona/workspace/obgyn-chapters/Contracted_Pelvis_CPD_Chapter.pdf
Contracted Pelvis CPD Chapter
PDF Document · PDF
Types of c section
| Axis | Categories |
|---|---|
| Urgency | Elective · Emergency · Crash |
| Uterine incision type | Lower segment (transverse or vertical) · Classical (upper segment) · T-incision · J-incision |
| Abdominal wall incision | Pfannenstiel · Joel-Cohen · Midline vertical · Maylard · Cherney |
| Peritoneal approach | Transperitoneal (intraperitoneal) · Extraperitoneal |
| Uterine closure | Single-layer · Double-layer |
| Special types | Caesarean hysterectomy · Perimortem CS · Caesarean under GA vs. regional |
| Grade | Urgency | Definition | Target Decision-to-Delivery Interval |
|---|---|---|---|
| Grade 1 | Immediate threat to life | Fetal/maternal life immediately threatened | ≤ 30 minutes ("crash CS") |
| Grade 2 | Urgent | Maternal or fetal compromise not immediately life-threatening | ≤ 75 minutes |
| Grade 3 | Expedited | No maternal/fetal compromise but early delivery needed | As soon as practicable |
| Grade 4 | Elective | Scheduled, no urgency | At a planned time |
| Indication | Reason |
|---|---|
| Transverse lie with ruptured membranes and back down | LUS too narrow; fetus impacted |
| Anterior placenta praevia with major vessels in LUS | Avoids cutting placenta in LUS |
| Densely adherent bladder / obliterated vesico-uterine fold (prior surgery) | Cannot create bladder flap |
| Very premature fetus (< 28 weeks) with poorly formed LUS | Need wider access; LUS too small |
| Carcinoma of the cervix | Avoid disturbing the cervical lesion |
| Some cases of Bandl's ring / obstructed labor (rarely) | Access to upper segment safer |
| Perimortem caesarean section | Speed paramount; easiest access |
| Postmortem ("Coffin") caesarean | Historical; access to fetus |
| Fibroid occupying entire lower segment | Cannot avoid LUS |
Critical point: A woman with a classical CS scar should be delivered by elective repeat CS at 36–37 weeks (before spontaneous labor) because silent rupture can occur antepartum without warning.
| Feature | Low Transverse (Kerr) | Low Vertical (Krönig) | Classical (Upper Segment) |
|---|---|---|---|
| Location | Lower uterine segment | Lower uterine segment | Upper uterine segment |
| Orientation | Transverse | Vertical | Vertical |
| Blood loss | Least | Moderate | Most |
| Repair | 1–2 layer; straightforward | 2–3 layer | 3-layer; difficult |
| Rupture risk (next pregnancy) | ~0.5–0.7% | ~1–2% (if upper segment entered) | 4–9% |
| VBAC permitted | Yes | Only if stays in LUS | No — absolute contraindication |
| Proportion of all CS | >90% | ~5–7% | <1% |
| Best for | Almost all cases | Poor LUS; transverse lie; fetal anomaly | Emergency; very premature; special indications |
| Adhesion risk | Lower | Moderate | Highest |
| Scar dehiscence risk | Baseline | Moderate | 8× higher than transverse |
| One-liner | Answer |
|---|---|
| Most common type of CS worldwide | Low transverse (Kerr) LSCS — >90% |
| Fastest / emergency uterine incision | Classical (upper segment vertical) |
| VBAC permitted after which scar | Low transverse LSCS only |
| VBAC absolutely contraindicated | Classical CS scar |
| Risk of rupture: LSCS scar | ~0.5–0.7% in labor |
| Risk of rupture: classical scar | 4–9%; may occur silently BEFORE labor |
| Elective CS timing for classical scar | 36–37 weeks (before labor onset) |
| Elective CS timing for LSCS scar | 38–39 weeks |
| T-incision scar treated as | Classical scar — VBAC contraindicated |
| Most common abdominal incision | Pfannenstiel |
| Fastest abdominal incision | Midline vertical |
| Joel-Cohen vs. Pfannenstiel | Joel-Cohen: faster, less blood loss; Pfannenstiel: better cosmesis |
| Misgav-Ladach technique | Joel-Cohen + blunt dissection + single-layer uterine closure + non-closure of peritoneum |
| Extraperitoneal CS: modern role | Largely obsolete; replaced by antibiotics |
| "4 and 5 rule" | Perimortem CS: decide at 4 min, deliver by 5 min post-arrest |
| Most common organ injured at CS | Bladder |
| CS most dangerous for accreta risk | Anterior placenta praevia with previous CS scar |
| Three-layer uterine closure required for | Classical CS incision |
| Dehiscence risk: classical vs. transverse | Classical = 8× higher |
| Uterine incision for hydrocephalus | Low vertical (Krönig) for large head |
| CS grade with 30-minute DDI target | Grade 1 (immediate threat to life) |