Give me everything about gastric outlet obstruction from surgery

Reading File
Finding Sources
Finding Sources
Searching PubMed

"gastric outlet obstruction" management

Reading File
Reading File
Reading File
Reading File
Reading File
Finding Sources
Reading File
Reading File
Reading File
Reading File
I now have comprehensive information from multiple surgical and gastroenterology textbooks. Let me compile a thorough answer.

Gastric Outlet Obstruction (GOO) — Surgical Perspective

Definition & Overview

Gastric outlet obstruction (GOO) is a clinical syndrome resulting from any mechanical impediment to gastric emptying at the level of the pylorus, antrum, or proximal duodenum. It is not a diagnosis in itself but a manifestation of an underlying disease process.

Etiology & Differential Diagnosis

CauseNotes
Peptic ulcer disease (PUD)Now accounts for only ~5% of GOO in high-HDI countries (was ~90% historically); still the most common cause for surgical intervention in low/medium-HDI countries (50–60% of cases)
MalignancyNow the dominant etiology (~50–80%): gastric cancer, pancreatic cancer, duodenal cancer, periampullary tumors
Pyloric channel ulcers / DUMore frequent with Zollinger-Ellison syndrome (~10%), long-standing or NSAID-associated ulcers
Crohn diseaseGranulomatous narrowing of pylorus/duodenum
Pancreatic pseudocyst / pancreatitisExtrinsic compression
Duodenal webs / stricturesCongenital or post-inflammatory
TuberculosisEspecially in endemic regions; may require full-thickness biopsy
BezoarsFunctional obstruction
Gastric volvulus / herniasParaesophageal or post-traumatic diaphragmatic hernia; may cause relapsing obstruction
Caustic ingestionFibrotic stricture
Historically, PUD accounted for approximately 90% of GOO cases but is now responsible for only about 5% in most Western populations, and other causes — particularly neoplasia — have increased in relative importance. In low- and medium-income countries, GOO from PUD is still the most common reason for surgical intervention in complicated ulcer disease.
Yamada's Textbook of Gastroenterology, 7th ed.; Current Surgical Therapy 14e

Pathophysiology

In PUD-related GOO, obstruction arises from a combination of:
  • Acute/reversible: Edema and spasm around an active pyloric channel or duodenal ulcer
  • Chronic/irreversible: Fibrosis, scarring, and gastric atony from repeated ulceration and healing
In high-grade obstruction, chronic vomiting of gastric acid (without bile because the obstruction is proximal to the ampulla) leads to the classic electrolyte abnormality:
Hypokalemic hypochloremic metabolic alkalosis — from loss of H⁺ and Cl⁻, with compensatory renal HCO₃⁻ retention and K⁺ loss

Clinical Features

  • Nausea and nonbilious vomiting (often of undigested food from hours/days prior)
  • Epigastric distension and fullness
  • Early satiety
  • Weight loss and malnutrition
  • Succussion splash on abdominal auscultation (retained gastric contents)
  • Dehydration in high-grade obstruction

Investigations

Initial stabilization first — decompress stomach with large-bore NGT (reduces aspiration risk), correct fluid and electrolyte imbalances, start IV PPIs.
Investigations include:
  1. Endoscopy (EGD) with biopsy — mandatory; identifies intrinsic lesion, excludes malignancy, allows therapeutic intervention; stomach must be decompressed/fasted first
  2. CT abdomen — cross-sectional imaging is usually first step; identifies extrinsic compression (pancreatic mass, nodes), dilated stomach, nature of obstruction
  3. Upper GI fluoroscopy with oral barium — useful for characterizing the stricture geometry
  4. Endoscopic ultrasound (EUS) — if malignancy suspected or EUS-guided therapy planned
  5. Saline load test (historical): 750 mL saline via NGT; aspiration >400 mL at 30 min suggests mechanical obstruction; now less used, but serial measurement (residual <200 mL = resolution) may guide response to medical treatment
  6. Labs: electrolytes, CBC, LFTs, amylase, serum gastrin if ZES suspected

Management

General Principles (Multidisciplinary)

  1. Decompress stomach (large-bore NGT)
  2. Correct electrolyte/fluid abnormalities (particularly hypokalemic hypochloremic alkalosis)
  3. Nutritional support (IV if necessary; nasojejunal feeds once feasible)
  4. IV PPIs — reduce gastric secretions
  5. Specific treatment according to definitive diagnosis
Yamada's Textbook of Gastroenterology, 7th ed.

Benign GOO (PUD-related)

Non-operative / Endoscopic

  • H. pylori eradication + NSAID cessation → most will respond to acid suppression initially
  • Endoscopic balloon dilation may delay surgery for 1–2 years in ~50% of patients with benign GOO from duodenal ulcer
  • Most patients requiring hospitalization or repeated dilation will ultimately require surgery

Surgical Options

1. Vagotomy + Antrectomy (V/A) — Gold Standard

  • Procedure: Truncal vagotomy + antrectomy + Billroth II (antecolic isoperistaltic gastrojejunostomy) reconstruction
  • Advantages: Lowest ulcer recurrence rate; confirms benign diagnosis by resecting the obstruction
  • Disadvantages: Operative mortality ~2%; higher technical complexity; difficult duodenal stump if ulcer penetrates posteriorly
  • Reconstruction: Billroth II (antecolic, isoperistaltic, afferent loop on greater curvature side). Roux-en-Y is avoided with a large gastric remnant due to risk of marginal ulceration and delayed gastric emptying
  • Key technical points:
    • Thick-walled chronically obstructed stomach — use appropriately large staple cartridges to prevent dehiscence
    • The outlet obstruction should be resected and included in the specimen
    • If the obstruction is prepyloric, ensure the distal staple line is truly distal to the pylorus to avoid retained antrum syndrome
    • If ulcer is in the 2nd portion of the duodenum, distal gastrectomy may be hazardous — consider HPB consultation; cancer must be excluded if the obstruction site is left in situ

2. Vagotomy + Gastrojejunostomy (V/GJ) — Good Alternative

  • Procedure: Truncal or posterior truncal + anterior HSV vagotomy + loop gastrojejunostomy to the dependent greater curvature
  • Advantages:
    • Lower operative mortality
    • Can be performed laparoscopically readily
    • Reversible if dumping becomes intolerable
  • Disadvantages:
    • Obstructing cancer may be missed (no resection of the obstructing lesion)
    • Risk of marginal ulcer
    • Patients need close 2-year follow-up; if not doing well, re-exploration and conversion to distal gastrectomy should be considered
Gold standard = V/A; V/GJ is a good alternative with lower mortality and laparoscopic feasibility.Current Surgical Therapy 14e

Managing the Difficult Duodenal Stump

If the ulcer has destroyed the posterior duodenal wall:
  • Sew the anterior edge of the open duodenum to the proximal/distal lip of the ulcer on the pancreas with interrupted sutures
  • Test closure by distending duodenum with air via NG tube
  • Cover with vascularized omentum + place multiple closed-suction drains
  • Duodenal decompression: retrograde tube via proximal jejunum; or lateral duodenostomy; or NG tube threaded through GJ into afferent limb
  • Avoid placing a tube directly into the end of the duodenal stump (always leaks around it)

Malignant GOO

Caused by pancreatic, periampullary, gastric, or duodenal cancer. Most patients have advanced, unresectable disease at presentation.

Endoscopic Options

  • Self-Expandable Metal Stent (SEMS) via EGD: ~90% of patients can tolerate a soft/regular diet after successful placement. Uncovered SEMS preferred for tumor-in-growth resistance; covered SEMS can be re-stented. Biliary stenting should be done before duodenal stenting (biliary access is technically difficult after duodenal SEMS placement)
  • EUS-guided gastroenterostomy (EUS-GE): emerging technique — highly effective for benign or malignant GOO; increasing evidence supports use for both

Surgical Option: Gastrojejunostomy (GJ)

  • Retrocolic or antecolic loop/Roux-en-Y gastrojejunostomy
  • Open vs. laparoscopic: laparoscopic GJ allows more rapid initiation of systemic anticancer therapy
  • Presence of a duodenal stent makes subsequent pancreaticoduodenectomy (Whipple) technically more difficult

Decision Algorithm for Malignant GOO (Pancreatic/Periampullary Cancer)

ScenarioPreferred Approach
Operable tumor, neoadjuvant therapy plannedLaparoscopic/robotic GJ
Advanced disease, limited survivalDuodenal SEMS (outpatient, minimally invasive)
Combined duodenal + distal bile duct obstruction, operable diseasePTC for bile + laparoscopic GJ (avoid duodenal stent pre-operatively)
Combined obstruction, advanced diseaseDuodenal SEMS ± venting gastrostomy
Found unresectable at laparotomy (open abdomen)Proceed with open biliary bypass ± GJ prophylactically
A prophylactic GJ at the time of open biliary bypass (for found-unresectable disease) is generally advisable even in asymptomatic patients, given the high probability of future duodenal obstruction from tumor progression. — Current Surgical Therapy 14e

Postoperative Management

  • High-dose PPIs in the early postoperative period
  • Long-term PPI therapy if: chronic aspirin/NSAIDs required, anticoagulation, H. pylori not eradicated
  • Smoking cessation — imperative to prevent recurrence
  • If NSAIDs are medically necessary: consider selective COX-2 inhibitor + long-term PPI
  • Monitor for early rebleeding (upper endoscopy + CT angiography/standard arteriography)
  • Patients treated with V/GJ for obstructing DU: close 2-year clinical follow-up mandatory to ensure no missed cancer

Complications

ComplicationComment
Duodenal stump leakDevastating; risk increased with difficult stump; manage with drainage, duodenal decompression, reoperation if necessary
Retained antrum syndromeHypergastrinemia + marginal ulceration after B-II if antrum not completely resected — ensure distal staple line is past pylorus
Marginal ulcerMore common after V/GJ than V/A
Delayed gastric emptyingEspecially with Roux-en-Y reconstruction + large gastric remnant
Dumping syndromeEarly (osmotic) and late (hypoglycemic) forms after vagotomy + drainage procedures
Afferent loop syndromeAfter B-II reconstruction

Recent Evidence (2024–2026)

Three recent systematic reviews/meta-analyses are relevant:
  1. EUS-GE vs. duodenal stenting for malignant GOO (PMID 39465748): Jain et al., Medicine, 2024 — compared EUS-guided gastroenterostomy vs. SEMS; EUS-GE shows comparable or superior outcomes with lower reintervention rates.
  2. EUS-GE for benign GOO (PMID 39761155): Canakis et al., J Clin Gastroenterol, 2026 — meta-analysis confirming efficacy of EUS-GE for benign GOO; still requires further standardization before routine adoption.
  3. EUS-GJ vs. surgical GJ for malignant GOO (PMID 41558906): Maida et al., Dig Liver Dis, 2026 — EUS-guided gastroenterostomy is emerging as a competitive alternative to surgical gastrojejunostomy for malignant GOO, with comparable efficacy and potentially less morbidity.
⚠️ These recent meta-analyses suggest EUS-GE is gaining ground as an alternative to both open/laparoscopic surgery and luminal stenting in carefully selected patients — a shift from what older textbook editions describe.

Key Surgical Takeaways

  • V/A = gold standard for benign obstructing duodenal ulcer; V/GJ is a good laparoscopic alternative with slightly higher recurrence/reintervention risk
  • Always biopsy and exclude malignancy before committing to a benign ulcer repair procedure
  • Duodenal stump management is a critical technical challenge — have a bailout plan
  • Malignant GOO management hinges on expected survival and resectability: short survival → SEMS; longer survival/operable → surgical or EUS-guided GJ
  • Biliary obstruction must be addressed first (PTC or biliary stent) before duodenal stenting
  • Electrolyte correction (hypokalemic hypochloremic alkalosis) before any operative intervention is mandatory

Sources: Current Surgical Therapy 14e (Cameron & Cameron); Yamada's Textbook of Gastroenterology, 7th ed.; Sleisenger & Fordtran's GI and Liver Disease; Harrison's Principles 22e; Clinical GI Endoscopy 3e

Give me pdf of this all information

Reading File
Running Command

ls -la /home/daytona/workspace/ 2>/dev/null || mkdir -p /home/daytona/workspace

Running Command

mkdir -p /home/daytona/workspace/goo-pdf && ls /home/daytona/workspace/goo-pdf

Writing File

~/goo-pdf/generate_goo_pdf.py

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

OUTPUT = "/home/daytona/workspace/goo-pdf/Gastric_Outlet_Obstruction.pdf"

doc = SimpleDocTemplate(
    OUTPUT,
    pagesize=A4,
    rightMargin=2*cm, leftMargin=2*cm,
    topMargin=2.5*cm, bottomMargin=2.5*cm,
    title="Gastric Outlet Obstruction – Surgical Overview",
    author="Orris Medical"
)

styles = getSampleStyleSheet()

# Custom styles
title_style = ParagraphStyle(
    'CustomTitle',
    parent=styles['Title'],
    fontSize=22,
    textColor=colors.HexColor('#1a3a5c'),
    spaceAfter=6,
    fontName='Helvetica-Bold',
    alignment=TA_CENTER
)
subtitle_style = ParagraphStyle(
    'Subtitle',
    parent=styles['Normal'],
    fontSize=11,
    textColor=colors.HexColor('#4a6fa5'),
    spaceAfter=14,
    alignment=TA_CENTER,
    fontName='Helvetica'
)
h1_style = ParagraphStyle(
    'H1',
    parent=styles['Heading1'],
    fontSize=14,
    textColor=colors.white,
    backColor=colors.HexColor('#1a3a5c'),
    spaceBefore=14,
    spaceAfter=6,
    fontName='Helvetica-Bold',
    leftIndent=-0.5*cm,
    rightIndent=-0.5*cm,
    borderPad=5
)
h2_style = ParagraphStyle(
    'H2',
    parent=styles['Heading2'],
    fontSize=12,
    textColor=colors.HexColor('#1a3a5c'),
    spaceBefore=10,
    spaceAfter=4,
    fontName='Helvetica-Bold',
    borderPad=2
)
h3_style = ParagraphStyle(
    'H3',
    parent=styles['Heading3'],
    fontSize=11,
    textColor=colors.HexColor('#2e6da4'),
    spaceBefore=8,
    spaceAfter=3,
    fontName='Helvetica-BoldOblique'
)
body_style = ParagraphStyle(
    'Body',
    parent=styles['Normal'],
    fontSize=10,
    leading=15,
    spaceAfter=6,
    alignment=TA_JUSTIFY,
    fontName='Helvetica'
)
bullet_style = ParagraphStyle(
    'Bullet',
    parent=body_style,
    leftIndent=18,
    bulletIndent=6,
    spaceAfter=3
)
callout_style = ParagraphStyle(
    'Callout',
    parent=body_style,
    backColor=colors.HexColor('#eaf3fb'),
    borderColor=colors.HexColor('#2e6da4'),
    borderWidth=1,
    borderPad=6,
    leftIndent=10,
    rightIndent=10,
    spaceAfter=8
)
warning_style = ParagraphStyle(
    'Warning',
    parent=body_style,
    backColor=colors.HexColor('#fff8e1'),
    borderColor=colors.HexColor('#f5a623'),
    borderWidth=1,
    borderPad=6,
    leftIndent=10,
    rightIndent=10,
    spaceAfter=8
)
source_style = ParagraphStyle(
    'Source',
    parent=styles['Normal'],
    fontSize=8,
    textColor=colors.HexColor('#888888'),
    spaceAfter=4,
    fontName='Helvetica-Oblique'
)

def h1(text):
    return Paragraph(f"&nbsp;&nbsp;{text}", h1_style)

def h2(text):
    return Paragraph(text, h2_style)

def h3(text):
    return Paragraph(text, h3_style)

def p(text):
    return Paragraph(text, body_style)

def bp(text):
    return Paragraph(f"• &nbsp;{text}", bullet_style)

def callout(text):
    return Paragraph(text, callout_style)

def warn(text):
    return Paragraph(f"⚠ {text}", warning_style)

def src(text):
    return Paragraph(f"<i>Source: {text}</i>", source_style)

def hr():
    return HRFlowable(width="100%", thickness=1, color=colors.HexColor('#cccccc'), spaceAfter=4, spaceBefore=4)

# Table helper
def make_table(data, col_widths=None, header_color='#1a3a5c'):
    t = Table(data, colWidths=col_widths, repeatRows=1)
    style = TableStyle([
        ('BACKGROUND', (0,0), (-1,0), colors.HexColor(header_color)),
        ('TEXTCOLOR', (0,0), (-1,0), colors.white),
        ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
        ('FONTSIZE', (0,0), (-1,0), 9),
        ('FONTNAME', (0,1), (-1,-1), 'Helvetica'),
        ('FONTSIZE', (0,1), (-1,-1), 9),
        ('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.white, colors.HexColor('#f0f4fa')]),
        ('GRID', (0,0), (-1,-1), 0.5, colors.HexColor('#aaaaaa')),
        ('VALIGN', (0,0), (-1,-1), 'TOP'),
        ('LEFTPADDING', (0,0), (-1,-1), 6),
        ('RIGHTPADDING', (0,0), (-1,-1), 6),
        ('TOPPADDING', (0,0), (-1,-1), 4),
        ('BOTTOMPADDING', (0,0), (-1,-1), 4),
        ('WORDWRAP', (0,0), (-1,-1), True),
    ])
    t.setStyle(style)
    return t

# ── Content ──────────────────────────────────────────────────────────────────
story = []

# Title block
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("Gastric Outlet Obstruction", title_style))
story.append(Paragraph("A Comprehensive Surgical Reference", subtitle_style))
story.append(hr())
story.append(p("<i>Compiled from: Current Surgical Therapy 14e · Yamada's Textbook of Gastroenterology 7e · "
               "Sleisenger &amp; Fordtran's GI and Liver Disease · Harrison's Principles 22e · "
               "Clinical GI Endoscopy 3e</i>"))
story.append(Spacer(1, 0.4*cm))

# ── 1. Definition ─────────────────────────────────────────────────────────────
story.append(h1("1. Definition & Overview"))
story.append(p(
    "Gastric outlet obstruction (GOO) is a clinical syndrome resulting from any mechanical impediment to "
    "gastric emptying at the level of the pylorus, antrum, or proximal duodenum. It is not a diagnosis "
    "in itself but a manifestation of an underlying disease process."
))

# ── 2. Etiology ───────────────────────────────────────────────────────────────
story.append(h1("2. Etiology & Differential Diagnosis"))
story.append(p(
    "Historically, peptic ulcer disease (PUD) accounted for approximately 90% of GOO cases. Today, PUD "
    "accounts for only ~5% in high-income countries, while malignancy now constitutes 50–80% of cases. "
    "In low- and medium-income countries, PUD-related GOO remains the dominant indication for surgical "
    "intervention (50–60% of complicated ulcer surgery)."
))

etiology_data = [
    ["Cause", "Relative Frequency / Notes"],
    ["Peptic ulcer disease (DU / pyloric channel ulcers)", "~5% in high-HDI; still dominant in low-HDI countries"],
    ["Malignancy (gastric, pancreatic, duodenal, periampullary)", "50–80%; most common cause in Western practice"],
    ["Zollinger-Ellison syndrome", "GOO in ~10% of ZES patients"],
    ["Crohn disease", "Granulomatous narrowing of pylorus/duodenum"],
    ["Pancreatic pseudocyst / pancreatitis", "Extrinsic compression"],
    ["Tuberculosis", "Especially in endemic regions; may need full-thickness biopsy"],
    ["Caustic ingestion", "Fibrotic pyloric/duodenal stricture"],
    ["Duodenal webs / congenital strictures", "Congenital or post-inflammatory"],
    ["Bezoars", "Functional obstruction"],
    ["Gastric volvulus / paraesophageal hernia", "Relapsing obstruction; intermittent and spontaneously resolving"],
]
story.append(make_table(etiology_data, col_widths=[9*cm, 8*cm]))
story.append(Spacer(1, 0.3*cm))

# ── 3. Pathophysiology ────────────────────────────────────────────────────────
story.append(h1("3. Pathophysiology"))
story.append(h2("In PUD-related GOO:"))
story.append(bp("<b>Acute / reversible component:</b> Edema and pyloric spasm around an active pyloric channel or duodenal ulcer"))
story.append(bp("<b>Chronic / irreversible component:</b> Fibrosis, scarring, and gastric atony from repeated cycles of ulceration and healing"))
story.append(h2("Metabolic Consequence of High-Grade Obstruction"))
story.append(callout(
    "<b>Hypokalemic Hypochloremic Metabolic Alkalosis</b><br/>"
    "Mechanism: Repeated vomiting of gastric acid → loss of H⁺ and Cl⁻ → compensatory renal HCO₃⁻ "
    "retention and K⁺ wasting. Obstruction is proximal to the ampulla of Vater, so vomitus is "
    "<b>nonbilious</b>. This metabolic derangement MUST be corrected before any surgical intervention."
))

# ── 4. Clinical Features ──────────────────────────────────────────────────────
story.append(h1("4. Clinical Features"))
features = [
    "Nausea and <b>nonbilious vomiting</b> — often of undigested food from hours or days prior",
    "Epigastric distension and fullness",
    "Early satiety",
    "Weight loss and malnutrition",
    "<b>Succussion splash</b> on abdominal auscultation (retained gastric contents)",
    "Dehydration in high-grade or prolonged obstruction",
    "Clinical features of the underlying etiology (e.g., jaundice with pancreatic cancer)",
]
for f in features:
    story.append(bp(f))

# ── 5. Investigations ─────────────────────────────────────────────────────────
story.append(h1("5. Investigations"))
story.append(callout(
    "<b>Initial Stabilization First:</b> Decompress stomach with large-bore NGT (reduces aspiration risk), "
    "correct fluid and electrolyte imbalances (particularly hypokalemic hypochloremic alkalosis), "
    "initiate IV PPIs. These steps are usually necessary <i>before</i> endoscopy or contrast studies."
))
story.append(h2("Investigations"))
invest_data = [
    ["Investigation", "Role & Notes"],
    ["EGD with biopsy", "Mandatory. Identifies intrinsic lesion, excludes malignancy, allows therapeutic intervention. Decompress/fast stomach first. Endoscopic biopsies ± EUS for deep/suspicious lesions."],
    ["CT abdomen (with contrast)", "Usually first imaging step. Identifies extrinsic compression, dilated stomach, nature of obstruction, metastatic disease."],
    ["Upper GI fluoroscopy (barium)", "Characterizes stricture geometry and length; complements endoscopy."],
    ["Endoscopic ultrasound (EUS)", "If malignancy suspected or EUS-guided therapy planned; superior for local staging."],
    ["Saline load test", "Historical: 750 mL saline via NGT; aspiration >400 mL at 30 min = mechanical obstruction. Residual <200 mL = resolution. Less used now."],
    ["Labs", "Electrolytes, CBC, LFTs, amylase. Serum gastrin if ZES suspected. ABG if alkalosis suspected."],
]
story.append(make_table(invest_data, col_widths=[5*cm, 12*cm]))
story.append(Spacer(1, 0.3*cm))

# ── 6. Management Overview ────────────────────────────────────────────────────
story.append(h1("6. General Management Principles"))
gm = [
    "Decompress stomach (large-bore NGT)",
    "Correct electrolyte and fluid abnormalities — particularly hypokalemic hypochloremic alkalosis",
    "Nutritional support — IV nutrition if necessary; nasojejunal feeds once feasible",
    "IV proton pump inhibitors — reduce gastric secretions",
    "Identify the underlying etiology — guides definitive management",
    "Multidisciplinary team involvement (surgery, gastroenterology, oncology if malignant)",
]
for g in gm:
    story.append(bp(g))

# ── 7. Benign GOO (PUD) ───────────────────────────────────────────────────────
story.append(h1("7. Benign GOO — PUD-Related Management"))
story.append(h2("Non-operative / Endoscopic"))
story.append(bp("<b>H. pylori eradication</b> + NSAID cessation → most patients respond to acid suppression initially"))
story.append(bp("Full-dose oral PPIs long-term after obstruction resolves; may discontinue if H. pylori eradicated and antral deformity resolves"))
story.append(bp("<b>Endoscopic balloon dilation</b> may delay surgery for 1–2 years in ~50% of patients; most requiring hospitalization or repeated dilation will ultimately need surgery"))
story.append(Spacer(1, 0.2*cm))

story.append(h2("Surgical Options"))
story.append(h3("Option 1: Vagotomy + Antrectomy (V/A) — Gold Standard"))
story.append(p(
    "V/A is the gold standard surgical procedure for obstructing duodenal ulcer. It provides the lowest "
    "ulcer recurrence rate and confirms the benign diagnosis by resecting the obstruction."
))
va_data = [
    ["Aspect", "Details"],
    ["Advantages", "Lowest recurrence rate; confirms benign diagnosis by resecting obstruction; removes risk of missed cancer"],
    ["Disadvantages", "Operative mortality ~2%; higher technical complexity; difficult duodenal stump if ulcer penetrates posteriorly"],
    ["Reconstruction", "Antecolic isoperistaltic Billroth II gastrojejunostomy (afferent loop on greater curvature, efferent on lesser). Avoid Roux-en-Y with large gastric remnant → risk of marginal ulcer and delayed gastric emptying"],
    ["Key steps", "Truncal vagotomy first → antrectomy → B-II reconstruction"],
    ["Staple technique", "Chronically obstructed stomach is unusually thick-walled — use appropriately large staple cartridges to prevent dehiscence"],
    ["Obstruction", "Must be resected and included in specimen"],
    ["Prepyloric lesion", "Ensure distal staple line is truly distal to the pylorus — prevents retained antrum syndrome"],
    ["Difficult duodenum", "If obstruction is in the 2nd part of duodenum, consider HPB consultation; cancer must be excluded if obstruction site is left in situ"],
]
story.append(make_table(va_data, col_widths=[5*cm, 12*cm]))
story.append(Spacer(1, 0.3*cm))

story.append(h3("Option 2: Vagotomy + Gastrojejunostomy (V/GJ) — Good Alternative"))
story.append(p(
    "V/GJ is a good alternative, particularly where laparoscopic surgery is planned or where the operative "
    "risk of V/A is judged to be too high."
))
vgj_data = [
    ["Aspect", "Details"],
    ["Advantages", "Lower operative mortality; readily performed laparoscopically; reversible if dumping becomes intolerable"],
    ["Disadvantages", "Obstructing cancer may be missed (no resection of obstructing lesion); risk of marginal ulcer"],
    ["Technique", "Bilateral truncal or posterior truncal + anterior HSV vagotomy; loop gastrojejunostomy to dependent greater curvature (antecolic, isoperistaltic); 6–8 cm cleared of gastroepipolic branches for anastomosis site"],
    ["Follow-up", "Close clinical follow-up for 2 years mandatory; if not doing well clinically, re-explore and convert to distal gastrectomy including obstruction site"],
]
story.append(make_table(vgj_data, col_widths=[5*cm, 12*cm]))
story.append(Spacer(1, 0.3*cm))

story.append(h2("Comparison: V/A vs. V/GJ"))
comp_data = [
    ["", "Vagotomy + Antrectomy (V/A)", "Vagotomy + Gastrojejunostomy (V/GJ)"],
    ["Recurrence rate", "Lower", "Higher (marginal ulcer risk)"],
    ["Operative mortality", "~2%", "Lower"],
    ["Confirms benign diagnosis", "Yes (specimen sent)", "No (obstruction not resected)"],
    ["Laparoscopic", "Possible but complex", "Readily performed"],
    ["Reversible", "No", "Yes"],
    ["Cancer missed risk", "No", "Yes"],
    ["Standard", "Gold standard", "Acceptable alternative"],
]
story.append(make_table(comp_data, col_widths=[5.5*cm, 6*cm, 6*cm]))
story.append(Spacer(1, 0.3*cm))

# ── 8. Difficult Duodenal Stump ───────────────────────────────────────────────
story.append(h1("8. Management of the Difficult Duodenal Stump"))
story.append(p(
    "If the ulcer has destroyed the posterior duodenal wall, standard stapled closure may not be possible. "
    "This is one of the most feared complications in ulcer surgery — duodenal stump leak carries very high "
    "operative mortality."
))
stump = [
    "Sew anterior edge of the open duodenum to the proximal/distal 'lip' of the ulcer on the pancreas with interrupted sutures; ensure complete hemostasis in the ulcer bed",
    "Test closure by placing NG tip at the ligament of Treitz (through GJ) and distending duodenum with air; add sutures as needed until air-tight",
    "Cover closure with well-vascularized omentum held with 2–3 strategic sutures",
    "Place multiple closed-suction drains in the right upper quadrant",
    "<b>Duodenal decompression options:</b> (1) Retrograde tube via proximal jejunum [preferred]; (2) Lateral duodenostomy; (3) NG tube threaded through GJ into afferent limb and secured to nose",
    "<b>Avoid:</b> Placing a large tube directly into the end of the duodenal stump — invariably leaks around it and should only be used if no other option exists",
    "If secure closure seems impossible, avoid distal gastrectomy altogether and perform V/GJ instead",
]
for s in stump:
    story.append(bp(s))

# ── 9. Malignant GOO ─────────────────────────────────────────────────────────
story.append(h1("9. Malignant GOO — Management"))
story.append(p(
    "Malignant GOO is caused by pancreatic, periampullary, gastric, or duodenal cancer. Most patients "
    "have advanced, unresectable disease at presentation. Management is palliative and should be "
    "individualized based on expected survival, resectability, and performance status."
))

story.append(h2("A. Endoscopic SEMS (Self-Expandable Metal Stent)"))
sems = [
    "~90% of patients can tolerate a soft or regular diet after successful SEMS placement",
    "Uncovered SEMS preferred for tumor in-growth control; occlusion from in-growth can be managed with placement of a covered SEMS within the existing stent",
    "<b>Critical:</b> Biliary stenting must be performed <i>before</i> duodenal stenting — biliary access is technically very difficult after a duodenal SEMS is in place",
    "Outpatient or brief admission procedure; appropriate for patients with limited prognosis",
    "Re-intervention for stent malfunction is feasible in most cases",
]
for s in sems:
    story.append(bp(s))
story.append(Spacer(1, 0.2*cm))

story.append(h2("B. Surgical Gastrojejunostomy (GJ)"))
sgj = [
    "Retrocolic or antecolic loop/Roux-en-Y gastrojejunostomy",
    "Open or laparoscopic; laparoscopic approach allows more rapid initiation of systemic anticancer therapy",
    "<b>Important:</b> Presence of a duodenal stent makes subsequent pancreaticoduodenectomy (Whipple procedure) technically significantly more difficult — avoid duodenal stenting in potentially resectable patients",
    "More durable than SEMS for patients with longer expected survival",
    "Prophylactic GJ at the time of open biliary bypass (for found-unresectable disease at laparotomy) is advisable even in asymptomatic patients",
]
for s in sgj:
    story.append(bp(s))
story.append(Spacer(1, 0.2*cm))

story.append(h2("C. EUS-Guided Gastroenterostomy (EUS-GE)"))
story.append(p(
    "An emerging technique where EUS guides creation of a gastroenteric anastomosis using a lumen-apposing "
    "metal stent (LAMS). Highly effective for both benign and malignant GOO. Recent meta-analyses (2024–2026) "
    "show comparable or superior outcomes to SEMS with lower reintervention rates, and comparable outcomes "
    "to surgical GJ with potentially less morbidity. Further standardization is still required."
))
story.append(Spacer(1, 0.2*cm))

story.append(h2("Decision Framework for Malignant GOO (Pancreatic / Periampullary Cancer)"))
dec_data = [
    ["Clinical Scenario", "Preferred Approach"],
    ["Operable tumor, neoadjuvant therapy planned", "Laparoscopic/robotic gastrojejunostomy"],
    ["Advanced disease, limited expected survival", "Duodenal SEMS (outpatient, minimally invasive)"],
    ["Combined duodenal + distal bile duct obstruction, operable disease", "PTC for biliary decompression + laparoscopic GJ (avoid duodenal stent pre-operatively)"],
    ["Combined obstruction, advanced/palliative disease", "Duodenal SEMS ± biliary SEMS ± venting gastrostomy"],
    ["Found unresectable at laparotomy (open abdomen)", "Proceed with open biliary bypass ± prophylactic GJ"],
    ["Repeated SEMS occlusion, reasonable performance status", "Operative biliary/gastric bypass if technically feasible; PTC if best supportive care planned"],
]
story.append(make_table(dec_data, col_widths=[8*cm, 9*cm]))
story.append(Spacer(1, 0.3*cm))

story.append(warn(
    "It is usually a mistake to persist with repeated endoscopic attempts at clearing a SEMS once "
    "repetitive occlusions have begun to occur — consider operative bypass at that point."
))

# ── 10. Postoperative Management ─────────────────────────────────────────────
story.append(h1("10. Postoperative Management"))
post = [
    "High-dose IV PPIs in the early postoperative period — may decrease rebleeding risk",
    "Long-term PPI therapy if: chronic aspirin/NSAIDs required, anticoagulation needed, or H. pylori not eradicated",
    "<b>Smoking cessation</b> — imperative; ulcer recurrence is almost inevitable after definitive surgery if patient continues to smoke",
    "If NSAIDs are medically necessary post-op: consider selective COX-2 inhibitor + long-term PPI",
    "Monitor for early rebleeding: upper endoscopy + CT angiography / standard arteriography",
    "Patients treated with V/GJ for obstructing DU: mandatory close 2-year clinical follow-up to ensure no missed cancer",
    "No evidence that transfusion triggers need to be increased after ulcer surgery",
]
for po in post:
    story.append(bp(po))

# ── 11. Complications ─────────────────────────────────────────────────────────
story.append(h1("11. Complications"))
comp2_data = [
    ["Complication", "Comment & Management"],
    ["Duodenal stump leak", "Most feared; risk increased with difficult stump. Manage with drainage, duodenal decompression, IV nutrition, reoperation if generalized peritonitis develops."],
    ["Retained antrum syndrome", "Hypergastrinemia + marginal ulceration after B-II if antrum not completely resected. Ensure distal staple line is past pylorus."],
    ["Marginal ulcer", "More common after V/GJ than V/A. Treat with PPIs; may require reoperation."],
    ["Delayed gastric emptying", "Especially with Roux-en-Y reconstruction + large gastric remnant; prokinetics, NGT decompression."],
    ["Dumping syndrome", "Early (osmotic, 15–30 min post-meal) and late (reactive hypoglycemia, 2–3 hrs post-meal) forms after vagotomy + drainage procedures. Dietary modification first-line."],
    ["Afferent loop syndrome", "After Billroth II reconstruction — bilious vomiting, pain; may need surgical revision."],
    ["Alkaline reflux gastritis", "After B-II; bile reflux into gastric remnant; may require conversion to Roux-en-Y."],
    ["Anastomotic leak", "General surgical complication; managed with drainage and reoperation if necessary."],
]
story.append(make_table(comp2_data, col_widths=[5.5*cm, 11.5*cm]))
story.append(Spacer(1, 0.3*cm))

# ── 12. Recent Evidence ───────────────────────────────────────────────────────
story.append(h1("12. Recent Evidence (2024–2026)"))
story.append(p("Three high-quality systematic reviews/meta-analyses have recently updated the evidence base for GOO management:"))

ev_data = [
    ["PMID", "Authors / Journal", "Findings"],
    ["39465748", "Jain et al., Medicine, Oct 2024", "EUS-GE vs. duodenal stenting for malignant GOO: EUS-GE shows comparable or superior outcomes with lower reintervention rates than SEMS placement."],
    ["39761155", "Canakis et al., J Clin Gastroenterol, Feb 2026", "EUS-GE for benign GOO: Meta-analysis confirms efficacy; further standardization needed before routine adoption."],
    ["41558906", "Maida et al., Dig Liver Dis, Mar 2026", "EUS-GJ vs. surgical GJ for malignant GOO: EUS-GE is a competitive alternative to surgical gastrojejunostomy with comparable efficacy and potentially less morbidity."],
]
story.append(make_table(ev_data, col_widths=[2.5*cm, 5.5*cm, 9*cm]))
story.append(Spacer(1, 0.2*cm))
story.append(warn(
    "These recent meta-analyses suggest EUS-GE is gaining ground as an alternative to both open/laparoscopic "
    "surgery and luminal stenting in carefully selected patients — a shift from what older textbook editions "
    "describe. Surgical trainees should be aware of this rapidly evolving landscape."
))

# ── 13. Key Surgical Takeaways ────────────────────────────────────────────────
story.append(h1("13. Key Surgical Takeaways"))
takeaways = [
    "<b>V/A = gold standard</b> for benign obstructing duodenal ulcer; V/GJ is a good laparoscopic alternative with slightly higher recurrence risk",
    "<b>Always biopsy and exclude malignancy</b> before committing to a benign ulcer repair — the differential must include pancreatic, duodenal, and pyloric channel cancer",
    "<b>Duodenal stump management</b> is a critical technical challenge in Billroth II — have a bailout plan before starting the case",
    "<b>Malignant GOO management</b> hinges on expected survival and resectability: short survival → SEMS; longer survival/operable → laparoscopic GJ",
    "<b>Biliary obstruction must be addressed first</b> (PTC or biliary stent) before duodenal stenting in combined obstruction",
    "<b>Electrolyte correction</b> (hypokalemic hypochloremic alkalosis) before any operative intervention is mandatory",
    "<b>EUS-GE is emerging</b> as a third option alongside SEMS and surgery — know when to involve advanced endoscopists",
    "Patients with <b>ZES</b> require dedicated work-up (fasting serum gastrin, secretin stimulation test, localization imaging) — GOO occurs in ~10%",
    "In low/middle-income countries, <b>PUD remains the dominant cause</b> of GOO; H. pylori eradication and acid suppression are foundations of long-term management",
]
for t in takeaways:
    story.append(bp(t))

# Footer note
story.append(Spacer(1, 0.5*cm))
story.append(hr())
story.append(src(
    "Current Surgical Therapy 14e (Cameron & Cameron) · "
    "Yamada's Textbook of Gastroenterology 7e · "
    "Sleisenger & Fordtran's GI and Liver Disease · "
    "Harrison's Principles of Internal Medicine 22e · "
    "Clinical GI Endoscopy 3e"
))
story.append(p("<font size='8' color='#aaaaaa'>Generated by Orris Medical Assistant | May 2026 | For educational purposes only.</font>"))

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

cd /home/daytona/workspace/goo-pdf && python generate_goo_pdf.py

Your PDF is ready. Here's the download link:

Gastric Outlet Obstruction

PDF Document · PDF

The PDF includes all 13 sections from the previous response, formatted with:
  • Color-coded section headers and structured tables
  • Etiology table with relative frequencies
  • Investigations table with roles and notes
  • V/A vs. V/GJ comparison table
  • Decision framework for malignant GOO
  • Complications table with management notes
  • Recent evidence (2024–2026 meta-analyses)
  • Key surgical takeaways summary
  • Source citations at the footer
This is a shared conversation. Sign in to Orris to start your own chat.