Compare warfarin and heparin Refer kdt
Note: KD Tripathi's Essentials of Medical Pharmacology (KDT) is not available in this library. The following comparison is drawn from Lippincott Illustrated Reviews: Pharmacology and Goodman & Gilman's - both are equally authoritative standard references covering the same content as KDT on this topic.
| Feature | Heparin (Unfractionated) | Warfarin |
|---|---|---|
| Class | Parenteral anticoagulant | Oral anticoagulant (Vitamin K antagonist) |
| Type | Glycosaminoglycan (indirect thrombin inhibitor) | Coumarin derivative |
| Route | IV or SC only (not oral - destroyed by GI) | Oral |
"Heparin acts at a number of molecular targets, but its anticoagulant effect is a consequence of binding to antithrombin III, with the subsequent rapid inactivation of coagulation factors."
- Lippincott Illustrated Reviews: Pharmacology
"Warfarin interferes with the synthesis of the coagulation factors" - Lippincott Illustrated Reviews: Pharmacology
| Parameter | Heparin | Warfarin |
|---|---|---|
| Onset | Immediate (IV) / 1-2 h (SC) | Delayed - 2 to 5 days |
| Duration | Short (t½ ~1-2 h, dose-dependent) | Long (t½ ~36-42 h) |
| Protein binding | Binds many plasma proteins | >99% bound to albumin |
| Metabolism | Liver and reticuloendothelial system | Hepatic (CYP2C9) |
| Crosses placenta? | NO - safe in pregnancy | YES - teratogenic (contraindicated) |
| Excreted in breast milk? | No | Yes (caution) |
| Bioavailability | Not oral; variable SC absorption | ~100% oral |
| Heparin | Warfarin | |
|---|---|---|
| Lab test | aPTT (activated partial thromboplastin time) | PT / INR (prothrombin time) |
| Therapeutic target | aPTT 1.5-2.5x control | INR 2.0-3.0 (most indications) |
| Reflects | Intrinsic + common pathway (Factors IIa, Xa, IXa, XIa, XIIa) | Extrinsic + common pathway (Factors II, VII, IX, X) |
| Use | Heparin | Warfarin |
|---|---|---|
| Acute thrombosis (DVT/PE) | First-line initial treatment | Used for long-term maintenance (after bridging) |
| Unstable angina / NSTEMI | Yes (UFH or LMWH) | No |
| Atrial fibrillation | Bridge therapy | Long-term stroke prevention |
| Prosthetic heart valves | Bridge during procedures | Long-term |
| Pregnancy | Drug of choice (doesn't cross placenta) | Contraindicated (teratogenic) |
| Hemodialysis | Yes (circuit anticoagulation) | No |
| DIC | May be used | Not used |
| Heparin | Warfarin | |
|---|---|---|
| Antidote | Protamine sulfate | Vitamin K (phytonadione) |
| Mechanism | Positively charged protamine binds negatively charged heparin, forming an inactive complex | Replenishes active Vitamin K; restores clotting factor synthesis |
| Onset of reversal | Immediate | Hours (synthesis needed) |
| Emergency reversal | Protamine IV | Fresh Frozen Plasma (FFP) or Prothrombin Complex Concentrate (PCC) for immediate reversal; Vitamin K for slower reversal |
| Caveat | Excess protamine is itself a weak anticoagulant; incomplete reversal of LMWH | Vitamin K reversal may make re-anticoagulation with warfarin difficult for weeks |
| Property | Heparin | Warfarin |
|---|---|---|
| Chemical nature | Acidic glycosaminoglycan | Coumarin derivative |
| Route | IV / SC | Oral |
| Site of action | Blood (activates AT-III) | Liver (inhibits VKORC1) |
| Mechanism | Indirect thrombin & Xa inhibitor | Inhibits Vit K-dependent factor synthesis |
| Factors inhibited | IIa, Xa (IXa, XIa, XIIa) | II, VII, IX, X, Protein C, S |
| Onset | Immediate | Delayed (2-5 days) |
| Duration | Short | Long |
| Monitoring | aPTT | PT/INR |
| Placental transfer | No | Yes |
| Use in pregnancy | Safe | Contraindicated |
| Antidote | Protamine sulfate | Vitamin K + FFP/PCC |
| HIT | Yes (immune, causes thrombosis) | No |
| Osteoporosis | Yes (long-term) | No |
| Drug interactions | Few | Extensive (CYP2C9) |
| Skin necrosis | No | Yes (early, due to Protein C depletion) |
Create a document on warfarin drug interactions and INR management
mkdir -p /tmp/workspace/warfarin-doc && ls /tmp/workspace/warfarin-doc/
~/warfarin-doc/build_doc.py
from docx import Document
from docx.shared import Pt, Inches, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
import copy
doc = Document()
# ── Page margins ──────────────────────────────────────────────────────────────
section = doc.sections[0]
section.top_margin = Inches(1.0)
section.bottom_margin = Inches(1.0)
section.left_margin = Inches(1.15)
section.right_margin = Inches(1.15)
# ── Base styles ───────────────────────────────────────────────────────────────
normal = doc.styles["Normal"]
normal.font.name = "Calibri"
normal.font.size = Pt(11)
# ── Helper: set cell background ───────────────────────────────────────────────
def set_cell_bg(cell, hex_color):
tc = cell._tc
tcPr = tc.get_or_add_tcPr()
shd = OxmlElement("w:shd")
shd.set(qn("w:val"), "clear")
shd.set(qn("w:color"), "auto")
shd.set(qn("w:fill"), hex_color)
tcPr.append(shd)
def set_cell_borders(cell, border_color="4472C4"):
tc = cell._tc
tcPr = tc.get_or_add_tcPr()
tcBorders = OxmlElement("w:tcBorders")
for side in ["top","left","bottom","right"]:
b = OxmlElement(f"w:{side}")
b.set(qn("w:val"), "single")
b.set(qn("w:sz"), "4")
b.set(qn("w:space"), "0")
b.set(qn("w:color"), border_color)
tcBorders.append(b)
tcPr.append(tcBorders)
def header_row(row, bg="1F3864"):
for cell in row.cells:
set_cell_bg(cell, bg)
set_cell_borders(cell, "FFFFFF")
for para in cell.paragraphs:
para.alignment = WD_ALIGN_PARAGRAPH.CENTER
for run in para.runs:
run.bold = True
run.font.color.rgb = RGBColor(0xFF, 0xFF, 0xFF)
run.font.size = Pt(10)
def subheader_row(row, bg="2E75B6"):
for cell in row.cells:
set_cell_bg(cell, bg)
set_cell_borders(cell, "FFFFFF")
for para in cell.paragraphs:
for run in para.runs:
run.bold = True
run.font.color.rgb = RGBColor(0xFF, 0xFF, 0xFF)
run.font.size = Pt(10)
def alt_row(row, i):
bg = "D6E4F0" if i % 2 == 0 else "FFFFFF"
for cell in row.cells:
set_cell_bg(cell, bg)
set_cell_borders(cell, "AEC6D4")
# ── Title block ───────────────────────────────────────────────────────────────
title_para = doc.add_paragraph()
title_para.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = title_para.add_run("Warfarin Drug Interactions & INR Management")
run.bold = True
run.font.size = Pt(20)
run.font.color.rgb = RGBColor(0x1F, 0x38, 0x64)
subtitle = doc.add_paragraph()
subtitle.alignment = WD_ALIGN_PARAGRAPH.CENTER
run2 = subtitle.add_run("A Clinical Reference Guide")
run2.italic = True
run2.font.size = Pt(12)
run2.font.color.rgb = RGBColor(0x2E, 0x75, 0xB6)
doc.add_paragraph() # spacer
# ── Divider ───────────────────────────────────────────────────────────────────
def add_divider():
p = doc.add_paragraph()
pPr = p._p.get_or_add_pPr()
pBdr = OxmlElement("w:pBdr")
bottom = OxmlElement("w:bottom")
bottom.set(qn("w:val"), "single")
bottom.set(qn("w:sz"), "6")
bottom.set(qn("w:space"), "1")
bottom.set(qn("w:color"), "2E75B6")
pBdr.append(bottom)
pPr.append(pBdr)
# ── Section heading helper ─────────────────────────────────────────────────────
def add_section_heading(text):
add_divider()
h = doc.add_paragraph()
run = h.add_run(text)
run.bold = True
run.font.size = Pt(13)
run.font.color.rgb = RGBColor(0x1F, 0x38, 0x64)
def add_sub_heading(text):
h = doc.add_paragraph()
run = h.add_run(text)
run.bold = True
run.font.size = Pt(11)
run.font.color.rgb = RGBColor(0x2E, 0x75, 0xB6)
def add_body(text):
p = doc.add_paragraph(text)
p.paragraph_format.space_after = Pt(4)
def add_bullet(text, bold_prefix=None):
p = doc.add_paragraph(style="List Bullet")
p.paragraph_format.left_indent = Inches(0.25)
if bold_prefix:
run1 = p.add_run(bold_prefix)
run1.bold = True
run1.font.size = Pt(11)
p.add_run(text).font.size = Pt(11)
else:
p.add_run(text).font.size = Pt(11)
# ══════════════════════════════════════════════════════════════════════════════
# 1. INTRODUCTION
# ══════════════════════════════════════════════════════════════════════════════
add_section_heading("1. Introduction")
add_body(
"Warfarin (a coumarin derivative) is the most widely used oral anticoagulant. It acts by "
"inhibiting Vitamin K epoxide reductase (VKORC1), blocking the gamma-carboxylation and "
"activation of clotting factors II, VII, IX, and X, as well as the anticoagulant proteins C and S. "
"Because of its narrow therapeutic index and extensive drug and dietary interactions, careful "
"INR monitoring is essential throughout therapy."
)
add_body(
"The therapeutic effect of warfarin is measured by the International Normalized Ratio (INR), "
"which standardizes the prothrombin time (PT) across different laboratory reagents. The INR is "
"defined as (patient PT / mean normal PT)^ISI, where ISI is the International Sensitivity Index "
"of the thromboplastin reagent used."
)
# ══════════════════════════════════════════════════════════════════════════════
# 2. PHARMACOKINETICS & DOSING
# ══════════════════════════════════════════════════════════════════════════════
add_section_heading("2. Pharmacokinetics & Dosing")
pk_data = [
("Property", "Details"),
("Chemical nature", "Racemic mixture of R- and S-warfarin; S-enantiomer is ~3-5x more potent"),
("Route of administration", "Oral; almost 100% bioavailable"),
("Protein binding", ">99% bound to albumin"),
("Half-life", "36-42 hours (long; accounts for cumulative dosing effects)"),
("Metabolism", "Hepatic via CYP2C9 (S-warfarin, major), CYP3A4, CYP1A2 (R-warfarin)"),
("Onset of action", "Delayed - 2 to 5 days (time for existing active clotting factors to be cleared)"),
("Monitoring parameter", "INR (reflects factors II, VII, IX, X - extrinsic and common pathways)"),
("Initial dosing", "5-10 mg/day; adjust weekly based on INR response"),
("Maintenance dose", "Typically 2-10 mg/day; highly variable between individuals"),
("Genetic factors", "CYP2C9 and VKORC1 polymorphisms significantly affect dosing requirements"),
]
tbl = doc.add_table(rows=len(pk_data), cols=2)
tbl.style = "Table Grid"
tbl.autofit = False
tbl.columns[0].width = Inches(2.3)
tbl.columns[1].width = Inches(4.0)
for i, (prop, detail) in enumerate(pk_data):
row = tbl.rows[i]
row.cells[0].text = prop
row.cells[1].text = detail
if i == 0:
header_row(row)
else:
alt_row(row, i)
for cell in row.cells:
for para in cell.paragraphs:
for run in para.runs:
run.font.size = Pt(10)
row.cells[0].paragraphs[0].runs[0].bold = True
doc.add_paragraph()
# ══════════════════════════════════════════════════════════════════════════════
# 3. THERAPEUTIC INR TARGETS
# ══════════════════════════════════════════════════════════════════════════════
add_section_heading("3. Therapeutic INR Targets")
add_body(
"The INR target range varies by clinical indication. Maintaining the INR within the target "
"range is essential - sub-therapeutic INR increases thromboembolic risk, while supratherapeutic "
"INR increases bleeding risk significantly (especially when INR > 4.5-5.0)."
)
inr_targets = [
("Clinical Indication", "Target INR Range"),
("Venous thromboembolism (DVT / PE) - treatment", "2.0 - 3.0"),
("Venous thromboembolism - long-term prevention", "2.0 - 3.0"),
("Atrial fibrillation (non-valvular)", "2.0 - 3.0"),
("Bioprosthetic heart valve (mitral)", "2.0 - 3.0"),
("Mechanical heart valve - bileaflet (aortic position)", "2.0 - 3.0"),
("Mechanical heart valve - tilting disk or caged-ball", "2.5 - 3.5"),
("Mechanical mitral valve", "2.5 - 3.5"),
("Antiphospholipid syndrome with recurrent thrombosis", "2.5 - 3.5"),
("Cardioversion (for AF)", "2.0 - 3.0 (for ≥3 weeks before and 4 weeks after)"),
]
tbl2 = doc.add_table(rows=len(inr_targets), cols=2)
tbl2.style = "Table Grid"
tbl2.autofit = False
tbl2.columns[0].width = Inches(4.2)
tbl2.columns[1].width = Inches(2.1)
for i, (ind, tgt) in enumerate(inr_targets):
row = tbl2.rows[i]
row.cells[0].text = ind
row.cells[1].text = tgt
if i == 0:
header_row(row)
else:
alt_row(row, i)
for cell in row.cells:
for para in cell.paragraphs:
for run in para.runs:
run.font.size = Pt(10)
row.cells[1].paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER
doc.add_paragraph()
# ══════════════════════════════════════════════════════════════════════════════
# 4. DRUG INTERACTIONS
# ══════════════════════════════════════════════════════════════════════════════
add_section_heading("4. Drug Interactions with Warfarin")
add_body(
"Warfarin has one of the most extensive drug interaction profiles of any medication. "
"Interactions can be broadly classified as pharmacokinetic (affecting warfarin levels) "
"or pharmacodynamic (affecting coagulation cascade without changing warfarin levels). "
"Both types can increase or decrease INR."
)
# 4a - Mechanism types
add_sub_heading("4.1 Mechanisms of Interaction")
mech_rows = [
("Mechanism", "Direction", "Examples"),
("CYP2C9 inhibition\n(blocks S-warfarin metabolism)", "↑ INR (increased effect)",
"Amiodarone, fluconazole, metronidazole, TMP-SMX, disulfiram, cimetidine"),
("CYP2C9 induction\n(accelerates S-warfarin metabolism)", "↓ INR (decreased effect)",
"Rifampin, barbiturates, carbamazepine, phenytoin, primidone"),
("Displacement from albumin\n(protein binding competition)", "Transient ↑ INR",
"Phenylbutazone, sulfinpyrazone, NSAIDs"),
("Reduced GI absorption of warfarin", "↓ INR",
"Cholestyramine, colestipol (bind warfarin in gut)"),
("Pharmacodynamic synergism\n(additive anticoagulant/antiplatelet effects)", "↑ Bleeding risk",
"Heparin, aspirin (high-dose), NSAIDs, clopidogrel, direct oral anticoagulants"),
("Reduced clotting factor synthesis\n(liver disease)", "↑ INR",
"Hepatic disease, alcohol excess"),
("Increased catabolism of clotting factors", "↑ INR",
"Hyperthyroidism, fever"),
("Reduced synthesis of vitamin K\n(gut flora suppression)", "↑ INR",
"Broad-spectrum antibiotics (fluoroquinolones, macrolides, 3rd-gen cephalosporins)"),
("Competitive antagonism - dietary vitamin K", "↓ INR",
"Green leafy vegetables (spinach, kale, broccoli), vitamin K supplements"),
("Reduced absorption of dietary vitamin K\n(malabsorption)", "↑ INR",
"Prolonged antibiotic use, fat malabsorption syndromes"),
]
tbl3 = doc.add_table(rows=len(mech_rows), cols=3)
tbl3.style = "Table Grid"
tbl3.autofit = False
tbl3.columns[0].width = Inches(2.2)
tbl3.columns[1].width = Inches(1.5)
tbl3.columns[2].width = Inches(2.6)
for i, row_data in enumerate(mech_rows):
row = tbl3.rows[i]
for j, txt in enumerate(row_data):
row.cells[j].text = txt
if i == 0:
header_row(row)
else:
alt_row(row, i)
for cell in row.cells:
for para in cell.paragraphs:
for run in para.runs:
run.font.size = Pt(9.5)
doc.add_paragraph()
# 4b - Drugs that INCREASE INR
add_sub_heading("4.2 Drugs That Increase INR (Potentiate Warfarin)")
increase_inr = [
("Drug / Drug Class", "Magnitude", "Mechanism"),
("Amiodarone", "Significant", "CYP2C9 + CYP3A4 inhibition (both enantiomers)"),
("Fluconazole / Miconazole / Itraconazole", "Significant", "CYP2C9 inhibition (S-warfarin)"),
("Metronidazole", "Significant", "CYP2C9 inhibition (S-warfarin)"),
("Trimethoprim-sulfamethoxazole (TMP-SMX / Bactrim)", "Significant", "CYP2C9 inhibition + reduced gut Vit K"),
("Disulfiram", "Significant", "CYP inhibition (both enantiomers)"),
("Isoniazid (INH)", "Significant", "CYP2C9 inhibition"),
("Chloramphenicol", "Significant", "CYP inhibition"),
("Ciprofloxacin / other fluoroquinolones", "Moderate", "Gut flora suppression; CYP1A2 inhibition"),
("Clarithromycin / Erythromycin", "Moderate", "CYP3A4 inhibition; reduced gut Vit K"),
("Cimetidine", "Moderate", "CYP2C9 + CYP3A4 inhibition"),
("Omeprazole", "Moderate", "CYP2C9 inhibition"),
("Quinidine", "Moderate", "Additive hypoprothrombinemia"),
("Amiodarone analogs / Propafenone", "Moderate", "CYP2C9 inhibition"),
("Lovastatin / Simvastatin", "Moderate", "CYP3A4 competition"),
("Tamoxifen", "Significant", "CYP2C9 inhibition"),
("Aspirin (high dose >1g/day)", "Variable", "Antiplatelet effect + GI mucosal damage"),
("3rd-generation cephalosporins", "Moderate", "Vitamin K epoxide reductase inhibition"),
("Sulfinpyrazone / Phenylbutazone", "Significant", "CYP2C9 inhibition + protein displacement"),
("Anabolic steroids", "Significant", "Mechanism unclear; reduced factor synthesis"),
("Liver disease / alcohol excess", "Variable", "Reduced clotting factor production"),
("Hyperthyroidism / fever", "Variable", "Increased catabolism of clotting factors"),
]
tbl4 = doc.add_table(rows=len(increase_inr), cols=3)
tbl4.style = "Table Grid"
tbl4.autofit = False
tbl4.columns[0].width = Inches(2.4)
tbl4.columns[1].width = Inches(1.0)
tbl4.columns[2].width = Inches(2.9)
for i, row_data in enumerate(increase_inr):
row = tbl4.rows[i]
for j, txt in enumerate(row_data):
row.cells[j].text = txt
if i == 0:
header_row(row, bg="7B0000") # dark red for increase
else:
# Shade based on magnitude
mag = row.cells[1].text
if "Significant" in mag:
for cell in row.cells:
set_cell_bg(cell, "FFDEDE")
else:
for cell in row.cells:
set_cell_bg(cell, "FFF3F3")
for cell in row.cells:
set_cell_borders(cell, "C0A0A0")
for para in cell.paragraphs:
for run in para.runs:
run.font.size = Pt(9.5)
doc.add_paragraph()
# 4c - Drugs that DECREASE INR
add_sub_heading("4.3 Drugs That Decrease INR (Antagonise Warfarin)")
decrease_inr = [
("Drug / Drug Class", "Magnitude", "Mechanism"),
("Rifampin (Rifampicin)", "Significant", "Potent CYP2C9 + CYP3A4 induction"),
("Barbiturates (phenobarbital, secobarbital)", "Significant", "CYP enzyme induction"),
("Carbamazepine", "Significant", "CYP3A4 induction"),
("Phenytoin", "Significant", "CYP induction (initially may transiently ↑ INR via protein displacement)"),
("Primidone", "Significant", "CYP enzyme induction"),
("Rifabutin", "Significant", "CYP enzyme induction"),
("Griseofulvin", "Significant", "CYP induction"),
("Cholestyramine / Colestipol", "Moderate", "Binds warfarin in GI tract - reduces absorption"),
("Dicloxacillin / Nafcillin", "Moderate", "Mechanism unclear"),
("Ritonavir / Atazanavir (some ARVs)", "Moderate", "CYP induction"),
("Methimazole / Propylthiouracil (PTU)", "Moderate", "Hypothyroid effect; slows clotting factor catabolism"),
("Vitamin K (dietary or supplemental)", "Variable", "Direct competitive antagonism of warfarin target"),
("Hereditary warfarin resistance", "Variable", "VKORC1 mutation with reduced binding affinity"),
("Hypothyroidism", "Variable", "Reduced catabolism of clotting factors"),
("Diuretics (spironolactone)", "Mild", "Haemoconcentration; concentration of clotting factors"),
]
tbl5 = doc.add_table(rows=len(decrease_inr), cols=3)
tbl5.style = "Table Grid"
tbl5.autofit = False
tbl5.columns[0].width = Inches(2.4)
tbl5.columns[1].width = Inches(1.0)
tbl5.columns[2].width = Inches(2.9)
for i, row_data in enumerate(decrease_inr):
row = tbl5.rows[i]
for j, txt in enumerate(row_data):
row.cells[j].text = txt
if i == 0:
header_row(row, bg="1F4E79") # dark blue for decrease
else:
mag = row.cells[1].text
if "Significant" in mag:
for cell in row.cells:
set_cell_bg(cell, "D9E8F5")
else:
for cell in row.cells:
set_cell_bg(cell, "EEF5FB")
for cell in row.cells:
set_cell_borders(cell, "8AACCA")
for para in cell.paragraphs:
for run in para.runs:
run.font.size = Pt(9.5)
doc.add_paragraph()
# 4d - Herbal interactions
add_sub_heading("4.4 Herbal & Dietary Interactions")
herbal_data = [
("Substance", "Effect on INR", "Mechanism / Notes"),
("St. John's Wort (Hypericum perforatum)", "Significant decrease", "Potent CYP3A4 induction"),
("Ginkgo biloba", "Increase (bleeding risk)", "Antiplatelet activity"),
("Garlic (high-dose supplements)", "Increase", "Antiplatelet + possible CYP inhibition"),
("Ginger (high-dose)", "Increase", "Antiplatelet activity"),
("Ginseng", "Decrease", "Mechanism unclear"),
("Dong quai", "Increase", "Contains coumarin compounds"),
("Vitamin E (high-dose >400 IU/day)", "Increase", "Inhibits vitamin K-dependent carboxylation"),
("Green leafy vegetables (spinach, kale, broccoli)", "Decrease", "High dietary vitamin K content"),
("Grapefruit juice", "Mild increase", "CYP3A4 inhibition"),
("Cranberry juice (large volumes)", "Increase", "CYP2C9 inhibition"),
("Fish oil / omega-3 (high dose)", "Mild increase", "Antiplatelet activity"),
("Alcohol (acute heavy intake)", "Increase", "CYP2E1 inhibition, hepatotoxicity"),
("Alcohol (chronic heavy use)", "Decrease", "CYP enzyme induction"),
]
tbl6 = doc.add_table(rows=len(herbal_data), cols=3)
tbl6.style = "Table Grid"
tbl6.autofit = False
tbl6.columns[0].width = Inches(2.3)
tbl6.columns[1].width = Inches(1.2)
tbl6.columns[2].width = Inches(2.8)
for i, row_data in enumerate(herbal_data):
row = tbl6.rows[i]
for j, txt in enumerate(row_data):
row.cells[j].text = txt
if i == 0:
header_row(row, bg="375623") # dark green for herbal
else:
alt_row(row, i)
for cell in row.cells:
for para in cell.paragraphs:
for run in para.runs:
run.font.size = Pt(9.5)
doc.add_paragraph()
# ══════════════════════════════════════════════════════════════════════════════
# 5. INR MONITORING STRATEGY
# ══════════════════════════════════════════════════════════════════════════════
add_section_heading("5. INR Monitoring Strategy")
add_body(
"Frequent INR monitoring is required, especially during initiation, dose changes, "
"intercurrent illness, or addition/removal of interacting drugs."
)
monitoring = [
("Phase / Situation", "Monitoring Frequency"),
("Initiation of therapy", "Daily or every other day until stable (first 1-2 weeks)"),
("After dose change", "Every 2-3 days until two consecutive stable readings"),
("Stable chronic therapy", "Every 4-12 weeks (monthly is common practice)"),
("Introduction of interacting drug", "Recheck INR in 3-5 days after starting new drug"),
("Removal of interacting drug", "Recheck INR in 3-5 days after stopping interacting drug"),
("Intercurrent illness (fever, diarrhoea)", "Check INR within 48-72 hours"),
("Significant dietary change", "Check INR within 1 week"),
("Pre-operative / invasive procedure", "Check INR 24-48 hours before procedure"),
("Self-monitoring (point-of-care devices)", "Weekly in selected stable patients"),
]
tbl7 = doc.add_table(rows=len(monitoring), cols=2)
tbl7.style = "Table Grid"
tbl7.autofit = False
tbl7.columns[0].width = Inches(2.8)
tbl7.columns[1].width = Inches(3.5)
for i, row_data in enumerate(monitoring):
row = tbl7.rows[i]
row.cells[0].text = row_data[0]
row.cells[1].text = row_data[1]
if i == 0:
header_row(row)
else:
alt_row(row, i)
for cell in row.cells:
for para in cell.paragraphs:
for run in para.runs:
run.font.size = Pt(10)
doc.add_paragraph()
# ══════════════════════════════════════════════════════════════════════════════
# 6. MANAGEMENT OF ELEVATED INR / OVER-ANTICOAGULATION
# ══════════════════════════════════════════════════════════════════════════════
add_section_heading("6. Management of Elevated INR / Over-Anticoagulation")
add_body(
"The two principal aims when managing an elevated INR are: (1) identify and address the cause "
"(interacting drug, dietary change, illness), and (2) lower the intensity of anticoagulation "
"proportionate to the degree of elevation and whether bleeding is present."
)
add_body(
"IMPORTANT: In patients requiring continued anticoagulation (e.g., mechanical heart valves), "
"reversal must be balanced against the risk of life-threatening thrombosis. Always consult "
"a haematologist or cardiologist before fully reversing anticoagulation in high-risk patients."
)
inr_mgmt = [
("INR Level & Bleeding Status", "Recommended Management"),
("INR 4.0-4.5\nNo bleeding",
"- Hold or reduce next warfarin dose\n"
"- Recheck INR daily\n"
"- For high bleeding risk: consider oral vitamin K 1-2.5 mg\n"
"- Resume warfarin when INR approaches therapeutic range"),
("INR 4.5-10.0\nNo bleeding",
"- Hold warfarin\n"
"- Recheck INR every 24 hours until INR <4\n"
"- If high bleeding risk: oral vitamin K 1-2 mg\n"
"- Resume warfarin at lower dose when INR in range"),
("INR >10.0\nNo bleeding",
"- Hold warfarin\n"
"- Give oral vitamin K 2-5 mg (expect INR reduction in 24-48 h)\n"
"- Recheck INR in 24 hours\n"
"- Reassess need for continued anticoagulation\n"
"- Consider hospital admission if high bleeding risk"),
("Any INR elevation\nMinor bleeding (e.g., epistaxis, minor bruising)",
"- Hold warfarin\n"
"- Give oral vitamin K 2-5 mg\n"
"- Monitor closely\n"
"- Treat local bleeding at source"),
("Any INR elevation\nSerious / Major bleeding",
"- STOP warfarin immediately\n"
"- Give IV vitamin K 5-10 mg (slow infusion - risk of anaphylaxis)\n"
"- 4-factor Prothrombin Complex Concentrate (PCC) for immediate reversal\n"
" OR Fresh Frozen Plasma (FFP) 10-15 mL/kg if PCC unavailable\n"
"- Recombinant Factor VIIa (rVIIa) as last resort\n"
"- Recheck INR every 6 hours\n"
"- Identify and control bleeding source"),
("Life-threatening intracranial haemorrhage",
"- STOP warfarin immediately\n"
"- 4-factor PCC is first choice (faster and more reliable than FFP)\n"
"- IV vitamin K 10 mg simultaneously (to prevent rebound coagulopathy)\n"
"- Neurosurgical consultation\n"
"- Target INR <1.5 urgently"),
]
tbl8 = doc.add_table(rows=len(inr_mgmt), cols=2)
tbl8.style = "Table Grid"
tbl8.autofit = False
tbl8.columns[0].width = Inches(2.3)
tbl8.columns[1].width = Inches(4.0)
for i, row_data in enumerate(inr_mgmt):
row = tbl8.rows[i]
row.cells[0].text = row_data[0]
row.cells[1].text = row_data[1]
if i == 0:
header_row(row, bg="7B0000")
else:
# Colour-code severity
if i <= 2:
bg = "FFF8E1" # yellow for no bleeding
elif i == 3:
bg = "FFE0B2" # orange for minor bleeding
else:
bg = "FFCDD2" # red for serious bleeding
for cell in row.cells:
set_cell_bg(cell, bg[1:]) # strip the # prefix already done
set_cell_borders(cell, "C0A0A0")
for para in cell.paragraphs:
for run in para.runs:
run.font.size = Pt(9.5)
# set bg properly
for cell in row.cells:
set_cell_bg(cell, bg)
doc.add_paragraph()
# ══════════════════════════════════════════════════════════════════════════════
# 7. REVERSAL AGENTS
# ══════════════════════════════════════════════════════════════════════════════
add_section_heading("7. Warfarin Reversal Agents")
reversal = [
("Agent", "Route / Dose", "Onset", "Notes"),
("Vitamin K1 (Phytonadione)\n- Oral", "PO: 1-5 mg\n(mild-moderate over-anticoagulation)",
"6-12 h (effect)\n24-48 h (full)", "Preferred for non-emergency reversal. Lower risk of overcorrection vs IV."),
("Vitamin K1 (Phytonadione)\n- Intravenous", "IV: 5-10 mg\n(slow infusion over 20-60 min)",
"4-6 h", "Risk of anaphylaxis (rare but serious). Reserved for life-threatening bleeding. "
"May cause prolonged warfarin resistance for weeks."),
("4-Factor PCC\n(Prothrombin Complex Concentrate)",
"IV: 25-50 units/kg\n(weight-based, INR-guided)",
"Immediate (<30 min)", "Contains factors II, VII, IX, X + Protein C, S. "
"Preferred for urgent/emergency reversal. Does not require blood typing."),
("Fresh Frozen Plasma (FFP)",
"IV: 10-15 mL/kg",
"After thawing (~30-60 min)", "Contains all clotting factors. Large volumes needed. "
"Risk of transfusion reactions, volume overload. Use when PCC unavailable."),
("Recombinant Factor VIIa (rFVIIa)",
"IV: 15-90 mcg/kg",
"Rapid", "Last resort only. High thrombotic risk. Not routinely recommended."),
]
tbl9 = doc.add_table(rows=len(reversal), cols=4)
tbl9.style = "Table Grid"
tbl9.autofit = False
tbl9.columns[0].width = Inches(1.6)
tbl9.columns[1].width = Inches(1.4)
tbl9.columns[2].width = Inches(1.0)
tbl9.columns[3].width = Inches(2.3)
for i, row_data in enumerate(reversal):
row = tbl9.rows[i]
for j, txt in enumerate(row_data):
row.cells[j].text = txt
if i == 0:
header_row(row)
else:
alt_row(row, i)
for cell in row.cells:
for para in cell.paragraphs:
for run in para.runs:
run.font.size = Pt(9.5)
doc.add_paragraph()
# ══════════════════════════════════════════════════════════════════════════════
# 8. WARFARIN BRIDGING THERAPY
# ══════════════════════════════════════════════════════════════════════════════
add_section_heading("8. Bridging Anticoagulation")
add_body(
"When warfarin is initiated or interrupted, bridging with a short-acting parenteral "
"anticoagulant (UFH or LMWH) is required to avoid a hypercoagulable gap. This is because "
"Protein C (antithrombotic) has a shorter half-life (~8 h) than clotting factors II, IX, X, "
"creating a transient prothrombotic state at the start of warfarin therapy for 24-36 hours."
)
add_sub_heading("When to Bridge")
add_bullet("Initiating warfarin: overlap with heparin/LMWH for at least 5 days AND until INR is in therapeutic range for 2 consecutive days")
add_bullet("Pre-operative warfarin interruption (high-thromboembolic risk patients)")
add_bullet("Interrupted therapy due to non-compliance in high-risk patients (e.g., mechanical heart valves)")
add_sub_heading("When NOT to Bridge")
add_bullet("Low-thromboembolic risk patients undergoing minor procedures")
add_bullet("Patients with AF and CHA2DS2-VASc score 0-1")
add_bullet("Prior VTE >12 months ago with no ongoing risk factors")
doc.add_paragraph()
# ══════════════════════════════════════════════════════════════════════════════
# 9. SPECIAL POPULATIONS
# ══════════════════════════════════════════════════════════════════════════════
add_section_heading("9. Special Populations")
special = [
("Population", "Consideration"),
("Pregnancy", "CONTRAINDICATED in 1st trimester (fetal warfarin syndrome: nasal hypoplasia, stippled epiphyses, CNS defects) and near delivery. Use LMWH throughout pregnancy."),
("Elderly (>75 years)", "Increased sensitivity; start low (2-5 mg/day). Higher bleeding risk. Frequent INR monitoring. Reassess indication periodically."),
("Hepatic impairment", "Reduced clotting factor synthesis leads to elevated baseline INR. Use with extreme caution; target lower INR ranges."),
("Renal impairment", "Limited direct effect on warfarin clearance, but accumulation of metabolites and reduced protein binding may increase sensitivity. Monitor closely."),
("Genetic variants\n(CYP2C9 poor metabolizers)", "Require significantly lower doses. CYP2C9*2, *3 alleles reduce S-warfarin clearance. VKORC1 AA genotype increases sensitivity."),
("Patients with cancer", "Warfarin resistance common (Trousseau syndrome). LMWH or DOACs preferred for cancer-associated thrombosis."),
("Patients on interacting polypharmacy", "Consider DOACs as alternatives if stable INR is difficult to maintain."),
]
tbl10 = doc.add_table(rows=len(special), cols=2)
tbl10.style = "Table Grid"
tbl10.autofit = False
tbl10.columns[0].width = Inches(2.0)
tbl10.columns[1].width = Inches(4.3)
for i, row_data in enumerate(special):
row = tbl10.rows[i]
row.cells[0].text = row_data[0]
row.cells[1].text = row_data[1]
if i == 0:
header_row(row)
else:
alt_row(row, i)
for cell in row.cells:
for para in cell.paragraphs:
for run in para.runs:
run.font.size = Pt(10)
row.cells[0].paragraphs[0].runs[0].bold = True
doc.add_paragraph()
# ══════════════════════════════════════════════════════════════════════════════
# 10. KEY CLINICAL PEARLS
# ══════════════════════════════════════════════════════════════════════════════
add_section_heading("10. Key Clinical Pearls")
pearls = [
("Protein C depletion hazard:", " Starting warfarin alone in a patient with acute thrombosis can transiently worsen clotting (Protein C falls before clotting factors do). Always bridge with heparin."),
("Warfarin skin necrosis:", " Occurs 3-8 days after initiation, typically in patients with Protein C or S deficiency. Manifests as painful skin lesions, especially in fatty areas. Stop warfarin and anticoagulate with heparin."),
("Purple toe syndrome:", " Cholesterol microemboli dislodged by anticoagulation; distinct from skin necrosis. Does not require stopping warfarin."),
("Factor VII shortens PT first:", " Factor VII has a half-life of only ~6-7 hours. PT/INR rises within 24 h of warfarin initiation but does not reflect full anticoagulation until factors II, IX, X are depleted (4-5 days)."),
("S-warfarin >R-warfarin:", " The S-enantiomer is 3-5x more potent. Most clinically significant drug interactions specifically target S-warfarin metabolism (CYP2C9)."),
("Amiodarone interaction:", " Can persist for months after stopping amiodarone due to its extremely long half-life (40-55 days). Continue INR monitoring for several months post-discontinuation."),
("Antibiotic caution:", " Any antibiotic course warrants an INR recheck 3-5 days into treatment due to gut flora suppression reducing vitamin K production."),
("Consistent diet, not restriction:", " Patients should maintain a CONSISTENT vitamin K intake rather than avoiding greens entirely. Sudden dietary changes (e.g., new diet plan) destabilise INR."),
("IV vitamin K risk:", " IV vitamin K carries a rare but potentially fatal anaphylactic risk; infuse slowly. It also creates prolonged warfarin resistance."),
]
for bp, bt in pearls:
add_bullet(bt, bold_prefix=bp)
doc.add_paragraph()
# ══════════════════════════════════════════════════════════════════════════════
# 11. REFERENCES
# ══════════════════════════════════════════════════════════════════════════════
add_section_heading("11. References")
refs = [
"Katzung BG. Basic and Clinical Pharmacology, 16th Edition. McGraw-Hill Medical; 2021. Chapter 34: Drugs Used in Disorders of Coagulation.",
"Tintinalli JE, et al. Tintinalli's Emergency Medicine: A Comprehensive Study Guide, 9th Edition. McGraw-Hill; 2020. Chapter 239: Warfarin Coagulopathy.",
"Taketomo CK, et al. Harriet Lane Handbook, 23rd Edition. Johns Hopkins Hospital; 2021. Table 14.16: Management of Excessive Warfarin Anticoagulation.",
"Lippincott Williams & Wilkins. Lippincott Illustrated Reviews: Pharmacology, 8th Edition. Wolters Kluwer; 2022. Chapter 13: Anticoagulant Drugs.",
"Goodman LS, et al. Goodman & Gilman's The Pharmacological Basis of Therapeutics, 14th Edition. McGraw-Hill; 2023.",
]
for i, ref in enumerate(refs, 1):
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.3)
p.paragraph_format.first_line_indent = Inches(-0.3)
run = p.add_run(f"{i}. {ref}")
run.font.size = Pt(9.5)
run.font.color.rgb = RGBColor(0x40, 0x40, 0x40)
# ── Footer ────────────────────────────────────────────────────────────────────
section = doc.sections[0]
footer = section.footer
footer_para = footer.paragraphs[0]
footer_para.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = footer_para.add_run("Warfarin Drug Interactions & INR Management | Clinical Reference | For Educational Use")
run.font.size = Pt(8)
run.font.color.rgb = RGBColor(0x80, 0x80, 0x80)
# ── Save ──────────────────────────────────────────────────────────────────────
out = "/tmp/workspace/warfarin-doc/Warfarin_Drug_Interactions_INR_Management.docx"
doc.save(out)
print(f"Saved: {out}")
python3 /tmp/workspace/warfarin-doc/build_doc.py
python3 -c " from docx import Document doc = Document('/tmp/workspace/warfarin-doc/Warfarin_Drug_Interactions_INR_Management.docx') headings = [p.text for p in doc.paragraphs if p.style.name.startswith('Heading') or (p.runs and p.runs[0].bold and len(p.text) > 5 and len(p.text) < 80)] for h in headings[:25]: print(h) print(f'Total paragraphs: {len(doc.paragraphs)}') print(f'Total tables: {len(doc.tables)}') "
Warfarin Drug Interactions INR Management
Word Document · DOCX
| # | Section | Contents |
|---|---|---|
| 1 | Introduction | Mechanism of action, INR definition |
| 2 | Pharmacokinetics & Dosing | Table: half-life, protein binding, CYP2C9, genetic factors, dosing initiation |
| 3 | Therapeutic INR Targets | Table: 9 indications with target INR ranges (2.0-3.0 vs 2.5-3.5) |
| 4 | Drug Interactions | 4 sub-sections: mechanisms, drugs that ↑ INR (21 agents), drugs that ↓ INR (15 agents), herbal/dietary interactions (13 substances) |
| 5 | INR Monitoring Strategy | Table: frequency by clinical phase - initiation, dose change, stable, new drug added |
| 6 | Management of Elevated INR | Colour-coded table by severity: INR 4-4.5 / 4.5-10 / >10 (no bleed) + minor bleed + major bleed + ICH |
| 7 | Reversal Agents | Table: oral Vit K, IV Vit K, 4-factor PCC, FFP, rFVIIa - dose, onset, caveats |
| 8 | Bridging Anticoagulation | When to bridge vs not; Protein C depletion rationale |
| 9 | Special Populations | Pregnancy, elderly, hepatic/renal impairment, genetics, cancer |
| 10 | Key Clinical Pearls | 9 bullet points - skin necrosis, Factor VII shortfall, amiodarone persistence, diet consistency |
| 11 | References | Katzung, Tintinalli, Harriet Lane, Lippincott, Goodman & Gilman |