Surgery for fmge exam preparation
FMGE surgery high yield topics 2024 2025
https://fmgeprep.com/fmge-subjects/surgery
Weightage: ~32-40 questions (8-10% of paper) - second only to Medicine in total marks. Surgery in FMGE is scenario-based - always know the clinical triad, investigation of choice, and surgical procedure + its complications.
| Type | Key Feature |
|---|---|
| IDC (NST) | Most common (70-80%) |
| ILC | Loss of E-cadherin; bilateral; Indian file pattern |
| DCIS | Non-invasive; precursor lesion |
| Inflammatory | Peau d'orange, no discrete lump; worst prognosis |
| Paget's disease | Eczematous nipple change; associated underlying DCIS/IDC |
| Medullary | Well-circumscribed, lymphocytic infiltrate; better prognosis |
| Mucinous/Colloid | Elderly women; best prognosis |
| Type | Origin | Key Features | Prognosis |
|---|---|---|---|
| Papillary (PTC) | Follicular cells | Most common (>88%); Psammoma bodies; "Orphan Annie eye" nuclei; spreads via lymphatics; BRAF mutation | Best (>95% 10-yr survival) |
| Follicular (FTC) | Follicular cells | Spreads hematogenously (lung/bone); cannot differentiate on FNAC; RAS mutation | Good |
| Medullary (MTC) | C-cells (parafollicular) | Secretes calcitonin; amyloid stroma; associated with MEN 2A/2B; RET mutation | Intermediate |
| Anaplastic | Follicular cells | Rapidly growing; worst prognosis; elderly | Very poor (months) |
| Lymphoma | Lymphocytes | Associated with Hashimoto thyroiditis | Variable |
| Feature | Indirect | Direct |
|---|---|---|
| Through | Deep inguinal ring | Hesselbach's triangle (posterior wall) |
| Relation to inferior epigastric vessels | Lateral | Medial |
| Most common type | Yes (especially young males) | Less common |
| Strangulation risk | High | Low |
| Congenital vs acquired | Congenital (patent processus vaginalis) | Acquired |
| Feature | Paralytic Ileus | Mechanical |
|---|---|---|
| Bowel sounds | Absent | High-pitched, tinkling |
| Causes | Post-op, peritonitis, hypokalemia | Adhesions, hernia |
| Treatment | Conservative | Usually surgical |
| Class | Blood Loss | HR | BP | Urine output |
|---|---|---|---|---|
| I | <750 ml (<15%) | <100 | Normal | >30 ml/hr |
| II | 750-1500 ml (15-30%) | 100-120 | Normal | 20-30 ml/hr |
| III | 1500-2000 ml (30-40%) | 120-140 | Decreased | 5-20 ml/hr |
| IV | >2000 ml (>40%) | >140 | Very low | <5 ml/hr |
| Feature | Venous | Arterial |
|---|---|---|
| Site | Gaiter area (medial malleolus) | Pressure points (heel, toes) |
| Pain | Mild | Severe (claudication) |
| Pulses | Present | Absent |
| Edge | Sloping | Punched out |
| Sign | Condition |
|---|---|
| Murphy's sign | Acute cholecystitis |
| McBurney's tenderness | Appendicitis |
| Rovsing's sign | Appendicitis |
| Psoas sign | Retrocecal appendicitis |
| Obturator sign | Pelvic appendicitis |
| Howship-Romberg sign | Obturator hernia |
| Courvoisier's sign | Ca head of pancreas |
| Charcot's triad | Ascending cholangitis |
| Trousseau's sign (malignancy) | Ca pancreas |
| Cullen's sign | Periumbilical bruising - acute pancreatitis/hemoperitoneum |
| Grey-Turner's sign | Flank bruising - retroperitoneal hemorrhage/acute pancreatitis |
| Battle's sign | Post-auricular bruising - basal skull fracture |
| Caput medusae | Portal hypertension |
| Coffee bean sign | Sigmoid volvulus |
| Rigler's sign (double wall) | Pneumoperitoneum (free air) |
| Marker | Associated Tumor |
|---|---|
| PSA | Carcinoma prostate |
| CEA | Colorectal cancer (also Ca breast, Ca lung) |
| CA 19-9 | Carcinoma pancreas |
| CA-125 | Ovarian cancer |
| AFP | Hepatocellular carcinoma, Testicular germ cell tumor |
| hCG | Choriocarcinoma, gestational trophoblastic disease |
| Calcitonin | Medullary thyroid carcinoma |
| 5-HIAA (urine) | Carcinoid tumor |
| VMA/metanephrines | Pheochromocytoma |
Find recent FMGE surgery questions from past papers for targeted practice
FMGE surgery previous year questions 2023 2024 2025 with answers
FMGE MCI screening test surgery questions past papers PDF 2022 2023 2024
https://www.prepladder.com/fmge-study-material/previous-year…
https://medicine.careers360.com/articles/fmge-exam-questions
FMGE 2024 2025 surgery questions hernia appendicitis thyroid breast trauma answers memory based
Important note: FMGE does not release official question papers. All PYQs below are memory-based (recalled by candidates after the exam). They very closely reflect actual exam content and patterns.
| Topic | Frequency | Key Concept Tested |
|---|---|---|
| Urology (RCC, bladder, testis) | Very High | Staging, management, tumor markers |
| Breast (Paget's, BI-RADS, staging) | Very High | Diagnosis, Cooper's ligaments, surgery |
| Thyroid (FNAC, MEN, RLN) | High | Bethesda system, MEN2A sequence |
| GI (Courvoisier, ZES, PJS) | High | Named syndromes, signs |
| Hernia (types, anatomy) | High | Named hernias, Howship-Romberg |
| Trauma (ATLS, blast) | High | Tension pneumo, blast classification |
| Hepatobiliary (bile leak, gallstones) | Moderate | Strasberg, Courvoisier |
| Colorectal oncology | Moderate | Polyposis syndromes, staging |
| Sutures/wound healing | Moderate | Suture types (image-based) |
| Dumping syndrome | Moderate | Early vs late |
Make a study guide PDF with all these PYQs organized by topic
ls -la /tmp/workspace/ 2>/dev/null || echo "workspace empty or not found"
mkdir -p /tmp/workspace/fmge-surgery && python3 -c "from reportlab.lib.pagesizes import A4; print('reportlab OK')"
~/fmge-surgery/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import mm, cm
from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_JUSTIFY
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, PageBreak, KeepTogether
)
from reportlab.platypus.tableofcontents import TableOfContents
from reportlab.lib.colors import HexColor
import os
OUTPUT = "/tmp/workspace/fmge-surgery/FMGE_Surgery_PYQ_Study_Guide.pdf"
# ── Colour palette ──────────────────────────────────────────────────────────
DARK_BLUE = HexColor("#1A3A5C")
MID_BLUE = HexColor("#2E6DA4")
LIGHT_BLUE = HexColor("#D6E8F7")
ACCENT_TEAL = HexColor("#0D7377")
GREEN_BG = HexColor("#E8F5E9")
GREEN_DARK = HexColor("#2E7D32")
ORANGE_BG = HexColor("#FFF3E0")
ORANGE_DARK = HexColor("#E65100")
YELLOW_BG = HexColor("#FFFDE7")
RED_BG = HexColor("#FFEBEE")
RED_DARK = HexColor("#C62828")
GREY_LIGHT = HexColor("#F5F5F5")
GREY_MID = HexColor("#9E9E9E")
WHITE = colors.white
W, H = A4
# ── Styles ───────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()
def style(name, parent="Normal", **kw):
s = ParagraphStyle(name, parent=styles[parent], **kw)
return s
S_COVER_TITLE = style("CoverTitle", fontSize=28, textColor=WHITE,
fontName="Helvetica-Bold", leading=36, alignment=TA_CENTER)
S_COVER_SUB = style("CoverSub", fontSize=14, textColor=HexColor("#BBDEFB"),
fontName="Helvetica", leading=20, alignment=TA_CENTER)
S_COVER_META = style("CoverMeta", fontSize=11, textColor=HexColor("#90CAF9"),
fontName="Helvetica", leading=16, alignment=TA_CENTER)
S_CH_TITLE = style("ChTitle", fontSize=18, textColor=WHITE,
fontName="Helvetica-Bold", leading=24, alignment=TA_LEFT,
leftIndent=6)
S_SECTION = style("Section", fontSize=13, textColor=DARK_BLUE,
fontName="Helvetica-Bold", leading=18, spaceBefore=12,
spaceAfter=4)
S_BODY = style("Body", fontSize=9.5, textColor=HexColor("#212121"),
fontName="Helvetica", leading=14, spaceAfter=4,
leftIndent=0, alignment=TA_JUSTIFY)
S_BOLD = style("Bold", fontSize=9.5, textColor=HexColor("#212121"),
fontName="Helvetica-Bold", leading=14)
S_Q_NUM = style("QNum", fontSize=10, textColor=WHITE,
fontName="Helvetica-Bold", leading=14, alignment=TA_CENTER)
S_Q_TEXT = style("QText", fontSize=10, textColor=DARK_BLUE,
fontName="Helvetica-Bold", leading=15, spaceAfter=4,
leftIndent=4)
S_OPT = style("Opt", fontSize=9.5, textColor=HexColor("#37474F"),
fontName="Helvetica", leading=13, leftIndent=12)
S_ANS = style("Ans", fontSize=9.5, textColor=GREEN_DARK,
fontName="Helvetica-Bold", leading=13, leftIndent=4)
S_EXPL = style("Expl", fontSize=9, textColor=HexColor("#424242"),
fontName="Helvetica-Oblique", leading=13, leftIndent=4,
spaceAfter=2)
S_TAG = style("Tag", fontSize=8, textColor=HexColor("#546E7A"),
fontName="Helvetica-Oblique", leading=11)
S_TBL_HDR = style("TblHdr", fontSize=9, textColor=WHITE,
fontName="Helvetica-Bold", leading=12, alignment=TA_CENTER)
S_TBL_CELL = style("TblCell", fontSize=8.5, textColor=HexColor("#212121"),
fontName="Helvetica", leading=12)
S_FOOTER_NOTE = style("FooterNote", fontSize=8, textColor=GREY_MID,
fontName="Helvetica-Oblique", leading=11, alignment=TA_CENTER)
S_TOC_TITLE = style("TocTitle", fontSize=16, textColor=DARK_BLUE,
fontName="Helvetica-Bold", leading=22, spaceAfter=8,
alignment=TA_CENTER)
S_BULLET = style("Bullet", fontSize=9.5, textColor=HexColor("#212121"),
fontName="Helvetica", leading=14, leftIndent=14,
firstLineIndent=-10)
S_KEY_ITEM = style("KeyItem", fontSize=9.5, textColor=DARK_BLUE,
fontName="Helvetica-Bold", leading=14, leftIndent=4)
S_INTRO_BODY = style("IntroBody", fontSize=10, textColor=HexColor("#212121"),
fontName="Helvetica", leading=15, spaceAfter=4,
alignment=TA_JUSTIFY)
# ── Page template (header + footer) ─────────────────────────────────────────
CHAPTER_TITLE_HOLDER = [""] # mutable so inner functions can update it
def on_page(canvas, doc):
canvas.saveState()
# Header
canvas.setFillColor(DARK_BLUE)
canvas.rect(0, H - 28, W, 28, stroke=0, fill=1)
canvas.setFont("Helvetica-Bold", 9)
canvas.setFillColor(WHITE)
canvas.drawString(20, H - 18, "FMGE Surgery PYQ Study Guide | 2022–2025")
canvas.drawRightString(W - 20, H - 18, CHAPTER_TITLE_HOLDER[0])
# Footer
canvas.setFillColor(GREY_LIGHT)
canvas.rect(0, 0, W, 20, stroke=0, fill=1)
canvas.setFont("Helvetica", 8)
canvas.setFillColor(GREY_MID)
canvas.drawCentredString(W / 2, 6, f"Page {doc.page} | Memory-based questions for practice only")
canvas.restoreState()
def on_cover_page(canvas, doc):
canvas.saveState()
canvas.setFillColor(DARK_BLUE)
canvas.rect(0, 0, W, H, stroke=0, fill=1)
# Decorative top stripe
canvas.setFillColor(MID_BLUE)
canvas.rect(0, H - 60, W, 60, stroke=0, fill=1)
canvas.setFillColor(ACCENT_TEAL)
canvas.rect(0, H - 64, W, 4, stroke=0, fill=1)
# Bottom stripe
canvas.setFillColor(MID_BLUE)
canvas.rect(0, 0, W, 50, stroke=0, fill=1)
canvas.setFillColor(ACCENT_TEAL)
canvas.rect(0, 50, W, 4, stroke=0, fill=1)
canvas.restoreState()
# ── Helper builders ──────────────────────────────────────────────────────────
def chapter_header(title, subtitle=""):
"""Returns a coloured chapter-title block."""
CHAPTER_TITLE_HOLDER[0] = title
elems = []
elems.append(Spacer(1, 2*mm))
tbl_data = [[Paragraph(title, S_CH_TITLE)]]
tbl = Table(tbl_data, colWidths=[W - 80])
tbl.setStyle(TableStyle([
("BACKGROUND", (0, 0), (-1, -1), MID_BLUE),
("ROUNDEDCORNERS", [6]),
("TOPPADDING", (0, 0), (-1, -1), 8),
("BOTTOMPADDING", (0, 0), (-1, -1), 8),
("LEFTPADDING", (0, 0), (-1, -1), 12),
]))
elems.append(tbl)
if subtitle:
elems.append(Spacer(1, 3*mm))
elems.append(Paragraph(subtitle, S_BODY))
elems.append(Spacer(1, 4*mm))
return elems
def question_block(number, year, topic, q_text, options, answer, explanation, tag=""):
"""Returns a self-contained question card."""
# Number badge + year tag header
badge_data = [[
Paragraph(str(number), S_Q_NUM),
Paragraph(f"<b>{year}</b> | {topic}", S_TAG)
]]
badge = Table(badge_data, colWidths=[26, W - 80 - 32])
badge.setStyle(TableStyle([
("BACKGROUND", (0, 0), (0, 0), MID_BLUE),
("BACKGROUND", (1, 0), (1, 0), LIGHT_BLUE),
("VALIGN", (0, 0), (-1, -1), "MIDDLE"),
("TOPPADDING", (0, 0), (-1, -1), 5),
("BOTTOMPADDING", (0, 0), (-1, -1), 5),
("LEFTPADDING", (1, 0), (1, 0), 8),
]))
body_rows = []
body_rows.append(Paragraph(q_text, S_Q_TEXT))
body_rows.append(Spacer(1, 2*mm))
for opt in options:
body_rows.append(Paragraph(opt, S_OPT))
body_rows.append(Spacer(1, 2*mm))
body_rows.append(Paragraph(f"✅ {answer}", S_ANS))
body_rows.append(Spacer(1, 1*mm))
body_rows.append(Paragraph(f"<i>{explanation}</i>", S_EXPL))
if tag:
body_rows.append(Spacer(1, 1*mm))
body_rows.append(Paragraph(f"🔖 {tag}", S_TAG))
body_tbl = Table([[r] for r in body_rows], colWidths=[W - 80])
body_tbl.setStyle(TableStyle([
("BACKGROUND", (0, 0), (-1, -1), GREY_LIGHT),
("TOPPADDING", (0, 0), (-1, -1), 3),
("BOTTOMPADDING", (0, 0), (-1, -1), 3),
("LEFTPADDING", (0, 0), (-1, -1), 10),
("RIGHTPADDING", (0, 0), (-1, -1), 10),
]))
block = [badge, body_tbl, Spacer(1, 5*mm)]
return KeepTogether(block)
def info_box(title, content_paras, bg=LIGHT_BLUE, border=MID_BLUE):
rows = [[Paragraph(f"<b>{title}</b>", style("IB", fontSize=10,
textColor=border, fontName="Helvetica-Bold", leading=14))]]
for p in content_paras:
rows.append([p])
tbl = Table(rows, colWidths=[W - 80])
tbl.setStyle(TableStyle([
("BACKGROUND", (0, 0), (-1, -1), bg),
("LINEABOVE", (0, 0), (-1, 0), 2, border),
("TOPPADDING", (0, 0), (-1, -1), 5),
("BOTTOMPADDING", (0, 0), (-1, -1), 5),
("LEFTPADDING", (0, 0), (-1, -1), 10),
("RIGHTPADDING", (0, 0), (-1, -1), 10),
]))
return [tbl, Spacer(1, 4*mm)]
def simple_table(headers, rows, col_widths=None):
if col_widths is None:
col_widths = [(W - 80) / len(headers)] * len(headers)
data = [[Paragraph(h, S_TBL_HDR) for h in headers]]
for r in rows:
data.append([Paragraph(str(c), S_TBL_CELL) for c in r])
tbl = Table(data, colWidths=col_widths)
style_cmds = [
("BACKGROUND", (0, 0), (-1, 0), DARK_BLUE),
("ROWBACKGROUNDS",(0, 1), (-1, -1), [WHITE, GREY_LIGHT]),
("GRID", (0, 0), (-1, -1), 0.4, HexColor("#BDBDBD")),
("TOPPADDING", (0, 0), (-1, -1), 5),
("BOTTOMPADDING", (0, 0), (-1, -1), 5),
("LEFTPADDING", (0, 0), (-1, -1), 6),
("VALIGN", (0, 0), (-1, -1), "TOP"),
]
tbl.setStyle(TableStyle(style_cmds))
return [tbl, Spacer(1, 5*mm)]
# ════════════════════════════════════════════════════════════════════════════
# BUILD DOCUMENT
# ════════════════════════════════════════════════════════════════════════════
doc = SimpleDocTemplate(
OUTPUT, pagesize=A4,
leftMargin=25*mm, rightMargin=15*mm,
topMargin=35*mm, bottomMargin=25*mm,
title="FMGE Surgery PYQ Study Guide 2022–2025",
author="Orris Medical AI",
subject="FMGE Surgery Previous Year Questions"
)
story = []
# ── COVER PAGE ───────────────────────────────────────────────────────────────
story.append(Spacer(1, 30*mm))
story.append(Paragraph("FMGE Surgery", S_COVER_TITLE))
story.append(Spacer(1, 4*mm))
story.append(Paragraph("Previous Year Questions Study Guide", S_COVER_SUB))
story.append(Spacer(1, 6*mm))
story.append(HRFlowable(width=120*mm, thickness=1.5, color=ACCENT_TEAL,
hAlign="CENTER"))
story.append(Spacer(1, 6*mm))
story.append(Paragraph("Memory-Based PYQs | 2022 – 2025 | All Sessions", S_COVER_META))
story.append(Spacer(1, 8*mm))
# Stats strip
stats = [["25 PYQs", "10 Topics", "32–40 Qs in exam", "2022 – 2025"]]
st = Table(stats, colWidths=[38*mm]*4)
st.setStyle(TableStyle([
("BACKGROUND", (0, 0), (-1, -1), ACCENT_TEAL),
("TEXTCOLOR", (0, 0), (-1, -1), WHITE),
("FONTNAME", (0, 0), (-1, -1), "Helvetica-Bold"),
("FONTSIZE", (0, 0), (-1, -1), 10),
("ALIGN", (0, 0), (-1, -1), "CENTER"),
("TOPPADDING", (0, 0), (-1, -1), 8),
("BOTTOMPADDING", (0, 0), (-1, -1), 8),
]))
story.append(st)
story.append(Spacer(1, 12*mm))
story.append(Paragraph(
"Topics covered: Urology · Breast · Thyroid · GI & Hepatobiliary · "
"Hernia · Trauma · Colorectal · Vascular · Sutures & Principles",
S_COVER_META))
story.append(Spacer(1, 16*mm))
story.append(Paragraph(
"Compiled by Orris Medical AI | For educational practice only",
S_COVER_META))
story.append(PageBreak())
# ── HOW TO USE THIS GUIDE ────────────────────────────────────────────────────
CHAPTER_TITLE_HOLDER[0] = "How to Use This Guide"
story += chapter_header("📖 How to Use This Guide")
intro_text = [
("What are these questions?",
"All questions are memory-based recalls from real FMGE exam sessions "
"(2022–2025). FMGE/NBEMS does not release official papers, so these "
"recalls are the closest available resource to actual exam content."),
("How to practice",
"Cover the answer and explanation. Read the clinical scenario carefully. "
"Select your answer, then reveal. Focus on the <b>explanation</b> — "
"understanding the concept is more valuable than memorising the answer."),
("Weightage",
"Surgery carries approximately <b>32–40 questions (8–10%)</b> of the "
"300-question FMGE paper, making it the second-highest weighted subject "
"after Medicine. Urology, Breast, and Thyroid are the heaviest subtopics."),
("Repeat topics",
"Topics marked <b>🔁 Repeating</b> have appeared in 3 or more consecutive "
"FMGE sessions. Prioritise these for maximum ROI on revision time."),
]
for heading, body in intro_text:
story.append(Paragraph(f"<b>{heading}</b>", S_SECTION))
story.append(Paragraph(body, S_INTRO_BODY))
story.append(Spacer(1, 3*mm))
story.append(Spacer(1, 4*mm))
story += info_box(
"⚡ Top 12 Highest-Repeat Concepts (appeared in 3+ sessions)",
[Paragraph(t, S_BULLET) for t in [
"• Courvoisier's sign — painless jaundice + palpable GB = Ca pancreas",
"• Stewart-Treves syndrome — lymphangiosarcoma after post-mastectomy lymphedema",
"• Howship-Romberg sign — obturator hernia (medial thigh pain on hip rotation)",
"• RLN vs SLN injury after thyroidectomy (hoarseness vs high-pitch voice loss)",
"• FNAC cannot diagnose follicular thyroid carcinoma — needs lobectomy",
"• In MEN 2A: operate pheochromocytoma BEFORE thyroidectomy",
"• BI-RADS 4 = suspicious, biopsy recommended",
"• Tension pneumothorax = immediate needle decompression — NO X-ray first",
"• Retrocaval ureter = unilateral hydronephrosis",
"• AFP is NOT elevated in pure seminoma",
"• Partial nephrectomy for T1a (≤4 cm) RCC",
"• Umbilical hernia in children — watchful waiting until age 3–4 years",
]],
bg=YELLOW_BG, border=HexColor("#F9A825")
)
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════════════════
# CHAPTER 1 — UROLOGY
# ════════════════════════════════════════════════════════════════════════════
CHAPTER_TITLE_HOLDER[0] = "Chapter 1: Urology"
story += chapter_header("Chapter 1 — Urology",
"5–6 questions expected per session | High-yield: RCC staging, testicular tumors, bladder cancer")
story.append(question_block(
1, "FMGE 2023", "Urology — Renal Cell Carcinoma",
"A 44-year-old lady presents with a ballotable flank mass. CT imaging shows a 4 cm renal mass. "
"Urine examination reveals malignant cells. What is the MOST appropriate management?",
["A. Partial nephrectomy",
"B. Partial nephrectomy + neoadjuvant chemotherapy",
"C. Radical nephrectomy",
"D. Radical nephrectomy + postoperative radiotherapy"],
"A — Partial nephrectomy",
"For RCC ≤4 cm (T1a), nephron-sparing partial nephrectomy is the standard of care. "
"Radical nephrectomy is for larger/complex tumors. RCC is radioresistant.",
"🔁 Repeating | RCC T1a (≤4 cm) → Partial nephrectomy"
))
story.append(question_block(
2, "FMGE 2023", "Urology — Hydronephrosis",
"Which of the following causes UNILATERAL hydronephrosis?",
["A. Phimosis",
"B. Posterior urethral valves",
"C. Urethral strictures",
"D. Retrocaval ureter"],
"D — Retrocaval ureter",
"Retrocaval (circumcaval) ureter wraps behind the IVC causing right-sided unilateral "
"hydronephrosis. Options A, B, C are infravesical obstructions causing bilateral hydronephrosis.",
"🔁 Repeating | Retrocaval ureter = unilateral (right) hydronephrosis"
))
story.append(question_block(
3, "FMGE June 2024", "Urology — Sex Cord Stromal Tumor",
"A 40-year-old man presents with gynecomastia. Ultrasound reveals a 1 cm solid intratesticular mass. "
"Serum testosterone is 600 ng/dL; estradiol is 35 pg/mL. What is the most likely diagnosis?",
["A. Spermatocytic tumor",
"B. Sertoli cell tumor",
"C. Granulosa cell tumor",
"D. Leydig cell tumor"],
"D — Leydig cell tumor",
"Leydig (interstitial) cell tumors secrete both androgens and estrogens → gynecomastia. "
"Small, solid, intratesticular. AFP and hCG NOT elevated. Histological hallmark: Reinke crystals. "
"Sertoli cell tumors also cause gynecomastia but less commonly tested.",
"Differentiator: Leydig = Reinke crystals; AFP/hCG negative (not a GCT)"
))
story.append(question_block(
4, "FMGE 2024–2025", "Urology — Testicular Tumor (Image-based)",
"A 35-year-old male has a bulky scrotal swelling. Orchidectomy is performed. The gross section "
"shows a gray-white, homogeneous, lobulated mass WITHOUT hemorrhage or necrosis. "
"What is the most likely diagnosis?",
["A. Seminoma",
"B. Teratoma",
"C. Yolk sac tumor",
"D. Endodermal sinus tumor"],
"A — Seminoma",
"Seminoma: most common testicular GCT in adults (peak 30–40s). Gross: gray-white, homogeneous, "
"lobulated, NO hemorrhage or necrosis. AFP NOT elevated in pure seminoma. "
"Radiosensitive. NSGCTs (teratoma, yolk sac) show hemorrhage/necrosis grossly.",
"🔁 Repeating | Seminoma: AFP negative; gray-white homogeneous gross appearance"
))
story.append(question_block(
5, "FMGE June 2024", "Urology — Post-mastectomy Complication",
"A woman had axillary lymph node dissection for breast cancer. Years later she develops "
"progressive painless arm swelling. The arm now shows purplish skin nodules. "
"What is the most likely diagnosis?",
["A. Lymphangiosarcoma (Stewart-Treves syndrome)",
"B. Thoracic outlet syndrome",
"C. Chronic venous insufficiency",
"D. Recurrent breast cancer"],
"A — Lymphangiosarcoma (Stewart-Treves syndrome)",
"Chronic post-mastectomy lymphedema rarely undergoes malignant transformation to "
"lymphangiosarcoma — this is Stewart-Treves syndrome. Purplish skin nodules on lymphedematous arm "
"is a classic FMGE clinical picture.",
"🔁 Repeating | Stewart-Treves = lymphangiosarcoma complicating chronic lymphedema"
))
story.append(Spacer(1, 4*mm))
story += info_box("📌 Urology Quick-Reference",
[Paragraph(t, S_BULLET) for t in [
"• T1a (≤4 cm) RCC → Partial nephrectomy | T1b (4–7 cm) → Partial or radical",
"• Painless hematuria in adult → bladder TCC until proven otherwise",
"• Schistosoma haematobium → Squamous cell carcinoma of bladder",
"• Prostate cancer: peripheral zone; BPH: transitional zone",
"• Osteoblastic bone mets + elevated ALP → Ca prostate",
"• VHL gene mutation → Clear cell RCC",
]], bg=LIGHT_BLUE, border=MID_BLUE)
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════════════════
# CHAPTER 2 — BREAST SURGERY
# ════════════════════════════════════════════════════════════════════════════
CHAPTER_TITLE_HOLDER[0] = "Chapter 2: Breast Surgery"
story += chapter_header("Chapter 2 — Breast Surgery",
"5–6 questions expected | High-yield: Paget's, BI-RADS, Cooper's ligaments, MRM, staging")
story.append(question_block(
6, "FMGE 2024 Jan", "Breast — Investigation Sequence",
"A 50-year-old woman presents with a breast lump. Mammography shows a spiculated mass with "
"microcalcifications. FNAC is reported as malignant. What is the MOST appropriate next step "
"before surgery?",
["A. Lumpectomy alone",
"B. Modified radical mastectomy immediately",
"C. Core needle biopsy for receptor status before surgery",
"D. Radical (Halsted) mastectomy"],
"C — Core needle biopsy",
"FNAC provides cytology only; core needle biopsy provides histological type + ER/PR/HER2 receptor "
"status, which guides surgical plan (BCS vs MRM) and need for neoadjuvant therapy. "
"Halsted mastectomy is historical and no longer standard.",
"Triple assessment = Clinical + Imaging + Core biopsy (not just FNAC)"
))
story.append(question_block(
7, "FMGE 2023–2024", "Breast — Nipple Lesion",
"A woman presents with a chronic eczematous, weeping lesion around the nipple-areola. "
"No palpable lump. Biopsy shows large cells with pale, vacuolated cytoplasm in the epidermis. "
"What is the diagnosis?",
["A. Eczema of the nipple",
"B. Bowen's disease",
"C. Paget's disease of the breast",
"D. Inflammatory carcinoma"],
"C — Paget's disease of the breast",
"Paget cells: large malignant cells with pale vacuolated cytoplasm in the nipple epidermis. "
"Always associated with underlying DCIS or IDC. Key differentiator: eczema improves with topical "
"steroids; Paget's does not respond.",
"🔁 Repeating | Paget's = Paget cells in epidermis + underlying DCIS/IDC always"
))
story.append(question_block(
8, "FMGE July 2025", "Breast — Anatomy / Skin Dimpling",
"A patient presents with skin dimpling over the breast and nipple retraction. "
"Which structure is responsible for the skin dimpling?",
["A. Pectoralis major",
"B. Cooper's suspensory ligaments",
"C. Lactiferous ducts",
"D. Superficial fascia"],
"B — Cooper's suspensory ligaments",
"Cooper's ligaments are fibrous bands anchoring breast tissue to overlying skin. "
"When invaded by tumor, they shorten and tether the skin → dimpling. "
"Central duct involvement → nipple retraction. Peau d'orange = dermal lymphatic obstruction "
"(seen in inflammatory carcinoma).",
"🔁 Repeating | Cooper's ligament invasion → skin dimpling"
))
story.append(question_block(
9, "FMGE July 2025", "Breast — Imaging (BI-RADS)",
"A 45-year-old woman has a breast mass on mammography. The radiologist assigns BI-RADS category 4. "
"What does this signify?",
["A. Normal, routine annual screening",
"B. Benign finding, 6-month follow-up imaging",
"C. Suspicious — tissue biopsy recommended",
"D. Highly suggestive of malignancy (>95% chance)"],
"C — Suspicious; biopsy recommended",
"BI-RADS: 0=Incomplete | 1=Negative | 2=Benign | 3=Probably benign (6 mo f/u, <2%) | "
"4=Suspicious (2–95%, biopsy) | 5=Highly suspicious (>95%) | 6=Known malignancy.",
"🔁 Repeating | BI-RADS 4 = biopsy; BI-RADS 3 = 6-month follow-up"
))
story.append(Spacer(1, 2*mm))
# Breast staging table
story += simple_table(
["T Stage", "Definition", "N Stage", "Definition"],
[
["T1", "≤2 cm", "N0", "No nodes"],
["T2", "2–5 cm", "N1", "Mobile ipsilateral axillary"],
["T3", ">5 cm", "N2", "Fixed axillary"],
["T4", "Chest wall/skin", "N3", "Infraclavicular / supraclavicular / internal mammary"],
],
col_widths=[22*mm, 40*mm, 22*mm, 76*mm]
)
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════════════════
# CHAPTER 3 — THYROID SURGERY
# ════════════════════════════════════════════════════════════════════════════
CHAPTER_TITLE_HOLDER[0] = "Chapter 3: Thyroid Surgery"
story += chapter_header("Chapter 3 — Thyroid Surgery",
"4–5 questions expected | High-yield: FNAC/Bethesda, MEN 2A sequence, RLN injury")
story.append(question_block(
10, "FMGE 2024 Jan", "Thyroid — FNAC / Bethesda",
"A 35-year-old female has a painless thyroid nodule. FNAC report: follicular cells arranged in "
"microfollicles, no nuclear atypia (Bethesda Category IV — Follicular Neoplasm). "
"What is the next step?",
["A. Total thyroidectomy immediately",
"B. Repeat FNAC in 3 months",
"C. Hemithyroidectomy (diagnostic lobectomy)",
"D. Radioactive iodine therapy"],
"C — Hemithyroidectomy (diagnostic lobectomy)",
"FNAC cannot distinguish follicular adenoma from follicular carcinoma — only histology showing "
"capsular/vascular invasion can. Therefore diagnostic lobectomy is performed. "
"If malignancy confirmed → completion total thyroidectomy.",
"🔁 Repeating | FTC cannot be diagnosed on FNAC alone"
))
story.append(question_block(
11, "FMGE 2023–2024", "Thyroid — MEN 2A Operative Sequence",
"A patient with MEN 2A has bilateral pheochromocytomas causing severe hypertension. "
"They also have medullary thyroid carcinoma. In what order should surgery be performed?",
["A. Thyroidectomy first, then adrenalectomy",
"B. Pheochromocytoma (adrenalectomy) FIRST, then thyroidectomy",
"C. Both can be done simultaneously",
"D. Parathyroidectomy first, then thyroidectomy"],
"B — Pheochromocytoma first, then thyroidectomy",
"An untreated pheo can cause a lethal hypertensive crisis under general anesthesia during "
"thyroid surgery. Rule: always screen for and treat pheo BEFORE any elective surgery in MEN 2A. "
"MEN 2A = MTC + Pheo + Primary hyperparathyroidism (RET mutation).",
"🔁 Repeating | MEN 2A: Pheo operated BEFORE thyroidectomy"
))
story.append(question_block(
12, "FMGE 2024–2025", "Thyroid — Post-op Nerve Injury",
"A patient develops hoarseness of voice after total thyroidectomy. Which nerve is injured?",
["A. External branch of superior laryngeal nerve (EBSLN)",
"B. Recurrent laryngeal nerve — unilateral",
"C. Recurrent laryngeal nerve — bilateral",
"D. Hypoglossal nerve"],
"B — Unilateral RLN injury",
"Unilateral RLN injury = hoarseness (ipsilateral cord in paramedian position). "
"Bilateral RLN = stridor + respiratory distress → emergency tracheostomy. "
"EBSLN injury = loss of high-pitched phonation (cricothyroid paralysis) — occurs with "
"high ligation of the superior thyroid artery.",
"🔁 Repeating | RLN unilateral = hoarse | RLN bilateral = stridor | EBSLN = high pitch loss"
))
story += info_box("📌 Thyroid Carcinoma Quick-Reference",
[Paragraph(t, S_BULLET) for t in [
"• Papillary (most common, >88%): Psammoma bodies, Orphan Annie nuclei, BRAF mutation, lymphatic spread",
"• Follicular: hematogenous spread (lung/bone), RAS mutation, FNAC cannot diagnose → needs histology",
"• Medullary: C-cells, calcitonin, amyloid stroma, RET mutation, MEN 2A/2B",
"• Anaplastic: elderly, worst prognosis (months), rapidly growing",
"• MEN 2A = MTC + Pheo + Parathyroid | MEN 2B = MTC + Pheo + Mucosal neuromas + Marfanoid habitus",
]], bg=ORANGE_BG, border=ORANGE_DARK)
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════════════════
# CHAPTER 4 — GI & HEPATOBILIARY SURGERY
# ════════════════════════════════════════════════════════════════════════════
CHAPTER_TITLE_HOLDER[0] = "Chapter 4: GI & Hepatobiliary"
story += chapter_header("Chapter 4 — GI & Hepatobiliary Surgery",
"4–5 questions expected | Courvoisier's sign, ZES, PJS, bile leak, esophageal anatomy")
story.append(question_block(
13, "FMGE 2025 July", "GI — Polyposis Syndrome",
"A patient has episodic abdominal pain, mucocutaneous hyperpigmentation around the lips, "
"and recurrent GI bleeding. Colonoscopy shows hamartomatous polyps. What is the diagnosis?",
["A. Familial adenomatous polyposis (FAP)",
"B. Peutz-Jeghers syndrome (PJS)",
"C. Gardner syndrome",
"D. HNPCC / Lynch syndrome"],
"B — Peutz-Jeghers syndrome",
"PJS: STK11/LKB1 gene mutation. Triad: hamartomatous polyps (GI) + mucocutaneous melanin "
"spots (lips, buccal mucosa, perioral) + GI bleeding/intussusception. "
"FAP = adenomatous polyps, thousands, no pigmentation. Gardner = FAP + desmoids + osteomas.",
"🔁 Repeating | PJS: STK11 gene, hamartomas + perioral pigmentation"
))
story.append(question_block(
14, "FMGE 2024–2025", "Hepatobiliary — Obstructive Jaundice",
"A 55-year-old man has progressive painless jaundice, significant weight loss, and a palpable, "
"non-tender gallbladder. What is the most likely diagnosis?",
["A. Choledocholithiasis",
"B. Carcinoma head of pancreas",
"C. Acute cholecystitis",
"D. Primary sclerosing cholangitis"],
"B — Carcinoma head of pancreas (Courvoisier's sign)",
"Courvoisier's law: Painless jaundice + palpable non-tender GB = NOT due to stones. "
"Stones → fibrosis → contracted GB (not palpable). Ca head of pancreas → gradual obstruction "
"→ GB distends. CA 19-9 is the tumor marker. Whipple's = pancreaticoduodenectomy.",
"🔁 Repeating | Courvoisier = palpable GB + painless jaundice = Ca pancreas"
))
story.append(question_block(
15, "FMGE July 2025", "GI — Zollinger-Ellison Syndrome",
"A patient with Zollinger-Ellison syndrome has recurrent peptic ulcers despite PPI therapy. "
"Where is the MOST common location for gastrinoma?",
["A. Gastric body",
"B. Passaro's triangle (gastrinoma triangle)",
"C. Pancreatic tail",
"D. Sigmoid colon"],
"B — Passaro's (gastrinoma) triangle",
"Passaro's triangle = (1) junction of cystic duct & CBD superiorly + (2) junction of 2nd & 3rd "
"duodenum inferiorly + (3) neck-body junction of pancreas medially. ~90% of gastrinomas arise here. "
"ZES: hypergastrinemia → multiple/atypical PUs + diarrhea. Associated with MEN 1.",
"Gastrinoma triangle = most common site of ZES gastrinoma"
))
story.append(question_block(
16, "FMGE 2023", "GI — Esophageal Anatomy",
"During esophagoscopy, a fishbone is found impacted at 25 cm from the incisor teeth. "
"This corresponds to which anatomical constriction of the esophagus?",
["A. Cricopharyngeus (upper esophageal sphincter) — 15 cm",
"B. Aortic arch constriction — 22–25 cm",
"C. Left main bronchus — 27–28 cm",
"D. Lower esophageal sphincter — 38–40 cm"],
"B — Aortic arch constriction (22–25 cm from incisors)",
"Esophageal constrictions from incisors: Cricopharyngeus 15 cm | Aortic arch 22–25 cm | "
"Left main bronchus 27–28 cm | LES/Diaphragm 38–40 cm. "
"Foreign bodies most commonly lodge at the cricopharyngeus (narrowest point).",
"Esophageal constriction distances — high FMGE frequency"
))
story.append(question_block(
17, "FMGE July 2025", "Hepatobiliary — Post-cholecystectomy Bile Leak",
"A patient develops a bile leak after laparoscopic cholecystectomy. "
"USG confirms a biloma. What is the sequence of management?",
["A. Immediate re-laparoscopy",
"B. CT-guided drainage alone",
"C. USG-guided percutaneous drainage of biloma → then ERCP for ductal injury",
"D. Conservative management with antibiotics only"],
"C — USG-guided drainage → ERCP",
"Post-cholecystectomy bile leak: First drain biloma with USG-guided percutaneous drainage. "
"Then ERCP with sphincterotomy ± stenting for the bile duct injury. "
"Strasberg classification grades biliary injuries (A through E).",
"Strasberg classification used for post-cholecystectomy bile duct injuries"
))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════════════════
# CHAPTER 5 — HERNIA
# ════════════════════════════════════════════════════════════════════════════
CHAPTER_TITLE_HOLDER[0] = "Chapter 5: Hernia"
story += chapter_header("Chapter 5 — Hernia",
"4–5 questions expected | Named hernias, Hesselbach's triangle, Howship-Romberg sign")
story.append(question_block(
18, "FMGE 2022 Dec", "Hernia — Surgical Incision",
"A 23-year-old male had acute appendicitis 3 days ago and now presents with abdominal pain "
"and tenderness with a palpable mass in the RIF. Which incision is MOST appropriate?",
["A. McBurney's grid-iron incision",
"B. Rutherford-Morrison (muscle-cutting/extended) incision",
"C. Lanz transverse incision",
"D. Midline laparotomy"],
"B — Rutherford-Morrison incision",
"For complicated appendicitis (3 days old, appendix mass / abscess), a Rutherford-Morrison "
"muscle-cutting extension of the grid-iron provides better access. "
"McBurney's / Lanz are adequate for simple uncomplicated appendicitis only.",
"Rutherford-Morrison = extended grid-iron for complicated appendicitis"
))
story.append(question_block(
19, "FMGE July 2025", "Hernia — Pediatric Umbilical Hernia",
"A child presents with an umbilical region swelling that reduces spontaneously. "
"What is the correct management?",
["A. Immediate surgical repair",
"B. Watchful waiting — spontaneous closure expected by age 3–4 years",
"C. Truss application",
"D. Laparoscopic repair at age 1 year"],
"B — Watchful waiting until age 3–4 years",
"Umbilical hernias in children have ~90% spontaneous closure rate by age 2–3 years. "
"Surgery is indicated if: persists beyond age 3–4 years, diameter >2 cm, or complicated. "
"Paraumbilical hernias in adults do NOT close spontaneously → always repair.",
"🔁 Repeating | Umbilical hernia in children: wait; in adults: always repair"
))
story.append(question_block(
20, "FMGE 2024", "Hernia — Obturator Hernia",
"A 70-year-old thin woman presents with severe medial thigh pain aggravated by hip internal "
"rotation. A small reducible swelling is found below and lateral to the pubic tubercle. "
"What is the diagnosis?",
["A. Femoral hernia",
"B. Obturator hernia",
"C. Inguinal hernia",
"D. Spigelian hernia"],
"B — Obturator hernia",
"Howship-Romberg sign: medial thigh/knee pain on hip internal rotation + extension = obturator "
"nerve compression by obturator hernia. 'Little old lady's hernia' — elderly, thin, multiparous. "
"Passes through obturator foramen. High risk of strangulation.",
"🔁 Repeating | Howship-Romberg sign = obturator hernia"
))
story += info_box("📌 Named Hernia Quick-Reference",
[Paragraph(t, S_BULLET) for t in [
"• Richter's: Only part of bowel wall in sac — can strangulate WITHOUT obstruction",
"• Littre's: Meckel's diverticulum in sac",
"• Maydl's (W-hernia): 2 loops in sac; middle loop (abdominal) strangulates",
"• Sliding: Viscus forms part of sac wall (sigmoid L, cecum R)",
"• Spigelian: Through linea semilunaris (lateral to rectus)",
"• Obturator: Howship-Romberg sign; elderly thin women; obturator foramen",
"• Femoral: Below and lateral to pubic tubercle; highest strangulation risk",
"• Hesselbach's triangle: Inguinal lig (inf) + inferior epigastric vessels (lat) + rectus (med)",
]], bg=GREEN_BG, border=GREEN_DARK)
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════════════════
# CHAPTER 6 — TRAUMA
# ════════════════════════════════════════════════════════════════════════════
CHAPTER_TITLE_HOLDER[0] = "Chapter 6: Trauma (ATLS)"
story += chapter_header("Chapter 6 — Trauma (ATLS)",
"3–4 questions expected | Tension pneumothorax, blast injury classification, hemorrhagic shock")
story.append(question_block(
21, "FMGE Jan 2025", "Trauma — Tension Pneumothorax",
"A road traffic accident victim has: absent breath sounds on right, tracheal deviation to left, "
"distended neck veins, and BP 80/50 mmHg. What is the IMMEDIATE management?",
["A. Chest X-ray to confirm diagnosis",
"B. Needle decompression at 2nd ICS, midclavicular line",
"C. Intercostal tube drain at 5th ICS, anterior axillary line",
"D. Emergency intubation"],
"B — Immediate needle decompression (2nd ICS, MCL)",
"Tension pneumothorax is a CLINICAL diagnosis — do NOT wait for X-ray. "
"14G cannula at 2nd ICS MCL → releases tension → converts to simple pneumo → "
"then definitive chest drain (5th ICS, anterior axillary line). "
"Classic signs: absent BS + tracheal shift away + JVD + hypotension.",
"🔁 Repeating | Tension pneumo = immediate needle decompression. No X-ray delay!"
))
story.append(question_block(
22, "FMGE July 2025", "Trauma — Blast Injury Classification",
"A bomb blast victim sustains a crush injury when thrown by the explosion. "
"This type of injury is classified as:",
["A. Primary blast injury",
"B. Secondary blast injury",
"C. Tertiary blast injury",
"D. Quaternary blast injury"],
"C — Tertiary blast injury",
"Blast injury classification: "
"Primary = pressure wave (barotrauma — tympanic membrane, lung, bowel) | "
"Secondary = projectiles/fragments/shrapnel | "
"Tertiary = victim thrown by blast → crush injuries, fractures | "
"Quaternary = burns, toxic chemical/biological/radiation exposure.",
"New addition to FMGE (2025) — remember all 4 blast injury categories"
))
story.append(question_block(
23, "FMGE Dec 2022", "Trauma — Surgical Site Infection Prevention",
"What is the IDEAL method of removing hair before surgery to minimize surgical site infection?",
["A. Razor 24 hours before surgery",
"B. Hair removal cream on the previous day",
"C. Electric hair clippers on the OT table",
"D. Razor on the OT table"],
"C — Electric hair clippers on the OT table",
"WHO/CDC guidelines: If hair removal is necessary, use electric clippers (not razors) "
"as close to surgery time as possible (ideally on OT table). "
"Razors cause microabrasions → 3× higher SSI risk. "
"Depilatory creams are acceptable alternative but less commonly used.",
"WHO guideline on surgical site infection prevention"
))
story += info_box("📌 Hemorrhagic Shock Classification (ATLS)",
[simple_table(
["Class", "Blood Loss", "Heart Rate", "BP", "Urine Output"],
[
["I", "<750 ml (<15%)", "<100", "Normal", ">30 ml/hr"],
["II", "750–1500 ml (15–30%)", "100–120", "Normal", "20–30 ml/hr"],
["III", "1500–2000 ml (30–40%)","120–140", "Decreased", "5–20 ml/hr"],
["IV", ">2000 ml (>40%)", ">140", "Very low", "<5 ml/hr"],
],
col_widths=[18*mm, 40*mm, 30*mm, 30*mm, 32*mm]
)[0]],
bg=RED_BG, border=RED_DARK)
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════════════════
# CHAPTER 7 — ADDITIONAL HIGH-YIELD PYQs
# ════════════════════════════════════════════════════════════════════════════
CHAPTER_TITLE_HOLDER[0] = "Chapter 7: Additional High-Yield PYQs"
story += chapter_header("Chapter 7 — Sutures, Dumping Syndrome & More",
"Mixed topics from recent sessions including surgical principles, GI complications")
story.append(question_block(
24, "FMGE July 2025", "Surgical Principles — Suture Types (Image-based)",
"A suture technique is shown where the needle enters one side, exits, re-enters on the same side "
"parallel to the first pass, exits the other side, creating a horizontal loop when knotted. "
"What is this suture?",
["A. Simple interrupted suture",
"B. Horizontal mattress suture",
"C. Vertical mattress suture",
"D. Figure-of-eight suture"],
"B — Horizontal mattress suture",
"Simple interrupted: single bite, one knot. "
"Horizontal mattress: parallel bites on same side → everting wound edges, good hemostasis. "
"Vertical mattress: one deep + one superficial bite → eliminates dead space. "
"Figure-of-8: two bites crossed. FMGE 2025 had image-based suture questions — know all types.",
"FMGE 2025 tested suture technique identification from images"
))
story.append(question_block(
25, "FMGE 2024–2025", "GI Surgery — Dumping Syndrome",
"A post-gastrectomy patient develops explosive watery diarrhea, facial flushing, and palpitations "
"within 30 minutes of eating. What is the most likely diagnosis?",
["A. Afferent loop syndrome",
"B. Early dumping syndrome",
"C. Late dumping syndrome",
"D. Blind loop syndrome"],
"B — Early dumping syndrome",
"Early dumping: 15–30 min after meals. Rapid gastric emptying → osmotic fluid shift to small bowel "
"→ circulating volume falls → vasomotor symptoms (flushing, palpitations, dizziness). "
"Late dumping: 1–3 hrs post-meal, due to reactive hypoglycemia (insulin surge). "
"Treatment: small frequent meals, avoid fluids with food, octreotide for refractory cases.",
"Early dumping = 30 min, vasomotor | Late dumping = 1–3 hr, hypoglycemia"
))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════════════════
# QUICK REFERENCE TABLES
# ════════════════════════════════════════════════════════════════════════════
CHAPTER_TITLE_HOLDER[0] = "Quick Reference Tables"
story += chapter_header("📊 Quick Reference Tables")
story.append(Paragraph("Named Signs in Surgery", S_SECTION))
story += simple_table(
["Sign / Eponym", "Condition"],
[
["Murphy's sign", "Acute cholecystitis (arrested inspiration on RUQ palpation)"],
["Courvoisier's sign", "Ca head of pancreas (painless jaundice + palpable GB)"],
["Howship-Romberg sign", "Obturator hernia (medial thigh pain on hip rotation)"],
["Rovsing's sign", "Appendicitis (LIF pressure → RIF pain)"],
["Psoas sign", "Retrocecal appendicitis"],
["Obturator sign", "Pelvic appendicitis"],
["Charcot's triad", "Ascending cholangitis (Fever + Jaundice + RUQ pain)"],
["Reynolds pentad", "Charcot's triad + Shock + Confusion (severe cholangitis)"],
["Trousseau's sign (malignancy)", "Migratory thrombophlebitis — Ca pancreas"],
["Cullen's sign", "Periumbilical bruising — acute pancreatitis / hemoperitoneum"],
["Grey-Turner's sign", "Flank bruising — retroperitoneal bleed / acute pancreatitis"],
["Battle's sign", "Post-auricular bruising — basal skull fracture"],
["Caput medusae", "Portal hypertension (periumbilical venous dilation)"],
["Coffee bean / bent inner tube sign", "Sigmoid volvulus on plain X-ray"],
["Rigler's sign (double wall)", "Pneumoperitoneum (free air in peritoneal cavity)"],
["Stewart-Treves syndrome", "Lymphangiosarcoma complicating chronic post-mastectomy lymphedema"],
],
col_widths=[72*mm, 88*mm]
)
story.append(Paragraph("Tumor Markers in Surgery", S_SECTION))
story += simple_table(
["Tumor Marker", "Associated Tumor(s)"],
[
["PSA", "Carcinoma prostate"],
["CEA", "Colorectal cancer (also breast, lung)"],
["CA 19-9", "Carcinoma pancreas (also biliary)"],
["CA-125", "Ovarian cancer"],
["AFP", "Hepatocellular carcinoma; testicular NSGCT (NOT pure seminoma)"],
["hCG", "Choriocarcinoma; gestational trophoblastic disease; seminoma (slight)"],
["Calcitonin", "Medullary thyroid carcinoma (C-cell origin)"],
["Urinary 5-HIAA", "Carcinoid tumor (hepatic mets required for syndrome)"],
["VMA / Metanephrines", "Pheochromocytoma"],
["Thyroglobulin", "Post-thyroidectomy surveillance for differentiated thyroid Ca"],
],
col_widths=[50*mm, 110*mm]
)
story.append(Paragraph("Topic-wise FMGE Surgery Frequency (2022–2025)", S_SECTION))
story += simple_table(
["Topic", "Frequency", "Key Concepts Tested"],
[
["Urology (RCC, bladder, testis)", "Very High", "Staging, management, tumor markers, named syndromes"],
["Breast (Paget's, BI-RADS, staging)","Very High", "Diagnosis, Cooper's ligaments, staging, surgery"],
["Thyroid (FNAC, MEN, RLN)", "High", "Bethesda system, MEN 2A operative order"],
["GI (Courvoisier, ZES, PJS)", "High", "Named syndromes, signs, esophageal anatomy"],
["Hernia (types, anatomy)", "High", "Named hernias, Howship-Romberg, Hesselbach's"],
["Trauma (ATLS, blast)", "High", "Tension pneumo management, blast categories"],
["Hepatobiliary", "Moderate", "Bile leak, Strasberg, Courvoisier, gallstones"],
["Colorectal oncology", "Moderate", "FAP vs PJS vs HNPCC, staging, markers"],
["Sutures / Wound healing", "Moderate", "Suture type identification (image-based)"],
["Dumping syndrome", "Moderate", "Early vs late distinction"],
],
col_widths=[48*mm, 26*mm, 86*mm]
)
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════════════════
# FINAL PAGE — WHERE TO FIND MORE PYQs
# ════════════════════════════════════════════════════════════════════════════
CHAPTER_TITLE_HOLDER[0] = "Resources"
story += chapter_header("📚 Where to Find Full PYQ Papers (Free)")
resources = [
("DocTutorials", "https://www.doctutorials.com/fmge/fmge-previous-year-question-papers",
"July 2025, Jan 2025, 2024, 2023, 2022 papers in PDF — subject-wise breakdown with answers"),
("PrepLadder", "https://www.prepladder.com/fmge-study-material/previous-years-question-papers/fmge-previous-year-question-papers",
"Session-wise papers (June 2024, Jan 2024, 2023) with detailed explanations per question"),
("Careers360", "https://medicine.careers360.com/articles/fmge-question-paper",
"Jan 2026 through 2022 memory-based papers with answer keys and subject-wise analysis"),
("Dr. Nishant Bhushan", "https://www.nishantbhushan.in/fmge-1",
"Free PDFs: 2002–2025 FMGE PYQ papers available for download"),
]
for name, url, desc in resources:
story.append(Paragraph(f"<b>{name}</b>", S_KEY_ITEM))
story.append(Paragraph(url, style("URL", fontSize=8.5, textColor=MID_BLUE,
fontName="Helvetica-Oblique", leading=12, leftIndent=12)))
story.append(Paragraph(desc, S_BODY))
story.append(Spacer(1, 3*mm))
story.append(Spacer(1, 6*mm))
story += info_box("⚠️ Disclaimer",
[Paragraph(
"All questions in this guide are memory-based recalls from FMGE exam sessions "
"(2022–2025). FMGE/NBEMS does not release official question papers. These questions are "
"compiled for educational practice only and may not reflect exact wording of original questions. "
"Always cross-reference with standard surgical textbooks (Bailey & Love, Schwartz's, "
"Fischer's Mastery) for conceptual accuracy.",
S_FOOTER_NOTE
)],
bg=YELLOW_BG, border=HexColor("#F9A825"))
# ── Build ─────────────────────────────────────────────────────────────────
doc.build(story,
onFirstPage=on_cover_page,
onLaterPages=on_page)
print(f"PDF created: {OUTPUT}")
cd /tmp/workspace/fmge-surgery && python3 generate_pdf.py 2>&1
ls -lh /tmp/workspace/fmge-surgery/FMGE_Surgery_PYQ_Study_Guide.pdf
FMGE Surgery PYQ Study Guide
PDF Document · PDF
| Section | Content |
|---|---|
| Cover page | Stats strip, topic overview |
| How to Use | Exam weightage, study strategy, Top 12 repeating concepts |
| Chapter 1 - Urology | Q1–5: RCC staging, retrocaval ureter, Leydig tumor, seminoma, Stewart-Treves |
| Chapter 2 - Breast | Q6–9: Core biopsy sequence, Paget's, Cooper's ligaments, BI-RADS, staging table |
| Chapter 3 - Thyroid | Q10–12: Bethesda/FNAC, MEN 2A operative order, RLN vs SLN injury |
| Chapter 4 - GI & HPB | Q13–17: PJS, Courvoisier, ZES/Passaro triangle, esophageal anatomy, bile leak |
| Chapter 5 - Hernia | Q18–20: Incisions, umbilical hernia in children, obturator hernia/Howship-Romberg |
| Chapter 6 - Trauma | Q21–23: Tension pneumothorax, blast injury classification, SSI prevention |
| Chapter 7 - Mixed | Q24–25: Suture types (image-based), dumping syndrome |
| Quick Reference | Named signs table, tumor markers table, topic-frequency table |
| Resources | Links to free full PYQ PDFs (DocTutorials, PrepLadder, Careers360) |
Find latest FMGE clinical guidelines for surgery 2026
FMGE 2026 surgery syllabus guidelines NBEMS NExT exam pattern changes
FMGE June 2026 exam analysis surgery questions pattern
https://medicine.careers360.com/exams/fmge
FMGE June 2026 surgery recall questions analysis new topics added
https://www.pw.live/neet-pg/exams/fmge-june-2026-exam-analys…
FMGE 2026 time bound sections new format surgery NExT transition impact
Source: FMGE June 2026 Information Bulletin (NBEMS/natboard.edu.in), Vedantu, Careers360, PW Live exam analysis, CollegeDunia, and June 28, 2026 candidate recalls.
| Feature | Old Format | New 2026 Format |
|---|---|---|
| Paper structure | 2 papers of 150 Qs each | 2 papers, each split into multiple time-bound sections of 50 Qs |
| Time per section | Free navigation across paper | 50 minutes per section — strict cutoff |
| Review between sections | Could go back freely | Cannot return to a previous section once time expires |
| Total duration | 5 hours | 5 hours (unchanged) |
| Total questions | 300 MCQs | 300 MCQs (unchanged) |
| Negative marking | None | None (unchanged) |
| Pass mark | 150/300 (50%) | 150/300 (50%) (unchanged) |
| Allied Subject | Marks |
|---|---|
| General Surgery | 32 |
| Anesthesiology | 5 |
| Orthopaedics | 5 |
| Radiodiagnosis | 5 |
| Surgery Group Total | 47 |
| Unit | Topic |
|---|---|
| 1 | Hemorrhage and shock |
| 2 | Fluid, electrolyte and acid-base balance, nutrition |
| 3 | Skin tumours, burns, skin grafting |
| 4 | Arterial diseases |
| 5 | Venous diseases |
| 6 | Lymphatic and lymph nodes |
| 7 | Wounds |
| 8 | Specific and non-specific infections |
| 9 | Tumors, cysts, ulcers, sinuses and fistulae |
| 10 | Infections of hand and foot |
| 11 | Diseases of muscle, tendons, bursae and fascia |
| 12 | Hernia |
| 13 | Umbilical granuloma, fistula, adenoma |
| 14 | Abdominal wall |
| 15 | Face, teeth, gums, mouth, tongue, salivary glands, neck |
| 16 | Thyroid glands, thyroglossal tract and endocrines |
| 17 | Breast |
| 18 | Sympathetic system |
| 19 | Craniocerebral injuries |
| 20 | Brain, nerves |
| 21 | Genitourinary system |
| 22 | Kidneys and ureters |
| 23 | Urinary bladder |
| 24 | Prostate |
| 25 | Urethra |
| 26 | Penis, testis and scrotum |
| 27 | Vasectomy and recanalisation |
| 28 | Cardiothoracic system |
| 29 | Oesophagus, stomach and duodenum |
| 30 | Spleen, liver, gallbladder and bile ducts |
| 31 | Pancreas |
| 32 | Peritoneum |
| 33 | Intestines, intestinal obstruction |
| 34 | Appendix |
| 35 | Rectum and anal canal |
| Parameter | Finding |
|---|---|
| Overall difficulty | Moderate to Difficult |
| Paper 1 | Tough, conceptual, lengthy |
| Paper 2 | Moderate, better balanced |
| Video-based questions | 20+ (significant increase) |
| Image-based questions | High, but fewer "spotter" images (down ~50% vs last 3 sessions) |
| One-line factual questions | Markedly reduced |
| Clinical scenario questions | Dominated the paper |
| Integrated cross-subject questions | High (Pathology+Surgery, Micro+Medicine) |
| NBEMS Unit | Tested in Exam? | Notes |
|---|---|---|
| Unit 1 — Hemorrhage & shock | ✅ Regularly | ATLS hemorrhagic shock classification; fluid resuscitation |
| Unit 3 — Burns | ✅ 2026 confirmed | Rule of Nines; Parkland formula; burn depth classification |
| Unit 4 — Arterial diseases | ✅ Moderate | ABI, Fontaine classification, AAA threshold |
| Unit 5 — Venous diseases | ✅ Moderate | Varicose veins, DVT, venous ulcer |
| Unit 12 — Hernia | ✅ High yield | Named hernias (Richter, Littre, Obturator), Hesselbach's triangle |
| Unit 16 — Thyroid | ✅ Very high | FNAC/Bethesda, MEN 2A, RLN vs SLN injury (repeated in 2026) |
| Unit 17 — Breast | ✅ Very high | Paget's, BI-RADS, Cooper's, staging |
| Unit 19 — Craniocerebral injuries | ✅ High | EDH vs SDH, lucid interval, imaging |
| Unit 21–26 — Urology | ✅ Very high | RCC, bladder TCC, testicular tumors, BPH/Ca prostate |
| Unit 29 — Oesophagus/Stomach | ✅ High | Esophageal constrictions, ZES, dumping syndrome |
| Unit 30 — HPB | ✅ High | Courvoisier's, Charcot's triad, gallstones, bile leak |
| Unit 31 — Pancreas | ✅ High | Ca pancreas, Whipple's, CA 19-9, Trousseau's |
| Unit 33 — Intestines | ✅ Moderate | Obstruction types, intussusception, volvulus |
| Unit 34 — Appendix | ✅ Moderate | Alvarado score, Ochsner-Sherren, signs |
| Unit 35 — Rectum & anal canal | ✅ Moderate | Colorectal Ca, hemorrhoids, fistula-in-ano |
| Units 10, 11 — Hand/muscle infections | ⚠️ Low yield | Rare in recent sessions |
| Unit 27 — Vasectomy | ⚠️ Very low | Almost never directly tested |
| Question | Answer |
|---|---|
| Is FMGE still valid? | Yes. FMGE continues for all FMGs not covered under NExT rollout |
| Has NExT replaced FMGE? | No. Official NBEMS and NMC notifications confirm FMGE is ongoing |
| Is the syllabus changing? | No. 2026 syllabus is identical to 2025 per the Information Bulletin |
| Will Dec 2026 session happen? | Yes, tentatively January 9, 2027 (results February 2027) |
| Where to verify dates? | Always check natboard.edu.in directly |
Search PubMed for latest FMGE-relevant surgery research papers 2024-2026
"appendectomy" AND "antibiotic" AND "uncomplicated appendicitis"
"breast cancer" AND "surgical management" AND "guidelines"
"thyroid cancer" AND "surgical treatment" AND "papillary"
"inguinal hernia" AND "laparoscopic repair" AND "outcomes"
"gallstone" AND "cholecystectomy" AND "laparoscopic"
"trauma" AND "hemorrhagic shock" AND "resuscitation"
PMID: 39826968
PMID: 41563747
PMID: 37605444
PMID: 41885281
"colorectal cancer" AND "surgical resection" AND "outcomes"
"renal cell carcinoma" AND "partial nephrectomy" AND "radical nephrectomy"
PMID: 42010212
PMID: 41063071
PMID: 40163133
All papers sourced from PubMed. Evidence tiers: 🥇 Systematic Review/Meta-Analysis | 🥈 RCT | 📋 Practice Guideline
Classic FMGE teaching = "appendicitis requires surgery." This JAMA 2026 data shows antibiotics are a valid, evidence-based alternative for uncomplicated appendicitis in adults. Expect "antibiotics alone" as a correct answer option in new-format FMGE questions testing clinical reasoning.
⚠️ Note: erratum published (PMID: 39922672)
Critical contrast with adults: In children, antibiotics alone are inferior to appendicectomy for uncomplicated appendicitis. In adults (APPAC), antibiotics are an acceptable alternative. This adult vs pediatric distinction is exactly the kind of nuanced question FMGE 2026 is now testing.
⚠️ Erratum published (PMID: 41413869)
For T1aN0M0 papillary thyroid carcinoma (Bethesda V-VI), thermal ablation (microwave/radiofrequency/laser) is equally effective to surgery and has a better safety profile — particularly regarding permanent hoarseness (RLN injury). This is cutting-edge evidence that links directly to the classic FMGE topic of RLN injury post-thyroidectomy.
REBOA is an emerging trauma concept likely to appear in new-format FMGE questions testing surgical decision-making in exsanguinating trauma. Classic teaching: resuscitative thoracotomy for cardiac arrest post-trauma. New evidence: REBOA is preferable in hemorrhagic shock.
| Condition | Fluid Recommendation |
|---|---|
| Sepsis/septic shock | Up to 30 ml/kg IV crystalloids in initial phase; individualized in optimization phase |
| Hemorrhagic shock — blunt trauma | Restrictive fluid strategy (moderate certainty) |
| Hemorrhagic shock — penetrating trauma | Restrictive fluid strategy (low certainty) |
| Non-traumatic hemorrhagic shock | Guided by hemodynamic + biochemical parameters |
| Cardiogenic shock | Fluids as primary treatment: NOT recommended |
| Cardiac tamponade | Fluids cautiously until definitive treatment |
2025 ESICM guideline confirms the restrictive fluid strategy for hemorrhagic shock in trauma - both blunt and penetrating. This directly updates ATLS principles tested in FMGE (damage control resuscitation: permissive hypotension, avoid fluid overload). "30 ml/kg for sepsis" is also a high-yield figure.
Intraoperative cholangiography (IOC) = gold standard for identifying CBD stones/injuries during laparoscopic cholecystectomy. Connects to triangle of Calot anatomy and bile duct injury prevention.
Classic FMGE teaching: partial nephrectomy for T1a (≤4 cm). This 2026 meta-analysis extends nephron-sparing to pT3a RCC - no compromise in oncological outcomes + better kidney function preservation. Expect "partial vs radical nephrectomy" management questions to increasingly favour nephron-sparing.
| # | Paper | Journal | Year | Domain | FMGE Impact |
|---|---|---|---|---|---|
| 1 | APPAC 10-year follow-up | JAMA | 2026 | Appendicitis | ⭐ Antibiotics valid for adults at 10 yr |
| 2 | Lancet pediatric appendicitis RCT | Lancet | 2025 | Appendicitis | ⭐ Antibiotics inferior in children |
| 3 | Cochrane drainage post-appendectomy | Cochrane | 2025 | Appendicitis | Drainage not routinely needed |
| 4 | Synthetic vs biological mesh hernia | BMC Surg | 2025 | Hernia | Synthetic mesh remains standard |
| 5 | Open vs lap hernia in elderly | Surg Endosc | 2026 | Hernia | Lap safe in elderly |
| 6 | Open vs lap pediatric incarcerated hernia | Hernia | 2026 | Hernia | Emergency surgery principles |
| 7 | Thermal ablation vs surgery for PTC T1a | ENT J | 2026 | Thyroid | ⭐ Ablation = surgery; less RLN injury |
| 8 | Active surveillance thyroid nodal mets | Endocrine | 2024 | Thyroid | Watch-and-wait evidence |
| 9 | REBOA vs resuscitative thoracotomy | J Trauma | 2026 | Trauma | ⭐ REBOA superior in hemorrhagic shock |
| 10 | ESICM 2025 fluid guideline | ICM | 2025 | Trauma/Shock | ⭐ Restrictive fluids for hemorrhagic shock |
| 11 | Adjuvant therapies hemorrhagic shock | Crit Care | 2025 | Trauma | TXA, 1:1:1 blood ratios |
| 12 | Lap ultrasound vs IOC cholecystectomy | Surg Endosc | 2024 | HPB | IOC = gold standard |
| 13 | Partial vs radical nephrectomy pT3a | J Robot Surg | 2026 | Urology | ⭐ PN safe even for T3a RCC |
Create a quick-reference PDF of all 13 PubMed papers with key findings and FMGE-implications
ls -la /tmp/workspace/fmge-surgery/ && python3 -c "from reportlab.lib.pagesizes import A4; print('reportlab OK')"
~/fmge-surgery/generate_pubmed_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import mm
from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_JUSTIFY
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, PageBreak, KeepTogether
)
from reportlab.lib.colors import HexColor
OUTPUT = "/tmp/workspace/fmge-surgery/FMGE_Surgery_PubMed_2024_2026.pdf"
W, H = A4
# ── Colour palette ────────────────────────────────────────────────────────
DARK_NAVY = HexColor("#0D2137")
MID_BLUE = HexColor("#1565C0")
LIGHT_BLUE = HexColor("#BBDEFB")
PALE_BLUE = HexColor("#E3F2FD")
TEAL = HexColor("#00695C")
TEAL_LIGHT = HexColor("#E0F2F1")
RED_DARK = HexColor("#B71C1C")
RED_LIGHT = HexColor("#FFEBEE")
ORANGE_DARK = HexColor("#E65100")
ORANGE_LIGHT= HexColor("#FFF3E0")
GREEN_DARK = HexColor("#2E7D32")
GREEN_LIGHT = HexColor("#E8F5E9")
PURPLE_DARK = HexColor("#4A148C")
PURPLE_LIGHT= HexColor("#F3E5F5")
AMBER_DARK = HexColor("#F57F17")
AMBER_LIGHT = HexColor("#FFFDE7")
GREY_LIGHT = HexColor("#F5F5F5")
GREY_MID = HexColor("#9E9E9E")
WHITE = colors.white
BLACK = HexColor("#212121")
# Domain colours: (bg, border, header_bg)
DOMAIN_COLORS = {
"appendicitis": (HexColor("#FFF8E1"), AMBER_DARK, HexColor("#FF8F00")),
"hernia": (GREEN_LIGHT, GREEN_DARK, HexColor("#388E3C")),
"thyroid": (TEAL_LIGHT, TEAL, HexColor("#00796B")),
"trauma": (RED_LIGHT, RED_DARK, HexColor("#C62828")),
"hpb": (PURPLE_LIGHT, PURPLE_DARK, HexColor("#6A1B9A")),
"urology": (PALE_BLUE, MID_BLUE, HexColor("#1976D2")),
}
# ── Styles ────────────────────────────────────────────────────────────────
def S(name, **kw):
base = kw.pop("parent", "Normal")
return ParagraphStyle(name, parent=getSampleStyleSheet()[base], **kw)
S_COVER_H1 = S("CH1", fontSize=30, textColor=WHITE, fontName="Helvetica-Bold",
leading=38, alignment=TA_CENTER)
S_COVER_H2 = S("CH2", fontSize=14, textColor=HexColor("#BBDEFB"),
fontName="Helvetica", leading=20, alignment=TA_CENTER)
S_COVER_SM = S("CSM", fontSize=10, textColor=HexColor("#90CAF9"),
fontName="Helvetica-Oblique", leading=14, alignment=TA_CENTER)
S_CH_TITLE = S("ChT", fontSize=16, textColor=WHITE, fontName="Helvetica-Bold",
leading=22, leftIndent=6)
S_SECTION = S("Sec", fontSize=11, textColor=DARK_NAVY, fontName="Helvetica-Bold",
leading=16, spaceBefore=8, spaceAfter=2)
S_BODY = S("Bod", fontSize=9, textColor=BLACK, fontName="Helvetica",
leading=13, spaceAfter=3, alignment=TA_JUSTIFY)
S_BODY_BOLD = S("BodB", fontSize=9, textColor=BLACK, fontName="Helvetica-Bold",
leading=13)
S_BULLET = S("Bul", fontSize=9, textColor=BLACK, fontName="Helvetica",
leading=13, leftIndent=14, firstLineIndent=-10, spaceAfter=1)
S_PMID = S("Pmid", fontSize=8, textColor=HexColor("#546E7A"),
fontName="Helvetica-Oblique", leading=11)
S_FINDING = S("Fnd", fontSize=9, textColor=GREEN_DARK, fontName="Helvetica-Bold",
leading=13, leftIndent=4)
S_FMGE = S("Fmge", fontSize=9, textColor=MID_BLUE, fontName="Helvetica-Bold",
leading=13, leftIndent=4)
S_TAG = S("Tag", fontSize=8, textColor=HexColor("#546E7A"),
fontName="Helvetica-Oblique", leading=11)
S_TH = S("Th", fontSize=8.5, textColor=WHITE, fontName="Helvetica-Bold",
leading=12, alignment=TA_CENTER)
S_TC = S("Tc", fontSize=8, textColor=BLACK, fontName="Helvetica",
leading=12)
S_TC_SM = S("TcSm", fontSize=7.5, textColor=BLACK, fontName="Helvetica",
leading=11)
S_STAR_LABEL= S("Star", fontSize=9, textColor=RED_DARK, fontName="Helvetica-Bold",
leading=13)
S_FOOTER = S("Ftr", fontSize=7.5, textColor=GREY_MID, fontName="Helvetica-Oblique",
leading=10, alignment=TA_CENTER)
# ── Page callbacks ────────────────────────────────────────────────────────
SECTION_NAME = [""]
def cover_page(canvas, doc):
canvas.saveState()
canvas.setFillColor(DARK_NAVY)
canvas.rect(0, 0, W, H, stroke=0, fill=1)
canvas.setFillColor(MID_BLUE)
canvas.rect(0, H - 55, W, 55, stroke=0, fill=1)
canvas.setFillColor(TEAL)
canvas.rect(0, H - 59, W, 4, stroke=0, fill=1)
canvas.setFillColor(MID_BLUE)
canvas.rect(0, 0, W, 40, stroke=0, fill=1)
canvas.setFillColor(TEAL)
canvas.rect(0, 40, W, 4, stroke=0, fill=1)
canvas.restoreState()
def inner_page(canvas, doc):
canvas.saveState()
# Header bar
canvas.setFillColor(DARK_NAVY)
canvas.rect(0, H - 26, W, 26, stroke=0, fill=1)
canvas.setFont("Helvetica-Bold", 8)
canvas.setFillColor(WHITE)
canvas.drawString(18, H - 17, "FMGE Surgery | PubMed Evidence Digest 2024–2026")
canvas.setFont("Helvetica", 8)
canvas.drawRightString(W - 18, H - 17, SECTION_NAME[0])
# Footer bar
canvas.setFillColor(GREY_LIGHT)
canvas.rect(0, 0, W, 18, stroke=0, fill=1)
canvas.setFont("Helvetica-Oblique", 7.5)
canvas.setFillColor(GREY_MID)
canvas.drawCentredString(W / 2, 5,
f"Page {doc.page} | All papers sourced from PubMed | For educational use only")
canvas.restoreState()
# ── Helpers ───────────────────────────────────────────────────────────────
def domain_header(title, subtitle, domain_key):
SECTION_NAME[0] = title.replace("Domain", "").strip().split("—")[0].strip()
bg, border, hdr = DOMAIN_COLORS[domain_key]
row = [[Paragraph(title, S_CH_TITLE)]]
t = Table(row, colWidths=[W - 72])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), hdr),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING", (0,0), (-1,-1), 8),
("LEFTPADDING", (0,0), (-1,-1), 12),
]))
elems = [Spacer(1, 2*mm), t]
if subtitle:
elems += [Spacer(1,2*mm), Paragraph(subtitle, S_BODY)]
elems.append(Spacer(1, 4*mm))
return elems
def paper_card(num, landmark, title, authors, journal_year, pmid, doi,
background, key_findings, fmge_implications,
domain_key, erratum_note=""):
bg, border, hdr = DOMAIN_COLORS[domain_key]
# ── Number badge + title row ─────────────────────────────────────────
star_txt = " ⭐ LANDMARK" if landmark else ""
badge = Table(
[[Paragraph(f"<b>{num}</b>", S_TH),
Paragraph(title + star_txt, S("PT", fontSize=9.5, textColor=DARK_NAVY,
fontName="Helvetica-Bold", leading=14))]],
colWidths=[22, W - 72 - 28]
)
badge.setStyle(TableStyle([
("BACKGROUND", (0,0), (0,0), border),
("BACKGROUND", (1,0), (1,0), bg),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (1,0), (1,0), 8),
("RIGHTPADDING", (1,0), (1,0), 6),
]))
# ── Body rows ────────────────────────────────────────────────────────
rows = []
# Citation line
cite_color = HexColor("#37474F")
rows.append(Paragraph(
f"<i>{authors}. {journal_year}.</i> "
f"PMID: <b>{pmid}</b> | DOI: {doi}",
S("Cite", fontSize=8, textColor=cite_color,
fontName="Helvetica-Oblique", leading=11, leftIndent=4)))
if erratum_note:
rows.append(Paragraph(f"⚠️ {erratum_note}", S("Err", fontSize=8,
textColor=RED_DARK, fontName="Helvetica-Bold", leading=11, leftIndent=4)))
rows.append(Spacer(1, 2*mm))
# Background
rows.append(Paragraph("<b>Background:</b> " + background, S_BODY))
# Key findings header
rows.append(Spacer(1, 1*mm))
rows.append(Paragraph("🔬 KEY FINDINGS", S("KFH", fontSize=8.5,
textColor=GREEN_DARK, fontName="Helvetica-Bold", leading=12)))
for f in key_findings:
rows.append(Paragraph("• " + f, S_BULLET))
# FMGE implication
rows.append(Spacer(1, 2*mm))
imp_box_data = [[
Paragraph("FMGE 2026 IMPLICATION", S("IH", fontSize=8,
textColor=WHITE, fontName="Helvetica-Bold", leading=11, alignment=TA_CENTER)),
]]
for fi in fmge_implications:
imp_box_data.append([Paragraph("➤ " + fi, S("IB", fontSize=8.5,
textColor=MID_BLUE, fontName="Helvetica-Bold", leading=13, leftIndent=6))])
imp_tbl = Table(imp_box_data, colWidths=[W - 72 - 24])
imp_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), MID_BLUE),
("BACKGROUND", (0,1), (-1,-1), PALE_BLUE),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 8),
("LINEABOVE", (0,0), (-1,0), 1.5, MID_BLUE),
]))
rows.append(imp_tbl)
rows.append(Spacer(1, 1*mm))
body_tbl = Table([[r] for r in rows], colWidths=[W - 72])
body_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), GREY_LIGHT),
("TOPPADDING", (0,0), (-1,-1), 2),
("BOTTOMPADDING", (0,0), (-1,-1), 2),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
]))
return KeepTogether([badge, body_tbl, Spacer(1, 5*mm)])
def info_box(title, items, bg, border):
rows = [[Paragraph(f"<b>{title}</b>", S("IH2", fontSize=9.5,
textColor=border, fontName="Helvetica-Bold", leading=14))]]
for item in items:
rows.append([item])
t = Table(rows, colWidths=[W - 72])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("LINEABOVE", (0,0), (-1,0), 2, border),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
]))
return [t, Spacer(1, 5*mm)]
def simple_table(headers, rows_data, col_widths, row_colors=None):
data = [[Paragraph(h, S_TH) for h in headers]]
for r in rows_data:
data.append([Paragraph(str(c), S_TC_SM) for c in r])
t = Table(data, colWidths=col_widths)
cmds = [
("BACKGROUND", (0,0), (-1,0), DARK_NAVY),
("GRID", (0,0), (-1,-1), 0.3, HexColor("#BDBDBD")),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 5),
("VALIGN", (0,0), (-1,-1), "TOP"),
]
for i in range(1, len(rows_data)+1):
c = row_colors[i-1] if row_colors else (WHITE if i%2==0 else GREY_LIGHT)
cmds.append(("BACKGROUND", (0,i), (-1,i), c))
t.setStyle(TableStyle(cmds))
return [t, Spacer(1, 5*mm)]
# ════════════════════════════════════════════════════════════════════════
# BUILD STORY
# ════════════════════════════════════════════════════════════════════════
doc = SimpleDocTemplate(
OUTPUT, pagesize=A4,
leftMargin=22*mm, rightMargin=13*mm,
topMargin=33*mm, bottomMargin=23*mm,
title="FMGE Surgery: PubMed Evidence Digest 2024–2026",
author="Orris Medical AI",
subject="Latest Surgery Evidence for FMGE Preparation"
)
story = []
# ── COVER ────────────────────────────────────────────────────────────────
story.append(Spacer(1, 28*mm))
story.append(Paragraph("FMGE Surgery", S_COVER_H1))
story.append(Spacer(1, 3*mm))
story.append(Paragraph("PubMed Evidence Digest", S_COVER_H2))
story.append(Spacer(1, 2*mm))
story.append(Paragraph("2024 – 2026", S_COVER_H2))
story.append(Spacer(1, 6*mm))
story.append(HRFlowable(width=110*mm, thickness=1.5, color=TEAL, hAlign="CENTER"))
story.append(Spacer(1, 6*mm))
story.append(Paragraph(
"13 High-Impact Papers | 6 Surgery Domains | Systematic Reviews · RCTs · Practice Guidelines",
S_COVER_SM))
story.append(Spacer(1, 8*mm))
# Stats strip
stats_data = [["13 Papers", "6 Domains", "5 Landmark ⭐", "2024–2026"]]
st = Table(stats_data, colWidths=[38*mm]*4)
st.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), TEAL),
("TEXTCOLOR", (0,0), (-1,-1), WHITE),
("FONTNAME", (0,0), (-1,-1), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 10),
("ALIGN", (0,0), (-1,-1), "CENTER"),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING", (0,0), (-1,-1), 8),
]))
story.append(st)
story.append(Spacer(1, 8*mm))
story.append(Paragraph(
"Domains: Appendicitis · Hernia · Thyroid Surgery · Trauma & Shock · "
"Hepatobiliary · Urology / RCC",
S_COVER_SM))
story.append(Spacer(1, 10*mm))
story.append(Paragraph(
"Compiled by Orris Medical AI | July 2026 | All sources verified on PubMed",
S_COVER_SM))
story.append(PageBreak())
# ── HOW TO USE ────────────────────────────────────────────────────────────
SECTION_NAME[0] = "About This Guide"
story.append(Spacer(1, 2*mm))
hdr_row = [[Paragraph("📋 About This Evidence Digest", S_CH_TITLE)]]
hdr_t = Table(hdr_row, colWidths=[W - 72])
hdr_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), DARK_NAVY),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING", (0,0), (-1,-1), 8),
("LEFTPADDING", (0,0), (-1,-1), 12),
]))
story.append(hdr_t)
story.append(Spacer(1, 5*mm))
story.append(Paragraph(
"This digest compiles 13 high-impact surgery papers published between 2024 and 2026 that "
"are directly relevant to FMGE examination topics. Each entry includes the paper's background, "
"key quantitative findings, and a specific FMGE 2026 implication explaining how the evidence "
"updates or reinforces clinical concepts tested in the exam.",
S_BODY))
story.append(Spacer(1, 3*mm))
story += info_box(
"⭐ 5 Landmark Papers — Must-Know for FMGE 2026",
[Paragraph(t, S_BULLET) for t in [
"• Paper 1 (JAMA 2026) — APPAC 10-yr follow-up: Antibiotics are a valid option for uncomplicated appendicitis in adults; ~56% avoid surgery at 10 years",
"• Paper 2 (Lancet 2025) — In children, antibiotics are INFERIOR to appendicectomy (34% vs 7% failure at 1 year)",
"• Paper 7 (ENT J 2026) — Thermal ablation equals surgery for T1aN0M0 papillary thyroid cancer; less permanent RLN injury",
"• Paper 9 (J Trauma 2026) — REBOA shows lower in-hospital mortality vs resuscitative thoracotomy in hemorrhagic shock",
"• Paper 13 (J Robot Surg 2026) — Partial nephrectomy is safe and effective even for pT3a RCC",
]],
bg=AMBER_LIGHT, border=AMBER_DARK
)
story.append(Paragraph("<b>Evidence Tier Key:</b>", S_BODY_BOLD))
story.append(Paragraph("🥇 Systematic Review / Meta-Analysis | 🥈 Randomised Controlled Trial | 📋 Practice Guideline", S_BODY))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════════════
# DOMAIN 1 — APPENDICITIS
# ════════════════════════════════════════════════════════════════════════
story += domain_header(
"Domain 1 — Appendicitis (FMGE Unit 34)",
"3 papers • Most significant: antibiotics vs surgery debate resolved by 10-year data",
"appendicitis"
)
story.append(paper_card(
num=1, landmark=True,
title="🥈 Antibiotic Therapy for Uncomplicated Acute Appendicitis: 10-Year Follow-Up of the APPAC RCT",
authors="Salminen P et al.",
journal_year="JAMA. 2026 Mar 24",
pmid="41563747",
doi="10.1001/jama.2025.25921",
background=(
"The APPAC trial originally compared appendectomy vs antibiotics for uncomplicated "
"acute appendicitis in adults. This 10-year follow-up (530 patients, 6 Finnish hospitals) "
"is the longest evidence available for antibiotic management."
),
key_findings=[
"At 10 years, only 37.8% (95% CI 31.6–44.1%) of antibiotic patients had true appendicitis recurrence",
"Cumulative appendectomy rate at 10 years: 44.3% — meaning 55.7% never needed surgery",
"Complication rate: appendectomy group 27.4% vs antibiotic group only 8.5% (p<0.001)",
"Quality of life: no significant difference between antibiotics and appendectomy groups",
"Antibiotic regimen: IV ertapenem 1g/day × 3 days → oral levofloxacin 500mg + metronidazole 500mg × 7 days",
],
fmge_implications=[
"Antibiotics are a valid, evidence-based first-line option for uncomplicated appendicitis in ADULTS",
"\"Antibiotics alone\" is now an acceptable correct answer for uncomplicated appendicitis management",
"BUT: this only applies to adults with CT-confirmed uncomplicated (non-perforated) appendicitis",
],
domain_key="appendicitis"
))
story.append(paper_card(
num=2, landmark=True,
title="🥈 Appendicectomy vs Antibiotics for Acute Uncomplicated Appendicitis in Children: International Multicentre Non-Inferiority RCT",
authors="St Peter SD, Noel-MacDonnell JR, Hall NJ et al.",
journal_year="Lancet. 2025 Jan 18",
pmid="39826968",
doi="10.1016/S0140-6736(24)02420-6",
background=(
"Non-operative management of appendicitis has been gaining traction. This pragmatic "
"multicentre RCT (11 children's hospitals; Canada, USA, Finland, Sweden, Singapore) "
"in 936 children aged 5–16 years tested whether antibiotics were non-inferior to "
"appendicectomy."
),
key_findings=[
"Treatment failure at 1 year: 34% in antibiotic group vs 7% in surgery group",
"Difference of 26.7% (90% CI 22.4–30.9%) — exceeds 20% non-inferiority margin → ANTIBIOTICS INFERIOR",
"4.3× higher risk of mild-to-moderate adverse events in antibiotic group (p<0.0001)",
"Of children who eventually had appendicectomy from the antibiotic group, 8% had normal pathology",
"No deaths or serious adverse events in either group",
],
fmge_implications=[
"CRITICAL CONTRAST: In CHILDREN — antibiotics are INFERIOR to appendicectomy (opposite to adults)",
"Standard of care in children remains: appendicectomy for uncomplicated appendicitis",
"FMGE may test this adult vs pediatric distinction — the correct answers differ by age group",
],
domain_key="appendicitis",
erratum_note="Erratum published — PMID: 39922672"
))
story.append(paper_card(
num=3, landmark=False,
title="🥇 Abdominal Drainage to Prevent Intraperitoneal Abscess After Appendectomy for Complicated Appendicitis",
authors="Tang Y, Liu J, Bai G",
journal_year="Cochrane Database Syst Rev. 2025 Apr 11",
pmid="40214287",
doi="10.1002/14651858.CD010168.pub3",
background=(
"After appendectomy for complicated appendicitis (perforated/gangrenous), routine "
"abdominal drainage is sometimes used to prevent intraperitoneal abscess. This Cochrane "
"review examined whether drainage actually reduces abscess rates."
),
key_findings=[
"Evidence remains insufficient to firmly support routine prophylactic drainage after complicated appendicectomy",
"No definitive benefit of routine drainage in preventing post-operative abscess",
"Cochrane-level review — highest evidence grade available",
],
fmge_implications=[
"Routine prophylactic drainage is NOT standard after appendicectomy for complicated appendicitis",
"Drainage may be used selectively (e.g., large abscess cavity) but not routinely",
],
domain_key="appendicitis"
))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════════════
# DOMAIN 2 — HERNIA
# ════════════════════════════════════════════════════════════════════════
story += domain_header(
"Domain 2 — Hernia (FMGE Unit 12)",
"3 papers • Synthetic mesh remains standard; laparoscopic repair safe in all age groups",
"hernia"
)
story.append(paper_card(
num=4, landmark=False,
title="🥇 Synthetic vs Biological Mesh in Laparoscopic Inguinal Hernia Repair: Systematic Review & Meta-Analysis",
authors="Romano C, Silva H, Gray LA et al.",
journal_year="BMC Surg. 2025 Oct 8",
pmid="41063071",
doi="10.1186/s12893-025-03151-w",
background=(
"Biological meshes have been proposed as an alternative to synthetic mesh in "
"inguinal hernia repair, theoretically offering better tissue integration and "
"fewer complications. This meta-analysis (1,372 patients; 2015–2025) compared outcomes."
),
key_findings=[
"Biological mesh (porcine SIS) associated with longer operative time (SMD 0.45, p=0.039)",
"No significant difference in hernia recurrence (RR 12.73, p=0.15)",
"No significant difference in complications (RR 3.06, p=0.55) or adverse events",
"Biological mesh may reduce chronic pain but evidence insufficient",
"Biological mesh is significantly more expensive with limited long-term data",
],
fmge_implications=[
"Synthetic mesh remains the gold standard for laparoscopic inguinal hernia repair",
"Biological mesh shows NO proven superiority in recurrence or complication rates",
"Classic FMGE teaching: Lichtenstein tension-free repair (open) uses polypropylene mesh; lap uses TEP/TAPP with synthetic mesh",
],
domain_key="hernia",
erratum_note="Erratum published — PMID: 41413869"
))
story.append(paper_card(
num=5, landmark=False,
title="🥇 Open vs Laparoscopic Groin Hernia Repair in Elderly Patients / Octogenarians: Updated Systematic Review & Meta-Analysis",
authors="Ding Y, Liang B, Zhang R et al.",
journal_year="Surg Endosc. 2026 Feb",
pmid="41578020",
doi="10.1007/s00464-025-11761-z",
background=(
"Elderly patients (especially octogenarians >80 years) with inguinal hernia are "
"often managed conservatively or with open repair due to concerns about laparoscopic "
"safety. This updated meta-analysis compared both approaches specifically in the elderly."
),
key_findings=[
"Laparoscopic repair is safe and feasible in elderly patients including octogenarians",
"Lap repair: reduced post-operative pain, shorter hospital stay, faster return to activity",
"No significant difference in major perioperative complication rates",
"Recurrence rates comparable between open and laparoscopic approaches",
],
fmge_implications=[
"Laparoscopic hernia repair advantages (reduced pain, faster recovery, better cosmesis) apply across all age groups",
"Age alone is NOT a contraindication to laparoscopic hernia repair",
"FMGE may present elderly patient scenarios — laparoscopic repair remains appropriate",
],
domain_key="hernia"
))
story.append(paper_card(
num=6, landmark=False,
title="🥇 Open vs Laparoscopic Repair in Pediatric Incarcerated Inguinal Hernia: Systematic Review & Meta-Analysis",
authors="Huang H, Wu H, Hou L et al.",
journal_year="Hernia. 2026 May 12",
pmid="42118158",
doi="10.1007/s10029-026-03287-9",
background=(
"Incarcerated inguinal hernias in children require urgent surgical management. "
"The optimal approach — open vs laparoscopic — has been debated. This meta-analysis "
"examined outcomes specifically for pediatric incarcerated hernias."
),
key_findings=[
"Both approaches are safe for pediatric incarcerated inguinal hernia",
"Laparoscopic repair: better cosmetic results, earlier feeding",
"Open repair: shorter operative time",
"No significant difference in recurrence, complication rates, or conversion rates",
],
fmge_implications=[
"EMERGENCY principle: incarcerated/strangulated hernia requires urgent surgical repair — this does not change",
"Strangulated hernia with bowel necrosis → resection + repair in same setting",
"Key FMGE distinction: Richter's hernia can strangulate WITHOUT full bowel obstruction",
],
domain_key="hernia"
))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════════════
# DOMAIN 3 — THYROID SURGERY
# ════════════════════════════════════════════════════════════════════════
story += domain_header(
"Domain 3 — Thyroid Surgery (FMGE Unit 16)",
"2 papers • Thermal ablation emerging as equivalent to surgery for low-risk PTC",
"thyroid"
)
story.append(paper_card(
num=7, landmark=True,
title="🥇 Thermal Ablation vs Surgery for Bethesda V & VI Thyroid Cancer (T1aN0M0): Systematic Review & Meta-Analysis",
authors="Hurtado Amézquita YC, Latorre Nuñez Y, Flórez Romero A et al.",
journal_year="Ear Nose Throat J. 2026 Mar",
pmid="37605444",
doi="10.1177/01455613231189067",
background=(
"Differentiated thyroid cancer (mainly papillary) represents 90% of thyroid malignancies. "
"Standard treatment is surgical. Thermal ablation (microwave, radiofrequency, laser) offers "
"a minimally invasive alternative for low-risk T1aN0M0 lesions. "
"This meta-analysis (10 studies, 2,939 patients) compared oncological and safety outcomes."
),
key_findings=[
"No difference in local recurrence between ablation and surgery: RR 1.17 (95% CI 0.69–1.99)",
"No difference in cervical lymph node metastasis: RR 0.76 (95% CI 0.43–1.36)",
"No difference in infection, hematoma, or transient hoarseness rates",
"SIGNIFICANT: Permanent hoarseness less with thermal ablation vs surgery: RR 0.29 (95% CI 0.11–0.75) — 71% lower risk",
"Thermal ablation avoids permanent RLN injury more effectively than surgery",
],
fmge_implications=[
"For T1aN0M0 papillary thyroid carcinoma: thermal ablation = equivalent efficacy to surgery",
"Thermal ablation carries significantly LESS risk of permanent RLN injury (permanent hoarseness)",
"This does NOT replace hemithyroidectomy for Bethesda IV (follicular neoplasm) — FNAC still cannot diagnose FTC",
"CLASSIC FMGE LINK: Permanent hoarseness post-thyroid surgery = RLN injury; high-pitch voice loss = SLN external branch",
],
domain_key="thyroid"
))
story.append(paper_card(
num=8, landmark=False,
title="🥇 Active Surveillance of Nodal Metastasis in Differentiated Thyroid Carcinoma: Systematic Review & Meta-Analysis",
authors="Lavarda Scheinpflug A, Marmitt L, Walter LB et al.",
journal_year="Endocrine. 2024 Oct",
pmid="38713330",
doi="10.1007/s12020-024-03821-6",
background=(
"Differentiated thyroid carcinoma (papillary, follicular) often has cervical lymph node "
"metastases at diagnosis. Immediate lymph node dissection vs active surveillance for "
"low-volume nodal disease is debated. This review examined outcomes of surveillance."
),
key_findings=[
"Active surveillance of nodal metastases in low-risk differentiated thyroid cancer is feasible",
"Low rates of significant nodal progression under surveillance in selected patients",
"Supports individualized management rather than routine radical neck dissection for small nodal disease",
],
fmge_implications=[
"Not all cervical LN metastases in differentiated thyroid Ca require immediate surgery",
"Active surveillance is an evidence-based option for low-volume, low-risk nodal disease",
"Standard FMGE: Papillary thyroid Ca spreads via LYMPHATICS — regional node dissection for clinically positive nodes",
],
domain_key="thyroid"
))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════════════
# DOMAIN 4 — TRAUMA & HEMORRHAGIC SHOCK
# ════════════════════════════════════════════════════════════════════════
story += domain_header(
"Domain 4 — Trauma & Hemorrhagic Shock (FMGE Units 1, 19–20)",
"3 papers • REBOA emerges as superior to resuscitative thoracotomy; restrictive fluids now guideline-endorsed",
"trauma"
)
story.append(paper_card(
num=9, landmark=True,
title="🥇 REBOA vs Resuscitative Thoracotomy for Noncompressible Torso Hemorrhage: Systematic Review & Meta-Analysis",
authors="Londoño Barrientos M, Amarillo Gutierrez D, López Zapata CA et al.",
journal_year="J Trauma Acute Care Surg. 2026 Jul 1",
pmid="41885281",
doi="10.1097/TA.0000000000004962",
background=(
"Resuscitative Endovascular Balloon Occlusion of the Aorta (REBOA) is a "
"catheter-based minimally invasive technique for temporary aortic occlusion in "
"exsanguinating hemorrhage. This meta-analysis (14 studies, 9,028 patients) compared "
"REBOA vs resuscitative thoracotomy (RT) with aortic cross-clamping."
),
key_findings=[
"REBOA: significantly lower in-hospital mortality vs RT — OR 0.17 (95% CI 0.10–0.28), moderate-certainty evidence",
"Hemorrhagic shock subgroup: OR 0.18 (greater benefit than cardiac arrest subgroup OR 0.32)",
"Early mortality benefit most pronounced: OR 0.12 (95% CI 0.07–0.23)",
"REBOA improved neurological outcomes vs RT",
"REBOA had higher complication rate: OR 7.81 (95% CI 3.88–15.72) and longer aortic occlusion",
"Conclusion: REBOA preferred strategy when performed by experienced teams in structured trauma systems",
],
fmge_implications=[
"REBOA = emerging damage control procedure for non-compressible torso hemorrhage — now appearing in FMGE 2026",
"REBOA is SUPERIOR to emergency resuscitative thoracotomy in hemorrhagic shock (not cardiac arrest)",
"CLASSIC FMGE: Tension pneumothorax → immediate needle decompression — this principle unchanged",
"ATLS primary survey (ABCDE) and hemorrhagic shock classification remain high-yield",
],
domain_key="trauma"
))
story.append(paper_card(
num=10, landmark=True,
title="📋 ESICM 2025 Clinical Practice Guideline: Fluid Therapy in Critically Ill Adults — Volume of Resuscitation",
authors="Mekontso Dessap A, AlShamsi F, Belletti A et al.",
journal_year="Intensive Care Med. 2025 Mar",
pmid="40163133",
doi="10.1007/s00134-025-07840-1",
background=(
"The European Society of Intensive Care Medicine (ESICM) 2025 guideline provides "
"evidence-based recommendations on fluid resuscitation volumes for critically ill adults, "
"using the GRADE framework across multiple shock etiologies."
),
key_findings=[
"Sepsis/septic shock: administer UP TO 30 ml/kg IV crystalloids in initial phase (very low certainty)",
"HEMORRHAGIC SHOCK — blunt trauma: RESTRICTIVE fluid strategy recommended (moderate certainty)",
"HEMORRHAGIC SHOCK — penetrating trauma: RESTRICTIVE fluid strategy recommended (low certainty)",
"Non-traumatic hemorrhagic shock: guided by hemodynamic and biochemical parameters",
"Left-sided cardiogenic shock: fluids as primary treatment NOT recommended",
"Cardiac tamponade: fluids cautiously until definitive treatment (pericardiocentesis/surgery)",
],
fmge_implications=[
"2025 Guideline confirms: RESTRICTIVE fluids for hemorrhagic trauma shock — avoid crystalloid overload",
"\"30 ml/kg crystalloids\" is the key figure for SEPTIC shock initial resuscitation",
"Damage control resuscitation principle: 1:1:1 blood products (pRBC:FFP:platelets) for massive hemorrhage",
"Permissive hypotension (target SBP 80–90 mmHg) in penetrating hemorrhagic shock until surgical control",
],
domain_key="trauma"
))
story.append(paper_card(
num=11, landmark=False,
title="🥇 Adjuvant Therapies for Management of Hemorrhagic Shock: Narrative Review",
authors="Daniel Y, Dufour-Gaume F, Vergnaud A et al.",
journal_year="Crit Care. 2025 Mar 29",
pmid="40158128",
doi="10.1186/s13054-025-05352-6",
background=(
"Beyond fluids and blood products, multiple adjuvant agents (tranexamic acid, "
"vasopressors, calcium, fibrinogen) are used in hemorrhagic shock. "
"This review summarises current evidence for adjuvant strategies."
),
key_findings=[
"Tranexamic acid (TXA): mortality benefit when given within 3 hours of injury (CRASH-2 trial evidence)",
"Calcium supplementation: important adjunct with massive transfusion (citrate chelation depletes Ca2+)",
"Fibrinogen concentrate: superior to fresh frozen plasma for fibrinogen replacement",
"Vasopressors: norepinephrine preferred in distributive component; avoid in pure hemorrhagic shock",
],
fmge_implications=[
"Tranexamic acid in trauma: give within 3 hours of injury — reduces mortality (high-yield FMGE fact)",
"1:1:1 ratio of pRBC:FFP:platelets = damage control resuscitation standard",
"Massive transfusion → hypocalcemia (citrate toxicity) → supplement calcium",
],
domain_key="trauma"
))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════════════
# DOMAIN 5 — HEPATOBILIARY
# ════════════════════════════════════════════════════════════════════════
story += domain_header(
"Domain 5 — Hepatobiliary Surgery (FMGE Unit 30)",
"1 paper • Intraoperative cholangiography remains gold standard for bile duct injury prevention",
"hpb"
)
story.append(paper_card(
num=12, landmark=False,
title="🥇 Laparoscopic Ultrasonography vs Intraoperative Cholangiography During Laparoscopic Cholecystectomy: Systematic Review & Meta-Analysis",
authors="Edebo A, Andersson J, Gustavsson J et al.",
journal_year="Surg Endosc. 2024 Sep",
pmid="39020122",
doi="10.1007/s00464-024-11052-1",
background=(
"Bile duct injury (BDI) during laparoscopic cholecystectomy is a rare but serious "
"complication. Intraoperative cholangiography (IOC) and laparoscopic ultrasonography "
"(LUS) are used to identify the biliary anatomy and detect CBD stones. "
"This meta-analysis compared their diagnostic performance."
),
key_findings=[
"Both LUS and IOC have comparable sensitivity and specificity for detecting CBD stones",
"IOC remains the gold standard for real-time biliary anatomy visualization",
"LUS is faster, avoids radiation, no contrast needed — acceptable alternative",
"Neither technique eliminates bile duct injury risk; critical view of safety (CVS) is essential",
"Critical View of Safety = complete dissection of hepatocystic triangle with only 2 structures entering gallbladder",
],
fmge_implications=[
"IOC = gold standard for identifying CBD stones and biliary anatomy during laparoscopic cholecystectomy",
"Triangle of Calot = cystic duct + common hepatic duct + liver undersurface — cystic artery inside",
"Bile duct injuries classified by Strasberg system (A–E): FMGE-tested concept",
"Post-cholecystectomy bile leak management: USG drainage of biloma → ERCP for ductal injury",
],
domain_key="hpb"
))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════════════
# DOMAIN 6 — UROLOGY / RCC
# ════════════════════════════════════════════════════════════════════════
story += domain_header(
"Domain 6 — Urology / Renal Cell Carcinoma (FMGE Units 21–26)",
"1 paper • Partial nephrectomy now evidence-supported even for pT3a RCC",
"urology"
)
story.append(paper_card(
num=13, landmark=True,
title="🥇 Partial vs Radical Nephrectomy for pT3a Renal Cell Carcinoma: Systematic Review & Meta-Analysis",
authors="Gavi F, Rossi F, Fettucciari D et al.",
journal_year="J Robot Surg. 2026 Apr 21",
pmid="42010212",
doi="10.1007/s11701-026-03384-8",
background=(
"Standard FMGE teaching: partial nephrectomy (PN) for T1a (≤4 cm) RCC; "
"radical nephrectomy (RN) for larger/advanced tumors. pT3a RCC (invasion of "
"perinephric fat, renal vein, or renal sinus) has traditionally been managed with RN. "
"This meta-analysis (16 studies, 34,304 patients) challenged this paradigm."
),
key_findings=[
"No significant difference between PN and RN in: estimated blood loss, operative time, hospital stay, major complications (Clavien-Dindo >2)",
"PN = significantly better renal function preservation vs RN (p<0.01)",
"PN = higher positive surgical margin rate — but no significant difference in oncological control",
"PN group had smaller tumors (selection bias acknowledged)",
"Conclusion: PN is safe and feasible alternative for pT3a RCC — preserves kidney function without compromising oncological outcomes",
],
fmge_implications=[
"UPDATED TEACHING: Partial nephrectomy is now evidence-supported even for pT3a RCC (beyond the classic T1a rule)",
"CLASSIC FMGE (still valid): T1a (≤4 cm) → partial nephrectomy is STANDARD of care",
"Key benefit of PN: better renal function preservation — important in patients with solitary kidney, CKD, or bilateral disease",
"RCC is RADIORESISTANT — radiotherapy is NOT standard treatment",
],
domain_key="urology"
))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════════════
# MASTER REFERENCE TABLE
# ════════════════════════════════════════════════════════════════════════
SECTION_NAME[0] = "Master Reference Table"
hdr_row2 = [[Paragraph("📊 Master Reference Table — All 13 Papers", S_CH_TITLE)]]
hdr_t2 = Table(hdr_row2, colWidths=[W - 72])
hdr_t2.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), DARK_NAVY),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING", (0,0), (-1,-1), 8),
("LEFTPADDING", (0,0), (-1,-1), 12),
]))
story.append(hdr_t2)
story.append(Spacer(1, 4*mm))
row_bg_map = {
1: AMBER_LIGHT, 2: AMBER_LIGHT, 3: AMBER_LIGHT,
4: GREEN_LIGHT, 5: GREEN_LIGHT, 6: GREEN_LIGHT,
7: TEAL_LIGHT, 8: TEAL_LIGHT,
9: RED_LIGHT, 10: RED_LIGHT, 11: RED_LIGHT,
12: PURPLE_LIGHT,
13: PALE_BLUE,
}
star_map = {1:"⭐", 2:"⭐", 7:"⭐", 9:"⭐", 10:"⭐", 13:"⭐"}
master_rows = [
[1, "Salminen P et al.", "JAMA 2026", "Appendicitis", "APPAC 10-yr: antibiotics valid for adults, 55.7% avoid surgery"],
[2, "St Peter SD et al.", "Lancet 2025", "Appendicitis", "Antibiotics INFERIOR to appendicectomy in children (34% vs 7% failure)"],
[3, "Tang Y et al.", "Cochrane 2025", "Appendicitis", "Routine drainage NOT standard after complicated appendicectomy"],
[4, "Romano C et al.", "BMC Surg 2025", "Hernia", "Synthetic mesh remains standard; biological mesh no clear benefit"],
[5, "Ding Y et al.", "Surg Endosc 2026", "Hernia", "Laparoscopic hernia repair safe in elderly/octogenarians"],
[6, "Huang H et al.", "Hernia 2026", "Hernia", "Both open/lap safe for pediatric incarcerated hernia; surgery urgent"],
[7, "Hurtado Amézquita YC et al.", "ENT J 2026", "Thyroid", "Thermal ablation = surgery for T1aN0M0 PTC; less permanent RLN injury"],
[8, "Lavarda Scheinpflug A et al.", "Endocrine 2024", "Thyroid", "Active surveillance feasible for low-risk nodal mets in DTC"],
[9, "Londoño Barrientos M et al.", "J Trauma 2026", "Trauma", "REBOA superior to resuscitative thoracotomy in hemorrhagic shock (OR 0.17)"],
[10, "Mekontso Dessap A et al.", "ICM 2025", "Trauma/Shock", "ESICM 2025: restrictive fluids for hemorrhagic shock; 30 ml/kg for sepsis"],
[11, "Daniel Y et al.", "Crit Care 2025", "Trauma", "TXA within 3 hrs, 1:1:1 blood products, calcium supplementation in massive transfusion"],
[12, "Edebo A et al.", "Surg Endosc 2024", "HPB", "IOC = gold standard for biliary anatomy; LUS comparable for CBD stones"],
[13, "Gavi F et al.", "J Robot Surg 2026","Urology/RCC", "Partial nephrectomy safe for pT3a RCC; better renal function vs radical"],
]
tbl_data = [[Paragraph(h, S_TH) for h in ["#", "Authors", "Journal/Year", "Domain", "Key Finding"]]]
for r in master_rows:
num, auth, jrn, dom, finding = r
star = star_map.get(num, "")
tbl_data.append([
Paragraph(f"<b>{num}</b> {star}", S_TC),
Paragraph(auth, S_TC_SM),
Paragraph(jrn, S_TC_SM),
Paragraph(dom, S_TC_SM),
Paragraph(finding, S_TC_SM),
])
mt = Table(tbl_data, colWidths=[14*mm, 35*mm, 28*mm, 22*mm, 61*mm])
cmds = [
("BACKGROUND", (0,0), (-1,0), DARK_NAVY),
("GRID", (0,0), (-1,-1), 0.3, HexColor("#BDBDBD")),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 4),
("VALIGN", (0,0), (-1,-1), "TOP"),
]
for i, r in enumerate(master_rows, 1):
cmds.append(("BACKGROUND", (0,i), (-1,i), row_bg_map.get(i, WHITE)))
mt.setStyle(TableStyle(cmds))
story.append(mt)
story.append(Spacer(1, 5*mm))
# ── UPDATED TEACHING POINTS ───────────────────────────────────────────────
story += info_box(
"🔄 How This Evidence Updates Classic FMGE Teaching",
[Paragraph(t, S_BULLET) for t in [
"• OLD: \"Appendicitis always requires surgery\" → NEW: Antibiotics are a valid option for ADULT uncomplicated appendicitis (55.7% avoid surgery at 10 years, JAMA 2026)",
"• UNCHANGED: In CHILDREN, appendicectomy remains standard (Lancet 2025: antibiotics failed 34% at 1 year)",
"• OLD: \"T1aN0M0 PTC = total thyroidectomy\" → NEW: Thermal ablation equally effective with less permanent RLN injury (ENT J 2026)",
"• UNCHANGED: FNAC cannot diagnose follicular thyroid carcinoma — hemithyroidectomy still required",
"• OLD: \"Give fluids aggressively in trauma shock\" → NEW: RESTRICTIVE fluids recommended for hemorrhagic trauma (ESICM 2025 guideline)",
"• NEW CONCEPT: REBOA is superior to resuscitative thoracotomy in hemorrhagic shock (J Trauma 2026)",
"• OLD: \"Partial nephrectomy only for T1a (≤4 cm) RCC\" → NEW: Evidence supports PN even for pT3a RCC (J Robot Surg 2026)",
"• UNCHANGED: Synthetic mesh is still standard for inguinal hernia repair; laparoscopic approach preferred",
]],
bg=AMBER_LIGHT, border=AMBER_DARK
)
# ── Disclaimer ────────────────────────────────────────────────────────────
story.append(HRFlowable(width=W-72, thickness=0.5, color=GREY_MID))
story.append(Spacer(1, 3*mm))
story.append(Paragraph(
"All papers verified on PubMed (July 2026). FMGE implications are the author's analysis of "
"clinical significance for examination preparation. Always cross-reference with current "
"clinical guidelines and standard surgical textbooks (Bailey & Love, Schwartz's, ATLS Manual). "
"Compiled by Orris Medical AI for educational use only.",
S_FOOTER))
# ── Build ─────────────────────────────────────────────────────────────────
doc.build(story, onFirstPage=cover_page, onLaterPages=inner_page)
print(f"Done: {OUTPUT}")
cd /tmp/workspace/fmge-surgery && python3 generate_pubmed_pdf.py 2>&1
Generate a practice test with 25 MCQs based on these 13 PubMed papers