Hello orris

Hey! How can I help you today?

I’m emergency medicine final year student appearing for exams can you help me

Absolutely! I'm here to help you prep for your Emergency Medicine finals.
Here's what I can do for you:
  • Explain concepts - pathophysiology, mechanisms, clinical presentations
  • Work through cases - clinical scenarios and decision-making
  • Review protocols - ACLS, trauma (ATLS), toxicology, sepsis, etc.
  • Quiz you - spot questions, MCQs, or SAQs on any topic
  • Clarify guidelines - latest management protocols
  • High-yield topics - help you focus on what matters most for exams
I have access to medical textbooks and literature to give you accurate, detailed answers.
What topic would you like to start with?

Okay if I feel difficulty i will ask you

Sounds good! I'll be here whenever you need me. Good luck with your studies! 💪

Can you explain all about stemi and latest stemi guidelines

Reading File
Finding Sources
Searching PubMed

"ST-elevation myocardial infarction" AND "guidelines"

Searching the Web

ACC AHA 2025 STEMI guidelines update latest recommendations

Reading File
Reading File
Reading Web Page

https://www.jacc.org/doi/10.1016/j.jacc.2025.01.018

Reading Article

PMID: 40014670

Reading File
Loading Image
Excellent - I now have comprehensive information. Here is a complete, structured guide to STEMI for your emergency medicine finals:

STEMI - Complete Guide for EM Finals

1. Definition & Pathophysiology

STEMI (ST-Elevation Myocardial Infarction) is a full-thickness (transmural) myocardial infarction caused by complete and sustained occlusion of a coronary artery, almost always by plaque rupture with superimposed thrombus formation. The result is cessation of blood flow to a territory of myocardium, leading to ischemia → injury → infarction if not reversed.
Pathological sequence:
  • Atherosclerotic plaque vulnerability → rupture/erosion
  • Platelet aggregation → thrombus formation
  • Complete coronary occlusion
  • Myocardial ischemia starts within minutes
  • Irreversible necrosis begins at ~20 min (subendocardium first) and progresses toward epicardium ("wavefront" phenomenon)
  • After 6 hours: near-complete transmural necrosis of at-risk territory

2. Clinical Presentation

FeatureClassicAtypical (watch for these!)
Chest painCrushing, pressure, radiation to arm/jawAbsent (especially diabetics, elderly, women)
AssociatedDiaphoresis, nausea, vomiting, dyspneaEpigastric pain, fatigue, syncope
Duration>20 minutes, not relieved by nitratesVariable
High-risk groups for atypical presentations: diabetics, elderly, women, post-transplant patients.

3. ECG Diagnosis

STEMI criteria (must know for exams):
Lead GroupElevation ThresholdTerritory
2 contiguous limb leads≥1 mmInferior (II, III, aVF) or lateral (I, aVL)
2 contiguous precordial leads (V1-V4)≥2 mm men, ≥1.5 mm womenAnterior
V4R≥0.5 mmRight ventricle
ECG evolution:
  1. Hyperacute T waves (earliest, minutes)
  2. ST elevation (injury pattern)
  3. Q wave formation (necrosis, hours)
  4. T wave inversion
  5. ST normalization, persistent Q waves
STEMI equivalents (critical for EM!):
  • De Winter pattern - upsloping ST depression + peaked T waves in V1-V6 (LAD occlusion - no classic STE)
  • Posterior MI - ST depression V1-V3 + tall R wave (do posterior leads V7-V9)
  • Wellens syndrome - biphasic or deeply inverted T waves in V2-V3 (critical LAD stenosis, pre-infarction)
  • LBBB (new or presumed new) - treat as STEMI
  • Sgarbossa criteria - diagnose MI in LBBB
Localization:
TerritoryLeadsArtery
AnteriorV1-V4LAD
LateralI, aVL, V5-V6LCx
InferiorII, III, aVFRCA (80%), LCx (20%)
PosteriorV7-V9, STD V1-V3RCA/LCx
Right ventricleV4RRCA

4. Diagnosis in ED

ECG within 10 minutes of arrival - this is a Class I recommendation.
  • 12-lead ECG: acquire and interpret within 10 minutes
  • Serial ECGs if initial non-diagnostic
  • High-sensitivity troponin (hs-cTn): measure ASAP; repeat at 1-2 hours (rapid rule-in/out) or 3-6 hours (standard protocol)
  • CBC, BMP, coagulation, CXR
  • Echo at bedside if diagnosis uncertain or to assess wall motion

5. Reperfusion - The Core of STEMI Management

The goal is to restore blood flow as fast as possible. Every 30-minute delay in reperfusion increases mortality.

Primary PCI (pPCI) - Preferred Strategy

Time targets (2025 ACC/AHA guidelines):
ScenarioTarget
PCI-capable hospitalFirst medical contact (FMC) to balloon ≤90 minutes
Transfer from non-PCI hospitalFMC to balloon ≤120 minutes
Fibrinolysis if PCI not achievableFMC to needle ≤30 minutes
Note: The concept of "first medical contact to device time" replaces the old "door to balloon" or "door to needle" terminology.
Why PCI > Fibrinolysis: In a large meta-analysis of 23 RCTs, pPCI was superior to thrombolytics at reducing death, reinfarction, and stroke. - Fuster and Hurst's The Heart, 15th Edition

Fibrinolysis - When PCI is Not Available in Time

Indication: When pPCI cannot be performed within 120 minutes of STEMI diagnosis.
Preferred agents: Fibrin-specific agents (tenecteplase, alteplase, reteplase) - give within 10 minutes of STEMI diagnosis.
Absolute contraindications to fibrinolysis:
  • Prior intracranial hemorrhage (any time)
  • Ischemic stroke within 3 months
  • Structural cerebrovascular lesion / intracranial neoplasm
  • Active internal bleeding (not menses)
  • Suspected aortic dissection
  • Significant closed-head/facial trauma within 3 months
Post-fibrinolysis:
  • If successful (≥50% ST resolution at 60-90 min) → angiography within 3-24 hours ("pharmacoinvasive strategy")
  • If failed reperfusion → rescue PCI immediately

6. Pharmacotherapy

ACS Treatment Flowchart

ACS Treatment Algorithm - Tintinalli's Emergency Medicine

Antiplatelet Therapy (DAPT - mandatory)

DrugDoseNotes
Aspirin162-325 mg loading, then 75-100 mg dailyGive immediately
Ticagrelor180 mg load, then 90 mg BDPreferred with pPCI (2025 guidelines)
Prasugrel60 mg load, then 10 mg dailyPreferred with pPCI; avoid if prior stroke/TIA, age >75, weight <60 kg
Clopidogrel600 mg load, then 75 mg dailyUse if ticagrelor/prasugrel unavailable; no loading dose if >75 yrs + fibrinolysis
2025 ACC/AHA Key Update on DAPT:
  • DAPT for ≥12 months post-ACS for low bleeding risk
  • Transition to ticagrelor monotherapy ≥1 month post-PCI is now Class I to reduce bleeding (new recommendation)
  • Shorter DAPT (1-3 months) reasonable in selected high-bleeding-risk patients, then P2Y12 monotherapy

Anticoagulation

DrugSettingDose
UFH (unfractionated heparin)Primary PCI70-100 U/kg IV bolus (without GPI); 50-70 U/kg if with GPI
BivalirudinPrimary PCIAlternative to UFH
EnoxaparinMedical/fibrinolysis30 mg IV + 1 mg/kg SC Q12H
FondaparinuxMedical management2.5 mg SC daily (avoid as sole anticoagulant for PCI)

Other Drugs

DrugIndicationNotes
Beta-blockersAll STEMI (oral, within 24h)Reduce VT/VF, reinfarction; avoid in cardiogenic shock, acute HF, PR >240ms, 2nd/3rd degree block, active asthma
ACE inhibitor / ARBAll STEMI, especially EF <40%Start within 24h; reduces MACE
High-intensity statinAll STEMIStart immediately (Class I, 2025 guidelines)
NitratesChest pain reliefAvoid if RV infarction, hypotension, recent PDE5 inhibitor use
MorphineRefractory painUse cautiously - may delay P2Y12 absorption
OxygenO2 sat <90%Avoid routine O2 if sat ≥90%; may cause harm

Lipid Lowering (2025 Update)

  • High-intensity statin: Class I for all ACS
  • Add ezetimibe if LDL not at goal on statin
  • For recurrent atherothrombotic events within 2 years on max statin: LDL target <40 mg/dL may be considered (new 2025 recommendation)

7. Multivessel Disease in STEMI (Major 2025 Update!)

This is a heavily tested topic with major new guidance:
ScenarioRecommendationClass
Hemodynamically stable STEMI + MVDComplete revascularization (infarct + noninfarct arteries) recommended - either at index PCI or within 45 daysClass I
Cardiogenic shock + MVDRoutine PCI of noninfarct artery at time of primary PCI should NOT be performed (higher risk of death/renal failure)Class III (Harm)
Low-complexity MVD, hemodynamically stableMultivessel PCI at time of primary PCI may be preferred over staged approachClass 2b

8. Complications of STEMI

Early (first 24-72 hours)

  • Arrhythmias: VF (leading cause of early death), VT, AF, complete heart block (inferior MI)
  • Right ventricular infarction (inferior STEMI + RV infarct): hypotension, JVD, clear lungs - treat with fluids, avoid nitrates/diuretics
  • Cardiogenic shock: SBP <90, low CO, high wedge pressure - treat with pPCI, vasopressors, MCS (IABP/Impella)

Mechanical Complications (days 3-7)

  • Free wall rupture - sudden cardiac death, Beck's triad
  • Ventricular septal defect (VSD) - new harsh holosystolic murmur, step-up in O2 saturation RA→RV
  • Papillary muscle rupture / acute MR - acute pulmonary edema, soft murmur

Subacute

  • Dressler syndrome (post-MI pericarditis) - weeks after MI, fever + pericardial rub + pleurisy, treat with aspirin/NSAIDs
  • LV thrombus - anticoagulate if detected
  • LV aneurysm - persistent ST elevation, paradoxical wall motion

9. Special Situations

STEMI + RV Infarction:
  • Occurs in 30-50% of inferior STEMIs
  • Clinical triad: hypotension + JVD + clear lungs
  • Check right-sided leads (V4R is most sensitive)
  • Treatment: fluids (preload dependent), avoid nitrates/diuretics, early pPCI
STEMI + Cardiogenic Shock:
  • Early revascularization is the only intervention proven to reduce mortality
  • Intra-aortic balloon pump (IABP) - not shown to improve mortality in recent RCTs
  • Newer MCS (Impella, ECMO) under study

10. 2025 ACC/AHA ACS Guideline - Key Changes Summary

Published February 27, 2025 in both Circulation and JACC (PMID: 40014670), this is a landmark unified guideline replacing the 2013 STEMI, 2014 NSTEMI, 2015 PCI, and 2016 DAPT guidelines.
Top 6 practice-changing updates:
  1. DAPT transition: Ticagrelor monotherapy ≥1 month post-PCI is now Class I to reduce bleeding
  2. Complete revascularization in MVD-STEMI: Class I - do it at index PCI or within 45 days
  3. Lipid targets: High-intensity statin for all ACS (Class I); LDL <40 mg/dL for recurrent events
  4. Aspirin dosing: Low-dose aspirin (≤100 mg) preferred for long-term therapy
  5. Cardiogenic shock + MVD: Staged PCI confirmed - NO routine noninfarct artery PCI at time of primary PCI
  6. ECG and troponin timing: 10-minute ECG, rapid hs-troponin protocols (0h/1-2h)

Quick Memory Aids for Exams

MONA used to be the mnemonic - now modified:
  • Morphine - use cautiously (not routinely)
  • Oxygen - only if SpO2 <90%
  • Nitrates - avoid in RV infarct/hypotension
  • Aspirin - give immediately (Class I)
Time targets to memorize:
  • ECG: 10 min
  • PCI-capable hospital balloon: 90 min
  • Transfer + balloon: 120 min
  • Fibrinolysis needle: 30 min
  • Fibrinolytic bolus from STEMI diagnosis: 10 min
Killip Classification (prognosis):
ClassSignsMortality
INo HF signs~5%
IIS3, basal rales~10%
IIIPulmonary edema~20-40%
IVCardiogenic shock~80%

Sources: Tintinalli's Emergency Medicine, 9th Ed. - Fuster and Hurst's The Heart, 15th Ed. - Braunwald's Heart Disease - 2025 ACC/AHA ACS Guideline (Circulation, Feb 2025)
Hope that covers everything you need for STEMI! Let me know if you want to go deeper on any section, work through a clinical case, or move on to another topic.

Can you give it in a pdf

Reading File
Running Command

ls /home/daytona/workspace/ 2>/dev/null || echo "workspace empty or not found"

Running Command

mkdir -p /home/daytona/workspace/stemi-guide && python3 -c "import reportlab; pr…

Writing File

~/stemi-guide/generate_stemi_pdf.py

from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.lib import colors
from reportlab.platypus import (
    SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
    HRFlowable, PageBreak
)
from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_JUSTIFY
from reportlab.platypus import KeepTogether

OUTPUT = "/home/daytona/workspace/stemi-guide/STEMI_EM_Study_Guide.pdf"

doc = SimpleDocTemplate(
    OUTPUT,
    pagesize=A4,
    rightMargin=2*cm, leftMargin=2*cm,
    topMargin=2.5*cm, bottomMargin=2.5*cm,
    title="STEMI – Complete EM Study Guide",
    author="Orris AI"
)

W = A4[0] - 4*cm  # usable width

# ── Colour palette ──────────────────────────────────────────────────────────
RED      = colors.HexColor("#C0392B")
DARKRED  = colors.HexColor("#922B21")
BLUE     = colors.HexColor("#1A5276")
LBLUE    = colors.HexColor("#D6EAF8")
ORANGE   = colors.HexColor("#E67E22")
GREEN    = colors.HexColor("#1E8449")
LGREEN   = colors.HexColor("#D5F5E3")
LGREY    = colors.HexColor("#F2F3F4")
MGREY    = colors.HexColor("#BDC3C7")
WHITE    = colors.white

# ── Styles ───────────────────────────────────────────────────────────────────
base = getSampleStyleSheet()

def S(name, parent="Normal", **kw):
    return ParagraphStyle(name, parent=base[parent], **kw)

Title  = S("Title2",  fontSize=26, textColor=WHITE, leading=32,
           alignment=TA_CENTER, fontName="Helvetica-Bold")
Sub    = S("Sub",     fontSize=12, textColor=WHITE, leading=16,
           alignment=TA_CENTER, fontName="Helvetica")
H1     = S("H1",      fontSize=14, textColor=WHITE, leading=18,
           fontName="Helvetica-Bold", spaceAfter=2)
H2     = S("H2",      fontSize=11, textColor=BLUE, leading=15,
           fontName="Helvetica-Bold", spaceBefore=8, spaceAfter=3)
H3     = S("H3",      fontSize=10, textColor=DARKRED, leading=13,
           fontName="Helvetica-Bold", spaceBefore=4, spaceAfter=2)
Body   = S("Body",    fontSize=9,  leading=13, spaceAfter=3,
           alignment=TA_JUSTIFY)
Bullet = S("Bullet",  fontSize=9,  leading=13, leftIndent=14,
           firstLineIndent=-10, spaceAfter=2)
Small  = S("Small",   fontSize=7.5, textColor=colors.HexColor("#555555"),
           leading=10, alignment=TA_CENTER)
Bold9  = S("Bold9",   fontSize=9,  fontName="Helvetica-Bold", leading=13)
Warn   = S("Warn",    fontSize=9,  textColor=RED, fontName="Helvetica-Bold",
           leading=13)
Note   = S("Note",    fontSize=8.5, textColor=BLUE, leading=12,
           leftIndent=8)

def bullet(txt):
    return Paragraph(f"• {txt}", Bullet)

def h1_block(text, bg=BLUE):
    tbl = Table([[Paragraph(text, H1)]], colWidths=[W])
    tbl.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), bg),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING",   (0,0), (-1,-1), 8),
        ("RIGHTPADDING",  (0,0), (-1,-1), 8),
        ("ROUNDEDCORNERS", [4]),
    ]))
    return tbl

def section_table(rows, col_widths, header_bg=BLUE, alt=True):
    """Styled table with coloured header row."""
    style = [
        ("BACKGROUND",    (0,0), (-1,0),  header_bg),
        ("TEXTCOLOR",     (0,0), (-1,0),  WHITE),
        ("FONTNAME",      (0,0), (-1,0),  "Helvetica-Bold"),
        ("FONTSIZE",      (0,0), (-1,-1), 8.5),
        ("LEADING",       (0,0), (-1,-1), 11),
        ("TOPPADDING",    (0,0), (-1,-1), 4),
        ("BOTTOMPADDING", (0,0), (-1,-1), 4),
        ("LEFTPADDING",   (0,0), (-1,-1), 5),
        ("RIGHTPADDING",  (0,0), (-1,-1), 5),
        ("GRID",          (0,0), (-1,-1), 0.4, MGREY),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ]
    if alt:
        for i in range(1, len(rows), 2):
            style.append(("BACKGROUND", (0,i), (-1,i), LGREY))
    tbl = Table(
        [[Paragraph(str(c), Bold9 if r==0 else Body) for c in row]
         for r, row in enumerate(rows)],
        colWidths=col_widths
    )
    tbl.setStyle(TableStyle(style))
    return tbl

def warning_box(text):
    tbl = Table([[Paragraph(f"⚠ {text}", Warn)]], colWidths=[W])
    tbl.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,-1), colors.HexColor("#FDEDEC")),
        ("LEFTPADDING",   (0,0), (-1,-1), 8),
        ("RIGHTPADDING",  (0,0), (-1,-1), 8),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("BOX",           (0,0), (-1,-1), 1, RED),
    ]))
    return tbl

def info_box(text, bg=LBLUE, tc=BLUE):
    style = S("IB", fontSize=9, textColor=tc, leading=13, leftIndent=4)
    tbl = Table([[Paragraph(text, style)]], colWidths=[W])
    tbl.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,-1), bg),
        ("LEFTPADDING",   (0,0), (-1,-1), 8),
        ("RIGHTPADDING",  (0,0), (-1,-1), 8),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("BOX",           (0,0), (-1,-1), 0.8, tc),
    ]))
    return tbl

# ════════════════════════════════════════════════════════════════════════════
# CONTENT
# ════════════════════════════════════════════════════════════════════════════
story = []

# ── COVER PAGE ───────────────────────────────────────────────────────────────
cover = Table(
    [[Paragraph("STEMI", Title)],
     [Paragraph("Complete Emergency Medicine Study Guide", Sub)],
     [Spacer(1, 0.3*cm)],
     [Paragraph("Based on 2025 ACC/AHA/ACEP/NAEMSP/SCAI Guidelines", Sub)],
    ],
    colWidths=[W]
)
cover.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,-1), RED),
    ("TOPPADDING",    (0,0), (-1,-1), 18),
    ("BOTTOMPADDING", (0,0), (-1,-1), 18),
    ("ROUNDEDCORNERS", [6]),
]))
story += [Spacer(1, 1*cm), cover, Spacer(1, 0.5*cm)]

meta = Table([[
    Paragraph("For: Emergency Medicine Final Year Students", Small),
    Paragraph("Date: July 2026", Small),
    Paragraph("Sources: Tintinalli · Braunwald · Fuster & Hurst · PubMed", Small),
]], colWidths=[W/3]*3)
story += [meta, Spacer(1, 0.8*cm), HRFlowable(width=W, color=MGREY), Spacer(1, 0.3*cm)]

# ── 1. DEFINITION & PATHOPHYSIOLOGY ─────────────────────────────────────────
story += [h1_block("1. Definition & Pathophysiology"), Spacer(1, 0.2*cm)]
story.append(Paragraph(
    "STEMI (ST-Elevation Myocardial Infarction) is a full-thickness (transmural) MI caused by "
    "complete and sustained occlusion of a coronary artery, almost always due to atherosclerotic "
    "plaque rupture with superimposed thrombus formation.", Body))
story.append(Paragraph("<b>Pathological sequence:</b>", Bold9))
for b in [
    "Plaque vulnerability → rupture/erosion",
    "Platelet aggregation → thrombus formation → complete occlusion",
    "Myocardial ischemia starts within minutes",
    "Irreversible necrosis begins at ~20 min (subendocardium first) — 'wavefront phenomenon'",
    "Near-complete transmural necrosis after ~6 hours without reperfusion",
]:
    story.append(bullet(b))
story.append(Spacer(1, 0.4*cm))

# ── 2. CLINICAL PRESENTATION ─────────────────────────────────────────────────
story += [h1_block("2. Clinical Presentation"), Spacer(1, 0.2*cm)]
rows = [
    ["Feature", "Classic", "Atypical (watch for!)"],
    ["Chest pain", "Crushing, pressure, radiation to left arm/jaw", "Absent — especially in diabetics, elderly, women"],
    ["Associated", "Diaphoresis, nausea, vomiting, dyspnea", "Epigastric pain, fatigue, syncope"],
    ["Duration", ">20 min, not relieved by nitrates", "Variable"],
]
story.append(section_table(rows, [3*cm, 7.5*cm, 6*cm]))
story.append(Spacer(1, 0.3*cm))
story.append(warning_box("High-risk for atypical presentation: Diabetics · Elderly · Women · Post-transplant patients"))
story.append(Spacer(1, 0.4*cm))

# ── 3. ECG DIAGNOSIS ─────────────────────────────────────────────────────────
story += [h1_block("3. ECG Diagnosis"), Spacer(1, 0.2*cm)]
story.append(Paragraph("<b>STEMI Diagnostic Criteria:</b>", H2))
rows = [
    ["Lead Group", "Elevation Threshold", "Territory"],
    ["2 contiguous limb leads (II,III,aVF or I,aVL)", "≥1 mm", "Inferior or Lateral"],
    ["2 contiguous precordial leads V1-V4", "≥2 mm men / ≥1.5 mm women", "Anterior"],
    ["V4R (right-sided lead)", "≥0.5 mm", "Right Ventricle"],
    ["V7-V9 (posterior leads)", "≥0.5 mm", "Posterior"],
]
story.append(section_table(rows, [6.5*cm, 5*cm, 5*cm]))
story.append(Spacer(1, 0.3*cm))

story.append(Paragraph("<b>ECG Evolution:</b>", H2))
evo = Table([[
    Paragraph("1\nHyperacute\nT waves", Small),
    Paragraph("→", Small),
    Paragraph("2\nST\nElevation", Small),
    Paragraph("→", Small),
    Paragraph("3\nPathological\nQ waves", Small),
    Paragraph("→", Small),
    Paragraph("4\nT wave\nInversion", Small),
    Paragraph("→", Small),
    Paragraph("5\nST normalises\nQ persists", Small),
]], colWidths=[2.5*cm, 0.6*cm, 2.5*cm, 0.6*cm, 2.5*cm, 0.6*cm, 2.5*cm, 0.6*cm, 2.5*cm])
evo.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (0,0),  colors.HexColor("#FDEDEC")),
    ("BACKGROUND",    (2,0), (2,0),  colors.HexColor("#FDEBD0")),
    ("BACKGROUND",    (4,0), (4,0),  colors.HexColor("#D5F5E3")),
    ("BACKGROUND",    (6,0), (6,0),  colors.HexColor("#D6EAF8")),
    ("BACKGROUND",    (8,0), (8,0),  LGREY),
    ("ALIGN",         (0,0), (-1,-1), "CENTER"),
    ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ("FONTSIZE",      (0,0), (-1,-1), 8),
    ("TOPPADDING",    (0,0), (-1,-1), 6),
    ("BOTTOMPADDING", (0,0), (-1,-1), 6),
    ("BOX",           (0,0), (-1,-1), 0.5, MGREY),
]))
story += [evo, Spacer(1, 0.3*cm)]

story.append(Paragraph("<b>STEMI Equivalents (Critical for EM!):</b>", H2))
rows = [
    ["Pattern", "ECG Finding", "Vessel / Notes"],
    ["De Winter", "Upsloping STD + peaked T waves V1-V6", "LAD occlusion — NO classic STE"],
    ["Posterior MI", "STD V1-V3 + tall R waves", "Do posterior leads V7-V9"],
    ["Wellens Syndrome", "Biphasic or deeply inverted T waves V2-V3", "Critical LAD stenosis — pre-infarction!"],
    ["New LBBB", "New or presumed new left bundle branch block", "Treat as STEMI"],
    ["Sgarbossa criteria", "Concordant STE ≥1 mm; STE ≥5 mm discordant", "Diagnose MI in LBBB"],
]
story.append(section_table(rows, [3.5*cm, 6*cm, 7*cm], header_bg=DARKRED))
story.append(Spacer(1, 0.3*cm))

story.append(Paragraph("<b>Territory Localisation:</b>", H2))
rows = [
    ["Territory", "Leads", "Artery"],
    ["Anterior",  "V1-V4",            "LAD"],
    ["Lateral",   "I, aVL, V5-V6",    "LCx"],
    ["Inferior",  "II, III, aVF",      "RCA (80%), LCx (20%)"],
    ["Posterior", "V7-V9 / STD V1-V3","RCA or LCx"],
    ["Right Ventricle", "V4R",         "RCA proximal"],
]
story.append(section_table(rows, [4*cm, 5*cm, 7.5*cm]))
story.append(Spacer(1, 0.4*cm))

# ── 4. ED DIAGNOSIS ──────────────────────────────────────────────────────────
story += [h1_block("4. Diagnosis in the ED"), Spacer(1, 0.2*cm)]
story.append(info_box(
    "⏱  KEY: 12-lead ECG must be acquired and interpreted within <b>10 minutes</b> of arrival (Class I — 2025 ACC/AHA).",
    bg=LGREEN, tc=GREEN
))
story.append(Spacer(1, 0.2*cm))
for b in [
    "<b>ECG:</b> 12-lead within 10 min; serial ECGs if initial non-diagnostic",
    "<b>hs-Troponin:</b> Measure ASAP — repeat at <b>1-2 hours</b> (rapid protocol) or 3-6 hours (standard)",
    "<b>Labs:</b> CBC, BMP, coagulation, BNP, lipid panel",
    "<b>CXR:</b> Portable — assess for pulmonary oedema, widened mediastinum",
    "<b>Bedside Echo:</b> If diagnosis uncertain — assess wall motion abnormalities, EF, pericardial effusion",
]:
    story.append(bullet(b))
story.append(Spacer(1, 0.4*cm))

# ── 5. REPERFUSION ──────────────────────────────────────────────────────────
story += [h1_block("5. Reperfusion Strategy — The Core of STEMI Management", bg=DARKRED), Spacer(1, 0.2*cm)]
story.append(Paragraph(
    "Timely reperfusion is the most effective method to restore myocardial oxygen supply. "
    "Every 30-minute delay in reperfusion increases mortality. Timely reperfusion has reduced "
    "in-hospital STEMI mortality from ~20% to ~5% over three decades.", Body))
story.append(Spacer(1, 0.2*cm))

story.append(Paragraph("<b>Time Targets (2025 ACC/AHA — Class I):</b>", H2))
rows = [
    ["Scenario", "Target", "Note"],
    ["PCI-capable hospital", "FMC → Balloon ≤ 90 min", "First medical contact to device"],
    ["Transfer from non-PCI hospital", "FMC → Balloon ≤ 120 min", "Accounts for transfer time"],
    ["Fibrinolysis (if PCI unavailable)", "FMC → Needle ≤ 30 min", "If PCI can't meet 120 min target"],
    ["Fibrinolytic bolus from diagnosis", "STEMI Dx → Bolus ≤ 10 min", "Prehospital lysis if feasible"],
]
story.append(section_table(rows, [5*cm, 5*cm, 6.5*cm], header_bg=DARKRED))
story.append(Spacer(1, 0.2*cm))
story.append(info_box(
    'ℹ "First Medical Contact to Device Time" replaces the old "door to balloon" / "door to needle" terminology.',
    bg=LBLUE, tc=BLUE
))
story.append(Spacer(1, 0.3*cm))

story.append(Paragraph("<b>Primary PCI vs Fibrinolysis:</b>", H2))
story.append(Paragraph(
    "In a large meta-analysis of 23 RCTs, pPCI was superior to thrombolytics at reducing "
    "death, reinfarction, and stroke. pPCI is always preferred when achievable within time targets.", Body))

story.append(Paragraph("<b>Absolute Contraindications to Fibrinolysis:</b>", H3))
for b in [
    "Prior intracranial haemorrhage (any time)",
    "Ischaemic stroke within 3 months",
    "Structural cerebrovascular lesion or intracranial neoplasm",
    "Active internal bleeding (not menses)",
    "Suspected aortic dissection",
    "Significant closed-head or facial trauma within 3 months",
]:
    story.append(bullet(b))

story.append(Paragraph("<b>Post-Fibrinolysis Strategy:</b>", H3))
for b in [
    "Successful lysis (≥50% ST resolution at 60-90 min) → Angiography within 3-24 hours (pharmacoinvasive strategy)",
    "Failed reperfusion → Rescue PCI IMMEDIATELY",
]:
    story.append(bullet(b))
story.append(Spacer(1, 0.4*cm))

# ── 6. PHARMACOTHERAPY ──────────────────────────────────────────────────────
story += [h1_block("6. Pharmacotherapy"), Spacer(1, 0.2*cm)]

story.append(Paragraph("<b>Antiplatelet Therapy (DAPT — Give Immediately):</b>", H2))
rows = [
    ["Drug", "Loading Dose", "Maintenance", "Notes"],
    ["Aspirin", "162-325 mg", "75-100 mg daily", "Give immediately to all"],
    ["Ticagrelor", "180 mg PO", "90 mg BD", "Preferred with pPCI (2025 Class I)"],
    ["Prasugrel", "60 mg PO", "10 mg daily", "Preferred with pPCI; AVOID if prior stroke/TIA, age >75, wt <60 kg"],
    ["Clopidogrel", "600 mg PO", "75 mg daily", "If ticagrelor/prasugrel unavailable; no load >75 yrs + fibrinolysis"],
]
story.append(section_table(rows, [2.8*cm, 2.8*cm, 3.5*cm, 7.4*cm], header_bg=GREEN))
story.append(Spacer(1, 0.2*cm))

story.append(info_box(
    "⭐ 2025 NEW (Class I): Transition to ticagrelor monotherapy ≥1 month post-PCI reduces bleeding risk. "
    "DAPT ≥12 months for low bleeding risk; shorter (1-3 months) for high bleeding risk.", bg=LGREEN, tc=GREEN))
story.append(Spacer(1, 0.3*cm))

story.append(Paragraph("<b>Anticoagulation:</b>", H2))
rows = [
    ["Drug", "Setting", "Dose"],
    ["UFH (Unfractionated Heparin)", "Primary PCI", "70-100 U/kg IV bolus (without GPI); 50-70 U/kg with GPI"],
    ["Bivalirudin", "Primary PCI", "Alternative to UFH; lower bleeding risk"],
    ["Enoxaparin", "Fibrinolysis/Medical", "30 mg IV + 1 mg/kg SC Q12H"],
    ["Fondaparinux", "Medical management", "2.5 mg SC daily — AVOID as sole agent for PCI"],
]
story.append(section_table(rows, [4*cm, 3.5*cm, 9*cm], header_bg=GREEN))
story.append(Spacer(1, 0.3*cm))

story.append(Paragraph("<b>Other Essential Drugs:</b>", H2))
rows = [
    ["Drug", "Indication", "Key Notes / Contraindications"],
    ["Beta-blockers (oral)", "All STEMI — within 24h", "Reduce VT/VF; AVOID in cardiogenic shock, acute HF, PR >240ms, 2°/3° block, active asthma"],
    ["ACE inhibitor / ARB", "All STEMI, esp. EF <40%", "Start within 24h; reduces MACE"],
    ["High-intensity statin", "All STEMI (Class I — 2025)", "Start immediately; goal LDL <70 mg/dL (or <40 if recurrent event)"],
    ["Nitrates", "Chest pain relief", "AVOID in RV infarction, hypotension (SBP <90), recent PDE5 inhibitor use"],
    ["Morphine", "Refractory pain only", "Use cautiously — may delay P2Y12 absorption"],
    ["Oxygen", "SpO2 <90% only", "Do NOT give routinely if SpO2 ≥90% — may cause harm"],
]
story.append(section_table(rows, [3.5*cm, 4*cm, 9*cm], header_bg=GREEN))
story.append(Spacer(1, 0.4*cm))

# ── 7. MULTIVESSEL DISEASE ───────────────────────────────────────────────────
story += [h1_block("7. Multivessel Disease in STEMI (2025 Major Update!)", bg=ORANGE), Spacer(1, 0.2*cm)]
story.append(Paragraph(
    "Approximately 50% of STEMI patients have multivessel disease (MVD). Management of noninfarct "
    "arteries is now well-defined by the 2025 guidelines.", Body))
rows = [
    ["Scenario", "Recommendation", "Class"],
    ["Haemodynamically STABLE STEMI + MVD",
     "Complete revascularisation recommended — at index PCI or within 45 days",
     "Class I"],
    ["Stable STEMI + low-complexity MVD",
     "Multivessel PCI at time of primary PCI may be preferred over staged approach",
     "Class 2b"],
    ["Cardiogenic SHOCK + MVD",
     "Routine PCI of noninfarct artery at time of primary PCI SHOULD NOT be performed — higher risk of death/renal failure",
     "Class III (HARM)"],
]
story.append(section_table(rows, [5.5*cm, 8.5*cm, 2.5*cm], header_bg=ORANGE))
story.append(Spacer(1, 0.4*cm))

# ── 8. COMPLICATIONS ────────────────────────────────────────────────────────
story += [h1_block("8. Complications of STEMI"), Spacer(1, 0.2*cm)]

story.append(Paragraph("<b>Early Complications (0-72 hours):</b>", H2))
rows = [
    ["Complication", "Key Features", "Management"],
    ["Ventricular Fibrillation (VF)", "Leading cause of early death", "Defibrillation, ACLS"],
    ["Complete Heart Block (inferior MI)", "Bradycardia, hypotension, wide QRS escape", "Atropine, temporary pacing"],
    ["RV Infarction", "Hypotension + JVD + clear lungs — 30-50% of inferior STEMIs", "IV fluids, avoid nitrates/diuretics, early pPCI"],
    ["Cardiogenic Shock", "SBP <90, cold/clammy, oliguria, low CO", "Primary PCI, vasopressors (noradrenaline), MCS"],
]
story.append(section_table(rows, [4.5*cm, 6*cm, 6*cm]))
story.append(Spacer(1, 0.2*cm))

story.append(Paragraph("<b>Mechanical Complications (Days 3-7 — free wall weakest):</b>", H2))
rows = [
    ["Complication", "Clinical Features", "Management"],
    ["Free Wall Rupture", "Sudden cardiac death; Beck's triad (tamponade)", "Emergency surgery / pericardiocentesis"],
    ["VSD (Ventricular Septal Defect)", "New harsh holosystolic murmur; step-up O2 sat RA→RV", "Emergency surgical repair; MCS bridge"],
    ["Papillary Muscle Rupture / Acute MR", "Acute pulmonary oedema; soft or no murmur", "Emergency MV surgery; IABP bridge"],
]
story.append(section_table(rows, [4.5*cm, 5.5*cm, 6.5*cm]))
story.append(Spacer(1, 0.2*cm))

story.append(Paragraph("<b>Subacute / Late Complications:</b>", H2))
rows = [
    ["Complication", "Timing", "Features & Treatment"],
    ["Dressler Syndrome (Post-MI Pericarditis)", "Weeks after MI", "Fever + pericardial rub + pleurisy; treat with aspirin/NSAIDs/colchicine"],
    ["LV Thrombus", "Days to weeks", "Echo diagnosis; anticoagulate with warfarin or NOAC x 3 months"],
    ["LV Aneurysm", "Weeks to months", "Persistent ST elevation; paradoxical wall motion; anticoagulate if thrombus"],
]
story.append(section_table(rows, [5*cm, 2.5*cm, 9*cm]))
story.append(Spacer(1, 0.4*cm))

# ── 9. KILLIP CLASSIFICATION ────────────────────────────────────────────────
story += [h1_block("9. Killip Classification"), Spacer(1, 0.2*cm)]
rows = [
    ["Class", "Signs", "In-Hospital Mortality"],
    ["I",   "No heart failure signs",          "~5%"],
    ["II",  "S3 gallop, basal rales <50% lung fields", "~10%"],
    ["III", "Pulmonary oedema (rales >50%)",    "~20-40%"],
    ["IV",  "Cardiogenic shock",                "~80%"],
]
story.append(section_table(rows, [2*cm, 9.5*cm, 5*cm]))
story.append(Spacer(1, 0.4*cm))

# ── 10. 2025 GUIDELINE KEY CHANGES ──────────────────────────────────────────
story += [h1_block("10. 2025 ACC/AHA ACS Guideline — Key Changes", bg=DARKRED), Spacer(1, 0.2*cm)]
story.append(Paragraph(
    "Published February 27, 2025 in Circulation (PMID: 40014670) and JACC. This landmark unified "
    "guideline replaces the 2013 STEMI, 2014 NSTEMI, 2015 PCI, and 2016 DAPT guidelines.", Body))
story.append(Spacer(1, 0.2*cm))
changes = [
    ("1. DAPT Transition (NEW — Class I)",
     "Ticagrelor monotherapy ≥1 month post-PCI is now Class I to reduce bleeding. DAPT ≥12 months for low bleeding risk."),
    ("2. Complete Revascularisation in MVD-STEMI (Class I)",
     "For haemodynamically stable STEMI + MVD: complete revascularisation at index PCI or within 45 days."),
    ("3. Cardiogenic Shock + MVD (Class III Harm)",
     "Do NOT routinely PCI the noninfarct artery at the time of primary PCI — increases death/renal failure."),
    ("4. Lipid Targets Updated",
     "High-intensity statin for all ACS (Class I). For recurrent events within 2 years on max statin: LDL target <40 mg/dL."),
    ("5. Aspirin Dosing",
     "Low-dose aspirin (≤100 mg/day) preferred for long-term maintenance therapy."),
    ("6. ECG + Troponin Protocols",
     "ECG within 10 minutes (Class I). Rapid hs-troponin protocols: 0h/1-2h or 0h/3-6h."),
]
for title, body in changes:
    story.append(Paragraph(f"<b>{title}</b>", H3))
    story.append(Paragraph(body, Body))
story.append(Spacer(1, 0.4*cm))

# ── 11. QUICK MEMORY AIDS ────────────────────────────────────────────────────
story += [h1_block("11. Quick Memory Aids for Exams"), Spacer(1, 0.2*cm)]

story.append(Paragraph("<b>Time Targets (Memorise These!):</b>", H2))
times = Table([
    [Paragraph("ECG", Bold9), Paragraph("10 min", Bold9)],
    [Paragraph("pPCI (PCI hospital)", Body), Paragraph("FMC → Balloon ≤ 90 min", Body)],
    [Paragraph("pPCI (transfer)", Body), Paragraph("FMC → Balloon ≤ 120 min", Body)],
    [Paragraph("Fibrinolysis", Body), Paragraph("FMC → Needle ≤ 30 min", Body)],
    [Paragraph("Lytic bolus from Dx", Body), Paragraph("STEMI Dx → Bolus ≤ 10 min", Body)],
], colWidths=[8*cm, 8.5*cm])
times.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0),  RED),
    ("TEXTCOLOR",     (0,0), (-1,0),  WHITE),
    ("BACKGROUND",    (0,1), (-1,1),  colors.HexColor("#FDEDEC")),
    ("BACKGROUND",    (0,2), (-1,2),  colors.HexColor("#FDEBD0")),
    ("BACKGROUND",    (0,3), (-1,3),  colors.HexColor("#FDFEFE")),
    ("BACKGROUND",    (0,4), (-1,4),  LGREY),
    ("GRID",          (0,0), (-1,-1), 0.5, MGREY),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",   (0,0), (-1,-1), 8),
    ("FONTSIZE",      (0,0), (-1,-1), 9),
]))
story += [times, Spacer(1, 0.3*cm)]

story.append(Paragraph("<b>MONA — Updated for 2025:</b>", H2))
mona_data = [
    ["M", "Morphine", "Use CAUTIOUSLY — not routinely (delays P2Y12 absorption)"],
    ["O", "Oxygen", "Only if SpO2 <90% — AVOID routine O2 if ≥90%"],
    ["N", "Nitrates", "AVOID in RV infarction, hypotension, PDE5i use"],
    ["A", "Aspirin", "Give IMMEDIATELY — Class I, 162-325 mg load"],
]
mona = Table(
    [[Paragraph(f"<b>{r[0]}</b>", S("MC", fontSize=18, textColor=WHITE, fontName="Helvetica-Bold", alignment=TA_CENTER)),
      Paragraph(f"<b>{r[1]}</b>", S("MD", fontSize=10, textColor=DARKRED, fontName="Helvetica-Bold")),
      Paragraph(r[2], Body)] for r in mona_data],
    colWidths=[1.2*cm, 3*cm, 12.3*cm]
)
mona.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (0,-1), DARKRED),
    ("BACKGROUND",    (1,0), (-1,-1), LGREY),
    ("GRID",          (0,0), (-1,-1), 0.5, MGREY),
    ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ("TOPPADDING",    (0,0), (-1,-1), 6),
    ("BOTTOMPADDING", (0,0), (-1,-1), 6),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
]))
story += [mona, Spacer(1, 0.4*cm)]

story.append(Paragraph("<b>RV Infarction — Triad to Remember:</b>", H2))
story.append(info_box(
    "Hypotension  +  Elevated JVP  +  Clear Lungs (no pulmonary oedema)\n"
    "→ Occurs in 30-50% of inferior STEMIs  |  Check V4R lead  |  Give IV FLUIDS — AVOID nitrates/diuretics",
    bg=colors.HexColor("#FEF9E7"), tc=ORANGE
))
story.append(Spacer(1, 0.4*cm))

# ── REFERENCES ───────────────────────────────────────────────────────────────
story += [HRFlowable(width=W, color=MGREY), Spacer(1, 0.2*cm)]
story.append(Paragraph("<b>References</b>", H2))
refs = [
    "Tintinalli JE et al. Tintinalli's Emergency Medicine: A Comprehensive Study Guide, 9th Ed. McGraw-Hill.",
    "Fuster V et al. Fuster and Hurst's The Heart, 15th Edition. McGraw-Hill.",
    "Braunwald E et al. Braunwald's Heart Disease: A Textbook of Cardiovascular Medicine, 12th Ed. Elsevier.",
    "Rao SV et al. 2025 ACC/AHA/ACEP/NAEMSP/SCAI Guideline for the Management of Patients With Acute Coronary Syndromes. Circulation. 2025. PMID: 40014670",
    "Faro DC et al. Complete PCI Revascularization in ACS With MVD: Systematic Review. JACC Cardiovasc Interv. 2023. PMID: 37821180",
]
for r in refs:
    story.append(bullet(r))

story.append(Spacer(1, 0.3*cm))
story.append(Paragraph(
    "Generated by Orris AI · July 2026 · For educational use only — always verify clinical decisions against current guidelines.",
    Small
))

# ── BUILD ─────────────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF saved: {OUTPUT}")
Running Command

cd /home/daytona/workspace/stemi-guide && python3 generate_stemi_pdf.py

Running Command

ls -lh /home/daytona/workspace/stemi-guide/STEMI_EM_Study_Guide.pdf

Your STEMI study guide PDF is ready! Here's the download link:

STEMI EM Study Guide

PDF Document · PDF

The PDF includes all 11 sections:
  1. Definition & Pathophysiology
  2. Clinical Presentation (classic vs atypical)
  3. ECG Diagnosis - criteria, evolution, STEMI equivalents, territory localisation
  4. ED Diagnosis workflow
  5. Reperfusion strategy with time targets
  6. Full pharmacotherapy tables (antiplatelets, anticoagulation, other drugs)
  7. Multivessel disease - 2025 guideline updates
  8. Complications (early, mechanical, subacute)
  9. Killip Classification
  10. 2025 ACC/AHA key guideline changes
  11. Quick memory aids (MONA updated, time targets, RV infarction triad)
All colour-coded with warning boxes and tables for easy revision. Good luck with your exams! 💪

Ur great

Thank you! 😊 That means a lot.
You've got a solid topic under your belt now. Whenever you're ready, just fire away with the next topic — whether it's trauma, toxicology, sepsis, airway management, or anything else on your exam list. I'm here to help you ace it! 🏥✅
This is a shared conversation. Sign in to Orris to start your own chat.