Paper presentation on Uterine Fibroids Impact only on Women’s Health and Quality of Life for gynec resident

Asking for Preferences
Reading File
Finding Sources
Searching PubMed

"uterine fibroids" AND "quality of life"

Searching the Web

uterine fibroids impact women health quality of life 2024 epidemiology burden

Finding Sources
Reading Article

PMID: 38246400

Reading Web Page

https://link.springer.com/article/10.1186/s12905-025-03974-y

Finding Sources
Searching PubMed

"uterine fibroids" AND "fertility" AND "pregnancy outcomes"

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

mkdir -p /home/daytona/workspace/uterine-fibroids-presentation && ls /home/daytona/workspace/uterine-fibroids-presentation/

Writing File

~/uterine-fibroids-presentation/build_presentation.py

#!/usr/bin/env python3
"""
Paper Presentation: Uterine Fibroids - Impact on Women's Health and Quality of Life
For Gynecology Residents
Uses ReportLab to generate a professional PDF.
"""

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

# Color Palette - deep teal/maroon theme (gynecology)
PRIMARY    = HexColor("#7B1C3A")   # deep maroon
SECONDARY  = HexColor("#C0445E")   # rose
ACCENT     = HexColor("#F4D5DC")   # pale pink background
DARK_TEXT  = HexColor("#1A1A2E")   # near black
LIGHT_TEXT = HexColor("#F8F0F3")   # off-white
GREY       = HexColor("#555555")
LIGHT_GREY = HexColor("#F2F2F2")
WHITE      = colors.white
BLACK      = colors.black

PAGE_W, PAGE_H = A4

def header_footer(canvas, doc):
    """Draw consistent header/footer on every page."""
    canvas.saveState()
    # Header bar
    canvas.setFillColor(PRIMARY)
    canvas.rect(0, PAGE_H - 1.5*cm, PAGE_W, 1.5*cm, fill=1, stroke=0)
    canvas.setFillColor(WHITE)
    canvas.setFont("Helvetica-Bold", 9)
    canvas.drawString(1*cm, PAGE_H - 1.0*cm, "UTERINE FIBROIDS: Impact on Women's Health & Quality of Life")
    canvas.setFont("Helvetica", 8)
    canvas.drawRightString(PAGE_W - 1*cm, PAGE_H - 1.0*cm, "Gynecology Residency Grand Rounds")
    # Footer
    canvas.setFillColor(PRIMARY)
    canvas.rect(0, 0, PAGE_W, 0.9*cm, fill=1, stroke=0)
    canvas.setFillColor(WHITE)
    canvas.setFont("Helvetica", 7.5)
    page_num = doc.page
    canvas.drawCentredString(PAGE_W/2, 0.32*cm, f"Page {page_num}")
    canvas.drawString(1*cm, 0.32*cm, "Prepared: May 2026")
    canvas.drawRightString(PAGE_W - 1*cm, 0.32*cm, "For Educational Purposes Only")
    canvas.restoreState()

def cover_page(canvas, doc):
    """Special first page with decorative cover."""
    canvas.saveState()
    # Full background gradient rectangle
    canvas.setFillColor(PRIMARY)
    canvas.rect(0, 0, PAGE_W, PAGE_H, fill=1, stroke=0)
    # Decorative side strip
    canvas.setFillColor(SECONDARY)
    canvas.rect(0, 0, 1.2*cm, PAGE_H, fill=1, stroke=0)
    # Top accent band
    canvas.setFillColor(SECONDARY)
    canvas.rect(0, PAGE_H - 3.5*cm, PAGE_W, 0.5*cm, fill=1, stroke=0)
    # Bottom accent band
    canvas.setFillColor(SECONDARY)
    canvas.rect(0, 2.5*cm, PAGE_W, 0.5*cm, fill=1, stroke=0)
    # Footer info
    canvas.setFillColor(WHITE)
    canvas.setFont("Helvetica", 9)
    page_num = doc.page
    canvas.drawCentredString(PAGE_W/2, 1.2*cm, f"Page {page_num}")
    canvas.restoreState()

class CoverTemplate(PageTemplate):
    def __init__(self):
        frame = Frame(1.8*cm, 3.2*cm, PAGE_W - 3.2*cm, PAGE_H - 7*cm,
                      leftPadding=0, rightPadding=0, topPadding=0, bottomPadding=0)
        PageTemplate.__init__(self, id='cover', frames=[frame], onPage=cover_page)

class ContentTemplate(PageTemplate):
    def __init__(self):
        frame = Frame(1.5*cm, 1.2*cm, PAGE_W - 3.0*cm, PAGE_H - 3.2*cm,
                      leftPadding=0, rightPadding=0, topPadding=0, bottomPadding=0)
        PageTemplate.__init__(self, id='content', frames=[frame], onPage=header_footer)

def build_styles():
    s = getSampleStyleSheet()

    cover_title = ParagraphStyle(
        'CoverTitle', fontName='Helvetica-Bold', fontSize=26,
        textColor=WHITE, alignment=TA_CENTER, leading=32, spaceAfter=8
    )
    cover_subtitle = ParagraphStyle(
        'CoverSubtitle', fontName='Helvetica', fontSize=14,
        textColor=ACCENT, alignment=TA_CENTER, leading=20, spaceAfter=4
    )
    cover_meta = ParagraphStyle(
        'CoverMeta', fontName='Helvetica-Oblique', fontSize=11,
        textColor=HexColor("#FFCCDD"), alignment=TA_CENTER, leading=16
    )
    slide_heading = ParagraphStyle(
        'SlideHeading', fontName='Helvetica-Bold', fontSize=15,
        textColor=PRIMARY, alignment=TA_LEFT, leading=19,
        spaceBefore=6, spaceAfter=6
    )
    section_label = ParagraphStyle(
        'SectionLabel', fontName='Helvetica-Bold', fontSize=9,
        textColor=WHITE, alignment=TA_LEFT, leading=12,
        backColor=SECONDARY, leftIndent=0, rightIndent=0,
        borderPad=4, spaceBefore=10, spaceAfter=2
    )
    body = ParagraphStyle(
        'BodyText2', fontName='Helvetica', fontSize=10.5,
        textColor=DARK_TEXT, alignment=TA_JUSTIFY, leading=15,
        spaceBefore=2, spaceAfter=4, leftIndent=6
    )
    bullet = ParagraphStyle(
        'Bullet', fontName='Helvetica', fontSize=10.5,
        textColor=DARK_TEXT, alignment=TA_LEFT, leading=15,
        spaceBefore=3, spaceAfter=2, leftIndent=18, firstLineIndent=-12
    )
    sub_bullet = ParagraphStyle(
        'SubBullet', fontName='Helvetica', fontSize=9.5,
        textColor=GREY, alignment=TA_LEFT, leading=13,
        spaceBefore=2, spaceAfter=1, leftIndent=30, firstLineIndent=-10
    )
    bold_bullet = ParagraphStyle(
        'BoldBullet', fontName='Helvetica-Bold', fontSize=10.5,
        textColor=PRIMARY, alignment=TA_LEFT, leading=15,
        spaceBefore=3, spaceAfter=2, leftIndent=18, firstLineIndent=-12
    )
    caption = ParagraphStyle(
        'Caption', fontName='Helvetica-Oblique', fontSize=8.5,
        textColor=GREY, alignment=TA_CENTER, leading=11, spaceBefore=2
    )
    table_header = ParagraphStyle(
        'TableHeader', fontName='Helvetica-Bold', fontSize=9.5,
        textColor=WHITE, alignment=TA_CENTER, leading=12
    )
    table_cell = ParagraphStyle(
        'TableCell', fontName='Helvetica', fontSize=9.5,
        textColor=DARK_TEXT, alignment=TA_LEFT, leading=13
    )
    highlight_box = ParagraphStyle(
        'HighlightBox', fontName='Helvetica-Bold', fontSize=10.5,
        textColor=PRIMARY, alignment=TA_CENTER, leading=15,
        backColor=ACCENT, borderPad=6, spaceBefore=6, spaceAfter=6
    )
    footnote = ParagraphStyle(
        'Footnote', fontName='Helvetica-Oblique', fontSize=8,
        textColor=GREY, alignment=TA_LEFT, leading=10, spaceBefore=4
    )

    return {
        'cover_title': cover_title, 'cover_subtitle': cover_subtitle,
        'cover_meta': cover_meta, 'slide_heading': slide_heading,
        'section_label': section_label, 'body': body, 'bullet': bullet,
        'sub_bullet': sub_bullet, 'bold_bullet': bold_bullet,
        'caption': caption, 'table_header': table_header,
        'table_cell': table_cell, 'highlight_box': highlight_box,
        'footnote': footnote
    }

def divider():
    return HRFlowable(width="100%", thickness=1.5, color=SECONDARY, spaceAfter=6, spaceBefore=6)

def slide_title_block(text, st):
    return [
        Paragraph(text, st['slide_heading']),
        HRFlowable(width="100%", thickness=2, color=PRIMARY, spaceAfter=8, spaceBefore=0),
    ]

def section_box(text, st):
    return Paragraph(f"  {text.upper()}  ", st['section_label'])

def bullet_item(text, st, bold=False):
    style = st['bold_bullet'] if bold else st['bullet']
    return Paragraph(f"\u2022  {text}", style)

def sub_bullet_item(text, st):
    return Paragraph(f"  \u25E6  {text}", st['sub_bullet'])

def highlight(text, st):
    return Paragraph(text, st['highlight_box'])

def build_pdf(output_path):
    doc = BaseDocTemplate(
        output_path, pagesize=A4,
        leftMargin=0, rightMargin=0, topMargin=0, bottomMargin=0
    )
    doc.addPageTemplates([CoverTemplate(), ContentTemplate()])
    st = build_styles()
    story = []

    # =========================================================
    # SLIDE 1: COVER PAGE
    # =========================================================
    story.append(Spacer(1, 1.5*cm))
    story.append(Paragraph("UTERINE FIBROIDS", st['cover_title']))
    story.append(Spacer(1, 0.3*cm))
    story.append(Paragraph("Impact on Women's Health &<br/>Quality of Life", st['cover_subtitle']))
    story.append(Spacer(1, 0.6*cm))
    story.append(HRFlowable(width="80%", thickness=1, color=ACCENT, spaceAfter=10, spaceBefore=0))
    story.append(Paragraph("Paper Presentation — Gynecology Residency Programme", st['cover_meta']))
    story.append(Spacer(1, 0.4*cm))
    story.append(Paragraph("May 2026", st['cover_meta']))
    story.append(Spacer(1, 1.2*cm))
    # Key stat box in cover
    data = [["~80%", "~30%", "Up to 3×", "~$34B"],
            ["of women by age 50", "are symptomatic", "higher risk in Black women", "annual economic burden (US)"]]
    t = Table(data, colWidths=[3.8*cm]*4)
    t.setStyle(TableStyle([
        ('BACKGROUND', (0,0), (-1,0), SECONDARY),
        ('BACKGROUND', (0,1), (-1,1), HexColor("#5A0E27")),
        ('TEXTCOLOR', (0,0), (-1,-1), WHITE),
        ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
        ('FONTNAME', (0,1), (-1,1), 'Helvetica-Oblique'),
        ('FONTSIZE', (0,0), (-1,0), 14),
        ('FONTSIZE', (0,1), (-1,1), 8),
        ('ALIGN', (0,0), (-1,-1), 'CENTER'),
        ('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
        ('ROWBACKGROUNDS', (0,0), (-1,-1), [SECONDARY, HexColor("#5A0E27")]),
        ('TOPPADDING', (0,0), (-1,0), 8),
        ('BOTTOMPADDING', (0,0), (-1,0), 8),
        ('TOPPADDING', (0,1), (-1,1), 5),
        ('BOTTOMPADDING', (0,1), (-1,1), 8),
        ('GRID', (0,0), (-1,-1), 0.5, HexColor("#FFCCDD")),
        ('ROUNDEDCORNERS', [4,4,4,4]),
    ]))
    story.append(t)
    story.append(PageBreak())

    # =========================================================
    # SLIDE 2: OVERVIEW / TABLE OF CONTENTS
    # =========================================================
    story += slide_title_block("Presentation Overview", st)
    toc_data = [
        ["Section", "Topic"],
        ["1", "Definition, Classification & Epidemiology"],
        ["2", "Pathogenesis & Risk Factors"],
        ["3", "Clinical Manifestations"],
        ["4", "Impact on Reproductive Health & Fertility"],
        ["5", "Quality of Life (QoL) Domains"],
        ["6", "Psychological & Social Impact"],
        ["7", "Economic Burden & Workplace Impact"],
        ["8", "Investigation & Diagnosis"],
        ["9", "Management Overview"],
        ["10", "QoL Outcomes Post-Treatment"],
        ["11", "Key Messages & Conclusions"],
        ["12", "References"],
    ]
    t = Table(toc_data, colWidths=[1.4*cm, 14.6*cm])
    t.setStyle(TableStyle([
        ('BACKGROUND', (0,0), (-1,0), PRIMARY),
        ('TEXTCOLOR', (0,0), (-1,0), WHITE),
        ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
        ('FONTSIZE', (0,0), (-1,0), 10),
        ('FONTNAME', (0,1), (0,-1), 'Helvetica-Bold'),
        ('FONTSIZE', (0,1), (-1,-1), 10),
        ('ROWBACKGROUNDS', (0,1), (-1,-1), [LIGHT_GREY, WHITE]),
        ('ALIGN', (0,0), (0,-1), 'CENTER'),
        ('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
        ('GRID', (0,0), (-1,-1), 0.3, GREY),
        ('TOPPADDING', (0,0), (-1,-1), 5),
        ('BOTTOMPADDING', (0,0), (-1,-1), 5),
        ('LEFTPADDING', (1,1), (1,-1), 8),
    ]))
    story.append(t)
    story.append(PageBreak())

    # =========================================================
    # SLIDE 3: DEFINITION, CLASSIFICATION & EPIDEMIOLOGY
    # =========================================================
    story += slide_title_block("1. Definition, Classification & Epidemiology", st)
    story.append(section_box("Definition", st))
    story.append(Spacer(1, 3))
    story.append(Paragraph(
        "Uterine fibroids (leiomyomata, myomas) are benign monoclonal smooth muscle neoplasms "
        "arising from the myometrium. They are <b>the most common solid pelvic tumors</b> in women "
        "of reproductive age.",
        st['body']
    ))
    story.append(Spacer(1, 5))
    story.append(section_box("FIGO Classification by Location", st))
    story.append(Spacer(1, 3))

    class_data = [
        ["Type", "Location", "Clinical Relevance"],
        ["0", "Pedunculated intracavitary (submucosal)", "Heavy bleeding, infertility"],
        ["1", "Submucosal <50% intramural", "HMB, implantation failure"],
        ["2", "Submucosal ≥50% intramural", "HMB, pregnancy loss"],
        ["3", "Intramural, contacts endometrium", "HMB, subfertility"],
        ["4", "Intramural (entirely within myometrium)", "Bulk symptoms, dysmenorrhea"],
        ["5", "Subserosal ≥50% intramural", "Pressure symptoms"],
        ["6", "Subserosal <50% intramural", "Pelvic pain, urinary frequency"],
        ["7", "Subserosal pedunculated", "Torsion, acute pain"],
        ["8", "Other (cervical, parasitic)", "Variable"],
    ]
    t = Table(class_data, colWidths=[1.4*cm, 7.5*cm, 7.1*cm])
    t.setStyle(TableStyle([
        ('BACKGROUND', (0,0), (-1,0), PRIMARY),
        ('TEXTCOLOR', (0,0), (-1,0), WHITE),
        ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
        ('FONTSIZE', (0,0), (-1,-1), 9),
        ('ROWBACKGROUNDS', (0,1), (-1,-1), [ACCENT, WHITE]),
        ('ALIGN', (0,0), (0,-1), 'CENTER'),
        ('GRID', (0,0), (-1,-1), 0.3, GREY),
        ('TOPPADDING', (0,0), (-1,-1), 4),
        ('BOTTOMPADDING', (0,0), (-1,-1), 4),
        ('LEFTPADDING', (0,0), (-1,-1), 5),
    ]))
    story.append(t)
    story.append(Spacer(1, 5))
    story.append(section_box("Epidemiology", st))
    story.append(Spacer(1, 3))
    epi = [
        bullet_item("Prevalence: up to <b>80% of women by age 50</b> on histologic examination; 20-50% clinically significant (Berek & Novak's Gynecology)", st),
        bullet_item("Symptomatic fibroids affect an estimated <b>171 million women globally</b>", st),
        bullet_item("Peak incidence: <b>35-39 years</b>; peak prevalence and disability: <b>40-44 years</b> (GBD study, 2025)", st),
        bullet_item("Global age-standardized prevalence rate showed <b>upward trend</b> (AAPC 0.05%) from 1990-2021; highest increases in Brazil, India, Georgia", st),
        bullet_item("Higher burden in <b>low- and middle-SDI regions</b> (AAPC 0.27-0.54%)", st),
    ]
    for item in epi:
        story.append(item)
    story.append(Spacer(1, 5))
    story.append(highlight("<b>Racial Disparity:</b> African-American/Black women have 3-fold higher risk, earlier onset (20s-30s), larger and more numerous fibroids, and worse QoL impact than white women (Mayo Clinic, AJOGy)", st))
    story.append(PageBreak())

    # =========================================================
    # SLIDE 4: PATHOGENESIS & RISK FACTORS
    # =========================================================
    story += slide_title_block("2. Pathogenesis & Risk Factors", st)
    story.append(section_box("Molecular Pathogenesis", st))
    story.append(Spacer(1, 3))
    path = [
        bullet_item("<b>Monoclonal origin:</b> arise from a single transformed myometrial smooth muscle cell (Robbins Pathology)", st),
        bullet_item("<b>MED12 mutations</b> in ~70% of leiomyomas — encodes Mediator complex subunit bridging transcription factors to RNA polymerase", st),
        bullet_item("Chromosomal rearrangements of 12q14 (HMGA2) and 6p (HMGA1) in ~40% of cases", st),
        bullet_item("Growth <b>hormone-dependent:</b> stimulated by estrogen and progesterone; regress after menopause or GnRH-agonist treatment", st),
        bullet_item("Rare hereditary form: germline FH mutations (fumarate hydratase) — associated with HLRCC syndrome", st),
    ]
    for item in path:
        story.append(item)
    story.append(Spacer(1, 8))
    story.append(section_box("Risk Factors", st))
    story.append(Spacer(1, 3))

    rf_data = [
        ["Non-Modifiable Risk Factors", "Modifiable / Lifestyle Risk Factors"],
        ["Black/African-American ethnicity (3×)", "Obesity / high BMI"],
        ["Early menarche (<10 years)", "Nulliparity or low parity"],
        ["Family history (first-degree relative)", "Red meat consumption"],
        ["Increasing age (reproductive years)", "Vitamin D deficiency"],
        ["Genetic mutations (MED12, FH)", "Hormonal contraceptive use (controversial)"],
        ["", "Stress and environmental exposures"],
    ]
    t = Table(rf_data, colWidths=[9.0*cm, 9.0*cm])
    t.setStyle(TableStyle([
        ('BACKGROUND', (0,0), (-1,0), PRIMARY),
        ('TEXTCOLOR', (0,0), (-1,0), WHITE),
        ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
        ('FONTSIZE', (0,0), (-1,-1), 10),
        ('ROWBACKGROUNDS', (0,1), (-1,-1), [LIGHT_GREY, WHITE]),
        ('GRID', (0,0), (-1,-1), 0.3, GREY),
        ('TOPPADDING', (0,0), (-1,-1), 5),
        ('BOTTOMPADDING', (0,0), (-1,-1), 5),
        ('LEFTPADDING', (0,0), (-1,-1), 6),
        ('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
    ]))
    story.append(t)
    story.append(Spacer(1, 6))
    story.append(Paragraph(
        "<b>Protective factors:</b> multiparity, physical activity, current oral contraceptive use (some studies), increased dietary soy/green vegetables",
        st['body']
    ))
    story.append(PageBreak())

    # =========================================================
    # SLIDE 5: CLINICAL MANIFESTATIONS
    # =========================================================
    story += slide_title_block("3. Clinical Manifestations", st)
    story.append(Paragraph(
        "Up to 50% of fibroids are asymptomatic. Symptoms depend on fibroid <b>size, number, and location</b>. "
        "The most troublesome symptoms affect reproductive, urinary, and gastrointestinal function.",
        st['body']
    ))
    story.append(Spacer(1, 5))
    sym_data = [
        ["Symptom Domain", "Specific Symptoms", "Mechanism / Notes"],
        ["Abnormal Uterine\nBleeding (AUB)", "Heavy menstrual bleeding (HMB), prolonged periods, intermenstrual spotting", "Submucosal/intramural types; disrupted endometrium, impaired contractility"],
        ["Pain", "Dysmenorrhea, pelvic pressure, acute pain (degeneration/torsion)", "Ischemic necrosis, prostaglandin release"],
        ["Bulk / Pressure Symptoms", "Urinary frequency, urgency, constipation, bloating", "Compression of bladder/bowel by large myomas"],
        ["Iron-Deficiency Anemia", "Fatigue, pallor, exertional dyspnea", "Consequence of chronic HMB"],
        ["Reproductive Impact", "Infertility, recurrent pregnancy loss, preterm labor, PPH, fetal malpresentation", "Cavity distortion, impaired implantation"],
        ["Sexual Dysfunction", "Dyspareunia, reduced libido, body image concerns", "Pelvic pain, abdominal distension"],
        ["Urological", "Urinary retention (rare), hydronephrosis", "Cervical/lower uterine fibroids compressing ureters"],
    ]
    t = Table(sym_data, colWidths=[3.5*cm, 6.5*cm, 6.0*cm])
    t.setStyle(TableStyle([
        ('BACKGROUND', (0,0), (-1,0), PRIMARY),
        ('TEXTCOLOR', (0,0), (-1,0), WHITE),
        ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
        ('FONTSIZE', (0,0), (-1,-1), 9),
        ('ROWBACKGROUNDS', (0,1), (-1,-1), [ACCENT, WHITE]),
        ('VALIGN', (0,0), (-1,-1), 'TOP'),
        ('GRID', (0,0), (-1,-1), 0.3, GREY),
        ('TOPPADDING', (0,0), (-1,-1), 5),
        ('BOTTOMPADDING', (0,0), (-1,-1), 5),
        ('LEFTPADDING', (0,0), (-1,-1), 5),
        ('WORDWRAP', (0,0), (-1,-1), True),
    ]))
    story.append(t)
    story.append(Spacer(1, 8))
    story.append(highlight(
        "<b>Key clinical point:</b> HMB is the predominant symptom in 30% of symptomatic women. "
        "Iron-deficiency anemia secondary to HMB is a major contributor to impaired QoL and fatigue.",
        st
    ))
    story.append(PageBreak())

    # =========================================================
    # SLIDE 6: REPRODUCTIVE HEALTH & FERTILITY IMPACT
    # =========================================================
    story += slide_title_block("4. Impact on Reproductive Health & Fertility", st)
    story.append(section_box("Infertility", st))
    story.append(Spacer(1, 3))
    inf = [
        bullet_item("Fibroids account for <b>2-3% of infertility cases</b> as the sole cause; contributing factor in up to 10-40%", st),
        bullet_item("<b>Submucosal fibroids</b> have the strongest adverse effect: impair implantation, distort uterine cavity, alter endometrial receptivity", st),
        bullet_item("Intramural fibroids (>4-5 cm) reduce IVF success rates significantly; subserosal fibroids have minimal fertility impact (Alkhrait et al., Obstet Gynecol Clin NA 2023)", st),
        bullet_item("Proposed mechanisms: altered uterine contractility, reduced endometrial blood flow, mechanical obstruction of tubal ostia", st),
    ]
    for item in inf:
        story.append(item)
    story.append(Spacer(1, 6))
    story.append(section_box("Obstetric Complications (Creasy & Resnik's MFM)", st))
    story.append(Spacer(1, 3))
    obs = [
        bullet_item("<b>Spontaneous abortion:</b> 2-3 fold increased risk, particularly with submucosal or intracavitary fibroids", st),
        bullet_item("<b>Fetal malpresentation:</b> mechanical distortion of uterine cavity", st),
        bullet_item("<b>Uterine inertia:</b> impaired myometrial contractility during labor", st),
        bullet_item("<b>Placental abruption and preterm birth:</b> particularly with large or retroplacental fibroids", st),
        bullet_item("<b>Postpartum hemorrhage (PPH):</b> impaired uterine contraction; major maternal morbidity risk", st),
        bullet_item("Red degeneration (carneous degeneration) during pregnancy: acute severe pain, fever, leukocytosis", st),
    ]
    for item in obs:
        story.append(item)
    story.append(Spacer(1, 6))
    story.append(highlight(
        "Myomectomy before conception improves implantation rates for submucosal fibroids. "
        "Evidence for intramural fibroids is less definitive — individualized decision-making required.",
        st
    ))
    story.append(PageBreak())

    # =========================================================
    # SLIDE 7: QUALITY OF LIFE DOMAINS
    # =========================================================
    story += slide_title_block("5. Quality of Life (QoL) Domains — UFS-QoL Instrument", st)
    story.append(Paragraph(
        "The <b>Uterine Fibroid Symptom and QoL (UFS-QoL) questionnaire</b> is the validated tool for measuring "
        "fibroid-specific health-related QoL (HRQoL). It encompasses a Symptom Severity Score (SSS) and 6 HRQoL subscales.",
        st['body']
    ))
    story.append(Spacer(1, 6))
    qol_data = [
        ["UFS-QoL Domain", "Impact Observed in Key Studies"],
        ["Concern\n(fear, worry about condition)", "Worst-scoring domain: mean score 57.5 ± 26.7 (cross-sectional, n=301; Europ J OG 2018)"],
        ["Energy / Fatigue", "Mean score 58.1 ± 23.2; anemia-driven fatigue severely limits daily activities"],
        ["Self-consciousness\n(body image)", "Score 63.4 ± 24.3; abdominal distension and 'period shame' cause significant distress"],
        ["Activities of Daily Living", "64% of women report moderate-to-severe QoL impact; activities, travel, social plans restricted"],
        ["Mood / Emotional well-being", "Anxiety, depression, emotional lability; linked to unpredictable bleeding"],
        ["Sexual function", "Dyspareunia, reduced libido, avoidance of intimacy; often underreported"],
        ["Overall Well-Being", "Mean score 6.6/10 in symptomatic vs 7.3/10 in asymptomatic women"],
    ]
    t = Table(qol_data, colWidths=[5.0*cm, 11.0*cm])
    t.setStyle(TableStyle([
        ('BACKGROUND', (0,0), (-1,0), PRIMARY),
        ('TEXTCOLOR', (0,0), (-1,0), WHITE),
        ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
        ('FONTSIZE', (0,0), (-1,-1), 9),
        ('ROWBACKGROUNDS', (0,1), (-1,-1), [ACCENT, WHITE]),
        ('VALIGN', (0,0), (-1,-1), 'TOP'),
        ('GRID', (0,0), (-1,-1), 0.3, GREY),
        ('TOPPADDING', (0,0), (-1,-1), 5),
        ('BOTTOMPADDING', (0,0), (-1,-1), 5),
        ('LEFTPADDING', (0,0), (-1,-1), 5),
    ]))
    story.append(t)
    story.append(Spacer(1, 8))
    story.append(Paragraph(
        "<b>National survey finding:</b> 64% of women reported moderate-to-severe fibroid-related symptoms (SSS 40-100); "
        "64% reported moderate-to-very important impact on QoL (HRQL global score 0-50). "
        "Factors worsening QoL: menstrual features, multiparity, and obesity.",
        st['body']
    ))
    story.append(PageBreak())

    # =========================================================
    # SLIDE 8: PSYCHOLOGICAL & SOCIAL IMPACT
    # =========================================================
    story += slide_title_block("6. Psychological, Social & Sexual Impact", st)
    story.append(section_box("Mental Health Impact", st))
    story.append(Spacer(1, 3))
    psych = [
        bullet_item("Systematic review (Neumann et al., <i>Fertil Steril</i> 2024, 67 studies): <b>all treatment modalities</b> show significant pre-treatment mental health impairment with improvement post-treatment", st),
        bullet_item("<b>Depression and anxiety</b> are significantly elevated in symptomatic fibroid patients vs general population", st),
        bullet_item("<b>Fear</b> is a dominant emotion: 79% fear fibroid growth; 55% fear needing hysterectomy; fears about relationships, body image, loss of control, hopelessness (Mayo Clinic survey, ~1000 women)", st),
        bullet_item("Unpredictable HMB causes <b>anticipatory anxiety</b>, social withdrawal and avoidance behavior", st),
    ]
    for item in psych:
        story.append(item)
    story.append(Spacer(1, 6))
    story.append(section_box("Social & Sexual Impact", st))
    story.append(Spacer(1, 3))
    soc = [
        bullet_item("<b>Social isolation:</b> avoidance of social events, travel, and outdoor activities due to fear of uncontrolled bleeding", st),
        bullet_item("<b>Relationship strain:</b> partners report shared burden; sexual avoidance due to pain, bleeding, self-consciousness", st),
        bullet_item("<b>Delayed treatment-seeking:</b> women delay seeking care an average <b>3.6 years</b>; 32% wait >5 years (Mayo Clinic)", st),
        bullet_item("Stigma around menstruation perpetuates underreporting, particularly in South Asian and African populations", st),
        bullet_item("Disparity: Black women face greater burden yet report worse access to information and specialist care", st),
    ]
    for item in soc:
        story.append(item)
    story.append(Spacer(1, 6))
    story.append(highlight(
        "The psychological dimension is consistently <b>undertreated</b>. Routine screening for depression and anxiety "
        "should be integrated into fibroid management pathways.",
        st
    ))
    story.append(PageBreak())

    # =========================================================
    # SLIDE 9: ECONOMIC BURDEN & WORKPLACE IMPACT
    # =========================================================
    story += slide_title_block("7. Economic Burden & Workplace Impact", st)
    story.append(section_box("Direct Economic Costs (USA)", st))
    story.append(Spacer(1, 3))
    econ = [
        bullet_item("Annual direct healthcare costs estimated at <b>$4.1-9.4 billion</b> (hospitalization, surgery, outpatient management)", st),
        bullet_item("Total annual economic impact (direct + indirect): estimated <b>$34.4 billion</b> in the US", st),
        bullet_item("Fibroids are the <b>#1 indication for hysterectomy</b> in the US — 200,000+ hysterectomies/year", st),
        bullet_item("Significant costs of myomectomy, UAE, MRI-guided focused ultrasound, and pharmacotherapy", st),
    ]
    for item in econ:
        story.append(item)
    story.append(Spacer(1, 6))
    story.append(section_box("Workplace & Productivity Impact", st))
    story.append(Spacer(1, 3))
    work = [
        bullet_item("<b>66% of employed women</b> are concerned about missing work days due to symptoms", st),
        bullet_item("<b>24% report symptoms negatively affect workplace performance</b> (presenteeism)", st),
        bullet_item("HMB leads to missed schooldays and social events, particularly in adolescents", st),
        bullet_item("Loss of productivity (absenteeism + presenteeism) costs estimated at <b>$1.55 billion/year</b>", st),
        bullet_item("Women with fibroids report <b>higher rates of sick leave</b> than matched controls across studies", st),
    ]
    for item in work:
        story.append(item)
    story.append(Spacer(1, 6))
    story.append(Paragraph(
        "<b>Global burden projection (GBD 2025):</b> Age-standardized YLDs (years lived with disability) showed upward global trend "
        "(AAPC 0.09%); low-middle SDI regions bear the greatest projected future burden.",
        st['body']
    ))
    story.append(PageBreak())

    # =========================================================
    # SLIDE 10: INVESTIGATION & DIAGNOSIS
    # =========================================================
    story += slide_title_block("8. Investigation & Diagnosis", st)
    story.append(Paragraph(
        "Diagnosis is confirmed by imaging. History and examination guide which investigations are needed.",
        st['body']
    ))
    story.append(Spacer(1, 5))

    inv_data = [
        ["Investigation", "Role & Key Points"],
        ["Pelvic Ultrasound\n(TVUS + transabdominal)", "First-line. Detects, counts, and measures fibroids. TVUS superior for submucosal lesions. SALINE infusion sonography (SIS) best for intracavitary assessment."],
        ["MRI Pelvis", "Gold standard for complete fibroid mapping: size, number, location (FIGO subtype), vascular supply. Essential pre-UAE/pre-HIFU. Distinguishes fibroid from adenomyosis and leiomyosarcoma."],
        ["Full Blood Count (FBC)", "Iron-deficiency anemia from HMB — hemoglobin, MCV, serum ferritin"],
        ["Endometrial Biopsy", "Rule out endometrial pathology in women with AUB, especially >45 years or with risk factors"],
        ["Hysteroscopy", "Direct visualization of intracavitary lesions; therapeutic (myomectomy) in the same sitting for submucosal fibroids"],
        ["Laparoscopy", "Rarely needed for diagnosis alone; combined diagnostic-operative for surgical management"],
        ["Serum LH/FSH/Estradiol", "Assess hormonal status; LDH isoenzymes if leiomyosarcoma suspected (LDH3 elevated)"],
    ]
    t = Table(inv_data, colWidths=[4.2*cm, 11.8*cm])
    t.setStyle(TableStyle([
        ('BACKGROUND', (0,0), (-1,0), PRIMARY),
        ('TEXTCOLOR', (0,0), (-1,0), WHITE),
        ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
        ('FONTSIZE', (0,0), (-1,-1), 9),
        ('ROWBACKGROUNDS', (0,1), (-1,-1), [ACCENT, WHITE]),
        ('VALIGN', (0,0), (-1,-1), 'TOP'),
        ('GRID', (0,0), (-1,-1), 0.3, GREY),
        ('TOPPADDING', (0,0), (-1,-1), 5),
        ('BOTTOMPADDING', (0,0), (-1,-1), 5),
        ('LEFTPADDING', (0,0), (-1,-1), 5),
    ]))
    story.append(t)
    story.append(Spacer(1, 8))
    story.append(highlight(
        "<b>Red flags for leiomyosarcoma (rare, <0.5% of 'fibroids'):</b> "
        "Rapid growth, postmenopausal growth, irregular borders on MRI, elevated LDH — warrants urgent further evaluation.",
        st
    ))
    story.append(PageBreak())

    # =========================================================
    # SLIDE 11: MANAGEMENT OVERVIEW
    # =========================================================
    story += slide_title_block("9. Management Overview", st)
    story.append(Paragraph(
        "Management is individualized based on symptom severity, fibroid characteristics, fertility wishes, age, and patient preference.",
        st['body']
    ))
    story.append(Spacer(1, 5))
    mgmt_data = [
        ["Approach", "Options", "Best For"],
        ["Expectant\nManagement", "Watchful waiting, annual imaging", "Asymptomatic, perimenopausal"],
        ["Medical\nTherapy", "GnRH agonists (leuprolide), GnRH antagonists (elagolix, relugolix), levonorgestrel IUS, tranexamic acid, NSAIDs, combined OCP, ulipristal acetate", "Symptom control, pre-op shrinkage, fertility preservation desired"],
        ["Minimally\nInvasive", "Hysteroscopic myomectomy (Type 0-2), Radiofrequency ablation (Acessa), High-intensity focused ultrasound (HIFU/MRgFUS), Transcervical ablation", "Symptomatic submucosal/intramural, fertility-sparing, avoid surgery"],
        ["Uterine Artery\nEmbolization (UAE)", "Bilateral UAE via femoral/radial access", "Symptomatic, uterus preservation, completed childbearing or fertility not priority"],
        ["Surgical:\nMyomectomy", "Hysteroscopic, laparoscopic, robotic, or open abdominal myomectomy", "Symptomatic + fertility desired; first-line surgical option"],
        ["Surgical:\nHysterectomy", "Total/subtotal; laparoscopic, vaginal, or abdominal", "Definitive cure; completed family; failed conservative management"],
    ]
    t = Table(mgmt_data, colWidths=[3.0*cm, 7.5*cm, 5.5*cm])
    t.setStyle(TableStyle([
        ('BACKGROUND', (0,0), (-1,0), PRIMARY),
        ('TEXTCOLOR', (0,0), (-1,0), WHITE),
        ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
        ('FONTSIZE', (0,0), (-1,-1), 9),
        ('ROWBACKGROUNDS', (0,1), (-1,-1), [ACCENT, WHITE]),
        ('VALIGN', (0,0), (-1,-1), 'TOP'),
        ('GRID', (0,0), (-1,-1), 0.3, GREY),
        ('TOPPADDING', (0,0), (-1,-1), 5),
        ('BOTTOMPADDING', (0,0), (-1,-1), 5),
        ('LEFTPADDING', (0,0), (-1,-1), 5),
    ]))
    story.append(t)
    story.append(Spacer(1, 6))
    story.append(Paragraph(
        "<b>Preoperative medical therapy</b> (Cochrane Review, Puscasiu et al. 2025): GnRH analogues before surgery reduce uterine volume and blood loss, "
        "and facilitate minimally invasive approach. Combination with iron supplementation corrects pre-operative anemia.",
        st['body']
    ))
    story.append(PageBreak())

    # =========================================================
    # SLIDE 12: QoL OUTCOMES AFTER TREATMENT
    # =========================================================
    story += slide_title_block("10. QoL Outcomes Post-Treatment", st)
    story.append(Paragraph(
        "Systematic review by Neumann et al. (<i>Fertil Steril</i> 2024) — 67 studies (18 RCTs + 49 cohorts) — evaluated QoL and mental health "
        "outcomes after medical, surgical, and radiologic fibroid interventions.",
        st['body']
    ))
    story.append(Spacer(1, 6))

    out_data = [
        ["Treatment", "QoL Improvement", "Key Notes"],
        ["Hysterectomy", "Largest & most durable", "Definitive; highest satisfaction; eliminates AUB and bulk symptoms"],
        ["Myomectomy\n(open/lap/hysteroscopic)", "Significant improvement", "Preserves uterus; recurrence risk 15-30% at 5 years; fertility outcomes improved for submucosal type"],
        ["Uterine Artery\nEmbolization (UAE)", "Significant improvement", "Comparable to myomectomy for QoL; lower morbidity; recurrence 20-25% at 5 years; long-term QoL documented in African population (Kioko et al. 2024)"],
        ["HIFU/MRgFUS", "Significant improvement", "Non-invasive; outpatient; smaller volume fibroids; HIFU meta-analysis (Yan et al. 2022) confirms QoL gains"],
        ["Radiofrequency\nAblation", "Significant improvement", "AAGL systematic review (Chen et al. 2025): safe and effective with significant SSS and QoL improvement"],
        ["GnRH Analogues\n(medical)", "Moderate improvement", "Temporary; symptoms recur on cessation; bridge to surgery or for perimenopausal women"],
    ]
    t = Table(out_data, colWidths=[3.8*cm, 4.2*cm, 8.0*cm])
    t.setStyle(TableStyle([
        ('BACKGROUND', (0,0), (-1,0), PRIMARY),
        ('TEXTCOLOR', (0,0), (-1,0), WHITE),
        ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
        ('FONTSIZE', (0,0), (-1,-1), 9),
        ('ROWBACKGROUNDS', (0,1), (-1,-1), [ACCENT, WHITE]),
        ('VALIGN', (0,0), (-1,-1), 'TOP'),
        ('GRID', (0,0), (-1,-1), 0.3, GREY),
        ('TOPPADDING', (0,0), (-1,-1), 5),
        ('BOTTOMPADDING', (0,0), (-1,-1), 5),
        ('LEFTPADDING', (0,0), (-1,-1), 5),
    ]))
    story.append(t)
    story.append(Spacer(1, 6))
    story.append(highlight(
        "<b>Take-home:</b> All evidence-based interventions improve QoL and mental health. "
        "Choice of treatment should balance symptom relief, fertility desires, patient preference, and minimizing recurrence.",
        st
    ))
    story.append(PageBreak())

    # =========================================================
    # SLIDE 13: KEY MESSAGES & CONCLUSIONS
    # =========================================================
    story += slide_title_block("11. Key Messages & Conclusions", st)
    story.append(Spacer(1, 4))
    key_msgs = [
        ("1. Fibroids are ubiquitous but under-recognized",
         "Affect up to 80% of women by age 50; only ~30% symptomatic but QoL impact is profound and multidimensional."),
        ("2. HMB and its sequelae drive QoL impairment",
         "Iron-deficiency anemia, fatigue, and unpredictable bleeding restrict activities, social life, and work."),
        ("3. Reproductive impact is significant and location-dependent",
         "Submucosal fibroids have the greatest adverse effect on fertility and pregnancy outcomes."),
        ("4. Psychological and sexual health are often overlooked",
         "Routine screening for depression, anxiety, and sexual dysfunction should be part of every fibroid consultation."),
        ("5. Racial disparities demand equity-centred care",
         "Black women bear a disproportionate burden — earlier, more severe disease, greater QoL impact, and more limited access to care."),
        ("6. All treatments improve QoL",
         "Treatment selection should be individualized; the UFS-QoL questionnaire is a useful tool for monitoring response."),
        ("7. Treatment delay is a major problem",
         "Average 3.6-year delay to treatment; clinicians should proactively identify and address fibroids in young women."),
    ]
    for title, detail in key_msgs:
        story.append(Paragraph(f"\u25CF  <b>{title}</b>", st['bold_bullet']))
        story.append(Paragraph(f"     {detail}", st['sub_bullet']))
        story.append(Spacer(1, 3))
    story.append(Spacer(1, 8))
    story.append(highlight(
        '"Uterine fibroids are not just a gynecological diagnosis — they are a women\'s health crisis '
        'with physical, psychological, reproductive, social, and economic dimensions that demand "
        "comprehensive, compassionate, and equitable management."',
        st
    ))
    story.append(PageBreak())

    # =========================================================
    # SLIDE 14: REFERENCES
    # =========================================================
    story += slide_title_block("12. References", st)
    refs = [
        "1. Berek JS, ed. <i>Berek & Novak's Gynecology</i>, 16th ed. Wolters Kluwer; 2019.",
        "2. Creasy RK et al. <i>Creasy & Resnik's Maternal-Fetal Medicine</i>, 8th ed. Elsevier; 2022.",
        "3. Kumar V et al. <i>Robbins, Cotran & Kumar Pathologic Basis of Disease</i>, 10th ed. Elsevier; 2023.",
        "4. Neumann B, Singh B, Brennan J et al. The impact of fibroid treatments on quality of life and mental health: a systematic review. <i>Fertil Steril</i> 2024;121(3):408-422. PMID: 38246400.",
        "5. Yan L, Huang H, Lin J. High-intensity focused ultrasound treatment for symptomatic uterine fibroids: a systematic review and meta-analysis. <i>Int J Hyperthermia</i> 2022. PMID: 35094613.",
        "6. Singh S, Kumar P, Kavita. Contemporary approaches in the management of uterine leiomyomas. <i>Eur J Obstet Gynecol Reprod Biol</i> 2023. PMID: 37385088.",
        "7. Peng J, Wang J, Shu Q et al. Systematic review and meta-analysis of current evidence in UAE vs myomectomy for symptomatic uterine fibroids. <i>Sci Rep</i> 2024. PMID: 39164326.",
        "8. Chen I, Berman JM, Balk EM et al. Radiofrequency ablation for the treatment of uterine fibroids: a systematic review and meta-analysis by the AAGL practice committee. <i>J Minim Invasive Gynecol</i> 2025. PMID: 39277104.",
        "9. Puscasiu L, Vollenhoven B, Nagels HE et al. Preoperative medical therapy before surgery for uterine fibroids. <i>Cochrane Database Syst Rev</i> 2025. PMID: 40183418.",
        "10. Alkhrait S, Malasevskaia I, Madueke-Laveaux OS. Fibroids and fertility. <i>Obstet Gynecol Clin North Am</i> 2023;50(4):701-718. PMID: 37914486.",
        "11. Amendola ILS, Spann M, Segars J. The Mediator complex subunit 12 (MED-12) gene and uterine fibroids: a systematic review. <i>Reprod Sci</i> 2024. PMID: 37516697.",
        "12. Global, regional and national uterine fibroid burdens from 1990 to 2021 and projections until 2050: results from the GBD study. <i>BMC Women's Health</i> 2025. DOI: 10.1186/s12905-025-03974-y.",
        "13. Giuliani E, As-Sanie S, Marsh EE. Epidemiology and management of uterine fibroids. <i>Int J Gynaecol Obstet</i> 2020;149:3-9.",
        "14. Larivee N et al. Impact of uterine fibroids on quality of life: a national cross-sectional survey. <i>Eur J Obstet Gynecol Reprod Biol</i> 2018;229:32-37. PMID: 30099225.",
        "15. Marsh EE et al. Racial disparities in the burden of uterine fibroids. <i>Am J Obstet Gynecol</i> (Mayo Clinic Survey).",
    ]
    ref_style = ParagraphStyle(
        'RefStyle', fontName='Helvetica', fontSize=8.5,
        textColor=DARK_TEXT, leading=13, leftIndent=18, firstLineIndent=-18,
        spaceBefore=4, spaceAfter=1
    )
    for ref in refs:
        story.append(Paragraph(ref, ref_style))
    story.append(Spacer(1, 10))
    story.append(divider())
    story.append(Paragraph(
        "<i>This presentation was prepared for gynecology residency education. Clinical decisions should be based on "
        "current guidelines, individual patient assessment, and institutional protocols. May 2026.</i>",
        st['footnote']
    ))

    doc.build(story)
    print(f"PDF created: {output_path}")

if __name__ == "__main__":
    output = "/home/daytona/workspace/uterine-fibroids-presentation/Uterine_Fibroids_Impact_QoL_Gynec_Residents.pdf"
    build_pdf(output)
Running Command

cd /home/daytona/workspace/uterine-fibroids-presentation && python3 build_presentation.py 2>&1

Editing File

~/uterine-fibroids-presentation/build_presentation.py

Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/uterine-fibroids-presentation/build_presentation.py'
Running Command

cd /home/daytona/workspace/uterine-fibroids-presentation && python3 build_presentation.py 2>&1

Running Command

ls -lh /home/daytona/workspace/uterine-fibroids-presentation/Uterine_Fibroids_Impact_QoL_Gynec_Residents.pdf

Your PDF presentation is ready!

Uterine Fibroids Impact QoL Gynec Residents

PDF Document · PDF


What's Inside (14 slides)

#Slide Title
1Cover - with 4 headline statistics
2Presentation Overview - table of contents
3Definition, Classification & Epidemiology - FIGO 0-8 subtype table, GBD 2025 burden data
4Pathogenesis & Risk Factors - MED12, HMGA2, hormonal drivers; modifiable vs non-modifiable table
5Clinical Manifestations - 7-domain symptom table (HMB, pain, bulk, anemia, reproductive, sexual, urological)
6Reproductive Health & Fertility - infertility mechanisms, obstetric complications (Creasy & Resnik MFM)
7Quality of Life Domains - UFS-QoL instrument; subscale scores from published studies
8Psychological, Social & Sexual Impact - fear data (Mayo Clinic 1000-women survey), treatment delay
9Economic Burden & Workplace Impact - $34.4B annual US burden, 66% worried about missed work
10Investigation & Diagnosis - TVUS/MRI/SIS roles, red flags for leiomyosarcoma
11Management Overview - expectant, medical, minimally invasive, UAE, myomectomy, hysterectomy
12QoL Outcomes Post-Treatment - Neumann et al. 2024 (Fertil Steril, 67 studies) - all modalities compared
13Key Messages & Conclusions - 7 take-home points
14References - 15 sources (textbooks + recent systematic reviews 2022-2025)
Key sources used: Berek & Novak's Gynecology, Robbins Pathology (10th ed.), Creasy & Resnik MFM, plus 10 recent PubMed systematic reviews and meta-analyses (2022-2025) including the GBD 2025 global burden analysis.
This is a shared conversation. Sign in to Orris to start your own chat.