I need a very easy Guideline for Chirhosis like Gold report for COPD. Gold makes it super easy to find out pharmacotherapy guidelines and stuff I checked AASLD and ACG but they were too complicated.. can you look for me
simplified cirrhosis management guideline GOLD-like staging pharmacotherapy 2024 2025
EASL cirrhosis clinical practice guidelines 2024 simplified summary
"cirrhosis" AND "clinical practice guideline" AND "management"
https://internetbookofemergencymedicine.com/wp-content/uploa…
Baveno consensus cirrhosis staging system simple algorithm 2025 pharmacotherapy
| Stage | Status | Key Feature | Annual Mortality |
|---|---|---|---|
| 1 | Compensated | No varices, no ascites | ~1.5% |
| 2 | Compensated | Varices present, no ascites | ~2% |
| 3 | Decompensated | Ascites (±varices) | ~10% |
| 4 | Decompensated | Variceal bleeding | ~21% |
| 5 | Decompensated | Any 2+ complications | ~87% |
| 6 | Decompensated | Refractory/ACLF | Very high |
There is also a "recompensated" phase (Baveno VII concept) - when etiology is treated and complications resolve for >12 months.
| Etiology | Treatment |
|---|---|
| HBV cirrhosis | Entecavir or tenofovir (lifelong, even after HBsAg clearance) |
| HCV cirrhosis | Direct-acting antivirals (DAAs) - pan-genotypic SOF/VEL x12 wks or GLE/PIB x8 wks if compensated |
| Alcohol-related | Complete abstinence (± baclofen/naltrexone in selected patients) |
| MASLD/NASH | Weight loss, treat metabolic syndrome; resmetirom if MASH+fibrosis |
| Autoimmune hepatitis | Prednisolone + azathioprine |
| PBC | Ursodeoxycholic acid (UDCA) ± obeticholic acid |
| Wilson's disease | Penicillamine or trientine |
| Situation | Drug(s) |
|---|---|
| Compensated + varices (no prior bleed) - primary prophylaxis | Non-selective beta-blocker (NSBB): Carvedilol 6.25 mg/day (preferred) OR Propranolol 20-40 mg BID - titrate to HR ~55 bpm |
| Acute variceal bleed | Terlipressin 1-2 mg IV q4-6h (first choice) OR Somatostatin/Octreotide IV + ceftriaxone 1 g/day IV x7 days |
| Secondary prophylaxis (post-bleed) | NSBB + endoscopic variceal ligation (EVL) combined |
| Refractory bleeding | TIPS (transjugular intrahepatic portosystemic shunt) |
Statins (simvastatin 20 mg max in Child-Pugh B; avoid in C): reduce portal pressure and HCC risk - Baveno VII now supports use.
| Severity | Treatment |
|---|---|
| Grade 1 (mild) | Na restriction (<2 g/day salt diet) |
| Grade 2 (moderate) | Spironolactone 100 mg/day (first line) - titrate to 400 mg/day; add Furosemide 40 mg/day (ratio 100:40 maintained) |
| Grade 3 (tense) | Large-volume paracentesis (LVP) + albumin 8 g per liter removed |
| Refractory ascites | Stop NSBBs if hypotensive; Terlipressin or Midodrine 7.5 mg TID + octreotide; TIPS; consider transplant |
Albumin infusion (long-term, e.g., ANSWER/PILOT trials): 40 g every 2 weeks may reduce complications - not yet universal standard but Baveno VII gives it a B.2 recommendation.
| Situation | Treatment |
|---|---|
| Diagnosed SBP (PMN ≥250/mm³) | Cefotaxime 2 g IV q8h x5 days (or ceftriaxone) + albumin 1.5 g/kg on day 1, 1 g/kg on day 3 |
| SBP prophylaxis (prior SBP or protein <1.5 g/dL + CTP≥9 or MELD≥15) | Norfloxacin 400 mg/day OR Trimethoprim-sulfamethoxazole (where quinolone resistance is high: use ceftriaxone IV 1g/day) |
| Situation | Treatment |
|---|---|
| Acute episode - first line | Lactulose 25-45 mL TID/QID (titrate to 2-3 soft stools/day) + identify/treat precipitant |
| Acute - second line / recurrent | Add Rifaximin 550 mg BID |
| Prevention of recurrence | Lactulose + Rifaximin 550 mg BID (long-term) |
| Adjunct | L-ornithine-L-aspartate (LOLA) IV or oral - useful in acute HE |
| Always check | Zinc deficiency, constipation, infection, GI bleed, electrolyte disturbance |
| Type | Treatment |
|---|---|
| HRS-AKI (HRS-1) | Terlipressin 1 mg IV q4-6h (titrate to 2 mg q4h) + Albumin 20-40 g/day - gold standard |
| Where terlipressin unavailable | Norepinephrine IV + albumin OR Midodrine + Octreotide + albumin (less effective) |
| Bridge to transplant | TIPS in selected cases; liver transplant is definitive cure |
| Population | Surveillance |
|---|---|
| All cirrhosis patients | Liver ultrasound + AFP every 6 months |
| HBV carriers (even without cirrhosis) | Same |
| Detected nodule ≥1 cm | Multiphasic CT or MRI for characterization |
| Drug Class | Reason |
|---|---|
| NSAIDs | Risk of AKI, GI bleed, worsen renal function |
| Aminoglycosides | Nephrotoxic in cirrhosis |
| ACE inhibitors/ARBs | Precipitate HRS in decompensated disease |
| Metformin | Lactic acidosis risk (use with caution/avoid in Child-Pugh C) |
| Benzodiazepines | Precipitate/worsen HE |
| High-dose opioids | Worsen HE, reduce only if needed |
| Proton pump inhibitors (long-term) | Associated with SBP risk - use only if indicated |
CIRRHOSIS STAGE → TREAT ETIOLOGY → COMPLICATIONS?
Varices? → NSBB (carvedilol) prophylaxis
Ascites? → Spiro ± Furosemide → LVP + albumin if tense
SBP? → Cefotaxime + albumin → norfloxacin prophylaxis
HE? → Lactulose → add Rifaximin
HRS? → Terlipressin + albumin
MELD ≥15? → Transplant referral
ALWAYS AVOID: NSAIDs, amino-glycosides, ACEi in decompensated
A pdf for chirhosis.. which I can download
mkdir -p /tmp/workspace/cirrhosis-guide && ls /tmp/workspace/cirrhosis-guide/
~/cirrhosis-guide/build_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm, mm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, PageBreak, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import Flowable
# ── Color palette ──────────────────────────────────────────────────────────────
NAVY = colors.HexColor("#1B3A6B")
TEAL = colors.HexColor("#1A7A8A")
AMBER = colors.HexColor("#E07B00")
LIGHT_BG = colors.HexColor("#EEF4F7")
WARN_BG = colors.HexColor("#FFF4E0")
GREEN_BG = colors.HexColor("#E8F5E9")
RED_BG = colors.HexColor("#FDECEA")
WHITE = colors.white
DARK_TEXT = colors.HexColor("#1A1A2E")
MID_GRAY = colors.HexColor("#555555")
LIGHT_GRAY= colors.HexColor("#CCCCCC")
# ── Document ───────────────────────────────────────────────────────────────────
OUTPUT = "/tmp/workspace/cirrhosis-guide/Cirrhosis_Practical_Guidelines.pdf"
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
topMargin=1.8*cm, bottomMargin=1.8*cm,
leftMargin=1.6*cm, rightMargin=1.6*cm,
title="Cirrhosis: Practical Management Guidelines",
author="Orris Medical Reference"
)
W, H = A4
CW = W - 3.2*cm # content width
# ── Styles ─────────────────────────────────────────────────────────────────────
base = getSampleStyleSheet()
def ps(name, parent="Normal", **kw):
return ParagraphStyle(name, parent=base[parent], **kw)
S = {
"title" : ps("title", fontSize=22, textColor=WHITE, alignment=TA_CENTER,
leading=28, spaceAfter=4, fontName="Helvetica-Bold"),
"sub" : ps("sub", fontSize=11, textColor=colors.HexColor("#CCE8EF"),
alignment=TA_CENTER, leading=14, fontName="Helvetica"),
"h1" : ps("h1", fontSize=13, textColor=WHITE, fontName="Helvetica-Bold",
leading=16, spaceBefore=6, spaceAfter=2),
"h2" : ps("h2", fontSize=10.5, textColor=NAVY, fontName="Helvetica-Bold",
leading=13, spaceBefore=6, spaceAfter=2),
"body" : ps("body", fontSize=9, textColor=DARK_TEXT, leading=13,
spaceAfter=3, fontName="Helvetica"),
"small" : ps("small", fontSize=8, textColor=MID_GRAY, leading=11,
fontName="Helvetica"),
"bullet" : ps("bullet", fontSize=9, textColor=DARK_TEXT, leading=13,
leftIndent=10, firstLineIndent=-10, spaceAfter=2,
fontName="Helvetica"),
"warn" : ps("warn", fontSize=8.5, textColor=colors.HexColor("#7A3800"),
leading=12, fontName="Helvetica-Bold"),
"code" : ps("code", fontSize=8, textColor=NAVY, leading=12,
fontName="Courier", leftIndent=6),
"footer" : ps("footer", fontSize=7.5, textColor=MID_GRAY,
alignment=TA_CENTER, fontName="Helvetica"),
}
# ── Header / Footer callbacks ──────────────────────────────────────────────────
def on_page(canvas, doc):
canvas.saveState()
# top stripe
canvas.setFillColor(NAVY)
canvas.rect(0, H - 1*cm, W, 1*cm, fill=1, stroke=0)
canvas.setFont("Helvetica", 7.5)
canvas.setFillColor(WHITE)
canvas.drawString(1.6*cm, H - 0.65*cm, "Cirrhosis: Practical Management Guidelines")
canvas.drawRightString(W - 1.6*cm, H - 0.65*cm, "Based on EASL CPG · Baveno VII · Chinese Guidelines 2025")
# bottom stripe
canvas.setFillColor(LIGHT_GRAY)
canvas.rect(0, 0, W, 0.7*cm, fill=1, stroke=0)
canvas.setFont("Helvetica", 7.5)
canvas.setFillColor(MID_GRAY)
canvas.drawCentredString(W/2, 0.22*cm,
f"For clinical reference only – verify against current local guidelines | Page {doc.page}")
canvas.restoreState()
def on_first_page(canvas, doc):
on_page(canvas, doc)
# ── Helper: section header banner ─────────────────────────────────────────────
def section_banner(text, color=TEAL):
data = [[Paragraph(text, S["h1"])]]
t = Table(data, colWidths=[CW])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), color),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8),
("RIGHTPADDING", (0,0), (-1,-1), 8),
("ROUNDEDCORNERS", [4]),
]))
return t
def note_box(text, bg=WARN_BG, text_style="warn"):
data = [[Paragraph(text, S[text_style])]]
t = Table(data, colWidths=[CW])
t.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),
("BOX", (0,0), (-1,-1), 0.5, AMBER),
]))
return t
def std_table(headers, rows, col_widths=None, header_color=NAVY):
data = [[Paragraph(h, ps("th", fontSize=8.5, textColor=WHITE,
fontName="Helvetica-Bold", leading=11)) for h in headers]]
for row in rows:
data.append([Paragraph(str(c), ps("td", fontSize=8.5, textColor=DARK_TEXT,
fontName="Helvetica", leading=12)) for c in row])
if col_widths is None:
col_widths = [CW / len(headers)] * len(headers)
t = Table(data, colWidths=col_widths, repeatRows=1)
style = [
("BACKGROUND", (0,0), (-1,0), header_color),
("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, LIGHT_BG]),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 6),
("RIGHTPADDING", (0,0), (-1,-1), 6),
("GRID", (0,0), (-1,-1), 0.3, LIGHT_GRAY),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]
t.setStyle(TableStyle(style))
return t
def B(text):
return f"<b>{text}</b>"
def bullet(text):
return Paragraph(f"• {text}", S["bullet"])
# ── Build story ────────────────────────────────────────────────────────────────
story = []
sp = lambda n=1: Spacer(1, n*3*mm)
# ══════════════════════════════════════════════════════════════════════════════
# COVER BLOCK
# ══════════════════════════════════════════════════════════════════════════════
cover_data = [
[Paragraph("CIRRHOSIS", S["title"])],
[Paragraph("Practical Management Guidelines", S["sub"])],
[Paragraph("A GOLD-style Quick Reference · Based on EASL CPG, Baveno VII & Chinese Guidelines 2025", S["sub"])],
]
cover = Table(cover_data, colWidths=[CW])
cover.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), NAVY),
("TOPPADDING", (0,0), (-1,-1), 10),
("BOTTOMPADDING", (0,0), (-1,-1), 10),
("LEFTPADDING", (0,0), (-1,-1), 12),
("RIGHTPADDING", (0,0), (-1,-1), 12),
("ROUNDEDCORNERS", [6]),
]))
story += [cover, sp(2)]
# ══════════════════════════════════════════════════════════════════════════════
# STEP 1 – STAGING
# ══════════════════════════════════════════════════════════════════════════════
story += [section_banner("STEP 1 — Determine the Stage"), sp()]
story += [Paragraph(
"Cirrhosis follows a 6-stage EASL/Baveno system grouped into three clinical phases. "
"Use Child-Pugh and MELD-Na for quick bedside classification.",
S["body"]), sp()]
stage_rows = [
["1", "Compensated", "No varices, no ascites", "~1.5%"],
["2", "Compensated", "Varices present, no bleeding", "~2%"],
["3", "Decompensated", "Ascites (±varices)", "~10%"],
["4", "Decompensated", "Variceal bleeding", "~21%"],
["5", "Decompensated", "≥2 complications / ACLF", "~87%"],
["6", "Decompensated", "Refractory / multi-organ failure", "Very high"],
]
story += [std_table(
["Stage", "Phase", "Key Feature", "Annual Mortality"],
stage_rows,
col_widths=[1.8*cm, 3.8*cm, 8*cm, 3.2*cm]
), sp()]
# Child-Pugh quick table
cp_rows = [
["Child-Pugh A (5–6 pts)", "Compensated", "Annual mortality ~1–2%"],
["Child-Pugh B (7–9 pts)", "Early decompensated", "Annual mortality ~10–20%"],
["Child-Pugh C (10–15 pts)","Advanced decompensated","Annual mortality >50%"],
]
story += [
Paragraph(B("Child-Pugh Quick Classification"), S["h2"]),
std_table(["Score", "Phase", "Prognosis"], cp_rows,
col_widths=[4.5*cm, 5*cm, 7.3*cm], header_color=TEAL),
sp(),
note_box("⚠ MELD-Na ≥ 15 → Refer to liver transplant centre. "
"MELD-Na ≥ 20 → Priority listing."),
sp(2)
]
# ══════════════════════════════════════════════════════════════════════════════
# STEP 2 – TREAT THE CAUSE
# ══════════════════════════════════════════════════════════════════════════════
story += [section_banner("STEP 2 — Treat the Underlying Etiology (Always First)"), sp()]
etiol_rows = [
["HBV cirrhosis", "Entecavir 0.5 mg/day OR Tenofovir TDF/TAF — lifelong, even after HBsAg clearance"],
["HCV cirrhosis", "DAAs: SOF/VEL (pan-genotypic, 12 wks) or GLE/PIB (8 wks) if compensated; specialist referral if decompensated"],
["Alcohol-related (ALD)","Complete abstinence; baclofen 5–10 mg TID or naltrexone 50 mg/day to support abstinence"],
["MASLD/MASH", "Weight loss 7–10%; treat metabolic syndrome; resmetirom 80–100 mg/day if MASH + fibrosis ≥F2"],
["Autoimmune hepatitis", "Prednisolone 0.5–1 mg/kg/day + azathioprine 1–2 mg/kg/day; maintenance to prevent flares"],
["PBC", "UDCA 13–15 mg/kg/day; add obeticholic acid or fibrates if inadequate response"],
["Wilson's disease", "Penicillamine 1–1.5 g/day OR Trientine 750–1500 mg/day; zinc maintenance"],
["Hemochromatosis", "Phlebotomy weekly until ferritin <50 mcg/L; maintenance phlebotomy every 2–4 months"],
]
story += [
std_table(["Etiology", "Treatment"], etiol_rows,
col_widths=[4.5*cm, 12.3*cm], header_color=TEAL),
sp(2)
]
# ══════════════════════════════════════════════════════════════════════════════
# STEP 3 – COMPLICATIONS
# ══════════════════════════════════════════════════════════════════════════════
story += [section_banner("STEP 3 — Complication-Based Pharmacotherapy"), sp()]
# A. Varices
story += [Paragraph("A. Varices / Portal Hypertension", S["h2"])]
varice_rows = [
["Primary prophylaxis\n(compensated + varices)",
"Carvedilol 6.25 mg/day (preferred) OR Propranolol 20–40 mg BID\nTitrate to resting HR ~55 bpm. Target: HVPG <12 mmHg"],
["Acute variceal bleed",
"Terlipressin 1–2 mg IV q4–6h (1st choice) OR Somatostatin 250 mcg bolus → 250 mcg/h infusion\n+ Ceftriaxone 1 g IV/day × 7 days (all patients, reduces SBP/mortality)"],
["Secondary prophylaxis\n(post-bleed)",
"NSBB (carvedilol or propranolol) + Endoscopic Variceal Ligation (EVL) combined\nNSBB alone if EVL not available"],
["Refractory / rescue",
"TIPS (transjugular intrahepatic portosystemic shunt)\nSengstaken-Blakemore tube as temporary bridge only"],
["Statins (adjunct)",
"Simvastatin 20 mg/day (max 40 mg in Child-Pugh A; max 20 mg in Child-Pugh B; avoid in C)\nReduces portal pressure, HCC risk (Baveno VII B.2 recommendation)"],
]
story += [
std_table(["Situation", "Treatment"], varice_rows,
col_widths=[4.5*cm, 12.3*cm], header_color=NAVY),
sp(1.5)
]
# B. Ascites
story += [Paragraph("B. Ascites", S["h2"])]
asc_rows = [
["Grade 1 (mild)", "Sodium restriction < 2 g/day (88 mmol). Avoid NSAIDs."],
["Grade 2 (moderate)", "Spironolactone 100 mg/day → titrate to max 400 mg/day\n+ Furosemide 40 mg/day → max 160 mg/day (maintain 100:40 ratio)\nMonitor electrolytes every 1–2 weeks initially"],
["Grade 3 (tense)", "Large-volume paracentesis (LVP) + Albumin 8 g per litre removed\nContinue diuretics if tolerated"],
["Refractory ascites", "Discontinue NSBBs if MAP <65 mmHg or AKI\nMidodrine 7.5–15 mg TID + Octreotide 100–200 mcg TID (oral)\nTIPS in eligible patients (Child-Pugh <13, no HE)\nLong-term albumin: 40 g q2 weeks (ANSWER trial — B.2 recommendation)"],
["Hyponatraemia\n(Na <130 mmol/L)", "Fluid restrict to 1–1.5 L/day; consider tolvaptan (specialist use);\ncorrect cautiously — avoid rapid correction"],
]
story += [
std_table(["Severity", "Treatment"], asc_rows,
col_widths=[4.5*cm, 12.3*cm], header_color=NAVY),
sp(1.5)
]
# C. SBP
story += [Paragraph("C. Spontaneous Bacterial Peritonitis (SBP)", S["h2"])]
sbp_rows = [
["Active SBP\n(PMN ≥250/mm³)",
"Cefotaxime 2 g IV q8h × 5 days (or Ceftriaxone 1–2 g IV/day)\n+ Albumin 1.5 g/kg day 1, then 1 g/kg day 3 → reduces HRS, improves survival"],
["Primary prophylaxis\n(high-risk patients)",
"Protein <1.5 g/dL AND [CTP ≥9 OR Bilirubin ≥3 mg/dL OR Cr ≥1.2 OR Na ≤130]:\nNorfloxacin 400 mg/day OR Trimethoprim-sulfamethoxazole 1 DS/day"],
["Secondary prophylaxis\n(after SBP episode)",
"Norfloxacin 400 mg/day (lifelong)\nIf quinolone-resistant prevalence high: IV Ceftriaxone 1 g/day in hospitalised patients"],
]
story += [
std_table(["Situation", "Treatment"], sbp_rows,
col_widths=[4.5*cm, 12.3*cm], header_color=NAVY),
sp(1.5)
]
# D. HE
story += [Paragraph("D. Hepatic Encephalopathy (HE)", S["h2"])]
he_rows = [
["Acute episode – first line",
"Lactulose 25–45 mL q6–8h PO/NG — titrate to 2–3 soft stools/day\nIdentify + treat precipitant: GI bleed, infection, constipation, hyponatraemia, medications"],
["Acute episode – second line",
"Rifaximin 550 mg BID (add to lactulose)\nL-ornithine L-aspartate (LOLA) 20 g IV/day or 6 g TID oral"],
["Prevention of recurrence",
"Lactulose long-term + Rifaximin 550 mg BID (long-term) — reduces hospitalisation by ~60%\nZinc 220 mg/day sulfate (often deficient)"],
["Grade 3–4 HE (ICU)",
"Intubate for airway protection; avoid benzodiazepines\nMannitol if cerebral oedema suspected; ammonia-lowering measures"],
]
story += [
std_table(["Situation", "Treatment"], he_rows,
col_widths=[4.5*cm, 12.3*cm], header_color=NAVY),
sp(1.5)
]
# E. HRS
story += [Paragraph("E. Hepatorenal Syndrome (HRS-AKI)", S["h2"])]
hrs_rows = [
["HRS-AKI diagnosis",
"Cr rise ≥0.3 mg/dL in 48h OR ≥50% from baseline. No structural kidney disease.\nNo improvement after 48h diuretic withdrawal + albumin 1 g/kg/day"],
["First-line treatment",
"Terlipressin 1 mg IV q4–6h (titrate to 2 mg q4h) + Albumin 20–40 g/day\nContinue up to 14 days; goal: Cr < 1.5 mg/dL"],
["Where terlipressin unavailable",
"Norepinephrine 0.5–3 mg/h IV (ICU) + Albumin\nOR Midodrine 7.5–15 mg TID + Octreotide 100–200 mcg TID + Albumin (less effective)"],
["Renal replacement / definitive",
"TIPS in selected patients; liver transplant is the definitive cure\nAvoid nephrotoxins; stop diuretics, NSBBs, ACEi/ARBs"],
]
story += [
std_table(["Situation", "Treatment"], hrs_rows,
col_widths=[4.5*cm, 12.3*cm], header_color=NAVY),
sp(1.5)
]
# F. HCC surveillance
story += [Paragraph("F. HCC Surveillance (All Cirrhosis Patients)", S["h2"])]
hcc_rows = [
["All cirrhosis patients", "Liver ultrasound + AFP every 6 months"],
["High-risk (HBV/HCV cirrhosis)","Consider multiphasic CT or MRI annually if US quality poor"],
["Nodule ≥1 cm on US", "Contrast-enhanced multiphasic CT or MRI (LI-RADS classification)"],
["Confirmed HCC", "Refer to multidisciplinary HCC team per local/regional guidelines"],
]
story += [
std_table(["Population", "Action"], hcc_rows,
col_widths=[6*cm, 10.8*cm], header_color=TEAL),
sp(2)
]
# ══════════════════════════════════════════════════════════════════════════════
# STEP 4 – DRUGS TO AVOID
# ══════════════════════════════════════════════════════════════════════════════
story += [section_banner("STEP 4 — Drugs to Avoid in Cirrhosis", color=colors.HexColor("#B71C1C")), sp()]
avoid_rows = [
["NSAIDs (ibuprofen, naproxen, etc.)", "Precipitate AKI, GI bleeding, worsen portal hypertension"],
["Aminoglycosides (gentamicin)", "High nephrotoxicity risk in cirrhosis"],
["ACE inhibitors / ARBs", "Can precipitate HRS in decompensated disease; use only if essential"],
["Benzodiazepines", "Precipitate / worsen hepatic encephalopathy"],
["Metformin", "Lactic acidosis risk; avoid in Child-Pugh C / AKI"],
["High-dose opioids", "Worsen HE; reduce dose and frequency if unavoidable"],
["Long-term PPIs (without indication)", "Associated with increased SBP and C. difficile risk"],
["Herbal supplements / traditional meds","Many hepatotoxic; take full medication history every visit"],
["Statins in Child-Pugh C", "Benefit not proven; myopathy and hepatotoxicity risk"],
["Nitric oxide donors (nitroglycerin)", "Worsen hypotension in decompensated cirrhosis"],
]
story += [
std_table(["Drug / Class", "Reason to Avoid"], avoid_rows,
col_widths=[6.5*cm, 10.3*cm], header_color=colors.HexColor("#B71C1C")),
sp(2)
]
# ══════════════════════════════════════════════════════════════════════════════
# STEP 5 – SUPPORTIVE CARE
# ══════════════════════════════════════════════════════════════════════════════
story += [section_banner("STEP 5 — Supportive Measures (Every Patient)"), sp()]
support = [
("Nutrition", "1.2–1.5 g protein/kg/day. Small frequent meals (4–6/day). Bedtime snack (35 g carbohydrate) to prevent overnight catabolism. High-calorie diet 35–40 kcal/kg/day."),
("Salt restriction", "< 2 g/day sodium if ascites present. No need for water restriction unless Na < 130 mmol/L."),
("Alcohol", "Complete and permanent abstinence regardless of etiology."),
("Vaccinations", "Hepatitis A + B (if non-immune), pneumococcal (PCV13/PPSV23), annual influenza, COVID-19."),
("Exercise", "Moderate aerobic + resistance exercise — reduces sarcopenia, improves prognosis."),
("Zinc", "Supplement 220 mg zinc sulfate/day if deficient (common in cirrhosis)."),
("Muscle cramps", "Quinine sulfate 200–300 mg/night OR albumin infusion (if regular cramps with hypoalbuminaemia)."),
("Psychosocial", "Screen for depression and anxiety. Alcohol/substance use counselling. Liver transplant eligibility assessment early."),
]
sup_rows = [[Paragraph(B(k), S["body"]), Paragraph(v, S["body"])] for k, v in support]
sup_table = Table(sup_rows, colWidths=[4*cm, 12.8*cm])
sup_table.setStyle(TableStyle([
("ROWBACKGROUNDS", (0,0), (-1,-1), [WHITE, LIGHT_BG]),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 6),
("RIGHTPADDING", (0,0), (-1,-1), 6),
("GRID", (0,0), (-1,-1), 0.3, LIGHT_GRAY),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story += [sup_table, sp(2)]
# ══════════════════════════════════════════════════════════════════════════════
# PAGE 2 – QUICK REFERENCE CARD
# ══════════════════════════════════════════════════════════════════════════════
story += [PageBreak()]
story += [section_banner("QUICK REFERENCE CARD — At-a-Glance Algorithm"), sp()]
algo_lines = [
"DIAGNOSE CIRRHOSIS",
" ↓",
"STAGE IT → Child-Pugh A/B/C + MELD-Na",
" ↓",
"TREAT THE CAUSE FIRST (HBV/HCV antivirals, abstinence, UDCA, etc.)",
" ↓",
"CHECK FOR COMPLICATIONS:",
"",
" Varices? → NSBB (carvedilol 6.25 mg/day) for prophylaxis",
" Acute bleed? → Terlipressin IV + ceftriaxone + endoscopy",
" Ascites? → Spironolactone ± furosemide → LVP + albumin if tense",
" SBP? → Cefotaxime IV + albumin day 1 & 3 → norfloxacin prophylaxis",
" Encephalopathy? → Lactulose + find precipitant → add rifaximin",
" HRS-AKI? → Terlipressin + albumin (stop diuretics, ACEi, NSAIDs)",
" HCC screen → US + AFP every 6 months (all patients)",
"",
" MELD-Na ≥ 15 → REFER TO TRANSPLANT CENTRE",
"",
"ALWAYS AVOID: NSAIDs · Aminoglycosides · ACEi/ARBs (decompensated) · Benzodiazepines",
]
for line in algo_lines:
story += [Paragraph(line, S["code"])]
story += [sp(2)]
# Monitoring table
story += [
Paragraph(B("Routine Monitoring Schedule"), S["h2"]),
sp()
]
mon_rows = [
["All compensated", "Every 6 months", "LFTs, FBC, creatinine, INR, AFP + liver USS"],
["Ascites on diuretics", "Every 1–4 weeks initially", "U&E, creatinine (adjust diuretics by response)"],
["Post-SBP prophylaxis", "Every 3 months", "Culture if fever; check renal function"],
["HBV/HCV on antivirals", "Every 3–6 months", "Viral load, LFTs, HBsAg (HBV)"],
["Transplant listed", "Every 3 months", "Full workup; MELD recalculation"],
["Child-Pugh B/C", "Every 3 months", "Full LFTs, ammonia if HE symptoms, electrolytes"],
]
story += [
std_table(["Patient Group","Frequency","What to Check"], mon_rows,
col_widths=[4.5*cm, 4*cm, 8.3*cm], header_color=TEAL),
sp(2)
]
# Referral indications
story += [
Paragraph(B("Indications for Urgent Specialist Referral"), S["h2"]), sp(),
]
ref_bullets = [
"First episode of decompensation (ascites, encephalopathy, variceal bleed, jaundice)",
"MELD-Na ≥ 15 → transplant assessment",
"AKI in cirrhosis (creatinine rise ≥ 0.3 mg/dL)",
"Suspected HRS (no improvement with volume expansion)",
"New or progressive HCC on surveillance",
"Recurrent SBP or treatment-refractory SBP",
"ACLF (acute-on-chronic liver failure) — ICU-level care",
"Refractory ascites not responding to diuretics",
]
for r in ref_bullets:
story += [bullet(r)]
story += [sp(2)]
# Sources
story += [
HRFlowable(color=LIGHT_GRAY, thickness=0.5, width="100%"), sp(),
Paragraph(B("Key Sources"), S["h2"]),
Paragraph("1. EASL Clinical Practice Guidelines: Management of patients with decompensated cirrhosis. "
"J Hepatol 2018;69:406–460.", S["small"]),
Paragraph("2. Baveno VII Consensus — Renewing consensus in portal hypertension. "
"J Hepatol 2022;76(4):959–974.", S["small"]),
Paragraph("3. Chinese Guidelines for Clinical Diagnosis, Treatment, and Management of Cirrhosis (2025). "
"J Clin Transl Hepatol. PMC12872386.", S["small"]),
Paragraph("4. AASLD Practice Guidance: Complications of cirrhosis. Hepatology 2021–2024.", S["small"]),
sp(),
note_box("This document is a clinical reference summary only. Always verify doses and recommendations "
"against current local guidelines and individual patient factors. Not a substitute for specialist care."),
]
# ── Build ──────────────────────────────────────────────────────────────────────
doc.build(story, onFirstPage=on_first_page, onLaterPages=on_page)
print(f"PDF written to {OUTPUT}")
cd /tmp/workspace/cirrhosis-guide && python build_pdf.py 2>&1
ls -lh /tmp/workspace/cirrhosis-guide/Cirrhosis_Practical_Guidelines.pdf
Cirrhosis Practical Guidelines
PDF Document · PDF
An organization where I can find structured guidelines
| Organization | Website | What They Cover |
|---|---|---|
| Baveno Cooperation | bavenocoop.net | Portal hypertension - very structured consensus statements (Baveno VII now, Baveno VIII expected soon) |
| APASL (Asia-Pacific) | apasl.info | Hepatitis B/C cirrhosis — concise, algorithm-heavy guidelines |
| BSG (British Society of Gastroenterology) | bsg.org.uk/clinical-guidance | Very readable, practical UK guidelines with clear algorithms |
| AASLD (American) | aasld.org/publications/practice-guidelines | Comprehensive but dense - you mentioned these are complex |
| ACG (American College of Gastro) | gi.org/guidelines | Same - thorough but not as structured as EASL |