Explain in detail with diagrams flow chart visual pictures for post graduate mbbs obstetrics scholar
pre-eclampsia pathophysiology flowchart diagram endothelial dysfunction vasospasm PGmedical
pre-eclampsia two stage model spiral artery remodeling trophoblast invasion diagram HELLP syndrome 2024


| Substance | Source | Action | In Pre-eclampsia |
|---|---|---|---|
| PGI₂ (Prostacyclin) | Vascular endothelium | Vasodilator, inhibits platelet aggregation | Decreased |
| TXA₂ (Thromboxane A2) | Platelets | Vasoconstrictor, promotes platelet aggregation | Increased |
Net result: Vasoconstriction + platelet activation + thrombus formation
Angiotensinase (part of α₂-globulin) is liberated → breaks down Ang-II → blood pressure remains low and refractory
Proteinuria → loss of α₂-globulin → Angiotensinase activity drops → Ang-II accumulates → increased vascular sensitivity → hypertension becomes refractory
L-arginine
↓ (eNOS enzyme in vascular endothelium + syncytiotrophoblast)
Nitric Oxide (NO)
↓
✓ Relaxes vascular smooth muscle
✓ Inhibits platelet aggregation
✓ Prevents intervillous thrombosis
In Pre-eclampsia:
Oxidative stress + ↑Arginase II
↓
eNOS uncoupling → NO → O₂⁻ (superoxide)
↓
Peroxynitrite (toxic) → Endothelial damage
↓
↓ Vasodilation → HYPERTENSION
Placental ischemia
↓
Activated leukocytes + Trophoblastic debris
↓
TNF-α, IL-6, IL-8 (cytokines)
↓
Endothelial cell injury
↓
↑ Adhesion molecules + ↑ Capillary permeability
↓
EDEMA + ENDOTHELIAL DYSFUNCTION
Oxidative stress in pre-eclampsia
↓
Lipid peroxides + Reactive Oxygen Species (ROS) + Superoxide anion radicals
↓
Endothelial injury + dysfunction
↓
Platelet activation + Neutrophil activation
↓
More superoxide radical production → MORE endothelial damage
↓ (VICIOUS CYCLE)
| Factor | Normal | Pre-eclampsia | Effect |
|---|---|---|---|
| VEGF (Vascular Endothelial Growth Factor) | Promotes endothelial survival | ↓ (sequestered) | Endothelial dysfunction |
| PLGF (Placental Growth Factor) | Angiogenesis | ↓ (sequestered) | Reduced placental vascularization |
| sFlt-1 (soluble fms-like tyrosine kinase-1) | Low | ↑↑ (antiangiogenic) | Binds + neutralizes VEGF and PLGF |
| sEndoglin | Low | ↑ (antiangiogenic) | Inhibits TGF-β signaling → endothelial dysfunction |
sFlt-1 binds VEGF + PLGF → prevents them from activating their receptors → endothelial cell dysfunction → capillary leak, vasospasm, hypertension

PRE-ECLAMPSIA = ENDOTHELIAL DYSFUNCTION + VASOSPASM
↕ (Vicious cycle)
Endothelial dysfunction ← Oxidative stress + Inflammatory mediators
Vasospasm ← Imbalance: ↓PGI₂ + ↓NO vs. ↑TXA₂ + ↑Ang-II + ↑ET-1
Vasospasm of afferent glomerular arterioles
↓
Anoxia to glomerular endothelium
↓
GLOMERULAR ENDOTHELIOSIS
(endothelial swelling + fibrin-like deposits in GBM + occluded lumen)
↓
↓GFR (25% reduction) + ↓Tubular reabsorption
↓
PROTEINURIA
(Albumin 50-60%, α-globulin 10-15% of total urinary protein)
↓
Severe cases: Bilateral Renal Cortical Necrosis
Oxidative stress → Endothelial injury
↓
↑ Capillary permeability (leaky capillaries)
↓
Fluid leaks into extracellular space
+
↓ Plasma oncotic pressure (albumin loss via proteinuria)
↓
GENERALIZED OEDEMA
(Dependent edema → facial puffiness → pulmonary edema in severe cases)
Vasospasm of afferent glomerular arterioles
↓
Anoxic change to glomerular tuft endothelium
↓
Glomerular endotheliosis
↓
↑ Glomerular capillary permeability
↓
↑ Protein leakage (filtration overwhelms reabsorption)
+
Simultaneously depressed tubular reabsorption
↓
SIGNIFICANT PROTEINURIA
(≥300 mg/24h or P:Cr ≥0.3 mg/mg)
Albumin = 50-60% | α-globulin = 10-15%
| Feature | Mechanism | Diagnostic Threshold |
|---|---|---|
| Hemolysis (H) | Microangiopathic hemolytic anemia - RBCs sheared by fibrin strands in vasospastic vessels | Schistocytes/helmet cells on peripheral smear, ↑LDH, ↑bilirubin >1.2 mg/dL |
| Elevated Liver (EL) | Periportal hemorrhagic necrosis, hepatic arteriolar thrombosis | AST + ALT >70 IU/L |
| Low Platelets (LP) | Platelet consumption at sites of endothelial damage | <100,000/mm³ |
↓PGI₂ ↑TXA₂
↓Nitric oxide ↑Angiotensin-II (due to ↓angiotensinase)
↑Endothelin-1
↓ ↓
VASODILATORS VASOCONSTRICTORS
↘ ↙
IMBALANCE → VASOSPASM
↓
↑ Peripheral Vascular Resistance
↓
HYPERTENSION
(≥140/90 mmHg twice, ≥4h apart)
| Biomarker | Direction | Clinical Significance |
|---|---|---|
| sFlt-1 | ↑↑ | Best predictor; sequesters VEGF/PLGF |
| PLGF | ↓↓ | Low before clinical presentation |
| sFlt-1:PLGF ratio | ↑↑↑ | >38 = high risk within 4 weeks |
| NO | ↓ | Vasodilation impaired |
| Endothelin-1 | ↑ | Potent vasoconstriction |
| TXA₂ | ↑ | Platelet activation + vasoconstriction |
| PGI₂ | ↓ | Loss of platelet inhibition |
| TNF-α, IL-6 | ↑ | Endothelial activation |
| Uric acid | ↑ | Reflects reduced GFR + renal damage |
Create a comparison table: Early-onset vs late-onset pre-eclampsia mechanisms
"early-onset preeclampsia" AND "late-onset preeclampsia" AND pathophysiology
early-onset vs late-onset preeclampsia mechanisms comparison sFlt-1 PLGF trophoblast maternal vascular 2024
https://pmc.ncbi.nlm.nih.gov/articles/PMC12652060
PMID: 39049670
https://www.mdpi.com/1422-0067/26/22/11091
| Early-Onset PE (EOPE) - Type I | Late-Onset PE (LOPE) - Type II | |
|---|---|---|
| Gestational age | < 34 weeks | ≥ 34 weeks |
| Proportion of all PE | 5-20% | 80-95% |
| Core concept | Placenta-driven disease | Mother-driven disease |
EOPE (Type I) LOPE (Type II)
─────────────────────────────────────────────────────────
PLACENTA MOTHER
↓ ↓
Defective trophoblast invasion Pre-existing maternal
Abnormal spiral artery remodeling metabolic/vascular
Placental ischemia + hypoxia predisposition
↓ ↓
Severe angiogenic imbalance Mild angiogenic imbalance
↓↓↓ PLGF + ↑↑↑ sFlt-1 ↓ PLGF + ↑ sFlt-1
↓ ↓
Fetal growth restriction Normal/large fetus
Abnormal Dopplers Normal Dopplers
Severe maternal disease Milder maternal disease
─────────────────────────────────────
BOTH converge to:
Endothelial dysfunction + Vasospasm
Hypertension + Proteinuria
| Feature | EOPE (<34 wks) | LOPE (≥34 wks) |
|---|---|---|
| Primary driver | Defective placentation | Maternal cardiovascular/metabolic maladaptation |
| Trophoblast invasion | Severely impaired - fails to reach myometrial segment | Near-normal or only mildly impaired |
| Spiral artery remodeling | Severely deficient - vessels remain high resistance, narrow, muscular | Near-normal or mildly affected |
| Uteroplacental blood flow | Markedly reduced (high-resistance flow) | Normal or near-normal |
| Placental hypoxia | Severe, early-onset, chronic | Mild or absent |
| Placental senescence | Accelerated premature senescence | Physiological age-related senescence at term |
| sFlt-1 levels | ↑↑↑ (very high, sustained) | ↑ (mildly elevated) |
| PLGF levels | ↓↓↓ (severely suppressed) | ↓ (mildly reduced) |
| sFlt-1:PLGF ratio | ↑↑↑ (>85, often >200) | ↑ (38-85) |
| sEndoglin | ↑↑ elevated | ↑ mildly elevated |
| Oxidative stress | Severe - placental hypoxia-driven ROS production | Moderate - maternal metabolic-driven |
| Inflammatory cytokines (TNF-α, IL-6) | Marked elevation | Moderate elevation |
| NO deficiency | Severe | Moderate |
| Endothelin-1 | ↑↑ | ↑ |
| HIF-1α (hypoxia-inducible factor) | ↑↑ - drives sFlt-1 and sEng production | Less upregulated |
| AT1 receptor autoantibodies | More common | Less common |
| Syncytiotrophoblast stress/debris | +++, large amounts shed into maternal circulation | +, physiological shedding at term |
| Risk Factor | EOPE | LOPE |
|---|---|---|
| Previous preeclampsia | ✓ | ✓ |
| Nulliparity | ✓ | ✓ (stronger association) |
| Diabetes mellitus | ✓ | ✓✓ (stronger) |
| Antiphospholipid syndrome | ✓✓ (strong) | ✗ |
| Chronic hypertension | ✓✓ (strong) | ✓ |
| Thrombophilias | ✓✓ | ✗ |
| Molar pregnancy | ✓✓ | ✗ |
| IVF - donor eggs | ✓✓ | ✓ |
| Black race | ✓✓ (strong) | ✓ |
| Obesity (BMI >35) | ✓ | ✓✓ (stronger) |
| Chronic kidney disease | ✓ | ✓✓ (stronger) |
| Metabolic syndrome | ✓ | ✓✓ |
| Older maternal age | ✓ | ✓ |
| Multiple gestation/macrosomia | Less common | ✓✓ (macrosomia, multiples) |
| Fetal conditions (aneuploidy) | ✓ | ✗ |
| Parameter | EOPE | LOPE |
|---|---|---|
| Cardiac output (CO) | ↓ (low) | ↑ (high) |
| Peripheral vascular resistance (PVR) | ↑↑ (very high) | ↓ or normal |
| Uterine artery Doppler | Abnormal: high resistance, notching, reversed diastolic flow | Normal |
| Uterine artery PI | ↑↑ | Normal |
| Stroke volume | Reduced | Maintained/elevated |
| Central venous pressure | Low | Normal/High |
| Hemodynamic profile | High resistance / low output state | Hyperdynamic state with endothelial injury |
This hemodynamic difference has major implications for fluid management intrapartum - EOPE patients are volume-sensitive; aggressive fluid loading is dangerous.
| Feature | EOPE | LOPE |
|---|---|---|
| Clinical severity | Usually more severe | Generally milder |
| Blood pressure | Often severely elevated | Moderate hypertension more common |
| Proteinuria | More severe, heavy proteinuria | Usually mild to moderate |
| Fetal growth restriction (FGR) | ✓✓✓ (common, often severe) | Rare (fetus may be macrosomic) |
| Fetal condition | Compromised, abnormal CTG | Usually normal |
| Fetal Doppler | Abnormal: absent/reversed end-diastolic flow in umbilical artery | Normal |
| HELLP syndrome | More common | Less common |
| Eclampsia | Risk present, especially if poorly controlled | Risk present but overall lower |
| Abruptio placentae | Higher risk | Lower risk |
| Pulmonary edema | More common | Less common |
| Renal involvement | More prominent, risk of AKI | Milder |
| Marker | EOPE Prediction | LOPE Prediction |
|---|---|---|
| Uterine artery Doppler (11-13 wks) | ✓✓✓ Strong predictor | ✗ Poor predictor |
| Mean arterial pressure (MAP) | ✓ | ✓ |
| PLGF (11-13 wks) | ✓✓✓ (low PLGF predicts EOPE) | ✗ Poor |
| PAPP-A | ↓ (low PAPP-A associated) | No association |
| sFlt-1:PLGF ratio at 20-35 wks | >85 = high specificity for EOPE | >38 used for short-term prediction |
| First trimester combined screen | Can detect 90%+ with aspirin intervention | Only ~40% detected |
| Aspirin prophylaxis efficacy | ✓✓✓ Effective (reduces EOPE by ~60-80% if started ≤16 wks) | ✗ Minimal benefit |
Clinical pearl: The FMF (Fetal Medicine Foundation) combined first-trimester screen (MAP + uterine artery Doppler + PLGF + maternal factors) detects ~90% of EOPE at 10% false positive rate - but has poor sensitivity for LOPE.
| Feature | EOPE | LOPE |
|---|---|---|
| Spiral artery changes | Acute atherosis, fibrinoid necrosis, obliteration of lumen | Minimal or absent |
| Trophoblast invasion depth | Restricted to decidua only | Normal - reaches inner myometrium |
| Villous morphology | Distal villous hypoplasia, syncytial knotting ↑↑ | Distal villous immaturity, chorangiosis |
| Infarcts | +++, often large, multiple | ± (fewer, smaller) |
| Perivillous fibrin | ↑↑ | Normal/mild ↑ |
| Placental weight | Small for gestational age | Normal or large |
| Overall pattern | Uteroplacental insufficiency | Maternal vascular malperfusion (milder) |
| Organ | EOPE | LOPE |
|---|---|---|
| Kidney | More severe glomerular endotheliosis, higher risk of AKI/cortical necrosis | Milder, usually recovers post-delivery |
| Liver | HELLP more common, subcapsular hematoma risk | Less common liver involvement |
| Brain | PRES, eclampsia, ICH possible | Eclampsia risk but generally lower |
| Heart | Low CO, high PVR, diastolic dysfunction, risk of pulmonary edema | Hyperdynamic state, less diastolic dysfunction |
| Coagulation | DIC risk higher with HELLP | Less frequent coagulopathy |
| Outcome | EOPE | LOPE |
|---|---|---|
| Fetal/neonatal mortality | ↑↑ (prematurity + FGR) | Low |
| Preterm birth | Yes, often extreme/very preterm | Near-term/term |
| NICU admission | ✓✓✓ prolonged | ± (short stay) |
| FGR / SGA | +++, common | Rare |
| Perinatal asphyxia | Higher risk | Low risk |
| Long-term neonatal morbidity | IVH, BPD, NEC, ROP risk | Minimal |
| Management Aspect | EOPE | LOPE |
|---|---|---|
| Timing of delivery | Balance prematurity vs maternal/fetal risk; consider expectant to 34 wks if stable | Delivery at 37 wks (or immediately if severe) |
| Corticosteroids for fetal lung maturity | ✓✓✓ essential before delivery | Usually not needed (≥34 wks) |
| Magnesium sulfate | ✓ eclampsia prophylaxis | ✓ (if severe) |
| Antihypertensives | ✓ (labetalol, nifedipine, hydralazine) | ✓ |
| Fluid management | Cautious - low CO state, risk of pulmonary edema | Standard; more cautious with oliguria |
| Aspirin (prevention) | Start ≤16 wks, 150 mg/day | Minimal benefit |
| Delivery route | Often cesarean due to unfavorable cervix/fetal compromise | Induction of labour acceptable if cervix favorable |
| Post-delivery surveillance | Prolonged (CVD risk very high - 8x elevated) | Moderate surveillance |
| Long-term Risk | EOPE | LOPE |
|---|---|---|
| Hypertension (2-7 yr postpartum) | ~50% develop chronic HTN | ~25% |
| Cardiovascular disease | 8-fold elevated risk for CAD, stroke, HF | 2-fold elevated risk |
| Recurrence in next pregnancy | 25-65% (higher recurrence) | 10-15% |
| Renal disease | Higher risk | Moderate risk |
| Metabolic syndrome/T2DM | Elevated | Elevated |
Per Creasy & Resnik's Maternal-Fetal Medicine: "Risk ratios for hypertension, CVD, and renal disease are about twofold higher in women with preeclampsia and as high as eightfold for early-onset preeclampsia requiring delivery before 34 weeks."
STAGE 1 (Preclinical)
┌─────────────────────────────────────────────────────────┐
│ EOPE: Poor placentation → placental ischemia │
│ LOPE: Maternal predisposition → placental senescence │
│ Both → Placental stress + syncytiotrophoblast damage │
└─────────────────────────────────────────────────────────┘
↓
STAGE 2 (Clinical)
┌─────────────────────────────────────────────────────────┐
│ Release of factors into maternal circulation: │
│ sFlt-1, sEndoglin, cytokines, oxidative mediators, │
│ syncytiotrophoblast microparticles │
│ ↓ │
│ Maternal endothelial dysfunction + vasospasm │
│ ↓ │
│ HTN + proteinuria + multi-organ involvement │
└─────────────────────────────────────────────────────────┘
EOPE = Placenta fails the mother (defective trophoblast invasion → placental ischemia → antiangiogenic storm → severe maternal + fetal disease)LOPE = Mother fails the placenta (pre-existing maternal vascular/metabolic disease → placental senescence at term → maternal endothelial dysfunction → milder disease, normal fetus)
Create a detailed pathophysiology flowchart showing Stage 1 and 2 mechanisms separately
mkdir -p /tmp/workspace/preeclampsia && ls /tmp/workspace/preeclampsia
~/preeclampsia/flowchart.py
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
from matplotlib.patches import FancyBboxPatch, FancyArrowPatch
import matplotlib.patheffects as pe
# ── canvas ──────────────────────────────────────────────────────────────────
fig = plt.figure(figsize=(28, 42), facecolor='#F0F4F8')
ax = fig.add_axes([0, 0, 1, 1])
ax.set_xlim(0, 28)
ax.set_ylim(0, 42)
ax.axis('off')
# ── helpers ──────────────────────────────────────────────────────────────────
def box(ax, x, y, w, h, text, fc, ec, tc='white', fs=10, bold=False,
radius=0.3, alpha=1.0, wrap=True, va_text='center'):
patch = FancyBboxPatch((x - w/2, y - h/2), w, h,
boxstyle=f"round,pad=0.05,rounding_size={radius}",
fc=fc, ec=ec, lw=1.8, alpha=alpha, zorder=3)
ax.add_patch(patch)
weight = 'bold' if bold else 'normal'
ax.text(x, y, text, ha='center', va=va_text, fontsize=fs, color=tc,
fontweight=weight, zorder=4, wrap=wrap,
multialignment='center',
bbox=dict(boxstyle='square,pad=0', fc='none', ec='none'))
def arrow(ax, x1, y1, x2, y2, color='#34495E', lw=2.2, style='->', head=15):
ax.annotate('', xy=(x2, y2), xytext=(x1, y1),
arrowprops=dict(arrowstyle=f'->, head_length=0.4, head_width=0.22',
color=color, lw=lw),
zorder=5)
def dbl_arrow(ax, x1, y1, x2, y2, color='#E74C3C', lw=2.0):
ax.annotate('', xy=(x2, y2), xytext=(x1, y1),
arrowprops=dict(arrowstyle='<->, head_length=0.35, head_width=0.20',
color=color, lw=lw),
zorder=5)
def label_arrow(ax, x, y, text, color='#7F8C8D', fs=8):
ax.text(x, y, text, ha='center', va='center', fontsize=fs,
color=color, style='italic', zorder=6)
def hline(ax, y, x1, x2, color='#95A5A6', lw=1.5, ls='--'):
ax.plot([x1, x2], [y, y], color=color, lw=lw, ls=ls, zorder=2)
def section_bg(ax, x1, y1, x2, y2, color, label, lc):
rect = plt.Rectangle((x1, y1), x2-x1, y2-y1, fc=color, ec=lc,
lw=2.5, zorder=1, alpha=0.18)
ax.add_patch(rect)
ax.text((x1+x2)/2, y2 - 0.35, label, ha='center', va='top',
fontsize=13, fontweight='bold', color=lc, zorder=2)
# ══════════════════════════════════════════════════════════════════════════════
# TITLE
# ══════════════════════════════════════════════════════════════════════════════
ax.text(14, 41.4,
'PATHOPHYSIOLOGY OF PRE-ECLAMPSIA',
ha='center', va='top', fontsize=20, fontweight='bold', color='#1A252F',
zorder=6)
ax.text(14, 40.85,
'Two-Stage Model | PG Obstetrics Reference Chart',
ha='center', va='top', fontsize=12, color='#5D6D7E', zorder=6)
# thin separator
hline(ax, 40.55, 0.4, 27.6, color='#2C3E50', lw=2, ls='-')
# ══════════════════════════════════════════════════════════════════════════════
# STAGE 1 BACKGROUND
# ══════════════════════════════════════════════════════════════════════════════
section_bg(ax, 0.3, 23.6, 27.7, 40.4, '#1ABC9C', '★ STAGE 1 — PLACENTAL STAGE (Weeks 6–20, Pre-clinical)', '#0E6655')
# ══════════════════════════════════════════════════════════════════════════════
# STAGE 1 — row 1: Risk Factors
# ══════════════════════════════════════════════════════════════════════════════
# Header
box(ax, 14, 39.7, 13, 0.75,
'PREDISPOSING RISK FACTORS',
'#0E6655', '#0E6655', tc='white', fs=11, bold=True)
rf_items = [
('Genetic\n(Thrombophilia,\nFactor V Leiden)', 3.2, 38.5),
('Immunological\n(AT1-AA,\nImmune tolerance ↓)', 6.8, 38.5),
('Nulliparity /\nPrevious PE /\nAPS', 10.4, 38.5),
('Chronic HTN /\nDM / CKD /\nObesity', 14.0, 38.5),
('Multiple\nGestation /\nMolar Px', 17.6, 38.5),
('IVF (donor\negg) / Black\nrace', 21.2, 38.5),
('Paternal\nfactor /\nMale fetus', 24.8, 38.5),
]
for txt, x, y in rf_items:
box(ax, x, y, 3.2, 1.3, txt, '#1ABC9C', '#0E6655', tc='white', fs=8.5, radius=0.2)
arrow(ax, x, 39.35, x, 39.15, color='#0E6655', lw=1.5)
# convergence arrows to Step A
for x, _, _ in rf_items:
arrow(ax, x, 37.84, 14, 37.22, color='#0E6655', lw=1.2)
# ── STEP A: Defective Trophoblast invasion ────────────────────────────────
box(ax, 14, 36.95, 18, 0.85,
'DEFECTIVE ENDOVASCULAR TROPHOBLAST INVASION\n(Fails at decidua-myometrial junction — does NOT reach myometrial segment)',
'#117A65', '#0B5345', tc='white', fs=9.5, bold=True)
arrow(ax, 14, 36.52, 14, 35.88, color='#0E6655', lw=2.2)
# ── Two parallel boxes: Normal vs Abnormal ───────────────────────────────
box(ax, 7.5, 35.45, 7.8, 0.95,
'✓ NORMAL: Spiral arteries transform\nto wide, tortuous, low-resistance vessels\n(musculoelastic media replaced by fibrinoid)',
'#27AE60', '#1E8449', tc='white', fs=8.5)
box(ax, 20.5, 35.45, 7.8, 0.95,
'✗ PRE-ECLAMPSIA: Spiral arteries RETAIN\nmusculoelastic media — remain narrow,\nhigh-resistance, vasoconstrictor-responsive',
'#C0392B', '#922B21', tc='white', fs=8.5)
arrow(ax, 20.5, 34.97, 14, 34.22, color='#C0392B', lw=2.2)
# cross mark on normal
ax.text(11.35, 35.78, '→ NOT this →', ha='center', va='center', fontsize=8.5,
color='#1E8449', style='italic', zorder=6)
# ── STEP B: Uteroplacental ischemia ──────────────────────────────────────
box(ax, 14, 33.92, 14, 0.82,
'UTEROPLACENTAL ISCHEMIA & HYPOPERFUSION\n(Intervillous blood flow ↓ ~33% | High-resistance Doppler waveform | Spiral artery acute atherosis)',
'#922B21', '#7B241C', tc='white', fs=9.5, bold=True)
arrow(ax, 14, 33.51, 14, 32.88, color='#922B21', lw=2.2)
# ── STEP C: Placental hypoxia ─────────────────────────────────────────────
box(ax, 14, 32.58, 11, 0.78,
'PLACENTAL HYPOXIA → HIF-1α ↑ & HIF-2α ↑ → ER Stress | Mitochondrial Dysfunction',
'#7D3C98', '#6C3483', tc='white', fs=9.5, bold=True)
# Four branch arrows from hypoxia
for x_dest in [4.5, 9.5, 18.5, 23.5]:
arrow(ax, 14, 32.19, x_dest, 31.55, color='#7D3C98', lw=1.8)
# ── STEP D: Four columns of mediators released ───────────────────────────
col_boxes = [
(4.5, 31.1, 3.8, 1.2, 'OXIDATIVE STRESS\nROS ↑ | Lipid peroxides ↑\nSuperoxide radicals ↑\nPeroxynitrite ↑', '#E67E22', '#CA6F1E'),
(9.5, 31.1, 3.8, 1.2, 'ANTI-ANGIOGENIC\nFACTORS\nsFlt-1 ↑↑↑ (binds VEGF/PlGF)\nsEndoglin ↑↑', '#2980B9', '#1F618D'),
(18.5, 31.1, 3.8, 1.2, 'INFLAMMATORY\nMEDIATORS\nTNF-α ↑ | IL-6 ↑ | IL-8 ↑\nNeutrophil activation', '#E74C3C', '#CB4335'),
(23.5, 31.1, 3.8, 1.2, 'SYNCYTIOTROPHOBLAST\nDEBRIS / MICROPARTICLES\nCell-free fetal DNA ↑\nActivated complement', '#8E44AD', '#7D3C98'),
]
for x, y, w, h, txt, fc, ec in col_boxes:
box(ax, x, y, w, h, txt, fc, ec, tc='white', fs=8.2, radius=0.2)
# convergence to Stage 2 entry
for x, _, _, _, _, _, _ in col_boxes:
arrow(ax, x, 30.5, 14, 29.85, color='#5D6D7E', lw=1.5)
# PLGF/VEGF drops box (small callout)
box(ax, 14, 30.58, 6, 0.62,
'↓ VEGF | ↓ PlGF | ↓ TGF-β (sequestered by sFlt-1 & sEndoglin)',
'#1F618D', '#154360', tc='white', fs=8.5)
arrow(ax, 14, 30.27, 14, 29.72, color='#1F618D', lw=2)
# ══════════════════════════════════════════════════════════════════════════════
# STAGE BRIDGE / DIVIDER
# ══════════════════════════════════════════════════════════════════════════════
hline(ax, 23.55, 0.4, 27.6, color='#2C3E50', lw=3, ls='-')
box(ax, 14, 23.55, 9, 0.68,
'▼ STAGE 1 → STAGE 2 : PLACENTAL FACTORS ENTER MATERNAL CIRCULATION ▼',
'#2C3E50', '#1A252F', tc='#F7DC6F', fs=10, bold=True, radius=0.15)
# ══════════════════════════════════════════════════════════════════════════════
# STAGE 2 BACKGROUND
# ══════════════════════════════════════════════════════════════════════════════
section_bg(ax, 0.3, 1.0, 27.7, 23.2, '#2980B9', '★ STAGE 2 — MATERNAL SYSTEMIC DISEASE (Clinical Pre-eclampsia)', '#1A5276')
# ── CENTRAL HUB: Endothelial dysfunction ─────────────────────────────────
arrow(ax, 14, 23.2, 14, 22.35, color='#1A5276', lw=2.5)
box(ax, 14, 21.95, 17, 1.05,
'GENERALISED MATERNAL ENDOTHELIAL DYSFUNCTION + VASOSPASM\n'
'( Endothelial injury → ↑TXA₂, ↑Ang-II, ↑ET-1 | ↓PGI₂, ↓NO → Vicious cycle )',
'#1A5276', '#154360', tc='#F9FBFC', fs=10.5, bold=True)
# ── 8 mechanisms in a ring below central hub ─────────────────────────────
mech_y = 20.2
mech_boxes = [
(2.5, mech_y, 3.8, 1.1,
'① PROSTAGLANDIN\nIMBALANCE\nPGI₂ ↓ (vasodilator)\nTXA₂ ↑ (vasoconstrictor)',
'#1A5276', '#154360'),
(7.0, mech_y, 3.8, 1.1,
'② ANG-II\nSENSITIVITY ↑\nAngiotensinase ↓\n(α₂-globulin lost in urine)',
'#117A65', '#0E6655'),
(11.5, mech_y, 3.8, 1.1,
'③ NITRIC OXIDE ↓\neNOS uncoupled by ROS\nNO → O₂⁻ (peroxynitrite)\nVasodilation impaired',
'#7D3C98', '#6C3483'),
(16.0, mech_y, 3.8, 1.1,
'④ ENDOTHELIN-1 ↑\nPotent vasoconstrictor\n> Angiotensin-II\nSustained vasospasm',
'#C0392B', '#922B21'),
(20.5, mech_y, 3.8, 1.1,
'⑤ CYTOKINES\nTNF-α | IL-6 | IL-8\nEndothelial activation\nAdhesion molecules ↑',
'#E67E22', '#CA6F1E'),
(25.0, mech_y, 3.8, 1.1,
'⑥ OXIDATIVE\nSTRESS\nLipid peroxides ↑\nROS → endothelial injury',
'#27AE60', '#1E8449'),
]
for x, y, w, h, txt, fc, ec in mech_boxes:
box(ax, x, y, w, h, txt, fc, ec, tc='white', fs=8.0, radius=0.2)
# arrow from central hub
arrow(ax, 14, 21.43, x, y + h/2, color='#5D6D7E', lw=1.4)
# angiogenic imbalance (separate callout)
box(ax, 7.5, 18.75, 7.5, 1.0,
'⑦ ANGIOGENIC IMBALANCE\nsFlt-1 ↑↑↑ sequesters free VEGF + PlGF\nsEndoglin ↑ inhibits TGF-β signaling\n→ Endothelial cell dysfunction + apoptosis',
'#2980B9', '#1F618D', tc='white', fs=8.5)
box(ax, 20.5, 18.75, 7.0, 1.0,
'⑧ COAGULATION\nACTIVATION\nPlatelet activation + aggregation ↑\nFibrin deposition in vessels\nDIC risk (severe PE/HELLP)',
'#8E44AD', '#7D3C98', tc='white', fs=8.5)
arrow(ax, 14, 21.43, 7.5, 19.25, color='#5D6D7E', lw=1.4)
arrow(ax, 14, 21.43, 20.5, 19.25, color='#5D6D7E', lw=1.4)
# ══════════════════════════════════════════════════════════════════════════════
# ORGAN-SPECIFIC CONSEQUENCES
# ══════════════════════════════════════════════════════════════════════════════
hline(ax, 17.95, 0.6, 27.4, color='#2C3E50', lw=1.8, ls='--')
ax.text(14, 17.85, '▼ ORGAN-SPECIFIC PATHOLOGY ▼',
ha='center', va='top', fontsize=10.5, fontweight='bold',
color='#1A252F', zorder=6)
organs = [
(2.2, 16.7, 3.6, 2.1,
'🫀 BLOOD\nVESSELS\n─────────\nIntense vasospasm\nFibrinoid necrosis\nVasa vasorum injury\n→ HTN (≥140/90)',
'#C0392B', '#922B21'),
(6.6, 16.7, 3.6, 2.1,
'🫘 KIDNEY\n─────────\nGlomerular endotheliosis\nAfferent arteriole spasm\n↓GFR (25%)\n→ Proteinuria\n→ Oliguria/AKI',
'#1A5276', '#154360'),
(11.0, 16.7, 3.6, 2.1,
'🧠 BRAIN\n─────────\nCerebral vasospasm\nPRES\nCerebral oedema\n→ Eclampsia\n→ ICH / Blindness',
'#7D3C98', '#6C3483'),
(15.4, 16.7, 3.6, 2.1,
'🫁 LIVER\n─────────\nPeriportal haem. necrosis\nSubcaps. haematoma\n→ RUQ / epigastric pain\n→ ↑AST/ALT\n→ Liver rupture (rare)',
'#E67E22', '#CA6F1E'),
(19.8, 16.7, 3.6, 2.1,
'🩸 BLOOD\n─────────\nMicroangiopathic haemolysis\nThrombocytopenia\nDIC\n→ HELLP syndrome\n(10-15% of severe PE)',
'#E74C3C', '#CB4335'),
(24.2, 16.7, 3.6, 2.1,
'🤰 PLACENTA\n─────────\nAcute atherosis\nWhite & red infarcts\nSyncytial degeneration\n→ FGR / IUGR\n→ Abruption',
'#27AE60', '#1E8449'),
]
for x, y, w, h, txt, fc, ec in organs:
box(ax, x, y, w, h, txt, fc, ec, tc='white', fs=7.8, radius=0.25)
arrow(ax, x, 17.65, x, y + h/2, color='#7F8C8D', lw=1.4)
# ══════════════════════════════════════════════════════════════════════════════
# THREE KEY MANIFESTATIONS
# ══════════════════════════════════════════════════════════════════════════════
hline(ax, 14.35, 0.6, 27.4, color='#2C3E50', lw=1.8, ls='--')
ax.text(14, 14.25, '▼ THREE CARDINAL CLINICAL MANIFESTATIONS ▼',
ha='center', va='top', fontsize=10.5, fontweight='bold',
color='#1A252F', zorder=6)
# HTN chain
box(ax, 4.8, 13.0, 8.5, 0.85,
'HYPERTENSION (≥140/90 mmHg × 2, ≥4 h apart)',
'#C0392B', '#922B21', tc='white', fs=9.5, bold=True)
arrow(ax, 4.8, 12.58, 4.8, 12.02, color='#C0392B', lw=1.8)
box(ax, 4.8, 11.68, 8.5, 0.78,
'↑PVR (TXA₂ + Ang-II + ET-1) | ↓PGI₂ | ↓NO\n→ Refractory to Angiotensinase',
'#E8DAEF', '#C0392B', tc='#6C3483', fs=8.5)
# Proteinuria chain
box(ax, 14.0, 13.0, 7.5, 0.85,
'PROTEINURIA (≥300 mg/24 h)',
'#1A5276', '#154360', tc='white', fs=9.5, bold=True)
arrow(ax, 14.0, 12.58, 14.0, 12.02, color='#1A5276', lw=1.8)
box(ax, 14.0, 11.68, 7.5, 0.78,
'Afferent arteriole spasm → Glomerular endotheliosis\n→ ↑Capillary permeability → ↓Tubular reabsorption',
'#D6EAF8', '#1A5276', tc='#1A5276', fs=8.5)
# Oedema chain
box(ax, 23.2, 13.0, 7.5, 0.85,
'OEDEMA (Generalised)',
'#117A65', '#0E6655', tc='white', fs=9.5, bold=True)
arrow(ax, 23.2, 12.58, 23.2, 12.02, color='#117A65', lw=1.8)
box(ax, 23.2, 11.68, 7.5, 0.78,
'Endothelial injury → ↑Capillary permeability\n+ ↓Plasma oncotic pressure (albuminuria)',
'#D5F5E3', '#117A65', tc='#117A65', fs=8.5)
# ══════════════════════════════════════════════════════════════════════════════
# HELLP BOX
# ══════════════════════════════════════════════════════════════════════════════
arrow(ax, 14, 11.29, 14, 10.65, color='#C0392B', lw=2.0)
box(ax, 14, 10.25, 20, 0.95,
'HELLP SYNDROME (10–15% of severe PE)\n'
'H = Haemolysis (schistocytes, ↑LDH, ↑bilirubin >1.2 mg/dL) | '
'EL = ↑AST/ALT >70 IU/L | LP = Platelets <100,000/mm³',
'#922B21', '#7B241C', tc='white', fs=9.0, bold=True)
# ══════════════════════════════════════════════════════════════════════════════
# VICIOUS CYCLE ANNOTATION
# ══════════════════════════════════════════════════════════════════════════════
arrow(ax, 14, 9.77, 14, 9.20, color='#C0392B', lw=2.0)
box(ax, 14, 8.88, 20, 0.82,
'⚠ VICIOUS CYCLE: Endothelial dysfunction → ↑Oxidative stress → More endothelial injury\n'
'↑sFlt-1 → ↓VEGF → ↓Endothelial survival → More dysfunction (Self-amplifying loop)',
'#7B241C', '#641E16', tc='#FADBD8', fs=8.5, bold=False)
# ══════════════════════════════════════════════════════════════════════════════
# FOETAL CONSEQUENCES
# ══════════════════════════════════════════════════════════════════════════════
hline(ax, 8.2, 0.6, 27.4, color='#2C3E50', lw=1.5, ls=':')
fetal_items = [
(3.5, 7.1, 5.0, 1.7,
'FETAL JEOPARDY\n────────────\n↓Uteroplacental blood flow\nFGR / IUGR / SGA\nAbnormal Dopplers\n(Absent/reversed EDF)',
'#117A65', '#0E6655'),
(10.0, 7.1, 5.2, 1.7,
'PREMATURITY\n────────────\nIatrogenic preterm delivery\n(Balancing maternal vs fetal risk)\nRDS / IVH / NEC / BPD\n(NICU morbidity)',
'#7D3C98', '#6C3483'),
(16.5, 7.1, 5.2, 1.7,
'PERINATAL\nASPHYXIA\n────────────\nPlacental infarcts\nAbruptio placentae\nStillbirth risk\nHypoxic-ischaemic injury',
'#C0392B', '#922B21'),
(23.0, 7.1, 5.0, 1.7,
'LONG-TERM\nFETAL RISK\n────────────\nDOHaD hypothesis\nCV disease in adult life\n(Barker effect)\nMetabolic programming',
'#E67E22', '#CA6F1E'),
]
for x, y, w, h, txt, fc, ec in fetal_items:
box(ax, x, y, w, h, txt, fc, ec, tc='white', fs=7.8, radius=0.25)
arrow(ax, x, 8.2, x, y + h/2, color='#7F8C8D', lw=1.3)
# ══════════════════════════════════════════════════════════════════════════════
# LONG-TERM MATERNAL
# ══════════════════════════════════════════════════════════════════════════════
hline(ax, 5.1, 0.6, 27.4, color='#2C3E50', lw=1.5, ls=':')
ax.text(14, 5.0, '▼ LONG-TERM MATERNAL SEQUELAE (post-delivery) ▼',
ha='center', va='top', fontsize=9.5, fontweight='bold', color='#1A252F', zorder=6)
maternal_lt = [
(3.2, 3.75, 4.4, 1.4,
'CHRONIC HTN\n~50% after EOPE\n~25% after LOPE\n(within 2–7 yrs)', '#2C3E50', '#1A252F'),
(8.5, 3.75, 4.4, 1.4,
'CVD RISK\nCAD / Stroke / HF\n×8 risk if EOPE\n×2 risk if LOPE', '#C0392B', '#922B21'),
(13.8, 3.75, 4.4, 1.4,
'RENAL DISEASE\nGFR decline\nProteinuria\nESRD risk ↑', '#1A5276', '#154360'),
(19.1, 3.75, 4.4, 1.4,
'METABOLIC\nSYNDROME\nT2DM / Dyslipidaemia\nInsulin resistance ↑', '#117A65', '#0E6655'),
(24.4, 3.75, 4.4, 1.4,
'RECURRENCE\nEOPE → 25–65%\nLOPE → 10–15%\nin next pregnancy', '#8E44AD', '#7D3C98'),
]
for x, y, w, h, txt, fc, ec in maternal_lt:
box(ax, x, y, w, h, txt, fc, ec, tc='white', fs=8.0, radius=0.2)
# ══════════════════════════════════════════════════════════════════════════════
# LEGEND / NOTE
# ══════════════════════════════════════════════════════════════════════════════
hline(ax, 2.2, 0.4, 27.6, color='#2C3E50', lw=1.5, ls='-')
ax.text(0.6, 2.05,
'↑ = increased | ↓ = decreased | HTN = hypertension | EOPE = early-onset PE | LOPE = late-onset PE | '
'PGI₂ = prostacyclin | TXA₂ = thromboxane A2\n'
'ET-1 = endothelin-1 | AT1-AA = angiotensin II type-1 receptor autoantibody | '
'DOHaD = Developmental Origins of Health & Disease | EDF = end-diastolic flow\n'
'Sources: DC Dutta Obstetrics Ch18 | Creasy & Resnik MFM 8e | Ives et al. JACC 2020 | Sugulle et al. AJRI 2024',
ha='left', va='top', fontsize=7.5, color='#5D6D7E', zorder=6)
# ══════════════════════════════════════════════════════════════════════════════
# STAGE LABELS (left margin)
# ══════════════════════════════════════════════════════════════════════════════
ax.text(0.08, 32, 'STAGE 1\n(Weeks 6–20)\nPre-clinical\nPlacental\nStage',
ha='center', va='center', fontsize=9, fontweight='bold',
color='#0E6655', rotation=90, zorder=6)
ax.text(0.08, 13.5, 'STAGE 2\nClinical\nMaternal\nDisease',
ha='center', va='center', fontsize=9, fontweight='bold',
color='#1A5276', rotation=90, zorder=6)
# ══════════════════════════════════════════════════════════════════════════════
# SAVE
# ══════════════════════════════════════════════════════════════════════════════
plt.savefig('/tmp/workspace/preeclampsia/PE_pathophysiology_flowchart.png',
dpi=180, bbox_inches='tight', facecolor='#F0F4F8')
print("Saved successfully")
cd /tmp/workspace/preeclampsia && python flowchart.py 2>&1
~/preeclampsia/flowchart2.py
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
from matplotlib.patches import FancyBboxPatch
import numpy as np
fig = plt.figure(figsize=(28, 44), facecolor='#F0F4F8')
ax = fig.add_axes([0, 0, 1, 1])
ax.set_xlim(0, 28)
ax.set_ylim(0, 44)
ax.axis('off')
# ── helpers ────────────────────────────────────────────────────────────────
def box(ax, cx, cy, w, h, text, fc, ec, tc='white', fs=9.5, bold=False, r=0.25):
patch = FancyBboxPatch((cx - w/2, cy - h/2), w, h,
boxstyle=f"round,pad=0.05,rounding_size={r}",
fc=fc, ec=ec, lw=2.0, zorder=3)
ax.add_patch(patch)
weight = 'bold' if bold else 'normal'
ax.text(cx, cy, text, ha='center', va='center', fontsize=fs,
color=tc, fontweight=weight, zorder=4,
multialignment='center')
def arr(ax, x1, y1, x2, y2, color='#34495E', lw=2.0):
ax.annotate('', xy=(x2, y2), xytext=(x1, y1),
arrowprops=dict(arrowstyle='->, head_length=0.35, head_width=0.20',
color=color, lw=lw), zorder=5)
def hline(ax, y, x1=0.5, x2=27.5, color='#5D6D7E', lw=1.8, ls='--'):
ax.plot([x1, x2], [y, y], color=color, lw=lw, ls=ls, zorder=2)
def bg(ax, x1, y1, x2, y2, fc, ec, label, label_color):
ax.add_patch(plt.Rectangle((x1, y1), x2-x1, y2-y1,
fc=fc, ec=ec, lw=3, alpha=0.15, zorder=1))
ax.text((x1+x2)/2, y2 - 0.3, label,
ha='center', va='top', fontsize=13, fontweight='bold',
color=label_color, zorder=2)
# ═══════════════════════════════════════════════════════════════════════════
# TITLE
# ═══════════════════════════════════════════════════════════════════════════
ax.text(14, 43.5, 'PATHOPHYSIOLOGY OF PRE-ECLAMPSIA',
ha='center', va='top', fontsize=21, fontweight='bold', color='#1A252F', zorder=6)
ax.text(14, 42.9, 'Two-Stage Model | PG Obstetrics Reference Chart',
ha='center', va='top', fontsize=12, color='#5D6D7E', zorder=6)
hline(ax, 42.45, ls='-', color='#2C3E50', lw=2.5)
# ═══════════════════════════════════════════════════════════════════════════
# STAGE 1 BACKGROUND
# ═══════════════════════════════════════════════════════════════════════════
bg(ax, 0.3, 24.8, 27.7, 42.3, '#1ABC9C', '#0E6655',
'STAGE 1 — PLACENTAL STAGE (Weeks 6–20, Pre-clinical)', '#0E6655')
# ── Risk Factors header
box(ax, 14, 41.55, 13, 0.72,
'PREDISPOSING RISK FACTORS',
'#0E6655', '#0A5443', tc='white', fs=11, bold=True)
rf = [
('Genetic\n(Thrombophilia\nFactor V Leiden)', 2.8),
('Immunological\n(AT1-AA\nImmune tolerance-)', 6.4),
('Nulliparity\nPrevious PE\nAPS', 10.0),
('Chronic HTN\nDM / CKD\nObesity', 14.0),
('Multiple gestation\nMolar pregnancy\nIVF (donor)', 18.0),
('Antiphospholipid\nSyndrome\nThrombophilia', 21.7),
('Black race\nMale fetus\nOlder maternal age', 25.3),
]
for txt, x in rf:
box(ax, x, 40.35, 3.1, 1.28, txt, '#1ABC9C', '#0E6655', tc='white', fs=8.0, r=0.2)
arr(ax, x, 41.2, x, 41.0, color='#0A5443', lw=1.5)
arr(ax, x, 39.7, 14, 39.05, color='#0A5443', lw=1.2)
# ── Step A: Defective invasion
box(ax, 14, 38.72, 19, 0.85,
'DEFECTIVE ENDOVASCULAR TROPHOBLAST INVASION\n'
'(Stops at decidua-myometrial junction — fails to reach myometrial segment)',
'#0B5345', '#07382E', tc='white', fs=10, bold=True)
arr(ax, 14, 38.30, 14, 37.68, color='#0B5345', lw=2.2)
# ── Two boxes: Normal vs PE
box(ax, 7.2, 37.25, 8.0, 0.9,
'NORMAL: Spiral arteries → low-resistance\nwide, tortuous, fibrinoid replaced\n(Incapable of vasospasm)',
'#27AE60', '#1E8449', tc='white', fs=8.5)
box(ax, 20.8, 37.25, 8.0, 0.9,
'PRE-ECLAMPSIA: Spiral arteries RETAIN\nmusculo-elastic media — narrow,\nhigh-resistance, vasoconstrictor-sensitive',
'#C0392B', '#922B21', tc='white', fs=8.5)
ax.text(14, 37.55, 'vs', ha='center', va='center', fontsize=11,
fontweight='bold', color='#2C3E50', zorder=6)
arr(ax, 20.8, 36.80, 14, 36.15, color='#C0392B', lw=2.2)
# ── Step B: Uteroplacental ischemia
box(ax, 14, 35.82, 15, 0.82,
'UTEROPLACENTAL ISCHEMIA & HYPOPERFUSION\n'
'(Intervillous flow -33% | High-resistance Doppler | Acute atherosis of spiral arteries)',
'#7B241C', '#641E16', tc='white', fs=9.5, bold=True)
arr(ax, 14, 35.41, 14, 34.78, color='#7B241C', lw=2.2)
# ── Step C: Hypoxia + HIF
box(ax, 14, 34.45, 12, 0.75,
'PLACENTAL HYPOXIA -> HIF-1alpha + HIF-2alpha -> ER Stress | Mitochondrial Dysfunction',
'#6C3483', '#5B2C6F', tc='white', fs=9.5, bold=True)
# Four mediator branches
mediator_y = 33.15
mediators = [
(4.0, '① OXIDATIVE STRESS\nROS / Lipid peroxides\nSuperoxide radicals\nPeroxynitrite', '#E67E22', '#CA6F1E'),
(9.5, '② ANTI-ANGIOGENIC\nsFlt-1 (binds VEGF/PlGF)\nsEndoglin (blocks TGF-b)\nSevere in EOPE', '#2980B9', '#1A5276'),
(18.5, '③ PRO-INFLAMMATORY\nTNF-alpha | IL-6 | IL-8\nNeutrophil activation\nLeukocyte adhesion', '#E74C3C', '#CB4335'),
(24.0, '④ SYNCYTIOTROPHOBLAST\nDEBRIS + Microparticles\nCell-free fetal DNA\nComplement activation', '#8E44AD', '#7D3C98'),
]
for x, txt, fc, ec in mediators:
arr(ax, 14, 34.08, x, mediator_y + 0.55, color='#6C3483', lw=1.7)
box(ax, x, mediator_y, 3.8, 1.1, txt, fc, ec, tc='white', fs=8.0, r=0.2)
arr(ax, x, mediator_y - 0.55, 14, 25.58, color='#5D6D7E', lw=1.2)
# VEGF/PlGF bridge
box(ax, 14, 31.6, 7.5, 0.72,
'-> VEGF- | PlGF- | TGF-b- (sequestered by sFlt-1 & sEndoglin)',
'#1F618D', '#154360', tc='white', fs=8.8)
arr(ax, 9.5, 32.60, 14, 31.97, color='#2980B9', lw=1.5)
arr(ax, 14, 31.24, 14, 25.62, color='#1F618D', lw=1.5)
# Placental senescence note
ax.text(26.5, 30.5,
'LOPE variant:\nPlacental\nsenescence\n(not ischemia)\ndrives Stage 2',
ha='center', va='center', fontsize=7.8, color='#117A65',
style='italic', zorder=6,
bbox=dict(boxstyle='round,pad=0.4', fc='#D5F5E3', ec='#1E8449', lw=1.5))
ax.plot([25.5, 24.2], [30.0, 26.8], color='#1E8449', lw=1.5, ls=':', zorder=5)
# ── ASPIRIN callout
ax.text(1.5, 30.5,
'ASPIRIN\n(<=16 wks)\nReduces EOPE\nby ~60-80%\n(FMF protocol)',
ha='center', va='center', fontsize=7.8, color='#7B241C',
style='italic', zorder=6,
bbox=dict(boxstyle='round,pad=0.4', fc='#FDEDEC', ec='#C0392B', lw=1.5))
# ═══════════════════════════════════════════════════════════════════════════
# STAGE DIVIDER
# ═══════════════════════════════════════════════════════════════════════════
hline(ax, 24.75, ls='-', color='#2C3E50', lw=3.5)
box(ax, 14, 24.75, 10, 0.72,
'STAGE 1 -> STAGE 2 : PLACENTAL FACTORS RELEASED INTO MATERNAL CIRCULATION',
'#1A252F', '#0D1117', tc='#F7DC6F', fs=9.5, bold=True, r=0.15)
# ═══════════════════════════════════════════════════════════════════════════
# STAGE 2 BACKGROUND
# ═══════════════════════════════════════════════════════════════════════════
bg(ax, 0.3, 1.0, 27.7, 24.5, '#2980B9', '#1A5276',
'STAGE 2 — MATERNAL SYSTEMIC DISEASE (Clinical Pre-eclampsia)', '#1A5276')
# ── CENTRAL HUB
arr(ax, 14, 24.40, 14, 23.55, color='#1A5276', lw=2.5)
box(ax, 14, 23.15, 18.5, 0.95,
'GENERALISED MATERNAL ENDOTHELIAL DYSFUNCTION + VASOSPASM\n'
'(Endothelial injury -> TXA2+, Ang-II+, ET-1+ | PGI2-, NO- -> VICIOUS CYCLE)',
'#1A5276', '#0D3B66', tc='white', fs=10.5, bold=True)
# ── 6 Mechanism boxes
mechs_y = 21.5
mechs = [
(2.5, '① PROSTAGLANDIN\nIMBALANCE\nPGI2 - (vasodilator)\nTXA2 + (vasoconstr.)', '#1A5276', '#154360'),
(6.9, '② ANG-II\nSENSITIVITY +\nAngiotensinase -\n(alpha2-globulin lost)', '#117A65', '#0E6655'),
(11.3, '③ NITRIC OXIDE -\neNOS uncoupled by ROS\nNO -> O2- (peroxynitrite)\nVasodilation lost', '#7D3C98', '#6C3483'),
(15.7, '④ ENDOTHELIN-1 +\nPotent vasoconstrictor\n> Angiotensin-II\nSustained arteriolar spasm', '#C0392B', '#922B21'),
(20.1, '⑤ CYTOKINES\nTNF-alpha | IL-6 | IL-8\nEndothelial activation\nAdhesion molecules +', '#E67E22', '#CA6F1E'),
(24.5, '⑥ OXIDATIVE STRESS\nLipid peroxides +\nROS -> endothelial injury\nNeutrophil activation', '#27AE60', '#1E8449'),
]
for x, txt, fc, ec in mechs:
arr(ax, 14, 22.68, x, mechs_y + 0.55, color='#5D6D7E', lw=1.4)
box(ax, x, mechs_y, 3.8, 1.1, txt, fc, ec, tc='white', fs=7.9, r=0.2)
# Angiogenic + coag
box(ax, 7.8, 19.75, 7.5, 0.98,
'⑦ ANGIOGENIC IMBALANCE\nsFlt-1+++ sequesters free VEGF + PlGF\nsEndoglin+ inhibits TGF-b signaling\n-> Endothelial cell dysfunction + apoptosis',
'#2980B9', '#1F618D', tc='white', fs=8.2)
box(ax, 20.2, 19.75, 7.5, 0.98,
'⑧ COAGULATION ACTIVATION\nPlatelet activation + aggregation +\nFibrin deposition in microvasculature\nDIC risk in severe PE / HELLP',
'#8E44AD', '#7D3C98', tc='white', fs=8.2)
arr(ax, 14, 22.68, 7.8, 20.24, color='#5D6D7E', lw=1.4)
arr(ax, 14, 22.68, 20.2, 20.24, color='#5D6D7E', lw=1.4)
# ─── Vicious cycle annotation
vx, vy = 14, 18.78
ax.add_patch(FancyBboxPatch((8.2, vy - 0.42), 11.6, 0.84,
boxstyle='round,pad=0.05,rounding_size=0.2',
fc='#641E16', ec='#922B21', lw=2, zorder=3, alpha=0.9))
ax.text(vx, vy,
'VICIOUS CYCLE: Endothelial dysfunction -> Oxidative stress -> More endothelial injury '
'| sFlt-1+ -> VEGF- -> Endothelial apoptosis -> More sFlt-1+',
ha='center', va='center', fontsize=8.2, color='#FADBD8',
fontweight='bold', zorder=4)
arr(ax, 7.8, 19.27, 9.5, 19.2, color='#922B21', lw=1.5)
arr(ax, 20.2, 19.27, 18.5, 19.2, color='#922B21', lw=1.5)
# ═══════════════════════════════════════════════════════════════════════════
# ORGAN PATHOLOGY
# ═══════════════════════════════════════════════════════════════════════════
hline(ax, 18.08, color='#2C3E50', lw=2, ls='--')
ax.text(14, 17.98, 'ORGAN-SPECIFIC PATHOLOGY',
ha='center', va='top', fontsize=11, fontweight='bold', color='#1A252F', zorder=6)
organs = [
(2.3, 16.65, 4.0, 1.9,
'BLOOD VESSELS\n──────────\nIntense vasospasm\nFibrinoid necrosis\nVasa vasorum injury\n-> HTN (>=140/90)',
'#C0392B', '#922B21'),
(6.9, 16.65, 4.0, 1.9,
'KIDNEY\n──────────\nGlomerular endotheliosis\nAfferent arteriole spasm\nGFR -25%\n-> Proteinuria / AKI',
'#1A5276', '#154360'),
(11.5, 16.65, 4.0, 1.9,
'BRAIN\n──────────\nCerebral vasospasm\nPRES / Cerebral oedema\n-> Eclampsia\n-> ICH / Blindness',
'#7D3C98', '#6C3483'),
(16.1, 16.65, 4.0, 1.9,
'LIVER\n──────────\nPeriportal haem. necrosis\nSubcapsular haematoma\n-> RUQ/epigastric pain\n-> AST/ALT+ (HELLP)',
'#E67E22', '#CA6F1E'),
(20.7, 16.65, 4.0, 1.9,
'BLOOD\n──────────\nMicroangiopathic\nhaemolytic anaemia\nThrombocytopenia\nDIC risk',
'#E74C3C', '#CB4335'),
(25.3, 16.65, 3.8, 1.9,
'PLACENTA\n──────────\nAcute atherosis\nInfarcts (red/white)\nSyncytial degeneration\n-> FGR | Abruption',
'#27AE60', '#1E8449'),
]
for x, y, w, h, txt, fc, ec in organs:
arr(ax, x, 17.72, x, y + h/2, color='#7F8C8D', lw=1.4)
box(ax, x, y, w, h, txt, fc, ec, tc='white', fs=7.8, r=0.22)
# ═══════════════════════════════════════════════════════════════════════════
# THREE CARDINAL MANIFESTATIONS
# ═══════════════════════════════════════════════════════════════════════════
hline(ax, 14.5, color='#2C3E50', lw=2, ls='--')
ax.text(14, 14.4, 'THREE CARDINAL CLINICAL MANIFESTATIONS',
ha='center', va='top', fontsize=11, fontweight='bold', color='#1A252F', zorder=6)
# HTN
box(ax, 4.5, 13.4, 7.8, 0.82,
'HYPERTENSION (>=140/90 mmHg x2, >=4h apart)',
'#C0392B', '#922B21', tc='white', fs=9.5, bold=True)
arr(ax, 4.5, 13.0, 4.5, 12.45, color='#C0392B', lw=1.8)
box(ax, 4.5, 12.1, 7.8, 0.78,
'TXA2+ | Ang-II+ | ET-1+ vs PGI2- | NO-\n'
'Angiotensinase - (alpha2-globulin lost via proteinuria)',
'#FDEDEC', '#C0392B', tc='#7B241C', fs=8.2)
# Proteinuria
box(ax, 14.0, 13.4, 7.5, 0.82,
'PROTEINURIA (>=300 mg/24h)',
'#1A5276', '#154360', tc='white', fs=9.5, bold=True)
arr(ax, 14.0, 13.0, 14.0, 12.45, color='#1A5276', lw=1.8)
box(ax, 14.0, 12.1, 7.5, 0.78,
'Afferent arteriole spasm -> Glomerular endotheliosis\n'
'-> Capillary permeability + | Tubular reabsorption -',
'#D6EAF8', '#1A5276', tc='#1A5276', fs=8.2)
# Oedema
box(ax, 23.5, 13.4, 7.5, 0.82,
'GENERALISED OEDEMA',
'#117A65', '#0E6655', tc='white', fs=9.5, bold=True)
arr(ax, 23.5, 13.0, 23.5, 12.45, color='#117A65', lw=1.8)
box(ax, 23.5, 12.1, 7.5, 0.78,
'Endothelial injury -> Capillary permeability+\n'
'+ Plasma oncotic pressure- (albuminuria)',
'#D5F5E3', '#117A65', tc='#117A65', fs=8.2)
# HELLP
arr(ax, 14, 11.72, 14, 11.10, color='#922B21', lw=2.0)
box(ax, 14, 10.75, 21, 0.9,
'HELLP SYNDROME (10-15% of severe PE) | '
'H = Haemolysis | EL = Elevated Liver enzymes (AST/ALT >70 IU/L) | '
'LP = Low Platelets (<100,000/mm3)',
'#7B241C', '#641E16', tc='white', fs=9.0, bold=True)
# ═══════════════════════════════════════════════════════════════════════════
# FETAL CONSEQUENCES
# ═══════════════════════════════════════════════════════════════════════════
hline(ax, 9.75, color='#5D6D7E', lw=1.5, ls=':')
ax.text(14, 9.68, 'FETAL CONSEQUENCES',
ha='center', va='top', fontsize=9.5, fontweight='bold', color='#1A252F', zorder=6)
fetal = [
(3.2, 8.5, 4.8, 1.5,
'FETAL JEOPARDY\n─────\nFGR / IUGR / SGA\nAbnormal Dopplers\nAbsent/reversed EDF\nStillbirth risk',
'#117A65', '#0E6655'),
(9.5, 8.5, 4.8, 1.5,
'PREMATURITY\n─────\nIatrogenic preterm delivery\nRDS | IVH | NEC | BPD\nProlonged NICU stay',
'#7D3C98', '#6C3483'),
(15.8, 8.5, 4.8, 1.5,
'PERINATAL ASPHYXIA\n─────\nPlacental infarcts\nAbruptio placentae\nHypoxic-ischaemic injury',
'#C0392B', '#922B21'),
(22.1, 8.5, 4.8, 1.5,
'LONG-TERM (DOHaD)\n─────\nBarker effect\nCV disease in adult life\nMetabolic programming',
'#E67E22', '#CA6F1E'),
]
for x, y, w, h, txt, fc, ec in fetal:
arr(ax, x, 9.55, x, y + h/2, color='#7F8C8D', lw=1.3)
box(ax, x, y, w, h, txt, fc, ec, tc='white', fs=7.6, r=0.2)
# ═══════════════════════════════════════════════════════════════════════════
# LONG-TERM MATERNAL
# ═══════════════════════════════════════════════════════════════════════════
hline(ax, 6.9, color='#5D6D7E', lw=1.5, ls=':')
ax.text(14, 6.82, 'LONG-TERM MATERNAL SEQUELAE',
ha='center', va='top', fontsize=9.5, fontweight='bold', color='#1A252F', zorder=6)
lt_maternal = [
(3.0, 5.65, 4.2, 1.3,
'CHRONIC HTN\n~50% post-EOPE\n~25% post-LOPE\n(within 2-7 yrs)', '#2C3E50', '#1A252F'),
(8.2, 5.65, 4.2, 1.3,
'CVD RISK\nCAD | Stroke | HF\nx8 risk (EOPE)\nx2 risk (LOPE)', '#C0392B', '#922B21'),
(13.4, 5.65, 4.2, 1.3,
'RENAL DISEASE\nGFR decline\nProteinuria\nESRD risk +', '#1A5276', '#154360'),
(18.6, 5.65, 4.2, 1.3,
'METABOLIC SYNDROME\nT2DM | Dyslipidaemia\nInsulin resistance\nObesity', '#117A65', '#0E6655'),
(23.8, 5.65, 4.2, 1.3,
'RECURRENCE\nEOPE: 25-65%\nLOPE: 10-15%\nin next pregnancy', '#8E44AD', '#7D3C98'),
]
for x, y, w, h, txt, fc, ec in lt_maternal:
box(ax, x, y, w, h, txt, fc, ec, tc='white', fs=7.8, r=0.2)
# ═══════════════════════════════════════════════════════════════════════════
# LEGEND
# ═══════════════════════════════════════════════════════════════════════════
hline(ax, 3.9, ls='-', color='#2C3E50', lw=2)
ax.text(0.6, 3.80,
'ABBREVIATIONS: + = increased | - = decreased | HTN = hypertension | EOPE = early-onset PE (<34 wks) | '
'LOPE = late-onset PE (>=34 wks) | PGI2 = prostacyclin\n'
'TXA2 = thromboxane A2 | ET-1 = endothelin-1 | AT1-AA = AT1 receptor autoantibody | '
'HIF = hypoxia-inducible factor | sFlt-1 = soluble fms-like tyrosine kinase-1 | '
'ROS = reactive oxygen species\n'
'FGR = fetal growth restriction | PRES = posterior reversible encephalopathy syndrome | '
'DOHaD = Developmental Origins of Health & Disease | EDF = end-diastolic flow\n'
'Sources: DC Dutta Obstetrics Ch.18 | Creasy & Resnik MFM 8e Ch.72 | Ives et al. JACC 2020 | '
'Sugulle et al. AJRI 2024 | PMC12652060 (Late vs Early PE, IJMS 2025)',
ha='left', va='top', fontsize=7.5, color='#5D6D7E', zorder=6)
# ── Stage labels in margin ─────────────────────────────────────────────────
for y_c, lbl, col in [(33.5, 'STAGE 1\n(Pre-clinical)\nWeeks 6-20', '#0E6655'),
(14.0, 'STAGE 2\n(Clinical\nDisease)', '#1A5276')]:
ax.text(0.12, y_c, lbl, ha='center', va='center', fontsize=9,
fontweight='bold', color=col, rotation=90, zorder=6)
# ═══════════════════════════════════════════════════════════════════════════
# SAVE
# ═══════════════════════════════════════════════════════════════════════════
plt.savefig('/tmp/workspace/preeclampsia/PE_pathophysiology_flowchart.png',
dpi=185, bbox_inches='tight', facecolor='#F0F4F8')
print("Saved OK")
cd /tmp/workspace/preeclampsia && python flowchart2.py 2>&1
ls -lh /tmp/workspace/preeclampsia/PE_pathophysiology_flowchart.png
PE pathophysiology flowchart
Image · PNG
| Level | Content |
|---|---|
| Top | 7 predisposing risk factor boxes (genetic, immunological, nulliparity, chronic disease, multiple gestation, APS, race/age) |
| Step A | Defective endovascular trophoblast invasion — fails at decidua-myometrial junction |
| Side-by-side | Normal spiral artery transformation (green) vs PE retention of musculo-elastic media (red) |
| Step B | Uteroplacental ischemia + hypoperfusion (high-resistance Doppler, acute atherosis) |
| Step C | Placental hypoxia → HIF-1α/HIF-2α → ER stress + mitochondrial dysfunction |
| 4 Mediator branches | ① Oxidative stress/ROS, ② Anti-angiogenic sFlt-1/sEndoglin, ③ Pro-inflammatory cytokines, ④ Syncytiotrophoblast debris/microparticles |
| Bridge box | VEGF↓ / PlGF↓ / TGF-β↓ — sequestered by sFlt-1 |
| Callouts | LOPE variant (placental senescence pathway) + Aspirin prophylaxis note |
Placental factors enter maternal circulation
| Level | Content |
|---|---|
| Central hub | Generalised endothelial dysfunction + vasospasm (vicious cycle box) |
| 8 mechanism boxes | ①PGI₂/TXA₂ imbalance ②Ang-II sensitivity ③NO deficiency ④Endothelin-1 ⑤Cytokines ⑥Oxidative stress ⑦Angiogenic imbalance ⑧Coagulation activation |
| Organ pathology | 6 organs: Blood vessels, Kidney (glomerular endotheliosis), Brain (PRES/eclampsia), Liver (periportal necrosis), Blood (HELLP), Placenta (FGR/abruption) |
| 3 Cardinal features | HTN chain, Proteinuria chain (glomerular endotheliosis pathway), Generalised oedema chain — each with mechanism sub-box |
| HELLP box | H + EL + LP with diagnostic thresholds |
| Fetal consequences | FGR/IUGR, Prematurity/NICU, Perinatal asphyxia, DOHaD long-term programming |
| Long-term maternal | Chronic HTN, CVD risk (x8 EOPE / x2 LOPE), Renal disease, Metabolic syndrome, Recurrence rates |
| Footer | Full abbreviations legend + 5 cited sources |
Search for latest clinical guidelines (ACOG/RCOG/FIGO 2024-2025) on pre-eclampsia management
preeclampsia management guidelines ACOG RCOG FIGO
ACOG practice bulletin preeclampsia 2024 2025 management guidelines updated
RCOG preeclampsia guideline 2024 2025 Green-top management
preeclampsia hypertension pregnancy guideline 2024 2025
ISSHP FIGO preeclampsia guideline 2024 2025 classification diagnosis management aspirin sFlt-1 PlGF delivery timing
https://www.preeclampsia.org/current-guidelines
PMID: 40719424
PMID: 40512208
https://pmc.ncbi.nlm.nih.gov/articles/PMC12985448
ACOG biomarker prediction preeclampsia severe features 2024 sFlt-1 PlGF ratio guidelines NICE NG133 update
preeclampsia aspirin prevention calcium magnesium antihypertensive treatment 2024
| Body | Document | Year | Status |
|---|---|---|---|
| ACOG (USA) | Practice Bulletin No. 222: Gestational HTN & Preeclampsia | 2020 (base) | Still current; updated by 2024 Clinical Practice Update below |
| ACOG | Clinical Practice Update: Biomarker Prediction of PE with Severe Features | April 2024 | NEW - updates PB 222 on sFlt-1/PlGF use |
| NICE (UK) | NG133: Hypertension in Pregnancy | 2019 (updated) | Active; DG49 (PlGF testing) endorsed 2022 |
| RCOG (UK) | Green-top Guideline No. 31 (SGA/FGR) | 2024 | Updated - includes aspirin 150 mg at night |
| ISSHP | Classification, Diagnosis & Management of HDP | 2021 | Current international reference standard |
| Germany S2k | Hypertensive Disorders in Pregnancy (HES) | July 2024 | NEW - updated BP targets, CVD follow-up |
| WHO | Recommendations on Antenatal Care | 2016/2021 | Calcium supplementation endorsed |
| AHA/ACC | Hypertension Guidelines (Pregnancy section) | August 2025 | NEW - emphasises PE history as CVD risk factor |
| Criterion | ACOG | ISSHP 2021 | NICE NG133 |
|---|---|---|---|
| Proteinuria threshold | ≥ 300 mg/24h or P:Cr ≥ 0.3 mg/mg or dipstick ≥ 2+ (persistent) | ≥ 300 mg/24h or P:Cr ≥ 30 mg/mmol | ≥ 300 mg/24h or P:Cr ≥ 30 mg/mmol |
| Without proteinuria: organ dysfunction | ✓ Thrombocytopenia, renal, liver, pulmonary, neurological | ✓ Same + FGR | ✓ |
| Angiogenic imbalance (sFlt-1/PlGF) as criterion | Not in definition | ✓ YES (PlGF <5th %ile or sFlt-1/PlGF >95th %ile) | Not in definition; PlGF used for risk assessment (DG49) |
| FGR as criterion | Not included | ✓ YES (uteroplacental dysfunction component) | Not included |
| Superimposed PE | HTN + new proteinuria/organ dysfunction | Same | Same |
Key 2024-2025 shift: ISSHP's inclusion of angiogenic imbalance and FGR in the definition is gaining traction internationally. The scoping review by Chamillard et al. (PMID: 40719424, 2025) identified 15 guidelines from 11 organisations - all agree on HTN + proteinuria; only 8 include organ dysfunction; only 4 include placental dysfunction.
| Recommendation | Detail |
|---|---|
| Indication | Women hospitalised for hypertensive disorders - to aid risk assessment for progression to PE with severe features |
| Test used | KRYPTOR immunoassay (Brahms/ThermoFisher) - FDA-cleared |
| Primary value | Negative predictive value: sFlt-1/PlGF ≤38 rules out PE with severe features within next 7 days (NPV >99%) |
| Not a standalone test | Cannot diagnose or exclude PE with severe features alone - used alongside clinical assessment + standard labs |
| Window | 20-36+6 weeks gestation |
| Cannot replace clinical criteria | Standard BP, symptoms, labs remain primary diagnostic tools |
| Ratio Value | Interpretation | Clinical Action |
|---|---|---|
| < 38 | Low risk - PE unlikely within 7 days | NPV ~99.3%; can consider outpatient management |
| 38 - 85 (20-34 wks) | Intermediate - increased vigilance | More frequent monitoring, consider admission |
| > 85 (<34 wks) or > 110 (≥34 wks) | High risk - PE likely | Strongly suggests PE; enhanced inpatient surveillance |
| > 655 | Severe angiogenic imbalance | Immediate delivery consideration |
| Parameter | ACOG PB 222 | NICE NG133 | RCOG 2024 | ISSHP 2021 |
|---|---|---|---|---|
| Dose | 81 mg/day (USA standard) | 150 mg/night | 150 mg/night | 100-150 mg/night |
| Start timing | ≤16 weeks (ideally 12-16 wks) | ≤16 weeks | ≤16 weeks | 12-16 weeks |
| Stop timing | 36 weeks or delivery | 36 weeks | 36+0 weeks | 36 weeks |
| Target reduction | ~60-80% EOPE if started ≤16 wks (ASPRE trial) | Same | Same | Same |
| High-risk criteria | ≥1 high-risk factor | ≥1 high-risk or ≥2 moderate-risk factors | FMF combined screen >1:100 or clinical risk factors | Same approach |
RCOG 2024 update (Green-top GTG 31, BJOG 2024;131:e31-e80): Specifically recommends 150 mg aspirin at night from 12+0 to 36+0 weeks for women at risk of PE and/or placental dysfunction. The night-time dosing maximises the antiplatelet effect on circadian TXA₂ production.
| Guideline | Start antihypertensives at: | Target BP |
|---|---|---|
| ACOG PB 222 | SBP ≥ 160 or DBP ≥ 110 (severe range) - treat within 30-60 min | <160/110 (acute); <140-150/90-100 (ongoing) |
| NICE NG133 | DBP ≥ 90 (non-severe) - oral agents; ≥ 150/100 - treat promptly | 135/85 mmHg |
| ISSHP 2021 | ≥ 140/90 (treat all diagnosed PE) | 110-140 / 80-90 |
| German S2k 2024 | ≥ 140/90 - recommended; ≥ 160/110 - urgent | 130-140 / 80-90 |
Important 2024-2025 change (German S2k + AHA 2025): Treating non-severe hypertension (140-159/90-109) in PE is now recommended by more guidelines, aligning with the CHIPS trial evidence. ACOG has been more conservative (only mandating treatment for severe-range), but this is an active area of evolution.
| Drug | ACOG | NICE | ISSHP | Notes |
|---|---|---|---|---|
| Labetalol (oral/IV) | ✓ First-line acute | ✓ First-line | ✓ | IV 20-80 mg bolus; avoid in asthma |
| Nifedipine (modified release) | ✓ First-line oral | ✓ First-line | ✓ | 10-20 mg oral; caution with MgSO₄ |
| Hydralazine (IV) | ✓ Alternative acute | Second-line | ✓ | 5-10 mg IV bolus; reflex tachycardia |
| Methyldopa (oral) | ✓ | ✓ (non-severe) | ✓ | Safe, established; slower onset |
| Amlodipine | Second-line | Alternative | ✓ | Good for chronic/postpartum HTN |
| Metoprolol | ✓ | Alternative | ✓ | Useful chronic control |
| ACE inhibitors / ARBs | ✗ CONTRAINDICATED | ✗ | ✗ | Fetotoxic |
| Indication | Regimen |
|---|---|
| Eclampsia treatment (acute seizure) | 4 g IV loading dose over 5-10 min, then 1-2 g/hour maintenance |
| Eclampsia prevention - PE with severe features | Same regimen; continue 24h postpartum |
| Recurrent seizure | Additional 2-4 g IV bolus |
| Duration | Until 24-48 hours post delivery |
Magpie Trial remains the evidence base (eclampsia prevention, 58% risk reduction). ACOG recommends MgSO₄ only for PE with severe features; NICE uses a lower threshold - offers it for women with any PE who are being managed in hospital.
| Clinical Scenario | Recommended Delivery |
|---|---|
| PE without severe features, term | At 37+0 weeks (based on HYPITAT trial) |
| PE without severe features, <37 wks | Expectant management with close surveillance |
| PE with severe features, ≥34 weeks | Deliver at 34 weeks (or immediately if unstable) |
| PE with severe features, 24-34 weeks | Expectant management in tertiary centre, maternal stabilisation first |
| PE with severe features, <24 weeks | Delivery recommended (periviable counselling required) |
| HELLP syndrome | Delivery at ≥34 weeks; individualise 24-34 weeks |
| Eclampsia | Deliver after maternal stabilisation; not necessarily immediate cesarean |
| Aspect | Recommendation |
|---|---|
| Mode of delivery | Vaginal delivery preferred if maternal/fetal condition allows; CS not mandated |
| Regional anaesthesia | Epidural/spinal preferred - reduces hypertensive response; low-dose aspirin NOT a contraindication |
| Fluid management | Restrict to 80 mL/hour IV; avoid aggressive fluid loading (risk of pulmonary oedema) |
| BP monitoring | Every 15-30 min in active labour |
| 3rd stage | Oxytocin preferred; avoid ergometrine (raises BP); syntocinon by slow IV infusion |
| Active labour | Continue MgSO₄ if started; ensure antihypertensive access |
| Parameter | Inpatient | Outpatient |
|---|---|---|
| BP | Every 15-30 min (acute) → every 4h (stable) | At least twice weekly |
| Bloods (FBC, LFT, U&E, urate) | Daily to 3× weekly | 1-2× weekly |
| Fetal growth USS | Every 2-4 weeks | Every 2-4 weeks |
| Umbilical artery Doppler | Every 2 weeks if FGR | Every 2 weeks |
| CTG | As clinically indicated | As clinically indicated |
| sFlt-1/PlGF | At assessment (<37 wks) | At review if suspected |
| Urinalysis/proteinuria | At each visit | At each visit |
┌─────────────────────────────────────────────────────────────────────┐
│ PE MANAGEMENT QUICK REFERENCE (2024-2025) │
├─────────────────────┬───────────────────────────────────────────────┤
│ PREVENTION │ Aspirin 100-150 mg/night ≤16 wks to 36 wks │
│ │ Calcium 1.5-2 g/day (low-intake populations) │
│ │ FMF combined screen 11-13+6 wks │
├─────────────────────┼───────────────────────────────────────────────┤
│ DIAGNOSIS BIOMARKER │ sFlt-1/PlGF ≤38 = rules out PE (7-day NPV) │
│ (ACOG 2024 update) │ >38 = increased risk; >85 = high risk EOPE │
├─────────────────────┼───────────────────────────────────────────────┤
│ ANTIHYPERTENSIVES │ Treat ≥160/110 within 30-60 min (ACOG) │
│ │ Treat ≥140/90 (NICE/ISSHP) │
│ │ 1st line: Labetalol IV / Nifedipine oral │
│ │ Hydralazine IV (alternative) │
├─────────────────────┼───────────────────────────────────────────────┤
│ MAGNESIUM SULFATE │ 4 g IV load → 1-2 g/hr infusion │
│ │ ALL PE with severe features + eclampsia │
│ │ Continue 24h post delivery │
├─────────────────────┼───────────────────────────────────────────────┤
│ DELIVERY TIMING │ PE without SF: 37+0 weeks │
│ │ PE with SF: ≥34 wks → deliver │
│ │ 24-34 wks with SF: expectant if stable │
├─────────────────────┼───────────────────────────────────────────────┤
│ STEROIDS │ Betamethasone 12 mg × 2 if <34 wks │
│ │ Consider late preterm (34-36+6 wks) │
├─────────────────────┼───────────────────────────────────────────────┤
│ POSTPARTUM │ Monitor 24-72h (can worsen post delivery) │
│ │ CVD risk counselling before discharge │
│ │ Annual BP/metabolic review (AHA 2025) │
└─────────────────────┴───────────────────────────────────────────────┘
Create a management decision tree (is delivery indicated? Timing algorithm by gestation)
ls /tmp/workspace/preeclampsia/
~/preeclampsia/decision_tree.py
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
from matplotlib.patches import FancyBboxPatch
import numpy as np
# ─────────────────────────────────────────────────────────────────
# CANVAS
# ─────────────────────────────────────────────────────────────────
fig = plt.figure(figsize=(32, 52), facecolor='#F7F9FC')
ax = fig.add_axes([0, 0, 1, 1])
ax.set_xlim(0, 32)
ax.set_ylim(0, 52)
ax.axis('off')
# ─────────────────────────────────────────────────────────────────
# HELPER FUNCTIONS
# ─────────────────────────────────────────────────────────────────
def box(cx, cy, w, h, lines, fc, ec, tc='white', fs=9.0,
bold=False, r=0.3, lw=2.0, alpha=1.0):
patch = FancyBboxPatch((cx-w/2, cy-h/2), w, h,
boxstyle=f'round,pad=0.05,rounding_size={r}',
fc=fc, ec=ec, lw=lw, alpha=alpha, zorder=3)
ax.add_patch(patch)
text = '\n'.join(lines) if isinstance(lines, list) else lines
ax.text(cx, cy, text, ha='center', va='center',
fontsize=fs, color=tc,
fontweight='bold' if bold else 'normal',
multialignment='center', zorder=4)
def arr(x1, y1, x2, y2, col='#2C3E50', lw=2.0, style='->', label='', lfs=8):
ax.annotate('', xy=(x2, y2), xytext=(x1, y1),
arrowprops=dict(
arrowstyle=f'{style}, head_length=0.35, head_width=0.22',
color=col, lw=lw), zorder=5)
if label:
mx, my = (x1+x2)/2, (y1+y2)/2
ax.text(mx+0.18, my, label, ha='left', va='center',
fontsize=lfs, color=col, fontweight='bold',
style='italic', zorder=6)
def line(x1, y1, x2, y2, col='#95A5A6', lw=1.5, ls='--'):
ax.plot([x1, x2], [y1, y2], color=col, lw=lw, ls=ls, zorder=2)
def diamond(cx, cy, w, h, lines, fc, ec, tc='white', fs=9.0, bold=True):
"""Draw a rotated square (diamond) decision node."""
hw, hh = w/2, h/2
xs = [cx, cx+hw, cx, cx-hw, cx]
ys = [cy+hh, cy, cy-hh, cy, cy+hh]
ax.fill(xs, ys, fc=fc, ec=ec, lw=2.2, zorder=3)
ax.plot(xs, ys, color=ec, lw=2.2, zorder=4)
text = '\n'.join(lines) if isinstance(lines, list) else lines
ax.text(cx, cy, text, ha='center', va='center',
fontsize=fs, color=tc,
fontweight='bold' if bold else 'normal',
multialignment='center', zorder=5)
def section_label(x, y, text, col):
ax.text(x, y, text, ha='left', va='center',
fontsize=10.5, color=col, fontweight='bold',
style='italic', zorder=6,
bbox=dict(boxstyle='round,pad=0.3', fc='white', ec=col, lw=1.5))
# ─────────────────────────────────────────────────────────────────
# COLOURS
# ─────────────────────────────────────────────────────────────────
C_TITLE = '#1A252F'
C_START = '#1ABC9C'
C_DIAMOND = '#2980B9'
C_DELIVER = '#C0392B'
C_EXPECT = '#27AE60'
C_SEVERE = '#8E44AD'
C_WARN = '#E67E22'
C_DRUGS = '#2C3E50'
C_INFO = '#117A65'
C_MAGENTA = '#922B21'
# ─────────────────────────────────────────────────────────────────
# TITLE BLOCK
# ─────────────────────────────────────────────────────────────────
box(16, 51.2, 28, 0.9,
['PRE-ECLAMPSIA MANAGEMENT DECISION TREE',
'Delivery Timing Algorithm by Gestational Age | ACOG / ISSHP / NICE 2024-2025'],
'#1A252F', '#0D1117', fs=14, bold=True, r=0.25)
# ─────────────────────────────────────────────────────────────────
# STEP 1: ENTRY — NEW HTN ≥20 WEEKS
# ─────────────────────────────────────────────────────────────────
box(16, 49.85, 18, 0.8,
['ENTRY: NEW HYPERTENSION >= 140/90 mmHg on >= 2 occasions (>= 4h apart), from >= 20 weeks gestation'],
C_START, '#0E6655', fs=10, bold=True)
arr(16, 49.45, 16, 48.85, col='#0E6655', lw=2.2)
# ─────────────────────────────────────────────────────────────────
# STEP 2: IMMEDIATE DANGER DIAMOND
# ─────────────────────────────────────────────────────────────────
diamond(16, 48.3, 7.0, 1.1,
['IMMEDIATE DANGER SIGNS?',
'BP >=160/110 | Eclampsia | Pulmonary oedema',
'Placental abruption | Non-reassuring FHR'],
C_WARN, '#CA6F1E', fs=8.8)
# YES → immediate delivery
arr(19.5, 48.3, 22.5, 48.3, col=C_DELIVER, lw=2.5, label='YES')
box(26.0, 48.3, 7.0, 1.4,
['IMMEDIATE MANAGEMENT',
'1. IV/IM antihypertensive NOW',
' (Labetalol 20-80mg IV OR Nifedipine 10-20mg oral',
' OR Hydralazine 5-10mg IV)',
'2. MgSO4 4g IV load -> 1-2g/hr',
'3. Stabilise -> DELIVER'],
C_DELIVER, '#922B21', fs=7.8, r=0.2)
# NO → continue
arr(16, 47.75, 16, 47.15, col='#0E6655', lw=2.2, label='NO')
# ─────────────────────────────────────────────────────────────────
# STEP 3: CONFIRM DIAGNOSIS DIAMOND
# ─────────────────────────────────────────────────────────────────
diamond(16, 46.6, 7.5, 1.05,
['CONFIRM DIAGNOSIS',
'Proteinuria >= 300 mg/24h OR P:Cr >= 30 mg/mmol',
'OR organ dysfunction (renal / liver / CNS / haem)'],
C_DIAMOND, '#1F618D', fs=8.5)
# NO → gestational HTN pathway (right)
arr(19.75, 46.6, 22.5, 46.6, col='#7F8C8D', lw=1.8, label='NO - Gestational HTN only')
box(26.5, 46.6, 6.5, 1.35,
['GESTATIONAL HYPERTENSION',
'- Antihypertensives if >= 140/90',
'- Weekly BP + labs',
'- USS fetal growth q2-4wks',
'- Deliver at >= 37 weeks'],
'#5D6D7E', '#2C3E50', fs=7.8, r=0.2)
# YES → severe features diamond
arr(16, 46.08, 16, 45.48, col=C_DIAMOND, lw=2.2, label='YES = PRE-ECLAMPSIA')
# ─────────────────────────────────────────────────────────────────
# STEP 4: SEVERE FEATURES DIAMOND
# ─────────────────────────────────────────────────────────────────
box(16, 45.0, 21, 0.72,
['ASSESS FOR SEVERE FEATURES (ACOG criteria)'],
'#4A235A', '#6C3483', tc='white', fs=9.5, bold=True, r=0.15)
arr(16, 44.64, 16, 44.10, col='#6C3483', lw=2.0)
# Severe features list box
box(16, 43.4, 21, 1.25,
['SEVERE FEATURES present if ANY of:',
'SBP >= 160 OR DBP >= 110 (x2, >= 4h apart, or once if treated) | Thrombocytopenia < 100,000/mm3',
'Creatinine > 1.1 mg/dL or 2x baseline | Impaired LFT (AST/ALT > 2x ULN) | Pulmonary oedema',
'New headache unresponsive to paracetamol | Visual disturbances | RUQ/epigastric pain'],
C_SEVERE, '#6C3483', tc='white', fs=8.0, r=0.2)
arr(16, 42.78, 16, 42.18, col='#6C3483', lw=2.0)
diamond(16, 41.65, 6.0, 1.0,
['SEVERE FEATURES', 'PRESENT?'],
C_SEVERE, '#6C3483', fs=10, bold=True)
# ─────────────────────────────────────────────────────────────────
# BRANCH A: SEVERE FEATURES = YES
# ─────────────────────────────────────────────────────────────────
arr(13.0, 41.65, 7.5, 41.65, col=C_SEVERE, lw=2.5, label='')
ax.text(10.7, 41.9, 'YES', ha='center', va='center',
fontsize=10, color=C_SEVERE, fontweight='bold', zorder=6)
arr(7.5, 41.65, 7.5, 41.1, col=C_SEVERE, lw=2.0)
# Severe - initial steps
box(7.5, 40.5, 12.5, 1.25,
['IMMEDIATE STEPS - PE WITH SEVERE FEATURES',
'Admit to L&D / HDU | IV access x2 | Foley catheter | O2 if SpO2 < 95%',
'MgSO4 4g IV load over 15-20 min -> 1-2g/hr maintenance | Antihypertensive for BP >= 160/110',
'Bloods: FBC, LFT, U&E, coag, LDH, uric acid | CTG immediately | USS fetal biometry + Dopplers'],
C_SEVERE, '#6C3483', tc='white', fs=7.8, r=0.2)
arr(7.5, 39.88, 7.5, 39.28, col=C_SEVERE, lw=2.0)
# Now branch by gestational age (severe features)
diamond(7.5, 38.75, 5.5, 0.95,
['GESTATIONAL AGE?'],
'#4A235A', '#6C3483', fs=9.5, bold=True)
# ── < 24 weeks ─────────────────────────────────────────────
arr(4.75, 38.75, 2.2, 38.75, col=C_DELIVER, lw=1.8)
ax.text(3.3, 39.0, '< 24 wks', ha='center', va='center', fontsize=8, color=C_DELIVER, fontweight='bold', zorder=6)
box(2.2, 37.5, 3.8, 2.3,
['< 24 WEEKS',
'PERIVIABLE',
'──────────',
'Counsel re:',
'fetal prognosis',
'maternal risk',
'Delivery generally',
'recommended',
'(maternal safety)',
'Neonatology',
'consultation'],
C_DELIVER, '#922B21', fs=7.5, r=0.2)
# ── 24-28 weeks ──────────────────────────────────────────
arr(7.5, 38.28, 7.5, 36.52, col='#7D3C98', lw=1.8)
ax.text(7.75, 37.6, '24-28 wks\nor\n28-34 wks', ha='left', va='center', fontsize=8,
color='#7D3C98', fontweight='bold', zorder=6)
box(7.5, 36.0, 10.5, 1.1,
['24-34 WEEKS WITH SEVERE FEATURES: EXPECTANT MANAGEMENT (if maternal-fetal condition allows)',
'Transfer to tertiary centre | Stabilise BP | Continue MgSO4 for 24-48h',
'Betamethasone 12mg IMx2 (24h apart) IMMEDIATELY for fetal lung maturity'],
'#7D3C98', '#6C3483', tc='white', fs=7.8, r=0.2)
arr(7.5, 35.45, 7.5, 34.85, col='#7D3C98', lw=1.8)
# Contraindications to expectant management
box(7.5, 34.2, 10.5, 1.3,
['CONTRAINDICATIONS TO EXPECTANT MANAGEMENT - DELIVER IMMEDIATELY if:',
'Refractory severe BP | Eclampsia / HELLP | AKI (Cr > 2x baseline)',
'Pulmonary oedema | Abruption | DIC | Non-reassuring FHR | Fetal death',
'Severe FGR with reversed EDF | Maternal refusal of expectant management'],
C_DELIVER, '#922B21', tc='white', fs=7.5, r=0.2)
arr(7.5, 33.55, 7.5, 32.98, col='#7D3C98', lw=1.8)
# If expectant: surveillance
box(7.5, 32.35, 10.5, 1.25,
['IF EXPECTANT MANAGEMENT CONTINUING (24-34 wks):',
'BP every 4-6h | FBC/LFT/U&E/LDH daily | CTG daily | Urine output hourly',
'USS fetal growth + Dopplers every 1-2 weeks | sFlt-1/PlGF at assessment',
'Repeat steroids (rescue course) if delivery anticipated and > 7d since first course'],
C_INFO, '#0E6655', tc='white', fs=7.5, r=0.2)
# ── 34 weeks (severe) ──────────────────────────────────────
arr(10.25, 38.75, 13.0, 35.2, col=C_DELIVER, lw=1.8)
ax.text(11.8, 37.1, '>= 34 wks', ha='left', va='center', fontsize=8,
color=C_DELIVER, fontweight='bold', zorder=6)
box(14.5, 35.2, 5.5, 1.0,
['>= 34 WEEKS + SEVERE FEATURES',
'DELIVER',
'after maternal stabilisation',
'(steroids if 34-36+6 wks, not to delay)'],
C_DELIVER, '#922B21', tc='white', fs=8.0, r=0.2, bold=False)
# ─────────────────────────────────────────────────────────────────
# BRANCH B: SEVERE FEATURES = NO (right side)
# ─────────────────────────────────────────────────────────────────
arr(19.0, 41.65, 24.5, 41.65, col=C_EXPECT, lw=2.5)
ax.text(21.7, 41.95, 'NO', ha='center', va='center',
fontsize=10, color=C_EXPECT, fontweight='bold', zorder=6)
box(24.5, 41.15, 7.0, 1.1,
['PE WITHOUT SEVERE FEATURES',
'Admit for initial assessment',
'BP control if >= 140/90 (NICE) or >= 160/110 (ACOG)',
'1st line: Labetalol / Nifedipine MR / Methyldopa'],
C_EXPECT, '#1E8449', tc='white', fs=7.8, r=0.2)
arr(24.5, 40.6, 24.5, 39.98, col=C_EXPECT, lw=2.0)
diamond(24.5, 39.45, 5.5, 0.95,
['GESTATIONAL AGE?'],
'#1E8449', '#117A65', fs=9.5, bold=True)
# ── < 37 weeks: expectant ──────────────────────────────────
arr(24.5, 38.98, 24.5, 38.35, col=C_EXPECT, lw=1.8)
ax.text(24.7, 38.65, '< 37 wks', ha='left', va='center', fontsize=8,
color=C_EXPECT, fontweight='bold', zorder=6)
box(24.5, 37.6, 7.0, 1.55,
['< 37 WEEKS - EXPECTANT MANAGEMENT',
'────────────────────────',
'Inpatient vs outpatient:',
'Outpatient if: stable BP, compliant, daily home BP log,',
'no proteinuria surge, normal FHR, fetal Dopplers normal',
'Inpatient if: any deterioration, early GA, social concerns'],
C_EXPECT, '#1E8449', tc='white', fs=7.5, r=0.2)
arr(24.5, 36.83, 24.5, 36.23, col=C_EXPECT, lw=1.8)
box(24.5, 35.6, 7.0, 1.25,
['SURVEILLANCE SCHEDULE (no severe features)',
'- BP monitoring: 2x per week (outpatient), daily (inpatient)',
'- Labs (FBC, LFT, U&E): twice weekly',
'- USS fetal growth + Doppler: every 2-4 weeks',
'- Kick count / CTG: as indicated',
'- sFlt-1/PlGF: at assessment <37 wks'],
C_INFO, '#0E6655', tc='white', fs=7.5, r=0.2)
arr(24.5, 34.98, 24.5, 34.38, col=C_EXPECT, lw=1.8)
diamond(24.5, 33.85, 5.8, 0.95,
['Develops SEVERE FEATURES?', 'OR deterioration?'],
C_WARN, '#CA6F1E', fs=8.5, bold=True)
arr(24.5, 33.38, 24.5, 32.8, col='#1E8449', lw=1.8, label='NO -> continue')
box(24.5, 32.2, 7.0, 1.2,
['CONTINUE EXPECTANT MANAGEMENT',
'-> Repeat diamond assessment at each visit',
'-> Escalate to severe pathway if any criteria met',
'-> TARGET: reach 37+0 weeks'],
C_EXPECT, '#1E8449', tc='white', fs=7.8, r=0.2)
# YES -> go back to severe path
arr(21.6, 33.85, 18.5, 33.85, col=C_WARN, lw=1.8)
ax.text(20.1, 34.1, 'YES', ha='center', va='center', fontsize=9,
color=C_WARN, fontweight='bold', zorder=6)
box(16.5, 33.85, 3.5, 0.75,
['RE-ASSESS AS', 'PE WITH', 'SEVERE FEATURES'],
C_SEVERE, '#6C3483', tc='white', fs=8.0, r=0.2)
# ── 37 weeks: DELIVER ──────────────────────────────────────
arr(27.25, 39.45, 30.0, 39.45, col=C_DELIVER, lw=2.0)
ax.text(28.3, 39.7, '>= 37 wks', ha='center', va='center',
fontsize=8, color=C_DELIVER, fontweight='bold', zorder=6)
box(30.5, 39.45, 3.0, 1.6,
['>= 37 WEEKS',
'──────',
'DELIVER',
'(HYPITAT trial)',
'IOL preferred',
'if cephalic +',
'favourable cervix'],
C_DELIVER, '#922B21', tc='white', fs=8.0, r=0.2, bold=False)
# ─────────────────────────────────────────────────────────────────
# ANTIHYPERTENSIVE QUICK GUIDE
# ─────────────────────────────────────────────────────────────────
line(0.5, 31.1, 31.5, 31.1, col='#2C3E50', lw=2.5, ls='-')
ax.text(16, 30.95, 'ANTIHYPERTENSIVE MANAGEMENT', ha='center', va='top',
fontsize=11, fontweight='bold', color='#1A252F', zorder=6)
# Acute severe
box(5.0, 29.7, 8.5, 2.15,
['ACUTE SEVERE HTN (>=160/110)',
'TREAT WITHIN 30-60 MINUTES',
'─────────────────────────',
'1st: Labetalol 20mg IV; if no response in 10 min',
' -> 40mg, then 80mg IV q10min (max 300mg)',
' OR Hydralazine 5-10mg IV q20min',
' OR Nifedipine 10mg oral (not sublingual)',
'Target: BP 140-150 / 90-100 mmHg',
'Caution: avoid overshoot (fetal distress)'],
C_DELIVER, '#7B241C', tc='white', fs=7.8, r=0.2)
# Maintenance
box(16.0, 29.7, 8.0, 2.15,
['ORAL MAINTENANCE ANTIHYPERTENSIVES',
'─────────────────────────',
'Labetalol 100-400mg BD/TDS (max 2400mg/day)',
'Nifedipine MR 20-60mg once daily',
'Methyldopa 250-500mg TDS (max 3g/day)',
'Amlodipine 5-10mg OD (postpartum preferred)',
'Avoid: ACE inhibitors / ARBs (fetotoxic)',
'Avoid: Atenolol (FGR risk)'],
C_DRUGS, '#1A252F', tc='white', fs=7.8, r=0.2)
# MgSO4 box
box(26.5, 29.7, 8.0, 2.15,
['MgSO4 PROTOCOL',
'─────────────────────────',
'Loading: 4g IV over 15-20 min',
'Maintenance: 1-2g/hr infusion',
'Duration: 24h post delivery',
'Recurrent seizure: 2-4g IV bolus',
'MONITOR: reflexes, RR, urine output',
'ANTIDOTE: Ca gluconate 1g IV (10mL 10%)'],
'#7D3C98', '#6C3483', tc='white', fs=7.8, r=0.2)
# ─────────────────────────────────────────────────────────────────
# DELIVERY PATHWAY DETAIL
# ─────────────────────────────────────────────────────────────────
line(0.5, 27.3, 31.5, 27.3, col='#2C3E50', lw=2.5, ls='-')
ax.text(16, 27.15, 'WHEN DELIVERY IS INDICATED — DECISION PATHWAY', ha='center', va='top',
fontsize=11, fontweight='bold', color='#1A252F', zorder=6)
box(16, 26.25, 28, 0.7,
['MATERNAL STABILISATION FIRST: Control BP -> MgSO4 loading -> IV access -> CTG -> Consent'],
'#1A252F', '#0D1117', tc='#F7DC6F', fs=9.0, bold=True, r=0.15)
arr(16, 25.9, 16, 25.35, col='#2C3E50', lw=2.0)
diamond(16, 24.85, 6.0, 0.95,
['CERVIX FAVOURABLE?', '(Bishop score >= 6)'],
C_DIAMOND, '#1F618D', fs=9.0, bold=True)
# YES - IOL
arr(13.0, 24.85, 9.5, 24.85, col='#1F618D', lw=1.8)
ax.text(11.2, 25.1, 'YES', ha='center', va='center',
fontsize=9, color='#1F618D', fontweight='bold', zorder=6)
box(7.0, 24.85, 7.0, 1.7,
['INDUCTION OF LABOUR',
'──────────────',
'Oxytocin infusion preferred',
'Prostaglandin ripening if needed',
'Continuous CTG throughout',
'Epidural strongly recommended',
' (lowers BP + excellent analgesia)',
'3rd stage: Oxytocin (NOT ergometrine)',
'Ergometrine -> raises BP'],
'#1F618D', '#154360', tc='white', fs=7.8, r=0.2)
# NO - consider CS
arr(19.0, 24.85, 23.5, 24.85, col=C_DELIVER, lw=1.8)
ax.text(21.3, 25.1, 'NO / Fetal distress', ha='center', va='center',
fontsize=8.5, color=C_DELIVER, fontweight='bold', zorder=6)
box(26.5, 24.85, 8.0, 1.7,
['CONSIDER CAESAREAN SECTION',
'──────────────',
'Unfavourable cervix + urgent delivery',
'Abnormal fetal Dopplers (AREDV)',
'Non-reassuring CTG',
'Maternal deterioration',
'Regional anaesthesia PREFERRED',
'Spinal/epidural -> avoids pressor response',
'Aspirin NOT contraindication to neuraxial block'],
C_DELIVER, '#7B241C', tc='white', fs=7.8, r=0.2)
# ─────────────────────────────────────────────────────────────────
# INTRAPARTUM + POSTPARTUM
# ─────────────────────────────────────────────────────────────────
line(0.5, 22.6, 31.5, 22.6, col='#2C3E50', lw=2.5, ls='-')
ax.text(16, 22.48, 'INTRAPARTUM & POSTPARTUM MANAGEMENT', ha='center', va='top',
fontsize=11, fontweight='bold', color='#1A252F', zorder=6)
box(5.5, 21.3, 9.5, 2.1,
['INTRAPARTUM',
'──────────────',
'BP every 15-30 min in active labour',
'Fluid restriction: 80 mL/hr IV total',
'Continue MgSO4 throughout labour',
'Continuous CTG',
'Avoid fluid overload (pulm. oedema risk)',
'Keep strict fluid balance chart',
'Target urine output >= 0.5 mL/kg/hr'],
'#1A5276', '#154360', tc='white', fs=7.8, r=0.2)
box(16.5, 21.3, 9.5, 2.1,
['IMMEDIATE POSTPARTUM (0-48h)',
'──────────────',
'BP can WORSEN in 24-72h post delivery',
'Continue MgSO4 for 24h post delivery',
'Monitor BP every 1-4h for 24h',
'Continue antihypertensives until BP < 150/100',
'Check FBC/LFT/U&E/LDH at 24h & 48h post delivery',
'Watch for: pulmonary oedema, AKI, HELLP worsening'],
C_WARN, '#CA6F1E', tc='white', fs=7.8, r=0.2)
box(27.5, 21.3, 7.5, 2.1,
['DISCHARGE & FOLLOW-UP',
'──────────────',
'Discharge if BP < 150/100 x48h',
'Home BP monitoring (twice daily)',
'Review at 1-2 weeks',
'Stop antihypertensives if BP < 130/80',
'Most normalise by 6-8 weeks',
'CVD risk counselling',
'Annual BP/metabolic screen (AHA 2025)'],
C_INFO, '#0E6655', tc='white', fs=7.8, r=0.2)
# ─────────────────────────────────────────────────────────────────
# CORTICOSTEROID TIMING
# ─────────────────────────────────────────────────────────────────
line(0.5, 18.95, 31.5, 18.95, col='#2C3E50', lw=2.5, ls='-')
ax.text(16, 18.83, 'CORTICOSTEROID PROTOCOL FOR FETAL LUNG MATURITY',
ha='center', va='top', fontsize=11, fontweight='bold', color='#1A252F', zorder=6)
steroids = [
(4.5, '< 24 WEEKS\n────────\nNot routinely given\n(periviable - counsel\nre: prognosis first)',
'#95A5A6', '#7F8C8D'),
(11.0, '24 - 33+6 WEEKS\n────────\nBetamethasone 12mg IM\nx2 doses 24h apart\nGIVE IMMEDIATELY on\nadmission\nDo NOT delay delivery\nfor steroids if severe',
'#E67E22', '#CA6F1E'),
(18.5, '34+0 - 36+6 WEEKS\n────────\nLate-preterm steroids\n(if delivery anticipated\nwithin 7 days)\nBetamethasone 12mg IM x2\nANM/ALPS trial evidence',
'#2980B9', '#1F618D'),
(26.0, '>= 37 WEEKS\n────────\nNot indicated\n(lungs mature)',
'#27AE60', '#1E8449'),
]
for x, txt, fc, ec in steroids:
box(x, 17.3, 6.5, 2.65, [txt], fc, ec, tc='white', fs=8.0, r=0.2, bold=False)
# ─────────────────────────────────────────────────────────────────
# HELLP SPECIFIC
# ─────────────────────────────────────────────────────────────────
line(0.5, 14.45, 31.5, 14.45, col='#2C3E50', lw=2.5, ls='-')
ax.text(16, 14.33, 'HELLP SYNDROME — SPECIFIC DECISION PATHWAY',
ha='center', va='top', fontsize=11, fontweight='bold', color='#1A252F', zorder=6)
box(7.0, 12.9, 11.5, 2.65,
['DIAGNOSIS (Tennessee Criteria)',
'────────────────────────────────',
'H = Haemolysis: LDH > 600 IU/L + abnormal peripheral smear',
' (schistocytes, helmet cells) + bilirubin > 1.2 mg/dL',
'EL = Elevated Liver enzymes: AST/ALT > 70 IU/L (> 2x ULN)',
'LP = Low Platelets: < 100,000/mm3',
'Class 1: Plt < 50,000 | Class 2: 50-100,000 | Class 3: 100-150,000',
'PARTIAL HELLP: only 1-2 criteria met',
'Can occur WITHOUT hypertension (atypical - 20% of cases)'],
C_MAGENTA, '#641E16', tc='white', fs=7.8, r=0.2)
box(23.0, 12.9, 11.5, 2.65,
['MANAGEMENT',
'────────────────────────────────',
'>= 34 weeks or Class 1 HELLP -> DELIVER',
'24-34 wks + stable -> steroids (accelerate recovery',
' of platelets) -> reassess in 24-48h -> deliver',
'< 24 weeks -> delivery recommended',
'Dexamethasone 10mg IV q12h (may improve plt transiently)',
'Plt transfusion if: < 50,000 pre-vaginal, < 20,000 anytime',
' or active bleeding',
'Subcapsular haematoma: CT scan, surgical consult',
'Liver rupture -> ICU, massive transfusion protocol'],
C_MAGENTA, '#641E16', tc='white', fs=7.8, r=0.2)
# ─────────────────────────────────────────────────────────────────
# ECLAMPSIA PROTOCOL
# ─────────────────────────────────────────────────────────────────
line(0.5, 9.95, 31.5, 9.95, col='#2C3E50', lw=2.5, ls='-')
ax.text(16, 9.83, 'ECLAMPSIA — ACUTE MANAGEMENT PROTOCOL (ABCs)',
ha='center', va='top', fontsize=11, fontweight='bold', color='#1A252F', zorder=6)
ecl_steps = [
(3.0, ['A - AIRWAY', '────────',
'Left lateral position',
'Protect airway',
'High-flow O2 15L/min',
'Suction if needed',
'Do NOT insert airway\nduring seizure'], '#C0392B', '#7B241C'),
(9.0, ['B - BREATHING', '────────',
'O2 saturation monitoring',
'Assist ventilation if needed',
'ABG if prolonged seizure',
'Intubation if airway\nnot protected'], '#E67E22', '#CA6F1E'),
(15.5, ['C - CIRCULATION', '────────',
'IV access x2, bloods',
'BP measurement',
'Treat severe BP ASAP',
'Fluid resuscitation',
'if haemodynamically\nunstable'], '#2980B9', '#1F618D'),
(22.0, ['D - MgSO4', '(seizure termination)', '────────',
'MgSO4 4g IV over 5-10 min',
'Recurrent: 2-4g IV bolus',
'Maintenance: 1-2g/hr',
'NOT phenytoin / diazepam\n(2nd line only if MgSO4 fails)'], '#7D3C98', '#6C3483'),
(28.8, ['E - DELIVER', '────────',
'Stabilise first',
'Delivery after',
'seizure control',
'NOT emergency CS\nimmediately',
'Mode depends on',
'fetal status +',
'cervical findings'], '#C0392B', '#7B241C'),
]
for x, lines, fc, ec in ecl_steps:
box(x, 8.1, 5.5, 3.35, lines, fc, ec, tc='white', fs=7.6, r=0.2, bold=False)
# ─────────────────────────────────────────────────────────────────
# LEGEND / COLOUR KEY
# ─────────────────────────────────────────────────────────────────
line(0.5, 5.25, 31.5, 5.25, col='#2C3E50', lw=2.0, ls='-')
ax.text(1.0, 5.12, 'COLOUR KEY:', ha='left', va='top', fontsize=9,
fontweight='bold', color='#1A252F', zorder=6)
legend_items = [
(2.2, 4.5, '#C0392B', 'Deliver / Urgent action'),
(7.5, 4.5, '#27AE60', 'Expectant / Conservative management'),
(14.0, 4.5, '#2980B9', 'Decision diamond'),
(20.5, 4.5, '#8E44AD', 'Severe features pathway'),
(27.0, 4.5, '#E67E22', 'Warning / Reassessment'),
]
for x, y, fc, label in legend_items:
box(x, y, 0.55, 0.45, [''], fc, fc, r=0.1, lw=1)
ax.text(x+0.45, y, label, ha='left', va='center',
fontsize=8.5, color='#2C3E50', zorder=6)
# ─────────────────────────────────────────────────────────────────
# REFERENCES FOOTER
# ─────────────────────────────────────────────────────────────────
line(0.5, 3.85, 31.5, 3.85, col='#2C3E50', lw=1.5, ls='-')
ax.text(0.6, 3.75,
'ABBREVIATIONS: PE = pre-eclampsia | SF = severe features | IOL = induction of labour | '
'CS = caesarean section | FGR = fetal growth restriction | AREDV = absent/reversed end-diastolic velocity\n'
'CTG = cardiotocography | MgSO4 = magnesium sulphate | AKI = acute kidney injury | '
'LDH = lactate dehydrogenase | ULN = upper limit of normal | HDU = high dependency unit\n'
'SOURCES: ACOG Practice Bulletin 222 (2020) + Clinical Practice Update 2024 | '
'NICE NG133 (updated) | ISSHP 2021 Classification & Management Guidelines | '
'German S2k Guidelines on HDP 2024 | Magpie Trial (MgSO4) | HYPITAT Trial (delivery at 37 wks)',
ha='left', va='top', fontsize=7.5, color='#5D6D7E', zorder=6)
# ─────────────────────────────────────────────────────────────────
# SAVE
# ─────────────────────────────────────────────────────────────────
plt.savefig('/tmp/workspace/preeclampsia/PE_decision_tree.png',
dpi=180, bbox_inches='tight', facecolor='#F7F9FC')
print("Decision tree saved OK")
cd /tmp/workspace/preeclampsia && python decision_tree.py 2>&1
ls -lh /tmp/workspace/preeclampsia/PE_decision_tree.png
PE decision tree
Image · PNG
BP ≥160/110? Eclampsia? Pulmonary oedema? Abruption? Non-reassuring FHR?
Proteinuria ≥300 mg/24h OR organ dysfunction?
| GA | Action |
|---|---|
| < 24 weeks | Counsel re periviability → delivery recommended for maternal safety |
| 24-34 weeks | Tertiary centre + stabilise + betamethasone immediately → expectant if no contraindications; contraindications listed → deliver if any met |
| ≥ 34 weeks | Deliver after maternal stabilisation (steroids 34-36+6 if not given) |
| GA | Action |
|---|---|
| < 37 weeks | Expectant - inpatient vs outpatient criteria listed; twice-weekly labs/BP; USS q2-4 wks; sFlt-1/PlGF at assessment; re-assess at every visit for severe features |
| ≥ 37 weeks | Deliver (HYPITAT trial evidence) |
Cervix favourable (Bishop ≥6)?
| Panel | Contents |
|---|---|
| Antihypertensives | Acute severe HTN protocol (Labetalol IV doses, Hydralazine, Nifedipine oral) + oral maintenance doses + MgSO₄ protocol with antidote |
| Intrapartum/Postpartum | Fluid restriction 80 mL/hr, BP intervals, MgSO₄ continuation, discharge criteria, CVD follow-up |
| Corticosteroids by GA | <24 wks (not given) |
| HELLP Syndrome | Tennessee diagnostic criteria + Class 1/2/3 + management by GA + platelet transfusion thresholds + liver rupture protocol |
| Eclampsia ABCDE | A (Airway/positioning) → B (Breathing/O₂) → C (Circulation/IV) → D (MgSO₄ - NOT phenytoin first-line) → E (Deliver after stabilisation - NOT immediate emergency CS) |