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
Add speaker notes to each slide for delivery prep
~/cervical-cancer-pfr-presentation/add_notes.py
from pptx import Presentation
PATH = "/tmp/workspace/cervical-cancer-pfr-presentation/Rebuilding_the_Base_Pelvic_Floor_PT.pptx"
prs = Presentation(PATH)
notes = {
1: """[0:00–0:02] WELCOME
Thank the organizers and welcome the room. State the session title and the 90-minute format up front so attendees know what to expect.
Say: "Over the next 90 minutes we're going to rebuild a foundation that's easy to overlook after cervical cancer treatment — the pelvic floor. This is a clinical, practical session aimed at anyone touching survivorship care: gyn-onc, radiation onc, pelvic health PT, and oncology nursing."
Introduce yourself briefly — name, credentials, current role, and why this topic matters to your practice.
Transition: "Before we dive in, let's look at the agenda so you know where we're headed."''",
2: """[0:02–0:05] AGENDA WALKTHROUGH
Walk through the six blocks at a high level — don't linger, this is orientation only (60–90 seconds total).
Flag the two things attendees should pay closest attention to: the Remedial Toolkit block (the clinical core, 25 minutes) and the case we'll open and close with.
Say: "We'll open with a real case, work through the problem and assessment, spend the biggest chunk of time on the actual toolkit you can use Monday morning, then talk about building referral pathways, and close by resolving that opening case together."
Mention timing flexibility: "I'll keep an eye on the clock, but I want this to be a conversation, not just slides at you."
Transition into learning objectives.""",
3: """[0:05–0:07] LEARNING OBJECTIVES
Read through the four objectives at a normal pace — these set the contract for what attendees should walk away with.
Emphasize objective 3 verbally: "This one is the crux of the whole talk — matching intervention to presentation, not defaulting to generic pelvic floor exercises for everyone."
Optional audience check-in: ask by show of hands who currently has a pelvic health PT they refer to routinely — this primes Block 4 discussion later and helps you gauge the room's baseline.
Transition: "Let's ground this in a real patient before we get into the data."''",
4: """[0:07–0:10] OPENING CASE
Read the case slowly and let it land — this patient is deliberately realistic and slightly uncomfortable, which is the point.
Ask the discussion prompt out loud and pause for a few seconds of silence before taking 1–2 quick verbal responses from the room. Do not resolve the case yet.
Say: "Hold onto your answer. We are going to come back to her at the very end of this session and build her actual care plan together using everything we cover."
Note for delivery: if the room is quiet, that's expected and fine — the silence itself often makes the point about how uncomfortable these conversations are for clinicians too.
Transition: "So how common is what she's experiencing? Let's look at the data."''",
5: """[0:10–0:15] BURDEN & PREVALENCE
Walk through the three stat cards left to right. Don't just read the numbers — translate them: "Up to 60% is not a rare complication footnote, it is closer to the norm for this population."
Make the key point explicit: PFD is under-recognized because screening questions about urinary, bowel, and sexual symptoms are not consistently asked at routine oncology follow-up. This is the central "why this talk matters" moment.
Cite the source verbally: Shan et al. 2023 systematic review and meta-analysis, International Urogynecology Journal — mention PMID is on the slide for anyone taking notes.
Transition: "So why is this happening at such high rates? It comes down to three distinct mechanisms of injury."''",
6: """[0:15–0:20] MECHANISMS OF INJURY
Go through each of the four boxes in order — surgery, radiation, chemo, then the psychosocial layer. Spend the most time on radiation since it's the mechanism most likely to be under-appreciated by non-radiation-oncology attendees.
Key teaching point for radiation box: fibrosis and microvascular injury don't just cause weakness — they often cause tissue guarding and hypertonicity, which is counterintuitive to clinicians who assume cancer treatment always causes weakness.
Don't skip the psychosocial box — explicitly say "PFD in this population is biopsychosocial, not purely mechanical" since this reframes the rest of the talk.
Transition: "Given these different mechanisms, we need a structured way to actually assess what's going on for each patient."''",
7: """[0:20–0:30] ASSESSMENT FRAMEWORK
Walk through the four symptom domains first — urinary, anorectal, sexual, pain/musculoskeletal — and stress these should be screened at every survivorship visit, not just when a patient volunteers a complaint.
Cover the exam adaptation bullets next: gentle single-digit exam first for irradiated tissue, and the critical differentiation of hypertonic vs. hypotonic presentation — tell the room this distinction is the single most clinically important decision point in this entire talk.
Spend real time on the red flags box (coral, right side) — this is a safety-critical slide. Be explicit: "If you take one thing from this slide, it's this: new pain or bleeding gets a recurrence workup before pelvic floor therapy starts. Don't let rehab delay an oncologic evaluation."
Transition: "Once we've assessed and ruled out red flags, here's the actual toolkit."''",
8: """[0:30–0:32] SECTION DIVIDER — REMEDIAL TOOLKIT
This is a pacing/energy slide — use it to reset the room's attention before the densest clinical content. Stand, move, change your tone.
Say: "This next 25 minutes is the part you can use in clinic starting next week. I'm going to go through five tools, when to use each one, and how to match them to the patient in front of you."
Briefly preview the five bullets without going deep yet — that's what the next four slides are for.
If you have a physical dilator set or biofeedback device available, this is the moment to hold it up or mention "I have one here to pass around" for hands-on engagement.""",
9: """[0:32–0:39] PFMT — MATCHING THE PRESENTATION
Open with the header line verbatim: "More Kegels is not always correct — this is the single most common mistake in this space." Let that land before splitting into the two columns.
Walk the LEFT (teal) hypotonic column first — this is the "expected" pattern most clinicians already know: post-surgical weakness, graded strengthening, functional integration with cough/lifting.
Walk the RIGHT (coral) hypertonic column second and slow down here — this is the pattern most rooms are less familiar with: post-radiation guarding, where down-training and breathing work must come BEFORE any strengthening. Emphasize: "If you start strengthening a guarded, hypertonic pelvic floor, you can make pain worse."
Practical delivery tip: ask the room "who here has been taught to just prescribe Kegels regardless of presentation?" — this usually gets some honest hands up and sets up the rest of the toolkit slides well.""",
10: """[0:39–0:46] BIOFEEDBACK & DILATOR THERAPY
Left card (biofeedback): explain surface EMG/manometric feedback in plain terms — patients often cannot feel their own guarding, and biofeedback makes the invisible visible. Mention it's low-risk and well tolerated, citing the systematic review of reviews (Devan Moy & Simarro González, 2025).
Right card (dilators): this is often the most sensitive topic in the room — deliver it matter-of-factly and clinically, no hedging. Key clinical pearls to say out loud: start EARLY (ideally before or immediately after radiotherapy completion, not months later when stenosis is established), and consistency of brief regular use beats sporadic intense use.
Address the adherence barrier directly: "Patients are often embarrassed to ask about this, and clinicians are often uncomfortable prescribing it. Normalize it the way you'd normalize a post-op walking program."
Cite Barcellini et al. 2022 verbally for the combined dilator + PFMT outcome data (vaginal length, strength, HRQoL improvements).
Transition: "Beyond exercise and dilators, manual therapy and pain science play a big role too."''",
11: """[0:46–0:51] MANUAL THERAPY & PAIN NEUROSCIENCE EDUCATION
Left side (manual therapy): emphasize that irradiated tissue behaves differently than non-irradiated tissue — healing timelines and tolerance to mobilization are different, so progression must be paced conservatively.
Right side (pain neuroscience education, navy box): this is a mindset-shift slide. Explain the core reframe simply: ongoing pain after tissue has healed is often a sensitized nervous system, not ongoing damage — and teaching patients this reduces fear-avoidance around intimacy and movement.
Stress the collaborative delivery point: this isn't PT working alone — ideally delivered alongside psychology and sexual health specialists.
Transition: "Rehabilitation doesn't stop at the pelvic floor itself — there are important adjuncts too."''",
12: """[0:51–0:56] ADJUNCT THERAPIES
Move through the four cards briskly — these are supportive, not standalone, interventions.
On topical/hormonal support, flag explicitly that local estrogen decisions must be a shared decision with gyn-oncology given oncologic considerations — don't let the room think PT prescribes this independently.
On graded sexual rehabilitation, normalize the stepwise language (non-penetrative touch before dilator progression) — this reduces pressure and fear for patients resuming intimacy.
On psychological support, mention that distress screening should be routine, not reserved for patients who self-report severe symptoms — many will not volunteer this unprompted.
Transition: "So we have the evidence and the tools — let's look at what the current literature actually supports."''",
13: """[0:56–1:00] EVIDENCE SUMMARY TABLE
Don't read the table row by row verbatim — attendees can read it themselves. Instead, synthesize: "Across a meta-analysis, an umbrella review, and multiple systematic reviews published in the last two to three years, the signal is consistent: pelvic floor rehabilitation improves outcomes in this population, though protocol standardization is still catching up to the demand."
Flag the one caveat honestly: study heterogeneity (Hao et al. 2024) means we don't yet have one universally standardized protocol — acknowledge this rather than overselling certainty.
Mention this slide doubles as a reference/handout slide — tell attendees a copy of citations will be available so they don't need to transcribe PMIDs during the talk.
Transition: "Good evidence only helps patients if it reaches them — so let's talk about the referral pathway."''",
14: """[1:00–1:13] BUILDING THE REFERRAL PATHWAY
Walk the five-step pathway left to right like a story: diagnosis and counseling, prehabilitation discussion, active treatment, then the critical pivot point — the survivorship visit with routine PFD screening — leading to PT referral as the DEFAULT, not something the patient has to ask for.
Emphasize the word "default" out loud: "The goal is that pelvic floor PT referral happens automatically at that survivorship visit, the same way we'd automatically order routine post-treatment imaging — not something reserved for the patient who happens to bring it up."
Move to the barriers box and invite real discussion here — this is a good spot for a 3–5 minute small-group or open-floor discussion prompt: "In your setting, at what point does a survivor first get asked about sexual or pelvic floor symptoms, and what would move that conversation earlier?"
Manage time carefully here — this is the most discussion-heavy slide and easiest place to run over. Give a 1-minute warning before moving on.""",
15: """[1:13–1:23] CASE RESOLUTION & TAKEAWAYS
Return explicitly to the Slide 4 patient: "Remember our patient — 18 months out, dyspareunia, tightness, urinary urgency, hasn't resumed intimacy. Let's build her plan using what we just covered."
Walk the left card as a narrated clinical reasoning exercise, not just a bullet read: explain WHY each step follows from her radiation history (hypertonic presentation expected → down-training and pain science BEFORE strengthening → dilator progression paired with manual therapy → biofeedback for body awareness → clear escalation criteria back to gyn-onc).
Land the three takeaways slowly and let each one sit for a beat — these are the sentences you want attendees repeating to colleagues afterward. Consider reading them essentially verbatim as written since they're intentionally quotable.
Transition: "That's the clinical content — happy to take questions now."''",
16: """[1:23–1:30] THANK YOU / Q&A
Thank the audience and organizers again. Open the floor for questions.
Have 2–3 anticipated questions ready to seed discussion if the room is slow to start, e.g.: "How do you find a qualified pelvic health PT in a smaller/rural practice?", "How soon after radiotherapy completion should dilator therapy actually start?", "How do you approach this conversation with patients who are visibly uncomfortable discussing sexual health?"
Confirm how attendees can reach you and how slides/references will be shared (update the placeholder contact info before presenting).
Close on time — if questions are still going, offer to continue informally after the session ends so the room isn't held hostage to the clock.""",
}
for idx, slide in enumerate(prs.slides, start=1):
text = notes.get(idx, "")
if not text:
continue
notes_slide = slide.notes_slide # creates one if not present
notes_slide.notes_text_frame.text = text
prs.save(PATH)
print("Notes added to", len(notes), "slides")
~/cervical-cancer-pfr-presentation/add_notes.py
from pptx import Presentation
PATH = "/tmp/workspace/cervical-cancer-pfr-presentation/Rebuilding_the_Base_Pelvic_Floor_PT.pptx"
prs = Presentation(PATH)
notes = {}
notes[1] = """[0:00-0:02] WELCOME
Thank the organizers and welcome the room. State the session title and the 90-minute format up front so attendees know what to expect.
Say: "Over the next 90 minutes we're going to rebuild a foundation that's easy to overlook after cervical cancer treatment - the pelvic floor. This is a clinical, practical session aimed at anyone touching survivorship care: gyn-onc, radiation onc, pelvic health PT, and oncology nursing."
Introduce yourself briefly - name, credentials, current role, and why this topic matters to your practice.
Transition: "Before we dive in, let's look at the agenda so you know where we're headed."
"""
notes[2] = """[0:02-0:05] AGENDA WALKTHROUGH
Walk through the six blocks at a high level - don't linger, this is orientation only (60-90 seconds total).
Flag the two things attendees should pay closest attention to: the Remedial Toolkit block (the clinical core, 25 minutes) and the case we'll open and close with.
Say: "We'll open with a real case, work through the problem and assessment, spend the biggest chunk of time on the actual toolkit you can use Monday morning, then talk about building referral pathways, and close by resolving that opening case together."
Mention timing flexibility: "I'll keep an eye on the clock, but I want this to be a conversation, not just slides at you."
Transition into learning objectives.
"""
notes[3] = """[0:05-0:07] LEARNING OBJECTIVES
Read through the four objectives at a normal pace - these set the contract for what attendees should walk away with.
Emphasize objective 3 verbally: "This one is the crux of the whole talk - matching intervention to presentation, not defaulting to generic pelvic floor exercises for everyone."
Optional audience check-in: ask by show of hands who currently has a pelvic health PT they refer to routinely - this primes Block 4 discussion later and helps you gauge the room's baseline.
Transition: "Let's ground this in a real patient before we get into the data."
"""
notes[4] = """[0:07-0:10] OPENING CASE
Read the case slowly and let it land - this patient is deliberately realistic and slightly uncomfortable, which is the point.
Ask the discussion prompt out loud and pause for a few seconds of silence before taking 1-2 quick verbal responses from the room. Do not resolve the case yet.
Say: "Hold onto your answer. We are going to come back to her at the very end of this session and build her actual care plan together using everything we cover."
Note for delivery: if the room is quiet, that's expected and fine - the silence itself often makes the point about how uncomfortable these conversations are for clinicians too.
Transition: "So how common is what she's experiencing? Let's look at the data."
"""
notes[5] = """[0:10-0:15] BURDEN AND PREVALENCE
Walk through the three stat cards left to right. Don't just read the numbers - translate them: "Up to 60 percent is not a rare complication footnote, it is closer to the norm for this population."
Make the key point explicit: PFD is under-recognized because screening questions about urinary, bowel, and sexual symptoms are not consistently asked at routine oncology follow-up. This is the central "why this talk matters" moment.
Cite the source verbally: Shan et al. 2023 systematic review and meta-analysis, International Urogynecology Journal - mention the PMID is on the slide for anyone taking notes.
Transition: "So why is this happening at such high rates? It comes down to three distinct mechanisms of injury."
"""
notes[6] = """[0:15-0:20] MECHANISMS OF INJURY
Go through each of the four boxes in order - surgery, radiation, chemo, then the psychosocial layer. Spend the most time on radiation since it's the mechanism most likely to be under-appreciated by non-radiation-oncology attendees.
Key teaching point for the radiation box: fibrosis and microvascular injury don't just cause weakness - they often cause tissue guarding and hypertonicity, which is counterintuitive to clinicians who assume cancer treatment always causes weakness.
Don't skip the psychosocial box - explicitly say "PFD in this population is biopsychosocial, not purely mechanical" since this reframes the rest of the talk.
Transition: "Given these different mechanisms, we need a structured way to actually assess what's going on for each patient."
"""
notes[7] = """[0:20-0:30] ASSESSMENT FRAMEWORK
Walk through the four symptom domains first - urinary, anorectal, sexual, pain/musculoskeletal - and stress these should be screened at every survivorship visit, not just when a patient volunteers a complaint.
Cover the exam adaptation bullets next: gentle single-digit exam first for irradiated tissue, and the critical differentiation of hypertonic vs. hypotonic presentation - tell the room this distinction is the single most clinically important decision point in this entire talk.
Spend real time on the red flags box (coral, right side) - this is a safety-critical slide. Be explicit: "If you take one thing from this slide, it's this: new pain or bleeding gets a recurrence workup before pelvic floor therapy starts. Don't let rehab delay an oncologic evaluation."
Transition: "Once we've assessed and ruled out red flags, here's the actual toolkit."
"""
notes[8] = """[0:30-0:32] SECTION DIVIDER - REMEDIAL TOOLKIT
This is a pacing/energy slide - use it to reset the room's attention before the densest clinical content. Stand, move, change your tone.
Say: "This next 25 minutes is the part you can use in clinic starting next week. I'm going to go through five tools, when to use each one, and how to match them to the patient in front of you."
Briefly preview the five bullets without going deep yet - that's what the next four slides are for.
If you have a physical dilator set or biofeedback device available, this is the moment to hold it up or mention "I have one here to pass around" for hands-on engagement.
"""
notes[9] = """[0:32-0:39] PFMT - MATCHING THE PRESENTATION
Open with the header line verbatim: "More Kegels is not always correct - this is the single most common mistake in this space." Let that land before splitting into the two columns.
Walk the LEFT (teal) hypotonic column first - this is the "expected" pattern most clinicians already know: post-surgical weakness, graded strengthening, functional integration with cough/lifting.
Walk the RIGHT (coral) hypertonic column second and slow down here - this is the pattern most rooms are less familiar with: post-radiation guarding, where down-training and breathing work must come BEFORE any strengthening. Emphasize: "If you start strengthening a guarded, hypertonic pelvic floor, you can make pain worse."
Practical delivery tip: ask the room "who here has been taught to just prescribe Kegels regardless of presentation?" - this usually gets some honest hands up and sets up the rest of the toolkit slides well.
"""
notes[10] = """[0:39-0:46] BIOFEEDBACK AND DILATOR THERAPY
Left card (biofeedback): explain surface EMG/manometric feedback in plain terms - patients often cannot feel their own guarding, and biofeedback makes the invisible visible. Mention it's low-risk and well tolerated, citing the systematic review of reviews (Devan Moy and Simarro Gonzalez, 2025).
Right card (dilators): this is often the most sensitive topic in the room - deliver it matter-of-factly and clinically, no hedging. Key clinical pearls to say out loud: start EARLY (ideally before or immediately after radiotherapy completion, not months later when stenosis is established), and consistency of brief regular use beats sporadic intense use.
Address the adherence barrier directly: "Patients are often embarrassed to ask about this, and clinicians are often uncomfortable prescribing it. Normalize it the way you'd normalize a post-op walking program."
Cite Barcellini et al. 2022 verbally for the combined dilator plus PFMT outcome data (vaginal length, strength, HRQoL improvements).
Transition: "Beyond exercise and dilators, manual therapy and pain science play a big role too."
"""
notes[11] = """[0:46-0:51] MANUAL THERAPY AND PAIN NEUROSCIENCE EDUCATION
Left side (manual therapy): emphasize that irradiated tissue behaves differently than non-irradiated tissue - healing timelines and tolerance to mobilization are different, so progression must be paced conservatively.
Right side (pain neuroscience education, navy box): this is a mindset-shift slide. Explain the core reframe simply: ongoing pain after tissue has healed is often a sensitized nervous system, not ongoing damage - and teaching patients this reduces fear-avoidance around intimacy and movement.
Stress the collaborative delivery point: this isn't PT working alone - ideally delivered alongside psychology and sexual health specialists.
Transition: "Rehabilitation doesn't stop at the pelvic floor itself - there are important adjuncts too."
"""
notes[12] = """[0:51-0:56] ADJUNCT THERAPIES
Move through the four cards briskly - these are supportive, not standalone, interventions.
On topical/hormonal support, flag explicitly that local estrogen decisions must be a shared decision with gyn-oncology given oncologic considerations - don't let the room think PT prescribes this independently.
On graded sexual rehabilitation, normalize the stepwise language (non-penetrative touch before dilator progression) - this reduces pressure and fear for patients resuming intimacy.
On psychological support, mention that distress screening should be routine, not reserved for patients who self-report severe symptoms - many will not volunteer this unprompted.
Transition: "So we have the evidence and the tools - let's look at what the current literature actually supports."
"""
notes[13] = """[0:56-1:00] EVIDENCE SUMMARY TABLE
Don't read the table row by row verbatim - attendees can read it themselves. Instead, synthesize: "Across a meta-analysis, an umbrella review, and multiple systematic reviews published in the last two to three years, the signal is consistent: pelvic floor rehabilitation improves outcomes in this population, though protocol standardization is still catching up to the demand."
Flag the one caveat honestly: study heterogeneity (Hao et al. 2024) means we don't yet have one universally standardized protocol - acknowledge this rather than overselling certainty.
Mention this slide doubles as a reference/handout slide - tell attendees a copy of citations will be available so they don't need to transcribe PMIDs during the talk.
Transition: "Good evidence only helps patients if it reaches them - so let's talk about the referral pathway."
"""
notes[14] = """[1:00-1:13] BUILDING THE REFERRAL PATHWAY
Walk the five-step pathway left to right like a story: diagnosis and counseling, prehabilitation discussion, active treatment, then the critical pivot point - the survivorship visit with routine PFD screening - leading to PT referral as the DEFAULT, not something the patient has to ask for.
Emphasize the word "default" out loud: "The goal is that pelvic floor PT referral happens automatically at that survivorship visit, the same way we'd automatically order routine post-treatment imaging - not something reserved for the patient who happens to bring it up."
Move to the barriers box and invite real discussion here - this is a good spot for a 3-5 minute small-group or open-floor discussion prompt: "In your setting, at what point does a survivor first get asked about sexual or pelvic floor symptoms, and what would move that conversation earlier?"
Manage time carefully here - this is the most discussion-heavy slide and easiest place to run over. Give a 1-minute warning before moving on.
"""
notes[15] = """[1:13-1:23] CASE RESOLUTION AND TAKEAWAYS
Return explicitly to the Slide 4 patient: "Remember our patient - 18 months out, dyspareunia, tightness, urinary urgency, hasn't resumed intimacy. Let's build her plan using what we just covered."
Walk the left card as a narrated clinical reasoning exercise, not just a bullet read: explain WHY each step follows from her radiation history (hypertonic presentation expected, so down-training and pain science BEFORE strengthening, dilator progression paired with manual therapy, biofeedback for body awareness, clear escalation criteria back to gyn-onc).
Land the three takeaways slowly and let each one sit for a beat - these are the sentences you want attendees repeating to colleagues afterward. Consider reading them essentially verbatim as written since they're intentionally quotable.
Transition: "That's the clinical content - happy to take questions now."
"""
notes[16] = """[1:23-1:30] THANK YOU AND Q&A
Thank the audience and organizers again. Open the floor for questions.
Have 2-3 anticipated questions ready to seed discussion if the room is slow to start, e.g.: "How do you find a qualified pelvic health PT in a smaller or rural practice?", "How soon after radiotherapy completion should dilator therapy actually start?", "How do you approach this conversation with patients who are visibly uncomfortable discussing sexual health?"
Confirm how attendees can reach you and how slides/references will be shared (update the placeholder contact info before presenting).
Close on time - if questions are still going, offer to continue informally after the session ends so the room isn't held hostage to the clock.
"""
for idx, slide in enumerate(prs.slides, start=1):
text = notes.get(idx, "")
if not text:
continue
notes_slide = slide.notes_slide # creates one if not present
notes_slide.notes_text_frame.text = text
prs.save(PATH)
print("Notes added to", len(notes), "slides")
rm -f /tmp/workspace/cervical-cancer-pfr-presentation/add_notes.py
~/cervical-cancer-pfr-presentation/add_notes.py
from pptx import Presentation
PATH = "/tmp/workspace/cervical-cancer-pfr-presentation/Rebuilding_the_Base_Pelvic_Floor_PT.pptx"
prs = Presentation(PATH)
notes = {}
notes[1] = """[0:00-0:02] WELCOME
Thank the organizers and welcome the room. State the session title and the 90-minute format up front so attendees know what to expect.
Say: "Over the next 90 minutes we're going to rebuild a foundation that's easy to overlook after cervical cancer treatment - the pelvic floor. This is a clinical, practical session aimed at anyone touching survivorship care: gyn-onc, radiation onc, pelvic health PT, and oncology nursing."
Introduce yourself briefly - name, credentials, current role, and why this topic matters to your practice.
Transition: "Before we dive in, let's look at the agenda so you know where we're headed."
"""
notes[2] = """[0:02-0:05] AGENDA WALKTHROUGH
Walk through the six blocks at a high level - don't linger, this is orientation only (60-90 seconds total).
Flag the two things attendees should pay closest attention to: the Remedial Toolkit block (the clinical core, 25 minutes) and the case we'll open and close with.
Say: "We'll open with a real case, work through the problem and assessment, spend the biggest chunk of time on the actual toolkit you can use Monday morning, then talk about building referral pathways, and close by resolving that opening case together."
Mention timing flexibility: "I'll keep an eye on the clock, but I want this to be a conversation, not just slides at you."
Transition into learning objectives.
"""
notes[3] = """[0:05-0:07] LEARNING OBJECTIVES
Read through the four objectives at a normal pace - these set the contract for what attendees should walk away with.
Emphasize objective 3 verbally: "This one is the crux of the whole talk - matching intervention to presentation, not defaulting to generic pelvic floor exercises for everyone."
Optional audience check-in: ask by show of hands who currently has a pelvic health PT they refer to routinely - this primes Block 4 discussion later and helps you gauge the room's baseline.
Transition: "Let's ground this in a real patient before we get into the data."
"""
notes[4] = """[0:07-0:10] OPENING CASE
Read the case slowly and let it land - this patient is deliberately realistic and slightly uncomfortable, which is the point.
Ask the discussion prompt out loud and pause for a few seconds of silence before taking 1-2 quick verbal responses from the room. Do not resolve the case yet.
Say: "Hold onto your answer. We are going to come back to her at the very end of this session and build her actual care plan together using everything we cover."
Note for delivery: if the room is quiet, that's expected and fine - the silence itself often makes the point about how uncomfortable these conversations are for clinicians too.
Transition: "So how common is what she's experiencing? Let's look at the data."
"""
notes[5] = """[0:10-0:15] BURDEN AND PREVALENCE
Walk through the three stat cards left to right. Don't just read the numbers - translate them: "Up to 60 percent is not a rare complication footnote, it is closer to the norm for this population."
Make the key point explicit: PFD is under-recognized because screening questions about urinary, bowel, and sexual symptoms are not consistently asked at routine oncology follow-up. This is the central "why this talk matters" moment.
Cite the source verbally: Shan et al. 2023 systematic review and meta-analysis, International Urogynecology Journal - mention the PMID is on the slide for anyone taking notes.
Transition: "So why is this happening at such high rates? It comes down to three distinct mechanisms of injury."
"""
notes[6] = """[0:15-0:20] MECHANISMS OF INJURY
Go through each of the four boxes in order - surgery, radiation, chemo, then the psychosocial layer. Spend the most time on radiation since it's the mechanism most likely to be under-appreciated by non-radiation-oncology attendees.
Key teaching point for the radiation box: fibrosis and microvascular injury don't just cause weakness - they often cause tissue guarding and hypertonicity, which is counterintuitive to clinicians who assume cancer treatment always causes weakness.
Don't skip the psychosocial box - explicitly say "PFD in this population is biopsychosocial, not purely mechanical" since this reframes the rest of the talk.
Transition: "Given these different mechanisms, we need a structured way to actually assess what's going on for each patient."
"""
notes[7] = """[0:20-0:30] ASSESSMENT FRAMEWORK
Walk through the four symptom domains first - urinary, anorectal, sexual, pain/musculoskeletal - and stress these should be screened at every survivorship visit, not just when a patient volunteers a complaint.
Cover the exam adaptation bullets next: gentle single-digit exam first for irradiated tissue, and the critical differentiation of hypertonic vs. hypotonic presentation - tell the room this distinction is the single most clinically important decision point in this entire talk.
Spend real time on the red flags box (coral, right side) - this is a safety-critical slide. Be explicit: "If you take one thing from this slide, it's this: new pain or bleeding gets a recurrence workup before pelvic floor therapy starts. Don't let rehab delay an oncologic evaluation."
Transition: "Once we've assessed and ruled out red flags, here's the actual toolkit."
"""
notes[8] = """[0:30-0:32] SECTION DIVIDER - REMEDIAL TOOLKIT
This is a pacing/energy slide - use it to reset the room's attention before the densest clinical content. Stand, move, change your tone.
Say: "This next 25 minutes is the part you can use in clinic starting next week. I'm going to go through five tools, when to use each one, and how to match them to the patient in front of you."
Briefly preview the five bullets without going deep yet - that's what the next four slides are for.
If you have a physical dilator set or biofeedback device available, this is the moment to hold it up or mention "I have one here to pass around" for hands-on engagement.
"""
notes[9] = """[0:32-0:39] PFMT - MATCHING THE PRESENTATION
Open with the header line verbatim: "More Kegels is not always correct - this is the single most common mistake in this space." Let that land before splitting into the two columns.
Walk the LEFT (teal) hypotonic column first - this is the "expected" pattern most clinicians already know: post-surgical weakness, graded strengthening, functional integration with cough/lifting.
Walk the RIGHT (coral) hypertonic column second and slow down here - this is the pattern most rooms are less familiar with: post-radiation guarding, where down-training and breathing work must come BEFORE any strengthening. Emphasize: "If you start strengthening a guarded, hypertonic pelvic floor, you can make pain worse."
Practical delivery tip: ask the room "who here has been taught to just prescribe Kegels regardless of presentation?" - this usually gets some honest hands up and sets up the rest of the toolkit slides well.
"""
notes[10] = """[0:39-0:46] BIOFEEDBACK AND DILATOR THERAPY
Left card (biofeedback): explain surface EMG/manometric feedback in plain terms - patients often cannot feel their own guarding, and biofeedback makes the invisible visible. Mention it's low-risk and well tolerated, citing the systematic review of reviews (Devan Moy and Simarro Gonzalez, 2025).
Right card (dilators): this is often the most sensitive topic in the room - deliver it matter-of-factly and clinically, no hedging. Key clinical pearls to say out loud: start EARLY (ideally before or immediately after radiotherapy completion, not months later when stenosis is established), and consistency of brief regular use beats sporadic intense use.
Address the adherence barrier directly: "Patients are often embarrassed to ask about this, and clinicians are often uncomfortable prescribing it. Normalize it the way you'd normalize a post-op walking program."
Cite Barcellini et al. 2022 verbally for the combined dilator plus PFMT outcome data (vaginal length, strength, HRQoL improvements).
Transition: "Beyond exercise and dilators, manual therapy and pain science play a big role too."
"""
notes[11] = """[0:46-0:51] MANUAL THERAPY AND PAIN NEUROSCIENCE EDUCATION
Left side (manual therapy): emphasize that irradiated tissue behaves differently than non-irradiated tissue - healing timelines and tolerance to mobilization are different, so progression must be paced conservatively.
Right side (pain neuroscience education, navy box): this is a mindset-shift slide. Explain the core reframe simply: ongoing pain after tissue has healed is often a sensitized nervous system, not ongoing damage - and teaching patients this reduces fear-avoidance around intimacy and movement.
Stress the collaborative delivery point: this isn't PT working alone - ideally delivered alongside psychology and sexual health specialists.
Transition: "Rehabilitation doesn't stop at the pelvic floor itself - there are important adjuncts too."
"""
notes[12] = """[0:51-0:56] ADJUNCT THERAPIES
Move through the four cards briskly - these are supportive, not standalone, interventions.
On topical/hormonal support, flag explicitly that local estrogen decisions must be a shared decision with gyn-oncology given oncologic considerations - don't let the room think PT prescribes this independently.
On graded sexual rehabilitation, normalize the stepwise language (non-penetrative touch before dilator progression) - this reduces pressure and fear for patients resuming intimacy.
On psychological support, mention that distress screening should be routine, not reserved for patients who self-report severe symptoms - many will not volunteer this unprompted.
Transition: "So we have the evidence and the tools - let's look at what the current literature actually supports."
"""
notes[13] = """[0:56-1:00] EVIDENCE SUMMARY TABLE
Don't read the table row by row verbatim - attendees can read it themselves. Instead, synthesize: "Across a meta-analysis, an umbrella review, and multiple systematic reviews published in the last two to three years, the signal is consistent: pelvic floor rehabilitation improves outcomes in this population, though protocol standardization is still catching up to the demand."
Flag the one caveat honestly: study heterogeneity (Hao et al. 2024) means we don't yet have one universally standardized protocol - acknowledge this rather than overselling certainty.
Mention this slide doubles as a reference/handout slide - tell attendees a copy of citations will be available so they don't need to transcribe PMIDs during the talk.
Transition: "Good evidence only helps patients if it reaches them - so let's talk about the referral pathway."
"""
notes[14] = """[1:00-1:13] BUILDING THE REFERRAL PATHWAY
Walk the five-step pathway left to right like a story: diagnosis and counseling, prehabilitation discussion, active treatment, then the critical pivot point - the survivorship visit with routine PFD screening - leading to PT referral as the DEFAULT, not something the patient has to ask for.
Emphasize the word "default" out loud: "The goal is that pelvic floor PT referral happens automatically at that survivorship visit, the same way we'd automatically order routine post-treatment imaging - not something reserved for the patient who happens to bring it up."
Move to the barriers box and invite real discussion here - this is a good spot for a 3-5 minute small-group or open-floor discussion prompt: "In your setting, at what point does a survivor first get asked about sexual or pelvic floor symptoms, and what would move that conversation earlier?"
Manage time carefully here - this is the most discussion-heavy slide and easiest place to run over. Give a 1-minute warning before moving on.
"""
notes[15] = """[1:13-1:23] CASE RESOLUTION AND TAKEAWAYS
Return explicitly to the Slide 4 patient: "Remember our patient - 18 months out, dyspareunia, tightness, urinary urgency, hasn't resumed intimacy. Let's build her plan using what we just covered."
Walk the left card as a narrated clinical reasoning exercise, not just a bullet read: explain WHY each step follows from her radiation history (hypertonic presentation expected, so down-training and pain science BEFORE strengthening, dilator progression paired with manual therapy, biofeedback for body awareness, clear escalation criteria back to gyn-onc).
Land the three takeaways slowly and let each one sit for a beat - these are the sentences you want attendees repeating to colleagues afterward. Consider reading them essentially verbatim as written since they're intentionally quotable.
Transition: "That's the clinical content - happy to take questions now."
"""
notes[16] = """[1:23-1:30] THANK YOU AND Q&A
Thank the audience and organizers again. Open the floor for questions.
Have 2-3 anticipated questions ready to seed discussion if the room is slow to start, e.g.: "How do you find a qualified pelvic health PT in a smaller or rural practice?", "How soon after radiotherapy completion should dilator therapy actually start?", "How do you approach this conversation with patients who are visibly uncomfortable discussing sexual health?"
Confirm how attendees can reach you and how slides/references will be shared (update the placeholder contact info before presenting).
Close on time - if questions are still going, offer to continue informally after the session ends so the room isn't held hostage to the clock.
"""
for idx, slide in enumerate(prs.slides, start=1):
text = notes.get(idx, "")
if not text:
continue
notes_slide = slide.notes_slide # creates one if not present
notes_slide.notes_text_frame.text = text
prs.save(PATH)
print("Notes added to", len(notes), "slides")
cd /tmp/workspace/cervical-cancer-pfr-presentation && python build_ppt.py && python add_notes.py
cd /tmp/workspace/cervical-cancer-pfr-presentation && python3 -c " from pptx import Presentation prs = Presentation('Rebuilding_the_Base_Pelvic_Floor_PT.pptx') for i, slide in enumerate(prs.slides, 1): has_notes = slide.has_notes_slide txt = slide.notes_slide.notes_text_frame.text if has_notes else '' print(i, has_notes, len(txt), txt[:60].replace(chr(10),' | ')) " ls -la /tmp/workspace/cervical-cancer-pfr-presentation/
Rebuilding the Base Pelvic Floor PT
Presentation · PPTX
[0:39-0:46] BIOFEEDBACK AND DILATOR THERAPY)Need to elaborate slides and add 10 slide related subject
~/cervical-cancer-pfr-presentation/build_ppt_v2.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
# ---------- 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)
PLUM = RGBColor(0x6B, 0x4E, 0x71)
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
TOTAL = 26
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=14, color=GREY, bullet_color=TEAL,
font="Calibri", space_after=6, line_spacing=1.05):
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
pPr = p._p.get_or_add_pPr()
pPr.set('marL', str(int(Inches(0.28 * lvl))))
pPr.set('indent', '0')
return tb
def header(slide, kicker, title, num):
add_rect(slide, 0, 0, SW, Inches(1.3), NAVY)
add_rect(slide, 0, Inches(1.3), SW, Pt(3), CORAL)
add_text(slide, Inches(0.5), Inches(0.15), Inches(9.5), Inches(0.32), kicker.upper(),
size=11.5, color=GOLD, bold=True)
add_text(slide, Inches(0.5), Inches(0.45), Inches(11.7), Inches(0.8), title,
size=24, color=WHITE, bold=True)
add_text(slide, Inches(12.15), Inches(0.15), Inches(0.9), Inches(0.4), f"{num:02d}",
size=15, color=WHITE, bold=True, align=PP_ALIGN.RIGHT)
add_text(slide, Inches(0.5), Inches(7.12), Inches(8.5), Inches(0.3),
"Rebuilding the Base | Pelvic Floor Rehabilitation in Cervical Cancer Survivorship",
size=9, color=GREY, italic=True)
add_text(slide, Inches(11.9), Inches(7.12), Inches(1.0), Inches(0.3), f"{num}/{TOTAL}",
size=9, color=GREY, align=PP_ALIGN.RIGHT)
def footer_note(slide, text):
add_text(slide, Inches(0.5), Inches(6.72), Inches(12.3), Inches(0.4), text,
size=9.5, color=GREY, italic=True)
def two_col_cards(slide, cards, top=Inches(1.55), height=Inches(5.1)):
n = len(cards)
gap = Inches(0.3)
w = (SW - Inches(1.0) - gap*(n-1)) / n
for i, (title, col, items, txt_col) in enumerate(cards):
x = Inches(0.5) + i*(w+gap)
add_rect(slide, x, top, w, height, LIGHT)
add_rect(slide, x, top, w, Inches(0.55), col)
add_text(slide, x + Inches(0.18), top, w - Inches(0.36), Inches(0.55), title, size=13.5,
color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE, line_spacing=1.0)
add_bullets(slide, x + Inches(0.22), top + Inches(0.72), w - Inches(0.4), height - Inches(0.9),
items, size=12, color=txt_col, bullet_color=col)
# ============================================================
# 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.15), Inches(11.5), Inches(0.5), "CONFERENCE SESSION · EXTENDED CLINICAL PROGRAM",
size=15, color=GOLD, bold=True)
add_text(s, Inches(0.9), Inches(1.7), Inches(11.6), Inches(1.5), "Rebuilding the Base",
size=50, color=WHITE, bold=True)
add_text(s, Inches(0.9), Inches(2.85), Inches(11.6), Inches(1.0),
"Remedial Care Through Pelvic Floor Physical Therapy in\nCervical Cancer Survivorship",
size=22, color=WHITE, bold=False, line_spacing=1.1)
add_text(s, Inches(0.9), Inches(5.0), Inches(11.4), Inches(0.5),
"A comprehensive multidisciplinary clinical curriculum — 26 slides",
size=14, color=WHITE)
add_text(s, Inches(0.9), Inches(5.45), Inches(11.4), Inches(0.6),
"For gyn-oncology, radiation oncology, pelvic health physiotherapy, oncology nursing,\nand psycho-oncology teams",
size=13, color=RGBColor(0xE3,0xEC,0xEC), 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))
# ============================================================
# 2 — AGENDA
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Session Roadmap", "Expanded Session Agenda", 2)
agenda = [
("Foundations", "Anatomy, burden, mechanisms, fibrosis pathophysiology"),
("Assessment", "Symptom domains, exam adaptations, outcome measures, red flags"),
("Prehabilitation", "Pre-treatment counseling and baseline conditioning"),
("Remedial Toolkit", "PFMT, biofeedback, dilators, manual therapy, pain science"),
("Organ-Specific Management", "Bladder dysfunction, bowel dysfunction / proctitis"),
("Self-Management & Sexual Health", "Home exercise programs, partner communication"),
("Systems of Care", "Multidisciplinary roles, referral pathways, surveillance"),
("Synthesis", "Case resolution, evidence review, future directions, takeaways"),
]
y = Inches(1.55); row_h = Inches(0.66)
for i, (title, desc) in enumerate(agenda):
ypos = y + i*row_h
add_rect(s, Inches(0.5), ypos+Inches(0.04), Inches(0.14), Inches(0.5), CORAL if i%2==0 else TEAL)
add_text(s, Inches(0.8), ypos, Inches(3.4), Inches(0.6), title, size=14.5, color=NAVY, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_text(s, Inches(4.4), ypos, Inches(8.3), Inches(0.6), desc, size=12.5, color=GREY, anchor=MSO_ANCHOR.MIDDLE)
add_text(s, Inches(0.5), Inches(6.75), Inches(12.2), Inches(0.35),
"Note: this expanded deck adds depth and organ-specific/systems content. Time-box discussion sections to keep within your session's schedule.",
size=10.5, color=GREY, italic=True)
# ============================================================
# 3 — LEARNING OBJECTIVES (elaborated: 6 objectives)
# ============================================================
s = add_slide(); set_bg(s)
header(s, "By the end of this session", "Learning Objectives", 3)
objs = [
"Describe pelvic floor anatomy and the mechanisms/prevalence of PFD after cervical cancer treatment.",
"Explain the pathophysiology of radiation-induced pelvic fibrosis and its downstream clinical consequences.",
"Apply a structured, trauma-informed assessment framework, including validated outcome measures.",
"Select remedial interventions matched to hypertonic vs. hypotonic presentations.",
"Manage organ-specific complications: bladder dysfunction, bowel dysfunction, and radiation proctitis.",
"Integrate pelvic floor PT, prehabilitation, and sexual health rehabilitation into a multidisciplinary survivorship pathway.",
]
for i, o in enumerate(objs):
col = i % 2; row = i // 2
x = Inches(0.5) + col*Inches(6.25)
ypos = Inches(1.6) + row*Inches(1.75)
circ = s.shapes.add_shape(MSO_SHAPE.OVAL, x, ypos, 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, ypos, Inches(0.5), Inches(0.5), str(i+1), size=17, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
add_text(s, x+Inches(0.7), ypos-Inches(0.05), Inches(5.4), Inches(1.5), o, size=13.5, color=NAVY, line_spacing=1.15)
# ============================================================
# 4 — OPENING CASE
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Framing Case — Return to This at the Close", "Meet Our Patient", 4)
add_rect(s, Inches(0.5), Inches(1.6), Inches(5.65), Inches(4.95), LIGHT)
add_rect(s, Inches(0.5), Inches(1.6), Inches(0.12), Inches(4.95), CORAL)
add_text(s, Inches(0.9), Inches(1.85), Inches(4.9), Inches(0.5), "CASE VIGNETTE", size=13, color=CORAL, bold=True)
add_bullets(s, Inches(0.9), Inches(2.3), Inches(4.9), Inches(4.1), [
"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",
"Partner is supportive but unsure how to help",
], size=13.5)
add_rect(s, Inches(6.4), Inches(1.6), Inches(6.35), Inches(4.95), TEAL)
add_text(s, Inches(6.75), Inches(1.85), Inches(5.6), Inches(0.5), "DISCUSSION PROMPT", size=13, color=GOLD, bold=True)
add_text(s, Inches(6.75), Inches(2.4), Inches(5.6), Inches(4.0),
"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"
"• How would her partner be included in her plan?\n\n"
"Hold your answer — we will build her plan together\nat the end of this session.",
size=14, color=WHITE, line_spacing=1.25)
# ============================================================
# 5 — NEW: PELVIC FLOOR ANATOMY REVIEW
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Foundations", "Pelvic Floor Anatomy Review", 5)
add_bullets(s, Inches(0.5), Inches(1.6), Inches(6.1), Inches(4.9), [
"The pelvic floor is a muscular and fascial 'hammock' spanning the pelvic outlet, supporting the bladder, uterus/vagina, and rectum",
("Levator ani complex: puborectalis, pubococcygeus, iliococcygeus", 1),
("Perineal membrane and superficial perineal muscles", 1),
("External urethral and anal sphincters for voluntary continence", 1),
"Endopelvic fascia (cardinal and uterosacral ligaments) provides passive apical support",
"Innervation: pudendal nerve (somatic, sphincter control), pelvic splanchnic nerves and hypogastric plexus (autonomic, bladder/bowel/sexual function)",
], size=13.5)
add_rect(s, Inches(6.9), Inches(1.6), Inches(5.9), Inches(4.9), NAVY)
add_text(s, Inches(7.2), Inches(1.8), Inches(5.3), Inches(0.5), "WHY THIS MATTERS CLINICALLY", size=13.5, color=GOLD, bold=True)
add_bullets(s, Inches(7.2), Inches(2.4), Inches(5.3), Inches(3.9), [
"Radical hysterectomy dissection planes run directly through the autonomic nerve plexus supplying bladder and rectum",
"Radiation fields overlap substantially with levator ani, vaginal canal, bladder trigone, and anterior rectal wall",
"Understanding these overlaps explains why urinary, bowel, and sexual symptoms so often co-occur rather than appearing in isolation",
], size=13, color=WHITE, bullet_color=GOLD)
# ============================================================
# 6 — BURDEN & PREVALENCE (elaborated)
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Foundations", "Burden & Prevalence", 6)
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.5) + i * Inches(4.17)
add_rect(s, x, Inches(1.65), xw, Inches(2.3), col)
add_text(s, x, Inches(1.8), xw, Inches(0.9), big, size=38, color=WHITE, bold=True, align=PP_ALIGN.CENTER)
add_text(s, x + Inches(0.25), Inches(2.75), xw - Inches(0.5), Inches(1.1), small, size=12.5, color=WHITE,
align=PP_ALIGN.CENTER, line_spacing=1.1)
add_bullets(s, Inches(0.5), Inches(4.15), Inches(12.2), Inches(2.4), [
"PFD is frequently under-recognized in routine oncology follow-up because urinary, bowel, and sexual symptom screening is not consistently built into visit templates",
"Symptom burden often persists or worsens over time with radiation fibrosis, unlike acute surgical effects which may partially resolve — this makes long-term surveillance essential, not optional",
"Quality-of-life impact extends beyond physical symptoms to relationship strain, anxiety, and reduced engagement in survivorship care overall",
], size=13.5)
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.")
# ============================================================
# 7 — MECHANISMS OF INJURY (elaborated)
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Foundations", "Mechanisms of Injury", 7)
mech = [
("Radical Hysterectomy", "Autonomic (hypogastric/pelvic plexus) nerve injury → bladder hypotonia, constipation. Fascial and levator disruption → weakness. Risk correlates with radicality (Querleu-Morrow type)."),
("Pelvic Radiotherapy & Brachytherapy", "Progressive fibrosis and microvascular injury → vaginal shortening/stenosis, dryness, tissue hypertonicity and guarding. Effects are dose- and field-dependent and worsen over months to years."),
("Chemotherapy", "Mucosal atrophy and treatment-related fatigue compound sexual dysfunction; may accelerate ovarian failure, adding hormonal dryness on top of tissue fibrosis."),
("Psychosocial Layer", "Body image change, fear of recurrence, and relationship strain — PFD here is biopsychosocial, not purely mechanical, and must be addressed as such."),
]
for i, (t, d) in enumerate(mech):
col = i % 2; row = i // 2
x = Inches(0.5) + col * Inches(6.25)
ypos = Inches(1.55) + row * Inches(2.55)
add_rect(s, x, ypos, Inches(5.95), Inches(2.35), LIGHT)
add_rect(s, x, ypos, Inches(5.95), Inches(0.55), TEAL)
add_text(s, x + Inches(0.22), ypos, Inches(5.5), Inches(0.55), t, size=14, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_text(s, x + Inches(0.22), ypos + Inches(0.68), Inches(5.5), Inches(1.6), d, size=12, color=GREY, line_spacing=1.2)
# ============================================================
# 8 — NEW: RADIATION-INDUCED FIBROSIS PATHOPHYSIOLOGY
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Foundations · Deep Dive", "Radiation-Induced Fibrosis: The Pathophysiology", 8)
phases = [
("Acute Phase\n(days–weeks)", TEAL, ["Inflammation and mucosal edema", "Capillary injury and increased permeability", "Symptoms: dryness, mild discomfort"], WHITE),
("Subacute Phase\n(weeks–months)", GOLD, ["Ongoing microvascular injury", "Early collagen deposition begins", "Reduced tissue elasticity emerges"], NAVY),
("Chronic Phase\n(months–years)", CORAL, ["Progressive fibrosis and vascular occlusion", "Vaginal shortening/stenosis, hypertonicity", "Pain and guarding become self-reinforcing"], WHITE),
]
two_col_cards(s, phases, top=Inches(1.55), height=Inches(3.1))
add_rect(s, Inches(0.5), Inches(4.85), Inches(12.3), Inches(1.75), NAVY)
add_text(s, Inches(0.8), Inches(5.0), Inches(11.6), Inches(0.4), "THE VICIOUS CYCLE — WHY EARLY INTERVENTION MATTERS", size=13, color=GOLD, bold=True)
add_text(s, Inches(0.8), Inches(5.45), Inches(11.6), Inches(1.05),
"Fibrosis reduces tissue compliance → this drives pain and guarding → guarding reduces blood flow and stretch to the tissue → "
"which accelerates further fibrosis. Interrupting this cycle early (dilator use, manual therapy, down-training) before stenosis is established "
"is far more effective than treating established chronic stenosis.",
size=12.5, color=WHITE, line_spacing=1.25)
# ============================================================
# 9 — ASSESSMENT FRAMEWORK (elaborated)
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Assessment", "A Structured Assessment Framework", 9)
domains = ["Urinary", "Anorectal", "Sexual", "Pain / MSK"]
for i, d in enumerate(domains):
x = Inches(0.5) + i * Inches(3.1)
add_rect(s, x, Inches(1.55), Inches(2.85), Inches(0.65), NAVY)
add_text(s, x, Inches(1.55), Inches(2.85), Inches(0.65), d, size=14, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, Inches(0.5), Inches(2.5), Inches(6.0), Inches(3.8), [
"Structured symptom review across all four domains at every survivorship visit, not only when volunteered",
"Exam adaptations for irradiated tissue: gentle single-digit exam first",
"Assess stenosis, adhesions, trophic changes, trigger points, and vaginal caliber/length",
"Differentiate hypertonic (guarding) vs. hypotonic (weak) pelvic floor — the single most important treatment-direction decision",
"Document baseline objectively (see outcome measures, next slide) to track change over time",
], size=13)
add_rect(s, Inches(6.8), Inches(2.5), Inches(5.95), Inches(3.85), CORAL)
add_text(s, Inches(7.1), Inches(2.7), Inches(5.3), Inches(0.5), "RED FLAGS — REFER OUT FIRST", size=13.5, color=WHITE, bold=True)
add_bullets(s, Inches(7.1), Inches(3.25), Inches(5.3), Inches(2.9), [
"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=13, color=WHITE, bullet_color=WHITE)
# ============================================================
# 10 — NEW: VALIDATED OUTCOME MEASURES
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Assessment", "Validated Outcome Measures & Assessment Tools", 10)
tbl_rows = [
["Tool", "Domain", "Use"],
["PFDI-20", "Pelvic floor distress (urinary, bowel, prolapse)", "Baseline and serial tracking of overall PFD burden"],
["FSFI (Female Sexual Function Index)", "Sexual function", "Screens desire, arousal, lubrication, pain, satisfaction"],
["ICIQ-UI Short Form", "Urinary incontinence", "Quantifies severity and impact of leakage"],
["FACT-Cx / FACT/GOG-Ntx", "Cancer-specific quality of life", "Captures broader survivorship QoL alongside PFD-specific tools"],
["Modified Oxford Scale", "Pelvic floor muscle strength (digital exam)", "Grades contraction strength 0–5 to guide PFMT direction"],
["Vaginal length/caliber measurement", "Structural stenosis", "Objective tracking of dilator therapy progress"],
]
rows, cols = len(tbl_rows), 3
tbl_shape = s.shapes.add_table(rows, cols, Inches(0.5), Inches(1.55), Inches(12.3), Inches(5.0))
table = tbl_shape.table
table.columns[0].width = Inches(3.2)
table.columns[1].width = Inches(3.9)
table.columns[2].width = Inches(5.2)
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); 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(3); cell.margin_bottom = Pt(3)
# ============================================================
# 11 — NEW: PREHABILITATION
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Prehabilitation", "Prehabilitation: Getting Ahead of the Damage", 11)
add_bullets(s, Inches(0.5), Inches(1.6), Inches(6.0), Inches(5.0), [
"Concept: initiate pelvic floor counseling and baseline assessment at diagnosis, before radiotherapy or surgery begins",
"Baseline PFMT and pelvic floor awareness training before treatment establishes a comparison point and may build resilience",
"Pre-treatment education on dilator use and expectations reduces the 'unknown fear' factor and improves later adherence",
"Overlaps with fertility/ovarian preservation counseling — same visit window, same multidisciplinary conversation",
"Extrapolated from prehabilitation evidence in other pelvic malignancies (e.g., colorectal, prostate) showing improved post-treatment functional outcomes",
], size=13.5)
add_rect(s, Inches(6.8), Inches(1.6), Inches(6.0), Inches(5.0), TEAL)
add_text(s, Inches(7.1), Inches(1.8), Inches(5.4), Inches(0.5), "PRACTICAL PREHAB CHECKLIST", size=13.5, color=GOLD, bold=True)
add_bullets(s, Inches(7.1), Inches(2.4), Inches(5.4), Inches(4.0), [
"Baseline pelvic floor symptom questionnaire completed before treatment starts",
"One-time pelvic health PT education visit scheduled during treatment planning",
"Written/verbal expectations set: timeline for dilator initiation post-radiation",
"Point of contact identified for symptoms that arise during treatment",
], size=13, color=WHITE, bullet_color=GOLD)
# ============================================================
# 12 — SECTION DIVIDER — REMEDIAL TOOLKIT
# ============================================================
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), "CORE CLINICAL CONTENT", 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=36, 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 toolkit — matched to presentation",
size=17, color=WHITE, italic=True)
add_bullets(s, Inches(0.8), Inches(4.6), Inches(11.5), Inches(2.4), [
"Pelvic floor muscle training (strengthening vs. down-training)",
"Biofeedback-guided retraining",
"Vaginal dilator therapy protocols",
"Manual therapy, myofascial release & pain neuroscience education",
"Organ-specific management: bladder, bowel/proctitis",
"Home exercise programs & sexual health rehabilitation",
], size=15.5, color=WHITE, bullet_color=GOLD)
# ============================================================
# 13 — PFMT (elaborated)
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Remedial Toolkit", "Pelvic Floor Muscle Training: Matching the Presentation", 13)
add_text(s, Inches(0.5), Inches(1.5), Inches(12.3), Inches(0.4),
"\"More Kegels\" is not always correct. Direction of training depends on tone, not diagnosis alone.",
size=14, color=GREY, italic=True)
cols = [
("Hypotonic / Weak Presentation", TEAL, [
"Typically post-surgical nerve/fascial disruption",
"Graded strengthening (Kegel-based) protocols, 3 sets of 8-12 reps, progressing hold time",
"Progressive endurance and power training",
"Functional integration: bracing with cough, lifting, exertion",
"Reassess with Modified Oxford Scale every 4-6 weeks",
], GREY),
("Hypertonic / Guarded Presentation", CORAL, [
"Typically post-radiation fibrosis and pain-driven guarding",
"Down-training and relaxation strategies first — no strengthening until guarding resolves",
"Diaphragmatic breathing paired with pelvic floor release",
"Manual release and stretching precede any active exercise",
"Reassess tone and pain, not just strength, at follow-up",
], GREY),
]
for i, (t, col, items, txt_col) in enumerate(cols):
x = Inches(0.5) + i * Inches(6.25)
add_rect(s, x, Inches(2.05), Inches(5.95), Inches(4.5), LIGHT)
add_rect(s, x, Inches(2.05), Inches(5.95), Inches(0.6), col)
add_text(s, x + Inches(0.22), Inches(2.05), Inches(5.5), Inches(0.6), t, size=14.5, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, x + Inches(0.25), Inches(2.85), Inches(5.5), Inches(3.6), items, size=12.5, bullet_color=col, color=txt_col)
# ============================================================
# 14 — BIOFEEDBACK & DILATOR (elaborated)
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Remedial Toolkit", "Biofeedback & Graded Dilator Therapy", 14)
add_rect(s, Inches(0.5), Inches(1.55), Inches(5.95), Inches(5.0), LIGHT)
add_rect(s, Inches(0.5), Inches(1.55), Inches(5.95), Inches(0.6), NAVY)
add_text(s, Inches(0.8), Inches(1.55), Inches(5.3), Inches(0.6), "BIOFEEDBACK-GUIDED RETRAINING", size=13.5, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, Inches(0.8), Inches(2.35), Inches(5.4), Inches(4.0), [
"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",
"Typical course: 6-8 sessions, weekly, with home practice between visits",
], size=13)
add_rect(s, Inches(6.85), Inches(1.55), Inches(5.95), Inches(5.0), LIGHT)
add_rect(s, Inches(6.85), Inches(1.55), Inches(5.95), Inches(0.6), NAVY)
add_text(s, Inches(7.15), Inches(1.55), Inches(5.3), Inches(0.6), "VAGINAL DILATOR THERAPY", size=13.5, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, Inches(7.15), Inches(2.35), Inches(5.4), Inches(4.0), [
"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 (3x/week, 5-10 min) outperforms sporadic use",
"Pair with water-based lubricant; avoid use during active mucositis flares",
"Address adherence barriers with compassionate, direct counseling; normalize the tool clinically",
], size=13)
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.")
# ============================================================
# 15 — MANUAL THERAPY & PAIN NEUROSCIENCE (elaborated)
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Remedial Toolkit", "Manual Therapy & Pain Neuroscience Education", 15)
add_bullets(s, Inches(0.5), Inches(1.6), Inches(6.0), Inches(5.0), [
"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",
"Consider scar mobilization techniques for abdominal incisions contributing to fascial restriction",
], size=13.5, bullet_color=TEAL)
add_rect(s, Inches(6.85), Inches(1.6), Inches(5.95), Inches(5.0), NAVY)
add_text(s, Inches(7.15), Inches(1.8), Inches(5.3), Inches(0.5), "PAIN NEUROSCIENCE EDUCATION", size=13.5, color=GOLD, bold=True)
add_bullets(s, Inches(7.15), Inches(2.4), Inches(5.3), Inches(4.0), [
"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",
"Use simple analogies (e.g., 'alarm system stuck on') rather than technical neuroscience jargon",
], size=13, color=WHITE, bullet_color=GOLD)
# ============================================================
# 16 — NEW: BLADDER DYSFUNCTION TARGETED MANAGEMENT
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Organ-Specific Management", "Bladder Dysfunction: Targeted Management", 16)
cards = [
("Neurogenic / Post-Surgical Bladder", TEAL, [
"Hypogastric plexus injury from radical hysterectomy",
"Hypotonic bladder, incomplete emptying, retention",
"Management: timed voiding, double-voiding technique",
"Clean intermittent catheterization if retention is significant",
], GREY),
("Radiation Cystitis", CORAL, [
"Urgency, frequency, and occasionally hematuria",
"Mucosal inflammation and reduced bladder capacity",
"Management: bladder retraining, urgency suppression techniques",
"Anticholinergics or beta-3 agonists under gyn-onc/urology guidance",
], GREY),
("Stress Incontinence Component", NAVY, [
"Weakness from fascial/levator disruption",
"PFMT strengthening protocols (hypotonic pathway)",
"Biofeedback to improve motor control",
"Consider urogynecology referral if refractory",
], WHITE),
]
two_col_cards(s, cards, top=Inches(1.6), height=Inches(4.9))
# ============================================================
# 17 — NEW: BOWEL DYSFUNCTION & RADIATION PROCTITIS
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Organ-Specific Management", "Bowel Dysfunction & Radiation Proctitis", 17)
add_rect(s, Inches(0.5), Inches(1.6), Inches(5.95), Inches(4.9), LIGHT)
add_rect(s, Inches(0.5), Inches(1.6), Inches(5.95), Inches(0.6), CORAL)
add_text(s, Inches(0.8), Inches(1.6), Inches(5.3), Inches(0.6), "RADIATION PROCTITIS", size=14, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, Inches(0.8), Inches(2.4), Inches(5.4), Inches(3.9), [
"Mucosal inflammation, telangiectasia formation, and bleeding",
"Urgency and tenesmus are common, may mimic recurrence — warrants endoscopic evaluation for bleeding",
"Acute proctitis (weeks) vs. chronic radiation proctopathy (months-years) require different management",
"Refer to GI for endoscopic assessment if bleeding is new or progressive",
], size=13.5)
add_rect(s, Inches(6.85), Inches(1.6), Inches(5.95), Inches(4.9), LIGHT)
add_rect(s, Inches(6.85), Inches(1.6), Inches(5.95), Inches(0.6), TEAL)
add_text(s, Inches(7.15), Inches(1.6), Inches(5.3), Inches(0.6), "FUNCTIONAL BOWEL MANAGEMENT", size=14, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, Inches(7.15), Inches(2.4), Inches(5.4), Inches(3.9), [
"Dietary modification: low-residue diet during flares, gradual fiber reintroduction",
"Anti-diarrheal agents and bulking agents as appropriate",
"Pelvic floor retraining for urgency/incontinence — coordination training, not just strength",
"Chronic radiation enteritis may cause malabsorption — consider nutrition referral",
], size=13.5)
# ============================================================
# 18 — ADJUNCT THERAPIES (elaborated)
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Remedial Toolkit", "Adjunct Therapies", 18)
adj = [
("Topical & Hormonal Support", "Vaginal moisturizers/lubricants for dryness; local estrogen where oncologically appropriate — a shared decision with gyn-oncology. Consider non-hormonal options first if hormone-sensitive tumor history."),
("Bowel & Bladder Retraining", "Urgency suppression strategies, timed voiding, dietary fiber and fluid coaching for post-radiation bowel symptoms — see organ-specific slides for detail."),
("Graded Sexual Rehabilitation", "Stepwise return to intimacy: non-penetrative touch, dilator progression, communication coaching with partner — see dedicated slide."),
("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.5) + col * Inches(6.25)
ypos = Inches(1.55) + row * Inches(2.55)
add_rect(s, x, ypos, Inches(5.95), Inches(2.35), LIGHT)
circ = s.shapes.add_shape(MSO_SHAPE.OVAL, x + Inches(0.22), ypos + Inches(0.22), Inches(0.48), Inches(0.48))
circ.fill.solid(); circ.fill.fore_color.rgb = CORAL; circ.line.fill.background(); circ.shadow.inherit=False
add_text(s, x + Inches(0.9), ypos + Inches(0.18), Inches(4.9), Inches(0.6), t, size=14, color=NAVY, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_text(s, x + Inches(0.22), ypos + Inches(0.9), Inches(5.5), Inches(1.35), d, size=11.5, color=GREY, line_spacing=1.2)
# ============================================================
# 19 — NEW: HOME EXERCISE PROGRAM & SELF-MANAGEMENT
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Self-Management", "Home Exercise Program & Self-Management", 19)
add_bullets(s, Inches(0.5), Inches(1.6), Inches(6.0), Inches(5.0), [
"Structured HEP with clear frequency, duration, and progression criteria — ambiguity reduces adherence",
("Dilator use: minimum 3x/week, 5-10 minutes, sized progressively", 1),
("PFMT: daily, matched to hypotonic/hypertonic pathway", 1),
"Self-monitoring tools: symptom diary, dilator log, simple 1-10 pain/tightness rating",
"Set realistic, patient-defined goals (e.g., 'comfortable pelvic exam' before 'intercourse') to build confidence stepwise",
"Provide written escalation criteria: when to call the clinic vs. when to push through mild discomfort",
], size=13.5)
add_rect(s, Inches(6.85), Inches(1.6), Inches(5.95), Inches(5.0), TEAL)
add_text(s, Inches(7.15), Inches(1.8), Inches(5.3), Inches(0.5), "PATIENT EMPOWERMENT PRINCIPLES", size=13.5, color=GOLD, bold=True)
add_bullets(s, Inches(7.15), Inches(2.4), Inches(5.3), Inches(4.0), [
"Frame the program as active recovery, not lifelong treatment",
"Normalize slow progress — irradiated tissue changes over months, not days",
"Celebrate small, objective wins (e.g., one dilator size progression)",
"Reassure that setbacks (e.g., missed weeks) don't erase prior progress",
], size=13, color=WHITE, bullet_color=GOLD)
# ============================================================
# 20 — NEW: SEXUAL HEALTH REHABILITATION & PARTNER COMMUNICATION
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Self-Management", "Sexual Health Rehabilitation & Partner Communication", 20)
steps = ["Education &\nPermission to\nDiscuss", "Non-Genital\nTouch &\nReconnection", "Self-Exploration\n/ Dilator\nProgression", "Partnered\nNon-Penetrative\nActivity", "Penetrative\nIntercourse\n(If Desired)"]
n = len(steps); box_w = Inches(2.15); gap = Inches(0.3)
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 = PLUM if i % 2 == 0 else TEAL
add_rect(s, x, Inches(1.75), box_w, Inches(1.6), col)
add_text(s, x + Inches(0.1), Inches(1.75), box_w - Inches(0.2), Inches(1.6), st, size=11.5, color=WHITE,
bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE, line_spacing=1.05)
if i < n-1:
arrow = s.shapes.add_shape(MSO_SHAPE.RIGHT_ARROW, x + box_w, Inches(2.35), gap, Inches(0.4))
arrow.fill.solid(); arrow.fill.fore_color.rgb = CORAL; arrow.line.fill.background(); arrow.shadow.inherit=False
add_bullets(s, Inches(0.5), Inches(3.75), Inches(6.0), Inches(3.0), [
"This stepped model reduces pressure and performance anxiety — no step is skipped or rushed",
"Partner involvement in dilator therapy normalizes the process and improves adherence",
"Address libido changes from surgical menopause/ovarian ablation directly — do not assume it's purely psychological",
], size=13)
add_rect(s, Inches(6.85), Inches(3.75), Inches(5.95), Inches(3.0), NAVY)
add_text(s, Inches(7.15), Inches(3.9), Inches(5.3), Inches(0.4), "REFERRAL TRIGGERS", size=13, color=GOLD, bold=True)
add_bullets(s, Inches(7.15), Inches(4.35), Inches(5.3), Inches(2.3), [
"Persistent pain despite adherent dilator/PFMT program",
"Significant relationship distress or communication breakdown",
"Patient or partner requests formal sex therapy",
], size=12.5, color=WHITE, bullet_color=GOLD)
# ============================================================
# 21 — EVIDENCE SUMMARY (elaborated, 2 more rows)
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Evidence Base", "What the Current Literature Shows", 21)
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"],
["Barcellini et al., 2022", "Review", "Physical rehabilitation including PFMT improves sexual dysfunction outcomes in gynecologic cancer"],
["Wang et al., 2022 (PMID 34713337)", "Multicenter Study", "Type C radical hysterectomy associated with measurable pelvic floor muscle function decline"],
]
rows, cols = len(tbl_rows), 3
tbl_shape = s.shapes.add_table(rows, cols, Inches(0.5), Inches(1.55), Inches(12.3), Inches(5.05))
table = tbl_shape.table
table.columns[0].width = Inches(3.6); table.columns[1].width = Inches(2.9); table.columns[2].width = Inches(5.8)
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(12.5)
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(10.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(3); cell.margin_bottom = Pt(3)
# ============================================================
# 22 — NEW: MULTIDISCIPLINARY TEAM ROLES
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Systems of Care", "Multidisciplinary Team Roles", 22)
tbl_rows = [
["Role", "Contribution", "Engages"],
["Gyn-Oncology", "Oncologic surveillance, surgical planning, hormonal decision authority", "Diagnosis through survivorship"],
["Radiation Oncology", "Treatment planning, acute toxicity management, dose/field counseling", "Pre-treatment through acute follow-up"],
["Pelvic Health PT", "Assessment, PFMT, biofeedback, dilator/manual therapy delivery", "Prehab through long-term survivorship"],
["Oncology Nursing", "Routine PFD screening, patient education, care coordination", "Every visit"],
["Psycho-Oncology / Sex Therapy", "Distress screening, relationship and intimacy counseling", "As triggered, ongoing PRN"],
["Primary Care", "Long-term surveillance continuity after oncology discharge", "Long-term survivorship"],
]
rows, cols = len(tbl_rows), 3
tbl_shape = s.shapes.add_table(rows, cols, Inches(0.5), Inches(1.55), Inches(12.3), Inches(5.05))
table = tbl_shape.table
table.columns[0].width = Inches(3.0); table.columns[1].width = Inches(5.7); table.columns[2].width = Inches(3.6)
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(3); cell.margin_bottom = Pt(3)
# ============================================================
# 23 — REFERRAL PATHWAY (elaborated)
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Systems of Care", "A Multidisciplinary Referral Pathway", 23)
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(1.75), box_w, Inches(1.6), col)
add_text(s, x + Inches(0.1), Inches(1.75), box_w - Inches(0.2), Inches(1.6), st, size=12, 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.35), 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.5), Inches(3.75), Inches(12.3), Inches(1.75), LIGHT)
add_text(s, Inches(0.8), Inches(3.9), Inches(11.6), Inches(0.4), "WHY REFERRAL RATES REMAIN LOW", size=13, color=CORAL, bold=True)
add_bullets(s, Inches(0.8), Inches(4.35), Inches(11.6), Inches(1.1), [
"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 PTs in some regions; no routine screening question built into follow-up visits",
], size=12.5)
add_rect(s, Inches(0.5), Inches(5.7), Inches(12.3), Inches(0.9), NAVY)
add_text(s, Inches(0.8), Inches(5.7), Inches(11.7), Inches(0.9),
"Discussion: In your setting, at what point does a survivor first get asked about pelvic floor symptoms, and what would move that conversation earlier?",
size(13) if False else 13, color=WHITE, italic=True, anchor=MSO_ANCHOR.MIDDLE)
# ============================================================
# 24 — NEW: LONG-TERM SURVEILLANCE & EMERGING RESEARCH
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Systems of Care", "Long-Term Surveillance & Emerging Research", 24)
add_rect(s, Inches(0.5), Inches(1.6), Inches(5.95), Inches(4.9), LIGHT)
add_rect(s, Inches(0.5), Inches(1.6), Inches(5.95), Inches(0.6), TEAL)
add_text(s, Inches(0.8), Inches(1.6), Inches(5.3), Inches(0.6), "SURVEILLANCE CADENCE", size=14, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, Inches(0.8), Inches(2.4), Inches(5.4), Inches(3.9), [
"PFD screening question at every visit for the first 2 years post-treatment",
"Annual screening thereafter as part of routine survivorship care",
"Repeat objective measures (dilator log, PFDI-20) at each PT-involved visit",
"Re-screen sooner if new symptoms, life changes (new partner), or menopause transition occur",
], size=13)
add_rect(s, Inches(6.85), Inches(1.6), Inches(5.95), Inches(4.9), NAVY)
add_text(s, Inches(7.15), Inches(1.8), Inches(5.3), Inches(0.5), "EMERGING RESEARCH DIRECTIONS", size=14, color=GOLD, bold=True)
add_bullets(s, Inches(7.15), Inches(2.4), Inches(5.3), Inches(3.9), [
"Telehealth-delivered pelvic floor PT to improve access in rural/underserved areas",
"Standardized, protocolized rehabilitation programs to reduce study heterogeneity",
"Integration of patient-reported outcomes directly into survivorship care plans and EHRs",
"Prehabilitation trials specific to cervical cancer populations",
], size=13, color=WHITE, bullet_color=GOLD)
# ============================================================
# 25 — CASE RESOLUTION & TAKEAWAYS (elaborated)
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Bringing It Together", "Case Resolution & Key Takeaways", 25)
add_rect(s, Inches(0.5), Inches(1.55), Inches(5.95), Inches(5.05), LIGHT)
add_text(s, Inches(0.8), Inches(1.75), Inches(5.3), Inches(0.4), "HER CARE PLAN", size=14, color=TEAL, bold=True)
add_bullets(s, Inches(0.8), Inches(2.2), Inches(5.3), Inches(4.3), [
"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",
"Begin stepped sexual rehabilitation model, with partner included in dilator coaching",
"Loop back to gyn-oncology promptly if stenosis is severe or unresponsive",
], size=12.5)
add_rect(s, Inches(6.85), Inches(1.55), Inches(5.95), Inches(5.05), NAVY)
add_text(s, Inches(7.15), Inches(1.75), Inches(5.3), Inches(0.4), "THREE TAKEAWAYS", size=14, color=GOLD, bold=True)
add_bullets(s, Inches(7.15), Inches(2.35), Inches(5.3), Inches(4.2), [
"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 - anchored by prehabilitation and routine surveillance - improves quality of life outcomes",
], size=13.5, color=WHITE, bullet_color=GOLD)
# ============================================================
# 26 — 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 - 26 slides")
~/cervical-cancer-pfr-presentation/build_ppt_v2.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/cervical-cancer-pfr-presentation/build_ppt_v2.py'
cd /tmp/workspace/cervical-cancer-pfr-presentation && python build_ppt_v2.py
cd /tmp/workspace/cervical-cancer-pfr-presentation && python3 -c " from pptx import Presentation prs = Presentation('Rebuilding_the_Base_Pelvic_Floor_PT.pptx') print('Slide count:', len(prs.slides._sldIdLst)) for i, slide in enumerate(prs.slides, 1): texts = [sh.text_frame.text.split(chr(10))[0] for sh in slide.shapes if sh.has_text_frame and sh.text_frame.text.strip()] print(i, '|', texts[1] if len(texts)>1 else texts[0] if texts else 'EMPTY') "
~/cervical-cancer-pfr-presentation/add_notes_v2.py
from pptx import Presentation
PATH = "/tmp/workspace/cervical-cancer-pfr-presentation/Rebuilding_the_Base_Pelvic_Floor_PT.pptx"
prs = Presentation(PATH)
notes = {}
notes[1] = """WELCOME
Thank the organizers and welcome the room. State the session title and note this is an expanded, comprehensive curriculum (26 slides) covering foundations through systems-of-care content.
Say: "We're going to rebuild a foundation that's easy to overlook after cervical cancer treatment - the pelvic floor. This session goes deep: anatomy, pathophysiology, assessment, the remedial toolkit, organ-specific management, and how to build this into a survivorship program."
Introduce yourself - name, credentials, current role, and why this topic matters to your practice.
Note on pacing: with 26 slides this deck carries more content than a single 90-minute slot can cover in full depth - flag to the room whether you're covering everything at a brisk pace or treating some sections as reference material to revisit later.
Transition: "Let's look at the agenda so you know where we're headed."
"""
notes[2] = """AGENDA WALKTHROUGH
Walk through the eight thematic blocks - Foundations, Assessment, Prehabilitation, Remedial Toolkit, Organ-Specific Management, Self-Management & Sexual Health, Systems of Care, Synthesis.
Tell the room explicitly which sections are new/expanded since a shorter version of this talk: anatomy review, fibrosis pathophysiology, outcome measures, prehabilitation, bladder/bowel-specific management, home exercise programs, sexual health deep dive, MDT roles, and surveillance/future research.
Say: "This is intentionally comprehensive - treat it as both a live talk and a reference deck you can revisit."
Flag time management up front: "Given the depth here, I'll move briskly through some foundational slides so we have real time on the toolkit and case work."
Transition into learning objectives.
"""
notes[3] = """LEARNING OBJECTIVES
Read through the six objectives at a steady pace - note this is expanded from four to six to reflect the added anatomy/pathophysiology and organ-specific content.
Emphasize objective 4 verbally: "matching intervention to presentation" remains the crux of the whole talk.
Emphasize objective 5 as new content: organ-specific bladder/bowel management is often left out of general pelvic floor talks and is a key gap this session fills.
Transition: "Let's ground this in a real patient before we get into the data."
"""
notes[4] = """OPENING CASE
Read the case slowly and let it land. Note the added partner detail - this seeds the later Sexual Health & Partner Communication slide.
Ask the discussion prompt out loud, including the new fourth question about partner inclusion, and pause for responses. Do not resolve the case yet.
Say: "Hold onto your answers. We'll build her full plan at the end using everything covered today, including how her partner fits in."
Transition: "Before we get to her specific plan, let's make sure we're all working from the same anatomical foundation."
"""
notes[5] = """PELVIC FLOOR ANATOMY REVIEW (NEW)
This is a foundational review slide - pace depends on audience mix. For a PT-heavy room, move quickly; for a mixed oncology/nursing room, slow down here.
Walk through the levator ani components and perineal structures on the left, then pivot to the right box - the clinical relevance panel is the real payoff of this slide.
Key line to say: "Radical hysterectomy dissection planes and radiation fields both overlap directly with these structures - that's not a coincidence, it's why urinary, bowel, and sexual symptoms cluster together in the same patient rather than appearing in isolation."
Transition: "With that anatomy in mind, let's look at how common these problems actually are."
"""
notes[6] = """BURDEN AND PREVALENCE
Walk through the three stat cards, then move into the three expanded bullets below - these add nuance beyond simple prevalence numbers.
New emphasis point: radiation fibrosis effects often worsen over time rather than resolving, unlike some acute surgical effects - stress that this makes ongoing surveillance essential, not a one-time assessment.
Cite Shan et al. 2023 verbally (systematic review and meta-analysis, PMID on slide).
Transition: "So why is this happening at such high rates? Three distinct mechanisms of injury."
"""
notes[7] = """MECHANISMS OF INJURY
Go through the four boxes in order. Note the added detail on radical hysterectomy - risk correlates with radicality (Querleu-Morrow classification) - useful for a surgically-oriented audience.
Spend the most time on the radiation box: fibrosis causes guarding/hypertonicity, not just weakness - this is the most counterintuitive and clinically important point on this slide.
Transition: "Radiation fibrosis is important enough that it deserves its own deep dive - let's look at the actual pathophysiology."
"""
notes[8] = """RADIATION-INDUCED FIBROSIS PATHOPHYSIOLOGY (NEW)
Walk through the three phase cards left to right as a timeline: acute (days-weeks), subacute (weeks-months), chronic (months-years). This maps directly onto why early intervention timing matters.
Land on the navy "vicious cycle" box at the bottom - read it essentially as written, this is the conceptual anchor for why dilator therapy and manual therapy should start EARLY rather than waiting for stenosis to fully establish.
Say: "This cycle is the single best argument for prehabilitation and early post-treatment intervention, which we'll cover shortly."
Transition: "Now that we understand the injury, let's talk about how to assess for it."
"""
notes[9] = """ASSESSMENT FRAMEWORK
Walk through the four symptom domains, then the assessment bullets on the left - note the added point about documenting baseline objectively, which bridges directly to the next new slide on outcome measures.
Spend real time on the red flags box (coral, right) - safety-critical content, unchanged from before: new pain/bleeding gets a recurrence workup first, suspected fistula goes to surgery/gyn-onc, not PT.
Transition: "Let's look at exactly which validated tools you'd use to document that baseline."
"""
notes[10] = """VALIDATED OUTCOME MEASURES (NEW)
This is a reference/tool slide - don't read every row aloud, instead group them: symptom questionnaires (PFDI-20, FSFI, ICIQ-UI, FACT-Cx) vs. clinical exam measures (Modified Oxford Scale, vaginal length/caliber).
Practical tip to voice: "Pick one validated questionnaire and one objective exam measure and use them consistently at baseline and every follow-up - consistency matters more than which specific tool you choose."
Mention this table doubles as a takeaway reference for attendees setting up their own clinic documentation.
Transition: "Assessment matters most when it starts before treatment even begins - that's prehabilitation."
"""
notes[11] = """PREHABILITATION (NEW)
Left side: walk through the prehab concept bullets - baseline assessment and counseling starting at diagnosis, before treatment. Connect explicitly back to the fibrosis vicious-cycle slide: earlier intervention breaks the cycle before it starts.
Right side (teal box): walk through the practical checklist - frame this as something attendees could implement in their own clinic relatively easily (a single baseline questionnaire, one educational PT visit during treatment planning).
Note the overlap point with fertility/ovarian preservation counseling - this is a good opportunity to mention that these conversations can happen in the same visit window rather than adding new appointments.
Transition: "With foundations and prehab covered, let's move into the core clinical toolkit."
"""
notes[12] = """SECTION DIVIDER - REMEDIAL TOOLKIT
Pacing/energy reset slide before the densest clinical content. Stand, move, change tone.
Say: "This is the part you can use in clinic starting next week." Preview the six bullets briefly - note two are new since the original version: organ-specific management and home exercise/sexual health programs.
If you have a physical dilator set or biofeedback device, this is the moment to reference it.
"""
notes[13] = """PFMT - MATCHING THE PRESENTATION
Open with the header line verbatim about Kegels not always being correct.
Walk the LEFT (teal) hypotonic column - note the added specific dosing detail (3 sets of 8-12 reps) and reassessment cadence (Modified Oxford Scale every 4-6 weeks) - this gives attendees something concretely actionable.
Walk the RIGHT (coral) hypertonic column - emphasize no strengthening until guarding resolves, and that reassessment tracks tone/pain, not just strength.
Ask the room: "who's been taught to just prescribe Kegels regardless of presentation?" - good engagement moment.
"""
notes[14] = """BIOFEEDBACK AND DILATOR THERAPY
Left card: biofeedback - note the added detail on typical course length (6-8 weekly sessions with home practice). Cite the systematic review of reviews (Devan Moy and Simarro Gonzalez, 2025).
Right card: dilators - note added practical details: pairing with water-based lubricant, and avoiding use during active mucositis flares. Emphasize consistency (3x/week, 5-10 min) over intensity.
Address the adherence barrier directly and matter-of-factly, as before.
Cite Barcellini et al. 2022 for combined outcome data.
"""
notes[15] = """MANUAL THERAPY AND PAIN NEUROSCIENCE EDUCATION
Left side: manual therapy - note the added point about scar mobilization for abdominal incisions contributing to fascial restriction, relevant for post-surgical patients.
Right side (navy box): pain neuroscience education - note the added delivery tip: use simple analogies like "alarm system stuck on" rather than technical jargon when explaining central sensitization to patients.
Stress collaborative delivery with psychology and sexual health specialists.
Transition: "Beyond the pelvic floor itself, bladder and bowel function need dedicated attention."
"""
notes[16] = """BLADDER DYSFUNCTION TARGETED MANAGEMENT (NEW)
Walk the three cards: neurogenic/post-surgical bladder, radiation cystitis, and stress incontinence component - these often coexist and need to be distinguished because management differs.
Key teaching point: hypotonic post-surgical bladder needs timed/double voiding and possibly intermittent catheterization, while radiation cystitis needs urgency suppression and possibly medication - conflating the two leads to the wrong treatment.
Mention urogynecology referral threshold for refractory stress incontinence.
Transition: "Bowel dysfunction follows a similar organ-specific logic."
"""
notes[17] = """BOWEL DYSFUNCTION AND RADIATION PROCTITIS (NEW)
Left card: radiation proctitis - stress the safety point that new or progressive bleeding needs GI endoscopic evaluation, not just symptomatic management, because it can mimic recurrence.
Right card: functional bowel management - dietary modification, anti-diarrheal agents, and pelvic floor retraining for urgency specifically (coordination, not just strength).
Mention chronic radiation enteritis and malabsorption as a reason to loop in nutrition support when symptoms are severe or persistent.
Transition: "These organ-specific issues are supported by broader adjunct therapies too."
"""
notes[18] = """ADJUNCT THERAPIES
Move through the four cards briskly - largely familiar content, now cross-referenced to the dedicated organ-specific and sexual health slides rather than duplicating detail.
Reiterate the shared-decision point on hormonal support with gyn-oncology, and mention considering non-hormonal options first if there's a hormone-sensitive tumor history.
Transition: "Adherence to all of this depends on how well the home program is structured - let's look at that."
"""
notes[19] = """HOME EXERCISE PROGRAM AND SELF-MANAGEMENT (NEW)
Emphasize that ambiguity kills adherence - specific frequency/duration/progression criteria matter more than the exact exercise chosen.
Walk through the self-monitoring tools (symptom diary, dilator log, simple pain/tightness rating) and the goal-setting approach: patient-defined stepwise goals like "comfortable pelvic exam" before "intercourse."
Right box: patient empowerment principles - frame the program as active recovery, normalize slow progress, and explicitly reassure that missed weeks don't erase progress. This reduces shame-driven dropout.
Transition: "Home exercise supports the broader sexual health rehabilitation process, which deserves its own focused discussion."
"""
notes[20] = """SEXUAL HEALTH REHABILITATION AND PARTNER COMMUNICATION (NEW)
Walk the five-step model left to right as a story: education/permission, non-genital touch, self-exploration/dilator progression, partnered non-penetrative activity, penetrative intercourse if desired.
Emphasize "if desired" - the goal is not necessarily return to penetrative intercourse for every patient, but restored comfort and agency.
Left bullets: partner involvement in dilator therapy normalizes the process; explicitly address libido changes from surgical menopause rather than assuming purely psychological cause.
Right box: referral triggers to formal sex therapy - persistent pain despite adherence, relationship distress, or explicit patient/partner request.
Transition: "Let's step back and look at what the evidence base says about all of this."
"""
notes[21] = """EVIDENCE SUMMARY TABLE
Synthesize rather than reading row by row: "Across a meta-analysis, an umbrella review, and multiple systematic reviews from the last two to three years, plus multicenter surgical outcome data, the signal is consistent - pelvic floor rehabilitation improves outcomes, though protocol standardization is still catching up."
Note the two added rows since the earlier version: Barcellini et al. 2022 on sexual dysfunction outcomes, and Wang et al. 2022 on measurable pelvic floor function decline after type C radical hysterectomy - useful for surgically-oriented attendees.
Flag the heterogeneity caveat honestly.
Transition: "Good evidence only helps patients if the system actually delivers it - let's talk about team roles."
"""
notes[22] = """MULTIDISCIPLINARY TEAM ROLES (NEW)
Walk the table role by role: gyn-oncology, radiation oncology, pelvic health PT, oncology nursing, psycho-oncology/sex therapy, primary care - emphasize the "Engages" column showing this isn't a single-point-in-time handoff, it spans the entire survivorship timeline.
Key point to voice: oncology nursing's role as routine PFD screener at every visit is often the most underused lever in the whole pathway - nurses see patients most frequently.
Transition: "With roles defined, here's how those roles translate into an actual referral pathway."
"""
notes[23] = """BUILDING THE REFERRAL PATHWAY
Walk the five-step pathway left to right, landing on the critical pivot: survivorship visit with routine PFD screening leading to PT referral as the DEFAULT, not opt-in.
Move to the barriers box, then the discussion prompt box at the bottom - invite real audience discussion here (3-5 minutes): "At what point does a survivor first get asked about pelvic floor symptoms in your setting, and what would move that conversation earlier?"
Manage time carefully - this is the most discussion-heavy slide and easiest place to run over.
Transition: "Referral pathways only work if they're sustained long-term - let's talk surveillance and where the field is heading."
"""
notes[24] = """LONG-TERM SURVEILLANCE AND EMERGING RESEARCH (NEW)
Left card: lay out a concrete surveillance cadence - screening at every visit for 2 years, then annually, with re-screening triggers for new symptoms or life changes like a new partner or menopause transition.
Right card: emerging research directions - telehealth delivery for access, standardized protocols to reduce heterogeneity, and PRO integration into EHRs. Mention this is where the field is moving, not yet standard everywhere.
Transition: "Let's bring all of this together by returning to our opening patient."
"""
notes[25] = """CASE RESOLUTION AND TAKEAWAYS
Return explicitly to the Slide 4 patient, including her partner. Walk the left card as narrated clinical reasoning: hypertonic presentation expected, pain science and down-training before strengthening, dilator plus manual therapy, biofeedback, and now explicitly the stepped sexual rehabilitation model with partner involvement, plus escalation criteria.
Land the three takeaways slowly - note takeaway 3 now explicitly names prehabilitation and surveillance as anchors, reflecting the expanded content.
Transition: "That's the full clinical curriculum - happy to take questions now."
"""
notes[26] = """THANK YOU AND Q&A
Thank the audience and organizers. Open the floor for questions.
Given the expanded content, anticipate questions specifically on: how to prioritize which sections to implement first with limited resources, how to start a prehabilitation pathway without adding visit burden, and how to find/train pelvic health PT capacity locally.
Confirm how attendees can reach you and how slides/references will be shared (update placeholder contact info before presenting).
Close on time - offer to continue informally after the session if questions remain.
"""
for idx, slide in enumerate(prs.slides, start=1):
text = notes.get(idx, "")
if not text:
continue
notes_slide = slide.notes_slide
notes_slide.notes_text_frame.text = text
prs.save(PATH)
print("Notes added to", len(notes), "slides")
cd /tmp/workspace/cervical-cancer-pfr-presentation && python add_notes_v2.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._sldIdLst)) missing = [] for i, slide in enumerate(prs.slides, 1): ok = slide.has_notes_slide and len(slide.notes_slide.notes_text_frame.text) > 20 if not ok: missing.append(i) print('Slides missing notes:', missing if missing else 'none') " ls -la /tmp/workspace/cervical-cancer-pfr-presentation/
Rebuilding the Base Pelvic Floor PT
Presentation · PPTX
Make a PDF quick-reference card of assessment tools and PFMT protocols
ls -la /tmp/workspace/cervical-cancer-pfr-presentation/
~/cervical-cancer-pfr-presentation/build_quickref_pdf.py
from reportlab.lib.pagesizes import letter
from reportlab.lib.units import inch
from reportlab.lib import colors
from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, KeepTogether)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_LEFT, TA_CENTER
# ---------- Theme (matches slide deck) ----------
NAVY = colors.HexColor("#1B3A4B")
TEAL = colors.HexColor("#2E868C")
CORAL = colors.HexColor("#E86A5C")
LIGHT = colors.HexColor("#F4F7F7")
GREY = colors.HexColor("#555F61")
GOLD = colors.HexColor("#D8A43D")
WHITE = colors.white
styles = getSampleStyleSheet()
card_title = ParagraphStyle("card_title", parent=styles["Title"], fontSize=17, leading=20,
textColor=WHITE, alignment=TA_LEFT, fontName="Helvetica-Bold")
card_subtitle = ParagraphStyle("card_subtitle", parent=styles["Normal"], fontSize=10, leading=12,
textColor=colors.HexColor("#E3ECEC"), fontName="Helvetica")
section_head = ParagraphStyle("section_head", parent=styles["Normal"], fontSize=12.5, leading=15,
textColor=WHITE, fontName="Helvetica-Bold")
body = ParagraphStyle("body", parent=styles["Normal"], fontSize=8.7, leading=11.2,
textColor=GREY, fontName="Helvetica")
body_bold = ParagraphStyle("body_bold", parent=body, fontName="Helvetica-Bold", textColor=NAVY)
cell = ParagraphStyle("cell", parent=styles["Normal"], fontSize=8.3, leading=10.6,
textColor=GREY, fontName="Helvetica")
cell_bold = ParagraphStyle("cell_bold", parent=cell, fontName="Helvetica-Bold", textColor=NAVY)
cell_head = ParagraphStyle("cell_head", parent=styles["Normal"], fontSize=9, leading=11,
textColor=WHITE, fontName="Helvetica-Bold")
foot = ParagraphStyle("foot", parent=styles["Normal"], fontSize=7, leading=9,
textColor=GREY, fontName="Helvetica-Oblique")
PAGE_W, PAGE_H = letter
MARGIN = 0.45 * inch
CONTENT_W = PAGE_W - 2 * MARGIN
def title_block(title_text, kicker_text, page_no):
t = Table(
[[Paragraph(f'<font color="#D8A43D" size="8"><b>{kicker_text}</b></font><br/>'
f'<font color="white" size="15"><b>{title_text}</b></font>', card_subtitle),
Paragraph(f'<para alignment="right"><font color="white" size="9"><b>{page_no}</b></font></para>', card_subtitle)]],
colWidths=[CONTENT_W - 0.6*inch, 0.6*inch]
)
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), NAVY),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("LEFTPADDING", (0,0), (0,0), 12),
("TOPPADDING", (0,0), (-1,-1), 10),
("BOTTOMPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (1,0), (1,0), 12),
]))
return t
def section_bar(text, color=TEAL):
t = Table([[Paragraph(text, section_head)]], colWidths=[CONTENT_W])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), color),
("LEFTPADDING", (0,0), (-1,-1), 10),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
return t
def make_table(data, col_widths, header_color=NAVY, zebra=True, font_size=None):
t = Table(data, colWidths=col_widths, repeatRows=1)
style = [
("BACKGROUND", (0,0), (-1,0), header_color),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#D9E2E2")),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 6),
("RIGHTPADDING", (0,0), (-1,-1), 6),
]
if zebra:
for r in range(1, len(data)):
if r % 2 == 0:
style.append(("BACKGROUND", (0,r), (-1,r), LIGHT))
t.setStyle(TableStyle(style))
return t
def p(text, style=cell):
return Paragraph(text, style)
def pb(text, style=cell_bold):
return Paragraph(text, style)
def ph(text):
return Paragraph(text, cell_head)
doc = SimpleDocTemplate(
"/tmp/workspace/cervical-cancer-pfr-presentation/Assessment_PFMT_Quick_Reference_Card.pdf",
pagesize=letter,
leftMargin=MARGIN, rightMargin=MARGIN, topMargin=MARGIN, bottomMargin=MARGIN,
title="Quick-Reference Card: Pelvic Floor Assessment & PFMT Protocols",
)
story = []
# =========================================================
# PAGE 1 — ASSESSMENT TOOLS
# =========================================================
story.append(title_block("Pelvic Floor Assessment — Quick Reference",
"Cervical Cancer Survivorship · Clinician Card", "1 / 2"))
story.append(Spacer(1, 8))
story.append(section_bar("SCREEN FOUR SYMPTOM DOMAINS AT EVERY SURVIVORSHIP VISIT"))
story.append(Spacer(1, 3))
domain_data = [
[pb("Urinary"), pb("Anorectal"), pb("Sexual"), pb("Pain / Musculoskeletal")],
[p("Urgency, frequency, incontinence, incomplete emptying, retention"),
p("Urgency, incontinence, bleeding, tenesmus, constipation, diarrhea"),
p("Dyspareunia, dryness, stenosis, reduced desire/arousal, avoidance"),
p("Pelvic/vaginal pain, trigger points, hip/low back pain, guarding")],
]
t = Table(domain_data, colWidths=[CONTENT_W/4]*4)
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), LIGHT),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#D9E2E2")),
("VALIGN", (0,0), (-1,-1), "TOP"),
("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6), ("RIGHTPADDING", (0,0), (-1,-1), 6),
]))
story.append(t)
story.append(Spacer(1, 9))
story.append(section_bar("VALIDATED OUTCOME MEASURES", color=NAVY))
story.append(Spacer(1, 3))
om_data = [
[ph("Tool"), ph("Domain"), ph("Use")],
[pb("PFDI-20"), p("Pelvic floor distress (urinary, bowel, prolapse)"), p("Baseline + serial tracking of overall PFD burden")],
[pb("FSFI"), p("Female sexual function"), p("Screens desire, arousal, lubrication, pain, satisfaction")],
[pb("ICIQ-UI Short Form"), p("Urinary incontinence"), p("Quantifies severity and impact of leakage")],
[pb("FACT-Cx / FACT/GOG-Ntx"), p("Cancer-specific QoL"), p("Broader survivorship QoL alongside PFD-specific tools")],
[pb("Modified Oxford Scale"), p("Pelvic floor muscle strength (digital exam)"), p("Grades contraction 0-5; guides PFMT direction (see reverse)")],
[pb("Vaginal length / caliber"), p("Structural stenosis"), p("Objective tracking of dilator therapy progress")],
]
story.append(make_table(om_data, [1.6*inch, 2.5*inch, CONTENT_W-1.6*inch-2.5*inch]))
story.append(Spacer(1, 9))
story.append(section_bar("MODIFIED OXFORD SCALE — DIGITAL EXAM GRADING", color=TEAL))
story.append(Spacer(1, 3))
mo_data = [
[ph("Grade"), ph("Finding")],
[pb("0"), p("No discernible contraction")],
[pb("1"), p("Flicker / trace of contraction")],
[pb("2"), p("Weak contraction, no lift")],
[pb("3"), p("Moderate contraction, slight lift felt")],
[pb("4"), p("Good contraction with lift, held against resistance")],
[pb("5"), p("Strong contraction, sustained lift against resistance")],
]
story.append(make_table(mo_data, [1.0*inch, CONTENT_W-1.0*inch]))
story.append(Spacer(1, 9))
story.append(section_bar("RED FLAGS — REFER OUT BEFORE STARTING PT", color=CORAL))
story.append(Spacer(1, 3))
rf_data = [
[p("<b>New pain or bleeding</b> → recurrence workup before pelvic floor therapy starts", cell)],
[p("<b>Suspected fistula</b> → surgical / gyn-oncology referral, not pelvic floor therapy first", cell)],
[p("<b>Severe, progressive stenosis</b> unresponsive to conservative care → gyn-onc review", cell)],
]
t = Table(rf_data, colWidths=[CONTENT_W])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), colors.HexColor("#FCEEEC")),
("BOX", (0,0), (-1,-1), 0.6, CORAL),
("LINEBELOW", (0,0), (-1,-2), 0.4, colors.HexColor("#F3D2CC")),
("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8), ("RIGHTPADDING", (0,0), (-1,-1), 8),
]))
story.append(t)
story.append(Spacer(1, 10))
story.append(HRFlowable(width="100%", thickness=0.6, color=colors.HexColor("#D9E2E2")))
story.append(Spacer(1, 4))
story.append(Paragraph(
"Source: Rebuilding the Base — Pelvic Floor Rehabilitation in Cervical Cancer Survivorship (conference session). "
"Key reference: Shan X, Qian M, Wang L. Int Urogynecol J. 2023. PMID 36001098.", foot))
story.append(Spacer(1, 1))
from reportlab.platypus import PageBreak
story.append(PageBreak())
# =========================================================
# PAGE 2 — PFMT PROTOCOLS
# =========================================================
story.append(title_block("PFMT Protocols — Quick Reference",
"Cervical Cancer Survivorship · Clinician Card", "2 / 2"))
story.append(Spacer(1, 8))
story.append(Paragraph(
'<font color="#555F61"><i>"More Kegels" is not always correct. Direction of training depends on tone, not diagnosis alone. '
'Differentiate hypertonic vs. hypotonic presentation on exam before prescribing.</i></font>', body))
story.append(Spacer(1, 8))
story.append(section_bar("HYPOTONIC / WEAK PRESENTATION — typically post-surgical", color=TEAL))
story.append(Spacer(1, 3))
hypo_data = [
[ph("Element"), ph("Protocol")],
[pb("Typical cause"), p("Post-surgical nerve/fascial disruption (radical hysterectomy)")],
[pb("Direction"), p("Graded strengthening (Kegel-based)")],
[pb("Dosing"), p("3 sets of 8-12 reps/day, progressing hold time (start ~3-5 sec → build to 10 sec holds)")],
[pb("Progression"), p("Add endurance and power training as strength improves")],
[pb("Functional integration"), p("Bracing with cough, lifting, exertion (\"the knack\")")],
[pb("Reassessment"), p("Modified Oxford Scale every 4-6 weeks")],
]
story.append(make_table(hypo_data, [1.6*inch, CONTENT_W-1.6*inch]))
story.append(Spacer(1, 9))
story.append(section_bar("HYPERTONIC / GUARDED PRESENTATION — typically post-radiation", color=CORAL))
story.append(Spacer(1, 3))
hyper_data = [
[ph("Element"), ph("Protocol")],
[pb("Typical cause"), p("Radiation fibrosis, tissue guarding, pain-driven hypertonicity")],
[pb("Direction"), p("Down-training / relaxation FIRST — no strengthening until guarding resolves")],
[pb("Breathing"), p("Diaphragmatic breathing paired with pelvic floor release")],
[pb("Manual work"), p("Manual release and stretching precede any active exercise")],
[pb("Caution"), p("Strengthening a guarded, hypertonic pelvic floor can worsen pain")],
[pb("Reassessment"), p("Track tone and pain (not just strength) at follow-up")],
]
story.append(make_table(hyper_data, [1.6*inch, CONTENT_W-1.6*inch]))
story.append(Spacer(1, 9))
story.append(section_bar("ADJUNCT PROTOCOLS", color=NAVY))
story.append(Spacer(1, 3))
adj_data = [
[ph("Tool"), ph("Quick Protocol")],
[pb("Biofeedback"), p("Surface EMG/manometric feedback; 6-8 weekly sessions + home practice; best for hypertonic presentations who cannot perceive their own guarding")],
[pb("Vaginal dilator therapy"), p("Start early (before/immediately after radiotherapy completion); graded sizing; 3x/week minimum, 5-10 min; use water-based lubricant; avoid during active mucositis flares")],
[pb("Manual therapy"), p("Internal/external myofascial release for scar, adhesions, trigger points; pace to tissue tolerance — irradiated tissue heals differently")],
[pb("Pain neuroscience education"), p("Reframe pain as nervous-system sensitization, not just ongoing damage; use plain-language analogies; pair with mindfulness for intimacy-related anxiety")],
]
story.append(make_table(adj_data, [1.6*inch, CONTENT_W-1.6*inch]))
story.append(Spacer(1, 9))
story.append(section_bar("HOME PROGRAM ADHERENCE TARGETS", color=GOLD))
story.append(Spacer(1, 3))
home_data = [
[p("<b>Dilator:</b> minimum 3x/week, 5-10 min, progress size gradually", cell)],
[p("<b>PFMT:</b> daily, matched to hypotonic/hypertonic pathway above", cell)],
[p("<b>Self-monitoring:</b> symptom diary, dilator log, 1-10 pain/tightness rating", cell)],
[p("<b>Escalate to clinic if:</b> new pain/bleeding, no progress after 6-8 weeks of adherent practice, or worsening guarding", cell)],
]
t = Table(home_data, colWidths=[CONTENT_W])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), colors.HexColor("#FBF3E3")),
("BOX", (0,0), (-1,-1), 0.6, GOLD),
("LINEBELOW", (0,0), (-1,-2), 0.4, colors.HexColor("#F0E0BB")),
("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8), ("RIGHTPADDING", (0,0), (-1,-1), 8),
]))
story.append(t)
story.append(Spacer(1, 10))
story.append(HRFlowable(width="100%", thickness=0.6, color=colors.HexColor("#D9E2E2")))
story.append(Spacer(1, 4))
story.append(Paragraph(
"Companion reference to: Rebuilding the Base — Pelvic Floor Rehabilitation in Cervical Cancer Survivorship. "
"Key references: Devan Moy N, Simarro González MC. Rehabilitación. 2025. PMID 39765163. "
"Barcellini A et al., 2022 — dilator + PFMT program outcomes.", foot))
doc.build(story)
print("PDF SAVED OK")
cd /tmp/workspace/cervical-cancer-pfr-presentation && python build_quickref_pdf.py
cd /tmp/workspace/cervical-cancer-pfr-presentation && python3 -c " import pdfplumber with pdfplumber.open('Assessment_PFMT_Quick_Reference_Card.pdf') as pdf: print('Pages:', len(pdf.pages)) for i, page in enumerate(pdf.pages,1): txt = page.extract_text() or '' print('--- page', i, 'chars:', len(txt)) " ls -la /tmp/workspace/cervical-cancer-pfr-presentation/*.pdf
cd /tmp/workspace/cervical-cancer-pfr-presentation && python3 -c " import pdfplumber with pdfplumber.open('Assessment_PFMT_Quick_Reference_Card.pdf') as pdf: print(pdf.pages[2].extract_text()) "
~/cervical-cancer-pfr-presentation/build_quickref_pdf.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/cervical-cancer-pfr-presentation/build_quickref_pdf.py'
~/cervical-cancer-pfr-presentation/build_quickref_pdf.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/cervical-cancer-pfr-presentation/build_quickref_pdf.py'
~/cervical-cancer-pfr-presentation/build_quickref_pdf.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/cervical-cancer-pfr-presentation/build_quickref_pdf.py'
~/cervical-cancer-pfr-presentation/build_quickref_pdf.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/cervical-cancer-pfr-presentation/build_quickref_pdf.py'
~/cervical-cancer-pfr-presentation/build_quickref_pdf.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/cervical-cancer-pfr-presentation/build_quickref_pdf.py'
cd /tmp/workspace/cervical-cancer-pfr-presentation && python build_quickref_pdf.py && python3 -c " import pdfplumber with pdfplumber.open('Assessment_PFMT_Quick_Reference_Card.pdf') as pdf: print('Pages:', len(pdf.pages)) "
Assessment PFMT Quick Reference Card
PDF Document · PDF
please review two presentations, make merge good presentation for the topics of Rebuilding the Base — Pelvic Floor Rehabilitation in Cervical Cancer Survivorship
cd /tmp/workspace/attachments/71c8cd50-32a0-478d-bbba-a5ed4edd17ee && ls -la && python3 -c " from pptx import Presentation for fname in ['Rebuilding_the_Base_Pelvic_Floor_PT.pptx', 'Healing_Through_Pelvic_Floor_PT_Image_Sequence.pptx']: print('='*80) print(fname) prs = Presentation(fname) print('Slide count:', len(prs.slides._sldIdLst)) print('Slide size:', prs.slide_width, prs.slide_height) "
cd /tmp/workspace/attachments/71c8cd50-32a0-478d-bbba-a5ed4edd17ee && python3 -c " from pptx import Presentation def dump(fname, outname): prs = Presentation(fname) lines = [] for i, slide in enumerate(prs.slides, 1): lines.append(f'--- SLIDE {i} ---') n_img = 0 for sh in slide.shapes: if sh.shape_type == 13: # PICTURE n_img += 1 if sh.has_text_frame and sh.text_frame.text.strip(): lines.append('TXT: ' + sh.text_frame.text.replace(chr(10),' | ')) if sh.has_table: for row in sh.table.rows: lines.append('TBL: ' + ' | '.join(c.text for c in row.cells)) lines.append(f'IMAGES: {n_img}') if slide.has_notes_slide: nt = slide.notes_slide.notes_text_frame.text.strip() if nt: lines.append('NOTES: ' + nt[:150].replace(chr(10),' ')) with open(outname, 'w') as f: f.write(chr(10).join(lines)) print(outname, 'written,', len(lines), 'lines') dump('Rebuilding_the_Base_Pelvic_Floor_PT.pptx', '/tmp/workspace/deck1_dump.txt') dump('Healing_Through_Pelvic_Floor_PT_Image_Sequence.pptx', '/tmp/workspace/deck2_dump.txt') "
mkdir -p /tmp/workspace/cervical-cancer-pfr-presentation/assets cd /tmp/workspace/attachments/71c8cd50-32a0-478d-bbba-a5ed4edd17ee && python3 -c " from pptx import Presentation prs = Presentation('Healing_Through_Pelvic_Floor_PT_Image_Sequence.pptx') targets = [4,7,12,13,14,15,26,27,29,32,33,35,36,37] for i, slide in enumerate(prs.slides, 1): if i not in targets: continue for sh in slide.shapes: if sh.shape_type == 13: img = sh.image ext = img.ext fname = f'/tmp/workspace/cervical-cancer-pfr-presentation/assets/deck2_slide{i:02d}.{ext}' with open(fname, 'wb') as f: f.write(img.blob) print('saved', fname, img.size) " ls -la /tmp/workspace/cervical-cancer-pfr-presentation/assets/
How should I handle the images from the second deck given the visible third-party watermarks (Pelvic Global / Dr. Lily branding)?
| 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 |
Rebuilding the Base Pelvic Floor PT
Presentation · PPTX
Rebuilding the Base Pelvic Floor PT
Presentation · PPTX
[0:39-0:46] BIOFEEDBACK AND DILATOR THERAPY)Rebuilding the Base Pelvic Floor PT
Presentation · PPTX
Assessment PFMT Quick Reference Card
PDF Document · PDF
pudendal nerve pelvic innervation anatomy diagram
vaginal dilator set for vaginal stenosis therapy
diaphragm abdominal wall pelvic floor coordination breathing anatomy
pelvic lymphatic drainage female pelvis diagram
~/cervical-cancer-pfr-presentation/build_merged.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
# ---------- 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)
PLUM = RGBColor(0x6B, 0x4E, 0x71)
SAGE = RGBColor(0x7A, 0x93, 0x6B)
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
TOTAL = 35
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_oval(slide, x, y, w, h, color):
shp = slide.shapes.add_shape(MSO_SHAPE.OVAL, x, y, w, h)
shp.fill.solid(); shp.fill.fore_color.rgb = color
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=14, color=GREY, bullet_color=TEAL,
font="Calibri", space_after=6, line_spacing=1.05):
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
pPr = p._p.get_or_add_pPr()
pPr.set('marL', str(int(Inches(0.28 * lvl))))
pPr.set('indent', '0')
return tb
def header(slide, kicker, title, num):
add_rect(slide, 0, 0, SW, Inches(1.3), NAVY)
add_rect(slide, 0, Inches(1.3), SW, Pt(3), CORAL)
add_text(slide, Inches(0.5), Inches(0.15), Inches(9.5), Inches(0.32), kicker.upper(),
size=11.5, color=GOLD, bold=True)
add_text(slide, Inches(0.5), Inches(0.45), Inches(11.7), Inches(0.8), title,
size=23, color=WHITE, bold=True)
add_text(slide, Inches(12.15), Inches(0.15), Inches(0.9), Inches(0.4), f"{num:02d}",
size=15, color=WHITE, bold=True, align=PP_ALIGN.RIGHT)
add_text(slide, Inches(0.5), Inches(7.12), Inches(8.5), Inches(0.3),
"Rebuilding the Base | Healing Through Pelvic Floor Physical Therapy",
size=9, color=GREY, italic=True)
add_text(slide, Inches(11.9), Inches(7.12), Inches(1.0), Inches(0.3), f"{num}/{TOTAL}",
size=9, color=GREY, align=PP_ALIGN.RIGHT)
def footer_note(slide, text):
add_text(slide, Inches(0.5), Inches(6.72), Inches(12.3), Inches(0.4), text,
size=9.5, color=GREY, italic=True)
def two_col_cards(slide, cards, top=Inches(1.55), height=Inches(5.1)):
n = len(cards)
gap = Inches(0.3)
w = (SW - Inches(1.0) - gap*(n-1)) / n
for i, (title, col, items, txt_col) in enumerate(cards):
x = Inches(0.5) + i*(w+gap)
add_rect(slide, x, top, w, height, LIGHT)
add_rect(slide, x, top, w, Inches(0.55), col)
add_text(slide, x + Inches(0.18), top, w - Inches(0.36), Inches(0.55), title, size=13.5,
color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE, line_spacing=1.0)
add_bullets(slide, x + Inches(0.22), top + Inches(0.72), w - Inches(0.4), height - Inches(0.9),
items, size=12, color=txt_col, bullet_color=col)
def labeled_box_diagram(slide, x, y, w, h, title_text, title_color, labels):
"""Simple original schematic: a box with a title bar and stacked labeled rows,
representing an anatomical layer/structure without tracing any copyrighted image."""
add_rect(slide, x, y, w, h, LIGHT)
add_rect(slide, x, y, w, Inches(0.5), title_color)
add_text(slide, x + Inches(0.15), y, w - Inches(0.3), Inches(0.5), title_text, size=13,
color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE)
row_h = (h - Inches(0.6)) / max(len(labels), 1)
for i, lab in enumerate(labels):
ry = y + Inches(0.6) + i*row_h
dot = add_oval(slide, x + Inches(0.18), ry + row_h/2 - Inches(0.06), Inches(0.12), Inches(0.12), title_color)
add_text(slide, x + Inches(0.42), ry, w - Inches(0.55), row_h, lab, size=10.8, color=GREY,
anchor=MSO_ANCHOR.MIDDLE, line_spacing=1.0)
TOTAL_SLIDES = [] # not used, TOTAL constant set above
# ============================================================
# 1 — TITLE
# ============================================================
s = add_slide(); set_bg(s, NAVY)
add_rect(s, 0, Inches(4.6), SW, Inches(2.9), TEAL)
add_rect(s, 0, Inches(4.56), SW, Pt(4), CORAL)
add_text(s, Inches(0.9), Inches(1.0), Inches(11.5), Inches(0.5), "CONFERENCE SESSION · COMPREHENSIVE CLINICAL PROGRAM",
size=14.5, color=GOLD, bold=True)
add_text(s, Inches(0.9), Inches(1.55), Inches(11.6), Inches(1.4), "Rebuilding the Base",
size=48, color=WHITE, bold=True)
add_text(s, Inches(0.9), Inches(2.65), Inches(11.6), Inches(1.0),
"Healing Through Pelvic Floor Physical Therapy in\nCervical Cancer Survivorship",
size=23, color=WHITE, bold=False, line_spacing=1.1)
add_text(s, Inches(0.9), Inches(3.85), Inches(11.4), Inches(0.55),
"A whole-person, multidisciplinary clinical curriculum",
size=15, color=RGBColor(0xE3,0xEC,0xEC), italic=True)
add_text(s, Inches(0.9), Inches(4.85), Inches(11.4), Inches(0.5),
"From pelvic floor anatomy and evaluation through remedial therapy and long-term survivorship care",
size=14, color=WHITE)
add_text(s, Inches(0.9), Inches(5.3), Inches(11.4), Inches(0.6),
"For gyn-oncology, radiation oncology, pelvic health physiotherapy, oncology nursing,\nand psycho-oncology teams",
size=13, color=RGBColor(0xE3,0xEC,0xEC), 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))
# ============================================================
# 2 — AGENDA
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Session Roadmap", "Session Agenda", 2)
agenda = [
("Whole-Person Framing", "Recovery beyond the pelvic floor alone: bladder, bowel, pain, movement, intimacy"),
("Foundations", "Layered anatomy, nerves & lymphatics, burden, treatment-effect timelines, fibrosis"),
("Assessment", "Consent-forward exam, movement/breathing screen, outcome measures"),
("Prehabilitation", "Pre-treatment counseling and baseline conditioning"),
("Remedial Toolkit", "PFMT, manual therapy, dilators, biofeedback, breathing & pain science"),
("Organ-Specific Management", "Bladder dysfunction, bowel dysfunction / proctitis"),
("Self-Management & Sexual Health", "Home programs, partner communication"),
("Systems of Care", "Team roles, referral pathways, surveillance, synthesis"),
]
y = Inches(1.5); row_h = Inches(0.68)
for i, (title, desc) in enumerate(agenda):
ypos = y + i*row_h
add_rect(s, Inches(0.5), ypos+Inches(0.04), Inches(0.14), Inches(0.52), CORAL if i%2==0 else TEAL)
add_text(s, Inches(0.8), ypos, Inches(3.5), Inches(0.62), title, size=14, color=NAVY, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_text(s, Inches(4.5), ypos, Inches(8.2), Inches(0.62), desc, size=12, color=GREY, anchor=MSO_ANCHOR.MIDDLE)
add_text(s, Inches(0.5), Inches(6.9), Inches(12.2), Inches(0.3),
"Merged from two source presentations. Anatomy/technique visuals are original diagrams built for this deck.",
size=9.5, color=GREY, italic=True)
# ============================================================
# 3 — LEARNING OBJECTIVES
# ============================================================
s = add_slide(); set_bg(s)
header(s, "By the end of this session", "Learning Objectives", 3)
objs = [
"Frame pelvic floor recovery as part of whole-person survivorship, not an isolated muscular issue.",
"Describe layered pelvic floor anatomy, innervation, and lymphatic pathways relevant to cancer treatment.",
"Explain mechanisms and timelines (short- vs. long-term) of PFD after surgery, radiation, chemo, and systemic therapy.",
"Apply a structured, consent-forward assessment framework, including validated outcome measures.",
"Select remedial interventions matched to hypertonic vs. hypotonic presentations.",
"Manage organ-specific complications and integrate care into a multidisciplinary survivorship pathway.",
]
for i, o in enumerate(objs):
col = i % 2; row = i // 2
x = Inches(0.5) + col*Inches(6.25)
ypos = Inches(1.55) + row*Inches(1.75)
circ = add_oval(s, x, ypos, Inches(0.5), Inches(0.5), CORAL)
add_text(s, x, ypos, Inches(0.5), Inches(0.5), str(i+1), size=17, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
add_text(s, x+Inches(0.7), ypos-Inches(0.05), Inches(5.4), Inches(1.55), o, size=13.5, color=NAVY, line_spacing=1.15)
# ============================================================
# 4 — WHOLE-PERSON FRAMING (NEW, from Deck 2 concept)
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Foundations", "Recovery Is Whole-Person, Not Just \u201cPelvic Floor\u201d", 4)
add_text(s, Inches(0.5), Inches(1.55), Inches(12.2), Inches(0.5),
"Cancer treatment can touch every system that intersects the pelvis - framing this early sets the tone for the whole session.",
size=13.5, color=GREY, italic=True)
domains = [("Bladder", TEAL), ("Bowel", CORAL), ("Pain", NAVY), ("Movement", GOLD), ("Intimacy & Participation", PLUM)]
n = len(domains); box_w = Inches(2.25); gap = Inches(0.25)
total_w = n*box_w + (n-1)*gap
start_x = (SW - total_w)/2
for i, (d, col) in enumerate(domains):
x = start_x + i*(box_w+gap)
add_rect(s, x, Inches(2.3), box_w, Inches(1.4), col)
add_text(s, x, Inches(2.3), box_w, Inches(1.4), d, size=14, color=WHITE, bold=True,
align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE, line_spacing=1.05)
add_bullets(s, Inches(0.5), Inches(4.1), Inches(12.2), Inches(2.7), [
"These domains are interconnected, not separate checklists - a bladder symptom, a bowel symptom, and a sexual health concern in the same patient often share one root cause",
"Whole-person framing gives clinicians permission to ask about all five domains in one visit, rather than waiting for the patient to raise each one separately",
"This reframing also reduces patient shame: symptoms are presented as an expected, treatable part of recovery - not an isolated, embarrassing complaint",
], size=14)
# ============================================================
# 5 — OPENING CASE
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Framing Case — Return to This at the Close", "Meet Our Patient", 5)
add_rect(s, Inches(0.5), Inches(1.6), Inches(5.65), Inches(4.95), LIGHT)
add_rect(s, Inches(0.5), Inches(1.6), Inches(0.12), Inches(4.95), CORAL)
add_text(s, Inches(0.9), Inches(1.85), Inches(4.9), Inches(0.5), "CASE VIGNETTE", size=13, color=CORAL, bold=True)
add_bullets(s, Inches(0.9), Inches(2.3), Inches(4.9), Inches(4.1), [
"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",
"Partner is supportive but unsure how to help",
], size=13.5)
add_rect(s, Inches(6.4), Inches(1.6), Inches(6.35), Inches(4.95), TEAL)
add_text(s, Inches(6.75), Inches(1.85), Inches(5.6), Inches(0.5), "DISCUSSION PROMPT", size=13, color=GOLD, bold=True)
add_text(s, Inches(6.75), Inches(2.4), Inches(5.6), Inches(4.0),
"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"
"• How would her partner be included in her plan?\n\n"
"Hold your answer — we will build her plan together\nat the end of this session.",
size=14, color=WHITE, line_spacing=1.25)
# ============================================================
# 6 — PELVIC FLOOR ANATOMY OVERVIEW
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Foundations", "Pelvic Floor Anatomy: The Overview", 6)
add_bullets(s, Inches(0.5), Inches(1.6), Inches(6.1), Inches(4.9), [
"The pelvic floor is a muscular and fascial 'hammock' spanning the pelvic outlet, supporting the bladder, uterus/vagina, and rectum",
"Composed of three functional layers, from superficial to deep - we'll walk through each on the next two slides",
"Anatomy is presented in layers because symptoms map predictably onto which layer or structure is affected",
"Endopelvic fascia (cardinal and uterosacral ligaments) provides passive apical support alongside the active muscular layers",
], size=13.5)
add_rect(s, Inches(6.9), Inches(1.6), Inches(5.9), Inches(4.9), NAVY)
add_text(s, Inches(7.2), Inches(1.8), Inches(5.3), Inches(0.5), "WHY THIS MATTERS CLINICALLY", size=13.5, color=GOLD, bold=True)
add_bullets(s, Inches(7.2), Inches(2.4), Inches(5.3), Inches(3.9), [
"Radical hysterectomy dissection planes run directly through the autonomic nerve plexus supplying bladder and rectum",
"Radiation fields overlap substantially with levator ani, vaginal canal, bladder trigone, and anterior rectal wall",
"Understanding these overlaps explains why urinary, bowel, and sexual symptoms so often co-occur rather than appearing in isolation",
], size=13, color=WHITE, bullet_color=GOLD)
# ============================================================
# 7 — ANATOMY IN LAYERS: SUPERFICIAL & UROGENITAL DIAPHRAGM
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Foundations · Anatomy in Layers", "Layer 1-2: Superficial Perineum & Urogenital Diaphragm", 7)
labeled_box_diagram(s, Inches(0.5), Inches(1.6), Inches(5.95), Inches(5.0),
"LAYER 1 — SUPERFICIAL PERINEAL MUSCLES", TEAL, [
"Ischiocavernosus",
"Bulbospongiosus",
"Superficial transverse perineal muscle",
"Contributes to sexual response and perineal support",
])
labeled_box_diagram(s, Inches(6.85), Inches(1.6), Inches(5.95), Inches(5.0),
"LAYER 2 — UROGENITAL DIAPHRAGM", CORAL, [
"Deep transverse perineal muscle",
"Compressor urethrae",
"Urethral sphincter mechanism",
"Provides urethral support and voluntary continence coordination",
])
# ============================================================
# 8 — ANATOMY IN LAYERS: PELVIC DIAPHRAGM, NERVES & LYMPHATICS
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Foundations · Anatomy in Layers", "Layer 3: Pelvic Diaphragm — Plus Nerves & Lymphatics", 8)
labeled_box_diagram(s, Inches(0.5), Inches(1.6), Inches(5.95), Inches(5.0),
"LAYER 3 — DEEP PELVIC DIAPHRAGM & WALL", NAVY, [
"Levator ani: puborectalis, pubococcygeus, iliococcygeus",
"Coccygeus",
"Piriformis and obturator internus (pelvic wall muscles)",
"Primary structural support for pelvic organs",
])
labeled_box_diagram(s, Inches(6.85), Inches(1.6), Inches(5.95), Inches(5.0),
"NERVES & LYMPHATIC PATHWAYS", GOLD, [
"Pudendal nerve — somatic, sphincter control and sensation",
"Pelvic splanchnic nerves & hypogastric plexus — autonomic, bladder/bowel/sexual function",
"Pelvic lymphatic pathways — disrupted by lymph node dissection or radiation",
"Lymphatic disruption contributes to lower-limb or genital lymphedema risk - screen for this too",
])
footer_note(s, "Cancer treatment can affect sensation, motor control, tissue mobility, and lymphatic flow through any of these pathways.")
# ============================================================
# 9 — BURDEN & PREVALENCE
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Foundations", "Burden & Prevalence", 9)
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.5) + i * Inches(4.17)
add_rect(s, x, Inches(1.65), xw, Inches(2.3), col)
add_text(s, x, Inches(1.8), xw, Inches(0.9), big, size=38, color=WHITE, bold=True, align=PP_ALIGN.CENTER)
add_text(s, x + Inches(0.25), Inches(2.75), xw - Inches(0.5), Inches(1.1), small, size=12.5, color=WHITE,
align=PP_ALIGN.CENTER, line_spacing=1.1)
add_bullets(s, Inches(0.5), Inches(4.15), Inches(12.2), Inches(2.4), [
"PFD is frequently under-recognized in routine oncology follow-up because urinary, bowel, and sexual symptom screening is not consistently built into visit templates",
"Symptom burden often persists or worsens over time with radiation fibrosis, unlike acute surgical effects which may partially resolve — long-term surveillance is essential, not optional",
"Quality-of-life impact extends beyond physical symptoms to relationship strain, anxiety, and reduced engagement in survivorship care overall",
], size=13.5)
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.")
# ============================================================
# 10 — TREATMENT EFFECTS: SURGERY
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Foundations · Treatment Effects", "Surgery: Short-Term vs. Long-Term Effects", 10)
cards = [
("Short-Term (weeks)", TEAL, [
"Post-operative pain and guarding",
"Reduced range of motion",
"Acute weakness and altered sensation",
"Catheter-related bladder retraining needs",
], GREY),
("Long-Term (months-years)", CORAL, [
"Persistent hypotonic bladder from autonomic nerve injury",
"Constipation from pelvic plexus disruption",
"Fascial/levator weakness — risk correlates with radicality (Querleu-Morrow type)",
"Compensatory musculoskeletal pain (hip, low back)",
], GREY),
]
two_col_cards(s, cards, top=Inches(1.6), height=Inches(4.9))
# ============================================================
# 11 — TREATMENT EFFECTS: RADIATION, CHEMO, SYSTEMIC
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Foundations · Treatment Effects", "Radiation, Chemotherapy & Systemic Therapies", 11)
cards = [
("Radiation — Short-Term", TEAL, ["Inflammation, mucosal edema", "Dryness, mild discomfort", "Fatigue"], GREY),
("Radiation — Long-Term", CORAL, ["Progressive fibrosis, stenosis", "Hypertonicity and guarding", "Dose/field-dependent severity"], GREY),
("Chemo & Systemic Therapies", NAVY, ["Mucosal atrophy, accelerated ovarian failure", "Fatigue, GI symptoms", "Hormonal + targeted/immune therapy effects compound fibrosis-related dryness"], WHITE),
]
two_col_cards(s, cards, top=Inches(1.6), height=Inches(4.9))
# ============================================================
# 12 — RADIATION-INDUCED FIBROSIS PATHOPHYSIOLOGY
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Foundations · Deep Dive", "Radiation-Induced Fibrosis: The Pathophysiology", 12)
phases = [
("Acute Phase\n(days–weeks)", TEAL, ["Inflammation and mucosal edema", "Capillary injury, increased permeability", "Symptoms: dryness, mild discomfort"], WHITE),
("Subacute Phase\n(weeks–months)", GOLD, ["Ongoing microvascular injury", "Early collagen deposition begins", "Reduced tissue elasticity emerges"], NAVY),
("Chronic Phase\n(months–years)", CORAL, ["Progressive fibrosis and vascular occlusion", "Vaginal shortening/stenosis, hypertonicity", "Pain and guarding become self-reinforcing"], WHITE),
]
two_col_cards(s, phases, top=Inches(1.55), height=Inches(3.1))
add_rect(s, Inches(0.5), Inches(4.85), Inches(12.3), Inches(1.75), NAVY)
add_text(s, Inches(0.8), Inches(5.0), Inches(11.6), Inches(0.4), "THE VICIOUS CYCLE — WHY EARLY INTERVENTION MATTERS", size=13, color=GOLD, bold=True)
add_text(s, Inches(0.8), Inches(5.45), Inches(11.6), Inches(1.05),
"Fibrosis reduces tissue compliance → this drives pain and guarding → guarding reduces blood flow and stretch to the tissue → "
"which accelerates further fibrosis. Interrupting this cycle early (dilator use, manual therapy, down-training) before stenosis is established "
"is far more effective than treating established chronic stenosis.",
size=12.5, color=WHITE, line_spacing=1.25)
# ============================================================
# 13 — GSM SPOTLIGHT (NEW)
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Foundations · Spotlight", "Genitourinary Syndrome of Menopause (GSM)", 13)
add_rect(s, Inches(0.5), Inches(1.7), Inches(12.3), Inches(1.5), LIGHT)
add_text(s, Inches(0.8), Inches(1.85), Inches(11.7), Inches(1.2),
"GSM is a chronic, progressive condition related to estrogen deficiency that affects the vulva, vagina, and lower urinary tract. "
"In cervical cancer survivors, treatment-induced menopause (surgical, chemotherapy-related, or radiation-related ovarian failure) "
"can bring on GSM earlier and more abruptly than natural menopause.",
size=13.5, color=GREY, line_spacing=1.25)
add_bullets(s, Inches(0.5), Inches(3.5), Inches(6.0), Inches(3.0), [
"Symptoms: dryness, burning, irritation, dyspareunia, urinary urgency/frequency, recurrent UTIs",
"Overlaps heavily with radiation fibrosis symptoms - both must be considered together, not treated as separate problems",
"Often under-diagnosed because it is assumed to simply be a 'radiation effect'",
], size=13.5)
add_rect(s, Inches(6.85), Inches(3.5), Inches(5.95), Inches(3.0), TEAL)
add_text(s, Inches(7.15), Inches(3.65), Inches(5.3), Inches(0.4), "MANAGEMENT CONSIDERATIONS", size=13, color=GOLD, bold=True)
add_bullets(s, Inches(7.15), Inches(4.1), Inches(5.3), Inches(2.3), [
"Non-hormonal moisturizers/lubricants as first-line, low-risk option",
"Local (vaginal) estrogen where oncologically appropriate - shared decision with gyn-oncology",
"Pelvic floor PT addresses the muscular/fascial component alongside any hormonal treatment",
], size=13, color=WHITE, bullet_color=GOLD)
# ============================================================
# 14 — ASSESSMENT FRAMEWORK
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Assessment", "A Structured, Consent-Forward Assessment Framework", 14)
domains = ["Urinary", "Anorectal", "Sexual", "Pain / MSK"]
for i, d in enumerate(domains):
x = Inches(0.5) + i * Inches(3.1)
add_rect(s, x, Inches(1.55), Inches(2.85), Inches(0.62), NAVY)
add_text(s, x, Inches(1.55), Inches(2.85), Inches(0.62), d, size=13.5, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, Inches(0.5), Inches(2.45), Inches(6.0), Inches(3.9), [
"Structured symptom review across all four domains at every survivorship visit, not only when volunteered",
"Evaluation begins with the patient's main concern and what she wants to return to - not a generic checklist",
"Examination may be internal, external, or both - always explain what, why, and obtain explicit consent before proceeding, and stop at any time on request",
"Differentiate hypertonic (guarding) vs. hypotonic (weak) pelvic floor — the single most important treatment-direction decision",
], size=12.8)
add_rect(s, Inches(6.8), Inches(2.45), Inches(5.95), Inches(3.9), CORAL)
add_text(s, Inches(7.1), Inches(2.6), Inches(5.3), Inches(0.5), "RED FLAGS — REFER OUT FIRST", size=13, color=WHITE, bold=True)
add_bullets(s, Inches(7.1), Inches(3.15), Inches(5.3), Inches(3.0), [
"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=13, color=WHITE, bullet_color=WHITE)
# ============================================================
# 15 — EVALUATION IN PRACTICE (NEW synthesis)
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Assessment", "Evaluation in Practice: History, Movement & Breathing", 15)
cards = [
("Comprehensive History", TEAL, [
"Main concern and functional goals first",
"Medical, surgical, and treatment timeline",
"Bladder, bowel, sexual, and pain screening",
], GREY),
("Movement & Postural Screen", CORAL, [
"Whole-body screen, not pelvis-only",
"Treatment may affect strength, mobility, balance",
"Breathing pattern observed as part of this screen",
], GREY),
("Breathing–Abdominal Wall–PF Coordination", NAVY, [
"Diaphragm, abdominal wall, transversus abdominis, and pelvic floor work as one coordinated system",
"Dysfunction in one often shows up as compensation in another",
], WHITE),
]
two_col_cards(s, cards, top=Inches(1.6), height=Inches(4.9))
# ============================================================
# 16 — PF MUSCLE EXAM: CONSENT, SETUP & GRADING
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Assessment", "Pelvic Floor Muscle Exam: Consent, Setup & Grading", 16)
add_rect(s, Inches(0.5), Inches(1.6), Inches(5.95), Inches(5.0), LIGHT)
add_rect(s, Inches(0.5), Inches(1.6), Inches(5.95), Inches(0.55), NAVY)
add_text(s, Inches(0.8), Inches(1.6), Inches(5.3), Inches(0.55), "CONSENT & SETUP", size=13.5, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, Inches(0.8), Inches(2.35), Inches(5.4), Inches(4.1), [
"Explain the exam clearly before beginning; obtain explicit verbal consent",
"Offer the option of internal, external, or both — patient chooses",
"Patient may stop the exam at any point, for any reason, without justification",
"Gentle single-digit exam first for irradiated tissue; assess stenosis, adhesions, trophic changes, trigger points, vaginal caliber/length",
], size=12.5)
add_rect(s, Inches(6.85), Inches(1.6), Inches(5.95), Inches(5.0), LIGHT)
add_rect(s, Inches(6.85), Inches(1.6), Inches(5.95), Inches(0.55), TEAL)
add_text(s, Inches(7.15), Inches(1.6), Inches(5.3), Inches(0.55), "MODIFIED OXFORD SCALE (GRADING)", size=13.5, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE)
mo = [
"0 — No discernible contraction", "1 — Flicker / trace of contraction",
"2 — Weak contraction, no lift", "3 — Moderate contraction, slight lift felt",
"4 — Good contraction with lift, held against resistance",
"5 — Strong contraction, sustained lift against resistance",
]
add_bullets(s, Inches(7.15), Inches(2.3), Inches(5.4), Inches(4.1), mo, size=12.5, bullet_color=TEAL)
# ============================================================
# 17 — VALIDATED OUTCOME MEASURES
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Assessment", "Validated Outcome Measures & Assessment Tools", 17)
tbl_rows = [
["Tool", "Domain", "Use"],
["PFDI-20", "Pelvic floor distress (urinary, bowel, prolapse)", "Baseline and serial tracking of overall PFD burden"],
["FSFI (Female Sexual Function Index)", "Sexual function", "Screens desire, arousal, lubrication, pain, satisfaction"],
["ICIQ-UI Short Form", "Urinary incontinence", "Quantifies severity and impact of leakage"],
["FACT-Cx / FACT/GOG-Ntx", "Cancer-specific quality of life", "Captures broader survivorship QoL alongside PFD-specific tools"],
["Vaginal length/caliber measurement", "Structural stenosis", "Objective tracking of dilator therapy progress"],
]
rows, cols = len(tbl_rows), 3
tbl_shape = s.shapes.add_table(rows, cols, Inches(0.5), Inches(1.6), Inches(12.3), Inches(4.3))
table = tbl_shape.table
table.columns[0].width = Inches(3.2); table.columns[1].width = Inches(3.9); table.columns[2].width = Inches(5.2)
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(3); cell.margin_bottom = Pt(3)
footer_note(s, "Pair one questionnaire with one objective exam measure (Modified Oxford Scale, previous slide) and use both consistently at baseline and follow-up.")
# ============================================================
# 18 — PREHABILITATION
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Prehabilitation", "Prehabilitation: Getting Ahead of the Damage", 18)
add_bullets(s, Inches(0.5), Inches(1.6), Inches(6.0), Inches(5.0), [
"Concept: initiate pelvic floor counseling and baseline assessment at diagnosis, before radiotherapy or surgery begins",
"Baseline PFMT and pelvic floor awareness training before treatment establishes a comparison point and may build resilience",
"Pre-treatment education on dilator use and expectations reduces the 'unknown fear' factor and improves later adherence",
"Overlaps with fertility/ovarian preservation counseling — same visit window, same multidisciplinary conversation",
"Extrapolated from prehabilitation evidence in other pelvic malignancies (e.g., colorectal, prostate) showing improved post-treatment functional outcomes",
], size=13.5)
add_rect(s, Inches(6.8), Inches(1.6), Inches(6.0), Inches(5.0), TEAL)
add_text(s, Inches(7.1), Inches(1.8), Inches(5.4), Inches(0.5), "PRACTICAL PREHAB CHECKLIST", size=13.5, color=GOLD, bold=True)
add_bullets(s, Inches(7.1), Inches(2.4), Inches(5.4), Inches(4.0), [
"Baseline pelvic floor symptom questionnaire completed before treatment starts",
"One-time pelvic health PT education visit scheduled during treatment planning",
"Written/verbal expectations set: timeline for dilator initiation post-radiation",
"Point of contact identified for symptoms that arise during treatment",
], size=13, color=WHITE, bullet_color=GOLD)
# ============================================================
# 19 — SECTION DIVIDER — REMEDIAL TOOLKIT
# ============================================================
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), "CORE CLINICAL CONTENT", 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=36, 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 toolkit — matched to presentation",
size=17, color=WHITE, italic=True)
add_bullets(s, Inches(0.8), Inches(4.6), Inches(11.5), Inches(2.4), [
"Pelvic floor muscle training (strengthening vs. down-training)",
"Manual therapy, self-release & scar mobilization",
"Vaginal dilator therapy protocols",
"Biofeedback-guided retraining",
"Diaphragmatic breathing & pain neuroscience education",
"Organ-specific management: bladder, bowel/proctitis",
], size=15.5, color=WHITE, bullet_color=GOLD)
# ============================================================
# 20 — PFMT MATCHING PRESENTATION
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Remedial Toolkit", "Pelvic Floor Muscle Training: Matching the Presentation", 20)
add_text(s, Inches(0.5), Inches(1.5), Inches(12.3), Inches(0.4),
"\"More Kegels\" is not always correct. Direction of training depends on tone, not diagnosis alone.",
size=14, color=GREY, italic=True)
cols = [
("Hypotonic / Weak Presentation", TEAL, [
"Typically post-surgical nerve/fascial disruption",
"Graded strengthening (Kegel-based) protocols, 3 sets of 8-12 reps, progressing hold time",
"Progressive endurance and power training",
"Functional integration: bracing with cough, lifting, exertion",
"Reassess with Modified Oxford Scale every 4-6 weeks",
], GREY),
("Hypertonic / Guarded Presentation", CORAL, [
"Typically post-radiation fibrosis and pain-driven guarding",
"Down-training and relaxation strategies first — no strengthening until guarding resolves",
"Diaphragmatic breathing paired with pelvic floor release",
"Manual release and stretching precede any active exercise",
"Reassess tone and pain, not just strength, at follow-up",
], GREY),
]
for i, (t, col, items, txt_col) in enumerate(cols):
x = Inches(0.5) + i * Inches(6.25)
add_rect(s, x, Inches(2.05), Inches(5.95), Inches(4.5), LIGHT)
add_rect(s, x, Inches(2.05), Inches(5.95), Inches(0.6), col)
add_text(s, x + Inches(0.22), Inches(2.05), Inches(5.5), Inches(0.6), t, size=14.5, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, x + Inches(0.25), Inches(2.85), Inches(5.5), Inches(3.6), items, size=12.5, bullet_color=col, color=txt_col)
# ============================================================
# 21 — MANUAL THERAPY, SELF-RELEASE & SCAR MOBILIZATION
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Remedial Toolkit", "Manual Therapy, Self-Release & Scar Mobilization", 21)
cards = [
("Manual Therapy", TEAL, [
"Gentle hands-on technique to reduce tension, tenderness, and tissue restriction",
"Internal and external myofascial release for scar tissue, adhesions, trigger points",
"Connective tissue mobilization along irradiated fields",
], GREY),
("Self-Release (Home)", CORAL, [
"Taught only after clinician assessment and demonstration of a safe technique",
"Empowers patients between visits",
"Reinforces manual therapy gains",
], GREY),
("Scar & Abdominal Mobilization", NAVY, [
"Gentle hands-on work improving movement of skin, connective tissue, abdominal muscles",
"Targets surgical scar restriction contributing to fascial tension",
"Pace to tissue tolerance — irradiated tissue responds differently",
], WHITE),
]
two_col_cards(s, cards, top=Inches(1.6), height=Inches(4.9))
# ============================================================
# 22 — VAGINAL DILATOR THERAPY PROTOCOL
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Remedial Toolkit", "Vaginal Dilator Therapy Protocol", 22)
add_rect(s, Inches(0.5), Inches(1.6), Inches(5.95), Inches(5.0), LIGHT)
add_rect(s, Inches(0.5), Inches(1.6), Inches(5.95), Inches(0.55), NAVY)
add_text(s, Inches(0.8), Inches(1.6), Inches(5.3), Inches(0.55), "WHAT & WHY", size=13.5, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, Inches(0.8), Inches(2.35), Inches(5.4), Inches(4.1), [
"Therapeutic tools in progressive sizes used to support tolerance of stretch and accommodation within the vaginal canal",
"A graded set allows systematic progression rather than an all-or-nothing approach",
"Combined with pelvic floor exercises, improves vaginal length, muscle strength, and quality of life",
], size=13)
add_rect(s, Inches(6.85), Inches(1.6), Inches(5.95), Inches(5.0), LIGHT)
add_rect(s, Inches(6.85), Inches(1.6), Inches(5.95), Inches(0.55), TEAL)
add_text(s, Inches(7.15), Inches(1.6), Inches(5.3), Inches(0.55), "PROTOCOL", size=13.5, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, Inches(7.15), Inches(2.35), Inches(5.4), Inches(4.1), [
"Start early — ideally before or immediately after radiotherapy completion",
"Minimum 3x/week, 5-10 minutes; consistency beats intensity",
"Pair with water-based lubricant; avoid during active mucositis flares",
"Address adherence barriers with compassionate, direct counseling; normalize the tool clinically",
], size=13)
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.")
# ============================================================
# 23 — BIOFEEDBACK
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Remedial Toolkit", "Biofeedback-Guided Retraining", 23)
add_bullets(s, Inches(0.5), Inches(1.7), Inches(12.2), Inches(3.0), [
"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",
"Typical course: 6-8 sessions, weekly, with home practice between visits",
], size=16, bullet_color=TEAL)
add_rect(s, Inches(0.5), Inches(5.0), Inches(12.3), Inches(1.5), TEAL)
add_text(s, Inches(0.8), Inches(5.15), Inches(11.7), Inches(1.2),
"Clinical tip: pair biofeedback sessions with the same objective measures used at intake (Modified Oxford Scale, symptom diary) "
"so patients can see progress that they cannot yet feel on their own.",
size=13.5, color=WHITE, italic=True, line_spacing=1.2)
# ============================================================
# 24 — DIAPHRAGMATIC BREATHING & PAIN NEUROSCIENCE EDUCATION
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Remedial Toolkit", "Diaphragmatic Breathing & Pain Neuroscience Education", 24)
add_rect(s, Inches(0.5), Inches(1.6), Inches(5.95), Inches(5.0), LIGHT)
add_rect(s, Inches(0.5), Inches(1.6), Inches(5.95), Inches(0.55), TEAL)
add_text(s, Inches(0.8), Inches(1.6), Inches(5.3), Inches(0.55), "DIAPHRAGMATIC BREATHING", size=13.5, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, Inches(0.8), Inches(2.35), Inches(5.4), Inches(4.1), [
"Foundational coordination strategy: diaphragm, abdominal wall, and pelvic floor move together",
"Helps tight or painful muscles relax before active exercise begins",
"Simple starting point patients can practice anywhere, immediately",
"Bridges directly into down-training for hypertonic presentations",
], size=13)
add_rect(s, Inches(6.85), Inches(1.6), Inches(5.95), Inches(5.0), NAVY)
add_text(s, Inches(7.15), Inches(1.8), Inches(5.3), Inches(0.5), "PAIN NEUROSCIENCE EDUCATION", size=13.5, color=GOLD, bold=True)
add_bullets(s, Inches(7.15), Inches(2.4), Inches(5.3), Inches(4.0), [
"Reframe pain as a sensitized nervous system response, not solely ongoing tissue damage",
"Reduces fear-avoidance behaviors around intimacy and movement",
"Use simple analogies (e.g., 'alarm system stuck on') rather than technical jargon",
"Delivered collaboratively — physical therapist, psychology, and sexual health specialist",
], size=13, color=WHITE, bullet_color=GOLD)
# ============================================================
# 25 — BLADDER DYSFUNCTION TARGETED MANAGEMENT
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Organ-Specific Management", "Bladder Dysfunction: Targeted Management", 25)
cards = [
("Neurogenic / Post-Surgical Bladder", TEAL, [
"Hypogastric plexus injury from radical hysterectomy",
"Hypotonic bladder, incomplete emptying, retention",
"Timed voiding, double-voiding technique",
"Clean intermittent catheterization if retention significant",
], GREY),
("Radiation Cystitis", CORAL, [
"Urgency, frequency, occasionally hematuria",
"Mucosal inflammation, reduced bladder capacity",
"Bladder retraining, urgency suppression techniques",
"Anticholinergics/beta-3 agonists under gyn-onc/urology guidance",
], GREY),
("Stress Incontinence Component", NAVY, [
"Weakness from fascial/levator disruption",
"PFMT strengthening protocols (hypotonic pathway)",
"Biofeedback to improve motor control",
"Consider urogynecology referral if refractory",
], WHITE),
]
two_col_cards(s, cards, top=Inches(1.6), height=Inches(4.9))
# ============================================================
# 26 — BOWEL DYSFUNCTION & RADIATION PROCTITIS
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Organ-Specific Management", "Bowel Dysfunction & Radiation Proctitis", 26)
add_rect(s, Inches(0.5), Inches(1.6), Inches(5.95), Inches(4.9), LIGHT)
add_rect(s, Inches(0.5), Inches(1.6), Inches(5.95), Inches(0.6), CORAL)
add_text(s, Inches(0.8), Inches(1.6), Inches(5.3), Inches(0.6), "RADIATION PROCTITIS", size=14, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, Inches(0.8), Inches(2.4), Inches(5.4), Inches(3.9), [
"Mucosal inflammation, telangiectasia formation, and bleeding",
"Urgency and tenesmus are common, may mimic recurrence — warrants endoscopic evaluation for bleeding",
"Acute proctitis (weeks) vs. chronic radiation proctopathy (months-years) require different management",
"Refer to GI for endoscopic assessment if bleeding is new or progressive",
], size=13.5)
add_rect(s, Inches(6.85), Inches(1.6), Inches(5.95), Inches(4.9), LIGHT)
add_rect(s, Inches(6.85), Inches(1.6), Inches(5.95), Inches(0.6), TEAL)
add_text(s, Inches(7.15), Inches(1.6), Inches(5.3), Inches(0.6), "FUNCTIONAL BOWEL MANAGEMENT", size=14, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, Inches(7.15), Inches(2.4), Inches(5.4), Inches(3.9), [
"Dietary modification: low-residue diet during flares, gradual fiber reintroduction",
"Anti-diarrheal agents and bulking agents as appropriate",
"Pelvic floor retraining for urgency/incontinence — coordination training, not just strength",
"Chronic radiation enteritis may cause malabsorption — consider nutrition referral",
], size=13.5)
# ============================================================
# 27 — ADJUNCT THERAPIES
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Remedial Toolkit", "Adjunct Therapies", 27)
adj = [
("Topical & Hormonal Support", "Vaginal moisturizers/lubricants for dryness; local estrogen where oncologically appropriate — a shared decision with gyn-oncology (see GSM spotlight, earlier)."),
("Bowel & Bladder Retraining", "Urgency suppression strategies, timed voiding, dietary fiber and fluid coaching for post-radiation bowel symptoms — see organ-specific slides for detail."),
("Graded Sexual Rehabilitation", "Stepwise return to intimacy: non-penetrative touch, dilator progression, communication coaching with partner — see dedicated slide."),
("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.5) + col * Inches(6.25)
ypos = Inches(1.55) + row * Inches(2.55)
add_rect(s, x, ypos, Inches(5.95), Inches(2.35), LIGHT)
circ = add_oval(s, x + Inches(0.22), ypos + Inches(0.22), Inches(0.48), Inches(0.48), CORAL)
add_text(s, x + Inches(0.9), ypos + Inches(0.18), Inches(4.9), Inches(0.6), t, size=14, color=NAVY, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_text(s, x + Inches(0.22), ypos + Inches(0.9), Inches(5.5), Inches(1.35), d, size=11.5, color=GREY, line_spacing=1.2)
# ============================================================
# 28 — HOME EXERCISE PROGRAM & SELF-MANAGEMENT
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Self-Management", "Home Exercise Program & Self-Management", 28)
add_bullets(s, Inches(0.5), Inches(1.6), Inches(6.0), Inches(5.0), [
"Structured HEP with clear frequency, duration, and progression criteria — ambiguity reduces adherence",
("Dilator use: minimum 3x/week, 5-10 minutes, sized progressively", 1),
("PFMT: daily, matched to hypotonic/hypertonic pathway", 1),
"Self-monitoring tools: symptom diary, dilator log, simple 1-10 pain/tightness rating",
"Set realistic, patient-defined goals (e.g., 'comfortable pelvic exam' before 'intercourse') to build confidence stepwise",
"Provide written escalation criteria: when to call the clinic vs. when to push through mild discomfort",
], size=13.5)
add_rect(s, Inches(6.85), Inches(1.6), Inches(5.95), Inches(5.0), TEAL)
add_text(s, Inches(7.15), Inches(1.8), Inches(5.3), Inches(0.5), "PATIENT EMPOWERMENT PRINCIPLES", size=13.5, color=GOLD, bold=True)
add_bullets(s, Inches(7.15), Inches(2.4), Inches(5.3), Inches(4.0), [
"Frame the program as active recovery, not lifelong treatment",
"Normalize slow progress — irradiated tissue changes over months, not days",
"Celebrate small, objective wins (e.g., one dilator size progression)",
"Reassure that setbacks (e.g., missed weeks) don't erase prior progress",
], size=13, color=WHITE, bullet_color=GOLD)
# ============================================================
# 29 — SEXUAL HEALTH REHABILITATION & PARTNER COMMUNICATION
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Self-Management", "Sexual Health Rehabilitation & Partner Communication", 29)
steps = ["Education &\nPermission to\nDiscuss", "Non-Genital\nTouch &\nReconnection", "Self-Exploration\n/ Dilator\nProgression", "Partnered\nNon-Penetrative\nActivity", "Penetrative\nIntercourse\n(If Desired)"]
n = len(steps); box_w = Inches(2.15); gap = Inches(0.3)
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 = PLUM if i % 2 == 0 else TEAL
add_rect(s, x, Inches(1.75), box_w, Inches(1.6), col)
add_text(s, x + Inches(0.1), Inches(1.75), box_w - Inches(0.2), Inches(1.6), st, size=11.5, color=WHITE,
bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE, line_spacing=1.05)
if i < n-1:
arrow = s.shapes.add_shape(MSO_SHAPE.RIGHT_ARROW, x + box_w, Inches(2.35), gap, Inches(0.4))
arrow.fill.solid(); arrow.fill.fore_color.rgb = CORAL; arrow.line.fill.background(); arrow.shadow.inherit=False
add_bullets(s, Inches(0.5), Inches(3.75), Inches(6.0), Inches(3.0), [
"This stepped model reduces pressure and performance anxiety — no step is skipped or rushed",
"Partner involvement in dilator therapy normalizes the process and improves adherence",
"Address libido changes from surgical menopause/ovarian ablation directly — do not assume it's purely psychological",
], size=13)
add_rect(s, Inches(6.85), Inches(3.75), Inches(5.95), Inches(3.0), NAVY)
add_text(s, Inches(7.15), Inches(3.9), Inches(5.3), Inches(0.4), "REFERRAL TRIGGERS", size=13, color=GOLD, bold=True)
add_bullets(s, Inches(7.15), Inches(4.35), Inches(5.3), Inches(2.3), [
"Persistent pain despite adherent dilator/PFMT program",
"Significant relationship distress or communication breakdown",
"Patient or partner requests formal sex therapy",
], size=12.5, color=WHITE, bullet_color=GOLD)
# ============================================================
# 30 — EVIDENCE SUMMARY
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Evidence Base", "What the Current Literature Shows", 30)
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"],
["Barcellini et al., 2022", "Review", "Physical rehabilitation including PFMT improves sexual dysfunction outcomes in gynecologic cancer"],
["Wang et al., 2022 (PMID 34713337)", "Multicenter Study", "Type C radical hysterectomy associated with measurable pelvic floor muscle function decline"],
]
rows, cols = len(tbl_rows), 3
tbl_shape = s.shapes.add_table(rows, cols, Inches(0.5), Inches(1.55), Inches(12.3), Inches(5.05))
table = tbl_shape.table
table.columns[0].width = Inches(3.6); table.columns[1].width = Inches(2.9); table.columns[2].width = Inches(5.8)
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(12.5)
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(10.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(3); cell.margin_bottom = Pt(3)
# ============================================================
# 31 — MULTIDISCIPLINARY TEAM ROLES
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Systems of Care", "Multidisciplinary Team Roles", 31)
tbl_rows = [
["Role", "Contribution", "Engages"],
["Gyn-Oncology", "Oncologic surveillance, surgical planning, hormonal decision authority", "Diagnosis through survivorship"],
["Radiation Oncology", "Treatment planning, acute toxicity management, dose/field counseling", "Pre-treatment through acute follow-up"],
["Pelvic Health PT", "Assessment, PFMT, biofeedback, dilator/manual therapy delivery", "Prehab through long-term survivorship"],
["Oncology Nursing", "Routine PFD screening, patient education, care coordination", "Every visit"],
["Psycho-Oncology / Sex Therapy", "Distress screening, relationship and intimacy counseling", "As triggered, ongoing PRN"],
["Primary Care", "Long-term surveillance continuity after oncology discharge", "Long-term survivorship"],
]
rows, cols = len(tbl_rows), 3
tbl_shape = s.shapes.add_table(rows, cols, Inches(0.5), Inches(1.55), Inches(12.3), Inches(5.05))
table = tbl_shape.table
table.columns[0].width = Inches(3.0); table.columns[1].width = Inches(5.7); table.columns[2].width = Inches(3.6)
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(3); cell.margin_bottom = Pt(3)
# ============================================================
# 32 — REFERRAL PATHWAY
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Systems of Care", "A Multidisciplinary Referral Pathway", 32)
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(1.75), box_w, Inches(1.6), col)
add_text(s, x + Inches(0.1), Inches(1.75), box_w - Inches(0.2), Inches(1.6), st, size=12, 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.35), 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.5), Inches(3.75), Inches(12.3), Inches(1.75), LIGHT)
add_text(s, Inches(0.8), Inches(3.9), Inches(11.6), Inches(0.4), "WHY REFERRAL RATES REMAIN LOW", size=13, color=CORAL, bold=True)
add_bullets(s, Inches(0.8), Inches(4.35), Inches(11.6), Inches(1.1), [
"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 PTs in some regions; no routine screening question built into follow-up visits",
], size=12.5)
add_rect(s, Inches(0.5), Inches(5.7), Inches(12.3), Inches(0.9), NAVY)
add_text(s, Inches(0.8), Inches(5.7), Inches(11.7), Inches(0.9),
"Discussion: In your setting, at what point does a survivor first get asked about pelvic floor symptoms, and what would move that conversation earlier?",
size=13, color=WHITE, italic=True, anchor=MSO_ANCHOR.MIDDLE)
# ============================================================
# 33 — SURVEILLANCE & EMERGING RESEARCH
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Systems of Care", "Long-Term Surveillance & Emerging Research", 33)
add_rect(s, Inches(0.5), Inches(1.6), Inches(5.95), Inches(4.9), LIGHT)
add_rect(s, Inches(0.5), Inches(1.6), Inches(5.95), Inches(0.6), TEAL)
add_text(s, Inches(0.8), Inches(1.6), Inches(5.3), Inches(0.6), "SURVEILLANCE CADENCE", size=14, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, Inches(0.8), Inches(2.4), Inches(5.4), Inches(3.9), [
"PFD screening question at every visit for the first 2 years post-treatment",
"Annual screening thereafter as part of routine survivorship care",
"Repeat objective measures (dilator log, PFDI-20) at each PT-involved visit",
"Re-screen sooner if new symptoms, life changes (new partner), or menopause transition occur",
], size=13)
add_rect(s, Inches(6.85), Inches(1.6), Inches(5.95), Inches(4.9), NAVY)
add_text(s, Inches(7.15), Inches(1.8), Inches(5.3), Inches(0.5), "EMERGING RESEARCH DIRECTIONS", size=14, color=GOLD, bold=True)
add_bullets(s, Inches(7.15), Inches(2.4), Inches(5.3), Inches(3.9), [
"Telehealth-delivered pelvic floor PT to improve access in rural/underserved areas",
"Standardized, protocolized rehabilitation programs to reduce study heterogeneity",
"Integration of patient-reported outcomes directly into survivorship care plans and EHRs",
"Prehabilitation trials specific to cervical cancer populations",
], size=13, color=WHITE, bullet_color=GOLD)
# ============================================================
# 34 — CASE RESOLUTION & TAKEAWAYS
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Bringing It Together", "Case Resolution & Key Takeaways", 34)
add_rect(s, Inches(0.5), Inches(1.55), Inches(5.95), Inches(5.05), LIGHT)
add_text(s, Inches(0.8), Inches(1.75), Inches(5.3), Inches(0.4), "HER CARE PLAN", size=14, color=TEAL, bold=True)
add_bullets(s, Inches(0.8), Inches(2.2), Inches(5.3), Inches(4.3), [
"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",
"Begin stepped sexual rehabilitation model, with partner included in dilator coaching",
"Loop back to gyn-oncology promptly if stenosis is severe or unresponsive",
], size=12.5)
add_rect(s, Inches(6.85), Inches(1.55), Inches(5.95), Inches(5.05), NAVY)
add_text(s, Inches(7.15), Inches(1.75), Inches(5.3), Inches(0.4), "FOUR TAKEAWAYS", size=14, color=GOLD, bold=True)
add_bullets(s, Inches(7.15), Inches(2.35), Inches(5.3), Inches(4.2), [
"Recovery is whole-person - bladder, bowel, pain, movement, and intimacy are interconnected, not separate issues",
"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 - anchored by prehabilitation and routine surveillance - improves quality of life outcomes",
], size=12.5, color=WHITE, bullet_color=GOLD)
# ============================================================
# 35 — 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_MERGED.pptx")
print("SAVED OK -", len(prs.slides._sldIdLst), "slides")
cd /tmp/workspace/cervical-cancer-pfr-presentation && python3 build_merged.py
| 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 |
Rebuilding the Base Pelvic Floor PT
Presentation · PPTX
Rebuilding the Base Pelvic Floor PT
Presentation · PPTX
[0:39-0:46] BIOFEEDBACK AND DILATOR THERAPY)Rebuilding the Base Pelvic Floor PT
Presentation · PPTX
Assessment PFMT Quick Reference Card
PDF Document · PDF
REPHRAS
Generate a merged presentation combining both decks with original diagrams
cd /tmp/workspace/cervical-cancer-pfr-presentation && python3 build_merged.py
~/cervical-cancer-pfr-presentation
~/cervical-cancer-pfr-presentation/build_merged.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
# ---------- 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)
PLUM = RGBColor(0x6B, 0x4E, 0x71)
SAGE = RGBColor(0x7A, 0x93, 0x6B)
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
TOTAL = 35
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_oval(slide, x, y, w, h, color):
shp = slide.shapes.add_shape(MSO_SHAPE.OVAL, x, y, w, h)
shp.fill.solid(); shp.fill.fore_color.rgb = color
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=14, color=GREY, bullet_color=TEAL,
font="Calibri", space_after=6, line_spacing=1.05):
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 = "\u2014 " if lvl > 0 else "\u2022 "
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
pPr = p._p.get_or_add_pPr()
pPr.set('marL', str(int(Inches(0.28 * lvl))))
pPr.set('indent', '0')
return tb
def header(slide, kicker, title, num):
add_rect(slide, 0, 0, SW, Inches(1.3), NAVY)
add_rect(slide, 0, Inches(1.3), SW, Pt(3), CORAL)
add_text(slide, Inches(0.5), Inches(0.15), Inches(9.5), Inches(0.32), kicker.upper(),
size=11.5, color=GOLD, bold=True)
add_text(slide, Inches(0.5), Inches(0.45), Inches(11.7), Inches(0.8), title,
size=23, color=WHITE, bold=True)
add_text(slide, Inches(12.15), Inches(0.15), Inches(0.9), Inches(0.4), f"{num:02d}",
size=15, color=WHITE, bold=True, align=PP_ALIGN.RIGHT)
add_text(slide, Inches(0.5), Inches(7.12), Inches(8.5), Inches(0.3),
"Rebuilding the Base | Healing Through Pelvic Floor Physical Therapy",
size=9, color=GREY, italic=True)
add_text(slide, Inches(11.9), Inches(7.12), Inches(1.0), Inches(0.3), f"{num}/{TOTAL}",
size=9, color=GREY, align=PP_ALIGN.RIGHT)
def footer_note(slide, text):
add_text(slide, Inches(0.5), Inches(6.72), Inches(12.3), Inches(0.4), text,
size=9.5, color=GREY, italic=True)
def two_col_cards(slide, cards, top=Inches(1.55), height=Inches(5.1)):
n = len(cards)
gap = Inches(0.3)
w = (SW - Inches(1.0) - gap*(n-1)) / n
for i, (title, col, items, txt_col) in enumerate(cards):
x = Inches(0.5) + i*(w+gap)
add_rect(slide, x, top, w, height, LIGHT)
add_rect(slide, x, top, w, Inches(0.55), col)
add_text(slide, x + Inches(0.18), top, w - Inches(0.36), Inches(0.55), title, size=13.5,
color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE, line_spacing=1.0)
add_bullets(slide, x + Inches(0.22), top + Inches(0.72), w - Inches(0.4), height - Inches(0.9),
items, size=12, color=txt_col, bullet_color=col)
def labeled_box_diagram(slide, x, y, w, h, title_text, title_color, labels):
add_rect(slide, x, y, w, h, LIGHT)
add_rect(slide, x, y, w, Inches(0.5), title_color)
add_text(slide, x + Inches(0.15), y, w - Inches(0.3), Inches(0.5), title_text, size=13,
color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE)
row_h = (h - Inches(0.6)) / max(len(labels), 1)
for i, lab in enumerate(labels):
ry = y + Inches(0.6) + i*row_h
dot = add_oval(slide, x + Inches(0.18), ry + row_h/2 - Inches(0.06), Inches(0.12), Inches(0.12), title_color)
add_text(slide, x + Inches(0.42), ry, w - Inches(0.55), row_h, lab, size=10.8, color=GREY,
anchor=MSO_ANCHOR.MIDDLE, line_spacing=1.0)
# ============================================================
# 1 - TITLE
# ============================================================
s = add_slide(); set_bg(s, NAVY)
add_rect(s, 0, Inches(4.6), SW, Inches(2.9), TEAL)
add_rect(s, 0, Inches(4.56), SW, Pt(4), CORAL)
add_text(s, Inches(0.9), Inches(1.0), Inches(11.5), Inches(0.5), "CONFERENCE SESSION \u00b7 COMPREHENSIVE CLINICAL PROGRAM",
size=14.5, color=GOLD, bold=True)
add_text(s, Inches(0.9), Inches(1.55), Inches(11.6), Inches(1.4), "Rebuilding the Base",
size=48, color=WHITE, bold=True)
add_text(s, Inches(0.9), Inches(2.65), Inches(11.6), Inches(1.0),
"Healing Through Pelvic Floor Physical Therapy in\nCervical Cancer Survivorship",
size=23, color=WHITE, bold=False, line_spacing=1.1)
add_text(s, Inches(0.9), Inches(3.85), Inches(11.4), Inches(0.55),
"A whole-person, multidisciplinary clinical curriculum",
size=15, color=RGBColor(0xE3,0xEC,0xEC), italic=True)
add_text(s, Inches(0.9), Inches(4.85), Inches(11.4), Inches(0.5),
"From pelvic floor anatomy and evaluation through remedial therapy and long-term survivorship care",
size=14, color=WHITE)
add_text(s, Inches(0.9), Inches(5.3), Inches(11.4), Inches(0.6),
"For gyn-oncology, radiation oncology, pelvic health physiotherapy, oncology nursing,\nand psycho-oncology teams",
size=13, color=RGBColor(0xE3,0xEC,0xEC), line_spacing=1.2)
add_text(s, Inches(0.9), Inches(6.6), Inches(11.4), Inches(0.5),
"Presenter Name \u00b7 Credentials \u00b7 Institution \u00b7 Conference / Date", size=13, color=RGBColor(0xDD,0xE7,0xE8))
# ============================================================
# 2 - AGENDA
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Session Roadmap", "Session Agenda", 2)
agenda = [
("Whole-Person Framing", "Recovery beyond the pelvic floor alone: bladder, bowel, pain, movement, intimacy"),
("Foundations", "Layered anatomy, nerves & lymphatics, burden, treatment-effect timelines, fibrosis"),
("Assessment", "Consent-forward exam, movement/breathing screen, outcome measures"),
("Prehabilitation", "Pre-treatment counseling and baseline conditioning"),
("Remedial Toolkit", "PFMT, manual therapy, dilators, biofeedback, breathing & pain science"),
("Organ-Specific Management", "Bladder dysfunction, bowel dysfunction / proctitis"),
("Self-Management & Sexual Health", "Home programs, partner communication"),
("Systems of Care", "Team roles, referral pathways, surveillance, synthesis"),
]
y = Inches(1.5); row_h = Inches(0.68)
for i, (title, desc) in enumerate(agenda):
ypos = y + i*row_h
add_rect(s, Inches(0.5), ypos+Inches(0.04), Inches(0.14), Inches(0.52), CORAL if i%2==0 else TEAL)
add_text(s, Inches(0.8), ypos, Inches(3.5), Inches(0.62), title, size=14, color=NAVY, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_text(s, Inches(4.5), ypos, Inches(8.2), Inches(0.62), desc, size=12, color=GREY, anchor=MSO_ANCHOR.MIDDLE)
add_text(s, Inches(0.5), Inches(6.9), Inches(12.2), Inches(0.3),
"Merged from two source presentations. Anatomy/technique visuals are original diagrams built for this deck.",
size=9.5, color=GREY, italic=True)
# ============================================================
# 3 - LEARNING OBJECTIVES
# ============================================================
s = add_slide(); set_bg(s)
header(s, "By the end of this session", "Learning Objectives", 3)
objs = [
"Frame pelvic floor recovery as part of whole-person survivorship, not an isolated muscular issue.",
"Describe layered pelvic floor anatomy, innervation, and lymphatic pathways relevant to cancer treatment.",
"Explain mechanisms and timelines (short- vs. long-term) of PFD after surgery, radiation, chemo, and systemic therapy.",
"Apply a structured, consent-forward assessment framework, including validated outcome measures.",
"Select remedial interventions matched to hypertonic vs. hypotonic presentations.",
"Manage organ-specific complications and integrate care into a multidisciplinary survivorship pathway.",
]
for i, o in enumerate(objs):
col = i % 2; row = i // 2
x = Inches(0.5) + col*Inches(6.25)
ypos = Inches(1.55) + row*Inches(1.75)
circ = add_oval(s, x, ypos, Inches(0.5), Inches(0.5), CORAL)
add_text(s, x, ypos, Inches(0.5), Inches(0.5), str(i+1), size=17, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
add_text(s, x+Inches(0.7), ypos-Inches(0.05), Inches(5.4), Inches(1.55), o, size=13.5, color=NAVY, line_spacing=1.15)
# ============================================================
# 4 - WHOLE-PERSON FRAMING
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Foundations", "Recovery Is Whole-Person, Not Just \u201cPelvic Floor\u201d", 4)
add_text(s, Inches(0.5), Inches(1.55), Inches(12.2), Inches(0.5),
"Cancer treatment can touch every system that intersects the pelvis - framing this early sets the tone for the whole session.",
size=13.5, color=GREY, italic=True)
domains = [("Bladder", TEAL), ("Bowel", CORAL), ("Pain", NAVY), ("Movement", GOLD), ("Intimacy & Participation", PLUM)]
n = len(domains); box_w = Inches(2.25); gap = Inches(0.25)
total_w = n*box_w + (n-1)*gap
start_x = (SW - total_w)/2
for i, (d, col) in enumerate(domains):
x = start_x + i*(box_w+gap)
add_rect(s, x, Inches(2.3), box_w, Inches(1.4), col)
add_text(s, x, Inches(2.3), box_w, Inches(1.4), d, size=14, color=WHITE, bold=True,
align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE, line_spacing=1.05)
add_bullets(s, Inches(0.5), Inches(4.1), Inches(12.2), Inches(2.7), [
"These domains are interconnected, not separate checklists - a bladder symptom, a bowel symptom, and a sexual health concern in the same patient often share one root cause",
"Whole-person framing gives clinicians permission to ask about all five domains in one visit, rather than waiting for the patient to raise each one separately",
"This reframing also reduces patient shame: symptoms are presented as an expected, treatable part of recovery - not an isolated, embarrassing complaint",
], size=14)
# ============================================================
# 5 - OPENING CASE
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Framing Case - Return to This at the Close", "Meet Our Patient", 5)
add_rect(s, Inches(0.5), Inches(1.6), Inches(5.65), Inches(4.95), LIGHT)
add_rect(s, Inches(0.5), Inches(1.6), Inches(0.12), Inches(4.95), CORAL)
add_text(s, Inches(0.9), Inches(1.85), Inches(4.9), Inches(0.5), "CASE VIGNETTE", size=13, color=CORAL, bold=True)
add_bullets(s, Inches(0.9), Inches(2.3), Inches(4.9), Inches(4.1), [
"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",
"Partner is supportive but unsure how to help",
], size=13.5)
add_rect(s, Inches(6.4), Inches(1.6), Inches(6.35), Inches(4.95), TEAL)
add_text(s, Inches(6.75), Inches(1.85), Inches(5.6), Inches(0.5), "DISCUSSION PROMPT", size=13, color=GOLD, bold=True)
add_text(s, Inches(6.75), Inches(2.4), Inches(5.6), Inches(4.0),
"What would happen to this patient in your clinic today?\n\n"
"\u2022 Would PFD be screened for at this visit?\n"
"\u2022 Who would she be referred to, and how quickly?\n"
"\u2022 What would a first pelvic floor PT visit look like?\n"
"\u2022 How would her partner be included in her plan?\n\n"
"Hold your answer - we will build her plan together\nat the end of this session.",
size=14, color=WHITE, line_spacing=1.25)
# ============================================================
# 6 - PELVIC FLOOR ANATOMY OVERVIEW
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Foundations", "Pelvic Floor Anatomy: The Overview", 6)
add_bullets(s, Inches(0.5), Inches(1.6), Inches(6.1), Inches(4.9), [
"The pelvic floor is a muscular and fascial 'hammock' spanning the pelvic outlet, supporting the bladder, uterus/vagina, and rectum",
"Composed of three functional layers, from superficial to deep - we'll walk through each on the next two slides",
"Anatomy is presented in layers because symptoms map predictably onto which layer or structure is affected",
"Endopelvic fascia (cardinal and uterosacral ligaments) provides passive apical support alongside the active muscular layers",
], size=13.5)
add_rect(s, Inches(6.9), Inches(1.6), Inches(5.9), Inches(4.9), NAVY)
add_text(s, Inches(7.2), Inches(1.8), Inches(5.3), Inches(0.5), "WHY THIS MATTERS CLINICALLY", size=13.5, color=GOLD, bold=True)
add_bullets(s, Inches(7.2), Inches(2.4), Inches(5.3), Inches(3.9), [
"Radical hysterectomy dissection planes run directly through the autonomic nerve plexus supplying bladder and rectum",
"Radiation fields overlap substantially with levator ani, vaginal canal, bladder trigone, and anterior rectal wall",
"Understanding these overlaps explains why urinary, bowel, and sexual symptoms so often co-occur rather than appearing in isolation",
], size=13, color=WHITE, bullet_color=GOLD)
# ============================================================
# 7 - ANATOMY IN LAYERS: SUPERFICIAL & UROGENITAL DIAPHRAGM
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Foundations \u00b7 Anatomy in Layers", "Layer 1-2: Superficial Perineum & Urogenital Diaphragm", 7)
labeled_box_diagram(s, Inches(0.5), Inches(1.6), Inches(5.95), Inches(5.0),
"LAYER 1 - SUPERFICIAL PERINEAL MUSCLES", TEAL, [
"Ischiocavernosus",
"Bulbospongiosus",
"Superficial transverse perineal muscle",
"Contributes to sexual response and perineal support",
])
labeled_box_diagram(s, Inches(6.85), Inches(1.6), Inches(5.95), Inches(5.0),
"LAYER 2 - UROGENITAL DIAPHRAGM", CORAL, [
"Deep transverse perineal muscle",
"Compressor urethrae",
"Urethral sphincter mechanism",
"Provides urethral support and voluntary continence coordination",
])
# ============================================================
# 8 - ANATOMY IN LAYERS: PELVIC DIAPHRAGM, NERVES & LYMPHATICS
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Foundations \u00b7 Anatomy in Layers", "Layer 3: Pelvic Diaphragm - Plus Nerves & Lymphatics", 8)
labeled_box_diagram(s, Inches(0.5), Inches(1.6), Inches(5.95), Inches(5.0),
"LAYER 3 - DEEP PELVIC DIAPHRAGM & WALL", NAVY, [
"Levator ani: puborectalis, pubococcygeus, iliococcygeus",
"Coccygeus",
"Piriformis and obturator internus (pelvic wall muscles)",
"Primary structural support for pelvic organs",
])
labeled_box_diagram(s, Inches(6.85), Inches(1.6), Inches(5.95), Inches(5.0),
"NERVES & LYMPHATIC PATHWAYS", GOLD, [
"Pudendal nerve - somatic, sphincter control and sensation",
"Pelvic splanchnic nerves & hypogastric plexus - autonomic, bladder/bowel/sexual function",
"Pelvic lymphatic pathways - disrupted by lymph node dissection or radiation",
"Lymphatic disruption contributes to lower-limb or genital lymphedema risk - screen for this too",
])
footer_note(s, "Cancer treatment can affect sensation, motor control, tissue mobility, and lymphatic flow through any of these pathways.")
# ============================================================
# 9 - BURDEN & PREVALENCE
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Foundations", "Burden & Prevalence", 9)
stats = [
("\u2191", "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.5) + i * Inches(4.17)
add_rect(s, x, Inches(1.65), xw, Inches(2.3), col)
add_text(s, x, Inches(1.8), xw, Inches(0.9), big, size=38, color=WHITE, bold=True, align=PP_ALIGN.CENTER)
add_text(s, x + Inches(0.25), Inches(2.75), xw - Inches(0.5), Inches(1.1), small, size=12.5, color=WHITE,
align=PP_ALIGN.CENTER, line_spacing=1.1)
add_bullets(s, Inches(0.5), Inches(4.15), Inches(12.2), Inches(2.4), [
"PFD is frequently under-recognized in routine oncology follow-up because urinary, bowel, and sexual symptom screening is not consistently built into visit templates",
"Symptom burden often persists or worsens over time with radiation fibrosis, unlike acute surgical effects which may partially resolve - long-term surveillance is essential, not optional",
"Quality-of-life impact extends beyond physical symptoms to relationship strain, anxiety, and reduced engagement in survivorship care overall",
], size=13.5)
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.")
# ============================================================
# 10 - TREATMENT EFFECTS: SURGERY
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Foundations \u00b7 Treatment Effects", "Surgery: Short-Term vs. Long-Term Effects", 10)
cards = [
("Short-Term (weeks)", TEAL, [
"Post-operative pain and guarding",
"Reduced range of motion",
"Acute weakness and altered sensation",
"Catheter-related bladder retraining needs",
], GREY),
("Long-Term (months-years)", CORAL, [
"Persistent hypotonic bladder from autonomic nerve injury",
"Constipation from pelvic plexus disruption",
"Fascial/levator weakness - risk correlates with radicality (Querleu-Morrow type)",
"Compensatory musculoskeletal pain (hip, low back)",
], GREY),
]
two_col_cards(s, cards, top=Inches(1.6), height=Inches(4.9))
# ============================================================
# 11 - TREATMENT EFFECTS: RADIATION, CHEMO, SYSTEMIC
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Foundations \u00b7 Treatment Effects", "Radiation, Chemotherapy & Systemic Therapies", 11)
cards = [
("Radiation - Short-Term", TEAL, ["Inflammation, mucosal edema", "Dryness, mild discomfort", "Fatigue"], GREY),
("Radiation - Long-Term", CORAL, ["Progressive fibrosis, stenosis", "Hypertonicity and guarding", "Dose/field-dependent severity"], GREY),
("Chemo & Systemic Therapies", NAVY, ["Mucosal atrophy, accelerated ovarian failure", "Fatigue, GI symptoms", "Hormonal + targeted/immune therapy effects compound fibrosis-related dryness"], WHITE),
]
two_col_cards(s, cards, top=Inches(1.6), height=Inches(4.9))
# ============================================================
# 12 - RADIATION-INDUCED FIBROSIS PATHOPHYSIOLOGY
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Foundations \u00b7 Deep Dive", "Radiation-Induced Fibrosis: The Pathophysiology", 12)
phases = [
("Acute Phase\n(days-weeks)", TEAL, ["Inflammation and mucosal edema", "Capillary injury, increased permeability", "Symptoms: dryness, mild discomfort"], WHITE),
("Subacute Phase\n(weeks-months)", GOLD, ["Ongoing microvascular injury", "Early collagen deposition begins", "Reduced tissue elasticity emerges"], NAVY),
("Chronic Phase\n(months-years)", CORAL, ["Progressive fibrosis and vascular occlusion", "Vaginal shortening/stenosis, hypertonicity", "Pain and guarding become self-reinforcing"], WHITE),
]
two_col_cards(s, phases, top=Inches(1.55), height=Inches(3.1))
add_rect(s, Inches(0.5), Inches(4.85), Inches(12.3), Inches(1.75), NAVY)
add_text(s, Inches(0.8), Inches(5.0), Inches(11.6), Inches(0.4), "THE VICIOUS CYCLE - WHY EARLY INTERVENTION MATTERS", size=13, color=GOLD, bold=True)
add_text(s, Inches(0.8), Inches(5.45), Inches(11.6), Inches(1.05),
"Fibrosis reduces tissue compliance \u2192 this drives pain and guarding \u2192 guarding reduces blood flow and stretch to the tissue \u2192 "
"which accelerates further fibrosis. Interrupting this cycle early (dilator use, manual therapy, down-training) before stenosis is established "
"is far more effective than treating established chronic stenosis.",
size=12.5, color=WHITE, line_spacing=1.25)
# ============================================================
# 13 - GSM SPOTLIGHT
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Foundations \u00b7 Spotlight", "Genitourinary Syndrome of Menopause (GSM)", 13)
add_rect(s, Inches(0.5), Inches(1.7), Inches(12.3), Inches(1.5), LIGHT)
add_text(s, Inches(0.8), Inches(1.85), Inches(11.7), Inches(1.2),
"GSM is a chronic, progressive condition related to estrogen deficiency that affects the vulva, vagina, and lower urinary tract. "
"In cervical cancer survivors, treatment-induced menopause (surgical, chemotherapy-related, or radiation-related ovarian failure) "
"can bring on GSM earlier and more abruptly than natural menopause.",
size=13.5, color=GREY, line_spacing=1.25)
add_bullets(s, Inches(0.5), Inches(3.5), Inches(6.0), Inches(3.0), [
"Symptoms: dryness, burning, irritation, dyspareunia, urinary urgency/frequency, recurrent UTIs",
"Overlaps heavily with radiation fibrosis symptoms - both must be considered together, not treated as separate problems",
"Often under-diagnosed because it is assumed to simply be a 'radiation effect'",
], size=13.5)
add_rect(s, Inches(6.85), Inches(3.5), Inches(5.95), Inches(3.0), TEAL)
add_text(s, Inches(7.15), Inches(3.65), Inches(5.3), Inches(0.4), "MANAGEMENT CONSIDERATIONS", size=13, color=GOLD, bold=True)
add_bullets(s, Inches(7.15), Inches(4.1), Inches(5.3), Inches(2.3), [
"Non-hormonal moisturizers/lubricants as first-line, low-risk option",
"Local (vaginal) estrogen where oncologically appropriate - shared decision with gyn-oncology",
"Pelvic floor PT addresses the muscular/fascial component alongside any hormonal treatment",
], size=13, color=WHITE, bullet_color=GOLD)
# ============================================================
# 14 - ASSESSMENT FRAMEWORK
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Assessment", "A Structured, Consent-Forward Assessment Framework", 14)
domains = ["Urinary", "Anorectal", "Sexual", "Pain / MSK"]
for i, d in enumerate(domains):
x = Inches(0.5) + i * Inches(3.1)
add_rect(s, x, Inches(1.55), Inches(2.85), Inches(0.62), NAVY)
add_text(s, x, Inches(1.55), Inches(2.85), Inches(0.62), d, size=13.5, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, Inches(0.5), Inches(2.45), Inches(6.0), Inches(3.9), [
"Structured symptom review across all four domains at every survivorship visit, not only when volunteered",
"Evaluation begins with the patient's main concern and what she wants to return to - not a generic checklist",
"Examination may be internal, external, or both - always explain what, why, and obtain explicit consent before proceeding, and stop at any time on request",
"Differentiate hypertonic (guarding) vs. hypotonic (weak) pelvic floor - the single most important treatment-direction decision",
], size=12.8)
add_rect(s, Inches(6.8), Inches(2.45), Inches(5.95), Inches(3.9), CORAL)
add_text(s, Inches(7.1), Inches(2.6), Inches(5.3), Inches(0.5), "RED FLAGS - REFER OUT FIRST", size=13, color=WHITE, bold=True)
add_bullets(s, Inches(7.1), Inches(3.15), Inches(5.3), Inches(3.0), [
"New pain or bleeding \u2192 recurrence workup before starting PT",
"Suspected fistula \u2192 surgical/gyn-oncology referral, not pelvic floor therapy first",
"Severe, progressive stenosis unresponsive to conservative care \u2192 gyn-onc review",
], size=13, color=WHITE, bullet_color=WHITE)
# ============================================================
# 15 - EVALUATION IN PRACTICE
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Assessment", "Evaluation in Practice: History, Movement & Breathing", 15)
cards = [
("Comprehensive History", TEAL, [
"Main concern and functional goals first",
"Medical, surgical, and treatment timeline",
"Bladder, bowel, sexual, and pain screening",
], GREY),
("Movement & Postural Screen", CORAL, [
"Whole-body screen, not pelvis-only",
"Treatment may affect strength, mobility, balance",
"Breathing pattern observed as part of this screen",
], GREY),
("Breathing-Abdominal Wall-PF Coordination", NAVY, [
"Diaphragm, abdominal wall, transversus abdominis, and pelvic floor work as one coordinated system",
"Dysfunction in one often shows up as compensation in another",
], WHITE),
]
two_col_cards(s, cards, top=Inches(1.6), height=Inches(4.9))
# ============================================================
# 16 - PF MUSCLE EXAM: CONSENT, SETUP & GRADING
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Assessment", "Pelvic Floor Muscle Exam: Consent, Setup & Grading", 16)
add_rect(s, Inches(0.5), Inches(1.6), Inches(5.95), Inches(5.0), LIGHT)
add_rect(s, Inches(0.5), Inches(1.6), Inches(5.95), Inches(0.55), NAVY)
add_text(s, Inches(0.8), Inches(1.6), Inches(5.3), Inches(0.55), "CONSENT & SETUP", size=13.5, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, Inches(0.8), Inches(2.35), Inches(5.4), Inches(4.1), [
"Explain the exam clearly before beginning; obtain explicit verbal consent",
"Offer the option of internal, external, or both - patient chooses",
"Patient may stop the exam at any point, for any reason, without justification",
"Gentle single-digit exam first for irradiated tissue; assess stenosis, adhesions, trophic changes, trigger points, vaginal caliber/length",
], size=12.5)
add_rect(s, Inches(6.85), Inches(1.6), Inches(5.95), Inches(5.0), LIGHT)
add_rect(s, Inches(6.85), Inches(1.6), Inches(5.95), Inches(0.55), TEAL)
add_text(s, Inches(7.15), Inches(1.6), Inches(5.3), Inches(0.55), "MODIFIED OXFORD SCALE (GRADING)", size=13.5, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE)
mo = [
"0 - No discernible contraction", "1 - Flicker / trace of contraction",
"2 - Weak contraction, no lift", "3 - Moderate contraction, slight lift felt",
"4 - Good contraction with lift, held against resistance",
"5 - Strong contraction, sustained lift against resistance",
]
add_bullets(s, Inches(7.15), Inches(2.3), Inches(5.4), Inches(4.1), mo, size=12.5, bullet_color=TEAL)
# ============================================================
# 17 - VALIDATED OUTCOME MEASURES
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Assessment", "Validated Outcome Measures & Assessment Tools", 17)
tbl_rows = [
["Tool", "Domain", "Use"],
["PFDI-20", "Pelvic floor distress (urinary, bowel, prolapse)", "Baseline and serial tracking of overall PFD burden"],
["FSFI (Female Sexual Function Index)", "Sexual function", "Screens desire, arousal, lubrication, pain, satisfaction"],
["ICIQ-UI Short Form", "Urinary incontinence", "Quantifies severity and impact of leakage"],
["FACT-Cx / FACT/GOG-Ntx", "Cancer-specific quality of life", "Captures broader survivorship QoL alongside PFD-specific tools"],
["Vaginal length/caliber measurement", "Structural stenosis", "Objective tracking of dilator therapy progress"],
]
rows, cols = len(tbl_rows), 3
tbl_shape = s.shapes.add_table(rows, cols, Inches(0.5), Inches(1.6), Inches(12.3), Inches(4.3))
table = tbl_shape.table
table.columns[0].width = Inches(3.2); table.columns[1].width = Inches(3.9); table.columns[2].width = Inches(5.2)
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(3); cell.margin_bottom = Pt(3)
footer_note(s, "Pair one questionnaire with one objective exam measure (Modified Oxford Scale, previous slide) and use both consistently at baseline and follow-up.")
# ============================================================
# 18 - PREHABILITATION
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Prehabilitation", "Prehabilitation: Getting Ahead of the Damage", 18)
add_bullets(s, Inches(0.5), Inches(1.6), Inches(6.0), Inches(5.0), [
"Concept: initiate pelvic floor counseling and baseline assessment at diagnosis, before radiotherapy or surgery begins",
"Baseline PFMT and pelvic floor awareness training before treatment establishes a comparison point and may build resilience",
"Pre-treatment education on dilator use and expectations reduces the 'unknown fear' factor and improves later adherence",
"Overlaps with fertility/ovarian preservation counseling - same visit window, same multidisciplinary conversation",
"Extrapolated from prehabilitation evidence in other pelvic malignancies (e.g., colorectal, prostate) showing improved post-treatment functional outcomes",
], size=13.5)
add_rect(s, Inches(6.8), Inches(1.6), Inches(6.0), Inches(5.0), TEAL)
add_text(s, Inches(7.1), Inches(1.8), Inches(5.4), Inches(0.5), "PRACTICAL PREHAB CHECKLIST", size=13.5, color=GOLD, bold=True)
add_bullets(s, Inches(7.1), Inches(2.4), Inches(5.4), Inches(4.0), [
"Baseline pelvic floor symptom questionnaire completed before treatment starts",
"One-time pelvic health PT education visit scheduled during treatment planning",
"Written/verbal expectations set: timeline for dilator initiation post-radiation",
"Point of contact identified for symptoms that arise during treatment",
], size=13, color=WHITE, bullet_color=GOLD)
# ============================================================
# 19 - SECTION DIVIDER - REMEDIAL TOOLKIT
# ============================================================
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), "CORE CLINICAL CONTENT", 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=36, 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 toolkit - matched to presentation",
size=17, color=WHITE, italic=True)
add_bullets(s, Inches(0.8), Inches(4.6), Inches(11.5), Inches(2.4), [
"Pelvic floor muscle training (strengthening vs. down-training)",
"Manual therapy, self-release & scar mobilization",
"Vaginal dilator therapy protocols",
"Biofeedback-guided retraining",
"Diaphragmatic breathing & pain neuroscience education",
"Organ-specific management: bladder, bowel/proctitis",
], size=15.5, color=WHITE, bullet_color=GOLD)
# ============================================================
# 20 - PFMT MATCHING PRESENTATION
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Remedial Toolkit", "Pelvic Floor Muscle Training: Matching the Presentation", 20)
add_text(s, Inches(0.5), Inches(1.5), Inches(12.3), Inches(0.4),
"\"More Kegels\" is not always correct. Direction of training depends on tone, not diagnosis alone.",
size=14, color=GREY, italic=True)
cols = [
("Hypotonic / Weak Presentation", TEAL, [
"Typically post-surgical nerve/fascial disruption",
"Graded strengthening (Kegel-based) protocols, 3 sets of 8-12 reps, progressing hold time",
"Progressive endurance and power training",
"Functional integration: bracing with cough, lifting, exertion",
"Reassess with Modified Oxford Scale every 4-6 weeks",
], GREY),
("Hypertonic / Guarded Presentation", CORAL, [
"Typically post-radiation fibrosis and pain-driven guarding",
"Down-training and relaxation strategies first - no strengthening until guarding resolves",
"Diaphragmatic breathing paired with pelvic floor release",
"Manual release and stretching precede any active exercise",
"Reassess tone and pain, not just strength, at follow-up",
], GREY),
]
for i, (t, col, items, txt_col) in enumerate(cols):
x = Inches(0.5) + i * Inches(6.25)
add_rect(s, x, Inches(2.05), Inches(5.95), Inches(4.5), LIGHT)
add_rect(s, x, Inches(2.05), Inches(5.95), Inches(0.6), col)
add_text(s, x + Inches(0.22), Inches(2.05), Inches(5.5), Inches(0.6), t, size=14.5, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, x + Inches(0.25), Inches(2.85), Inches(5.5), Inches(3.6), items, size=12.5, bullet_color=col, color=txt_col)
# ============================================================
# 21 - MANUAL THERAPY, SELF-RELEASE & SCAR MOBILIZATION
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Remedial Toolkit", "Manual Therapy, Self-Release & Scar Mobilization", 21)
cards = [
("Manual Therapy", TEAL, [
"Gentle hands-on technique to reduce tension, tenderness, and tissue restriction",
"Internal and external myofascial release for scar tissue, adhesions, trigger points",
"Connective tissue mobilization along irradiated fields",
], GREY),
("Self-Release (Home)", CORAL, [
"Taught only after clinician assessment and demonstration of a safe technique",
"Empowers patients between visits",
"Reinforces manual therapy gains",
], GREY),
("Scar & Abdominal Mobilization", NAVY, [
"Gentle hands-on work improving movement of skin, connective tissue, abdominal muscles",
"Targets surgical scar restriction contributing to fascial tension",
"Pace to tissue tolerance - irradiated tissue responds differently",
], WHITE),
]
two_col_cards(s, cards, top=Inches(1.6), height=Inches(4.9))
# ============================================================
# 22 - VAGINAL DILATOR THERAPY PROTOCOL
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Remedial Toolkit", "Vaginal Dilator Therapy Protocol", 22)
add_rect(s, Inches(0.5), Inches(1.6), Inches(5.95), Inches(5.0), LIGHT)
add_rect(s, Inches(0.5), Inches(1.6), Inches(5.95), Inches(0.55), NAVY)
add_text(s, Inches(0.8), Inches(1.6), Inches(5.3), Inches(0.55), "WHAT & WHY", size=13.5, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, Inches(0.8), Inches(2.35), Inches(5.4), Inches(4.1), [
"Therapeutic tools in progressive sizes used to support tolerance of stretch and accommodation within the vaginal canal",
"A graded set allows systematic progression rather than an all-or-nothing approach",
"Combined with pelvic floor exercises, improves vaginal length, muscle strength, and quality of life",
], size=13)
add_rect(s, Inches(6.85), Inches(1.6), Inches(5.95), Inches(5.0), LIGHT)
add_rect(s, Inches(6.85), Inches(1.6), Inches(5.95), Inches(0.55), TEAL)
add_text(s, Inches(7.15), Inches(1.6), Inches(5.3), Inches(0.55), "PROTOCOL", size=13.5, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, Inches(7.15), Inches(2.35), Inches(5.4), Inches(4.1), [
"Start early - ideally before or immediately after radiotherapy completion",
"Minimum 3x/week, 5-10 minutes; consistency beats intensity",
"Pair with water-based lubricant; avoid during active mucositis flares",
"Address adherence barriers with compassionate, direct counseling; normalize the tool clinically",
], size=13)
footer_note(s, "Devan Moy N, Simarro Gonzalez MC. Rehabilitacion. 2025 (PMID 39765163); Barcellini A et al., 2022 - dilator + PFMT program improved vaginal length, strength, HRQoL.")
# ============================================================
# 23 - BIOFEEDBACK
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Remedial Toolkit", "Biofeedback-Guided Retraining", 23)
add_bullets(s, Inches(0.5), Inches(1.7), Inches(12.2), Inches(3.0), [
"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",
"Typical course: 6-8 sessions, weekly, with home practice between visits",
], size=16, bullet_color=TEAL)
add_rect(s, Inches(0.5), Inches(5.0), Inches(12.3), Inches(1.5), TEAL)
add_text(s, Inches(0.8), Inches(5.15), Inches(11.7), Inches(1.2),
"Clinical tip: pair biofeedback sessions with the same objective measures used at intake (Modified Oxford Scale, symptom diary) "
"so patients can see progress that they cannot yet feel on their own.",
size=13.5, color=WHITE, italic=True, line_spacing=1.2)
# ============================================================
# 24 - DIAPHRAGMATIC BREATHING & PAIN NEUROSCIENCE EDUCATION
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Remedial Toolkit", "Diaphragmatic Breathing & Pain Neuroscience Education", 24)
add_rect(s, Inches(0.5), Inches(1.6), Inches(5.95), Inches(5.0), LIGHT)
add_rect(s, Inches(0.5), Inches(1.6), Inches(5.95), Inches(0.55), TEAL)
add_text(s, Inches(0.8), Inches(1.6), Inches(5.3), Inches(0.55), "DIAPHRAGMATIC BREATHING", size=13.5, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, Inches(0.8), Inches(2.35), Inches(5.4), Inches(4.1), [
"Foundational coordination strategy: diaphragm, abdominal wall, and pelvic floor move together",
"Helps tight or painful muscles relax before active exercise begins",
"Simple starting point patients can practice anywhere, immediately",
"Bridges directly into down-training for hypertonic presentations",
], size=13)
add_rect(s, Inches(6.85), Inches(1.6), Inches(5.95), Inches(5.0), NAVY)
add_text(s, Inches(7.15), Inches(1.8), Inches(5.3), Inches(0.5), "PAIN NEUROSCIENCE EDUCATION", size=13.5, color=GOLD, bold=True)
add_bullets(s, Inches(7.15), Inches(2.4), Inches(5.3), Inches(4.0), [
"Reframe pain as a sensitized nervous system response, not solely ongoing tissue damage",
"Reduces fear-avoidance behaviors around intimacy and movement",
"Use simple analogies (e.g., 'alarm system stuck on') rather than technical jargon",
"Delivered collaboratively - physical therapist, psychology, and sexual health specialist",
], size=13, color=WHITE, bullet_color=GOLD)
# ============================================================
# 25 - BLADDER DYSFUNCTION TARGETED MANAGEMENT
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Organ-Specific Management", "Bladder Dysfunction: Targeted Management", 25)
cards = [
("Neurogenic / Post-Surgical Bladder", TEAL, [
"Hypogastric plexus injury from radical hysterectomy",
"Hypotonic bladder, incomplete emptying, retention",
"Timed voiding, double-voiding technique",
"Clean intermittent catheterization if retention significant",
], GREY),
("Radiation Cystitis", CORAL, [
"Urgency, frequency, occasionally hematuria",
"Mucosal inflammation, reduced bladder capacity",
"Bladder retraining, urgency suppression techniques",
"Anticholinergics/beta-3 agonists under gyn-onc/urology guidance",
], GREY),
("Stress Incontinence Component", NAVY, [
"Weakness from fascial/levator disruption",
"PFMT strengthening protocols (hypotonic pathway)",
"Biofeedback to improve motor control",
"Consider urogynecology referral if refractory",
], WHITE),
]
two_col_cards(s, cards, top=Inches(1.6), height=Inches(4.9))
# ============================================================
# 26 - BOWEL DYSFUNCTION & RADIATION PROCTITIS
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Organ-Specific Management", "Bowel Dysfunction & Radiation Proctitis", 26)
add_rect(s, Inches(0.5), Inches(1.6), Inches(5.95), Inches(4.9), LIGHT)
add_rect(s, Inches(0.5), Inches(1.6), Inches(5.95), Inches(0.6), CORAL)
add_text(s, Inches(0.8), Inches(1.6), Inches(5.3), Inches(0.6), "RADIATION PROCTITIS", size=14, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, Inches(0.8), Inches(2.4), Inches(5.4), Inches(3.9), [
"Mucosal inflammation, telangiectasia formation, and bleeding",
"Urgency and tenesmus are common, may mimic recurrence - warrants endoscopic evaluation for bleeding",
"Acute proctitis (weeks) vs. chronic radiation proctopathy (months-years) require different management",
"Refer to GI for endoscopic assessment if bleeding is new or progressive",
], size=13.5)
add_rect(s, Inches(6.85), Inches(1.6), Inches(5.95), Inches(4.9), LIGHT)
add_rect(s, Inches(6.85), Inches(1.6), Inches(5.95), Inches(0.6), TEAL)
add_text(s, Inches(7.15), Inches(1.6), Inches(5.3), Inches(0.6), "FUNCTIONAL BOWEL MANAGEMENT", size=14, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, Inches(7.15), Inches(2.4), Inches(5.4), Inches(3.9), [
"Dietary modification: low-residue diet during flares, gradual fiber reintroduction",
"Anti-diarrheal agents and bulking agents as appropriate",
"Pelvic floor retraining for urgency/incontinence - coordination training, not just strength",
"Chronic radiation enteritis may cause malabsorption - consider nutrition referral",
], size=13.5)
# ============================================================
# 27 - ADJUNCT THERAPIES
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Remedial Toolkit", "Adjunct Therapies", 27)
adj = [
("Topical & Hormonal Support", "Vaginal moisturizers/lubricants for dryness; local estrogen where oncologically appropriate - a shared decision with gyn-oncology (see GSM spotlight, earlier)."),
("Bowel & Bladder Retraining", "Urgency suppression strategies, timed voiding, dietary fiber and fluid coaching for post-radiation bowel symptoms - see organ-specific slides for detail."),
("Graded Sexual Rehabilitation", "Stepwise return to intimacy: non-penetrative touch, dilator progression, communication coaching with partner - see dedicated slide."),
("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.5) + col * Inches(6.25)
ypos = Inches(1.55) + row * Inches(2.55)
add_rect(s, x, ypos, Inches(5.95), Inches(2.35), LIGHT)
circ = add_oval(s, x + Inches(0.22), ypos + Inches(0.22), Inches(0.48), Inches(0.48), CORAL)
add_text(s, x + Inches(0.9), ypos + Inches(0.18), Inches(4.9), Inches(0.6), t, size=14, color=NAVY, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_text(s, x + Inches(0.22), ypos + Inches(0.9), Inches(5.5), Inches(1.35), d, size=11.5, color=GREY, line_spacing=1.2)
# ============================================================
# 28 - HOME EXERCISE PROGRAM & SELF-MANAGEMENT
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Self-Management", "Home Exercise Program & Self-Management", 28)
add_bullets(s, Inches(0.5), Inches(1.6), Inches(6.0), Inches(5.0), [
"Structured HEP with clear frequency, duration, and progression criteria - ambiguity reduces adherence",
("Dilator use: minimum 3x/week, 5-10 minutes, sized progressively", 1),
("PFMT: daily, matched to hypotonic/hypertonic pathway", 1),
"Self-monitoring tools: symptom diary, dilator log, simple 1-10 pain/tightness rating",
"Set realistic, patient-defined goals (e.g., 'comfortable pelvic exam' before 'intercourse') to build confidence stepwise",
"Provide written escalation criteria: when to call the clinic vs. when to push through mild discomfort",
], size=13.5)
add_rect(s, Inches(6.85), Inches(1.6), Inches(5.95), Inches(5.0), TEAL)
add_text(s, Inches(7.15), Inches(1.8), Inches(5.3), Inches(0.5), "PATIENT EMPOWERMENT PRINCIPLES", size=13.5, color=GOLD, bold=True)
add_bullets(s, Inches(7.15), Inches(2.4), Inches(5.3), Inches(4.0), [
"Frame the program as active recovery, not lifelong treatment",
"Normalize slow progress - irradiated tissue changes over months, not days",
"Celebrate small, objective wins (e.g., one dilator size progression)",
"Reassure that setbacks (e.g., missed weeks) don't erase prior progress",
], size=13, color=WHITE, bullet_color=GOLD)
# ============================================================
# 29 - SEXUAL HEALTH REHABILITATION & PARTNER COMMUNICATION
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Self-Management", "Sexual Health Rehabilitation & Partner Communication", 29)
steps = ["Education &\nPermission to\nDiscuss", "Non-Genital\nTouch &\nReconnection", "Self-Exploration\n/ Dilator\nProgression", "Partnered\nNon-Penetrative\nActivity", "Penetrative\nIntercourse\n(If Desired)"]
n = len(steps); box_w = Inches(2.15); gap = Inches(0.3)
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 = PLUM if i % 2 == 0 else TEAL
add_rect(s, x, Inches(1.75), box_w, Inches(1.6), col)
add_text(s, x + Inches(0.1), Inches(1.75), box_w - Inches(0.2), Inches(1.6), st, size=11.5, color=WHITE,
bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE, line_spacing=1.05)
if i < n-1:
arrow = s.shapes.add_shape(MSO_SHAPE.RIGHT_ARROW, x + box_w, Inches(2.35), gap, Inches(0.4))
arrow.fill.solid(); arrow.fill.fore_color.rgb = CORAL; arrow.line.fill.background(); arrow.shadow.inherit=False
add_bullets(s, Inches(0.5), Inches(3.75), Inches(6.0), Inches(3.0), [
"This stepped model reduces pressure and performance anxiety - no step is skipped or rushed",
"Partner involvement in dilator therapy normalizes the process and improves adherence",
"Address libido changes from surgical menopause/ovarian ablation directly - do not assume it's purely psychological",
], size=13)
add_rect(s, Inches(6.85), Inches(3.75), Inches(5.95), Inches(3.0), NAVY)
add_text(s, Inches(7.15), Inches(3.9), Inches(5.3), Inches(0.4), "REFERRAL TRIGGERS", size=13, color=GOLD, bold=True)
add_bullets(s, Inches(7.15), Inches(4.35), Inches(5.3), Inches(2.3), [
"Persistent pain despite adherent dilator/PFMT program",
"Significant relationship distress or communication breakdown",
"Patient or partner requests formal sex therapy",
], size=12.5, color=WHITE, bullet_color=GOLD)
# ============================================================
# 30 - EVIDENCE SUMMARY
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Evidence Base", "What the Current Literature Shows", 30)
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 Gonzalez, 2025 (PMID 39765163)", "Systematic Review of Reviews", "Biofeedback & exercise therapy support as first-line, low-risk interventions"],
["Barcellini et al., 2022", "Review", "Physical rehabilitation including PFMT improves sexual dysfunction outcomes in gynecologic cancer"],
["Wang et al., 2022 (PMID 34713337)", "Multicenter Study", "Type C radical hysterectomy associated with measurable pelvic floor muscle function decline"],
]
rows, cols = len(tbl_rows), 3
tbl_shape = s.shapes.add_table(rows, cols, Inches(0.5), Inches(1.55), Inches(12.3), Inches(5.05))
table = tbl_shape.table
table.columns[0].width = Inches(3.6); table.columns[1].width = Inches(2.9); table.columns[2].width = Inches(5.8)
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(12.5)
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(10.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(3); cell.margin_bottom = Pt(3)
# ============================================================
# 31 - MULTIDISCIPLINARY TEAM ROLES
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Systems of Care", "Multidisciplinary Team Roles", 31)
tbl_rows = [
["Role", "Contribution", "Engages"],
["Gyn-Oncology", "Oncologic surveillance, surgical planning, hormonal decision authority", "Diagnosis through survivorship"],
["Radiation Oncology", "Treatment planning, acute toxicity management, dose/field counseling", "Pre-treatment through acute follow-up"],
["Pelvic Health PT", "Assessment, PFMT, biofeedback, dilator/manual therapy delivery", "Prehab through long-term survivorship"],
["Oncology Nursing", "Routine PFD screening, patient education, care coordination", "Every visit"],
["Psycho-Oncology / Sex Therapy", "Distress screening, relationship and intimacy counseling", "As triggered, ongoing PRN"],
["Primary Care", "Long-term surveillance continuity after oncology discharge", "Long-term survivorship"],
]
rows, cols = len(tbl_rows), 3
tbl_shape = s.shapes.add_table(rows, cols, Inches(0.5), Inches(1.55), Inches(12.3), Inches(5.05))
table = tbl_shape.table
table.columns[0].width = Inches(3.0); table.columns[1].width = Inches(5.7); table.columns[2].width = Inches(3.6)
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(3); cell.margin_bottom = Pt(3)
# ============================================================
# 32 - REFERRAL PATHWAY
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Systems of Care", "A Multidisciplinary Referral Pathway", 32)
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(1.75), box_w, Inches(1.6), col)
add_text(s, x + Inches(0.1), Inches(1.75), box_w - Inches(0.2), Inches(1.6), st, size=12, 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.35), 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.5), Inches(3.75), Inches(12.3), Inches(1.75), LIGHT)
add_text(s, Inches(0.8), Inches(3.9), Inches(11.6), Inches(0.4), "WHY REFERRAL RATES REMAIN LOW", size=13, color=CORAL, bold=True)
add_bullets(s, Inches(0.8), Inches(4.35), Inches(11.6), Inches(1.1), [
"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 PTs in some regions; no routine screening question built into follow-up visits",
], size=12.5)
add_rect(s, Inches(0.5), Inches(5.7), Inches(12.3), Inches(0.9), NAVY)
add_text(s, Inches(0.8), Inches(5.7), Inches(11.7), Inches(0.9),
"Discussion: In your setting, at what point does a survivor first get asked about pelvic floor symptoms, and what would move that conversation earlier?",
size=13, color=WHITE, italic=True, anchor=MSO_ANCHOR.MIDDLE)
# ============================================================
# 33 - SURVEILLANCE & EMERGING RESEARCH
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Systems of Care", "Long-Term Surveillance & Emerging Research", 33)
add_rect(s, Inches(0.5), Inches(1.6), Inches(5.95), Inches(4.9), LIGHT)
add_rect(s, Inches(0.5), Inches(1.6), Inches(5.95), Inches(0.6), TEAL)
add_text(s, Inches(0.8), Inches(1.6), Inches(5.3), Inches(0.6), "SURVEILLANCE CADENCE", size=14, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE)
add_bullets(s, Inches(0.8), Inches(2.4), Inches(5.4), Inches(3.9), [
"PFD screening question at every visit for the first 2 years post-treatment",
"Annual screening thereafter as part of routine survivorship care",
"Repeat objective measures (dilator log, PFDI-20) at each PT-involved visit",
"Re-screen sooner if new symptoms, life changes (new partner), or menopause transition occur",
], size=13)
add_rect(s, Inches(6.85), Inches(1.6), Inches(5.95), Inches(4.9), NAVY)
add_text(s, Inches(7.15), Inches(1.8), Inches(5.3), Inches(0.5), "EMERGING RESEARCH DIRECTIONS", size=14, color=GOLD, bold=True)
add_bullets(s, Inches(7.15), Inches(2.4), Inches(5.3), Inches(3.9), [
"Telehealth-delivered pelvic floor PT to improve access in rural/underserved areas",
"Standardized, protocolized rehabilitation programs to reduce study heterogeneity",
"Integration of patient-reported outcomes directly into survivorship care plans and EHRs",
"Prehabilitation trials specific to cervical cancer populations",
], size=13, color=WHITE, bullet_color=GOLD)
# ============================================================
# 34 - CASE RESOLUTION & TAKEAWAYS
# ============================================================
s = add_slide(); set_bg(s)
header(s, "Bringing It Together", "Case Resolution & Key Takeaways", 34)
add_rect(s, Inches(0.5), Inches(1.55), Inches(5.95), Inches(5.05), LIGHT)
add_text(s, Inches(0.8), Inches(1.75), Inches(5.3), Inches(0.4), "HER CARE PLAN", size=14, color=TEAL, bold=True)
add_bullets(s, Inches(0.8), Inches(2.2), Inches(5.3), Inches(4.3), [
"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",
"Begin stepped sexual rehabilitation model, with partner included in dilator coaching",
"Loop back to gyn-oncology promptly if stenosis is severe or unresponsive",
], size=12.5)
add_rect(s, Inches(6.85), Inches(1.55), Inches(5.95), Inches(5.05), NAVY)
add_text(s, Inches(7.15), Inches(1.75), Inches(5.3), Inches(0.4), "FOUR TAKEAWAYS", size=14, color=GOLD, bold=True)
add_bullets(s, Inches(7.15), Inches(2.35), Inches(5.3), Inches(4.2), [
"Recovery is whole-person - bladder, bowel, pain, movement, and intimacy are interconnected, not separate issues",
"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 - anchored by prehabilitation and routine surveillance - improves quality of life outcomes",
], size=12.5, color=WHITE, bullet_color=GOLD)
# ============================================================
# 35 - 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_MERGED.pptx")
print("SAVED OK -", len(prs.slides._sldIdLst), "slides")
cd /tmp/workspace/cervical-cancer-pfr-presentation && python3 build_merged.py
~/cervical-cancer-pfr-presentation/add_notes_merged.py
from pptx import Presentation
PPTX = "/tmp/workspace/cervical-cancer-pfr-presentation/Rebuilding_the_Base_MERGED.pptx"
prs = Presentation(PPTX)
notes = {
1: "Welcome the audience. Introduce the session as a merged, comprehensive curriculum on pelvic floor rehabilitation in cervical cancer survivorship, built from two source presentations plus current literature. Set the tone: whole-person, multidisciplinary, practical. State your credentials and institution. Preview that the session runs 90 minutes and will close with a full case-based synthesis.",
2: "Walk through the eight-part roadmap: whole-person framing, foundations (anatomy, treatment effects, fibrosis), assessment, prehabilitation, remedial toolkit, organ-specific management, self-management/sexual health, and systems of care. Mention this deck merges the clinical depth of one source with the practical, patient-communication framing of the other, and that all anatomy/technique visuals here are original diagrams built for this session rather than reused images, to keep everything clean for redistribution.",
3: "Read through the six objectives briefly. Emphasize objective 1: this is not just about muscle strength — it is about reframing recovery as multi-system. Objective 3 flags that timing (short- vs long-term effects) matters clinically. Objective 5 flags the single most practically important skill: matching treatment direction to tone.",
4: "This is a new framing slide. Ask the audience: how many of you screen for all five domains — bladder, bowel, pain, movement, intimacy — in one visit? Most will say no. Make the point that these are not five separate referrals but one overlapping picture in most patients. This reframing reduces patient shame and clinician avoidance, and should be revisited when we get to the referral pathway slide later.",
5: "Introduce the case patient. Give the audience a moment to actually think about the discussion prompts — this works well as a live poll or show-of-hands. Do not answer yet. Tell them we will return to this exact patient at the end of the session and build her actual care plan together using everything covered in between.",
6: "Give the 30,000-foot view of pelvic floor anatomy before drilling into layers. Emphasize it's a 3D muscular/fascial support structure, not a flat 'floor'. Explain why we teach anatomy in layers — clinically, damage tends to cluster by layer, and this predicts symptom clusters. Bridge into the fact that surgical dissection and radiation fields both cross multiple layers simultaneously, which is why symptoms are rarely isolated to one system.",
7: "Present layer 1 and 2 using the original diagram. Layer 1 (superficial perineal muscles) contributes to sexual response — ischiocavernosus and bulbospongiosus are directly relevant to arousal and orgasm, so damage here has direct sexual health implications. Layer 2 (urogenital diaphragm) is about urethral support and continence. Note that these layers are most accessible to external palpation and often the starting point of a gentle exam.",
8: "Layer 3 is the deep pelvic diaphragm — levator ani (puborectalis, pubococcygeus, iliococcygeus), coccygeus, plus the pelvic wall muscles piriformis and obturator internus (important because hip/pelvic pain can refer from these). Then cover nerves: pudendal (somatic, sphincter control) vs. pelvic splanchnic/hypogastric plexus (autonomic — bladder, bowel, sexual function) — this distinction explains why surgical nerve-sparing technique matters so much. Close with lymphatics: node dissection and radiation both disrupt lymphatic flow, so ask about lower-limb or genital swelling as a matter of routine, even though it's not the session's main focus.",
9: "Present the three headline statistics. Make the point explicit: unlike a lot of post-surgical symptoms which improve over time, radiation-related fibrosis symptoms can worsen over time, which is the core argument for long-term surveillance rather than one-time post-treatment screening. Cite Shan et al. 2023 systematic review/meta-analysis (PMID 36001098).",
10: "Split into short-term (weeks) vs long-term (months-years) surgical effects. Short-term is largely expected recovery — pain, reduced ROM, catheter-related retraining. Long-term is the more clinically important category: persistent hypotonic bladder and constipation from autonomic nerve injury, and fascial/levator weakness that scales with surgical radicality (reference Querleu-Morrow classification — more radical hysterectomy types carry more nerve injury risk, per Wang et al. 2022, PMID 34713337).",
11: "Radiation has an inverse timeline compared to surgery — early symptoms are mild inflammatory ones, late symptoms (fibrosis, stenosis, hypertonicity) are the more disabling, harder-to-reverse ones. This is why dilator therapy should start early, before chronic changes set in — foreshadow the dilator protocol slide. Chemo and systemic/targeted/hormonal therapies compound this by causing mucosal atrophy and accelerated ovarian failure, layering additional dryness and GSM-type symptoms on top of radiation fibrosis.",
12: "Walk through the three-phase fibrosis pathophysiology model. Acute (days-weeks): inflammation and edema. Subacute (weeks-months): early collagen deposition, reduced elasticity — this is often where symptoms are still mild so patients under-report. Chronic (months-years): established fibrosis, vascular occlusion, stenosis, hypertonicity. Spend extra time on the vicious cycle box at the bottom — fibrosis → pain/guarding → reduced blood flow/stretch → more fibrosis. This is the single most important physiological argument for early dilator and manual therapy intervention in this entire talk.",
13: "GSM is a distinct but heavily overlapping diagnosis from radiation fibrosis. Make clear that treatment-induced menopause (surgical, chemo, or radiation-related ovarian failure) causes GSM to appear earlier and more abruptly than natural menopause — patients may be in their 30s dealing with what looks like a 60-year-old's vaginal tissue. Stress that GSM is commonly misattributed entirely to radiation and therefore under-treated with appropriate hormonal options. Management is shared-decision with gyn-oncology given hormone therapy considerations in a hormone-sensitive or hormone-agnostic cancer context.",
14: "Introduce the four-domain assessment framework: urinary, anorectal, sexual, pain/MSK. Emphasize this should be screened at every survivorship visit as a default, not only when the patient raises it. Spend real time on the red-flag box — this is a safety slide. New pain or bleeding needs a recurrence workup before any PT referral proceeds; suspected fistula goes to surgery, not pelvic floor therapy. Reiterate the hypertonic vs hypotonic distinction as the single most important treatment-direction decision covered in this whole talk — flagged again later in the PFMT matching slide.",
15: "This synthesizes the practical evaluation visit structure. History always starts with the patient's own goal, not a checklist. The movement/postural screen is deliberately whole-body — cancer treatment causes deconditioning, fatigue, and compensatory movement patterns well beyond the pelvis (hip guarding, thoracic breathing pattern changes). Introduce the breathing-abdominal wall-pelvic floor coordination concept here as a preview — this trio works as one coordinated pressure-management system, and assessing coordination (not just isolated pelvic floor strength) often reveals the real driver of symptoms.",
16: "This is a safety- and consent-critical slide — do not rush it. Every exam begins with clear explanation and explicit verbal consent; patient chooses internal, external, or both; she may stop at any time without needing to justify why. For irradiated tissue, start with a gentle single-digit exam. Then teach the Modified Oxford Scale 0-5 grading system as the primary objective strength measure — this pairs with the questionnaires on the next slide and should be used consistently at every follow-up so progress is measurable.",
17: "Walk through each validated tool: PFDI-20 for overall pelvic floor distress, FSFI for sexual function domains, ICIQ-UI for incontinence severity, FACT-Cx/FACT-GOG-Ntx for broader cancer-specific quality of life, and objective vaginal length/caliber measurement for tracking stenosis and dilator progress. Recommend pairing one questionnaire with the Modified Oxford Scale from the previous slide at every visit for a combined subjective + objective picture.",
18: "Introduce prehabilitation as a paradigm shift — start counseling and baseline assessment at diagnosis, before any treatment begins. This mirrors prehabilitation evidence from colorectal and prostate cancer showing improved post-treatment functional outcomes. Practical point: this pairs naturally with fertility/ovarian preservation counseling, since both conversations happen in the same pre-treatment planning window with overlapping teams. Walk through the practical checklist on the right as something a clinic could implement immediately.",
19: "Section transition slide. Announce that we are now moving from the 'why' (anatomy, mechanisms, assessment) into the 'how' — the actual clinical toolkit. List the six tool categories we'll cover in the next several slides. Use this as a natural point for a brief break or audience question if running a live session.",
20: "This is the most clinically decisive slide in the toolkit section. Repeat clearly: strengthening exercises are the wrong first intervention for a hypertonic, guarded pelvic floor — this is a common and harmful error. Walk through both columns side by side. Hypotonic (typically post-surgical) gets graded strengthening. Hypertonic (typically post-radiation) gets down-training and relaxation FIRST, with strengthening deferred until guarding resolves. Reinforce that the exam from Section: Assessment determines which column applies.",
21: "Manual therapy addresses tissue-level restriction directly — scar tissue, adhesions, trigger points, connective tissue mobilization along irradiated fields. Self-release is only taught after the clinician has assessed the patient and demonstrated a technique is safe for that specific presentation — this is not a generic home stretch handout. Scar and abdominal mobilization specifically targets surgical scar tissue that can tether fascia and contribute to broader pelvic tension; pace all of this to tissue tolerance since irradiated tissue behaves differently (more fragile, slower healing) than non-irradiated post-surgical tissue.",
22: "Dilator therapy is one of the highest-yield interventions in this entire toolkit. Explain the graded-sizing concept — progressive, systematic exposure rather than an all-or-nothing approach. Cite the evidence: dilator + PFMT combined programs improve vaginal length, muscle strength, and quality of life (Barcellini 2022; Devan Moy & Simarro González 2025, PMID 39765163). Give the practical protocol: start early, ideally before or right after radiotherapy completion; minimum 3x/week, 5-10 minutes; water-based lubricant; avoid during active mucositis. Spend time on the adherence point — this is often where real-world implementation fails, and compassionate, direct, non-judgmental counseling is key.",
23: "Biofeedback is particularly valuable because many hypertonic patients cannot consciously perceive their own guarding — the visual/audio feedback closes that awareness gap. It's low-risk and well-tolerated, supported as a first-line option by recent systematic-review-of-reviews evidence. Typical course is 6-8 weekly sessions with home practice between. Tie back to the objective measures slide — use the same Modified Oxford Scale/symptom diary metrics so patients see progress before they can feel it.",
24: "Diaphragmatic breathing is the entry point for almost every hypertonic patient — it's simple, low-risk, and can be taught and practiced immediately, anywhere. Explain the coordinated-system concept: diaphragm, abdominal wall, and pelvic floor move together, so breath work is not a separate relaxation technique but a direct lever on pelvic floor tone. Pain neuroscience education runs in parallel — reframe pain as a sensitized nervous system response rather than only ongoing tissue damage, which reduces fear-avoidance behavior especially around intimacy. Use plain-language analogies, not jargon, and ideally deliver this collaboratively with psychology/sexual health colleagues.",
25: "Walk through the three bladder presentations and their distinct management. Neurogenic/post-surgical (hypogastric plexus injury) causes a hypotonic, retentive picture managed with timed/double voiding and possibly intermittent catheterization. Radiation cystitis causes urgency/frequency/possible hematuria from mucosal inflammation, managed with bladder retraining and medication under gyn-onc/urology guidance. Stress incontinence from fascial/levator weakness responds to the hypotonic PFMT pathway plus biofeedback. Emphasize these three can coexist in the same patient.",
26: "Radiation proctitis presents with bleeding, telangiectasia, urgency, and tenesmus — stress that new or progressive bleeding needs GI endoscopic evaluation and should not be assumed to be 'just proctitis' without ruling out recurrence. Distinguish acute (weeks) from chronic radiation proctopathy (months-years) since management differs. Functional bowel management runs in parallel — dietary modification, anti-diarrheals/bulking agents, and pelvic floor coordination retraining for urgency/incontinence (not just strength work). Flag chronic radiation enteritis as a driver of malabsorption warranting nutrition referral in more severe cases.",
27: "This slide bundles four adjunct therapy categories that cross-reference content covered elsewhere in more depth — use it as a quick-reference summary rather than introducing brand-new material. Topical/hormonal support ties back to the GSM spotlight slide. Bowel/bladder retraining ties back to the organ-specific slides. Graded sexual rehabilitation previews the next slide's stepped model. Psychological support flags when to loop in psycho-oncology or sex therapy.",
28: "Emphasize that ambiguous home programs fail — give explicit frequency/duration/progression criteria every time (dilator 3x/week minimum, PFMT daily matched to pathway). Self-monitoring tools (symptom diary, dilator log, 1-10 rating) give both patient and clinician objective tracking between visits. The goal-setting point is important — patient-defined, stepwise goals (e.g., 'comfortable pelvic exam' before 'intercourse') build confidence without forcing a premature return to intercourse as the only marker of success. Give written escalation criteria so patients know when to call versus when mild discomfort is expected.",
29: "Walk through the five-step stepped model for sexual rehabilitation: education/permission to discuss, non-genital touch, self-exploration/dilator progression, partnered non-penetrative activity, and penetrative intercourse if desired — note explicitly that the last step is optional, not a mandatory endpoint. This stepped approach reduces performance pressure. Partner involvement in dilator coaching normalizes the process and measurably improves adherence. Address libido changes from surgical menopause/ovarian ablation directly and biologically, rather than assuming the cause is purely psychological. Flag referral triggers on the right for when to escalate to sex therapy.",
30: "This is the evidence appendix slide — walk through it briefly rather than reading every row. Highlight that most of the literature consists of systematic reviews and umbrella reviews rather than large RCTs, meaning protocols remain heterogeneous across studies — an honest limitation to state to a clinical audience. Point out Wang et al. 2022 specifically links surgical radicality (Querleu-Morrow type) to measurable pelvic floor muscle function decline, which supports the earlier short/long-term surgery slide.",
31: "Walk through each team role and when they engage across the survivorship timeline. Emphasize pelvic health PT is not a peripheral referral — it spans from prehabilitation through long-term survivorship, and oncology nursing is positioned as the consistent screening touchpoint at every visit, since nursing typically has the most frequent patient contact.",
32: "Walk through the five-step pathway from diagnosis through PT referral, and stress the final step's framing: PT referral should be the clinical default at the 6-8 week survivorship visit, not something the patient has to request. Then spend real time on the 'why referral rates remain low' box — clinician discomfort discussing sexual health, patient embarrassment or normalization of symptoms as 'expected', and limited access to trained pelvic health PTs in some regions. Use the discussion prompt at the bottom to engage the audience directly about their own institution's current practice.",
33: "Surveillance cadence: PFD screening at every visit for the first two years, then annually, with re-screening triggered by new symptoms, life changes, or menopause transition — not a one-time checkbox at treatment completion. Emerging research directions include telehealth delivery to improve rural/underserved access, standardized protocolized rehab programs (addressing the heterogeneity flagged on the evidence slide), PRO integration into EHRs, and cervical-cancer-specific prehabilitation trials as an evidence gap still to be filled.",
34: "Return explicitly to the opening case patient. Walk through her care plan built from everything covered: expect a hypertonic, guarded pelvic floor on exam given her radiation history; start with pain neuroscience education and diaphragmatic down-training, not strengthening; add graded dilator therapy with manual myofascial release; add biofeedback for awareness; begin the stepped sexual rehabilitation model with her partner included in dilator coaching; and loop back to gyn-oncology if stenosis is severe or unresponsive. Then close with the four takeaways — whole-person framing, under-screening problem, tone-matched treatment, and the value of early structured multidisciplinary care.",
35: "Thank the audience, open the floor for questions, and provide contact information for follow-up. Offer to share the slide deck and full reference list on request. If time allows, revisit any unanswered discussion prompts from earlier in the session (the case vignette or the referral pathway discussion question).",
}
count = 0
for i, slide in enumerate(prs.slides, start=1):
text = notes.get(i, "")
if not text:
continue
tf = slide.notes_slide.notes_text_frame
tf.text = text
count += 1
prs.save(PPTX)
print("Notes written to", count, "of", len(prs.slides._sldIdLst), "slides")
cd /tmp/workspace/cervical-cancer-pfr-presentation && python3 add_notes_merged.py
Top up done, please continue
cd /tmp/workspace/cervical-cancer-pfr-presentation && python3 -c " from pptx import Presentation p = Presentation('Rebuilding_the_Base_MERGED.pptx') print('Total slides:', len(p.slides._sldIdLst)) missing_notes = [] empty_notes = [] for i, slide in enumerate(p.slides, start=1): if not slide.has_notes_slide: missing_notes.append(i) else: txt = slide.notes_slide.notes_text_frame.text.strip() if not txt: empty_notes.append(i) print('Slides missing notes entirely:', missing_notes) print('Slides with empty notes:', empty_notes) # check for placeholder/error text suspicious = [] for i, slide in enumerate(p.slides, start=1): for shape in slide.shapes: if shape.has_text_frame: t = shape.text_frame.text if 'TODO' in t or 'Lorem ipsum' in t or 'PLACEHOLDER' in t.upper(): suspicious.append((i, t[:50])) print('Suspicious placeholder text:', suspicious) " ls -la /tmp/workspace/cervical-cancer-pfr-presentation/Rebuilding_the_Base_MERGED.pptx
Rebuilding the Base MERGED
Presentation · PPTX
Topics : Rebuilding the Base — Pelvic Floor Rehabilitation in Cervical Cancer Survivorship. PPT change according
"Healing Through Pelvic Floor Physical Th…" in ~/cervical-cancer-pfr-presentation/build_merged.py
~/cervical-cancer-pfr-presentation/build_merged.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/cervical-cancer-pfr-presentation/build_merged.py'
~/cervical-cancer-pfr-presentation/build_merged.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/cervical-cancer-pfr-presentation/build_merged.py'
cd /tmp/workspace/cervical-cancer-pfr-presentation && python3 build_merged.py && python3 add_notes_merged.py
cd /tmp/workspace/cervical-cancer-pfr-presentation && python3 -c " from pptx import Presentation p = Presentation('Rebuilding_the_Base_MERGED.pptx') print('Total slides:', len(p.slides._sldIdLst)) s1 = p.slides[0] for shape in s1.shapes: if shape.has_text_frame and shape.text_frame.text.strip(): print(repr(shape.text_frame.text)) " ls -la /tmp/workspace/cervical-cancer-pfr-presentation/Rebuilding_the_Base_MERGED.pptx
Rebuilding the Base MERGED
Presentation · PPTX