MAKE ME A COMPREHENSIVE EXAM STUDY MATERIAL ON GERM CELL TUMOURS OF OVARY , INCLUDING NCCN, ESGO, ESMO, , RECENT ADVANCES AND RELEVENT TRIALS. MAKE IT SEPARATE FOR EACH GCT
MAKE ME A COMPREHENSIVE EXAM STUDY MATERIAL ON GERM CELL TUMOURS OF OVARY , INCLUDING NCCN, ESGO, ESMO, , RECENT ADVANCES AND RELEVENT TRIALS. MAKE IT SEPARATE FOR EACH GCT
"ovarian germ cell tumors" AND treatment
NCCN ESGO ESMO guidelines ovarian germ cell tumors 2024 2025
"ovarian germ cell" AND (BEP OR chemotherapy OR dysgerminoma OR "yolk sac")
"yolk sac tumor" OR "endodermal sinus" OR "immature teratoma" ovary treatment outcome
"malignant ovarian germ cell" AND (surveillance OR fertility OR recurrence OR BEP)
https://www.nccn.org/patients/guidelines/content/PDF/ovarian…
PMID: 40020416
PMID: 38991656
PMID: 40275685
ESMO non-epithelial ovarian cancer germ cell tumor 2024 dysgerminoma BEP chemotherapy guidelines recommendations
https://pmc.ncbi.nlm.nih.gov/articles/PMC12421977
| Category | Subtypes |
|---|---|
| Primitive GCTs | Dysgerminoma, Yolk sac tumor (EST), Embryonal carcinoma, Polyembryoma, Non-gestational choriocarcinoma, Mixed GCT |
| Biphasic/Triphasic teratoma | Immature teratoma, Mature teratoma (solid/cystic/dermoid) |
| Monodermal teratoma | Struma ovarii, Carcinoid, others |
| Tumor | AFP | β-hCG | LDH | PLAP | CA-125 |
|---|---|---|---|---|---|
| Dysgerminoma | - | ± (syncytiotrophoblasts) | ↑↑ | ↑↑ (95%) | ± |
| Yolk sac tumor | ↑↑↑ | - | ± | - | - |
| Embryonal carcinoma | ↑ | ↑ | - | - | - |
| Choriocarcinoma | - | ↑↑↑ | - | - | - |
| Immature teratoma | ± | - | - | - | - |
| Mixed GCT | Variable | Variable | - | - | - |
| Stage | Treatment |
|---|---|
| Stage I (confined to one/both ovaries) | Surveillance preferred |
| Stage II-IV | BEP x 3-4 cycles |
| Period | Clinical Exam | Tumor Markers | CT CAP | USS |
|---|---|---|---|---|
| Year 1 | Every 3 months | Every 2 months | Every 3 months | Every 3 months (if ovary present) |
| Year 2 | Every 3 months | Every 3 months | Every 3 months | Every 3 months |
| Year 3 | Every 6 months | Every 6 months | Every 6-12 months | Every 6 months |
| Years 4-5 | Every 12 months | Every 12 months | As needed | - |
| After 5 years | Annually | Annually x 10 years | As needed | - |
| CXR | Every 6 months Year 1 | As needed Year 2+ |
| Grade | Definition | 5-Year Survival |
|---|---|---|
| Grade 1 (Low) | <1 low-power field (LPF) of immature neuroepithelium per slide | ≥95% |
| Grade 2 | 1-3 LPFs of immature neuroepithelium | ~85% |
| Grade 3 (High) | >3 LPFs of immature neuroepithelium | ~85% |
| Stage & Grade | Treatment |
|---|---|
| Stage I, Grade 1 (Low Grade) | Surveillance (no chemo) |
| Stage I, Grade 2-3 (High Grade) | BEP x 3 cycles |
| Stage II-IV, any grade | BEP x 3-4 cycles |
1/3 of above: less favorable
| Drug | Key Toxicities |
|---|---|
| Bleomycin | Pulmonary fibrosis (dose-limiting), flagellate dermatitis, Raynaud's phenomenon, fever |
| Etoposide | Myelosuppression, alopecia, secondary leukemia (AML), nausea |
| Cisplatin | Nephrotoxicity, ototoxicity, peripheral neuropathy, myelosuppression, electrolyte loss |
| Risk Group | Criteria | BEP Cycles |
|---|---|---|
| Low/Intermediate | Stage II-IV dysgerminoma or immature teratoma | 3 cycles BEP |
| High | Any-stage YST, embryonal carcinoma, or choriocarcinoma; Stage II-IV with poor markers | 4 cycles BEP |
| Surveillance only | Stage I dysgerminoma; Stage I, Grade 1 immature teratoma | None |
Note: Advanced-stage MOGCTs (except dysgerminoma) mostly fall into intermediate or high risk.
| Regimen | Indication |
|---|---|
| TIP (Paclitaxel + Ifosfamide + Cisplatin) | Platinum-sensitive relapse |
| VIP (Vinblastine + Ifosfamide + Cisplatin) | Platinum-sensitive relapse |
| TGO (Paclitaxel + Gemcitabine + Oxaliplatin) | Platinum-resistant |
| HDCT + ASCT | Platinum-resistant/refractory; specialized centers |
| GCT Type | Stage I | Stage II-IV |
|---|---|---|
| Dysgerminoma | Surveillance | BEP x 3-4 |
| Immature Teratoma Grade 1 | Surveillance | BEP x 3-4 |
| Immature Teratoma Grade 2-3 | BEP x 3 | BEP x 3-4 |
| Yolk Sac Tumor | BEP x 3 (ALL stages) | BEP x 3-4 |
| Embryonal Carcinoma | BEP x 3-4 (ALL stages) | BEP x 3-4 |
| Choriocarcinoma | BEP x 3-4 (ALL stages) | BEP x 3-4 |
| Trial/Study | Year | Key Finding |
|---|---|---|
| Einhorn & Donohue (BEP pioneer) | 1974 | Cisplatin-based regimen transformed GCT cure rates (testicular; extrapolated to ovarian) |
| GOG-78 | 1989 | BEP superior to VAC in ovarian GCTs; established BEP as standard |
| Williams et al. (GOG) | 1994 | 3 cycles BEP equivalent to 4 cycles in good-risk GCT |
| MaGIC Consortium | 2013-ongoing | Global pediatric/adolescent GCT registry; identified age ≥11 as poor prognostic factor; defined staging minimum requirements |
| Gershenson et al. | 2007 | Surveillance alone for Stage I ovarian dysgerminoma: excellent outcomes |
| Marino et al. (PMID: 38371620) | 2024 | Stage I immature teratoma: surveillance vs chemo - equivalent outcomes, better fertility with surveillance |
| Marino et al. (PMID: 39222973) | 2024 | Fertility outcomes in Stage I ovarian immature teratoma: excellent with FSS |
| Marino et al. (PMID: 40161550) | 2025 | Advanced immature teratoma: FSS feasible with good oncologic and fertility outcomes |
| Nasioudis & Pashankar (PMID: 38991656) | 2024 | Recurrent MOGCT management: TIP/VIP for platinum-sensitive; HDCT/ASCT for resistant |
| Seckl et al. (PMID: 40020416) | 2025 | Controversies in MOGCT: surveillance, NACT, relapse management - highlighted lack of RCT data |
| De Maria et al. (PMID: 40275685) | 2025 | Comprehensive review: KIT inhibitors experimental, HDCT promising, molecular landscape key |
| Zerdeva et al. (PMID: 41068325) | 2025 | Systematic review: Fertility preservation safe across all GCT types and stages |
| Laga et al. (PMID: 40269311) | 2025 | Single-cell profiling: distinct transcriptomic profiles per GCT subtype (preclinical relevance) |
| Feature | Dysgerminoma | Yolk Sac Tumor | Immature Teratoma | Embryonal Ca | Choriocarcinoma | Mixed GCT |
|---|---|---|---|---|---|---|
| Frequency | 30-40% | 3rd most common | 2nd most common | Extremely rare | Extremely rare | Common |
| Age (median) | 10-30 yrs | 16-18 yrs | 10-20 yrs | 4-28 yrs | <20 yrs | Young |
| Bilaterality | 10-15% | 0% | <1% | 0% | 0% | Rare |
| AFP | - | +++ | ± | + | - | Variable |
| β-hCG | ± (syncytiotrophoblasts) | - | - | + | +++ | Variable |
| LDH/PLAP | ++ | - | - | - | - | Variable |
| Key histology | Lymphocytic infiltrate, lobules | Schiller-Duval body | Immature neuroepithelium | Primitive cells, CD30+ | Biphasic trophoblast | Mixed |
| Stage I treatment | Surveillance | BEP x3 | Grade 1: Surveillance; Grade 2-3: BEP | BEP x3-4 | BEP x3-4 | BEP |
| Stage II-IV | BEP x3-4 | BEP x3-4 | BEP x3-4 | BEP x3-4 | BEP x3-4 | BEP |
| Prognosis | Excellent (>95% Stage I) | Good (>95% Stage I-II) | 70-80% overall | Moderate | Poor (organ mets) | Size/component-dependent |
| Unique feature | Radiosensitive; KIT+; Y-chromosome check | Always unilateral; AFP; hepatoid variant poor | GTS; gliomatosis peritonei; pediatric surgery-alone | Both AFP+hCG | Distinguish from gestational | Most malignant component determines Rx |
Make it into a printable pdf, exam ready essay answer type
ls -la /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace && echo "created"
mkdir -p /tmp/workspace/gct-ovary && echo "done"
~/gct-ovary/generate_pdf.py
#!/usr/bin/env python3
"""
Generate comprehensive exam study PDF on Germ Cell Tumours of the Ovary
Using ReportLab for professional, printable PDF output
"""
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm, mm
from reportlab.lib.colors import (HexColor, black, white, Color)
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.flowables import Flowable
from reportlab.lib import colors
import os
# ── Colour Palette ──────────────────────────────────────────────────────────────
DARK_BLUE = HexColor('#1B3A6B') # main heading
MID_BLUE = HexColor('#2563EB') # sub-heading
ACCENT_TEAL = HexColor('#0891B2') # section bar
LIGHT_TEAL = HexColor('#E0F7FA') # table header bg
GOLD = HexColor('#B7791F') # highlight / key fact
GOLD_BG = HexColor('#FFFBEB') # key fact box bg
LIGHT_GREY = HexColor('#F3F4F6') # alternate row
MED_GREY = HexColor('#6B7280') # caption / note
BORDER = HexColor('#CBD5E1') # table border
RED_ALERT = HexColor('#DC2626') # warning / exam tip
GREEN = HexColor('#15803D') # good prognosis
PAGE_BG = white
PAGE_W, PAGE_H = A4
MARGIN = 1.8 * cm
# ── Style Sheet ─────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()
def S(name, **kw):
"""Helper – override a style by name."""
base = styles[name]
return ParagraphStyle(
name + '_custom_' + '_'.join(k+str(v) for k,v in kw.items()),
parent=base, **kw
)
TITLE_STYLE = ParagraphStyle('DocTitle',
fontName='Helvetica-Bold', fontSize=22, textColor=white,
alignment=TA_CENTER, spaceAfter=4, leading=28)
SUB_TITLE_STYLE = ParagraphStyle('DocSubTitle',
fontName='Helvetica', fontSize=11, textColor=HexColor('#CBD5E1'),
alignment=TA_CENTER, spaceAfter=2, leading=14)
EDITION_STYLE = ParagraphStyle('Edition',
fontName='Helvetica-Oblique', fontSize=9, textColor=HexColor('#93C5FD'),
alignment=TA_CENTER, spaceAfter=0, leading=11)
H1 = ParagraphStyle('H1',
fontName='Helvetica-Bold', fontSize=15, textColor=white,
spaceBefore=14, spaceAfter=4, leading=20,
backColor=DARK_BLUE, borderPad=6,
leftIndent=-0.2*cm, rightIndent=-0.2*cm)
H2 = ParagraphStyle('H2',
fontName='Helvetica-Bold', fontSize=12, textColor=white,
spaceBefore=10, spaceAfter=3, leading=16,
backColor=MID_BLUE, borderPad=4,
leftIndent=-0.1*cm, rightIndent=-0.1*cm)
H3 = ParagraphStyle('H3',
fontName='Helvetica-Bold', fontSize=10.5, textColor=DARK_BLUE,
spaceBefore=8, spaceAfter=2, leading=14,
borderWidth=0, leftIndent=0)
H4 = ParagraphStyle('H4',
fontName='Helvetica-BoldOblique', fontSize=10, textColor=ACCENT_TEAL,
spaceBefore=6, spaceAfter=2, leading=13)
BODY = ParagraphStyle('Body',
fontName='Helvetica', fontSize=9.5, textColor=black,
spaceBefore=3, spaceAfter=3, leading=14,
alignment=TA_JUSTIFY)
BODY_SMALL = ParagraphStyle('BodySmall',
fontName='Helvetica', fontSize=8.5, textColor=black,
spaceBefore=2, spaceAfter=2, leading=12,
alignment=TA_JUSTIFY)
BULLET = ParagraphStyle('Bullet',
fontName='Helvetica', fontSize=9.5, textColor=black,
spaceBefore=2, spaceAfter=1, leading=13,
leftIndent=16, firstLineIndent=-12)
BULLET2 = ParagraphStyle('Bullet2',
fontName='Helvetica', fontSize=9, textColor=black,
spaceBefore=1, spaceAfter=1, leading=12,
leftIndent=30, firstLineIndent=-12)
KEY_FACT = ParagraphStyle('KeyFact',
fontName='Helvetica-Bold', fontSize=9.5, textColor=GOLD,
spaceBefore=2, spaceAfter=2, leading=13,
leftIndent=14, firstLineIndent=-12)
EXAM_TIP = ParagraphStyle('ExamTip',
fontName='Helvetica-Bold', fontSize=9, textColor=RED_ALERT,
spaceBefore=2, spaceAfter=2, leading=13,
leftIndent=14, firstLineIndent=-12)
CAPTION = ParagraphStyle('Caption',
fontName='Helvetica-Oblique', fontSize=8, textColor=MED_GREY,
spaceBefore=1, spaceAfter=4, leading=11, alignment=TA_CENTER)
REF_STYLE = ParagraphStyle('Ref',
fontName='Helvetica', fontSize=7.5, textColor=MED_GREY,
spaceBefore=1, spaceAfter=1, leading=10)
FOOTER_STYLE = ParagraphStyle('Footer',
fontName='Helvetica', fontSize=7, textColor=MED_GREY,
alignment=TA_CENTER, leading=9)
# ── Helper Flowables ─────────────────────────────────────────────────────────────
def hr(color=BORDER, width=0.5):
return HRFlowable(width='100%', thickness=width, color=color,
spaceAfter=4, spaceBefore=4)
def sp(h=0.15):
return Spacer(1, h*cm)
def h1(text):
return Paragraph(f' {text}', H1)
def h2(text):
return Paragraph(f' {text}', H2)
def h3(text):
return Paragraph(text, H3)
def h4(text):
return Paragraph(text, H4)
def body(text):
return Paragraph(text, BODY)
def body_s(text):
return Paragraph(text, BODY_SMALL)
def bullet(text, level=1):
prefix = '• ' if level == 1 else '– '
s = BULLET if level == 1 else BULLET2
return Paragraph(prefix + text, s)
def key(text):
return Paragraph('★ ' + text, KEY_FACT)
def exam_tip(text):
return Paragraph('⚡ EXAM TIP: ' + text, EXAM_TIP)
def bold(text):
return f'<b>{text}</b>'
def ital(text):
return f'<i>{text}</i>'
def col(text, c):
return f'<font color="{c}">{text}</font>'
# ── Table helper ──────────────────────────────────────────────────────────────────
def make_table(data, col_widths=None, header=True, alternate=True, font_size=8.5):
usable = PAGE_W - 2*MARGIN
if col_widths is None:
n = len(data[0])
col_widths = [usable / n] * n
cell_style = ParagraphStyle('TC', fontName='Helvetica', fontSize=font_size,
leading=font_size*1.35, spaceBefore=1, spaceAfter=1,
textColor=black)
hdr_style = ParagraphStyle('TH', fontName='Helvetica-Bold', fontSize=font_size,
leading=font_size*1.35, spaceBefore=1, spaceAfter=1,
textColor=white)
table_data = []
for r_idx, row in enumerate(data):
new_row = []
for cell in row:
if isinstance(cell, str):
s = hdr_style if (r_idx == 0 and header) else cell_style
new_row.append(Paragraph(cell, s))
else:
new_row.append(cell)
table_data.append(new_row)
t = Table(table_data, colWidths=col_widths, repeatRows=1 if header else 0)
n_rows = len(table_data)
style_cmds = [
('BACKGROUND', (0,0), (-1,0), DARK_BLUE),
('TEXTCOLOR', (0,0), (-1,0), white),
('ALIGN', (0,0), (-1,-1), 'LEFT'),
('VALIGN', (0,0), (-1,-1), 'TOP'),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,-1), font_size),
('GRID', (0,0), (-1,-1), 0.4, BORDER),
('ROWBACKGROUNDS', (0,1), (-1,-1),
[LIGHT_GREY, white] if alternate else [white]*100),
('LEFTPADDING', (0,0), (-1,-1), 5),
('RIGHTPADDING', (0,0), (-1,-1), 5),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING',(0,0), (-1,-1), 4),
('WORDWRAP', (0,0), (-1,-1), True),
]
t.setStyle(TableStyle(style_cmds))
return t
# ── Cover Page ───────────────────────────────────────────────────────────────────
class CoverPage(Flowable):
def __init__(self):
Flowable.__init__(self)
self.width = PAGE_W - 2*MARGIN
self.height = PAGE_H - 2*MARGIN
def draw(self):
c = self.canv
# dark blue background banner
c.setFillColor(DARK_BLUE)
c.rect(-MARGIN, PAGE_H - 2*MARGIN - 8.5*cm, PAGE_W, 8.5*cm, fill=1, stroke=0)
# teal accent stripe
c.setFillColor(ACCENT_TEAL)
c.rect(-MARGIN, PAGE_H - 2*MARGIN - 9.0*cm, PAGE_W, 0.5*cm, fill=1, stroke=0)
def cover_elements():
elems = []
elems.append(CoverPage())
# The text is overlaid via normal Paragraphs positioned after the flowable
return elems
# ── Page Template with header/footer ─────────────────────────────────────────────
def on_page(canvas, doc):
canvas.saveState()
# header line
canvas.setFillColor(DARK_BLUE)
canvas.rect(0, PAGE_H - 1.2*cm, PAGE_W, 1.2*cm, fill=1, stroke=0)
canvas.setFillColor(ACCENT_TEAL)
canvas.rect(0, PAGE_H - 1.35*cm, PAGE_W, 0.15*cm, fill=1, stroke=0)
canvas.setFont('Helvetica-Bold', 7.5)
canvas.setFillColor(white)
canvas.drawString(MARGIN, PAGE_H - 0.85*cm,
'GCTs OF THE OVARY — COMPREHENSIVE EXAM STUDY MATERIAL')
canvas.setFont('Helvetica', 7.5)
canvas.drawRightString(PAGE_W - MARGIN, PAGE_H - 0.85*cm,
'NCCN 2025 | ESMO/ESGO | Recent Advances')
# footer
canvas.setFillColor(LIGHT_GREY)
canvas.rect(0, 0, PAGE_W, 1.0*cm, fill=1, stroke=0)
canvas.setFillColor(ACCENT_TEAL)
canvas.rect(0, 1.0*cm, PAGE_W, 0.12*cm, fill=1, stroke=0)
canvas.setFont('Helvetica', 7)
canvas.setFillColor(MED_GREY)
canvas.drawString(MARGIN, 0.35*cm,
'Sources: Berek & Novak\'s Gynecology | NCCN 2025 | ESMO/ESGO | PubMed')
canvas.drawRightString(PAGE_W - MARGIN, 0.35*cm,
f'Page {doc.page}')
canvas.restoreState()
# ── BUILD CONTENT ─────────────────────────────────────────────────────────────────
def build_pdf(output_path):
doc = SimpleDocTemplate(
output_path,
pagesize=A4,
leftMargin=MARGIN, rightMargin=MARGIN,
topMargin=1.6*cm, bottomMargin=1.4*cm,
title='Germ Cell Tumours of the Ovary — Comprehensive Exam Study Material',
author='Orris Medical AI',
subject='Gynaecological Oncology',
)
story = []
# ════════════════════════════════════════════════════════════
# COVER
# ════════════════════════════════════════════════════════════
story.append(Spacer(1, 5.5*cm))
cover_title = ParagraphStyle('CoverTitle',
fontName='Helvetica-Bold', fontSize=26, textColor=white,
alignment=TA_CENTER, leading=34, spaceAfter=6)
cover_sub = ParagraphStyle('CoverSub',
fontName='Helvetica', fontSize=13, textColor=HexColor('#BAE6FD'),
alignment=TA_CENTER, leading=18, spaceAfter=4)
cover_ed = ParagraphStyle('CoverEd',
fontName='Helvetica-Oblique', fontSize=10, textColor=HexColor('#7DD3FC'),
alignment=TA_CENTER, leading=14, spaceAfter=0)
story.append(Paragraph('GERM CELL TUMOURS OF THE OVARY', cover_title))
story.append(Paragraph('Comprehensive Exam Study Material', cover_sub))
story.append(Paragraph('Essay-Answer Format | Exam Ready', cover_sub))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph('NCCN 2025 · ESMO/ESGO Guidelines · Recent Clinical Evidence', cover_ed))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph('Sources: Berek & Novak\'s Gynecology · Robbins Pathology · Harrison\'s 22E', cover_ed))
story.append(Spacer(1, 0.5*cm))
story.append(Spacer(1, 4.5*cm))
info_style = ParagraphStyle('Info',
fontName='Helvetica', fontSize=10, textColor=DARK_BLUE,
alignment=TA_CENTER, leading=16)
story.append(Paragraph('July 2026 Edition', info_style))
story.append(Paragraph('Gynaecological Oncology', info_style))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════
# TABLE OF CONTENTS
# ════════════════════════════════════════════════════════════
story.append(h1('TABLE OF CONTENTS'))
story.append(sp())
toc_data = [
['Section', 'Topic'],
['1', 'Overview & Classification of Ovarian GCTs'],
['2', 'General Principles: Staging, Surgery & BEP Regimen'],
['3', 'Dysgerminoma'],
['4', 'Yolk Sac Tumour (Endodermal Sinus Tumour)'],
['5', 'Immature Teratoma'],
['6', 'Embryonal Carcinoma'],
['7', 'Non-Gestational Choriocarcinoma'],
['8', 'Polyembryoma'],
['9', 'Mixed Germ Cell Tumours'],
['10', 'Gonadoblastoma (Precursor Lesion)'],
['11', 'Recurrent / Refractory Disease & Salvage Therapy'],
['12', 'Late Effects of Treatment'],
['13', 'Guideline Summary: NCCN 2025 vs ESMO/ESGO'],
['14', 'Key Clinical Trials & Landmark Studies'],
['15', 'Recent Advances (2021–2026)'],
['16', 'Quick Reference Master Table'],
['17', 'High-Yield Mnemonics & Exam Bullets'],
['18', 'References'],
]
story.append(make_table(toc_data,
col_widths=[1.2*cm, PAGE_W - 2*MARGIN - 1.2*cm]))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════
# SECTION 1 — OVERVIEW & CLASSIFICATION
# ════════════════════════════════════════════════════════════
story.append(h1('1. OVERVIEW & CLASSIFICATION OF OVARIAN GCTs'))
story.append(sp(0.2))
story.append(body(
'Germ cell tumours (GCTs) of the ovary arise from the primordial germ cells and '
'account for approximately <b>5% of all ovarian cancers</b>. Despite their overall '
'rarity, they represent the <b>most common ovarian malignancy in women under 20 '
'years of age</b> and are responsible for up to 70% of ovarian tumours in this age '
'group. Most advances in management are extrapolated from the much larger experience '
'with testicular GCTs, as the incidence of ovarian malignant GCTs is approximately '
'one-tenth that of testicular counterparts.'
))
story.append(h3('WHO Classification (2014, updated 2020)'))
cls_data = [
['Category', 'Subtypes'],
['Primitive GCTs', 'Dysgerminoma · Yolk sac tumour (EST) · Embryonal carcinoma · Polyembryoma · Non-gestational choriocarcinoma · Mixed GCT'],
['Biphasic / Triphasic Teratoma', 'Immature teratoma · Mature teratoma (solid / cystic / dermoid cyst / fetiform)'],
['Monodermal Teratoma', 'Struma ovarii · Carcinoid · Neuroectodermal tumour · Carcinoma · Melanocytic · Sarcoma · Others'],
]
story.append(make_table(cls_data,
col_widths=[5.5*cm, PAGE_W - 2*MARGIN - 5.5*cm]))
story.append(sp(0.2))
story.append(h3('Tumour Markers by GCT Subtype'))
mk_data = [
['Tumour', 'AFP', 'β-hCG', 'LDH', 'PLAP', 'CA-125'],
['Dysgerminoma', '–', '± (syncytiotrophoblasts)', '↑↑ (95%)', '↑↑ (95%)', '±'],
['Yolk Sac Tumour', '↑↑↑', '–', '±', '–', '–'],
['Embryonal Carcinoma', '+', '+', '–', '–', '–'],
['Choriocarcinoma (non-gest.)', '–', '↑↑↑', '–', '–', '–'],
['Immature Teratoma', '±', '–', '–', '–', '–'],
['Mixed GCT', 'Variable', 'Variable', '–', '–', '–'],
]
usable = PAGE_W - 2*MARGIN
story.append(make_table(mk_data,
col_widths=[4.4*cm, 1.5*cm, 3.2*cm, 2.2*cm, 2.0*cm, 1.8*cm]))
story.append(sp())
story.append(exam_tip(
'AFP+β-hCG both elevated = Embryonal carcinoma. '
'AFP alone = YST. β-hCG alone = Choriocarcinoma. '
'LDH+PLAP = Dysgerminoma. Immature teratoma = no reliable marker.'
))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════
# SECTION 2 — GENERAL PRINCIPLES
# ════════════════════════════════════════════════════════════
story.append(h1('2. GENERAL PRINCIPLES: STAGING, SURGERY & BEP REGIMEN'))
story.append(sp(0.2))
story.append(h3('Staging'))
story.append(body(
'No independent staging system exists for malignant GCTs. The <b>FIGO staging '
'for ovarian/fallopian tube/peritoneal cancer</b> is applied. The main prognostic '
'factors include: age, histopathological type, stage, and extent of surgical resection. '
'Age >45 years is a risk factor per European guidelines; age ≥11 years is a risk '
'factor in paediatric/adolescent patients per the <b>MaGIC Consortium</b>.'
))
story.append(h3('Fertility-Sparing Surgery (FSS) — Standard of Care'))
story.append(body(
'Given that GCTs predominantly affect young women, <b>unilateral salpingo-oophorectomy '
'(USO)</b> with preservation of the contralateral ovary, uterus, and fallopian tube '
'is the standard approach at virtually all stages. The contralateral ovary is biopsied '
'only if macroscopically abnormal. Bulky, readily resectable disease (e.g. omental cake) '
'is debulked at the same sitting.'
))
story.append(h4('MaGIC Group Minimum Staging Requirements'))
for b_item in [
'Intact tumour removal without capsule violation (document spontaneous rupture)',
'Inspection and biopsy of any abnormal peritoneal surfaces, lymph nodes, omentum, and contralateral ovary',
'Peritoneal fluid cytology',
'Full surgical staging may be omitted in children/adolescents with early-stage disease (NCCN 2025)',
]:
story.append(bullet(b_item))
story.append(sp(0.2))
story.append(h3('BEP Chemotherapy Regimen — Full Details'))
bep_data = [
['Drug', 'Dose', 'Schedule', 'Key Toxicity'],
['Bleomycin (B)', '30 IU IV', 'Days 1, 8, 15 (weekly)', 'Pulmonary fibrosis (dose-limiting), flagellate dermatitis, Raynaud\'s'],
['Etoposide (E)', '100 mg/m² IV', 'Days 1–5', 'Myelosuppression, alopecia, secondary AML'],
['Cisplatin (P)', '20 mg/m² IV', 'Days 1–5', 'Nephrotoxicity, ototoxicity, peripheral neuropathy'],
]
story.append(make_table(bep_data,
col_widths=[3.0*cm, 2.8*cm, 3.8*cm, PAGE_W - 2*MARGIN - 9.6*cm]))
story.append(body_s(
'Cycle length: 21 days. Low/intermediate risk: 3 cycles. High risk: 4 cycles. '
'<b>PFTs mandatory before bleomycin initiation.</b> '
'Alternative for dysgerminoma (bleomycin-contraindicated): Carboplatin + Etoposide (CE).'
))
story.append(sp(0.2))
story.append(h3('IGCCCG-Modified Risk Stratification for MOGCTs'))
risk_data = [
['Risk Group', 'Criteria', 'BEP Cycles'],
['Surveillance only', 'Stage I dysgerminoma; Stage I, Grade 1 immature teratoma', 'None'],
['Low / Intermediate', 'Stage II–IV dysgerminoma or immature teratoma', '3 cycles'],
['High', 'Any-stage YST, embryonal carcinoma, choriocarcinoma; or Stage II–IV with poor marker kinetics', '4 cycles'],
]
story.append(make_table(risk_data,
col_widths=[3.5*cm, 9.0*cm, 2.5*cm]))
story.append(sp(0.2))
story.append(h3('NCCN 2025 Surveillance Schedule (Post-Treatment)'))
surv_data = [
['Assessment', 'Year 1', 'Year 2', 'Year 3', 'Years 4–5', 'After 5 yrs'],
['Clinical exam', 'Every 3 months', 'Every 3 months', 'Every 6 months', 'Every 12 months', 'Annually'],
['Tumour markers (AFP/β-hCG)', 'Every 2 months', 'Every 3 months', 'Every 6 months', 'Every 12 months', 'Annually ×10 yrs'],
['Pelvic USS (if ovary present)', 'Every 3 months', 'Every 3 months', 'Every 6 months', '–', '–'],
['CT CAP', 'Every 3 months', 'Every 3 months', 'Every 6–12 months', 'As needed', 'As needed'],
['Chest X-ray', 'Every 6 months', 'As needed', '–', '–', '–'],
]
story.append(make_table(surv_data, font_size=8,
col_widths=[4.0*cm, 2.7*cm, 2.7*cm, 2.7*cm, 2.5*cm, 2.4*cm]))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════
# SECTION 3 — DYSGERMINOMA
# ════════════════════════════════════════════════════════════
story.append(h1('3. DYSGERMINOMA'))
story.append(sp(0.2))
story.append(h2('3.1 Epidemiology & Key Facts'))
for b_item in [
'<b>Most common</b> malignant GCT — 30–40% of all malignant ovarian GCTs',
'1–3% of all ovarian cancers; 5–10% in women <20 years',
'75% occur between ages 10 and 30 years; rarely after age 50',
'20–30% of ovarian malignancies associated with pregnancy are dysgerminomas',
'<b>Only GCT with significant bilaterality</b>: 10–15% of stage I tumours are bilateral',
'65% are stage I at diagnosis; 25% present with metastatic disease',
]:
story.append(bullet(b_item))
story.append(sp(0.15))
story.append(key('Dysgerminoma is the ovarian homologue of testicular seminoma.'))
story.append(h2('3.2 Associations'))
for b_item in [
'Gonadal dysgenesis (45,X/46,XY karyotype; unilateral streak gonad + contralateral testis)',
'Androgen insensitivity syndrome (46,XY, testicular feminization)',
'Gonadoblastoma — >50% undergo malignant transformation if left in situ',
'Calcifications on imaging should prompt search for underlying gonadoblastoma',
]:
story.append(bullet(b_item))
story.append(exam_tip(
'Karyotype must be checked preoperatively in premenarcheal patients with a pelvic mass. '
'If Y chromosome found → bilateral oophorectomy (uterus preserved for embryo transfer).'
))
story.append(h2('3.3 Pathology'))
story.append(body(
'<b>Gross:</b> 5–15 cm; bosselated capsule; fleshy, pale-tan to grey-brown cut surface; '
'principally solid with cystic/necrotic areas.'
))
story.append(body(
'<b>Histology:</b> Large, round/polygonal cells with abundant clear cytoplasm, large '
'irregular nuclei, and prominent nucleoli. Arranged in <b>lobules and nests separated '
'by fibrous septa infiltrated with lymphocytes, plasma cells, and granulomas with '
'epithelioid cells and multinucleated giant cells</b>. Extensive necrosis can mimic '
'tuberculosis. Syncytiotrophoblastic giant cells may be present (associated with '
'precocious puberty/virilization — does <u>not</u> alter prognosis).'
))
story.append(body(
'<b>IHC:</b> OCT3/4 (+), NANOG (+), SALL4 (+), CD117/KIT (+), PLAP (+), D2-40 (+)'
))
story.append(h2('3.4 Spread Pattern'))
for b_item in [
'Predominantly <b>lymphatic</b> (para-aortic → mediastinal/supraclavicular nodes — late)',
'Hematogenous spread: lungs, liver, brain (longstanding/recurrent disease)',
'Bone metastases: lower vertebrae (uncommon)',
'Peritoneal spread: through capsule with exfoliation',
]:
story.append(bullet(b_item))
story.append(h2('3.5 Tumour Markers'))
story.append(body(
'<b>LDH</b> elevated in 95% — primary monitoring marker. '
'<b>PLAP</b> elevated in 95%. '
'<b>β-hCG</b> only if syncytiotrophoblastic cells present. '
'<b>AFP</b> is negative; if positive, suspect mixed GCT.'
))
story.append(h2('3.6 Treatment'))
story.append(h3('Surgery'))
story.append(body(
'Minimal procedure: <b>unilateral salpingo-oophorectomy (USO)</b>. '
'Contralateral ovary, fallopian tube, and uterus are preserved even in metastatic '
'disease due to exquisite chemosensitivity. Cytoreductive surgery of bulky '
'resectable disease (e.g. omental cake) is recommended. '
'For those not wishing fertility preservation: total abdominal hysterectomy + BSO.'
))
story.append(h3('Chemotherapy Indications (NCCN 2025)'))
dys_tx_data = [
['Stage', 'Treatment', 'Evidence'],
['Stage I (confined to one/both ovaries)', 'Surveillance — no chemotherapy', 'Disease-free survival >95% with surgery alone (Berek & Novak, Gershenson et al.)'],
['Stage II–IV', 'BEP × 3–4 cycles', 'IGCCCG stratification; 3 cycles for intermediate risk; 4 cycles for high risk'],
['Bleomycin contraindicated', 'Carboplatin + Etoposide (CE)', 'Pooled analysis: comparable efficacy, reduced pulmonary toxicity'],
]
story.append(make_table(dys_tx_data,
col_widths=[4.5*cm, 4.5*cm, PAGE_W-2*MARGIN-9.0*cm]))
story.append(h3('Radiation (Historical)'))
story.append(body(
'Dysgerminoma is highly radiosensitive and radiation was the historical standard. '
'It has been replaced by BEP due to superior fertility preservation and comparable '
'cure rates. Radiation may be used in select salvage cases.'
))
story.append(h2('3.7 Features Associated with Higher Recurrence Risk'))
for b_item in [
'Tumour size >10–15 cm',
'Age <20 years',
'Microscopic pattern with numerous mitoses, anaplasia, and medullary pattern',
'5–10% contralateral ovary involvement at 2 years (includes gonadal dysgenesis)',
]:
story.append(bullet(b_item))
story.append(h2('3.8 Prognosis'))
story.append(body(
'<b>Stage I, surgery alone:</b> >95% 5-year disease-free survival. '
'<b>Metastatic disease:</b> still highly curable with BEP. '
'<b>Overall:</b> best prognosis among all malignant GCTs.'
))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════
# SECTION 4 — YOLK SAC TUMOUR
# ════════════════════════════════════════════════════════════
story.append(h1('4. YOLK SAC TUMOUR (Endodermal Sinus Tumour — EST)'))
story.append(sp(0.2))
story.append(h2('4.1 Epidemiology & Key Facts'))
for b_item in [
'<b>Third most common</b> malignant GCT (after dysgerminoma and immature teratoma)',
'Median age: <b>16–18 years</b>; ~1/3 are premenarcheal at diagnosis',
'Most common symptom: abdominal/pelvic pain (~75%); asymptomatic mass ~10%',
'<b>Always unilateral (100%)</b> — biopsy of contralateral ovary is <u>contraindicated</u>',
'Associated with gonadal dysgenesis — chromosomal analysis needed in premenarcheal patients',
'Fastest growing among all GCTs',
]:
story.append(bullet(b_item))
story.append(h2('4.2 Pathology'))
story.append(body(
'<b>Gross:</b> Soft, grayish-brown; cystic areas due to degeneration/necrosis; '
'capsule intact in most cases.'
))
story.append(body(
'<b>Histology (Pathognomonic Feature):</b> <b>Schiller-Duval body</b> — a '
'glomerulus-like tuft with a central vascular core projecting into a cystic space '
'lined by flattened/irregular endothelium. Reticular/myxoid pattern simulating '
'undifferentiated mesoblast. Hobnail cells on papillary lining (mimics clear cell Ca).'
))
story.append(body(
'<b>IHC:</b> AFP (+), Glypican-3 (+), SALL4 (+), OCT3/4 (–)'
))
story.append(h3('Histologic Subtypes'))
yst_sub = [
['Subtype', 'Note'],
['Endodermal sinus (classic)', 'Schiller-Duval bodies — pathognomonic'],
['Reticular / Microcystic', 'Most common pattern overall'],
['Solid', 'Sheets of primitive cells'],
['Alveolar-glandular', 'Gland-like spaces'],
['Polyvesicular vitelline', 'Vesicles lined by columnar cells'],
['Hepatoid', 'AFP strongly +, mimics HCC; <b>worst prognosis</b>'],
['Parietal', 'Hyaline globules (PAS+, AFP+)'],
]
story.append(make_table(yst_sub, col_widths=[4.5*cm, PAGE_W-2*MARGIN-4.5*cm]))
story.append(h2('4.3 Tumour Markers'))
story.append(body(
'<b>AFP: Markedly elevated in virtually all cases</b> — primary diagnostic and '
'monitoring marker. Good correlation between disease extent and AFP level (discordance '
'can occur). Serial AFP monitoring is the cornerstone of treatment response assessment. '
'Alpha-1 antitrypsin (AAT) is rarely elevated.'
))
story.append(h2('4.4 Treatment'))
story.append(h3('Surgery'))
story.append(body(
'USO + full staging (peritoneal cytology, omentectomy, lymph node sampling). '
'Fertility preservation is the rule.'
))
story.append(h3('Chemotherapy (NCCN 2025)'))
story.append(body(
'<b>ALL stages require adjuvant BEP</b> — this distinguishes YST from dysgerminoma. '
'Prior to the cisplatin era, Stage I YST had <10% survival; BEP dramatically '
'improved this to >95%. This is a critical exam distinction.'
))
yst_tx = [
['Stage', 'BEP Cycles', 'Rationale'],
['Stage I–II', '3 cycles', 'Intermediate risk by IGCCCG'],
['Stage III–IV', '4 cycles', 'High risk by IGCCCG'],
]
story.append(make_table(yst_tx, col_widths=[3*cm, 3*cm, PAGE_W-2*MARGIN-6*cm]))
story.append(exam_tip(
'Unlike dysgerminoma, Stage I YST is NEVER just observed — chemotherapy is mandatory.'
))
story.append(h2('4.5 Prognosis'))
story.append(body(
'Stage I–II with BEP: >95% 5-year survival. '
'Advanced stage (III–IV): 60–75%. '
'<b>Hepatoid variant carries the worst prognosis.</b> '
'AFP normalization is the key endpoint of treatment response.'
))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════
# SECTION 5 — IMMATURE TERATOMA
# ════════════════════════════════════════════════════════════
story.append(h1('5. IMMATURE TERATOMA'))
story.append(sp(0.2))
story.append(h2('5.1 Epidemiology & Key Facts'))
for b_item in [
'<b>Second most common</b> malignant GCT',
'Pure form: <1% of all ovarian cancers; 10–20% of ovarian malignancies in women <20 years',
'~50% occur between ages 10–20 years; rare in postmenopausal women',
'<b>Always unilateral</b> (bilateral occurrence is extremely rare)',
'Mature teratoma (dermoid cyst) is the most common <u>benign</u> GCT and most common ovarian tumour in young women',
]:
story.append(bullet(b_item))
story.append(h2('5.2 Pathology & Grading'))
story.append(body(
'Contains embryo-derived immature elements — predominantly <b>immature neural tissue '
'(neuroepithelium)</b>. The degree of neural immaturity determines grade and prognosis. '
'Mature teratomas that continue maturing along normal lines become benign dermoid cysts; '
'abnormal maturation produces immature teratoma with metastatic potential.'
))
story.append(h3('Grading Systems'))
grade_data = [
['System', 'Grade', 'Definition', 'Survival'],
['Norris 3-tier', 'Grade 1 (Low)', '<1 LPF (×4) of immature neuroepithelium', '≥95%'],
['Norris 3-tier', 'Grade 2', '1–3 LPFs of immature neuroepithelium', '~85%'],
['Norris 3-tier', 'Grade 3 (High)', '>3 LPFs of immature neuroepithelium', '~85%'],
['Modern 2-tier (Preferred)', 'Low Grade', 'Equivalent to Norris Grade 1', '≥95%'],
['Modern 2-tier (Preferred)', 'High Grade', 'Equivalent to Norris Grades 2–3', '~85%'],
]
story.append(make_table(grade_data,
col_widths=[4.0*cm, 2.5*cm, 5.5*cm, 2.5*cm]))
story.append(body_s(
'LPF = Low-power field (×4 objective). '
'<b>Paediatric exception:</b> Children with immature teratoma have excellent '
'outcomes with surgery alone regardless of grade — paediatric biology differs.'
))
story.append(h3('Gliomatosis Peritonei'))
story.append(body(
'Mature glial implants on peritoneal surfaces. A <b>favourable prognostic finding</b> '
'when composed of completely mature tissues. Molecular studies show these implants are '
'NOT tumour-derived but represent teratoma-induced metaplasia of pluripotent Müllerian '
'stem cells in the peritoneum. Does NOT upstage disease.'
))
story.append(h2('5.3 Tumour Markers'))
story.append(body(
'AFP: Mildly elevated in some cases. β-hCG: Usually negative. '
'Markedly elevated markers should prompt consideration of mixed GCT.'
))
story.append(h2('5.4 Treatment (NCCN 2025)'))
it_tx = [
['Stage & Grade', 'Treatment', 'Evidence'],
['Stage I, Grade 1 (Low)', 'Surveillance — no chemotherapy', 'Marino et al. 2024 (PMID 38371620): equivalent outcomes'],
['Stage I, Grade 2–3 (High)', 'BEP × 3 cycles', 'NCCN 2025; ESMO/ESGO'],
['Stage II–IV, any grade', 'BEP × 3–4 cycles', 'Standard of care'],
['Paediatric (all grades)', 'Surgery alone may suffice', 'MaGIC consortium; ESGO young adult guidelines'],
]
story.append(make_table(it_tx,
col_widths=[4.0*cm, 4.0*cm, PAGE_W-2*MARGIN-8.0*cm]))
story.append(sp(0.15))
story.append(h3('Growing Teratoma Syndrome (GTS)'))
story.append(body(
'<b>Definition:</b> Enlarging masses during or after chemotherapy in a patient with '
'normalizing/normalized tumour markers, composed entirely of mature teratoma. '
'Represents selective chemotherapy killing of malignant elements, leaving behind '
'mature (chemo-resistant) components. <b>This is NOT malignant transformation.</b> '
'Treatment: <b>surgical resection</b> (chemotherapy is ineffective for mature elements). '
'Laparoscopic-assisted fertility-sparing resection is feasible at specialized centres '
'(Wang et al. 2024, PMID 39074547).'
))
story.append(h2('5.5 Prognosis'))
story.append(body(
'<b>Overall 5-year survival (all stages):</b> 70–80%. '
'<b>Stage I, surgically staged:</b> 90–95%. '
'<b>Grade</b> is the most important prognostic factor. '
'Advanced stage: De Maria et al. 2025 (PMID 40161550): FSS feasible with good '
'oncologic and fertility outcomes in advanced disease.'
))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════
# SECTION 6 — EMBRYONAL CARCINOMA
# ════════════════════════════════════════════════════════════
story.append(h1('6. EMBRYONAL CARCINOMA'))
story.append(sp(0.2))
story.append(h2('6.1 Epidemiology & Key Facts'))
for b_item in [
'<b>Extremely rare</b> — one of the rarest ovarian GCTs',
'Very young patients: ages 4–28 years',
'Often presents with <b>isosexual precocity</b> (due to oestrogen or hCG secretion)',
'Distinguished from choriocarcinoma by the <b>absence of syncytiotrophoblastic and cytotrophoblastic cells</b>',
]:
story.append(bullet(b_item))
story.append(h2('6.2 Pathology'))
story.append(body(
'<b>Gross:</b> Solid, necrotic, haemorrhagic. '
'<b>Histology:</b> Large primitive cells with vesicular nuclei and prominent nucleoli; '
'arranged in sheets, glands, or papillae; no trophoblastic differentiation (key distinction). '
'<b>IHC:</b> OCT3/4 (+), NANOG (+), SALL4 (+), <b>CD30 (+)</b>, AFP (+), β-hCG (+). '
'CD30 positivity differentiates embryonal carcinoma from dysgerminoma and YST.'
))
story.append(h2('6.3 Tumour Markers'))
story.append(body(
'<b>Both AFP AND β-hCG are elevated</b> — this dual positivity is the defining '
'marker profile. Differentiates from dysgerminoma (neither elevated) and pure '
'choriocarcinoma (only β-hCG).'
))
story.append(exam_tip('Embryonal carcinoma = Both AFP + β-hCG positive simultaneously.'))
story.append(h2('6.4 Treatment'))
story.append(body(
'<b>BEP × 3–4 cycles for ALL stages</b> (NCCN 2025). Surgery: USO + staging. '
'No surveillance option exists. Highly aggressive; requires chemotherapy regardless of stage.'
))
story.append(h2('6.5 Prognosis'))
story.append(body(
'Aggressive behaviour. Prognosis depends on stage; responsive to BEP. '
'Limited population-level data due to extreme rarity.'
))
story.append(sp())
# ════════════════════════════════════════════════════════════
# SECTION 7 — NON-GESTATIONAL CHORIOCARCINOMA
# ════════════════════════════════════════════════════════════
story.append(h1('7. NON-GESTATIONAL CHORIOCARCINOMA'))
story.append(sp(0.2))
story.append(h2('7.1 Epidemiology & Key Facts'))
for b_item in [
'<b>Extremely rare</b> pure non-gestational choriocarcinoma',
'Most patients: <b><20 years of age</b>',
'<b>~50% develop isosexual precocity</b> (very high β-hCG before menarche)',
'Frequently presents with <b>organ parenchymal metastases</b> at diagnosis → poor prognosis',
'Must be distinguished from gestational choriocarcinoma (histologically identical; management differs)',
]:
story.append(bullet(b_item))
story.append(h2('7.2 Pathology'))
story.append(body(
'<b>Histology:</b> Biphasic pattern of <b>cytotrophoblast</b> (mononuclear, pale) and '
'<b>syncytiotrophoblast</b> (multinuclear, eosinophilic). Identical appearance to '
'gestational choriocarcinoma. No Schiller-Duval bodies (differentiates from YST). '
'<b>IHC:</b> β-hCG (+), HPL (+), p63 (+, in cytotrophoblast), AFP (–). '
'<b>Confirmation of non-gestational origin:</b> DNA fingerprinting or STR analysis '
'(absence of paternal DNA confirms non-gestational origin).'
))
story.append(h2('7.3 Tumour Markers'))
story.append(body('<b>β-hCG: Markedly elevated</b> — primary marker. AFP: Negative.'))
story.append(h2('7.4 Treatment'))
story.append(body(
'<b>BEP × 3–4 cycles for ALL stages</b> (NCCN 2025). '
'Alternative: <b>MAC regimen</b> (Methotrexate + Actinomycin D + Cyclophosphamide) — '
'used as in gestational trophoblastic disease. '
'<b>Important caveat:</b> Response to MAC regimens is inferior compared to gestational '
'choriocarcinoma. Non-gestational origin confers treatment resistance to GTD protocols.'
))
story.append(h2('7.5 Prognosis'))
story.append(body(
'<b>Poor overall prognosis</b>. Most patients have organ parenchymal metastases at '
'diagnosis. Worse than gestational choriocarcinoma. Cronin et al. 2022 '
'(PMID 35328112): median survival <12 months in advanced disease.'
))
story.append(exam_tip(
'Key distinction: Non-gestational choriocarcinoma in young girls — '
'β-hCG very high, may cause isosexual precocity; managed with BEP, not MAC/EMA-CO alone.'
))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════
# SECTION 8 — POLYEMBRYOMA
# ════════════════════════════════════════════════════════════
story.append(h1('8. POLYEMBRYOMA'))
story.append(sp(0.2))
story.append(body(
'Polyembryoma of the ovary is an <b>exceedingly rare</b> GCT composed of '
'<b>embryoid bodies</b> that replicate structures of early embryonic differentiation — '
'all three somatic layers (endoderm, mesoderm, ectoderm). It typically occurs in '
'very young premenarcheal girls with signs of <b>pseudopuberty</b>. '
'Both AFP and β-hCG are elevated. The same surgical and chemotherapy principles '
'apply (USO + staging; BEP chemotherapy). Prognosis data are limited due to extreme rarity.'
))
story.append(sp())
# ════════════════════════════════════════════════════════════
# SECTION 9 — MIXED GCT
# ════════════════════════════════════════════════════════════
story.append(h1('9. MIXED GERM CELL TUMOURS'))
story.append(sp(0.2))
story.append(h2('9.1 Definition & Composition'))
story.append(body(
'Mixed GCTs contain <b>two or more GCT elements</b>. The relative proportion of each '
'component determines treatment response and prognosis.'
))
comp_data = [
['Component', 'Frequency in Mixed GCTs'],
['Dysgerminoma', '80% (most common component)'],
['Endodermal sinus tumour (YST)', '70%'],
['Immature teratoma', '53%'],
['Choriocarcinoma', '20%'],
['Embryonal carcinoma', '16%'],
]
story.append(make_table(comp_data, col_widths=[7*cm, PAGE_W-2*MARGIN-7*cm]))
story.append(body_s('Most frequent combination: Dysgerminoma + Endodermal sinus tumour.'))
story.append(h2('9.2 Tumour Markers'))
story.append(body(
'Variable — depends on components present. Monitor all relevant markers. '
'<b>Important:</b> Marker normalization on chemotherapy may reflect regression of '
'only one component — residual viable tumour from another component may remain.'
))
story.append(h2('9.3 Prognosis'))
for b_item in [
'<b>Stage IA, size <10 cm: 100% survival</b>',
'Most malignant component determines overall prognosis',
'<b>Favourable:</b> <1/3 composed of YST, choriocarcinoma, or Grade 3 immature teratoma',
'<b>Less favourable:</b> >1/3 composed of above high-risk components',
]:
story.append(bullet(b_item))
story.append(h2('9.4 Treatment'))
story.append(body('<b>BEP chemotherapy for all stages.</b>'))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════
# SECTION 10 — GONADOBLASTOMA
# ════════════════════════════════════════════════════════════
story.append(h1('10. GONADOBLASTOMA (Precursor Lesion)'))
story.append(sp(0.2))
story.append(body(
'Gonadoblastoma is a <b>benign but premalignant</b> lesion composed of germ cells '
'and sex cord stroma. It occurs exclusively in patients with <b>gonadal dysgenesis</b> '
'(45,X/46,XY or pure gonadal dysgenesis 46,XY). If left in situ, '
'<b>>50% will develop malignancy</b>, most commonly dysgerminoma. '
'Imaging may reveal calcifications (a diagnostic clue). '
'<b>Treatment:</b> Bilateral gonadectomy. The uterus may be preserved for future '
'embryo transfer. Premenarcheal patients with a pelvic mass should have karyotyping '
'performed preoperatively.'
))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════
# SECTION 11 — RECURRENT/REFRACTORY DISEASE
# ════════════════════════════════════════════════════════════
story.append(h1('11. RECURRENT / REFRACTORY DISEASE & SALVAGE THERAPY'))
story.append(sp(0.2))
story.append(body(
'Approximately <b>10% of all MOGCTs will experience tumour relapse</b> '
'(Nasioudis & Pashankar 2024, PMID 38991656). Management of recurrent disease '
'represents one of the most challenging areas in GCT oncology due to rarity and '
'lack of randomised trial data. Germ cell tumours remain chemosensitive even at '
'recurrence, and treatment should aim for cure.'
))
story.append(h3('Secondary Cytoreductive Surgery'))
story.append(body(
'Indicated for carefully selected patients with surgically resectable residual or '
'relapsed tumour. Goal is <b>complete gross resection or optimal debulking</b>. '
'Resectability should be confirmed on imaging before proceeding.'
))
story.append(h3('Salvage Chemotherapy Regimens'))
salvage_data = [
['Regimen', 'Drugs', 'Indication'],
['TIP', 'Paclitaxel + Ifosfamide + Cisplatin', 'Platinum-sensitive relapse (first-line salvage)'],
['VIP', 'Vinblastine + Ifosfamide + Cisplatin', 'Platinum-sensitive relapse (alternative)'],
['TGO', 'Paclitaxel + Gemcitabine + Oxaliplatin', 'Platinum-resistant disease'],
['HDCT + ASCT', 'High-dose carboplatin-based + Autologous Stem Cell Transplant', 'Platinum-resistant/refractory; specialised centres'],
]
story.append(make_table(salvage_data,
col_widths=[1.8*cm, 5.0*cm, PAGE_W-2*MARGIN-6.8*cm]))
story.append(body_s(
'Prognosis in relapse is worse than testicular GCT counterparts. '
'HDCT + ASCT shows promise (De Maria et al. 2025, PMID 40275685); optimal timing '
'(upfront vs later lines) remains under investigation.'
))
story.append(h3('Targeted / Novel Approaches (Experimental)'))
for b_item in [
'<b>KIT inhibitors</b> (imatinib, sunitinib): ~25–30% of dysgerminomas harbour KIT activating mutations (exon 17); limited clinical success; not standard of care',
'<b>Immunotherapy</b>: PD-L1 variable; checkpoint inhibitors — occasional responses; no approved indication',
'<b>Actionable genomic alterations</b> found in a subset of MOGCTs — under investigation (PMID 40269311)',
]:
story.append(bullet(b_item))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════
# SECTION 12 — LATE EFFECTS
# ════════════════════════════════════════════════════════════
story.append(h1('12. LATE EFFECTS OF TREATMENT'))
story.append(sp(0.2))
story.append(body(
'Most data on late effects are extrapolated from male testicular GCT survivors treated '
'with BEP. The profile is expected to be similar in women with MOGCTs.'
))
late_data = [
['Late Effect', 'Cause', 'Clinical Significance'],
['Gonadal dysfunction', 'BEP (especially bilateral disease)', 'Most important; however 75–90% retain menstrual function with unilateral oophorectomy + BEP'],
['Renal dysfunction', 'Cisplatin', 'Chronic kidney disease; monitor creatinine/eGFR'],
['Peripheral neuropathy', 'Cisplatin', 'Sensory neuropathy; may be permanent'],
['Pulmonary fibrosis', 'Bleomycin', 'Dose-related; PFTs before and after; avoid supplemental O₂'],
['Secondary AML', 'Etoposide', 'Risk ~1–2%; latency 2–5 years; MLL gene rearrangement'],
['Cardiovascular toxicity', 'Bleomycin + Cisplatin', 'Hypertension, early atherosclerosis'],
['Ototoxicity', 'Cisplatin', 'High-frequency hearing loss; audiometry baseline'],
['Secondary malignancies', 'Alkylating agents, etoposide', 'Long-term surveillance required'],
]
story.append(make_table(late_data, font_size=8,
col_widths=[4.0*cm, 3.5*cm, PAGE_W-2*MARGIN-7.5*cm]))
story.append(body_s(
'Fertility data (Zerdeva et al. 2025, PMID 41068325 — Systematic Review): '
'Fertility-sparing surgery + BEP results in normal menstrual function and pregnancy '
'in the majority of women with MOGCTs regardless of GCT subtype or stage.'
))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════
# SECTION 13 — GUIDELINE COMPARISON
# ════════════════════════════════════════════════════════════
story.append(h1('13. GUIDELINE SUMMARY: NCCN 2025 vs ESMO/ESGO'))
story.append(sp(0.2))
story.append(h3('NCCN 2025 Treatment Recommendations'))
nccn_data = [
['GCT Type', 'Stage I', 'Stage II–IV', 'Special Notes'],
['Dysgerminoma', 'Surveillance', 'BEP × 3–4', 'CE if bleomycin contraindicated'],
['Immature Teratoma Grade 1', 'Surveillance', 'BEP × 3–4', 'Paediatric: surgery alone may suffice'],
['Immature Teratoma Grade 2–3', 'BEP × 3', 'BEP × 3–4', '—'],
['Yolk Sac Tumour', 'BEP × 3', 'BEP × 3–4', 'No surveillance ever'],
['Embryonal Carcinoma', 'BEP × 3–4', 'BEP × 3–4', 'Both AFP+hCG+'],
['Choriocarcinoma', 'BEP × 3–4', 'BEP × 3–4', 'MAC as alternative'],
['Mixed GCT', 'BEP', 'BEP × 3–4', 'Most malignant component guides Rx'],
]
story.append(make_table(nccn_data, font_size=8,
col_widths=[4.0*cm, 3.0*cm, 3.0*cm, PAGE_W-2*MARGIN-10.0*cm]))
story.append(sp(0.3))
story.append(h3('ESMO / ESGO Non-Epithelial Ovarian Cancer Guidelines (2023–2024)'))
esmo_pts = [
'Consistent with NCCN on BEP as the standard chemotherapy regimen',
'<b>Referral to specialised multidisciplinary centres</b> (including paediatric + adult expertise) strongly recommended',
'Fertility-sparing surgery endorsed for all GCT subtypes at all stages',
'IGCCCG risk stratification recommended for treatment planning',
'Stage I dysgerminoma with minimal imaging residual post-chemo: surveillance acceptable (residual likely non-viable)',
'<b>ESGO Young Adult Guidelines (2019):</b> BEP 3–4 cycles for Stage III–IV; bleomycin omitted after cycle 3 (max cumulative 270 IU) to reduce pulmonary toxicity',
'Acknowledge lack of RCT data; most evidence is from retrospective studies and registries',
'ESGO-ESMO-ESP Consensus 2024: Annals of Oncology 35(3):248–266 — primarily addresses epithelial cancer but relevant staging/management framework applies',
]
for pt in esmo_pts:
story.append(bullet(pt))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════
# SECTION 14 — KEY TRIALS
# ════════════════════════════════════════════════════════════
story.append(h1('14. KEY CLINICAL TRIALS & LANDMARK STUDIES'))
story.append(sp(0.2))
trials_data = [
['Trial / Study', 'Year', 'Key Finding & Relevance'],
['Einhorn & Donohue\n(BEP Pioneer — Testicular)', '1974', 'Cisplatin/vinblastine/bleomycin transformed GCT from universally fatal to >70% curable. Later extrapolated to ovarian GCTs.'],
['GOG-78\n(Williams et al.)', '1989', 'BEP superior to VAC (vincristine, actinomycin D, cyclophosphamide) in ovarian GCTs. Established BEP as the standard of care.'],
['GOG Study\n(Williams et al.)', '1994', '3 cycles BEP equivalent to 4 cycles in good-risk testicular GCT — basis for 3-cycle approach in low/intermediate risk MOGCTs.'],
['Gershenson et al.', '2007', 'Surveillance alone for Stage I ovarian dysgerminoma: excellent long-term outcomes, validating observation as standard.'],
['MaGIC Consortium\n(ongoing)', '2013–', 'Global paediatric/adolescent GCT registry. Defined minimum staging requirements. Identified age ≥11 as poor prognostic factor in children.'],
['Marino et al.\n(PMID 38371620)', '2024', 'Stage I immature teratoma: outcomes after surveillance vs adjuvant chemo equivalent; better fertility with surveillance. Supports NCCN 2025 observation approach.'],
['Marino et al.\n(PMID 39222973)', '2024', 'Fertility outcomes in Stage I ovarian immature teratomas after FSS: excellent pregnancy rates.'],
['Marino et al.\n(PMID 40161550)', '2025', 'Advanced-stage ovarian immature teratoma: FSS feasible with good oncologic and fertility outcomes even in advanced disease.'],
['Nasioudis & Pashankar\n(PMID 38991656)', '2024', 'Recurrent MOGCT management: TIP/VIP for platinum-sensitive; HDCT/ASCT for resistant. ~10% relapse rate; prognosis worse than testicular counterpart.'],
['Seckl et al.\n(PMID 40020416)', '2025', 'Controversies in MOGCTs: surveillance, NACT role, relapse management — highlighted critical lack of RCT data. Erratum: PMID 40472763.'],
['De Maria et al.\n(PMID 40275685)', '2025', 'Comprehensive review: KIT inhibitors experimental; HDCT/ASCT promising; molecular and genetic landscape key for future therapies.'],
['Zerdeva et al.\n(PMID 41068325)', '2025', 'Systematic review (decade-spanning): Fertility preservation safe and effective across all GCT types and stages after FSS + BEP.'],
['Laga et al.\n(PMID 40269311)', '2025', 'Single-cell profiling in ovarian GCTs: distinct transcriptomic profiles per subtype identified. Preclinical relevance for targeted therapy development.'],
['Cronin et al.\n(PMID 35328112)', '2022', 'Non-gestational ovarian choriocarcinoma: systematic review — median survival <12 months in advanced disease; poor prognosis documented.'],
]
story.append(make_table(trials_data, font_size=8,
col_widths=[3.8*cm, 1.5*cm, PAGE_W-2*MARGIN-5.3*cm]))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════
# SECTION 15 — RECENT ADVANCES
# ════════════════════════════════════════════════════════════
story.append(h1('15. RECENT ADVANCES (2021–2026)'))
story.append(sp(0.2))
advances = [
('KIT Inhibitors in Dysgerminoma',
'Approximately 25–30% of dysgerminomas harbour activating KIT (CD117) mutations, most '
'commonly in exon 17. Imatinib and sunitinib have been explored in case series and '
'small trials. Results have been modest with limited clinical success. These therapies '
'remain <b>experimental</b> and are not standard of care. Ongoing molecular profiling '
'studies are identifying novel actionable targets.'),
('Surveillance Over Chemotherapy for Stage I Disease',
'Growing evidence from the 2024 Marino et al. studies supports observation alone for '
'Stage I dysgerminoma and Stage I Grade 1 immature teratoma. Oncologic outcomes are '
'equivalent to adjuvant BEP, with superior fertility preservation. NCCN 2025 formally '
'endorses surveillance for these groups. This represents a <b>paradigm shift towards '
'de-escalation of therapy</b> in select patients.'),
('Role of Neoadjuvant Chemotherapy (NACT)',
'The role of NACT in advanced-stage MOGCT remains uncertain (Seckl et al. 2025). '
'Some retrospective data support NACT in unresectable advanced disease where upfront '
'surgery would be high-risk. <b>Primary surgery followed by adjuvant BEP remains the '
'standard approach</b>; NACT is not routine.'),
('High-Dose Chemotherapy + ASCT for Relapsed Disease',
'HDCT with autologous stem cell transplantation is expanding as salvage therapy for '
'platinum-resistant/refractory MOGCTs. Evidence largely extrapolated from testicular '
'GCT trials (Indiana University series; GETUG protocols). Optimal timing — whether to '
'use HDCT as first salvage vs after conventional salvage — remains under active '
'investigation.'),
('Molecular & Genomic Landscape',
'Single-cell transcriptomic profiling (Laga et al. 2025) has identified distinct '
'molecular signatures for each GCT subtype. Dysgerminoma: OCT3/4, NANOG, KIT pathway. '
'YST: AFP-producing, Glypican-3, Wnt signalling. A subset of MOGCTs harbours '
'actionable genomic alterations. This provides a roadmap for future targeted therapy '
'development.'),
('Immunotherapy',
'PD-L1 expression is variable across GCT subtypes. Checkpoint inhibitors (PD-1/PD-L1 '
'inhibitors) have shown occasional responses in case reports, but there is currently '
'<b>no approved immunotherapy indication</b> for MOGCTs. Prospective trials are needed.'),
('Fertility Preservation Advances',
'The landmark 2025 systematic review by Zerdeva et al. (PMID 41068325) confirmed that '
'FSS is safe across all GCT types and stages, with the majority of women retaining '
'normal menstrual function and achieving pregnancy. Ovarian tissue cryopreservation '
'before chemotherapy is an emerging option. Laparoscopic approaches for Growing '
'Teratoma Syndrome are feasible at specialised centres.'),
('Risk-Stratified Treatment',
'The 2025 updates emphasise stratified treatment to reduce chemotherapy overtreatment '
'in low-risk patients while ensuring adequate treatment for high-risk patients. '
'This is especially relevant for preserving ovarian and gonadal function in young women.'),
]
for title, text in advances:
story.append(h3(title))
story.append(body(text))
story.append(sp(0.1))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════
# SECTION 16 — QUICK REFERENCE MASTER TABLE
# ════════════════════════════════════════════════════════════
story.append(h1('16. QUICK REFERENCE MASTER TABLE'))
story.append(sp(0.2))
master = [
['Feature', 'Dysgerminoma', 'Yolk Sac Tumour', 'Immature Teratoma', 'Embryonal Ca', 'Choriocarcinoma', 'Mixed GCT'],
['Frequency', '30–40%\n(most common)', '3rd most\ncommon', '2nd most\ncommon', 'Extremely\nrare', 'Extremely\nrare', 'Common'],
['Age', '10–30 yrs', '16–18 yrs\n(median)', '10–20 yrs', '4–28 yrs', '<20 yrs', 'Young'],
['Bilaterality', '10–15%', '0%', '<1%', '0%', '0%', 'Rare'],
['AFP', '–', '↑↑↑', '±', '+', '–', 'Variable'],
['β-hCG', '± (syncytio-\ntrophoblasts)', '–', '–', '+', '↑↑↑', 'Variable'],
['LDH / PLAP', '↑↑ (95%)', '–', '–', '–', '–', 'Variable'],
['Key Histology', 'Lymphocytic\ninfiltrate;\nlobules/nests', 'Schiller-Duval\nbody\n(pathognomonic)', 'Immature\nneuroepithelium;\ngraded', 'Primitive\ncells;\nCD30+', 'Biphasic\ntrophoblast\n(cyto+syncytio)', 'Mixed\ncomponents'],
['Stage I Rx', 'Surveillance', 'BEP × 3', 'Grade 1: Surv.\nGrade 2–3: BEP', 'BEP × 3–4', 'BEP × 3–4', 'BEP'],
['Stage II–IV', 'BEP × 3–4', 'BEP × 3–4', 'BEP × 3–4', 'BEP × 3–4', 'BEP × 3–4', 'BEP × 3–4'],
['Prognosis', 'Excellent\n(>95% Stage I)', 'Good (>95%\nStage I–II)', '70–80%\noverall', 'Moderate', 'Poor\n(organ mets)', 'Depends on\ncomponents'],
['Unique Feature', 'Radiosensitive;\nKIT+;\nY-chrom check', 'Always unilateral;\nhepatoid=poor;\nno surveillance', 'GTS;\nGliomatosis\nperitonei', 'Both AFP\n+β-hCG+', 'DNA finger-\nprinting;\nisosexual\nprecocity', 'Most malignant\ncomponent\ndetermines Rx'],
]
cw_master = [(PAGE_W - 2*MARGIN)/7] * 7
story.append(make_table(master, col_widths=cw_master, font_size=7.5))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════
# SECTION 17 — MNEMONICS & EXAM BULLETS
# ════════════════════════════════════════════════════════════
story.append(h1('17. HIGH-YIELD MNEMONICS & EXAM BULLETS'))
story.append(sp(0.2))
story.append(h3('"DYCE-MIX" — Types of Primitive GCTs'))
story.append(body(
'<b>D</b>ysgerminoma · <b>Y</b>olk sac tumour · <b>C</b>horiocarcinoma · '
'<b>E</b>mbryonal carcinoma · <b>M</b>ixed GCT · <b>I</b>mmature teratoma · '
'<b>X</b> = Polyembryoma (extra rare)'
))
story.append(h3('Tumour Marker Rule'))
story.append(body(
'• <b>AFP only</b> → Yolk Sac Tumour<br/>'
'• <b>β-hCG only</b> → Choriocarcinoma<br/>'
'• <b>Both AFP + β-hCG</b> → Embryonal Carcinoma<br/>'
'• <b>LDH + PLAP</b> → Dysgerminoma<br/>'
'• <b>No reliable marker</b> → Immature Teratoma'
))
story.append(h3('Bilaterality Rule'))
story.append(body(
'Only <b>Dysgerminoma</b> has significant bilaterality (10–15%). '
'All other GCTs are essentially unilateral. '
'Contralateral ovary biopsy only if macroscopically abnormal.'
))
story.append(h3('Surveillance-Only Rule (NCCN 2025)'))
story.append(body(
'"<b>Stage I Dysgerminoma</b>" AND "<b>Stage I Grade 1 Immature Teratoma</b>" = Watch and wait. '
'ALL other GCT types at ALL stages → BEP chemotherapy.'
))
story.append(h3('Schiller-Duval Body = YST'))
story.append(body(
'"<b>S</b>chiller-<b>D</b>uval = <b>S</b>inus tumour / En<b>D</b>odermal sinus = Yolk Sac Tumour"'
))
story.append(h3('BEP Late Effects — "RGNCS"'))
story.append(body(
'<b>R</b>enal · <b>G</b>onadal · <b>N</b>eurotoxicity · <b>C</b>ardiovascular · '
'<b>S</b>econdary malignancies (AML with etoposide)'
))
story.append(h3('Growing Teratoma Syndrome — Key Points'))
for b_item in [
'Enlarging mass + normalizing markers = Growing Teratoma Syndrome',
'NOT malignant transformation — mature elements resistant to chemo',
'Treatment: Surgical resection (not more chemotherapy)',
'Laparoscopic FSS is feasible',
]:
story.append(bullet(b_item))
story.append(h3('Non-Gestational vs Gestational Choriocarcinoma'))
story.append(body(
'Histologically identical. Differentiated by: DNA fingerprinting / STR analysis '
'(paternal DNA absent in non-gestational). Non-gestational → worse prognosis; '
'less responsive to MAC/EMA-CO; treat with BEP.'
))
story.append(h3('Key "Examiners\' Favourite" Facts'))
fav_facts = [
'Dysgerminoma is the ONLY GCT with significant bilaterality.',
'YST is ALWAYS unilateral — biopsy of contralateral ovary is contraindicated.',
'Stage I YST ALWAYS gets BEP — no surveillance option.',
'LDH and PLAP are elevated in 95% of dysgerminomas.',
'Schiller-Duval body is pathognomonic of YST.',
'Immature teratoma grade = amount of immature neuroepithelium (not mitoses alone).',
'Growing Teratoma Syndrome → surgery, not more chemo.',
'Gonadoblastoma → >50% malignant transformation → bilateral gonadectomy.',
'KIT mutations in ~25–30% of dysgerminomas — experimental targeted therapy.',
'BEP requires PFTs before starting (bleomycin lung toxicity).',
'Etoposide → secondary AML (MLL rearrangement); latency 2–5 years.',
'Gliomatosis peritonei = favourable finding; does NOT upstage immature teratoma.',
'HDCT + ASCT is salvage option for platinum-resistant relapse.',
'Polyembryoma → embryoid bodies → premenarcheal girls → pseudopuberty.',
'Non-gestational choriocarcinoma = β-hCG very high, isosexual precocity, organ mets, poor prognosis.',
]
for f in fav_facts:
story.append(bullet(f'<b>{f}</b>'))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════
# SECTION 18 — REFERENCES
# ════════════════════════════════════════════════════════════
story.append(h1('18. REFERENCES'))
story.append(sp(0.2))
refs = [
'Berek JS, Friedlander ML, Hacker NF. Germ cell and non-epithelial ovarian cancer. In: Berek & Novak\'s Gynecology, 16th ed. Lippincott; 2020. pp. 2375–2410.',
'Kumar V, Abbas AK, Aster JC. Robbins & Kumar Basic Pathology, 11th ed. Elsevier; 2023.',
'Kasper DL et al. Harrison\'s Principles of Internal Medicine, 22nd ed. McGraw-Hill; 2025.',
'National Comprehensive Cancer Network. NCCN Clinical Practice Guidelines in Oncology: Ovarian Cancer (including Fallopian Tube Cancer and Primary Peritoneal Cancer). Version 2025. NCCN; 2025.',
'ESMO Clinical Practice Guideline: Non-Epithelial Ovarian Cancer. Ann Oncol. 2023.',
'ESGO-ESMO-ESP Consensus Conference Recommendations on Ovarian Cancer. Ann Oncol. 2024;35(3):248–266.',
'Seckl MJ, Kaur B, Ghorani E, et al. Controversies in malignant ovarian germ cell tumors. Int J Gynecol Cancer. 2025. PMID: 40020416.',
'Nasioudis D, Pashankar FD. Management of recurrent and persistent malignant ovarian germ cell tumors: a narrative review. Int J Gynecol Cancer. 2024. PMID: 38991656.',
'De Maria F, Amant F, Chiappa V, et al. Malignant germ cells tumor of the ovary. J Gynecol Oncol. 2025. PMID: 40275685.',
'Zerdeva E, Karampas G, Petrogiannis N. Fertility preservation in rare ovarian malignancies: a decade-spanning systematic review. Cancer Causes Control. 2025. PMID: 41068325.',
'Marino G, Grassi T, De Ponti E, et al. Outcome of patients with stage I immature teratoma after surveillance or adjuvant chemotherapy. Front Oncol. 2024. PMID: 38371620.',
'Marino G, Grassi T, De Ponti E, et al. Fertility outcomes in stage I ovarian immature teratomas. Int J Gynecol Cancer. 2024. PMID: 39222973.',
'De Maria F, et al. Oncologic and fertility outcome in patients with advanced stage ovarian immature teratomas. Gynecol Oncol Rep. 2025. PMID: 40161550.',
'Cronin S, Ahmed N, Craig AD. Non-gestational ovarian choriocarcinoma: a rare ovarian cancer subtype. Diagnostics. 2022. PMID: 35328112.',
'Laga T, Van Rompuy AS, Busschaert P, et al. Single-cell profiling in ovarian germ cell and sex cord-stromal tumours. Br J Cancer. 2025. PMID: 40269311.',
'Wang D, Jia C, Wang R. Laparoscopic-assisted fertility-sparing surgery for growing teratoma syndrome. J Minim Invasive Gynecol. 2024. PMID: 39074547.',
'Ramalingam P. Germ cell tumors of the ovary: a review. Semin Diagn Pathol. 2023. PMID: 36088223.',
'Updates in the Management of Malignant Ovarian Germ Cell Tumors. Obstet Gynecol Open. 2025. PMC12421977.',
]
for i, ref in enumerate(refs, 1):
story.append(Paragraph(f'{i}. {ref}', REF_STYLE))
story.append(sp(0.5))
story.append(hr(ACCENT_TEAL, 1.0))
story.append(body_s(
'<i>This document was compiled using Berek & Novak\'s Gynecology, Robbins Pathology, '
'Harrison\'s 22E, NCCN 2025, ESMO/ESGO guidelines, and PubMed literature. '
'For clinical decision-making, always refer to the latest institutional and national guidelines. '
'Prepared by Orris Medical AI — July 2026.</i>'
))
# ── BUILD ──────────────────────────────────────────────────────────────────────
doc.build(story, onFirstPage=on_page, onLaterPages=on_page)
print(f"PDF saved to: {output_path}")
if __name__ == '__main__':
out = '/tmp/workspace/gct-ovary/GCT_Ovary_Comprehensive_Exam_Study_Material.pdf'
build_pdf(out)
cd /tmp/workspace/gct-ovary && python generate_pdf.py 2>&1
ls -lh /tmp/workspace/gct-ovary/GCT_Ovary_Comprehensive_Exam_Study_Material.pdf
GCT Ovary Comprehensive Exam Study Material
PDF Document · PDF
| Section | Content |
|---|---|
| 1 | Overview & WHO Classification with tumour marker table |
| 2 | Staging, FSS surgery principles, BEP regimen dosing + toxicity, NCCN surveillance schedule |
| 3 | Dysgerminoma — full essay (epi, associations, pathology, spread, markers, treatment, prognosis) |
| 4 | Yolk Sac Tumour — all histologic subtypes, Schiller-Duval, treatment algorithm |
| 5 | Immature Teratoma — grading systems, Growing Teratoma Syndrome, NCCN 2025 table |
| 6 | Embryonal Carcinoma |
| 7 | Non-Gestational Choriocarcinoma |
| 8 | Polyembryoma |
| 9 | Mixed GCTs |
| 10 | Gonadoblastoma |
| 11 | Recurrent/Refractory disease — salvage regimens (TIP/VIP/TGO/HDCT+ASCT) |
| 12 | Late effects of BEP |
| 13 | NCCN 2025 vs ESMO/ESGO guideline comparison |
| 14 | 14 landmark trials with key findings |
| 15 | Recent advances 2021–2026 (KIT inhibitors, immunotherapy, single-cell profiling, fertility) |
| 16 | Quick-reference master comparison table (all GCTs at a glance) |
| 17 | Mnemonics, exam bullets, "examiner's favourite facts" |
| 18 | Full references (18 citations with PMIDs) |