Notes on green anesthesia
Use multiple colors in a pdf and the number of pages can be maximum of 4 to 5 pages based on the question asked and should be in detail within 5 pages pdf. Save this preference
Use multiple colors in a pdf and the number of pages can be maximum of 4 to 5 pages based on the question asked and should be in detail within 5 pages pdf. Save this preference
green anesthesia sustainable environmentally friendly anesthetic practices
https://resources.wfsahq.org/wp-content/uploads/Guidelines-o…
mkdir -p /home/daytona/workspace/green-anesthesia && ls /home/daytona/workspace/green-anesthesia/
~/green-anesthesia/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable, PageBreak
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import KeepTogether
# ── Color Palette ──────────────────────────────────────────────
DARK_GREEN = colors.HexColor("#1B5E20")
MID_GREEN = colors.HexColor("#2E7D32")
LIGHT_GREEN = colors.HexColor("#A5D6A7")
TEAL = colors.HexColor("#00695C")
CYAN_LIGHT = colors.HexColor("#E0F7FA")
AMBER = colors.HexColor("#E65100")
AMBER_LIGHT = colors.HexColor("#FFF3E0")
BLUE_DARK = colors.HexColor("#0D47A1")
BLUE_LIGHT = colors.HexColor("#E3F2FD")
PURPLE = colors.HexColor("#4A148C")
PURPLE_LIGHT = colors.HexColor("#F3E5F5")
RED_DARK = colors.HexColor("#B71C1C")
RED_LIGHT = colors.HexColor("#FFEBEE")
GOLD = colors.HexColor("#F57F17")
WHITE = colors.white
NEAR_BLACK = colors.HexColor("#1A1A1A")
LIGHT_GREY = colors.HexColor("#F5F5F5")
DARK_GREY = colors.HexColor("#424242")
PAGE_W, PAGE_H = A4
MARGIN = 1.8 * cm
doc = SimpleDocTemplate(
"/home/daytona/workspace/green-anesthesia/Green_Anesthesia_Notes.pdf",
pagesize=A4,
leftMargin=MARGIN, rightMargin=MARGIN,
topMargin=MARGIN, bottomMargin=MARGIN,
title="Green Anesthesia – Comprehensive Notes",
author="Orris AI"
)
# ── Styles ─────────────────────────────────────────────────────
base = getSampleStyleSheet()
def style(name, parent="Normal", **kwargs):
return ParagraphStyle(name, parent=base[parent], **kwargs)
S = {
"cover_title": style("cover_title", "Title",
fontSize=28, textColor=WHITE, alignment=TA_CENTER, leading=34, spaceAfter=6),
"cover_sub": style("cover_sub",
fontSize=13, textColor=LIGHT_GREEN, alignment=TA_CENTER, leading=18, spaceAfter=4),
"cover_tag": style("cover_tag",
fontSize=10, textColor=WHITE, alignment=TA_CENTER, leading=14),
"section_h": style("section_h",
fontSize=13, textColor=WHITE, leading=18, spaceBefore=4, spaceAfter=2,
fontName="Helvetica-Bold", leftIndent=0),
"subsec_h": style("subsec_h",
fontSize=11, textColor=DARK_GREEN, leading=16, spaceBefore=8, spaceAfter=3,
fontName="Helvetica-Bold"),
"body": style("body",
fontSize=9.5, textColor=NEAR_BLACK, leading=15, spaceAfter=4,
alignment=TA_JUSTIFY),
"bullet": style("bullet",
fontSize=9.5, textColor=NEAR_BLACK, leading=14, spaceAfter=3,
leftIndent=14, bulletIndent=4),
"table_hdr": style("table_hdr",
fontSize=9, textColor=WHITE, fontName="Helvetica-Bold",
alignment=TA_CENTER, leading=13),
"table_cell": style("table_cell",
fontSize=8.8, textColor=NEAR_BLACK, leading=13, alignment=TA_LEFT),
"table_cell_c": style("table_cell_c",
fontSize=8.8, textColor=NEAR_BLACK, leading=13, alignment=TA_CENTER),
"highlight_green": style("highlight_green",
fontSize=9.5, textColor=DARK_GREEN, fontName="Helvetica-Bold",
leading=14, leftIndent=10, spaceAfter=3),
"highlight_amber": style("highlight_amber",
fontSize=9.5, textColor=AMBER, fontName="Helvetica-Bold",
leading=14, leftIndent=10, spaceAfter=3),
"box_title": style("box_title",
fontSize=10, textColor=WHITE, fontName="Helvetica-Bold",
alignment=TA_CENTER, leading=14, spaceAfter=2),
"box_body": style("box_body",
fontSize=9, textColor=NEAR_BLACK, leading=13, alignment=TA_JUSTIFY),
"footer": style("footer",
fontSize=7.5, textColor=DARK_GREY, alignment=TA_CENTER),
}
# ── Helper: Section Header Bar ─────────────────────────────────
def sec_bar(title, bg=MID_GREEN):
t = Table([[Paragraph(title, S["section_h"])]],
colWidths=[PAGE_W - 2 * MARGIN])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("ROUNDEDCORNERS", [4]),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 10),
]))
return t
# ── Helper: Colored Info Box ───────────────────────────────────
def info_box(title, items, title_bg=TEAL, box_bg=CYAN_LIGHT):
rows = [[Paragraph(title, S["box_title"])]]
for item in items:
rows.append([Paragraph(item, S["box_body"])])
t = Table(rows, colWidths=[PAGE_W - 2 * MARGIN])
ts = TableStyle([
("BACKGROUND", (0,0), (0,0), title_bg),
("BACKGROUND", (0,1), (-1,-1), box_bg),
("BOX", (0,0), (-1,-1), 0.8, title_bg),
("INNERGRID", (0,0), (-1,-1), 0.3, colors.HexColor("#B2DFDB")),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 8),
("RIGHTPADDING", (0,0), (-1,-1), 8),
])
t.setStyle(ts)
return t
# ── Content ────────────────────────────────────────────────────
story = []
# ════════════════════════════════════════════════════════════════
# PAGE 1 – COVER
# ════════════════════════════════════════════════════════════════
cover_bg = Table(
[[Paragraph("GREEN ANESTHESIA", S["cover_title"])],
[Paragraph("Environmentally Sustainable Anaesthesia Practice", S["cover_sub"])],
[Spacer(1, 0.3*cm)],
[Paragraph("A Comprehensive Reference for Clinicians", S["cover_tag"])],
[Spacer(1, 0.2*cm)],
[Paragraph("June 2026 | Orris AI Notes", S["cover_tag"])],
],
colWidths=[PAGE_W - 2 * MARGIN]
)
cover_bg.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), DARK_GREEN),
("TOPPADDING", (0,0), (-1,-1), 18),
("BOTTOMPADDING", (0,0), (-1,-1), 18),
("LEFTPADDING", (0,0), (-1,-1), 16),
("RIGHTPADDING", (0,0), (-1,-1), 16),
("ROUNDEDCORNERS", [8]),
]))
story.append(cover_bg)
story.append(Spacer(1, 0.5*cm))
# Intro paragraph
story.append(Paragraph(
"Green Anesthesia refers to the set of clinical practices, policy frameworks, and cultural shifts in anesthesiology "
"aimed at reducing the environmental footprint of perioperative care — without compromising patient safety. "
"Healthcare globally accounts for ~5% of greenhouse gas (GHG) emissions; anesthesia, particularly volatile agents, "
"is a disproportionate contributor. This document synthesizes key concepts, current international guidelines, "
"practical strategies, and emerging evidence.",
S["body"]
))
story.append(Spacer(1, 0.3*cm))
# Why It Matters box
story.append(info_box(
" WHY IT MATTERS — Key Statistics",
[
"• Healthcare contributes ~5% of global GHG emissions (comparable to the aviation industry).",
"• Inhalational anaesthetics alone account for ~3% of NHS healthcare emissions (UK data).",
"• Perioperative services generate ~30% of hospital solid waste and the majority of hospital carbon footprint.",
"• Desflurane has a Global Warming Potential (GWP) ~2,500× that of CO₂; sevoflurane ~130×; isoflurane ~510×.",
"• Nitrous oxide (N₂O) has an atmospheric lifetime of 123 years and is a potent ozone-depleting substance.",
"• The WFSA 2022 Global Consensus Statement calls action on green anesthesia a global imperative.",
],
title_bg=TEAL, box_bg=CYAN_LIGHT
))
story.append(Spacer(1, 0.3*cm))
# Three Pillars
story.append(Paragraph("Three Foundational Pillars (WFSA 2022)", S["subsec_h"]))
pillars = [
[Paragraph("Pillar", S["table_hdr"]), Paragraph("Core Principle", S["table_hdr"])],
[Paragraph("Patient Safety First", ParagraphStyle("p1", parent=S["table_cell"], textColor=DARK_GREEN, fontName="Helvetica-Bold")),
Paragraph("Sustainable practices must NEVER compromise patient safety or clinical outcomes.", S["table_cell"])],
[Paragraph("Global Equity", ParagraphStyle("p2", parent=S["table_cell"], textColor=BLUE_DARK, fontName="Helvetica-Bold")),
Paragraph("High-, middle- and low-income countries should support one another; green anesthesia is not a privilege.", S["table_cell"])],
[Paragraph("Institutional Mandate", ParagraphStyle("p3", parent=S["table_cell"], textColor=AMBER, fontName="Helvetica-Bold")),
Paragraph("Healthcare systems must be mandated and monitored to reduce their contribution to global warming.", S["table_cell"])],
]
pt = Table(pillars, colWidths=[4.5*cm, PAGE_W - 2*MARGIN - 4.5*cm])
pt.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), MID_GREEN),
("ROWBACKGROUNDS", (0,1), (-1,-1), [LIGHT_GREY, BLUE_LIGHT]),
("BOX", (0,0), (-1,-1), 0.8, MID_GREEN),
("INNERGRID", (0,0), (-1,-1), 0.4, colors.HexColor("#C8E6C9")),
("TOPPADDING", (0,0), (-1,-1), 6), ("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 8), ("RIGHTPADDING", (0,0), (-1,-1), 8),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(pt)
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════
# PAGE 2 – VOLATILE AGENTS + GWP + GAS FLOW
# ════════════════════════════════════════════════════════════════
story.append(sec_bar(" VOLATILE ANAESTHETIC AGENTS & ENVIRONMENTAL IMPACT", DARK_GREEN))
story.append(Spacer(1, 0.25*cm))
story.append(Paragraph(
"Volatile halogenated anaesthetics are potent greenhouse gases. Once exhaled and scavenged, they are typically "
"vented to the atmosphere. Their environmental impact is determined by (a) Global Warming Potential (GWP), "
"(b) atmospheric lifetime, and (c) the clinical dose required (MAC).",
S["body"]
))
story.append(Spacer(1, 0.2*cm))
# GWP comparison table
story.append(Paragraph("Comparative Environmental Profile of Volatile Agents", S["subsec_h"]))
gwp_data = [
[Paragraph("Agent", S["table_hdr"]),
Paragraph("GWP (100-yr)", S["table_hdr"]),
Paragraph("Atm. Lifetime", S["table_hdr"]),
Paragraph("MAC (%)", S["table_hdr"]),
Paragraph("Ozone Depletion", S["table_hdr"]),
Paragraph("Recommendation", S["table_hdr"])],
[Paragraph("Desflurane", ParagraphStyle("df", parent=S["table_cell_c"], textColor=RED_DARK, fontName="Helvetica-Bold")),
Paragraph("~2,500", S["table_cell_c"]), Paragraph("14 years", S["table_cell_c"]),
Paragraph("6–8%", S["table_cell_c"]), Paragraph("Negligible", S["table_cell_c"]),
Paragraph("AVOID / Discontinue", ParagraphStyle("df2", parent=S["table_cell_c"], textColor=RED_DARK, fontName="Helvetica-Bold"))],
[Paragraph("Nitrous Oxide", ParagraphStyle("n2o", parent=S["table_cell_c"], textColor=AMBER, fontName="Helvetica-Bold")),
Paragraph("~265", S["table_cell_c"]), Paragraph("123 years", S["table_cell_c"]),
Paragraph("~100%", S["table_cell_c"]), Paragraph("YES – significant", ParagraphStyle("oz", parent=S["table_cell_c"], textColor=RED_DARK)),
Paragraph("Minimize / Avoid", ParagraphStyle("n2o2", parent=S["table_cell_c"], textColor=AMBER, fontName="Helvetica-Bold"))],
[Paragraph("Isoflurane", S["table_cell_c"]),
Paragraph("~510", S["table_cell_c"]), Paragraph("3.2 years", S["table_cell_c"]),
Paragraph("1.2%", S["table_cell_c"]), Paragraph("Minimal", S["table_cell_c"]),
Paragraph("Use with low-flow", S["table_cell_c"])],
[Paragraph("Sevoflurane", ParagraphStyle("sevo", parent=S["table_cell_c"], textColor=DARK_GREEN, fontName="Helvetica-Bold")),
Paragraph("~130", S["table_cell_c"]), Paragraph("1.1 years", S["table_cell_c"]),
Paragraph("2%", S["table_cell_c"]), Paragraph("Negligible", S["table_cell_c"]),
Paragraph("Preferred volatile agent", ParagraphStyle("sevo2", parent=S["table_cell_c"], textColor=DARK_GREEN, fontName="Helvetica-Bold"))],
[Paragraph("Xenon (Xe)", ParagraphStyle("xe", parent=S["table_cell_c"], textColor=BLUE_DARK, fontName="Helvetica-Bold")),
Paragraph("~0 (inert)", S["table_cell_c"]), Paragraph("Inert", S["table_cell_c"]),
Paragraph("~63%", S["table_cell_c"]), Paragraph("None", S["table_cell_c"]),
Paragraph("Ideal, but costly", ParagraphStyle("xe2", parent=S["table_cell_c"], textColor=BLUE_DARK, fontName="Helvetica-Bold"))],
]
cw = [(PAGE_W - 2*MARGIN)/6] * 6
gwpt = Table(gwp_data, colWidths=cw, repeatRows=1)
gwpt.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), TEAL),
("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, LIGHT_GREY]),
("BOX", (0,0), (-1,-1), 0.8, TEAL),
("INNERGRID", (0,0), (-1,-1), 0.3, colors.HexColor("#B2EBF2")),
("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 4), ("RIGHTPADDING", (0,0), (-1,-1), 4),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
# Highlight desflurane row
("BACKGROUND", (0,1), (-1,1), RED_LIGHT),
# Highlight sevoflurane row
("BACKGROUND", (0,4), (-1,4), colors.HexColor("#E8F5E9")),
]))
story.append(gwpt)
story.append(Spacer(1, 0.3*cm))
# Fresh Gas Flow
story.append(sec_bar(" FRESH GAS FLOW (FGF) MANAGEMENT", TEAL))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph(
"Fresh gas flow is the single most modifiable factor in volatile agent consumption. Reducing FGF dramatically "
"decreases agent waste and costs — without changing the anaesthetic technique.",
S["body"]
))
fgf_data = [
[Paragraph("FGF Technique", S["table_hdr"]), Paragraph("Flow Rate", S["table_hdr"]),
Paragraph("Agent Savings", S["table_hdr"]), Paragraph("Notes", S["table_hdr"])],
[Paragraph("High-flow (traditional)", S["table_cell_c"]), Paragraph(">2 L/min", S["table_cell_c"]),
Paragraph("None", ParagraphStyle("no", parent=S["table_cell_c"], textColor=RED_DARK)),
Paragraph("Avoids rebreathing; no longer recommended routinely", S["table_cell"])],
[Paragraph("Low-flow", ParagraphStyle("lf", parent=S["table_cell_c"], textColor=MID_GREEN, fontName="Helvetica-Bold")),
Paragraph("0.5–1 L/min", S["table_cell_c"]),
Paragraph("~50–70%", ParagraphStyle("s1", parent=S["table_cell_c"], textColor=MID_GREEN, fontName="Helvetica-Bold")),
Paragraph("Recommended by WFSA, AoA, CAS, DGAI", S["table_cell"])],
[Paragraph("Minimal-flow", ParagraphStyle("mf", parent=S["table_cell_c"], textColor=DARK_GREEN, fontName="Helvetica-Bold")),
Paragraph("0.25–0.5 L/min", S["table_cell_c"]),
Paragraph("~80–85%", ParagraphStyle("s2", parent=S["table_cell_c"], textColor=DARK_GREEN, fontName="Helvetica-Bold")),
Paragraph("Requires capnography + gas monitoring; highest savings", S["table_cell"])],
[Paragraph("Closed-circuit", S["table_cell_c"]), Paragraph("<0.25 L/min", S["table_cell_c"]),
Paragraph("~95%", ParagraphStyle("s3", parent=S["table_cell_c"], textColor=DARK_GREEN, fontName="Helvetica-Bold")),
Paragraph("Requires full gas monitoring; specialist setting", S["table_cell"])],
]
fgft = Table(fgf_data, colWidths=[3.8*cm, 3*cm, 3*cm, PAGE_W - 2*MARGIN - 9.8*cm])
fgft.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), TEAL),
("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, colors.HexColor("#E0F2F1")]),
("BOX", (0,0), (-1,-1), 0.8, TEAL),
("INNERGRID", (0,0), (-1,-1), 0.3, colors.HexColor("#B2DFDB")),
("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 5), ("RIGHTPADDING", (0,0), (-1,-1), 5),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(fgft)
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════
# PAGE 3 – THE 6Rs + TIVA + REGIONAL + N2O
# ════════════════════════════════════════════════════════════════
story.append(sec_bar(" THE 6Rs FRAMEWORK (WFSA)", AMBER))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph(
"The WFSA adapted the sustainability framework of the '6Rs' for anaesthetic practice. "
"Each 'R' represents a layer of action, from individual clinician behaviour to systemic change.",
S["body"]
))
story.append(Spacer(1, 0.15*cm))
rs_data = [
[Paragraph("The 6R", S["table_hdr"]), Paragraph("Anaesthetic Application", S["table_hdr"]),
Paragraph("Example Actions", S["table_hdr"])],
[Paragraph("1. REFUSE", ParagraphStyle("r1", parent=S["table_cell_c"], textColor=RED_DARK, fontName="Helvetica-Bold")),
Paragraph("Decline high-GWP agents when alternatives exist", S["table_cell"]),
Paragraph("Refuse desflurane use; decline unnecessary N₂O pipelines", S["table_cell"])],
[Paragraph("2. REDUCE", ParagraphStyle("r2", parent=S["table_cell_c"], textColor=AMBER, fontName="Helvetica-Bold")),
Paragraph("Minimise agent consumption and waste generation", S["table_cell"]),
Paragraph("Low/minimal FGF; shorter surgical times; targeted drug dosing", S["table_cell"])],
[Paragraph("3. REUSE", ParagraphStyle("r3", parent=S["table_cell_c"], textColor=MID_GREEN, fontName="Helvetica-Bold")),
Paragraph("Re-process safe, reusable equipment", S["table_cell"]),
Paragraph("Reusable LMAs, laryngoscopes, breathing circuits; washable drapes", S["table_cell"])],
[Paragraph("4. RECYCLE", ParagraphStyle("r4", parent=S["table_cell_c"], textColor=TEAL, fontName="Helvetica-Bold")),
Paragraph("Correct waste stream sorting and agent capture", S["table_cell"]),
Paragraph("Anaesthetic gas capture canisters (e.g., SageTech); segregate sharps/hazardous waste", S["table_cell"])],
[Paragraph("5. RETHINK", ParagraphStyle("r5", parent=S["table_cell_c"], textColor=BLUE_DARK, fontName="Helvetica-Bold")),
Paragraph("Reassess established practices with environmental lens", S["table_cell"]),
Paragraph("Prefer TIVA or regional blocks; ambulatory-first pathways; telemedicine pre-assessment", S["table_cell"])],
[Paragraph("6. RESEARCH", ParagraphStyle("r6", parent=S["table_cell_c"], textColor=PURPLE, fontName="Helvetica-Bold")),
Paragraph("Generate evidence to guide sustainable practice", S["table_cell"]),
Paragraph("Carbon footprint audits; LCA studies; efficacy of gas capture devices", S["table_cell"])],
]
cw_rs = [2.5*cm, 5.5*cm, PAGE_W - 2*MARGIN - 8*cm]
rst = Table(rs_data, colWidths=cw_rs, repeatRows=1)
rst.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), AMBER),
("ROWBACKGROUNDS", (0,1), (-1,-1), [AMBER_LIGHT, WHITE]),
("BOX", (0,0), (-1,-1), 0.8, AMBER),
("INNERGRID", (0,0), (-1,-1), 0.3, colors.HexColor("#FFCC80")),
("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6), ("RIGHTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(rst)
story.append(Spacer(1, 0.3*cm))
# TIVA and Regional
story.append(sec_bar(" TIVA & REGIONAL ANAESTHESIA AS GREEN ALTERNATIVES", BLUE_DARK))
story.append(Spacer(1, 0.2*cm))
two_col = Table([
[info_box(
"Total IV Anaesthesia (TIVA)",
[
"TIVA using propofol + remifentanil/alfentanil eliminates volatile agent "
"emissions entirely at the point of delivery.",
"Propofol is water-soluble and metabolised hepatically — its environmental "
"persistence is far lower than fluorinated volatiles.",
"TIVA is endorsed by WFSA, AoA, CAS as a primary green strategy.",
"Limitations: propofol vials contain lipid emulsion (disposal concerns); "
"higher direct drug cost; awareness risk if pump failure.",
"Target-Controlled Infusion (TCI) improves precision and reduces drug waste.",
"TIVA carbon footprint is estimated ~10–20× lower than desflurane-based GA.",
],
title_bg=BLUE_DARK, box_bg=BLUE_LIGHT
),
info_box(
"Regional / Neuraxial Anaesthesia",
[
"Avoids volatile agents entirely; ideal for orthopaedic, obstetric, "
"urological, and peripheral surgical procedures.",
"Spinal, epidural, peripheral nerve blocks (ultrasound-guided) — all "
"reduce or eliminate GA requirement.",
"Combines well with sedation using low-impact agents (e.g., dexmedetomidine).",
"Additional benefits: better PONV profile, reduced opioid use, "
"faster recovery and earlier discharge → further reduces hospital resource use.",
"Opioid-sparing effect also reduces pharmaceutical waste and patient harm.",
],
title_bg=PURPLE, box_bg=PURPLE_LIGHT
)]
], colWidths=[(PAGE_W - 2*MARGIN)/2 - 0.2*cm, (PAGE_W - 2*MARGIN)/2 - 0.2*cm])
two_col.setStyle(TableStyle([
("TOPPADDING", (0,0), (-1,-1), 0),
("BOTTOMPADDING", (0,0), (-1,-1), 0),
("LEFTPADDING", (0,0), (-1,-1), 0),
("RIGHTPADDING", (0,0), (-1,-1), 4),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(two_col)
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════
# PAGE 4 – WASTE MGMT, EQUIPMENT, ENERGY, N2O PIPELINE
# ════════════════════════════════════════════════════════════════
story.append(sec_bar(" WASTE MANAGEMENT IN THE OPERATING ROOM", MID_GREEN))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph(
"The OR generates enormous volumes of waste. A single surgical case can produce 4–20 kg of waste. "
"Proper segregation is mandatory — misclassified waste significantly inflates incineration costs and emissions.",
S["body"]
))
story.append(Spacer(1, 0.15*cm))
waste_data = [
[Paragraph("Waste Category", S["table_hdr"]), Paragraph("Examples", S["table_hdr"]),
Paragraph("Correct Disposal", S["table_hdr"])],
[Paragraph("Infectious / Clinical", ParagraphStyle("wc1", parent=S["table_cell_c"], textColor=RED_DARK)),
Paragraph("Blood-soaked drapes, sharps, body fluids", S["table_cell"]),
Paragraph("Yellow bags → high-temp incineration or autoclave", S["table_cell"])],
[Paragraph("Non-infectious general", S["table_cell_c"]),
Paragraph("Outer packaging, paper wrappers, unopened unused supplies", S["table_cell"]),
Paragraph("Black/clear bags → general landfill or recycle where possible", S["table_cell"])],
[Paragraph("Pharmaceutical", ParagraphStyle("wc3", parent=S["table_cell_c"], textColor=AMBER)),
Paragraph("Unused drug vials, propofol residues, volatile agent canisters", S["table_cell"]),
Paragraph("Segregated pharmaceutical waste bins — NOT drain disposal", S["table_cell"])],
[Paragraph("Anaesthetic Gas", ParagraphStyle("wc4", parent=S["table_cell_c"], textColor=PURPLE)),
Paragraph("Exhaled volatiles, waste N₂O from machines", S["table_cell"]),
Paragraph("AGSS (scavenging) systems; capture canisters for post-machine venting", S["table_cell"])],
[Paragraph("Recyclable plastics", ParagraphStyle("wc5", parent=S["table_cell_c"], textColor=DARK_GREEN)),
Paragraph("Uncontaminated syringes, packaging, LMA packaging", S["table_cell"]),
Paragraph("Clean recycling stream; remove clinical contact items first", S["table_cell"])],
]
cw_w = [3.2*cm, 6*cm, PAGE_W - 2*MARGIN - 9.2*cm]
wt = Table(waste_data, colWidths=cw_w, repeatRows=1)
wt.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), MID_GREEN),
("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, LIGHT_GREY]),
("BOX", (0,0), (-1,-1), 0.8, MID_GREEN),
("INNERGRID", (0,0), (-1,-1), 0.3, colors.HexColor("#C8E6C9")),
("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 5), ("RIGHTPADDING", (0,0), (-1,-1), 5),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(wt)
story.append(Spacer(1, 0.3*cm))
# Equipment + Energy
two_eq = Table([[
info_box(
"Equipment: Single-Use vs. Reusable",
[
"Life Cycle Assessment (LCA) studies are essential — single-use is NOT "
"automatically greener than reusable.",
"Reusable LMAs, laryngoscopes, and breathing circuits have a substantially "
"lower carbon footprint over their useful life.",
"Key caveat: reprocessing requires energy and water — facility must have "
"efficient sterilisation systems.",
"Packaging waste from single-use items is a major unaddressed contributor.",
"Recommendation: audit each item using LCA methodology before switching.",
],
title_bg=GOLD, box_bg=colors.HexColor("#FFFDE7")
),
info_box(
"Energy & N₂O Pipeline Decommissioning",
[
"Operating rooms consume 3–6× more energy per m² than any other hospital area.",
"N₂O piped systems leak continuously — even when not in clinical use.",
"Studies show pipeline losses of 10–50% of N₂O supplied.",
"Decommissioning centralised N₂O pipelines and switching to cylinder-on-demand "
"is recommended by multiple guidelines (UK HAACC, AoA).",
"Energy: smart HVAC controls, LED lighting, and anaesthesia machine standby "
"modes can reduce OR energy use by 20–30%.",
],
title_bg=RED_DARK, box_bg=RED_LIGHT
)
]], colWidths=[(PAGE_W - 2*MARGIN)/2 - 0.2*cm, (PAGE_W - 2*MARGIN)/2 - 0.2*cm])
two_eq.setStyle(TableStyle([
("TOPPADDING", (0,0), (-1,-1), 0),
("BOTTOMPADDING", (0,0), (-1,-1), 0),
("LEFTPADDING", (0,0), (-1,-1), 0),
("RIGHTPADDING", (0,0), (-1,-1), 4),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(two_eq)
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════
# PAGE 5 – GUIDELINES, IMPLEMENTATION, FUTURE DIRECTIONS
# ════════════════════════════════════════════════════════════════
story.append(sec_bar(" INTERNATIONAL GUIDELINES SNAPSHOT", PURPLE))
story.append(Spacer(1, 0.2*cm))
gl_data = [
[Paragraph("Organisation", S["table_hdr"]), Paragraph("Key Recommendations", S["table_hdr"])],
[Paragraph("WFSA (Global, 2022–23)", ParagraphStyle("gl1", parent=S["table_cell"], textColor=PURPLE, fontName="Helvetica-Bold")),
Paragraph("6Rs framework; reduce volatile use; low-flow FGF; carbon footprint tools; education mandate; global equity.", S["table_cell"])],
[Paragraph("AoA (UK, 2020)", ParagraphStyle("gl2", parent=S["table_cell"], textColor=BLUE_DARK, fontName="Helvetica-Bold")),
Paragraph("5R approach; avoid desflurane and N₂O; use low-flow; promote TIVA and regional; reusable equipment.", S["table_cell"])],
[Paragraph("ASA (USA, 2023)", ParagraphStyle("gl3", parent=S["table_cell"], textColor=RED_DARK, fontName="Helvetica-Bold")),
Paragraph("Greening the OR checklist; eliminate desflurane; waste stream management; carbon footprint reporting; LCA for equipment.", S["table_cell"])],
[Paragraph("CAS (Canada, 2023)", ParagraphStyle("gl4", parent=S["table_cell"], textColor=TEAL, fontName="Helvetica-Bold")),
Paragraph("Lowest-GWP volatile agents; FGF <1 L/min; eliminate/minimise desflurane and N₂O; TIVA/regional preferred; recycling systems.", S["table_cell"])],
[Paragraph("DGAI/BDA (Germany, 2020)", ParagraphStyle("gl5", parent=S["table_cell"], textColor=MID_GREEN, fontName="Helvetica-Bold")),
Paragraph("Minimal-flow anaesthesia; avoid desflurane/N₂O unless clinically necessary; biodegradable material audit.", S["table_cell"])],
[Paragraph("Practice Greenhealth (USA, 2024)", ParagraphStyle("gl6", parent=S["table_cell"], textColor=GOLD, fontName="Helvetica-Bold")),
Paragraph("Eliminate desflurane and N₂O; retrofit equipment with waste gas trapping/destruction technology; clinician education.", S["table_cell"])],
]
glt = Table(gl_data, colWidths=[3.8*cm, PAGE_W - 2*MARGIN - 3.8*cm], repeatRows=1)
glt.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), PURPLE),
("ROWBACKGROUNDS", (0,1), (-1,-1), [PURPLE_LIGHT, WHITE]),
("BOX", (0,0), (-1,-1), 0.8, PURPLE),
("INNERGRID", (0,0), (-1,-1), 0.3, colors.HexColor("#CE93D8")),
("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6), ("RIGHTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(glt)
story.append(Spacer(1, 0.3*cm))
# Implementation Checklist
story.append(sec_bar(" PRACTICAL IMPLEMENTATION CHECKLIST FOR CLINICIANS", DARK_GREEN))
story.append(Spacer(1, 0.2*cm))
checklist = [
("Pre-operatively", [
"Consider regional/neuraxial anaesthesia as primary technique — discuss with surgeon.",
"Use telemedicine/virtual pre-assessment to reduce patient and staff travel.",
"Order only what you need — avoid opening unnecessary drug vials or equipment packs.",
"Ensure anaesthetic machine serviced; check for gas leaks at start of list.",
], DARK_GREEN, colors.HexColor("#E8F5E9")),
("Intra-operatively", [
"Select sevoflurane over isoflurane/desflurane when volatile GA is necessary.",
"Target FGF ≤1 L/min after washout phase (first 5–10 min); use minimal-flow where monitored.",
"Use TIVA (propofol-TCI + remifentanil) as default for procedures >30 min.",
"Avoid routine N₂O; only use when clinically indicated.",
"Turn off volatile agent vaporiser when not in use; turn off N₂O valve at machine end.",
], TEAL, CYAN_LIGHT),
("Post-operatively / End-of-list", [
"Flush circle system with O₂ at end of list to clear residual volatile.",
"Document waste streams correctly — do not mix regulated medical waste with general waste.",
"Return unused, unopened medications to pharmacy where policy allows.",
"Power down anaesthetic machine completely; use standby mode for multi-list days.",
], BLUE_DARK, BLUE_LIGHT),
("Systemic / Departmental", [
"Advocate for desflurane phase-out and N₂O pipeline decommissioning.",
"Establish anaesthetic gas capture systems (SageTech or equivalent).",
"Conduct annual carbon footprint audits of the anaesthesia department.",
"Educate trainees and colleagues — green literacy is now a professional competency.",
], PURPLE, PURPLE_LIGHT),
]
for phase, items, hdr_bg, row_bg in checklist:
phase_data = [[Paragraph(phase, S["table_hdr"])]]
for item in items:
phase_data.append([Paragraph(f"✔ {item}", S["box_body"])])
pt = Table(phase_data, colWidths=[PAGE_W - 2*MARGIN])
pt.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), hdr_bg),
("BACKGROUND", (0,1), (-1,-1), row_bg),
("BOX", (0,0), (-1,-1), 0.6, hdr_bg),
("INNERGRID", (0,0), (-1,-1), 0.2, hdr_bg),
("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 8), ("RIGHTPADDING", (0,0), (-1,-1), 8),
]))
story.append(pt)
story.append(Spacer(1, 0.15*cm))
story.append(Spacer(1, 0.2*cm))
# Future Directions
story.append(info_box(
" FUTURE DIRECTIONS & EMERGING DEVELOPMENTS",
[
"Gas Capture Technology: Devices like SageTech Medical's Blue-Zone recycle exhaled volatile agents — "
"potentially reclaiming 90%+ of agent for re-manufacturing.",
"Xenon Anaesthesia: Theoretically zero GWP; ongoing work on economical closed-circuit recycling systems "
"could make it viable at scale.",
"AI-Assisted Dosing: Machine learning models to optimise drug delivery and FGF in real time.",
"Carbon Accounting Tools: Integrated anaesthesia machine software that logs real-time GHG emissions per case.",
"Green Surgical Pathways: Bundled programs combining regional anaesthesia, enhanced recovery, and day-case "
"surgery to minimise the entire perioperative footprint.",
"Policy & Regulation: EU and UK regulatory bodies moving towards mandatory GHG reporting for healthcare "
"systems; desflurane already banned/restricted in several European countries.",
],
title_bg=DARK_GREEN, box_bg=colors.HexColor("#F1F8E9")
))
story.append(Spacer(1, 0.25*cm))
story.append(HRFlowable(width="100%", thickness=0.5, color=DARK_GREEN))
story.append(Spacer(1, 0.1*cm))
story.append(Paragraph(
"Sources: WFSA Global Consensus Statement (Anaesthesia, 2022) · AoA Guide to Green Anaesthesia (2020) · "
"ASA Greening the OR (2023) · CAS Guidelines (2023) · DGAI/BDA Position Paper (2020) · "
"Best Practice & Research Clinical Anaesthesiology (2025) · GE HealthCare Clinical View",
S["footer"]
))
# ── Build ──────────────────────────────────────────────────────
doc.build(story)
print("PDF created successfully.")
cd /home/daytona/workspace/green-anesthesia && python generate_pdf.py
ls -lh /home/daytona/workspace/green-anesthesia/Green_Anesthesia_Notes.pdf
Green Anesthesia Notes
PDF Document · PDF
| Page | Content |
|---|---|
| 1 - Cover | Key statistics (GWP numbers, NHS data, WFSA fundamentals), Three Pillars framework |
| 2 - Agents & FGF | Full comparative table of all volatile agents (GWP, lifetime, MAC, ozone effects, recommendation), Fresh Gas Flow techniques with savings data |
| 3 - 6Rs + Alternatives | WFSA 6Rs framework in full with clinical examples, TIVA vs Regional Anaesthesia as green alternatives (side-by-side) |
| 4 - Waste & Equipment | OR waste categories with correct disposal routes, Single-use vs. reusable LCA analysis, N₂O pipeline decommissioning, OR energy use |
| 5 - Guidelines & Checklist | Snapshot of WFSA/AoA/ASA/CAS/DGAI/Practice Greenhealth guidelines, 4-phase practical checklist (pre-op, intra-op, post-op, departmental), Future directions (gas capture, xenon, AI dosing) |
There is overlapping of tables in pages 4 and 5 and still there are square boxes in place of N2O it is N followed by square box and O… Note that there should be no overlapping of tables or words and it should be clean tables and no more square boxes from on..you can add plain text number instead of square boxes.
~/green-anesthesia/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable, PageBreak
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
# ── Color Palette ──────────────────────────────────────────────
DARK_GREEN = colors.HexColor("#1B5E20")
MID_GREEN = colors.HexColor("#2E7D32")
LIGHT_GREEN = colors.HexColor("#A5D6A7")
TEAL = colors.HexColor("#00695C")
CYAN_LIGHT = colors.HexColor("#E0F7FA")
AMBER = colors.HexColor("#E65100")
AMBER_LIGHT = colors.HexColor("#FFF3E0")
BLUE_DARK = colors.HexColor("#0D47A1")
BLUE_LIGHT = colors.HexColor("#E3F2FD")
PURPLE = colors.HexColor("#4A148C")
PURPLE_LIGHT = colors.HexColor("#F3E5F5")
RED_DARK = colors.HexColor("#B71C1C")
RED_LIGHT = colors.HexColor("#FFEBEE")
GOLD = colors.HexColor("#F57F17")
WHITE = colors.white
NEAR_BLACK = colors.HexColor("#1A1A1A")
LIGHT_GREY = colors.HexColor("#F5F5F5")
DARK_GREY = colors.HexColor("#424242")
PAGE_W, PAGE_H = A4
MARGIN = 1.8 * cm
TW = PAGE_W - 2 * MARGIN # usable text width
doc = SimpleDocTemplate(
"/home/daytona/workspace/green-anesthesia/Green_Anesthesia_Notes.pdf",
pagesize=A4,
leftMargin=MARGIN, rightMargin=MARGIN,
topMargin=MARGIN, bottomMargin=MARGIN,
title="Green Anesthesia - Comprehensive Notes",
author="Orris AI"
)
# ── Styles ─────────────────────────────────────────────────────
base = getSampleStyleSheet()
def S(name, parent="Normal", **kw):
return ParagraphStyle(name, parent=base[parent], **kw)
STYLES = {
"cover_title": S("cover_title", "Title",
fontSize=26, textColor=WHITE, alignment=TA_CENTER, leading=32, spaceAfter=6),
"cover_sub": S("cover_sub",
fontSize=12, textColor=LIGHT_GREEN, alignment=TA_CENTER, leading=17, spaceAfter=4),
"cover_tag": S("cover_tag",
fontSize=9.5, textColor=WHITE, alignment=TA_CENTER, leading=14),
"sec_hdr": S("sec_hdr",
fontSize=12, textColor=WHITE, leading=17, fontName="Helvetica-Bold"),
"subsec": S("subsec",
fontSize=10.5, textColor=DARK_GREEN, leading=15, spaceBefore=7, spaceAfter=3,
fontName="Helvetica-Bold"),
"body": S("body",
fontSize=9, textColor=NEAR_BLACK, leading=14, spaceAfter=4, alignment=TA_JUSTIFY),
"th": S("th",
fontSize=8.5, textColor=WHITE, fontName="Helvetica-Bold",
alignment=TA_CENTER, leading=12),
"td": S("td",
fontSize=8.5, textColor=NEAR_BLACK, leading=12, alignment=TA_LEFT),
"tdc": S("tdc",
fontSize=8.5, textColor=NEAR_BLACK, leading=12, alignment=TA_CENTER),
"box_hdr": S("box_hdr",
fontSize=9.5, textColor=WHITE, fontName="Helvetica-Bold",
alignment=TA_CENTER, leading=14),
"box_body": S("box_body",
fontSize=8.8, textColor=NEAR_BLACK, leading=13, alignment=TA_JUSTIFY),
"footer": S("footer",
fontSize=7, textColor=DARK_GREY, alignment=TA_CENTER),
}
st = STYLES # shortcut
# ── Helpers ────────────────────────────────────────────────────
def sec_bar(title, bg=MID_GREEN):
t = Table([[Paragraph(title, st["sec_hdr"])]], colWidths=[TW])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
]))
return t
def info_box(title, items, hdr_bg=TEAL, body_bg=CYAN_LIGHT):
rows = [[Paragraph(title, st["box_hdr"])]]
for item in items:
rows.append([Paragraph(item, st["box_body"])])
t = Table(rows, colWidths=[TW])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (0,0), hdr_bg),
("BACKGROUND", (0,1), (-1,-1), body_bg),
("BOX", (0,0), (-1,-1), 0.8, hdr_bg),
("INNERGRID", (0,0), (-1,-1), 0.3, colors.HexColor("#B2DFDB")),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 8),
("RIGHTPADDING", (0,0), (-1,-1), 8),
]))
return t
# helper: bold-coloured cell style
def bcs(name, col):
return ParagraphStyle(name, parent=base["Normal"],
fontSize=8.5, textColor=col, fontName="Helvetica-Bold",
leading=12, alignment=TA_CENTER)
def bcsl(name, col): # left-aligned bold colour
return ParagraphStyle(name, parent=base["Normal"],
fontSize=8.5, textColor=col, fontName="Helvetica-Bold", leading=12)
# ── Story ──────────────────────────────────────────────────────
story = []
# ══════════════════════════════════════════════
# PAGE 1 - COVER + INTRO
# ══════════════════════════════════════════════
cover = Table(
[[Paragraph("GREEN ANESTHESIA", st["cover_title"])],
[Paragraph("Environmentally Sustainable Anaesthesia Practice", st["cover_sub"])],
[Spacer(1, 0.3*cm)],
[Paragraph("A Comprehensive Reference for Clinicians", st["cover_tag"])],
[Spacer(1, 0.15*cm)],
[Paragraph("June 2026 | Orris AI Notes", st["cover_tag"])],
], colWidths=[TW])
cover.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), DARK_GREEN),
("TOPPADDING", (0,0), (-1,-1), 16),
("BOTTOMPADDING", (0,0), (-1,-1), 16),
("LEFTPADDING", (0,0), (-1,-1), 14),
("RIGHTPADDING", (0,0), (-1,-1), 14),
]))
story += [cover, Spacer(1, 0.4*cm)]
story.append(Paragraph(
"Green Anesthesia refers to clinical practices, policy frameworks, and cultural shifts in anesthesiology "
"aimed at reducing the environmental footprint of perioperative care - without compromising patient safety. "
"Healthcare globally accounts for approximately 5% of greenhouse gas (GHG) emissions; anesthesia, "
"particularly volatile agents, is a disproportionate contributor. This document synthesises key concepts, "
"current international guidelines, practical strategies, and emerging evidence.", st["body"]))
story.append(Spacer(1, 0.25*cm))
# Key Stats box
story.append(info_box(
" WHY IT MATTERS - Key Statistics",
[
"* Healthcare contributes approximately 5% of global GHG emissions (comparable to aviation).",
"* Inhalational anaesthetics alone account for approximately 3% of NHS healthcare emissions (UK data).",
"* Perioperative services generate approximately 30% of hospital solid waste and most of hospital carbon footprint.",
"* Desflurane has a Global Warming Potential (GWP) about 2,500 times that of CO2; sevoflurane about 130x; isoflurane about 510x.",
"* Nitrous oxide (N2O) has an atmospheric lifetime of 123 years and is a potent ozone-depleting substance.",
"* The WFSA 2022 Global Consensus Statement calls action on green anesthesia a global imperative.",
],
hdr_bg=TEAL, body_bg=CYAN_LIGHT
))
story.append(Spacer(1, 0.25*cm))
# Three Pillars
story.append(Paragraph("Three Foundational Pillars (WFSA 2022)", st["subsec"]))
pillars = [
[Paragraph("Pillar", st["th"]),
Paragraph("Core Principle", st["th"])],
[Paragraph("Patient Safety First", bcs("p1", DARK_GREEN)),
Paragraph("Sustainable practices must NEVER compromise patient safety or clinical outcomes.", st["td"])],
[Paragraph("Global Equity", bcs("p2", BLUE_DARK)),
Paragraph("High-, middle- and low-income countries should support one another; green anesthesia is not a privilege.", st["td"])],
[Paragraph("Institutional Mandate", bcs("p3", AMBER)),
Paragraph("Healthcare systems must be mandated and monitored to reduce their contribution to global warming.", st["td"])],
]
pt = Table(pillars, colWidths=[4*cm, TW - 4*cm])
pt.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), MID_GREEN),
("ROWBACKGROUNDS",(0,1), (-1,-1), [LIGHT_GREY, BLUE_LIGHT]),
("BOX", (0,0), (-1,-1), 0.8, MID_GREEN),
("INNERGRID", (0,0), (-1,-1), 0.4, colors.HexColor("#C8E6C9")),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 8),
("RIGHTPADDING", (0,0), (-1,-1), 8),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(pt)
story.append(PageBreak())
# ══════════════════════════════════════════════
# PAGE 2 - VOLATILE AGENTS + FGF
# ══════════════════════════════════════════════
story.append(sec_bar(" VOLATILE ANAESTHETIC AGENTS AND ENVIRONMENTAL IMPACT", DARK_GREEN))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph(
"Volatile halogenated anaesthetics are potent greenhouse gases. Once exhaled and scavenged, they are typically "
"vented to the atmosphere. Their environmental impact depends on (a) Global Warming Potential (GWP), "
"(b) atmospheric lifetime, and (c) the clinical dose required (MAC).", st["body"]))
story.append(Spacer(1, 0.15*cm))
story.append(Paragraph("Comparative Environmental Profile of Volatile Agents", st["subsec"]))
cw6 = [TW/6]*6
gwp = [
[Paragraph("Agent", st["th"]),
Paragraph("GWP (100-yr)", st["th"]),
Paragraph("Atm. Lifetime", st["th"]),
Paragraph("MAC (%)", st["th"]),
Paragraph("Ozone Depletion", st["th"]),
Paragraph("Recommendation", st["th"])],
[Paragraph("Desflurane", bcs("df", RED_DARK)),
Paragraph("~2,500", st["tdc"]),
Paragraph("14 years",st["tdc"]),
Paragraph("6-8%", st["tdc"]),
Paragraph("Negligible",st["tdc"]),
Paragraph("AVOID / Discontinue", bcs("df2", RED_DARK))],
[Paragraph("Nitrous Oxide (N2O)", bcs("n2o", AMBER)),
Paragraph("~265", st["tdc"]),
Paragraph("123 years",st["tdc"]),
Paragraph("~100%", st["tdc"]),
Paragraph("YES - significant", ParagraphStyle("oz", parent=base["Normal"],
fontSize=8.5, textColor=RED_DARK, leading=12, alignment=TA_CENTER)),
Paragraph("Minimize / Avoid", bcs("n2o2", AMBER))],
[Paragraph("Isoflurane", st["tdc"]),
Paragraph("~510", st["tdc"]),
Paragraph("3.2 years",st["tdc"]),
Paragraph("1.2%", st["tdc"]),
Paragraph("Minimal", st["tdc"]),
Paragraph("Use with low-flow", st["tdc"])],
[Paragraph("Sevoflurane", bcs("sv", MID_GREEN)),
Paragraph("~130", st["tdc"]),
Paragraph("1.1 years",st["tdc"]),
Paragraph("2%", st["tdc"]),
Paragraph("Negligible",st["tdc"]),
Paragraph("Preferred volatile", bcs("sv2", MID_GREEN))],
[Paragraph("Xenon (Xe)", bcs("xe", BLUE_DARK)),
Paragraph("~0 (inert)",st["tdc"]),
Paragraph("Inert", st["tdc"]),
Paragraph("~63%", st["tdc"]),
Paragraph("None", st["tdc"]),
Paragraph("Ideal, but costly", bcs("xe2", BLUE_DARK))],
]
gwpt = Table(gwp, colWidths=cw6, repeatRows=1)
gwpt.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), TEAL),
("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, LIGHT_GREY]),
("BOX", (0,0), (-1,-1), 0.8, TEAL),
("INNERGRID", (0,0), (-1,-1), 0.3, colors.HexColor("#B2EBF2")),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 3),
("RIGHTPADDING", (0,0), (-1,-1), 3),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("BACKGROUND", (0,1), (-1,1), RED_LIGHT),
("BACKGROUND", (0,4), (-1,4), colors.HexColor("#E8F5E9")),
]))
story.append(gwpt)
story.append(Spacer(1, 0.3*cm))
# FGF section
story.append(sec_bar(" FRESH GAS FLOW (FGF) MANAGEMENT", TEAL))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph(
"Fresh gas flow is the single most modifiable factor in volatile agent consumption. Reducing FGF dramatically "
"decreases agent waste and costs - without changing the anaesthetic technique.", st["body"]))
story.append(Spacer(1, 0.1*cm))
cw_fgf = [3.5*cm, 3*cm, 2.8*cm, TW - 9.3*cm]
fgf = [
[Paragraph("FGF Technique", st["th"]),
Paragraph("Flow Rate", st["th"]),
Paragraph("Agent Savings", st["th"]),
Paragraph("Notes", st["th"])],
[Paragraph("High-flow (traditional)", st["tdc"]),
Paragraph(">2 L/min", st["tdc"]),
Paragraph("None", ParagraphStyle("ns", parent=base["Normal"],
fontSize=8.5, textColor=RED_DARK, leading=12, alignment=TA_CENTER)),
Paragraph("Avoids rebreathing; no longer recommended routinely.", st["td"])],
[Paragraph("Low-flow", bcs("lf", MID_GREEN)),
Paragraph("0.5-1 L/min", st["tdc"]),
Paragraph("50-70%", bcs("s1", MID_GREEN)),
Paragraph("Recommended by WFSA, AoA, CAS, DGAI.", st["td"])],
[Paragraph("Minimal-flow", bcs("mf", DARK_GREEN)),
Paragraph("0.25-0.5 L/min", st["tdc"]),
Paragraph("80-85%", bcs("s2", DARK_GREEN)),
Paragraph("Requires capnography and gas monitoring; highest savings.", st["td"])],
[Paragraph("Closed-circuit", st["tdc"]),
Paragraph("<0.25 L/min", st["tdc"]),
Paragraph("~95%", bcs("s3", DARK_GREEN)),
Paragraph("Requires full gas monitoring; specialist setting.", st["td"])],
]
fgft = Table(fgf, colWidths=cw_fgf, repeatRows=1)
fgft.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), TEAL),
("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, colors.HexColor("#E0F2F1")]),
("BOX", (0,0), (-1,-1), 0.8, TEAL),
("INNERGRID", (0,0), (-1,-1), 0.3, colors.HexColor("#B2DFDB")),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 5),
("RIGHTPADDING", (0,0), (-1,-1), 5),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(fgft)
story.append(PageBreak())
# ══════════════════════════════════════════════
# PAGE 3 - 6Rs + TIVA + REGIONAL
# ══════════════════════════════════════════════
story.append(sec_bar(" THE 6Rs FRAMEWORK (WFSA)", AMBER))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph(
"The WFSA adapted the sustainability framework of the 6Rs for anaesthetic practice. "
"Each R represents a layer of action, from individual clinician behaviour to systemic change.", st["body"]))
story.append(Spacer(1, 0.1*cm))
cw_rs = [2.3*cm, 5*cm, TW - 7.3*cm]
rs = [
[Paragraph("The 6R", st["th"]),
Paragraph("Anaesthetic Application", st["th"]),
Paragraph("Example Actions", st["th"])],
[Paragraph("1. REFUSE", bcs("r1", RED_DARK)),
Paragraph("Decline high-GWP agents when alternatives exist.", st["td"]),
Paragraph("Refuse desflurane use; decline unnecessary N2O pipelines.", st["td"])],
[Paragraph("2. REDUCE", bcs("r2", AMBER)),
Paragraph("Minimise agent consumption and waste generation.", st["td"]),
Paragraph("Low/minimal FGF; shorter surgical times; targeted drug dosing.", st["td"])],
[Paragraph("3. REUSE", bcs("r3", MID_GREEN)),
Paragraph("Re-process safe, reusable equipment.", st["td"]),
Paragraph("Reusable LMAs, laryngoscopes, breathing circuits; washable drapes.", st["td"])],
[Paragraph("4. RECYCLE", bcs("r4", TEAL)),
Paragraph("Correct waste stream sorting and agent capture.", st["td"]),
Paragraph("Anaesthetic gas capture canisters (e.g., SageTech); segregate sharps and hazardous waste.", st["td"])],
[Paragraph("5. RETHINK", bcs("r5", BLUE_DARK)),
Paragraph("Reassess established practices with an environmental lens.", st["td"]),
Paragraph("Prefer TIVA or regional blocks; ambulatory-first pathways; telemedicine pre-assessment.", st["td"])],
[Paragraph("6. RESEARCH", bcs("r6", PURPLE)),
Paragraph("Generate evidence to guide sustainable practice.", st["td"]),
Paragraph("Carbon footprint audits; LCA studies; efficacy of gas capture devices.", st["td"])],
]
rst = Table(rs, colWidths=cw_rs, repeatRows=1)
rst.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), AMBER),
("ROWBACKGROUNDS", (0,1), (-1,-1), [AMBER_LIGHT, WHITE]),
("BOX", (0,0), (-1,-1), 0.8, AMBER),
("INNERGRID", (0,0), (-1,-1), 0.3, colors.HexColor("#FFCC80")),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
("RIGHTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(rst)
story.append(Spacer(1, 0.3*cm))
# TIVA
story.append(sec_bar(" TIVA AND REGIONAL ANAESTHESIA AS GREEN ALTERNATIVES", BLUE_DARK))
story.append(Spacer(1, 0.2*cm))
# TIVA box (full width)
story.append(info_box(
"Total Intravenous Anaesthesia (TIVA)",
[
"TIVA using propofol + remifentanil/alfentanil eliminates volatile agent emissions entirely at the point of delivery.",
"Propofol is water-soluble and metabolised hepatically - its environmental persistence is far lower than fluorinated volatiles.",
"TIVA is endorsed by WFSA, AoA, and CAS as a primary green strategy.",
"Limitations: propofol vials contain lipid emulsion (disposal concerns); higher direct drug cost; awareness risk if pump failure.",
"Target-Controlled Infusion (TCI) improves precision and reduces drug waste.",
"TIVA carbon footprint is estimated 10-20 times lower than desflurane-based general anaesthesia.",
],
hdr_bg=BLUE_DARK, body_bg=BLUE_LIGHT
))
story.append(Spacer(1, 0.2*cm))
# Regional box (full width)
story.append(info_box(
"Regional and Neuraxial Anaesthesia",
[
"Avoids volatile agents entirely; ideal for orthopaedic, obstetric, urological, and peripheral surgical procedures.",
"Spinal, epidural, and peripheral nerve blocks (ultrasound-guided) all reduce or eliminate GA requirement.",
"Combines well with sedation using low-impact agents such as dexmedetomidine.",
"Additional benefits: better PONV profile, reduced opioid use, faster recovery and earlier discharge - further reducing hospital resource use.",
"Opioid-sparing effect also reduces pharmaceutical waste and patient harm.",
],
hdr_bg=PURPLE, body_bg=PURPLE_LIGHT
))
story.append(PageBreak())
# ══════════════════════════════════════════════
# PAGE 4 - WASTE MANAGEMENT + EQUIPMENT + ENERGY
# ══════════════════════════════════════════════
story.append(sec_bar(" WASTE MANAGEMENT IN THE OPERATING ROOM", MID_GREEN))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph(
"The OR generates enormous volumes of waste. A single surgical case can produce 4-20 kg of waste. "
"Proper segregation is mandatory - misclassified waste significantly inflates incineration costs and emissions.", st["body"]))
story.append(Spacer(1, 0.1*cm))
cw_w = [3*cm, 5.5*cm, TW - 8.5*cm]
waste = [
[Paragraph("Waste Category", st["th"]),
Paragraph("Examples", st["th"]),
Paragraph("Correct Disposal", st["th"])],
[Paragraph("Infectious / Clinical", bcs("wc1", RED_DARK)),
Paragraph("Blood-soaked drapes, sharps, body fluids.", st["td"]),
Paragraph("Yellow bags - high-temp incineration or autoclave.", st["td"])],
[Paragraph("Non-infectious General", st["tdc"]),
Paragraph("Outer packaging, paper wrappers, unopened unused supplies.", st["td"]),
Paragraph("Black/clear bags - general landfill or recycle where possible.", st["td"])],
[Paragraph("Pharmaceutical", bcs("wc3", AMBER)),
Paragraph("Unused drug vials, propofol residues, volatile agent canisters.", st["td"]),
Paragraph("Segregated pharmaceutical waste bins - NOT drain disposal.", st["td"])],
[Paragraph("Anaesthetic Gas", bcs("wc4", PURPLE)),
Paragraph("Exhaled volatiles, waste N2O from machines.", st["td"]),
Paragraph("AGSS (scavenging) systems; capture canisters for post-machine venting.", st["td"])],
[Paragraph("Recyclable Plastics", bcs("wc5", DARK_GREEN)),
Paragraph("Uncontaminated syringes, packaging, LMA packaging.", st["td"]),
Paragraph("Clean recycling stream; remove clinical contact items first.", st["td"])],
]
wt = Table(waste, colWidths=cw_w, repeatRows=1)
wt.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), MID_GREEN),
("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, LIGHT_GREY]),
("BOX", (0,0), (-1,-1), 0.8, MID_GREEN),
("INNERGRID", (0,0), (-1,-1), 0.3, colors.HexColor("#C8E6C9")),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 5),
("RIGHTPADDING", (0,0), (-1,-1), 5),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(wt)
story.append(Spacer(1, 0.3*cm))
# Equipment box (full width)
story.append(sec_bar(" EQUIPMENT: SINGLE-USE vs. REUSABLE", GOLD))
story.append(Spacer(1, 0.1*cm))
story.append(info_box(
"Life Cycle Assessment (LCA) Guidance",
[
"Life Cycle Assessment studies are essential - single-use is NOT automatically greener than reusable.",
"Reusable LMAs, laryngoscopes, and breathing circuits have a substantially lower carbon footprint over their useful life.",
"Key caveat: reprocessing requires energy and water - facility must have efficient sterilisation systems.",
"Packaging waste from single-use items is a major unaddressed contributor to OR waste volume.",
"Recommendation: audit each item using LCA methodology before switching between single-use and reusable.",
],
hdr_bg=GOLD, body_bg=colors.HexColor("#FFFDE7")
))
story.append(Spacer(1, 0.25*cm))
# N2O Pipeline and Energy box (full width)
story.append(sec_bar(" N2O PIPELINE DECOMMISSIONING AND OR ENERGY USE", RED_DARK))
story.append(Spacer(1, 0.1*cm))
story.append(info_box(
"N2O Pipelines and OR Energy - Key Facts",
[
"Operating rooms consume 3-6 times more energy per square metre than any other hospital area.",
"N2O piped systems leak continuously - even when not in clinical use. Studies show pipeline losses of 10-50% of N2O supplied.",
"Decommissioning centralised N2O pipelines and switching to cylinder-on-demand is recommended by UK HAACC, AoA, and others.",
"Energy reduction: smart HVAC controls, LED lighting, and anaesthesia machine standby modes can reduce OR energy use by 20-30%.",
"Turning off the N2O valve at the machine after each list is a simple zero-cost intervention with measurable impact.",
],
hdr_bg=RED_DARK, body_bg=RED_LIGHT
))
story.append(PageBreak())
# ══════════════════════════════════════════════
# PAGE 5 - GUIDELINES + CHECKLIST + FUTURE
# ══════════════════════════════════════════════
story.append(sec_bar(" INTERNATIONAL GUIDELINES SNAPSHOT", PURPLE))
story.append(Spacer(1, 0.15*cm))
cw_gl = [3.5*cm, TW - 3.5*cm]
gl = [
[Paragraph("Organisation", st["th"]),
Paragraph("Key Recommendations", st["th"])],
[Paragraph("WFSA\n(Global, 2022-23)", bcsl("gl1", PURPLE)),
Paragraph("6Rs framework; reduce volatile use; low-flow FGF; carbon footprint tools; education mandate; global equity.", st["td"])],
[Paragraph("AoA\n(UK, 2020)", bcsl("gl2", BLUE_DARK)),
Paragraph("5R approach; avoid desflurane and N2O; use low-flow; promote TIVA and regional; reusable equipment.", st["td"])],
[Paragraph("ASA\n(USA, 2023)", bcsl("gl3", RED_DARK)),
Paragraph("Greening the OR checklist; eliminate desflurane; waste stream management; carbon footprint reporting; LCA for equipment.", st["td"])],
[Paragraph("CAS\n(Canada, 2023)", bcsl("gl4", TEAL)),
Paragraph("Lowest-GWP volatile agents; FGF <1 L/min; eliminate/minimise desflurane and N2O; TIVA/regional preferred; recycling systems.", st["td"])],
[Paragraph("DGAI/BDA\n(Germany, 2020)", bcsl("gl5", MID_GREEN)),
Paragraph("Minimal-flow anaesthesia; avoid desflurane/N2O unless clinically necessary; biodegradable material audit.", st["td"])],
[Paragraph("Practice Greenhealth\n(USA, 2024)", bcsl("gl6", GOLD)),
Paragraph("Eliminate desflurane and N2O; retrofit equipment with waste gas trapping and destruction technology; clinician education.", st["td"])],
]
glt = Table(gl, colWidths=cw_gl, repeatRows=1)
glt.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), PURPLE),
("ROWBACKGROUNDS", (0,1), (-1,-1), [PURPLE_LIGHT, WHITE]),
("BOX", (0,0), (-1,-1), 0.8, PURPLE),
("INNERGRID", (0,0), (-1,-1), 0.3, colors.HexColor("#CE93D8")),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
("RIGHTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(glt)
story.append(Spacer(1, 0.25*cm))
# Checklist as a clean single table
story.append(sec_bar(" PRACTICAL IMPLEMENTATION CHECKLIST FOR CLINICIANS", DARK_GREEN))
story.append(Spacer(1, 0.1*cm))
checklist_rows = [
[Paragraph("Phase", st["th"]), Paragraph("Action Items", st["th"])]
]
phases = [
("Pre-Operative",
["Consider regional/neuraxial anaesthesia as primary technique - discuss with surgeon.",
"Use telemedicine or virtual pre-assessment to reduce travel.",
"Order only what you need - avoid opening unnecessary drug vials or equipment packs.",
"Ensure anaesthetic machine is serviced; check for gas leaks at start of list."],
DARK_GREEN),
("Intra-Operative",
["Select sevoflurane over isoflurane/desflurane when volatile GA is necessary.",
"Target FGF 1 L/min or less after washout phase (first 5-10 min); use minimal-flow where monitored.",
"Use TIVA (propofol-TCI + remifentanil) as default for procedures over 30 min.",
"Avoid routine N2O; only use when clinically indicated.",
"Turn off volatile agent vaporiser when not in use; close N2O valve at machine end."],
TEAL),
("Post-Operative / End-of-List",
["Flush circle system with O2 at end of list to clear residual volatile.",
"Sort waste streams correctly - do not mix regulated medical waste with general waste.",
"Return unused, unopened medications to pharmacy where policy allows.",
"Power down anaesthetic machine completely; use standby mode for multi-list days."],
BLUE_DARK),
("Departmental / Systemic",
["Advocate for desflurane phase-out and N2O pipeline decommissioning.",
"Establish anaesthetic gas capture systems (SageTech or equivalent).",
"Conduct annual carbon footprint audits of the anaesthesia department.",
"Educate trainees and colleagues - green literacy is now a professional competency."],
PURPLE),
]
bg_map = []
row_idx = 1
for phase_name, items, hdr_col in phases:
bullet_text = "\n".join(f" + {item}" for item in items)
combined = Paragraph(
"<br/>".join(f" + {item}" for item in items),
ParagraphStyle(f"chk_{phase_name}", parent=base["Normal"],
fontSize=8.3, textColor=NEAR_BLACK, leading=13)
)
checklist_rows.append([
Paragraph(phase_name, ParagraphStyle(f"ph_{phase_name}", parent=base["Normal"],
fontSize=8.5, textColor=WHITE, fontName="Helvetica-Bold",
leading=13, alignment=TA_CENTER)),
combined
])
bg_map.append((row_idx, hdr_col))
row_idx += 1
ck_t = Table(checklist_rows, colWidths=[3*cm, TW - 3*cm])
ck_style = [
("BACKGROUND", (0,0), (-1,0), DARK_GREEN),
("BOX", (0,0), (-1,-1), 0.8, DARK_GREEN),
("INNERGRID", (0,0), (-1,-1), 0.4, colors.HexColor("#A5D6A7")),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 7),
("RIGHTPADDING", (0,0), (-1,-1), 7),
("VALIGN", (0,0), (-1,-1), "TOP"),
]
for ri, col in bg_map:
ck_style.append(("BACKGROUND", (0, ri), (0, ri), col))
ck_style.append(("BACKGROUND", (1, ri), (1, ri), LIGHT_GREY))
ck_t.setStyle(TableStyle(ck_style))
story.append(ck_t)
story.append(Spacer(1, 0.2*cm))
# Future directions (compact, full width)
story.append(info_box(
" FUTURE DIRECTIONS AND EMERGING DEVELOPMENTS",
[
"Gas Capture Technology: Devices like SageTech Medical's Blue-Zone recycle exhaled volatile agents - potentially reclaiming 90%+ of agent for re-manufacturing.",
"Xenon Anaesthesia: Theoretically zero GWP; ongoing work on economical closed-circuit recycling systems could make it viable at scale.",
"AI-Assisted Dosing: Machine learning models to optimise drug delivery and FGF in real time, minimising waste.",
"Carbon Accounting Tools: Integrated anaesthesia machine software that logs real-time GHG emissions per case.",
"Green Surgical Pathways: Bundled programs combining regional anaesthesia, enhanced recovery, and day-case surgery.",
"Policy: EU and UK regulators moving towards mandatory GHG reporting; desflurane already banned/restricted in several European countries.",
],
hdr_bg=DARK_GREEN, body_bg=colors.HexColor("#F1F8E9")
))
story.append(Spacer(1, 0.2*cm))
story.append(HRFlowable(width="100%", thickness=0.5, color=DARK_GREEN))
story.append(Spacer(1, 0.1*cm))
story.append(Paragraph(
"Sources: WFSA Global Consensus Statement (Anaesthesia, 2022) | AoA Guide to Green Anaesthesia (2020) | "
"ASA Greening the OR (2023) | CAS Guidelines (2023) | DGAI/BDA Position Paper (2020) | "
"Best Practice & Research Clinical Anaesthesiology (2025) | GE HealthCare Clinical View",
st["footer"]
))
# ── Build PDF ──────────────────────────────────────────────────
doc.build(story)
print("PDF created successfully.")
cat > /home/daytona/workspace/green-anesthesia/generate_pdf.py << 'PYEOF' from reportlab.lib.pagesizes import A4 from reportlab.lib import colors from reportlab.lib.units import cm from reportlab.platypus import ( SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable, PageBreak ) from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY DARK_GREEN = colors.HexColor("#1B5E20") MID_GREEN = colors.HexColor("#2E7D32") LIGHT_GREEN = colors.HexColor("#A5D6A7") TEAL = colors.HexColor("#00695C") CYAN_LIGHT = colors.HexColor("#E0F7FA") AMBER = colors.HexColor("#E65100") AMBER_LIGHT = colors.HexColor("#FFF3E0") BLUE_DARK = colors.HexColor("#0D47A1") BLUE_LIGHT = colors.HexColor("#E3F2FD") PURPLE = colors.HexColor("#4A148C") PURPLE_LIGHT = colors.HexColor("#F3E5F5") RED_DARK = colors.HexColor("#B71C1C") RED_LIGHT = colors.HexColor("#FFEBEE") GOLD = colors.HexColor("#F57F17") WHITE = colors.white NEAR_BLACK = colors.HexColor("#1A1A1A") LIGHT_GREY = colors.HexColor("#F5F5F5") DARK_GREY = colors.HexColor("#424242") PAGE_W, PAGE_H = A4 MARGIN = 1.8 * cm TW = PAGE_W - 2 * MARGIN doc = SimpleDocTemplate( "/home/daytona/workspace/green-anesthesia/Green_Anesthesia_Notes.pdf", pagesize=A4, leftMargin=MARGIN, rightMargin=MARGIN, topMargin=MARGIN, bottomMargin=MARGIN, title="Green Anesthesia - Comprehensive Notes", author="Orris AI" ) base = getSampleStyleSheet() def mkS(name, parent="Normal", **kw): return ParagraphStyle(name, parent=base[parent], **kw) st = { "cover_title": mkS("cover_title","Title", fontSize=26, textColor=WHITE, alignment=TA_CENTER, leading=32, spaceAfter=6), "cover_sub": mkS("cover_sub", fontSize=12, textColor=LIGHT_GREEN, alignment=TA_CENTER, leading=17, spaceAfter=4), "cover_tag": mkS("cover_tag", fontSize=9.5, textColor=WHITE, alignment=TA_CENTER, leading=14), "sec_hdr": mkS("sec_hdr", fontSize=12, textColor=WHITE, leading=17, fontName="Helvetica-Bold"), "subsec": mkS("subsec", fontSize=10.5, textColor=DARK_GREEN, leading=15, spaceBefore=7, spaceAfter=3, fontName="Helvetica-Bold"), "body": mkS("body", fontSize=9, textColor=NEAR_BLACK, leading=14, spaceAfter=4, alignment=TA_JUSTIFY), "th": mkS("th", fontSize=8.5, textColor=WHITE, fontName="Helvetica-Bold", alignment=TA_CENTER, leading=12), "td": mkS("td", fontSize=8.5, textColor=NEAR_BLACK, leading=12, alignment=TA_LEFT), "tdc": mkS("tdc", fontSize=8.5, textColor=NEAR_BLACK, leading=12, alignment=TA_CENTER), "box_hdr": mkS("box_hdr", fontSize=9.5, textColor=WHITE, fontName="Helvetica-Bold", alignment=TA_CENTER, leading=14), "box_body": mkS("box_body", fontSize=8.8, textColor=NEAR_BLACK, leading=13, alignment=TA_JUSTIFY), "footer": mkS("footer", fontSize=7, textColor=DARK_GREY, alignment=TA_CENTER), } def sec_bar(title, bg=MID_GREEN): t = Table([[Paragraph(title, st["sec_hdr"])]], colWidths=[TW]) t.setStyle(TableStyle([ ("BACKGROUND",(0,0),(-1,-1),bg), ("TOPPADDING",(0,0),(-1,-1),6),("BOTTOMPADDING",(0,0),(-1,-1),6), ("LEFTPADDING",(0,0),(-1,-1),10),("RIGHTPADDING",(0,0),(-1,-1),10), ])) return t def info_box(title, items, hdr_bg=TEAL, body_bg=CYAN_LIGHT): rows = [[Paragraph(title, st["box_hdr"])]] for item in items: rows.append([Paragraph(item, st["box_body"])]) t = Table(rows, colWidths=[TW]) t.setStyle(TableStyle([ ("BACKGROUND",(0,0),(0,0),hdr_bg), ("BACKGROUND",(0,1),(-1,-1),body_bg), ("BOX",(0,0),(-1,-1),0.8,hdr_bg), ("INNERGRID",(0,0),(-1,-1),0.3,colors.HexColor("#B2DFDB")), ("TOPPADDING",(0,0),(-1,-1),5),("BOTTOMPADDING",(0,0),(-1,-1),4), ("LEFTPADDING",(0,0),(-1,-1),8),("RIGHTPADDING",(0,0),(-1,-1),8), ])) return t def bcs(name, col, align=TA_CENTER): return ParagraphStyle(name, parent=base["Normal"], fontSize=8.5, textColor=col, fontName="Helvetica-Bold", leading=12, alignment=align) story = [] # ===== PAGE 1 ===== cover = Table([ [Paragraph("GREEN ANESTHESIA", st["cover_title"])], [Paragraph("Environmentally Sustainable Anaesthesia Practice", st["cover_sub"])], [Spacer(1,0.3*cm)], [Paragraph("A Comprehensive Reference for Clinicians", st["cover_tag"])], [Spacer(1,0.15*cm)], [Paragraph("June 2026 | Orris AI Notes", st["cover_tag"])], ], colWidths=[TW]) cover.setStyle(TableStyle([ ("BACKGROUND",(0,0),(-1,-1),DARK_GREEN), ("TOPPADDING",(0,0),(-1,-1),16),("BOTTOMPADDING",(0,0),(-1,-1),16), ("LEFTPADDING",(0,0),(-1,-1),14),("RIGHTPADDING",(0,0),(-1,-1),14), ])) story += [cover, Spacer(1,0.4*cm)] story.append(Paragraph( "Green Anesthesia refers to clinical practices, policy frameworks, and cultural shifts in anesthesiology " "aimed at reducing the environmental footprint of perioperative care - without compromising patient safety. " "Healthcare globally accounts for approximately 5% of greenhouse gas (GHG) emissions; anesthesia, " "particularly volatile agents, is a disproportionate contributor. This document synthesises key concepts, " "current international guidelines, practical strategies, and emerging evidence.", st["body"])) story.append(Spacer(1,0.25*cm)) story.append(info_box( " WHY IT MATTERS - Key Statistics", [ "* Healthcare contributes approximately 5% of global GHG emissions (comparable to aviation).", "* Inhalational anaesthetics alone account for approximately 3% of NHS healthcare emissions (UK data).", "* Perioperative services generate approximately 30% of hospital solid waste and most of hospital carbon footprint.", "* Desflurane has a Global Warming Potential (GWP) about 2,500 times that of CO2; sevoflurane about 130x; isoflurane about 510x.", "* Nitrous oxide (N2O) has an atmospheric lifetime of 123 years and is a potent ozone-depleting substance.", "* The WFSA 2022 Global Consensus Statement calls action on green anesthesia a global imperative.", ], hdr_bg=TEAL, body_bg=CYAN_LIGHT)) story.append(Spacer(1,0.25*cm)) story.append(Paragraph("Three Foundational Pillars (WFSA 2022)", st["subsec"])) pillars = [ [Paragraph("Pillar",st["th"]), Paragraph("Core Principle",st["th"])], [Paragraph("Patient Safety First",bcs("p1",DARK_GREEN)), Paragraph("Sustainable practices must NEVER compromise patient safety or clinical outcomes.",st["td"])], [Paragraph("Global Equity",bcs("p2",BLUE_DARK)), Paragraph("High-, middle- and low-income countries should support one another; green anesthesia is not a privilege.",st["td"])], [Paragraph("Institutional Mandate",bcs("p3",AMBER)), Paragraph("Healthcare systems must be mandated and monitored to reduce their contribution to global warming.",st["td"])], ] pt = Table(pillars, colWidths=[4*cm, TW-4*cm]) pt.setStyle(TableStyle([ ("BACKGROUND",(0,0),(-1,0),MID_GREEN), ("ROWBACKGROUNDS",(0,1),(-1,-1),[LIGHT_GREY,BLUE_LIGHT]), ("BOX",(0,0),(-1,-1),0.8,MID_GREEN), ("INNERGRID",(0,0),(-1,-1),0.4,colors.HexColor("#C8E6C9")), ("TOPPADDING",(0,0),(-1,-1),6),("BOTTOMPADDING",(0,0),(-1,-1),6), ("LEFTPADDING",(0,0),(-1,-1),8),("RIGHTPADDING",(0,0),(-1,-1),8), ("VALIGN",(0,0),(-1,-1),"MIDDLE"), ])) story.append(pt) story.append(PageBreak()) # ===== PAGE 2 ===== story.append(sec_bar(" VOLATILE ANAESTHETIC AGENTS AND ENVIRONMENTAL IMPACT", DARK_GREEN)) story.append(Spacer(1,0.2*cm)) story.append(Paragraph( "Volatile halogenated anaesthetics are potent greenhouse gases. Once exhaled and scavenged, they are vented to " "the atmosphere. Their environmental impact depends on (a) Global Warming Potential (GWP), " "(b) atmospheric lifetime, and (c) the clinical dose required (MAC).", st["body"])) story.append(Spacer(1,0.15*cm)) story.append(Paragraph("Comparative Environmental Profile of Volatile Agents", st["subsec"])) cw6 = [TW/6]*6 gwp = [ [Paragraph("Agent",st["th"]),Paragraph("GWP (100-yr)",st["th"]), Paragraph("Atm. Lifetime",st["th"]),Paragraph("MAC (%)",st["th"]), Paragraph("Ozone Depletion",st["th"]),Paragraph("Recommendation",st["th"])], [Paragraph("Desflurane",bcs("df",RED_DARK)), Paragraph("~2,500",st["tdc"]),Paragraph("14 years",st["tdc"]), Paragraph("6-8%",st["tdc"]),Paragraph("Negligible",st["tdc"]), Paragraph("AVOID / Discontinue",bcs("df2",RED_DARK))], [Paragraph("Nitrous Oxide (N2O)",bcs("n2o",AMBER)), Paragraph("~265",st["tdc"]),Paragraph("123 years",st["tdc"]), Paragraph("~100%",st["tdc"]),Paragraph("YES - significant",bcs("oz",RED_DARK)), Paragraph("Minimize / Avoid",bcs("n2o2",AMBER))], [Paragraph("Isoflurane",st["tdc"]), Paragraph("~510",st["tdc"]),Paragraph("3.2 years",st["tdc"]), Paragraph("1.2%",st["tdc"]),Paragraph("Minimal",st["tdc"]), Paragraph("Use with low-flow",st["tdc"])], [Paragraph("Sevoflurane",bcs("sv",MID_GREEN)), Paragraph("~130",st["tdc"]),Paragraph("1.1 years",st["tdc"]), Paragraph("2%",st["tdc"]),Paragraph("Negligible",st["tdc"]), Paragraph("Preferred volatile",bcs("sv2",MID_GREEN))], [Paragraph("Xenon (Xe)",bcs("xe",BLUE_DARK)), Paragraph("~0 (inert)",st["tdc"]),Paragraph("Inert",st["tdc"]), Paragraph("~63%",st["tdc"]),Paragraph("None",st["tdc"]), Paragraph("Ideal, but costly",bcs("xe2",BLUE_DARK))], ] gwpt = Table(gwp, colWidths=cw6, repeatRows=1) gwpt.setStyle(TableStyle([ ("BACKGROUND",(0,0),(-1,0),TEAL), ("ROWBACKGROUNDS",(0,1),(-1,-1),[WHITE,LIGHT_GREY]), ("BOX",(0,0),(-1,-1),0.8,TEAL), ("INNERGRID",(0,0),(-1,-1),0.3,colors.HexColor("#B2EBF2")), ("TOPPADDING",(0,0),(-1,-1),5),("BOTTOMPADDING",(0,0),(-1,-1),5), ("LEFTPADDING",(0,0),(-1,-1),3),("RIGHTPADDING",(0,0),(-1,-1),3), ("VALIGN",(0,0),(-1,-1),"MIDDLE"), ("BACKGROUND",(0,1),(-1,1),RED_LIGHT), ("BACKGROUND",(0,4),(-1,4),colors.HexColor("#E8F5E9")), ])) story.append(gwpt) story.append(Spacer(1,0.3*cm)) story.append(sec_bar(" FRESH GAS FLOW (FGF) MANAGEMENT", TEAL)) story.append(Spacer(1,0.2*cm)) story.append(Paragraph( "Fresh gas flow is the single most modifiable factor in volatile agent consumption. Reducing FGF dramatically " "decreases agent waste and costs - without changing the anaesthetic technique.", st["body"])) story.append(Spacer(1,0.1*cm)) cw_fgf = [3.5*cm, 3*cm, 2.8*cm, TW-9.3*cm] fgf = [ [Paragraph("FGF Technique",st["th"]),Paragraph("Flow Rate",st["th"]), Paragraph("Agent Savings",st["th"]),Paragraph("Notes",st["th"])], [Paragraph("High-flow (traditional)",st["tdc"]),Paragraph(">2 L/min",st["tdc"]), Paragraph("None",bcs("ns",RED_DARK)), Paragraph("Avoids rebreathing; no longer recommended routinely.",st["td"])], [Paragraph("Low-flow",bcs("lf",MID_GREEN)),Paragraph("0.5-1 L/min",st["tdc"]), Paragraph("50-70%",bcs("s1",MID_GREEN)), Paragraph("Recommended by WFSA, AoA, CAS, DGAI.",st["td"])], [Paragraph("Minimal-flow",bcs("mf",DARK_GREEN)),Paragraph("0.25-0.5 L/min",st["tdc"]), Paragraph("80-85%",bcs("s2",DARK_GREEN)), Paragraph("Requires capnography and gas monitoring; highest savings.",st["td"])], [Paragraph("Closed-circuit",st["tdc"]),Paragraph("<0.25 L/min",st["tdc"]), Paragraph("~95%",bcs("s3",DARK_GREEN)), Paragraph("Requires full gas monitoring; specialist setting.",st["td"])], ] fgft = Table(fgf, colWidths=cw_fgf, repeatRows=1) fgft.setStyle(TableStyle([ ("BACKGROUND",(0,0),(-1,0),TEAL), ("ROWBACKGROUNDS",(0,1),(-1,-1),[WHITE,colors.HexColor("#E0F2F1")]), ("BOX",(0,0),(-1,-1),0.8,TEAL), ("INNERGRID",(0,0),(-1,-1),0.3,colors.HexColor("#B2DFDB")), ("TOPPADDING",(0,0),(-1,-1),5),("BOTTOMPADDING",(0,0),(-1,-1),5), ("LEFTPADDING",(0,0),(-1,-1),5),("RIGHTPADDING",(0,0),(-1,-1),5), ("VALIGN",(0,0),(-1,-1),"MIDDLE"), ])) story.append(fgft) story.append(PageBreak()) # ===== PAGE 3 ===== story.append(sec_bar(" THE 6Rs FRAMEWORK (WFSA)", AMBER)) story.append(Spacer(1,0.2*cm)) story.append(Paragraph( "The WFSA adapted the sustainability framework of the 6Rs for anaesthetic practice. " "Each R represents a layer of action, from individual clinician behaviour to systemic change.", st["body"])) story.append(Spacer(1,0.1*cm)) cw_rs = [2.3*cm, 5*cm, TW-7.3*cm] rs = [ [Paragraph("The 6R",st["th"]),Paragraph("Anaesthetic Application",st["th"]),Paragraph("Example Actions",st["th"])], [Paragraph("1. REFUSE",bcs("r1",RED_DARK)), Paragraph("Decline high-GWP agents when alternatives exist.",st["td"]), Paragraph("Refuse desflurane use; decline unnecessary N2O pipelines.",st["td"])], [Paragraph("2. REDUCE",bcs("r2",AMBER)), Paragraph("Minimise agent consumption and waste generation.",st["td"]), Paragraph("Low/minimal FGF; shorter surgical times; targeted drug dosing.",st["td"])], [Paragraph("3. REUSE",bcs("r3",MID_GREEN)), Paragraph("Re-process safe, reusable equipment.",st["td"]), Paragraph("Reusable LMAs, laryngoscopes, breathing circuits; washable drapes.",st["td"])], [Paragraph("4. RECYCLE",bcs("r4",TEAL)), Paragraph("Correct waste stream sorting and agent capture.",st["td"]), Paragraph("Anaesthetic gas capture canisters (e.g., SageTech); segregate sharps and hazardous waste.",st["td"])], [Paragraph("5. RETHINK",bcs("r5",BLUE_DARK)), Paragraph("Reassess established practices with an environmental lens.",st["td"]), Paragraph("Prefer TIVA or regional blocks; ambulatory-first pathways; telemedicine pre-assessment.",st["td"])], [Paragraph("6. RESEARCH",bcs("r6",PURPLE)), Paragraph("Generate evidence to guide sustainable practice.",st["td"]), Paragraph("Carbon footprint audits; LCA studies; efficacy of gas capture devices.",st["td"])], ] rst = Table(rs, colWidths=cw_rs, repeatRows=1) rst.setStyle(TableStyle([ ("BACKGROUND",(0,0),(-1,0),AMBER), ("ROWBACKGROUNDS",(0,1),(-1,-1),[AMBER_LIGHT,WHITE]), ("BOX",(0,0),(-1,-1),0.8,AMBER), ("INNERGRID",(0,0),(-1,-1),0.3,colors.HexColor("#FFCC80")), ("TOPPADDING",(0,0),(-1,-1),5),("BOTTOMPADDING",(0,0),(-1,-1),5), ("LEFTPADDING",(0,0),(-1,-1),6),("RIGHTPADDING",(0,0),(-1,-1),6), ("VALIGN",(0,0),(-1,-1),"MIDDLE"), ])) story.append(rst) story.append(Spacer(1,0.3*cm)) story.append(sec_bar(" TIVA AND REGIONAL ANAESTHESIA AS GREEN ALTERNATIVES", BLUE_DARK)) story.append(Spacer(1,0.2*cm)) story.append(info_box( "Total Intravenous Anaesthesia (TIVA)", [ "TIVA using propofol + remifentanil/alfentanil eliminates volatile agent emissions entirely at the point of delivery.", "Propofol is water-soluble and metabolised hepatically - its environmental persistence is far lower than fluorinated volatiles.", "TIVA is endorsed by WFSA, AoA, and CAS as a primary green strategy.", "Limitations: propofol vials contain lipid emulsion (disposal concerns); higher direct drug cost; awareness risk if pump failure.", "Target-Controlled Infusion (TCI) improves precision and reduces drug waste.", "TIVA carbon footprint is estimated 10-20 times lower than desflurane-based general anaesthesia.", ], hdr_bg=BLUE_DARK, body_bg=BLUE_LIGHT)) story.append(Spacer(1,0.2*cm)) story.append(info_box( "Regional and Neuraxial Anaesthesia", [ "Avoids volatile agents entirely; ideal for orthopaedic, obstetric, urological, and peripheral surgical procedures.", "Spinal, epidural, and peripheral nerve blocks (ultrasound-guided) all reduce or eliminate GA requirement.", "Combines well with sedation using low-impact agents such as dexmedetomidine.", "Additional benefits: better PONV profile, reduced opioid use, faster recovery and earlier discharge.", "Opioid-sparing effect also reduces pharmaceutical waste and patient harm.", ], hdr_bg=PURPLE, body_bg=PURPLE_LIGHT)) story.append(PageBreak()) # ===== PAGE 4 ===== story.append(sec_bar(" WASTE MANAGEMENT IN THE OPERATING ROOM", MID_GREEN)) story.append(Spacer(1,0.2*cm)) story.append(Paragraph( "The OR generates enormous volumes of waste. A single surgical case can produce 4-20 kg of waste. " "Proper segregation is mandatory - misclassified waste significantly inflates incineration costs and emissions.", st["body"])) story.append(Spacer(1,0.1*cm)) cw_w = [3*cm, 5.5*cm, TW-8.5*cm] waste = [ [Paragraph("Waste Category",st["th"]),Paragraph("Examples",st["th"]),Paragraph("Correct Disposal",st["th"])], [Paragraph("Infectious / Clinical",bcs("wc1",RED_DARK)), Paragraph("Blood-soaked drapes, sharps, body fluids.",st["td"]), Paragraph("Yellow bags - high-temp incineration or autoclave.",st["td"])], [Paragraph("Non-infectious General",st["tdc"]), Paragraph("Outer packaging, paper wrappers, unopened unused supplies.",st["td"]), Paragraph("Black/clear bags - general landfill or recycle where possible.",st["td"])], [Paragraph("Pharmaceutical",bcs("wc3",AMBER)), Paragraph("Unused drug vials, propofol residues, volatile agent canisters.",st["td"]), Paragraph("Segregated pharmaceutical waste bins - NOT drain disposal.",st["td"])], [Paragraph("Anaesthetic Gas",bcs("wc4",PURPLE)), Paragraph("Exhaled volatiles, waste N2O from machines.",st["td"]), Paragraph("AGSS (scavenging) systems; capture canisters for post-machine venting.",st["td"])], [Paragraph("Recyclable Plastics",bcs("wc5",DARK_GREEN)), Paragraph("Uncontaminated syringes, packaging, LMA packaging.",st["td"]), Paragraph("Clean recycling stream; remove clinical contact items first.",st["td"])], ] wt = Table(waste, colWidths=cw_w, repeatRows=1) wt.setStyle(TableStyle([ ("BACKGROUND",(0,0),(-1,0),MID_GREEN), ("ROWBACKGROUNDS",(0,1),(-1,-1),[WHITE,LIGHT_GREY]), ("BOX",(0,0),(-1,-1),0.8,MID_GREEN), ("INNERGRID",(0,0),(-1,-1),0.3,colors.HexColor("#C8E6C9")), ("TOPPADDING",(0,0),(-1,-1),5),("BOTTOMPADDING",(0,0),(-1,-1),5), ("LEFTPADDING",(0,0),(-1,-1),5),("RIGHTPADDING",(0,0),(-1,-1),5), ("VALIGN",(0,0),(-1,-1),"MIDDLE"), ])) story.append(wt) story.append(Spacer(1,0.25*cm)) story.append(sec_bar(" EQUIPMENT: SINGLE-USE vs. REUSABLE", GOLD)) story.append(Spacer(1,0.1*cm)) story.append(info_box( "Life Cycle Assessment (LCA) Guidance", [ "Life Cycle Assessment studies are essential - single-use is NOT automatically greener than reusable.", "Reusable LMAs, laryngoscopes, and breathing circuits have a substantially lower carbon footprint over their useful life.", "Key caveat: reprocessing requires energy and water - facility must have efficient sterilisation systems.", "Packaging waste from single-use items is a major unaddressed contributor to OR waste volume.", "Recommendation: audit each item using LCA methodology before switching between single-use and reusable.", ], hdr_bg=GOLD, body_bg=colors.HexColor("#FFFDE7"))) story.append(Spacer(1,0.25*cm)) story.append(sec_bar(" N2O PIPELINE DECOMMISSIONING AND OR ENERGY USE", RED_DARK)) story.append(Spacer(1,0.1*cm)) story.append(info_box( "N2O Pipelines and OR Energy - Key Facts", [ "Operating rooms consume 3-6 times more energy per square metre than any other hospital area.", "N2O piped systems leak continuously - even when not in clinical use. Studies show pipeline losses of 10-50% of N2O supplied.", "Decommissioning centralised N2O pipelines and switching to cylinder-on-demand is recommended by UK HAACC and AoA.", "Energy reduction: smart HVAC controls, LED lighting, and anaesthesia machine standby modes can reduce OR energy use by 20-30%.", "Turning off the N2O valve at the machine after each list is a simple zero-cost intervention with measurable impact.", ], hdr_bg=RED_DARK, body_bg=RED_LIGHT)) story.append(PageBreak()) # ===== PAGE 5 ===== story.append(sec_bar(" INTERNATIONAL GUIDELINES SNAPSHOT", PURPLE)) story.append(Spacer(1,0.15*cm)) cw_gl = [3.2*cm, TW-3.2*cm] gl = [ [Paragraph("Organisation",st["th"]),Paragraph("Key Recommendations",st["th"])], [Paragraph("WFSA\n(Global, 2022-23)",bcs("gl1",PURPLE)), Paragraph("6Rs framework; reduce volatile use; low-flow FGF; carbon footprint measurement tools; education mandate; global equity principle.",st["td"])], [Paragraph("AoA\n(UK, 2020)",bcs("gl2",BLUE_DARK)), Paragraph("5R approach; avoid desflurane and N2O; use low-flow anaesthesia; promote TIVA and regional; encourage reusable equipment.",st["td"])], [Paragraph("ASA\n(USA, 2023)",bcs("gl3",RED_DARK)), Paragraph("Greening the OR checklist; eliminate desflurane; correct waste stream management; carbon footprint reporting; LCA for equipment evaluation.",st["td"])], [Paragraph("CAS\n(Canada, 2023)",bcs("gl4",TEAL)), Paragraph("Lowest-GWP volatile agents; FGF less than 1 L/min; eliminate/minimise desflurane and N2O; TIVA and regional preferred; promote recycling systems.",st["td"])], [Paragraph("DGAI/BDA\n(Germany, 2020)",bcs("gl5",MID_GREEN)), Paragraph("Minimal-flow anaesthesia; avoid desflurane/N2O unless clinically necessary; biodegradable material audit.",st["td"])], [Paragraph("Practice Greenhealth\n(USA, 2024)",bcs("gl6",GOLD)), Paragraph("Eliminate desflurane and N2O; retrofit equipment with waste gas trapping and destruction technology; prioritise clinician education.",st["td"])], ] glt = Table(gl, colWidths=cw_gl, repeatRows=1) glt.setStyle(TableStyle([ ("BACKGROUND",(0,0),(-1,0),PURPLE), ("ROWBACKGROUNDS",(0,1),(-1,-1),[PURPLE_LIGHT,WHITE]), ("BOX",(0,0),(-1,-1),0.8,PURPLE), ("INNERGRID",(0,0),(-1,-1),0.3,colors.HexColor("#CE93D8")), ("TOPPADDING",(0,0),(-1,-1),5),("BOTTOMPADDING",(0,0),(-1,-1),5), ("LEFTPADDING",(0,0),(-1,-1),6),("RIGHTPADDING",(0,0),(-1,-1),6), ("VALIGN",(0,0),(-1,-1),"MIDDLE"), ])) story.append(glt) story.append(Spacer(1,0.2*cm)) story.append(sec_bar(" PRACTICAL IMPLEMENTATION CHECKLIST", DARK_GREEN)) story.append(Spacer(1,0.1*cm)) phases = [ ("Pre-Operative", ["Consider regional/neuraxial anaesthesia as primary technique - discuss with surgeon.", "Use telemedicine or virtual pre-assessment to reduce patient and staff travel.", "Order only what you need - avoid opening unnecessary drug vials or equipment packs.", "Ensure anaesthetic machine is serviced; check for gas leaks at start of list."], DARK_GREEN), ("Intra-Operative", ["Select sevoflurane over isoflurane/desflurane when volatile GA is necessary.", "Target FGF 1 L/min or less after washout phase (first 5-10 min); use minimal-flow where monitored.", "Use TIVA (propofol-TCI + remifentanil) as default for procedures over 30 min.", "Avoid routine N2O; only use when clinically indicated.", "Turn off volatile agent vaporiser when not in use; close N2O valve at machine end."], TEAL), ("Post-Op / End-of-List", ["Flush circle system with O2 at end of list to clear residual volatile.", "Sort waste streams correctly - do not mix regulated medical waste with general waste.", "Return unused, unopened medications to pharmacy where policy allows.", "Power down anaesthetic machine; use standby mode for multi-list days."], BLUE_DARK), ("Departmental / Systemic", ["Advocate for desflurane phase-out and N2O pipeline decommissioning.", "Establish anaesthetic gas capture systems (SageTech or equivalent).", "Conduct annual carbon footprint audits of the anaesthesia department.", "Educate trainees and colleagues - green literacy is now a professional competency."], PURPLE), ] ck_rows = [[Paragraph("Phase",st["th"]), Paragraph("Action Items",st["th"])]] bg_cmds = [("BACKGROUND",(0,0),(-1,0),DARK_GREEN)] ri = 1 for phase_name, items, hdr_col in phases: bullets = "<br/>".join(" + " + i for i in items) ck_rows.append([ Paragraph(phase_name, ParagraphStyle("ph_"+phase_name, parent=base["Normal"], fontSize=8.5, textColor=WHITE, fontName="Helvetica-Bold", leading=13, alignment=TA_CENTER)), Paragraph(bullets, ParagraphStyle("bk_"+phase_name, parent=base["Normal"], fontSize=8.3, textColor=NEAR_BLACK, leading=13)) ]) bg_cmds.append(("BACKGROUND",(0,ri),(0,ri),hdr_col)) bg_cmds.append(("BACKGROUND",(1,ri),(1,ri),LIGHT_GREY)) ri += 1 ck_t = Table(ck_rows, colWidths=[2.8*cm, TW-2.8*cm]) ck_style_list = bg_cmds + [ ("BOX",(0,0),(-1,-1),0.8,DARK_GREEN), ("INNERGRID",(0,0),(-1,-1),0.4,colors.HexColor("#A5D6A7")), ("TOPPADDING",(0,0),(-1,-1),6),("BOTTOMPADDING",(0,0),(-1,-1),6), ("LEFTPADDING",(0,0),(-1,-1),7),("RIGHTPADDING",(0,0),(-1,-1),7), ("VALIGN",(0,0),(-1,-1),"TOP"), ] ck_t.setStyle(TableStyle(ck_style_list)) story.append(ck_t) story.append(Spacer(1,0.2*cm)) story.append(info_box( " FUTURE DIRECTIONS AND EMERGING DEVELOPMENTS", [ "Gas Capture Technology: Devices like SageTech Medical Blue-Zone recycle exhaled volatile agents - potentially reclaiming 90%+ of agent for re-manufacturing.", "Xenon Anaesthesia: Theoretically zero GWP; ongoing work on economical closed-circuit recycling systems could make it viable at scale.", "AI-Assisted Dosing: Machine learning models to optimise drug delivery and FGF in real time, minimising waste.", "Carbon Accounting Tools: Integrated anaesthesia machine software that logs real-time GHG emissions per case.", "Green Surgical Pathways: Bundled programs combining regional anaesthesia, enhanced recovery, and day-case surgery.", "Policy: EU and UK regulators moving towards mandatory GHG reporting; desflurane already banned/restricted in several European countries.", ], hdr_bg=DARK_GREEN, body_bg=colors.HexColor("#F1F8E9"))) story.append(Spacer(1,0.2*cm)) story.append(HRFlowable(width="100%", thickness=0.5, color=DARK_GREEN)) story.append(Spacer(1,0.1*cm)) story.append(Paragraph( "Sources: WFSA Global Consensus Statement (Anaesthesia, 2022) | AoA Guide to Green Anaesthesia (2020) | " "ASA Greening the OR (2023) | CAS Guidelines (2023) | DGAI/BDA Position Paper (2020) | " "Best Practice & Research Clinical Anaesthesiology (2025) | GE HealthCare Clinical View", st["footer"])) doc.build(story) print("PDF created successfully.") PYEOF echo "File written."
cd /home/daytona/workspace/green-anesthesia && python generate_pdf.py 2>&1
ls -lh /home/daytona/workspace/green-anesthesia/Green_Anesthesia_Notes.pdf
Green Anesthesia Notes
PDF Document · PDF
Very good…always give me this kind of PDFs