I am preparing for FMG. Exam, uh, 2027. So I just want to know how should I approach to the exam.

Asking for Preferences
Searching the Web

FMGE 2027 exam pattern syllabus preparation strategy NMC

Searching the Web

FMGE Foreign Medical Graduate Examination India 2025 2026 latest changes NMC

Reading Web Page

https://www.prepladder.com/fmge-study-material/exam-pattern/…

Here is a complete guide to approaching FMGE 2027:

FMGE 2027 - Complete Preparation Guide

What is FMGE?

The Foreign Medical Graduate Examination (FMGE) is a screening test conducted by NBEMS (National Board of Examinations in Medical Sciences) for Indian citizens and Overseas Citizens of India (OCI) who have completed their MBBS from outside India. Passing it is mandatory to practice medicine in India.
  • Held twice a year - June and December
  • You are targeting the December 2027 session (or possibly June 2027)
  • Passing score: 150 out of 300 (50%)
  • No negative marking

Exam Pattern

FeatureDetails
FormatComputer-Based Test (CBT)
Total Questions300 MCQs
PartsPart A & Part B (150 each)
Structure6 sections of 50 questions
Time per section50 minutes (sections are timed separately - you CANNOT go back)
Total Duration300 minutes (5 hours)
LanguageEnglish only
Negative markingNone
Critical rule: Each section locks after its 50-minute window. Once time expires, you cannot revisit that section. Practice with this in mind.

Subject-wise Marks Distribution

Clinical Subjects (~200 marks)

SubjectQuestions
General Medicine33
General Surgery32
Obs & Gynaecology30
Community Medicine (PSM)30
Paediatrics15
Orthopaedics10
Ophthalmology10
ENT10
Dermatology8
Psychiatry7
Radiology7
Anaesthesiology~8

Pre-Clinical & Para-Clinical (~100 marks)

SubjectQuestions
Pathology22
Pharmacology18
Anatomy17
Physiology15
Microbiology15
Biochemistry10
Forensic Medicine3

Core Strategy: Think of it as a Balance Sheet

The passing mark is 150/300 - you do NOT need to be brilliant in everything. The strategy is:
  • Score 85-90% in your 3-4 strongest subjects (your revenue streams)
  • Score 50-60% in your weaker subjects (manage your liabilities)
  • Never neglect high-yield subjects: Medicine (33), Surgery (32), OBG (30), PSM (30), Pathology (22) - these 5 alone carry ~147 marks

18-Month Study Plan (July 2026 - December 2027)

Phase 1 - Foundation (July 2026 - December 2026) ~6 months

  • Cover all 19 MBBS subjects systematically
  • Start with high-yield clinical subjects: Medicine, Surgery, OBG, PSM
  • Use one standard set of notes/video lectures - do not switch resources
  • Aim to finish the full syllabus at least once
  • Recommended resources: PrepLadder, Marrow, DAMS, or DocTutorials (pick one platform and stick to it)

Phase 2 - Revision + MCQ Practice (January 2027 - July 2027) ~6 months

  • First complete revision of all subjects using MCQs
  • Solve 100-150 MCQs per day - focus on understanding the reasoning, not just the answer
  • Solve last 5 years of FMGE previous year question papers (PYQs) - patterns repeat
  • Identify weak areas and apply targeted high-yield topic coverage

Phase 3 - Final Revision + Mock Tests (August 2027 - November 2027) ~4 months

  • Complete second/third revision using short notes
  • Attempt full-length timed mock tests (6-section format, simulating real exam)
  • Analyze mock test results subject-wise - fix weak areas
  • Stop reading new material by the last 30 days
  • Final month: only mock tests and short notes revision

Subject-specific Tips

  • PSM/Community Medicine (30 marks): High-yield topics are National Health Programmes, vaccines, biostatistics, and epidemiological study designs. Do NOT read the whole textbook - just these chapters. Repeats heavily in PYQs.
  • Forensic Medicine (3 marks only): Focus on identification, asphyxia, and medico-legal IPC sections only. Do not over-invest.
  • Pharmacology: Questions often appear as clinical Medicine scenarios - prepare with cross-subject integration.
  • Pathology: One of the best return-on-investment subjects. High marks, relatively structured content.

Important Warnings

  1. NExT may replace FMGE - The NMC has announced the National Exit Test (NExT) as a long-term replacement for FMGE (and NEET-PG). As of now, FMGE is still being conducted for the 2026-2027 cycle. Monitor NBEMS official announcements regularly - policy timelines have shifted multiple times.
  2. Eligibility requirement: You must have cleared NEET-UG and hold an NMC eligibility certificate before applying.
  3. Pass rate is low (~15-25% each session) - consistent, structured preparation over 12-18 months is the key differentiator.

Recommended Resources

  • Video lectures: PrepLadder / Marrow (pick one, stay consistent)
  • MCQ practice: Previous year FMGE papers + question banks on your chosen platform
  • Short notes: Make your own during Phase 1; use printed notes only to supplement
  • Mock tests: Platform-based full mocks from Phase 2 onwards
You have a solid ~18 months - that is more than enough time to crack FMGE 2027 with a structured approach. Good luck!

make presentation in breast cancer oncology in 15 slides to explain medical student use good background theme

Reading File
Reading File
Reading File
Finding Sources
Reading File
Finding Sources
Reading File
Finding Sources
Reading File
Reading File
Finding Sources
Finding Sources
Reading File
Running Command

mkdir -p /tmp/workspace/breast-cancer-ppt

Writing File

~/breast-cancer-ppt/create_pptx.py

from pptx import Presentation
from pptx.util import Inches, Pt, Emu
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.oxml.ns import qn
from pptx.oxml import parse_xml
from lxml import etree
from io import BytesIO

# ── Color Palette ─────────────────────────────────────────────────────────────
# Deep teal/navy medical theme with pink ribbon accent
BG_DARK      = RGBColor(0x0D, 0x2B, 0x45)   # deep navy
BG_MEDIUM    = RGBColor(0x12, 0x3A, 0x5E)   # medium navy-blue
ACCENT_PINK  = RGBColor(0xE9, 0x52, 0x8A)   # breast cancer pink ribbon
ACCENT_TEAL  = RGBColor(0x00, 0xC8, 0xC8)   # teal highlight
WHITE        = RGBColor(0xFF, 0xFF, 0xFF)
LIGHT_BLUE   = RGBColor(0xB8, 0xD8, 0xF0)
YELLOW_HL    = RGBColor(0xFF, 0xD7, 0x00)
GRAY_LIGHT   = RGBColor(0xE8, 0xF0, 0xF8)

def new_prs():
    prs = Presentation()
    prs.slide_width  = Inches(13.333)
    prs.slide_height = Inches(7.5)
    return prs

def blank_slide(prs):
    return prs.slides.add_slide(prs.slide_layouts[6])

def fill_bg(slide, color):
    """Fill slide background with a solid color."""
    bg = slide.background
    fill = bg.fill
    fill.solid()
    fill.fore_color.rgb = color

def add_rect(slide, x, y, w, h, fill_color, alpha=None):
    shape = slide.shapes.add_shape(
        1,  # MSO_SHAPE_TYPE.RECTANGLE
        Inches(x), Inches(y), Inches(w), Inches(h)
    )
    shape.fill.solid()
    shape.fill.fore_color.rgb = fill_color
    shape.line.fill.background()
    return shape

def add_text(slide, text, x, y, w, h, font_size=18, bold=False,
             color=WHITE, align=PP_ALIGN.LEFT, italic=False,
             v_anchor=MSO_ANCHOR.TOP, word_wrap=True):
    tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
    tf = tb.text_frame
    tf.word_wrap = word_wrap
    tf.vertical_anchor = v_anchor
    p = tf.paragraphs[0]
    p.alignment = align
    run = p.add_run()
    run.text = text
    run.font.size = Pt(font_size)
    run.font.bold = bold
    run.font.italic = italic
    run.font.color.rgb = color
    run.font.name = "Calibri"
    return tb

def add_multiline_text(slide, lines, x, y, w, h, font_size=16,
                       color=WHITE, bold_first=False, line_spacing=1.2):
    tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
    tf = tb.text_frame
    tf.word_wrap = True
    for i, line in enumerate(lines):
        if i == 0:
            p = tf.paragraphs[0]
        else:
            p = tf.add_paragraph()
        p.space_before = Pt(4)
        run = p.add_run()
        run.text = line
        run.font.size = Pt(font_size)
        run.font.color.rgb = color
        run.font.name = "Calibri"
        if bold_first and i == 0:
            run.font.bold = True
    return tb

def add_bullet_box(slide, title, bullets, x, y, w, h,
                   title_size=18, bullet_size=15,
                   box_color=BG_MEDIUM, title_color=ACCENT_TEAL,
                   bullet_color=WHITE):
    # Box background
    add_rect(slide, x, y, w, h, box_color)
    # Title
    add_text(slide, title, x+0.15, y+0.1, w-0.3, 0.4,
             font_size=title_size, bold=True, color=title_color)
    # Bullets
    tb = slide.shapes.add_textbox(Inches(x+0.2), Inches(y+0.55),
                                  Inches(w-0.35), Inches(h-0.65))
    tf = tb.text_frame
    tf.word_wrap = True
    for i, b in enumerate(bullets):
        if i == 0:
            p = tf.paragraphs[0]
        else:
            p = tf.add_paragraph()
        p.space_before = Pt(3)
        run = p.add_run()
        run.text = u"\u2022  " + b
        run.font.size = Pt(bullet_size)
        run.font.color.rgb = bullet_color
        run.font.name = "Calibri"

def pink_bar(slide, y=0.0, h=0.12):
    add_rect(slide, 0, y, 13.333, h, ACCENT_PINK)

def bottom_bar(slide):
    add_rect(slide, 0, 7.3, 13.333, 0.2, ACCENT_PINK)

def slide_number(slide, n):
    add_text(slide, str(n), 12.8, 7.2, 0.5, 0.3,
             font_size=11, color=ACCENT_PINK, align=PP_ALIGN.RIGHT)

# ──────────────────────────────────────────────────────────────────────────────
prs = new_prs()

# ════════════════════════════════════════════════════
# SLIDE 1 — Title Slide
# ════════════════════════════════════════════════════
s = blank_slide(prs)
fill_bg(s, BG_DARK)

# Full pink gradient bar top
add_rect(s, 0, 0, 13.333, 0.25, ACCENT_PINK)
# Decorative ribbon element (right side)
add_rect(s, 11.8, 0, 1.533, 7.5, RGBColor(0x17, 0x35, 0x5C))
add_rect(s, 12.2, 0, 0.3, 7.5, RGBColor(0xE9, 0x52, 0x8A))

# Main title
add_text(s, "BREAST CANCER", 1, 1.5, 10.5, 1.6,
         font_size=52, bold=True, color=ACCENT_PINK, align=PP_ALIGN.LEFT)
add_text(s, "Oncology", 1, 3.1, 10, 0.9,
         font_size=36, bold=False, color=WHITE, align=PP_ALIGN.LEFT)

# Subtitle line
add_rect(s, 1, 3.95, 8, 0.06, ACCENT_TEAL)

add_text(s, "A Comprehensive Guide for Medical Students", 1, 4.15, 10, 0.6,
         font_size=20, color=LIGHT_BLUE, align=PP_ALIGN.LEFT)
add_text(s, "Based on Robbins Pathology | Harrison's Internal Medicine | Fischer's Surgery",
         1, 4.85, 10, 0.5, font_size=13, color=RGBColor(0x80,0xA8,0xC8),
         align=PP_ALIGN.LEFT, italic=True)
add_text(s, "2026", 1, 6.5, 3, 0.4, font_size=15, color=ACCENT_PINK)
bottom_bar(s)


# ════════════════════════════════════════════════════
# SLIDE 2 — Learning Objectives
# ════════════════════════════════════════════════════
s = blank_slide(prs)
fill_bg(s, BG_DARK)
pink_bar(s, 0, 0.18)
add_rect(s, 0, 0.18, 13.333, 0.9, BG_MEDIUM)

add_text(s, "Learning Objectives", 0.5, 0.22, 12, 0.75,
         font_size=30, bold=True, color=WHITE)

objectives = [
    "1.  Understand the epidemiology and risk factors of breast cancer",
    "2.  Describe the anatomy of the breast and its relevance to cancer spread",
    "3.  Classify breast cancer by molecular subtypes (Luminal, HER2, TNBC)",
    "4.  Explain the pathogenesis including BRCA1/2, ER, and HER2 pathways",
    "5.  Identify clinical features and diagnostic work-up",
    "6.  Apply TNM staging to determine prognosis",
    "7.  Outline management: surgery, chemotherapy, radiotherapy, targeted & hormone therapy",
    "8.  Discuss screening recommendations and prevention strategies",
]
tb = s.shapes.add_textbox(Inches(0.8), Inches(1.35), Inches(11.8), Inches(5.8))
tf = tb.text_frame
tf.word_wrap = True
for i, obj in enumerate(objectives):
    p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
    p.space_before = Pt(6)
    run = p.add_run()
    run.text = obj
    run.font.size = Pt(17)
    run.font.color.rgb = LIGHT_BLUE if i % 2 == 0 else WHITE
    run.font.name = "Calibri"

bottom_bar(s)
slide_number(s, 2)


# ════════════════════════════════════════════════════
# SLIDE 3 — Epidemiology
# ════════════════════════════════════════════════════
s = blank_slide(prs)
fill_bg(s, BG_DARK)
pink_bar(s, 0, 0.18)
add_rect(s, 0, 0.18, 13.333, 0.9, BG_MEDIUM)
add_text(s, "Epidemiology", 0.5, 0.22, 12, 0.75,
         font_size=30, bold=True, color=WHITE)

# 3 stat boxes
stats = [
    ("2nd", "Leading cause of cancer\ndeaths in women worldwide"),
    ("~2.3M", "New cases globally\nper year (GLOBOCAN 2020)"),
    ("~15-20%", "of breast cancer cases are\nHER2-positive subtype"),
]
for i, (num, desc) in enumerate(stats):
    x = 0.4 + i * 4.3
    add_rect(s, x, 1.3, 3.8, 1.9, BG_MEDIUM)
    add_rect(s, x, 1.3, 3.8, 0.08, ACCENT_PINK)
    add_text(s, num, x, 1.45, 3.8, 0.9,
             font_size=38, bold=True, color=ACCENT_PINK, align=PP_ALIGN.CENTER)
    add_text(s, desc, x, 2.3, 3.8, 0.85,
             font_size=14, color=WHITE, align=PP_ALIGN.CENTER)

# Key facts
add_rect(s, 0.4, 3.4, 12.5, 0.06, ACCENT_TEAL)
add_text(s, "Key Epidemiologic Facts", 0.5, 3.55, 12, 0.4,
         font_size=18, bold=True, color=ACCENT_TEAL)

facts = [
    u"\u2022  Lifetime risk in women: ~1 in 8 (12.5%) in high-income countries",
    u"\u2022  Peak incidence in postmenopausal women (55-65 years)",
    u"\u2022  Males account for <1% of all breast cancers",
    u"\u2022  5-year survival >90% when detected early (Stage I), drops to ~28% at Stage IV",
    u"\u2022  Incidence rising in developing countries due to westernized lifestyles",
]
tb = s.shapes.add_textbox(Inches(0.6), Inches(4.05), Inches(12.2), Inches(3))
tf = tb.text_frame; tf.word_wrap = True
for i, f in enumerate(facts):
    p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
    p.space_before = Pt(3)
    run = p.add_run(); run.text = f
    run.font.size = Pt(15); run.font.color.rgb = LIGHT_BLUE; run.font.name = "Calibri"

bottom_bar(s); slide_number(s, 3)


# ════════════════════════════════════════════════════
# SLIDE 4 — Risk Factors
# ════════════════════════════════════════════════════
s = blank_slide(prs)
fill_bg(s, BG_DARK)
pink_bar(s, 0, 0.18)
add_rect(s, 0, 0.18, 13.333, 0.9, BG_MEDIUM)
add_text(s, "Risk Factors", 0.5, 0.22, 12, 0.75, font_size=30, bold=True, color=WHITE)

# Two columns
add_bullet_box(s, "Non-Modifiable Risk Factors", [
    "Female sex (100x higher than males)",
    "Increasing age (peak: 55-65 yrs)",
    "BRCA1 / BRCA2 germline mutations (lifetime risk 45-85%)",
    "Family history (1st-degree relative)",
    "Previous breast cancer or atypical hyperplasia",
    "Dense breast tissue on mammography",
    "Early menarche (<12 yrs) / Late menopause (>55 yrs)",
], 0.3, 1.3, 6.1, 5.8, title_size=17, bullet_size=14)

add_bullet_box(s, "Modifiable Risk Factors", [
    "Nulliparity or late first pregnancy (>30 yrs)",
    "Hormone replacement therapy (HRT)",
    "Oral contraceptive use",
    "Alcohol consumption (dose-dependent)",
    "Obesity (especially postmenopausal)",
    "Sedentary lifestyle",
    "Ionizing radiation exposure (prior chest RT)",
    "Lactation is PROTECTIVE",
], 6.6, 1.3, 6.4, 5.8, title_size=17, bullet_size=14)

bottom_bar(s); slide_number(s, 4)


# ════════════════════════════════════════════════════
# SLIDE 5 — Anatomy & Spread
# ════════════════════════════════════════════════════
s = blank_slide(prs)
fill_bg(s, BG_DARK)
pink_bar(s, 0, 0.18)
add_rect(s, 0, 0.18, 13.333, 0.9, BG_MEDIUM)
add_text(s, "Breast Anatomy & Routes of Spread", 0.5, 0.22, 12, 0.75,
         font_size=30, bold=True, color=WHITE)

add_bullet_box(s, "Normal Anatomy (TDLU)", [
    "Terminal Duct Lobular Unit (TDLU) = functional unit of the breast",
    "5-15 lobes per breast, each draining via a major duct to nipple",
    "Two epithelial layers: luminal (inner) + myoepithelial (outer)",
    "Basement membrane separates epithelium from stroma",
    "Most breast cancers arise from the TDLU",
], 0.3, 1.3, 6.2, 4.0, title_size=17, bullet_size=14)

add_bullet_box(s, "Lymphatic Drainage", [
    "Axillary nodes (75%) — primary drainage; most important for staging",
    "Internal mammary nodes — medial tumors",
    "Supraclavicular nodes — advanced nodal spread",
    "Sentinel lymph node biopsy (SLNB) is now standard for staging",
], 0.3, 5.45, 6.2, 1.9, title_size=17, bullet_size=14)

add_bullet_box(s, "Routes of Metastatic Spread", [
    "Hematogenous: bone (most common), lung, liver, brain",
    "Lymphatic: axillary, internal mammary, supraclavicular nodes",
    "Bone mets: lytic (TNBC) or sclerotic pattern",
    "Brain mets: more common in HER2+ and TNBC subtypes",
    "Lobular carcinoma: serosal spread, GI tract (unique pattern)",
], 6.7, 1.3, 6.3, 4.0, title_size=17, bullet_size=14)

add_bullet_box(s, "Quadrant Distribution of Tumors", [
    "Upper outer quadrant (UOQ): most common site (~50%)",
    "Subareolar: second most common",
    "Retroareolar involvement can cause nipple retraction",
], 6.7, 5.45, 6.3, 1.9, title_size=17, bullet_size=14)

bottom_bar(s); slide_number(s, 5)


# ════════════════════════════════════════════════════
# SLIDE 6 — Pathogenesis & Molecular Subtypes
# ════════════════════════════════════════════════════
s = blank_slide(prs)
fill_bg(s, BG_DARK)
pink_bar(s, 0, 0.18)
add_rect(s, 0, 0.18, 13.333, 0.9, BG_MEDIUM)
add_text(s, "Molecular Subtypes of Breast Cancer", 0.5, 0.22, 12, 0.75,
         font_size=30, bold=True, color=WHITE)

add_text(s, "Breast cancer is NOT a single disease — it is a family of related cancers defined by molecular characteristics (Robbins Pathology, 11e)",
         0.5, 1.2, 12.3, 0.55, font_size=14, color=LIGHT_BLUE, italic=True)

headers = ["Feature", "Luminal\n(ER+/HER2-)", "HER2+", "TNBC\n(ER-/PR-/HER2-)"]
col_widths = [2.8, 2.8, 2.8, 2.8]
col_colors = [BG_MEDIUM, RGBColor(0x0D,0x42,0x2E), RGBColor(0x1A,0x2F,0x5C), RGBColor(0x4A,0x12,0x30)]
header_colors = [ACCENT_TEAL, RGBColor(0x00,0xCC,0x88), ACCENT_PINK, RGBColor(0xFF,0x66,0xAA)]

x_start = 0.35
y_header = 1.85
for i, (h, cw) in enumerate(zip(headers, col_widths)):
    x = x_start + sum(col_widths[:i]) + i*0.06
    add_rect(s, x, y_header, cw, 0.7, col_colors[i])
    add_text(s, h, x, y_header, cw, 0.7, font_size=14, bold=True,
             color=header_colors[i], align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)

rows = [
    ["% of cases",        "40-55%",                    "~10%",                   "~20%"],
    ["Key gene",          "PIK3CA, ESR1",              "ERBB2 amplified",        "TP53, PIK3CA"],
    ["Grade",             "Grade 1-2",                 "Grade 2-3",              "Grade 3"],
    ["Prognosis",         "Best (if low grade)",       "Good with targeted Rx",  "Aggressive"],
    ["Target therapy",    "Tamoxifen / AIs",           "Trastuzumab / Pertuzumab","No target (yet)"],
    ["Hereditary link",   "BRCA2, CDH1",               "None specific",          "BRCA1"],
]
row_bg = [BG_MEDIUM, RGBColor(0x0E,0x2F,0x48)]
for r, row in enumerate(rows):
    for i, (cell, cw) in enumerate(zip(row, col_widths)):
        x = x_start + sum(col_widths[:i]) + i*0.06
        y = y_header + 0.7 + r * 0.72
        bg = col_colors[i] if r % 2 == 0 else RGBColor(
            min(col_colors[i].rgb >> 16, 255),
            min((col_colors[i].rgb >> 8) & 0xFF, 255),
            min(col_colors[i].rgb & 0xFF, 255)
        )
        add_rect(s, x, y, cw, 0.68, bg)
        fc = header_colors[i] if i == 0 else WHITE
        add_text(s, cell, x+0.05, y+0.02, cw-0.1, 0.65,
                 font_size=13, color=fc, align=PP_ALIGN.CENTER,
                 v_anchor=MSO_ANCHOR.MIDDLE)

bottom_bar(s); slide_number(s, 6)


# ════════════════════════════════════════════════════
# SLIDE 7 — Pathogenesis (BRCA & Genetics)
# ════════════════════════════════════════════════════
s = blank_slide(prs)
fill_bg(s, BG_DARK)
pink_bar(s, 0, 0.18)
add_rect(s, 0, 0.18, 13.333, 0.9, BG_MEDIUM)
add_text(s, "Pathogenesis: Genetics & Molecular Mechanisms", 0.5, 0.22, 12, 0.75,
         font_size=28, bold=True, color=WHITE)

add_bullet_box(s, "Familial (Hereditary) Breast Cancer ~15%", [
    "BRCA1 (chr 17q): DNA repair (HR pathway). Lifetime risk 45-85%. Assoc. with TNBC.",
    "BRCA2 (chr 13q): DNA repair. Risk ~45%. Assoc. with Luminal + male breast cancer.",
    "TP53 mutations: Li-Fraumeni syndrome — rare, early onset",
    "CDH1 mutations: Hereditary lobular breast cancer + gastric cancer",
    "PTEN (Cowden syndrome), STK11 (Peutz-Jeghers), ATM, CHEK2: moderate risk genes",
    "Genetic counselling + BRCA testing for high-risk families",
], 0.3, 1.3, 6.2, 4.5, title_size=17, bullet_size=13)

add_bullet_box(s, "Sporadic (Non-Hereditary) ~85%", [
    "Somatic mutations accumulate over lifetime with hormonal exposure",
    "Estrogen receptor (ER) pathway: ER drives proliferation in luminal subtypes",
    "HER2 (ERBB2) amplification: present on chr 17 — drives aggressive growth",
    "PIK3CA mutations: most common in luminal cancers; activates PI3K/AKT/mTOR",
    "TP53 loss: key in HER2+ and TNBC subtypes",
    "Epigenetic silencing: BRCA1 promoter methylation in sporadic TNBC",
], 6.7, 1.3, 6.3, 4.5, title_size=17, bullet_size=13)

add_rect(s, 0.3, 6.0, 12.7, 1.3, RGBColor(0x1A,0x3A,0x55))
add_text(s, "Key concept: The 'two-hit hypothesis' (Knudson) applies to BRCA carriers — one allele is inherited as germline mutation; the second hit occurs somatically in breast epithelium, triggering carcinogenesis.",
         0.5, 6.05, 12.3, 1.2, font_size=14, color=YELLOW_HL, italic=True)

bottom_bar(s); slide_number(s, 7)


# ════════════════════════════════════════════════════
# SLIDE 8 — Histological Types
# ════════════════════════════════════════════════════
s = blank_slide(prs)
fill_bg(s, BG_DARK)
pink_bar(s, 0, 0.18)
add_rect(s, 0, 0.18, 13.333, 0.9, BG_MEDIUM)
add_text(s, "Histological Classification", 0.5, 0.22, 12, 0.75,
         font_size=30, bold=True, color=WHITE)

add_bullet_box(s, "Non-Invasive (In Situ) Carcinoma", [
    "DCIS (Ductal Carcinoma In Situ): confined within ducts; no basement membrane breach",
    "DCIS subtypes: comedo (central necrosis, high grade), cribriform, solid, micropapillary",
    "LCIS (Lobular Carcinoma In Situ): marker of increased bilateral risk; often incidental",
    "Key: In situ = no metastatic potential unless it invades",
], 0.3, 1.3, 6.2, 3.0)

add_bullet_box(s, "Invasive (Infiltrating) Carcinoma", [
    "Invasive Carcinoma NST (formerly IDC): ~70-80% of all breast cancers",
    "Invasive Lobular Carcinoma (ILC): ~10-15%; loss of E-cadherin (CDH1); 'Indian file' pattern",
    "Special types (better prognosis): Tubular, Cribriform, Mucinous (colloid), Papillary",
    "Inflammatory Breast Cancer: dermal lymphatic invasion; peau d'orange; poor prognosis",
    "Paget's disease of nipple: DCIS/IDC with Paget cells in nipple epidermis",
], 6.7, 1.3, 6.3, 3.0)

add_bullet_box(s, "Grading (Nottingham/Elston-Ellis System)", [
    "Grade 1 (Score 3-5): Well differentiated — tubule formation, mild pleomorphism, low mitoses",
    "Grade 2 (Score 6-7): Moderately differentiated",
    "Grade 3 (Score 8-9): Poorly differentiated — high mitoses, marked pleomorphism",
    "Grade correlates with prognosis and subtype: TNBC/HER2 = usually Grade 3",
], 0.3, 4.55, 12.7, 2.75)

bottom_bar(s); slide_number(s, 8)


# ════════════════════════════════════════════════════
# SLIDE 9 — Clinical Features & Diagnosis
# ════════════════════════════════════════════════════
s = blank_slide(prs)
fill_bg(s, BG_DARK)
pink_bar(s, 0, 0.18)
add_rect(s, 0, 0.18, 13.333, 0.9, BG_MEDIUM)
add_text(s, "Clinical Features & Diagnostic Work-up", 0.5, 0.22, 12, 0.75,
         font_size=30, bold=True, color=WHITE)

add_bullet_box(s, "Clinical Features", [
    "Painless, hard, irregular lump (most common presentation)",
    "Skin changes: dimpling, peau d'orange (lymphedema), erythema",
    "Nipple changes: retraction, bloody/serous discharge, Paget's disease",
    "Axillary lymphadenopathy",
    "Arm edema (advanced local disease)",
    "Symptoms of metastasis: bone pain, SOB, jaundice, headache",
], 0.3, 1.3, 6.2, 4.2)

add_bullet_box(s, "Diagnostic Work-up: Triple Assessment", [
    "1. CLINICAL: history + physical examination",
    "2. RADIOLOGICAL:",
    "   - Mammography: spiculated mass, microcalcifications (screening + Dx)",
    "   - Ultrasound: distinguishes cystic vs solid; guides biopsy",
    "   - MRI breast: extent of disease; lobular carcinoma; high-risk screening",
    "3. PATHOLOGICAL: Core needle biopsy (gold standard)",
    "   - Reports: histological type, grade, ER/PR/HER2/Ki-67",
], 6.7, 1.3, 6.3, 4.2)

add_rect(s, 0.3, 5.7, 12.7, 1.55, RGBColor(0x1A,0x3A,0x55))
add_text(s, "Triple Assessment Rule: All 3 must be benign to exclude cancer. If ANY ONE is suspicious -> proceed to biopsy or surgery.",
         0.5, 5.75, 12.3, 0.55, font_size=15, bold=True, color=ACCENT_PINK)
add_text(s, "ER / PR / HER2 / Ki-67 (biomarker panel) is MANDATORY on every invasive cancer — it determines subtype and treatment.",
         0.5, 6.3, 12.3, 0.8, font_size=14, color=YELLOW_HL)

bottom_bar(s); slide_number(s, 9)


# ════════════════════════════════════════════════════
# SLIDE 10 — TNM Staging
# ════════════════════════════════════════════════════
s = blank_slide(prs)
fill_bg(s, BG_DARK)
pink_bar(s, 0, 0.18)
add_rect(s, 0, 0.18, 13.333, 0.9, BG_MEDIUM)
add_text(s, "Staging: TNM & Prognostic Groups (AJCC 8th Ed.)", 0.5, 0.22, 12, 0.75,
         font_size=28, bold=True, color=WHITE)

# T, N, M boxes
for col, (title, items, hc) in enumerate([
    ("T - Primary Tumor", [
        "TX: cannot assess", "T0: no evidence",
        "Tis: In situ (DCIS/LCIS/Paget's)",
        "T1: ≤20 mm  (T1a <5mm, T1b 5-10, T1c 10-20)",
        "T2: 20-50 mm",
        "T3: >50 mm",
        "T4: any size + chest wall / skin (T4d = inflammatory)",
    ], ACCENT_TEAL),
    ("N - Regional Nodes", [
        "NX: cannot assess",
        "N0: no nodal metastasis",
        "N1: 1-3 axillary nodes (movable)",
        "N2: 4-9 axillary nodes OR internal mammary",
        "N3: ≥10 axillary OR infra/supraclavicular",
        "pN0(sn): sentinel node negative",
        "N3 = Stage IIIC regardless of T",
    ], ACCENT_PINK),
    ("M - Distant Metastasis", [
        "M0: no distant metastasis",
        "M1: distant metastasis",
        "",
        "Common sites:",
        "  Bone (most common ~70%)",
        "  Lung and pleura",
        "  Liver",
        "  Brain (HER2+, TNBC)",
    ], YELLOW_HL),
]):
    x = 0.3 + col * 4.35
    add_rect(s, x, 1.3, 4.1, 4.6, BG_MEDIUM)
    add_rect(s, x, 1.3, 4.1, 0.08, hc)
    add_text(s, title, x+0.1, 1.38, 3.9, 0.5, font_size=15, bold=True, color=hc)
    tb = s.shapes.add_textbox(Inches(x+0.15), Inches(1.95), Inches(3.8), Inches(3.8))
    tf = tb.text_frame; tf.word_wrap = True
    for i, item in enumerate(items):
        p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
        p.space_before = Pt(3)
        run = p.add_run(); run.text = item
        run.font.size = Pt(13); run.font.color.rgb = LIGHT_BLUE; run.font.name = "Calibri"

# Stage summary
add_rect(s, 0.3, 6.1, 12.7, 1.2, RGBColor(0x1A,0x3A,0x55))
stage_summary = [
    ("Stage 0", "Tis N0 M0", "DCIS/LCIS"),
    ("Stage I", "T1 N0 M0", ">90% 5yr survival"),
    ("Stage II", "T1N1 / T2-3N0", "~70-80% 5yr"),
    ("Stage III", "T3-4 / N2-3", "~50-60% 5yr"),
    ("Stage IV", "Any T, Any N, M1", "~28% 5yr"),
]
for i, (stage, tnm, note) in enumerate(stage_summary):
    x = 0.5 + i * 2.5
    add_text(s, stage, x, 6.1, 2.4, 0.45, font_size=13, bold=True, color=ACCENT_PINK, align=PP_ALIGN.CENTER)
    add_text(s, tnm, x, 6.55, 2.4, 0.35, font_size=11, color=WHITE, align=PP_ALIGN.CENTER)
    add_text(s, note, x, 6.9, 2.4, 0.35, font_size=11, color=ACCENT_TEAL, align=PP_ALIGN.CENTER, italic=True)

bottom_bar(s); slide_number(s, 10)


# ════════════════════════════════════════════════════
# SLIDE 11 — Surgery
# ════════════════════════════════════════════════════
s = blank_slide(prs)
fill_bg(s, BG_DARK)
pink_bar(s, 0, 0.18)
add_rect(s, 0, 0.18, 13.333, 0.9, BG_MEDIUM)
add_text(s, "Surgical Management", 0.5, 0.22, 12, 0.75,
         font_size=30, bold=True, color=WHITE)

add_bullet_box(s, "Breast-Conserving Surgery (BCS) — Preferred", [
    "Lumpectomy / wide local excision + sentinel lymph node biopsy (SLNB)",
    "MUST be followed by adjuvant radiotherapy to the breast",
    "Equivalent survival to mastectomy for Stage I-II (proven in landmark NSABP-B06 trial)",
    "Contraindications: large tumor:breast ratio, multicentric disease, prior RT, BRCA mutation",
], 0.3, 1.3, 6.2, 3.4)

add_bullet_box(s, "Mastectomy", [
    "Simple (total) mastectomy: removes breast tissue ± skin/nipple",
    "Modified radical mastectomy (MRM): breast + axillary nodes (Levels I-III)",
    "Radical (Halsted): breast + pec muscles + axilla — now rarely performed",
    "Skin-sparing / nipple-sparing mastectomy: oncologically safe; better cosmesis",
    "Prophylactic bilateral mastectomy: BRCA1/2 carriers (reduces risk by ~95%)",
], 6.7, 1.3, 6.3, 3.4)

add_bullet_box(s, "Axillary Management", [
    "Sentinel Lymph Node Biopsy (SLNB): standard for clinically node-negative patients",
    "Axillary Lymph Node Dissection (ALND): positive sentinel node OR clinical N2-N3",
    "SLNB technique: blue dye + technetium-99m radiocolloid injection -> gamma probe",
    "Complications of ALND: lymphoedema, nerve injury, shoulder stiffness",
], 0.3, 4.85, 12.7, 2.5)

bottom_bar(s); slide_number(s, 11)


# ════════════════════════════════════════════════════
# SLIDE 12 — Systemic Therapy
# ════════════════════════════════════════════════════
s = blank_slide(prs)
fill_bg(s, BG_DARK)
pink_bar(s, 0, 0.18)
add_rect(s, 0, 0.18, 13.333, 0.9, BG_MEDIUM)
add_text(s, "Systemic Therapy", 0.5, 0.22, 12, 0.75,
         font_size=30, bold=True, color=WHITE)

add_bullet_box(s, "Hormone Therapy (ER/PR+)", [
    "Tamoxifen: SERM; blocks ER; 5-10 yrs; premenopausal + postmenopausal",
    "Aromatase Inhibitors (AIs): anastrozole, letrozole, exemestane; postmenopausal only",
    "CDK4/6 inhibitors (palbociclib, ribociclib): added to AIs in advanced ER+ disease",
    "Fulvestrant: ER antagonist/degrader; advanced ER+ disease",
    "Reduces recurrence by ~40-50% in ER+ tumors",
], 0.3, 1.3, 6.2, 3.5)

add_bullet_box(s, "HER2-Targeted Therapy", [
    "Trastuzumab (Herceptin): anti-HER2 monoclonal Ab; adjuvant + metastatic",
    "Pertuzumab: blocks HER2 dimerization; used with trastuzumab (dual blockade)",
    "T-DM1 (ado-trastuzumab emtansine): trastuzumab + chemotherapy conjugate",
    "Tucatinib + T-DXd (trastuzumab deruxtecan): newer agents for HER2+ MBC",
    "Cardiac monitoring required — cardiotoxicity risk (LVEF monitoring)",
], 6.7, 1.3, 6.3, 3.5)

add_bullet_box(s, "Chemotherapy Regimens", [
    "Anthracyclines (doxorubicin, epirubicin) + Taxanes (paclitaxel, docetaxel) = backbone",
    "AC-T (or EC-T): standard adjuvant regimen for node+ or high-risk node- disease",
    "Neoadjuvant chemo: given pre-surgery to downstage tumor; allows BCS in large tumors",
    "Capecitabine: oral, for residual disease after neoadjuvant (CREATE-X trial)",
    "TNBC: PARP inhibitors (olaparib, talazoparib) for BRCA-mutated metastatic TNBC",
], 0.3, 5.0, 12.7, 2.35)

bottom_bar(s); slide_number(s, 12)


# ════════════════════════════════════════════════════
# SLIDE 13 — Radiotherapy
# ════════════════════════════════════════════════════
s = blank_slide(prs)
fill_bg(s, BG_DARK)
pink_bar(s, 0, 0.18)
add_rect(s, 0, 0.18, 13.333, 0.9, BG_MEDIUM)
add_text(s, "Radiotherapy in Breast Cancer", 0.5, 0.22, 12, 0.75,
         font_size=30, bold=True, color=WHITE)

add_bullet_box(s, "Indications for Radiotherapy", [
    "After BCS: MANDATORY whole breast RT to the remaining breast tissue",
    "After mastectomy: Post-mastectomy RT (PMRT) if T3/T4, ≥4 positive nodes, +ve margins",
    "Regional nodal irradiation: for N2-N3 disease (axilla, IMC, supraclavicular)",
    "Palliative: bone mets (pain relief), brain mets (WBRT or stereotactic)",
    "Locoregional recurrence treatment",
], 0.3, 1.3, 6.2, 4.0)

add_bullet_box(s, "Techniques & Doses", [
    "Standard: 40-50 Gy in 15-25 fractions (whole breast)",
    "Boost dose: +10-16 Gy to tumor bed — reduces local recurrence in young patients",
    "Hypofractionation: 40 Gy in 15 fractions (FAST-Forward trial) — equally effective",
    "Intraoperative RT (IORT): single dose at time of surgery; selected low-risk patients",
    "Proton therapy: reduces cardiac/lung dose; useful for left-sided tumors",
], 6.7, 1.3, 6.3, 4.0)

add_bullet_box(s, "Side Effects", [
    "Acute: erythema, fatigue, breast edema, skin desquamation",
    "Late: fibrosis, lymphedema, rib fracture, radiation pneumonitis",
    "Cardiac toxicity: left breast RT; minimized with DIBH (deep inspiration breath-hold) technique",
    "Secondary malignancy: angiosarcoma of irradiated field (rare, latency >10 yrs)",
], 0.3, 5.5, 12.7, 1.75)

bottom_bar(s); slide_number(s, 13)


# ════════════════════════════════════════════════════
# SLIDE 14 — Screening & Prevention
# ════════════════════════════════════════════════════
s = blank_slide(prs)
fill_bg(s, BG_DARK)
pink_bar(s, 0, 0.18)
add_rect(s, 0, 0.18, 13.333, 0.9, BG_MEDIUM)
add_text(s, "Screening, Prevention & Prognosis", 0.5, 0.22, 12, 0.75,
         font_size=30, bold=True, color=WHITE)

add_bullet_box(s, "Screening Recommendations", [
    "Mammography: annual or biennial from age 40-50 (varies by guideline)",
    "ACS: annual mammogram from age 40; MRI + mammogram from age 30 for high-risk",
    "UK NHS: 3-yearly mammography ages 50-70",
    "Clinical breast examination: part of annual check-up in most guidelines",
    "Breast self-examination: encouraged for awareness (not proven to reduce mortality alone)",
    "High-risk screening: annual MRI for BRCA carriers / family history / prior chest RT",
], 0.3, 1.3, 6.2, 4.3)

add_bullet_box(s, "Chemoprevention & Risk Reduction", [
    "Tamoxifen: 5 yrs reduces risk ~50% in high-risk premenopausal women (NSABP P-1)",
    "Raloxifene: postmenopausal; similar efficacy to tamoxifen; less uterine cancer risk",
    "Aromatase inhibitors (anastrozole, exemestane): postmenopausal high-risk women",
    "Prophylactic mastectomy: BRCA1/2 carriers (reduces risk ~95%)",
    "Prophylactic oophorectomy: reduces estrogen; indicated in BRCA1 carriers",
    "Lifestyle: weight control, exercise, limit alcohol, breastfeeding",
], 6.7, 1.3, 6.3, 4.3)

add_rect(s, 0.3, 5.8, 12.7, 1.5, RGBColor(0x1A,0x3A,0x55))
add_text(s, "Prognostic Factors", 0.5, 5.85, 12, 0.4, font_size=16, bold=True, color=ACCENT_TEAL)
add_text(s, u"Favorable: small size, node-negative, ER+, low grade, low Ki-67 | "
            u"Unfavorable: large size, node+, ER-, HER2+, TNBC, high grade, lymphovascular invasion, young age",
         0.5, 6.3, 12.3, 0.9, font_size=14, color=LIGHT_BLUE)

bottom_bar(s); slide_number(s, 14)


# ════════════════════════════════════════════════════
# SLIDE 15 — Summary & Key Takeaways
# ════════════════════════════════════════════════════
s = blank_slide(prs)
fill_bg(s, BG_DARK)
add_rect(s, 0, 0, 13.333, 0.25, ACCENT_PINK)
add_rect(s, 0, 0.25, 13.333, 0.85, BG_MEDIUM)
add_text(s, "Summary & Key Takeaways", 0.5, 0.28, 12, 0.75,
         font_size=30, bold=True, color=WHITE)

add_rect(s, 11.8, 0, 1.533, 7.5, RGBColor(0x17, 0x35, 0x5C))
add_rect(s, 12.2, 0, 0.3, 7.5, ACCENT_PINK)

takeaways = [
    ("1", "Breast cancer is the 2nd most common cause of cancer death in women; early detection saves lives."),
    ("2", "It is a heterogeneous disease — defined by molecular subtypes (Luminal, HER2+, TNBC) not just histology."),
    ("3", "BRCA1/2 mutations are the most important hereditary risk factors; genetic counselling is recommended for high-risk families."),
    ("4", "Triple Assessment (clinical + imaging + biopsy) is the gold standard for diagnosis."),
    ("5", "TNM staging (AJCC 8th Ed.) now incorporates biomarkers (ER, PR, HER2, grade) alongside anatomic factors."),
    ("6", "Breast-conserving surgery + radiotherapy = mastectomy in survival; patient choice matters."),
    ("7", "Treatment is subtype-driven: hormone therapy for ER+, trastuzumab for HER2+, PARP inhibitors for BRCA-mutated TNBC."),
    ("8", "Chemoprevention (tamoxifen, AIs) and prophylactic surgery can significantly reduce risk in high-risk individuals."),
]

for i, (num, text) in enumerate(takeaways):
    row = i // 2
    col = i % 2
    x = 0.3 + col * 6.45
    y = 1.25 + row * 1.42
    add_rect(s, x, y, 6.1, 1.3, BG_MEDIUM)
    add_rect(s, x, y, 0.45, 1.3, ACCENT_PINK)
    add_text(s, num, x, y, 0.45, 1.3, font_size=20, bold=True,
             color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
    add_text(s, text, x+0.5, y+0.08, 5.55, 1.18,
             font_size=13, color=LIGHT_BLUE, word_wrap=True)

add_text(s, "Thank you | Questions Welcome", 0.5, 7.05, 11, 0.35,
         font_size=14, color=ACCENT_PINK, align=PP_ALIGN.CENTER, italic=True)
bottom_bar(s)
slide_number(s, 15)


# ── Save ──────────────────────────────────────────────────────────────────────
out = "/tmp/workspace/breast-cancer-ppt/Breast_Cancer_Oncology.pptx"
buf = BytesIO()
prs.save(buf)
with open(out, "wb") as f:
    f.write(buf.getvalue())
print(f"Saved: {out}")
print(f"Slides: {len(prs.slides)}")
Running Command

cd /tmp/workspace/breast-cancer-ppt && python create_pptx.py 2>&1

Editing File

~/breast-cancer-ppt/create_pptx.py

Successfully replaced 1 instance(s) of the string in '/tmp/workspace/breast-cancer-ppt/create_pptx.py'
Running Command

cd /tmp/workspace/breast-cancer-ppt && python create_pptx.py 2>&1

Your presentation is ready! Download it here:

Breast Cancer Oncology

Presentation · PPTX


Here is what's included across all 15 slides, built on a deep navy + breast-cancer pink ribbon + teal medical theme:
#Slide Title
1Title Slide — branded with pink ribbon accent
2Learning Objectives (8 objectives)
3Epidemiology — stat boxes + key facts
4Risk Factors — modifiable vs non-modifiable columns
5Breast Anatomy, Lymphatic Drainage & Routes of Spread
6Molecular Subtypes — comparison table (Luminal / HER2 / TNBC)
7Pathogenesis — BRCA1/2, PI3K/AKT, TP53, two-hit hypothesis
8Histological Classification — DCIS, LCIS, IDC, ILC, grading
9Clinical Features & Triple Assessment Diagnostic Work-up
10TNM Staging (AJCC 8th Ed.) with survival data
11Surgical Management — BCS, mastectomy, axillary surgery
12Systemic Therapy — hormone therapy, HER2-targeted, chemotherapy
13Radiotherapy — indications, techniques, side effects
14Screening, Prevention & Prognostic Factors
15Summary & 8 Key Takeaways
Content is sourced from Robbins Pathology (11e), Fischer's Mastery of Surgery (8e), Harrison's Internal Medicine (22e), and Goldman-Cecil Medicine.
This is a shared conversation. Sign in to Orris to start your own chat.