Read this USg finding we will discuss
| Organ | Finding |
|---|---|
| Liver | Normal (size, echotexture, portal/hepatic veins, CBD) |
| Gallbladder | Two polyps - largest measuring 3 mm |
| Spleen | Normal outline and echotexture |
| Pancreas | Normal |
| Kidneys | Normal bilaterally (RT and LT) - size, echotexture, corticomedullary differentiation, parenchymal thickness, calyces/calicectasis all normal |
| Urinary Bladder | Normal |
| Uterus | Measures 7.5 x 4.5 x 4 cm, normal outline, echotexture and position. Endometrial thickness (ET) = 11 mm |
| Adnexae | Normal |
| Free fluid / Lymphadenopathy | Negative (circled - absent) |
| Others | Nil |
Risk factors etiopathogenesis of poly payholphysiology
gallbladder polyp etiopathogenesis risk factors
gallbladder polyp pathogenesis cholesterol
| Type | Frequency | Neoplastic? |
|---|---|---|
| Cholesterol polyp | ~60-70% | No |
| Inflammatory polyp | ~10% | No |
| Adenomyoma | ~25% | No |
| Adenoma | ~4% | Yes (pre-malignant) |
| Carcinoma | ~2% | Yes |

| Risk Factor | Mechanism |
|---|---|
| Female sex | Estrogen increases cholesterol secretion into bile; progesterone reduces GB motility |
| Obesity | Increases hepatic cholesterol secretion; frequency of ~38% in cholecystectomy specimens from bariatric patients |
| Age (middle age) | Risk increases with age up to 60; after 60, gender difference narrows |
| Western diet (high fat/cholesterol) | Increases biliary cholesterol load |
| Metabolic syndrome / Dyslipidemia | Elevated serum cholesterol drives supersaturation |
| Insulin resistance / Diabetes | Alters bile composition |
| Rapid weight loss | Cholesterol mobilized rapidly into bile |
| Prolonged fasting / TPN | Reduces GB emptying, stasis promotes deposition |
Create a clinical summary document on GB polyp surveillance & management guidelines
gallbladder polyp management surveillance guidelines
PMID: 40483673
PMID: 37226819
SRU 2022 gallbladder polyp surveillance consensus recommendations size criteria
mkdir -p /tmp/workspace/gb-polyp && ls /tmp/workspace/gb-polyp/
~/gb-polyp/build_doc.py
from docx import Document
from docx.shared import Pt, Inches, RGBColor, Cm
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_TABLE_ALIGNMENT, WD_ALIGN_VERTICAL
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
import datetime
doc = Document()
# ── Page margins ──────────────────────────────────────────────
section = doc.sections[0]
section.top_margin = Cm(2.0)
section.bottom_margin = Cm(2.0)
section.left_margin = Cm(2.5)
section.right_margin = Cm(2.5)
# ── Styles ────────────────────────────────────────────────────
normal_style = doc.styles['Normal']
normal_style.font.name = 'Calibri'
normal_style.font.size = Pt(11)
h1 = doc.styles['Heading 1']
h1.font.name = 'Calibri'
h1.font.size = Pt(16)
h1.font.bold = True
h1.font.color.rgb = RGBColor(0x1F, 0x49, 0x7D)
h2 = doc.styles['Heading 2']
h2.font.name = 'Calibri'
h2.font.size = Pt(13)
h2.font.bold = True
h2.font.color.rgb = RGBColor(0x2E, 0x74, 0xB5)
h3 = doc.styles['Heading 3']
h3.font.name = 'Calibri'
h3.font.size = Pt(11)
h3.font.bold = True
h3.font.color.rgb = RGBColor(0x1F, 0x49, 0x7D)
# ── Helper functions ──────────────────────────────────────────
def add_colored_para(doc, text, bg_hex, font_size=10.5, bold=False):
"""Add a paragraph with background shading."""
p = doc.add_paragraph()
p.paragraph_format.space_before = Pt(4)
p.paragraph_format.space_after = Pt(4)
p.paragraph_format.left_indent = Inches(0.1)
run = p.add_run(text)
run.font.name = 'Calibri'
run.font.size = Pt(font_size)
run.bold = bold
# shading
pPr = p._p.get_or_add_pPr()
shd = OxmlElement('w:shd')
shd.set(qn('w:val'), 'clear')
shd.set(qn('w:color'), 'auto')
shd.set(qn('w:fill'), bg_hex)
pPr.append(shd)
return p
def set_cell_bg(cell, hex_color):
tc = cell._tc
tcPr = tc.get_or_add_tcPr()
shd = OxmlElement('w:shd')
shd.set(qn('w:val'), 'clear')
shd.set(qn('w:color'), 'auto')
shd.set(qn('w:fill'), hex_color)
tcPr.append(shd)
def set_cell_text(cell, text, bold=False, font_size=10, color_rgb=None, align=WD_ALIGN_PARAGRAPH.LEFT):
cell.text = ''
p = cell.paragraphs[0]
p.alignment = align
run = p.add_run(text)
run.font.name = 'Calibri'
run.font.size = Pt(font_size)
run.bold = bold
if color_rgb:
run.font.color.rgb = color_rgb
def add_bullet(doc, text, level=0, bold_prefix=None):
p = doc.add_paragraph(style='List Bullet')
p.paragraph_format.left_indent = Inches(0.25 + level * 0.25)
p.paragraph_format.space_after = Pt(2)
if bold_prefix:
run = p.add_run(bold_prefix)
run.bold = True
run.font.name = 'Calibri'
run.font.size = Pt(11)
p.add_run(text).font.name = 'Calibri'
else:
run = p.add_run(text)
run.font.name = 'Calibri'
run.font.size = Pt(11)
return p
def add_hr(doc):
p = doc.add_paragraph()
p.paragraph_format.space_before = Pt(4)
p.paragraph_format.space_after = Pt(4)
pPr = p._p.get_or_add_pPr()
pBdr = OxmlElement('w:pBdr')
bottom = OxmlElement('w:bottom')
bottom.set(qn('w:val'), 'single')
bottom.set(qn('w:sz'), '6')
bottom.set(qn('w:space'), '1')
bottom.set(qn('w:color'), '2E74B5')
pBdr.append(bottom)
pPr.append(pBdr)
# ══════════════════════════════════════════════════════════════
# COVER BLOCK
# ══════════════════════════════════════════════════════════════
title_p = doc.add_paragraph()
title_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
title_run = title_p.add_run('GALLBLADDER POLYPS')
title_run.font.name = 'Calibri'
title_run.font.size = Pt(22)
title_run.bold = True
title_run.font.color.rgb = RGBColor(0x1F, 0x49, 0x7D)
sub_p = doc.add_paragraph()
sub_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
sub_run = sub_p.add_run('Clinical Summary: Surveillance & Management Guidelines')
sub_run.font.name = 'Calibri'
sub_run.font.size = Pt(14)
sub_run.font.color.rgb = RGBColor(0x2E, 0x74, 0xB5)
meta_p = doc.add_paragraph()
meta_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
meta_run = meta_p.add_run(f'Prepared by Orris AI | Date: {datetime.date.today().strftime("%d %B %Y")} | Based on SRU 2022, European 2022, CAR 2025/2026 Guidelines')
meta_run.font.name = 'Calibri'
meta_run.font.size = Pt(9)
meta_run.font.color.rgb = RGBColor(0x80, 0x80, 0x80)
meta_run.italic = True
add_hr(doc)
doc.add_paragraph() # spacer
# ══════════════════════════════════════════════════════════════
# SECTION 1 - DEFINITION & EPIDEMIOLOGY
# ══════════════════════════════════════════════════════════════
doc.add_heading('1. Definition & Epidemiology', level=1)
add_colored_para(doc,
'A gallbladder (GB) polyp is any mucosal projection into the lumen of the gallbladder. '
'Most are non-neoplastic pseudopolyps with no malignant potential, detected incidentally on ultrasound.',
'EBF5FB', font_size=11)
doc.add_paragraph()
doc.add_heading('Prevalence', level=2)
add_bullet(doc, 'Detected in ~1-5% of adults on transabdominal ultrasound (TAUS)')
add_bullet(doc, 'Up to 5-10% in some Asian populations')
add_bullet(doc, 'Most are asymptomatic incidental findings')
add_bullet(doc, 'Cholesterol polyps account for ~60-70% of all GB polyps')
doc.add_paragraph()
doc.add_heading('Classification by Type', level=2)
# Classification table
tbl = doc.add_table(rows=1, cols=4)
tbl.style = 'Table Grid'
tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
hdr_cells = tbl.rows[0].cells
headers = ['Type', 'Frequency', 'Neoplastic?', 'Malignant Potential']
hdr_colors = ['1F497D', '1F497D', '1F497D', '1F497D']
for i, (h, c) in enumerate(zip(headers, hdr_colors)):
set_cell_bg(hdr_cells[i], c)
set_cell_text(hdr_cells[i], h, bold=True, font_size=10,
color_rgb=RGBColor(0xFF, 0xFF, 0xFF), align=WD_ALIGN_PARAGRAPH.CENTER)
data = [
('Cholesterol polyp', '~60-70%', 'No (pseudopolyp)', 'None'),
('Inflammatory polyp', '~10%', 'No (pseudopolyp)', 'None'),
('Adenomyoma', '~25%', 'No (hyperplastic)', 'None'),
('Adenoma', '~4%', 'YES - true neoplasm', 'Low-moderate (size-dependent)'),
('Carcinoma', '~2%', 'YES - malignant', 'High'),
]
row_colors = ['FFFFFF', 'F2F2F2', 'FFFFFF', 'FFF2CC', 'FFE0E0']
for row_data, row_color in zip(data, row_colors):
row = tbl.add_row()
for i, val in enumerate(row_data):
set_cell_bg(row.cells[i], row_color.replace('#',''))
bold = (i == 0)
set_cell_text(row.cells[i], val, bold=bold, font_size=10)
doc.add_paragraph()
# ══════════════════════════════════════════════════════════════
# SECTION 2 - RISK FACTORS FOR MALIGNANCY
# ══════════════════════════════════════════════════════════════
add_hr(doc)
doc.add_heading('2. Risk Factors for Malignancy in GB Polyps', level=1)
add_colored_para(doc,
'CLINICAL ALERT: The following risk factors increase the probability that a polyp is neoplastic (adenoma or carcinoma) rather than benign. Their presence should escalate management.',
'FFF2CC', font_size=10.5, bold=True)
doc.add_paragraph()
# Risk factors table - 2 column
rf_tbl = doc.add_table(rows=1, cols=3)
rf_tbl.style = 'Table Grid'
rf_hdr = rf_tbl.rows[0].cells
for cell, txt in zip(rf_hdr, ['Risk Factor', 'Threshold', 'Guideline Source']):
set_cell_bg(cell, '2E74B5')
set_cell_text(cell, txt, bold=True, font_size=10,
color_rgb=RGBColor(0xFF, 0xFF, 0xFF), align=WD_ALIGN_PARAGRAPH.CENTER)
rf_data = [
('Polyp size', '≥ 10 mm (European); ≥ 15 mm (SRU 2022)', 'Both guidelines'),
('Morphology - sessile / broad-based', 'Sessile with focal wall thickening > 4 mm = indeterminate risk', 'SRU 2022'),
('Age', '> 60 years', 'European 2022 / Sleisenger'),
('Primary Sclerosing Cholangitis (PSC)', 'Any polyp size - risk up to 60%', 'Both guidelines'),
('Presence of gallstones', 'Co-existing cholelithiasis', 'Sleisenger / Yamada'),
('Asian ethnicity', 'Higher background GB cancer risk', 'European 2022 / Korean review'),
('Single polyp', 'Solitary vs. multiple (multiple = usually benign cholesterol)', 'Sleisenger'),
('Rapid growth', '≥ 4 mm growth within 12 months (SRU); ≥ 2 mm in 2 years (European)', 'SRU 2022 / European 2022'),
('Familial / genetic syndromes', 'FAP, Peutz-Jeghers syndrome', 'Yamada / Sleisenger'),
]
for i, (factor, threshold, source) in enumerate(rf_data):
row = rf_tbl.add_row()
bg = 'FFFFFF' if i % 2 == 0 else 'F2F2F2'
set_cell_bg(row.cells[0], bg)
set_cell_bg(row.cells[1], bg)
set_cell_bg(row.cells[2], bg)
set_cell_text(row.cells[0], factor, bold=True, font_size=10)
set_cell_text(row.cells[1], threshold, font_size=10)
set_cell_text(row.cells[2], source, font_size=9)
doc.add_paragraph()
# ══════════════════════════════════════════════════════════════
# SECTION 3 - DIAGNOSTIC IMAGING
# ══════════════════════════════════════════════════════════════
add_hr(doc)
doc.add_heading('3. Diagnostic Imaging', level=1)
doc.add_heading('Transabdominal Ultrasound (TAUS) - First-Line', level=2)
add_bullet(doc, 'Primary imaging modality for detection and surveillance of GB polyps')
add_bullet(doc, 'Sensitivity ~80% for detection; accuracy for characterizing polyp type as low as 20%')
add_bullet(doc, 'Key feature: polyp does not move with patient position change (distinguishes from calculi); no acoustic shadowing')
add_bullet(doc, 'Up to 1/3 of "polyps" seen on US are not confirmed at cholecystectomy (false positives, especially <5 mm)')
doc.add_paragraph()
doc.add_heading('Endoscopic Ultrasound (EUS) - Second-Line', level=2)
add_bullet(doc, 'Diagnostic accuracy >90% for differentiating polyp types')
add_bullet(doc, 'EUS scoring system (size, number, shape, echogenicity, margins, Doppler flow) predicts neoplastic potential')
add_bullet(doc, 'Indicated when TAUS findings are indeterminate, or polyp is 6-9 mm with risk factors')
doc.add_paragraph()
doc.add_heading('Other Modalities', level=2)
add_bullet(doc, 'CEUS (Contrast-Enhanced US): detects vascularity in neoplastic polyps; emerging role')
add_bullet(doc, 'FDG-PET: anecdotal reports of predicting malignancy; not routine')
add_bullet(doc, 'CT scan: may miss polyps without contrast; limited role in characterization')
doc.add_paragraph()
# ══════════════════════════════════════════════════════════════
# SECTION 4 - SRU 2022 RISK STRATIFICATION
# ══════════════════════════════════════════════════════════════
add_hr(doc)
doc.add_heading('4. SRU 2022 Risk Stratification Algorithm', level=1)
add_colored_para(doc,
'The 2022 Society of Radiologists in Ultrasound (SRU) consensus stratifies GB polyps by MORPHOLOGY first, then SIZE. '
'This is now endorsed by the Canadian Association of Radiologists (CAR 2025/2026) as the preferred approach over European size-first guidelines.',
'E2EFDA', font_size=11)
doc.add_paragraph()
# SRU stratification table
sru_tbl = doc.add_table(rows=1, cols=4)
sru_tbl.style = 'Table Grid'
sru_hdr = sru_tbl.rows[0].cells
for cell, txt in zip(sru_hdr, ['Risk Category', 'Morphology Criteria', 'Size', 'Action']):
set_cell_bg(cell, '1F497D')
set_cell_text(cell, txt, bold=True, font_size=10,
color_rgb=RGBColor(0xFF, 0xFF, 0xFF), align=WD_ALIGN_PARAGRAPH.CENTER)
sru_data = [
('EXTREMELY LOW RISK',
'Pedunculated, thin-stalked ("ball-on-wall" appearance); almost certainly cholesterol/benign',
'≤ 9 mm\n10-14 mm\n≥ 15 mm',
'No follow-up needed\nFollow-up US at 12 months\nSurgical consultation',
'E2EFDA'),
('LOW RISK',
'Sessile or thick-stalked polyp WITHOUT adjacent focal wall thickening > 4 mm',
'≤ 6 mm\n7-9 mm\n10-14 mm\n≥ 15 mm',
'No follow-up needed\nFollow-up US at 12 months\nUS or surgical consultation\nSurgical consultation',
'FFF2CC'),
('INDETERMINATE RISK',
'Any polyp with adjacent focal wall thickening > 4 mm (raises concern for neoplasm)',
'≤ 6 mm\n≥ 7 mm',
'Follow-up US at 6 months\nSurgical consultation (always consider surgery)',
'FFE0E0'),
]
for cat, morphology, sizes, actions, bg in sru_data:
row = sru_tbl.add_row()
set_cell_bg(row.cells[0], bg)
set_cell_bg(row.cells[1], bg)
set_cell_bg(row.cells[2], bg)
set_cell_bg(row.cells[3], bg)
set_cell_text(row.cells[0], cat, bold=True, font_size=10)
set_cell_text(row.cells[1], morphology, font_size=9.5)
set_cell_text(row.cells[2], sizes, font_size=9.5)
set_cell_text(row.cells[3], actions, font_size=9.5)
doc.add_paragraph()
add_colored_para(doc,
'SRU Growth Trigger: Polyp growth ≥ 4 mm within 12 months = rapid growth → surgical referral regardless of category. '
'Growth ≤ 3 mm is within normal variation. Decrease ≥ 4 mm → consider discontinuing surveillance.',
'FFF2CC', font_size=10.5, bold=True)
doc.add_paragraph()
# ══════════════════════════════════════════════════════════════
# SECTION 5 - EUROPEAN 2022 GUIDELINES
# ══════════════════════════════════════════════════════════════
add_hr(doc)
doc.add_heading('5. European 2022 Joint Guidelines (ESGAR/EASL/EAHPBA/ESP)', level=1)
add_colored_para(doc,
'The European guidelines are SIZE-FIRST, then risk-factor stratified. They are more conservative than SRU 2022 '
'(lower surgery threshold at ≥10 mm). The CAR 2025 endorses SRU approach as preferred over European.',
'EBF5FB', font_size=11)
doc.add_paragraph()
doc.add_heading('European Indications for Cholecystectomy', level=2)
eu_tbl = doc.add_table(rows=1, cols=3)
eu_tbl.style = 'Table Grid'
eu_hdr = eu_tbl.rows[0].cells
for cell, txt in zip(eu_hdr, ['Scenario', 'Polyp Size', 'Recommendation']):
set_cell_bg(cell, '2E74B5')
set_cell_text(cell, txt, bold=True, font_size=10,
color_rgb=RGBColor(0xFF, 0xFF, 0xFF), align=WD_ALIGN_PARAGRAPH.CENTER)
eu_data = [
('Any polyp - large', '≥ 10 mm', 'Cholecystectomy recommended'),
('Symptomatic polyp', '< 10 mm', 'Cholecystectomy recommended'),
('6-9 mm + ANY risk factor*', '6-9 mm', 'Cholecystectomy recommended'),
('6-9 mm - NO risk factors', '6-9 mm', 'US surveillance at 6m, 1yr, 2yr'),
('< 5 mm + NO risk factors', '< 5 mm', 'No surveillance needed'),
('< 5 mm + risk factor present', '< 5 mm', 'US at 6m, 1yr, 2yr'),
]
for i, row_data in enumerate(eu_data):
row = eu_tbl.add_row()
bg = 'FFFFFF' if i % 2 == 0 else 'F2F2F2'
for j, val in enumerate(row_data):
set_cell_bg(row.cells[j], bg)
set_cell_text(row.cells[j], val, bold=(j==0), font_size=10)
doc.add_paragraph()
p = doc.add_paragraph()
r = p.add_run('*European risk factors for malignancy: age > 60 years | primary sclerosing cholangitis | Asian ethnicity | sessile polyp / focal GB wall thickening > 4 mm')
r.font.size = Pt(9)
r.font.italic = True
r.font.name = 'Calibri'
doc.add_paragraph()
doc.add_heading('European Growth Trigger', level=2)
add_bullet(doc, 'Growth ≥ 2 mm within the 2-year surveillance period → reassess with current size + risk factors')
add_bullet(doc, 'Multidisciplinary discussion to decide continuation of monitoring vs. cholecystectomy')
doc.add_paragraph()
# ══════════════════════════════════════════════════════════════
# SECTION 6 - GUIDELINE COMPARISON TABLE
# ══════════════════════════════════════════════════════════════
add_hr(doc)
doc.add_heading('6. Head-to-Head Guideline Comparison: SRU 2022 vs. European 2022', level=1)
comp_tbl = doc.add_table(rows=1, cols=3)
comp_tbl.style = 'Table Grid'
comp_hdr = comp_tbl.rows[0].cells
for cell, txt in zip(comp_hdr, ['Parameter', 'SRU 2022', 'European 2022']):
set_cell_bg(cell, '1F497D')
set_cell_text(cell, txt, bold=True, font_size=10,
color_rgb=RGBColor(0xFF, 0xFF, 0xFF), align=WD_ALIGN_PARAGRAPH.CENTER)
comp_data = [
('Primary stratifier', 'Polyp morphology, then size', 'Polyp size, then risk factors'),
('Surgery threshold', '≥ 15 mm (extremely low risk)\n≥ 10 mm (low risk)\n≥ 7 mm (indeterminate risk)', '≥ 10 mm universally'),
('6-9 mm polyp, no risk factors', 'No follow-up (extremely low risk)\nor US at 12 months (low risk)', 'US at 6m, 1yr, 2yr'),
('< 6 mm, no risk factors', 'No follow-up (all categories)', 'No follow-up'),
('Rapid growth trigger', '≥ 4 mm in 12 months → surgery', '≥ 2 mm in 2 years → reassess'),
('PSC patients', 'Indeterminate risk → surgery from ≥ 7 mm', 'Surgery for any polyp (high risk)'),
('Use of risk factors', 'Not in core algorithm (modifier only)', 'Central to algorithm'),
('CAR 2025 endorsement', 'PREFERRED (less aggressive, evidence-based)', 'More conservative; not preferred by CAR'),
]
for i, row_data in enumerate(comp_data):
row = comp_tbl.add_row()
bg = 'FFFFFF' if i % 2 == 0 else 'F2F2F2'
for j, val in enumerate(row_data):
set_cell_bg(row.cells[j], bg)
set_cell_text(row.cells[j], val, bold=(j==0), font_size=10)
doc.add_paragraph()
# ══════════════════════════════════════════════════════════════
# SECTION 7 - NATURAL HISTORY
# ══════════════════════════════════════════════════════════════
add_hr(doc)
doc.add_heading('7. Natural History', level=1)
add_bullet(doc, 'Mayo Clinic data: 200 patients with GB polyps followed for 15 years - <10% developed symptoms requiring surgery; NONE developed GB cancer')
add_bullet(doc, 'Annual/semi-annual US over 5 years in 109 patients with polyps < 10 mm: NO cancer developed; >88% showed no growth')
add_bullet(doc, 'Multiplicity of polyps strongly predicts benignity (cholesterol polyps mean number = 8 per series)')
add_bullet(doc, 'Single, large (>12 mm) adenomas frequently contain foci of carcinoma at resection (Japan series)')
add_bullet(doc, 'Cost-benefit (UK): surveillance of ALL GB polyps costs ~$9.7M over 20 years to save an estimated 5.4 lives/year; cost-effectiveness improves if restricted to 5-10 mm polyps')
doc.add_paragraph()
# ══════════════════════════════════════════════════════════════
# SECTION 8 - INDICATIONS FOR CHOLECYSTECTOMY (SUMMARY)
# ══════════════════════════════════════════════════════════════
add_hr(doc)
doc.add_heading('8. Indications for Cholecystectomy - Summary', level=1)
add_colored_para(doc,
'ABSOLUTE INDICATIONS (both SRU and European agree)',
'1F497D', font_size=11, bold=True)
p = doc.add_paragraph()
r = p.add_run('ABSOLUTE INDICATIONS (both SRU and European agree)')
r.font.bold = True
r.font.color.rgb = RGBColor(0x1F, 0x49, 0x7D)
r.font.name = 'Calibri'
r.font.size = Pt(11)
add_bullet(doc, 'Any polyp ≥ 15 mm (SRU) OR ≥ 10 mm (European) - strong suspicion of neoplasm')
add_bullet(doc, 'Symptomatic polyp (biliary pain attributable to polyp) at any size')
add_bullet(doc, 'Rapid growth: ≥ 4 mm in 12 months (SRU) / ≥ 2 mm in 2 years (European)')
add_bullet(doc, 'Indeterminate-risk polyp ≥ 7 mm on SRU criteria (focal wall thickening > 4 mm)')
add_bullet(doc, 'PSC patient with any polyp - malignant risk up to 60%')
add_bullet(doc, 'Polyp in setting of gallstones AND age > 60 years')
doc.add_paragraph()
p = doc.add_paragraph()
r = p.add_run('RELATIVE INDICATIONS (consider surgery, individualize)')
r.font.bold = True
r.font.color.rgb = RGBColor(0xC5, 0x50, 0x00)
r.font.name = 'Calibri'
r.font.size = Pt(11)
add_bullet(doc, 'Polyp 6-9 mm with one or more risk factors (European guideline)')
add_bullet(doc, 'Polyp 10-14 mm that is low-risk morphology on SRU - patient preference or evidence of growth')
add_bullet(doc, 'Solitary polyp with patient anxiety / inability to comply with surveillance')
doc.add_paragraph()
# ══════════════════════════════════════════════════════════════
# SECTION 9 - PATIENT APPLICATION (this case)
# ══════════════════════════════════════════════════════════════
add_hr(doc)
doc.add_heading('9. Application to This Patient', level=1)
add_colored_para(doc,
'Patient: 21-year-old female | Findings: 2 gallbladder polyps, largest 3 mm | Source: Western Regional Hospital USG Report',
'EBF5FB', font_size=11, bold=True)
doc.add_paragraph()
doc.add_heading('Assessment', level=2)
add_bullet(doc, 'Size: 3 mm - well below all thresholds for surgical concern (<5 mm)')
add_bullet(doc, 'Multiplicity: TWO polyps - strong predictor of cholesterol polyps (benign pseudopolyps)')
add_bullet(doc, 'Demographics: Young female - classic profile for cholesterol polyps (estrogen effect)')
add_bullet(doc, 'No gallstones, no free fluid, no biliary dilation on this report')
doc.add_paragraph()
doc.add_heading('Management Recommendation', level=2)
add_colored_para(doc,
'Per SRU 2022 (CAR-endorsed preferred guideline): If morphology is pedunculated / extremely low-risk - NO surveillance ultrasound needed for polyps ≤ 9 mm.',
'E2EFDA', font_size=10.5)
doc.add_paragraph()
add_colored_para(doc,
'Per European 2022: Polyps < 5 mm with NO risk factors - NO follow-up required.',
'E2EFDA', font_size=10.5)
doc.add_paragraph()
add_bullet(doc, 'ACTION: Reassure patient - this is almost certainly a benign cholesterol polyp')
add_bullet(doc, 'No immediate intervention or surgery indicated')
add_bullet(doc, 'If any risk factors present (PSC, age >60, Asian): US at 6 months, 1 year, 2 years')
add_bullet(doc, 'If polyp grows ≥ 4 mm or becomes symptomatic: reassess and consider cholecystectomy')
add_bullet(doc, 'Address modifiable risk: dietary advice regarding fat/cholesterol intake, weight management if applicable')
doc.add_paragraph()
# ══════════════════════════════════════════════════════════════
# SECTION 10 - REFERENCES
# ══════════════════════════════════════════════════════════════
add_hr(doc)
doc.add_heading('10. Key References', level=1)
refs = [
'Sleisenger and Fordtran\'s Gastrointestinal and Liver Disease, 11th ed. Chapter 67: Cholesterolosis & Gallbladder Polyps.',
'Yamada\'s Textbook of Gastroenterology, 7th ed. Chapter 84: Benign Tumors of the Gallbladder.',
'Fung CI, Kamaya A, et al. Recommendations for the Management of Incidentally Detected Gallbladder Polyps: Update of the 2020 CAR Recommendations. Can Assoc Radiol J. 2026. PMID: 40483673.',
'Son JH. Recent Updates on Management and Follow-up of Gallbladder Polyps. Korean J Gastroenterol. 2023. PMID: 37226819.',
'Society of Radiologists in Ultrasound (SRU) Consensus Conference Recommendations for Incidental Gallbladder Polyp Management. Radiology. November 2022.',
'European (ESGAR/EASL/EAHPBA/ESP) Joint Guidelines on GB Polyp Management. 2022.',
'Fischer\'s Mastery of Surgery, 8th ed. Chapter: Gallbladder Polyps.',
]
for i, ref in enumerate(refs, 1):
p = doc.add_paragraph()
p.paragraph_format.left_indent = Inches(0.25)
p.paragraph_format.first_line_indent = Inches(-0.25)
p.paragraph_format.space_after = Pt(4)
r = p.add_run(f'{i}. {ref}')
r.font.name = 'Calibri'
r.font.size = Pt(9.5)
# ══════════════════════════════════════════════════════════════
# FOOTER
# ══════════════════════════════════════════════════════════════
add_hr(doc)
footer_p = doc.add_paragraph()
footer_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
fr = footer_p.add_run('This document is a clinical summary prepared for educational purposes. Clinical decisions should be individualized based on patient presentation, local guidelines, and specialist consultation.')
fr.font.name = 'Calibri'
fr.font.size = Pt(8.5)
fr.font.italic = True
fr.font.color.rgb = RGBColor(0x80, 0x80, 0x80)
# Save
out_path = '/tmp/workspace/gb-polyp/GB_Polyp_Surveillance_Management.docx'
doc.save(out_path)
print(f'Saved: {out_path}')
python3 /tmp/workspace/gb-polyp/build_doc.py
python3 -c " from docx import Document doc = Document('/tmp/workspace/gb-polyp/GB_Polyp_Surveillance_Management.docx') print('Sections:', len(doc.sections)) print('Paragraphs:', len(doc.paragraphs)) print('Tables:', len(doc.tables)) # print first few headings count = 0 for p in doc.paragraphs: if 'Heading' in str(p.style.name) and p.text.strip(): print(f' [{p.style.name}] {p.text}') count += 1 if count > 15: break "
GB Polyp Surveillance Management
Word Document · DOCX
| Section | Content |
|---|---|
| 1. Definition & Epidemiology | Prevalence, full classification table by polyp type with malignancy risk |
| 2. Risk Factors for Malignancy | Highlighted alert box + 9-row table (size, morphology, age, PSC, gallstones, ethnicity, growth) |
| 3. Diagnostic Imaging | TAUS, EUS, CEUS, PET - with sensitivity/specificity data |
| 4. SRU 2022 Algorithm | Color-coded 3-tier risk table (Extremely Low / Low / Indeterminate) with size-specific actions |
| 5. European 2022 Guidelines | Size-first approach table with risk factor-based modifications |
| 6. Guideline Comparison | Head-to-head SRU vs. European table on 8 parameters |
| 7. Natural History | Mayo Clinic data, long-term follow-up studies, cost-benefit analysis |
| 8. Surgery Indications | Absolute vs. relative indications cleanly separated |
| 9. Patient Application | Applied directly to Aachilaa's case (3 mm, 2 polyps, 21F) with management recommendation |
| 10. References | 7 citations including Sleisenger, Yamada, SRU 2022, CAR 2025, PMID-linked papers |
Why and how number and sizes increases ?
gallbladder polyp growth natural history size increase
Textbook note: "Although they may be solitary in 20% of cases, the mean number of cholesterol polyps present in one series was 8. The multiplicity of polyps generally indicates cholesterol polyps and predicts benignity." - Sleisenger & Fordtran, Ch. 67
| Step | Mechanism |
|---|---|
| 1. Sustained supersaturation | If the bile remains lithogenic (abnormal bile composition persists), the mucosal absorption of cholesterol continues without equilibrium |
| 2. More foam cells recruited | Each polyp villus recruits additional macrophages from the lamina propria, expanding the foam cell mass |
| 3. Villous hyperplasia | The mucosa itself undergoes villous hyperplasia (the polyp's "skeleton" grows as the epithelium proliferates to accommodate the lipid load) |
| 4. Coalescence | Adjacent lipid deposits merge, creating a larger, lobulated mass |
| 5. Failure of GB motility | Impaired GB emptying (e.g. from hormones, fasting, dysmotility) = prolonged contact time between bile and mucosa = more absorption per cycle |
Normal epithelium
↓ (initial mutagenic hit - bile acids, carcinogens, chronic inflammation)
Epithelial dysplasia (focal)
↓ (accumulation of further mutations: TP53, KRAS, PIK3CA pathways)
Adenoma (benign neoplasm)
↓ (additional oncogenic mutations)
Adenocarcinoma (invasive cancer)
12 mm: frequently contain foci of carcinoma (Japan series: 7 of 18 adenomas >12 mm had carcinoma foci)
18 mm: often contain advanced invasive cancer with serosal involvement
| Feature | Cholesterol Polyp Growth | Neoplastic Polyp Growth |
|---|---|---|
| Rate | Slow, self-limiting | Progressive, may accelerate |
| Mechanism | Lipid accumulation | Cell division (mitosis) |
| Upper size limit | Rarely >10 mm | No limit - can grow to >30 mm |
| Number | Usually multiple (8 on average) | Usually solitary |
| Shape change | Remains pedunculated, smooth | May become sessile, irregular, broad-based |
| Growth trigger for surgery | Detachment complications | Malignant transformation |
| SRU growth alarm | ≥ 4 mm in 12 months | Any rapid growth |
How do estrogen and female sex hormones specifically promote cholesterol polyp formation?
estrogen sex hormones gallbladder cholesterol bile lithogenicity
Estrogen
↓ binds hepatic Estrogen Receptor-α (ERα) — NOT ERβ
Activates SREBP-2 pathway
(Sterol Regulatory Element Binding Protein-2)
↓
SREBP-2 responsive genes upregulated
↓
↑ Hepatic cholesterol BIOSYNTHESIS (new cholesterol made)
↓
↑ Secretion of newly synthesized cholesterol into bile
↓
BILE SUPERSATURATED WITH CHOLESTEROL
Estrogen
↓
↑ Hepatic LDL receptor expression
↓
↑ Clearance of plasma LDL cholesterol from blood into liver
↓ (liver now has excess cholesterol load)
↑ Secretion of this cleared cholesterol into bile
↓
Further bile supersaturation
"The hepatic estrogen receptor α, which is activated by estrogen, interferes with the negative feedback regulation of cholesterol biosynthesis by stimulating the SREBP-2 pathway, with resulting activation of SREBP-2-responsive genes in the cholesterol biosynthetic pathway. These alterations lead to increased hepatic secretion of newly synthesized cholesterol and supersaturation of bile."
- Sleisenger & Fordtran, Ch. 65
Progesterone
↓
Inhibits smooth muscle contraction of GB wall
↓
↓ Gallbladder ejection fraction
↓
↑ Fasting gallbladder volume (GB doesn't empty between meals)
↑ Fed gallbladder volume (GB doesn't empty after meals either)
↓
Bile stasis - bile sits in contact with mucosa for longer
↓
↑ Mucosal absorption time for cholesterol micelles
↓
More cholesterol absorbed into lamina propria macrophages
= MORE FOAM CELLS = BIGGER / MORE POLYPS
Progesterone
↓
↓ Bile acid secretion into bile
↓
Ratio shifts: less bile acids, same cholesterol
↓
Cholesterol Saturation Index (CSI) rises further
+
Qualitative change: more hydrophobic (toxic) bile acids produced
↓
Mucosal damage + increased cholesterol precipitation
| Hormonal State | Estrogen Effect | Progesterone Effect | Net Biliary Risk |
|---|---|---|---|
| Post-pubertal (cycling) | ↑ cholesterol secretion | Luteal phase ↓ GB motility | Moderate - cyclic |
| Oral contraceptives | High-dose OCP doubles gallstone prevalence | Synthetic progestins add stasis | HIGH |
| Pregnancy (esp. 3rd trimester) | Estrogen peaks → max cholesterol secretion | Progesterone peaks → max stasis | VERY HIGH (sludge in 36% pregnant women) |
| HRT (postmenopausal) | Unopposed estrogen → HR 1.38 for cholecystectomy | Variable | HIGH (especially unopposed estrogen) |
| After menopause (no HRT) | Estrogen drops | Progesterone drops | Risk equalizes with men by age 60 |
This explains the epidemiological observation: "Women are twice as likely as men to form cholesterol gallstones. The difference begins at puberty and continues through childbearing years... Cholesterolosis shows a marked predilection for women until age 60 years. After that, gender differences are less pronounced."
- Sleisenger & Fordtran, Ch. 65 & 67
| Factor | Gallstone Formation | Cholesterol Polyp Formation |
|---|---|---|
| Site of excess cholesterol | Precipitates in GB lumen (nucleation) | Absorbed into GB epithelium/lamina propria |
| Requires | Nucleating proteins in bile | Mucosal absorptive capacity |
| Rate of mucosal esterification | Low → cholesterol stays in bile → stone | High → cholesterol stored in macrophages → polyp |
| Stasis effect | Longer contact → crystal nucleation | Longer contact → more mucosal absorption |
Any genetic factors mutation malnutrition causes GB polyp
gallbladder polyp genetic factors mutation FAP cholesterolosis
gallbladder cholesterolosis genetic susceptibility ABCG5 ABCG8 bile
gallbladder polyp malnutrition TPN fasting sludge
gallstone genetics ABCG5 ABCG8 cholesterol transporter bile
PMID: 38347599
| Gene | Protein | Function |
|---|---|---|
| ABCG5 | Sterolin-1 | Hepatic canalicular cholesterol transporter |
| ABCG8 | Sterolin-2 | Works as obligate heterodimer with ABCG5 |
Insulin resistance in liver
↓
FoxO1 transcription factor unchecked
↓
↑ Expression of Abcg5 / Abcg8 transporters
+ ↓ Oxysterol 7α-hydroxylase (bile salt synthesis enzyme)
↓
MORE cholesterol secreted into bile
LESS bile acids made to dissolve it
↓
LITHOGENIC BILE → Cholesterolosis → Polyps
| Syndrome | Gene Mutated | Mechanism | GB Risk |
|---|---|---|---|
| Familial Adenomatous Polyposis (FAP) | APC (5q21), autosomal dominant | APC loss → uncontrolled Wnt/beta-catenin signaling → adenoma formation throughout GI tract including GB | GB adenomas/polyps are a recognized extracolonic manifestation |
| Peutz-Jeghers Syndrome | STK11/LKB1 | Loss of STK11 tumor suppressor → hamartomatous polyps in GI tract and GB | Increased prevalence of GB polyps |
| Lynch Syndrome (HNPCC) | MLH1, MSH2, MSH6, PMS2 (mismatch repair genes) | Microsatellite instability → accelerated somatic mutations in GB epithelium | Increased GB cancer risk; polyps as precursor |
No enteral feeding / TPN
↓
No cholecystokinin (CCK) release from duodenum
(CCK is only released in response to food entering duodenum)
↓
No CCK stimulation of GB contraction
↓
GB completely stagnant - bile pools without emptying
↓
↑ Biliary calcium concentration (reabsorption of water without cholesterol)
+ Mucin gel accumulates in stagnant GB
+ Unconjugated bilirubin precipitates
↓
BILIARY SLUDGE → can evolve into pigment stones
+ PROLONGED BILE-MUCOSAL CONTACT TIME
↓
Increased mucosal cholesterol absorption → cholesterolosis → polyp formation
Celiac disease (genetic: HLA-DQ2/DQ8) + gluten exposure
↓
Autoimmune destruction of proximal small intestinal mucosa
↓
Loss of I-cells (CCK-secreting cells) in duodenum/jejunum
↓
DEFECTIVE CCK release after meals
↓
GB does not contract adequately postprandially
↓
Bile stasis + incomplete emptying
↓
Same pathway as TPN → sludge → cholesterolosis → polyps
Terminal ileum disease or resection
↓
↓ Bile acid reabsorption (interrupted enterohepatic circulation)
↓
Bile acid pool DEPLETED
↓
Less bile acids in bile = less cholesterol solubilization
(same mechanism as CYP7A1 deficiency but acquired)
↓
Relative cholesterol supersaturation
+ Solubilization of unconjugated bilirubin → ↑ bilirubin in bile
↓
BOTH cholesterol and pigment stone/polyp-promoting environment
| Category | Specific Factor | Mechanism | Polyp Type Promoted |
|---|---|---|---|
| Genetic | ABCG5/ABCG8 gain-of-function | ↑ Cholesterol secretion into bile | Cholesterol polyp |
| Genetic | ABCB4 (MDR3) loss | ↓ Biliary phospholipid (LPAC) | Cholesterol polyp |
| Genetic | CYP7A1 variants | ↓ Bile acid synthesis | Cholesterol polyp |
| Genetic | ERα / GPR30 (Lith18) | Amplified estrogen lithogenicity | Cholesterol polyp |
| Genetic | FoxO1 / insulin resistance | ↑ Abcg5/Abcg8 expression | Cholesterol polyp |
| Genetic syndrome | APC mutation (FAP) | Wnt/beta-catenin dysregulation | Adenomatous polyp |
| Genetic syndrome | STK11 (Peutz-Jeghers) | Loss of tumor suppressor | Hamartomatous polyp |
| Nutritional | TPN / prolonged fasting | No CCK → GB stasis | Sludge → cholesterol/pigment |
| Nutritional | Celiac disease | CCK deficiency → GB dysmotility | Cholesterol polyp |
| Nutritional | Ileal resection | ↓ Bile acid pool → supersaturation | Cholesterol polyp |
| Nutritional | Rapid weight loss | Cholesterol mobilization surge | Cholesterol polyp |
| Nutritional | Protein malnutrition | ↓ Bile acid synthesis/conjugation | All types |
How is chance to form malignant
gallbladder polyp malignant transformation cancer risk
| Polyp Type | Malignant Potential | Overall Cancer Risk |
|---|---|---|
| Cholesterol polyp (~65%) | ZERO - no malignant potential | None |
| Inflammatory polyp (~10%) | ZERO | None |
| Adenomyoma (~25%) | ZERO (not considered premalignant) | None |
| Adenoma (~4%) | YES - true premalignant lesion | Low-moderate, size-dependent |
| Carcinoma (~2%) | Already malignant at detection | High |
"Pseudopolyps (cholesterol, inflammatory, adenomyoma) have NO malignant potential. True polyps (adenomas, carcinomas) have potential to harbor or become gallbladder cancer."
- Fischer's Mastery of Surgery, Ch. 160
| Polyp Size | Estimated Malignancy Risk | Clinical Action |
|---|---|---|
| < 5 mm | Near zero (~0%) | No surveillance if no risk factors |
| 5-9 mm | Very low, but not zero | Surveillance vs. surgery based on risk factors |
| ≥ 10 mm | Significantly elevated | Cholecystectomy recommended |
| > 12 mm | High - adenomas frequently contain carcinoma foci | Cholecystectomy urgently |
| > 18 mm | Very high - often advanced invasive cancer at presentation | Open cholecystectomy (may not be amenable to laparoscopy) |
| > 27.5 mm | Mean size of malignant lesions in one series | Usually already advanced at diagnosis |
Normal GB epithelium
↓ (chronic inflammation, bile acid toxicity, gallstones)
DYSPLASIA (low-grade → high-grade)
↓
CARCINOMA IN SITU (Tis)
↓ ~10-15 YEARS estimated timeline
INVASIVE ADENOCARCINOMA
↓
T1a: invades lamina propria only
T1b: invades muscularis propria
T2: invades perimuscular connective tissue
T3: perforates serosa / invades liver / adjacent organ
T4: invades portal vein / hepatic artery / ≥2 organs
| Risk Factor | Mechanism | Risk Increase |
|---|---|---|
| Polyp size > 10 mm | Larger = more likely neoplastic adenoma | Primary predictor |
| Age > 50-60 years | Accumulated somatic mutations over time | Strongest demographic predictor |
| Primary Sclerosing Cholangitis (PSC) | Chronic biliary inflammation → relentless mucosal damage | Risk up to 60% for any GB polyp |
| Sessile morphology / focal wall thickening > 4 mm | Broad-based = infiltrative growth pattern = neoplastic | Indeterminate risk (SRU 2022) |
| Solitary polyp | Multiple polyps = cholesterol (benign); single = higher neoplastic probability | ~2-4x more concerning than multiple |
| Gallstones co-existing | Chronic epithelial irritation from stone contact | Amplifies dysplasia risk |
| Asian ethnicity | Higher background GB cancer incidence in East/South Asia and South America | Geographic/genetic modifier |
| Rapid growth ≥ 4 mm/year | Aggressive cellular proliferation, not lipid accumulation | Alarm sign - refer for surgery |
| FAP / Peutz-Jeghers | APC / STK11 germline mutations | Significantly elevated |
| AJCC Stage | T Stage | 5-Year Survival |
|---|---|---|
| Stage 0 (Tis) | Carcinoma in situ | ~100% with simple cholecystectomy |
| Stage I | T1 (lamina propria or muscularis) | ~85-95% |
| Stage IIA/IIB | T2 (perimuscular tissue) | ~40-70% |
| Stage IIIA | T3 (serosa / liver invasion) | 15-63% (wide range) |
| Stage IIIB | T1-3 + lymph nodes (N1) | Poor |
| Stage IVA | T4 (portal vein / hepatic artery) | 7-25% |
| Stage IVB | Any T + N2 or M1 (metastases) | < 5% |
| Feature | This Patient | Risk Implication |
|---|---|---|
| Age | 21 years | Very young - very low accumulated mutation load |
| Size | 3 mm | Essentially zero malignant risk at this size |
| Number | Two polyps | Strongly suggests cholesterol type (benign) |
| Morphology | Not reported as sessile/thick-stalk | No indeterminate features |
| PSC | Not present | No high-risk condition |
| Gallstones | Absent | No chronic irritation |
How to confirm either the polyp is adenoma infective or other
gallbladder polyp diagnosis differentiation adenoma cholesterol EUS imaging
gallbladder polyp EUS CEUS diagnosis accuracy neoplastic
miR-33 biomarker cholesterol adenomatous gallbladder polyp differentiation
PMID: 40087680
Step 1: TAUS (first-line, always)
↓ still uncertain?
Step 2: EUS ± Color Doppler (second-line)
↓ still uncertain? / high-risk features?
Step 3: CEUS or CT/MRI
↓ polyp meets criteria / high-risk
Step 4: CHOLECYSTECTOMY + HISTOPATHOLOGY
(only definitive confirmation)
↓ emerging/future
Step 5: Molecular biomarkers (miR-33, etc.)
| Feature | Cholesterol Polyp | Adenoma (Neoplastic) | Inflammatory Polyp | Adenomyoma |
|---|---|---|---|---|
| Echogenicity | Hyperechoic (bright) - due to cholesterol crystals | Isoechoic or mixed | Isoechoic, variable | Isoechoic, with cystic spaces |
| Stalk | Thin, pedunculated stalk ("ball-on-wall") | Sessile or broad base | Sessile / flat | Sessile (fundal) |
| Acoustic shadow | NO shadow (key feature) | No shadow | No shadow | Comet-tail artifacts (Rokitansky-Aschoff sinuses) |
| Mobility | Fixed to wall (does NOT move) | Fixed | Fixed | Fixed |
| Number | Usually multiple (average 8) | Usually solitary | Can be multiple | Usually solitary (fundal) |
| Size | Small, usually < 10 mm | Variable; larger = more suspicious | Small | Usually > 10 mm |
| Wall thickening | No | May have focal wall thickening > 4 mm | With cholecystitis - diffuse thickening | Diffuse or segmental thickening |
| Internal vascularity (Doppler) | No internal flow | Internal vascularity present | Absent | Absent |
"The polyps can be identified accurately as cholesterolosis polyps by EUS, which demonstrates a characteristic aggregation of hyperechoic spots."
- Sleisenger & Fordtran, Ch. 67
"The histologic types of gallbladder polyps CANNOT be distinguished on clinical grounds alone. Nor do US and cholecystographic findings predict histology reliably. Accuracy in characterizing the type of polyp may be as low as 20%."
- Sleisenger & Fordtran, Ch. 67
| EUS Parameter | Benign (Cholesterol) Feature | Neoplastic (Adenoma) Feature |
|---|---|---|
| Size | < 10 mm | > 10 mm |
| Number | Multiple | Single |
| Shape | Pedunculated, smooth | Sessile, lobulated, irregular |
| Echogenicity | Uniformly hyperechoic with aggregated spots | Heterogeneous, isoechoic |
| Internal pattern | Aggregation of hyperechoic spots (cholesterol crystals) | Hypoechoic areas, irregular texture |
| Margins | Well-defined | Irregular / indistinct |
| Doppler flow | No internal blood flow | Internal vascularity (arterial flow) |
| Resistive index | N/A | High resistive index = malignant pattern |
"An EUS scoring system incorporating size, number, shape, echogenicity, polyp margins + color Doppler flow may predict neoplastic potential. Color Doppler flow on EUS may predict malignancy."
- Sleisenger & Fordtran, Ch. 67
| Polyp Type | Histology |
|---|---|
| Cholesterol polyp | Lipid-laden foamy macrophages (foam cells) in lamina propria; NO nuclear atypia, NO mitoses |
| Inflammatory polyp | Granulation tissue, inflammatory cell infiltrate (neutrophils, plasma cells, lymphocytes); reactive epithelium; association with cholecystitis |
| Adenomyoma | Deep invaginations of epithelium into thickened muscularis (Rokitansky-Aschoff sinuses); epithelial hyperplasia; NO dysplasia |
| Adenoma (tubular) | Glands encased in fibrous stroma; nuclear atypia present; NO invasion |
| Adenoma (papillary) | Branching connective tissue covered by tall columnar cells with nuclear atypia |
| Carcinoma in situ | Full-thickness epithelial atypia, dysplastic cells, no basement membrane invasion |
| Invasive adenocarcinoma | Infiltrating glands through muscularis and beyond; desmoplastic stroma; vascular / perineural invasion |
This is a research-stage tool currently, not yet in clinical guidelines, but promising as a future non-invasive discriminator.
| Clinical Clue | Suggests Inflammatory Polyp |
|---|---|
| History | Recurrent RUQ pain, fever, prior cholecystitis episodes |
| Blood tests | Elevated WBC, CRP, ESR during episodes |
| Helicobacter pylori | Recent studies link H. pylori infection to hepatobiliary disease including GB polyps (PMID: 40125519); H. pylori serology/UBT may be positive |
| Salmonella/biliary infection | History of enteric fever; Salmonella serology |
| TAUS features | Associated diffuse GB wall thickening, pericholecystic fluid, sonographic Murphy's sign |
| Multiple small flat polyps | On background of thickened inflamed GB wall |
GB polyp found on TAUS
↓
Is it MULTIPLE + small (<5mm) + hyperechoic + pedunculated + no Doppler flow?
YES → Almost certainly CHOLESTEROL polyp
No further workup needed
NO / UNCERTAIN ↓
Is it SOLITARY + sessile + > 6mm + ± Doppler flow?
YES → Get EUS
EUS: hyperechoic aggregated spots = cholesterol (benign)
EUS: heterogeneous + internal vascularity = NEOPLASTIC → surgery
STILL UNCERTAIN ↓
Add CEUS / CT/MRI for enhancement pattern
No enhancement = benign
Early arterial enhancement = neoplastic → surgery
CONFIRMED NEOPLASTIC ↓
CHOLECYSTECTOMY → HISTOPATHOLOGY (definitive answer)