Disscus and describe in detail of the above case and make a detailed ppt obgy with clinical relevance
mkdir -p /tmp/workspace/preeclampsia-obgy-ppt && ls /tmp/workspace/
~/preeclampsia-obgy-ppt/build_ppt.py
from pptx import Presentation
from pptx.util import Inches, Pt, Emu
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.util import Inches, Pt
from io import BytesIO
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
# ─── COLOUR PALETTE ──────────────────────────────────────────────────────────
DARK_MAROON = RGBColor(0x7B, 0x00, 0x1E) # title bar
MID_MAROON = RGBColor(0xA8, 0x00, 0x30) # headings
CORAL = RGBColor(0xC0, 0x39, 0x2B) # accent / alert
CREAM = RGBColor(0xFF, 0xF8, 0xF0) # slide bg
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
DARK_GREY = RGBColor(0x2C, 0x2C, 0x2C)
STEEL = RGBColor(0x1A, 0x52, 0x76) # table header / emphasis
LIGHT_STEEL = RGBColor(0xD6, 0xEA, 0xF8)
LIGHT_PINK = RGBColor(0xFC, 0xE4, 0xEC)
AMBER = RGBColor(0xFF, 0x8F, 0x00)
GREEN = RGBColor(0x1B, 0x5E, 0x20)
LIGHT_GREEN = RGBColor(0xE8, 0xF5, 0xE9)
ORANGE = RGBColor(0xE6, 0x51, 0x00)
LIGHT_ORANGE = RGBColor(0xFF, 0xF3, 0xE0)
PURPLE = RGBColor(0x4A, 0x14, 0x8C)
LIGHT_PURPLE = RGBColor(0xF3, 0xE5, 0xF5)
blank = prs.slide_layouts[6]
# ─── HELPER FUNCTIONS ─────────────────────────────────────────────────────────
def bg_rect(slide, color, left=0, top=0, width=None, height=None):
w = width if width else prs.slide_width
h = height if height else prs.slide_height
shape = slide.shapes.add_shape(1, left, top, w, h)
shape.fill.solid()
shape.fill.fore_color.rgb = color
shape.line.fill.background()
return shape
def add_title_bar(slide, title_text, subtitle_text=None):
# full-slide cream background
bg_rect(slide, CREAM)
# top bar
bar = bg_rect(slide, DARK_MAROON, 0, 0, prs.slide_width, Inches(1.25))
# bottom accent strip
bg_rect(slide, MID_MAROON, 0, Inches(7.2), prs.slide_width, Inches(0.30))
# title text in bar
tb = slide.shapes.add_textbox(Inches(0.4), Inches(0.1), Inches(12.5), Inches(1.0))
tf = tb.text_frame
tf.word_wrap = True
tf.vertical_anchor = MSO_ANCHOR.MIDDLE
p = tf.paragraphs[0]
run = p.add_run()
run.text = title_text
run.font.name = "Calibri"
run.font.bold = True
run.font.size = Pt(26)
run.font.color.rgb = WHITE
p.alignment = PP_ALIGN.LEFT
if subtitle_text:
tb2 = slide.shapes.add_textbox(Inches(0.4), Inches(1.30), Inches(12.5), Inches(0.45))
tf2 = tb2.text_frame
p2 = tf2.paragraphs[0]
r2 = p2.add_run()
r2.text = subtitle_text
r2.font.name = "Calibri"
r2.font.italic = True
r2.font.size = Pt(15)
r2.font.color.rgb = MID_MAROON
p2.alignment = PP_ALIGN.LEFT
def add_textbox(slide, text, left, top, width, height,
bold=False, italic=False, size=13,
color=DARK_GREY, align=PP_ALIGN.LEFT, wrap=True):
tb = slide.shapes.add_textbox(left, top, width, height)
tf = tb.text_frame
tf.word_wrap = wrap
p = tf.paragraphs[0]
run = p.add_run()
run.text = text
run.font.name = "Calibri"
run.font.bold = bold
run.font.italic = italic
run.font.size = Pt(size)
run.font.color.rgb = color
p.alignment = align
return tb
def add_bullet_box(slide, items, left, top, width, height,
title=None, title_color=None, bullet_size=12.5,
bg_color=None, border_color=None):
"""items: list of (text, indent_level) tuples or plain strings"""
if bg_color:
r = slide.shapes.add_shape(1, left, top, width, height)
r.fill.solid()
r.fill.fore_color.rgb = bg_color
if border_color:
r.line.color.rgb = border_color
r.line.width = Pt(1.2)
else:
r.line.fill.background()
tb = slide.shapes.add_textbox(
left + Inches(0.12), top + Inches(0.1),
width - Inches(0.24), height - Inches(0.15))
tf = tb.text_frame
tf.word_wrap = True
start = True
if title:
p = tf.paragraphs[0] if start else tf.add_paragraph()
start = False
run = p.add_run()
run.text = title
run.font.bold = True
run.font.size = Pt(13)
run.font.color.rgb = title_color if title_color else DARK_MAROON
for item in items:
if isinstance(item, tuple):
text, level = item
else:
text, level = item, 0
p = tf.add_paragraph() if not start else tf.paragraphs[0]
start = False
p.level = level
bullet = " • " if level == 0 else " – "
run = p.add_run()
run.text = bullet + text
run.font.name = "Calibri"
run.font.size = Pt(bullet_size)
run.font.color.rgb = DARK_GREY
def colored_box(slide, text, left, top, width, height,
bg=LIGHT_STEEL, fg=STEEL, size=13, bold=True, border=None):
r = slide.shapes.add_shape(1, left, top, width, height)
r.fill.solid()
r.fill.fore_color.rgb = bg
if border:
r.line.color.rgb = border
r.line.width = Pt(1.5)
else:
r.line.fill.background()
tb = slide.shapes.add_textbox(left+Inches(0.1), top+Inches(0.05),
width-Inches(0.2), height-Inches(0.1))
tf = tb.text_frame
tf.word_wrap = True
tf.vertical_anchor = MSO_ANCHOR.MIDDLE
p = tf.paragraphs[0]
p.alignment = PP_ALIGN.CENTER
run = p.add_run()
run.text = text
run.font.name = "Calibri"
run.font.bold = bold
run.font.size = Pt(size)
run.font.color.rgb = fg
return r
def arrow_right(slide, left, top, width=Inches(0.4), height=Inches(0.3)):
shp = slide.shapes.add_shape(13, left, top, width, height)
shp.fill.solid()
shp.fill.fore_color.rgb = CORAL
shp.line.fill.background()
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 1 – TITLE SLIDE
# ══════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
bg_rect(slide, DARK_MAROON)
bg_rect(slide, CREAM, 0, Inches(2.0), prs.slide_width, Inches(4.5))
# decorative bar
bg_rect(slide, CORAL, 0, Inches(2.0), prs.slide_width, Inches(0.12))
bg_rect(slide, CORAL, 0, Inches(6.48), prs.slide_width, Inches(0.12))
# Main title
tb = slide.shapes.add_textbox(Inches(0.8), Inches(2.25), Inches(11.7), Inches(1.5))
tf = tb.text_frame
tf.word_wrap = True
p = tf.paragraphs[0]
r = p.add_run()
r.text = "PREECLAMPSIA COMPLICATED BY ECLAMPSIA"
r.font.name = "Calibri"
r.font.bold = True
r.font.size = Pt(32)
r.font.color.rgb = DARK_MAROON
p.alignment = PP_ALIGN.CENTER
# Subtitle
tb2 = slide.shapes.add_textbox(Inches(0.8), Inches(3.8), Inches(11.7), Inches(0.7))
tf2 = tb2.text_frame
p2 = tf2.paragraphs[0]
r2 = p2.add_run()
r2.text = "A Clinical Case-Based Discussion with Management Protocols"
r2.font.name = "Calibri"
r2.font.italic = True
r2.font.size = Pt(20)
r2.font.color.rgb = STEEL
p2.alignment = PP_ALIGN.CENTER
# bottom sub-subtitle
tb3 = slide.shapes.add_textbox(Inches(0.8), Inches(4.65), Inches(11.7), Inches(0.6))
tf3 = tb3.text_frame
p3 = tf3.paragraphs[0]
r3 = p3.add_run()
r3.text = "Obstetrics & Gynaecology | Maternal-Fetal Medicine"
r3.font.name = "Calibri"
r3.font.size = Pt(16)
r3.font.color.rgb = CORAL
p3.alignment = PP_ALIGN.CENTER
# top white text
tb4 = slide.shapes.add_textbox(Inches(0.8), Inches(0.35), Inches(11.7), Inches(1.5))
tf4 = tb4.text_frame
p4 = tf4.paragraphs[0]
r4 = p4.add_run()
r4.text = "CASE-BASED CLINICAL GRAND ROUNDS"
r4.font.name = "Calibri"
r4.font.bold = True
r4.font.size = Pt(20)
r4.font.color.rgb = WHITE
p4.alignment = PP_ALIGN.CENTER
tb5 = slide.shapes.add_textbox(Inches(0.8), Inches(0.85), Inches(11.7), Inches(0.9))
tf5 = tb5.text_frame
p5 = tf5.paragraphs[0]
r5 = p5.add_run()
r5.text = "Department of Obstetrics & Gynaecology"
r5.font.name = "Calibri"
r5.font.size = Pt(15)
r5.font.color.rgb = RGBColor(0xFF, 0xCC, 0xCC)
p5.alignment = PP_ALIGN.CENTER
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 2 – CASE PRESENTATION
# ══════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_title_bar(slide, "CASE PRESENTATION", "The Patient — At First Visit")
# Left panel: patient box
colored_box(slide, "PATIENT PROFILE", Inches(0.35), Inches(1.85), Inches(3.9), Inches(0.42),
bg=DARK_MAROON, fg=WHITE, size=14)
items_left = [
"Age: 24 years old",
"Obstetric status: Primigravida",
"Gestation: 28 weeks (by LMP/USG)",
"Setting: Antenatal OPD visit",
"Chief complaint: Severe pedal edema",
]
add_bullet_box(slide, items_left, Inches(0.35), Inches(2.28), Inches(3.9), Inches(2.1),
bg_color=LIGHT_PINK, border_color=CORAL, bullet_size=12.5)
# Middle panel: vitals
colored_box(slide, "VITAL SIGNS & INVESTIGATIONS", Inches(4.45), Inches(1.85), Inches(4.2), Inches(0.42),
bg=STEEL, fg=WHITE, size=14)
items_mid = [
"BP: 160/100 mm Hg ← Severe range!",
"Pulse: 78 bpm (regular)",
"Urine Albumin: 3+ (significant proteinuria)",
"Edema: Severe pedal edema",
"No documented fever or jaundice",
]
add_bullet_box(slide, items_mid, Inches(4.45), Inches(2.28), Inches(4.2), Inches(2.1),
bg_color=LIGHT_STEEL, border_color=STEEL, bullet_size=12.5)
# Right panel: obstetric
colored_box(slide, "OBSTETRIC EXAMINATION", Inches(8.85), Inches(1.85), Inches(4.1), Inches(0.42),
bg=GREEN, fg=WHITE, size=14)
items_right = [
"Fundal height: 24 weeks",
" (Discordant — 4 wks less than POA)",
"Lie: Longitudinal",
"Presentation: Cephalic",
"FHS: 150 bpm (normal)",
"Note: FH < GA → suspect FGR",
]
add_bullet_box(slide, items_right, Inches(8.85), Inches(2.28), Inches(4.1), Inches(2.1),
bg_color=LIGHT_GREEN, border_color=GREEN, bullet_size=12.5)
# Key alert box
colored_box(slide,
"KEY CLINICAL CLUE: Fundal height 4 weeks less than period of amenorrhoea — raises suspicion of Fetal Growth Restriction (FGR) secondary to uteroplacental insufficiency",
Inches(0.35), Inches(4.55), Inches(12.6), Inches(0.75),
bg=RGBColor(0xFF,0xF0,0xCC), fg=RGBColor(0x7B,0x4A,0x00), size=13, border=AMBER)
# Questions strip
colored_box(slide,
"QUESTIONS TO ANSWER: Inpatient or Outpatient? | Antihypertensives — Yes or No? | Role of Doppler | Plan for Delivery",
Inches(0.35), Inches(5.42), Inches(12.6), Inches(0.6),
bg=DARK_MAROON, fg=WHITE, size=12.5)
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 3 – DIAGNOSIS: PREECLAMPSIA WITH SEVERE FEATURES
# ══════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_title_bar(slide, "ESTABLISHING THE DIAGNOSIS", "Preeclampsia With Severe Features")
# Definition box
colored_box(slide,
"Preeclampsia = New-onset hypertension (≥140/90 mmHg) after 20 weeks + Proteinuria (≥300 mg/24h or 2+ dipstick) OR end-organ damage",
Inches(0.35), Inches(1.82), Inches(12.6), Inches(0.72),
bg=LIGHT_STEEL, fg=STEEL, size=13.5, border=STEEL)
# Diagnostic criteria columns
colored_box(slide, "SEVERE FEATURES (Any One = Severe)", Inches(0.35), Inches(2.72), Inches(6.0), Inches(0.42),
bg=CORAL, fg=WHITE, size=13.5)
items_sev = [
"SBP ≥160 or DBP ≥110 mmHg (on 2 occasions, 4h apart) ✔",
"Thrombocytopenia (<100,000/μL)",
"Renal insufficiency (Cr >1.1 mg/dL)",
"Impaired liver function (LFTs ×2 ULN)",
"Pulmonary edema",
"New-onset headache unresponsive to medication",
"Visual disturbances",
]
add_bullet_box(slide, items_sev, Inches(0.35), Inches(3.15), Inches(6.0), Inches(2.9),
bg_color=LIGHT_PINK, border_color=CORAL, bullet_size=12)
# THIS PATIENT criteria
colored_box(slide, "THIS PATIENT MEETS:", Inches(6.55), Inches(2.72), Inches(6.4), Inches(0.42),
bg=DARK_MAROON, fg=WHITE, size=13.5)
items_meet = [
"BP 160/100 mmHg → Severe range BP",
"Urine albumin 3+ → Significant proteinuria",
"Severe pedal edema",
"Fundal height < GA → FGR/uteroplacental insufficiency",
"Gestational age 28 weeks (preterm)",
"",
"DIAGNOSIS: PREECLAMPSIA WITH SEVERE FEATURES",
"AT 28 WEEKS GESTATION",
]
add_bullet_box(slide, items_meet, Inches(6.55), Inches(3.15), Inches(6.4), Inches(2.9),
bg_color=RGBColor(0xFF,0xE8,0xE8), border_color=DARK_MAROON, bullet_size=12)
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 4 – INITIAL INVESTIGATIONS
# ══════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_title_bar(slide, "INITIAL INVESTIGATIONS", "What to Order on Admission")
y = Inches(1.85)
cols = [
("MATERNAL LABS", DARK_MAROON, [
"CBC with platelet count",
"Liver enzymes (AST, ALT)",
"Serum creatinine & uric acid",
"Coagulation profile (PT, APTT)",
"LDH, peripheral blood smear",
"24-hour urine protein (or PCR)",
"Blood group & cross-match",
]),
("FETAL ASSESSMENT", GREEN, [
"NST (Non-Stress Test) — daily",
"Obstetric ultrasound (BPP, EFW)",
"Umbilical artery Doppler",
"Middle cerebral artery Doppler",
"Amniotic fluid index (AFI)",
"Fetal biometry (serial every 2–3 wk)",
"Biophysical profile score",
]),
("MATERNAL MONITORING", STEEL, [
"Continuous BP monitoring (q1–2h)",
"Urine output hourly (catheter)",
"Daily weight",
"Symptoms: headache, epigastric pain",
"Reflexes (patella) — MgSO4 toxicity",
"Respiratory rate (>16/min required)",
"O2 saturation",
]),
]
for i, (title, col, items) in enumerate(cols):
lft = Inches(0.35 + i * 4.35)
colored_box(slide, title, lft, y, Inches(4.1), Inches(0.42), bg=col, fg=WHITE, size=13)
bgs = [LIGHT_PINK, LIGHT_GREEN, LIGHT_STEEL]
bds = [CORAL, GREEN, STEEL]
add_bullet_box(slide, items, lft, Inches(2.28), Inches(4.1), Inches(3.4),
bg_color=bgs[i], border_color=bds[i], bullet_size=12)
# Bottom note
colored_box(slide,
"GOAL: Distinguish preeclampsia with vs. without severe features | Assess fetal well-being | Determine gestational age accurately before deciding management",
Inches(0.35), Inches(5.88), Inches(12.6), Inches(0.65),
bg=DARK_MAROON, fg=WHITE, size=12.5)
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 5 – INPATIENT vs OUTPATIENT DECISION
# ══════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_title_bar(slide, "INPATIENT OR OUTPATIENT MANAGEMENT?", "Decision Framework at 28 Weeks")
# Inpatient (left)
colored_box(slide, "INPATIENT — MANDATORY IN THIS CASE", Inches(0.35), Inches(1.85), Inches(6.1), Inches(0.45),
bg=CORAL, fg=WHITE, size=14)
items_ip = [
"Preeclampsia WITH severe features (BP 160/100)",
"Severe proteinuria (3+)",
"Preterm gestation (28 weeks)",
"Suspected FGR (FH 4 weeks < POA)",
"Unpredictable disease progression",
"Risk of eclampsia, abruption, HELLP",
"Requires intensive monitoring & MgSO4",
"Needs corticosteroids for fetal lung maturity",
"Close fetal surveillance impossible at home",
]
add_bullet_box(slide, items_ip, Inches(0.35), Inches(2.32), Inches(6.1), Inches(3.05),
bg_color=LIGHT_PINK, border_color=CORAL, bullet_size=12.5)
# Outpatient (right) — NOT applicable
colored_box(slide, "OUTPATIENT — NOT APPLICABLE HERE", Inches(6.65), Inches(1.85), Inches(6.3), Inches(0.45),
bg=RGBColor(0x78, 0x78, 0x78), fg=WHITE, size=14)
items_op = [
"ONLY for preeclampsia WITHOUT severe features",
"Near-term (≥34 weeks) gestation",
"Reliable patient with easy hospital access",
"Normal fetal surveillance tests",
"BP controlled below 160/110 mmHg",
"No worsening symptoms",
"Close outpatient monitoring available",
"",
"THIS PATIENT DOES NOT QUALIFY",
"for outpatient management.",
]
add_bullet_box(slide, items_op, Inches(6.65), Inches(2.32), Inches(6.3), Inches(3.05),
bg_color=RGBColor(0xF5,0xF5,0xF5), border_color=RGBColor(0x99,0x99,0x99), bullet_size=12.5)
# Verdict
colored_box(slide,
"VERDICT: ADMIT TO HOSPITAL — Obstetric HDU/LDU. Preeclampsia with severe features at 28 weeks mandates inpatient expectant management with intensive maternal and fetal monitoring.",
Inches(0.35), Inches(5.55), Inches(12.6), Inches(0.75),
bg=DARK_MAROON, fg=WHITE, size=13)
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 6 – ANTIHYPERTENSIVE MANAGEMENT
# ══════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_title_bar(slide, "ANTIHYPERTENSIVE MANAGEMENT", "Which Drugs, When, and Why")
# When to treat
colored_box(slide,
"TREAT IF: BP ≥160/110 mmHg (acute severe HTN) to prevent maternal stroke, abruption, and eclampsia. For BP 140-159/90-109, treatment may be started to prevent escalation.",
Inches(0.35), Inches(1.82), Inches(12.6), Inches(0.65),
bg=LIGHT_ORANGE, fg=RGBColor(0x7B, 0x3F, 0x00), size=12.5, border=AMBER)
# Drug table background
bg_rect(slide, CREAM, Inches(0.35), Inches(2.6), Inches(12.6), Inches(3.6))
# Column headers
headers = ["Drug", "Route", "Dose", "Onset", "Key Points"]
widths = [1.7, 1.0, 2.9, 0.9, 5.8]
hx = 0.35
for h, w in zip(headers, widths):
colored_box(slide, h, Inches(hx), Inches(2.62), Inches(w - 0.05), Inches(0.38),
bg=DARK_MAROON, fg=WHITE, size=12, bold=True)
hx += w
rows = [
("Labetalol\n(1st line)", "IV / Oral", "IV: 20-80 mg bolus q10min\nOral: 100-400 mg BD",
"5-10 min", "Alpha+Beta blocker. Safe. 1st line for acute severe HTN. Avoid in asthma."),
("Nifedipine\n(1st line)", "Oral SR", "10-20 mg SR q6-8h\n(not sublingual!)",
"15-30 min", "CCB. Safe. Widely used. Caution with MgSO4 (synergistic hypotension)."),
("Hydralazine", "IV", "5-10 mg IV slow push\nRepeat q20min",
"10-20 min", "Vasodilator. Effective but causes reflex tachycardia. IV used in acute settings."),
("Methyldopa", "Oral", "250 mg–1 g TDS\n(max 3 g/day)",
"Hours", "Safest for maintenance. Long-term data up to 7.5 yrs post-partum. Sedating."),
("CONTRAINDICATED", "—", "ACE inhibitors / ARBs",
"—", "Cause fetal renal dysplasia, oligohydramnios, IUFD. Strictly AVOID in pregnancy."),
]
ry = 3.02
row_bgs = [LIGHT_GREEN, LIGHT_STEEL, LIGHT_ORANGE, RGBColor(0xF3,0xE5,0xF5),
RGBColor(0xFF,0xCC,0xCC)]
row_fgs = [GREEN, STEEL, ORANGE, PURPLE, CORAL]
for ridx, (drug, route, dose, onset, note) in enumerate(rows):
rx = 0.35
row_data = [drug, route, dose, onset, note]
for ci, (txt, w) in enumerate(zip(row_data, widths)):
fg = row_fgs[ridx] if ci == 0 else DARK_GREY
bg = row_bgs[ridx] if ci == 0 else CREAM
colored_box(slide, txt, Inches(rx), Inches(ry), Inches(w-0.05), Inches(0.55),
bg=bg, fg=fg, size=10, bold=(ci == 0))
rx += w
ry += 0.56
# Protocol note
colored_box(slide,
"THIS PATIENT: Start IV Labetalol 20 mg (or oral Nifedipine 10 mg) for acute BP 160/100. Continue oral Methyldopa or Nifedipine SR for maintenance. Titrate to keep BP 140-155/90-100 mmHg (avoid excessive lowering — reduces uteroplacental flow).",
Inches(0.35), Inches(6.28), Inches(12.6), Inches(0.75),
bg=DARK_MAROON, fg=WHITE, size=12)
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 7 – MAGNESIUM SULFATE PROTOCOL
# ══════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_title_bar(slide, "MAGNESIUM SULFATE — SEIZURE PROPHYLAXIS", "Zuspan / Pritchard Protocol")
# Rationale
colored_box(slide,
"INDICATION: MgSO4 is the gold standard for seizure prophylaxis in preeclampsia with severe features. It is also the first-line treatment for eclamptic seizures.",
Inches(0.35), Inches(1.82), Inches(12.6), Inches(0.62),
bg=LIGHT_STEEL, fg=STEEL, size=13, border=STEEL)
# Zuspan (left)
colored_box(slide, "ZUSPAN REGIMEN (IV Only — Preferred)", Inches(0.35), Inches(2.6), Inches(6.0), Inches(0.42),
bg=STEEL, fg=WHITE, size=13.5)
items_z = [
"Loading dose: 4 g IV in 20% solution over 20 min",
"Maintenance: 1–2 g/hr IV infusion (continuous)",
"Continue for 24 hours after delivery OR last seizure",
"Monitor: Urine output (>25 mL/hr), RR (>16/min)",
"Check deep tendon reflexes hourly",
"Serum Mg level if available (therapeutic: 4–7 mEq/L)",
]
add_bullet_box(slide, items_z, Inches(0.35), Inches(3.04), Inches(6.0), Inches(2.5),
bg_color=LIGHT_STEEL, border_color=STEEL, bullet_size=12.5)
# Pritchard (right)
colored_box(slide, "PRITCHARD REGIMEN (IV + IM)", Inches(6.55), Inches(2.6), Inches(6.4), Inches(0.42),
bg=GREEN, fg=WHITE, size=13.5)
items_p = [
"Loading: 4 g IV (20% sol) over 20 min PLUS 10 g IM (5g each buttock, 50% sol)",
"Maintenance: 5 g IM q4h alternating buttocks",
"Continue 24 hrs post-delivery or last seizure",
"Useful in resource-limited settings (no IV pump)",
"IM is painful — add 1 mL 2% lignocaine to IM dose",
]
add_bullet_box(slide, items_p, Inches(6.55), Inches(3.04), Inches(6.4), Inches(2.5),
bg_color=LIGHT_GREEN, border_color=GREEN, bullet_size=12.5)
# Toxicity monitoring
colored_box(slide, "MAGNESIUM TOXICITY MONITORING & ANTIDOTE", Inches(0.35), Inches(5.62), Inches(12.6), Inches(0.38),
bg=CORAL, fg=WHITE, size=13.5)
tox_items = [
"Mg 4-7 mEq/L: Therapeutic (anticonvulsant)",
"Mg 7-10: Loss of deep tendon reflexes (STOP infusion)",
"Mg >12: Respiratory depression / arrest (give ANTIDOTE)",
"Antidote: Calcium gluconate 1 g (10 mL of 10% sol) IV slowly over 10 min",
]
add_bullet_box(slide, tox_items, Inches(0.35), Inches(6.02), Inches(12.6), Inches(1.0),
bg_color=LIGHT_PINK, border_color=CORAL, bullet_size=12)
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 8 – ROLE OF DOPPLER
# ══════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_title_bar(slide, "ROLE OF DOPPLER IN THIS CASE", "Fetal Surveillance in Preeclampsia + Suspected FGR")
# Why Doppler
colored_box(slide,
"WHY DOPPLER HERE? Fundal height corresponds to 24 wk at 28 wk gestation — gap of 4 cm suggests FGR from uteroplacental insufficiency. Doppler guides surveillance and delivery decision.",
Inches(0.35), Inches(1.82), Inches(12.6), Inches(0.65),
bg=LIGHT_ORANGE, fg=RGBColor(0x7B,0x3F,0x00), size=12.5, border=AMBER)
# Three doppler columns
doppler_info = [
("UMBILICAL ARTERY\n(UA) DOPPLER", DARK_MAROON, LIGHT_PINK, CORAL, [
"Reflects placental resistance",
"Normal: S/D ratio <3 (after 28 wk)",
"Elevated S/D: Placental insufficiency",
"Absent End-Diastolic Flow (AEDF): Severe FGR — deliver if ≥34 wk",
"Reversed EDF (REDF): Critical — near-immediate delivery",
"KEY: REDF = contraindication to expectant management",
]),
("MIDDLE CEREBRAL\nARTERY (MCA) DOPPLER", STEEL, LIGHT_STEEL, STEEL, [
"Reflects fetal cerebral blood flow",
"Normal MCA PI: High (brain protected)",
"Low MCA PI: Brain-sparing effect",
" → fetal redistribution to brain",
"Brain-sparing + elevated UA = severe FGR",
"Cerebroplacental ratio (CPR) <1.0 = adverse outcome",
"Monitor weekly in confirmed FGR",
]),
("DUCTUS VENOSUS (DV)\n& UTERINE ARTERY", GREEN, LIGHT_GREEN, GREEN, [
"Uterine A. notching: Predictive of PE/FGR in 2nd trimester",
"Abnormal DV (absent/reversed 'a' wave): Imminent fetal acidosis",
"DV abnormality → deliver within 24-48 hours",
"Uterine artery PI elevated in this case (likely)",
"Sequential Doppler (UA → MCA → DV) guides timing of delivery",
]),
]
for i, (title, hdr_bg, item_bg, item_bd, items) in enumerate(doppler_info):
lft = Inches(0.35 + i * 4.35)
colored_box(slide, title, lft, Inches(2.62), Inches(4.1), Inches(0.55),
bg=hdr_bg, fg=WHITE, size=12.5)
add_bullet_box(slide, items, lft, Inches(3.18), Inches(4.1), Inches(2.75),
bg_color=item_bg, border_color=item_bd, bullet_size=11.5)
# Bottom
colored_box(slide,
"IN THIS CASE: Perform UA Doppler STAT. If absent/reversed EDF → delivery planning. If elevated S/D with present EDF → close surveillance, MgSO4, steroids, aim for ≥34 weeks delivery.",
Inches(0.35), Inches(6.1), Inches(12.6), Inches(0.72),
bg=DARK_MAROON, fg=WHITE, size=12)
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 9 – CORTICOSTEROIDS & PLAN FOR DELIVERY
# ══════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_title_bar(slide, "CORTICOSTEROIDS & PLAN FOR DELIVERY", "Management Timeline at 28 Weeks")
# Steroids
colored_box(slide, "ANTENATAL CORTICOSTEROIDS — MANDATORY", Inches(0.35), Inches(1.82), Inches(5.8), Inches(0.42),
bg=GREEN, fg=WHITE, size=13.5)
items_cs = [
"Indication: Preterm (<34 wk) with risk of delivery",
"Drug: Betamethasone 12 mg IM × 2 doses, 24h apart",
" OR Dexamethasone 6 mg IM × 4 doses, 12h apart",
"Benefit: Fetal lung maturity (reduces RDS, IVH, NEC)",
"Administer BEFORE delivery in all preterm PE cases",
"Do NOT delay delivery for steroid completion in emergency",
]
add_bullet_box(slide, items_cs, Inches(0.35), Inches(2.26), Inches(5.8), Inches(2.85),
bg_color=LIGHT_GREEN, border_color=GREEN, bullet_size=12)
# Delivery plan (right)
colored_box(slide, "DELIVERY DECISION ALGORITHM", Inches(6.35), Inches(1.82), Inches(6.6), Inches(0.42),
bg=DARK_MAROON, fg=WHITE, size=13.5)
delivery_items = [
"IMMEDIATE DELIVERY regardless of GA if:",
" – Eclampsia (seizures)",
" – HELLP syndrome",
" – Pulmonary edema",
" – Uncontrolled severe HTN",
" – Reversed end-diastolic flow on Doppler",
" – Non-reassuring fetal testing (BPP ≤4, late decels)",
" – Abruption / DIC / IUFD",
"",
"EXPECTANT MANAGEMENT (with monitoring) if:",
" – None of the above",
" – Gestational age < 34 weeks",
" – After completing steroid course",
" – Delivery TARGET: 34 weeks gestation",
]
add_bullet_box(slide, delivery_items, Inches(6.35), Inches(2.26), Inches(6.6), Inches(2.85),
bg_color=LIGHT_PINK, border_color=DARK_MAROON, bullet_size=11.5)
# Mode of delivery
colored_box(slide,
"MODE OF DELIVERY: Vaginal delivery preferred if Bishop score favorable. LSCS for obstetric indications (non-reassuring FHR, abnormal Doppler, unfavorable cervix at urgent delivery, malpresentation). No absolute indication for LSCS in preeclampsia alone.",
Inches(0.35), Inches(5.28), Inches(12.6), Inches(0.75),
bg=LIGHT_STEEL, fg=STEEL, size=12.5, border=STEEL)
colored_box(slide,
"THIS PATIENT AT 28 WEEKS: Admit, give MgSO4 (prophylaxis), antihypertensives (labetalol/nifedipine), start Betamethasone course. Perform UA Doppler. Re-assess q24h. Target: Reach 34 weeks if stable.",
Inches(0.35), Inches(6.13), Inches(12.6), Inches(0.65),
bg=DARK_MAROON, fg=WHITE, size=12)
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 10 – SCENARIO 2: IMPENDING ECLAMPSIA
# ══════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
bg_rect(slide, CREAM)
bg_rect(slide, CORAL, 0, 0, prs.slide_width, Inches(1.25))
bg_rect(slide, DARK_MAROON, 0, Inches(7.2), prs.slide_width, Inches(0.30))
tb = slide.shapes.add_textbox(Inches(0.4), Inches(0.1), Inches(12.5), Inches(1.0))
tf = tb.text_frame
tf.word_wrap = True
tf.vertical_anchor = MSO_ANCHOR.MIDDLE
p = tf.paragraphs[0]
r = p.add_run()
r.text = "SCENARIO 2: IMPENDING ECLAMPSIA — 24 Hours Later"
r.font.name = "Calibri"
r.font.bold = True
r.font.size = Pt(26)
r.font.color.rgb = WHITE
p.alignment = PP_ALIGN.LEFT
tb2 = slide.shapes.add_textbox(Inches(0.4), Inches(1.32), Inches(12.5), Inches(0.4))
tf2 = tb2.text_frame
p2 = tf2.paragraphs[0]
r2 = p2.add_run()
r2.text = "BP still 160/110 mmHg | Severe headache | Visual flashes (photopsia)"
r2.font.name = "Calibri"
r2.font.italic = True
r2.font.size = Pt(15)
r2.font.color.rgb = CORAL
p2.alignment = PP_ALIGN.LEFT
# Diagnosis box
colored_box(slide,
"DIAGNOSIS: IMPENDING ECLAMPSIA\nBP ≥160/110 + Neurological symptoms (severe headache + visual aura) = IMMINENT SEIZURE RISK",
Inches(0.35), Inches(1.88), Inches(12.6), Inches(0.78),
bg=RGBColor(0xFF,0xCC,0xCC), fg=DARK_MAROON, size=14, border=CORAL)
# What next — 3 columns
actions = [
("IMMEDIATE ACTIONS", DARK_MAROON, LIGHT_PINK, CORAL, [
"Call obstetric team STAT",
"Ensure IV access × 2 wide-bore",
"Oxygen supplementation (SpO2 >95%)",
"Strict left lateral positioning",
"Continuous fetal monitoring",
"NPO — prepare for possible delivery",
"Consent family for emergency LSCS",
]),
("ANTIHYPERTENSIVES — URGENT", CORAL, RGBColor(0xFF,0xF0,0xF0), CORAL, [
"IV Labetalol 20 mg bolus",
" Repeat 40 mg → 80 mg q10 min if needed",
" Max dose: 300 mg total",
"OR Hydralazine 5–10 mg IV q20 min",
"OR Oral Nifedipine 10–20 mg (if no IV)",
"Target: DBP 90–100 mmHg",
"AVOID excessive BP lowering (uteroplacental perfusion)",
]),
("SEIZURE PROPHYLAXIS — ESCALATE", STEEL, LIGHT_STEEL, STEEL, [
"If MgSO4 NOT started: Start NOW",
" Load: 4–6 g IV over 15–20 min",
" Maint: 1–2 g/hr IV continuous",
"If MgSO4 already running:",
" Check Mg level, assess toxicity",
" Consider additional 2 g IV bolus",
"Prepare calcium gluconate at bedside",
]),
]
for i, (title, hdr_bg, item_bg, item_bd, items) in enumerate(actions):
lft = Inches(0.35 + i * 4.35)
colored_box(slide, title, lft, Inches(2.82), Inches(4.1), Inches(0.42),
bg=hdr_bg, fg=WHITE, size=12.5)
add_bullet_box(slide, items, lft, Inches(3.25), Inches(4.1), Inches(2.72),
bg_color=item_bg, border_color=item_bd, bullet_size=12)
# Bottom
colored_box(slide,
"NEUROLOGICAL SYMPTOMS = RED FLAG: Severe headache + visual changes = cerebral vasospasm → eclampsia imminent. Escalate all treatment. Inform senior consultant. Prepare ICU/HDU bed.",
Inches(0.35), Inches(6.12), Inches(12.6), Inches(0.72),
bg=DARK_MAROON, fg=WHITE, size=12.5)
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 11 – SCENARIO 3: ECLAMPSIA (SEIZURE)
# ══════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
bg_rect(slide, CREAM)
bg_rect(slide, RGBColor(0x4A, 0x00, 0x00), 0, 0, prs.slide_width, Inches(1.25))
bg_rect(slide, CORAL, 0, Inches(7.2), prs.slide_width, Inches(0.30))
tb = slide.shapes.add_textbox(Inches(0.4), Inches(0.1), Inches(12.5), Inches(1.0))
tf = tb.text_frame
tf.word_wrap = True
tf.vertical_anchor = MSO_ANCHOR.MIDDLE
p = tf.paragraphs[0]
r = p.add_run()
r.text = "SCENARIO 3: ECLAMPSIA — Generalised Tonic-Clonic Seizure"
r.font.name = "Calibri"
r.font.bold = True
r.font.size = Pt(24)
r.font.color.rgb = WHITE
p.alignment = PP_ALIGN.LEFT
tb2 = slide.shapes.add_textbox(Inches(0.4), Inches(1.32), Inches(12.5), Inches(0.4))
tf2 = tb2.text_frame
p2 = tf2.paragraphs[0]
r2 = p2.add_run()
r2.text = "She develops generalised tonic-clonic seizure 30 minutes later"
r2.font.name = "Calibri"
r2.font.italic = True
r2.font.size = Pt(14)
r2.font.color.rgb = CORAL
p2.alignment = PP_ALIGN.LEFT
# ABCDE
colored_box(slide, "IMMEDIATE: ABCDE APPROACH + SAFE THE PATIENT", Inches(0.35), Inches(1.82), Inches(12.6), Inches(0.40),
bg=RGBColor(0x4A,0x00,0x00), fg=WHITE, size=13.5)
# Immediate steps
seizure_steps = [
("DURING SEIZURE (0-2 min)", RGBColor(0x4A,0x00,0x00), LIGHT_PINK, CORAL, [
"Call for HELP — Code Obstetric",
"Position: Left lateral (prevent aspiration, aortocaval compression)",
"Protect airway: suction, jaw thrust, oral airway",
"O2 via face mask (10–15 L/min)",
"DO NOT restrain the patient",
"Time the seizure duration",
"IV access if not already in",
]),
("TERMINATE SEIZURE (First line)", CORAL, RGBColor(0xFF,0xF0,0xF0), CORAL, [
"MgSO4 LOADING DOSE (if not on Mg):",
" 4–6 g IV in 20% sol over 15–20 min",
"If already on MgSO4:",
" Additional 2 g IV bolus over 3–5 min",
"If seizure persists (>5 min) after Mg:",
" IV Diazepam 5–10 mg SLOWLY",
" OR IV Lorazepam 4 mg",
" OR IV Thiopentone (anesthesia involvement)",
]),
("POST-SEIZURE MANAGEMENT", STEEL, LIGHT_STEEL, STEEL, [
"Monitor: SpO2, GCS, BP q5 min initially",
"ABG if O2 sat falling",
"Continue MgSO4 maintenance 1–2 g/hr",
"Catheterise — strict fluid I/O chart",
"URGENT CT brain if:",
" – Seizure >30 min, atypical features",
" – Focal neurological signs",
" – GCS not recovering",
"Stabilise then DELIVER (plan LSCS)",
]),
]
for i, (title, hdr_bg, item_bg, item_bd, items) in enumerate(seizure_steps):
lft = Inches(0.35 + i * 4.35)
colored_box(slide, title, lft, Inches(2.25), Inches(4.1), Inches(0.42),
bg=hdr_bg, fg=WHITE, size=12)
add_bullet_box(slide, items, lft, Inches(2.68), Inches(4.1), Inches(3.0),
bg_color=item_bg, border_color=item_bd, bullet_size=11.5)
# Eclampsia definition
colored_box(slide,
"ECLAMPSIA = Seizures in a preeclamptic patient with no other cause. Occurs antepartum (50%), intrapartum (25%), postpartum (25%). MgSO4 reduces recurrence by >50%. Delivery is DEFINITIVE treatment. Stabilise first, then deliver.",
Inches(0.35), Inches(5.85), Inches(12.6), Inches(0.75),
bg=RGBColor(0x4A,0x00,0x00), fg=WHITE, size=12)
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 12 – POST-ECLAMPSIA: DELIVERY PLAN
# ══════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_title_bar(slide, "POST-ECLAMPSIA: DELIVERY PLAN & INTRAPARTUM CARE", "After Seizure is Controlled")
# Immediate delivery box
colored_box(slide,
"AFTER ECLAMPSIA: DELIVERY IS MANDATORY — regardless of gestational age. Stabilise maternal condition first (control BP, seizures), then plan mode of delivery.",
Inches(0.35), Inches(1.82), Inches(12.6), Inches(0.65),
bg=CORAL, fg=WHITE, size=13.5, border=CORAL)
# Mode of delivery
colored_box(slide, "MODE OF DELIVERY", Inches(0.35), Inches(2.62), Inches(6.0), Inches(0.42),
bg=DARK_MAROON, fg=WHITE, size=13.5)
md_items = [
"LSCS preferred at 28 wks (unfavorable cervix)",
"Induction of labour (IOL) if cervix is favorable",
"Prostaglandin / Oxytocin for IOL if chosen",
"Continuous EFM intrapartum (CTG)",
"Epidural analgesia preferred (BP control)",
"Avoid Ergometrine for 3rd stage (raises BP)",
"Use Oxytocin 5-10 IU IV slow for 3rd stage",
"Syntocinon infusion 30 IU in 500 mL NS",
]
add_bullet_box(slide, md_items, Inches(0.35), Inches(3.06), Inches(6.0), Inches(3.1),
bg_color=LIGHT_PINK, border_color=DARK_MAROON, bullet_size=12)
# Intrapartum care
colored_box(slide, "INTRAPARTUM & POSTPARTUM CARE", Inches(6.55), Inches(2.62), Inches(6.4), Inches(0.42),
bg=STEEL, fg=WHITE, size=13.5)
ip_items = [
"Continue MgSO4 through labour and 24h postpartum",
"IV antihypertensives during active labour",
"Target BP: 140-155/90-100 mmHg",
"Restrict IV fluids to 80-125 mL/hr (pulm. edema risk)",
"Avoid diuretics (worsens intravascular depletion)",
"Urine output >25 mL/hr mandatory",
"Postpartum: Continue MgSO4 × 24-48h after delivery",
"Antihypertensives for ≥6 weeks postpartum",
"Monitor for HELLP, AKI, pulmonary edema postpartum",
]
add_bullet_box(slide, ip_items, Inches(6.55), Inches(3.06), Inches(6.4), Inches(3.1),
bg_color=LIGHT_STEEL, border_color=STEEL, bullet_size=12)
colored_box(slide,
"NEONATAL TEAM: Alert NICU team in advance. Expect preterm baby (~28 wks) requiring intensive neonatal care. Cord blood gases. Delayed cord clamping if stable. Vitamin K prophylaxis.",
Inches(0.35), Inches(6.3), Inches(12.6), Inches(0.65),
bg=DARK_MAROON, fg=WHITE, size=12)
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 13 – HELLP SYNDROME
# ══════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_title_bar(slide, "HELLP SYNDROME — Know the Complication", "H=Haemolysis E=Elevated Liver enzymes L=Low Platelets")
colored_box(slide,
"HELLP = Severe variant of preeclampsia. Can occur without hypertension or proteinuria. May present with epigastric/RUQ pain, nausea, malaise. Recognize early — high maternal mortality if missed.",
Inches(0.35), Inches(1.82), Inches(12.6), Inches(0.65),
bg=LIGHT_ORANGE, fg=RGBColor(0x7B,0x3F,0x00), size=12.5, border=AMBER)
# Three panels
hellp_cols = [
("CRITERIA", DARK_MAROON, LIGHT_PINK, CORAL, [
"Haemolysis:",
" Abnormal blood smear",
" LDH ≥600 U/L",
" Bilirubin ≥1.2 mg/dL",
"Elevated Liver Enzymes:",
" AST ≥70 U/L",
" ALT elevated",
"Low Platelets:",
" Platelets <100,000/μL",
]),
("CLINICAL FEATURES", CORAL, RGBColor(0xFF,0xF0,0xF0), CORAL, [
"RUQ / epigastric pain (most common)",
"Nausea, vomiting, malaise",
"Headache, visual changes",
"Hypertension (may be absent)",
"Edema may be severe",
"Can mimic hepatitis, cholecystitis, TTP",
"Can occur without proteinuria",
"Postpartum onset in 30% of cases",
]),
("MANAGEMENT", STEEL, LIGHT_STEEL, STEEL, [
"Stabilise: MgSO4 + antihypertensives",
"Correct coagulopathy (FFP, platelets)",
"Platelet transfusion if <50,000 (for LSCS)",
"Dexamethasone 10 mg IV q12h (some centres)",
"DELIVERY is definitive treatment",
"Deliver at ≥34 wk or if deteriorating",
"HDU/ICU level care post-delivery",
"Risk of DIC, AKI, hepatic rupture",
]),
]
for i, (title, hdr_bg, item_bg, item_bd, items) in enumerate(hellp_cols):
lft = Inches(0.35 + i * 4.35)
colored_box(slide, title, lft, Inches(2.6), Inches(4.1), Inches(0.42), bg=hdr_bg, fg=WHITE, size=13.5)
add_bullet_box(slide, items, lft, Inches(3.04), Inches(4.1), Inches(2.95),
bg_color=item_bg, border_color=item_bd, bullet_size=12)
colored_box(slide,
"ALWAYS CHECK: CBC, LFTs, LDH, peripheral smear in severe preeclampsia. Early HELLP diagnosis prevents life-threatening complications.",
Inches(0.35), Inches(6.18), Inches(12.6), Inches(0.62),
bg=DARK_MAROON, fg=WHITE, size=13)
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 14 – PATHOPHYSIOLOGY OVERVIEW
# ══════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_title_bar(slide, "PATHOPHYSIOLOGY OF PREECLAMPSIA", "Understanding the Disease Cascade")
# Two-column
colored_box(slide, "NORMAL vs. PREECLAMPTIC PLACENTATION", Inches(0.35), Inches(1.82), Inches(12.6), Inches(0.42),
bg=DARK_MAROON, fg=WHITE, size=13.5)
left_items = [
"NORMAL PLACENTATION:",
" Cytotrophoblast invasion of spiral arteries",
" Arteries remodelled → wide, low resistance",
" Adequate uteroplacental blood flow",
" Normal fetal growth",
"",
"PREECLAMPTIC PLACENTATION:",
" Defective trophoblast invasion",
" Spiral arteries remain narrow, high resistance",
" Reduced uteroplacental flow → placental ischaemia",
" Release of anti-angiogenic factors (sFlt-1, sEng)",
" Excess sFlt-1 binds free VEGF and PlGF",
" Endothelial dysfunction throughout mother",
]
add_bullet_box(slide, left_items, Inches(0.35), Inches(2.27), Inches(6.3), Inches(3.9),
bg_color=LIGHT_PINK, border_color=CORAL, bullet_size=12)
right_items = [
"ENDOTHELIAL DYSFUNCTION LEADS TO:",
" Vasoconstriction → Hypertension",
" Proteinuria → Glomerular endotheliosis",
" Oedema → Capillary leak, hypoalbuminaemia",
" CNS: Cerebral vasospasm → Headache, seizures",
" Liver: Capsule oedema → RUQ pain, HELLP",
" Haematology: Thrombocytopenia, haemolysis",
" Renal: AKI (creatinine rise, oliguria)",
" Fetal: FGR, oligohydramnios, IUFD",
"",
"ANTI-ANGIOGENIC IMBALANCE:",
" ↑ sFlt-1 : PlGF ratio = diagnostic marker",
" sFlt-1:PlGF >38 = high risk preeclampsia",
]
add_bullet_box(slide, right_items, Inches(6.7), Inches(2.27), Inches(6.25), Inches(3.9),
bg_color=LIGHT_STEEL, border_color=STEEL, bullet_size=12)
colored_box(slide,
"KEY CONCEPT: Delivery is the ONLY cure. Treatment is directed at palliation — preventing maternal end-organ damage while optimising fetal maturity.",
Inches(0.35), Inches(6.35), Inches(12.6), Inches(0.6),
bg=DARK_MAROON, fg=WHITE, size=13)
# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 15 – CASE SUMMARY & KEY TEACHING POINTS
# ══════════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_title_bar(slide, "CASE SUMMARY & KEY TEACHING POINTS", "Clinical Pearls — Remember These!")
summary_items = [
("1. DIAGNOSIS: Preeclampsia with severe features (BP 160/100 + 3+ proteinuria at 28 wks)", 0),
("2. ADMIT: All cases of severe preeclampsia at preterm gestation require INPATIENT management", 0),
("3. INVESTIGATIONS: Full maternal labs + daily NST + UA Doppler + BPP + serial growth scans", 0),
("4. ANTIHYPERTENSIVES: Labetalol IV (acute) or Nifedipine SR (oral). Maintain DBP 90-100 mmHg", 0),
("5. MgSO4: MANDATORY for seizure prophylaxis in severe preeclampsia (Zuspan or Pritchard regimen)", 0),
("6. STEROIDS: Betamethasone × 2 doses for fetal lung maturity at < 34 weeks gestation", 0),
("7. DOPPLER: UA Doppler essential when FH < GA — guides expectant management and delivery timing", 0),
("8. IMPENDING ECLAMPSIA: Severe headache + visual changes = red flag → escalate immediately", 0),
("9. ECLAMPSIA MANAGEMENT: ABC, left lateral, O2, MgSO4 4-6g IV → maintain → deliver ASAP", 0),
("10. HELLP SYNDROME: Screen with LFTs, LDH, platelets in all severe preeclampsia cases", 0),
("11. POSTPARTUM: Continue MgSO4 × 24-48h, antihypertensives ×6 wks; BP may worsen 3-5 days post-delivery", 0),
("12. DELIVERY is the ONLY CURE for preeclampsia. Everything else is temporising.", 0),
]
add_bullet_box(slide, summary_items, Inches(0.35), Inches(1.82), Inches(12.6), Inches(5.2),
bg_color=LIGHT_STEEL, border_color=DARK_MAROON, bullet_size=12.5)
colored_box(slide,
"Remember: Preeclampsia is a disease of theories — but the management is clear. Protect the mother. Optimise the fetus. Deliver at the right time.",
Inches(0.35), Inches(7.08), Inches(12.6), Inches(0.3),
bg=DARK_MAROON, fg=WHITE, size=12, bold=True)
# ══════════════════════════════════════════════════════════════════════════════
# SAVE
# ══════════════════════════════════════════════════════════════════════════════
output_path = "/tmp/workspace/preeclampsia-obgy-ppt/Preeclampsia_Eclampsia_OBGY.pptx"
buf = BytesIO()
prs.save(buf)
with open(output_path, "wb") as f:
f.write(buf.getvalue())
print(f"Saved: {output_path}")
print(f"Slides: {len(prs.slides)}")
cd /tmp/workspace/preeclampsia-obgy-ppt && python build_ppt.py
Preeclampsia Eclampsia OBGY
Presentation · PPTX
| Doppler | Significance |
|---|---|
| Umbilical Artery | Elevated S/D ratio = placental insufficiency. Absent/Reversed EDF = delivery mandatory |
| MCA Doppler | Low PI = brain-sparing = fetal redistribution (severe FGR) |
| Ductus Venosus | Absent/reversed 'a' wave = imminent fetal acidosis → deliver within 24-48h |
| Uterine Artery | Bilateral notching = high resistance = uteroplacental disease |
| Slide | Content |
|---|---|
| 1 | Title Slide |
| 2 | Case Presentation |
| 3 | Diagnosis — Preeclampsia with Severe Features |
| 4 | Initial Investigations |
| 5 | Inpatient vs Outpatient Decision |
| 6 | Antihypertensive Management (drug table) |
| 7 | Magnesium Sulfate Protocol (Zuspan + Pritchard) |
| 8 | Role of Doppler in FGR + Preeclampsia |
| 9 | Corticosteroids + Delivery Plan |
| 10 | Scenario 2: Impending Eclampsia |
| 11 | Scenario 3: Eclampsia — Tonic-Clonic Seizure |
| 12 | Post-Eclampsia Delivery & Intrapartum Care |
| 13 | HELLP Syndrome — Criteria & Management |
| 14 | Pathophysiology (Spiral artery defect → Endothelial dysfunction) |
| 15 | Case Summary & 12 Key Teaching Points |