I need an complete comparison between mitral, tricuspid, aortic, pulmonary stenosis and regurgitation

Reading File
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
I now have comprehensive data from Braunwald's, Harrison's, and Grainger & Allison's. Let me compile the complete comparison.

Complete Comparison of Valvular Heart Diseases

Overview

There are 4 cardiac valves (mitral, tricuspid, aortic, pulmonary), each capable of two pathologic states: stenosis (failure to open fully, obstructing forward flow) and regurgitation (failure to close fully, allowing backward flow). This gives 8 distinct lesions with distinct etiologies, hemodynamics, symptoms, signs, and management.

Quick Reference Table

FeatureMitral StenosisMitral RegurgitationAortic StenosisAortic RegurgitationTricuspid StenosisTricuspid RegurgitationPulmonary StenosisPulmonary Regurgitation
SideLeftLeftLeftLeftRightRightRightRight
Phase affectedDiastolic fillingSystolic ejectionSystolic ejectionDiastolic refillDiastolic fillingSystolic ejectionSystolic ejectionDiastolic refill
Pressure gradientLA > LV (diastole)LV > LA (systole, backward)LV > Ao (systole)Ao > LV (diastole, backward)RA > RV (diastole)RV > RA (systole, backward)RV > PA (systole)PA > RV (diastole, backward)

1. MITRAL STENOSIS (MS)

Etiology

  • Rheumatic fever is the dominant cause worldwide (commissural fusion, leaflet thickening, chordal shortening)
  • Rare: congenital, radiation, severe mitral annular calcification, carcinoid

Pathophysiology

  • Obstruction of LV filling in diastole - LA pressure rises - pulmonary venous hypertension - pulmonary arterial hypertension
  • Normal mitral valve area (MVA): 4-6 cm²
  • Symptomatic when MVA < 2 cm²; severe when MVA < 1.5 cm²; critical when MVA < 1.0 cm²
  • Reduced LV preload - reduced cardiac output
  • Chronically elevated LA pressure triggers atrial fibrillation (in 30-40% of patients)

Symptoms

  • Dyspnea on exertion (earliest), progressing to orthopnea, PND
  • Fatigue (low CO)
  • Hemoptysis (pulmonary venous hypertension)
  • Palpitations (AF)
  • Systemic emboli (LA clot, especially in AF)
  • Hoarseness (Ortner's syndrome - enlarged LA compressing recurrent laryngeal nerve)

Physical Exam

  • Loud S1 (delayed mitral valve closure)
  • Opening snap (OS) after S2 - higher pressure gradient = shorter S2-OS interval
  • Low-pitched, rumbling mid-diastolic murmur at apex, heard best in left lateral decubitus with bell of stethoscope
  • Pre-systolic accentuation (if in sinus rhythm)
  • Malar flush (mitral facies) - peripheral vasoconstriction with pulmonary HTN
  • Signs of pulmonary HTN: loud P2, RV heave, TR murmur

ECG

  • P mitrale (bifid P wave in lead II, biphasic in V1) - LA enlargement
  • AF (common)
  • RV hypertrophy in advanced disease

Chest X-ray

  • LA enlargement (double density, splayed carina, posterior esophageal displacement)
  • Pulmonary venous congestion, Kerley B lines
  • Mitral valve calcification

Echocardiography (Key Investigation)

  • Hockey-stick deformity of anterior mitral leaflet (restricted tip, normal base)
  • Wilkins score (leaflet mobility, thickening, calcification, subvalvular involvement) - guides suitability for balloon valvuloplasty
  • Doppler: pressure half-time method (MVA = 220/PHT)
  • Mean gradient, planimetry of MVA

Management

  • Medical: rate control (beta blockers, digoxin), diuretics, anticoagulation if AF, rheumatic fever prophylaxis
  • Percutaneous mitral balloon valvuloplasty (PMBV): preferred for symptomatic MS with MVA < 1.5 cm² and favorable valve anatomy (Wilkins score ≤ 8)
  • Surgery (commissurotomy or MVR): unfavorable anatomy, significant MR, or failed PMBV

2. MITRAL REGURGITATION (MR)

Etiology

More diverse than MS - any component of the mitral apparatus may be affected:
  • Primary (organic): Mitral valve prolapse (MVP, most common in developed world), rheumatic, infective endocarditis, connective tissue disease (Marfan's), chordal rupture, radiation, congenital
  • Secondary (functional): Ischemic papillary muscle dysfunction, dilated cardiomyopathy (annular dilation), atrial fibrillation (atrial functional MR)

Pathophysiology

  • Systolic backflow LV → LA: LA volume overload - LA dilation and increased compliance (chronic) vs. acute pulmonary edema (acute)
  • LV receives both pulmonary venous return AND regurgitant volume - eccentric LV hypertrophy
  • LV end-diastolic volume increases; EF initially preserved or supra-normal (misleading)
  • Eventually, LV contractile dysfunction develops - EF falls - heart failure

Symptoms

  • Chronic: often asymptomatic for years; then exertional dyspnea, fatigue
  • Acute (chordal rupture, endocarditis, papillary muscle rupture in MI): sudden severe pulmonary edema - medical emergency

Physical Exam

  • Holosystolic (pansystolic) murmur at apex, radiating to axilla/back
  • Soft or absent S1
  • S3 gallop (volume overload)
  • Displaced, hyperdynamic apex beat (LV volume overload)
  • In MVP: mid-systolic click followed by late systolic murmur (Barlow's click-murmur syndrome)

ECG

  • LA enlargement (P mitrale)
  • LV hypertrophy
  • AF (common in chronic disease)

Echocardiography

  • Identifies mechanism (Carpentier classification: Type I normal motion, II prolapse/flail, III restricted)
  • Color Doppler quantifies regurgitation (jet area, vena contracta, PISA method)
  • LV size and function (EF <60% or LVESD >40 mm = surgery threshold)
  • Reparability assessment

Management

  • Medical: vasodilators (nifedipine, ACEi) in symptomatic or hypertensive patients; heart failure therapy for secondary MR
  • Surgery: First-line for primary severe MR. Mitral valve repair preferred over replacement (lower mortality, better LV preservation, no anticoagulation needed)
    • Indicated: symptomatic severe primary MR, OR asymptomatic with EF <60%, LVESD >40 mm, new AF, or PA systolic pressure >50 mmHg
  • MitraClip (transcatheter edge-to-edge repair): for high surgical risk patients; approved for both primary and secondary MR (EVEREST II trial)

3. AORTIC STENOSIS (AS)

Etiology

  • Calcific (degenerative): Most common cause in adults >65 years; progressive calcification of normal tricuspid valve (presents at 70-80 years) or bicuspid aortic valve (presents earlier, 50-60 years; present in 1-2% of population)
  • Rheumatic: now rare in developed countries
  • Congenital (unicuspid, bicuspid, hypoplastic annulus)

Pathophysiology

  • Obstruction to LV outflow in systole - LV pressure overload - concentric LV hypertrophy (compensatory, increases wall stress)
  • Cardiac output preserved for years while LV hypertrophies
  • Classic symptom triad appears when compensation fails: Angina, Syncope, Dyspnea (HF)
  • Once symptoms appear, prognosis is poor without intervention: 5-year survival ~15-50%
    • Angina: mean survival 5 years
    • Syncope: mean survival 3 years
    • Heart failure: mean survival 1-2 years

Severity (Doppler Echo Criteria)

GradePeak velocityMean gradientAVA
Mild<3 m/s<20 mmHg>1.5 cm²
Moderate3-4 m/s20-40 mmHg1.0-1.5 cm²
Severe>4 m/s>40 mmHg<1.0 cm²
Very severe>5 m/s>60 mmHg<0.6 cm²
Note: Low-flow, low-gradient AS (EF < 50% or stroke volume index < 35 mL/m²) may have severe AS with lower gradients - requires dobutamine stress echo to distinguish true severe AS from pseudo-severe AS.

Symptoms

  • Angina (demand ischemia - subendocardial ischemia from hypertrophy + reduced coronary perfusion pressure)
  • Syncope (exertional - failure of CO to increase, peripheral vasodilation)
  • Dyspnea/Heart failure (diastolic dysfunction first, then systolic failure)

Physical Exam

  • Harsh, crescendo-decrescendo (diamond-shaped) systolic ejection murmur at right 2nd intercostal space, radiating to carotids
  • Parvus et tardus pulse (slow-rising, low-amplitude carotid pulse) - unreliable in elderly with stiff arteries
  • Sustained, forceful apex beat (pressure overload)
  • Diminished or absent A2 (calcification)
  • S4 gallop (stiff, hypertrophied LV)
  • Heaving, undisplaced apical impulse

ECG

  • LV hypertrophy with strain pattern (ST depression, T-wave inversion in I, aVL, V4-V6)
  • LBBB (advanced disease)

Echocardiography

  • Heavily calcified, restricted leaflets (tricuspid or bicuspid)
  • LV wall thickness increased
  • Doppler gradients and continuity equation for AVA

Management

  • Medical: No medication slows progression; treat comorbidities (hypertension, HF)
  • Aortic Valve Replacement (AVR): Only definitive treatment
    • SAVR (surgical): Standard for low/intermediate risk, younger patients (<65 years prefer mechanical)
    • TAVR (transcatheter): Initially for high-risk/inoperable; now recommended even for low-risk; preferred >80 years; bioprosthetic
    • Indications: Symptomatic severe AS (Class I); Asymptomatic severe AS with EF <50% (Class I); Very severe AS (Class IIa)
  • No role for balloon valvuloplasty in adults (high restenosis rate) - only as bridge to AVR

4. AORTIC REGURGITATION (AR)

Etiology

  • Valve leaflet disease: Bicuspid aortic valve, infective endocarditis, rheumatic fever, myxomatous degeneration, radiation
  • Aortic root/annular disease: Hypertensive aortic root dilation (most common in elderly), Marfan syndrome, aortic dissection, syphilitic aortitis, ankylosing spondylitis
  • Acute AR: Aortic dissection, infective endocarditis - surgical emergency

Pathophysiology

  • Diastolic backflow Ao → LV - LV volume overload - eccentric LV hypertrophy
  • Wide pulse pressure (high systolic from increased stroke volume, low diastolic from regurgitation)
  • LV can compensate for years with eccentric hypertrophy
  • Eventually, LV contractile dysfunction - irreversible if surgery delayed too long
  • Acute AR: LV not dilated - sudden high diastolic pressure - acute pulmonary edema - emergency

Symptoms

  • Chronic: often asymptomatic for decades; early symptom is awareness of forceful heartbeat/pulsations, exertional dyspnea
  • Exertional dyspnea, orthopnea, PND (LV decompensation)
  • Angina (less common than AS)
  • Acute AR: sudden severe dyspnea, pulmonary edema, shock

Physical Exam - Classic Signs (Wide Pulse Pressure Phenomena)

  • Early diastolic murmur at left sternal border (3rd-4th ICS), best heard with patient sitting forward, in held expiration
  • Austin Flint murmur: mid-diastolic rumble at apex (AR jet causes functional MS of anterior mitral leaflet)
  • Corrigan's pulse (water-hammer pulse) - rapid rise and collapse of carotid pulse
  • De Musset's sign - head bobbing with heartbeat
  • Quincke's sign - visible capillary pulsations in nailbeds
  • Duroziez's sign - femoral systolic/diastolic murmur
  • Hill's sign - popliteal BP >20 mmHg higher than brachial BP
  • Displaced, hyperdynamic apex beat (LV dilation)
  • Soft A2

Management

  • Medical: Vasodilators (ACEi, ARB, amlodipine, nifedipine) if hypertensive or symptoms present; no benefit in normotensive asymptomatic patients
  • Surgery (AVR):
    • Symptomatic severe AR (Class I)
    • Asymptomatic severe AR with EF <50% (Class I)
    • Asymptomatic with severe LV dilation (LVESD >50 mm or LVEDD >65 mm) (Class IIa)
    • Acute severe AR (emergency surgery)

5. TRICUSPID STENOSIS (TS)

Etiology

  • Almost exclusively rheumatic fever (rarely occurs in isolation; almost always associated with MS)
  • More common in women
  • Rare causes: carcinoid syndrome, congenital, right atrial myxoma, lupus

Pathophysiology

  • Diastolic pressure gradient RA > RV
  • Mean gradient of 4 mmHg sufficient to cause systemic venous congestion
  • Elevated RA pressure - systemic venous HTN - hepatomegaly, ascites, peripheral edema
  • Cardiac output is depressed and fails to rise with exercise
  • TS can mask coexisting MS by reducing CO, thereby reducing pulmonary pressures
  • In sinus rhythm: giant "a" wave in JVP; prolonged y descent

Symptoms

  • Relatively little dyspnea for the degree of systemic congestion (because pulmonary circulation is protected by low CO)
  • Fatigue (low CO)
  • Hepatomegaly, abdominal discomfort, ascites
  • Peripheral edema (often massive)
  • Anasarca

Physical Exam

  • Opening snap (after S2, but heard at lower left sternal border vs. apex for MS)
  • Mid-diastolic murmur at lower left sternal border, louder on inspiration (Carvallo's sign - increases with inspiration due to increased venous return to right heart)
  • Elevated JVP with prominent "a" wave, slow "y" descent
  • Hepatomegaly, ascites, peripheral edema

ECG

  • RA enlargement (tall, peaked P waves in II and V1 - P pulmonale)
  • No RV hypertrophy (RV protected by stenosis)

Management

  • Diuretics (reduce systemic congestion)
  • Salt restriction
  • Percutaneous balloon valvuloplasty (less effective than for MS due to valve calcification)
  • Tricuspid valve repair or replacement - usually performed at same time as mitral valve surgery
  • Tricuspid replacement usually uses a bioprosthesis (high thrombosis rate with mechanical valves in tricuspid position due to lower right-sided pressures)

6. TRICUSPID REGURGITATION (TR)

Etiology

  • Secondary (functional) - most common (>85%):
    • RV dilation from any cause (pulmonary HTN, left-sided heart disease, mitral valve disease, cardiomyopathy, RV MI)
    • Atrial functional TR (dilated tricuspid annulus from AF without RV dilation)
    • Cardiac implantable electronic device (CIED) lead-related injury
  • Primary (organic):
    • Rheumatic fever, infective endocarditis (IV drug users), carcinoid syndrome, myxomatous (TVP), radiation, Ebstein's anomaly (displacement of septal leaflet toward apex), trauma

Pathophysiology

  • Systolic backflow RV → RA - RA volume overload - RA dilation and elevated RA pressure
  • Systemic venous congestion (JVD, hepatic congestion, ascites, edema)
  • Hepatic vein systolic flow reversal on Doppler (severe TR)
  • Reduced forward cardiac output
  • Secondary hyperaldosteronism from hepatic congestion

Symptoms

  • Fatigue, weakness (low CO)
  • Right upper quadrant pain (hepatic congestion)
  • Ascites, peripheral edema
  • Pulsatile sensation in neck (systolic hepatic pulsation)
  • Anorexia, nausea (hepatic/GI congestion)

Physical Exam

  • Holosystolic murmur at lower left sternal border, louder on inspiration (Carvallo's sign)
  • Prominent "c-v" wave in JVP with rapid "y" descent (systolic wave = regurgitant flow into RA)
  • Pulsatile enlarged liver
  • Positive hepatojugular reflux
  • Peripheral edema, ascites

ECG

  • RV hypertrophy or RBBB (if primary cause related)
  • RA enlargement (P pulmonale - tall P waves)
  • AF common

Management

  • Treat underlying cause (reduce pulmonary HTN, treat left-sided disease)
  • Diuretics (aldosterone antagonist particularly useful - secondary hyperaldosteronism)
  • Tricuspid valve repair/annuloplasty: recommended for severe TR at time of left-sided valve surgery; also for moderate TR with annular dilation (>40 mm)
  • Tricuspid valve replacement: for non-reparable valves (carcinoid, Ebstein's severe)
  • Transcatheter edge-to-edge repair (TEER): FDA approved (2024) for high surgical risk patients - reduces TR severity and improves QoL; mortality benefit not yet established
  • Isolated tricuspid surgery has high perioperative mortality (~8-9%) due to advanced RV dysfunction

7. PULMONARY STENOSIS (PS)

Etiology

  • Congenital - most common cause (~90%); isolated or part of tetralogy of Fallot
  • Carcinoid syndrome - fibrous plaques on RV side of pulmonary and tricuspid valves
  • Rare: rheumatic, post-radiation

Pathophysiology

  • Obstruction to RV outflow in systole - RV pressure overload - RV hypertrophy (concentric)
  • Severity classified by peak systolic gradient:
    • Mild: < 36 mmHg (peak velocity < 3 m/s)
    • Moderate: 36-64 mmHg
    • Severe: > 64 mmHg (peak velocity > 4 m/s)
  • Right-to-left shunt if patent foramen ovale (PFO) is present with elevated RV pressures - cyanosis

Symptoms

  • Often asymptomatic (mild-moderate cases)
  • Severe: exertional dyspnea, fatigue
  • Advanced: right heart failure (edema, ascites), exertional syncope
  • Cyanosis if associated ASD/PFO with right-to-left shunting

Physical Exam

  • Ejection click (early systolic, decreases with inspiration - unique to pulmonary stenosis among right-sided lesions)
  • Harsh systolic ejection murmur at upper left sternal border (2nd ICS), radiates to left shoulder/clavicle
  • Loud P2 in mild PS; soft/absent P2 in severe PS
  • RV heave (pressure overload)
  • Wide split S2 (delayed pulmonic closure)
  • Rarely: signs of RV failure (elevated JVP, edema)

ECG

  • RV hypertrophy (tall R in V1, deep S in V6)
  • RA enlargement (P pulmonale) in severe disease
  • RBBB pattern

Management

  • Mild PS: No intervention needed; observation
  • Percutaneous balloon pulmonary valvuloplasty (BPVP): treatment of choice for symptomatic or severe congenital PS (gradient > 50 mmHg) - excellent long-term results
  • Surgical valvotomy/valvuloplasty: if balloon not feasible (dysplastic valve in Noonan syndrome)
  • Carcinoid PS: valve replacement (fibrous/rigid valves not amenable to balloon)

8. PULMONARY REGURGITATION (PR)

Etiology

  • Iatrogenic - most common: following repair of tetralogy of Fallot (pulmonary valvotomy/homograft)
  • Secondary/Functional: pulmonary arterial hypertension (annular dilation from dilated pulmonary root) - "Graham Steell murmur" context
  • Primary: infective endocarditis (IV drug users), carcinoid, rheumatic (rare), congenital (absent pulmonary valve)
  • Post-balloon valvuloplasty for PS

Pathophysiology

  • Diastolic backflow PA → RV - RV volume overload - RV dilation and eccentric hypertrophy
  • RV initially tolerates volume overload well
  • Progressive RV dilation leads to:
    • TR (annular dilation)
    • RV systolic dysfunction
    • Right heart failure
    • Reduced exercise capacity
  • Usually well-tolerated for years unless severe and from high PA pressures

Symptoms

  • Often asymptomatic for decades (especially post-ToF repair)
  • Reduced exercise tolerance
  • Progressive RV dilation/dysfunction - right heart failure (edema, ascites)
  • Palpitations (arrhythmias from RV dilation - ventricular tachycardia in post-ToF patients)
  • Sudden cardiac death (in post-ToF patients with severe PR + RV dilation)

Physical Exam

  • Early diastolic murmur at upper left sternal border (2nd-3rd ICS)
  • Graham Steell murmur: high-pitched early diastolic murmur from pulmonary HTN-related PR (similar to AR murmur but at upper left sternal border)
  • RV heave (volume overload)
  • Wide split S2
  • Loud P2 if PA HTN is underlying cause
  • Signs of RV failure in advanced disease

ECG

  • RV volume overload: RBBB (rsR' pattern in V1)
  • RV hypertrophy if pulmonary HTN is cause
  • RA enlargement

Management

  • Mild PR with normal RV: observation only
  • PR with pulmonary HTN: treat underlying cause
  • Pulmonary valve replacement (PVR): Indicated for symptomatic severe PR, or asymptomatic with RV dilation (RVEDV index > 150-160 mL/m²) or declining RV systolic function
    • Particularly important in post-ToF patients: PVR improves exercise capacity and may reduce arrhythmia risk and SCD risk
    • Transcatheter pulmonary valve replacement (TPVR/Melody valve, SAPIEN valve): FDA approved for patients with a suitable conduit or dilated RVOT (becoming first-line in appropriate anatomy)
    • Bioprosthetic valves preferred (no anticoagulation, lower-pressure right side)

Comparative Summary by Key Features

Etiology at a Glance

Valve Lesion#1 CauseOther Key Causes
Mitral StenosisRheumatic feverCongenital, MAC
Mitral RegurgitationMVP/degenerativeIschemic, endocarditis, rheumatic
Aortic StenosisCalcific/degenerativeBicuspid AV, rheumatic
Aortic RegurgitationAnnular dilation (HTN)Bicuspid AV, endocarditis, Marfan's, dissection
Tricuspid StenosisRheumatic feverCarcinoid, congenital
Tricuspid RegurgitationFunctional (RV/annular dilation)Endocarditis, Ebstein's, carcinoid, CIED
Pulmonary StenosisCongenitalCarcinoid
Pulmonary RegurgitationPost-ToF repair (iatrogenic)Pulmonary HTN, endocarditis, carcinoid

Murmur Comparison

LesionTypeLocationRadiationKey Features
MSMid-diastolic rumbleApexNoneLow-pitched, bell; pre-systolic accentuation; opening snap
MRHolosystolicApexAxilla/backSoft S1; S3 gallop; MVP = click + late systolic murmur
ASEjection systolicRUSBCarotidsCrescendo-decrescendo; parvus et tardus; reduced A2; S4
AREarly diastolicLLSBNoneBlowing, decrescendo; Austin Flint murmur; wide pulse pressure
TSMid-diastolicLLSBNoneLouder on inspiration; opening snap
TRHolosystolicLLSBNoneLouder on inspiration (Carvallo's); cv wave in JVP
PSEjection systolicULSBL shoulderEjection click (decreases with inspiration); split S2
PREarly diastolicULSBNoneGraham Steell murmur if from PA HTN; RBBB on ECG
RUSB = right upper sternal border; LLSB = lower left sternal border; ULSB = upper left sternal border

Hemodynamic Consequences

LesionPrimary Chamber AffectedType of OverloadLV/RV ResponsePulse Character
MSLeft atriumPressureLVH absent; LA dilationSmall volume
MRLeft ventricleVolumeEccentric LVH; LA dilationHyperdynamic
ASLeft ventriclePressureConcentric LVHParvus et tardus
ARLeft ventricleVolumeEccentric LVHWide pulse pressure
TSRight atriumPressure (upstream)RVH absent; RA dilationNormal or small
TRRight ventricleVolumeRV + RA dilationNormal
PSRight ventriclePressureConcentric RVHNormal
PRRight ventricleVolumeEccentric RVH + RV dilationNormal or bounding

Key Investigations

LesionEcho Key FindingECGCXR
MSHockey-stick AML; MVA by PHT; Wilkins scoreP mitrale; AFLA enlargement; pulm edema; Kerley B
MRFlail/prolapsing leaflet; PISA; EF + LVESDLVH; AFCardiomegaly; LA + LV enlargement
ASCalcified valve; AVA by continuity eq; gradientLVH with strainCardiomegaly; aortic calcification; post-stenotic dilation
ARRegurgitant jet; LV size/EF; pressure half-timeLVHLV enlargement; aortic root dilation
TSThickened leaflets; diastolic gradient; MVA by PHTRA enlargement (tall P)RA enlargement; no pulm HTN changes
TRRA+RV dilation; tricuspid jet; hepatic vein reversalRVH or RBBB; RA enlargement; AFRA + RV enlargement
PSDomed/thickened valve; peak gradientRVHNormal or RV enlargement
PRRegurgitant jet; RV size/functionRBBBRV enlargement

Treatment Summary

LesionMedicalInterventionalNotes
MSRate control; diuretics; anticoagulation (AF)PMBV (Wilkins ≤8); MVR if anatomy unfavorableRheumatic fever prophylaxis
MRVasodilators; HF therapy (secondary MR)Mitral valve repair > replacement; MitraClip for high-riskEF < 60% or LVESD > 40 mm = surgery
ASSymptom management onlyAVR (SAVR or TAVR); no balloon in adultsAngina/syncope/HF = replace urgently
ARACEi/ARB if hypertensiveAVR; emergency surgery for acute AREF < 50% or LVESD > 50 mm = replace
TSDiuretics; salt restrictionBalloon valvuloplasty; TV repair/replacement at mitral surgeryBioprosthetic valve preferred
TRDiuretics (spironolactone); treat causeAnnuloplasty at left-sided surgery; TEER (high-risk)CIED-related TR may require lead extraction
PSObservation (mild)Balloon valvuloplasty (first-line, congenital); surgical for dysplasticExcellent results with balloon
PRObservation (mild/asymptomatic)PVR (surgical or transcatheter TPVR); Melody/SAPIEN valvePost-ToF repair: timing is critical

Inspiration vs. Expiration Effect on Murmurs (Clinical Pearl)

  • Right-sided murmurs increase with inspiration (Carvallo's sign): TS, TR, PS, PR - all increase with inspiration as venous return to right heart increases
  • Left-sided murmurs generally unaffected by respiration (or may decrease slightly with inspiration)

Pregnancy Considerations

  • MS: Poorly tolerated in pregnancy - increased heart rate in pregnancy reduces diastolic filling time, dramatically raising LA pressure; PMBV can be done during pregnancy
  • AS: High-risk, particularly severe AS
  • MR/AR: Better tolerated (reduced afterload in pregnancy is beneficial)
  • TR/PR: Usually tolerated if right heart function preserved

Sources: Braunwald's Heart Disease, 11e (9780323722193) | Harrison's Principles of Internal Medicine 22e (9781265977061) | Grainger & Allison's Diagnostic Radiology (9780323760751)

Need in pdf

Reading File
Running Command

ls -la /home/daytona/workspace/

Running Command

mkdir -p /home/daytona/workspace/valvular-heart-disease

Writing File

~/valvular-heart-disease/generate_pdf.py

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

OUTPUT = "/home/daytona/workspace/valvular-heart-disease/Valvular_Heart_Disease_Comparison.pdf"

doc = SimpleDocTemplate(
    OUTPUT,
    pagesize=A4,
    rightMargin=2*cm, leftMargin=2*cm,
    topMargin=2.2*cm, bottomMargin=2.2*cm,
    title="Valvular Heart Disease – Complete Comparison",
    author="Orris Medical Reference"
)

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

# ── Colour palette ───────────────────────────────────────────────────────────
C_DARK   = colors.HexColor("#1a2a4a")   # navy
C_MID    = colors.HexColor("#2c5f8a")   # medium blue
C_LIGHT  = colors.HexColor("#d6e4f0")   # pale blue
C_ACCENT = colors.HexColor("#e8f4fd")   # very light blue
C_RED    = colors.HexColor("#c0392b")   # section accent
C_ORANGE = colors.HexColor("#e67e22")
C_GREEN  = colors.HexColor("#27ae60")
C_GREY   = colors.HexColor("#ecf0f1")
C_WHITE  = colors.white
C_BLACK  = colors.HexColor("#1c1c1c")

styles = getSampleStyleSheet()

# Custom styles
def make_style(name, parent="Normal", **kw):
    s = ParagraphStyle(name, parent=styles[parent], **kw)
    return s

title_style = make_style("DocTitle",
    fontSize=22, textColor=C_WHITE, alignment=TA_CENTER,
    fontName="Helvetica-Bold", spaceAfter=6, leading=28)

subtitle_style = make_style("DocSubtitle",
    fontSize=12, textColor=C_LIGHT, alignment=TA_CENTER,
    fontName="Helvetica", spaceAfter=4)

h1_style = make_style("H1",
    fontSize=15, textColor=C_WHITE, fontName="Helvetica-Bold",
    alignment=TA_LEFT, spaceAfter=4, spaceBefore=2, leading=20)

h2_style = make_style("H2",
    fontSize=12, textColor=C_DARK, fontName="Helvetica-Bold",
    spaceBefore=10, spaceAfter=4, leading=16)

h3_style = make_style("H3",
    fontSize=10.5, textColor=C_MID, fontName="Helvetica-Bold",
    spaceBefore=6, spaceAfter=3, leading=14)

body_style = make_style("Body",
    fontSize=9, textColor=C_BLACK, fontName="Helvetica",
    leading=13, spaceAfter=4, alignment=TA_JUSTIFY)

bullet_style = make_style("Bullet",
    fontSize=9, textColor=C_BLACK, fontName="Helvetica",
    leading=13, spaceAfter=2, leftIndent=14, bulletIndent=4)

label_style = make_style("Label",
    fontSize=8.5, textColor=C_MID, fontName="Helvetica-Bold",
    leading=12, spaceAfter=1)

small_style = make_style("Small",
    fontSize=7.5, textColor=colors.HexColor("#555555"),
    fontName="Helvetica", leading=11, alignment=TA_CENTER)

tbl_header_style = make_style("TblH",
    fontSize=8, textColor=C_WHITE, fontName="Helvetica-Bold",
    alignment=TA_CENTER, leading=11)

tbl_body_style = make_style("TblB",
    fontSize=7.5, textColor=C_BLACK, fontName="Helvetica",
    alignment=TA_LEFT, leading=11)

tbl_body_center = make_style("TblBC",
    fontSize=7.5, textColor=C_BLACK, fontName="Helvetica",
    alignment=TA_CENTER, leading=11)

# ── Helper builders ──────────────────────────────────────────────────────────

def title_banner(text, sub=""):
    """Full-width coloured banner for section heading."""
    banner_data = [[Paragraph(text, h1_style)]]
    t = Table(banner_data, colWidths=[W])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), C_DARK),
        ("TOPPADDING", (0,0), (-1,-1), 8),
        ("BOTTOMPADDING", (0,0), (-1,-1), 8),
        ("LEFTPADDING", (0,0), (-1,-1), 10),
        ("RIGHTPADDING", (0,0), (-1,-1), 10),
        ("ROUNDEDCORNERS", [4,4,4,4]),
    ]))
    items = [t]
    if sub:
        items.append(Paragraph(sub, make_style("sub2", fontSize=8.5,
            textColor=colors.HexColor("#666666"), fontName="Helvetica-Oblique",
            spaceAfter=4, spaceBefore=2)))
    return items

def bullet(text, indent=0):
    extra = " " * (indent * 4)
    return Paragraph(f"<bullet>&bull;</bullet> {extra}{text}", bullet_style)

def kv(key, value):
    return Paragraph(f"<b><font color='#2c5f8a'>{key}:</font></b> {value}", body_style)

def section_box(title, rows_data, col_widths, header_colors=None):
    """
    rows_data: list of lists of Paragraph or str
    Returns a styled Table.
    """
    header = rows_data[0]
    body   = rows_data[1:]
    hc = header_colors or [C_MID] * len(header)
    ts = TableStyle([
        ("BACKGROUND", (0,0), (-1,0), C_MID),
        ("TEXTCOLOR",  (0,0), (-1,0), C_WHITE),
        ("FONTNAME",   (0,0), (-1,0), "Helvetica-Bold"),
        ("FONTSIZE",   (0,0), (-1,0), 8),
        ("ALIGN",      (0,0), (-1,0), "CENTER"),
        ("VALIGN",     (0,0), (-1,-1), "TOP"),
        ("FONTNAME",   (0,1), (-1,-1), "Helvetica"),
        ("FONTSIZE",   (0,1), (-1,-1), 7.5),
        ("ROWBACKGROUNDS", (0,1), (-1,-1), [C_ACCENT, C_WHITE]),
        ("GRID",       (0,0), (-1,-1), 0.4, colors.HexColor("#b0c4d8")),
        ("TOPPADDING", (0,0), (-1,-1), 4),
        ("BOTTOMPADDING", (0,0), (-1,-1), 4),
        ("LEFTPADDING", (0,0), (-1,-1), 5),
        ("RIGHTPADDING", (0,0), (-1,-1), 5),
    ])
    t = Table(rows_data, colWidths=col_widths, repeatRows=1)
    t.setStyle(ts)
    return t

def p(text, style=None):
    return Paragraph(text, style or body_style)

def sp(h=6):
    return Spacer(1, h)

def hr():
    return HRFlowable(width="100%", thickness=0.5, color=C_LIGHT, spaceAfter=4, spaceBefore=4)

# ─────────────────────────────────────────────────────────────────────────────
# BUILD CONTENT
# ─────────────────────────────────────────────────────────────────────────────
story = []

# ══ COVER PAGE ═══════════════════════════════════════════════════════════════
cover_data = [[
    Paragraph("Valvular Heart Disease", title_style),
    Paragraph("Complete Clinical Comparison", subtitle_style),
    Paragraph("Mitral · Tricuspid · Aortic · Pulmonary", subtitle_style),
    Spacer(1, 6),
    Paragraph("Stenosis &amp; Regurgitation — All 8 Lesions", make_style("cs3",
        fontSize=10, textColor=C_LIGHT, alignment=TA_CENTER,
        fontName="Helvetica-Oblique")),
    Spacer(1, 10),
    Paragraph("Sources: Braunwald's Heart Disease 11e · Harrison's Principles of Internal Medicine 22e · Grainger &amp; Allison's Diagnostic Radiology",
        make_style("src", fontSize=8, textColor=colors.HexColor("#aac8e0"),
            alignment=TA_CENTER, fontName="Helvetica")),
]]
cover_tbl = Table(cover_data, colWidths=[W])
cover_tbl.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,-1), C_DARK),
    ("TOPPADDING", (0,0), (-1,-1), 30),
    ("BOTTOMPADDING", (0,0), (-1,-1), 30),
    ("LEFTPADDING", (0,0), (-1,-1), 20),
    ("RIGHTPADDING", (0,0), (-1,-1), 20),
]))
story.append(cover_tbl)
story.append(sp(12))

# Quick intro
story.append(p(
    "There are four cardiac valves — mitral, tricuspid, aortic, and pulmonary — each capable "
    "of two major pathological states: <b>stenosis</b> (failure to open, obstructing forward flow) "
    "and <b>regurgitation</b> (failure to close, allowing backward flow). This document provides a "
    "complete side-by-side clinical reference for all eight valvular lesions, covering etiology, "
    "pathophysiology, symptoms, physical signs, investigations, and management."
))
story.append(sp(4))
story.append(hr())
story.append(sp(4))

# ══ SECTION 1 — MITRAL STENOSIS ══════════════════════════════════════════════
story += title_banner("1.  MITRAL STENOSIS (MS)")
story.append(sp(6))

story.append(p("<b>Etiology</b>", h3_style))
story.append(bullet("<b>Rheumatic fever</b> — dominant cause worldwide; commissural fusion, leaflet thickening, chordal shortening"))
story.append(bullet("Rare: congenital, radiation, severe mitral annular calcification (MAC), carcinoid"))
story.append(sp(4))

story.append(p("<b>Pathophysiology</b>", h3_style))
story.append(bullet("Obstruction of LV diastolic filling → LA pressure ↑ → pulmonary venous HTN → pulmonary arterial HTN"))
story.append(bullet("Normal MVA: 4–6 cm²; symptomatic < 2 cm²; severe < 1.5 cm²; critical < 1.0 cm²"))
story.append(bullet("Reduced LV preload → reduced cardiac output"))
story.append(bullet("Chronically elevated LA pressure → AF (30–40% of patients)"))
story.append(sp(4))

story.append(p("<b>Symptoms</b>", h3_style))
for s in ["Dyspnea on exertion (earliest) → orthopnea, PND",
          "Fatigue (low CO)",
          "Hemoptysis (pulmonary venous HTN)",
          "Palpitations (AF — common)",
          "Systemic emboli (LA thrombus, especially in AF)",
          "Hoarseness — Ortner's syndrome (enlarged LA compressing recurrent laryngeal nerve)"]:
    story.append(bullet(s))
story.append(sp(4))

story.append(p("<b>Physical Examination</b>", h3_style))
for s in ["<b>Loud S1</b> (delayed mitral valve closure)",
          "<b>Opening snap (OS)</b> after S2 — higher pressure gradient = shorter S2–OS interval",
          "<b>Low-pitched, rumbling mid-diastolic murmur</b> at apex (best heard: left lateral decubitus with bell)",
          "<b>Pre-systolic accentuation</b> (if in sinus rhythm)",
          "Malar flush (mitral facies) — peripheral vasoconstriction + pulmonary HTN",
          "Signs of pulmonary HTN: loud P2, RV heave, TR murmur"]:
    story.append(bullet(s))
story.append(sp(4))

story.append(p("<b>Investigations</b>", h3_style))
story.append(kv("ECG", "P mitrale (bifid P in II, biphasic in V1); AF; RVH in advanced disease"))
story.append(kv("CXR", "LA enlargement (double density, splayed carina); pulmonary venous congestion; Kerley B lines"))
story.append(kv("Echo", "Hockey-stick deformity of AML; MVA by pressure half-time (220/PHT); Wilkins score; mean gradient"))
story.append(sp(4))

story.append(p("<b>Management</b>", h3_style))
story.append(bullet("<b>Medical:</b> rate control (β-blockers, digoxin), diuretics, anticoagulation (AF), rheumatic fever prophylaxis"))
story.append(bullet("<b>PMBV (Percutaneous Mitral Balloon Valvuloplasty):</b> preferred for symptomatic MS, MVA < 1.5 cm², Wilkins score ≤ 8"))
story.append(bullet("<b>Surgery (commissurotomy or MVR):</b> unfavorable anatomy, significant MR, or failed PMBV"))
story.append(sp(8))

# ══ SECTION 2 — MITRAL REGURGITATION ════════════════════════════════════════
story += title_banner("2.  MITRAL REGURGITATION (MR)")
story.append(sp(6))

story.append(p("<b>Etiology</b>", h3_style))
story.append(bullet("<b>Primary (organic):</b> MVP (most common in developed world), rheumatic fever, infective endocarditis, connective tissue disease (Marfan's), chordal rupture, radiation, congenital"))
story.append(bullet("<b>Secondary (functional):</b> Ischemic papillary muscle dysfunction, dilated cardiomyopathy (annular dilation), AF (atrial functional MR)"))
story.append(sp(4))

story.append(p("<b>Pathophysiology</b>", h3_style))
story.append(bullet("Systolic backflow LV → LA → LA volume overload → LA dilation (chronic) or acute pulmonary edema (acute)"))
story.append(bullet("LV receives pulmonary venous return + regurgitant volume → eccentric LVH"))
story.append(bullet("EF initially supra-normal (misleading) — falls as LV contractile dysfunction develops"))
story.append(bullet("Acute MR (chordal rupture, endocarditis, papillary muscle rupture in MI): surgical emergency"))
story.append(sp(4))

story.append(p("<b>Symptoms</b>", h3_style))
for s in ["Chronic: often asymptomatic for years; then exertional dyspnea, fatigue",
          "Acute: sudden severe pulmonary edema — medical/surgical emergency"]:
    story.append(bullet(s))
story.append(sp(4))

story.append(p("<b>Physical Examination</b>", h3_style))
for s in ["<b>Holosystolic murmur</b> at apex, radiating to axilla/back",
          "Soft or absent S1",
          "<b>S3 gallop</b> (volume overload)",
          "Displaced, hyperdynamic apex beat",
          "<b>MVP:</b> mid-systolic click + late systolic murmur (Barlow's syndrome)"]:
    story.append(bullet(s))
story.append(sp(4))

story.append(p("<b>Investigations</b>", h3_style))
story.append(kv("ECG", "LA enlargement; LVH; AF"))
story.append(kv("CXR", "Cardiomegaly; LA + LV enlargement"))
story.append(kv("Echo", "Carpentier classification; PISA method; EF + LVESD (surgery thresholds: EF <60% or LVESD >40 mm)"))
story.append(sp(4))

story.append(p("<b>Management</b>", h3_style))
story.append(bullet("<b>Medical:</b> vasodilators (ACEi, nifedipine); HF therapy for secondary MR"))
story.append(bullet("<b>Surgery:</b> mitral valve <i>repair preferred over replacement</i> (lower mortality, no anticoagulation); indications: symptomatic severe MR, or asymptomatic with EF <60%, LVESD >40 mm, new AF, or PA systolic >50 mmHg"))
story.append(bullet("<b>MitraClip (TEER):</b> transcatheter edge-to-edge repair; FDA-approved for primary and secondary MR at high surgical risk (EVEREST II trial)"))
story.append(sp(8))

story.append(PageBreak())

# ══ SECTION 3 — AORTIC STENOSIS ═════════════════════════════════════════════
story += title_banner("3.  AORTIC STENOSIS (AS)")
story.append(sp(6))

story.append(p("<b>Etiology</b>", h3_style))
for s in ["<b>Calcific/degenerative:</b> most common in adults >65 years; progressive calcification of normal tricuspid valve (presents 70–80s) or bicuspid AV (presents 50–60s; 1–2% of population)",
          "<b>Bicuspid aortic valve</b> — most common congenital heart defect in adults",
          "<b>Rheumatic:</b> now rare in developed countries",
          "Congenital: unicuspid, hypoplastic annulus (presents in infancy/childhood)"]:
    story.append(bullet(s))
story.append(sp(4))

story.append(p("<b>Pathophysiology</b>", h3_style))
story.append(bullet("Obstruction to LV outflow → LV pressure overload → concentric LVH (compensatory)"))
story.append(bullet("CO preserved for years while LV hypertrophies; eventually fails when symptoms appear"))
story.append(bullet("<b>Classic symptom triad + prognosis:</b>"))
story.append(bullet("Angina → mean survival 5 years", indent=1))
story.append(bullet("Syncope → mean survival 3 years", indent=1))
story.append(bullet("Heart failure (dyspnea) → mean survival 1–2 years", indent=1))
story.append(sp(4))

# Severity table
sev_data = [
    [p("Grade", tbl_header_style), p("Peak Velocity", tbl_header_style),
     p("Mean Gradient", tbl_header_style), p("AVA", tbl_header_style)],
    [p("Mild", tbl_body_center), p("< 3 m/s", tbl_body_center), p("< 20 mmHg", tbl_body_center), p("> 1.5 cm²", tbl_body_center)],
    [p("Moderate", tbl_body_center), p("3–4 m/s", tbl_body_center), p("20–40 mmHg", tbl_body_center), p("1.0–1.5 cm²", tbl_body_center)],
    [p("Severe", tbl_body_center), p("> 4 m/s", tbl_body_center), p("> 40 mmHg", tbl_body_center), p("< 1.0 cm²", tbl_body_center)],
    [p("Very Severe", tbl_body_center), p("> 5 m/s", tbl_body_center), p("> 60 mmHg", tbl_body_center), p("< 0.6 cm²", tbl_body_center)],
]
cw = [W*0.22, W*0.24, W*0.27, W*0.27]
story.append(p("<b>Severity Classification (Doppler Echo)</b>", h3_style))
story.append(section_box("AS Severity", sev_data, cw))
story.append(sp(4))

story.append(p("<b>Physical Examination</b>", h3_style))
for s in ["<b>Harsh, crescendo-decrescendo ejection systolic murmur</b> at right 2nd ICS, radiating to carotids",
          "<b>Parvus et tardus</b> pulse (slow-rising, low-amplitude carotid) — unreliable in elderly with stiff arteries",
          "Sustained, forceful undisplaced apex beat (pressure overload)",
          "<b>Diminished or absent A2</b> (calcification)",
          "<b>S4 gallop</b> (stiff, hypertrophied LV)"]:
    story.append(bullet(s))
story.append(sp(4))

story.append(p("<b>Investigations</b>", h3_style))
story.append(kv("ECG", "LVH with strain (ST depression, T-wave inversion in I, aVL, V4–V6); LBBB in advanced disease"))
story.append(kv("CXR", "Rounded cardiac apex (LVH); aortic calcification; post-stenotic ascending aortic dilation"))
story.append(kv("Echo", "Calcified, restricted leaflets; LV wall thickness; Doppler gradients; AVA by continuity equation; low-flow low-gradient: dobutamine stress echo"))
story.append(sp(4))

story.append(p("<b>Management</b>", h3_style))
story.append(bullet("<b>Medical:</b> no medication slows progression; manage comorbidities (hypertension, HF)"))
story.append(bullet("<b>AVR — only definitive treatment:</b>"))
story.append(bullet("SAVR (surgical): standard for low/intermediate risk, younger patients (<65); mechanical valve for <60 years", indent=1))
story.append(bullet("TAVR (transcatheter): now recommended across all risk categories; preferred >80 years; bioprosthetic", indent=1))
story.append(bullet("Indications: symptomatic severe AS (Class I); asymptomatic severe AS + EF <50% (Class I); very severe AS (Class IIa)", indent=1))
story.append(bullet("<b>No role for balloon valvuloplasty in adults</b> (high restenosis) — only as bridge to AVR"))
story.append(sp(8))

# ══ SECTION 4 — AORTIC REGURGITATION ════════════════════════════════════════
story += title_banner("4.  AORTIC REGURGITATION (AR)")
story.append(sp(6))

story.append(p("<b>Etiology</b>", h3_style))
story.append(bullet("<b>Valve leaflet disease:</b> bicuspid AV, infective endocarditis, rheumatic fever, myxomatous degeneration, radiation"))
story.append(bullet("<b>Aortic root/annular disease:</b> hypertensive aortic root dilation (most common in elderly), Marfan syndrome, aortic dissection (acute AR), syphilitic aortitis, ankylosing spondylitis"))
story.append(bullet("<b>Acute AR:</b> aortic dissection, infective endocarditis — surgical emergency"))
story.append(sp(4))

story.append(p("<b>Pathophysiology</b>", h3_style))
story.append(bullet("Diastolic backflow Ao → LV → LV volume overload → eccentric LVH"))
story.append(bullet("Wide pulse pressure: ↑ systolic (increased stroke volume) + ↓ diastolic (regurgitation)"))
story.append(bullet("LV compensates for years; eventually irreversible contractile dysfunction if surgery is delayed"))
story.append(bullet("<b>Acute AR:</b> LV not dilated → sudden high diastolic pressure → acute pulmonary edema + shock"))
story.append(sp(4))

story.append(p("<b>Classic Eponymous Signs (Wide Pulse Pressure)</b>", h3_style))
signs_data = [
    [p("Sign", tbl_header_style), p("Description", tbl_header_style)],
    [p("Corrigan's pulse", tbl_body_style), p("Water-hammer pulse — rapid rise and collapse of carotid", tbl_body_style)],
    [p("De Musset's sign", tbl_body_style), p("Head bobbing with each heartbeat", tbl_body_style)],
    [p("Quincke's sign", tbl_body_style), p("Visible capillary pulsations in nailbeds", tbl_body_style)],
    [p("Duroziez's sign", tbl_body_style), p("Femoral systolic + diastolic murmur with compression", tbl_body_style)],
    [p("Hill's sign", tbl_body_style), p("Popliteal BP > 20 mmHg higher than brachial BP", tbl_body_style)],
    [p("Austin Flint murmur", tbl_body_style), p("Mid-diastolic rumble at apex (AR jet causes functional MS of anterior mitral leaflet)", tbl_body_style)],
]
story.append(section_box("AR Signs", signs_data, [W*0.3, W*0.7]))
story.append(sp(4))

story.append(p("<b>Murmur</b>", h3_style))
story.append(bullet("<b>Early diastolic decrescendo murmur</b> at left sternal border (3rd–4th ICS); best heard sitting forward, held expiration"))
story.append(sp(4))

story.append(p("<b>Investigations</b>", h3_style))
story.append(kv("ECG", "LVH; ST changes"))
story.append(kv("CXR", "LV enlargement; aortic root dilation"))
story.append(kv("Echo", "Regurgitant jet; LV size and EF; aortic root dimensions; pressure half-time"))
story.append(sp(4))

story.append(p("<b>Management</b>", h3_style))
story.append(bullet("<b>Medical:</b> ACEi/ARB if hypertensive; vasodilators (amlodipine, nifedipine) for symptomatic chronic AR; no benefit in normotensive asymptomatic patients"))
story.append(bullet("<b>AVR (surgery):</b> symptomatic severe AR (Class I); asymptomatic with EF <50% (Class I); LVESD >50 mm or LVEDD >65 mm (Class IIa)"))
story.append(bullet("<b>Acute severe AR:</b> emergency surgical AVR"))
story.append(sp(8))

story.append(PageBreak())

# ══ SECTION 5 — TRICUSPID STENOSIS ══════════════════════════════════════════
story += title_banner("5.  TRICUSPID STENOSIS (TS)")
story.append(sp(6))

story.append(p("<b>Etiology</b>", h3_style))
story.append(bullet("<b>Rheumatic fever</b> — almost exclusively; rarely occurs in isolation; almost always associated with MS"))
story.append(bullet("More common in women; hemodynamically significant TS in 5–10% of patients with severe MS"))
story.append(bullet("Rare: carcinoid syndrome, congenital, right atrial myxoma, lupus"))
story.append(sp(4))

story.append(p("<b>Pathophysiology</b>", h3_style))
story.append(bullet("Diastolic pressure gradient RA > RV"))
story.append(bullet("Mean gradient of <b>4 mmHg</b> sufficient to cause systemic venous congestion"))
story.append(bullet("Elevated RA pressure → hepatomegaly, ascites, peripheral edema (systemic venous HTN)"))
story.append(bullet("CO depressed at rest, fails to rise with exercise"))
story.append(bullet("<b>TS can mask coexisting MS</b> — low CO reduces pulmonary pressures, masking hemodynamic features of MS"))
story.append(bullet("Giant 'a' wave in JVP (sinus rhythm); prolonged y descent"))
story.append(sp(4))

story.append(p("<b>Symptoms</b>", h3_style))
story.append(bullet("Relatively <b>little dyspnea</b> for degree of systemic congestion (pulmonary circulation protected by low CO)"))
story.append(bullet("Fatigue (low CO)"))
story.append(bullet("Hepatomegaly, abdominal discomfort, ascites"))
story.append(bullet("Severe peripheral edema, anasarca"))
story.append(sp(4))

story.append(p("<b>Physical Examination</b>", h3_style))
story.append(bullet("<b>Opening snap</b> at lower left sternal border (vs. apex for MS)"))
story.append(bullet("<b>Mid-diastolic murmur</b> at lower left sternal border — <b>louder on inspiration (Carvallo's sign)</b>"))
story.append(bullet("Elevated JVP with prominent 'a' wave, slow 'y' descent"))
story.append(bullet("Hepatomegaly, ascites, peripheral edema"))
story.append(sp(4))

story.append(p("<b>Investigations</b>", h3_style))
story.append(kv("ECG", "RA enlargement (tall peaked P waves in II and V1 — P pulmonale); no RVH (RV protected)"))
story.append(kv("CXR", "RA enlargement; no pulmonary HTN changes"))
story.append(kv("Echo", "Thickened leaflets with limited motion; diastolic gradient; no significant pulmonary HTN"))
story.append(sp(4))

story.append(p("<b>Management</b>", h3_style))
story.append(bullet("Diuretics (reduce systemic congestion); salt restriction"))
story.append(bullet("<b>Percutaneous balloon valvuloplasty</b> — less effective than for MS (valve calcification)"))
story.append(bullet("<b>TV repair or replacement</b> — usually performed simultaneously with mitral valve surgery"))
story.append(bullet("Bioprosthetic valve preferred in tricuspid position (mechanical valves have high thrombosis rate due to lower right-sided pressures)"))
story.append(sp(8))

# ══ SECTION 6 — TRICUSPID REGURGITATION ═════════════════════════════════════
story += title_banner("6.  TRICUSPID REGURGITATION (TR)")
story.append(sp(6))

story.append(p("<b>Etiology</b>", h3_style))
story.append(bullet("<b>Secondary (functional) — >85% of cases:</b>"))
story.append(bullet("RV dilation from pulmonary HTN, left-sided disease, cardiomyopathy, RV MI", indent=1))
story.append(bullet("Atrial functional TR (dilated annulus from AF, without RV dilation)", indent=1))
story.append(bullet("CIED (pacemaker/ICD) lead-related injury", indent=1))
story.append(bullet("<b>Primary (organic):</b> rheumatic fever, infective endocarditis (IV drug users), carcinoid syndrome, myxomatous (TVP), Ebstein's anomaly, radiation, trauma"))
story.append(sp(4))

story.append(p("<b>Pathophysiology</b>", h3_style))
story.append(bullet("Systolic backflow RV → RA → RA volume overload → RA dilation + elevated RA pressure"))
story.append(bullet("Systemic venous congestion: JVD, hepatic congestion, ascites, edema"))
story.append(bullet("Hepatic vein systolic flow reversal on Doppler (severe TR)"))
story.append(bullet("Secondary hyperaldosteronism from hepatic congestion"))
story.append(sp(4))

story.append(p("<b>Physical Examination</b>", h3_style))
story.append(bullet("<b>Holosystolic murmur</b> at lower left sternal border — <b>louder on inspiration (Carvallo's sign)</b>"))
story.append(bullet("<b>Prominent c-v wave</b> in JVP with rapid y descent (systolic regurgitant wave)"))
story.append(bullet("Pulsatile enlarged liver"))
story.append(bullet("Positive hepatojugular reflux"))
story.append(bullet("Peripheral edema, ascites"))
story.append(sp(4))

story.append(p("<b>Investigations</b>", h3_style))
story.append(kv("ECG", "RVH or RBBB; RA enlargement (P pulmonale); AF common"))
story.append(kv("CXR", "RA + RV enlargement"))
story.append(kv("Echo", "RA + RV dilation; TR jet by color Doppler; hepatic vein systolic reversal; estimate PA systolic pressure via TR velocity (modified Bernoulli)"))
story.append(sp(4))

story.append(p("<b>Management</b>", h3_style))
story.append(bullet("<b>Medical:</b> treat underlying cause (reduce pulmonary HTN, treat left-sided disease); diuretics; aldosterone antagonist (secondary hyperaldosteronism)"))
story.append(bullet("<b>TV repair/annuloplasty:</b> recommended for severe TR at time of left-sided valve surgery; also for moderate TR with annular dilation >40 mm"))
story.append(bullet("<b>TV replacement:</b> for non-reparable valves (carcinoid, severe Ebstein's)"))
story.append(bullet("<b>Transcatheter TEER:</b> FDA-approved (2024) for high surgical risk — reduces TR severity and improves QoL; mortality benefit not yet established"))
story.append(bullet("Isolated tricuspid surgery has high perioperative mortality (~8–9%) due to advanced RV dysfunction"))
story.append(sp(8))

story.append(PageBreak())

# ══ SECTION 7 — PULMONARY STENOSIS ══════════════════════════════════════════
story += title_banner("7.  PULMONARY STENOSIS (PS)")
story.append(sp(6))

story.append(p("<b>Etiology</b>", h3_style))
story.append(bullet("<b>Congenital — most common (~90%):</b> isolated, or part of tetralogy of Fallot, Noonan syndrome (dysplastic valve)"))
story.append(bullet("<b>Carcinoid syndrome:</b> fibrous plaques on RV side of pulmonary and tricuspid valves"))
story.append(bullet("Rare: rheumatic, post-radiation"))
story.append(sp(4))

story.append(p("<b>Pathophysiology</b>", h3_style))
story.append(bullet("Obstruction to RV outflow → RV pressure overload → concentric RVH"))
ps_sev_data = [
    [p("Grade", tbl_header_style), p("Peak Gradient", tbl_header_style), p("Peak Velocity", tbl_header_style)],
    [p("Mild", tbl_body_center), p("< 36 mmHg", tbl_body_center), p("< 3 m/s", tbl_body_center)],
    [p("Moderate", tbl_body_center), p("36–64 mmHg", tbl_body_center), p("3–4 m/s", tbl_body_center)],
    [p("Severe", tbl_body_center), p("> 64 mmHg", tbl_body_center), p("> 4 m/s", tbl_body_center)],
]
story.append(section_box("PS Severity", ps_sev_data, [W*0.33, W*0.34, W*0.33]))
story.append(sp(4))
story.append(bullet("Right-to-left shunt if patent foramen ovale (PFO) present with elevated RV pressures → cyanosis"))
story.append(sp(4))

story.append(p("<b>Symptoms</b>", h3_style))
story.append(bullet("Often <b>asymptomatic</b> (mild–moderate)"))
story.append(bullet("Severe: exertional dyspnea, fatigue; right heart failure; exertional syncope"))
story.append(bullet("Cyanosis if associated ASD/PFO with right-to-left shunting"))
story.append(sp(4))

story.append(p("<b>Physical Examination</b>", h3_style))
story.append(bullet("<b>Ejection click</b> (early systolic) — <b>uniquely decreases with inspiration</b> (unlike all other right-sided sounds)"))
story.append(bullet("<b>Harsh ejection systolic murmur</b> at upper left sternal border (2nd ICS), radiating to left shoulder/clavicle"))
story.append(bullet("Loud P2 in mild PS; <b>soft or absent P2</b> in severe PS"))
story.append(bullet("<b>RV heave</b> (pressure overload)"))
story.append(bullet("Wide split S2 (delayed pulmonic closure)"))
story.append(sp(4))

story.append(p("<b>Investigations</b>", h3_style))
story.append(kv("ECG", "RVH (tall R in V1, deep S in V6); RA enlargement (P pulmonale); RBBB"))
story.append(kv("CXR", "Normal or RV enlargement; post-stenotic pulmonary artery dilation"))
story.append(kv("Echo", "Domed/thickened valve; peak gradient by Doppler; RV wall thickness"))
story.append(sp(4))

story.append(p("<b>Management</b>", h3_style))
story.append(bullet("Mild PS: observation only"))
story.append(bullet("<b>Percutaneous balloon pulmonary valvuloplasty (BPVP):</b> treatment of choice for symptomatic or severe congenital PS (gradient >50 mmHg) — excellent long-term results"))
story.append(bullet("<b>Surgical valvotomy:</b> if balloon not feasible (dysplastic valve in Noonan syndrome)"))
story.append(bullet("Carcinoid PS: valve replacement (fibrous/rigid valves not amenable to balloon)"))
story.append(sp(8))

# ══ SECTION 8 — PULMONARY REGURGITATION ═════════════════════════════════════
story += title_banner("8.  PULMONARY REGURGITATION (PR)")
story.append(sp(6))

story.append(p("<b>Etiology</b>", h3_style))
story.append(bullet("<b>Iatrogenic — most common:</b> following repair of tetralogy of Fallot (pulmonary valvotomy/homograft)"))
story.append(bullet("<b>Secondary/functional:</b> pulmonary arterial hypertension → annular dilation ('Graham Steell murmur' context)"))
story.append(bullet("Post-balloon valvuloplasty for PS"))
story.append(bullet("Primary: infective endocarditis (IVDU), carcinoid, rheumatic (rare), congenital (absent pulmonary valve)"))
story.append(sp(4))

story.append(p("<b>Pathophysiology</b>", h3_style))
story.append(bullet("Diastolic backflow PA → RV → RV volume overload → RV dilation + eccentric RVH"))
story.append(bullet("RV initially tolerates volume overload well; progressive dilation → TR (annular dilation) → RV systolic dysfunction → right heart failure"))
story.append(bullet("Post-ToF repair: severe PR + RV dilation → arrhythmias, reduced exercise capacity, sudden cardiac death"))
story.append(sp(4))

story.append(p("<b>Symptoms</b>", h3_style))
story.append(bullet("Often asymptomatic for decades"))
story.append(bullet("Reduced exercise tolerance"))
story.append(bullet("Progressive right heart failure (edema, ascites)"))
story.append(bullet("Palpitations/arrhythmias (RV dilation — ventricular tachycardia in post-ToF patients)"))
story.append(bullet("Sudden cardiac death (post-ToF with severe PR + RV dilation)"))
story.append(sp(4))

story.append(p("<b>Physical Examination</b>", h3_style))
story.append(bullet("<b>Early diastolic murmur</b> at upper left sternal border (2nd–3rd ICS)"))
story.append(bullet("<b>Graham Steell murmur:</b> high-pitched early diastolic murmur from pulmonary HTN-related PR (resembles AR but at upper left sternal border)"))
story.append(bullet("RV heave (volume overload)"))
story.append(bullet("Wide split S2; loud P2 if pulmonary HTN is cause"))
story.append(bullet("Signs of RV failure in advanced disease"))
story.append(sp(4))

story.append(p("<b>Investigations</b>", h3_style))
story.append(kv("ECG", "RBBB (rsR' in V1) — RV volume overload; RVH if PA HTN; RA enlargement"))
story.append(kv("CXR", "RV enlargement; dilated pulmonary trunk"))
story.append(kv("Echo/CMR", "RV volume overload; PR regurgitant fraction; RV size and systolic function"))
story.append(sp(4))

story.append(p("<b>Management</b>", h3_style))
story.append(bullet("Mild PR + normal RV: observation only"))
story.append(bullet("PR with pulmonary HTN: treat underlying cause"))
story.append(bullet("<b>Pulmonary valve replacement (PVR):</b> symptomatic severe PR, or asymptomatic with RVEDV index >150–160 mL/m² or declining RV function"))
story.append(bullet("<b>Transcatheter PVR (Melody valve, SAPIEN valve):</b> FDA-approved for suitable conduit/dilated RVOT — becoming first-line in appropriate anatomy"))
story.append(bullet("Bioprosthetic valves preferred in pulmonary position"))
story.append(sp(8))

story.append(PageBreak())

# ══ COMPARATIVE TABLES ═══════════════════════════════════════════════════════
story.append(p("COMPARATIVE SUMMARY TABLES", make_style("CompTitle",
    fontSize=16, textColor=C_DARK, fontName="Helvetica-Bold",
    alignment=TA_CENTER, spaceAfter=4, spaceBefore=6)))
story.append(hr())
story.append(sp(6))

# TABLE A: Etiology Summary
story.append(p("<b>Table A — Etiology at a Glance</b>", h2_style))
etio_data = [
    [p("Valve Lesion", tbl_header_style), p("Primary Cause", tbl_header_style), p("Other Key Causes", tbl_header_style)],
    [p("Mitral Stenosis", tbl_body_style), p("Rheumatic fever", tbl_body_style), p("Congenital, MAC", tbl_body_style)],
    [p("Mitral Regurgitation", tbl_body_style), p("MVP/degenerative", tbl_body_style), p("Ischemic, endocarditis, rheumatic", tbl_body_style)],
    [p("Aortic Stenosis", tbl_body_style), p("Calcific/degenerative", tbl_body_style), p("Bicuspid AV, rheumatic", tbl_body_style)],
    [p("Aortic Regurgitation", tbl_body_style), p("Annular dilation (HTN)", tbl_body_style), p("Bicuspid AV, endocarditis, Marfan's, dissection", tbl_body_style)],
    [p("Tricuspid Stenosis", tbl_body_style), p("Rheumatic fever", tbl_body_style), p("Carcinoid, congenital", tbl_body_style)],
    [p("Tricuspid Regurgitation", tbl_body_style), p("Functional (RV/annular dilation)", tbl_body_style), p("Endocarditis, Ebstein's, carcinoid, CIED", tbl_body_style)],
    [p("Pulmonary Stenosis", tbl_body_style), p("Congenital", tbl_body_style), p("Carcinoid", tbl_body_style)],
    [p("Pulmonary Regurgitation", tbl_body_style), p("Post-ToF repair (iatrogenic)", tbl_body_style), p("Pulmonary HTN, endocarditis, carcinoid", tbl_body_style)],
]
story.append(section_box("Etiology", etio_data, [W*0.28, W*0.3, W*0.42]))
story.append(sp(8))

# TABLE B: Murmur Comparison
story.append(p("<b>Table B — Murmur Comparison</b>", h2_style))
murmur_data = [
    [p("Lesion", tbl_header_style), p("Type", tbl_header_style), p("Location", tbl_header_style),
     p("Radiation", tbl_header_style), p("Key Features", tbl_header_style)],
    [p("MS", tbl_body_style), p("Mid-diastolic rumble", tbl_body_style), p("Apex", tbl_body_style),
     p("None", tbl_body_style), p("Low-pitched, bell; opening snap; pre-systolic accentuation", tbl_body_style)],
    [p("MR", tbl_body_style), p("Holosystolic", tbl_body_style), p("Apex", tbl_body_style),
     p("Axilla/back", tbl_body_style), p("Soft S1; S3 gallop; click + late murmur in MVP", tbl_body_style)],
    [p("AS", tbl_body_style), p("Ejection systolic", tbl_body_style), p("RUSB", tbl_body_style),
     p("Carotids", tbl_body_style), p("Crescendo-decrescendo; parvus et tardus; reduced A2; S4", tbl_body_style)],
    [p("AR", tbl_body_style), p("Early diastolic", tbl_body_style), p("LLSB", tbl_body_style),
     p("None", tbl_body_style), p("Blowing, decrescendo; Austin Flint murmur; wide pulse pressure", tbl_body_style)],
    [p("TS", tbl_body_style), p("Mid-diastolic", tbl_body_style), p("LLSB", tbl_body_style),
     p("None", tbl_body_style), p("Louder on inspiration; opening snap", tbl_body_style)],
    [p("TR", tbl_body_style), p("Holosystolic", tbl_body_style), p("LLSB", tbl_body_style),
     p("None", tbl_body_style), p("Louder on inspiration (Carvallo's sign); cv wave in JVP", tbl_body_style)],
    [p("PS", tbl_body_style), p("Ejection systolic", tbl_body_style), p("ULSB", tbl_body_style),
     p("L shoulder", tbl_body_style), p("Ejection click decreases on inspiration; wide split S2", tbl_body_style)],
    [p("PR", tbl_body_style), p("Early diastolic", tbl_body_style), p("ULSB", tbl_body_style),
     p("None", tbl_body_style), p("Graham Steell if PA HTN; RBBB on ECG", tbl_body_style)],
]
story.append(section_box("Murmurs", murmur_data, [W*0.08, W*0.17, W*0.09, W*0.12, W*0.54]))
story.append(sp(4))
story.append(p(
    "<i>RUSB = right upper sternal border; LLSB = lower left sternal border; ULSB = upper left sternal border. "
    "All right-sided murmurs (TS, TR, PS, PR) increase with inspiration (Carvallo's sign), except the pulmonary "
    "ejection click which uniquely decreases with inspiration.</i>", small_style))
story.append(sp(8))

# TABLE C: Hemodynamics
story.append(p("<b>Table C — Hemodynamic Consequences</b>", h2_style))
hemo_data = [
    [p("Lesion", tbl_header_style), p("Chamber Affected", tbl_header_style),
     p("Overload Type", tbl_header_style), p("Chamber Response", tbl_header_style), p("Pulse Character", tbl_header_style)],
    [p("MS", tbl_body_style), p("Left atrium", tbl_body_style), p("Pressure (upstream)", tbl_body_style), p("LA dilation; LVH absent", tbl_body_style), p("Small volume", tbl_body_style)],
    [p("MR", tbl_body_style), p("Left ventricle", tbl_body_style), p("Volume", tbl_body_style), p("Eccentric LVH + LA dilation", tbl_body_style), p("Hyperdynamic", tbl_body_style)],
    [p("AS", tbl_body_style), p("Left ventricle", tbl_body_style), p("Pressure", tbl_body_style), p("Concentric LVH", tbl_body_style), p("Parvus et tardus", tbl_body_style)],
    [p("AR", tbl_body_style), p("Left ventricle", tbl_body_style), p("Volume", tbl_body_style), p("Eccentric LVH", tbl_body_style), p("Wide pulse pressure", tbl_body_style)],
    [p("TS", tbl_body_style), p("Right atrium", tbl_body_style), p("Pressure (upstream)", tbl_body_style), p("RA dilation; RVH absent", tbl_body_style), p("Normal or small", tbl_body_style)],
    [p("TR", tbl_body_style), p("Right ventricle", tbl_body_style), p("Volume", tbl_body_style), p("RV + RA dilation", tbl_body_style), p("Normal", tbl_body_style)],
    [p("PS", tbl_body_style), p("Right ventricle", tbl_body_style), p("Pressure", tbl_body_style), p("Concentric RVH", tbl_body_style), p("Normal", tbl_body_style)],
    [p("PR", tbl_body_style), p("Right ventricle", tbl_body_style), p("Volume", tbl_body_style), p("Eccentric RVH + RV dilation", tbl_body_style), p("Normal or bounding", tbl_body_style)],
]
story.append(section_box("Hemodynamics", hemo_data, [W*0.08, W*0.18, W*0.18, W*0.3, W*0.26]))
story.append(sp(8))

# TABLE D: Investigations
story.append(p("<b>Table D — Key Investigations</b>", h2_style))
inv_data = [
    [p("Lesion", tbl_header_style), p("Echo Key Finding", tbl_header_style),
     p("ECG", tbl_header_style), p("CXR", tbl_header_style)],
    [p("MS", tbl_body_style), p("Hockey-stick AML; MVA by PHT; Wilkins score", tbl_body_style),
     p("P mitrale; AF", tbl_body_style), p("LA enlargement; Kerley B; pulm edema", tbl_body_style)],
    [p("MR", tbl_body_style), p("Flail/prolapsing leaflet; PISA; EF + LVESD", tbl_body_style),
     p("LVH; AF", tbl_body_style), p("Cardiomegaly; LA + LV enlargement", tbl_body_style)],
    [p("AS", tbl_body_style), p("Calcified valve; AVA by continuity equation; gradient", tbl_body_style),
     p("LVH with strain", tbl_body_style), p("Aortic calcification; post-stenotic dilation", tbl_body_style)],
    [p("AR", tbl_body_style), p("Regurgitant jet; LV size/EF; aortic root", tbl_body_style),
     p("LVH", tbl_body_style), p("LV enlargement; aortic root dilation", tbl_body_style)],
    [p("TS", tbl_body_style), p("Thickened leaflets; diastolic gradient; no pulm HTN", tbl_body_style),
     p("RA enlargement (tall P; P pulmonale)", tbl_body_style), p("RA enlargement; no pulm HTN", tbl_body_style)],
    [p("TR", tbl_body_style), p("RA+RV dilation; TR jet; hepatic vein reversal; PA pressure", tbl_body_style),
     p("RVH/RBBB; RA enlargement; AF", tbl_body_style), p("RA + RV enlargement", tbl_body_style)],
    [p("PS", tbl_body_style), p("Domed valve; peak gradient; RV wall thickness", tbl_body_style),
     p("RVH; RA enlargement; RBBB", tbl_body_style), p("Normal or RV enlargement", tbl_body_style)],
    [p("PR", tbl_body_style), p("RV volume overload; PR jet; RV size/function (CMR ideal)", tbl_body_style),
     p("RBBB; RVH if PA HTN", tbl_body_style), p("RV enlargement; dilated PA", tbl_body_style)],
]
story.append(section_box("Investigations", inv_data, [W*0.08, W*0.37, W*0.25, W*0.30]))
story.append(sp(8))

story.append(PageBreak())

# TABLE E: Treatment Summary
story.append(p("<b>Table E — Management Summary</b>", h2_style))
mgmt_data = [
    [p("Lesion", tbl_header_style), p("Medical", tbl_header_style),
     p("Interventional", tbl_header_style), p("Key Notes", tbl_header_style)],
    [p("MS", tbl_body_style), p("Rate control; diuretics; anticoagulation (AF)", tbl_body_style),
     p("PMBV (Wilkins ≤8); MVR if unfavorable", tbl_body_style),
     p("Rheumatic fever prophylaxis; PMBV safe in pregnancy", tbl_body_style)],
    [p("MR", tbl_body_style), p("Vasodilators; HF therapy (secondary)", tbl_body_style),
     p("Repair > replacement; MitraClip (high-risk)", tbl_body_style),
     p("EF <60% or LVESD >40 mm = surgery threshold", tbl_body_style)],
    [p("AS", tbl_body_style), p("Symptom management only", tbl_body_style),
     p("SAVR or TAVR; no balloon in adults", tbl_body_style),
     p("Angina/syncope/HF = urgent replacement", tbl_body_style)],
    [p("AR", tbl_body_style), p("ACEi/ARB if hypertensive; vasodilators", tbl_body_style),
     p("AVR; emergency surgery for acute AR", tbl_body_style),
     p("EF <50% or LVESD >50 mm = replace", tbl_body_style)],
    [p("TS", tbl_body_style), p("Diuretics; salt restriction", tbl_body_style),
     p("Balloon valvuloplasty; TV repair/replacement at mitral surgery", tbl_body_style),
     p("Bioprosthetic valve preferred in TV position", tbl_body_style)],
    [p("TR", tbl_body_style), p("Diuretics (spironolactone); treat cause", tbl_body_style),
     p("Annuloplasty at left-sided surgery; TEER (high-risk, FDA 2024)", tbl_body_style),
     p("Isolated TV surgery: high perioperative mortality (~8–9%)", tbl_body_style)],
    [p("PS", tbl_body_style), p("Observation (mild)", tbl_body_style),
     p("Balloon valvuloplasty (first-line); surgical for dysplastic (Noonan)", tbl_body_style),
     p("Excellent long-term results with balloon", tbl_body_style)],
    [p("PR", tbl_body_style), p("Observation (mild/asymptomatic)", tbl_body_style),
     p("PVR (surgical or TPVR — Melody/SAPIEN valve)", tbl_body_style),
     p("Post-ToF: timing of PVR critical for RV preservation", tbl_body_style)],
]
story.append(section_box("Management", mgmt_data, [W*0.09, W*0.25, W*0.33, W*0.33]))
story.append(sp(8))

# Clinical Pearls Box
story.append(p("<b>Clinical Pearls</b>", h2_style))
pearls = [
    ("Inspiration rule", "All right-sided murmurs <i>increase</i> with inspiration (Carvallo's sign): TS, TR, PS, PR. Exception: the pulmonary ejection <i>click</i> uniquely <i>decreases</i> with inspiration."),
    ("Stenosis vs. Regurgitation overload", "Stenosis causes <b>pressure overload</b> (concentric hypertrophy); Regurgitation causes <b>volume overload</b> (eccentric hypertrophy/dilation)."),
    ("Masking effect of TS", "Tricuspid stenosis can mask coexisting MS by reducing cardiac output and thereby lowering pulmonary artery pressures."),
    ("AS symptom triad timing", "Once AS symptoms appear: angina (5 yr survival), syncope (3 yr), heart failure (1–2 yr) — replace urgently."),
    ("Acute vs. Chronic AR", "Acute AR has no time for LV dilation → sudden severe pulmonary edema with <i>normal</i> heart size on CXR (no cardiomegaly) — a key diagnostic clue."),
    ("EF in MR", "A 'normal' EF of 55–60% in severe MR may already represent LV dysfunction — use stricter threshold (EF <60%) for surgery."),
    ("Pregnancy", "MS is poorly tolerated in pregnancy (tachycardia reduces diastolic filling time, elevating LA pressure). PMBV can be safely performed. MR/AR are better tolerated."),
    ("Mechanical vs. bioprosthetic valve", "Mechanical valves: durable but require lifelong anticoagulation. Bioprosthetic: no anticoagulation needed but deteriorate faster (more slowly in elderly). Avoid mechanical in tricuspid position (high thrombosis risk)."),
]
for title_t, desc in pearls:
    story.append(p(f"<b>{title_t}:</b> {desc}", body_style))
    story.append(sp(2))

story.append(sp(10))
story.append(hr())
story.append(p(
    "<i>Sources: Braunwald's Heart Disease, 11th Ed. (ISBN 9780323722193) · Harrison's Principles of Internal Medicine, 22nd Ed. (ISBN 9781265977061) · "
    "Grainger &amp; Allison's Diagnostic Radiology (ISBN 9780323760751). Compiled by Orris Medical Reference.</i>",
    small_style
))

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

cd /home/daytona/workspace/valvular-heart-disease && python generate_pdf.py 2>&1

Running Command

ls -lh /home/daytona/workspace/valvular-heart-disease/Valvular_Heart_Disease_Com…

Your PDF is ready. Here's the download link:

Valvular Heart Disease Comparison

PDF Document · PDF

What's included in the PDF:
  • 8 individual sections - one per valvular lesion (MS, MR, AS, AR, TS, TR, PS, PR), each covering etiology, pathophysiology, symptoms, physical exam, investigations, and management
  • 5 comparative summary tables:
    • Table A: Etiology at a glance
    • Table B: Murmur comparison (type, location, radiation, key features)
    • Table C: Hemodynamic consequences
    • Table D: Key investigations (Echo, ECG, CXR)
    • Table E: Management summary
  • 8 clinical pearls section at the end
  • Color-coded layout with navy/blue theme, sourced from Braunwald's Heart Disease 11e, Harrison's 22e, and Grainger & Allison's
This is a shared conversation. Sign in to Orris to start your own chat.