Pharmacokinetic of inhalational agents in detail 20 marks short note -PDF format MD anaestheisa exams

Reading File
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Reading File
Finding Sources
Finding Sources
Reading File
Reading File
Running Command

mkdir -p /home/daytona/workspace/anaesthesia-pk && ls /home/daytona/workspace/an…

Writing File

~/anaesthesia-pk/generate_pdf.py

#!/usr/bin/env python3
"""
Generate a comprehensive 20-mark short note PDF on
Pharmacokinetics of Inhalational Anaesthetic Agents
for MD Anaesthesia exams.
"""

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

OUTPUT = "/home/daytona/workspace/anaesthesia-pk/Pharmacokinetics_Inhalational_Agents.pdf"

# ── Page setup ────────────────────────────────────────────────────────────────
doc = SimpleDocTemplate(
    OUTPUT,
    pagesize=A4,
    leftMargin=2.2*cm, rightMargin=2.2*cm,
    topMargin=2.2*cm, bottomMargin=2.2*cm,
    title="Pharmacokinetics of Inhalational Anaesthetic Agents",
    author="MD Anaesthesia Study Notes",
)

W, H = A4
PAGE_W = W - 4.4*cm   # usable width

# ── Colour palette ────────────────────────────────────────────────────────────
NAVY   = colors.HexColor("#1A3A5C")
TEAL   = colors.HexColor("#1B7A8A")
GOLD   = colors.HexColor("#C8860A")
LIGHT  = colors.HexColor("#EAF4F7")
CREAM  = colors.HexColor("#FDF6E3")
WHITE  = colors.white
BLACK  = colors.black
GREY   = colors.HexColor("#555555")
LGREY  = colors.HexColor("#F2F2F2")

# ── Styles ────────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()

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

title_style = S("TitleMain",
    fontSize=18, leading=24, textColor=WHITE,
    fontName="Helvetica-Bold", alignment=TA_CENTER, spaceAfter=4)

subtitle_style = S("Subtitle",
    fontSize=11, leading=15, textColor=LIGHT,
    fontName="Helvetica-Oblique", alignment=TA_CENTER, spaceAfter=2)

h1 = S("H1",
    fontSize=13, leading=17, textColor=WHITE,
    fontName="Helvetica-Bold", alignment=TA_LEFT,
    spaceBefore=10, spaceAfter=4, leftIndent=0)

h2 = S("H2",
    fontSize=11, leading=14, textColor=NAVY,
    fontName="Helvetica-Bold", alignment=TA_LEFT,
    spaceBefore=8, spaceAfter=3)

h3 = S("H3",
    fontSize=10, leading=13, textColor=TEAL,
    fontName="Helvetica-Bold", alignment=TA_LEFT,
    spaceBefore=5, spaceAfter=2)

body = S("Body",
    fontSize=9.5, leading=14, textColor=BLACK,
    fontName="Helvetica", alignment=TA_JUSTIFY,
    spaceAfter=4)

bullet = S("Bullet",
    fontSize=9.5, leading=14, textColor=BLACK,
    fontName="Helvetica", alignment=TA_LEFT,
    leftIndent=14, firstLineIndent=-10,
    spaceAfter=2)

subbullet = S("SubBullet",
    fontSize=9, leading=13, textColor=GREY,
    fontName="Helvetica", alignment=TA_LEFT,
    leftIndent=26, firstLineIndent=-10,
    spaceAfter=1)

note_style = S("Note",
    fontSize=8.5, leading=12, textColor=NAVY,
    fontName="Helvetica-Oblique", alignment=TA_CENTER,
    spaceBefore=4, spaceAfter=2)

table_header = S("TableHdr",
    fontSize=9, leading=11, textColor=WHITE,
    fontName="Helvetica-Bold", alignment=TA_CENTER)

table_cell = S("TableCell",
    fontSize=8.5, leading=11, textColor=BLACK,
    fontName="Helvetica", alignment=TA_LEFT)

table_cell_c = S("TableCellC",
    fontSize=8.5, leading=11, textColor=BLACK,
    fontName="Helvetica", alignment=TA_CENTER)

# ── Helper: coloured section header ───────────────────────────────────────────
def section_header(title, color=NAVY):
    data = [[Paragraph(title, h1)]]
    t = Table(data, colWidths=[PAGE_W])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), color),
        ("TOPPADDING",    (0,0), (-1,-1), 6),
        ("BOTTOMPADDING", (0,0), (-1,-1), 6),
        ("LEFTPADDING",   (0,0), (-1,-1), 10),
        ("RIGHTPADDING",  (0,0), (-1,-1), 10),
        ("ROUNDEDCORNERS", [4]),
    ]))
    return t

def hr(color=TEAL, thickness=0.8):
    return HRFlowable(width="100%", thickness=thickness, color=color, spaceAfter=4, spaceBefore=4)

def bp(text):
    return Paragraph(f"• {text}", bullet)

def sbp(text):
    return Paragraph(f"  ◦ {text}", subbullet)

def B(text):
    return f"<b>{text}</b>"

def I(text):
    return f"<i>{text}</i>"

# ── Build content ─────────────────────────────────────────────────────────────
story = []

# ── TITLE BANNER ──────────────────────────────────────────────────────────────
title_data = [
    [Paragraph("PHARMACOKINETICS OF INHALATIONAL ANAESTHETIC AGENTS", title_style)],
    [Paragraph("MD Anaesthesia Examination  |  20 Marks Short Note", subtitle_style)],
]
title_table = Table(title_data, colWidths=[PAGE_W])
title_table.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,-1), NAVY),
    ("TOPPADDING",    (0,0), (-1,-1), 14),
    ("BOTTOMPADDING", (0,0), (-1,-1), 14),
    ("LEFTPADDING",   (0,0), (-1,-1), 16),
    ("RIGHTPADDING",  (0,0), (-1,-1), 16),
    ("ROUNDEDCORNERS", [6]),
]))
story.append(title_table)
story.append(Spacer(1, 0.35*cm))

# ── INTRODUCTION ──────────────────────────────────────────────────────────────
story.append(section_header("1.  INTRODUCTION", NAVY))
story.append(Spacer(1, 0.15*cm))
story.append(Paragraph(
    "Inhalational anaesthetic agents are administered as gases or vapours via the lungs. "
    "Their pharmacokinetics differ fundamentally from intravenous drugs: the driving force "
    "is the <b>partial pressure</b> (tension) of the agent in each compartment "
    "(lungs → blood → brain), not mass concentration alone. "
    "The ultimate target is achieving an adequate <b>brain partial pressure</b> to produce "
    "unconsciousness and amnesia. Understanding the factors that govern the rise of the "
    "alveolar partial pressure (FA/FI ratio) is the cornerstone of inhalational pharmacokinetics.",
    body))

# ── MINIMUM ALVEOLAR CONCENTRATION ───────────────────────────────────────────
story.append(Spacer(1, 0.2*cm))
story.append(section_header("2.  MINIMUM ALVEOLAR CONCENTRATION (MAC)", TEAL))
story.append(Spacer(1, 0.15*cm))
story.append(Paragraph(B("Definition:"), h3))
story.append(Paragraph(
    "MAC is the minimum alveolar concentration (in % atm at 1 atmosphere) that prevents "
    "movement in response to a standardised noxious stimulus (surgical incision) in 50% of "
    "subjects. It is an ED50 measure and the standard index of inhalational anaesthetic potency.",
    body))
story.append(Paragraph(B("MAC Values of Common Agents:"), h3))

mac_data = [
    [Paragraph("Agent", table_header), Paragraph("MAC (%)", table_header),
     Paragraph("B/G Coeff.", table_header), Paragraph("Oil/Gas Coeff.", table_header),
     Paragraph("Metabolism (%)", table_header)],
    [Paragraph("Halothane",    table_cell_c), Paragraph("0.75", table_cell_c),
     Paragraph("2.3",  table_cell_c), Paragraph("224",  table_cell_c), Paragraph("20",  table_cell_c)],
    [Paragraph("Isoflurane",   table_cell_c), Paragraph("1.15", table_cell_c),
     Paragraph("1.4",  table_cell_c), Paragraph("98",   table_cell_c), Paragraph("0.2", table_cell_c)],
    [Paragraph("Sevoflurane",  table_cell_c), Paragraph("2.0",  table_cell_c),
     Paragraph("0.65", table_cell_c), Paragraph("53",   table_cell_c), Paragraph("3–5", table_cell_c)],
    [Paragraph("Desflurane",   table_cell_c), Paragraph("6.0",  table_cell_c),
     Paragraph("0.42", table_cell_c), Paragraph("19",   table_cell_c), Paragraph("0.02",table_cell_c)],
    [Paragraph("Nitrous Oxide",table_cell_c), Paragraph("104",  table_cell_c),
     Paragraph("0.47", table_cell_c), Paragraph("1.4",  table_cell_c), Paragraph("<0.01",table_cell_c)],
    [Paragraph("Enflurane",    table_cell_c), Paragraph("1.68", table_cell_c),
     Paragraph("1.9",  table_cell_c), Paragraph("98",   table_cell_c), Paragraph("2.4", table_cell_c)],
]
mac_table = Table(mac_data, colWidths=[PAGE_W*0.22, PAGE_W*0.13, PAGE_W*0.16,
                                        PAGE_W*0.20, PAGE_W*0.18])
mac_table.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0),  NAVY),
    ("BACKGROUND",    (0,1), (-1,-1), LGREY),
    ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LGREY]),
    ("GRID",          (0,0), (-1,-1), 0.4, colors.HexColor("#CCCCCC")),
    ("TOPPADDING",    (0,0), (-1,-1), 4),
    ("BOTTOMPADDING", (0,0), (-1,-1), 4),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ("RIGHTPADDING",  (0,0), (-1,-1), 6),
    ("ALIGN",         (0,0), (-1,-1), "CENTER"),
    ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
]))
story.append(mac_table)
story.append(Spacer(1, 0.15*cm))

story.append(Paragraph(B("Factors Modifying MAC:"), h3))
mac_factors = [
    ("INCREASE MAC", [
        "Hyperthermia (fever increases CNS metabolic demands)",
        "Chronic alcohol abuse (enzyme induction)",
        "Hypernatraemia",
        "Hyperthyroidism",
        "Red hair phenotype (MC1R variant)",
        "Infants (age 1–6 months have highest MAC)",
    ]),
    ("DECREASE MAC", [
        "Increasing age (MAC falls ~6% per decade after 40 yrs)",
        "Hypothermia (~5% per °C fall)",
        "Hypoxia, anaemia, hypotension",
        "Acute alcohol intoxication",
        "Opioids, benzodiazepines, α₂ agonists (dexmedetomidine)",
        "Pregnancy (↓ ~40% due to progesterone + endorphins)",
        "Hypothyroidism, hyponatraemia",
        "Lithium, reserpine (deplete catecholamines)",
    ]),
]
for header, items in mac_factors:
    story.append(Paragraph(f"<b>{header}:</b>", bullet))
    for item in items:
        story.append(sbp(item))

# ── UPTAKE & DISTRIBUTION ─────────────────────────────────────────────────────
story.append(Spacer(1, 0.2*cm))
story.append(section_header("3.  UPTAKE AND DISTRIBUTION — THE FA/FI CONCEPT", NAVY))
story.append(Spacer(1, 0.15*cm))
story.append(Paragraph(
    "The <b>FA/FI ratio</b> (alveolar fraction / inspired fraction) describes the rate of rise of "
    "alveolar anaesthetic concentration toward the inspired concentration. A rapid rise of FA/FI "
    "= faster induction. The shape of the FA/FI curve is determined by the interplay of "
    "<b>delivery</b> (input) and <b>uptake</b> (removal) factors.",
    body))

story.append(Paragraph(B("3a. Factors Favouring RISE of FA/FI (Faster Induction):"), h2))
story.append(bp("<b>High inspired concentration (FI):</b> Higher FI → steeper partial pressure gradient → faster alveolar build-up."))
story.append(bp("<b>High fresh gas flow (FGF):</b> Washes out exhaled gas; maintains high FI at alveolus. Low FGF slows rise."))
story.append(bp("<b>High alveolar ventilation (V̇A):</b> Greater tidal delivery replenishes alveolar gas removed by uptake. Hyperventilation speeds induction especially with soluble agents."))
story.append(bp("<b>Low functional residual capacity (FRC):</b> Smaller gas reservoir = faster equilibration (e.g. children)."))
story.append(bp("<b>Low blood/gas (B/G) solubility coefficient:</b> Agent stays in alveolus → rapid rise of FA/FI → fast induction. Desflurane (0.42) > Sevoflurane (0.65) > N₂O (0.47) >> Isoflurane (1.4) > Halothane (2.3)."))

story.append(Paragraph(B("3b. Factors SLOWING Rise of FA/FI (Increased Uptake = Slower Induction):"), h2))
story.append(bp("<b>High B/G solubility:</b> Highly soluble agents (halothane, isoflurane) are avidly taken up by blood → FA/FI rises slowly → slow induction."))
story.append(bp("<b>High cardiac output (CO):</b> Greater pulmonary blood flow removes more anaesthetic from alveolus → slower FA/FI rise. Shock (↓CO) → faster rise → beware overdose."))
story.append(bp("<b>High alveolar–venous partial pressure gradient (A–v difference):</b> Tissues with high affinity/high blood flow remove more agent from venous blood → maintain uptake."))

# ── SOLUBILITY COEFFICIENTS ───────────────────────────────────────────────────
story.append(Spacer(1, 0.2*cm))
story.append(section_header("4.  SOLUBILITY COEFFICIENTS", TEAL))
story.append(Spacer(1, 0.15*cm))
story.append(Paragraph(
    "Solubility coefficients express the <i>distribution ratio</i> of anaesthetic between two "
    "phases at equilibrium at 37°C and 1 atmosphere.", body))

sol_items = [
    ("<b>Blood/Gas (B/G) Partition Coefficient:</b>",
     "Volume of agent dissolved in blood per unit volume of alveolar gas at equilibrium. "
     "This is the MOST clinically important coefficient. Low B/G = low solubility = fast induction AND recovery. "
     "Desflurane (0.42) and sevoflurane (0.65) have low B/G → modern preference."),
    ("<b>Oil/Gas (O/G) Partition Coefficient:</b>",
     "Measure of lipid solubility. Inversely related to MAC (Meyer-Overton rule): "
     "higher O/G → lower MAC → more potent. O/G × MAC ≈ constant (~1.3 atm × 10⁻³)."),
    ("<b>Brain/Blood Partition Coefficient:</b>",
     "Determines the rate of equilibration between brain and blood. Close to 1 for most halogenated agents."),
    ("<b>Tissue/Blood Partition Coefficient:</b>",
     "Fat/blood coefficients are very high for halogenated agents (e.g. halothane: ~60), "
     "explaining prolonged recovery after long procedures as fat slowly releases stored agent."),
]
for bold, text in sol_items:
    story.append(bp(f"{bold} {text}"))

# ── UPTAKE EQUATION ───────────────────────────────────────────────────────────
story.append(Spacer(1, 0.2*cm))
story.append(section_header("5.  UPTAKE EQUATION (KETY'S EQUATION)", NAVY))
story.append(Spacer(1, 0.15*cm))

uptake_data = [
    [Paragraph("Uptake  =  λ  ×  Q̇  ×  (PA – PV̄) / PB", S("Eq",
        fontSize=12, leading=16, fontName="Helvetica-Bold",
        textColor=NAVY, alignment=TA_CENTER))],
]
uptake_table = Table(uptake_data, colWidths=[PAGE_W])
uptake_table.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,-1), CREAM),
    ("BOX",           (0,0), (-1,-1), 1.5, GOLD),
    ("TOPPADDING",    (0,0), (-1,-1), 10),
    ("BOTTOMPADDING", (0,0), (-1,-1), 10),
    ("LEFTPADDING",   (0,0), (-1,-1), 12),
    ("RIGHTPADDING",  (0,0), (-1,-1), 12),
]))
story.append(uptake_table)
story.append(Spacer(1, 0.1*cm))
story.append(bp("λ = blood/gas partition coefficient"))
story.append(bp("Q̇ = cardiac output (L/min)"))
story.append(bp("PA = alveolar partial pressure"))
story.append(bp("PV̄ = mixed venous partial pressure"))
story.append(bp("PB = barometric pressure"))
story.append(Paragraph(
    "Uptake is greatest at induction (large A–v gradient) and diminishes progressively as "
    "tissues saturate. This underlies the non-linear (square-root-of-time) kinetics of inhalational agents.",
    body))

# ── CONCENTRATION & SECOND GAS EFFECTS ───────────────────────────────────────
story.append(Spacer(1, 0.2*cm))
story.append(section_header("6.  CONCENTRATION EFFECT & SECOND GAS EFFECT", TEAL))
story.append(Spacer(1, 0.15*cm))

story.append(Paragraph(B("6a. Concentration Effect (Fink Effect on FA):"), h2))
story.append(Paragraph(
    "When a <b>high concentration</b> of an agent (classically N₂O at 70–75%) is inhaled, "
    "rapid absorption of large volumes of gas creates two effects:", body))
story.append(bp("<b>Concentrating effect:</b> Absorption of N₂O shrinks alveolar volume, concentrating remaining gases → raises FA/FI of the first gas beyond what simple diffusion predicts."))
story.append(bp("<b>Augmented inflow:</b> The volume deficit draws fresh gas in from airways, further replenishing alveolar concentration."))
story.append(Paragraph(
    "The concentration effect is clinically significant only at high concentrations (≥50%). "
    "It explains why N₂O speeds induction of co-administered agents.", body))

story.append(Paragraph(B("6b. Second Gas Effect:"), h2))
story.append(Paragraph(
    "When N₂O is administered simultaneously with a volatile agent (the 'second gas', e.g. sevoflurane), "
    "the rapid uptake of the large N₂O volume:", body))
story.append(bp("Raises the alveolar concentration of the volatile agent above predicted values."))
story.append(bp("Augments inspired tidal volume of the volatile agent."))
story.append(Paragraph(
    "This accelerates induction. Conversely, when N₂O is discontinued at end of anaesthesia, "
    "rapid outpouring into alveolus <b>dilutes alveolar O₂</b> → <b>diffusion hypoxia (Fink phenomenon)</b>. "
    "Prevented by administering 100% O₂ for 5–10 min at emergence.", body))

# ── DISTRIBUTION INTO TISSUES ─────────────────────────────────────────────────
story.append(Spacer(1, 0.2*cm))
story.append(section_header("7.  DISTRIBUTION INTO TISSUES", NAVY))
story.append(Spacer(1, 0.15*cm))
story.append(Paragraph(
    "After entering blood, agent distributes to tissues based on their <b>blood flow</b> and "
    "<b>tissue/blood partition coefficient</b>. Tissues are grouped into four compartments:",
    body))

tissue_data = [
    [Paragraph("Compartment", table_header), Paragraph("Tissues", table_header),
     Paragraph("% Body Wt", table_header), Paragraph("% CO", table_header),
     Paragraph("Equilibration", table_header)],
    [Paragraph("Vessel-Rich Group (VRG)", table_cell_c),
     Paragraph("Brain, heart, liver, kidney, endocrine glands", table_cell),
     Paragraph("10%", table_cell_c), Paragraph("75%", table_cell_c), Paragraph("4–8 min", table_cell_c)],
    [Paragraph("Muscle Group (MG)", table_cell_c),
     Paragraph("Skeletal muscle, skin", table_cell),
     Paragraph("50%", table_cell_c), Paragraph("19%", table_cell_c), Paragraph("20–40 min", table_cell_c)],
    [Paragraph("Fat Group (FG)", table_cell_c),
     Paragraph("Adipose tissue", table_cell),
     Paragraph("20%", table_cell_c), Paragraph("6%", table_cell_c), Paragraph("Hours–days", table_cell_c)],
    [Paragraph("Vessel-Poor Group (VPG)", table_cell_c),
     Paragraph("Bone, cartilage, ligaments, teeth", table_cell),
     Paragraph("20%", table_cell_c), Paragraph("<1%", table_cell_c), Paragraph("Never fully", table_cell_c)],
]
tissue_table = Table(tissue_data, colWidths=[PAGE_W*0.24, PAGE_W*0.28,
                                              PAGE_W*0.14, PAGE_W*0.12, PAGE_W*0.16])
tissue_table.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0),  NAVY),
    ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LGREY]),
    ("GRID",          (0,0), (-1,-1), 0.4, colors.HexColor("#CCCCCC")),
    ("TOPPADDING",    (0,0), (-1,-1), 4),
    ("BOTTOMPADDING", (0,0), (-1,-1), 4),
    ("LEFTPADDING",   (0,0), (-1,-1), 5),
    ("RIGHTPADDING",  (0,0), (-1,-1), 5),
    ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
]))
story.append(tissue_table)
story.append(Spacer(1, 0.1*cm))
story.append(Paragraph(
    "At induction, the VRG receives most of the delivered agent and equilibrates rapidly. "
    "As VRG saturates, uptake shifts to MG. Fat acts as a <b>slowly filling reservoir</b> — "
    "important in prolonged anaesthesia as it delays washout and recovery.", body))

# ── RECOVERY / ELIMINATION ────────────────────────────────────────────────────
story.append(Spacer(1, 0.2*cm))
story.append(section_header("8.  RECOVERY AND ELIMINATION", TEAL))
story.append(Spacer(1, 0.15*cm))
story.append(Paragraph(
    "Recovery mirrors induction but is NOT simply the reverse. Several asymmetries exist:", body))
story.append(bp("<b>Pulmonary elimination:</b> The primary route for all inhalational agents. Cessation of inspired agent → alveolar partial pressure falls → agent moves brain→blood→alveolus→atmosphere."))
story.append(bp("<b>Context-sensitive recovery:</b> Duration of anaesthesia profoundly affects recovery. Fat saturation during long procedures produces sustained venous return of agent → slows washout. Desflurane and N₂O are least affected due to low fat/blood coefficients."))
story.append(bp("<b>Diffusion hypoxia (Fink phenomenon):</b> On stopping N₂O, rapid outward diffusion dilutes alveolar O₂ and CO₂. CO₂ dilution reduces respiratory drive. Treat with 100% O₂ for 5–10 min."))
story.append(bp("<b>Time constants for washout:</b> τ = FRC / alveolar ventilation × solubility factor. Low B/G agents (desflurane, sevoflurane) wash out fastest."))

# ── METABOLISM ────────────────────────────────────────────────────────────────
story.append(Spacer(1, 0.2*cm))
story.append(section_header("9.  BIOTRANSFORMATION (METABOLISM)", NAVY))
story.append(Spacer(1, 0.15*cm))
story.append(Paragraph(
    "Halogenated agents undergo hepatic CYP2E1-mediated oxidative metabolism to varying degrees. "
    "Metabolism contributes little to elimination kinetics (lungs are far more efficient) but "
    "is critical for <b>toxicity</b>:", body))

met_data = [
    [Paragraph("Agent", table_header), Paragraph("% Metabolised", table_header),
     Paragraph("Main Metabolite(s)", table_header), Paragraph("Clinical Toxicity", table_header)],
    [Paragraph("Halothane",    table_cell_c), Paragraph("20%",   table_cell_c),
     Paragraph("TFA, CF₃CHO → hepatic protein adducts", table_cell),
     Paragraph("Halothane hepatitis (1:35,000); fulminant in 1:300,000", table_cell)],
    [Paragraph("Isoflurane",   table_cell_c), Paragraph("0.2%",  table_cell_c),
     Paragraph("Trifluoroacetic acid, inorganic fluoride", table_cell),
     Paragraph("Negligible; rare hepatotoxicity reported", table_cell)],
    [Paragraph("Enflurane",    table_cell_c), Paragraph("2.4%",  table_cell_c),
     Paragraph("Inorganic fluoride (F⁻)", table_cell),
     Paragraph("Renal F⁻ toxicity if F⁻ > 50 μmol/L; epileptogenic", table_cell)],
    [Paragraph("Sevoflurane",  table_cell_c), Paragraph("3–5%",  table_cell_c),
     Paragraph("Hexafluoroisopropanol; Compound A (soda lime)", table_cell),
     Paragraph("Compound A nephrotoxic in rats; not humans at clinical flows", table_cell)],
    [Paragraph("Desflurane",   table_cell_c), Paragraph("0.02%", table_cell_c),
     Paragraph("Negligible", table_cell),
     Paragraph("Essentially no metabolic toxicity", table_cell)],
    [Paragraph("Nitrous Oxide",table_cell_c), Paragraph("<0.01%",table_cell_c),
     Paragraph("N/A", table_cell),
     Paragraph("Oxidises Vit B₁₂ → methionine synthase inhibition; bone marrow suppression (prolonged)", table_cell)],
]
met_table = Table(met_data, colWidths=[PAGE_W*0.17, PAGE_W*0.15,
                                        PAGE_W*0.32, PAGE_W*0.32])
met_table.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0),  NAVY),
    ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LGREY]),
    ("GRID",          (0,0), (-1,-1), 0.4, colors.HexColor("#CCCCCC")),
    ("TOPPADDING",    (0,0), (-1,-1), 4),
    ("BOTTOMPADDING", (0,0), (-1,-1), 4),
    ("LEFTPADDING",   (0,0), (-1,-1), 5),
    ("RIGHTPADDING",  (0,0), (-1,-1), 5),
    ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ("FONTSIZE",      (0,1), (-1,-1), 8.5),
]))
story.append(met_table)

# ── SPECIAL PHARMACOKINETIC CONSIDERATIONS ────────────────────────────────────
story.append(Spacer(1, 0.2*cm))
story.append(section_header("10.  SPECIAL PHARMACOKINETIC CONSIDERATIONS", TEAL))
story.append(Spacer(1, 0.15*cm))

special_points = [
    ("<b>Paediatrics:</b>",
     "Higher V̇A/FRC ratio → faster FA/FI rise. Higher CO relative to body weight partially offsets this. "
     "Higher tissue perfusion and lower fat mass mean faster induction and recovery. "
     "MAC is highest at 6 months of age."),
    ("<b>Obesity:</b>",
     "Increased fat mass (high fat/blood partition coefficient) acts as a large reservoir, "
     "especially for halothane and isoflurane. Desflurane preferred for obese patients due to "
     "rapid emergence. Increased FRC but also increased V̇CO₂."),
    ("<b>High-altitude / Low barometric pressure:</b>",
     "At altitude, PB is reduced. MAC (in % atm) is unchanged but the inspired partial pressure "
     "for a given % concentration is lower → effectively lower potency. Increase vaporiser setting."),
    ("<b>Hepatic disease:</b>",
     "Reduced hepatic blood flow and enzyme activity → slower metabolism. "
     "Not critical for elimination (pulmonary route dominant) but increases risk of hepatotoxic metabolite "
     "accumulation with halothane."),
    ("<b>Cardiopulmonary bypass (CPB):</b>",
     "Non-pulsatile flow and haemodilution alter distribution. "
     "Hypothermia during CPB increases solubility → more uptake into blood → lower FA/FI. "
     "Awareness risk; supplement with volatile agent delivery to oxygenator."),
    ("<b>Shunts:</b>",
     "Right-to-left shunt (cyanotic CHD): arterial blood bypasses lungs → dilutes agent in systemic blood → "
     "slows equilibration at the brain. Effect greater for insoluble agents. "
     "Left-to-right shunt: increases pulmonary blood flow → slows FA/FI rise for soluble agents, minimal effect for insoluble."),
]
for bold, text in special_points:
    story.append(bp(f"{bold} {text}"))

# ── PHARMACOKINETIC COMPARISON TABLE ─────────────────────────────────────────
story.append(Spacer(1, 0.2*cm))
story.append(section_header("11.  CLINICAL PHARMACOKINETIC SUMMARY", NAVY))
story.append(Spacer(1, 0.15*cm))

summary_data = [
    [Paragraph("Property", table_header),
     Paragraph("Halothane", table_header),
     Paragraph("Isoflurane", table_header),
     Paragraph("Sevoflurane", table_header),
     Paragraph("Desflurane", table_header),
     Paragraph("N₂O", table_header)],
    ["B/G coeff.", "2.3", "1.4", "0.65", "0.42", "0.47"],
    ["Oil/Gas coeff.", "224", "98", "53", "19", "1.4"],
    ["MAC (%)", "0.75", "1.15", "2.0", "6.0", "104"],
    ["Induction speed", "Slow", "Slow–mod", "Fast", "Fastest", "Fast"],
    ["Recovery speed", "Slow", "Moderate", "Fast", "Fastest", "Fast"],
    ["Pungency", "Non-pungent", "Pungent", "Non-pungent", "Very pungent", "Non-pungent"],
    ["Metabolism (%)", "20", "0.2", "3–5", "0.02", "<0.01"],
    ["Key concern", "Hepatitis", "Mild hepatotox.", "Compound A", "Airway reflex", "Diffusion hypoxia"],
]
col_w = PAGE_W / 6
summary_table = Table(summary_data, colWidths=[col_w]*6)
summary_table.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0),  NAVY),
    ("BACKGROUND",    (0,1), (0,-1),  TEAL),
    ("TEXTCOLOR",     (0,1), (0,-1),  WHITE),
    ("ROWBACKGROUNDS",(1,1), (-1,-1), [WHITE, LGREY]),
    ("GRID",          (0,0), (-1,-1), 0.4, colors.HexColor("#CCCCCC")),
    ("TOPPADDING",    (0,0), (-1,-1), 3),
    ("BOTTOMPADDING", (0,0), (-1,-1), 3),
    ("LEFTPADDING",   (0,0), (-1,-1), 5),
    ("RIGHTPADDING",  (0,0), (-1,-1), 5),
    ("ALIGN",         (0,0), (-1,-1), "CENTER"),
    ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ("FONTSIZE",      (0,0), (-1,-1), 8.5),
    ("FONTNAME",      (0,0), (-1,0),  "Helvetica-Bold"),
    ("FONTNAME",      (0,1), (0,-1),  "Helvetica-Bold"),
]))
story.append(summary_table)

# ── KEY EXAM POINTS ───────────────────────────────────────────────────────────
story.append(Spacer(1, 0.3*cm))
key_data = [[
    Paragraph(
        "<b>KEY EXAM POINTS</b><br/>"
        "• FA/FI rise → faster with low B/G, high V̇A, low CO, low FRC, high FI<br/>"
        "• MAC: ED50, decreases with age/hypothermia/opioids, increases with hyperthermia<br/>"
        "• Concentration effect applies only at high concentration (≥50%) — clinically only N₂O<br/>"
        "• Second gas effect accelerates induction; discontinuing N₂O causes diffusion hypoxia<br/>"
        "• Recovery: lungs are the main elimination route; fat acts as a depot in prolonged anaesthesia<br/>"
        "• Metabolism: halothane 20% (hepatitis), sevoflurane 3–5% (compound A), desflurane ~0% (safest)<br/>"
        "• Meyer-Overton rule: MAC × Oil/Gas ≈ constant → lipid solubility predicts potency",
        S("Key", fontSize=9, leading=14, fontName="Helvetica", textColor=NAVY,
          alignment=TA_LEFT))
]]
key_table = Table(key_data, colWidths=[PAGE_W])
key_table.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,-1), CREAM),
    ("BOX",           (0,0), (-1,-1), 1.5, GOLD),
    ("TOPPADDING",    (0,0), (-1,-1), 10),
    ("BOTTOMPADDING", (0,0), (-1,-1), 10),
    ("LEFTPADDING",   (0,0), (-1,-1), 12),
    ("RIGHTPADDING",  (0,0), (-1,-1), 12),
]))
story.append(key_table)

# ── REFERENCES ────────────────────────────────────────────────────────────────
story.append(Spacer(1, 0.2*cm))
story.append(hr(TEAL))
story.append(Paragraph(
    "<i>References: Miller's Anesthesia 10e (Gropper et al., 2020); "
    "Goodman &amp; Gilman's Pharmacological Basis of Therapeutics 14e; "
    "Barash Clinical Anesthesia 9e; Morgan &amp; Mikhail's Clinical Anesthesiology 6e.</i>",
    note_style))

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

cd /home/daytona/workspace/anaesthesia-pk && python3 generate_pdf.py 2>&1

Running Command

ls -lh /home/daytona/workspace/anaesthesia-pk/Pharmacokinetics_Inhalational_Agen…

Your PDF is ready:

Pharmacokinetics Inhalational Agents

PDF Document · PDF


Here is a full outline of everything covered in the note, structured for 20 marks:

Pharmacokinetics of Inhalational Anaesthetic Agents

1. Introduction

Inhalational agents work by achieving adequate brain partial pressure. The driving concept is partial pressure gradients (lungs → blood → brain), not concentration alone. The FA/FI ratio describes the rate of rise of alveolar concentration toward inspired concentration.

2. MAC (Minimum Alveolar Concentration)

  • Defined as the alveolar concentration (in % atm) preventing movement to surgical incision in 50% of subjects - an ED50 and the standard index of potency
  • Values: Halothane 0.75%, Isoflurane 1.15%, Sevoflurane 2.0%, Desflurane 6.0%, N₂O 104%
MAC modifiers:
  • Increases: hyperthermia, chronic alcohol, hypernatraemia, age < 6 months
  • Decreases: age, hypothermia, opioids, pregnancy (−40%), acute alcohol, α₂ agonists

3. The FA/FI Ratio - Uptake & Distribution

Factors that RAISE FA/FI (faster induction):
  • High inspired concentration (FI)
  • High fresh gas flow
  • High alveolar ventilation (V̇A)
  • Low FRC (children)
  • Low blood/gas solubility (desflurane > sevoflurane)
Factors that SLOW FA/FI (increased uptake):
  • High B/G solubility (halothane, isoflurane)
  • High cardiac output
  • High alveolar-venous partial pressure difference

4. Solubility Coefficients

CoefficientSignificance
Blood/GasMost important clinically; low = fast induction + recovery
Oil/GasInversely related to MAC (Meyer-Overton rule: O/G × MAC ≈ constant)
Fat/BloodHigh = prolonged recovery in long cases (halothane ~60)

5. Kety's Uptake Equation

Uptake = λ × Q̇ × (PA – PV̄) / PB
  • Uptake greatest at induction (large A-v gradient), falls as tissues saturate
  • Explains square-root-of-time kinetics

6. Concentration Effect & Second Gas Effect

  • Concentration effect: Only at high FI (≥50%). Rapid absorption of N₂O concentrates remaining gases and draws fresh gas inward → FA/FI rises faster than predicted
  • Second gas effect: Rapid N₂O uptake raises alveolar partial pressure of co-administered volatile agent, speeding induction
  • Diffusion hypoxia (Fink): On stopping N₂O - rapid outpouring dilutes alveolar O₂. Prevention: 100% O₂ for 5–10 min at emergence

7. Tissue Distribution - Four Compartments

GroupBlood FlowEquilibration
VRG (brain, heart, liver)75% of CO4–8 min
Muscle group19%20–40 min
Fat group6%Hours–days
Vessel-poor group<1%Never fully
Fat acts as a slowly filling reservoir - critical for prolonged anaesthesia and recovery.

8. Recovery & Elimination

  • Lungs are the primary route of elimination
  • Low B/G agents (desflurane, sevoflurane) wash out fastest
  • Context-sensitive: fat saturation in long cases slows washout, especially for halothane/isoflurane

9. Metabolism (Biotransformation)

AgentMetabolismMain Concern
Halothane20%Hepatitis (immune-mediated via TFA adducts)
Sevoflurane3–5%Compound A (nephrotoxic in rats; not humans)
Isoflurane0.2%Minimal
Desflurane0.02%Negligible
N₂O<0.01%Vit B₁₂ oxidation → methionine synthase inhibition

10. Special Situations

  • Paediatrics: Higher V̇A/FRC → faster induction; MAC highest at 6 months
  • Obesity: Large fat reservoir → prefer desflurane
  • Altitude: Lower PB → lower inspired partial pressure → increase vaporiser setting
  • R→L shunt: Slows induction (bypassed alveolar gas) - greater effect for insoluble agents
  • CPB hypothermia: Increased solubility → higher uptake into blood → risk of awareness

Sourced from: Miller's Anesthesia 10e, Goodman & Gilman 14e, Barash Clinical Anesthesia 9e
This is a shared conversation. Sign in to Orris to start your own chat.