attachment
attachment

Teach acute

Reading File
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Loading Image
Loading Image
I now have all the content needed. Here is a thorough teaching note on Acute Appendicitis:

šŸ”“ Acute Appendicitis - Complete Teaching Note

Sources: Robbins & Kumar Basic Pathology | Harrison's Principles of Internal Medicine 22E | Bailey & Love's Short Practice of Surgery 28E

1. The Appendix - What You Need to Know First

The appendix is a normal true diverticulum of the cecum - meaning all layers of the bowel wall are present. It is prone to acute and chronic inflammation. Its anatomical position varies considerably:
Regional anatomic variations of the appendix - Harrison's
  • 64% - Retrocaecal (most common - explains why tenderness may be atypical)
  • 32% - Pelvic/descending (explains urinary symptoms, diarrhoea)
  • 2% - Pre-ileal
  • 1% - Post-ileal
  • 0.5% - Subcaecal/paracaecal
Clinical pearl: The position of the appendix directly determines how the patient presents. A retrocaecal appendix may produce very little anterior abdominal wall tenderness.

2. Epidemiology

FeatureDetail
Peak ageTeens and early twenties
Lifetime risk~7% (8.6% males, 6.7% females)
Sex ratioEqual before puberty; 3:2 male:female at age 25
Rarest groupInfants and elderly
TrendIncidence has fallen in Western countries over past 30 years
Risk is higher in low-fibre, high refined carbohydrate diets - paralleling colonic diverticulitis. Incidence is still rising in developing countries adopting a Western diet.
  • Bailey & Love's Short Practice of Surgery 28E, p. 1358-1359

3. Aetiology & Pathogenesis (Step by Step)

The Central Mechanism

Acute appendicitis is initiated by progressive increase in intraluminal pressure that compromises venous outflow. Here is how it unfolds:
Luminal obstruction (faecolith, lymphoid hyperplasia, tumour, parasites, foreign body)
          ↓
Continued mucus secretion + inflammatory exudate → ↑ intraluminal pressure
          ↓
Lymphatic obstruction → Oedema + Mucosal ulceration → Bacterial translocation to submucosa
          ↓
[Resolution can occur here spontaneously or with antibiotics]
          ↓  (if progression)
Venous obstruction → Ischaemia of appendix wall
          ↓
Bacterial invasion through muscularis propria → Transmural inflammation
          ↓
Gangrene → Perforation → Peritonitis / Abscess

Causes of Luminal Obstruction (50-80% of cases)

CauseNotes
Faecolith (appendicolith)Most common - inspissated faecal material + calcium phosphates + bacteria + epithelial debris
Lymphoid hyperplasiaAfter viral infection (especially in children); explains seasonal variation May-August
TumourEspecially caecal carcinoma in middle-aged/elderly patients
Intestinal parasitesEnterobius vermicularis (pinworm), Oxyuris vermicularis
GallstoneRare
StrictureIndicates previous resolved appendicitis
Important: Faecolith is found in ~50% of gangrenous/perforating cases but rarely in simple appendicitis - suggesting these are actually two different disease processes, not simply a spectrum.
  • Robbins & Kumar Basic Pathology, p. 588 | Harrison's 22E | Bailey & Love 28E

4. Pathology - Morphological Progression

Stage 1: Early / Acute Simple Appendicitis

  • Subserosal vessels congested
  • Modest perivascular neutrophilic infiltrate in all layers
  • Serosa becomes dull, granular, erythematous (loses normal glistening)
  • Mucosal neutrophils and focal superficial ulceration
  • Key diagnostic criterion: Neutrophilic infiltration of the muscularis propria

Stage 2: Acute Suppurative Appendicitis

  • Focal abscesses within the wall
  • Appendix appears swollen, tense

Stage 3: Acute Gangrenous Appendicitis

  • Large areas of haemorrhagic ulceration and gangrenous necrosis
  • Extends to the serosa
  • Black/green discolouration

Stage 4: Perforated Appendicitis

  • Rupture → Suppurative peritonitis
  • If contained by omentum/bowel → Periappendiceal abscess or Appendix mass (phlegmon)
  • If free → Generalised peritonitis
  • Rare dread complication: Pylephlebitis (septic thrombosis of portal vein + intrahepatic abscesses)
Pearls for children under 5: The omentum is less well developed, so inflammation is less well contained - they more often present AFTER perforation.
  • Robbins Basic Pathology, p. 588 | Bailey & Love 28E | Harrison's 22E

5. Clinical Features

Classic History (The Sequence Matters)

  1. Vague, crampy periumbilical/epigastric pain (visceral - distension of appendix)
  2. Anorexia (so universal that its absence should make you question the diagnosis)
  3. Nausea (follows pain - distinguishes from gastroenteritis where nausea comes first)
  4. Pain migrates to right iliac fossa over 12-24 hours (somatic - parietal peritoneal irritation)
  5. Low-grade fever (37.3-38.4°C)
  6. Vomiting (usually mild and scant, after pain onset)

Frequency of Symptoms (Harrison's 22E data)

SymptomFrequency
Abdominal pain>95%
Abdominal tenderness>95%
Anorexia>70%
Nausea>65%
Vomiting50-75%
Pain migration to RLQ50-60%
Fever10-20%
Diarrhoea/Constipation4-16% each

Signs on Examination

SignFrequencyDescription
RLQ tenderness>90%-
McBurney's pointClassic1/3 of the way from ASIS to umbilicus (or 2/3 from umbilicus - equivalent)
Rebound tenderness30-70%-
Rectal tenderness30-40%-
Rovsing's sign5%Pressure on LLQ causes pain in RLQ (peritoneal irritation)
Psoas sign3-5%Pain on right hip extension (retrocaecal appendix)
Obturator sign5-10%Pain on internal rotation of right hip (pelvic appendix)
Rigidity~10%-
Palpable mass<5%Appendix mass/phlegmon
Temperature >38.3°C with rigors should raise concern for complications (perforation, abscess) or an alternative diagnosis.

6. Differential Diagnosis

Appendicitis mimics many conditions. Key ones to know:
CategoryConditions
GIMesenteric adenitis, Meckel's diverticulitis, Crohn's disease, diverticulitis, gastroenteritis, SBO
GynaecologicalEctopic pregnancy, PID, ovarian torsion, mittelschmerz, endometriosis
UrologicalUTI, nephrolithiasis
OtherLower lobe pneumonia, cholecystitis, pancreatitis, omental torsion, COVID-19
Pitfall 1: Loose stools + RIF pain → Diagnosed as gastroenteritis, but can be pelvic appendicitis
Pitfall 2: Dysuria + pyuria → Attributed to UTI, but can be a pelvic appendix collection
Pitfall 3: Antibiotics given for any reason can mask signs and delay presentation

7. Investigations

Bloods

  • WBC: Mildly elevated (leucocytosis) - a very high WBC suggests perforation
  • CRP: Elevated, rises with severity and progression
  • Urinalysis: Mild pyuria/haematuria possible with adjacent inflammation (do NOT exclude appendicitis)
  • Beta-hCG: Mandatory in all women of childbearing age

Imaging

  • Ultrasound (USS): First-line in children and pregnant women; operator-dependent; can visualise appendix diameter >6mm, loss of compressibility, periappendiceal fluid
  • CT abdomen/pelvis with contrast: Most accurate (sensitivity ~95%, specificity ~95%); the investigation of choice in most adults
CT scan showing inflamed appendix with appendicoliths (arrow) and periappendiceal fat stranding - Bailey & Love 28E
CT coronal reformat: inflamed, enhancing, enlarged appendix with multiple radiopaque appendicoliths (arrow) and periappendiceal fat stranding
  • MRI: Preferred in pregnancy when USS is non-diagnostic (avoids radiation)

Scoring Systems

Alvarado Score (MANTRELS):
FeatureScore
Migration of pain to RIF1
Anorexia1
Nausea/vomiting1
RIF tenderness2
Rebound tenderness1
Elevated temperature1
Leucocytosis (>10,000)2
Shift to left (neutrophilia)1
Total10
  • Score 1-4: Low risk - observe/discharge
  • Score 5-6: Equivocal - imaging recommended
  • Score 7-10: High risk - surgical referral/appendicectomy

8. Management

Uncomplicated (Simple) Appendicitis

  • IV fluids, analgesia, broad-spectrum antibiotics
  • Laparoscopic appendicectomy - treatment of choice
  • Some mild/uncomplicated cases may resolve with antibiotics alone, though ~1/3 will require appendicectomy subsequently
  • Mortality of simple appendicitis: <1%

Complicated Appendicitis (perforation, abscess, phlegmon, peritonitis)

Appendix mass/phlegmon:
  • Non-operative management: IV antibiotics, bowel rest, monitoring
  • Interval appendicectomy can be considered 6 weeks later (not mandatory)
  • If fails to resolve → CT-guided drainage
Free perforation with peritonitis:
  • Urgent surgery
  • Lavage and washout at time of appendicectomy
Special considerations:
  • Children <5 years: Often present post-perforation; omentum poorly developed; appendix mass may respond to non-operative management
  • Elderly: Cancer of the caecum must always be excluded as a cause

9. Quick Summary Table

FeatureKey Point
DefinitionInflammation of the true cecal diverticulum
Most common ageTeens and young adults
Commonest cause of obstructionFaecolith
Classic pain sequencePeriumbilical → RIF (12-24h)
Most constant symptomAnorexia
Key physical signMcBurney point tenderness
Diagnosis of exclusion testNeutrophils in muscularis propria (histology)
Best imagingCT abdomen/pelvis
TreatmentLaparoscopic appendicectomy
Mortality (simple)<1%
Dreaded complicationPylephlebitis (portal vein septic thrombosis)

Note from your textbook (Robbins Basic Pathology): The diagnosis requires neutrophilic infiltration of the muscularis propria - mucosal neutrophils alone are not sufficient for histological diagnosis.

Risk is higher in low-fibre, high refined carbohydrate diets - paralleling colonic diverticulitis. Incidence is still rising in developing countries adopting a Western diet. What is the meaning of this line

This line is making a dietary-epidemiological observation about appendicitis. Let me break it down simply:

What the line means

Part 1: "Risk is higher in low-fibre, high refined carbohydrate diets"

  • People who eat less fibre (vegetables, fruits, whole grains) and more refined carbs (white bread, sugar, processed food) have a higher chance of getting appendicitis.
  • Why? Low fibre → harder, slower-moving stool → more likely to form a faecolith (hardened stool mass) → blocks the appendix lumen → triggers appendicitis.

Part 2: "Paralleling colonic diverticulitis"

  • This is a comparison. Colonic diverticulitis (outpouchings in the colon that get inflamed) has the exact same dietary risk pattern - low fibre diets cause it too.
  • Both diseases share the same underlying mechanism: hard stool + high luminal pressure + obstruction.
  • So the author is saying: appendicitis and diverticulitis are "diet diseases" in the same way.

Part 3: "Incidence is still rising in developing countries adopting a Western diet"

  • In countries like India, Africa, and parts of Asia - traditionally people ate high-fibre diets (dal, vegetables, whole grains) and appendicitis was rare.
  • But as these countries adopt a "Western diet" (fast food, refined carbs, low fibre) - appendicitis rates are going up.
  • This is direct evidence that diet is a real contributing factor.

Part 4: The paradox (the interesting part)

The line also hints at something puzzling: in Western countries (USA, UK, Europe), appendicitis incidence has actually fallen in the past 30 years - even though they still eat a Western diet. Why? Possibly due to:
  • Improved hygiene reducing gut infections
  • Widespread antibiotic use changing gut flora in childhood
  • Better sanitation reducing parasitic load
So we have two seemingly opposite trends happening at the same time - developing countries getting more appendicitis as they Westernize, while Western countries themselves are getting less. The exact reason for this paradox is still not fully explained.

One-line summary:

What you eat matters - a low-fibre, high-junk-food diet makes appendicitis more likely by promoting hard stool that can block the appendix, and this is now being seen globally as developing nations shift away from traditional high-fibre diets.

Will I get marks if I write all this in my exam of pathology

Great question - honest answer:

What will actually get you marks in a Pathology exam

āœ… Write THIS - these are the mark-scoring points:

TopicWhat examiners want
DefinitionTrue diverticulum of cecum, prone to inflammation
EpidemiologyCommon in adolescents/young adults, lifetime risk 7%, males > females
PathogenesisLuminal obstruction → ↑ intraluminal pressure → venous compromise → ischemia → bacterial proliferation → inflammation
Causes of obstructionFaecolith (most common), lymphoid hyperplasia, worms, tumour
MorphologyEarly → suppurative → gangrenous → perforation (stages)
Key histology pointNeutrophils in muscularis propria = diagnostic
Clinical featuresPeriumbilical pain → RIF, anorexia, nausea, fever, McBurney's point
DifferentialsMesenteric lymphadenitis, ectopic pregnancy, Meckel's diverticulitis
ComplicationsPerforation, peritonitis, abscess, pylephlebitis

āŒ Skip or keep very brief in pathology exam:

  • Alvarado score (that's surgery/medicine)
  • CT imaging details (that's radiology)
  • Laparoscopic technique (that's surgery)
  • The dietary/Western diet discussion (interesting, but not a scoring point in pathology)

šŸ“ What a good pathology exam answer looks like:

A short question (5 marks) wants:
  • Definition + pathogenesis (2 marks)
  • Morphology stages (2 marks)
  • One clinical/complication point (1 mark)
A long question (10 marks) wants:
  • All of the above + differential diagnosis + clinical features + complications

Bottom line:

70% of my teaching note will get you marks. The morphology section, pathogenesis mechanism, and complications are the highest-yield parts for pathology specifically. The surgical management and scoring systems are bonus knowledge - good to know, but your pathology examiner is marking you on what happens to the tissue, not how to operate.
Write clearly, use headings, and always mention "neutrophilic infiltration of muscularis propria" - that one line alone can fetch you a mark.

Create a one-page pathology exam summary for acute appendicitis

Reading File
Running Command

mkdir -p /tmp/workspace/acute-appendicitis && ls /tmp/workspace/

Writing File

~/acute-appendicitis/generate_summary.py

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

OUTPUT = "/tmp/workspace/acute-appendicitis/Acute_Appendicitis_Pathology_Summary.pdf"

# ── Colours ──────────────────────────────────────────────────────────────────
RED       = colors.HexColor("#C0392B")
DARK      = colors.HexColor("#1A1A2E")
LIGHT_RED = colors.HexColor("#FDEDEC")
LIGHT_BG  = colors.HexColor("#F8F9FA")
MID_GRAY  = colors.HexColor("#BDC3C7")
WHITE     = colors.white
ACCENT    = colors.HexColor("#2874A6")

# ── Document ──────────────────────────────────────────────────────────────────
doc = SimpleDocTemplate(
    OUTPUT,
    pagesize=A4,
    leftMargin=12*mm, rightMargin=12*mm,
    topMargin=10*mm, bottomMargin=10*mm,
)

W, H = A4
CONTENT_W = W - 24*mm

# ── Styles ────────────────────────────────────────────────────────────────────
def S(name, **kw):
    return ParagraphStyle(name, **kw)

title_style = S("title",
    fontSize=20, textColor=WHITE, fontName="Helvetica-Bold",
    alignment=TA_CENTER, leading=24, spaceAfter=0)

subtitle_style = S("subtitle",
    fontSize=9, textColor=colors.HexColor("#F8D7DA"), fontName="Helvetica",
    alignment=TA_CENTER, leading=12, spaceAfter=0)

section_style = S("section",
    fontSize=8.5, textColor=WHITE, fontName="Helvetica-Bold",
    alignment=TA_LEFT, leading=11, spaceBefore=0, spaceAfter=0)

body_style = S("body",
    fontSize=7.5, textColor=DARK, fontName="Helvetica",
    leading=10.5, spaceBefore=1, spaceAfter=1)

bold_body = S("bold_body",
    fontSize=7.5, textColor=DARK, fontName="Helvetica-Bold",
    leading=10.5, spaceBefore=1, spaceAfter=1)

key_style = S("key",
    fontSize=7.2, textColor=colors.HexColor("#6C3483"), fontName="Helvetica-Bold",
    leading=10, spaceBefore=1, spaceAfter=1)

footer_style = S("footer",
    fontSize=6.5, textColor=colors.HexColor("#7F8C8D"), fontName="Helvetica-Oblique",
    alignment=TA_CENTER, leading=9)

# ── Helper: section header row ────────────────────────────────────────────────
def sec_header(text, color=RED):
    return Table(
        [[Paragraph(f"  {text}", section_style)]],
        colWidths=[CONTENT_W],
        style=TableStyle([
            ("BACKGROUND", (0,0), (-1,-1), color),
            ("ROWBACKGROUNDS", (0,0), (-1,-1), [color]),
            ("TOPPADDING",    (0,0), (-1,-1), 3),
            ("BOTTOMPADDING", (0,0), (-1,-1), 3),
            ("LEFTPADDING",   (0,0), (-1,-1), 4),
        ])
    )

def p(txt, style=body_style):
    return Paragraph(txt, style)

def bullet(txt, indent=8):
    return Paragraph(f"<bullet>&bull;</bullet> {txt}", 
                     ParagraphStyle("b", parent=body_style, leftIndent=indent, bulletIndent=0))

def spacer(h=2):
    return Spacer(1, h*mm)

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

# ── TITLE BANNER ──────────────────────────────────────────────────────────────
title_table = Table(
    [[Paragraph("ACUTE APPENDICITIS", title_style)],
     [Paragraph("Pathology Exam Summary  •  Robbins | Harrison's | Bailey & Love", subtitle_style)]],
    colWidths=[CONTENT_W],
    style=TableStyle([
        ("BACKGROUND",    (0,0), (-1,-1), RED),
        ("TOPPADDING",    (0,0), (-1,-1), 6),
        ("BOTTOMPADDING", (0,0), (-1,-1), 6),
        ("ROUNDEDCORNERS",(0,0), (-1,-1), [4,4,4,4]),
    ])
)
story += [title_table, spacer(2)]

# ── TWO-COLUMN LAYOUT helper ──────────────────────────────────────────────────
def two_col(left_items, right_items):
    cw = (CONTENT_W - 3*mm) / 2
    t = Table([[left_items, right_items]],
              colWidths=[cw, cw],
              style=TableStyle([
                  ("VALIGN",  (0,0), (-1,-1), "TOP"),
                  ("LEFTPADDING",  (0,0), (-1,-1), 0),
                  ("RIGHTPADDING", (0,0), (-1,-1), 0),
                  ("TOPPADDING",   (0,0), (-1,-1), 0),
                  ("BOTTOMPADDING",(0,0), (-1,-1), 0),
                  ("INNERGRID", (0,0), (-1,-1), 0, WHITE),
              ]))
    return t

# ── LEFT COLUMN content ───────────────────────────────────────────────────────
left = []

# --- DEFINITION & EPIDEMIOLOGY ---
left += [sec_header("1. DEFINITION & EPIDEMIOLOGY"), spacer(1)]
left += [
    bullet("<b>Appendix:</b> Normal <b>true diverticulum</b> of cecum (all wall layers present)"),
    bullet("Most common in <b>adolescents & young adults</b>; peak in teens/early 20s"),
    bullet("Lifetime risk: <b>~7%</b> (males 8.6%, females 6.7%)"),
    bullet("Males > females (3:2 ratio at age 25)"),
    bullet("Rare in infants; incidence declining in Western countries"),
    spacer(2),
]

# --- PATHOGENESIS ---
left += [sec_header("2. PATHOGENESIS"), spacer(1)]
left += [
    p("<b>Central mechanism:</b> Progressive ↑ intraluminal pressure → compromises venous outflow", bold_body),
    spacer(1),
]

# Pathway table
pathway_data = [
    ["Luminal Obstruction"],
    ["↓  Mucus secretion + exudate → ↑ pressure"],
    ["↓  Lymphatic obstruction → Oedema + Mucosal ulceration"],
    ["↓  Bacterial translocation to submucosa"],
    ["↓  Venous obstruction → Ischaemia"],
    ["↓  Bacterial invasion through muscularis"],
    ["↓  Gangrene → PERFORATION"],
]
path_table = Table(
    [[p(row[0], ParagraphStyle("pt", fontSize=7, fontName="Helvetica",
        textColor=DARK, leading=9.5))] for row in pathway_data],
    colWidths=[(CONTENT_W/2)-4*mm],
    style=TableStyle([
        ("BACKGROUND",    (0,0), (0,0), colors.HexColor("#FADBD8")),
        ("BACKGROUND",    (0,6), (0,6), colors.HexColor("#E74C3C")),
        ("TEXTCOLOR",     (0,6), (0,6), WHITE),
        ("FONTNAME",      (0,6), (0,6), "Helvetica-Bold"),
        ("ROWBACKGROUNDS",(0,1), (0,5), [colors.HexColor("#FEF9E7"), colors.HexColor("#FDFEFE")]),
        ("TOPPADDING",    (0,0), (-1,-1), 2),
        ("BOTTOMPADDING", (0,0), (-1,-1), 2),
        ("LEFTPADDING",   (0,0), (-1,-1), 5),
        ("BOX",           (0,0), (-1,-1), 0.5, MID_GRAY),
        ("INNERGRID",     (0,0), (-1,-1), 0.3, MID_GRAY),
    ])
)
left += [path_table, spacer(2)]

# --- CAUSES OF OBSTRUCTION ---
left += [sec_header("3. CAUSES OF LUMINAL OBSTRUCTION", color=ACCENT), spacer(1)]
left += [
    bullet("<b>Faecolith/appendicolith</b> — most common (50-80% of cases)"),
    bullet("<b>Lymphoid hyperplasia</b> — post-viral (esp. children)"),
    bullet("<b>Tumour</b> — caecal carcinoma in middle-aged/elderly"),
    bullet("<b>Parasites</b> — <i>Enterobius vermicularis</i> (pinworm)"),
    bullet("Gallstone, foreign body, stricture (rare)"),
    spacer(1),
    p('<b>Key fact:</b> Faecolith found in ~50% of <i>gangrenous</i> cases but rarely in simple appendicitis — suggesting these are <b>two different disease processes.</b>', key_style),
    spacer(2),
]

# --- DIFFERENTIALS ---
left += [sec_header("6. DIFFERENTIAL DIAGNOSIS", color=ACCENT), spacer(1)]
diff_data = [
    ["GI", "Mesenteric lymphadenitis, Meckel's diverticulitis,\nCrohn's disease, gastroenteritis"],
    ["Gynae", "Ectopic pregnancy, PID, ovarian torsion,\nMittelschmerz, endometriosis"],
    ["Urological", "UTI, nephrolithiasis"],
    ["Other", "Lower lobe pneumonia, omental torsion,\nCholecystitis, pancreatitis"],
]
diff_table = Table(
    [[p(r[0], ParagraphStyle("dc", fontSize=7, fontName="Helvetica-Bold", textColor=RED, leading=9)),
      p(r[1], ParagraphStyle("dv", fontSize=7, fontName="Helvetica", textColor=DARK, leading=9.5))]
     for r in diff_data],
    colWidths=[18*mm, (CONTENT_W/2)-22*mm],
    style=TableStyle([
        ("ROWBACKGROUNDS", (0,0), (-1,-1), [LIGHT_BG, WHITE]),
        ("TOPPADDING",    (0,0), (-1,-1), 2),
        ("BOTTOMPADDING", (0,0), (-1,-1), 2),
        ("LEFTPADDING",   (0,0), (-1,-1), 4),
        ("BOX",           (0,0), (-1,-1), 0.5, MID_GRAY),
        ("INNERGRID",     (0,0), (-1,-1), 0.3, MID_GRAY),
    ])
)
left += [diff_table, spacer(2)]

# ── RIGHT COLUMN content ──────────────────────────────────────────────────────
right = []

# --- MORPHOLOGY ---
right += [sec_header("4. MORPHOLOGY (STAGES)"), spacer(1)]
morph_data = [
    ["Stage", "Features"],
    ["Early / Simple",
     "• Subserosal vessel congestion\n• Neutrophils in all layers\n• Serosa: dull, granular, erythematous\n• Mucosal ulceration\nā˜… DIAGNOSTIC: Neutrophils in muscularis propria"],
    ["Suppurative",
     "• Focal abscesses in wall\n• Appendix tense, swollen, pus-filled"],
    ["Gangrenous",
     "• Haemorrhagic ulceration + necrosis\n• Green-black discolouration\n• Extends to serosa"],
    ["Perforated",
     "• Rupture → peritonitis\n• Contained → abscess/phlegmon\n• Free → generalised peritonitis"],
]
morph_table = Table(
    [[p(r[0], ParagraphStyle("mh", fontSize=7, fontName="Helvetica-Bold",
                              textColor=WHITE if i==0 else RED, leading=9)),
      p(r[1], ParagraphStyle("mb", fontSize=7, fontName="Helvetica",
                              textColor=WHITE if i==0 else DARK, leading=9.5))]
     for i, r in enumerate(morph_data)],
    colWidths=[20*mm, (CONTENT_W/2)-24*mm],
    style=TableStyle([
        ("BACKGROUND",    (0,0), (-1,0), RED),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [LIGHT_RED, WHITE, LIGHT_BG, colors.HexColor("#FDEDEC")]),
        ("TOPPADDING",    (0,0), (-1,-1), 3),
        ("BOTTOMPADDING", (0,0), (-1,-1), 3),
        ("LEFTPADDING",   (0,0), (-1,-1), 4),
        ("BOX",           (0,0), (-1,-1), 0.5, MID_GRAY),
        ("INNERGRID",     (0,0), (-1,-1), 0.3, MID_GRAY),
        ("VALIGN",        (0,0), (-1,-1), "TOP"),
    ])
)
right += [morph_table, spacer(2)]

# --- CLINICAL FEATURES ---
right += [sec_header("5. CLINICAL FEATURES", color=ACCENT), spacer(1)]
right += [
    p("<b>Classic pain sequence (MUST KNOW):</b>", bold_body),
    p("Periumbilical pain (visceral) → Migrates to RIF over 12-24h (somatic, parietal peritoneal irritation)", body_style),
    spacer(1),
]

cf_data = [
    ["Symptom/Sign", "Detail"],
    ["Anorexia", "So constant — absence should question diagnosis"],
    ["Nausea/Vomiting", "Follows pain onset (distinguishes from gastroenteritis)"],
    ["Fever", "Low-grade 37.3–38.4°C; >38.3°C suggests complication"],
    ["McBurney's Point", "2/3 from umbilicus to ASIS; point of max tenderness"],
    ["Rovsing's Sign", "LLQ pressure → RLQ pain (peritoneal irritation)"],
    ["Psoas Sign", "Pain on right hip extension → retrocaecal appendix"],
    ["Obturator Sign", "Pain on internal rotation of right hip → pelvic appendix"],
    ["Rebound Tenderness", "Parietal peritoneal involvement"],
]
cf_table = Table(
    [[p(r[0], ParagraphStyle("ch", fontSize=7, fontName="Helvetica-Bold",
                              textColor=WHITE if i==0 else ACCENT, leading=9)),
      p(r[1], ParagraphStyle("cv", fontSize=7, fontName="Helvetica",
                              textColor=WHITE if i==0 else DARK, leading=9.5))]
     for i, r in enumerate(cf_data)],
    colWidths=[26*mm, (CONTENT_W/2)-30*mm],
    style=TableStyle([
        ("BACKGROUND",    (0,0), (-1,0), ACCENT),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [LIGHT_BG, WHITE]),
        ("TOPPADDING",    (0,0), (-1,-1), 2.5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 2.5),
        ("LEFTPADDING",   (0,0), (-1,-1), 4),
        ("BOX",           (0,0), (-1,-1), 0.5, MID_GRAY),
        ("INNERGRID",     (0,0), (-1,-1), 0.3, MID_GRAY),
        ("VALIGN",        (0,0), (-1,-1), "TOP"),
    ])
)
right += [cf_table, spacer(2)]

# --- COMPLICATIONS ---
right += [sec_header("7. COMPLICATIONS"), spacer(1)]
right += [
    bullet("<b>Perforation</b> — most common complication"),
    bullet("<b>Periappendiceal abscess</b> — contained perforation (omentum)"),
    bullet("<b>Appendix mass/phlegmon</b> — matted loops + omentum + appendix"),
    bullet("<b>Generalised peritonitis</b> — free perforation"),
    bullet("<b>Pylephlebitis</b> — septic portal vein thrombosis + liver abscesses (rare, dreaded)"),
    spacer(1),
    p('<b>Children &lt;5 years:</b> Poorly developed omentum → less contained → often present post-perforation', key_style),
    spacer(2),
]

# --- HIGH-YIELD BOX ---
hiy_data = [
    [p("ā˜…  HIGH-YIELD EXAM POINTS", ParagraphStyle("hyt",
        fontSize=8, fontName="Helvetica-Bold", textColor=WHITE, leading=11))],
    [p("• Diagnosis requires <b>neutrophilic infiltration of muscularis propria</b> (mucosal neutrophils alone = not enough)\n"
       "• Faecolith in gangrenous cases → different pathophysiology from simple appendicitis\n"
       "• Anorexia is the most constant symptom — its absence questions the diagnosis\n"
       "• Nausea follows pain (gastroenteritis = nausea first)\n"
       "• Retrocaecal position (64%) can cause minimal anterior abdominal tenderness\n"
       "• Periappendiceal lymphoid hyperplasia can initiate appendicitis without faecolith",
       ParagraphStyle("hib", fontSize=7.2, fontName="Helvetica",
                      textColor=DARK, leading=10.5, leftIndent=2))],
]
hiy_table = Table(
    hiy_data,
    colWidths=[(CONTENT_W/2)-2*mm],
    style=TableStyle([
        ("BACKGROUND",    (0,0), (-1,0), colors.HexColor("#6C3483")),
        ("BACKGROUND",    (0,1), (-1,1), colors.HexColor("#F5EEF8")),
        ("TOPPADDING",    (0,0), (-1,-1), 4),
        ("BOTTOMPADDING", (0,0), (-1,-1), 4),
        ("LEFTPADDING",   (0,0), (-1,-1), 5),
        ("BOX",           (0,0), (-1,-1), 1, colors.HexColor("#6C3483")),
    ])
)
right += [hiy_table]

# ── Assemble two-column layout ────────────────────────────────────────────────
story.append(two_col(left, right))
story.append(spacer(2))

# ── FOOTER ────────────────────────────────────────────────────────────────────
story.append(HRFlowable(width=CONTENT_W, thickness=0.5, color=MID_GRAY))
story.append(spacer(1))
story.append(p("Sources: Robbins & Kumar Basic Pathology  |  Harrison's Principles of Internal Medicine 22E  |  Bailey & Love's Short Practice of Surgery 28E", footer_style))

# ── Build PDF ─────────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF saved to: {OUTPUT}")
Running Command

cd /tmp/workspace/acute-appendicitis && python generate_summary.py

Your one-page pathology exam summary is ready:

Acute Appendicitis Pathology Summary

PDF Document Ā· PDF


Here is what is packed into that single page:
SectionContent
1. Definition & EpidemiologyTrue diverticulum, age/sex/lifetime risk
2. PathogenesisStep-by-step obstruction → gangrene → perforation flowchart
3. Causes of ObstructionFaecolith, lymphoid hyperplasia, tumour, parasites + key fact
4. Morphology (Stages)Early → Suppurative → Gangrenous → Perforated with features of each
5. Clinical FeaturesPain sequence + all named signs (McBurney, Rovsing, Psoas, Obturator)
6. Differential DiagnosisGI / Gynaecological / Urological / Other
7. ComplicationsPerforation, abscess, phlegmon, peritonitis, pylephlebitis
ā˜… High-Yield BoxThe 6 most exam-critical facts highlighted in purple
Print it, stick it on your wall, read it the night before your exam - that is all you need for pathology marks.

Please teach me the pathogenesis flowchart

Here is the full pathogenesis flowchart taught step by step, so you understand why each step happens, not just what it is.

The Pathogenesis of Acute Appendicitis - Step by Step


STEP 1: Luminal Obstruction

What happens: Something blocks the narrow lumen of the appendix.
Causes:
  • Faecolith (hardened stool mass) - most common
  • Lymphoid hyperplasia (after a viral infection)
  • Worms, tumour, stricture
Why it matters: The appendix is a blind-ended tube. If the opening is blocked, nothing can escape. Whatever is secreted inside - stays inside.

STEP 2: Continued Mucus Secretion → ↑ Intraluminal Pressure

What happens: The appendiceal mucosa keeps secreting mucus (it doesn't know there is a blockage). This mucus has nowhere to go. Pressure inside the lumen builds up.
Analogy: Imagine blowing air into a balloon with the neck tied - pressure builds until something gives way.

STEP 3: Lymphatic Obstruction → Oedema + Mucosal Ulceration

What happens: As pressure rises, the lymphatic vessels in the wall are the first to collapse (they are thin-walled and low pressure). Lymph cannot drain.
Result:
  • The wall becomes oedematous (swollen with fluid)
  • Mucosal lining breaks down → ulceration
  • Bacteria from the lumen start to cross the mucosal barrier into the submucosa
This is a point of no return decision: If bacterial invasion is mild and pressure is relieved (e.g., the faecolith dislodges, or antibiotics are given), resolution can occur here. Some cases of appendicitis genuinely resolve spontaneously at this stage.

STEP 4: Venous Obstruction → Ischaemia

What happens: Pressure keeps rising. Now the venous system collapses (veins are also low pressure). Blood cannot drain out of the appendix wall.
Result:
  • Venous congestion → blood backs up in the wall
  • Tissue becomes ischaemic (starved of oxygen)
  • The appendix wall is dying
Arteries are high pressure - they keep pumping blood IN, but veins cannot take it OUT. This worsens the congestion and ischaemia.

STEP 5: Bacterial Invasion Through Muscularis Propria

What happens: Ischaemic tissue loses its defensive barrier function. Bacteria now invade through the muscularis propria (the muscle layer).
Why this is the diagnostic hallmark: This is exactly why neutrophilic infiltration of the muscularis propria is the histological criterion for diagnosis. Once bacteria reach here, the disease is established.
The appendix now shows:
  • All layers infiltrated with neutrophils
  • Serosa becomes dull, red, granular (loses its normal shiny appearance)

STEP 6: Suppuration (Abscess Formation in Wall)

What happens: Pus (dead neutrophils + bacteria + necrotic tissue) collects inside the wall as focal abscesses.
This is Acute Suppurative Appendicitis.
The appendix now looks: swollen, tense, red, with visible pus

STEP 7: Gangrene (Gangrenous Appendicitis)

What happens: Full-thickness necrosis. Large areas of haemorrhagic ulceration and gangrenous necrosis extend to the serosa. The tissue is effectively dead.
The appendix now looks: black/green, friable, foul-smelling

STEP 8: Perforation → Two Possible Outcomes

What happens: The dead, gangrenous wall ruptures.
OutcomeWhat happensResult
Contained perforationOmentum + surrounding loops of bowel wall off the leakPeriappendiceal abscess or phlegmon (appendix mass)
Free perforationNothing contains the leakGeneralised peritonitis - life-threatening
Why children under 5 are higher risk: Their omentum is short and poorly developed - it cannot wall off the perforation. They almost always get free peritonitis.

The Rare Dread Complication: Pylephlebitis

If bacteria enter the portal venous system from the inflamed appendix:
  • Septic thrombosis of the portal vein and its tributaries
  • Multiple intrahepatic abscesses
  • Very high mortality

The Full Flowchart (Clean Version)

LUMINAL OBSTRUCTION (faecolith, lymphoid hyperplasia, worm, tumour)
           |
           ↓
Mucus continues to be secreted → ↑ Intraluminal Pressure
           |
           ↓
Lymphatic obstruction → OEDEMA + MUCOSAL ULCERATION
           |
    ←------+-----→  [RESOLUTION POSSIBLE HERE - spontaneous or antibiotics]
           |
           ↓
Venous obstruction → ISCHAEMIA of appendix wall
           |
           ↓
Bacterial invasion through MUSCULARIS PROPRIA
(ā˜… Histological diagnosis made here - neutrophils in muscularis)
           |
           ↓
Focal ABSCESSES in wall → ACUTE SUPPURATIVE APPENDICITIS
           |
           ↓
Haemorrhagic necrosis → ACUTE GANGRENOUS APPENDICITIS
           |
           ↓
        PERFORATION
        /          \
  Contained        Free
  (Omentum walls)  (Nothing walls off)
       |                  |
  Abscess /           Generalised
  Phlegmon            PERITONITIS

The 3 Things to Always Say in Exam

  1. "Initiated by progressive increase in intraluminal pressure compromising venous outflow" - this is the textbook opening line (Robbins).
  2. "Histological diagnosis requires neutrophilic infiltration of the muscularis propria" - mucosal neutrophils alone are insufficient.
  3. "Resolution may occur at the stage of mucosal ulceration" - shows you understand it is not always a one-way progression.
Say these three things clearly and you will score well on any pathogenesis question.
This is a shared conversation. Sign in to Orris to start your own chat.