Detailed infographics on heart blocks

Reading File
Finding Sources
Finding Sources
Searching Images

ECG third degree complete heart block

This diagnostic image displays a vertical comparison of three ECG rhythm strips demonstrating the progression and characteristics of different cardiac conduction abnormalities. The top strip, labeled 'NSR (FC) First Degree AV Block,' shows a sinus rhythm with a prolonged PR interval, indicating a delay in conduction between the atria and ventricles. The middle strip, labeled 'ECG possible CHB (KBM) Complete Heart Block,' illustrates third-degree atrioventricular (AV) block characterized by complete AV dissociation; P waves are present but occur independently of the slow, irregular QRS complexes (escape rhythm). The bottom strip, labeled 'ECG P waves, no QRS (Ventricular Asystole),' depicts a high-grade block where atrial activity (P waves) continues, but there is a total failure of ventricular conduction resulting in ventricular asystole. This sequence serves as an educational tool for identifying varying severity levels of heart blocks and the transition from conduction delay to lethal ventricular standstill.

This diagnostic image displays a vertical comparison of three ECG rhythm strips demonstrating the progression and characteristics of different cardiac conduction abnormalities. The top strip, labeled 'NSR (FC) First Degree AV Block,' shows a sinus rhythm with a prolonged PR interval, indicating a delay in conduction between the atria and ventricles. The middle strip, labeled 'ECG possible CHB (KBM) Complete Heart Block,' illustrates third-degree atrioventricular (AV) block characterized by complete AV dissociation; P waves are present but occur independently of the slow, irregular QRS complexes (escape rhythm). The bottom strip, labeled 'ECG P waves, no QRS (Ventricular Asystole),' depicts a high-grade block where atrial activity (P waves) continues, but there is a total failure of ventricular conduction resulting in ventricular asystole. This sequence serves as an educational tool for identifying varying severity levels of heart blocks and the transition from conduction delay to lethal ventricular standstill.

This Comparison Chart illustrates the electrocardiographic (ECG) characteristics of Atrioventricular (AV) blocks. It features three stacked rhythm strips categorized as First, Second, and Third-degree heart blocks, emphasizing the relationship between P waves (atrial depolarization) and QRS complexes (ventricular depolarization). The 'First degree heart block' panel demonstrates a consistent 1:1 P-to-QRS ratio with a fixed, prolonged PR interval. The 'Second degree heart block' panel shows intermittent conduction failure, where specific P waves are not followed by a QRS complex. The 'Third degree heart block' panel depicts complete AV dissociation, where P waves and QRS complexes occur independently and at different rates, indicating a total interruption of impulse transmission and the presence of a ventricular escape rhythm. This diagnostic illustration is designed for cardiovascular education to help students and clinicians distinguish between different stages of cardiac conduction system disease and their associated clinical significance.

This Comparison Chart illustrates the electrocardiographic (ECG) characteristics of Atrioventricular (AV) blocks. It features three stacked rhythm strips categorized as First, Second, and Third-degree heart blocks, emphasizing the relationship between P waves (atrial depolarization) and QRS complexes (ventricular depolarization). The 'First degree heart block' panel demonstrates a consistent 1:1 P-to-QRS ratio with a fixed, prolonged PR interval. The 'Second degree heart block' panel shows intermittent conduction failure, where specific P waves are not followed by a QRS complex. The 'Third degree heart block' panel depicts complete AV dissociation, where P waves and QRS complexes occur independently and at different rates, indicating a total interruption of impulse transmission and the presence of a ventricular escape rhythm. This diagnostic illustration is designed for cardiovascular education to help students and clinicians distinguish between different stages of cardiac conduction system disease and their associated clinical significance.

This diagnostic image consists of a series of four electrocardiogram (ECG) rhythm strips demonstrating the rapid clinical progression of atrioventricular (AV) conduction abnormalities over a period of 4.5 hours. The top panel, labeled 'Time point 0', shows an ectopic atrial rhythm with organized P-wave activity and narrow QRS complexes. The second strip, recorded 2.5 hours later, displays a second-degree Mobitz type II AV block, characterized by intermittently dropped QRS complexes without preceding PR interval lengthening. The third strip, 30 minutes later, indicates a first-degree AV delay (prolonged PR interval) and intraventricular conduction delay (widened QRS). The final rhythm strip at 4.5 hours shows third-degree (complete) AV block, characterized by complete AV dissociation and a slow, wide QRS complex ventricular escape rhythm. This progression illustrates acute cardiac conduction system failure, typically associated with myocardial infiltration or severe injury, as seen in patients with leukemic infiltration of the heart.

This diagnostic image consists of a series of four electrocardiogram (ECG) rhythm strips demonstrating the rapid clinical progression of atrioventricular (AV) conduction abnormalities over a period of 4.5 hours. The top panel, labeled 'Time point 0', shows an ectopic atrial rhythm with organized P-wave activity and narrow QRS complexes. The second strip, recorded 2.5 hours later, displays a second-degree Mobitz type II AV block, characterized by intermittently dropped QRS complexes without preceding PR interval lengthening. The third strip, 30 minutes later, indicates a first-degree AV delay (prolonged PR interval) and intraventricular conduction delay (widened QRS). The final rhythm strip at 4.5 hours shows third-degree (complete) AV block, characterized by complete AV dissociation and a slow, wide QRS complex ventricular escape rhythm. This progression illustrates acute cardiac conduction system failure, typically associated with myocardial infiltration or severe injury, as seen in patients with leukemic infiltration of the heart.

This Comparison Chart displays two 12-lead electrocardiogram (ECG) segments from an 82-year-old patient with syncope. The left panel, labeled 'Admission: 1 to 1 conduction', shows sinus rhythm with a fixed PR interval. The QRS morphology indicates bifascicular block, characterized by a Right Bundle Branch Block (RBBB) pattern (rsR' in V1) and a Left Posterior Fascicular Block (LPFB) evidenced by right axis deviation. The right panel, labeled 'Intermittent complete AVB', demonstrates an episode of third-degree atrioventricular block (AVB). In this section, P waves are clearly visible and regular (sinus rate), but they are dissociated from the ventricular activity, with multiple non-conducted P waves and a prolonged ventricular pause (asystole). This visual comparison illustrates the progression from chronic infra-nodal conduction disease to paroxysmal complete heart block. The educational focus is on identifying AV dissociation and pre-existing bundle branch abnormalities as precursors to high-grade atrioventricular block.

This Comparison Chart displays two 12-lead electrocardiogram (ECG) segments from an 82-year-old patient with syncope. The left panel, labeled 'Admission: 1 to 1 conduction', shows sinus rhythm with a fixed PR interval. The QRS morphology indicates bifascicular block, characterized by a Right Bundle Branch Block (RBBB) pattern (rsR' in V1) and a Left Posterior Fascicular Block (LPFB) evidenced by right axis deviation. The right panel, labeled 'Intermittent complete AVB', demonstrates an episode of third-degree atrioventricular block (AVB). In this section, P waves are clearly visible and regular (sinus rate), but they are dissociated from the ventricular activity, with multiple non-conducted P waves and a prolonged ventricular pause (asystole). This visual comparison illustrates the progression from chronic infra-nodal conduction disease to paroxysmal complete heart block. The educational focus is on identifying AV dissociation and pre-existing bundle branch abnormalities as precursors to high-grade atrioventricular block.

A standard 12-lead electrocardiogram (ECG) demonstrating complex cardiac rhythm disturbances. The primary rhythm shows a complete atrioventricular (AV) block (third-degree heart block), characterized by a lack of relationship between P waves and QRS complexes. A junctional escape rhythm is present, featuring widened QRS complexes (>120 ms). Leads V1 through V3 exhibit a Right Bundle Branch Block (RBBB) morphology with broad, predominantly positive QRS complexes. The tracing also captures a significant premature ventricular contraction (PVC) burden, including a period of ventricular bigeminy and a brief run of non-sustained ventricular tachycardia (NSVT). Notable findings include a prolonged corrected QT interval (QTc) of approximately 522 ms. There is no evidence of acute ST-segment elevation or depression. This ECG illustrates severe conduction system disease and ventricular irritability, clinically relevant in the context of drug-induced cardiotoxicity or myocarditis.

A standard 12-lead electrocardiogram (ECG) demonstrating complex cardiac rhythm disturbances. The primary rhythm shows a complete atrioventricular (AV) block (third-degree heart block), characterized by a lack of relationship between P waves and QRS complexes. A junctional escape rhythm is present, featuring widened QRS complexes (>120 ms). Leads V1 through V3 exhibit a Right Bundle Branch Block (RBBB) morphology with broad, predominantly positive QRS complexes. The tracing also captures a significant premature ventricular contraction (PVC) burden, including a period of ventricular bigeminy and a brief run of non-sustained ventricular tachycardia (NSVT). Notable findings include a prolonged corrected QT interval (QTc) of approximately 522 ms. There is no evidence of acute ST-segment elevation or depression. This ECG illustrates severe conduction system disease and ventricular irritability, clinically relevant in the context of drug-induced cardiotoxicity or myocarditis.

This diagnostic image is a 12-lead postnatal electrocardiogram (ECG) demonstrating Third-Degree (Complete) Atrioventricular (AV) Block. The tracing shows a clear lack of conduction between the atria and ventricles, evidenced by complete AV dissociation. P waves are present and occur at a regular, faster atrial rate of approximately 125 bpm, while the QRS complexes appear at a much slower, independent ventricular escape rate of approximately 52 bpm. The P-R intervals are highly variable as the P waves 'march through' the QRS complexes without initiating them. The QRS complexes exhibit a relatively narrow morphology for a ventricular escape rhythm, suggesting a junctional or high-septal origin. This ECG is a classic representation of congenital or neonatal complete heart block, often associated with maternal autoimmune conditions such as anti-Ro/SSA or anti-La/SSB antibodies. It serves as a key educational example of severe bradycardia and AV conduction failure in a neonatal clinical context.

This diagnostic image is a 12-lead postnatal electrocardiogram (ECG) demonstrating Third-Degree (Complete) Atrioventricular (AV) Block. The tracing shows a clear lack of conduction between the atria and ventricles, evidenced by complete AV dissociation. P waves are present and occur at a regular, faster atrial rate of approximately 125 bpm, while the QRS complexes appear at a much slower, independent ventricular escape rate of approximately 52 bpm. The P-R intervals are highly variable as the P waves 'march through' the QRS complexes without initiating them. The QRS complexes exhibit a relatively narrow morphology for a ventricular escape rhythm, suggesting a junctional or high-septal origin. This ECG is a classic representation of congenital or neonatal complete heart block, often associated with maternal autoimmune conditions such as anti-Ro/SSA or anti-La/SSB antibodies. It serves as a key educational example of severe bradycardia and AV conduction failure in a neonatal clinical context.

Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Finding Sources
Finding Sources
Searching PubMed

"atrioventricular block" AND pacemaker

Searching the Web

2023 ACC AHA HRS bradycardia guideline atrioventricular block pacing indications

Running Command

mkdir -p /tmp/workspace/heart-block-infographic/assets /tmp/workspace/heart-block-infographic/output && ls -la /tmp/workspace/

Running Command

fc-list | grep -i dejavu | head -20; python3 -c "import PIL; print(PIL.__version__)"

Running Command

find / -iname "*.ttf" 2>/dev/null | grep -iv fonts/noto | head -30; echo "---"; find / -iname "*DejaVu*" 2>/dev/null | head -10; echo "---all ttf count---"; find / -iname "*.ttf" 2>/dev/null | wc -l

Running Command

cd /tmp/workspace/heart-block-infographic/assets && curl -sL -o ecg_compare.jpg "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_11ac037ff7836678ddd7fad143600ed71c2a3910d226a34ea257a3618beab0a5.jpg" && curl -sL -o ecg_progression.jpg "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_371aeb8e49e2595a2911c1b225b74f8fc59435744fe07138b6de279dfe692696.jpg" && ls -la

Writing File

~/heart-block-infographic/build_infographic.py

#!/usr/bin/env python3
"""Build a detailed infographic on Heart Blocks (AV conduction blocks)."""
from PIL import Image, ImageDraw, ImageFont, ImageOps
import textwrap, os

BASE = "/tmp/workspace/heart-block-infographic"
ASSETS = f"{BASE}/assets"
OUT = f"{BASE}/output/Heart_Blocks_Infographic.png"

FDIR = "/opt/amazon/genesis1p-tools/venv/lib/python3.12/site-packages/matplotlib/mpl-data/fonts/ttf"
def F(name, size):
    return ImageFont.truetype(f"{FDIR}/{name}", size)

REG = "DejaVuSans.ttf"; BOLD = "DejaVuSans-Bold.ttf"; IT = "DejaVuSans-Oblique.ttf"

# ---------- Palette ----------
NAVY = (18, 39, 68)
DARKRED = (150, 25, 35)
RED = (196, 42, 52)
BLUE = (33, 87, 143)
TEAL = (17, 110, 110)
BG = (246, 247, 250)
CARD = (255, 255, 255)
GREY = (90, 98, 110)
LGREY = (225, 229, 235)
ORANGE = (214, 118, 22)
GREEN = (34, 120, 70)
YELLOW = (231, 180, 22)

W = 1600

def wrap(draw, text, font, max_w):
    words = text.split()
    lines, cur = [], ""
    for w in words:
        test = (cur + " " + w).strip()
        if draw.textlength(test, font=font) <= max_w:
            cur = test
        else:
            lines.append(cur)
            cur = w
    if cur:
        lines.append(cur)
    return lines

def draw_wrapped(draw, xy, text, font, max_w, fill, line_gap=6):
    x, y = xy
    for line in wrap(draw, text, font, max_w):
        draw.text((x, y), line, font=font, fill=fill)
        y += font.size + line_gap
    return y

def rounded(draw, box, radius, fill=None, outline=None, width=1):
    draw.rounded_rectangle(box, radius=radius, fill=fill, outline=outline, width=width)

def bullet_list(draw, xy, items, font, max_w, fill, gap=8, bullet="•", bcolor=None):
    x, y = xy
    bcolor = bcolor or fill
    for it in items:
        draw.text((x, y), bullet, font=font, fill=bcolor)
        y2 = draw_wrapped(draw, (x+22, y), it, font, max_w-22, fill, line_gap=5)
        y = y2 + gap
    return y

# ---------- Canvas (build tall, crop later) ----------
H = 4700
img = Image.new("RGB", (W, H), BG)
d = ImageDraw.Draw(img)

M = 48  # outer margin
content_w = W - 2*M

# ===================== HEADER =====================
head_h = 210
d.rectangle([0, 0, W, head_h], fill=NAVY)
d.rectangle([0, head_h, W, head_h+8], fill=RED)
f_title = F(BOLD, 62)
f_sub = F(REG, 25)
d.text((M, 46), "HEART BLOCKS", font=f_title, fill=(255,255,255))
d.text((M, 118), "Atrioventricular (AV) Conduction Disturbances — Classification, ECG Recognition,", font=f_sub, fill=(210,220,235))
d.text((M, 152), "Causes, Clinical Significance & Management", font=f_sub, fill=(210,220,235))
# small heart icon area (right)
d.ellipse([W-190, 45, W-130, 105], outline=(255,255,255), width=3)
d.text((W-185, 118), "Cardiology", font=F(BOLD,22), fill=(255,255,255))
d.text((W-185, 148), "Reference", font=F(BOLD,22), fill=(255,255,255))

y = head_h + 30

# ===================== INTRO STRIP =====================
box_h = 150
rounded(d, [M, y, W-M, y+box_h], 16, fill=(233,238,247))
f_h2 = F(BOLD, 28)
f_body = F(REG, 21)
d.text((M+24, y+16), "WHAT IS A HEART BLOCK?", font=f_h2, fill=NAVY)
intro = ("A disturbance of electrical impulse conduction through the heart, most often at the atrioventricular (AV) "
         "junction. AV block exists when the atrial impulse is conducted with delay, or not at all, to the "
         "ventricles even though the AV junction is not physiologically refractory. Block can occur at the AV node, "
         "the bundle of His, or the bundle branches — and is graded by severity into first-, second-, and "
         "third-degree (complete) block.")
draw_wrapped(d, (M+24, y+56), intro, f_body, content_w-48, (30,35,45), line_gap=6)
y += box_h + 40

# ===================== CONDUCTION PATHWAY DIAGRAM =====================
sec_h = 300
rounded(d, [M, y, W-M, y+sec_h], 16, fill=CARD, outline=LGREY, width=2)
d.text((M+24, y+18), "NORMAL CARDIAC CONDUCTION PATHWAY", font=f_h2, fill=NAVY)

# draw pathway boxes
nodes = ["SA Node\n(pacemaker)", "AV Node\n(delay ~ 0.1s)", "Bundle of His", "Right & Left\nBundle Branches", "Purkinje Fibers\n(ventricles)"]
n = len(nodes)
pad = 30
box_w = (content_w - pad*(n-1) - 48) / n
bx = M + 24
by = y + 90
bh = 140
colors = [TEAL, BLUE, ORANGE, DARKRED, GREEN]
f_node = F(BOLD, 19)
centers = []
for i, node in enumerate(nodes):
    x0 = bx + i*(box_w+pad)
    rounded(d, [x0, by, x0+box_w, by+bh], 14, fill=colors[i])
    lines = node.split("\n")
    ty = by + bh/2 - (len(lines)*24)/2
    for ln in lines:
        tw = d.textlength(ln, font=f_node)
        d.text((x0+box_w/2-tw/2, ty), ln, font=f_node, fill=(255,255,255))
        ty += 24
    centers.append((x0+box_w, by+bh/2, x0+box_w+pad, by+bh/2))
# arrows
for (x0,yc,x1,_yc) in centers[:-1]:
    d.line([x0+6, yc, x1-6, yc], fill=NAVY, width=5)
    d.polygon([(x1-6, yc-9),(x1-6, yc+9),(x1+10, yc)], fill=NAVY)

note = "Block anywhere along this pathway (SA→AV node→His→bundle branches→Purkinje) impairs impulse transmission and defines the level (nodal vs. infranodal/His-Purkinje) of the block."
draw_wrapped(d, (M+24, by+bh+22), note, F(REG,19), content_w-48, GREY, line_gap=5)
y += sec_h + 40

# ===================== CLASSIFICATION HEADER =====================
d.text((M, y), "CLASSIFICATION OF AV BLOCK", font=F(BOLD,32), fill=DARKRED)
y += 48

# ---- Card data ----
cards = [
    dict(tag="GRADE I", title="First-Degree AV Block", color=GREEN,
         facts=[
             "PR interval prolonged (>0.20 s in adults) but every P wave is followed by a QRS — no dropped beats.",
             "Delay usually within the AV node (A-H interval); rarely in the His-Purkinje system.",
             "Often benign / found in healthy or well-conditioned individuals; can reflect increased vagal tone, drugs, or inferior MI.",
         ]),
    dict(tag="GRADE II · TYPE I", title="Second-Degree — Mobitz I (Wenckebach)", color=YELLOW,
         facts=[
             "Progressive PR-interval lengthening until a P wave is not conducted (dropped QRS) — cyclical \"grouped beating\".",
             "Almost always localized to the AV node; often reversible.",
             "Usually benign/transient — inferior ischemia, drug toxicity, myocarditis, high vagal tone, post-cardiac surgery.",
         ]),
    dict(tag="GRADE II · TYPE II", title="Second-Degree — Mobitz II", color=ORANGE,
         facts=[
             "PR interval constant before AND after a sudden, unpredicted nonconducted P wave (no preceding lengthening).",
             "QRS usually widened — implies structural infranodal (His-Purkinje) disease.",
             "High-grade block = ≥2 consecutive P waves blocked. Can progress abruptly to complete heart block — usually needs pacing.",
         ]),
    dict(tag="GRADE III", title="Third-Degree (Complete) AV Block", color=DARKRED,
         facts=[
             "Complete AV dissociation: no atrial impulses reach the ventricles; P waves and QRS complexes are independent.",
             "An escape rhythm paces the ventricles slower than the atrial rate — junctional (narrow QRS, 40–60 bpm) if nodal, or ventricular (wide QRS, <40 bpm) if infra-Hisian.",
             "May cause Stokes-Adams attacks (syncope), hypotension, heart failure; typically requires (temporary or permanent) pacing.",
         ]),
]

card_gap = 26
card_w = (content_w - card_gap) / 2
card_h = 330
f_tag = F(BOLD, 18)
f_ctitle = F(BOLD, 24)
f_fact = F(REG, 19)

positions = [(M, y), (M+card_w+card_gap, y), (M, y+card_h+card_gap), (M+card_w+card_gap, y+card_h+card_gap)]
for card, (cx, cy) in zip(cards, positions):
    rounded(d, [cx, cy, cx+card_w, cy+card_h], 16, fill=CARD, outline=LGREY, width=2)
    d.rectangle([cx, cy, cx+14, cy+card_h], fill=card["color"])
    rounded(d, [cx+26, cy+18, cx+26+d.textlength(card["tag"], font=f_tag)+28, cy+52], 10, fill=card["color"])
    d.text((cx+40, cy+26), card["tag"], font=f_tag, fill=(255,255,255) if card["color"]!=YELLOW else (40,30,0))
    d.text((cx+26, cy+62), card["title"], font=f_ctitle, fill=NAVY)
    yy = cy + 104
    for fact in card["facts"]:
        d.ellipse([cx+26, yy+8, cx+34, yy+16], fill=card["color"])
        yy = draw_wrapped(d, (cx+46, yy), fact, f_fact, card_w-70, (30,35,45), line_gap=4) + 10

y += 2*card_h + card_gap + 40

# ===================== ECG REFERENCE IMAGE =====================
img_h = 560
rounded(d, [M, y, W-M, y+img_h], 16, fill=CARD, outline=LGREY, width=2)
d.text((M+24, y+18), "ECG RECOGNITION — FIRST, SECOND & THIRD-DEGREE BLOCK", font=f_h2, fill=NAVY)
try:
    ref_img = Image.open(f"{ASSETS}/ecg_compare.jpg").convert("RGB")
    target_h = img_h - 90
    ratio = target_h / ref_img.height
    new_w = int(ref_img.width * ratio)
    ref_img = ref_img.resize((new_w, target_h))
    img.paste(ref_img, (int(M + (content_w*0.55 - new_w)/2 + 0), y+70))
    cap_x = M + int(content_w*0.58)
except Exception as e:
    cap_x = M + 24

cap_notes = [
    "First-degree: fixed, prolonged PR interval; 1:1 P:QRS.",
    "Second-degree: intermittent nonconducted P waves (dropped QRS).",
    "Third-degree: P waves and QRS complexes march independently — complete AV dissociation with an escape rhythm.",
]
d.text((cap_x, y+90), "Key features:", font=F(BOLD,21), fill=NAVY)
bullet_list(d, (cap_x, y+128), cap_notes, F(REG,19), (W-M)-cap_x-24, (30,35,45), gap=14, bcolor=RED)
y += img_h + 40

# ===================== BUNDLE BRANCH BLOCK =====================
sec_h = 300
rounded(d, [M, y, W-M, y+sec_h], 16, fill=(233,238,247))
d.text((M+24, y+18), "INTRAVENTRICULAR CONDUCTION: BUNDLE BRANCH BLOCK (BBB)", font=f_h2, fill=NAVY)
half_w = (content_w-48-30)/2
bbb = [
    ("Right Bundle Branch Block (RBBB)", BLUE, [
        "QRS ≥120 ms (complete) / 110–120 ms (incomplete).",
        "rSR' (\"M-shaped\") pattern in V1–V2; wide, slurred S wave in I, aVL, V5–V6.",
        "Can occur in normal hearts; also RV strain, PE, congenital heart disease.",
    ]),
    ("Left Bundle Branch Block (LBBB)", DARKRED, [
        "QRS ≥120 ms; broad, notched R wave in I, aVL, V5–V6; absent Q waves in I, aVL, V6.",
        "Usually indicates underlying structural heart disease (ischemic or dilated cardiomyopathy).",
        "Associated with ventricular dyssynchrony, worsening heart failure, higher mortality; may benefit from CRT/His-bundle or left bundle area pacing.",
    ]),
]
bx = M+24
for title, col, facts in bbb:
    rounded(d, [bx, y+64, bx+half_w, y+sec_h-16], 12, fill=CARD, outline=col, width=2)
    d.text((bx+16, y+76), title, font=F(BOLD,21), fill=col)
    bullet_list(d, (bx+16, y+112), facts, F(REG,18), half_w-40, (30,35,45), gap=8, bcolor=col)
    bx += half_w + 30
y += sec_h + 40

# ===================== CAUSES =====================
d.text((M, y), "CAUSES OF AV BLOCK", font=F(BOLD,32), fill=DARKRED)
y += 48
causes = [
    ("Ischemic / Structural", GREEN, ["Acute inferior or anterior MI", "Fibrocalcific degeneration of conduction system (Lenègre/Lev disease)", "Cardiomyopathy, myocarditis"]),
    ("Drugs / Toxins", ORANGE, ["Beta-blockers, calcium-channel blockers", "Digoxin toxicity", "Antiarrhythmics (Class Ia/Ic, amiodarone)"]),
    ("Infectious / Infiltrative", TEAL, ["Lyme disease (reversible, nodal)", "Sarcoidosis, amyloidosis", "Rheumatic fever, endocarditis"]),
    ("Other / Iatrogenic", BLUE, ["Cardiac surgery, TAVR, ablation", "Congenital complete heart block (maternal anti-Ro/La)", "Increased vagal tone, electrolyte disturbance (hyperkalemia)"]),
]
cw = (content_w - 3*24) / 4
ch = 260
for i, (title, col, items) in enumerate(causes):
    cx = M + i*(cw+24)
    rounded(d, [cx, y, cx+cw, y+ch], 14, fill=CARD, outline=LGREY, width=2)
    d.rectangle([cx, y, cx+cw, y+8], fill=col)
    draw_wrapped(d, (cx+16, y+22), title, F(BOLD,19), cw-32, col, line_gap=4)
    bullet_list(d, (cx+16, y+78), items, F(REG,16), cw-36, (30,35,45), gap=8, bcolor=col)
y += ch + 40

# ===================== SYMPTOMS =====================
sec_h = 190
rounded(d, [M, y, W-M, y+sec_h], 16, fill=(255,244,235), outline=ORANGE, width=2)
d.text((M+24, y+16), "SYMPTOMS & RED FLAGS", font=f_h2, fill=DARKRED)
sym_left = ["Often asymptomatic (first-degree, Mobitz I)", "Fatigue, exercise intolerance, dizziness/presyncope"]
sym_right = ["Syncope from transient asystole (Stokes-Adams attacks)", "Hypotension, heart failure, cardiac arrest (complete block)"]
bullet_list(d, (M+24, y+66), sym_left, f_body, content_w/2-48, (30,35,45), gap=6, bcolor=ORANGE)
bullet_list(d, (M+24+content_w/2, y+66), sym_right, f_body, content_w/2-48, (30,35,45), gap=6, bcolor=ORANGE)
y += sec_h + 40

# ===================== MANAGEMENT =====================
sec_h = 430
rounded(d, [M, y, W-M, y+sec_h], 16, fill=NAVY)
d.text((M+24, y+18), "MANAGEMENT & PACING — 2023 ACC/AHA/ACCP/HRS GUIDELINE", font=F(BOLD,28), fill=(255,255,255))
mgmt = [
    "Identify & treat reversible causes first: stop offending drugs, correct electrolytes, treat infection/ischemia (e.g., Lyme carditis often resolves with antibiotics).",
    "Mobitz II, high-grade AV block, or third-degree (complete) AV block NOT due to a reversible/physiologic cause → permanent pacing is recommended REGARDLESS of symptoms.",
    "First-degree and Mobitz I block → pacing generally only if symptoms correlate with the block (usually benign, may need no treatment).",
    "Unstable bradycardia (hypoperfusion): atropine (limited efficacy in infranodal block), transcutaneous pacing, then transvenous pacing as a bridge to permanent pacemaker.",
    "Alternating bundle branch block or bifascicular block with syncope → Class I indication for permanent pacing.",
    "In patients needing frequent ventricular pacing with reduced LVEF (36–50%), physiologic pacing (CRT / His-bundle or left-bundle-area pacing) is preferred over standard RV pacing to avoid pacing-induced cardiomyopathy.",
]
bullet_list(d, (M+24, y+70), mgmt, F(REG,20), content_w-48, (235,240,250), gap=12, bcolor=(120,190,255))
y += sec_h + 30

# ===================== FOOTER / SOURCES =====================
sec_h = 260
d.line([M, y, W-M, y], fill=LGREY, width=2)
y += 20
d.text((M, y), "SOURCES", font=F(BOLD,22), fill=NAVY)
y += 36
sources = [
    "Braunwald's Heart Disease, 2-Vol. Set, 12th ed. — Atrioventricular Block (Heart Block)",
    "Tintinalli's Emergency Medicine, Comprehensive Study Guide — AV Block chapters (Tables 18-18, 18-19, 18-20)",
    "Fuster and Hurst's The Heart, 15th ed. — Bundle Branch Block; Management of AV Block and Intraventricular Conduction Disorders",
    "Goldman-Cecil Medicine, International Edition — Atrioventricular Block",
    "Guyton and Hall Textbook of Medical Physiology — Heart Block Within the Conduction System",
    "2023 ACC/AHA/ACCP/HRS Guideline for the Diagnosis and Management of Bradycardia and Cardiac Conduction Delay (J Am Coll Cardiol, 2023)",
]
bullet_list(d, (M, y), sources, F(REG,17), content_w, GREY, gap=6, bcolor=GREY)
y += 40
d.text((M, y), "For education only — not a substitute for clinical judgment or institutional protocols.", font=F(IT,16), fill=GREY)
y += 40

final_h = y + 30
img_cropped = img.crop((0,0,W, final_h))
os.makedirs(os.path.dirname(OUT), exist_ok=True)
img_cropped.save(OUT, quality=95)
print("Saved:", OUT, "size:", img_cropped.size)
Running Command

cd /tmp/workspace/heart-block-infographic && python3 build_infographic.py

Reading File
Running Command

cd /tmp/workspace/heart-block-infographic && python3 -c " from PIL import Image im = Image.open('output/Heart_Blocks_Infographic.png') w,h = im.size scale = 900/w im2 = im.resize((int(w*scale), int(h*scale))) im2.save('output/preview.jpg', quality=70) print(im2.size) " ls -la output/

Reading File
Editing File

~/heart-block-infographic/build_infographic.py

Successfully replaced 1 instance(s) of the string in '/tmp/workspace/heart-block-infographic/build_infographic.py'
Running Command

cd /tmp/workspace/heart-block-infographic && python3 build_infographic.py && python3 -c " from PIL import Image im = Image.open('output/Heart_Blocks_Infographic.png') w,h = im.size crop = im.crop((0, h-500, w, h)) crop.save('output/bottom_check.jpg', quality=70) print(im.size) "

Reading File
Fixed - the layout looks clean now. The infographic is complete and saved.

Heart Blocks Infographic

I've built a detailed, textbook-sourced infographic covering AV conduction blocks. It includes:
  • Conduction pathway diagram (SA node → AV node → Bundle of His → bundle branches → Purkinje fibers)
  • Full classification of first-degree, Mobitz I, Mobitz II, and third-degree (complete) AV block — with PR interval behavior, level of block, and clinical significance for each
  • Real ECG comparison images showing the three grades of block
  • Bundle branch block (RBBB vs LBBB) criteria and prognostic implications
  • Causes grouped by category (ischemic/structural, drugs/toxins, infectious/infiltrative, iatrogenic)
  • Symptoms & red flags (including Stokes-Adams attacks)
  • Management/pacing indications per the 2023 ACC/AHA/ACCP/HRS bradycardia guideline
Content was pulled from Braunwald's Heart Disease, Tintinalli's Emergency Medicine, Fuster and Hurst's The Heart, Goldman-Cecil Medicine, and Guyton and Hall Physiology, cross-checked against the current 2023 guideline. A recent (2025) systematic review/meta-analysis on biventricular vs. RV pacing in AV block (PMID: 41291441) supports the guideline's preference for physiologic pacing noted in the management section — no contradictions found with the textbook material.

Heart Blocks Infographic

Image · PNG

This is a shared conversation. Sign in to Orris to start your own chat.