Conference Topics: Rebuilding the base: pelvic floor rehabilitation in cervical cancer survivorship - identify the professional presentation for 90 mins
"cervical cancer" AND "pelvic floor" AND rehabilitation
pelvic floor rehabilitation cervical cancer survivorship radiation vaginal stenosis pelvic floor dysfunction management
pelvic floor muscle anatomy diagram female

This medical illustration is a graphical simulation of myofascial referred pain patterns associated with the adductor magnus muscle, presented on a female body schematic in anterior and posterior views. The diagram uses red color mapping to indicate pain distribution and frequency. In the anterior view, primary referred pain is depicted as intense, vertical red bands along the bilateral medial thighs, extending from the groin to the superior aspect of the knees. Faint red patches and 'X' markers on the lateral and superior thighs indicate areas of less frequent or secondary referred pain. In the posterior view, the simulation identifies a significant referred pain area on the superior-medial aspect of the right calf. The color intensity serves as a semi-quantitative scale, where more vibrant red highlights common clinical trigger point referral zones. This educational visual is designed for physical therapy, anatomy education, and clinical diagnostic training related to musculoskeletal pain syndromes and pelvic floor dysfunction.

This composite educational image illustrates the pelvic floor and anal canal anatomy and its clinical relevance in rectal cancer staging. Panel (a) is an anatomical diagram depicting the coronal view of the anal canal, highlighting the levator ani, puborectalis muscle, external sphincter, and internal sphincter, with a dashed line marking the intersphincteric plane. Panel (b) is a coronal T2-weighted MRI showing a cT3a rectal tumor in a male patient. An arrow indicates irregular wall thickening with minimal (±1 mm) perirectal extension invading the right internal anal sphincter. Panel (c) is a coronal T2-weighted MRI of a female patient with a cT4b rectal tumor. The tumor (outlined by a dashed line) shows extensive infiltration, invading both internal sphincters and extending into the external sphincter, levator ani, and puborectalis muscles on the left side. Muscles and sphincters appear characteristically hypointense on T2 imaging, while the tumor presents as an intermediate-signal mass disrupting normal anatomical boundaries, essential for determining surgical management such as abdominoperineal resection.
| Time | Segment | Content |
|---|---|---|
| 0:00-0:05 | Welcome & framing | Hook case vignette: survivor 18 months post-chemoradiation presenting with dyspareunia, urgency, and pelvic pain. Return to her case at the end. |
| 0:05-0:20 | Block 1: The problem — burden and mechanisms | Epidemiology of PFD in cervical cancer survivors; treatment-specific injury mechanisms (radical hysterectomy nerve/fascial disruption, pelvic radiation fibrosis, brachytherapy vaginal effects, lymphedema) |
| 0:20-0:40 | Block 2: Assessment | Symptom domains (urinary, bowel, sexual, pain, prolapse); validated tools; internal/external exam findings specific to post-radiation tissue; red flags requiring onward referral (fistula, recurrence, severe stenosis) |
| 0:40-0:65 | Block 3: Rehabilitation toolkit | PFMT (strengthening vs. down-training for hypertonicity), biofeedback, vaginal dilator therapy protocols, manual therapy/myofascial release, pain neuroscience education, lubricant/moisturizer and hormonal adjuncts, graded sexual rehabilitation, bowel/bladder retraining |
| 0:65-0:80 | Block 4: Building the pathway | Timing of referral (pre-habilitation vs. post-treatment), multidisciplinary model (PT, gyn-onc, sexual health, psychology), barriers (embarrassment, access, clinician awareness), case-based small-group discussion |
| 0:80-0:88 | Case resolution + evidence synthesis | Return to opening case with a management plan built live from audience input; summarize evidence strength |
| 0:88-0:90 | Key takeaways + Q&A transition | 3 top-line messages; open floor |
prepare presentation ppt - professional Remedial Through Pelvic Floor Physical Therapy
mkdir -p /tmp/workspace/cervical-cancer-pfr-presentation && ls -la /tmp/workspace/
cat /tmp/skills/pptx/python-pptx.md | sed -n '80,260p'
~/cervical-cancer-pfr-presentation/build_ppt.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.enum.shapes import MSO_SHAPE
from pptx.oxml.ns import qn
import copy
# ---------- Theme ----------
NAVY = RGBColor(0x1B, 0x3A, 0x4B)
TEAL = RGBColor(0x2E, 0x86, 0x8C)
CORAL = RGBColor(0xE8, 0x6A, 0x5C)
LIGHT = RGBColor(0xF4, 0xF7, 0xF7)
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
GREY = RGBColor(0x55, 0x5F, 0x61)
GOLD = RGBColor(0xD8, 0xA4, 0x3D)
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
BLANK = prs.slide_layouts[6]
SW, SH = prs.slide_width, prs.slide_height
def add_slide():
return prs.slides.add_slide(BLANK)
def set_bg(slide, color=WHITE):
bg = slide.background
bg.fill.solid()
bg.fill.fore_color.rgb = color
def add_rect(slide, x, y, w, h, color, line=False):
shp = slide.shapes.add_shape(MSO_SHAPE.RECTANGLE, x, y, w, h)
shp.fill.solid()
shp.fill.fore_color.rgb = color
if line:
shp.line.color.rgb = color
else:
shp.line.fill.background()
shp.shadow.inherit = False
return shp
def add_text(slide, x, y, w, h, text, size=18, color=NAVY, bold=False, italic=False,
align=PP_ALIGN.LEFT, font="Calibri", anchor=MSO_ANCHOR.TOP, line_spacing=1.0):
tb = slide.shapes.add_textbox(x, y, w, h)
tf = tb.text_frame
tf.word_wrap = True
tf.vertical_anchor = anchor
tf.margin_left = 0
tf.margin_right = 0
tf.margin_top = 0
tf.margin_bottom = 0
lines = text.split("\n")
for i, line in enumerate(lines):
p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
p.text = line
p.alignment = align
p.line_spacing = line_spacing
for r in p.runs:
r.font.size = Pt(size)
r.font.bold = bold
r.font.italic = italic
r.font.color.rgb = color
r.font.name = font
return tb
def add_bullets(slide, x, y, w, h, items, size=15, color=GREY, bold_first=False,
bullet_color=TEAL, font="Calibri", space_after=8, line_spacing=1.08):
tb = slide.shapes.add_textbox(x, y, w, h)
tf = tb.text_frame
tf.word_wrap = True
tf.margin_left = 0
tf.margin_right = 0
for i, item in enumerate(items):
if isinstance(item, tuple):
txt, lvl = item
else:
txt, lvl = item, 0
p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
p.space_after = Pt(space_after)
p.line_spacing = line_spacing
marker = "— " if lvl > 0 else "• "
r = p.add_run()
r.text = marker
r.font.size = Pt(size)
r.font.color.rgb = bullet_color if lvl == 0 else GOLD
r.font.bold = True
r.font.name = font
r2 = p.add_run()
r2.text = txt
r2.font.size = Pt(size)
r2.font.color.rgb = color
r2.font.name = font
p.level = 0
if lvl > 0:
pPr = p._pPr
tb2 = slide.shapes[-1] # not used further
# indent visually via left margin per-paragraph
pPr = p._p.get_or_add_pPr()
pPr.set('marL', str(Emu(Inches(0.28 * lvl)).emu if False else int(Inches(0.28*lvl))))
pPr.set('indent', '0')
return tb
def header(slide, kicker, title, num, total=16):
add_rect(slide, 0, 0, SW, Inches(1.35), NAVY)
add_rect(slide, 0, Inches(1.35), SW, Pt(3), CORAL)
add_text(slide, Inches(0.55), Inches(0.18), Inches(8), Inches(0.35), kicker.upper(),
size=12.5, color=GOLD, bold=True)
add_text(slide, Inches(0.55), Inches(0.5), Inches(11.5), Inches(0.8), title,
size=27, color=WHITE, bold=True)
add_text(slide, Inches(12.15), Inches(0.18), Inches(0.9), Inches(0.4), f"{num:02d}",
size=16, color=WHITE, bold=True, align=PP_ALIGN.RIGHT)
add_text(slide, Inches(0.55), Inches(7.12), Inches(8), Inches(0.3),
"Rebuilding the Base | Pelvic Floor Rehabilitation in Cervical Cancer Survivorship",
size=9.5, color=GREY, italic=True)
add_text(slide, Inches(11.9), Inches(7.12), Inches(1.0), Inches(0.3), f"{num}/{total}",
size=9.5, color=GREY, align=PP_ALIGN.RIGHT)
def footer_note(slide, text):
add_text(slide, Inches(0.55), Inches(6.7), Inches(12.2), Inches(0.4), text,
size=10.5, color=GREY, italic=True)
TOTAL = 16
# ============================================================
# SLIDE 1 — TITLE
# ============================================================
s = add_slide(); set_bg(s, NAVY)
add_rect(s, 0, Inches(4.7), SW, Inches(2.8), TEAL)
add_rect(s, 0, Inches(4.66), SW, Pt(4), CORAL)
add_text(s, Inches(0.9), Inches(1.35), Inches(11.5), Inches(0.5), "CONFERENCE SESSION · 90 MINUTES",
size=15, color=GOLD, bold=True)
add_text(s, Inches(0.9), Inches(1.9), Inches(11.6), Inches(1.8), "Rebuilding the Base",
size=54, color=WHITE, bold=True)
add_text(s, Inches(0.9), Inches(3.05), Inches(11.6), Inches(1.0),
"Remedial Care Through Pelvic Floor Physical Therapy in\nCervical Cancer Survivorship",
size=24, color=WHITE, bold=False, line_spacing=1.1)
add_text(s, Inches(0.9), Inches(5.05), Inches(11.4), Inches(0.5),
"A multidisciplinary clinical program for gyn-oncology, radiation oncology,\npelvic health physiotherapy, and oncology nursing",
size=14.5, color=WHITE, line_spacing=1.2)
add_text(s, Inches(0.9), Inches(6.6), Inches(11.4), Inches(0.5),
"Presenter Name · Credentials · Institution · Conference / Date", size=13, color=RGBColor(0xDD,0xE7,0xE8))
# ============================================================
# SLIDE 2 — AGENDA
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Session Roadmap", "90-Minute Agenda", 2, TOTAL)
agenda = [
("0:00–0:05", "Welcome & Framing Case", "Opening survivor vignette used throughout the session"),
("0:05–0:20", "The Problem", "Burden, prevalence, and mechanisms of pelvic floor dysfunction"),
("0:20–0:40", "Assessment", "Symptom domains, exam adaptations, red flags for referral"),
("0:40–0:65", "Remedial Toolkit", "PFMT, biofeedback, dilator therapy, manual therapy, adjuncts"),
("0:65–0:80", "Building the Pathway", "Referral timing, multidisciplinary model, case discussion"),
("0:80–0:90", "Case Resolution & Takeaways", "Live care plan, key messages, Q&A"),
]
y = Inches(1.65)
row_h = Inches(0.85)
for i, (t, title, desc) in enumerate(agenda):
ypos = y + i * row_h
add_rect(s, Inches(0.55), ypos + Inches(0.07), Inches(1.7), Inches(0.62), TEAL if i % 2 == 0 else NAVY)
add_text(s, Inches(0.55), ypos + Inches(0.07), Inches(1.7), Inches(0.62), t, size=13, color=WHITE,
bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
add_text(s, Inches(2.45), ypos, Inches(3.2), Inches(0.75), title, size=15.5, color=NAVY, bold=True,
anchor=MSO_ANCHOR.MIDDLE)
add_text(s, Inches(5.8), ypos, Inches(6.9), Inches(0.75), desc, size=13, color=GREY,
anchor=MSO_ANCHOR.MIDDLE)
# ============================================================
# SLIDE 3 — LEARNING OBJECTIVES
# ============================================================
s = add_slide(); set_bg(s)
header(s, "By the end of this session", "Learning Objectives", 3, TOTAL)
objs = [
"Describe the mechanisms and prevalence of pelvic floor dysfunction (PFD) after cervical cancer treatment (surgery, radiotherapy, brachytherapy, chemotherapy).",
"Apply a structured, trauma-informed assessment framework for PFD at survivorship follow-up visits.",
"Select evidence-based remedial interventions — pelvic floor muscle training, biofeedback, dilator therapy, manual therapy — matched to hypertonic vs. hypotonic presentations.",
"Integrate pelvic floor physical therapy into a multidisciplinary cervical cancer survivorship care pathway.",
]
for i, o in enumerate(objs):
ypos = Inches(1.75) + i * Inches(1.15)
circ = s.shapes.add_shape(MSO_SHAPE.OVAL, Inches(0.6), ypos, Inches(0.6), Inches(0.6))
circ.fill.solid(); circ.fill.fore_color.rgb = CORAL; circ.line.fill.background(); circ.shadow.inherit=False
add_text(s, Inches(0.6), ypos, Inches(0.6), Inches(0.6), str(i+1), size=20, color=WHITE, bold=True,
align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
add_text(s, Inches(1.55), ypos - Inches(0.05), Inches(11.0), Inches(1.0), o, size=15.5, color=NAVY,
anchor=MSO_ANCHOR.MIDDLE, line_spacing=1.1)
# ============================================================
# SLIDE 4 — OPENING CASE
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Framing Case — Return to This at the Close", "Meet Our Patient", 4, TOTAL)
add_rect(s, Inches(0.55), Inches(1.7), Inches(5.6), Inches(4.9), LIGHT)
add_rect(s, Inches(0.55), Inches(1.7), Inches(0.12), Inches(4.9), CORAL)
add_text(s, Inches(0.95), Inches(1.95), Inches(4.9), Inches(0.5), "CASE VIGNETTE", size=13, color=CORAL, bold=True)
add_bullets(s, Inches(0.95), Inches(2.4), Inches(4.9), Inches(4.0), [
"38-year-old woman, 18 months post chemoradiation + brachytherapy for stage IIB cervical cancer",
"Presents to survivorship clinic reporting dyspareunia, vaginal tightness, pelvic pain, and urinary urgency",
"Has not resumed sexual activity since treatment; reports anxiety about intimacy",
"No prior pelvic floor assessment since completing treatment",
], size=14.5)
add_rect(s, Inches(6.5), Inches(1.7), Inches(6.25), Inches(4.9), TEAL)
add_text(s, Inches(6.85), Inches(1.95), Inches(5.6), Inches(0.5), "DISCUSSION PROMPT", size=13, color=GOLD, bold=True)
add_text(s, Inches(6.85), Inches(2.5), Inches(5.6), Inches(3.9),
"What would happen to this patient in your clinic today?\n\n"
"• Would PFD be screened for at this visit?\n"
"• Who would she be referred to, and how quickly?\n"
"• What would a first pelvic floor PT visit look like?\n\n"
"Hold your answer — we will build her plan together\nat the end of this session.",
size=15, color=WHITE, line_spacing=1.25)
# ============================================================
# SLIDE 5 — THE PROBLEM: BURDEN
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Block 1 · The Problem", "Burden & Prevalence", 5, TOTAL)
stats = [
("↑", "Substantially elevated rates of urinary, bowel,\nand sexual dysfunction vs. general population", TEAL),
("~60%", "of cervical cancer patients report vaginal\nstenosis or vaginal dryness after treatment", CORAL),
("3", "major treatment pathways that independently\ndamage pelvic floor structures: surgery, radiation, chemo", NAVY),
]
xw = Inches(3.95)
for i, (big, small, col) in enumerate(stats):
x = Inches(0.55) + i * Inches(4.15)
add_rect(s, x, Inches(1.8), xw, Inches(2.7), col)
add_text(s, x, Inches(2.0), xw, Inches(1.1), big, size=44, color=WHITE, bold=True, align=PP_ALIGN.CENTER)
add_text(s, x + Inches(0.25), Inches(3.15), xw - Inches(0.5), Inches(1.2), small, size=13.5, color=WHITE,
align=PP_ALIGN.CENTER, line_spacing=1.15)
add_text(s, Inches(0.55), Inches(4.85), Inches(12.2), Inches(1.6),
"Cervical cancer survivors carry a disproportionate long-term burden of pelvic floor dysfunction (PFD) "
"compared with age-matched peers. PFD is frequently under-recognized in routine oncology follow-up "
"because screening questions about urinary, bowel, and sexual symptoms are not consistently asked.",
size=14.5, color=GREY, line_spacing=1.25)
footer_note(s, "Shan X, Qian M, Wang L. Prevalence of pelvic floor dysfunction and sexual dysfunction in cervical cancer survivors: a systematic review and meta-analysis. Int Urogynecol J. 2023. PMID 36001098.")
# ============================================================
# SLIDE 6 — MECHANISMS OF INJURY
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Block 1 · The Problem", "Mechanisms of Injury", 6, TOTAL)
mech = [
("Radical Hysterectomy", "Autonomic (hypogastric/pelvic plexus) nerve injury → bladder hypotonia, constipation. Fascial and levator disruption → weakness."),
("Pelvic Radiotherapy & Brachytherapy", "Progressive fibrosis and microvascular injury → vaginal shortening/stenosis, dryness, tissue hypertonicity and guarding."),
("Chemotherapy", "Mucosal atrophy and treatment-related fatigue compound sexual dysfunction and reduce engagement in rehabilitation."),
("Psychosocial Layer", "Body image change, fear of recurrence, and relationship strain — PFD here is biopsychosocial, not purely mechanical."),
]
for i, (t, d) in enumerate(mech):
col = i % 2; row = i // 2
x = Inches(0.55) + col * Inches(6.25)
ypos = Inches(1.7) + row * Inches(2.55)
add_rect(s, x, ypos, Inches(5.9), Inches(2.3), LIGHT)
add_rect(s, x, ypos, Inches(5.9), Inches(0.55), TEAL)
add_text(s, x + Inches(0.25), ypos, Inches(5.4), Inches(0.55), t, size=15, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_text(s, x + Inches(0.25), ypos + Inches(0.7), Inches(5.4), Inches(1.5), d, size=13, color=GREY, line_spacing=1.2)
# ============================================================
# SLIDE 7 — ASSESSMENT FRAMEWORK
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Block 2 · Assessment", "A Structured Assessment Framework", 7, TOTAL)
domains = ["Urinary", "Anorectal", "Sexual", "Pain / Musculoskeletal"]
for i, d in enumerate(domains):
x = Inches(0.55) + i * Inches(3.08)
add_rect(s, x, Inches(1.7), Inches(2.85), Inches(0.75), NAVY)
add_text(s, x, Inches(1.7), Inches(2.85), Inches(0.75), d, size=15, color=WHITE, bold=True,
align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, Inches(0.55), Inches(2.75), Inches(6.0), Inches(3.6), [
"Structured symptom review across all four domains at every survivorship visit",
"Exam adaptations for irradiated tissue: gentle single-digit exam first",
"Assess for stenosis, adhesions, trophic changes, trigger points",
"Differentiate hypertonic (guarding) vs. hypotonic (weak) pelvic floor — this changes the entire treatment plan",
], size=14.5)
add_rect(s, Inches(6.85), Inches(2.75), Inches(5.9), Inches(3.7), CORAL)
add_text(s, Inches(7.15), Inches(2.95), Inches(5.3), Inches(0.5), "RED FLAGS — REFER OUT FIRST", size=14, color=WHITE, bold=True)
add_bullets(s, Inches(7.15), Inches(3.5), Inches(5.3), Inches(2.8), [
"New pain or bleeding → recurrence workup before starting PT",
"Suspected fistula → surgical / gyn-oncology referral, not pelvic floor therapy first",
"Severe, progressive stenosis unresponsive to conservative care → gyn-onc review",
], size=14, color=WHITE, bullet_color=WHITE)
# ============================================================
# SLIDE 8 — REMEDIAL TOOLKIT OVERVIEW (transition/section slide)
# ============================================================
s = add_slide(); set_bg(s, TEAL)
add_rect(s, 0, Inches(3.1), SW, Inches(1.3), NAVY)
add_text(s, Inches(0.8), Inches(1.1), Inches(11.5), Inches(0.5), "BLOCK 3", size=16, color=GOLD, bold=True)
add_text(s, Inches(0.8), Inches(1.6), Inches(11.7), Inches(1.4), "Remedial Care Through\nPelvic Floor Physical Therapy",
size=38, color=WHITE, bold=True, line_spacing=1.05)
add_text(s, Inches(0.8), Inches(3.35), Inches(11.5), Inches(0.7), "The clinical core of this session — 25 minutes",
size=17, color=WHITE, italic=True)
add_bullets(s, Inches(0.8), Inches(4.7), Inches(11.5), Inches(2.3), [
"Pelvic floor muscle training (strengthening vs. down-training)",
"Biofeedback-guided retraining",
"Vaginal dilator therapy protocols",
"Manual therapy, myofascial release & pain neuroscience education",
"Adjunct therapies: lubricants, hormonal support, psychological care",
], size=16, color=WHITE, bullet_color=GOLD)
# ============================================================
# SLIDE 9 — PFMT: STRENGTHEN VS DOWN-TRAIN
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Remedial Toolkit", "Pelvic Floor Muscle Training: Matching the Presentation", 9, TOTAL)
add_text(s, Inches(0.55), Inches(1.6), Inches(12.2), Inches(0.5),
"\"More Kegels\" is not always correct. Direction of training depends on tone, not diagnosis alone.",
size=15, color=GREY, italic=True)
cols = [
("Hypotonic / Weak Presentation", TEAL, [
"Typically post-surgical nerve/fascial disruption",
"Graded strengthening (Kegel-based) protocols",
"Progressive endurance and power training",
"Functional integration: bracing with cough, lifting, exertion",
]),
("Hypertonic / Guarded Presentation", CORAL, [
"Typically post-radiation fibrosis and pain-driven guarding",
"Down-training and relaxation strategies first",
"Diaphragmatic breathing paired with pelvic floor release",
"Avoid aggressive strengthening until guarding resolves",
]),
]
for i, (t, col, items) in enumerate(cols):
x = Inches(0.55) + i * Inches(6.25)
add_rect(s, x, Inches(2.25), Inches(5.9), Inches(4.2), LIGHT)
add_rect(s, x, Inches(2.25), Inches(5.9), Inches(0.65), col)
add_text(s, x + Inches(0.25), Inches(2.25), Inches(5.4), Inches(0.65), t, size=15.5, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, x + Inches(0.3), Inches(3.1), Inches(5.3), Inches(3.2), items, size=13.5, bullet_color=col)
# ============================================================
# SLIDE 10 — BIOFEEDBACK & DILATOR THERAPY
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Remedial Toolkit", "Biofeedback & Graded Dilator Therapy", 10, TOTAL)
add_rect(s, Inches(0.55), Inches(1.7), Inches(5.9), Inches(4.9), LIGHT)
add_rect(s, Inches(0.55), Inches(1.7), Inches(5.9), Inches(0.6), NAVY)
add_text(s, Inches(0.85), Inches(1.7), Inches(5.3), Inches(0.6), "BIOFEEDBACK-GUIDED RETRAINING", size=14.5, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, Inches(0.85), Inches(2.55), Inches(5.3), Inches(3.9), [
"Surface EMG or manometric feedback teaches patients to both contract and fully relax the pelvic floor",
"Especially valuable for hypertonic presentations where patients cannot perceive their own guarding",
"Low-risk, non-invasive, well tolerated — supported as first-line by systematic review of reviews evidence",
"Reinforces home exercise adherence with objective visual/audio feedback",
], size=14)
add_rect(s, Inches(6.85), Inches(1.7), Inches(5.9), Inches(4.9), LIGHT)
add_rect(s, Inches(6.85), Inches(1.7), Inches(5.9), Inches(0.6), NAVY)
add_text(s, Inches(7.15), Inches(1.7), Inches(5.3), Inches(0.6), "VAGINAL DILATOR THERAPY", size=14.5, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, Inches(7.15), Inches(2.55), Inches(5.3), Inches(3.9), [
"Start early, ideally introduced before or immediately after radiotherapy completion",
"Graded sizing protocol combined with pelvic floor exercises improves vaginal length, muscle strength, and quality of life",
"Consistency matters more than intensity — brief, regular use outperforms sporadic use",
"Address adherence barriers with compassionate, direct counseling; normalize the tool clinically",
], size=14)
footer_note(s, "Devan Moy N, Simarro González MC. Rehabilitación. 2025 (PMID 39765163); Barcellini A et al., 2022 — dilator + PFMT program improved vaginal length, strength, HRQoL.")
# ============================================================
# SLIDE 11 — MANUAL THERAPY & PAIN NEUROSCIENCE
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Remedial Toolkit", "Manual Therapy & Pain Neuroscience Education", 11, TOTAL)
add_bullets(s, Inches(0.55), Inches(1.8), Inches(6.0), Inches(4.6), [
"Internal and external myofascial release for scar tissue, adhesions, and trigger points",
"Connective tissue mobilization along irradiated fields to address fibrosis",
"Joint and soft-tissue mobilization for compensatory musculoskeletal pain (hip, low back)",
"Progression paced to tissue tolerance — irradiated tissue heals and responds differently than non-irradiated tissue",
], size=15, bullet_color=TEAL)
add_rect(s, Inches(6.85), Inches(1.8), Inches(5.9), Inches(4.6), NAVY)
add_text(s, Inches(7.15), Inches(2.0), Inches(5.3), Inches(0.5), "PAIN NEUROSCIENCE EDUCATION", size=14.5, color=GOLD, bold=True)
add_bullets(s, Inches(7.15), Inches(2.6), Inches(5.3), Inches(3.6), [
"Reframe pain as a sensitized nervous system response, not solely ongoing tissue damage",
"Reduces fear-avoidance behaviors around intimacy and movement",
"Combine with mindfulness-based strategies for anxiety around resuming sexual activity",
"Delivered collaboratively — physical therapist, psychology, and sexual health specialist",
], size=14, color=WHITE, bullet_color=GOLD)
# ============================================================
# SLIDE 12 — ADJUNCT THERAPIES
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Remedial Toolkit", "Adjunct Therapies", 12, TOTAL)
adj = [
("Topical & Hormonal Support", "Vaginal moisturizers/lubricants for dryness; local estrogen where oncologically appropriate — a shared decision with gyn-oncology."),
("Bowel & Bladder Retraining", "Urgency suppression strategies, timed voiding, dietary fiber and fluid coaching for post-radiation bowel symptoms."),
("Graded Sexual Rehabilitation", "Stepwise return to intimacy: non-penetrative touch, dilator progression, communication coaching with partner."),
("Psychological Support", "Screening for distress, body image concerns, and relationship strain; referral to psycho-oncology or sex therapy as needed."),
]
for i, (t, d) in enumerate(adj):
col = i % 2; row = i // 2
x = Inches(0.55) + col * Inches(6.25)
ypos = Inches(1.7) + row * Inches(2.55)
add_rect(s, x, ypos, Inches(5.9), Inches(2.3), LIGHT)
circ = s.shapes.add_shape(MSO_SHAPE.OVAL, x + Inches(0.25), ypos + Inches(0.25), Inches(0.5), Inches(0.5))
circ.fill.solid(); circ.fill.fore_color.rgb = CORAL; circ.line.fill.background(); circ.shadow.inherit=False
add_text(s, x + Inches(0.95), ypos + Inches(0.2), Inches(4.8), Inches(0.6), t, size=15, color=NAVY, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_text(s, x + Inches(0.25), ypos + Inches(0.95), Inches(5.4), Inches(1.25), d, size=12.5, color=GREY, line_spacing=1.2)
# ============================================================
# SLIDE 13 — EVIDENCE SUMMARY
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Evidence Base", "What the Current Literature Shows", 13, TOTAL)
tbl_rows = [
["Study", "Design", "Key Finding"],
["Shan et al., 2023 (PMID 36001098)", "Systematic Review & Meta-Analysis", "Elevated prevalence of PFD & sexual dysfunction in cervical cancer survivors"],
["Hao et al., 2024 (PMID 39581933)", "Umbrella Review", "Pelvic floor rehab benefits survivorship outcomes; protocols remain heterogeneous"],
["Ye et al., 2024 (PMID 38294706)", "Review", "Staged PT interventions effective for stenosis and PFD in gynecologic malignancy"],
["Tim & Mazur-Bialy, 2023 (PMID 39491091)", "Systematic Review", "Physiotherapy improves PFD outcomes after gynecologic oncology surgery"],
["Devan Moy & Simarro González, 2025 (PMID 39765163)", "Systematic Review of Reviews", "Biofeedback & exercise therapy support as first-line, low-risk interventions"],
]
rows, cols = len(tbl_rows), 3
tbl_shape = s.shapes.add_table(rows, cols, Inches(0.55), Inches(1.65), Inches(12.2), Inches(4.9))
table = tbl_shape.table
table.columns[0].width = Inches(3.6)
table.columns[1].width = Inches(2.9)
table.columns[2].width = Inches(5.7)
for c in range(cols):
cell = table.cell(0, c)
cell.fill.solid(); cell.fill.fore_color.rgb = NAVY
cell.text_frame.paragraphs[0].text = tbl_rows[0][c]
run = cell.text_frame.paragraphs[0].runs[0]
run.font.bold = True; run.font.color.rgb = WHITE; run.font.size = Pt(13)
for r in range(1, rows):
for c in range(cols):
cell = table.cell(r, c)
cell.fill.solid()
cell.fill.fore_color.rgb = LIGHT if r % 2 == 0 else WHITE
cell.text_frame.word_wrap = True
cell.text_frame.paragraphs[0].text = tbl_rows[r][c]
run = cell.text_frame.paragraphs[0].runs[0]
run.font.size = Pt(11.5); run.font.color.rgb = GREY
if c == 0:
run.font.bold = True; run.font.color.rgb = NAVY
cell.vertical_anchor = MSO_ANCHOR.MIDDLE
cell.margin_top = Pt(4); cell.margin_bottom = Pt(4)
# ============================================================
# SLIDE 14 — BUILDING THE CARE PATHWAY
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Block 4 · Building the Pathway", "A Multidisciplinary Referral Pathway", 14, TOTAL)
steps = ["Diagnosis &\nPre-Treatment\nCounseling", "Prehabilitation\nDiscussion", "Active\nOncologic\nTreatment", "Survivorship\nVisit (6–8 wks):\nRoutine PFD\nScreening", "Pelvic Health\nPT Referral —\nDefault, Not\nOpt-In"]
n = len(steps)
box_w = Inches(2.15); gap = Inches(0.35)
total_w = n*box_w + (n-1)*gap
start_x = (SW - total_w)/2
for i, st in enumerate(steps):
x = start_x + i*(box_w+gap)
col = TEAL if i % 2 == 0 else NAVY
add_rect(s, x, Inches(2.3), box_w, Inches(1.7), col)
add_text(s, x + Inches(0.1), Inches(2.3), box_w - Inches(0.2), Inches(1.7), st, size=12.5, color=WHITE,
bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE, line_spacing=1.1)
if i < n-1:
arrow = s.shapes.add_shape(MSO_SHAPE.RIGHT_ARROW, x + box_w, Inches(2.95), gap, Inches(0.4))
arrow.fill.solid(); arrow.fill.fore_color.rgb = CORAL; arrow.line.fill.background(); arrow.shadow.inherit=False
add_rect(s, Inches(0.55), Inches(4.5), Inches(12.2), Inches(2.1), LIGHT)
add_text(s, Inches(0.85), Inches(4.7), Inches(11.6), Inches(0.4), "WHY REFERRAL RATES REMAIN LOW", size=13.5, color=CORAL, bold=True)
add_bullets(s, Inches(0.85), Inches(5.15), Inches(11.6), Inches(1.4), [
"Clinician discomfort initiating conversations about sexual health",
"Patient embarrassment or assumption that symptoms are simply \"expected\" after cancer treatment",
"Limited access to pelvic health-trained physical therapists in some regions",
"No routine, structured PFD screening question built into standard follow-up visits",
], size=13)
# ============================================================
# SLIDE 15 — CASE RESOLUTION & TAKEAWAYS
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Bringing It Together", "Case Resolution & Key Takeaways", 15, TOTAL)
add_rect(s, Inches(0.55), Inches(1.7), Inches(5.9), Inches(4.9), LIGHT)
add_text(s, Inches(0.85), Inches(1.9), Inches(5.3), Inches(0.4), "HER CARE PLAN", size=14, color=TEAL, bold=True)
add_bullets(s, Inches(0.85), Inches(2.4), Inches(5.3), Inches(4.0), [
"Exam expected to reveal a hypertonic, guarded pelvic floor given her radiation history",
"Begin with pain neuroscience education and diaphragmatic down-training, not strengthening",
"Introduce graded vaginal dilator protocol alongside manual myofascial release",
"Add biofeedback to build body awareness and reduce guarding",
"Loop back to gyn-oncology promptly if stenosis is severe or unresponsive",
], size=13.5)
add_rect(s, Inches(6.85), Inches(1.7), Inches(5.9), Inches(4.9), NAVY)
add_text(s, Inches(7.15), Inches(1.9), Inches(5.3), Inches(0.4), "THREE TAKEAWAYS", size=14, color=GOLD, bold=True)
add_bullets(s, Inches(7.15), Inches(2.5), Inches(5.3), Inches(4.0), [
"PFD after cervical cancer treatment is common and under-screened — not rare or trivial",
"Treatment must be tailored to hypertonic vs. hypotonic presentation, not generic pelvic floor exercises",
"Early, structured, multidisciplinary rehabilitation improves quality of life outcomes",
], size=14.5, color=WHITE, bullet_color=GOLD)
# ============================================================
# SLIDE 16 — THANK YOU / Q&A
# ============================================================
s = add_slide(); set_bg(s, NAVY)
add_rect(s, 0, Inches(3.0), SW, Pt(4), CORAL)
add_text(s, Inches(0.9), Inches(2.6), Inches(11.5), Inches(1.0), "Thank You", size=48, color=WHITE, bold=True)
add_text(s, Inches(0.9), Inches(3.5), Inches(11.5), Inches(0.6), "Questions & Discussion", size=22, color=GOLD, italic=True)
add_text(s, Inches(0.9), Inches(5.0), Inches(11.5), Inches(1.4),
"Contact: presenter@institution.org\nSlides and reference list available on request",
size=15, color=RGBColor(0xDD,0xE7,0xE8), line_spacing=1.4)
prs.save("/tmp/workspace/cervical-cancer-pfr-presentation/Rebuilding_the_Base_Pelvic_Floor_PT.pptx")
print("SAVED OK")
cd /tmp/workspace/cervical-cancer-pfr-presentation && python build_ppt.py
cd /tmp/workspace/cervical-cancer-pfr-presentation && python3 -c " from pptx import Presentation prs = Presentation('Rebuilding_the_Base_Pelvic_Floor_PT.pptx') print('Slides:', len(prs.slides.__iter__.__self__._sldIdLst)) " ; ls -la /tmp/workspace/cervical-cancer-pfr-presentation/
Rebuilding the Base Pelvic Floor PT
Presentation · PPTX