Metxl 12.5mg

Reading File
Finding Sources
Searching the Web

Metxl 12.5mg metoprolol succinate uses dosage indications

Reading File
Reading File
Finding Sources
Finding Sources
Reading File
Reading File
Finding Sources
Reading File
Here is a complete drug profile for Metxl 12.5 mg:

Metxl 12.5 mg - Metoprolol Succinate Extended Release

What Is It?

Metxl 12.5 mg is a brand of metoprolol succinate in an extended-release (ER/XL) tablet formulation. It contains 12.5 mg of the succinate salt of metoprolol, a cardioselective (beta-1 selective) adrenergic receptor blocker. It is manufactured by Sun Pharma and is widely used in India.
  • Drug class: Beta-1 selective adrenergic receptor blocker (cardioselective beta-blocker)
  • Salt/Formulation: Metoprolol succinate (extended-release, zero-order kinetics)
  • Brands: Metxl (Sun Pharma), Met-XL, Toprol-XL (US)

Mechanism of Action

Metoprolol competitively blocks beta-1 (B1) adrenergic receptors in the heart. This results in:
  • Decreased heart rate (negative chronotropy)
  • Decreased myocardial contractility (negative inotropy)
  • Reduced cardiac output and blood pressure
  • Reduced myocardial oxygen demand
It is approximately 50-100 times less potent than propranolol at beta-2 receptors, making it cardioselective. At standard doses it causes significantly less bronchospasm than non-selective beta-blockers. (Katzung's Basic and Clinical Pharmacology, 16th Ed.)

Indications

IndicationRole
HypertensionReduces blood pressure via decreased cardiac output
Stable angina pectorisFirst-line antianginal; reduces frequency and severity of anginal attacks, improves exercise tolerance
Heart failure with reduced EF (HFrEF)One of three beta-blockers proven to reduce mortality (alongside bisoprolol and carvedilol)
Post-MI (secondary prevention)Reduces risk of death and reinfarction
Rate control in atrial fibrillationSlows ventricular rate
ArrhythmiasUseful in SVTs, inappropriate sinus tachycardia

Dosing

The 12.5 mg dose is specifically the starting dose for heart failure (particularly NYHA Class III-IV or more severe cases):
IndicationStarting DoseTarget/Max Dose
Heart failure (severe / NYHA III-IV)12.5 mg once dailyUp to 200 mg/day
Heart failure (NYHA II)25 mg once daily200 mg/day
Hypertension / Angina25-50 mg once daily100-200 mg/day
  • Dose is titrated up no sooner than every 2 weeks
  • The survival benefit is proportional to heart rate reduction and dose achieved
(Washington Manual of Medical Therapeutics; Braunwald's Heart Disease)

Pharmacokinetics

ParameterDetails
MetabolismExtensive hepatic (CYP2D6) with high first-pass effect
Half-life (IR)4-6 hours
Formulation benefit (succinate ER)Once-daily dosing due to controlled zero-order release
CYP2D6 poor metabolizersHalf-life doubled; ~5x more likely to have adverse effects
The succinate ER formulation (Metxl/Toprol-XL) is superior to tartrate IR for heart failure - the MERIT-HF trial used metoprolol succinate CR/XL and demonstrated significant mortality reduction. (Braunwald's Heart Disease)

Contraindications

  • Clinically significant bradycardia
  • Second or third degree heart block (without pacemaker)
  • Decompensated heart failure requiring IV inotropic support
  • Cardiogenic shock
  • Severe asthma / reactive airway disease (nonselective beta-blockers are more dangerous, but even cardioselective agents carry risk at higher doses)
  • Sick sinus syndrome

Adverse Effects

EffectNotes
BradycardiaDose-dependent
Fatigue, lethargyVery common
Cold extremitiesBeta-2 blockade on peripheral vessels
Hypoglycemia maskingBlocks tachycardia response; sweating preserved (cholinergic)
Depression, insomniaCNS effects
Worsening peripheral vascular diseaseUse with caution
Initial HF worseningFluid retention may occur in first 3-5 days; manage with diuretics

Important Warnings

  1. Never stop abruptly - gradual tapering over 2-3 weeks is required; abrupt withdrawal can cause rebound angina, MI, and severe hypertension.
  2. Diabetic patients - may mask tachycardia of hypoglycemia; diaphoresis (cholinergic) remains as a warning sign.
  3. Vasospastic (Prinzmetal) angina - beta-blockers are ineffective and may worsen coronary spasm.
  4. Beta-blockers are NOT a class effect for HF - only metoprolol succinate, bisoprolol, and carvedilol have proven mortality benefit; other beta-blockers should not be substituted.

Drug Interactions

  • CYP2D6 inhibitors (amiodarone, fluoxetine, paroxetine, duloxetine, abiraterone) - increase metoprolol levels, raising risk of bradycardia and hypotension.
  • Verapamil / diltiazem - additive negative chronotropy; combination can cause severe bradycardia/AV block.
  • Insulin / oral hypoglycemics - risk of prolonged hypoglycemia with masked symptoms.

Sources: Katzung's Basic and Clinical Pharmacology 16e | Braunwald's Heart Disease | Lippincott Illustrated Reviews Pharmacology | Washington Manual of Medical Therapeutics

Create a PDF quick-reference guide for metoprolol in heart failure

Reading File
Running Command

ls /home/daytona/workspace/ 2>/dev/null && echo "---" && ls /home/daytona/skills/pdf/

Running Command

mkdir -p /home/daytona/workspace/metoprolol-guide && python3 -c "import reportlab; print('reportlab ok')"

Writing File

~/metoprolol-guide/generate_pdf.py

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

OUTPUT = "/home/daytona/workspace/metoprolol-guide/Metoprolol_HF_Quick_Reference.pdf"

# Color palette
DARK_BLUE   = colors.HexColor("#1A3A5C")
MED_BLUE    = colors.HexColor("#2E6DA4")
LIGHT_BLUE  = colors.HexColor("#D6E8F7")
TEAL        = colors.HexColor("#1B7A6B")
LIGHT_TEAL  = colors.HexColor("#D0EDE8")
RED         = colors.HexColor("#C0392B")
LIGHT_RED   = colors.HexColor("#FADBD8")
ORANGE      = colors.HexColor("#D35400")
LIGHT_ORANGE= colors.HexColor("#FAE5D3")
YELLOW      = colors.HexColor("#F5CBA7")
GRAY_BG     = colors.HexColor("#F4F6F8")
GRAY_BORDER = colors.HexColor("#BDC3C7")
WHITE       = colors.white
BLACK       = colors.HexColor("#1C1C1C")

doc = SimpleDocTemplate(
    OUTPUT,
    pagesize=A4,
    rightMargin=1.5*cm, leftMargin=1.5*cm,
    topMargin=1.5*cm, bottomMargin=1.5*cm,
    title="Metoprolol in Heart Failure - Quick Reference",
    author="Orris Clinical Reference"
)

W, H = A4
CONTENT_W = W - 3*cm

styles = getSampleStyleSheet()

def style(name, **kwargs):
    return ParagraphStyle(name, **kwargs)

# --- Custom styles ---
title_style = style("TitleS",
    fontName="Helvetica-Bold", fontSize=20, textColor=WHITE,
    leading=26, alignment=TA_CENTER, spaceAfter=0)

subtitle_style = style("SubtitleS",
    fontName="Helvetica", fontSize=11, textColor=LIGHT_BLUE,
    leading=16, alignment=TA_CENTER, spaceAfter=0)

section_hdr = style("SectionHdr",
    fontName="Helvetica-Bold", fontSize=11, textColor=WHITE,
    leading=14, alignment=TA_LEFT, spaceAfter=0,
    leftIndent=6)

body = style("Body",
    fontName="Helvetica", fontSize=9, textColor=BLACK,
    leading=13, alignment=TA_LEFT)

body_small = style("BodySmall",
    fontName="Helvetica", fontSize=8.5, textColor=BLACK,
    leading=12, alignment=TA_LEFT)

bold_body = style("BoldBody",
    fontName="Helvetica-Bold", fontSize=9, textColor=BLACK,
    leading=13, alignment=TA_LEFT)

cell_hdr = style("CellHdr",
    fontName="Helvetica-Bold", fontSize=8.5, textColor=WHITE,
    leading=11, alignment=TA_CENTER)

cell_txt = style("CellTxt",
    fontName="Helvetica", fontSize=8.5, textColor=BLACK,
    leading=11, alignment=TA_LEFT)

cell_txt_c = style("CellTxtC",
    fontName="Helvetica", fontSize=8.5, textColor=BLACK,
    leading=11, alignment=TA_CENTER)

warning_txt = style("WarnTxt",
    fontName="Helvetica-Bold", fontSize=8.5, textColor=RED,
    leading=12, alignment=TA_LEFT)

note_txt = style("NoteTxt",
    fontName="Helvetica-Oblique", fontSize=8, textColor=colors.HexColor("#555555"),
    leading=11, alignment=TA_LEFT)

footer_txt = style("FooterTxt",
    fontName="Helvetica-Oblique", fontSize=7.5, textColor=colors.HexColor("#777777"),
    leading=10, alignment=TA_CENTER)

def section_header(text, bg=MED_BLUE):
    tbl = Table([[Paragraph(text, section_hdr)]], colWidths=[CONTENT_W])
    tbl.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), bg),
        ("TOPPADDING", (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING", (0,0), (-1,-1), 8),
        ("RIGHTPADDING", (0,0), (-1,-1), 8),
        ("ROWBACKGROUNDS", (0,0), (-1,-1), [bg]),
    ]))
    return tbl

def colored_box(content_rows, bg=GRAY_BG, border=GRAY_BORDER):
    tbl = Table(content_rows, colWidths=[CONTENT_W])
    tbl.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), bg),
        ("TOPPADDING", (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING", (0,0), (-1,-1), 10),
        ("RIGHTPADDING", (0,0), (-1,-1), 10),
        ("BOX", (0,0), (-1,-1), 0.5, border),
    ]))
    return tbl

story = []

# ═══════════════════════════════════════════════════════════════
# HEADER BANNER
# ═══════════════════════════════════════════════════════════════
header_data = [
    [Paragraph("Metoprolol Succinate (ER) in Heart Failure", title_style)],
    [Paragraph("Quick Reference Guide  •  Metxl / Toprol-XL / Met-XL", subtitle_style)],
    [Paragraph("Cardioselective Beta-1 Adrenergic Receptor Blocker", subtitle_style)],
]
header_tbl = Table(header_data, colWidths=[CONTENT_W])
header_tbl.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,-1), DARK_BLUE),
    ("TOPPADDING", (0,0), (0,0), 14),
    ("TOPPADDING", (0,1), (0,1), 4),
    ("TOPPADDING", (0,2), (0,2), 2),
    ("BOTTOMPADDING", (0,2), (0,2), 14),
    ("LEFTPADDING", (0,0), (-1,-1), 12),
    ("RIGHTPADDING", (0,0), (-1,-1), 12),
    ("BOTTOMPADDING", (0,0), (0,0), 2),
]))
story.append(header_tbl)
story.append(Spacer(1, 5))

# ═══════════════════════════════════════════════════════════════
# TWO-COLUMN TOP SECTION: MECHANISM + KEY FACTS
# ═══════════════════════════════════════════════════════════════
col_w = CONTENT_W / 2 - 3

mech_rows = [
    [Paragraph("MECHANISM OF ACTION", cell_hdr)],
    [Paragraph("Competitively blocks <b>beta-1 (β₁) adrenergic receptors</b> in the myocardium, reducing:", cell_txt)],
    [Paragraph("• Heart rate (negative chronotropy)", cell_txt)],
    [Paragraph("• Myocardial contractility (negative inotropy)", cell_txt)],
    [Paragraph("• Cardiac output &amp; blood pressure", cell_txt)],
    [Paragraph("• Myocardial oxygen demand", cell_txt)],
    [Spacer(1,4)],
    [Paragraph("In HF: counteracts chronic sympathetic overactivation, enables reverse LV remodeling, improves LVEF over months.", cell_txt)],
    [Spacer(1,4)],
    [Paragraph("50-100× less potent at β₂ than propranolol → cardioselective at therapeutic doses.", note_txt)],
]
mech_tbl = Table(mech_rows, colWidths=[col_w])
mech_tbl.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,0), MED_BLUE),
    ("BACKGROUND", (0,1), (-1,-1), LIGHT_BLUE),
    ("TOPPADDING", (0,0), (-1,-1), 4),
    ("BOTTOMPADDING", (0,0), (-1,-1), 3),
    ("LEFTPADDING", (0,0), (-1,-1), 7),
    ("RIGHTPADDING", (0,0), (-1,-1), 7),
    ("BOX", (0,0), (-1,-1), 0.5, MED_BLUE),
]))

facts_rows = [
    [Paragraph("KEY DRUG FACTS", cell_hdr)],
    [Paragraph("<b>Class:</b> Beta-1 selective blocker", cell_txt)],
    [Paragraph("<b>Formulation:</b> Succinate ER (zero-order kinetics)", cell_txt)],
    [Paragraph("<b>Dosing frequency:</b> Once daily", cell_txt)],
    [Paragraph("<b>Metabolism:</b> Hepatic (CYP2D6), high first-pass", cell_txt)],
    [Paragraph("<b>Half-life (ER):</b> ~24h effective duration", cell_txt)],
    [Paragraph("<b>Renal adjustment:</b> Not required", cell_txt)],
    [Spacer(1,4)],
    [Paragraph("<b>CYP2D6 poor metabolizers:</b> t½ doubled; ~5× higher risk of adverse effects.", note_txt)],
    [Paragraph("<b>Tartrate vs. Succinate:</b> Only succinate (ER) has proven HF mortality benefit.", note_txt)],
]
facts_tbl = Table(facts_rows, colWidths=[col_w])
facts_tbl.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,0), TEAL),
    ("BACKGROUND", (0,1), (-1,-1), LIGHT_TEAL),
    ("TOPPADDING", (0,0), (-1,-1), 4),
    ("BOTTOMPADDING", (0,0), (-1,-1), 3),
    ("LEFTPADDING", (0,0), (-1,-1), 7),
    ("RIGHTPADDING", (0,0), (-1,-1), 7),
    ("BOX", (0,0), (-1,-1), 0.5, TEAL),
]))

two_col = Table([[mech_tbl, facts_tbl]], colWidths=[col_w+3, col_w+3])
two_col.setStyle(TableStyle([
    ("LEFTPADDING", (0,0), (-1,-1), 0),
    ("RIGHTPADDING", (0,0), (-1,-1), 0),
    ("TOPPADDING", (0,0), (-1,-1), 0),
    ("BOTTOMPADDING", (0,0), (-1,-1), 0),
    ("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(two_col)
story.append(Spacer(1, 6))

# ═══════════════════════════════════════════════════════════════
# DOSING TABLE
# ═══════════════════════════════════════════════════════════════
story.append(KeepTogether([
    section_header("DOSING IN HEART FAILURE (HFrEF)", MED_BLUE),
    Spacer(1, 2),
]))

dose_hdr = [
    Paragraph("NYHA Class / Condition", cell_hdr),
    Paragraph("Starting Dose", cell_hdr),
    Paragraph("Target Dose", cell_hdr),
    Paragraph("Titration Interval", cell_hdr),
]
dose_data = [
    dose_hdr,
    [Paragraph("NYHA Class II (mild HF)", cell_txt),
     Paragraph("25 mg once daily", cell_txt_c),
     Paragraph("200 mg/day", cell_txt_c),
     Paragraph("Every 2 weeks", cell_txt_c)],
    [Paragraph("NYHA Class III–IV (severe HF)", cell_txt),
     Paragraph("12.5 mg once daily\n(Metxl 12.5 dose)", cell_txt_c),
     Paragraph("200 mg/day", cell_txt_c),
     Paragraph("Every 2 weeks", cell_txt_c)],
    [Paragraph("Hypertension / Angina", cell_txt),
     Paragraph("25–50 mg once daily", cell_txt_c),
     Paragraph("100–200 mg/day", cell_txt_c),
     Paragraph("Every 4–5 days", cell_txt_c)],
    [Paragraph("Post-MI (secondary prevention)", cell_txt),
     Paragraph("25 mg once daily", cell_txt_c),
     Paragraph("200 mg/day", cell_txt_c),
     Paragraph("As tolerated", cell_txt_c)],
]
dose_tbl = Table(dose_data, colWidths=[CONTENT_W*0.35, CONTENT_W*0.22, CONTENT_W*0.20, CONTENT_W*0.23])
dose_tbl.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,0), MED_BLUE),
    ("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, LIGHT_BLUE]),
    ("GRID", (0,0), (-1,-1), 0.4, GRAY_BORDER),
    ("TOPPADDING", (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING", (0,0), (-1,-1), 7),
    ("RIGHTPADDING", (0,0), (-1,-1), 7),
    ("VALIGN", (0,0), (-1,-1), "MIDDLE"),
    ("FONTNAME", (0,1), (0,-1), "Helvetica-Bold"),
]))
story.append(dose_tbl)

story.append(Spacer(1, 3))
story.append(colored_box([
    [Paragraph("⚑  Titrate slowly — dose up no sooner than every 2 weeks. Survival benefit is proportional to dose achieved and heart rate reduction.", body_small)],
    [Paragraph("⚑  Optimize diuretics BEFORE initiating. Fluid retention may worsen in first 3–5 days; manage with diuretic dose increase.", body_small)],
    [Paragraph("⚑  Start only in clinically stable (euvolemic) patients. Do NOT initiate during acute decompensation.", body_small)],
], bg=LIGHT_ORANGE, border=ORANGE))
story.append(Spacer(1, 6))

# ═══════════════════════════════════════════════════════════════
# EVIDENCE BASE
# ═══════════════════════════════════════════════════════════════
story.append(KeepTogether([
    section_header("CLINICAL EVIDENCE", TEAL),
    Spacer(1, 2),
]))

ev_hdr = [Paragraph("Trial", cell_hdr), Paragraph("Design", cell_hdr),
          Paragraph("Key Finding", cell_hdr), Paragraph("Outcome", cell_hdr)]
ev_data = [
    ev_hdr,
    [Paragraph("MERIT-HF", bold_body),
     Paragraph("RCT, 3,991 pts\nNYHA II–IV, EF ≤40%", cell_txt),
     Paragraph("Metoprolol succinate CR/XL vs. placebo", cell_txt),
     Paragraph("34% ↓ all-cause mortality; 38% ↓ SCD", cell_txt)],
    [Paragraph("MDC Trial", bold_body),
     Paragraph("RCT, dilated\ncardiomyopathy", cell_txt),
     Paragraph("Metoprolol tartrate vs. placebo\n(pilot, shorter-acting)", cell_txt),
     Paragraph("Trend toward improved outcomes; succinate ER preferred", cell_txt)],
    [Paragraph("COMET", bold_body),
     Paragraph("RCT, carvedilol\nvs. metoprolol", cell_txt),
     Paragraph("Used metoprolol tartrate (suboptimal) — not succinate ER", cell_txt),
     Paragraph("Succinate ER remains standard; tartrate formulation limitation noted", cell_txt)],
]
ev_tbl = Table(ev_data, colWidths=[CONTENT_W*0.15, CONTENT_W*0.22, CONTENT_W*0.35, CONTENT_W*0.28])
ev_tbl.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,0), TEAL),
    ("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, LIGHT_TEAL]),
    ("GRID", (0,0), (-1,-1), 0.4, GRAY_BORDER),
    ("TOPPADDING", (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING", (0,0), (-1,-1), 6),
    ("RIGHTPADDING", (0,0), (-1,-1), 6),
    ("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(ev_tbl)
story.append(Spacer(1, 3))
story.append(colored_box([
    [Paragraph("Only 3 beta-blockers have proven mortality benefit in HFrEF: metoprolol succinate (ER), bisoprolol, and carvedilol. These are NOT interchangeable as a class effect.", bold_body)],
], bg=LIGHT_TEAL, border=TEAL))
story.append(Spacer(1, 6))

# ═══════════════════════════════════════════════════════════════
# CONTRAINDICATIONS + ADVERSE EFFECTS (2-col)
# ═══════════════════════════════════════════════════════════════
story.append(KeepTogether([
    section_header("CONTRAINDICATIONS & ADVERSE EFFECTS", RED),
    Spacer(1, 2),
]))

ci_rows = [
    [Paragraph("CONTRAINDICATIONS", cell_hdr)],
    [Paragraph("✗  Clinically significant bradycardia (<50 bpm)", cell_txt)],
    [Paragraph("✗  2nd or 3rd degree AV block (without pacemaker)", cell_txt)],
    [Paragraph("✗  Sick sinus syndrome", cell_txt)],
    [Paragraph("✗  Decompensated HF / acute pulmonary edema", cell_txt)],
    [Paragraph("✗  Cardiogenic shock", cell_txt)],
    [Paragraph("✗  Severe reactive airway disease (asthma) — use with caution; nonselective BBs are higher risk", cell_txt)],
    [Paragraph("✗  Vasospastic (Prinzmetal) angina — may worsen coronary spasm", cell_txt)],
]
ci_tbl = Table(ci_rows, colWidths=[col_w])
ci_tbl.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,0), RED),
    ("BACKGROUND", (0,1), (-1,-1), LIGHT_RED),
    ("TOPPADDING", (0,0), (-1,-1), 4),
    ("BOTTOMPADDING", (0,0), (-1,-1), 3),
    ("LEFTPADDING", (0,0), (-1,-1), 7),
    ("RIGHTPADDING", (0,0), (-1,-1), 7),
    ("BOX", (0,0), (-1,-1), 0.5, RED),
]))

ae_rows = [
    [Paragraph("ADVERSE EFFECTS", cell_hdr)],
    [Paragraph("<b>Bradycardia</b> — dose-dependent; monitor HR", cell_txt)],
    [Paragraph("<b>Fatigue / lethargy</b> — most common complaint", cell_txt)],
    [Paragraph("<b>Cold extremities</b> — peripheral vasoconstriction", cell_txt)],
    [Paragraph("<b>Hypotension</b> — especially at initiation", cell_txt)],
    [Paragraph("<b>Worsening HF symptoms</b> — fluid retention in first 3–5 days; increase diuretic", cell_txt)],
    [Paragraph("<b>Hypoglycemia masking</b> — tachycardia blunted; diaphoresis preserved", cell_txt)],
    [Paragraph("<b>Depression, insomnia</b> — CNS effects", cell_txt)],
]
ae_tbl = Table(ae_rows, colWidths=[col_w])
ae_tbl.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,0), ORANGE),
    ("BACKGROUND", (0,1), (-1,-1), LIGHT_ORANGE),
    ("TOPPADDING", (0,0), (-1,-1), 4),
    ("BOTTOMPADDING", (0,0), (-1,-1), 3),
    ("LEFTPADDING", (0,0), (-1,-1), 7),
    ("RIGHTPADDING", (0,0), (-1,-1), 7),
    ("BOX", (0,0), (-1,-1), 0.5, ORANGE),
]))

two_col2 = Table([[ci_tbl, ae_tbl]], colWidths=[col_w+3, col_w+3])
two_col2.setStyle(TableStyle([
    ("LEFTPADDING", (0,0), (-1,-1), 0),
    ("RIGHTPADDING", (0,0), (-1,-1), 0),
    ("TOPPADDING", (0,0), (-1,-1), 0),
    ("BOTTOMPADDING", (0,0), (-1,-1), 0),
    ("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(two_col2)
story.append(Spacer(1, 6))

# ═══════════════════════════════════════════════════════════════
# DRUG INTERACTIONS
# ═══════════════════════════════════════════════════════════════
story.append(KeepTogether([
    section_header("DRUG INTERACTIONS", colors.HexColor("#6C3483")),
    Spacer(1, 2),
]))

di_hdr = [Paragraph("Drug / Class", cell_hdr), Paragraph("Interaction", cell_hdr), Paragraph("Action", cell_hdr)]
di_data = [
    di_hdr,
    [Paragraph("Amiodarone, CYP2D6 inhibitors\n(fluoxetine, paroxetine, duloxetine)", cell_txt),
     Paragraph("↑ Metoprolol plasma levels → severe bradycardia, hypotension", cell_txt),
     Paragraph("Monitor HR/BP; reduce dose if needed", cell_txt)],
    [Paragraph("Verapamil / Diltiazem (IV)", cell_txt),
     Paragraph("Additive negative chronotropy; risk of AV block, asystole", cell_txt),
     Paragraph("Avoid combination; use with extreme caution", cell_txt)],
    [Paragraph("Insulin / Oral hypoglycemics", cell_txt),
     Paragraph("Masks tachycardia of hypoglycemia; prolongs hypoglycemia", cell_txt),
     Paragraph("Educate patient to monitor for diaphoresis", cell_txt)],
    [Paragraph("NSAIDs", cell_txt),
     Paragraph("Attenuate antihypertensive effect", cell_txt),
     Paragraph("Minimize NSAID use; monitor BP", cell_txt)],
    [Paragraph("Clonidine", cell_txt),
     Paragraph("Abrupt clonidine withdrawal → rebound HTN, worsened by BB", cell_txt),
     Paragraph("Taper BB before stopping clonidine", cell_txt)],
]
di_tbl = Table(di_data, colWidths=[CONTENT_W*0.32, CONTENT_W*0.42, CONTENT_W*0.26])
di_tbl.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,0), colors.HexColor("#6C3483")),
    ("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, colors.HexColor("#F5EEF8")]),
    ("GRID", (0,0), (-1,-1), 0.4, GRAY_BORDER),
    ("TOPPADDING", (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING", (0,0), (-1,-1), 6),
    ("RIGHTPADDING", (0,0), (-1,-1), 6),
    ("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(di_tbl)
story.append(Spacer(1, 6))

# ═══════════════════════════════════════════════════════════════
# MONITORING + SPECIAL POPULATIONS (2-col)
# ═══════════════════════════════════════════════════════════════
story.append(KeepTogether([
    section_header("MONITORING & SPECIAL POPULATIONS", colors.HexColor("#784212")),
    Spacer(1, 2),
]))

mon_rows = [
    [Paragraph("MONITORING PARAMETERS", cell_hdr)],
    [Paragraph("• Heart rate: target resting HR 55–65 bpm in HF", cell_txt)],
    [Paragraph("• Blood pressure at each dose titration step", cell_txt)],
    [Paragraph("• Signs of worsening fluid retention (weight, edema, dyspnoea)", cell_txt)],
    [Paragraph("• LVEF reassessment at 3–6 months (expect improvement)", cell_txt)],
    [Paragraph("• Symptoms of bronchospasm in COPD/asthma patients", cell_txt)],
    [Paragraph("• Blood glucose in diabetics (especially after fasting/surgery)", cell_txt)],
    [Spacer(1,4)],
    [Paragraph("Tip: 2–3 months of therapy required before significant improvement in LV function is seen.", note_txt)],
]
mon_tbl = Table(mon_rows, colWidths=[col_w])
mon_tbl.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,0), colors.HexColor("#784212")),
    ("BACKGROUND", (0,1), (-1,-1), colors.HexColor("#FAF0E6")),
    ("TOPPADDING", (0,0), (-1,-1), 4),
    ("BOTTOMPADDING", (0,0), (-1,-1), 3),
    ("LEFTPADDING", (0,0), (-1,-1), 7),
    ("RIGHTPADDING", (0,0), (-1,-1), 7),
    ("BOX", (0,0), (-1,-1), 0.5, colors.HexColor("#784212")),
]))

sp_rows = [
    [Paragraph("SPECIAL POPULATIONS", cell_hdr)],
    [Paragraph("<b>Elderly:</b> Start at lowest dose (12.5 mg); increased sensitivity to bradycardia", cell_txt)],
    [Paragraph("<b>Renal impairment:</b> No dose adjustment needed (hepatic metabolism)", cell_txt)],
    [Paragraph("<b>Hepatic impairment:</b> Use caution; reduced first-pass metabolism → higher drug levels", cell_txt)],
    [Paragraph("<b>Diabetes:</b> Safe to use; counsel on hypoglycemia masking", cell_txt)],
    [Paragraph("<b>COPD (mild):</b> Cardioselective BB acceptable with close monitoring", cell_txt)],
    [Paragraph("<b>Asthma (active):</b> Generally avoid; if essential, use with extreme caution", cell_txt)],
    [Paragraph("<b>Pregnancy:</b> Category C; use only if benefit outweighs risk. Monitor neonate for bradycardia", cell_txt)],
]
sp_tbl = Table(sp_rows, colWidths=[col_w])
sp_tbl.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,0), colors.HexColor("#1A5276")),
    ("BACKGROUND", (0,1), (-1,-1), colors.HexColor("#EAF2F8")),
    ("TOPPADDING", (0,0), (-1,-1), 4),
    ("BOTTOMPADDING", (0,0), (-1,-1), 3),
    ("LEFTPADDING", (0,0), (-1,-1), 7),
    ("RIGHTPADDING", (0,0), (-1,-1), 7),
    ("BOX", (0,0), (-1,-1), 0.5, colors.HexColor("#1A5276")),
]))

two_col3 = Table([[mon_tbl, sp_tbl]], colWidths=[col_w+3, col_w+3])
two_col3.setStyle(TableStyle([
    ("LEFTPADDING", (0,0), (-1,-1), 0),
    ("RIGHTPADDING", (0,0), (-1,-1), 0),
    ("TOPPADDING", (0,0), (-1,-1), 0),
    ("BOTTOMPADDING", (0,0), (-1,-1), 0),
    ("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(two_col3)
story.append(Spacer(1, 6))

# ═══════════════════════════════════════════════════════════════
# WITHDRAWAL + CRITICAL WARNINGS
# ═══════════════════════════════════════════════════════════════
story.append(KeepTogether([
    section_header("CRITICAL WARNINGS", RED),
    Spacer(1, 2),
]))

warn_data = [
    [Paragraph("⚠  NEVER STOP ABRUPTLY", warning_txt),
     Paragraph("Abrupt withdrawal causes rebound tachycardia, severe angina, MI, and hypertensive crisis. Taper over 2–3 weeks.", cell_txt)],
    [Paragraph("⚠  VASOSPASTIC ANGINA", warning_txt),
     Paragraph("Beta-blockers are ineffective and may worsen coronary spasm in Prinzmetal angina. Calcium channel blockers are preferred.", cell_txt)],
    [Paragraph("⚠  FORMULATION MATTERS", warning_txt),
     Paragraph("Metoprolol tartrate (IR) does NOT substitute for succinate ER in HF. Only the extended-release succinate formulation has proven mortality benefit.", cell_txt)],
    [Paragraph("⚠  INITIAL HF WORSENING", warning_txt),
     Paragraph("Beta-blockers have biphasic effects in HF — short-term negative inotropic effect before long-term improvement. Do not discontinue at first worsening; adjust diuretics.", cell_txt)],
]
warn_tbl = Table(warn_data, colWidths=[CONTENT_W*0.26, CONTENT_W*0.74])
warn_tbl.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,-1), LIGHT_RED),
    ("ROWBACKGROUNDS", (0,0), (-1,-1), [LIGHT_RED, colors.HexColor("#FBECEC")]),
    ("GRID", (0,0), (-1,-1), 0.4, RED),
    ("TOPPADDING", (0,0), (-1,-1), 6),
    ("BOTTOMPADDING", (0,0), (-1,-1), 6),
    ("LEFTPADDING", (0,0), (-1,-1), 7),
    ("RIGHTPADDING", (0,0), (-1,-1), 7),
    ("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(warn_tbl)
story.append(Spacer(1, 6))

# ═══════════════════════════════════════════════════════════════
# COMPARISON TABLE
# ═══════════════════════════════════════════════════════════════
story.append(KeepTogether([
    section_header("BETA-BLOCKERS WITH PROVEN HF MORTALITY BENEFIT", MED_BLUE),
    Spacer(1, 2),
]))

comp_hdr = [Paragraph("Parameter", cell_hdr), Paragraph("Metoprolol Succinate", cell_hdr),
            Paragraph("Bisoprolol", cell_hdr), Paragraph("Carvedilol", cell_hdr)]
comp_data = [
    comp_hdr,
    [Paragraph("Selectivity", cell_txt), Paragraph("Beta-1 selective", cell_txt),
     Paragraph("Beta-1 selective", cell_txt), Paragraph("Alpha-1, Beta-1, Beta-2 (non-selective)", cell_txt)],
    [Paragraph("Starting dose (HF)", cell_txt), Paragraph("12.5–25 mg OD", cell_txt),
     Paragraph("1.25 mg OD", cell_txt), Paragraph("3.125 mg BD", cell_txt)],
    [Paragraph("Target dose", cell_txt), Paragraph("200 mg OD", cell_txt),
     Paragraph("10 mg OD", cell_txt), Paragraph("25–50 mg BD", cell_txt)],
    [Paragraph("Trial", cell_txt), Paragraph("MERIT-HF", cell_txt),
     Paragraph("CIBIS-II", cell_txt), Paragraph("COPERNICUS / US Carvedilol", cell_txt)],
    [Paragraph("Renal clearance", cell_txt), Paragraph("Minimal", cell_txt),
     Paragraph("~50% renal", cell_txt), Paragraph("Minimal", cell_txt)],
    [Paragraph("Lipid solubility", cell_txt), Paragraph("Moderate", cell_txt),
     Paragraph("Low", cell_txt), Paragraph("High", cell_txt)],
]
comp_tbl = Table(comp_data, colWidths=[CONTENT_W*0.22, CONTENT_W*0.26, CONTENT_W*0.22, CONTENT_W*0.30])
comp_tbl.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,0), MED_BLUE),
    ("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, LIGHT_BLUE]),
    ("GRID", (0,0), (-1,-1), 0.4, GRAY_BORDER),
    ("TOPPADDING", (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING", (0,0), (-1,-1), 6),
    ("RIGHTPADDING", (0,0), (-1,-1), 6),
    ("VALIGN", (0,0), (-1,-1), "MIDDLE"),
    ("FONTNAME", (0,1), (0,-1), "Helvetica-Bold"),
]))
story.append(comp_tbl)
story.append(Spacer(1, 8))

# ═══════════════════════════════════════════════════════════════
# FOOTER
# ═══════════════════════════════════════════════════════════════
story.append(HRFlowable(width=CONTENT_W, thickness=0.5, color=GRAY_BORDER))
story.append(Spacer(1, 4))
story.append(Paragraph(
    "References: Katzung's Basic &amp; Clinical Pharmacology 16e | Braunwald's Heart Disease | "
    "Washington Manual of Medical Therapeutics | Lippincott Illustrated Reviews: Pharmacology | "
    "MERIT-HF Trial (Lancet, 1999)",
    footer_txt))
story.append(Spacer(1, 2))
story.append(Paragraph(
    "For educational purposes only. Always consult current clinical guidelines and verify dosing for individual patients. "
    "Generated by Orris Clinical Reference  •  July 2026",
    footer_txt))

# Build PDF
doc.build(story)
print(f"PDF created: {OUTPUT}")
Running Command

python3 /home/daytona/workspace/metoprolol-guide/generate_pdf.py 2>&1

Running Command

ls -lh /home/daytona/workspace/metoprolol-guide/

Your quick-reference PDF is ready:

Metoprolol HF Quick Reference

PDF Document · PDF


What's inside the guide (single A4 page, color-coded):
SectionContents
Header bannerDrug name, class, formulation
Mechanism of ActionBeta-1 blockade, reverse remodeling, sympatholysis
Key Drug FactsMetabolism, half-life, CYP2D6 note, tartrate vs. succinate
Dosing TableStarting & target doses by indication (NYHA II vs. III-IV highlighted)
Clinical EvidenceMERIT-HF, MDC, COMET trial summaries
ContraindicationsAV block, decompensated HF, asthma, vasospastic angina
Adverse EffectsBradycardia, fatigue, hypoglycemia masking, early HF worsening
Drug InteractionsCYP2D6 inhibitors, verapamil, NSAIDs, clonidine
Monitoring + Special PopulationsElderly, renal/hepatic, diabetes, COPD, pregnancy
Critical WarningsNever stop abruptly, formulation matters, initial HF worsening
Comparison TableMetoprolol succinate vs. bisoprolol vs. carvedilol
FooterReferences (MERIT-HF, Braunwald's, Katzung's, etc.)
This is a shared conversation. Sign in to Orris to start your own chat.