Drug dose adjustments in chronic hepatic disease for 10marks question

Reading File
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Finding Sources
I now have comprehensive information from authoritative sources. Let me compile the full 10-mark answer.

Drug Dose Adjustments in Chronic Hepatic Disease

Introduction

The liver is the primary site of drug metabolism. Chronic hepatic disease (cirrhosis, chronic hepatitis, hepatic fibrosis) disrupts multiple pharmacokinetic processes, making rational dose adjustment essential to prevent toxicity or therapeutic failure.

Pharmacokinetic Changes in Hepatic Disease

Chronic liver disease alters drug handling through several interrelated mechanisms:
ParameterChangeClinical Impact
Hepatic blood flowReduced (portosystemic shunting)Reduced first-pass extraction
Hepatocellular massReducedReduced intrinsic clearance
Plasma protein (albumin)ReducedIncreased free drug fraction
Volume of distributionIncreased (ascites, edema)Drug dilution; loading dose may need to increase
Biliary excretionImpairedAccumulation of some drugs
Gut wall absorptionVariableAltered bioavailability

Classification by Hepatic Extraction Ratio

This is the most important pharmacokinetic framework for dose adjustments in liver disease.

1. High Extraction Ratio Drugs (E > 0.7) - "Flow-Limited"

  • Clearance depends primarily on hepatic blood flow
  • Undergo extensive first-pass metabolism - oral bioavailability is normally low
  • In liver disease: reduced portal blood flow and portosystemic shunting means oral bioavailability increases dramatically - the drug bypasses hepatic metabolism
  • Dose must be reduced, especially for oral dosing
  • Examples: propranolol, labetalol, verapamil, morphine, lidocaine, nitrates, metoprolol

2. Low Extraction Ratio Drugs (E < 0.3) - "Capacity-Limited"

  • Clearance depends on intrinsic enzyme activity and protein binding
  • Less affected by hepatic blood flow
  • In liver disease: reduced enzyme mass and reduced albumin both impair clearance
  • Examples: warfarin, diazepam, phenytoin, theophylline, tolbutamide

3. Intermediate Extraction Ratio Drugs (E 0.3-0.7)

  • Affected by both flow and capacity changes
  • Examples: codeine, nortriptyline

Assessing Severity: Child-Pugh Score

Since no reliable single test quantifies hepatic drug metabolism, the Child-Pugh score (also Child-Turcotte-Pugh, CTP) is the standard clinical tool used to guide dose adjustments. It scores five parameters:
Parameter1 Point2 Points3 Points
Bilirubin (mg/dL)< 22-3> 3
Albumin (g/dL)> 3.52.8-3.5< 2.8
PT prolongation (sec)< 44-6> 6
AscitesNoneMildSevere
EncephalopathyNoneGrade I-IIGrade III-IV
  • Class A (5-6): Mild - minimal dose adjustment needed
  • Class B (7-9): Moderate - significant dose reduction required
  • Class C (10-15): Severe - many drugs contraindicated; use with extreme caution
The MELD score is increasingly used for end-stage liver disease but CTP remains the pharmacokinetic standard.

Specific Drug Class Adjustments

Analgesics

  • Opioids (general): Dosing intervals must be increased; liver disease reduces metabolism and accumulation occurs with repeated dosing. Prolonged elimination most notable with morphine and meperidine (Barash Clinical Anesthesia, 9e, p. 3964).
  • Morphine: Pharmacokinetics relatively preserved in mild-moderate cirrhosis due to compensatory extrahepatic metabolism; however, after liver resection, morphine clearance is significantly reduced. Use with caution - can precipitate/worsen hepatic encephalopathy.
  • Meperidine (pethidine): Avoid - metabolism reduced in cirrhosis, accumulation of neurotoxic metabolite normeperidine causes seizures and CNS depression mimicking hepatic encephalopathy.
  • Fentanyl, sufentanil: Disposition largely unaffected by liver disease; preferred opioids in hepatic impairment.
  • Remifentanil: Pharmacokinetics unchanged by liver disease - hydrolyzed by blood and tissue esterases, not hepatically metabolized. Safe choice in severe hepatic failure.
  • NSAIDs: Generally avoid in cirrhosis - risk of renal impairment, GI bleeding, and precipitation of hepatorenal syndrome.
  • Paracetamol (acetaminophen): Can be used in reduced doses (2 g/day max in chronic liver disease) - safer than NSAIDs. Avoid in alcoholic hepatitis.

Sedatives and Anxiolytics

  • Benzodiazepines (e.g., diazepam): Low extraction ratio; long half-lives (diazepam t½ = 43 hours in normal subjects, markedly extended in cirrhosis). Greatly increased sensitivity in hepatic encephalopathy. Use short-acting agents like lorazepam or oxazepam which undergo glucuronidation only (not CYP-dependent); reduce dose.
  • Midazolam: Low extraction ratio (E = 0.30-0.44); complex changes in cirrhosis due to altered protein binding. Prolonged action - use with caution, reduce dose.

Induction Agents and Anesthetics

  • Propofol, ketamine, etomidate, thiopental: Highly lipophilic, high extraction ratio; clearance in cirrhotics similar to normal patients. However, pharmacodynamic effects are more pronounced - use reduced doses.
  • Dexmedetomidine: Duration of action prolonged in liver disease - reduce dose.

Neuromuscular Blocking Agents

  • Vecuronium, rocuronium, pancuronium: All hepatically metabolized - prolonged duration in liver disease. Note: initial resistance may occur due to elevated globulins and increased volume of distribution; however, recovery is markedly delayed.
  • Atracurium, cisatracurium: Undergo organ-independent Hofmann elimination - safe choices in severe hepatic failure; duration unaffected.
  • Succinylcholine: Reduced plasma cholinesterase (pseudocholinesterase) in cirrhosis prolongs action; clinical impact usually minor.

Antibiotics

  • Most beta-lactams (penicillins, cephalosporins, carbapenems): Primarily renally excreted - minimal hepatic dose adjustment needed.
  • Metronidazole: Reduce dose in severe hepatic disease; accumulation occurs.
  • Chloramphenicol, erythromycin: Reduce dose.
  • Rifampicin: Use with caution; hepatotoxic potential.
  • Quinupristin/dalfopristin, clarithromycin: Dose adjustment required in hepatic impairment - elevated LFTs and altered clearance.

Cardiovascular Drugs

  • Propranolol, labetalol: High extraction ratio - oral bioavailability doubled or tripled in cirrhosis (first-pass bypass); reduce dose significantly.
  • Warfarin: Low extraction ratio; already elevated PT in cirrhosis due to impaired clotting factor synthesis - extreme sensitivity, titrate with frequent INR monitoring; usually no additional anticoagulation needed.
  • Lidocaine: High extraction ratio; clearance tightly linked to hepatic blood flow - reduce infusion rate significantly.
  • Statins: Use with caution in active liver disease; generally avoided in Child-Pugh C.
  • ACE inhibitors: Primarily renally cleared; generally safe.

Antidiabetics

  • Metformin: Avoid in significant hepatic impairment - increased risk of lactic acidosis.
  • Sulfonylureas: Avoid - prolonged hypoglycemia risk; hepatically metabolized.
  • Insulin: Preferred; dose may need reduction as hepatic glucose metabolism impaired.

Antiepileptics

  • Phenytoin: Low extraction ratio; highly albumin-bound. In liver disease, reduced albumin leads to increased free phenytoin fraction - measure free phenytoin levels, not total. Total levels may appear normal or low while free (active) fraction is toxic. Titrate carefully (Tietz Laboratory Medicine, 7e, p. 1449).
  • Valproate: Avoid in hepatic disease - hepatotoxic.
  • Lamotrigine, levetiracetam: Relatively safe; reduce dose in severe disease.

Psychotropic Drugs

  • Antidepressants: Many SSRIs/SNRIs require dose reduction in moderate-severe hepatic impairment. Sertraline: half-life increased to 52 hours in mild cirrhosis (vs 22 hours normal) - reduce dose. Paroxetine, fluvoxamine: use lowest effective dose.
  • Antipsychotics: Most undergo hepatic metabolism; reduce dose in moderate-severe disease. Several are contraindicated in Child-Pugh B/C.
  • Tricyclics: Rare instances of hepatic injury; use cautiously with dose reduction.

General Principles for Dose Adjustment

  1. Avoid drugs entirely when safer alternatives exist and the drug is known to be hepatotoxic (e.g., valproate, tetracyclines, NSAIDs in advanced cirrhosis).
  2. Start low, go slow: Begin at the lowest effective dose and titrate based on response and toxicity.
  3. Extend dosing intervals rather than reducing each dose for drugs with prolonged half-lives.
  4. Monitor free drug levels for highly protein-bound drugs (phenytoin, carbamazepine) - total levels are misleading when albumin is low.
  5. Assess and reassess using Child-Pugh class to guide overall drug safety.
  6. Drugs safe in hepatic impairment (no dose adjustment needed): atracurium, cisatracurium, remifentanil, lorazepam, oxazepam, most aminoglycosides, most penicillins/cephalosporins.
  7. Avoid nephrotoxic drugs - hepatorenal syndrome can complicate advanced cirrhosis; aminoglycosides and NSAIDs can precipitate it.

Summary Table: Common Drugs in Hepatic Disease

DrugAction Required
MorphineExtend interval; avoid in encephalopathy
MeperidineAvoid
Fentanyl, remifentanilSafe - no dose change needed
DiazepamReduce dose; prefer oxazepam/lorazepam
Propranolol (oral)Significant dose reduction
WarfarinExtreme sensitivity - monitor INR closely
PhenytoinMonitor free levels; reduce if needed
Vecuronium/rocuroniumProlonged action - reduce and monitor
Atracurium/cisatracuriumSafe - no dose change
MetforminAvoid in significant impairment
ParacetamolReduce to max 2 g/day
NSAIDsAvoid in advanced cirrhosis
ValproateAvoid

Sources: Barash, Cullen & Stoelting's Clinical Anesthesia 9e; Miller's Anesthesia 10e; Tietz Textbook of Laboratory Medicine 7e; Sabiston Textbook of Surgery; Maudsley Prescribing Guidelines in Psychiatry 15e; Lippincott Illustrated Reviews Pharmacology

Create a study guide PDF on hepatic dose adjustment for exams

Reading File
Reading File
Running Command

mkdir -p /tmp/workspace/hepatic-dose-guide && ls /tmp/workspace/

Writing File

~/hepatic-dose-guide/generate_pdf.py

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

OUTPUT = "/tmp/workspace/hepatic-dose-guide/Hepatic_Dose_Adjustment_Study_Guide.pdf"

# ── Colour palette ──────────────────────────────────────────────────────────
DARK_BLUE   = colors.HexColor("#1A3A5C")
MED_BLUE    = colors.HexColor("#2E6DA4")
LIGHT_BLUE  = colors.HexColor("#D6E8F7")
ACCENT_TEAL = colors.HexColor("#1B7A8A")
LIGHT_TEAL  = colors.HexColor("#D4EEF1")
WARN_RED    = colors.HexColor("#C0392B")
WARN_LIGHT  = colors.HexColor("#FADBD8")
SAFE_GREEN  = colors.HexColor("#1A7A4A")
SAFE_LIGHT  = colors.HexColor("#D5F0E0")
ORANGE      = colors.HexColor("#D35400")
ORANGE_LIGHT= colors.HexColor("#FDEBD0")
GREY_BG     = colors.HexColor("#F4F6F9")
GREY_DARK   = colors.HexColor("#4A4A4A")
WHITE       = colors.white

# ── Document setup ───────────────────────────────────────────────────────────
doc = SimpleDocTemplate(
    OUTPUT,
    pagesize=A4,
    leftMargin=18*mm, rightMargin=18*mm,
    topMargin=18*mm, bottomMargin=18*mm,
    title="Hepatic Dose Adjustment – Exam Study Guide",
    author="Orris Medical AI",
)

# ── Styles ───────────────────────────────────────────────────────────────────
base = getSampleStyleSheet()

def S(name, **kw):
    return ParagraphStyle(name, **kw)

sTitle = S("sTitle",
    fontSize=26, leading=32, textColor=WHITE,
    fontName="Helvetica-Bold", alignment=TA_CENTER, spaceAfter=4)

sSubtitle = S("sSubtitle",
    fontSize=13, leading=18, textColor=colors.HexColor("#B8D4ED"),
    fontName="Helvetica", alignment=TA_CENTER, spaceAfter=2)

sSection = S("sSection",
    fontSize=14, leading=18, textColor=WHITE,
    fontName="Helvetica-Bold", alignment=TA_LEFT,
    spaceBefore=6, spaceAfter=4, leftIndent=0)

sSubsec = S("sSubsec",
    fontSize=11, leading=15, textColor=DARK_BLUE,
    fontName="Helvetica-Bold", spaceBefore=8, spaceAfter=3)

sBody = S("sBody",
    fontSize=9.5, leading=14, textColor=GREY_DARK,
    fontName="Helvetica", alignment=TA_JUSTIFY, spaceAfter=4)

sBullet = S("sBullet",
    fontSize=9.5, leading=14, textColor=GREY_DARK,
    fontName="Helvetica", leftIndent=12, spaceAfter=2)

sNote = S("sNote",
    fontSize=8.5, leading=12, textColor=colors.HexColor("#5D4037"),
    fontName="Helvetica-Oblique", leftIndent=8, spaceAfter=3)

sWarn = S("sWarn",
    fontSize=9, leading=13, textColor=WARN_RED,
    fontName="Helvetica-Bold", leftIndent=8, spaceAfter=2)

sSafe = S("sSafe",
    fontSize=9, leading=13, textColor=SAFE_GREEN,
    fontName="Helvetica-Bold", leftIndent=8, spaceAfter=2)

sTableHead = S("sTableHead",
    fontSize=9, leading=12, textColor=WHITE,
    fontName="Helvetica-Bold", alignment=TA_CENTER)

sTableCell = S("sTableCell",
    fontSize=8.5, leading=12, textColor=GREY_DARK,
    fontName="Helvetica", alignment=TA_LEFT)

sTableCellC = S("sTableCellC",
    fontSize=8.5, leading=12, textColor=GREY_DARK,
    fontName="Helvetica", alignment=TA_CENTER)

sPageNum = S("sPageNum",
    fontSize=8, leading=10, textColor=colors.HexColor("#888888"),
    fontName="Helvetica", alignment=TA_CENTER)

sMemBox = S("sMemBox",
    fontSize=9, leading=13, textColor=colors.HexColor("#4A235A"),
    fontName="Helvetica-Bold", leftIndent=6, spaceAfter=2)

# ── Helper: section banner ────────────────────────────────────────────────────
def section_banner(text, color=DARK_BLUE):
    data = [[Paragraph(text, sSection)]]
    t = Table(data, colWidths=[174*mm])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), color),
        ("ROWPADDING", (0,0), (-1,-1), 7),
        ("LEFTPADDING", (0,0), (-1,-1), 10),
        ("BOTTOMPADDING", (0,0), (-1,-1), 6),
        ("TOPPADDING", (0,0), (-1,-1), 6),
    ]))
    return t

def mini_banner(text, color=ACCENT_TEAL):
    data = [[Paragraph(text, S("mb", fontSize=10, leading=13,
                               textColor=WHITE, fontName="Helvetica-Bold",
                               alignment=TA_LEFT))]]
    t = Table(data, colWidths=[174*mm])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), color),
        ("ROWPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING", (0,0), (-1,-1), 10),
    ]))
    return t

def bullet(text, style=sBullet):
    return Paragraph(f"• &nbsp;{text}", style)

def warn_box(text):
    data = [[Paragraph(f"⚠ {text}", sWarn)]]
    t = Table(data, colWidths=[174*mm])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), WARN_LIGHT),
        ("LEFTPADDING", (0,0), (-1,-1), 8),
        ("ROWPADDING", (0,0), (-1,-1), 5),
        ("BOX", (0,0), (-1,-1), 0.5, WARN_RED),
    ]))
    return t

def safe_box(text):
    data = [[Paragraph(f"✓ {text}", sSafe)]]
    t = Table(data, colWidths=[174*mm])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), SAFE_LIGHT),
        ("LEFTPADDING", (0,0), (-1,-1), 8),
        ("ROWPADDING", (0,0), (-1,-1), 5),
        ("BOX", (0,0), (-1,-1), 0.5, SAFE_GREEN),
    ]))
    return t

def info_box(text, bg=LIGHT_BLUE):
    data = [[Paragraph(text, sNote)]]
    t = Table(data, colWidths=[174*mm])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), bg),
        ("LEFTPADDING", (0,0), (-1,-1), 10),
        ("ROWPADDING", (0,0), (-1,-1), 5),
        ("BOX", (0,0), (-1,-1), 0.5, MED_BLUE),
    ]))
    return t

def mem_box(title, text, bg=colors.HexColor("#EDE7F6")):
    data = [[Paragraph(f"🧠  {title}: {text}", sMemBox)]]
    t = Table(data, colWidths=[174*mm])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), bg),
        ("LEFTPADDING", (0,0), (-1,-1), 8),
        ("ROWPADDING", (0,0), (-1,-1), 5),
        ("BOX", (0,0), (-1,-1), 0.5, colors.HexColor("#7B1FA2")),
    ]))
    return t

def two_col(left_items, right_items):
    """Two-column layout using a borderless table."""
    def make_cell(items):
        return [Paragraph(i, sBody) for i in items]
    data = [[make_cell(left_items), make_cell(right_items)]]
    t = Table(data, colWidths=[85*mm, 85*mm])
    t.setStyle(TableStyle([
        ("VALIGN", (0,0), (-1,-1), "TOP"),
        ("LEFTPADDING", (0,0), (-1,-1), 4),
        ("RIGHTPADDING", (0,0), (-1,-1), 4),
    ]))
    return t

# ── Cover page ───────────────────────────────────────────────────────────────
elems = []

# Full-width cover band
cover_data = [[Paragraph("DRUG DOSE ADJUSTMENTS", sTitle)],
              [Paragraph("in Chronic Hepatic Disease", sSubtitle)],
              [Paragraph("Comprehensive Exam Study Guide  •  Pharmacology", sSubtitle)]]
cover_table = Table(cover_data, colWidths=[174*mm])
cover_table.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,-1), DARK_BLUE),
    ("TOPPADDING", (0,0), (-1,-1), 12),
    ("BOTTOMPADDING", (0,0), (-1,-1), 12),
    ("LEFTPADDING", (0,0), (-1,-1), 10),
    ("RIGHTPADDING", (0,0), (-1,-1), 10),
]))
elems.append(cover_table)
elems.append(Spacer(1, 6*mm))

# Quick-reference badge row
badge_data = [
    [Paragraph("📋  Child-Pugh\nClassification", sBody),
     Paragraph("🔬  Pharmacokinetic\nMechanisms", sBody),
     Paragraph("💊  Drug Class\nAdjustments", sBody),
     Paragraph("⚠️   Avoid / Safe\nDrug Lists", sBody),
     Paragraph("🧠  Memory\nAids", sBody)],
]
bt = Table(badge_data, colWidths=[34*mm]*5)
bt.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,-1), LIGHT_BLUE),
    ("ALIGN", (0,0), (-1,-1), "CENTER"),
    ("VALIGN", (0,0), (-1,-1), "MIDDLE"),
    ("ROWPADDING", (0,0), (-1,-1), 7),
    ("BOX", (0,0), (-1,-1), 1, MED_BLUE),
    ("INNERGRID", (0,0), (-1,-1), 0.5, MED_BLUE),
    ("FONTSIZE", (0,0), (-1,-1), 8.5),
    ("FONTNAME", (0,0), (-1,-1), "Helvetica-Bold"),
    ("TEXTCOLOR", (0,0), (-1,-1), DARK_BLUE),
]))
elems.append(bt)
elems.append(Spacer(1, 5*mm))
elems.append(HRFlowable(width="100%", thickness=1.5, color=MED_BLUE))
elems.append(Spacer(1, 3*mm))

# ── SECTION 1: INTRODUCTION ───────────────────────────────────────────────────
elems.append(section_banner("1.  WHY HEPATIC DOSE ADJUSTMENT MATTERS"))
elems.append(Spacer(1, 3*mm))
elems.append(Paragraph(
    "The liver is the primary site of drug metabolism. Chronic hepatic disease — cirrhosis, chronic hepatitis, "
    "hepatic fibrosis — disrupts absorption, distribution, metabolism and excretion of drugs. Failure to adjust "
    "doses risks drug toxicity (e.g., hepatic encephalopathy from opioids, haemorrhage from warfarin) or "
    "therapeutic failure. Unlike renal impairment where GFR guides dosing, <b>no single test reliably "
    "predicts hepatic drug metabolism</b>. The Child-Pugh score is the standard clinical surrogate.", sBody))
elems.append(Spacer(1, 3*mm))

# ── SECTION 2: PK CHANGES ─────────────────────────────────────────────────────
elems.append(section_banner("2.  PHARMACOKINETIC CHANGES IN CHRONIC LIVER DISEASE"))
elems.append(Spacer(1, 3*mm))

pk_data = [
    [Paragraph("PK Parameter", sTableHead),
     Paragraph("Change in Liver Disease", sTableHead),
     Paragraph("Clinical Consequence", sTableHead)],
    ["Hepatic blood flow", "↓ (portosystemic shunting)", "High-extraction drugs: ↑ oral bioavailability"],
    ["Hepatocellular mass", "↓ (fibrosis, necrosis)", "Reduced intrinsic clearance of all hepatic drugs"],
    ["Plasma albumin", "↓ (hypoalbuminaemia)", "↑ free (active) drug fraction — enhanced effect/toxicity"],
    ["Volume of distribution", "↑ (ascites, oedema)", "Drug dilution; loading dose may need to ↑"],
    ["CYP450 enzyme activity", "↓ (varies by isoform)", "Prolonged half-life of CYP-metabolised drugs"],
    ["Biliary excretion", "Impaired (cholestasis)", "Accumulation of drugs excreted in bile"],
    ["Gut wall metabolism", "Reduced", "Further ↑ oral bioavailability"],
    ["Plasma cholinesterase", "↓ (reduced synthesis)", "Prolonged action of succinylcholine"],
]

pk_table = Table(pk_data, colWidths=[48*mm, 62*mm, 62*mm])
pk_ts = TableStyle([
    ("BACKGROUND", (0,0), (-1,0), MED_BLUE),
    ("TEXTCOLOR", (0,0), (-1,0), WHITE),
    ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
    ("FONTSIZE", (0,0), (-1,-1), 8.5),
    ("ALIGN", (0,0), (-1,-1), "LEFT"),
    ("VALIGN", (0,0), (-1,-1), "TOP"),
    ("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, GREY_BG]),
    ("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#BBBBBB")),
    ("LEFTPADDING", (0,0), (-1,-1), 6),
    ("ROWPADDING", (0,0), (-1,-1), 5),
    ("TOPPADDING", (0,0), (-1,-1), 4),
    ("BOTTOMPADDING", (0,0), (-1,-1), 4),
])
pk_table.setStyle(pk_ts)
elems.append(pk_table)
elems.append(Spacer(1, 3*mm))
elems.append(info_box(
    "Key Point: Liver disease causes unpredictable changes — always start at the lowest effective dose "
    "and titrate slowly. Monitor clinical response and drug levels where available."
))
elems.append(Spacer(1, 4*mm))

# ── SECTION 3: HEPATIC EXTRACTION RATIO ───────────────────────────────────────
elems.append(section_banner("3.  HEPATIC EXTRACTION RATIO — THE CORE CONCEPT"))
elems.append(Spacer(1, 3*mm))
elems.append(Paragraph(
    "Hepatic clearance = Hepatic blood flow (Q) × Extraction fraction (E). "
    "The extraction ratio classifies drugs into two groups with fundamentally different behaviour in liver disease:", sBody))
elems.append(Spacer(1, 2*mm))

ext_data = [
    [Paragraph("Feature", sTableHead),
     Paragraph("HIGH Extraction\n(E > 0.7)\n'Flow-Limited'", sTableHead),
     Paragraph("LOW Extraction\n(E < 0.3)\n'Capacity-Limited'", sTableHead)],
    ["Clearance depends on", "Hepatic blood flow", "Enzyme activity + protein binding"],
    ["Oral bioavailability normally", "LOW (extensive first-pass)", "HIGH (minimal first-pass)"],
    ["Effect of portal shunting", "↑↑ oral bioavailability", "Moderate effect"],
    ["Effect of enzyme loss", "Less affected", "More affected"],
    ["Half-life", "Short (e.g., propranolol t½ = 3.9 h)", "Long (e.g., diazepam t½ = 43 h)"],
    ["Examples", "Propranolol, labetalol, morphine,\nlidocaine, verapamil, nitrates,\nmetoprolol, pethidine", 
     "Warfarin, diazepam, phenytoin,\ntheophylline, tolbutamide,\nchlорpromazine"],
    ["Dose adjustment required", "Reduce oral dose significantly", "Reduce dose; monitor free levels"],
]

ext_table = Table(ext_data, colWidths=[45*mm, 64*mm, 63*mm])
ext_ts = TableStyle([
    ("BACKGROUND", (0,0), (0,0), MED_BLUE),
    ("BACKGROUND", (1,0), (1,0), colors.HexColor("#8E44AD")),
    ("BACKGROUND", (2,0), (2,0), ACCENT_TEAL),
    ("TEXTCOLOR", (0,0), (-1,0), WHITE),
    ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
    ("FONTSIZE", (0,0), (-1,-1), 8.5),
    ("ALIGN", (0,0), (-1,-1), "LEFT"),
    ("VALIGN", (0,0), (-1,-1), "TOP"),
    ("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, GREY_BG]),
    ("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#BBBBBB")),
    ("LEFTPADDING", (0,0), (-1,-1), 6),
    ("ROWPADDING", (0,0), (-1,-1), 5),
    ("TOPPADDING", (0,0), (-1,-1), 4),
    ("BOTTOMPADDING", (0,0), (-1,-1), 4),
])
ext_table.setStyle(ext_ts)
elems.append(ext_table)
elems.append(Spacer(1, 3*mm))
elems.append(mem_box("Mnemonic", 
    "HIGH extraction = HIGH first-pass, HIGHLY affected by blood flow. "
    "LOW extraction = LOW first-pass, affected by Liver enzymes and protein binding."))
elems.append(Spacer(1, 4*mm))

# ── SECTION 4: CHILD-PUGH ─────────────────────────────────────────────────────
elems.append(section_banner("4.  CHILD-PUGH SCORE — CLINICAL STAGING TOOL"))
elems.append(Spacer(1, 3*mm))
elems.append(Paragraph(
    "Since no single blood test quantifies hepatic drug metabolism, the Child-Pugh (CTP) score is the "
    "standard clinical tool for guiding dose adjustments:", sBody))
elems.append(Spacer(1, 2*mm))

cp_data = [
    [Paragraph("Parameter", sTableHead),
     Paragraph("1 Point", sTableHead),
     Paragraph("2 Points", sTableHead),
     Paragraph("3 Points", sTableHead)],
    ["Serum Bilirubin (mg/dL)", "< 2", "2 – 3", "> 3"],
    ["Serum Albumin (g/dL)", "> 3.5", "2.8 – 3.5", "< 2.8"],
    ["PT prolongation (seconds)", "< 4", "4 – 6", "> 6"],
    ["Ascites", "None", "Mild (controlled)", "Severe (refractory)"],
    ["Hepatic Encephalopathy", "None", "Grade I – II", "Grade III – IV"],
]

cp_table = Table(cp_data, colWidths=[52*mm, 40*mm, 40*mm, 40*mm])
cp_ts = TableStyle([
    ("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
    ("TEXTCOLOR", (0,0), (-1,0), WHITE),
    ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
    ("FONTSIZE", (0,0), (-1,-1), 9),
    ("ALIGN", (0,0), (-1,-1), "CENTER"),
    ("ALIGN", (0,0), (0,-1), "LEFT"),
    ("VALIGN", (0,0), (-1,-1), "MIDDLE"),
    ("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, GREY_BG]),
    ("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#BBBBBB")),
    ("LEFTPADDING", (0,0), (0,-1), 6),
    ("ROWPADDING", (0,0), (-1,-1), 5),
    ("TOPPADDING", (0,0), (-1,-1), 4),
    ("BOTTOMPADDING", (0,0), (-1,-1), 4),
])
cp_table.setStyle(cp_ts)
elems.append(cp_table)
elems.append(Spacer(1, 3*mm))

class_data = [
    [Paragraph("Child-Pugh Class", sTableHead),
     Paragraph("Score", sTableHead),
     Paragraph("Severity", sTableHead),
     Paragraph("Dosing Implication", sTableHead),
     Paragraph("1-Year Survival", sTableHead)],
    ["A", "5 – 6", "Mild", "Minimal adjustment; monitor", "≥ 85%"],
    ["B", "7 – 9", "Moderate", "Significant dose reduction required", "~60%"],
    ["C", "10 – 15", "Severe", "Many drugs contraindicated; extreme caution", "~35%"],
]

class_table = Table(class_data, colWidths=[40*mm, 26*mm, 30*mm, 60*mm, 32*mm])
class_ts = TableStyle([
    ("BACKGROUND", (0,0), (-1,0), ACCENT_TEAL),
    ("TEXTCOLOR", (0,0), (-1,0), WHITE),
    ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
    ("FONTSIZE", (0,0), (-1,-1), 9),
    ("ALIGN", (0,0), (-1,-1), "CENTER"),
    ("VALIGN", (0,0), (-1,-1), "MIDDLE"),
    ("BACKGROUND", (0,1), (-1,1), colors.HexColor("#E8F8F0")),
    ("BACKGROUND", (0,2), (-1,2), ORANGE_LIGHT),
    ("BACKGROUND", (0,3), (-1,3), WARN_LIGHT),
    ("TEXTCOLOR", (0,1), (0,1), SAFE_GREEN),
    ("TEXTCOLOR", (0,2), (0,2), ORANGE),
    ("TEXTCOLOR", (0,3), (0,3), WARN_RED),
    ("FONTNAME", (0,1), (0,3), "Helvetica-Bold"),
    ("FONTSIZE", (0,1), (0,3), 13),
    ("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#BBBBBB")),
    ("ROWPADDING", (0,0), (-1,-1), 6),
])
class_table.setStyle(class_ts)
elems.append(class_table)
elems.append(Spacer(1, 3*mm))
elems.append(info_box(
    "Note: The MELD score is increasingly used for end-stage liver disease prognosis, but Child-Pugh "
    "remains the standard pharmacokinetic tool for dose adjustment guidance."
))

elems.append(PageBreak())

# ── SECTION 5: DRUG-SPECIFIC ADJUSTMENTS ──────────────────────────────────────
elems.append(section_banner("5.  DRUG-SPECIFIC DOSE ADJUSTMENTS"))
elems.append(Spacer(1, 3*mm))

# 5A: Analgesics
elems.append(mini_banner("5A.  Analgesics & Opioids"))
elems.append(Spacer(1, 2*mm))

opioid_data = [
    [Paragraph("Drug", sTableHead),
     Paragraph("Extraction\nRatio", sTableHead),
     Paragraph("Behaviour in Liver Disease", sTableHead),
     Paragraph("Action Required", sTableHead)],
    ["Morphine", "High", 
     "PK relatively preserved in mild cirrhosis (extrahepatic metabolism compensates). Reduced clearance after liver resection. Can precipitate/worsen encephalopathy.",
     "Extend dosing interval. Avoid in encephalopathy. Use lower doses."],
    ["Pethidine\n(Meperidine)", "High",
     "Metabolism markedly reduced. Toxic metabolite NORPETHIDINE accumulates → seizures, CNS depression mimicking encephalopathy.",
     "⚠ AVOID in liver disease."],
    ["Fentanyl", "High",
     "Disposition largely unaffected by liver disease. Clearance affected by hepatic blood flow changes.",
     "Preferred opioid. Use normal doses initially; titrate."],
    ["Sufentanil", "High",
     "Disposition largely unaffected by liver disease.",
     "Generally safe; preferred over morphine/pethidine."],
    ["Remifentanil", "N/A",
     "Hydrolysed by blood and tissue esterases — NOT hepatically metabolised. PK unchanged even in anhepatic phase of liver transplant.",
     "✓ SAFE — no dose adjustment needed."],
    ["Alfentanil", "High",
     "Clearance significantly decreased in mild-moderate cirrhosis.",
     "Reduce infusion rate; monitor."],
    ["Paracetamol\n(Acetaminophen)", "Low",
     "Generally safe in stable chronic liver disease. Risk increases with active hepatitis or alcoholic hepatitis.",
     "Max 2 g/day in chronic liver disease. Avoid in acute alcoholic hepatitis."],
    ["NSAIDs", "Variable",
     "Risk of renal impairment, GI bleeding, platelet inhibition, and precipitation of hepatorenal syndrome.",
     "⚠ AVOID in cirrhosis (especially advanced)."],
    ["Codeine", "Intermediate",
     "Prodrug requiring CYP2D6 conversion to morphine. Reduced conversion in liver disease.",
     "Avoid or use cautiously; unpredictable effect."],
]

opioid_table = Table(opioid_data, colWidths=[30*mm, 20*mm, 72*mm, 50*mm])
opioid_ts = TableStyle([
    ("BACKGROUND", (0,0), (-1,0), colors.HexColor("#6D4C41")),
    ("TEXTCOLOR", (0,0), (-1,0), WHITE),
    ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
    ("FONTSIZE", (0,0), (-1,-1), 8),
    ("ALIGN", (0,0), (-1,-1), "LEFT"),
    ("VALIGN", (0,0), (-1,-1), "TOP"),
    ("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, GREY_BG]),
    ("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#BBBBBB")),
    ("LEFTPADDING", (0,0), (-1,-1), 5),
    ("ROWPADDING", (0,0), (-1,-1), 4),
    ("TOPPADDING", (0,0), (-1,-1), 3),
    ("BOTTOMPADDING", (0,0), (-1,-1), 3),
])
opioid_table.setStyle(opioid_ts)
elems.append(opioid_table)
elems.append(Spacer(1, 3*mm))
elems.append(warn_box("Pethidine (meperidine): ABSOLUTELY AVOID — norpethidine accumulation causes seizures."))
elems.append(safe_box("Remifentanil, fentanyl, sufentanil: Relatively safe choices in hepatic impairment."))
elems.append(Spacer(1, 4*mm))

# 5B: Sedatives/BZDs
elems.append(mini_banner("5B.  Sedatives, Anxiolytics & Benzodiazepines"))
elems.append(Spacer(1, 2*mm))

benzo_data = [
    [Paragraph("Drug", sTableHead),
     Paragraph("Extraction", sTableHead),
     Paragraph("Key Issue in Liver Disease", sTableHead),
     Paragraph("Recommendation", sTableHead)],
    ["Diazepam", "Low",
     "t½ = 43 h normally — greatly extended in cirrhosis. Complex changes in free fraction due to ↓albumin.",
     "Avoid if possible. If needed, very low dose, extended interval."],
    ["Midazolam", "Low\n(E=0.30–0.44)",
     "Prolonged action in liver disease due to reduced CYP3A4 activity. Protein binding changes complicate kinetics.",
     "Reduce dose. Monitor for prolonged sedation."],
    ["Lorazepam", "Low",
     "Undergoes glucuronidation ONLY (not CYP-dependent). Safer profile.",
     "✓ Preferred BZD in liver disease. Reduce dose in severe disease."],
    ["Oxazepam", "Low",
     "Also glucuronidation only. Short–intermediate t½.",
     "✓ Preferred BZD in liver disease."],
    ["Temazepam", "Low",
     "Glucuronidation only, similar to lorazepam/oxazepam.",
     "✓ Relatively safe. Preferred over diazepam."],
    ["Chlordiazepoxide", "Low",
     "Long-acting active metabolites; severely prolonged in cirrhosis.",
     "Avoid in significant hepatic impairment."],
    ["Propofol", "High",
     "Despite high extraction, clearance in cirrhotics similar to normal. However, pharmacodynamic effects more pronounced.",
     "Reduce induction dose; titrate to effect."],
    ["Dexmedetomidine", "High",
     "Duration of action prolonged in liver disease.",
     "Reduce maintenance infusion rate."],
]

benzo_table = Table(benzo_data, colWidths=[32*mm, 24*mm, 70*mm, 46*mm])
benzo_ts = TableStyle([
    ("BACKGROUND", (0,0), (-1,0), colors.HexColor("#1A5276")),
    ("TEXTCOLOR", (0,0), (-1,0), WHITE),
    ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
    ("FONTSIZE", (0,0), (-1,-1), 8),
    ("ALIGN", (0,0), (-1,-1), "LEFT"),
    ("VALIGN", (0,0), (-1,-1), "TOP"),
    ("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, GREY_BG]),
    ("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#BBBBBB")),
    ("LEFTPADDING", (0,0), (-1,-1), 5),
    ("ROWPADDING", (0,0), (-1,-1), 4),
    ("TOPPADDING", (0,0), (-1,-1), 3),
    ("BOTTOMPADDING", (0,0), (-1,-1), 3),
])
benzo_table.setStyle(benzo_ts)
elems.append(benzo_table)
elems.append(Spacer(1, 3*mm))
elems.append(mem_box("Mnemonic for safe BZDs", 
    "'LOT' — Lorazepam, Oxazepam, Temazepam are safe (glucuronidation only, no active metabolites)."))
elems.append(Spacer(1, 4*mm))

# 5C: NMBAs
elems.append(mini_banner("5C.  Neuromuscular Blocking Agents (NMBAs)"))
elems.append(Spacer(1, 2*mm))

nmba_data = [
    [Paragraph("Drug", sTableHead),
     Paragraph("Elimination", sTableHead),
     Paragraph("Effect in Liver Disease", sTableHead),
     Paragraph("Recommendation", sTableHead)],
    ["Vecuronium", "Hepatic (biliary)", "Prolonged duration. Initial resistance due to ↑ Vd (ascites, ↑globulins).", "Reduce dose; use peripheral nerve monitor."],
    ["Rocuronium", "Hepatic (biliary)", "Prolonged duration. Same resistance effect as vecuronium.", "Reduce dose; monitor."],
    ["Pancuronium", "Hepatic + Renal", "Prolonged action.", "Reduce dose; avoid in severe disease."],
    ["Atracurium", "Hofmann elimination\n(organ-independent)", "Duration UNAFFECTED by liver disease.", "✓ SAFE — preferred NMBA in liver failure."],
    ["Cisatracurium", "Hofmann elimination\n(organ-independent)", "Duration UNAFFECTED. Metabolite laudanosine excreted by liver but neurotoxicity not reported.", "✓ SAFE — preferred NMBA in liver failure."],
    ["Succinylcholine", "Plasma cholinesterase\n(↓ in cirrhosis)", "Mildly prolonged action. Plasma cholinesterase synthesis reduced.", "Generally clinically insignificant; use cautiously."],
    ["Mivacurium", "Plasma cholinesterase", "Prolonged action — avoid.", "⚠ Avoid in significant liver disease."],
]

nmba_table = Table(nmba_data, colWidths=[34*mm, 40*mm, 56*mm, 42*mm])
nmba_ts = TableStyle([
    ("BACKGROUND", (0,0), (-1,0), colors.HexColor("#145A32")),
    ("TEXTCOLOR", (0,0), (-1,0), WHITE),
    ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
    ("FONTSIZE", (0,0), (-1,-1), 8),
    ("ALIGN", (0,0), (-1,-1), "LEFT"),
    ("VALIGN", (0,0), (-1,-1), "TOP"),
    ("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, GREY_BG]),
    ("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#BBBBBB")),
    ("LEFTPADDING", (0,0), (-1,-1), 5),
    ("ROWPADDING", (0,0), (-1,-1), 4),
    ("TOPPADDING", (0,0), (-1,-1), 3),
    ("BOTTOMPADDING", (0,0), (-1,-1), 3),
])
nmba_table.setStyle(nmba_ts)
elems.append(nmba_table)
elems.append(Spacer(1, 3*mm))
elems.append(safe_box("Atracurium and Cisatracurium: Hofmann elimination — independent of liver AND kidney function. Always safe."))
elems.append(warn_box("Vecuronium/Rocuronium: Expect prolonged block + possible initial resistance — always use nerve stimulator."))

elems.append(PageBreak())

# 5D: Cardiovascular
elems.append(section_banner("5.  DRUG-SPECIFIC ADJUSTMENTS (continued)"))
elems.append(Spacer(1, 3*mm))
elems.append(mini_banner("5D.  Cardiovascular Drugs"))
elems.append(Spacer(1, 2*mm))

cvs_data = [
    [Paragraph("Drug", sTableHead),
     Paragraph("Key Issue", sTableHead),
     Paragraph("Action", sTableHead)],
    ["Propranolol", "High extraction ratio. Oral bioavailability 2–3× higher in cirrhosis (portal bypass).",
     "Significantly reduce oral dose. IV dose less affected."],
    ["Labetalol", "High extraction. Same mechanism as propranolol.",
     "Reduce oral dose significantly."],
    ["Metoprolol", "High extraction.",
     "Reduce dose; monitor HR/BP carefully."],
    ["Verapamil", "High extraction. Extensive first-pass bypassed in cirrhosis.",
     "Reduce oral dose substantially."],
    ["Lidocaine", "High extraction (flow-limited). Clearance falls with ↓ hepatic blood flow.",
     "Reduce infusion rate significantly. Risk of CNS toxicity."],
    ["Warfarin", "Low extraction. Already elevated INR due to impaired clotting factor synthesis.",
     "Extreme sensitivity. Titrate with frequent INR monitoring. Usually no additional anticoagulation needed."],
    ["Digoxin", "Primarily renal excretion. Less affected by liver disease.",
     "Caution in concurrent renal impairment (hepatorenal syndrome)."],
    ["Nitrates", "High extraction. Bioavailability markedly increased.",
     "Reduce dose; monitor for hypotension."],
    ["Statins", "Hepatically metabolised; hepatotoxic potential.",
     "Avoid in active liver disease. Contraindicated in Child-Pugh C."],
    ["ACE Inhibitors", "Primarily renal clearance.",
     "Generally safe. Caution if hepatorenal syndrome develops."],
    ["Spironolactone", "Hepatically metabolised — used in ascites.",
     "Generally safe; first-line for hepatic ascites. Monitor K⁺."],
    ["Furosemide", "Renal excretion; used for oedema/ascites.",
     "Generally safe. Used alongside spironolactone."],
]

cvs_table = Table(cvs_data, colWidths=[35*mm, 85*mm, 52*mm])
cvs_ts = TableStyle([
    ("BACKGROUND", (0,0), (-1,0), colors.HexColor("#7D3C98")),
    ("TEXTCOLOR", (0,0), (-1,0), WHITE),
    ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
    ("FONTSIZE", (0,0), (-1,-1), 8),
    ("ALIGN", (0,0), (-1,-1), "LEFT"),
    ("VALIGN", (0,0), (-1,-1), "TOP"),
    ("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, GREY_BG]),
    ("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#BBBBBB")),
    ("LEFTPADDING", (0,0), (-1,-1), 5),
    ("ROWPADDING", (0,0), (-1,-1), 4),
    ("TOPPADDING", (0,0), (-1,-1), 3),
    ("BOTTOMPADDING", (0,0), (-1,-1), 3),
])
cvs_table.setStyle(cvs_ts)
elems.append(cvs_table)
elems.append(Spacer(1, 4*mm))

# 5E: Antimicrobials
elems.append(mini_banner("5E.  Antimicrobials"))
elems.append(Spacer(1, 2*mm))

abx_data = [
    [Paragraph("Drug/Class", sTableHead),
     Paragraph("Hepatic Role", sTableHead),
     Paragraph("Action in Liver Disease", sTableHead)],
    ["Penicillins, Cephalosporins,\nCarbapenems", "Primarily renally excreted", "Minimal hepatic dose adjustment; safe"],
    ["Aminoglycosides", "Renally excreted", "Safe from hepatic standpoint; risk of nephrotoxicity (→ hepatorenal syndrome)"],
    ["Metronidazole", "Hepatic metabolism", "Reduce dose in severe hepatic disease; accumulation"],
    ["Rifampicin", "Hepatic (potent CYP inducer)", "Hepatotoxic. Avoid in significant liver disease"],
    ["Clarithromycin", "Hepatic metabolism", "Dose adjustment needed; elevated LFTs, altered clearance"],
    ["Quinupristin/Dalfopristin", "Hepatic metabolism", "Dose adjustment required in hepatic impairment"],
    ["Chloramphenicol", "Hepatic conjugation", "Reduce dose in liver disease"],
    ["Erythromycin", "Hepatic metabolism", "Reduce dose; also hepatotoxic potential"],
    ["Tetracyclines", "Hepatic + renal", "Avoid in significant liver disease — hepatotoxic"],
    ["Fluconazole", "Partially hepatic", "Use with caution; hepatotoxic potential with azoles"],
    ["Isoniazid (INH)", "Hepatic (acetylation)", "Hepatotoxic — closely monitor LFTs; avoid if active liver disease"],
]

abx_table = Table(abx_data, colWidths=[52*mm, 44*mm, 76*mm])
abx_ts = TableStyle([
    ("BACKGROUND", (0,0), (-1,0), colors.HexColor("#117A65")),
    ("TEXTCOLOR", (0,0), (-1,0), WHITE),
    ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
    ("FONTSIZE", (0,0), (-1,-1), 8),
    ("ALIGN", (0,0), (-1,-1), "LEFT"),
    ("VALIGN", (0,0), (-1,-1), "TOP"),
    ("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, GREY_BG]),
    ("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#BBBBBB")),
    ("LEFTPADDING", (0,0), (-1,-1), 5),
    ("ROWPADDING", (0,0), (-1,-1), 4),
    ("TOPPADDING", (0,0), (-1,-1), 3),
    ("BOTTOMPADDING", (0,0), (-1,-1), 3),
])
abx_table.setStyle(abx_ts)
elems.append(abx_table)
elems.append(Spacer(1, 4*mm))

# 5F: Antiepileptics & Psych
elems.append(mini_banner("5F.  Antiepileptics & Psychotropics"))
elems.append(Spacer(1, 2*mm))

aed_data = [
    [Paragraph("Drug", sTableHead),
     Paragraph("Key Issue", sTableHead),
     Paragraph("Action", sTableHead)],
    ["Phenytoin", 
     "Low extraction, highly albumin-bound (90%). ↓Albumin in liver disease → ↑free phenytoin. Total levels appear falsely normal or low while free (ACTIVE) fraction is toxic.",
     "Measure FREE phenytoin levels (not total). Dose may need reduction despite 'normal' total level."],
    ["Valproate", "Hepatotoxic — idiosyncratic and dose-related.", "⚠ AVOID in liver disease."],
    ["Carbamazepine", "CYP-metabolised; also enzyme-inducing.", "Reduce dose; monitor levels and LFTs."],
    ["Levetiracetam", "Primarily renal excretion.", "✓ Relatively safe in liver disease. Preferred agent."],
    ["Lamotrigine", "Hepatic glucuronidation.", "Reduce dose in severe hepatic impairment."],
    ["Sertraline (SSRI)", "Hepatically metabolised. t½ increases from 22h → 52h in mild cirrhosis.",
     "Use lowest effective dose; extended interval."],
    ["Paroxetine, Fluvoxamine", "Hepatic metabolism.", "Use lowest dose. Monitor LFTs."],
    ["Tricyclics (TCAs)", "Extensive hepatic first-pass.", "Reduce dose. Risk of acute liver injury (rare). Sedation enhanced in encephalopathy."],
    ["Antipsychotics (typical/atypical)",
     "Most extensively hepatically metabolised.", "Reduce dose in moderate-severe disease. Many contraindicated in Child-Pugh C."],
    ["Lithium", "Renally excreted.", "✓ Not hepatically metabolised. Dose based on renal function/levels."],
]

aed_table = Table(aed_data, colWidths=[38*mm, 80*mm, 54*mm])
aed_ts = TableStyle([
    ("BACKGROUND", (0,0), (-1,0), colors.HexColor("#1B4F72")),
    ("TEXTCOLOR", (0,0), (-1,0), WHITE),
    ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
    ("FONTSIZE", (0,0), (-1,-1), 8),
    ("ALIGN", (0,0), (-1,-1), "LEFT"),
    ("VALIGN", (0,0), (-1,-1), "TOP"),
    ("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, GREY_BG]),
    ("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#BBBBBB")),
    ("LEFTPADDING", (0,0), (-1,-1), 5),
    ("ROWPADDING", (0,0), (-1,-1), 4),
    ("TOPPADDING", (0,0), (-1,-1), 3),
    ("BOTTOMPADDING", (0,0), (-1,-1), 3),
])
aed_table.setStyle(aed_ts)
elems.append(aed_table)
elems.append(Spacer(1, 3*mm))
elems.append(warn_box("Phenytoin pitfall: Total level may be NORMAL but FREE (active) level can be TOXIC due to low albumin. Always check free phenytoin in hypoalbuminaemia."))

elems.append(PageBreak())

# 5G: Antidiabetics & Other
elems.append(section_banner("5.  DRUG-SPECIFIC ADJUSTMENTS (continued)"))
elems.append(Spacer(1, 3*mm))
elems.append(mini_banner("5G.  Antidiabetics, Anticoagulants & Miscellaneous"))
elems.append(Spacer(1, 2*mm))

misc_data = [
    [Paragraph("Drug/Class", sTableHead),
     Paragraph("Key Issue", sTableHead),
     Paragraph("Action", sTableHead)],
    ["Metformin", "Hepatic disease → lactic acidosis risk (reduced hepatic lactate clearance).",
     "⚠ AVOID in significant hepatic impairment."],
    ["Sulfonylureas (e.g., glibenclamide)", "Hepatically metabolised; hypoglycaemia risk prolonged.",
     "⚠ AVOID — prolonged and unpredictable hypoglycaemia."],
    ["Insulin", "Not hepatically metabolised.", "✓ Preferred antidiabetic. May need dose ↓ as hepatic glucose metabolism impaired."],
    ["GLP-1 agonists, DPP-4 inhibitors", "Variable hepatic metabolism.", "Generally safe; use with caution in severe disease."],
    ["Warfarin", "Low extraction; PT/INR already elevated in cirrhosis due to factor deficiency.",
     "Extreme sensitivity. Titrate with frequent INR monitoring."],
    ["Heparin (unfractionated)", "Reduced antithrombin III in cirrhosis may affect efficacy.",
     "Use with caution; monitor aPTT."],
    ["LMWH (e.g., enoxaparin)", "Partially hepatic. Anti-Xa levels may be unreliable.",
     "Use anti-Xa monitoring. Cautious use in severe disease."],
    ["DOACs (e.g., rivaroxaban, apixaban)", "Hepatic metabolism (CYP3A4).",
     "Avoid in Child-Pugh B or C. Risk of bleeding from underlying coagulopathy."],
    ["Morphine-based cough suppressants", "Same issues as morphine.", "Avoid in hepatic encephalopathy risk patients."],
    ["Theophylline", "Low extraction; CYP1A2-metabolised.", "Reduce dose; monitor levels. Narrow therapeutic index."],
    ["Paracetamol (analgesic recap)", "Safe in stable cirrhosis at reduced doses.", "Max 2 g/day. Avoid in alcoholic hepatitis or acute liver failure."],
]

misc_table = Table(misc_data, colWidths=[48*mm, 72*mm, 52*mm])
misc_ts = TableStyle([
    ("BACKGROUND", (0,0), (-1,0), colors.HexColor("#784212")),
    ("TEXTCOLOR", (0,0), (-1,0), WHITE),
    ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
    ("FONTSIZE", (0,0), (-1,-1), 8),
    ("ALIGN", (0,0), (-1,-1), "LEFT"),
    ("VALIGN", (0,0), (-1,-1), "TOP"),
    ("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, GREY_BG]),
    ("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#BBBBBB")),
    ("LEFTPADDING", (0,0), (-1,-1), 5),
    ("ROWPADDING", (0,0), (-1,-1), 4),
    ("TOPPADDING", (0,0), (-1,-1), 3),
    ("BOTTOMPADDING", (0,0), (-1,-1), 3),
])
misc_table.setStyle(misc_ts)
elems.append(misc_table)
elems.append(Spacer(1, 4*mm))

# ── SECTION 6: QUICK REFERENCE – AVOID vs SAFE ────────────────────────────────
elems.append(section_banner("6.  QUICK-REFERENCE: AVOID vs. SAFE IN HEPATIC DISEASE"))
elems.append(Spacer(1, 3*mm))

avoid_safe_data = [
    [Paragraph("⚠ DRUGS TO AVOID / USE WITH EXTREME CAUTION", 
               S("avoidH", fontSize=10, leading=12, textColor=WHITE, fontName="Helvetica-Bold")),
     Paragraph("✓ RELATIVELY SAFE DRUGS (no/minimal adjustment)",
               S("safeH", fontSize=10, leading=12, textColor=WHITE, fontName="Helvetica-Bold"))],
    [
        Paragraph(
            "• <b>Pethidine (meperidine)</b> — norpethidine toxicity<br/>"
            "• <b>NSAIDs</b> — HRS, GI bleed, renal failure<br/>"
            "• <b>Valproate</b> — hepatotoxic<br/>"
            "• <b>Metformin</b> — lactic acidosis<br/>"
            "• <b>Sulfonylureas</b> — prolonged hypoglycaemia<br/>"
            "• <b>Tetracyclines</b> — hepatotoxic<br/>"
            "• <b>Isoniazid (INH)</b> — hepatotoxic<br/>"
            "• <b>Rifampicin</b> — hepatotoxic<br/>"
            "• <b>DOACs</b> — Child-Pugh B/C: avoid<br/>"
            "• <b>Statins</b> — Child-Pugh C: avoid<br/>"
            "• <b>Diazepam</b> — prolonged sedation, encephalopathy<br/>"
            "• <b>Mivacurium</b> — prolonged block<br/>"
            "• <b>Sedatives generally</b> — precipitate encephalopathy", sBody),
        Paragraph(
            "• <b>Remifentanil</b> — esterase-metabolised<br/>"
            "• <b>Fentanyl, sufentanil</b> — minimal hepatic change<br/>"
            "• <b>Atracurium, cisatracurium</b> — Hofmann elimination<br/>"
            "• <b>Lorazepam, oxazepam, temazepam</b> — glucuronidation only<br/>"
            "• <b>Insulin</b> — not hepatically metabolised<br/>"
            "• <b>Lithium</b> — renally excreted<br/>"
            "• <b>Levetiracetam</b> — primarily renal<br/>"
            "• <b>Penicillins, cephalosporins</b> — renal excretion<br/>"
            "• <b>Paracetamol ≤2 g/day</b> — safe in stable cirrhosis<br/>"
            "• <b>Spironolactone, furosemide</b> — safe for ascites<br/>"
            "• <b>ACE inhibitors</b> — renal clearance<br/>"
            "• <b>Aminoglycosides</b> — renal, but watch for HRS", sBody),
    ],
]

as_table = Table(avoid_safe_data, colWidths=[87*mm, 87*mm])
as_ts = TableStyle([
    ("BACKGROUND", (0,0), (0,0), WARN_RED),
    ("BACKGROUND", (1,0), (1,0), SAFE_GREEN),
    ("BACKGROUND", (0,1), (0,1), WARN_LIGHT),
    ("BACKGROUND", (1,1), (1,1), SAFE_LIGHT),
    ("VALIGN", (0,0), (-1,-1), "TOP"),
    ("LEFTPADDING", (0,0), (-1,-1), 8),
    ("ROWPADDING", (0,0), (-1,-1), 6),
    ("BOX", (0,0), (-1,-1), 1, colors.HexColor("#BBBBBB")),
    ("INNERGRID", (0,0), (-1,-1), 0.5, colors.HexColor("#BBBBBB")),
])
as_table.setStyle(as_ts)
elems.append(as_table)
elems.append(Spacer(1, 4*mm))

# ── SECTION 7: GENERAL PRINCIPLES ─────────────────────────────────────────────
elems.append(section_banner("7.  GENERAL PRINCIPLES OF DOSE ADJUSTMENT"))
elems.append(Spacer(1, 3*mm))

principles = [
    ("1. Start low, go slow", "Begin at the lowest effective dose. Titrate based on clinical response and tolerability."),
    ("2. Extend dosing intervals", "For drugs with prolonged half-lives, extend the interval rather than just reducing each dose."),
    ("3. Monitor free drug levels", "For highly protein-bound drugs (phenytoin, carbamazepine), total levels are misleading when albumin is low. Always check free levels."),
    ("4. Use Child-Pugh class", "Class A = minimal adjustment. Class B = significant reduction. Class C = avoid many drugs entirely."),
    ("5. Avoid hepatotoxic drugs", "Where safer alternatives exist, avoid drugs with known hepatotoxic potential (valproate, NSAIDs, rifampicin, INH)."),
    ("6. Watch for encephalopathy", "Opioids, benzodiazepines, sedatives, and psychotropics can precipitate or worsen hepatic encephalopathy. Avoid unless essential."),
    ("7. Monitor renal function", "Advanced cirrhosis can cause hepatorenal syndrome (HRS). Avoid nephrotoxic drugs (NSAIDs, aminoglycosides) and monitor renal function regularly."),
    ("8. Reassess continuously", "Hepatic function can deteriorate acutely. Reassess drug regimen frequently, especially during hospitalisation."),
    ("9. Drug interactions", "Liver disease impairs CYP450 enzymes — drugs normally metabolised by CYP are more affected, and enzyme inducers/inhibitors have exaggerated effects."),
    ("10. Oral vs. IV route", "For high-extraction drugs, the route of administration matters enormously. Oral bioavailability is greatly increased; IV doses are affected less."),
]

for num, (title, detail) in enumerate(principles):
    bg = LIGHT_BLUE if num % 2 == 0 else WHITE
    p_data = [[Paragraph(f"<b>{title}</b>", sBody), Paragraph(detail, sBody)]]
    p_t = Table(p_data, colWidths=[55*mm, 117*mm])
    p_t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), bg),
        ("LEFTPADDING", (0,0), (-1,-1), 8),
        ("RIGHTPADDING", (0,0), (-1,-1), 6),
        ("TOPPADDING", (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("VALIGN", (0,0), (-1,-1), "TOP"),
        ("LINEBELOW", (0,0), (-1,-1), 0.3, colors.HexColor("#CCCCCC")),
    ]))
    elems.append(p_t)
elems.append(Spacer(1, 4*mm))

# ── SECTION 8: MEMORY AIDS ────────────────────────────────────────────────────
elems.append(section_banner("8.  EXAM MEMORY AIDS & HIGH-YIELD POINTS"))
elems.append(Spacer(1, 3*mm))

mem_data = [
    [Paragraph("Topic", sTableHead), Paragraph("High-Yield Fact / Mnemonic", sTableHead)],
    ["Safe BZDs", "'LOT' — Lorazepam, Oxazepam, Temazepam (glucuronidation only — no active metabolites, CYP-independent)"],
    ["Safe NMBAs", "Atracurium + Cisatracurium — Hofmann elimination: liver/kidney INDEPENDENT"],
    ["Safe opioid", "Remifentanil — esterase metabolism; PK unchanged in liver failure AND during anhepatic phase of transplant"],
    ["Avoid opioid", "Pethidine → norpethidine toxicity (seizures). NEVER use in liver disease."],
    ["Phenytoin trap", "↓Albumin → ↑free phenytoin. Total level NORMAL = falsely reassuring. Check FREE level."],
    ["Propranolol oral", "Cirrhosis bypasses portal first-pass → oral bioavailability 2–3×. Reduce oral dose markedly."],
    ["Warfarin", "PT/INR already elevated in cirrhosis. Drug is hypersensitive. Closely monitor."],
    ["Encephalopathy drugs", "Opioids + BZDs + sedatives → can precipitate/worsen hepatic encephalopathy. Minimise."],
    ["Child-Pugh A/B/C", "A (5–6) = mild. B (7–9) = moderate. C (10–15) = severe. BAPES scoring: Bilirubin, Albumin, PT, Encephalopathy, asciteS"],
    ["Insulin vs tablets", "Insulin is preferred over oral hypoglycaemics in liver disease — not hepatically metabolised."],
    ["Metformin", "Lactic acidosis risk in liver disease — AVOID."],
    ["Lidocaine infusion", "Flow-limited clearance. Reduce rate significantly in cirrhosis. CNS toxicity risk."],
    ["Succinylcholine", "↓Pseudocholinesterase in cirrhosis → mild prolongation; usually clinically insignificant."],
    ["Spironolactone", "Safe and first-line for hepatic ascites — standard of care."],
]

mem_table = Table(mem_data, colWidths=[46*mm, 126*mm])
mem_ts = TableStyle([
    ("BACKGROUND", (0,0), (-1,0), colors.HexColor("#4A235A")),
    ("TEXTCOLOR", (0,0), (-1,0), WHITE),
    ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
    ("FONTSIZE", (0,0), (-1,-1), 8.5),
    ("ALIGN", (0,0), (-1,-1), "LEFT"),
    ("VALIGN", (0,0), (-1,-1), "TOP"),
    ("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, colors.HexColor("#F3E5F5")]),
    ("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#BBBBBB")),
    ("LEFTPADDING", (0,0), (-1,-1), 6),
    ("ROWPADDING", (0,0), (-1,-1), 5),
    ("TOPPADDING", (0,0), (-1,-1), 4),
    ("BOTTOMPADDING", (0,0), (-1,-1), 4),
    ("FONTNAME", (0,1), (0,-1), "Helvetica-Bold"),
    ("TEXTCOLOR", (0,1), (0,-1), colors.HexColor("#4A235A")),
])
mem_table.setStyle(mem_ts)
elems.append(mem_table)

elems.append(PageBreak())

# ── SECTION 9: 10-MARK MODEL ANSWER ──────────────────────────────────────────
elems.append(section_banner("9.  MODEL 10-MARK EXAM ANSWER STRUCTURE"))
elems.append(Spacer(1, 3*mm))
elems.append(info_box(
    "Structure your 10-mark answer with these headings (2 marks each or as indicated). "
    "Write in flowing paragraphs under each heading; avoid bare bullet points in long-answer exams."
))
elems.append(Spacer(1, 3*mm))

outline_data = [
    [Paragraph("Heading", sTableHead), Paragraph("Key Content", sTableHead), Paragraph("Marks", sTableHead)],
    ["Introduction", "Liver as primary metabolic organ; PK mechanisms affected; no single lab test; Child-Pugh as surrogate", "1"],
    ["PK Changes (mechanisms)", "↓ hepatic blood flow, ↓ hepatocellular mass, ↓ albumin (↑ free fraction), ↑ Vd, ↓ CYP450, portosystemic shunting", "2"],
    ["High vs. Low Extraction Ratio",
     "Flow-limited (E>0.7): affected by blood flow, oral bioavailability ↑↑ — e.g., propranolol, morphine, lidocaine. "
     "Capacity-limited (E<0.3): affected by enzyme activity/protein binding — e.g., warfarin, diazepam, phenytoin", "2"],
    ["Child-Pugh Classification", "5 parameters (bilirubin, albumin, PT, ascites, encephalopathy); Classes A/B/C with dosing implications", "1"],
    ["Drug-specific adjustments\n(4–5 examples)",
     "e.g., Pethidine: AVOID (norpethidine toxicity). Remifentanil: safe. Atracurium: safe. LOT benzodiazepines: preferred. "
     "Phenytoin: check free level. Propranolol: reduce oral dose. Paracetamol: ≤2 g/day. Valproate: avoid.", "3"],
    ["General Principles", "Start low, go slow; extend intervals; monitor free levels; avoid hepatotoxics; watch encephalopathy; monitor renal function", "1"],
]

outline_table = Table(outline_data, colWidths=[44*mm, 113*mm, 15*mm])
outline_ts = TableStyle([
    ("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
    ("TEXTCOLOR", (0,0), (-1,0), WHITE),
    ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
    ("FONTSIZE", (0,0), (-1,-1), 8.5),
    ("ALIGN", (0,0), (-1,-1), "LEFT"),
    ("ALIGN", (2,0), (2,-1), "CENTER"),
    ("VALIGN", (0,0), (-1,-1), "TOP"),
    ("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, LIGHT_BLUE]),
    ("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#BBBBBB")),
    ("LEFTPADDING", (0,0), (-1,-1), 6),
    ("ROWPADDING", (0,0), (-1,-1), 5),
    ("TOPPADDING", (0,0), (-1,-1), 4),
    ("BOTTOMPADDING", (0,0), (-1,-1), 4),
    ("FONTNAME", (2,1), (2,-1), "Helvetica-Bold"),
    ("TEXTCOLOR", (2,1), (2,-1), DARK_BLUE),
    ("FONTSIZE", (2,1), (2,-1), 10),
])
outline_table.setStyle(outline_ts)
elems.append(outline_table)
elems.append(Spacer(1, 4*mm))

# ── SECTION 10: MCQ PRACTICE ───────────────────────────────────────────────────
elems.append(section_banner("10.  HIGH-YIELD MCQ POINTS"))
elems.append(Spacer(1, 3*mm))

mcq_items = [
    ("Q: Which NMBA is safe in severe liver AND renal failure?",
     "A: Atracurium or cisatracurium (Hofmann elimination, organ-independent)"),
    ("Q: Which opioid is safest in end-stage liver disease?",
     "A: Remifentanil (esterase-metabolised; PK unchanged even in anhepatic phase)"),
    ("Q: Why is pethidine contraindicated in liver disease?",
     "A: Norpethidine (toxic metabolite) accumulates → seizures, CNS toxicity"),
    ("Q: Why is total phenytoin level misleading in cirrhosis?",
     "A: ↓Albumin → ↑free phenytoin. Total level normal but free (active) level may be toxic"),
    ("Q: Which BZDs are preferred in liver disease and why?",
     "A: Lorazepam, Oxazepam, Temazepam (LOT) — glucuronidation only, no active metabolites, CYP-independent"),
    ("Q: Why does oral propranolol have increased effect in cirrhosis?",
     "A: Portosystemic shunting bypasses first-pass hepatic metabolism → 2–3× higher oral bioavailability"),
    ("Q: Child-Pugh Class C score range?",
     "A: 10–15 (severe hepatic impairment; many drugs contraindicated)"),
    ("Q: Which antidiabetic is preferred in hepatic disease?",
     "A: Insulin (not hepatically metabolised). Avoid metformin (lactic acidosis) and sulfonylureas (prolonged hypoglycaemia)"),
    ("Q: Which parameter of phenytoin should be monitored in hypoalbuminaemia?",
     "A: FREE (unbound) phenytoin level"),
    ("Q: What is the max safe daily paracetamol dose in stable cirrhosis?",
     "A: 2 g/day (avoid in alcoholic hepatitis or acute liver failure)"),
]

for i, (q, a) in enumerate(mcq_items):
    bg = LIGHT_TEAL if i % 2 == 0 else WHITE
    mcq_row = [[Paragraph(q, S("q", fontSize=8.5, leading=12, textColor=DARK_BLUE, fontName="Helvetica-Bold")),
                Paragraph(a, S("a", fontSize=8.5, leading=12, textColor=GREY_DARK, fontName="Helvetica"))]]
    mcq_t = Table(mcq_row, colWidths=[80*mm, 92*mm])
    mcq_t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), bg),
        ("LEFTPADDING", (0,0), (-1,-1), 7),
        ("RIGHTPADDING", (0,0), (-1,-1), 5),
        ("TOPPADDING", (0,0), (-1,-1), 4),
        ("BOTTOMPADDING", (0,0), (-1,-1), 4),
        ("VALIGN", (0,0), (-1,-1), "TOP"),
        ("LINEBELOW", (0,0), (-1,-1), 0.3, colors.HexColor("#CCCCCC")),
    ]))
    elems.append(mcq_t)

elems.append(Spacer(1, 4*mm))

# ── Footer note ───────────────────────────────────────────────────────────────
elems.append(HRFlowable(width="100%", thickness=1, color=MED_BLUE))
elems.append(Spacer(1, 2*mm))
elems.append(Paragraph(
    "Sources: Barash Clinical Anesthesia 9e | Miller's Anesthesia 10e | Tietz Laboratory Medicine 7e | "
    "Sabiston Textbook of Surgery | Maudsley Prescribing Guidelines 15e | Lippincott Pharmacology. "
    "Prepared by Orris Medical AI • For exam preparation only — verify clinical decisions with current guidelines.",
    S("footer", fontSize=7.5, leading=10, textColor=colors.HexColor("#888888"),
      fontName="Helvetica-Oblique", alignment=TA_CENTER)
))

# ── Build ─────────────────────────────────────────────────────────────────────
doc.build(elems)
print(f"PDF generated: {OUTPUT}")
Running Command

cd /tmp/workspace/hepatic-dose-guide && python generate_pdf.py 2>&1

Running Command

ls -lh /tmp/workspace/hepatic-dose-guide/Hepatic_Dose_Adjustment_Study_Guide.pdf

Your study guide PDF is ready. Here's what's inside:

Hepatic Dose Adjustment Study Guide

PDF Document · PDF


What the PDF contains (5 pages, colour-coded):
SectionContent
1. Why It MattersIntroduction and core rationale
2. PK ChangesFull table of pharmacokinetic alterations in liver disease
3. Extraction RatioHigh vs. Low extraction — the central concept, with mnemonics
4. Child-Pugh ScoreFull scoring table + Class A/B/C dosing implications
5. Drug-Specific TablesOpioids, BZDs/sedatives, NMBAs, cardiovascular, antibiotics, antiepileptics/psychotropics, antidiabetics/anticoagulants
6. Quick-ReferenceSide-by-side AVOID vs. SAFE drug lists
7. General Principles10 core principles with colour-coded rows
8. Memory AidsHigh-yield mnemonics (LOT, Hofmann, remifentanil, phenytoin trap, etc.)
9. 10-Mark Model AnswerStructured outline with marks breakdown
10. MCQ Practice10 high-yield Q&A pairs
This is a shared conversation. Sign in to Orris to start your own chat.