The following files are required for me to teach students appearing for the INI SS CET CVTS which is a single best answer multiple choice question examination. Generate 2 files from each chapter 1. 5 page High yield notes from each chapter for teaching with probable questions, and include teaching notes, flowcharts, landmark trials, guidelines, tables, memory aids, exam pearls and most probably INI SS Questions. Also include last minute revision tables. 2. 20 MCQs from each chapter in the INI CET SS standard format single best answer, can have a paragraph questions, vignettes, image based questions, photographs with attributes. Source can be the internet as well. Make sure that the PDF has all 20 questions. Answer key at the end.
cd /home/daytona/workspace/attachments/32f5acb8-79b5-4f22-9ec5-660142c5d657/ && …
mkdir -p /home/daytona/workspace/INI_SS_CET_CVTS && ls /home/daytona/workspace/I…
python3 -c " from reportlab.lib.pagesizes import A4 from reportlab.lib import co…
~/generate_all_pdfs.py
#!/usr/bin/env python3
"""
Generate 8 PDFs for INI SS CET CVTS:
- 4 High-Yield Notes PDFs (one per chapter)
- 4 MCQ PDFs (one per chapter)
"""
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm, mm
from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table,
TableStyle, HRFlowable, PageBreak, KeepTogether)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY, TA_RIGHT
W, H = A4
# ──────────────────────────────────────────────
# COLOUR PALETTE
# ──────────────────────────────────────────────
DARK_BLUE = colors.HexColor('#1B3A6B')
MED_BLUE = colors.HexColor('#2E6DA4')
LIGHT_BLUE = colors.HexColor('#D6E9F8')
GOLD = colors.HexColor('#C8962E')
RED_ALERT = colors.HexColor('#B22222')
GREEN = colors.HexColor('#1A6B2E')
LIGHT_GREEN = colors.HexColor('#E6F4EA')
LIGHT_YELLOW= colors.HexColor('#FFF9E6')
LIGHT_RED = colors.HexColor('#FDE8E8')
GRAY = colors.HexColor('#666666')
LIGHT_GRAY = colors.HexColor('#F5F5F5')
WHITE = colors.white
def get_styles():
base = getSampleStyleSheet()
styles = {}
styles['title'] = ParagraphStyle('title', fontName='Helvetica-Bold',
fontSize=20, textColor=WHITE, alignment=TA_CENTER, spaceAfter=4,
leading=24)
styles['subtitle'] = ParagraphStyle('subtitle', fontName='Helvetica-Bold',
fontSize=13, textColor=WHITE, alignment=TA_CENTER, spaceAfter=2,
leading=16)
styles['chapter_tag'] = ParagraphStyle('chapter_tag', fontName='Helvetica',
fontSize=10, textColor=GOLD, alignment=TA_CENTER, spaceAfter=4)
styles['h1'] = ParagraphStyle('h1', fontName='Helvetica-Bold',
fontSize=14, textColor=WHITE, spaceBefore=6, spaceAfter=4,
leftIndent=0, leading=18)
styles['h2'] = ParagraphStyle('h2', fontName='Helvetica-Bold',
fontSize=12, textColor=DARK_BLUE, spaceBefore=6, spaceAfter=3,
leading=15)
styles['h3'] = ParagraphStyle('h3', fontName='Helvetica-Bold',
fontSize=11, textColor=MED_BLUE, spaceBefore=4, spaceAfter=2,
leading=14)
styles['body'] = ParagraphStyle('body', fontName='Helvetica',
fontSize=9.5, textColor=colors.black, spaceAfter=3, leading=13,
alignment=TA_JUSTIFY)
styles['bullet'] = ParagraphStyle('bullet', fontName='Helvetica',
fontSize=9.5, textColor=colors.black, spaceAfter=2, leading=13,
leftIndent=12, bulletIndent=0)
styles['pearl'] = ParagraphStyle('pearl', fontName='Helvetica-Bold',
fontSize=9.5, textColor=RED_ALERT, spaceAfter=2, leading=13,
leftIndent=12)
styles['note'] = ParagraphStyle('note', fontName='Helvetica-Oblique',
fontSize=9, textColor=GRAY, spaceAfter=2, leading=12, leftIndent=8)
styles['table_header'] = ParagraphStyle('table_header', fontName='Helvetica-Bold',
fontSize=9, textColor=WHITE, alignment=TA_CENTER, leading=11)
styles['table_cell'] = ParagraphStyle('table_cell', fontName='Helvetica',
fontSize=8.5, textColor=colors.black, leading=11)
styles['table_cell_bold'] = ParagraphStyle('table_cell_bold', fontName='Helvetica-Bold',
fontSize=8.5, textColor=DARK_BLUE, leading=11)
styles['mcq_q'] = ParagraphStyle('mcq_q', fontName='Helvetica-Bold',
fontSize=10, textColor=colors.black, spaceAfter=4, leading=14,
alignment=TA_JUSTIFY)
styles['mcq_opt'] = ParagraphStyle('mcq_opt', fontName='Helvetica',
fontSize=9.5, textColor=colors.black, spaceAfter=2, leading=13,
leftIndent=16)
styles['mcq_ans'] = ParagraphStyle('mcq_ans', fontName='Helvetica-Bold',
fontSize=9.5, textColor=GREEN, spaceAfter=2, leading=13, leftIndent=8)
styles['mcq_exp'] = ParagraphStyle('mcq_exp', fontName='Helvetica-Oblique',
fontSize=9, textColor=GRAY, spaceAfter=4, leading=12, leftIndent=8)
styles['footer'] = ParagraphStyle('footer', fontName='Helvetica',
fontSize=7.5, textColor=GRAY, alignment=TA_CENTER)
styles['warning'] = ParagraphStyle('warning', fontName='Helvetica-Bold',
fontSize=9.5, textColor=RED_ALERT, spaceAfter=2, leading=13, leftIndent=4)
return styles
def make_header_table(chapter_num, chapter_title, doc_type, styles):
"""Creates a blue header banner."""
title_p = Paragraph(f"INI SS CET | CVTS | Chapter {chapter_num}", styles['chapter_tag'])
main_p = Paragraph(chapter_title, styles['title'])
sub_p = Paragraph(doc_type, styles['subtitle'])
t = Table([[title_p], [main_p], [sub_p]], colWidths=[W - 4*cm])
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), DARK_BLUE),
('ALIGN', (0,0), (-1,-1), 'CENTER'),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0), (-1,-1), 8),
('BOTTOMPADDING', (0,0), (-1,-1), 8),
('ROUNDEDCORNERS', [6,6,6,6]),
]))
return t
def section_header(text, styles):
"""Blue section divider bar."""
t = Table([[Paragraph(text, styles['h1'])]], colWidths=[W - 4*cm])
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), MED_BLUE),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 8),
]))
return t
def info_box(title, items, bg_color, title_color, styles):
"""Colored box with bullet items."""
content = [Paragraph(f"<b>{title}</b>", ParagraphStyle('bx_title',
fontName='Helvetica-Bold', fontSize=10, textColor=title_color, leading=13))]
for item in items:
content.append(Paragraph(f"• {item}", styles['bullet']))
t = Table([[content[0]]] + [[x] for x in content[1:]], colWidths=[W - 4.2*cm])
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), bg_color),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 3),
('LEFTPADDING', (0,0), (-1,-1), 8),
('RIGHTPADDING', (0,0), (-1,-1), 8),
('BOX', (0,0), (-1,-1), 1, title_color),
]))
return t
def pearl_box(items, styles):
content = [Paragraph("<b>EXAM PEARL</b>", ParagraphStyle('pearl_hdr',
fontName='Helvetica-Bold', fontSize=10, textColor=RED_ALERT, leading=13))]
for item in items:
content.append(Paragraph(f"★ {item}", styles['pearl']))
t = Table([[x] for x in content], colWidths=[W - 4.2*cm])
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), LIGHT_RED),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 3),
('LEFTPADDING', (0,0), (-1,-1), 8),
('RIGHTPADDING', (0,0), (-1,-1), 8),
('BOX', (0,0), (-1,-1), 1.5, RED_ALERT),
]))
return t
def make_table(headers, rows, col_widths, styles):
data = [[Paragraph(h, styles['table_header']) for h in headers]]
for row in rows:
data.append([Paragraph(str(c), styles['table_cell']) for c in row])
t = Table(data, colWidths=col_widths, repeatRows=1)
ts = TableStyle([
('BACKGROUND', (0,0), (-1,0), DARK_BLUE),
('TEXTCOLOR', (0,0), (-1,0), WHITE),
('ALIGN', (0,0), (-1,-1), 'LEFT'),
('VALIGN', (0,0), (-1,-1), 'TOP'),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,0), 9),
('ROWBACKGROUNDS', (0,1), (-1,-1), [WHITE, LIGHT_BLUE]),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor('#AAAAAA')),
('TOPPADDING', (0,0), (-1,-1), 3),
('BOTTOMPADDING', (0,0), (-1,-1), 3),
('LEFTPADDING', (0,0), (-1,-1), 5),
('RIGHTPADDING', (0,0), (-1,-1), 5),
])
t.setStyle(ts)
return t
def flowchart_box(title, steps, styles):
"""Simple flowchart representation."""
content = [Paragraph(f"<b>{title}</b>", ParagraphStyle('fc_title',
fontName='Helvetica-Bold', fontSize=10, textColor=DARK_BLUE, leading=13))]
for i, step in enumerate(steps):
arrow = "" if i == len(steps)-1 else " ↓"
content.append(Paragraph(f"[{step}]{arrow}", styles['body']))
t = Table([[x] for x in content], colWidths=[W - 4.2*cm])
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), LIGHT_YELLOW),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 3),
('LEFTPADDING', (0,0), (-1,-1), 10),
('BOX', (0,0), (-1,-1), 1.5, GOLD),
]))
return t
def lmr_table(data_rows, styles):
"""Last Minute Revision table - 2 column key-value."""
t_data = [[Paragraph("<b>High-Yield Point</b>", styles['table_header']),
Paragraph("<b>Answer / Value</b>", styles['table_header'])]]
for k, v in data_rows:
t_data.append([Paragraph(k, styles['table_cell_bold']), Paragraph(v, styles['table_cell'])])
t = Table(t_data, colWidths=[8.5*cm, 9.5*cm], repeatRows=1)
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), GOLD),
('TEXTCOLOR', (0,0), (-1,0), WHITE),
('ROWBACKGROUNDS', (0,1), (-1,-1), [LIGHT_YELLOW, WHITE]),
('GRID', (0,0), (-1,-1), 0.5, colors.HexColor('#CCAA55')),
('TOPPADDING', (0,0), (-1,-1), 3),
('BOTTOMPADDING', (0,0), (-1,-1), 3),
('LEFTPADDING', (0,0), (-1,-1), 5),
('VALIGN', (0,0), (-1,-1), 'TOP'),
]))
return t
# ═══════════════════════════════════════════════════════════════════════════════
# CHAPTER 57 - Management of Acute Coronary Syndromes
# ═══════════════════════════════════════════════════════════════════════════════
def build_ch57_notes():
styles = get_styles()
doc = SimpleDocTemplate('/home/daytona/workspace/INI_SS_CET_CVTS/Ch57_ACS_HighYield_Notes.pdf',
pagesize=A4, leftMargin=2*cm, rightMargin=2*cm, topMargin=2*cm, bottomMargin=2*cm)
story = []
story.append(make_header_table(57, "Management of Acute\nCoronary Syndromes",
"HIGH-YIELD NOTES | INI SS CET CVTS Preparation", styles))
story.append(Spacer(1, 6*mm))
# SECTION 1: ACS DEFINITION & CLASSIFICATION
story.append(section_header("1. ACS DEFINITION & CLASSIFICATION", styles))
story.append(Spacer(1, 3*mm))
story.append(Paragraph("Acute Coronary Syndrome (ACS) = spectrum of conditions due to abrupt reduction in coronary blood flow leading to acute myocardial ischemia/infarction.", styles['body']))
story.append(Spacer(1, 2*mm))
class_data = [
["Type", "ECG", "Biomarkers", "Mechanism"],
["STEMI", "Persistent ST elevation", "Elevated troponin", "Occlusive thrombus; plaque rupture/erosion"],
["NSTEMI", "ST depression/T-wave changes or normal", "Elevated troponin", "Non-occlusive thrombus; micro-embolization"],
["Unstable Angina", "Variable ischemic changes", "NORMAL", "Non-occlusive thrombus without necrosis"],
]
story.append(make_table(class_data[0], class_data[1:],
[3*cm, 4.5*cm, 4.5*cm, 6*cm], styles))
story.append(Spacer(1, 3*mm))
story.append(pearl_box([
"STEMI vs NSTEMI: Only difference is presence/absence of persistent ST elevation - NOT biomarkers alone",
"UA vs NSTEMI: Same presentation; UA = no troponin rise; NSTEMI = troponin elevated",
"Type 2 MI: Oxygen supply/demand mismatch (e.g., tachycardia, anemia) WITHOUT plaque rupture"
], styles))
story.append(Spacer(1, 3*mm))
# SECTION 2: DIAGNOSIS
story.append(section_header("2. DIAGNOSIS OF ACS", styles))
story.append(Spacer(1, 3*mm))
story.append(Paragraph("<b>Biomarkers:</b>", styles['h3']))
bio_data = [
["Biomarker", "Rise", "Peak", "Normalization", "Key Point"],
["Troponin I/T (hs)", "2-4 hrs", "12-24 hrs", "7-14 days", "Most sensitive and specific; preferred"],
["CK-MB", "4-6 hrs", "12-24 hrs", "48-72 hrs", "Useful for re-infarction detection"],
["Myoglobin", "1-2 hrs", "6-9 hrs", "24-36 hrs", "NOT cardiac specific; early marker only"],
]
story.append(make_table(bio_data[0], bio_data[1:],
[3*cm, 2.5*cm, 2.5*cm, 3*cm, 6*cm], styles))
story.append(Spacer(1, 3*mm))
story.append(Paragraph("<b>ECG Criteria for STEMI:</b>", styles['h3']))
ecg_items = [
"2 contiguous leads with ST elevation ≥1mm (limb leads) or ≥2mm (precordial leads)",
"New LBBB in context of symptoms = STEMI equivalent (Sgarbossa criteria)",
"Posterior MI: ST depression in V1-V3 + tall R waves (mirror image); use V7-V9",
"de Winter pattern (ST depression + tall peaked T in V1-V5): LAD occlusion equivalent - cath lab!",
"Wellens pattern (deep T-wave inversions V2-V3 after pain-free period): Critical LAD stenosis"
]
for item in ecg_items:
story.append(Paragraph(f"• {item}", styles['bullet']))
story.append(Spacer(1, 3*mm))
# SECTION 3: NSTE-ACS MANAGEMENT
story.append(section_header("3. NSTE-ACS MANAGEMENT", styles))
story.append(Spacer(1, 3*mm))
story.append(Paragraph("<b>Risk Stratification - TIMI Risk Score (0-7 points):</b>", styles['h3']))
timi_rows = [
["TIMI Component", "Points"],
["Age ≥65 years", "1"],
["≥3 CAD risk factors", "1"],
["Known coronary stenosis >50%", "1"],
["ST deviation on ECG", "1"],
["≥2 anginal events in 24 hrs", "1"],
["ASA use in prior 7 days", "1"],
["Elevated serum cardiac markers", "1"],
]
story.append(make_table(timi_rows[0], timi_rows[1:], [12*cm, 4*cm], styles))
story.append(Paragraph("Score 0-2: Low (5% events); 3-4: Intermediate (13-20%); 5-7: High (26-41%)", styles['note']))
story.append(Spacer(1, 3*mm))
story.append(Paragraph("<b>GRACE Score:</b> Age, Killip class, BP, HR, creatinine, ST deviation, troponin, cardiac arrest at admission. Superior to TIMI for mortality prediction (recommended by ESC/ACC/AHA guidelines).", styles['body']))
story.append(Spacer(1, 3*mm))
story.append(Paragraph("<b>Antiplatelet Therapy:</b>", styles['h3']))
ap_rows = [
["Drug", "Mechanism", "Dose", "Key Trials / Notes"],
["Aspirin", "COX-1 inhibitor → ↓TXA2", "Loading 162-325mg; Maintenance 81mg", "All ACS patients (Class I)"],
["Clopidogrel", "P2Y12 irreversible (prodrug)", "LD 300-600mg; MD 75mg/d", "CURE trial; use if ticagrelor/prasugrel unavailable"],
["Ticagrelor", "P2Y12 reversible, direct", "LD 180mg; MD 90mg BD", "PLATO trial: ↓CV death vs clopidogrel; preferred in NSTE-ACS"],
["Prasugrel", "P2Y12 irreversible (prodrug)", "LD 60mg; MD 10mg/d", "TRITON: Superior to clopidogrel; CI in stroke/TIA, age >75, <60kg"],
["Cangrelor", "P2Y12 IV reversible", "Bolus + infusion", "Bridging; fastest onset/offset"],
]
story.append(make_table(ap_rows[0], ap_rows[1:], [2.5*cm, 4*cm, 3.5*cm, 7*cm], styles))
story.append(Spacer(1, 3*mm))
story.append(Paragraph("<b>Anticoagulation:</b>", styles['h3']))
ac_rows = [
["Agent", "Class", "Notes"],
["UFH", "Indirect thrombin inhibitor", "Most widely used; reversible with protamine; preferred if CABG planned"],
["Enoxaparin (LMWH)", "Anti-Xa", "SYNERGY/ESSENCE trials; reduce dose in renal failure; no reversal with protamine"],
["Fondaparinux", "Selective anti-Xa", "OASIS-5: Less bleeding than enoxaparin; add UFH if PCI performed (catheter thrombosis risk)"],
["Bivalirudin", "Direct thrombin inhibitor", "ACUITY/HORIZONS trials; preferred in HIT; less bleeding than UFH+GP IIb/IIIa"],
]
story.append(make_table(ac_rows[0], ac_rows[1:], [3*cm, 4*cm, 10*cm], styles))
story.append(Spacer(1, 3*mm))
story.append(Paragraph("<b>GP IIb/IIIa Inhibitors:</b>", styles['h3']))
gp_rows = [
["Drug", "Type", "Duration of Action", "Key Use"],
["Abciximab", "Chimeric monoclonal Fab (irreversible)", "7-10 days (receptor blocking)", "Bailout/upstream in STEMI PCI"],
["Eptifibatide", "Cyclic peptide (reversible)", "2-4 hrs", "NSTE-ACS with high-risk features; CrCl-based dosing"],
["Tirofiban", "Non-peptide mimetic (reversible)", "4-8 hrs", "NSTE-ACS; renal dose adjustment"],
]
story.append(make_table(gp_rows[0], gp_rows[1:], [3*cm, 5*cm, 4.5*cm, 4.5*cm], styles))
story.append(Spacer(1, 3*mm))
# SECTION 4: STEMI MANAGEMENT
story.append(section_header("4. STEMI MANAGEMENT - REPERFUSION STRATEGY", styles))
story.append(Spacer(1, 3*mm))
story.append(flowchart_box("STEMI Reperfusion Decision Flowchart", [
"STEMI diagnosis (ECG + symptoms)",
"PCI-capable center available?",
"YES → Primary PCI: Door-to-balloon ≤90 min (from first medical contact ≤120 min)",
"NO → Can transfer to PCI center within 120 min of first medical contact?",
"YES → Transfer for primary PCI (preferred)",
"NO → Fibrinolysis within 30 min (door-to-needle) if no contraindications",
"Post-fibrinolysis: Transfer to PCI center; rescue PCI if failed (<50% ST resolution at 60-90 min)",
"Pharmacoinvasive strategy: PCI 3-24 hours after successful fibrinolysis"
], styles))
story.append(Spacer(1, 3*mm))
story.append(Paragraph("<b>Fibrinolytic Agents:</b>", styles['h3']))
fibrin_rows = [
["Agent", "Type", "Dose", "Patency", "Notes"],
["Streptokinase", "Non-fibrin specific", "1.5 MU IV over 60 min", "60%", "Allergic reactions; anti-SK Abs if prior use"],
["Alteplase (tPA)", "Fibrin-specific", "Accelerated: 15mg bolus, 0.75mg/kg over 30min, 0.5mg/kg over 60min", "75%", "GUSTO trial - superior to SK"],
["Tenecteplase (TNK)", "Fibrin-specific", "Single weight-based IV bolus", "75%", "ASSENT-2 = equal efficacy to alteplase; easiest to give"],
["Reteplase (rPA)", "Fibrin-specific", "Two 10U IV boluses 30 min apart", "75%", "GUSTO-III"],
]
story.append(make_table(fibrin_rows[0], fibrin_rows[1:], [3*cm, 3*cm, 5*cm, 2*cm, 4*cm], styles))
story.append(Spacer(1, 3*mm))
story.append(info_box("Absolute Contraindications to Fibrinolysis", [
"Prior intracranial hemorrhage",
"Structural cerebrovascular lesion (AVM)",
"Intracranial malignancy",
"Ischemic stroke within 3 months",
"Suspected aortic dissection",
"Active bleeding (NOT menstruation)",
"Significant closed-head/facial trauma within 3 months",
"Intracranial/intraspinal surgery within 2 months",
"Severe uncontrolled HTN (>180/110 unresponsive to therapy)"
], LIGHT_RED, RED_ALERT, styles))
story.append(Spacer(1, 3*mm))
# SECTION 5: LANDMARK TRIALS
story.append(section_header("5. LANDMARK TRIALS", styles))
story.append(Spacer(1, 3*mm))
trials_data = [
["Trial", "Intervention", "Key Finding"],
["CURE", "Clopidogrel vs placebo in NSTE-ACS", "20% ↓ CV death/MI/stroke with clopidogrel + ASA"],
["PLATO", "Ticagrelor vs clopidogrel in ACS", "16% ↓ CV death/MI/stroke; ↑ non-CABG bleeding; favored ticagrelor"],
["TRITON-TIMI 38", "Prasugrel vs clopidogrel in PCI-ACS", "19% ↓ CV events; ↑ bleeding; CI in stroke/TIA"],
["GUSTO-I", "Accelerated tPA vs SK in STEMI", "tPA: 14% ↓ 30-day mortality vs SK; slight ↑ ICH"],
["ASSENT-2", "TNK vs tPA in STEMI", "Equivalent 30-day mortality; TNK single-bolus easier"],
["SYNERGY", "Enoxaparin vs UFH in NSTE-ACS high risk", "Non-inferior; ↑ CABG-related bleeding"],
["OASIS-5", "Fondaparinux vs enoxaparin in NSTE-ACS", "Similar ischemic events; 48% ↓ major bleeding"],
["HORIZONS-AMI", "Bivalirudin vs UFH+GP IIb/IIIa in STEMI PCI", "↓ net adverse clinical events; ↓ bleeding; ↑ acute ST"],
["TACTICS-TIMI 18", "Early invasive vs conservative in NSTE-ACS", "Early invasive superior in medium-high risk"],
["TIMACS", "Routine early (<24h) vs delayed (>36h) angio", "Early strategy better in high GRACE score (>140)"],
["COMPLETE", "PCI of non-culprit lesions in STEMI", "Complete revascularization ↓ CV death/MI vs culprit-only"],
["PRAMI/DANAMI-3-PRIMULTI", "Preventive PCI in STEMI", "Fractional flow reserve guided complete revasc superior"],
]
story.append(make_table(trials_data[0], trials_data[1:],
[4.5*cm, 6*cm, 6.5*cm], styles))
story.append(Spacer(1, 3*mm))
# SECTION 6: CARDIOGENIC SHOCK
story.append(section_header("6. CARDIOGENIC SHOCK & SPECIAL SITUATIONS", styles))
story.append(Spacer(1, 3*mm))
story.append(Paragraph("<b>Cardiogenic Shock in ACS:</b>", styles['h3']))
cs_items = [
"Defined as: SBP <90mmHg for >30 min or requiring vasopressors, PLUS evidence of hypoperfusion (cold extremities, UO <30mL/hr, lactate >2mmol/L)",
"Mechanical complication: Free wall rupture, VSR (new harsh systolic murmur), acute MR (papillary muscle rupture)",
"SHOCK trial: Emergency revascularization (PCI/CABG) superior to initial medical stabilization at 6-month and 1-year follow-up",
"IABP-SHOCK II: IABP did NOT improve 30-day mortality in cardiogenic shock; guideline recommendation downgraded",
"Impella/VA-ECMO: Used as salvage hemodynamic support; evidence for mortality benefit limited",
"VSR: Surgical repair traditionally; endovascular closure devices under investigation",
"Free wall rupture: Usually fatal; pericardiocentesis as bridge; urgent surgery"
]
for item in cs_items:
story.append(Paragraph(f"• {item}", styles['bullet']))
story.append(Spacer(1, 3*mm))
story.append(Paragraph("<b>Radial vs Femoral Access for PCI:</b>", styles['h3']))
story.append(Paragraph("RIFLE-STEACS, RIVAL, MATRIX trials: Radial access → ↓ major bleeding, ↓ access site complications, ↓ mortality in STEMI (MATRIX). Radial preferred (Class I, ESC 2023).", styles['body']))
story.append(Spacer(1, 3*mm))
story.append(Paragraph("<b>CABG in ACS:</b>", styles['h3']))
story.append(Paragraph("NSTEMI with anatomy unsuitable for PCI (left main, triple vessel with DM), mechanical complications, failed PCI. Hold clopidogrel/ticagrelor 5 days, prasugrel 7 days pre-CABG. UFH preferred over LMWH if surgery planned.", styles['body']))
story.append(Spacer(1, 3*mm))
# SECTION 7: POST-REVASCULARIZATION & DISCHARGE
story.append(section_header("7. POST-REVASCULARIZATION & SECONDARY PREVENTION", styles))
story.append(Spacer(1, 3*mm))
pr_rows = [
["Drug", "Target/Goal", "Evidence"],
["DAPT (ASA + P2Y12)", "Minimum 12 months post-ACS/stenting", "PLATO/CURE; Duration depends on stent type and bleeding risk"],
["Statin (high-intensity)", "LDL <70 mg/dL or ≥50% reduction", "PROVE-IT, MIRACL; Atorvastatin 80mg or Rosuvastatin 40mg"],
["ACE-I/ARB", "All ACS especially EF<40%, HTN, DM", "HOPE, AIRE, SAVE trials"],
["Beta-blocker", "All post-MI; especially EF<40%", "CAPRICORN (carvedilol), MERIT-HF"],
["Ezetimibe", "If statin-refractory LDL", "IMPROVE-IT: +6.4% relative RRR on top of statin"],
["PCSK9 inhibitors", "LDL >70 despite statin+ezetimibe", "FOURIER (evolocumab), ODYSSEY OUTCOMES (alirocumab)"],
["Aldosterone antagonist", "EF<40% post-MI with HF or DM", "EPHESUS (eplerenone); K+ and renal monitoring"],
]
story.append(make_table(pr_rows[0], pr_rows[1:], [4*cm, 5.5*cm, 7.5*cm], styles))
story.append(Spacer(1, 3*mm))
# SECTION 8: MEMORY AIDS
story.append(section_header("8. MEMORY AIDS & HIGH-YIELD MNEMONICS", styles))
story.append(Spacer(1, 3*mm))
mnemo_data = [
[Paragraph("<b>MONA for Initial STEMI Rx</b>", styles['table_cell_bold']),
Paragraph("Morphine (use cautiously - may delay absorption); Oxygen (only if SpO2 <90%); Nitrates (avoid in RV infarction, PDE5 inhibitors use); Aspirin 325mg chewed", styles['table_cell'])],
[Paragraph("<b>TIMI Risk Factors (7)</b>", styles['table_cell_bold']),
Paragraph("'ACE SEES' - Age≥65, CAD risk factors (≥3), ECG changes, Stenosis known>50%, Events ≥2, Elevated markers, Statin/ASA use", styles['table_cell'])],
[Paragraph("<b>Wellens vs de Winter</b>", styles['table_cell_bold']),
Paragraph("Wellens = Deep T inversions = critical LAD (send to cath even if pain-free); de Winter = upsloping ST depression + tall T in V1-V5 = proximal LAD occlusion NOW", styles['table_cell'])],
[Paragraph("<b>RV Infarction Triad</b>", styles['table_cell_bold']),
Paragraph("Hypotension + JVD + Clear lungs (Kussmaul sign); ECG: ST elevation in V4R; Treatment: IV fluids, avoid nitrates/diuretics/morphine", styles['table_cell'])],
[Paragraph("<b>Prasugrel NEVER in:</b>", styles['table_cell_bold']),
Paragraph("'SAB' - Stroke/TIA history; Age ≥75 (relative); Body weight <60kg (relative)", styles['table_cell'])],
]
t = Table(mnemo_data, colWidths=[5*cm, 12*cm])
t.setStyle(TableStyle([
('ROWBACKGROUNDS', (0,0), (-1,-1), [LIGHT_YELLOW, WHITE]),
('GRID', (0,0), (-1,-1), 0.5, GOLD),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 6),
('VALIGN', (0,0), (-1,-1), 'TOP'),
]))
story.append(t)
story.append(Spacer(1, 3*mm))
# LAST MINUTE REVISION TABLE
story.append(section_header("9. LAST MINUTE REVISION TABLE", styles))
story.append(Spacer(1, 3*mm))
lmr_data = [
("Door-to-balloon time (primary PCI)", "≤90 min from first medical contact; ≤120 min if transferred"),
("Door-to-needle time (fibrinolysis)", "≤30 min"),
("Rescue PCI trigger after fibrinolysis", "<50% ST resolution at 60-90 min post-fibrinolysis"),
("Pharmacoinvasive strategy PCI timing", "3-24 hours after successful fibrinolysis"),
("Preferred P2Y12 in NSTE-ACS", "Ticagrelor (PLATO trial)"),
("Preferred P2Y12 in STEMI PCI (no prior stroke)", "Ticagrelor or Prasugrel"),
("TIMI high risk score", "≥5/7 points"),
("GRACE score high risk", ">140 → benefit from early invasive (<24h)"),
("Fibrinolytic with single bolus", "Tenecteplase (TNK)"),
("Trial showing IABP doesn't help shock", "IABP-SHOCK II"),
("Trial showing complete revasc superior in STEMI", "COMPLETE trial"),
("GP IIb/IIIa irreversible (antibody fragment)", "Abciximab"),
("Anticoagulant with least CABG bleeding", "UFH (preferred pre-CABG)"),
("Fondaparinux caveat in PCI", "Add UFH to prevent catheter thrombosis"),
("Absolute CI to fibrinolysis: hemorrhagic stroke", "Any time in history = absolute CI"),
("STEMI equivalent patterns", "New LBBB, de Winter T-waves, Wellens syndrome, posterior MI"),
("Killip Class IV", "Cardiogenic shock"),
("PCSK9 inhibitor trials", "FOURIER (evolocumab), ODYSSEY OUTCOMES (alirocumab)"),
]
story.append(lmr_table(lmr_data, styles))
story.append(Spacer(1, 3*mm))
story.append(pearl_box([
"STEMI: Primary PCI preferred over fibrinolysis if door-to-balloon ≤120 min from first medical contact",
"Ticagrelor: Contraindicated with prior hemorrhagic stroke; dose-reduce ASA to 81mg maintenance",
"Oxygen in ACS: Only give if SpO2 <90% - routine O2 may be harmful (AVOID-O2 trial)",
"Wellens syndrome: Do NOT stress test! Send straight to cath lab",
"Posterior MI: Look for ST depression + tall R in V1-V2; confirm with V7-V9 leads",
"RV MI management: IV fluids are the KEY - avoid diuretics/nitrates/morphine",
"INI SS tip: STEMI door-to-balloon, landmark trials (PLATO, TRITON, COMPLETE), SHOCK trial findings are high-frequency exam topics"
], styles))
doc.build(story)
print("Ch57 HY Notes DONE")
# ═══════════════════════════════════════════════════════════════════════════════
# CHAPTER 58 - Pharmacologic Management of Heart Failure
# ═══════════════════════════════════════════════════════════════════════════════
def build_ch58_notes():
styles = get_styles()
doc = SimpleDocTemplate('/home/daytona/workspace/INI_SS_CET_CVTS/Ch58_HF_Pharmacology_HighYield_Notes.pdf',
pagesize=A4, leftMargin=2*cm, rightMargin=2*cm, topMargin=2*cm, bottomMargin=2*cm)
story = []
story.append(make_header_table(58, "Pharmacologic Management\nof Heart Failure",
"HIGH-YIELD NOTES | INI SS CET CVTS Preparation", styles))
story.append(Spacer(1, 6*mm))
# SECTION 1: PATHOPHYSIOLOGY
story.append(section_header("1. HF PATHOPHYSIOLOGY - EXAM ESSENTIALS", styles))
story.append(Spacer(1, 3*mm))
story.append(Paragraph("Heart failure is a clinical syndrome caused by structural/functional cardiac abnormality resulting in reduced cardiac output or elevated intracardiac pressures at rest or with stress.", styles['body']))
story.append(Spacer(1, 2*mm))
path_rows = [
["Mechanism", "Key Components", "Drug Target"],
["Neurohormonal Activation", "RAAS: ↑Angiotensin II, ↑Aldosterone\nSNS: ↑Norepinephrine, ↑Epinephrine", "ACE-I, ARB, ARNI, BB, MRA"],
["Ventricular Remodeling", "LV dilation, hypertrophy, fibrosis → ↓EF\n↑Preload and afterload", "ACE-I, ARB, ARNI, Hydralazine-nitrates"],
["Hemodynamic Compromise", "↓CO, ↑PCWP, ↑SVR", "Diuretics, vasodilators, inotropes"],
["Inflammatory mediators", "↑TNF-α, IL-6 → myocyte apoptosis", "No proven drug targets (anti-TNF harmful)"],
]
story.append(make_table(path_rows[0], path_rows[1:], [4.5*cm, 6*cm, 6.5*cm], styles))
story.append(Spacer(1, 3*mm))
story.append(flowchart_box("HF Pathophysiology → Treatment", [
"↓Cardiac Output → Compensatory responses",
"SNS activation: ↑HR, ↑contractility, vasoconstriction (initially helpful)",
"RAAS: ↑Angiotensin II → vasoconstriction, ↑aldosterone → Na/H2O retention",
"↑Preload + Afterload → ↑Wall stress → Ventricular remodeling",
"Progressive LV dilation, ↓EF, fibrosis → worsening HF",
"TREATMENT: Block neurohormonal activation (ACE-I/ARB/ARNI + BB + MRA) + Relieve congestion (Diuretics)"
], styles))
story.append(Spacer(1, 3*mm))
# SECTION 2: HFrEF PHARMACOLOGY
story.append(section_header("2. HFrEF (EF <40%) - MORTALITY-REDUCING DRUGS", styles))
story.append(Spacer(1, 3*mm))
story.append(Paragraph("The following drugs have PROVEN mortality benefit in HFrEF (Class I recommendation):", styles['h3']))
mortality_rows = [
["Drug Class", "Key Drugs", "Key Trial", "% Mortality Reduction", "Key Notes"],
["ACE Inhibitor", "Enalapril, Lisinopril, Captopril", "CONSENSUS, SOLVD", "16-40%", "First-line; SE: cough (10%), angioedema; CI: pregnancy, bilateral RAS"],
["ARB", "Valsartan, Candesartan", "Val-HeFT, CHARM", "~16%", "Use if ACE-I intolerant; not in combination with ACE-I + MRA"],
["ARNI", "Sacubitril/Valsartan (Entresto)", "PARADIGM-HF", "20% ↓ CV death vs enalapril", "Replace ACE-I; washout 36h; CI: angioedema, pregnancy"],
["Beta-Blocker", "Carvedilol, Metoprolol succinate, Bisoprolol", "COPERNICUS, MERIT-HF, CIBIS-II", "34-65%", "Start low, go slow; NOT in acute decompensation"],
["MRA", "Spironolactone, Eplerenone", "RALES, EPHESUS", "30% (RALES)", "CI: K>5.0, Cr>2.5 (men)/2.0 (women); gynecomastia with spirono"],
["SGLT2 Inhibitor", "Empagliflozin, Dapagliflozin", "EMPEROR-Reduced, DAPA-HF", "25% ↓ CV death/worsening HF", "Works regardless of DM status; also benefit in HFpEF"],
["Hydralazine + Isosorbide dinitrate", "H-ISDN", "V-HeFT I/II, A-HeFT", "Modest benefit", "African Americans, ACE-I/ARB intolerant; V-HeFT: superior to prazosin not to ACE-I"],
["Ivabradine", "Ivabradine", "SHIFT", "↓ HF hospitalization", "Only if: SR, HR≥70, on max BB; NOT mortality benefit"],
["Digoxin", "Digoxin", "DIG trial", "No mortality benefit", "↓ hospitalizations; narrow TI; toxicity: GI, visual, arrhythmia"],
]
story.append(make_table(mortality_rows[0], mortality_rows[1:], [3*cm, 3.5*cm, 4*cm, 3*cm, 4.5*cm], styles))
story.append(Spacer(1, 3*mm))
story.append(pearl_box([
"ARNI (Sacubitril/Valsartan): Must wash out ACE-I for 36 hours before starting (angioedema risk)",
"ARNI also reduces HF hospitalization in HFpEF (PARAGON-HF trial - borderline significant)",
"SGLT2 inhibitors: Work in HFrEF, HFmrEF, AND HFpEF (EMPEROR-Preserved, DELIVER trials)",
"Beta-blockers proven in HFrEF: Only carvedilol, metoprolol succinate, bisoprolol (NOT atenolol, NOT short-acting metoprolol)",
"RALES trial: Spironolactone 25mg ↓ mortality 30% in severe HF (EF<35%, NYHA III-IV)",
"DIG trial: Digoxin ↓ hospitalizations but NO mortality benefit"
], styles))
story.append(Spacer(1, 3*mm))
# SECTION 3: DIURETICS
story.append(section_header("3. DIURETICS IN HEART FAILURE", styles))
story.append(Spacer(1, 3*mm))
diur_rows = [
["Drug Class", "Example", "Site of Action", "Use in HF", "Key Points"],
["Loop Diuretics", "Furosemide, Bumetanide, Torsemide", "Loop of Henle (ascending limb)", "First-line for congestion/edema", "Torsemide: better oral bioavailability (80-100% vs 50% furosemide); IV = 2x oral dose furosemide"],
["Thiazide", "HCTZ, Metolazone", "Distal convoluted tubule", "Additive with loop (sequential nephron blockade)", "Metolazone: most potent thiazide combination; give 30 min before furosemide"],
["MRA", "Spironolactone, Eplerenone", "Collecting duct", "K+-sparing; also mortality benefit", "RALES/EPHESUS trials (see above)"],
["Vaptans", "Tolvaptan", "V2 receptor (aquaporin-2 regulation)", "Hyponatremia in HF", "EVEREST trial: ↓weight/dyspnea short-term; no survival benefit; concern: liver toxicity"],
["Carbonic anhydrase inhibitor", "Acetazolamide", "Proximal tubule", "Alkalosis from loop diuretics; ADVOR trial", "ADVOR: IV acetazolamide + loop → ↑decongestion vs placebo in ADHF"],
]
story.append(make_table(diur_rows[0], diur_rows[1:], [2.8*cm, 3.5*cm, 4*cm, 3.5*cm, 4.2*cm], styles))
story.append(Spacer(1, 3*mm))
# SECTION 4: ACUTE DECOMPENSATED HF
story.append(section_header("4. ACUTE DECOMPENSATED HEART FAILURE (ADHF)", styles))
story.append(Spacer(1, 3*mm))
story.append(Paragraph("<b>Clinical Classification (Forrester/Stevenson):</b>", styles['h3']))
forr_rows = [
["Profile", "Wet/Dry", "Warm/Cold", "PCWP", "CO", "Management"],
["A (Warm-Dry)", "Dry", "Warm", "Normal", "Normal", "Optimize oral medications"],
["B (Warm-Wet)", "Wet", "Warm", "↑ (>18)", "Normal", "MOST COMMON; Diuretics ± vasodilators"],
["C (Cold-Wet)", "Wet", "Cold", "↑", "↓", "Inotropes + Diuretics; consider MCS"],
["L (Cold-Dry)", "Dry", "Cold", "Normal/↓", "↓", "IV fluids if low filling pressure; inotropes"],
]
story.append(make_table(forr_rows[0], forr_rows[1:], [2.5*cm, 2*cm, 2*cm, 2*cm, 1.5*cm, 7*cm], styles))
story.append(Spacer(1, 3*mm))
story.append(Paragraph("<b>IV Vasodilators:</b>", styles['h3']))
vasod_rows = [
["Drug", "Mechanism", "Dose", "Indication", "Avoid When"],
["Nitroglycerin (IV)", "Venodilator > arteriodilator; ↓Preload", "5-200 mcg/min", "Pulmonary edema, hypertensive HF", "SBP<90, RV failure, PDE5 inhibitors"],
["Nitroprusside", "Arterial + venous dilator (NO donor)", "0.25-10 mcg/kg/min", "Severe HTN, acute MR/AR", "Cyanide toxicity (thiocyanate); renal failure; avoid >3 days"],
["Nesiritide (BNP)", "Recombinant BNP; ↓preload+afterload", "Bolus + infusion", "Relief of dyspnea in ADHF", "ASCEND-HF: no mortality/re-hosp benefit; hypotension risk"],
["Clevidipine", "Dihydropyridine CCB; ↓afterload", "IV infusion", "Hypertensive emergency", "Lipid-based; use with caution in egg/soy allergy"],
]
story.append(make_table(vasod_rows[0], vasod_rows[1:], [2.5*cm, 4*cm, 3*cm, 3*cm, 4.5*cm], styles))
story.append(Spacer(1, 3*mm))
story.append(Paragraph("<b>Inotropes:</b>", styles['h3']))
inot_rows = [
["Drug", "Mechanism", "Dose", "Key Notes"],
["Dobutamine", "Beta-1 agonist; ↑cAMP → ↑contractility", "2-20 mcg/kg/min", "Preferred short-term inotrope; tachycardia; tolerance at 48-72h"],
["Milrinone", "PDE-3 inhibitor; ↑cAMP + vasodilation", "0.375-0.75 mcg/kg/min", "OPTIME-CHF: ↑ AF and hypotension; use if on BB (BB block dobutamine effect partially)"],
["Dopamine", "Low: dopaminergic (renal vasodilatation)\nMed: Beta-1\nHigh: Alpha-1 vasoconstriction", "1-20 mcg/kg/min", "'Renal dose dopamine' disproven (DOPAMINE trial); use for shock/hypotension"],
["Levosimendan", "Ca2+ sensitizer + K-ATP channel opener", "0.05-0.2 mcg/kg/min", "REVIVE/SURVIVE trials: no mortality benefit; used in Europe; reduces preload and afterload"],
["Epinephrine/Norepinephrine", "Alpha+Beta agonists", "Variable", "Cardiogenic shock; NE + dobutamine preferred over epinephrine alone"],
]
story.append(make_table(inot_rows[0], inot_rows[1:], [2.8*cm, 5*cm, 3.5*cm, 6.7*cm], styles))
story.append(Spacer(1, 3*mm))
# SECTION 5: HFpEF
story.append(section_header("5. HFpEF (EF ≥50%) MANAGEMENT", styles))
story.append(Spacer(1, 3*mm))
story.append(Paragraph("No single drug proven to reduce mortality in HFpEF until recently. Management focuses on congestion relief and treating underlying causes (HTN, AF, CAD).", styles['body']))
story.append(Spacer(1, 2*mm))
hfpef_rows = [
["Drug", "Trial", "Outcome", "Notes"],
["Empagliflozin", "EMPEROR-Preserved", "21% ↓ CV death/HF hospitalization", "First drug with clear HFpEF benefit"],
["Dapagliflozin", "DELIVER", "18% ↓ worsening HF/CV death", "Also effective in HFpEF"],
["Sacubitril/Valsartan", "PARAGON-HF", "Borderline significant (HR 0.87, p=0.06)", "Women and lower EF subgroups may benefit"],
["Spironolactone", "TOPCAT", "Negative overall; positive in Americas subgroup", "Reduced hospitalizations in Americas patients"],
["Diuretics", "Symptom-based", "Congestion relief", "No mortality data in HFpEF specifically"],
]
story.append(make_table(hfpef_rows[0], hfpef_rows[1:], [4*cm, 4.5*cm, 5*cm, 4.5*cm], styles))
story.append(Spacer(1, 3*mm))
# SECTION 6: PERIOPERATIVE HF
story.append(section_header("6. PERIOPERATIVE HEART FAILURE", styles))
story.append(Spacer(1, 3*mm))
peri_items = [
"HF is the single most powerful predictor of perioperative cardiac complications (Lee RCRI)",
"ACCF/AHA Guidelines: Postpone elective surgery until HF is optimized",
"EF <35% → increased operative mortality (3-5x compared to normal EF)",
"Continue ACE-I/ARB up to day of surgery in chronic HF (reduces perioperative HF exacerbation)",
"Continue beta-blockers perioperatively (abrupt withdrawal dangerous)",
"AVOID: NSAIDs (fluid retention, worsen HF), Thiazolidinediones (fluid retention)",
"Avoid CCBs with negative inotropy (verapamil, diltiazem) in HFrEF",
"Perioperative target: Euvolemia; treat occult congestion before elective surgery",
]
for item in peri_items:
story.append(Paragraph(f"• {item}", styles['bullet']))
story.append(Spacer(1, 3*mm))
# LAST MINUTE REVISION
story.append(section_header("7. LAST MINUTE REVISION TABLE", styles))
story.append(Spacer(1, 3*mm))
lmr_data = [
("Drug with 30% mortality reduction in HFrEF", "Spironolactone (RALES trial)"),
("Only ARNI available", "Sacubitril/Valsartan (Entresto)"),
("Washout before starting ARNI", "36 hours after last ACE-I dose"),
("Beta-blockers proven in HFrEF (3 only)", "Carvedilol, Metoprolol succinate, Bisoprolol"),
("SGLT2 inhibitors in HFrEF trials", "DAPA-HF (dapagliflozin), EMPEROR-Reduced (empagliflozin)"),
("SGLT2 inhibitors in HFpEF trials", "DELIVER (dapagliflozin), EMPEROR-Preserved (empagliflozin)"),
("Inotrope in patients already on beta-blocker", "Milrinone preferred (bypasses beta receptor)"),
("Ivabradine condition for use", "Sinus rhythm, HR ≥70, on max tolerated BB"),
("Digoxin trial finding", "DIG: ↓hospitalizations, NO mortality benefit"),
("Forrester profile B (most common ADHF)", "Warm-Wet: Diuretics ± vasodilators"),
("Forrester profile C management", "Cold-Wet: Inotropes + Diuretics"),
("Tolvaptan indication in HF", "Hyponatremia; EVEREST trial - no survival benefit"),
("Hydralazine-nitrate indication", "African Americans with HFrEF; ACE-I/ARB intolerant"),
("PARADIGM-HF comparison drug", "Sacubitril/Valsartan vs Enalapril (20% ↓ CV death)"),
("Levosimendan mechanism", "Calcium sensitizer + K-ATP channel opener"),
("Most bioavailable oral loop diuretic", "Torsemide (80-100% vs furosemide 50%)"),
("ADVOR trial drug", "IV Acetazolamide + loop diuretic → better decongestion"),
("HF stage vs NYHA class", "ACC/AHA Stages A-D are irreversible; NYHA I-IV are functional (reversible)"),
]
story.append(lmr_table(lmr_data, styles))
doc.build(story)
print("Ch58 HY Notes DONE")
# ═══════════════════════════════════════════════════════════════════════════════
# CHAPTER 59 - TAVR
# ═══════════════════════════════════════════════════════════════════════════════
def build_ch59_notes():
styles = get_styles()
doc = SimpleDocTemplate('/home/daytona/workspace/INI_SS_CET_CVTS/Ch59_TAVR_HighYield_Notes.pdf',
pagesize=A4, leftMargin=2*cm, rightMargin=2*cm, topMargin=2*cm, bottomMargin=2*cm)
story = []
story.append(make_header_table(59, "Transcatheter Aortic\nValve Replacement (TAVR)",
"HIGH-YIELD NOTES | INI SS CET CVTS Preparation", styles))
story.append(Spacer(1, 6*mm))
# SECTION 1: BASICS
story.append(section_header("1. AORTIC STENOSIS - BACKGROUND & TAVR EVOLUTION", styles))
story.append(Spacer(1, 3*mm))
story.append(Paragraph("<b>Key Facts:</b>", styles['h3']))
basic_items = [
"AS is the MOST COMMON acquired valve disease in elderly patients",
"Classic triad of severe AS: Angina (5-year survival), Syncope (3-year), Heart failure (1-2 year) - increasingly questioned in modern practice",
"First TAVR: Alain Cribier, 2002 - antegrade approach via transseptal puncture (patient had severe peripheral vascular disease)",
"TAVR became more frequent than isolated SAVR in the United States in 2018-2019 (STS/ACC TVT Registry)",
"FDA approval for low-risk patients: August 2019 (PARTNER 3 and Evolut Low Risk trials)",
">95% of TAVRs now performed by retrograde transfemoral (TF) route"
]
for item in basic_items:
story.append(Paragraph(f"• {item}", styles['bullet']))
story.append(Spacer(1, 3*mm))
story.append(Paragraph("<b>Indications for TAVR (ACC/AHA 2021 VHD Guidelines):</b>", styles['h3']))
indic_rows = [
["Risk Category", "STS Score", "Age", "Recommendation", "Class"],
["High surgical risk", ">8%", "Any (often >70)", "TAVR preferred", "I"],
["Intermediate risk", "4-8%", "≥65", "TAVR or SAVR (shared decision)", "I"],
["Low risk", "<4%", "≥65", "TAVR or SAVR (shared decision)", "IIa"],
["Low risk", "<4%", "<65", "SAVR preferred", "IIa"],
["Inoperable", "Prohibitive", "Any", "TAVR (if anticipated benefit >1 yr)", "I"],
]
story.append(make_table(indic_rows[0], indic_rows[1:], [4*cm, 3*cm, 2.5*cm, 4.5*cm, 2.5*cm], styles))
story.append(Spacer(1, 3*mm))
story.append(pearl_box([
"STS score >10% = High risk; 4-8% = Intermediate; <4% = Low risk",
"TAVR now Class I indication for high AND intermediate surgical risk patients",
"Young patients (<65) with bicuspid AV or need for concomitant procedures: SAVR preferred",
"Valve-in-valve TAVR: For failed bioprosthetic surgical aortic valve (Class IIa)"
], styles))
story.append(Spacer(1, 3*mm))
# SECTION 2: PREOPERATIVE EVALUATION
story.append(section_header("2. PREOPERATIVE EVALUATION & PLANNING (TAVR WORKUP)", styles))
story.append(Spacer(1, 3*mm))
plan_rows = [
["Assessment", "Method/Tool", "What to Evaluate"],
["Aortic Valve", "TTE/TEE + CT Angiography", "Annulus size (for valve sizing), valve morphology (bicuspid vs tricuspid), LVOT dimensions, calcification"],
["Coronary Arteries", "Coronary angiogram ± CT-FFR", "Significant CAD requiring revascularization pre-TAVR; risk of coronary obstruction"],
["Iliofemoral (Peripheral) Access", "CT angiography of aorta-iliofemoral", "Minimum vessel diameter (≥5mm for standard TF), tortuosity, calcification"],
["Brain/Carotid", "Carotid ultrasound ± CTA brain", "Baseline neurologic status; stroke risk factors"],
["Renal Function", "Serum creatinine, eGFR", "Iodinated contrast volume planning; post-procedure AKI risk"],
["Frailty Assessment", "5-meter walk test, Katz ADL, grip strength", "Essential in elderly; high frailty = poor outcomes despite successful TAVR"],
["Other Valves", "TTE/TEE", "Significant MR/TR/MS that may require staged intervention"],
]
story.append(make_table(plan_rows[0], plan_rows[1:], [4*cm, 4*cm, 9*cm], styles))
story.append(Spacer(1, 3*mm))
story.append(Paragraph("<b>Heart Team concept:</b> TAVR decisions should be made by a multidisciplinary Heart Team including interventional cardiologist, cardiac surgeon, cardiac imaging specialist, cardiac anesthesiologist, and structural heart nurse coordinator.", styles['body']))
story.append(Spacer(1, 3*mm))
# SECTION 3: ACCESS ROUTES
story.append(section_header("3. TAVR ACCESS ROUTES", styles))
story.append(Spacer(1, 3*mm))
access_rows = [
["Access Route", "Abbreviation", "Advantages", "Disadvantages / When Used"],
["Transfemoral (retrograde)", "TF-TAVR", "Least invasive; fluoroscopic; general/local; best outcomes", "Need adequate iliac/femoral: ≥5-6mm; no severe calcification/tortuosity"],
["Transapical", "TA-TAVR", "Independent of peripheral vessels; direct apical access", "Left thoracotomy required; LV puncture; ↑ mortality/stroke vs TF; declining use"],
["Transaortic", "TAo-TAVR", "Mini-sternotomy; short delivery distance", "Requires porcelain aorta workup; declining use"],
["Transcarotid", "TC-TAVR", "Alternative if TF not feasible; good results reported", "Carotid arteriotomy; neurologic monitoring required"],
["Transsubclavian/Axillary", "TS-TAVR", "Good alternative; sheathless systems", "Subclavian artery size; risk of brachial plexus injury"],
["Transcaval", "TCa-TAVR", "Truly percutaneous alternative to TA/TAo", "Requires IVC-to-aorta crossing; closure with plug; limited experience"],
]
story.append(make_table(access_rows[0], access_rows[1:], [3.5*cm, 2*cm, 4.5*cm, 7*cm], styles))
story.append(Spacer(1, 3*mm))
# SECTION 4: VALVE TYPES
story.append(section_header("4. TAVR VALVE PLATFORMS (KEY DEVICES)", styles))
story.append(Spacer(1, 3*mm))
valve_rows = [
["Valve", "Type", "Deployment", "Key Features"],
["Edwards SAPIEN 3/Ultra", "Balloon-expandable (BE)", "Non-repositionable", "PARTNER trials; cobalt-chromium frame; bovine pericardial leaflets; External skirt reduces PVL"],
["Medtronic Evolut PRO/FX", "Self-expanding (SE)", "Repositionable/retrievable", "Nitinol frame; porcine pericardial; EnVeo delivery; supra-annular position; lower gradient"],
["Boston Scientific Acurate Neo2", "Self-expanding", "Top-down deployment", "Unique anatomical positioning; outer skirt; no rapid pacing needed for BE"],
["Medtronic Lotus Edge", "Mechanically-expanded", "Repositionable", "Withdrawn from market; high pacemaker requirement"],
["Tendyne (Abbott)", "Apical-based mitral replacement", "Transapical", "Mitral replacement; tethered to LV apex"],
]
story.append(make_table(valve_rows[0], valve_rows[1:], [4*cm, 3.5*cm, 3.5*cm, 7*cm], styles))
story.append(Spacer(1, 3*mm))
# SECTION 5: LANDMARK TRIALS
story.append(section_header("5. LANDMARK TAVR TRIALS", styles))
story.append(Spacer(1, 3*mm))
tavr_trials = [
["Trial", "Population", "Comparison", "Key Outcome"],
["PARTNER 1A", "High risk AS", "TAVR (TF/TA) vs SAVR", "TAVR non-inferior to SAVR at 1 year; ↑stroke with TAVR; ↑vascular with TAVR"],
["PARTNER 1B", "Inoperable AS", "TAVR vs Medical Rx", "TAVR: 46% ↓ all-cause mortality at 1yr vs medical; ↑stroke rate"],
["CoreValve US High Risk", "High risk AS", "SE TAVR vs SAVR", "TAVR SUPERIOR to SAVR: 14.2% vs 19.1% 12-mo mortality"],
["PARTNER 2A", "Intermediate risk AS", "BE TAVR vs SAVR", "TAVR non-inferior at 2 years; TF sub-analysis: TAVR SUPERIOR"],
["SURTAVI", "Intermediate risk AS", "SE TAVR vs SAVR", "TAVR non-inferior to SAVR at 24 months"],
["PARTNER 3", "Low risk AS", "BE TAVR vs SAVR", "TAVR SUPERIOR: 8.5% vs 15.1% composite (death/stroke/rehospitalization) at 1yr"],
["Evolut Low Risk", "Low risk AS", "SE TAVR vs SAVR", "TAVR non-inferior at 24 months; Bayesian analysis showing superiority"],
["NOTION", "All-comers", "SE TAVR vs SAVR (lower risk)", "No significant difference at 5 years"],
["RECOVERY", "Severe asymptomatic AS", "Early SAVR vs watchful waiting", "Early surgery superior in truly asymptomatic severe AS"],
]
story.append(make_table(tavr_trials[0], tavr_trials[1:], [3*cm, 4*cm, 4*cm, 6*cm], styles))
story.append(Spacer(1, 3*mm))
# SECTION 6: COMPLICATIONS
story.append(section_header("6. TAVR COMPLICATIONS", styles))
story.append(Spacer(1, 3*mm))
comp_rows = [
["Complication", "Incidence", "Key Points & Management"],
["Paravalvular Leak (PVL)", "Mild: ~30-60%; Moderate-severe: 5-10%", "Most common; mild PVL acceptable; moderate/severe ↑ mortality; improved with SAPIEN 3 outer skirt"],
["Permanent Pacemaker (PPM)", "SE: 15-25%; BE: 5-8%", "LBBB + pre-existing RBBB = high PPM risk; Evolut has higher PPM rate than SAPIEN"],
["Stroke", "2-5% at 30 days", "Periprocedural stroke (embolic from calcified valve); cerebral embolic protection devices under study (CLEAN-TAVI, SENTINEL)"],
["Vascular Complications", "TF: ~5-10%; major: ~2-5%", "Femoral/iliac access site; closure device failure; covered stent management"],
["Coronary Obstruction", "~0.3-0.7%", "Life-threatening; displaced calcium/native leaflet blocks coronary ostium; LOW origin <12mm at risk; chimneys/BASILICA technique"],
["Annular Rupture", "<1%", "Catastrophic; balloon pre-dilation + oversizing; usually fatal without emergency surgery"],
["Conduction Abnormalities", "LBBB: ~20-30% (SE)", "ECG monitoring 48-72h; new LBBB: watch for complete AVB; pre-existing RBBB: high PPM risk"],
["Acute Kidney Injury", "~10-15%", "Contrast nephropathy; pre-hydration; minimize contrast"],
["Cardiac Tamponade", "~1%", "Guide wire or pacing wire perforation; emergency pericardiocentesis"],
["Aortic Regurgitation (residual)", "Variable", "Under-expansion; valve malposition; post-dilation may help"],
]
story.append(make_table(comp_rows[0], comp_rows[1:], [4*cm, 3.5*cm, 9.5*cm], styles))
story.append(Spacer(1, 3*mm))
story.append(pearl_box([
"SE valves (Evolut) have higher PPM rates than BE valves (SAPIEN) - key exam distinction",
"TAVR SUPERIOR to SAVR in low-risk patients at 1 year (PARTNER 3) - paradigm shift",
"Coronary obstruction risk: Height of coronary ostium <12mm from annulus + heavy leaflet calcification",
"BASILICA technique: Intentional laceration of aortic leaflet to prevent coronary obstruction",
"Valve-in-Valve TAVR: SE valves preferred; risk of patient-prosthesis mismatch; coronary obstruction higher risk",
"Bicuspid AV: Not included in major TAVR trials; higher PVL, more PPM, more reintervention vs tricuspid"
], styles))
story.append(Spacer(1, 3*mm))
# SECTION 7: SPECIAL POPULATIONS
story.append(section_header("7. SPECIAL POPULATIONS & AREAS OF UNCERTAINTY", styles))
story.append(Spacer(1, 3*mm))
special_rows = [
["Population", "Key Points", "Recommendation"],
["Young patients (<65)", "Durability concerns (10-15yr data limited); cannot reop on TAVR-in-TAVR indefinitely; lack of long-term data", "SAVR preferred; shared decision making"],
["Bicuspid AV", "Not enrolled in RCTs; elliptical annulus → higher PVL, PPM; technical challenges; favorable outcomes in experienced centers", "SAVR preferred; TAVR in high-risk bicuspid"],
["Concomitant CAD", "FFR-guided PCI before TAVR if significant; complete revascularization may improve outcomes; ad-hoc PCI at TAVR feasible", "Staged PCI then TAVR (usually)"],
["Valve-in-Valve", "For failed bioprosthetic SAVR; Class IIa; SE valves preferred; risk of coronary obstruction higher", "TAVR ViV recommended if high surgical risk"],
["Pure AR (no stenosis)", "TAVR technically challenging (no calcium for anchoring); dedicated devices (JenaValve); limited evidence", "SAVR preferred; TAVR if high-risk"],
]
story.append(make_table(special_rows[0], special_rows[1:], [3.5*cm, 7*cm, 6.5*cm], styles))
story.append(Spacer(1, 3*mm))
# LAST MINUTE REVISION
story.append(section_header("8. LAST MINUTE REVISION TABLE", styles))
story.append(Spacer(1, 3*mm))
lmr_data = [
("First TAVR performed by", "Alain Cribier, 2002, antegrade transseptal approach"),
("TAVR became more common than SAVR in US", "2018-2019"),
("FDA approval for low-risk TAVR", "August 2019"),
("Most common TAVR access route", "Retrograde transfemoral (>95%)"),
("Minimum femoral artery diameter for TF-TAVR", "≥5-6mm"),
("TAVR superior to SAVR in low-risk patients", "PARTNER 3 trial (BE) and Evolut Low Risk (SE)"),
("Highest pacemaker rate: SE or BE valve", "Self-expanding (Evolut): 15-25% vs BE (SAPIEN): 5-8%"),
("Most common TAVR complication", "Paravalvular leak (PVL)"),
("Coronary obstruction risk factor", "Coronary ostium height <12mm from annulus"),
("Technique to prevent coronary obstruction", "BASILICA (Bioprosthetic or native Aortic Scallop Intentional Laceration to prevent Coronary Artery obstruction)"),
("PARTNER 1B trial finding", "TAVR vs medical therapy: 46% ↓ mortality at 1 year"),
("Trial showing TAVR superior to SAVR in high-risk", "CoreValve US High Risk (14.2% vs 19.1% 12-mo mortality)"),
("Valve-in-Valve TAVR guidance", "Class IIa; SE preferred over BE"),
("Transcaval access", "IVC-to-aorta puncture; closure with Amplatzer plug"),
("SENTINEL device in TAVR", "Cerebral embolic protection device"),
("TAVR for pure AR", "Technically difficult (no calcium anchor); JenaValve specifically designed"),
("TAVR anticoagulation post-procedure", "ANTITHROMBOTIC TAVR: Aspirin alone preferred (POPULAR-TAVI) if no other AF indication for anticoagulation"),
]
story.append(lmr_table(lmr_data, styles))
doc.build(story)
print("Ch59 HY Notes DONE")
# ═══════════════════════════════════════════════════════════════════════════════
# CHAPTER 60 - Transcatheter Mitral and Tricuspid
# ═══════════════════════════════════════════════════════════════════════════════
def build_ch60_notes():
styles = get_styles()
doc = SimpleDocTemplate('/home/daytona/workspace/INI_SS_CET_CVTS/Ch60_TEER_Mitral_Tricuspid_HighYield_Notes.pdf',
pagesize=A4, leftMargin=2*cm, rightMargin=2*cm, topMargin=2*cm, bottomMargin=2*cm)
story = []
story.append(make_header_table(60, "Transcatheter Treatment of Mitral\nand Tricuspid Valve Disease",
"HIGH-YIELD NOTES | INI SS CET CVTS Preparation", styles))
story.append(Spacer(1, 6*mm))
# SECTION 1: MR BASICS
story.append(section_header("1. MITRAL REGURGITATION - CLASSIFICATION & SURGERY CRITERIA", styles))
story.append(Spacer(1, 3*mm))
mr_rows = [
["Type", "Mechanism", "Causes", "Repair vs Replace"],
["Primary (Degenerative) MR", "Intrinsic leaflet/chordal pathology", "MVP (most common in USA), rheumatic, ruptured chordae, flail leaflet", "Repair preferred; >90% repairability in expert centers"],
["Secondary (Functional) MR", "Dilated/ischemic cardiomyopathy; annular dilation; leaflet tethering", "Ischemic CM, non-ischemic DCM", "Surgical repair vs replace debated; COAPT supports MitraClip"],
["Mixed MR", "Combined primary + secondary", "Various", "Individualized approach"],
]
story.append(make_table(mr_rows[0], mr_rows[1:], [4*cm, 4*cm, 4.5*cm, 4.5*cm], styles))
story.append(Spacer(1, 3*mm))
story.append(Paragraph("<b>Surgical Indications for Primary MR (ACC/AHA 2021):</b>", styles['h3']))
surg_items = [
"Class I: Severe primary MR AND LVEF >30% + LVESD <55mm + symptomatic",
"Class I: Asymptomatic severe primary MR with LVEF ≤60% OR LVESD ≥40mm",
"Class IIa: Asymptomatic severe MR with preserved EF if repair likely AND experienced center",
"New ACC/AHA 2021: LVESD threshold changed to 40mm (was 45mm) and LVEF threshold to 60% (was 65%)"
]
for item in surg_items:
story.append(Paragraph(f"• {item}", styles['bullet']))
story.append(Spacer(1, 3*mm))
# SECTION 2: MitraClip - TEER
story.append(section_header("2. TRANSCATHETER EDGE-TO-EDGE REPAIR (TEER) - MitraClip", styles))
story.append(Spacer(1, 3*mm))
story.append(Paragraph("<b>Concept:</b> Catheter-based replication of Alfieri stitch (surgical edge-to-edge repair); clips A2-P2 leaflet segments creating double orifice mitral valve.", styles['body']))
story.append(Spacer(1, 2*mm))
story.append(Paragraph("<b>MitraClip System Evolution:</b>", styles['h3']))
clip_rows = [
["Generation", "Features", "Key Improvement"],
["MitraClip Classic/NT", "Original design; 4mm width", "First-in-human; EVEREST I/II trials"],
["MitraClip NTr/XTr", "Independent leaflet actuation; wider clip", "Better grasping; reduced time"],
["MitraClip G4 (NTr/XTr)", "TRILUMINATE compatible; even wider XTr", "Tricuspid use; improved grasping"],
["PASCAL (Edwards)", "Wider 10mm paddle; spacer; independent arm actuation", "Alternative to MitraClip; CLASP trial"],
]
story.append(make_table(clip_rows[0], clip_rows[1:], [3.5*cm, 6*cm, 7.5*cm], styles))
story.append(Spacer(1, 3*mm))
story.append(Paragraph("<b>TEER Access:</b> Transseptal puncture (femoral vein → right atrium → transseptal → left atrium → mitral valve). TEE guidance mandatory.", styles['body']))
story.append(Spacer(1, 2*mm))
story.append(Paragraph("<b>Ideal TEER Anatomy (Echocardiographic Criteria):</b>", styles['h3']))
echo_items = [
"MV area ≥4.0 cm² (post-TEER area ≥1.5 cm²)",
"Flail width <15mm; flail gap <10mm",
"Coaptation length ≥2mm; coaptation depth <11mm",
"Posterior leaflet length ≥10mm",
"No severe leaflet tethering that would prevent grasping",
"EROA ≥0.20 cm² for degenerative; ≥0.30 cm² for functional MR (COAPT criteria)"
]
for item in echo_items:
story.append(Paragraph(f"• {item}", styles['bullet']))
story.append(Spacer(1, 3*mm))
# SECTION 3: TEER TRIALS
story.append(section_header("3. LANDMARK TEER TRIALS", styles))
story.append(Spacer(1, 3*mm))
teer_trials = [
["Trial", "Population", "Comparison", "Key Outcomes"],
["EVEREST I", "Primary MR (feasibility)", "MitraClip safety", "Feasible; MR reduction; first clinical data"],
["EVEREST II", "Primary + Secondary MR", "MitraClip vs Surgical repair", "Surgery: better MR reduction; MitraClip: less bleeding, shorter hospital; similar mortality"],
["MITRA-FR", "Functional/Secondary MR (heart failure)", "MitraClip + GDMT vs GDMT alone", "NO benefit of MitraClip (HR 1.16, p=0.53) in European HF patients"],
["COAPT", "Functional/Secondary MR (HF)", "MitraClip + GDMT vs GDMT alone", "SIGNIFICANT benefit: 29% ARR in HF hospitalization; 38% ↓ mortality at 2 years; patient selection crucial"],
["RESHAPE-HF2", "Functional MR in HF", "MitraClip + GDMT vs GDMT alone", "Positive: ↓ composite death/HF hospitalization at 24 months"],
["CLASP", "Mixed MR", "PASCAL TEER", "Safety/efficacy: similar to MitraClip; CLASP II RCT ongoing"],
["MATTERHORN", "Secondary MR", "MitraClip vs Surgical repair", "Non-inferiority of TEER vs surgery for functional MR"],
]
story.append(make_table(teer_trials[0], teer_trials[1:], [3*cm, 4*cm, 4.5*cm, 5.5*cm], styles))
story.append(Spacer(1, 3*mm))
story.append(pearl_box([
"MITRA-FR vs COAPT discrepancy: COAPT had more severe MR (EROA ≥0.3cm²) + optimized GDMT + less ventricular dilation",
"'Proportionate vs Disproportionate MR' concept: COAPT patients had disproportionate MR relative to LV size",
"COAPT: MitraClip reduced all-cause mortality by 38% and HF hospitalizations by 47% at 2 years",
"TEER for primary MR: Appropriate only if surgery declined or prohibited (high surgical risk)",
"PASCAL: Wider paddle + spacer = better for large flail gap or complex anatomy"
], styles))
story.append(Spacer(1, 3*mm))
# SECTION 4: TRANSCATHETER MV REPLACEMENT (TMVR)
story.append(section_header("4. TRANSCATHETER MITRAL VALVE REPLACEMENT (TMVR)", styles))
story.append(Spacer(1, 3*mm))
tmvr_rows = [
["Category", "Device", "Access", "Notes"],
["Valve-in-Valve (failed bioprosthesis)", "SAPIEN XT/3, Evolut R", "Transseptal (preferred) or transapical", "Most established TMVR; smaller valves → patient-prosthesis mismatch risk; LVOTR risk"],
["Valve-in-Ring (failed annuloplasty)", "SAPIEN XT/3", "Transseptal or transapical", "Good results; incomplete ring may allow embolization"],
["Valve-in-MAC (mitral annular calcification)", "SAPIEN XT/3", "Transapical or transseptal", "High risk of LVOT obstruction (30-40%); alcohol septal ablation may be needed (LAMPOON)"],
["Native MV Replacement", "Tendyne, Intrepid, Caisson, Cardiovalve", "Transapical (most); some transseptal", "All investigational; Intrepid APOLLO trial; LVOT obstruction major concern"],
]
story.append(make_table(tmvr_rows[0], tmvr_rows[1:], [4.5*cm, 3.5*cm, 3*cm, 6*cm], styles))
story.append(Spacer(1, 3*mm))
story.append(Paragraph("<b>LVOT Obstruction in TMVR:</b> The anterior mitral leaflet can be displaced into LVOT. LAMPOON technique (Laceration of Anterior Mitral leaflet to Prevent LVOT ObstructioN) used prophylactically.", styles['body']))
story.append(Spacer(1, 3*mm))
# SECTION 5: TRICUSPID DISEASE
story.append(section_header("5. TRICUSPID VALVE DISEASE & TRANSCATHETER TRICUSPID THERAPIES", styles))
story.append(Spacer(1, 3*mm))
story.append(Paragraph("<b>Tricuspid Regurgitation Background:</b>", styles['h3']))
tr_items = [
"Severe TR affects ~1.6 million people in US; associated with ↑ morbidity and mortality",
"Most common cause: Secondary/functional TR due to annular dilation from left-sided heart disease or pulmonary hypertension (80-85%)",
"Primary TR causes: Rheumatic, carcinoid, Ebstein's anomaly, infective endocarditis",
"Isolated TR surgery: High mortality (~10%); hence transcatheter options attractive",
"Outcomes of isolated tricuspid surgery: 30-day mortality 5-8% (historical); major morbidity high",
"Patients often deemed inoperable or high-risk for isolated TV surgery"
]
for item in tr_items:
story.append(Paragraph(f"• {item}", styles['bullet']))
story.append(Spacer(1, 3*mm))
story.append(Paragraph("<b>Transcatheter Tricuspid Therapies Classification:</b>", styles['h3']))
tric_rows = [
["Category", "Device", "Mechanism", "Status"],
["Leaflet Coaptation / TEER", "TRILUMINATE (TriClip)", "Edge-to-edge clip (similar to MitraClip)", "TRILUMINATE Pivotal FDA approved 2023; Class IIa"],
["Leaflet Coaptation", "PASCAL for Tricuspid", "Wider paddle; simultaneous A-P leaflet grasping", "Clinical trials"],
["Leaflet Coaptation", "FORMA", "Spacer occupies regurgitant orifice", "Early trials"],
["Leaflet Coaptation", "CLASP TR (PASCAL)", "Edwards PASCAL device", "CLASP TR pivotal trial"],
["Annuloplasty", "Trialign", "Posterior annulus plication with bicaval venous access", "CE mark; SCOUT trial"],
["Annuloplasty", "Cardioband Tricuspid", "Direct annuloplasty ring placed via transseptal", "TRI-REPAIR trial; CE mark"],
["Annuloplasty", "TriCinch", "Pledget-based annulus cinching", "PREVENT trial"],
["Orthotopic Replacement", "EVOQUE (Edwards)", "Tricuspid replacement; transseptal access", "TRISCEND trial; FDA approved 2024"],
["Orthotopic Replacement", "Intrepid TR", "Transvenous TV replacement", "Investigational"],
["Heterotopic Replacement", "SAPIEN in IVC (Caval valve)", "Valve in IVC; not true TV replacement", "TRICAVAL study; symptomatic relief only"],
["Heterotopic Replacement", "TricValve", "Bicaval valve system (SVC + IVC)", "Investigational"],
]
story.append(make_table(tric_rows[0], tric_rows[1:], [4*cm, 3.5*cm, 4*cm, 5.5*cm], styles))
story.append(Spacer(1, 3*mm))
story.append(pearl_box([
"TRILUMINATE Pivotal trial: TriClip → 87% achieved MR grade ≤2; significantly better QoL at 1 year (no mortality data yet)",
"EVOQUE: First dedicated orthotopic transcatheter tricuspid valve; TRISCEND II pivotal - FDA approved 2024",
"Caval valve (SAPIEN in IVC): Does NOT treat TR; only reduces venous pressure; no RV improvement",
"TEER for tricuspid: Technically harder than mitral (3 leaflets; lack of clear coaptation zone; RV pressure dynamics)",
"Most common cause of TR requiring treatment: Functional/secondary (annular dilation)",
"Carcinoid heart disease: Predominantly right-sided valve disease (TR >> pulmonary stenosis); serotonin effect"
], styles))
story.append(Spacer(1, 3*mm))
# LAST MINUTE REVISION
story.append(section_header("6. LAST MINUTE REVISION TABLE", styles))
story.append(Spacer(1, 3*mm))
lmr_data = [
("Most common MV disease in USA", "Mitral valve prolapse (degenerative MR)"),
("TEER concept (Alfieri stitch equivalent)", "Clips A2-P2 leaflet → double orifice mitral valve"),
("COAPT trial result", "MitraClip + GDMT: 38% ↓ mortality, 47% ↓ HF hospitalization vs GDMT alone"),
("MITRA-FR trial result", "MitraClip NO benefit in secondary MR (less severe, larger LV than COAPT)"),
("Key difference COAPT vs MITRA-FR patients", "COAPT: EROA ≥0.3cm², proportionate MR; MITRA-FR: less severe MR relative to LV"),
("PASCAL device advantage", "Wider paddle + spacer; independent arm actuation; good for large flail gap"),
("TMVR: highest LVOT obstruction risk", "Valve-in-MAC (mitral annular calcification) - 30-40%"),
("LAMPOON technique", "Laceration of anterior mitral leaflet to prevent LVOT obstruction in TMVR"),
("First dedicated tricuspid replacement device FDA approved", "EVOQUE (Edwards) - 2024"),
("TRILUMINATE Pivotal endpoint", "87% patients achieved TR grade ≤2+; improved QoL and functional status"),
("Caval valve limitation", "Heterotopic; reduces venous congestion symptoms only; NO improvement in RV function or TR"),
("Cardioband TV mechanism", "Direct transcatheter tricuspid annuloplasty ring (transseptal access)"),
("Trialign mechanism", "Posterior annulus plication via bicaval venous approach (SCOUT trial)"),
("Access for MitraClip/TEER", "Transseptal puncture (femoral vein → RA → transseptal → LA)"),
("Mitral ViV: Preferred valve type", "SAPIEN or Evolut (depending on previous surgical prosthesis size)"),
("Surgical repair vs replace in primary MR", "Repair preferred; >90% repairability in experienced centers"),
("New 2021 ACC/AHA MR threshold for surgery", "LVESD ≥40mm (was 45mm); LVEF ≤60% (was 65%)"),
("FORMA device mechanism", "Spacer occupies regurgitant orifice; passive coaptation enhancement"),
]
story.append(lmr_table(lmr_data, styles))
doc.build(story)
print("Ch60 HY Notes DONE")
# Run all
build_ch57_notes()
build_ch58_notes()
build_ch59_notes()
build_ch60_notes()
cd /home/daytona/workspace && python3 generate_all_pdfs.py 2>&1
Update progress
| Task | Status |
|---|---|
| Read PDF skill instructions | Done |
| Extracted text from all 4 chapter PDFs | Done |
| Ch57 High-Yield Notes PDF (ACS) | ✅ Generated |
| Ch58 High-Yield Notes PDF (HF Pharmacology) | ✅ Generated |
| Ch59 High-Yield Notes PDF (TAVR) | ✅ Generated |
| Ch60 High-Yield Notes PDF (Mitral & Tricuspid) | ✅ Generated |
| Task | Status |
|---|---|
| Ch57 MCQ PDF (ACS - 20 Qs) | Pending |
| Ch58 MCQ PDF (HF Pharmacology - 20 Qs) | Pending |
| Ch59 MCQ PDF (TAVR - 20 Qs) | Pending |
| Ch60 MCQ PDF (Mitral & Tricuspid - 20 Qs) | Pending |
Proceed with generating all 4 MCQ PDFs now (20 Qs each)
Update