Peripartum Cardiomyopathy

Reading File
Reading File
Finding Sources
Finding Sources
Searching PubMed

"peripartum cardiomyopathy"

Searching Images

peripartum cardiomyopathy

Diagnostic Image: This composite shows three Cardiac Magnetic Resonance (CMR) images of a patient with peripartum cardiomyopathy. (a) Cine long-axis four-chamber view in an end-diastolic frame, demonstrating a mildly dilated left ventricular (LV) cavity. (b) Short-axis view using late gadolinium enhancement (LGE) technique, revealing a clear area of mid-wall enhancement in the basal inferolateral wall (white arrow). (c) Three-chamber view further confirming the presence of mid-wall LGE in the basal inferolateral wall (white arrow). The pattern of LGE is non-ischemic (mid-wall rather than subendocardial or transmural), which is a key educational feature for distinguishing peripartum cardiomyopathy or myocarditis from coronary artery disease. This visual set illustrates the role of CMR in identifying myocardial fibrosis and assessing LV remodeling in peripartum heart failure cases, which has significant prognostic implications for recovery and future pregnancies.

Diagnostic Image: This composite shows three Cardiac Magnetic Resonance (CMR) images of a patient with peripartum cardiomyopathy. (a) Cine long-axis four-chamber view in an end-diastolic frame, demonstrating a mildly dilated left ventricular (LV) cavity. (b) Short-axis view using late gadolinium enhancement (LGE) technique, revealing a clear area of mid-wall enhancement in the basal inferolateral wall (white arrow). (c) Three-chamber view further confirming the presence of mid-wall LGE in the basal inferolateral wall (white arrow). The pattern of LGE is non-ischemic (mid-wall rather than subendocardial or transmural), which is a key educational feature for distinguishing peripartum cardiomyopathy or myocarditis from coronary artery disease. This visual set illustrates the role of CMR in identifying myocardial fibrosis and assessing LV remodeling in peripartum heart failure cases, which has significant prognostic implications for recovery and future pregnancies.

Diagnostic Image: Side-by-side comparison of cardiovascular magnetic resonance (CMR) imaging in a four-chamber view. The left panel demonstrates the heart in end-diastole, and the right panel demonstrates end-systole. The imaging highlights structural and functional abnormalities of the right ventricular (RV) free wall. White arrows point to multiple discrete aneurysmal outpouchings and areas of focal dyskinesia along the RV free wall, which become more prominent during systolic contraction in the right panel. An apical aneurysm of the left ventricle is also visible. These features are clinically significant for the assessment of cardiomyopathies, specifically suggesting an overlap between Peripartum Cardiomyopathy (PPCM) and Arrhythmogenic Right Ventricular Cardiomyopathy (ARVC). The image serves as an educational tool for identifying segmental wall motion abnormalities and structural remodeling in complex cardiovascular disease.

Diagnostic Image: Side-by-side comparison of cardiovascular magnetic resonance (CMR) imaging in a four-chamber view. The left panel demonstrates the heart in end-diastole, and the right panel demonstrates end-systole. The imaging highlights structural and functional abnormalities of the right ventricular (RV) free wall. White arrows point to multiple discrete aneurysmal outpouchings and areas of focal dyskinesia along the RV free wall, which become more prominent during systolic contraction in the right panel. An apical aneurysm of the left ventricle is also visible. These features are clinically significant for the assessment of cardiomyopathies, specifically suggesting an overlap between Peripartum Cardiomyopathy (PPCM) and Arrhythmogenic Right Ventricular Cardiomyopathy (ARVC). The image serves as an educational tool for identifying segmental wall motion abnormalities and structural remodeling in complex cardiovascular disease.

This diagnostic ultrasound image shows a grayscale transthoracic echocardiogram (TTE) in the apical four-chamber (A4C) view. The image demonstrates a significantly dilated and globular left ventricle (LV), which has lost its normal elliptical shape, indicative of dilated cardiomyopathy. All four cardiac chambers are visible: the left ventricle, right ventricle, left atrium, and right atrium. The left ventricle appears disproportionately large compared to the right-sided chambers, and there is evidence of global hypokinesia suggested by the myocardial wall appearance. The interventricular septum and mitral valve apparatus are visible, though the valve leaflets appear stretched due to ventricular remodeling. This clinical finding is characteristic of severe systolic dysfunction, such as peripartum cardiomyopathy, consistent with a reduced ejection fraction. A synchronized ECG tracing is visible in the lower-left corner for timing the cardiac cycle during the imaging study.

This diagnostic ultrasound image shows a grayscale transthoracic echocardiogram (TTE) in the apical four-chamber (A4C) view. The image demonstrates a significantly dilated and globular left ventricle (LV), which has lost its normal elliptical shape, indicative of dilated cardiomyopathy. All four cardiac chambers are visible: the left ventricle, right ventricle, left atrium, and right atrium. The left ventricle appears disproportionately large compared to the right-sided chambers, and there is evidence of global hypokinesia suggested by the myocardial wall appearance. The interventricular septum and mitral valve apparatus are visible, though the valve leaflets appear stretched due to ventricular remodeling. This clinical finding is characteristic of severe systolic dysfunction, such as peripartum cardiomyopathy, consistent with a reduced ejection fraction. A synchronized ECG tracing is visible in the lower-left corner for timing the cardiac cycle during the imaging study.

Let me read the key textbook sections.
Reading File
Reading File
Reading File

Peripartum Cardiomyopathy (PPCM)

Definition

PPCM is heart failure from left ventricular systolic dysfunction. It appears in the last month of pregnancy or up to 5 months postpartum, with no other identifiable cause. Harrison's allows a slightly wider window, from the last trimester to 5-6 months postpartum. It usually presents within the first week or two after delivery. The usual criterion is LVEF below 45%.
  • Harrison's Principles of Internal Medicine 22E, p. 2060-2061
  • Goldman-Cecil Medicine, p. 2587

Epidemiology and risk factors

  • Incidence: About 1 in 1000 pregnancies worldwide. It is about 1 in 2230 births in the US, up from 1 in 4350 in the early 1990s. It is much higher in parts of Africa (up to 1 in 100) and in Haiti (about 1 in 300).
  • Ethnicity: Black women have a 4- to 15-fold higher risk. They also recover LVEF less often and more slowly.
  • Risk factors: Older maternal age, higher parity, twin or multifetal pregnancy, malnutrition, tocolytic therapy, obesity, and fertility treatment.
  • Hypertensive disorders: Up to half of cases occur with preeclampsia or other hypertensive disorders of pregnancy. Preeclampsia affects about 25% of PPCM patients versus 5% in the general population.
  • Sources: Harrison's 22E, p. 2060; Goldman-Cecil, p. 2587; Creasy & Resnik's Maternal-Fetal Medicine, p. 1262

Pathophysiology

The "two-hit" or vasculohormonal model is the current view.
  1. Genetic susceptibility. Truncating variants are found in about 15% of cases, mostly in TTN (titin). Others reported include TNNC1 and STAT3. These variants predict lower rates of LVEF recovery. Pregnancy acts as a trigger on an underlying genetic cardiomyopathy.
  2. Prolactin cleavage. Oxidative stress in late pregnancy cleaves prolactin into a 16-kDa fragment (vasoinhibin). This fragment is vasotoxic and proinflammatory, and it impairs endothelial and cardiomyocyte function.
  3. Angiogenic imbalance. The placenta releases soluble fms-like tyrosine kinase 1 (sFlt-1), which inhibits VEGF. High levels predict a worse outcome.

Clinical presentation

  • Dyspnea, orthopnea, edema, fatigue, and cough. These are easily mistaken for normal late-pregnancy symptoms.
  • Atrial and ventricular arrhythmias can occur.
  • Thromboembolism can occur, including LV thrombus.
  • Clues that point to cardiac disease: elevated BNP or NT-proBNP, elevated troponin, raised JVP, and hypertension.

Diagnosis

PPCM is a diagnosis of exclusion.
  • Echocardiography: Diffuse systolic dysfunction with LVEF below 45%, or fractional shortening below 30%, or LV end-diastolic dimension above 2.7 cm/m². The LV is often dilated and globular.
  • Exclude other causes:
    • Pulmonary embolism
    • Coronary dissection, suggested by segmental wall motion abnormality
    • Valvular or pericardial disease
    • Preexisting cardiomyopathy
    • Hypertensive heart disease or severe preeclampsia
    • Sepsis
    • Tocolytic β-agonist effect
  • Other tests: ECG, BNP, troponin, and chest X-ray.
  • Cardiac MRI: Consider it in complex cases. Harrison's advises against gadolinium during pregnancy.
  • Genetic testing: Consider it, because the result affects prognosis and family screening.
CMR in peripartum cardiomyopathy showing mid-wall late gadolinium enhancement
Echocardiogram apical four-chamber view with dilated globular LV

Management

Treatment follows standard heart failure care, adjusted for pregnancy and lactation.
Before delivery
  • Involve maternal-fetal medicine, cardiology, and anesthesia early.
  • Diuretics: Loop diuretics to restore euvolemia.
  • Hypertension and afterload: Hydralazine plus nitrates.
  • Rate and rhythm: Beta-blockers (metoprolol preferred) and digoxin as needed.
  • Avoid: ACE inhibitors, ARBs, ARNI (sacubitril/valsartan), and MRAs in pregnancy, because of fetal toxicity.
  • Delivery: If diagnosed before delivery, prompt delivery after maternal stabilization is typically recommended. Have a plan for emergency delivery if the patient is unstable.
  • Severe or shock presentation: Hemodynamic monitoring, inotropes, and mechanical circulatory support, with early referral to an advanced heart failure center.
After delivery (full guideline-directed medical therapy)
  • Enalapril, metoprolol, and spironolactone are compatible with breastfeeding.
  • Add an ARNI, SGLT2 inhibitor, and other agents per standard HFrEF care when appropriate. I did not find these specifics in the retrieved textbook sections.
Anticoagulation
  • Consider it when LVEF is below 35% or the LV is markedly dilated. Thrombus risk is higher in those patients.
  • Harrison's suggests about 6 weeks once obstetric bleeding has resolved.
  • Use LMWH or UFH during pregnancy. Warfarin is not recommended in pregnancy.
Bromocriptine
  • It blocks prolactin release. Small trials suggested improved LVEF, but Harrison's, Goldman-Cecil, and Creasy & Resnik's all describe the evidence as mixed or controversial.
  • Harrison's refers to an ongoing large randomized trial.
  • If used, give it with anticoagulation because of thrombosis risk. Goldman-Cecil lists 1.25 to 2.5 mg daily, and advises against breastfeeding when it is used.
Breastfeeding
  • It was once prohibited. Harrison's now says it is generally encouraged if fluid balance can be maintained.
  • Some experts still advise stopping lactation in severe cases.
Device therapy
  • Delay ICD placement. Many women recover LVEF, so reassess after about 3 to 6 months of optimal therapy.
  • A wearable cardioverter-defibrillator can bridge this period.

Prognosis

  • LVEF recovers to 50% or higher in about 50 to 80% of patients, mostly within the first 6 to 12 months.
  • Recovery is less likely with a lower LVEF at diagnosis, marked LV dilation, Black race, or truncating TTN variants.
  • Outcomes are worse where treatment is delayed. Complications include arrhythmia, thromboembolism, and death.
Subsequent pregnancy
  • Recurrent heart failure occurred in about 20% of women whose LVEF had normalized, with no deaths in that study.
  • It occurred in about 40% of women with persistent LV dysfunction, with 19% maternal mortality.
  • Counsel women with persistent dysfunction to avoid pregnancy.
  • Women who recovered still need preconception counseling and close monitoring.
  • Source: Creasy & Resnik's Maternal-Fetal Medicine, p. 1262

Recent evidence check

A search for recent systematic reviews and meta-analyses found three relevant papers. None appears to overturn the textbook account. I read only the titles, not the abstracts or full texts.
Bromocriptine guidance may have been updated since these textbook editions. I did not check current society guidelines (ESC or AHA), so verify them before making clinical decisions.
I can go deeper on any section, such as the ICD timeline, cardiogenic shock management, or counseling for a future pregnancy.

Make a presentation on peripartum cardiomyopathy

Reading File
Running Command

ls -la /tmp/workspace/

Reading File
Running Command

mkdir -p /tmp/workspace/ppcm-ppt/assets /tmp/workspace/ppcm-ppt/output && cd /tmp/workspace/ppcm-ppt && python /tmp/skills/shared/scripts/fetch_images.py "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_13184dd474c9764ad9d2546824a0c62b7b925a997939cf4d2e4f2d0a7548fd85.jpg" "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_3688b3545ca9c29e7a1da2830a40120813d60f7296bc5ade361203573d470401.jpg" > assets/imgs.json; python -c " import json,base64 from PIL import Image from io import BytesIO d=json.load(open('assets/imgs.json')) for i,x in enumerate(d): print(x['error'], x['base64'][:30] if x['base64'] else None) if x['base64']: raw=base64.b64decode(x['base64'].split('base64,')[1]); open(f'assets/img{i}.jpg','wb').write(raw); print(Image.open(BytesIO(raw)).size) "

Writing File

~/ppcm-ppt/src/build.py

from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.enum.shapes import MSO_SHAPE

NAVY = RGBColor(0x14, 0x23, 0x3F)
ROSE = RGBColor(0xC2, 0x3B, 0x5A)
LIGHT = RGBColor(0xF6, 0xF3, 0xF1)
GREY = RGBColor(0x55, 0x5B, 0x66)
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
SOFT = RGBColor(0xFB, 0xE9, 0xED)
FONT = "Calibri"

prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
BLANK = prs.slide_layouts[6]


def rect(s, x, y, w, h, fill, shape=MSO_SHAPE.RECTANGLE):
    r = s.shapes.add_shape(shape, Inches(x), Inches(y), Inches(w), Inches(h))
    r.fill.solid()
    r.fill.fore_color.rgb = fill
    r.line.fill.background()
    r.shadow.inherit = False
    return r


def text(s, x, y, w, h, t, size=18, bold=False, color=NAVY, align=PP_ALIGN.LEFT,
         anchor=MSO_ANCHOR.TOP):
    tb = s.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
    tf = tb.text_frame
    tf.word_wrap = True
    tf.vertical_anchor = anchor
    tf.margin_left = tf.margin_right = Inches(0.05)
    tf.margin_top = tf.margin_bottom = Inches(0.03)
    p = tf.paragraphs[0]
    p.alignment = align
    r = p.add_run()
    r.text = t
    r.font.size = Pt(size)
    r.font.bold = bold
    r.font.color.rgb = color
    r.font.name = FONT
    return tb


def bullets(s, x, y, w, h, items, size=18, color=NAVY, gap=6):
    tb = s.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
    tf = tb.text_frame
    tf.word_wrap = True
    tf.margin_left = tf.margin_right = Inches(0.05)
    for i, it in enumerate(items):
        p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
        p.space_after = Pt(gap)
        if isinstance(it, tuple):
            head, body = it
            r1 = p.add_run()
            r1.text = "\u2022  " + head + " "
            r1.font.bold = True
            r1.font.size = Pt(size)
            r1.font.color.rgb = ROSE
            r1.font.name = FONT
            r2 = p.add_run()
            r2.text = body
            r2.font.size = Pt(size)
            r2.font.color.rgb = color
            r2.font.name = FONT
        else:
            r = p.add_run()
            r.text = "\u2022  " + it
            r.font.size = Pt(size)
            r.font.color.rgb = color
            r.font.name = FONT
    return tb


def content_slide(title, subtitle=None):
    s = prs.slides.add_slide(BLANK)
    bg = s.background.fill
    bg.solid()
    bg.fore_color.rgb = WHITE
    rect(s, 0, 0, 0.25, 7.5, ROSE)
    text(s, 0.6, 0.4, 12, 0.8, title, size=32, bold=True)
    if subtitle:
        text(s, 0.6, 1.1, 12, 0.5, subtitle, size=16, color=GREY)
    return s


def footer(s, n, src):
    text(s, 0.6, 7.0, 10.5, 0.35, src, size=11, color=GREY)
    text(s, 12.0, 7.0, 0.8, 0.35, str(n), size=11, color=GREY, align=PP_ALIGN.RIGHT)


def card(s, x, y, w, h, head, body_items, head_fill=NAVY, size=15):
    rect(s, x, y, w, h, LIGHT)
    rect(s, x, y, w, 0.6, head_fill)
    text(s, x + 0.1, y, w - 0.2, 0.6, head, size=18, bold=True, color=WHITE,
         anchor=MSO_ANCHOR.MIDDLE)
    bullets(s, x + 0.15, y + 0.75, w - 0.3, h - 0.85, body_items, size=size, gap=5)


def stat(s, x, y, w, big, small, fill=ROSE):
    rect(s, x, y, w, 1.9, fill)
    text(s, x, y + 0.1, w, 0.9, big, size=40, bold=True, color=WHITE, align=PP_ALIGN.CENTER,
         anchor=MSO_ANCHOR.MIDDLE)
    text(s, x + 0.15, y + 1.0, w - 0.3, 0.85, small, size=14, color=WHITE,
         align=PP_ALIGN.CENTER)


# 1 Title
s = prs.slides.add_slide(BLANK)
s.background.fill.solid()
s.background.fill.fore_color.rgb = NAVY
rect(s, 0.8, 2.3, 0.12, 2.2, ROSE)
text(s, 1.2, 2.2, 11, 1.2, "Peripartum Cardiomyopathy", size=50, bold=True, color=WHITE)
text(s, 1.2, 3.4, 11, 0.8, "Pathophysiology, diagnosis, management and prognosis", size=24,
     color=RGBColor(0xE8, 0xC4, 0xCD))
text(s, 1.2, 4.2, 11, 0.5, "Based on Harrison's 22E, Goldman-Cecil, Creasy & Resnik's, Braunwald and Fuster",
     size=14, color=RGBColor(0xB8, 0xC0, 0xCF))

# 2 Definition
s = content_slide("What is peripartum cardiomyopathy?")
rect(s, 0.6, 1.5, 12.1, 1.5, SOFT)
text(s, 0.85, 1.55, 11.6, 1.4,
     "Heart failure from left ventricular systolic dysfunction that develops in the last month "
     "of pregnancy or within 5 months after delivery, with no other identifiable cause.",
     size=22, bold=True, anchor=MSO_ANCHOR.MIDDLE)
bullets(s, 0.6, 3.3, 6.0, 3.5, [
    ("Timing:", "most cases present in the first week or two after delivery"),
    ("LVEF:", "usually below 45% (some definitions use 45% or less)"),
    ("Type:", "a dilated cardiomyopathy phenotype with a diagnosis of exclusion"),
], size=18)
rect(s, 7.0, 3.3, 5.7, 3.2, NAVY)
text(s, 7.2, 3.4, 5.3, 0.5, "Why it matters", size=20, bold=True, color=WHITE)
bullets(s, 7.2, 4.0, 5.3, 2.5, [
    "Cardiovascular conditions cause over 33% of pregnancy-related deaths in the US",
    "Easy to miss: late-pregnancy dyspnea and edema look normal",
    "Can recur in later pregnancies",
], size=16, color=WHITE)
footer(s, 2, "Harrison's 22E, p. 2060; Goldman-Cecil Medicine, p. 2587")

# 3 Epidemiology
s = content_slide("Epidemiology and risk factors")
stat(s, 0.6, 1.5, 3.8, "~1 in 1000", "pregnancies worldwide; varies by region")
stat(s, 4.75, 1.5, 3.8, "1 in 2230", "US births now, up from 1 in 4350 in the early 1990s", fill=NAVY)
stat(s, 8.9, 1.5, 3.8, "up to 1 in 100", "in parts of Africa (about 1 in 300 in Haiti)")
text(s, 0.6, 3.65, 6, 0.5, "Risk factors", size=22, bold=True, color=ROSE)
bullets(s, 0.6, 4.15, 6.0, 2.8, [
    "Older maternal age and higher parity",
    "Twin or multifetal pregnancy",
    "Malnutrition and obesity",
    "Tocolytic therapy and fertility treatment",
], size=17)
bullets(s, 6.9, 4.15, 5.8, 2.8, [
    ("Hypertensive disorders:", "up to half of cases; preeclampsia in about 25% vs 5% in the general population"),
    ("Ethnicity:", "Black women have a 4- to 15-fold higher risk and recover less often"),
], size=17)
footer(s, 3, "Harrison's 22E, p. 2060; Goldman-Cecil, p. 2587; Creasy & Resnik's, p. 1262")

# 4 Pathophysiology
s = content_slide("Pathophysiology: a multi-hit model",
                  "Pregnancy triggers cardiac injury in genetically or vascularly susceptible women")
card(s, 0.6, 1.8, 3.9, 4.9, "1. Genetic susceptibility", [
    "Truncating variants in about 15% of cases",
    "Mostly TTN (titin); also TNNC1 and STAT3",
    "Predicts lower LVEF recovery",
    "Pregnancy acts as a trigger on an underlying genetic dilated cardiomyopathy",
])
card(s, 4.72, 1.8, 3.9, 4.9, "2. Prolactin cleavage", [
    "Oxidative stress in late pregnancy",
    "Prolactin is cleaved to a 16-kDa fragment (vasoinhibin)",
    "Fragment is vasotoxic and proinflammatory",
    "Impairs endothelial cells and cardiomyocytes",
], head_fill=ROSE)
card(s, 8.84, 1.8, 3.9, 4.9, "3. Angiogenic imbalance", [
    "Placenta releases sFlt-1, an inhibitor of VEGF",
    "Shared with preeclampsia",
    "High sFlt-1 levels predict a worse outcome",
])
footer(s, 4, "Harrison's 22E, p. 2060; Goldman-Cecil, p. 2588; Creasy & Resnik's, p. 1262")

# 5 Presentation
s = content_slide("Clinical presentation")
card(s, 0.6, 1.5, 6.0, 5.2, "Symptoms and signs", [
    "Dyspnea, orthopnea, fatigue and cough",
    "Peripheral edema, raised JVP, hypertension",
    "Often appears when urine output lags behind postpartum fluid mobilisation",
    "Atrial and ventricular arrhythmias",
    "Thromboembolism, including LV thrombus",
], size=17)
card(s, 6.9, 1.5, 5.8, 5.2, "Clues that it is not normal pregnancy", [
    "Elevated BNP or NT-proBNP",
    "Elevated troponin",
    "Raised central venous pressure",
    "Dyspnea out of proportion, especially with hypertension",
    "Symptoms that start late in pregnancy or postpartum",
], head_fill=ROSE, size=17)
footer(s, 5, "Harrison's 22E, p. 2060-2061; Goldman-Cecil, p. 2588")

# 6 Diagnosis
s = content_slide("Diagnosis: a diagnosis of exclusion")
card(s, 0.6, 1.5, 5.9, 3.0, "Echocardiographic criteria", [
    "Diffuse systolic dysfunction",
    "LVEF below 45%",
    "Fractional shortening below 30%, or LVEDD above 2.7 cm/m\u00b2",
], size=16)
card(s, 0.6, 4.7, 5.9, 2.15, "Other tests", [
    "ECG, BNP, troponin, chest X-ray",
    "Cardiac MRI in complex cases, without gadolinium in pregnancy",
    "Consider genetic testing",
], head_fill=ROSE, size=15)
card(s, 6.8, 1.5, 5.9, 5.35, "Exclude other causes", [
    "Pulmonary embolism",
    "Coronary artery dissection (segmental wall motion abnormality)",
    "Valvular or pericardial disease",
    "Preexisting or familial cardiomyopathy",
    "Hypertensive heart disease and superimposed preeclampsia",
    "Sepsis",
    "Tocolytic beta-agonist effect (for example terbutaline)",
], size=16)
footer(s, 6, "Goldman-Cecil, p. 2588; Harrison's 22E, p. 2060-2061; Creasy & Resnik's, p. 1262")

# 7 Imaging
s = content_slide("Imaging findings")
s.shapes.add_picture("/tmp/workspace/ppcm-ppt/assets/img1.jpg", Inches(0.6), Inches(1.5),
                     height=Inches(3.9))
text(s, 0.6, 5.5, 5.0, 1.3,
     "Echocardiography, apical four-chamber view: dilated, globular left ventricle with "
     "global hypokinesis and severe systolic dysfunction.", size=14, color=GREY)
s.shapes.add_picture("/tmp/workspace/ppcm-ppt/assets/img0.jpg", Inches(6.5), Inches(1.5),
                     width=Inches(6.2))
text(s, 6.5, 3.2, 6.2, 1.8,
     "Cardiac MRI: mildly dilated LV (cine four-chamber) with non-ischemic mid-wall late "
     "gadolinium enhancement in the basal inferolateral wall (arrows). Gadolinium is avoided "
     "during pregnancy.", size=14, color=GREY)
rect(s, 6.5, 5.1, 6.2, 1.6, SOFT)
text(s, 6.65, 5.15, 5.9, 1.5,
     "Echo is usually sufficient for diagnosis. MRI helps separate PPCM from myocarditis or "
     "ischemia and gives prognostic information on fibrosis.", size=15, anchor=MSO_ANCHOR.MIDDLE)
footer(s, 7, "Images: Orris medical image library (case figures from PMC sources)")

# 8 Management before delivery
s = content_slide("Management before delivery", "Standard heart failure care, adjusted for the fetus")
card(s, 0.6, 1.8, 6.0, 4.9, "Use", [
    ("Diuretics:", "loop diuretics to restore euvolemia"),
    ("Afterload:", "hydralazine plus nitrates"),
    ("Rate and rhythm:", "beta-blockers (metoprolol) and digoxin"),
    ("Delivery:", "prompt delivery after maternal stabilisation when diagnosed before birth"),
    ("Shock:", "inotropes, mechanical support, advanced HF centre"),
], size=16)
card(s, 6.9, 1.8, 5.8, 3.1, "Avoid in pregnancy", [
    "ACE inhibitors, ARBs and sacubitril/valsartan",
    "Mineralocorticoid antagonists",
    "Warfarin (use LMWH or UFH if anticoagulating)",
], head_fill=ROSE, size=16)
rect(s, 6.9, 5.1, 5.8, 1.6, SOFT)
text(s, 7.05, 5.15, 5.5, 1.5,
     "Involve maternal-fetal medicine, cardiology and anesthesia early, and plan for "
     "emergency delivery if the mother is unstable.", size=15, anchor=MSO_ANCHOR.MIDDLE)
footer(s, 8, "Harrison's 22E, p. 2061; Creasy & Resnik's, p. 1262-1263; Goldman-Cecil, p. 2588")

# 9 Postpartum management
s = content_slide("Management after delivery")
card(s, 0.6, 1.5, 4.0, 5.3, "Drug therapy", [
    "Full guideline-directed HF therapy once stable",
    "Enalapril, metoprolol and spironolactone are compatible with breastfeeding",
    "Titrate as for other forms of HFrEF",
], size=15)
card(s, 4.75, 1.5, 4.0, 5.3, "Anticoagulation", [
    "Consider when LVEF is below 35% or the LV is markedly dilated",
    "About 6 weeks once obstetric bleeding has resolved",
    "LMWH preferred in pregnancy; avoid warfarin then",
], head_fill=ROSE, size=15)
card(s, 8.9, 1.5, 3.8, 5.3, "Breastfeeding and devices", [
    "Breastfeeding is now generally encouraged if fluid balance is maintained",
    "Delay ICD placement, since many women recover",
    "Reassess LVEF after 3 to 6 months of optimal therapy",
], size=15)
footer(s, 9, "Harrison's 22E, p. 2061; Fuster and Hurst's The Heart 15e (chapter outline). ICD timing from clinical practice")

# 10 Bromocriptine
s = content_slide("Bromocriptine: promising but unproven")
rect(s, 0.6, 1.5, 6.0, 4.9, LIGHT)
text(s, 0.8, 1.6, 5.6, 0.5, "Rationale", size=22, bold=True, color=ROSE)
bullets(s, 0.8, 2.2, 5.6, 4.0, [
    "Dopamine agonist that blocks prolactin release",
    "Targets the 16-kDa prolactin fragment pathway",
    "Small studies showed LVEF improvement",
    "Larger trial data still awaited in the textbook sources",
], size=17)
rect(s, 6.9, 1.5, 5.8, 4.9, NAVY)
text(s, 7.1, 1.6, 5.4, 0.5, "In practice", size=22, bold=True, color=WHITE)
bullets(s, 7.1, 2.2, 5.4, 4.0, [
    "Use is described as controversial",
    "Goldman-Cecil lists 1.25 to 2.5 mg once daily if standard measures fail",
    "Prothrombotic risk, so give with anticoagulation",
    "Breastfeeding is stopped when it is used",
], size=17, color=WHITE)
text(s, 0.6, 6.5, 12, 0.4,
     "Check current ESC or AHA guidance before use; this deck did not review society guidelines.",
     size=14, color=GREY)
footer(s, 10, "Harrison's 22E, p. 2060-2061; Goldman-Cecil, p. 2588; Creasy & Resnik's, p. 1263")

# 11 Prognosis
s = content_slide("Prognosis and subsequent pregnancy")
stat(s, 0.6, 1.5, 3.8, "50-80%", "recover LVEF to 50% or higher, mostly in 6 to 12 months", fill=NAVY)
stat(s, 4.75, 1.5, 3.8, "~20%", "recurrent heart failure in a later pregnancy if LVEF had normalised")
stat(s, 8.9, 1.5, 3.8, "~40%", "recurrence if LV dysfunction persisted; 19% maternal mortality in that study")
card(s, 0.6, 3.75, 6.0, 3.0, "Poorer recovery with", [
    "Lower LVEF or marked LV dilation at diagnosis",
    "Black race",
    "Truncating TTN variants",
], head_fill=ROSE, size=16)
card(s, 6.9, 3.75, 5.8, 3.0, "Counselling", [
    "Advise against pregnancy with persistent LV dysfunction",
    "Recovered women still need preconception review and close monitoring",
], size=16)
footer(s, 11, "Harrison's 22E, p. 2061; Creasy & Resnik's, p. 1262")

# 12 Recent evidence
s = content_slide("Recent evidence")
text(s, 0.6, 1.4, 12, 0.5, "Systematic reviews from the last 2 years (titles reviewed, abstracts not read)",
     size=16, color=GREY)
items = [
    ("2026", "Respiratory-onset PPCM: diagnostic pitfalls and outcomes", "PMID 42219619"),
    ("2025", "Risk factors for PPCM: systematic review and meta-analysis", "PMID 40701904"),
    ("2024", "Outcomes of subsequent pregnancy in PPCM: systematic review and meta-analysis", "PMID 38569669"),
]
y = 2.1
for yr, t, pm in items:
    rect(s, 0.6, y, 12.1, 1.15, LIGHT)
    rect(s, 0.6, y, 1.4, 1.15, ROSE)
    text(s, 0.6, y, 1.4, 1.15, yr, size=24, bold=True, color=WHITE, align=PP_ALIGN.CENTER,
         anchor=MSO_ANCHOR.MIDDLE)
    text(s, 2.2, y, 8.0, 1.15, t, size=17, anchor=MSO_ANCHOR.MIDDLE)
    text(s, 10.3, y, 2.3, 1.15, pm, size=14, color=GREY, anchor=MSO_ANCHOR.MIDDLE)
    y += 1.35
text(s, 0.6, 6.2, 12, 0.6,
     "None appears to overturn the textbook account. Delayed diagnosis remains a recurring problem.",
     size=16, bold=True)
footer(s, 12, "PubMed search, November 2026")

# 13 Take-home
s = prs.slides.add_slide(BLANK)
s.background.fill.solid()
s.background.fill.fore_color.rgb = NAVY
text(s, 0.8, 0.6, 12, 0.9, "Key takeaways", size=36, bold=True, color=WHITE)
rect(s, 0.8, 1.5, 1.2, 0.07, ROSE)
bullets(s, 0.8, 1.9, 11.7, 5, [
    "Think of PPCM in any woman with new dyspnea or edema in late pregnancy or the first months postpartum.",
    "Diagnosis needs LVEF below 45% and exclusion of other causes; BNP and echo are the first steps.",
    "Before delivery use diuretics, hydralazine-nitrates and beta-blockers; avoid ACEi, ARB, ARNI and MRA.",
    "After delivery give full heart failure therapy; consider anticoagulation if LVEF is below 35%.",
    "Bromocriptine remains controversial; delay ICD placement and reassess LVEF at 3 to 6 months.",
    "Most women recover, but later pregnancy carries a real risk of relapse. Counsel early.",
], size=20, color=WHITE, gap=12)

prs.save("/tmp/workspace/ppcm-ppt/output/Peripartum_Cardiomyopathy.pptx")
print("saved")
Running Command

cd /tmp/workspace/ppcm-ppt && python src/build.py

Running Command

ls -R /tmp/workspace/ppcm-ppt | head -30

Running Command

cd /tmp/workspace/ppcm-ppt && python src/build.py && python -c " from pptx import Presentation p=Presentation('output/Peripartum_Cardiomyopathy.pptx'); print(len(p.slides))"

Running Command

cd /tmp/workspace/ppcm-ppt && python -c " from pptx import Presentation from pptx.util import Emu p=Presentation('output/Peripartum_Cardiomyopathy.pptx') for i,s in enumerate(p.slides,1): for sh in s.shapes: if sh.has_text_frame and sh.text_frame.text.strip(): w=sh.width/914400; h=sh.height/914400 tot=0 for para in sh.text_frame.paragraphs: sz=max([r.font.size.pt for r in para.runs] or [12]) cpl=max(1,(w-0.1)*72/(sz*0.5)) n=max(1,-(-len(para.text)//int(cpl))) tot+=n*sz*1.2/72+ (para.space_after.pt/72 if para.space_after else 0) if tot>h+0.05: print(i,round(tot,2),round(h,2),sh.text_frame.text[:50]) "

Slide 3's big stat "up to 1 in 100" is too long for its box, so I'll shrink that font and rebuild.
Running Command

cd /tmp/workspace/ppcm-ppt && python - <<'EOF' import re src=open('src/build.py').read() src=src.replace('text(s, x, y + 0.1, w, 0.9, big, size=40,','text(s, x, y + 0.1, w, 0.9, big, size=(32 if len(big)>9 else 40),') open('src/build.py','w').write(src) EOF python src/build.py && ls -la output

The presentation is ready:

Peripartum Cardiomyopathy

Presentation · PPTX

I couldn't render the slides here, so I haven't seen them. I ran an automated check for text that overflows its box and fixed the one case it found, but please look through the deck for layout problems.
The 13 slides:
  1. Title
  2. Definition and why it matters
  3. Epidemiology and risk factors
  4. Pathophysiology: genetics (TTN), prolactin cleavage, and sFlt-1
  5. Clinical presentation
  6. Diagnosis: echo criteria and exclusions
  7. Imaging: echocardiogram and cardiac MRI figures
  8. Management before delivery
  9. Management after delivery: drugs, anticoagulation, breastfeeding, and ICD timing
  10. Bromocriptine
  11. Prognosis and subsequent pregnancy
  12. Recent evidence: three 2024-2026 systematic reviews
  13. Key takeaways
Sources and gaps:
  • The content comes from Harrison's 22E, Goldman-Cecil, Creasy & Resnik's, and Fuster's chapter outline. Page references are in each slide footer.
  • The ICD timing advice (delay, reassess at 3 to 6 months) is from clinical practice, not the textbook sections I read.
  • For the three recent reviews on slide 12, I read only the titles, not the abstracts.
  • Bromocriptine guidance may have moved on since these textbook editions, and I didn't check current ESC or AHA guidelines.
I can add speaker notes, a case vignette, or an exam-style quiz slide if you want them.
This is a shared conversation. Sign in to Orris to start your own chat.