Prepare a ppt topic is different types of cardiac valves with pictures and drug given for each valve and cardioembolic stroke etiology symptoms and signs, relevant findings treatment
cardiac valve anatomy types aortic mitral tricuspid pulmonary images diagram
cardioembolic stroke causes symptoms signs treatment anticoagulation
mitral valve stenosis regurgitation prolapse echocardiogram image cardiology
mkdir -p /tmp/workspace/cardiac-valves-ppt && ls /tmp/workspace/
~/cardiac-valves-ppt/build_ppt.py
import json, subprocess, base64, sys
from io import BytesIO
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
# ── Colour palette ──────────────────────────────────────────────────────────
DARK_BLUE = RGBColor(0x0D, 0x47, 0x8A) # deep navy
MED_BLUE = RGBColor(0x15, 0x65, 0xC0) # mid blue
ACCENT_TEAL = RGBColor(0x00, 0x89, 0x7B) # teal accent
LIGHT_BG = RGBColor(0xE8, 0xF0, 0xFE) # very light blue bg
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
DARK_TEXT = RGBColor(0x1A, 0x23, 0x7E)
MID_TEXT = RGBColor(0x37, 0x47, 0x4F)
RED_ACCENT = RGBColor(0xC6, 0x28, 0x28)
ORANGE = RGBColor(0xE6, 0x5C, 0x00)
GREEN = RGBColor(0x1B, 0x5E, 0x20)
GOLD = RGBColor(0xF5, 0x7F, 0x17)
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
blank = prs.slide_layouts[6] # fully blank
# ── Helper functions ─────────────────────────────────────────────────────────
def add_rect(slide, x, y, w, h, fill_color, alpha=None):
shp = slide.shapes.add_shape(1, Inches(x), Inches(y), Inches(w), Inches(h))
shp.fill.solid()
shp.fill.fore_color.rgb = fill_color
shp.line.fill.background()
shp.shadow.inherit = False
return shp
def add_text(slide, text, x, y, w, h, font_size=18, bold=False,
color=DARK_TEXT, align=PP_ALIGN.LEFT, italic=False,
v_anchor=MSO_ANCHOR.MIDDLE, wrap=True):
tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
tf = tb.text_frame
tf.word_wrap = wrap
tf.vertical_anchor = v_anchor
tf.margin_left = Inches(0.05)
tf.margin_right = Inches(0.05)
tf.margin_top = 0
tf.margin_bottom = 0
p = tf.paragraphs[0]
p.alignment = align
run = p.add_run()
run.text = text
run.font.size = Pt(font_size)
run.font.bold = bold
run.font.italic = italic
run.font.color.rgb = color
run.font.name = "Calibri"
return tb
def add_multiline(slide, lines, x, y, w, h, font_size=14, bold_first=False,
color=MID_TEXT, line_color_override=None, spacing=1.15,
wrap=True):
"""lines: list of (text, bold, color_override)"""
tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
tf = tb.text_frame
tf.word_wrap = wrap
tf.margin_left = Inches(0.08)
tf.margin_right = Inches(0.05)
tf.margin_top = Inches(0.05)
tf.margin_bottom = 0
for i, item in enumerate(lines):
if isinstance(item, str):
text, bold, clr = item, False, color
else:
text = item[0]
bold = item[1] if len(item) > 1 else False
clr = item[2] if len(item) > 2 else color
if i == 0:
p = tf.paragraphs[0]
else:
p = tf.add_paragraph()
p.alignment = PP_ALIGN.LEFT
run = p.add_run()
run.text = text
run.font.size = Pt(font_size)
run.font.bold = bold
run.font.color.rgb = clr
run.font.name = "Calibri"
return tb
def fetch_image_b64(url):
try:
result = json.loads(subprocess.check_output(
["python", "/tmp/skills/shared/scripts/fetch_images.py", url],
timeout=20
))
if result and result[0]["base64"]:
return result[0]["base64"]
except Exception as e:
print(f" fetch failed: {url} — {e}")
return None
def embed_image(slide, url, x, y, w, h=None):
b64 = fetch_image_b64(url)
if not b64:
# draw a placeholder box
box = add_rect(slide, x, y, w, h or w*0.65, LIGHT_BG)
add_text(slide, "[Image]", x, y, w, h or w*0.65, 10, color=MID_TEXT, align=PP_ALIGN.CENTER)
return
raw = base64.b64decode(b64.split(",", 1)[1])
if h:
slide.shapes.add_picture(BytesIO(raw), Inches(x), Inches(y),
width=Inches(w), height=Inches(h))
else:
slide.shapes.add_picture(BytesIO(raw), Inches(x), Inches(y), width=Inches(w))
def header_bar(slide, title, subtitle=None):
"""Dark blue header bar at top with white title."""
add_rect(slide, 0, 0, 13.333, 1.05, DARK_BLUE)
add_text(slide, title, 0.2, 0.05, 9, 0.65, 28, True, WHITE, PP_ALIGN.LEFT)
if subtitle:
add_text(slide, subtitle, 0.2, 0.65, 12, 0.35, 13, False,
RGBColor(0xBB, 0xDE, 0xFB), PP_ALIGN.LEFT)
def bottom_bar(slide, text="Cardiac Valves & Cardioembolic Stroke"):
add_rect(slide, 0, 7.15, 13.333, 0.35, DARK_BLUE)
add_text(slide, text, 0.2, 7.15, 12, 0.35, 9, False,
RGBColor(0xBB, 0xDE, 0xFB), PP_ALIGN.LEFT)
# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 1: Title Slide
# ═══════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
# full gradient-like background
add_rect(slide, 0, 0, 13.333, 7.5, DARK_BLUE)
add_rect(slide, 0, 4.5, 13.333, 3.0, MED_BLUE)
# decorative teal accent bar
add_rect(slide, 0, 3.6, 13.333, 0.06, ACCENT_TEAL)
add_text(slide, "CARDIAC VALVES", 0.5, 0.8, 12.5, 1.2, 48, True, WHITE, PP_ALIGN.CENTER)
add_text(slide, "Types | Pathology | Drug Management", 0.5, 2.0, 12.5, 0.7,
22, False, RGBColor(0xBB, 0xDE, 0xFB), PP_ALIGN.CENTER)
add_text(slide, "CARDIOEMBOLIC STROKE", 0.5, 3.8, 12.5, 0.9, 32, True,
WHITE, PP_ALIGN.CENTER)
add_text(slide, "Etiology | Symptoms & Signs | Relevant Findings | Treatment",
0.5, 4.65, 12.5, 0.6, 18, False, RGBColor(0xBB, 0xDE, 0xFB), PP_ALIGN.CENTER)
add_text(slide, "Based on Harrison's Internal Medicine 22E • Braunwald's Heart Disease 2025 • Fuster's The Heart 15E",
0.5, 6.8, 12.5, 0.5, 9, False, RGBColor(0x78, 0xA8, 0xD8), PP_ALIGN.CENTER)
# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 2: Overview — 4 Cardiac Valves
# ═══════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_rect(slide, 0, 0, 13.333, 7.5, RGBColor(0xF5, 0xF7, 0xFF))
header_bar(slide, "Overview: The Four Cardiac Valves",
"Two atrioventricular valves + Two semilunar valves")
# Heart diagram image
HEART_VALVES_IMG = "https://teachmeanatomy.info/wp-content/uploads/The-Four-Valves-of-the-Heart-1024x817.jpg"
embed_image(slide, HEART_VALVES_IMG, 0.3, 1.2, 4.8, 5.8)
# AV Valves column
add_rect(slide, 5.4, 1.15, 3.6, 2.9, RGBColor(0xE3, 0xF2, 0xFD))
add_rect(slide, 5.4, 1.15, 3.6, 0.38, MED_BLUE)
add_text(slide, "Atrioventricular (AV) Valves", 5.4, 1.15, 3.6, 0.38, 11, True, WHITE, PP_ALIGN.CENTER)
add_multiline(slide, [
("MITRAL VALVE (Bicuspid)", True, DARK_BLUE),
(" Between left atrium & left ventricle", False, MID_TEXT),
(" 2 cusps: anterior & posterior", False, MID_TEXT),
(" Supported by chordae tendineae", False, MID_TEXT),
(" Prevents backflow to LA during systole", False, MID_TEXT),
("", False, MID_TEXT),
("TRICUSPID VALVE", True, DARK_BLUE),
(" Between right atrium & right ventricle", False, MID_TEXT),
(" 3 cusps: anterior, posterior, septal", False, MID_TEXT),
(" Prevents backflow to RA during systole", False, MID_TEXT),
], 5.45, 1.55, 3.5, 2.45, 11)
# Semilunar Valves column
add_rect(slide, 9.2, 1.15, 3.9, 2.9, RGBColor(0xE8, 0xF5, 0xE9))
add_rect(slide, 9.2, 1.15, 3.9, 0.38, ACCENT_TEAL)
add_text(slide, "Semilunar Valves", 9.2, 1.15, 3.9, 0.38, 11, True, WHITE, PP_ALIGN.CENTER)
add_multiline(slide, [
("AORTIC VALVE", True, RGBColor(0x00, 0x60, 0x50)),
(" Between left ventricle & aorta", False, MID_TEXT),
(" 3 semilunar cusps (RCC, LCC, NCC)", False, MID_TEXT),
(" No papillary muscles", False, MID_TEXT),
(" Prevents backflow to LV in diastole", False, MID_TEXT),
("", False, MID_TEXT),
("PULMONARY VALVE", True, RGBColor(0x00, 0x60, 0x50)),
(" Between right ventricle & pulmonary artery", False, MID_TEXT),
(" 3 semilunar cusps", False, MID_TEXT),
(" Directs blood to lungs for oxygenation", False, MID_TEXT),
], 9.25, 1.55, 3.8, 2.45, 11)
# Blood flow summary boxes at bottom
for i, (label, color) in enumerate([
("RA -> Tricuspid -> RV", MED_BLUE),
("RV -> Pulmonary -> Lungs", ACCENT_TEAL),
("Lungs -> LA -> Mitral -> LV", MED_BLUE),
("LV -> Aortic -> Body", ACCENT_TEAL),
]):
bx = 5.4 + i * 1.97
add_rect(slide, bx, 4.2, 1.9, 0.55, color)
add_text(slide, label, bx, 4.2, 1.9, 0.55, 9, True, WHITE, PP_ALIGN.CENTER)
# Valve types summary
add_rect(slide, 5.4, 4.9, 7.7, 2.15, WHITE)
add_rect(slide, 5.4, 4.9, 7.7, 0.3, DARK_BLUE)
add_text(slide, "Key Structural Facts", 5.4, 4.9, 7.7, 0.3, 10, True, WHITE, PP_ALIGN.CENTER)
add_multiline(slide, [
("Valve", True, DARK_BLUE),
("Type", True, DARK_BLUE),
("Cusps", True, DARK_BLUE),
("Location", True, DARK_BLUE),
], 5.45, 5.22, 7.6, 0.3, 10)
rows = [
("Mitral", "AV", "2", "LA - LV"),
("Tricuspid", "AV", "3", "RA - RV"),
("Aortic", "Semilunar", "3", "LV - Aorta"),
("Pulmonary", "Semilunar", "3", "RV - PA"),
]
for ri, (n, t, c, loc) in enumerate(rows):
y = 5.55 + ri * 0.38
bg = LIGHT_BG if ri % 2 == 0 else WHITE
add_rect(slide, 5.4, y, 7.7, 0.38, bg)
add_text(slide, n, 5.45, y, 1.5, 0.38, 10, True, DARK_BLUE, PP_ALIGN.LEFT)
add_text(slide, t, 7.0, y, 1.5, 0.38, 10, False, MID_TEXT, PP_ALIGN.LEFT)
add_text(slide, c, 8.6, y, 0.8, 0.38, 10, False, MID_TEXT, PP_ALIGN.CENTER)
add_text(slide, loc, 9.5, y, 3.5, 0.38, 10, False, MID_TEXT, PP_ALIGN.LEFT)
bottom_bar(slide)
# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 3: Mitral Valve — Diseases & Drugs
# ═══════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_rect(slide, 0, 0, 13.333, 7.5, RGBColor(0xF5, 0xF7, 0xFF))
header_bar(slide, "Mitral Valve — Disease & Drug Management",
"Mitral Stenosis | Mitral Regurgitation | Mitral Valve Prolapse")
MITRAL_IMG = "https://www.heart-valve-surgery.com/Images/mitral-valve-echo-regurgitation-types.jpg"
embed_image(slide, MITRAL_IMG, 0.2, 1.15, 4.0, 2.8)
# Mitral Stenosis
add_rect(slide, 0.2, 4.1, 4.0, 0.4, RED_ACCENT)
add_text(slide, "Mitral Stenosis (MS)", 0.2, 4.1, 4.0, 0.4, 12, True, WHITE, PP_ALIGN.CENTER)
add_rect(slide, 0.2, 4.5, 4.0, 2.7, RGBColor(0xFF, 0xEB, 0xEE))
add_multiline(slide, [
("Etiology: Rheumatic fever (most common)", True, RED_ACCENT),
("Clinical: Dyspnea, hemoptysis, opening snap,", False, MID_TEXT),
(" rumbling mid-diastolic murmur at apex", False, MID_TEXT),
("Complications: Atrial fibrillation, pulmonary HTN,", False, MID_TEXT),
(" systemic embolism", False, MID_TEXT),
("DRUGS:", True, RED_ACCENT),
(" - Beta-blockers / CCBs (rate control if AF)", False, MID_TEXT),
(" - Warfarin/VKA (if AF or embolism)", False, MID_TEXT),
(" - Diuretics (pulmonary congestion)", False, MID_TEXT),
(" - PBMV (balloon valvotomy) if severe", False, MID_TEXT),
], 0.25, 4.52, 3.9, 2.65, 10.5)
# Mitral Regurgitation
add_rect(slide, 4.5, 1.15, 4.1, 0.4, MED_BLUE)
add_text(slide, "Mitral Regurgitation (MR)", 4.5, 1.15, 4.1, 0.4, 12, True, WHITE, PP_ALIGN.CENTER)
add_rect(slide, 4.5, 1.55, 4.1, 3.0, RGBColor(0xE3, 0xF2, 0xFD))
add_multiline(slide, [
("Etiology: MVP, rheumatic, ischemic, infective", True, MED_BLUE),
(" endocarditis, annular dilatation", False, MID_TEXT),
("Clinical: Pansystolic murmur at apex radiating", False, MID_TEXT),
(" to axilla, exertional dyspnea, AF", False, MID_TEXT),
("DRUGS (Acute MR):", True, MED_BLUE),
(" - Vasodilators: Nitroprusside, Nitrates", False, MID_TEXT),
(" - Inotropes: Dobutamine (cardiogenic shock)", False, MID_TEXT),
("DRUGS (Chronic MR / HFrEF):", True, MED_BLUE),
(" - ACE inhibitors / ARBs (afterload reduction)", False, MID_TEXT),
(" - Beta-blockers (rate/remodeling)", False, MID_TEXT),
(" - Anticoagulation (warfarin) if AF present", False, MID_TEXT),
(" - Diuretics (volume overload)", False, MID_TEXT),
("Surgery: Repair or replacement when LVEF <60%", False, RED_ACCENT),
], 4.55, 1.57, 4.0, 2.95, 10.5)
# Mitral Valve Prolapse
add_rect(slide, 4.5, 4.65, 4.1, 0.4, ACCENT_TEAL)
add_text(slide, "Mitral Valve Prolapse (MVP)", 4.5, 4.65, 4.1, 0.4, 12, True, WHITE, PP_ALIGN.CENTER)
add_rect(slide, 4.5, 5.05, 4.1, 2.15, RGBColor(0xE0, 0xF2, 0xF1))
add_multiline(slide, [
("Most common cause of non-ischemic MR", True, ACCENT_TEAL),
("Clinical: Mid-systolic click, late systolic murmur", False, MID_TEXT),
(" Chest pain, palpitations, anxiety", False, MID_TEXT),
("DRUGS:", True, ACCENT_TEAL),
(" - Aspirin (cryptogenic stroke/TIA)", False, MID_TEXT),
(" - Beta-blockers (palpitations, chest pain)", False, MID_TEXT),
(" - Warfarin/OAC (if AF develops)", False, MID_TEXT),
(" - Avoid: No treatment if asymptomatic", False, MID_TEXT),
], 4.55, 5.07, 4.0, 2.1, 10.5)
# Drug summary column
add_rect(slide, 8.8, 1.15, 4.33, 0.4, DARK_BLUE)
add_text(slide, "Drug Reference — Mitral Valve", 8.8, 1.15, 4.33, 0.4, 12, True, WHITE, PP_ALIGN.CENTER)
add_rect(slide, 8.8, 1.55, 4.33, 5.65, RGBColor(0xF3, 0xF4, 0xFF))
drug_lines = [
("Warfarin (VKA)", True, DARK_BLUE),
(" Target INR 2-3 (MS with AF/embolism)", False, MID_TEXT),
(" Target INR 2.5-3.5 (mechanical valve)", False, MID_TEXT),
("", False, MID_TEXT),
("DOACs (rivaroxaban/apixaban/dabigatran)", True, DARK_BLUE),
(" For non-valvular AF (NOT mechanical valves)", False, MID_TEXT),
(" Preferred over VKA for AF in native valves", False, MID_TEXT),
("", False, MID_TEXT),
("Beta-blockers", True, DARK_BLUE),
(" Metoprolol, Bisoprolol", False, MID_TEXT),
(" Rate control in AF; symptom relief in MVP", False, MID_TEXT),
("", False, MID_TEXT),
("ACE Inhibitors / ARBs", True, DARK_BLUE),
(" Enalapril, Ramipril, Losartan", False, MID_TEXT),
(" For chronic MR with LV dysfunction", False, MID_TEXT),
("", False, MID_TEXT),
("Diuretics (Furosemide)", True, DARK_BLUE),
(" Pulmonary congestion relief", False, MID_TEXT),
(" Use with caution (monitor electrolytes)", False, MID_TEXT),
("", False, MID_TEXT),
("Aspirin 75-100 mg", True, DARK_BLUE),
(" MVP with cryptogenic stroke/TIA", False, MID_TEXT),
(" Bioprosthetic valves", False, MID_TEXT),
]
add_multiline(slide, drug_lines, 8.85, 1.58, 4.23, 5.58, 10)
bottom_bar(slide)
# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 4: Aortic Valve — Diseases & Drugs
# ═══════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_rect(slide, 0, 0, 13.333, 7.5, RGBColor(0xF5, 0xF7, 0xFF))
header_bar(slide, "Aortic Valve — Disease & Drug Management",
"Aortic Stenosis | Aortic Regurgitation | Bicuspid Aortic Valve")
AORTIC_IMG = "https://microbenotes.com/wp-content/uploads/2023/07/Heart-Valves.jpg"
embed_image(slide, AORTIC_IMG, 0.2, 1.15, 4.2, 2.8)
# Aortic Stenosis
add_rect(slide, 4.65, 1.15, 4.0, 0.4, RED_ACCENT)
add_text(slide, "Aortic Stenosis (AS)", 4.65, 1.15, 4.0, 0.4, 12, True, WHITE, PP_ALIGN.CENTER)
add_rect(slide, 4.65, 1.55, 4.0, 3.0, RGBColor(0xFF, 0xEB, 0xEE))
add_multiline(slide, [
("Etiology: Calcific (degenerative, most common),", True, RED_ACCENT),
(" bicuspid AV, rheumatic", False, MID_TEXT),
("Classic Triad: Angina, Syncope, HF", True, RED_ACCENT),
(" Systolic murmur: harsh crescendo-decrescendo", False, MID_TEXT),
(" radiating to carotids; pulsus parvus et tardus", False, MID_TEXT),
(" Apex-carotid delay; soft S2, S4 gallop", False, MID_TEXT),
("DRUGS:", True, RED_ACCENT),
(" - No medical therapy reverses AS", False, MID_TEXT),
(" - ACE inhibitors (cautiously, for HF)", False, MID_TEXT),
(" - Beta-blockers (angina management)", False, MID_TEXT),
(" - Diuretics (HF symptoms)", False, MID_TEXT),
(" - Avoid: Vasodilators/nitrates (dangerous)", False, RED_ACCENT),
("Intervention: SAVR or TAVR when symptomatic", False, MID_TEXT),
(" or AVA <1.0 cm2 / mean gradient >40 mmHg", False, MID_TEXT),
], 4.70, 1.57, 3.9, 2.95, 10)
# Aortic Regurgitation
add_rect(slide, 4.65, 4.65, 4.0, 0.4, MED_BLUE)
add_text(slide, "Aortic Regurgitation (AR)", 4.65, 4.65, 4.0, 0.4, 12, True, WHITE, PP_ALIGN.CENTER)
add_rect(slide, 4.65, 5.05, 4.0, 2.15, RGBColor(0xE3, 0xF2, 0xFD))
add_multiline(slide, [
("Etiology: Bicuspid AV, rheumatic, IE, Marfan,", True, MED_BLUE),
(" aortic root dilatation, syphilis", False, MID_TEXT),
("Signs: De Musset, Quincke, Duroziez, Traube,", False, MID_TEXT),
(" wide pulse pressure, blowing diastolic murmur", False, MID_TEXT),
("DRUGS:", True, MED_BLUE),
(" - Vasodilators: Nifedipine, ACE-I, ARBs", False, MID_TEXT),
(" - Diuretics: Furosemide (acute decompensation)", False, MID_TEXT),
(" - Acute severe AR: Nitroprusside + Dobutamine", False, MID_TEXT),
(" - Avoid: Beta-blockers (bradycardia worsens AR)", False, RED_ACCENT),
("Surgery when LVEF <50% or LVESD >50 mm", False, MID_TEXT),
], 4.70, 5.07, 3.9, 2.1, 10)
# Drug & Bicuspid Aortic Valve panel
add_rect(slide, 8.9, 1.15, 4.2, 0.4, DARK_BLUE)
add_text(slide, "Bicuspid AV & Drug Reference", 8.9, 1.15, 4.2, 0.4, 12, True, WHITE, PP_ALIGN.CENTER)
add_rect(slide, 8.9, 1.55, 4.2, 5.65, RGBColor(0xF3, 0xF4, 0xFF))
add_multiline(slide, [
("BICUSPID AORTIC VALVE", True, DARK_BLUE),
(" Congenital (1-2% population)", False, MID_TEXT),
(" Risk: progressive AS, AR, aortic dissection", False, MID_TEXT),
(" Endocarditis prophylaxis recommended", False, MID_TEXT),
(" Beta-blockers for aortic root dilatation", False, MID_TEXT),
("", False, MID_TEXT),
("DRUG SUMMARY — AORTIC VALVE", True, DARK_BLUE),
("Vasodilators (Chronic AR):", True, RGBColor(0x00, 0x60, 0x50)),
(" Nifedipine 30-60 mg/day", False, MID_TEXT),
(" Enalapril / Lisinopril / Losartan", False, MID_TEXT),
("", False, MID_TEXT),
("Acute Severe AR:", True, RED_ACCENT),
(" IV Nitroprusside + Dobutamine", False, MID_TEXT),
(" Emergency surgery usually required", False, MID_TEXT),
("", False, MID_TEXT),
("Aortic Stenosis - HF management:", True, RED_ACCENT),
(" Diuretics (Furosemide 20-80 mg)", False, MID_TEXT),
(" Digoxin (systolic HF with AF)", False, MID_TEXT),
(" ACE-I cautiously (no abrupt drops in BP)", False, MID_TEXT),
("", False, MID_TEXT),
("Infective Endocarditis Prophylaxis:", True, ACCENT_TEAL),
(" Amoxicillin 2g oral 30-60 min before procedure", False, MID_TEXT),
(" If penicillin allergy: Clindamycin 600 mg", False, MID_TEXT),
], 8.95, 1.58, 4.1, 5.58, 10)
# Aortic valve low image box
add_rect(slide, 0.2, 4.1, 4.2, 0.4, ACCENT_TEAL)
add_text(slide, "Aortic Valve — Key Clinical Signs", 0.2, 4.1, 4.2, 0.4, 11, True, WHITE, PP_ALIGN.CENTER)
add_rect(slide, 0.2, 4.5, 4.2, 2.7, RGBColor(0xE0, 0xF2, 0xF1))
add_multiline(slide, [
("AORTIC STENOSIS signs:", True, ACCENT_TEAL),
(" Crescendo-decrescendo systolic ejection murmur", False, MID_TEXT),
(" Radiates to right carotid / neck", False, MID_TEXT),
(" Pulsus parvus et tardus (slow, weak pulse)", False, MID_TEXT),
(" Apex-carotid delay, reduced S2", False, MID_TEXT),
(" S4 gallop, LVH on echo/ECG", False, MID_TEXT),
("AORTIC REGURGITATION signs:", True, MED_BLUE),
(" Blowing early diastolic murmur (LLSB)", False, MID_TEXT),
(" Wide pulse pressure, water-hammer pulse", False, MID_TEXT),
(" Corrigan's, De Musset's, Quincke's signs", False, MID_TEXT),
], 0.25, 4.52, 4.1, 2.65, 10)
bottom_bar(slide)
# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 5: Tricuspid & Pulmonary Valves
# ═══════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_rect(slide, 0, 0, 13.333, 7.5, RGBColor(0xF5, 0xF7, 0xFF))
header_bar(slide, "Tricuspid & Pulmonary Valve — Disease & Drug Management",
"Tricuspid Regurgitation | Tricuspid Stenosis | Pulmonary Stenosis | Pulmonary Regurgitation")
# Tricuspid Regurgitation
add_rect(slide, 0.2, 1.15, 3.15, 0.4, RED_ACCENT)
add_text(slide, "Tricuspid Regurgitation (TR)", 0.2, 1.15, 3.15, 0.4, 11, True, WHITE, PP_ALIGN.CENTER)
add_rect(slide, 0.2, 1.55, 3.15, 2.6, RGBColor(0xFF, 0xEB, 0xEE))
add_multiline(slide, [
("Etiology: Functional (most common, RV overload),", True, RED_ACCENT),
(" IE (IV drug users), rheumatic, carcinoid", False, MID_TEXT),
("Signs: Pansystolic murmur at LLSB increasing with", False, MID_TEXT),
(" inspiration (Carvallo's sign), JVP elevation,", False, MID_TEXT),
(" pulsatile hepatomegaly, peripheral edema", False, MID_TEXT),
("DRUGS:", True, RED_ACCENT),
(" - Diuretics (edema/ascites relief)", False, MID_TEXT),
(" - Treat underlying cause (RV overload, PAH)", False, MID_TEXT),
(" - Bosentan/sildenafil (if PAH-related)", False, MID_TEXT),
(" - Antibiotics (IE - organism directed)", False, MID_TEXT),
(" - Surgical tricuspid repair (annuloplasty)", False, MID_TEXT),
], 0.25, 1.57, 3.05, 2.55, 10)
# Tricuspid Stenosis
add_rect(slide, 0.2, 4.25, 3.15, 0.4, MED_BLUE)
add_text(slide, "Tricuspid Stenosis (TS)", 0.2, 4.25, 3.15, 0.4, 11, True, WHITE, PP_ALIGN.CENTER)
add_rect(slide, 0.2, 4.65, 3.15, 2.55, RGBColor(0xE3, 0xF2, 0xFD))
add_multiline(slide, [
("Etiology: Rheumatic (nearly always with MS),", True, MED_BLUE),
(" carcinoid syndrome (rare)", False, MID_TEXT),
("Signs: Presystolic murmur LLSB, JVP elevation", False, MID_TEXT),
(" (Giant 'a' wave), hepatomegaly, ascites", False, MID_TEXT),
("DRUGS:", True, MED_BLUE),
(" - Diuretics (Furosemide + Spironolactone)", False, MID_TEXT),
(" - Salt restriction", False, MID_TEXT),
(" - Warfarin (if AF present)", False, MID_TEXT),
(" - Balloon valvuloplasty / surgical repair", False, MID_TEXT),
], 0.25, 4.67, 3.05, 2.5, 10)
# Pulmonary Stenosis
add_rect(slide, 3.55, 1.15, 3.15, 0.4, ACCENT_TEAL)
add_text(slide, "Pulmonary Stenosis (PS)", 3.55, 1.15, 3.15, 0.4, 11, True, WHITE, PP_ALIGN.CENTER)
add_rect(slide, 3.55, 1.55, 3.15, 2.6, RGBColor(0xE0, 0xF2, 0xF1))
add_multiline(slide, [
("Etiology: Congenital (most common), carcinoid,", True, ACCENT_TEAL),
(" rubella syndrome, Noonan syndrome", False, MID_TEXT),
("Signs: Systolic ejection murmur at 2nd LICS,", False, MID_TEXT),
(" ejection click (congenital), RVH, wide-split S2", False, MID_TEXT),
(" Cyanosis if severe (right-to-left shunt)", False, MID_TEXT),
("DRUGS:", True, ACCENT_TEAL),
(" - No specific medical therapy (mild-moderate)", False, MID_TEXT),
(" - Diuretics (RV failure / right HF)", False, MID_TEXT),
(" - Balloon pulmonary valvuloplasty (if gradient", False, MID_TEXT),
(" >40 mmHg or symptomatic)", False, MID_TEXT),
(" - Prostaglandin E1 (neonates with critical PS)", False, MID_TEXT),
], 3.60, 1.57, 3.05, 2.55, 10)
# Pulmonary Regurgitation
add_rect(slide, 3.55, 4.25, 3.15, 0.4, GOLD)
add_text(slide, "Pulmonary Regurgitation (PR)", 3.55, 4.25, 3.15, 0.4, 11, True, WHITE, PP_ALIGN.CENTER)
add_rect(slide, 3.55, 4.65, 3.15, 2.55, RGBColor(0xFF, 0xF8, 0xE1))
add_multiline(slide, [
("Etiology: Idiopathic, post-valvuloplasty (ToF),", True, GOLD),
(" pulmonary hypertension, IE", False, MID_TEXT),
("Signs: Decrescendo diastolic murmur at LLSB", False, MID_TEXT),
(" (Graham Steell murmur if PAH-related)", False, MID_TEXT),
(" RV enlargement, dyspnea, fatigue", False, MID_TEXT),
("DRUGS:", True, GOLD),
(" - Treat underlying PAH if present", False, MID_TEXT),
(" - Diuretics (RV decompensation)", False, MID_TEXT),
(" - Pulmonary valve replacement (symptomatic)", False, MID_TEXT),
(" - PERCEVAL / TPVR for post-ToF repair", False, MID_TEXT),
], 3.60, 4.67, 3.05, 2.5, 10)
# Right panel: All valves drug reference
VALVES_DIAGRAM = "https://www.kenhub.com/thumbs/library/anatomy/heart-valves-small.jpeg"
add_rect(slide, 7.0, 1.15, 6.1, 0.4, DARK_BLUE)
add_text(slide, "Drug Quick Reference — Right Heart Valves", 7.0, 1.15, 6.1, 0.4, 12, True, WHITE, PP_ALIGN.CENTER)
add_rect(slide, 7.0, 1.55, 6.1, 5.65, RGBColor(0xF3, 0xF4, 0xFF))
embed_image(slide, "https://microbenotes.com/wp-content/uploads/2023/07/Heart-Valves.jpg",
9.5, 1.65, 3.5, 2.5)
add_multiline(slide, [
("DIURETICS (for congestion in all right-sided lesions)", True, DARK_BLUE),
(" Furosemide 20-80 mg IV/oral", False, MID_TEXT),
(" Spironolactone 25-100 mg (ascites/edema)", False, MID_TEXT),
("", False, MID_TEXT),
("PAH TREATMENT (when TR/PR secondary to PAH)", True, DARK_BLUE),
(" Endothelin antagonists: Bosentan, Ambrisentan", False, MID_TEXT),
(" PDE5 inhibitors: Sildenafil, Tadalafil", False, MID_TEXT),
(" Prostacyclins: Epoprostenol (IV), Iloprost", False, MID_TEXT),
("", False, MID_TEXT),
("ENDOCARDITIS PROPHYLAXIS", True, DARK_BLUE),
(" Amoxicillin 2g PO (30-60 min pre-procedure)", False, MID_TEXT),
(" Or Clindamycin 600 mg (if PCN allergy)", False, MID_TEXT),
(" Gentamicin (for high-risk procedures, prosthetic)", False, MID_TEXT),
("", False, MID_TEXT),
("ANTICOAGULATION (if AF develops)", True, DARK_BLUE),
(" VKA (Warfarin) INR 2-3 for native valves + AF", False, MID_TEXT),
(" DOACs for non-valvular AF", False, MID_TEXT),
], 7.05, 4.2, 2.35, 2.9, 10)
bottom_bar(slide)
# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 6: Prosthetic Valves & Anticoagulation
# ═══════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_rect(slide, 0, 0, 13.333, 7.5, RGBColor(0xF5, 0xF7, 0xFF))
header_bar(slide, "Prosthetic Cardiac Valves — Types & Anticoagulation",
"Mechanical Valves | Bioprosthetic Valves | INR Targets")
# Mechanical valves panel
add_rect(slide, 0.2, 1.15, 4.1, 0.4, DARK_BLUE)
add_text(slide, "Mechanical Prosthetic Valves", 0.2, 1.15, 4.1, 0.4, 12, True, WHITE, PP_ALIGN.CENTER)
add_rect(slide, 0.2, 1.55, 4.1, 3.0, LIGHT_BG)
add_multiline(slide, [
("Types:", True, DARK_BLUE),
(" 1. Bileaflet (St. Jude Medical) - most common", False, MID_TEXT),
(" 2. Tilting disc (Medtronic-Hall)", False, MID_TEXT),
(" 3. Ball-in-cage (Starr-Edwards, historical)", False, MID_TEXT),
("", False, MID_TEXT),
("Anticoagulation - MANDATORY (LIFELONG):", True, RED_ACCENT),
(" Aortic bileaflet/tilting disc (sinus rhythm):", False, MID_TEXT),
(" VKA target INR 2.5 (range 2.0-3.0)", False, MID_TEXT),
(" Mitral position (any mechanical):", False, MID_TEXT),
(" VKA target INR 3.0 (range 2.5-3.5)", False, MID_TEXT),
(" + AF, prior embolism, low EF, large LA:", False, MID_TEXT),
(" Add Aspirin 75-100 mg + VKA INR 2.5-3.5", False, MID_TEXT),
(" DOACs: CONTRAINDICATED for mechanical valves", False, RED_ACCENT),
], 0.25, 1.57, 4.0, 2.95, 10.5)
# Bioprosthetic valves panel
add_rect(slide, 4.55, 1.15, 4.15, 0.4, ACCENT_TEAL)
add_text(slide, "Bioprosthetic (Tissue) Valves", 4.55, 1.15, 4.15, 0.4, 12, True, WHITE, PP_ALIGN.CENTER)
add_rect(slide, 4.55, 1.55, 4.15, 3.0, RGBColor(0xE0, 0xF2, 0xF1))
add_multiline(slide, [
("Types:", True, ACCENT_TEAL),
(" 1. Porcine (pig tissue) - Carpentier-Edwards", False, MID_TEXT),
(" 2. Bovine pericardial - longest lasting tissue", False, MID_TEXT),
(" 3. Human homograft (pulmonary/aortic)", False, MID_TEXT),
(" 4. TAVR valves (transcatheter)", False, MID_TEXT),
("", False, MID_TEXT),
("Anticoagulation:", True, ACCENT_TEAL),
(" First 3 months post-implant:", False, MID_TEXT),
(" VKA INR 2.5 (aortic) or INR 3.0 (mitral)", False, MID_TEXT),
(" After 3 months (if sinus rhythm):", False, MID_TEXT),
(" Aspirin 75-100 mg only", False, MID_TEXT),
(" If AF develops at any point:", False, MID_TEXT),
(" DOACs or VKA based on CHA2DS2-VASc", False, MID_TEXT),
(" If embolism despite aspirin:", False, MID_TEXT),
(" Switch to VKA", False, MID_TEXT),
], 4.60, 1.57, 4.05, 2.95, 10.5)
# INR Summary table
add_rect(slide, 9.0, 1.15, 4.1, 0.4, DARK_BLUE)
add_text(slide, "INR Targets & Drug Summary", 9.0, 1.15, 4.1, 0.4, 12, True, WHITE, PP_ALIGN.CENTER)
add_rect(slide, 9.0, 1.55, 4.1, 3.0, RGBColor(0xF3, 0xF4, 0xFF))
inr_rows = [
("Aortic Mechanical (SR)", "2.5 (2-3)"),
("Mitral Mechanical (SR)", "3.0 (2.5-3.5)"),
("Any Mech. + AF/LV-Throm", "3.0 + Aspirin"),
("Bioprosthetic (0-3 mo)", "2.5-3.0"),
("Bioprosthetic (>3 mo, SR)", "Aspirin only"),
("Bioprosthetic + AF", "DOAC/VKA"),
("Rheumatic MS + AF", "INR 2-3"),
]
add_text(slide, "Valve Condition", 9.0, 1.55, 2.5, 0.32, 9, True, DARK_BLUE)
add_text(slide, "Target INR / Therapy", 11.5, 1.55, 1.55, 0.32, 9, True, DARK_BLUE)
for ri, (cond, tgt) in enumerate(inr_rows):
y = 1.87 + ri * 0.34
bg = LIGHT_BG if ri % 2 == 0 else WHITE
add_rect(slide, 9.0, y, 4.1, 0.34, bg)
add_text(slide, cond, 9.02, y, 2.45, 0.34, 8.5, False, MID_TEXT)
add_text(slide, tgt, 11.5, y, 1.55, 0.34, 8.5, True, RED_ACCENT)
# Bottom expanded drug reference
add_rect(slide, 0.2, 4.65, 12.93, 0.4, MED_BLUE)
add_text(slide, "Antithrombotic Therapy for Valve Disease — Summary by Evidence (Harrison's 22E / Braunwald's HD)",
0.2, 4.65, 12.93, 0.4, 11, True, WHITE, PP_ALIGN.CENTER)
add_rect(slide, 0.2, 5.05, 12.93, 2.15, RGBColor(0xE3, 0xF2, 0xFD))
cols = [
("Anticoagulation STANDARD\n(Warfarin/VKA)", [
"Non-valvular AF (CHA2DS2-VASc ≥2)",
"LA/LV thrombus (any cause)",
"Mechanical prosthetic valve (lifelong)",
"Mitral stenosis + AF/embolism/LA >55mm",
], DARK_BLUE),
("DOACs PREFERRED\n(Apixaban/Rivaroxaban/Dabigatran)", [
"Non-valvular AF (CHA2DS2-VASc ≥2)",
"Bioprosthetic valve + AF (after 3 months)",
"PFO-related cryptogenic stroke (some cases)",
"NOT for mechanical valves (contraindicated)",
], ACCENT_TEAL),
("Antiplatelet ONLY\n(Aspirin 75-100 mg)", [
"Bioprosthetic valve (after 3 months, SR)",
"MVP with cryptogenic stroke/TIA",
"Aortic arch atheroma",
"PFO surgical closure adjunct therapy",
], MED_BLUE),
("ANTICOAGULATION CONTRAINDICATED", [
"Active infective endocarditis",
"Atrial myxoma (treat with surgery)",
"Asymptomatic mitral annular calcification",
"Asymptomatic aortic valve sclerosis",
], RED_ACCENT),
]
for ci, (header, items, color) in enumerate(cols):
cx = 0.25 + ci * 3.23
add_rect(slide, cx, 5.08, 3.1, 0.38, color)
add_text(slide, header, cx, 5.08, 3.1, 0.38, 8.5, True, WHITE, PP_ALIGN.CENTER)
for ii, item in enumerate(items):
add_text(slide, f" {item}", cx, 5.48 + ii * 0.38, 3.1, 0.38, 8.5, False, MID_TEXT)
bottom_bar(slide)
# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 7: Cardioembolic Stroke — Etiology
# ═══════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_rect(slide, 0, 0, 13.333, 7.5, RGBColor(0xFF, 0xF5, 0xF5))
add_rect(slide, 0, 0, 13.333, 1.05, RED_ACCENT)
add_text(slide, "CARDIOEMBOLIC STROKE — Etiology", 0.2, 0.05, 10, 0.65, 28, True, WHITE, PP_ALIGN.LEFT)
add_text(slide, "Responsible for ~20% of all ischemic strokes | Maximum deficit at onset | Higher risk of early recurrence",
0.2, 0.65, 12.9, 0.35, 12, False, RGBColor(0xFF, 0xCC, 0xCC), PP_ALIGN.LEFT)
# Mechanism box
add_rect(slide, 0.2, 1.15, 5.5, 2.4, RGBColor(0xFF, 0xEB, 0xEE))
add_rect(slide, 0.2, 1.15, 5.5, 0.38, RED_ACCENT)
add_text(slide, "Pathophysiology", 0.2, 1.15, 5.5, 0.38, 12, True, WHITE, PP_ALIGN.CENTER)
add_multiline(slide, [
("Thrombus forms on:", True, RED_ACCENT),
(" Atrial/ventricular wall | Left heart valves", False, MID_TEXT),
("Embolism to arterial circulation:", True, RED_ACCENT),
(" Most common: MCA stem (3-4 mm occlusion)", False, MID_TEXT),
(" Also: ICA terminus, PCA, ACA branches", False, MID_TEXT),
(" Leads to large infarcts (deep + cortical)", False, MID_TEXT),
("Sudden maximum deficit at onset (hallmark)", True, RGBColor(0xC6, 0x28, 0x28)),
("Petechial hemorrhage on reperfusion (common)", False, MID_TEXT),
("Frank hemorrhagic transformation = worse outcome", False, RED_ACCENT),
], 0.25, 1.55, 5.4, 2.35, 10.5)
# Common Causes
add_rect(slide, 0.2, 3.65, 5.5, 0.38, RED_ACCENT)
add_text(slide, "Common Etiologic Causes", 0.2, 3.65, 5.5, 0.38, 12, True, WHITE, PP_ALIGN.CENTER)
add_rect(slide, 0.2, 4.03, 5.5, 3.18, RGBColor(0xFF, 0xF0, 0xF0))
causes = [
("Atrial Fibrillation (AF)", "Most common cause (~50% of cardioembolic strokes)", RED_ACCENT),
("Myocardial Infarction", "Recent anterior MI with LV thrombus (transmural)", MED_BLUE),
("Prosthetic Heart Valves", "Mechanical valves - highest embolic risk", ACCENT_TEAL),
("Rheumatic Heart Disease", "Mitral stenosis + AF = very high risk", ORANGE),
("Dilated Cardiomyopathy", "Low EF, LV thrombus, wall motion abnormality", MED_BLUE),
("Infective Endocarditis", "Septic emboli (stroke + fever + new murmur)", RED_ACCENT),
("PFO / ASD", "Paradoxical embolism (venous -> arterial)", ACCENT_TEAL),
("Atrial Myxoma", "Tumour fragment embolism", ORANGE),
("Non-bacterial Thrombotic Endocarditis", "Marantic endocarditis (hypercoagulable states)", MED_BLUE),
]
for ri, (cause, detail, color) in enumerate(causes):
y = 4.05 + ri * 0.35
add_rect(slide, 0.22, y, 5.46, 0.35, WHITE if ri % 2 == 0 else RGBColor(0xFF, 0xF8, 0xF8))
add_text(slide, cause, 0.25, y, 2.1, 0.35, 9, True, color, PP_ALIGN.LEFT)
add_text(slide, detail, 2.4, y, 3.25, 0.35, 9, False, MID_TEXT, PP_ALIGN.LEFT)
# CHA2DS2-VASc panel
add_rect(slide, 6.0, 1.15, 3.35, 0.38, DARK_BLUE)
add_text(slide, "CHA\u2082DS\u2082-VASc Score", 6.0, 1.15, 3.35, 0.38, 12, True, WHITE, PP_ALIGN.CENTER)
add_rect(slide, 6.0, 1.53, 3.35, 5.65, LIGHT_BG)
cha2 = [
("C", "Congestive Heart Failure", "1"),
("H", "Hypertension", "1"),
("A\u2082", "Age ≥ 75 years", "2"),
("D", "Diabetes Mellitus", "1"),
("S\u2082", "Stroke / TIA / TE history", "2"),
("V", "Vascular disease (MI, PAD, plaque)", "1"),
("A", "Age 65-74 years", "1"),
("Sc", "Sex category (Female)", "1"),
]
add_text(slide, "MAX SCORE = 9", 6.0, 1.53, 3.35, 0.3, 9, True, RED_ACCENT, PP_ALIGN.CENTER)
for ri, (letter, meaning, pts) in enumerate(cha2):
y = 1.83 + ri * 0.42
bg = WHITE if ri % 2 == 0 else LIGHT_BG
add_rect(slide, 6.0, y, 3.35, 0.42, bg)
add_rect(slide, 6.0, y, 0.4, 0.42, MED_BLUE)
add_text(slide, letter, 6.01, y, 0.38, 0.42, 10, True, WHITE, PP_ALIGN.CENTER)
add_text(slide, meaning, 6.42, y, 2.55, 0.42, 9, False, MID_TEXT, PP_ALIGN.LEFT)
add_text(slide, pts, 9.02, y, 0.3, 0.42, 10, True, RED_ACCENT, PP_ALIGN.CENTER)
add_rect(slide, 6.0, 5.33, 3.35, 0.35, RED_ACCENT)
add_text(slide, "Score 0: No therapy | Score 1: Aspirin or OAC | Score ≥2: OAC",
6.0, 5.33, 3.35, 0.35, 8, False, WHITE, PP_ALIGN.CENTER)
add_text(slide, "Source: Harrison's Internal Medicine 22E / Fuster's The Heart 15E",
6.0, 5.7, 3.35, 0.3, 8, False, RGBColor(0x78, 0x90, 0xA8), PP_ALIGN.LEFT)
# Risk factors right panel
add_rect(slide, 9.55, 1.15, 3.6, 0.38, DARK_BLUE)
add_text(slide, "AF Risk Stratification", 9.55, 1.15, 3.6, 0.38, 12, True, WHITE, PP_ALIGN.CENTER)
add_rect(slide, 9.55, 1.53, 3.6, 2.4, LIGHT_BG)
add_multiline(slide, [
("Annual stroke risk with AF:", True, DARK_BLUE),
(" No treatment: ~5% per year", False, MID_TEXT),
(" Aspirin: reduces risk ~22%", False, MID_TEXT),
(" Warfarin (INR 2-3): reduces ~64%", False, MID_TEXT),
(" DOACs: reduces ~70% (non-inferior/superior)", False, MID_TEXT),
("", False, MID_TEXT),
("Additional AF risk factors:", True, DARK_BLUE),
(" Left atrial enlargement (>55 mm)", False, MID_TEXT),
(" Left atrial appendage thrombus", False, MID_TEXT),
(" Spontaneous echo contrast", False, MID_TEXT),
], 9.6, 1.55, 3.5, 2.35, 10)
add_rect(slide, 9.55, 4.0, 3.6, 0.38, ACCENT_TEAL)
add_text(slide, "Embolic Infarct Patterns", 9.55, 4.0, 3.6, 0.38, 12, True, WHITE, PP_ALIGN.CENTER)
add_rect(slide, 9.55, 4.38, 3.6, 2.8, RGBColor(0xE0, 0xF2, 0xF1))
add_multiline(slide, [
("MCA territory (most common):", True, ACCENT_TEAL),
(" Contralateral hemiplegia, hemisensory loss", False, MID_TEXT),
(" Aphasia (dominant hemisphere)", False, MID_TEXT),
(" Hemineglect (non-dominant)", False, MID_TEXT),
("ICA terminus:", True, ACCENT_TEAL),
(" Massive MCA + ACA territory infarct", False, MID_TEXT),
("PCA territory:", True, ACCENT_TEAL),
(" Contralateral homonymous hemianopia", False, MID_TEXT),
(" Visual agnosia, memory impairment", False, MID_TEXT),
("Cortical branch emboli:", True, ACCENT_TEAL),
(" Cortical deficits, may be transient (TIA)", False, MID_TEXT),
], 9.6, 4.40, 3.5, 2.75, 10)
bottom_bar(slide, "Cardioembolic Stroke — Etiology & Risk Factors")
# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 8: Cardioembolic Stroke — Symptoms, Signs & Relevant Findings
# ═══════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_rect(slide, 0, 0, 13.333, 7.5, RGBColor(0xF5, 0xF7, 0xFF))
add_rect(slide, 0, 0, 13.333, 1.05, RED_ACCENT)
add_text(slide, "CARDIOEMBOLIC STROKE — Symptoms, Signs & Relevant Findings",
0.2, 0.05, 12, 0.65, 24, True, WHITE, PP_ALIGN.LEFT)
add_text(slide, "Sudden-onset neurological deficit | Cortical signs + cardiac findings | Imaging diagnosis",
0.2, 0.65, 12.9, 0.35, 12, False, RGBColor(0xFF, 0xCC, 0xCC), PP_ALIGN.LEFT)
# Symptoms column
add_rect(slide, 0.2, 1.15, 3.0, 0.38, RED_ACCENT)
add_text(slide, "Symptoms (Patient Reports)", 0.2, 1.15, 3.0, 0.38, 11, True, WHITE, PP_ALIGN.CENTER)
add_rect(slide, 0.2, 1.53, 3.0, 3.95, RGBColor(0xFF, 0xF0, 0xF0))
add_multiline(slide, [
("Sudden onset (hallmark — maximal at onset):", True, RED_ACCENT),
("", False, MID_TEXT),
("Motor symptoms:", True, RED_ACCENT),
(" Sudden hemiplegia / hemiparesis", False, MID_TEXT),
(" Facial droop (unilateral)", False, MID_TEXT),
(" Hand weakness / grip loss", False, MID_TEXT),
("", False, MID_TEXT),
("Sensory symptoms:", True, MED_BLUE),
(" Hemisensory loss (numbness, tingling)", False, MID_TEXT),
(" Face-arm-leg distribution", False, MID_TEXT),
("", False, MID_TEXT),
("Speech symptoms:", True, ACCENT_TEAL),
(" Aphasia (expressive/receptive/global)", False, MID_TEXT),
(" Dysarthria (slurred speech)", False, MID_TEXT),
("", False, MID_TEXT),
("Visual symptoms:", True, ORANGE),
(" Homonymous hemianopia", False, MID_TEXT),
(" Amaurosis fugax (transient monocular loss)", False, MID_TEXT),
(" Diplopia (posterior circulation)", False, MID_TEXT),
("", False, MID_TEXT),
("Other:", True, MID_TEXT),
(" Sudden headache (hemorrhagic transformation)", False, MID_TEXT),
(" Confusion, neglect, gaze deviation", False, MID_TEXT),
(" Vertigo, ataxia, nausea (posterior circ.)", False, MID_TEXT),
], 0.25, 1.55, 2.9, 3.9, 10)
# Signs column
add_rect(slide, 3.4, 1.15, 3.2, 0.38, MED_BLUE)
add_text(slide, "Clinical Signs (Examination)", 3.4, 1.15, 3.2, 0.38, 11, True, WHITE, PP_ALIGN.CENTER)
add_rect(slide, 3.4, 1.53, 3.2, 3.95, RGBColor(0xE3, 0xF2, 0xFD))
add_multiline(slide, [
("Neurological Signs:", True, MED_BLUE),
(" Contralateral hemiplegia", False, MID_TEXT),
(" Contralateral hemisensory loss", False, MID_TEXT),
(" Forced gaze deviation toward lesion", False, MID_TEXT),
(" Hemineglect (non-dominant parietal)", False, MID_TEXT),
(" Aphasia (dominant hemisphere)", False, MID_TEXT),
(" UMN pattern: hyperreflexia, Babinski", False, MID_TEXT),
(" Cortical signs: astereognosis, agraphesthesia", False, MID_TEXT),
("", False, MID_TEXT),
("NIHSS Score Assessment:", True, MED_BLUE),
(" Moderate-severe (NIHSS ≥8 suggests cardioembolic)", False, MID_TEXT),
(" Cortical involvement (often in cardioembolism)", False, MID_TEXT),
("", False, MID_TEXT),
("Cardiac Signs:", True, RED_ACCENT),
(" Irregular pulse (AF — irregular irregular)", False, MID_TEXT),
(" New cardiac murmur (IE, valvular disease)", False, MID_TEXT),
(" S3 gallop, elevated JVP (HF/LV dysfunction)", False, MID_TEXT),
(" Systolic murmur (MS, AS, MR, prosthetic)", False, MID_TEXT),
("", False, MID_TEXT),
("Other Signs:", True, ACCENT_TEAL),
(" Fever + embolic stroke = infective endocarditis", False, MID_TEXT),
(" Osler nodes, Janeway lesions, Roth spots", False, MID_TEXT),
(" Splinter hemorrhages (IE)", False, MID_TEXT),
(" Petechiae (IE / thrombocytopenia)", False, MID_TEXT),
], 3.45, 1.55, 3.1, 3.9, 10)
# Relevant Findings (Investigations)
add_rect(slide, 6.8, 1.15, 3.2, 0.38, ACCENT_TEAL)
add_text(slide, "Relevant Findings (Investigations)", 6.8, 1.15, 3.2, 0.38, 11, True, WHITE, PP_ALIGN.CENTER)
add_rect(slide, 6.8, 1.53, 3.2, 3.95, RGBColor(0xE0, 0xF2, 0xF1))
add_multiline(slide, [
("Neuroimaging:", True, ACCENT_TEAL),
(" CT brain (non-contrast): rule out hemorrhage", False, MID_TEXT),
(" MRI DWI: restricted diffusion — infarct", False, MID_TEXT),
(" Cortical involvement typical of cardioembolism", False, MID_TEXT),
(" Multiple territory involvement = cardiac source", False, MID_TEXT),
(" Hemorrhagic transformation (on MRI/CT)", False, MID_TEXT),
("", False, MID_TEXT),
("Cardiac Investigations:", True, RED_ACCENT),
(" 12-lead ECG: AF, LVH, recent MI (Q waves)", False, MID_TEXT),
(" Holter / 24-72h monitoring: paroxysmal AF", False, MID_TEXT),
(" Echocardiography (TTE/TEE):", False, MID_TEXT),
(" LV thrombus, EF, wall motion abnormality", False, MID_TEXT),
(" Valve morphology, vegetation, LAA thrombus", False, MID_TEXT),
(" Bubble contrast: PFO / intracardiac shunt", False, MID_TEXT),
(" Implantable cardiac monitor: cryptogenic stroke", False, MID_TEXT),
("", False, MID_TEXT),
("Labs:", True, MED_BLUE),
(" CBC, coagulation, metabolic panel, glucose", False, MID_TEXT),
(" Troponin (silent MI, demand ischemia)", False, MID_TEXT),
(" Blood cultures x3 (if IE suspected)", False, MID_TEXT),
(" Hypercoagulable screen (young patients)", False, MID_TEXT),
(" CRP/ESR (vasculitis, IE)", False, MID_TEXT),
(" HbA1c, lipids, renal function", False, MID_TEXT),
], 6.85, 1.55, 3.1, 3.9, 10)
# Differentiating cardioembolic vs other stroke
add_rect(slide, 10.2, 1.15, 2.95, 0.38, DARK_BLUE)
add_text(slide, "Distinguishing Features", 10.2, 1.15, 2.95, 0.38, 11, True, WHITE, PP_ALIGN.CENTER)
add_rect(slide, 10.2, 1.53, 2.95, 3.95, LIGHT_BG)
add_multiline(slide, [
("Cardioembolic vs Lacunar:", True, DARK_BLUE),
(" Cortical signs present in cardioembolism", False, MID_TEXT),
(" Aphasia, neglect, hemianopia = cortical", False, MID_TEXT),
(" Pure motor/sensory = lacunar", False, MID_TEXT),
("", False, MID_TEXT),
("Cardioembolic vs Thrombotic:", True, DARK_BLUE),
(" No preceding TIA (sudden onset)", False, MID_TEXT),
(" Multiple territory = embolic", False, MID_TEXT),
(" Cardiac source identified on echo", False, MID_TEXT),
("", False, MID_TEXT),
("MRI Features Favoring Cardioembolic:", True, DARK_BLUE),
(" Multiple simultaneous infarcts", False, MID_TEXT),
(" Bilateral or anterior + posterior", False, MID_TEXT),
(" Cortical/subcortical distribution", False, MID_TEXT),
(" Hemorrhagic transformation present", False, MID_TEXT),
("", False, MID_TEXT),
("TOAST Classification:", True, MED_BLUE),
(" 'Cardioembolism' when HIGH or MEDIUM", False, MID_TEXT),
(" risk cardiac source identified", False, MID_TEXT),
], 10.25, 1.55, 2.85, 3.9, 9.5)
# Bottom summary
add_rect(slide, 0.2, 5.55, 12.93, 0.38, DARK_BLUE)
add_text(slide, "Bedside Assessment: BE-FAST — Balance | Eyes | Face drooping | Arm weakness | Speech difficulty | Time to call",
0.2, 5.55, 12.93, 0.38, 11, True, WHITE, PP_ALIGN.CENTER)
add_rect(slide, 0.2, 5.93, 12.93, 1.3, RGBColor(0xE3, 0xF2, 0xFD))
fast_items = [
("BALANCE\nSudden loss of coordination, dizziness, difficulty walking", MED_BLUE),
("EYES\nSudden vision loss, double vision, or hemianopia", ACCENT_TEAL),
("FACE\nAsk to smile — facial asymmetry/drooping", RED_ACCENT),
("ARM\nArm drift test — unilateral arm weakness", ORANGE),
("SPEECH\nSlurred, absent, or confused speech/language", MED_BLUE),
]
for ci, (item, color) in enumerate(fast_items):
cx = 0.3 + ci * 2.55
add_rect(slide, cx, 5.95, 2.45, 1.2, color)
lines = item.split("\n")
add_text(slide, lines[0], cx, 5.97, 2.45, 0.4, 11, True, WHITE, PP_ALIGN.CENTER)
if len(lines) > 1:
add_text(slide, lines[1], cx, 6.37, 2.45, 0.75, 8.5, False, WHITE, PP_ALIGN.CENTER)
bottom_bar(slide, "Cardioembolic Stroke — Symptoms, Signs & Investigations")
# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 9: Cardioembolic Stroke — Treatment
# ═══════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_rect(slide, 0, 0, 13.333, 7.5, RGBColor(0xF5, 0xF7, 0xFF))
add_rect(slide, 0, 0, 13.333, 1.05, RED_ACUTE := RGBColor(0x8B, 0x00, 0x00))
add_text(slide, "CARDIOEMBOLIC STROKE — Treatment", 0.2, 0.05, 12, 0.65, 28, True, WHITE, PP_ALIGN.LEFT)
add_text(slide, "Acute management | Thrombolysis | Thrombectomy | Secondary prevention | Anticoagulation timing",
0.2, 0.65, 12.9, 0.35, 12, False, RGBColor(0xFF, 0xCC, 0xCC), PP_ALIGN.LEFT)
# Acute Phase
add_rect(slide, 0.2, 1.15, 4.0, 0.38, RED_ACUTE)
add_text(slide, "ACUTE TREATMENT (0-24 hours)", 0.2, 1.15, 4.0, 0.38, 11, True, WHITE, PP_ALIGN.CENTER)
add_rect(slide, 0.2, 1.53, 4.0, 3.0, RGBColor(0xFF, 0xEB, 0xEE))
add_multiline(slide, [
("1. IV Thrombolysis (Alteplase / Tenecteplase):", True, RED_ACUTE),
(" Alteplase 0.9 mg/kg IV (max 90 mg)", False, MID_TEXT),
(" 10% as bolus, 90% over 60 min", False, MID_TEXT),
(" Window: within 4.5 hours of onset", False, MID_TEXT),
(" Tenecteplase 0.25 mg/kg IV (single bolus)", False, MID_TEXT),
(" Preferred by some guidelines (AHA 2024)", False, MID_TEXT),
("", False, MID_TEXT),
("2. Mechanical Thrombectomy (EVT):", True, RED_ACUTE),
(" Stent retriever / aspiration catheter", False, MID_TEXT),
(" For large vessel occlusion (LVO)", False, MID_TEXT),
(" Window: up to 24 hours (DAWN/DEFUSE-3)", False, MID_TEXT),
(" NIHSS ≥6, target vessel: ICA, MCA M1/M2", False, MID_TEXT),
("", False, MID_TEXT),
("3. Supportive Care:", True, MED_BLUE),
(" BP management: <185/110 pre-tPA", False, MID_TEXT),
(" Anti-edema: Mannitol / Hypertonic saline", False, MID_TEXT),
(" Glycemic control: Glucose 140-180 mg/dL", False, MID_TEXT),
(" Temperature management: treat fever", False, MID_TEXT),
(" Aspirin 325 mg (if not thrombolysed)", False, MID_TEXT),
], 0.25, 1.55, 3.9, 2.95, 10)
# Anticoagulation Timing
add_rect(slide, 4.4, 1.15, 4.1, 0.38, MED_BLUE)
add_text(slide, "ANTICOAGULATION TIMING", 4.4, 1.15, 4.1, 0.38, 11, True, WHITE, PP_ALIGN.CENTER)
add_rect(slide, 4.4, 1.53, 4.1, 3.0, RGBColor(0xE3, 0xF2, 0xFD))
add_multiline(slide, [
("When to START anticoagulation after stroke:", True, MED_BLUE),
("", False, MID_TEXT),
("Small infarct / TIA with AF:", True, MED_BLUE),
(" Start within 24-48 hours", False, MID_TEXT),
(" DOAC preferred (apixaban/rivaroxaban)", False, MID_TEXT),
("", False, MID_TEXT),
("Moderate infarct:", True, MED_BLUE),
(" Wait 3-5 days before anticoagulation", False, MID_TEXT),
("", False, MID_TEXT),
("Large/Severe infarct (NIHSS >15):", True, RED_ACUTE),
(" Wait 7-14 days (risk of hemorrhagic transformation)", False, MID_TEXT),
(" Repeat imaging before starting anticoagulation", False, MID_TEXT),
("", False, MID_TEXT),
("'1-3-6-12 day rule' (ESO 2022):", True, ACCENT_TEAL),
(" TIA: Day 1 | Minor stroke: Day 3", False, MID_TEXT),
(" Moderate: Day 6 | Severe: Day 12-14", False, MID_TEXT),
("", False, MID_TEXT),
("Mechanical valve + stroke:", True, RED_ACUTE),
(" Urgent re-anticoagulation after ruling out ICH", False, MID_TEXT),
(" Warfarin (DOACs are CONTRAINDICATED)", False, MID_TEXT),
], 4.45, 1.55, 4.0, 2.95, 10)
# Secondary Prevention
add_rect(slide, 8.7, 1.15, 4.4, 0.38, ACCENT_TEAL)
add_text(slide, "SECONDARY PREVENTION", 8.7, 1.15, 4.4, 0.38, 11, True, WHITE, PP_ALIGN.CENTER)
add_rect(slide, 8.7, 1.53, 4.4, 3.0, RGBColor(0xE0, 0xF2, 0xF1))
add_multiline(slide, [
("A. Atrial Fibrillation:", True, ACCENT_TEAL),
(" DOACs (apixaban, rivaroxaban, dabigatran)", False, MID_TEXT),
(" Preferred over warfarin for non-valvular AF", False, MID_TEXT),
(" Apixaban 5mg BD / Rivaroxaban 20mg OD", False, MID_TEXT),
(" Warfarin (VKA) INR 2-3 (valvular AF)", False, MID_TEXT),
("", False, MID_TEXT),
("B. Mechanical Heart Valve:", True, ACCENT_TEAL),
(" Warfarin (DOACs contraindicated)", False, MID_TEXT),
(" INR 2.5-3.5 (mitral) / 2.0-3.0 (aortic)", False, MID_TEXT),
(" + Aspirin 75-100 mg if high risk", False, MID_TEXT),
("", False, MID_TEXT),
("C. LV Thrombus / Recent MI:", True, ACCENT_TEAL),
(" VKA (warfarin) INR 2-3 for 3-6 months", False, MID_TEXT),
(" Reassess with repeat echo", False, MID_TEXT),
("", False, MID_TEXT),
("D. PFO Closure:", True, ACCENT_TEAL),
(" Percutaneous closure (age <60, cryptogenic)", False, MID_TEXT),
(" Antiplatelets post-closure for 6 months", False, MID_TEXT),
("E. IE: Antibiotics (organism-directed)", False, MID_TEXT),
(" Anticoagulation CONTRAINDICATED in active IE", False, MID_TEXT),
], 8.75, 1.55, 4.3, 2.95, 10)
# Bottom treatment table
add_rect(slide, 0.2, 4.6, 12.93, 0.4, DARK_BLUE)
add_text(slide, "Drug Summary — Secondary Prevention of Cardioembolic Stroke by Etiology (Fuster's Heart 15E / Harrison's 22E)",
0.2, 4.6, 12.93, 0.4, 11, True, WHITE, PP_ALIGN.CENTER)
add_rect(slide, 0.2, 5.0, 12.93, 2.2, RGBColor(0xF3, 0xF4, 0xFF))
sec_prev = [
("Atrial Fibrillation (non-valvular)", "Apixaban 5mg BD or Rivaroxaban 20mg OD or Dabigatran 150mg BD", "DOAC preferred", "Lifelong"),
("AF + Valvular (MS, mechanical)", "Warfarin INR 2-3 (native valve) / INR 2.5-3.5 (mechanical)", "VKA mandatory", "Lifelong"),
("LV Thrombus / Recent MI", "Warfarin INR 2-3 +/- Aspirin", "VKA 3-6 months", "Until thrombus resolves"),
("Mechanical Prosthetic Valve", "Warfarin INR 2.5 (Ao) / 3.0 (MV) + Aspirin 100mg", "VKA + Antiplatelet", "Lifelong"),
("Bioprosthetic Valve + AF", "DOAC or Warfarin per AF protocol", "DOAC preferred", "Lifelong"),
("Infective Endocarditis", "IV Antibiotics (organism-directed; no anticoagulation)", "Abx only", "4-6 weeks"),
("PFO Closure", "Aspirin 75-100mg after device closure", "Antiplatelet", "6-12 months post-closure"),
]
headers = ["Etiology", "Drug / Regimen", "Category", "Duration"]
for ci, hdr in enumerate(headers):
cx = [0.25, 3.1, 9.7, 11.5][ci]
cw = [2.8, 6.55, 1.75, 1.6][ci]
add_rect(slide, cx, 5.02, cw, 0.3, MED_BLUE)
add_text(slide, hdr, cx, 5.02, cw, 0.3, 9, True, WHITE, PP_ALIGN.CENTER)
for ri, row in enumerate(sec_prev):
y = 5.32 + ri * 0.265
bg = LIGHT_BG if ri % 2 == 0 else WHITE
add_rect(slide, 0.22, y, 12.9, 0.265, bg)
widths = [2.8, 6.55, 1.75, 1.6]
starts = [0.25, 3.1, 9.7, 11.5]
for ci, cell in enumerate(row):
add_text(slide, cell, starts[ci], y, widths[ci], 0.265, 8, False, MID_TEXT)
bottom_bar(slide, "Cardioembolic Stroke — Treatment & Secondary Prevention")
# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 10: Summary Slide
# ═══════════════════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
add_rect(slide, 0, 0, 13.333, 7.5, DARK_BLUE)
add_rect(slide, 0, 1.8, 13.333, 3.8, MED_BLUE)
add_rect(slide, 0, 1.78, 13.333, 0.06, ACCENT_TEAL)
add_rect(slide, 0, 5.55, 13.333, 0.06, ACCENT_TEAL)
add_text(slide, "SUMMARY", 0.5, 0.2, 12.5, 0.8, 40, True, WHITE, PP_ALIGN.CENTER)
add_text(slide, "Key Takeaways — Cardiac Valves & Cardioembolic Stroke",
0.5, 0.95, 12.5, 0.6, 16, False, RGBColor(0xBB, 0xDE, 0xFB), PP_ALIGN.CENTER)
summary_pts = [
("4 Valves", "Mitral (2 cusps), Tricuspid (3 cusps), Aortic (3 SL cusps), Pulmonary (3 SL cusps)"),
("Drugs: MS", "Beta-blockers/CCBs (rate), Warfarin (AF/embolism), Diuretics; PBMV if severe"),
("Drugs: MR", "Vasodilators (acute), ACE-I/ARBs + BB (chronic HFrEF), OAC if AF"),
("Drugs: AS", "No drug reverses AS; SAVR/TAVR when symptomatic; avoid vasodilators"),
("Drugs: AR", "Nifedipine/ACE-I (chronic), Nitroprusside+Dobutamine (acute); AVR when EF<50%"),
("Mechanical Valves", "Warfarin MANDATORY (DOACs contraindicated); INR 2.5-3.5 depending on position"),
("CES Etiology", "AF (#1), MI, prosthetic valves, rheumatic MS, dilated CMP, IE, PFO"),
("CES Treatment", "Alteplase <4.5h / Tenecteplase; Thrombectomy LVO <24h; AC timing by infarct size"),
("CES Prevention", "DOACs (non-valvular AF); Warfarin (mechanical/valvular AF); PFO closure"),
]
for i, (label, desc) in enumerate(summary_pts):
row = i // 3
col = i % 3
cx = 0.3 + col * 4.38
cy = 1.85 + row * 1.2
add_rect(slide, cx, cy, 4.2, 0.35, ACCENT_TEAL)
add_text(slide, label, cx, cy, 4.2, 0.35, 10, True, WHITE, PP_ALIGN.CENTER)
add_rect(slide, cx, cy + 0.35, 4.2, 0.8, WHITE)
add_text(slide, desc, cx + 0.05, cy + 0.37, 4.1, 0.76, 9, False, MID_TEXT,
PP_ALIGN.LEFT, wrap=True)
add_text(slide, "References: Harrison's Principles of Internal Medicine 22E (2025) | Braunwald's Heart Disease 2025 | Fuster & Hurst's The Heart 15E",
0.5, 5.7, 12.5, 0.5, 9, False, RGBColor(0x78, 0xA8, 0xD8), PP_ALIGN.CENTER)
add_text(slide, "Prepared using Orris AI — Evidence-Based Clinical Education",
0.5, 6.2, 12.5, 0.5, 10, False, RGBColor(0xBB, 0xDE, 0xFB), PP_ALIGN.CENTER)
# ═══════════════════════════════════════════════════════════════════════════
# SAVE
# ═══════════════════════════════════════════════════════════════════════════
output_path = "/tmp/workspace/cardiac-valves-ppt/Cardiac_Valves_and_Cardioembolic_Stroke.pptx"
prs.save(output_path)
print(f"Saved: {output_path}")
print(f"Total slides: {len(prs.slides)}")
cd /tmp/workspace/cardiac-valves-ppt && python build_ppt.py 2>&1
find /tmp/skills -name "fetch_images.py" 2>/dev/null; ls /tmp/skills/ 2>/dev/null
**/*.py in /tmp/skills
python /tmp/skills/shared/scripts/fetch_images.py "https://microbenotes.com/wp-content/uploads/2023/07/Heart-Valves.jpg" 2>&1 | head -c 200
python /tmp/workspace/cardiac-valves-ppt/build_ppt.py 2>&1
ls -lh /tmp/workspace/cardiac-valves-ppt/ && python -c " from pptx import Presentation prs = Presentation('/tmp/workspace/cardiac-valves-ppt/Cardiac_Valves_and_Cardioembolic_Stroke.pptx') print(f'Slides: {len(prs.slides)}') for i, slide in enumerate(prs.slides, 1): texts = [s.text_frame.text.split(chr(10))[0][:60] for s in slide.shapes if s.has_text_frame and s.text_frame.text.strip()] print(f' Slide {i}: {texts[0] if texts else \"(empty)\"}') "
Cardiac Valves and Cardioembolic Stroke
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Title slide — professional dark-blue theme |
| 2 | Overview: All 4 valves — structure, cusps, location, blood flow diagram |
| 3 | Mitral Valve — MS, MR, MVP: etiology, clinical features, drug management |
| 4 | Aortic Valve — AS, AR, bicuspid AV: signs, drugs (nifedipine, ACE-I, TAVR/SAVR) |
| 5 | Tricuspid & Pulmonary Valves — TR, TS, PS, PR: etiology, signs, drugs |
| 6 | Prosthetic Valves — mechanical vs bioprosthetic + complete INR target table + 4-column antithrombotic drug reference |
| 7 | Cardioembolic Stroke — Etiology: pathophysiology, 9 causes, CHA₂DS₂-VASc scoring table, AF risk, embolic infarct patterns |
| 8 | Symptoms, Signs & Relevant Findings: BE-FAST, neurological/cardiac signs, MRI/echo/ECG/labs, TOAST classification |
| 9 | Treatment: Alteplase/Tenecteplase thrombolysis, mechanical thrombectomy, anticoagulation timing rules (1-3-6-12 day rule), secondary prevention table by etiology |
| 10 | Summary slide with 9 key takeaways + references |