Send important classifications from general Surgery for a MS GENERAL SURGERY RESIDENT including trauma general surgery, Git, GUT, vascular, endocrine transplant and necessary from. Bailey and love Sabiston fischer schwartz surgery textbook as sources in pdf form

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

mkdir -p /home/daytona/workspace/surgery-classifications && ls /home/daytona/workspace/surgery-classifications/

Writing File

~/surgery-classifications/generate_pdf.py

#!/usr/bin/env python3
"""Generate comprehensive General Surgery Classifications PDF for MS General Surgery Residents."""

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,
    PageBreak, HRFlowable, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import BaseDocTemplate, Frame, PageTemplate
from reportlab.lib.colors import HexColor

# ── Palette ────────────────────────────────────────────────────────────────────
DARK_BLUE   = HexColor("#1a2e4a")   # deep navy – dominant
MID_BLUE    = HexColor("#2c5282")   # section headers
ACCENT_TEAL = HexColor("#2b9e9e")   # table headers / rules
LIGHT_BG    = HexColor("#f0f7ff")   # alternate table row fill
WHITE       = colors.white
BLACK       = colors.black
GRAY_TEXT   = HexColor("#4a4a6a")

OUTPUT = "/home/daytona/workspace/surgery-classifications/General_Surgery_Classifications_MS_Resident.pdf"

# ── Document setup ─────────────────────────────────────────────────────────────
doc = SimpleDocTemplate(
    OUTPUT,
    pagesize=A4,
    topMargin=2.0*cm, bottomMargin=2.0*cm,
    leftMargin=1.8*cm, rightMargin=1.8*cm,
    title="General Surgery Classifications – MS Resident Quick Reference",
    author="Orris Medical Library (Bailey & Love, Sabiston, Fischer, Schwartz)"
)

W = A4[0] - 3.6*cm   # usable width

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

def make_style(name, parent="Normal", **kw):
    s = ParagraphStyle(name, parent=styles[parent], **kw)
    return s

COVER_TITLE   = make_style("CoverTitle",   fontSize=28, textColor=WHITE,    alignment=TA_CENTER, spaceAfter=6,  leading=34, fontName="Helvetica-Bold")
COVER_SUB     = make_style("CoverSub",     fontSize=14, textColor=ACCENT_TEAL, alignment=TA_CENTER, spaceAfter=4, leading=18)
COVER_INFO    = make_style("CoverInfo",    fontSize=10, textColor=HexColor("#c8d8f0"), alignment=TA_CENTER, leading=15)

PART_TITLE    = make_style("PartTitle",    fontSize=18, textColor=WHITE,    alignment=TA_CENTER, spaceAfter=6, leading=24, fontName="Helvetica-Bold")
SECTION_HEAD  = make_style("SectionHead",  fontSize=13, textColor=WHITE,    spaceAfter=4, leading=17, fontName="Helvetica-Bold")
SUBSEC_HEAD   = make_style("SubsecHead",   fontSize=11, textColor=DARK_BLUE, spaceBefore=8, spaceAfter=3, leading=15, fontName="Helvetica-Bold")
BODY          = make_style("Body",         fontSize=9,  textColor=GRAY_TEXT, leading=13, spaceAfter=2, alignment=TA_JUSTIFY)
BODY_BULLET   = make_style("BodyBullet",   fontSize=9,  textColor=GRAY_TEXT, leading=13, spaceAfter=1, leftIndent=12, bulletIndent=4)
SOURCE_TAG    = make_style("SourceTag",    fontSize=7.5,textColor=ACCENT_TEAL, spaceAfter=6, fontName="Helvetica-Oblique")
TH_STYLE      = make_style("TH",           fontSize=9,  textColor=WHITE,    fontName="Helvetica-Bold", alignment=TA_CENTER, leading=12)
TD_STYLE      = make_style("TD",           fontSize=8.5,textColor=GRAY_TEXT, leading=12)
TD_C_STYLE    = make_style("TDC",          fontSize=8.5,textColor=GRAY_TEXT, leading=12, alignment=TA_CENTER)
CAPTION       = make_style("Caption",      fontSize=8,  textColor=HexColor("#888888"), fontName="Helvetica-Oblique", spaceAfter=8)

# ── Helper functions ────────────────────────────────────────────────────────────
def th(text): return Paragraph(text, TH_STYLE)
def td(text): return Paragraph(text, TD_STYLE)
def tdc(text): return Paragraph(text, TD_C_STYLE)

def section_banner(text, color=MID_BLUE):
    tbl = Table([[Paragraph(text, SECTION_HEAD)]], colWidths=[W])
    tbl.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), color),
        ("LEFTPADDING",(0,0),(-1,-1), 10),
        ("RIGHTPADDING",(0,0),(-1,-1), 10),
        ("TOPPADDING",(0,0),(-1,-1), 6),
        ("BOTTOMPADDING",(0,0),(-1,-1), 6),
        ("ROUNDEDCORNERS", [4,4,4,4]),
    ]))
    return tbl

def part_banner(text, color=DARK_BLUE):
    tbl = Table([[Paragraph(text, PART_TITLE)]], colWidths=[W])
    tbl.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), color),
        ("LEFTPADDING",(0,0),(-1,-1), 14),
        ("RIGHTPADDING",(0,0),(-1,-1), 14),
        ("TOPPADDING",(0,0),(-1,-1), 10),
        ("BOTTOMPADDING",(0,0),(-1,-1), 10),
    ]))
    return tbl

def alt_table(headers, rows, col_widths=None, span_first_col=False):
    """Build a styled table with alternating row shading."""
    if col_widths is None:
        col_widths = [W/len(headers)] * len(headers)
    data = [[th(h) for h in headers]]
    for i, row in enumerate(rows):
        data.append([td(cell) if j == 0 else tdc(cell) for j, cell in enumerate(row)])
    tbl = Table(data, colWidths=col_widths, repeatRows=1)
    style_cmds = [
        ("BACKGROUND", (0,0), (-1,0), ACCENT_TEAL),
        ("GRID", (0,0), (-1,-1), 0.4, HexColor("#c0cce0")),
        ("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), "TOP"),
    ]
    for i in range(1, len(data)):
        if i % 2 == 0:
            style_cmds.append(("BACKGROUND", (0,i), (-1,i), LIGHT_BG))
        else:
            style_cmds.append(("BACKGROUND", (0,i), (-1,i), WHITE))
    tbl.setStyle(TableStyle(style_cmds))
    return tbl

def source(text):
    return Paragraph(f"■ Source: {text}", SOURCE_TAG)

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

def sp(n=1):
    return Spacer(1, n*3*mm)

def rule():
    return HRFlowable(width=W, thickness=0.5, color=HexColor("#c0cce0"), spaceAfter=4)

# ══════════════════════════════════════════════════════════════════════════════
# CONTENT
# ══════════════════════════════════════════════════════════════════════════════
story = []

# ── COVER PAGE ─────────────────────────────────────────────────────────────────
cover_bg = Table([
    [Paragraph("GENERAL SURGERY", COVER_TITLE)],
    [Paragraph("SURGICAL CLASSIFICATIONS", COVER_TITLE)],
    [sp(2)],
    [Paragraph("MS General Surgery Resident — Quick Reference Guide", COVER_SUB)],
    [sp(1)],
    [Paragraph("Trauma · GIT · GUT · Vascular · Endocrine · Transplant", COVER_SUB)],
    [sp(3)],
    [Paragraph("Sources: Bailey & Love 28th Ed · Sabiston 21st Ed · Fischer 8th Ed · Schwartz 11th Ed", COVER_INFO)],
    [Paragraph("Compiled June 2026 · Orris Medical Library", COVER_INFO)],
], colWidths=[W])
cover_bg.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,-1), DARK_BLUE),
    ("TOPPADDING", (0,0), (-1,-1), 10),
    ("BOTTOMPADDING",(0,0),(-1,-1), 10),
    ("LEFTPADDING", (0,0), (-1,-1), 20),
    ("RIGHTPADDING", (0,0), (-1,-1), 20),
]))
story.append(cover_bg)
story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════════════════
# PART 1 — TRAUMA SURGERY
# ══════════════════════════════════════════════════════════════════════════════
story.append(part_banner("PART 1 — TRAUMA SURGERY"))
story.append(sp(2))

# 1.1 ATLS Primary Survey
story.append(section_banner("1.1  ATLS Primary Survey — ABCDE Approach"))
story.append(source("Bailey & Love 28e; Schwartz 11e"))
story.append(sp(1))
story.append(alt_table(
    ["Step", "Assessment", "Intervention"],
    [
        ["A – Airway", "Patency, obstruction, C-spine protection", "Chin lift, jaw thrust, oropharyngeal airway, RSI intubation"],
        ["B – Breathing", "Ventilation, bilateral air entry, SpO₂", "Needle decompression (tension PTX), chest drain (haemothorax)"],
        ["C – Circulation", "HR, BP, cap refill, haemorrhage control", "IV access × 2, crystalloid/blood, tourniquet, pelvic binder"],
        ["D – Disability", "GCS, pupils, lateralising signs", "Blood glucose, C-spine immobilisation"],
        ["E – Exposure", "Full body exam, temperature", "Log-roll, wound survey, warming blanket"],
    ],
    col_widths=[2.5*cm, 5.5*cm, 8.5*cm]
))
story.append(sp(2))

# 1.2 ATLS Haemorrhagic Shock Classes
story.append(section_banner("1.2  ATLS Classification of Haemorrhagic Shock (Classes I–IV)"))
story.append(source("Bailey & Love 28e; Schwartz 11e Ch.7"))
story.append(sp(1))
story.append(alt_table(
    ["Class", "Blood Loss (mL)", "Blood Loss (%EBV)", "HR", "BP", "RR", "UO (mL/hr)", "CNS / Mental Status"],
    [
        ["I",   "<750",    "<15%",  "<100", "Normal",   "14–20", ">30",  "Slightly anxious"],
        ["II",  "750–1500","15–30%","100–120","Normal/↓","20–30","20–30","Mildly anxious"],
        ["III", "1500–2000","30–40%","120–140","↓↓",     "30–40","5–15", "Anxious, confused"],
        ["IV",  ">2000",   ">40%",  ">140", "Very low", ">35",  "Negligible","Confused, lethargic"],
    ],
    col_widths=[1.5*cm, 2.2*cm, 2.2*cm, 2cm, 2.2cm, 1.8*cm, 2.2*cm, 3.3*cm]
))
story.append(Paragraph("EBV = estimated blood volume (70 mL/kg adult). Class III/IV require immediate blood transfusion.", CAPTION))
story.append(sp(2))

# 1.3 Glasgow Coma Scale
story.append(section_banner("1.3  Glasgow Coma Scale (GCS)"))
story.append(source("Bailey & Love 28e; Schwartz 11e"))
story.append(sp(1))
story.append(alt_table(
    ["Component", "Response", "Score"],
    [
        ["Eye Opening (E)", "Spontaneous / To voice / To pain / None", "4 / 3 / 2 / 1"],
        ["Verbal (V)",      "Orientated / Confused / Inappropriate / Incomprehensible / None", "5 / 4 / 3 / 2 / 1"],
        ["Motor (M)",       "Obeys / Localises / Withdraws / Flexion (decorticate) / Extension (decerebrate) / None", "6 / 5 / 4 / 3 / 2 / 1"],
    ],
    col_widths=[3.5*cm, 10*cm, 3*cm]
))
story.append(Paragraph("Mild TBI: GCS 14–15 | Moderate: 9–13 | Severe: ≤8 (intubate). Max = 15; Min = 3.", CAPTION))
story.append(sp(2))

# 1.4 AAST Organ Injury Scales
story.append(section_banner("1.4  AAST Organ Injury Scales (OIS)"))
story.append(source("Schwartz 11e; Fischer 8e; Bailey & Love 28e"))
story.append(sp(1))
story.append(Paragraph("<b>Liver OIS (AAST)</b>", SUBSEC_HEAD))
story.append(alt_table(
    ["Grade", "Description", "Management Principle"],
    [
        ["I",   "Subcapsular haematoma <10% surface area; laceration <1 cm depth", "Non-operative in haemodynamically stable patients"],
        ["II",  "Haematoma 10–50%; laceration 1–3 cm, <10 cm length",              "NOM with CT follow-up"],
        ["III", "Haematoma >50%/expanding; laceration >3 cm depth",                "NOM vs angioembolisation"],
        ["IV",  "Parenchymal disruption 25–75% of hepatic lobe",                   "Angioembolisation or OR; damage control"],
        ["V",   "Parenchymal disruption >75% lobe; juxtahepatic venous injury",    "Damage control; hepatic packing; ICU"],
        ["VI",  "Hepatic avulsion",                                                 "Usually fatal; damage control"],
    ],
    col_widths=[1.5*cm, 8.5*cm, 6.5*cm]
))
story.append(sp(1))

story.append(Paragraph("<b>Spleen OIS (AAST)</b>", SUBSEC_HEAD))
story.append(alt_table(
    ["Grade", "Description", "Management Principle"],
    [
        ["I",   "Subcapsular haematoma <10%; laceration <1 cm depth",          "NOM; serial Hb"],
        ["II",  "Haematoma 10–50%; laceration 1–3 cm, no trabecular vessel",   "NOM with CT"],
        ["III", "Haematoma >50%/expanding; laceration >3 cm/trabecular vessel","NOM vs embolisation"],
        ["IV",  "Laceration involving segmental/hilar vessel → devascularisation >25%","Angioembolisation or splenectomy"],
        ["V",   "Shattered spleen; hilar vascular injury → complete devascularisation","Splenectomy + OPSI prophylaxis"],
    ],
    col_widths=[1.5*cm, 8.5*cm, 6.5*cm]
))
story.append(sp(1))

story.append(Paragraph("<b>Renal OIS (AAST)</b>", SUBSEC_HEAD))
story.append(alt_table(
    ["Grade", "Description"],
    [
        ["I",   "Contusion or contained subcapsular haematoma; no laceration"],
        ["II",  "Haematoma confined to retroperitoneum; laceration <1 cm, no collecting system"],
        ["III", "Laceration >1 cm without collecting system rupture or urinary extravasation"],
        ["IV",  "Laceration through corticomedullary junction into collecting system; main renal artery/vein injury with contained haemorrhage"],
        ["V",   "Shattered kidney; avulsion of renal hilum → devascularised kidney"],
    ],
    col_widths=[1.5*cm, 15*cm]
))
story.append(Paragraph("Source: Fischer's Mastery of Surgery 8e — Staging of Renal Injuries, Table 280.1.", CAPTION))
story.append(sp(2))

# 1.5 Pelvic Fracture
story.append(section_banner("1.5  Pelvic Fracture Classification — Young & Burgess + AO/OTA"))
story.append(source("Sabiston 21e; Schwartz 11e"))
story.append(sp(1))
story.append(alt_table(
    ["Type", "Mechanism", "Description", "Association"],
    [
        ["LC I",  "Lateral compression", "Sacral crush fracture; ipsilateral pubic rami fractures", "Bowel/bladder injury"],
        ["LC II", "Lateral compression", "Iliac wing + ipsilateral anterior ring fracture",        "Head injury most common cause of death"],
        ["LC III","Lateral compression", "LC I or II + contralateral APC (windswept pelvis)",      "Highest mortality; bilateral injury"],
        ["APC I", "Anterior-posterior compression","Symphysis diastasis <2.5 cm; anterior SI stretch","Minimal vascular injury"],
        ["APC II","Anterior-posterior compression","Symphysis >2.5 cm; anterior SI open-book",     "Internal iliac vessel injury; pelvic packing"],
        ["APC III","Anterior-posterior compression","Complete SI joint disruption (hemi-pelvis free)","Major venous + arterial haemorrhage"],
        ["VS",   "Vertical shear","Vertical displacement of hemi-pelvis (Malgaigne fracture)","Lumbosacral plexus injury"],
        ["CM",   "Combined mechanism","Mixed pattern",                                          "Variable"],
    ],
    col_widths=[2*cm, 3.5*cm, 5.5*cm, 5.5*cm]
))
story.append(sp(2))

# 1.6 Spinal Trauma
story.append(section_banner("1.6  Thoracolumbar Injury Classification — Denis Three-Column + TLICS"))
story.append(source("Bailey & Love 28e; Schwartz 11e"))
story.append(sp(1))
story.append(Paragraph("<b>Denis Three-Column Model</b>", SUBSEC_HEAD))
story.append(alt_table(
    ["Column", "Structures Included", "Clinical Relevance"],
    [
        ["Anterior", "ALL + anterior ½ of vertebral body + anterior annulus", "Failure in compression → wedge fracture"],
        ["Middle",   "PLL + posterior ½ of vertebral body + posterior annulus", "Disruption = unstable fracture (key column)"],
        ["Posterior","Pedicles, facets, laminae, ligamentum flavum, SSL/ISL", "Failure in distraction → Chance fracture"],
    ],
    col_widths=[2.5*cm, 8*cm, 6*cm]
))
story.append(sp(1))
story.append(Paragraph("<b>TLICS Score (Thoracolumbar Injury Classification &amp; Severity Score)</b>", SUBSEC_HEAD))
story.append(alt_table(
    ["Domain", "Finding", "Points"],
    [
        ["Morphology", "Compression fracture", "1"],
        ["Morphology", "Burst fracture",       "2"],
        ["Morphology", "Translational/rotational", "3"],
        ["Morphology", "Distraction",          "4"],
        ["PLC integrity","Intact",             "0"],
        ["PLC integrity","Suspected/indeterminate","2"],
        ["PLC integrity","Disrupted",          "3"],
        ["Neurology",  "Intact",               "0"],
        ["Neurology",  "Nerve root injury",    "2"],
        ["Neurology",  "Complete cord injury", "2"],
        ["Neurology",  "Incomplete cord injury","3"],
        ["Neurology",  "Cauda equina",         "3"],
    ],
    col_widths=[4*cm, 8*cm, 4.5*cm]
))
story.append(Paragraph("TLICS ≤3 = non-operative; 4 = either; ≥5 = surgery. PLC = posterior ligamentous complex.", CAPTION))
story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════════════════
# PART 2 — GASTROINTESTINAL SURGERY (GIT)
# ══════════════════════════════════════════════════════════════════════════════
story.append(part_banner("PART 2 — GASTROINTESTINAL SURGERY (GIT)"))
story.append(sp(2))

# 2.1 Upper GI Bleed
story.append(section_banner("2.1  Upper GI Haemorrhage — Rockall & Blatchford Scores"))
story.append(source("Schwartz 11e Ch.26; Bailey & Love 28e"))
story.append(sp(1))
story.append(Paragraph("<b>Rockall Score (pre- and post-endoscopy)</b>", SUBSEC_HEAD))
story.append(alt_table(
    ["Variable", "0", "1", "2", "3"],
    [
        ["Age",             "<60",         "60–79",       "≥80",          "–"],
        ["Shock",           "No shock HR<100, SBP≥100","Tachycardia HR≥100, SBP≥100","Hypotension SBP<100","–"],
        ["Co-morbidity",    "None",        "–",           "CHF/IHD/any major comorbidity","CKD/hepatic failure/metastatic cancer"],
        ["Diagnosis",       "MW tear/no lesion","All others","Upper GI malignancy","–"],
        ["Stigmata of bleed","None/flat spot","–",         "Blood in upper GI, adherent clot, visible vessel","–"],
    ],
    col_widths=[4.5*cm, 3.5*cm, 3.5*cm, 3.5*cm, 2*cm]
))
story.append(Paragraph("Rockall ≤2 = low risk (rebleed <5%, mortality <0.1%). ≥8 = very high risk. Post-endoscopy score >5 = high rebleed risk.", CAPTION))
story.append(sp(1))

story.append(Paragraph("<b>Glasgow-Blatchford Score (pre-endoscopy, identifies need for intervention)</b>", SUBSEC_HEAD))
story.append(alt_table(
    ["Parameter", "Value", "Score"],
    [
        ["BUN (mmol/L)",   "6.5–7.9 / 8–9.9 / 10–24.9 / ≥25",  "2 / 3 / 4 / 6"],
        ["Hb (g/L) – men", "120–129 / 100–119 / <100",           "1 / 3 / 6"],
        ["Hb (g/L) – women","100–119 / <100",                    "1 / 6"],
        ["SBP (mmHg)",     "100–109 / 90–99 / <90",              "1 / 2 / 3"],
        ["Pulse ≥100 bpm", "Yes",                                 "1"],
        ["Melaena",        "Present",                             "1"],
        ["Syncope",        "Present",                             "2"],
        ["Hepatic disease","Present",                             "2"],
        ["Heart failure",  "Present",                             "2"],
    ],
    col_widths=[5*cm, 7*cm, 4.5*cm]
))
story.append(Paragraph("GBS 0 = low risk (outpatient safe). GBS ≥6 = high risk; needs endoscopy. Max = 23.", CAPTION))
story.append(sp(2))

# 2.2 Peptic Ulcer - Forrest
story.append(section_banner("2.2  Peptic Ulcer Bleeding — Forrest Classification"))
story.append(source("Bailey & Love 28e; Fischer 8e"))
story.append(sp(1))
story.append(alt_table(
    ["Forrest Class", "Endoscopic Finding", "Rebleed Risk", "Management"],
    [
        ["Ia",  "Spurting arterial haemorrhage",          "~55%",  "Endoscopic haemostasis (dual therapy) + PPI infusion"],
        ["Ib",  "Oozing haemorrhage",                     "~55%",  "Endoscopic haemostasis + PPI"],
        ["IIa", "Non-bleeding visible vessel (NBVV)",     "~43%",  "Endoscopic haemostasis mandatory + PPI"],
        ["IIb", "Adherent clot",                          "~22%",  "Targeted irrigation; consider endotherapy if clot removed"],
        ["IIc", "Flat pigmented spot",                    "~10%",  "PPI; endotherapy usually not needed"],
        ["III", "Clean base ulcer",                       "~5%",   "PPI; early discharge if otherwise low risk"],
    ],
    col_widths=[2.5*cm, 5.5*cm, 2.5*cm, 6*cm]
))
story.append(sp(2))

# 2.3 Oesophageal Cancer
story.append(section_banner("2.3  Oesophageal Cancer — Siewert Classification (GOJ Tumours)"))
story.append(source("Bailey & Love 28e; Sabiston 21e"))
story.append(sp(1))
story.append(alt_table(
    ["Siewert Type", "Location", "Recommended Surgery"],
    [
        ["Type I",  "Adenocarcinoma 1–5 cm above GOJ (Barrett's oesophagus tumour)", "Subtotal oesophagectomy (Ivor-Lewis)"],
        ["Type II", "True cardia carcinoma; 1 cm above to 2 cm below GOJ",           "Extended gastrectomy or oesophagogastrectomy"],
        ["Type III","Subcardial gastric carcinoma 2–5 cm below GOJ",                 "Extended total gastrectomy"],
    ],
    col_widths=[2.5*cm, 7.5*cm, 6.5*cm]
))
story.append(sp(2))

# 2.4 Colorectal Cancer
story.append(section_banner("2.4  Colorectal Cancer Staging — Dukes'/Astler-Coller & AJCC TNM"))
story.append(source("Bailey & Love 28e; Schwartz 11e; Sabiston 21e"))
story.append(sp(1))
story.append(alt_table(
    ["Dukes'", "Astler-Coller", "TNM Stage", "Description", "5-yr Survival"],
    [
        ["A",  "A",  "I (T1–2 N0 M0)", "Confined to bowel wall (mucosa/submucosa)",     "~95%"],
        ["B",  "B1", "II (T3–4 N0 M0)","Extends into muscularis (B1) or through wall (B2)","~85%"],
        ["–",  "B2", "II (T4 N0 M0)",  "Through full thickness ± adjacent organs",       "~70%"],
        ["C",  "C1", "III (any T N1 M0)","Regional lymph node metastases (1–3 nodes)",  "~60%"],
        ["–",  "C2", "III (any T N2 M0)","4+ regional nodes positive",                   "~40%"],
        ["D",  "D",  "IV (any T any N M1)","Distant metastases (most commonly liver)",   "~10%"],
    ],
    col_widths=[1.8*cm, 2.2*cm, 3.5*cm, 6*cm, 2.8*cm]
))
story.append(sp(1))
story.append(Paragraph("<b>T-Stage Detail (AJCC 8th Ed):</b> T1=submucosa; T2=muscularis propria; T3=through MP into pericolorectal tissue; T4a=visceral peritoneum; T4b=adjacent organs.", BODY))
story.append(Paragraph("<b>N-Stage:</b> N1a=1 node; N1b=2–3 nodes; N1c=tumour deposit, no node; N2a=4–6 nodes; N2b=≥7 nodes.", BODY))
story.append(sp(2))

# 2.5 Diverticular Disease
story.append(section_banner("2.5  Acute Diverticulitis — Modified Hinchey Classification"))
story.append(source("Sabiston 21e Table 95.1; Fischer 8e; Bailey & Love 28e"))
story.append(sp(1))
story.append(alt_table(
    ["Stage", "Description", "Treatment"],
    [
        ["0",   "Mild clinical diverticulitis; no CT findings",         "Outpatient antibiotics"],
        ["Ia",  "Pericolic inflammation/phlegmon (confined)",           "IV antibiotics ± admission"],
        ["Ib",  "Pericolic/mesocolic abscess <4 cm",                   "IV antibiotics; consider CT-guided drainage"],
        ["II",  "Pelvic or remote intra-abdominal abscess",            "CT-guided drainage + antibiotics"],
        ["III", "Purulent peritonitis (perforated diverticulum, contained generalized)", "Emergency surgery: laparoscopic lavage or Hartmann's (unstable)"],
        ["IV",  "Faecal peritonitis (free perforation)",               "Emergency Hartmann's or resection + primary anastomosis + defunctioning ileostomy"],
    ],
    col_widths=[1.5*cm, 7.5*cm, 7.5*cm]
))
story.append(sp(2))

# 2.6 Hernia
story.append(section_banner("2.6  Inguinal Hernia — Nyhus & EHS Classifications"))
story.append(source("Bailey & Love 28e; Fischer 8e"))
story.append(sp(1))
story.append(Paragraph("<b>Nyhus Classification</b>", SUBSEC_HEAD))
story.append(alt_table(
    ["Type", "Description"],
    [
        ["I",   "Indirect hernia – internal ring normal size; intact floor (paediatric type)"],
        ["II",  "Indirect – enlarged ring, intact floor, not into scrotum"],
        ["IIIa","Direct inguinal hernia – weakness of posterior wall"],
        ["IIIb","Indirect – massively enlarged ring/posterior wall defect; scrotal/sliding"],
        ["IIIc","Femoral hernia"],
        ["IV",  "Recurrent hernia (a=direct; b=indirect; c=femoral; d=combination)"],
    ],
    col_widths=[2*cm, 14.5*cm]
))
story.append(sp(2))

# 2.7 Pancreatitis
story.append(section_banner("2.7  Acute Pancreatitis — Severity Classifications"))
story.append(source("Schwartz 11e; Bailey & Love 28e; Sabiston 21e"))
story.append(sp(1))
story.append(Paragraph("<b>Atlanta Classification 2012 (Revised)</b>", SUBSEC_HEAD))
story.append(alt_table(
    ["Severity", "Definition"],
    [
        ["Mild",    "No organ failure, no local/systemic complications; usually resolves within 1 week"],
        ["Moderately severe", "Transient organ failure (<48 h) and/or local complications (peripancreatic fluid, necrosis)"],
        ["Severe",  "Persistent organ failure (>48 h) – single or multi-organ; Marshall modified score ≥2 in any system"],
    ],
    col_widths=[3.5*cm, 13*cm]
))
story.append(sp(1))
story.append(Paragraph("<b>Ranson's Criteria</b> (Prognostic scoring)", SUBSEC_HEAD))
story.append(alt_table(
    ["On Admission", "At 48 hours"],
    [
        ["Age >55 years", "Hct drop >10%"],
        ["WBC >16 × 10⁹/L", "BUN rise >1.8 mmol/L"],
        ["Blood glucose >11 mmol/L", "Serum Ca²⁺ <2 mmol/L"],
        ["LDH >350 IU/L", "PaO₂ <60 mmHg"],
        ["AST >250 IU/L", "Base deficit >4 mEq/L"],
        ["–", "Fluid sequestration >6 L"],
    ],
    col_widths=[8*cm, 8.5*cm]
))
story.append(Paragraph("Score ≥3 = severe. Mortality: 0–2 = <1%; 3–4 = ~15%; 5–6 = ~40%; ≥7 = ~100%.", CAPTION))
story.append(sp(1))
story.append(Paragraph("<b>BISAP Score</b> (Bedside Index of Severity in Acute Pancreatitis)", SUBSEC_HEAD))
story.append(alt_table(
    ["Criterion", "Points"],
    [
        ["BUN >25 mg/dL (>8.9 mmol/L)", "1"],
        ["Impaired mental status (GCS <15)", "1"],
        ["SIRS (≥2 of 4 criteria)", "1"],
        ["Age >60 years", "1"],
        ["Pleural effusion on imaging", "1"],
    ],
    col_widths=[12*cm, 4.5*cm]
))
story.append(Paragraph("BISAP ≥3 = high risk for mortality (>10%). Max = 5.", CAPTION))
story.append(sp(2))

# 2.8 Liver
story.append(section_banner("2.8  Liver Disease Severity — Child-Turcotte-Pugh (CTP) Score"))
story.append(source("Sabiston 21e Table 51.1; Fischer 8e; Schwartz 11e"))
story.append(sp(1))
story.append(alt_table(
    ["Parameter", "1 point", "2 points", "3 points"],
    [
        ["Encephalopathy",    "None",         "Grade I–II",           "Grade III–IV"],
        ["Ascites",           "None",         "Mild (controlled)",    "Moderate-severe (refractory)"],
        ["Bilirubin (μmol/L)","<34",          "34–51",                ">51"],
        ["Albumin (g/L)",     ">35",          "28–35",                "<28"],
        ["PT prolongation (s)","<4",          "4–6",                  ">6"],
    ],
    col_widths=[5*cm, 3.5*cm, 3.5*cm, 4.5*cm]
))
story.append(Paragraph("Class A = 5–6 pts (low risk); Class B = 7–9 pts (moderate); Class C = 10–15 pts (high risk, poor prognosis). Operative mortality: A ~2–10%; B ~10–30%; C ~>50%.", CAPTION))
story.append(sp(2))

# 2.9 HCC
story.append(section_banner("2.9  Hepatocellular Carcinoma — BCLC Staging System"))
story.append(source("Bailey & Love 28e; Sabiston 21e; Schwartz 11e"))
story.append(sp(1))
story.append(alt_table(
    ["BCLC Stage", "Tumour Status", "Liver Function", "Performance Status", "Recommended Treatment"],
    [
        ["0 – Very early", "Single <2 cm", "Child-Pugh A", "PS 0", "Resection or ablation"],
        ["A – Early",      "Single any size or ≤3 nodules <3 cm", "Child-Pugh A–B", "PS 0", "Resection, ablation, or transplant (Milan criteria)"],
        ["B – Intermediate","Multinodular, no vascular invasion", "Child-Pugh A–B", "PS 0", "TACE"],
        ["C – Advanced",   "Portal invasion or extrahepatic spread", "Child-Pugh A–B", "PS 1–2", "Sorafenib / systemic therapy"],
        ["D – Terminal",   "Any",           "Child-Pugh C", "PS 3–4", "Best supportive care"],
    ],
    col_widths=[3*cm, 4.5*cm, 2.8*cm, 2.2*cm, 4*cm]
))
story.append(Paragraph("Milan Criteria for transplant: single lesion ≤5 cm, or up to 3 lesions each ≤3 cm, no vascular invasion, no extrahepatic metastases.", CAPTION))
story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════════════════
# PART 3 — GUT (GENITOURINARY TRACT)
# ══════════════════════════════════════════════════════════════════════════════
story.append(part_banner("PART 3 — GENITOURINARY TRACT (GUT)"))
story.append(sp(2))

# 3.1 Renal Cysts
story.append(section_banner("3.1  Renal Cysts — Bosniak Classification"))
story.append(source("Bailey & Love 28e; Sabiston 21e"))
story.append(sp(1))
story.append(alt_table(
    ["Category", "CT Features", "Malignancy Risk", "Management"],
    [
        ["I",     "Simple cyst; hairline thin wall; homogeneous water density; no septa/calcification/enhancement", "<1%",   "No follow-up needed"],
        ["II",    "Few hairline septa; fine calcification; <3 cm perceived solid hyperdense cysts (non-enhancing)", "<3%",   "No follow-up"],
        ["IIF",   "Multiple thin septa; minimally thickened septa; coarse calcification; ≥3 cm non-enhancing","~5–15%","6-month then annual CT × 5 years"],
        ["III",   "Thickened irregular septa/walls; measurable enhancement","~40–60%","Surgical excision"],
        ["IV",    "Clearly malignant; solid enhancing components",          ">85%",  "Nephron-sparing or radical nephrectomy"],
    ],
    col_widths=[1.8*cm, 8.5*cm, 2.5*cm, 3.7*cm]
))
story.append(sp(2))

# 3.2 Bladder Cancer
story.append(section_banner("3.2  Bladder Cancer — TNM Staging & WHO Grade"))
story.append(source("Bailey & Love 28e; Sabiston 21e"))
story.append(sp(1))
story.append(alt_table(
    ["T-Stage", "Description", "Grade (WHO 2004)", "Treatment"],
    [
        ["Ta",   "Non-invasive papillary",                  "Low/High grade", "TURBT ± intravesical BCG/MMC"],
        ["Tis",  "Carcinoma in situ (flat)",                "High grade",     "Intravesical BCG × 6 weeks (maintenance); cystectomy if BCG-refractory"],
        ["T1",   "Invades lamina propria",                  "Usually HG",     "Re-TURBT + BCG"],
        ["T2a",  "Invades superficial muscularis propria",  "–",              "Radical cystectomy or chemoradiotherapy"],
        ["T2b",  "Invades deep muscularis propria",         "–",              "Radical cystectomy (neoadjuvant cisplatin-based chemo)"],
        ["T3",   "Perivesical fat (T3a micro; T3b gross)",  "–",              "Radical cystectomy + neoadjuvant chemo"],
        ["T4a",  "Prostate stroma/uterus/vagina",           "–",              "Multimodal or pelvic exenteration"],
        ["T4b",  "Pelvic wall/abdominal wall",              "–",              "Palliative; consider chemoRT"],
    ],
    col_widths=[1.8*cm, 4.5*cm, 2.5*cm, 7.7*cm]
))
story.append(sp(2))

# 3.3 Prostate
story.append(section_banner("3.3  Prostate Cancer — Gleason Score & D'Amico Risk Groups"))
story.append(source("Bailey & Love 28e; Campbell-Walsh-Wein Urology"))
story.append(sp(1))
story.append(alt_table(
    ["Gleason Score", "ISUP Grade Group", "Histological Pattern", "Significance"],
    [
        ["≤6 (3+3)",    "1", "Well-differentiated glands",             "Low risk; active surveillance preferred"],
        ["7 (3+4)",     "2", "Predominantly well-formed + minor poorly", "Favourable intermediate risk"],
        ["7 (4+3)",     "3", "Predominantly poorly formed + minor well", "Unfavourable intermediate risk"],
        ["8 (4+4/3+5/5+3)", "4", "Poorly formed / fused / cribriform", "High risk"],
        ["9–10 (4+5/5+4/5+5)","5","No gland formation; sheets/single cells","Very high risk; systemic disease common"],
    ],
    col_widths=[3*cm, 2.5*cm, 5*cm, 6*cm]
))
story.append(sp(1))
story.append(Paragraph("<b>D'Amico Risk Stratification:</b>", SUBSEC_HEAD))
story.append(alt_table(
    ["Risk Group", "PSA", "Gleason", "Clinical Stage"],
    [
        ["Low",      "<10 ng/mL",  "≤6 (GG1)",          "T1c–T2a"],
        ["Intermediate","10–20 or","7 (GG2–3)",          "T2b–T2c"],
        ["High",     ">20 ng/mL",  "8–10 (GG4–5)",      "≥T3a"],
    ],
    col_widths=[4*cm, 3.5*cm, 3.5*cm, 5.5*cm]
))
story.append(sp(2))

# 3.4 Renal Cell Carcinoma
story.append(section_banner("3.4  Renal Cell Carcinoma — Robson Staging & Fuhrman Grade"))
story.append(source("Bailey & Love 28e; Sabiston 21e"))
story.append(sp(1))
story.append(alt_table(
    ["Robson Stage", "Description", "5-yr Survival"],
    [
        ["I",    "Tumour confined within renal capsule",                        "~60–70%"],
        ["II",   "Invades perinephric fat but within Gerota's fascia",          "~50–60%"],
        ["IIIa", "Renal vein or vena cava involvement",                        "~35–40%"],
        ["IIIb", "Regional lymph node involvement",                            "~15–35%"],
        ["IIIc", "IIIa + IIIb combined",                                       "~10–20%"],
        ["IVa",  "Adjacent organ invasion (not adrenal)",                      "~5–10%"],
        ["IVb",  "Distant metastases",                                         "~2–5%"],
    ],
    col_widths=[3*cm, 9*cm, 4.5*cm]
))
story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════════════════
# PART 4 — VASCULAR SURGERY
# ══════════════════════════════════════════════════════════════════════════════
story.append(part_banner("PART 4 — VASCULAR SURGERY"))
story.append(sp(2))

# 4.1 PAD
story.append(section_banner("4.1  Peripheral Arterial Disease — Fontaine & Rutherford Classifications"))
story.append(source("Schwartz 11e; Bailey & Love 28e; Fischer 8e"))
story.append(sp(1))
story.append(alt_table(
    ["Fontaine Stage", "Rutherford Category/Grade", "Clinical Description"],
    [
        ["I",    "0 / 0 – Asymptomatic",      "Asymptomatic; ABPI reduced"],
        ["IIa",  "1 / I – Mild claudication",  "Claudication >200 m walking distance"],
        ["IIb",  "2 / I – Moderate claudication","Claudication <200 m; ≥50 m"],
        ["–",    "3 / I – Severe claudication","Claudication <50 m; treadmill incomplete"],
        ["III",  "4 / II – Rest pain",         "Ischaemic rest pain; ABPI <0.4; ankle P <40 mmHg"],
        ["IVa",  "5 / III – Minor tissue loss","Focal ulcer/gangrene not involving heel/metatarsals"],
        ["IVb",  "6 / III – Major tissue loss","Gangrene involving heel/foot; not salvageable"],
    ],
    col_widths=[3*cm, 4.5*cm, 9*cm]
))
story.append(Paragraph("ABPI <0.9 = PAD; <0.5 = severe; <0.3 = critical limb ischaemia. SVS WIfI classification also used for wound/ischaemia/foot infection scoring.", CAPTION))
story.append(sp(2))

# 4.2 Aortic Dissection
story.append(section_banner("4.2  Aortic Dissection — DeBakey & Stanford Classifications"))
story.append(source("Bailey & Love 28e; Sabiston 21e; Schwartz 11e"))
story.append(sp(1))
story.append(alt_table(
    ["Classification", "Type", "Extent", "Treatment"],
    [
        ["DeBakey", "Type I",   "Originates in ascending aorta, propagates to descending (arch + distal)", "Surgical – emergency aortic root/arch repair"],
        ["DeBakey", "Type II",  "Confined to ascending aorta only",                                        "Surgical – ascending aorta replacement"],
        ["DeBakey", "Type III", "Originates in descending aorta, distal to LSCA (IIIa=thoracic; IIIb=thoracoabdominal)", "Medical ± TEVAR"],
        ["Stanford", "Type A",  "Involves ascending aorta (proximal) = DeBakey I + II",                    "Emergency surgery (in-hospital mortality ~25%)"],
        ["Stanford", "Type B",  "Does not involve ascending aorta = DeBakey III",                          "Medical (BB/vasodilator); TEVAR for complicated"],
    ],
    col_widths=[2.5*cm, 2*cm, 7*cm, 5*cm]
))
story.append(Paragraph("Complicated Type B: rupture, malperfusion, uncontrolled hypertension, rapid expansion → TEVAR.", CAPTION))
story.append(sp(2))

# 4.3 AAA
story.append(section_banner("4.3  Aortic Aneurysm — Classification & Crawford TAAA Extent"))
story.append(source("Schwartz 11e; Bailey & Love 28e"))
story.append(sp(1))
story.append(alt_table(
    ["Crawford Extent", "Description", "Significance"],
    [
        ["Extent I",   "Descending thoracic aorta from LSCA to just above coeliac axis", "Low SCI risk"],
        ["Extent II",  "LSCA to infrarenal aorta (most extensive)", "Highest SCI risk; requires CSF drainage + intercostal reimplantation"],
        ["Extent III", "Lower half of descending aorta through infrarenal", "Moderate risk"],
        ["Extent IV",  "Infradiaphragmatic to iliac bifurcation", "Lowest SCI risk; similar to infrarenal AAA"],
        ["Extent V",   "Lower thoracic + suprarenal abdominal (modern addition)", "Intermediate risk"],
    ],
    col_widths=[2.5*cm, 7.5*cm, 6.5*cm]
))
story.append(Paragraph("SCI = spinal cord ischaemia. Intervention threshold: asymptomatic AAA ≥5.5 cm (men), ≥5.0 cm (women), or growth >1 cm/year.", CAPTION))
story.append(sp(2))

# 4.4 Varicose Veins / Venous Disease
story.append(section_banner("4.4  Chronic Venous Disease — CEAP Classification"))
story.append(source("Bailey & Love 28e; Schwartz 11e"))
story.append(sp(1))
story.append(alt_table(
    ["Clinical Class", "Description"],
    [
        ["C0", "No visible/palpable signs of venous disease"],
        ["C1", "Telangiectasias or reticular veins (<3 mm)"],
        ["C2", "Varicose veins ≥3 mm"],
        ["C3", "Oedema without skin changes"],
        ["C4a","Pigmentation or eczema"],
        ["C4b","Lipodermatosclerosis or atrophie blanche"],
        ["C5", "Healed venous ulcer"],
        ["C6", "Active venous ulcer"],
    ],
    col_widths=[2.5*cm, 14*cm]
))
story.append(Paragraph("CEAP also classifies Etiology (Ec/Ep/Es/En), Anatomy (As/Ap/Ad), Pathophysiology (Pr/Po/Pr+o). A = active; s = symptomatic.", CAPTION))
story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════════════════
# PART 5 — ENDOCRINE SURGERY
# ══════════════════════════════════════════════════════════════════════════════
story.append(part_banner("PART 5 — ENDOCRINE SURGERY"))
story.append(sp(2))

# 5.1 Thyroid Cancer
story.append(section_banner("5.1  Thyroid Cancer — Classification & AJCC TNM Staging (8th Ed)"))
story.append(source("Sabiston 21e; Bailey & Love 28e; Schwartz 11e"))
story.append(sp(1))
story.append(Paragraph("<b>WHO Histological Classification</b>", SUBSEC_HEAD))
story.append(alt_table(
    ["Type", "Frequency", "Prognosis", "Key Features"],
    [
        ["Papillary TC (PTC)",       "~80–85%", "Excellent (>95% 10-yr)", "Orphan Annie nuclei; psammoma bodies; RET/PTC; BRAF V600E"],
        ["Follicular TC (FTC)",      "~10–15%", "Good (80–90% 10-yr)",   "Vascular/capsular invasion distinguishes from adenoma; RAS; PAX8-PPAR"],
        ["Hürthle cell TC",          "~3–4%",   "Moderate",              "Oncocytic cells; ↓ radioiodine uptake"],
        ["Medullary TC (MTC)",       "~3–5%",   "Moderate (60–70% 10-yr)","C-cells; ↑calcitonin; RET proto-oncogene (25% familial)"],
        ["Anaplastic TC (ATC)",      "~1–2%",   "Very poor (<6 months)", "Undifferentiated; rapidly lethal; TP53; surgery rarely possible"],
    ],
    col_widths=[3.5*cm, 2.5*cm, 3*cm, 7.5*cm]
))
story.append(sp(1))
story.append(Paragraph("<b>AJCC TNM Staging for Differentiated TC (PTC/FTC) – Age-dependent (8th Ed)</b>", SUBSEC_HEAD))
story.append(alt_table(
    ["Stage", "Age <55 years", "Age ≥55 years"],
    [
        ["I",   "Any T, any N, M0 (all patients <55 without distant mets = Stage I)", "T1–2 N0/Nx M0"],
        ["II",  "Any T, any N, M1 (distant metastases)", "T1–2 N1 M0; T3 any N M0"],
        ["III", "–",              "T4a any N M0"],
        ["IVa", "–",              "T4b any N M0"],
        ["IVb", "–",              "Any T, any N, M1"],
    ],
    col_widths=[2*cm, 8.5*cm, 6*cm]
))
story.append(Paragraph("Key change in AJCC 8e: Age cutoff raised from 45 to 55 years. Most patients <55 are Stage I–II. Medullary TC uses same TNM but without age modifier.", CAPTION))
story.append(sp(2))

# 5.2 Parathyroid
story.append(section_banner("5.2  Primary Hyperparathyroidism — Classification of Causes"))
story.append(source("Bailey & Love 28e; Fischer 8e"))
story.append(sp(1))
story.append(alt_table(
    ["Cause", "Frequency", "Pathology", "Surgery"],
    [
        ["Single adenoma",          "~85–88%", "Benign single-gland disease", "Minimally invasive parathyroidectomy (MIP) with radio-guided/MIBI guidance"],
        ["Double adenoma",          "~2–3%",   "Two enlarged glands",         "Bilateral neck exploration"],
        ["4-gland hyperplasia",     "~10–12%", "All glands enlarged (sporadic or MEN1/2a)", "3.5-gland parathyroidectomy or total PTx + forearm autotransplant"],
        ["Parathyroid carcinoma",   "<1%",     "Malignant; often very high Ca²⁺; palpable neck mass", "En-bloc resection with ipsilateral thyroid lobe"],
    ],
    col_widths=[3.5*cm, 2.3*cm, 5.7*cm, 5*cm]
))
story.append(sp(2))

# 5.3 Adrenal
story.append(section_banner("5.3  Adrenal Tumours — Classification & Pheochromocytoma"))
story.append(source("Bailey & Love 28e; Sabiston 21e; Fischer 8e"))
story.append(sp(1))
story.append(alt_table(
    ["Tumour Type", "Biochemistry", "Imaging Feature", "Surgery"],
    [
        ["Non-functioning adrenal incidentaloma","–","Lipid-rich <10 HU; <4 cm → observe","Adrenalectomy if >4 cm, growth, indeterminate"],
        ["Conn's syndrome (aldosteronoma)","↑Aldosterone; ↓Renin; ARR >30","Unilateral adenoma on CT/adrenal vein sampling","Laparoscopic adrenalectomy (unilateral)"],
        ["Cushing's syndrome (adenoma)","↑24h UFC; ↑late-night salivary; DST non-suppression","ACTH-independent adrenal mass","Laparoscopic adrenalectomy"],
        ["Phaeochromocytoma","↑Urinary/plasma metanephrines (99% sensitivity)","T2-bright on MRI; MIBG scan","Alpha-blockade 2 weeks THEN beta-blockade → laparoscopic adrenalectomy"],
        ["Adrenocortical carcinoma","Cortisol ± androgens",">6 cm; heterogeneous; calcification; lipid-poor >10 HU","Open adrenalectomy + bilateral lymphadenectomy"],
    ],
    col_widths=[3.5*cm, 3.5*cm, 4*cm, 5.5*cm]
))
story.append(sp(2))

# 5.4 MEN Syndromes
story.append(section_banner("5.4  Multiple Endocrine Neoplasia (MEN) Syndromes"))
story.append(source("Bailey & Love 28e; Sabiston 21e; Fischer 8e"))
story.append(sp(1))
story.append(alt_table(
    ["Syndrome", "Gene / Inheritance", "Components (3 Ps / 2 Ps / others)", "Surgical Priority"],
    [
        ["MEN 1 (Wermer's)","MEN1 / AD","Parathyroid hyperplasia (>95%) + Pituitary adenoma + Pancreatic NET (gastrinoma, insulinoma, VIPoma)","Parathyroid first; pancreatic NET based on size/symptoms"],
        ["MEN 2A (Sipple's)","RET proto-oncogene codons 609/611/618/620/634 / AD","MTC (virtually 100%) + Phaeochromocytoma (50%) + Parathyroid hyperplasia (20%)","Prophylactic thyroidectomy by age 5 (C634); phaeo excluded before thyroid surgery"],
        ["MEN 2B","RET codon 918 / AD (or de novo)","MTC (earliest onset, most aggressive) + Phaeo + Mucosal neuromas + Marfanoid habitus","Prophylactic thyroidectomy in infancy (<6 months)"],
        ["MEN 4","CDKN1B / AD","PHPT + Pituitary + Other NETs (similar to MEN1, RET-negative)","Similar approach to MEN1"],
    ],
    col_widths=[2.5*cm, 3.5*cm, 6.5*cm, 4*cm]
))
story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════════════════
# PART 6 — TRANSPLANT SURGERY
# ══════════════════════════════════════════════════════════════════════════════
story.append(part_banner("PART 6 — TRANSPLANT SURGERY"))
story.append(sp(2))

# 6.1 Rejection
story.append(section_banner("6.1  Allograft Rejection — Classification by Timing & Mechanism"))
story.append(source("Sabiston 21e; Schwartz 11e; Fischer 8e"))
story.append(sp(1))
story.append(alt_table(
    ["Type", "Timing", "Mechanism", "Histology", "Treatment"],
    [
        ["Hyperacute",   "Minutes to hours", "Pre-formed donor-specific antibodies (HLA or ABO); complement activation", "Widespread thrombosis; ischaemic necrosis", "Prevention only (cross-match); explant if occurs"],
        ["Acute accelerated","2–5 days",     "Sensitised T-cells (prior sensitisation); combined antibody + cell", "Mixed cellular + vascular injury", "High-dose steroids ± plasmapheresis"],
        ["Acute cellular","Days to 3 months","CD4+/CD8+ T-cell mediated; allorecognition via direct/indirect pathway","Lymphocytic infiltrate; tubulitis (kidney); portal inflammation (liver)","High-dose pulse steroids; Thymoglobulin if steroid-resistant"],
        ["Acute humoral (AMR)","Days to months","Donor-specific antibodies (DSA) post-transplant; C4d deposition","Peritubular capillaritis; C4d+; DSA+","IVIg + plasmapheresis ± rituximab + steroids"],
        ["Chronic rejection","Months to years","Mixed T-cell + antibody; alloimmune + non-immune factors","Fibrosis; intimal hyperplasia; glomerulopathy; obliterative arteriopathy","Prevention; optimise immunosuppression; re-transplantation"],
    ],
    col_widths=[2.5*cm, 2.5*cm, 4*cm, 3.5*cm, 4*cm]
))
story.append(sp(2))

# 6.2 Liver Transplant
story.append(section_banner("6.2  Liver Transplantation — Indications & Milan Criteria"))
story.append(source("Sabiston 21e; Schwartz 11e; Fischer 8e"))
story.append(sp(1))
story.append(Paragraph("<b>MELD Score (Model for End-Stage Liver Disease)</b>", SUBSEC_HEAD))
story.append(Paragraph("MELD = 3.78 × ln[Bilirubin mg/dL] + 11.2 × ln[INR] + 9.57 × ln[Creatinine mg/dL] + 6.43", BODY))
story.append(Paragraph("Score 6–40+. Predicts 90-day mortality without transplant. Allocation in most countries based on MELD score (highest gets priority). MELD-Na adds sodium correction.", BODY))
story.append(sp(1))
story.append(alt_table(
    ["Indication Category", "Examples", "MELD-based or Exception"],
    [
        ["Cirrhosis with decompensation","ETOH cirrhosis; NAFLD; viral hepatitis B/C; PBC; PSC","MELD-based allocation"],
        ["Acute liver failure","Drug-induced (paracetamol); viral; Wilson's; Budd-Chiari; autoimmune","King's College Criteria used for urgency listing"],
        ["HCC","BCLC Stage 0–A within Milan Criteria","MELD exception points granted"],
        ["Cholestatic disease","PBC (EF-PELD); biliary atresia (paediatric)","Disease-specific exception"],
        ["Metabolic disease","Wilson's; A1AT; hereditary haemochromatosis; NASH","MELD-based"],
    ],
    col_widths=[4*cm, 7*cm, 5.5*cm]
))
story.append(sp(1))
story.append(Paragraph("<b>King's College Criteria (Acute Liver Failure — Paracetamol vs. Non-paracetamol)</b>", SUBSEC_HEAD))
story.append(alt_table(
    ["Cause", "Criteria for Listing"],
    [
        ["Paracetamol (acetaminophen)", "pH <7.3 after resuscitation OR (PT >100s + Creatinine >300 μmol/L + Grade III–IV encephalopathy)"],
        ["Non-paracetamol",            "PT >100s alone OR any 3 of: etiology unfavourable (drug/seroneg); age <10 or >40; jaundice-to-encephalopathy >7 days; PT >50s; bilirubin >300 μmol/L"],
    ],
    col_widths=[4.5*cm, 12*cm]
))
story.append(sp(2))

# 6.3 Kidney Transplant
story.append(section_banner("6.3  Kidney Transplant — DGF, Banff Classification"))
story.append(source("Sabiston 21e; Fischer 8e"))
story.append(sp(1))
story.append(Paragraph("<b>Delayed Graft Function (DGF)</b> – need for dialysis in first week post-transplant. Risk factors: DCD donor, prolonged cold ischaemia time (>24 h), donor age >50, donor ATN.", BODY))
story.append(sp(1))
story.append(Paragraph("<b>Banff Classification of Renal Allograft Pathology (2022)</b>", SUBSEC_HEAD))
story.append(alt_table(
    ["Category", "Description"],
    [
        ["1 – Normal",                  "No rejection; normal biopsy or non-specific changes"],
        ["2 – Antibody-mediated change","Subclinical; C4d+ or DSA+ without histological rejection"],
        ["3 – Borderline suspicious",   "Tubulitis (t1–2) without intimal arteritis; insufficient for acute rejection diagnosis"],
        ["4 – T-cell mediated rejection (TCMR)", "Interstitial infiltration + tubulitis (i≥2 + t≥2); or endoarteritis (v≥1)"],
        ["5 – Antibody-mediated rejection (AMR)","Microvascular injury (ptc + g ≥2 total); C4d+; DSA+; Donor-specific antibody evidence"],
        ["6 – Chronic active changes",  "Fibrosis; tubular atrophy; arteriolar hyalinosis; chronic allograft vasculopathy"],
    ],
    col_widths=[4*cm, 12.5*cm]
))
story.append(sp(2))

# 6.4 Immunosuppression
story.append(section_banner("6.4  Transplant Immunosuppression — Standard Protocols"))
story.append(source("Sabiston 21e; Fischer 8e; Schwartz 11e"))
story.append(sp(1))
story.append(alt_table(
    ["Phase", "Agents", "Mechanism", "Key Side Effects"],
    [
        ["Induction","Basiliximab (anti-IL-2Rα) or Thymoglobulin (ATG)","IL-2R blockade or T-cell depletion","↑infection risk (ATG); cytokine release syndrome"],
        ["Maintenance – Calcineurin inhibitor","Tacrolimus (FK506) or Ciclosporin","Inhibit IL-2 production (NFAT pathway)","Nephrotoxicity; hypertension; diabetes (Tac); hirsutism (CsA); neurotoxicity"],
        ["Maintenance – Antimetabolite","Mycophenolate mofetil (MMF) or Azathioprine","Inhibits purine synthesis → ↓lymphocyte proliferation","GI toxicity; leucopaenia; teratogenic"],
        ["Maintenance – Corticosteroids","Prednisolone","Multiple anti-inflammatory mechanisms","Diabetes; hypertension; osteoporosis; Cushing's; wound healing impairment"],
        ["mTOR inhibitors","Sirolimus (rapamycin); Everolimus","Block mTOR → ↓lymphocyte proliferation","Wound healing impairment; hyperlipidaemia; pneumonitis; delayed graft function (avoid early)"],
    ],
    col_widths=[3*cm, 3.5*cm, 4*cm, 6*cm]
))
story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════════════════
# PART 7 — BREAST & SKIN / SOFT TISSUE
# ══════════════════════════════════════════════════════════════════════════════
story.append(part_banner("PART 7 — BREAST, SKIN & SOFT TISSUE"))
story.append(sp(2))

# 7.1 Breast Cancer
story.append(section_banner("7.1  Breast Cancer — TNM Staging (AJCC 8th Ed) & Molecular Subtypes"))
story.append(source("Bailey & Love 28e; Sabiston 21e; Fischer 8e"))
story.append(sp(1))
story.append(alt_table(
    ["Stage", "TNM", "Description"],
    [
        ["Stage 0",  "Tis N0 M0", "DCIS or LCIS"],
        ["Stage IA", "T1 N0 M0",  "Tumour ≤2 cm; no nodes"],
        ["Stage IB", "T0–1 N1mi M0","Micrometastasis (>0.2 mm, ≤2 mm) in 1–3 axillary nodes"],
        ["Stage IIA","T0–1 N1 M0 or T2 N0 M0","Tumour ≤2 cm with 1–3 nodes or T2 ≤5 cm without nodes"],
        ["Stage IIB","T2 N1 M0 or T3 N0 M0","Tumour 2–5 cm + 1–3 nodes or >5 cm no nodes"],
        ["Stage IIIA","T0–3 N2 M0 or T3 N1 M0","4–9 axillary nodes or fixed nodes"],
        ["Stage IIIB","T4 any N M0","Skin/chest wall involvement (peau d'orange, ulceration)"],
        ["Stage IIIC","Any T N3 M0","≥10 nodes or internal mammary / infraclavicular nodes"],
        ["Stage IV", "Any T, any N, M1","Distant metastases"],
    ],
    col_widths=[2.5*cm, 4*cm, 10*cm]
))
story.append(sp(1))
story.append(Paragraph("<b>Molecular Subtypes (St Gallen 2021)</b>", SUBSEC_HEAD))
story.append(alt_table(
    ["Subtype", "ER", "PR", "HER2", "Ki-67", "Treatment"],
    [
        ["Luminal A",         "+", "+", "–", "Low (<20%)", "Endocrine therapy; chemo usually not needed"],
        ["Luminal B (HER2–)", "+", "+/–","–","High (≥20%)","Endocrine ± chemotherapy"],
        ["Luminal B (HER2+)", "+", "+/–","+","Any",        "Endocrine + anti-HER2 + chemo"],
        ["HER2-enriched",     "–", "–", "+","Any",         "Anti-HER2 (trastuzumab) + chemo; no endocrine"],
        ["Triple-negative (TNBC)","–","–","–","Any",       "Chemotherapy backbone; PARP inhibitor if BRCA+; immunotherapy"],
    ],
    col_widths=[3.5*cm, 1.2*cm, 1.2*cm, 1.5*cm, 2.5*cm, 7*cm]
))
story.append(sp(2))

# 7.2 Burns
story.append(section_banner("7.2  Burn Injury — Depth Classification & Wallace Rule of Nines"))
story.append(source("Bailey & Love 28e; Schwartz 11e"))
story.append(sp(1))
story.append(alt_table(
    ["Depth", "Old Term", "Appearance", "Sensation", "Healing", "Management"],
    [
        ["Superficial epidermal", "1st degree",    "Erythema only; no blisters",   "Painful","3–5 days", "Topical; no grafting"],
        ["Superficial dermal",    "Superficial 2nd","Moist blisters; pink/red; blanches","Very painful","7–14 days","Conservative; topical silver sulfadiazine"],
        ["Mid-dermal",            "Mid-2nd",       "Pale/mottled; slows capillary fill","Painful","14–21 days","Consider early grafting if >21-day estimated"],
        ["Deep dermal",           "Deep 2nd",      "White/waxy; fixed staining; no blanch","Reduced pain","Unlikely to heal (<21d)","Split skin grafting"],
        ["Full thickness",        "3rd degree",    "Leathery; white/brown; no capillary fill","Painless","Does not heal","Early excision + SSG or flap"],
        ["Sub-dermal",            "4th degree",    "Charred; muscles/bone involved","Painless","Requires reconstruction/amputation","Debridement ± flap/amputation"],
    ],
    col_widths=[2.8*cm, 2.2*cm, 3.5*cm, 2*cm, 2.5*cm, 3.5*cm]
))
story.append(sp(1))
story.append(Paragraph("<b>Wallace Rule of Nines (adult):</b> Head &amp; neck = 9%; Each arm = 9%; Chest = 9%; Abdomen = 9%; Back of trunk = 2 × 9% = 18%; Each thigh = 9%; Each leg = 9%; Perineum = 1%. Parkland formula: 4 mL/kg/% TBSA of Ringer's lactate in 24 h (½ in first 8 h from time of injury).", BODY))
story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════════════════
# PART 8 — ADDITIONAL KEY CLASSIFICATIONS
# ══════════════════════════════════════════════════════════════════════════════
story.append(part_banner("PART 8 — ADDITIONAL KEY CLASSIFICATIONS"))
story.append(sp(2))

# 8.1 ASA
story.append(section_banner("8.1  ASA Physical Status Classification"))
story.append(source("Bailey & Love 28e; Schwartz 11e"))
story.append(sp(1))
story.append(alt_table(
    ["Class", "Definition", "Example", "30-day Mortality (approx)"],
    [
        ["ASA I",  "Normal healthy patient", "Healthy, non-smoking, no/minimal alcohol use", "<0.1%"],
        ["ASA II", "Mild systemic disease",  "Well-controlled DM/HTN; mild obesity (BMI 30–40); smoker; social drinker; pregnancy", "0.2%"],
        ["ASA III","Severe systemic disease","Poorly controlled DM/HTN; COPD; morbid obesity (BMI ≥40); active hepatitis; ESRD on dialysis; EF 20–35%", "1.8%"],
        ["ASA IV", "Severe systemic disease; constant threat to life","Recent (<3 months) MI/CVA/TIA; sepsis; DIC; ARDS; EF <25%", "7.8%"],
        ["ASA V",  "Moribund – not expected to survive without operation","Ruptured AAA; massive trauma; intracranial bleed with mass effect; ischaemic bowel with multi-organ failure", "9.4%"],
        ["ASA VI", "Brain-dead; organ donation","–", "–"],
    ],
    col_widths=[1.8*cm, 4*cm, 5.5*cm, 3.2*cm]
))
story.append(Paragraph("Suffix 'E' added for emergency procedures (e.g. ASA III-E).", CAPTION))
story.append(sp(2))

# 8.2 Wound Classification
story.append(section_banner("8.2  Surgical Wound Classification (CDC/Altemeier)"))
story.append(source("Schwartz 11e; Bailey & Love 28e"))
story.append(sp(1))
story.append(alt_table(
    ["Class", "Definition", "SSI Risk", "Examples"],
    [
        ["Clean (I)",             "Uninfected wound; no GIT/respiratory/GU tract entry; no break in technique", "1–5%",  "Thyroidectomy; hernia repair; mastectomy; vascular bypass"],
        ["Clean-contaminated (II)","Controlled entry into GIT/respiratory/GU under controlled conditions; minor break in technique", "5–15%", "Elective bowel resection; cholecystectomy; hysterectomy"],
        ["Contaminated (III)",    "Open/traumatic wound; major break in technique; acute inflammation without pus; gross GI spillage", "15–30%","Appendectomy (acute); penetrating abdominal trauma"],
        ["Dirty/infected (IV)",   "Old traumatic wound with devitalised tissue; existing infection; perforated viscus", "30–40%","Hartmann's for faecal peritonitis; abscess drainage; gangrenous bowel"],
    ],
    col_widths=[3.5*cm, 5.5*cm, 2*cm, 5.5*cm]
))
story.append(sp(2))

# 8.3 Anastomotic Leak
story.append(section_banner("8.3  Anastomotic Leak — ISREC/ISGLS Grading"))
story.append(source("Schwartz 11e; Fischer 8e"))
story.append(sp(1))
story.append(alt_table(
    ["Grade", "Description", "Management"],
    [
        ["A (mild)",     "No change in management; defect detectable only on routine imaging; patient well",      "Conservative (antibiotics; NPO); usually self-limiting"],
        ["B (moderate)", "Change in management required but no re-operation; drain placement or endoscopic treatment","Reopening of wound; drain repositioning; endoscopic vacuum (EVT); antibiotics"],
        ["C (severe)",   "Re-operation required",                                                                "Laparotomy; Hartmann's procedure; defunctioning stoma; or resection"],
    ],
    col_widths=[2.5*cm, 7*cm, 7*cm]
))
story.append(sp(2))

# 8.4 Appendicitis
story.append(section_banner("8.4  Acute Appendicitis — Alvarado Score"))
story.append(source("Bailey & Love 28e; Schwartz 11e"))
story.append(sp(1))
story.append(alt_table(
    ["Criterion", "Points"],
    [
        ["Migration of pain to right iliac fossa",    "1"],
        ["Anorexia",                                  "1"],
        ["Nausea / vomiting",                         "1"],
        ["RIF tenderness",                            "2"],
        ["Rebound tenderness (Blumberg sign)",        "1"],
        ["Elevated temperature (>37.3°C)",            "1"],
        ["Leucocytosis (WBC >10 × 10⁹/L)",           "2"],
        ["Shift to left (>75% neutrophils)",          "0 (in MANTRELS; not original Alvarado)"],
    ],
    col_widths=[9*cm, 7.5*cm]
))
story.append(Paragraph("Score 1–4 = unlikely appendicitis (discharge/observe); 5–6 = possible (CT/observation); 7–8 = probable; 9–10 = very likely → theatre. Max = 9 (original) or 10 (MANTRELS variant).", CAPTION))
story.append(sp(2))

# 8.5 Intestinal Obstruction
story.append(section_banner("8.5  Intestinal Obstruction — Classification"))
story.append(source("Bailey & Love 28e; Schwartz 11e"))
story.append(sp(1))
story.append(alt_table(
    ["Type", "Sub-type / Mechanism", "Key Features"],
    [
        ["Mechanical",  "Intraluminal (bezoar, gallstone ileus, foreign body)", "Crescendo-decrescendo colicky pain; distension; vomiting; absolute constipation"],
        ["Mechanical",  "Intramural (Crohn's, Ca, intussusception, TB)",       "±blood PR; subacute presentation common with carcinoma"],
        ["Mechanical",  "Extramural (adhesions, hernia, volvulus, band)",       "Adhesions = most common cause; hernia = most common cause of strangulation"],
        ["Functional (paralytic ileus)","Post-op; electrolyte disturbance; drugs; retroperitoneal haematoma","Silent abdomen; no colic; diffuse distension; all gas pattern"],
        ["Pseudo-obstruction (Ogilvie)","Non-mechanical colonic dilation; post-op/illness","Caecal diameter >12 cm on AXR = risk of perforation; neostigmine 2 mg IV or colonoscopic decompression"],
        ["Strangulation", "Compromised blood supply (closed loop/volvulus/incarcerated hernia)", "↑WBC; ↑lactate; fever; tachycardia; peritonism → emergency surgery"],
    ],
    col_widths=[2.5*cm, 5.5*cm, 8.5*cm]
))
story.append(sp(2))

# 8.6 IBD
story.append(section_banner("8.6  Crohn's Disease — Montreal Classification (Vienna Modified)"))
story.append(source("Sabiston 21e; Fischer 8e"))
story.append(sp(1))
story.append(alt_table(
    ["Domain", "Category", "Definition"],
    [
        ["Age at diagnosis (A)", "A1", "≤16 years"],
        ["", "A2", "17–40 years"],
        ["", "A3", ">40 years"],
        ["Location (L)",         "L1", "Terminal ileum (±limited caecal)"],
        ["", "L2", "Colon"],
        ["", "L3", "Ileocolon"],
        ["", "L4", "Upper GI (add-on to L1–L3)"],
        ["Behaviour (B)",        "B1", "Non-stricturing, non-penetrating (inflammatory)"],
        ["", "B2", "Stricturing"],
        ["", "B3", "Penetrating (fistulating)"],
        ["", "p suffix", "Perianal disease (added to B1–B3 if present)"],
    ],
    col_widths=[3.5*cm, 2*cm, 11*cm]
))
story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════════════════
# REFERENCES
# ══════════════════════════════════════════════════════════════════════════════
story.append(part_banner("REFERENCES & SOURCES"))
story.append(sp(2))
story.append(alt_table(
    ["Textbook", "Edition", "Key Topics Covered"],
    [
        ["Bailey & Love's Short Practice of Surgery","28th Edition (2023), CRC Press","Trauma (ATLS), GIT (diverticulitis, colorectal staging, oesophageal), GUT (renal, bladder), Vascular (aorta, CEAP, PAD), Endocrine (thyroid, parathyroid, adrenal), Burns, Hernia, Wound classification"],
        ["Sabiston Textbook of Surgery","21st Edition (2022), Elsevier","Pelvic fractures, Liver disease (CTP, BCLC, HCC, Milan), Colorectal staging, Crohn's Montreal, Thyroid staging AJCC, Transplant rejection, Immunosuppression, Aortic dissection"],
        ["Fischer's Mastery of Surgery","8th Edition (2019), Wolters Kluwer","AAST renal OIS, Forrest classification, Hinchey classification, Vascular ulcer classification, MEN syndromes, Transplant immunosuppression, MELD/Child-Pugh, BCLC"],
        ["Schwartz's Principles of Surgery","11th Edition (2019), McGraw-Hill","Haemorrhagic shock classes, Rockall/Blatchford scores, Crawford TAAA, TLICS spine, CEAP venous, ASA classification, Wound classification, Anastomotic leak grading, Banff classification"],
    ],
    col_widths=[5*cm, 4*cm, 7.5*cm]
))
story.append(sp(2))
story.append(rule())
story.append(Paragraph("This document was compiled from four authoritative general surgery textbooks available in the Orris Medical Library. All classifications reflect the editions cited above; clinicians should verify against current institutional guidelines and updated editions for any clinical decision-making.", CAPTION))
story.append(Paragraph("Compiled: June 2026 · For educational use by MS General Surgery Residents.", CAPTION))

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

cd /home/daytona/workspace/surgery-classifications && python generate_pdf.py 2>&1

Editing File

~/surgery-classifications/generate_pdf.py

Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/surgery-classifications/generate_pdf.py'
Running Command

cd /home/daytona/workspace/surgery-classifications && python generate_pdf.py 2>&1

Running Command

ls -lh /home/daytona/workspace/surgery-classifications/General_Surgery_Classifications_MS_Resident.pdf

Your PDF is ready. Here is the download link:

General Surgery Classifications MS Resident

PDF Document · PDF


What's Inside (8 Parts, ~30 Classification Systems)

The document is sourced directly from Bailey & Love 28e, Sabiston 21e, Fischer 8e, and Schwartz 11e via the medical library, formatted as color-coded tables with alternating row shading for quick reference.

Part 1 — Trauma Surgery

ClassificationSource
ATLS ABCDE Primary SurveyBailey & Love, Schwartz
ATLS Haemorrhagic Shock Classes I–IV (with HR, BP, UO, CNS)Schwartz
Glasgow Coma Scale (GCS) — Mild/Moderate/Severe TBIBailey & Love
AAST Organ Injury Scales — Liver, Spleen, Kidney (Grades I–VI)Fischer, Schwartz
Young & Burgess Pelvic Fracture (LC/APC/VS/CM)Sabiston
Denis Three-Column Spine Model + TLICS ScoreBailey & Love, Schwartz

Part 2 — GIT Surgery

ClassificationSource
Rockall Score (pre + post endoscopy)Schwartz
Glasgow-Blatchford ScoreSchwartz
Forrest Classification (peptic ulcer bleeding, Class Ia–III)Bailey & Love, Fischer
Siewert Classification (GOJ/oesophageal tumours)Bailey & Love, Sabiston
Dukes'/Astler-Coller + AJCC TNM Colorectal Cancer StagingBailey & Love, Schwartz, Sabiston
Modified Hinchey Classification (diverticulitis, Stage 0–IV)Sabiston, Fischer
Nyhus Classification (inguinal hernia, Types I–IV)Bailey & Love
Atlanta 2012 Pancreatitis Severity + Ranson's Criteria + BISAPSchwartz, Bailey & Love
Child-Turcotte-Pugh (CTP) Score — Class A/B/CSabiston, Fischer
BCLC Staging for HCC + Milan CriteriaBailey & Love, Sabiston

Part 3 — GUT Surgery

ClassificationSource
Bosniak Renal Cyst Classification (I–IV + IIF)Bailey & Love, Sabiston
Bladder Cancer TNM + WHO Grading (Ta/T1/T2–T4)Bailey & Love, Sabiston
Gleason Score + ISUP Grade Groups + D'Amico RiskBailey & Love
Robson Staging (RCC) + Fuhrman gradeBailey & Love

Part 4 — Vascular Surgery

ClassificationSource
Fontaine & Rutherford Classification (PAD, Stages I–IVb)Schwartz, Fischer
DeBakey & Stanford Aortic Dissection (Type I/II/III, A/B)Bailey & Love, Sabiston, Schwartz
Crawford TAAA Extents (I–V)Schwartz, Bailey & Love
CEAP Chronic Venous Disease (C0–C6)Bailey & Love, Schwartz

Part 5 — Endocrine Surgery

ClassificationSource
WHO Thyroid Cancer Classification (PTC/FTC/MTC/ATC)Sabiston, Bailey & Love
AJCC 8th Ed TNM Thyroid Staging (age-dependent, cutoff 55 yrs)Sabiston
Primary Hyperparathyroidism — Adenoma/Hyperplasia/CarcinomaBailey & Love, Fischer
Adrenal Tumours — Conn's/Cushing's/Phaeochromocytoma/ACCBailey & Love, Sabiston
MEN 1 / MEN 2A / MEN 2B / MEN 4 Syndromes + RET codonsBailey & Love, Sabiston, Fischer

Part 6 — Transplant Surgery

ClassificationSource
Allograft Rejection — Hyperacute/Acute Cellular/AMR/ChronicSabiston, Schwartz, Fischer
MELD Score formula + King's College Criteria (ALF)Sabiston, Schwartz
Banff Renal Allograft Pathology Classification (2022, Cat 1–6)Sabiston, Fischer
Transplant Immunosuppression protocol tableSabiston, Fischer, Schwartz

Part 7 — Breast, Skin & Soft Tissue

ClassificationSource
Breast Cancer AJCC 8th Ed TNM (Stage 0–IV)Bailey & Love, Sabiston, Fischer
Molecular Subtypes — Luminal A/B, HER2, TNBC (St Gallen)Fischer
Burn Depth Classification (Superficial to Sub-dermal)Bailey & Love, Schwartz
Wallace Rule of Nines + Parkland FormulaBailey & Love, Schwartz

Part 8 — Additional Key Classifications

ClassificationSource
ASA Physical Status (I–VI) with mortality dataBailey & Love, Schwartz
Surgical Wound Classification CDC/Altemeier (I–IV)Schwartz, Bailey & Love
Anastomotic Leak ISREC Grading (A/B/C)Schwartz, Fischer
Alvarado Score (appendicitis)Bailey & Love, Schwartz
Intestinal Obstruction classification (mechanical/functional/Ogilvie)Bailey & Love, Schwartz
Montreal Classification for Crohn's Disease (A/L/B domains)Sabiston, Fischer
This is a shared conversation. Sign in to Orris to start your own chat.