Rebuilding the Base: Pelvic Floor Rehabilitation in Cervical Cancer please prepare Professional presentation ppt with evidence base presented by physiotherapist conference
"cervical cancer" AND "pelvic floor" AND rehabilitation
"pelvic floor muscle training" AND "gynecologic cancer" AND radiotherapy
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.
pelvic floor biofeedback physiotherapy training

Table 2. Non-surgical management options for SUI20-31

Table 2. Non-surgical management options for SUI20-31
![<table><thead><tr><th>Question</th><th>Set #</th><th>Concept</th><th>Strategy</th></tr></thead><tbody><tr><td rowspan="5">KQ 1 (cont.)</td><td>10.</td><td>Limit to Meta Analyses and Systematic Reviews</td><td>#9 AND ('meta analysis'/exp OR 'systematic review'/de OR cochrane:jt OR [cochrane review]/lim OR systematic*:ti,ab OR cochrane*:ti,ab OR metaanaly*:ti,ab OR 'meta analy*':ti,ab OR (search*:ti,ab AND (cinahl*:ti,ab OR databases:ti,ab OR ebsco*:ti,ab OR embase*:ti,ab OR psychinfo*:ti,ab OR psycinfo*:ti,ab OR 'science direct*':ti,ab OR sciencedirect*:ti,ab OR scopus*:ti,ab OR systematic*:ti,ab OR 'web of knowledge*':ti,ab OR 'web of science':ti,ab)) OR ((systematic* NEAR/3 review*):ti,ab)) NOT (((protocol NEXT/3 review):ti) OR 'review protocol':ti OR 'scoping review':ti)</td></tr><tr><td>11.</td><td>Limit to Randomized Controlled Trials</td><td>#9 AND ('random sample'/de OR 'randomization'/de OR 'randomized controlled trial'/exp OR 'phase 3':ti,ab OR 'phase iii':ti,ab OR random*:ti,ab OR rct:ti,ab)</td></tr><tr><td>12.</td><td>Combine Concepts</td><td>#10 OR #11</td></tr><tr><td>13.</td><td>Apply Date Limits</td><td>#12 AND [2017-2022]/py AND [04-02-2017]/sd NOT [01-06-2022]/sd</td></tr><tr><td>14.</td><td>Limit to English</td><td>#13 AND [english]/lim</td></tr><tr><td rowspan="5">KQ 2</td><td>15.</td><td>Pregnancy</td><td>'expectant mother'/exp OR 'parameters concerning the fetus, newborn and pregnancy'/exp OR 'perinatal care'/exp OR 'perinatal period'/exp OR 'pregnancy'/exp OR 'pregnancy disorder'/exp OR 'pregnant woman'/exp OR 'prenatal care'/exp OR 'prenatal period'/exp OR antenatal:ti,kw OR antepartum:ti,kw OR gestation*:ti,kw OR matern*:ti,kw OR obstet*:ti,kw OR 'peri natal':ti,kw OR perinatal:ti,kw OR 'pre natal':ti,kw OR prenatal:ti,kw OR pregnan*:ti,kw OR trimester*:ti,kw</td></tr><tr><td>16.</td><td>Labor/Delivery/ Childbirth</td><td>'birth setting'/exp OR 'cesarean section'/exp OR 'childbirth'/exp OR 'intrapartum care'/exp OR 'labor'/exp OR 'labor complication'/exp OR 'labor induction'/exp OR 'natural childbirth'/exp OR 'obstetric delivery'/exp OR 'vaginal delivery'/exp OR 'vaginal birth after cesarean'/exp OR 'cesarean'/exp OR birth*:ti,kw OR caesarean:ti,kw OR caesarian:ti,kw OR cesarian:ti,kw OR childbirth*:ti,kw OR hypnobirth*:ti,kw OR intrapartum:ti,kw OR labor:ti,kw OR 'vaginal delivery':ti,kw OR vbac:ti,kw</td></tr><tr><td>17.</td><td>Postpartum</td><td>'postnatal care'/exp OR 'pregnancy outcome'/exp OR 'puerperium'/exp OR 'after delivery':ti,kw OR 'following delivery':ti,kw OR 'post natal':ti,kw OR postnatal:ti,kw OR 'post neonatal':ti,kw OR postneonatal:ti,kw OR 'post partum':ti,kw OR postpartum:ti,kw OR puerperal:ti,kw OR puerperium:ti,kw</td></tr><tr><td>18.</td><td>Pelvic Floor Muscle Dysfunction</td><td>'pelvic floor disorder'/exp OR 'pelvic floor muscle training'/de OR 'pelvic floor prolapse'/exp OR 'pelvis floor'/exp OR 'pelvis muscle'/exp OR ((pelvic:ti OR pelvis:ti) AND floor:ti) OR ((biofeedback:ti,ab OR electromanipulation:ti,ab OR kegel:ti,ab OR exercise*:ti,ab OR neurofeedback:ti,ab OR 'physical therapy':ti,ab OR physiotherapy:ti,ab OR rehabilitation:ti,ab OR stimulation:ti,ab OR training:ti,ab) AND 'pelvic floor':ti,ab)</td></tr><tr><td>19.</td><td>Combine Concepts</td><td>(#15 OR #16 OR #17) AND #18</td></tr></tbody></table>](/_next/image?url=https%3A%2F%2Fcdn.orris.care%2Fcdss_images%2FGLGCA_21618_1763314235741_3b1c3680-6b7b-42e0-aafa-145e0b1c0b69.png&w=3840&q=75)
<table><thead><tr><th>Question</th><th>Set #</th><th>Concept</th><th>Strategy</th></tr></thead><tbody><tr><td rowspan="5">KQ 1 (cont.)</td><td>10.</td><td>Limit to Meta Analyses and Systematic Reviews</td><td>#9 AND ('meta analysis'/exp OR 'systematic review'/de OR cochrane:jt OR [cochrane review]/lim OR systematic*:ti,ab OR cochrane*:ti,ab OR metaanaly*:ti,ab OR 'meta analy*':ti,ab OR (search*:ti,ab AND (cinahl*:ti,ab OR databases:ti,ab OR ebsco*:ti,ab OR embase*:ti,ab OR psychinfo*:ti,ab OR psycinfo*:ti,ab OR 'science direct*':ti,ab OR sciencedirect*:ti,ab OR scopus*:ti,ab OR systematic*:ti,ab OR 'web of knowledge*':ti,ab OR 'web of science':ti,ab)) OR ((systematic* NEAR/3 review*):ti,ab)) NOT (((protocol NEXT/3 review):ti) OR 'review protocol':ti OR 'scoping review':ti)</td></tr><tr><td>11.</td><td>Limit to Randomized Controlled Trials</td><td>#9 AND ('random sample'/de OR 'randomization'/de OR 'randomized controlled trial'/exp OR 'phase 3':ti,ab OR 'phase iii':ti,ab OR random*:ti,ab OR rct:ti,ab)</td></tr><tr><td>12.</td><td>Combine Concepts</td><td>#10 OR #11</td></tr><tr><td>13.</td><td>Apply Date Limits</td><td>#12 AND [2017-2022]/py AND [04-02-2017]/sd NOT [01-06-2022]/sd</td></tr><tr><td>14.</td><td>Limit to English</td><td>#13 AND [english]/lim</td></tr><tr><td rowspan="5">KQ 2</td><td>15.</td><td>Pregnancy</td><td>'expectant mother'/exp OR 'parameters concerning the fetus, newborn and pregnancy'/exp OR 'perinatal care'/exp OR 'perinatal period'/exp OR 'pregnancy'/exp OR 'pregnancy disorder'/exp OR 'pregnant woman'/exp OR 'prenatal care'/exp OR 'prenatal period'/exp OR antenatal:ti,kw OR antepartum:ti,kw OR gestation*:ti,kw OR matern*:ti,kw OR obstet*:ti,kw OR 'peri natal':ti,kw OR perinatal:ti,kw OR 'pre natal':ti,kw OR prenatal:ti,kw OR pregnan*:ti,kw OR trimester*:ti,kw</td></tr><tr><td>16.</td><td>Labor/Delivery/ Childbirth</td><td>'birth setting'/exp OR 'cesarean section'/exp OR 'childbirth'/exp OR 'intrapartum care'/exp OR 'labor'/exp OR 'labor complication'/exp OR 'labor induction'/exp OR 'natural childbirth'/exp OR 'obstetric delivery'/exp OR 'vaginal delivery'/exp OR 'vaginal birth after cesarean'/exp OR 'cesarean'/exp OR birth*:ti,kw OR caesarean:ti,kw OR caesarian:ti,kw OR cesarian:ti,kw OR childbirth*:ti,kw OR hypnobirth*:ti,kw OR intrapartum:ti,kw OR labor:ti,kw OR 'vaginal delivery':ti,kw OR vbac:ti,kw</td></tr><tr><td>17.</td><td>Postpartum</td><td>'postnatal care'/exp OR 'pregnancy outcome'/exp OR 'puerperium'/exp OR 'after delivery':ti,kw OR 'following delivery':ti,kw OR 'post natal':ti,kw OR postnatal:ti,kw OR 'post neonatal':ti,kw OR postneonatal:ti,kw OR 'post partum':ti,kw OR postpartum:ti,kw OR puerperal:ti,kw OR puerperium:ti,kw</td></tr><tr><td>18.</td><td>Pelvic Floor Muscle Dysfunction</td><td>'pelvic floor disorder'/exp OR 'pelvic floor muscle training'/de OR 'pelvic floor prolapse'/exp OR 'pelvis floor'/exp OR 'pelvis muscle'/exp OR ((pelvic:ti OR pelvis:ti) AND floor:ti) OR ((biofeedback:ti,ab OR electromanipulation:ti,ab OR kegel:ti,ab OR exercise*:ti,ab OR neurofeedback:ti,ab OR 'physical therapy':ti,ab OR physiotherapy:ti,ab OR rehabilitation:ti,ab OR stimulation:ti,ab OR training:ti,ab) AND 'pelvic floor':ti,ab)</td></tr><tr><td>19.</td><td>Combine Concepts</td><td>(#15 OR #16 OR #17) AND #18</td></tr></tbody></table>
PMID: 36001098
PMID: 32367126
PMID: 39177709
PMID: 32601784
PMID: 39623242
vaginal dilator therapy after pelvic radiotherapy
cervical cancer radiotherapy pelvic radiation field

This diagnostic image display consists of four panels showing an Extended-Field Intensity-Modulated Radiation Therapy (IMRT) treatment plan for cervical cancer. The panels include axial (transversal), coronal (frontal), sagittal, and 3D model views derived from CT imaging. A color wash is overlaid on the anatomical structures to represent radiation dose distribution, where warmer colors indicate higher dosages. The plan demonstrates treatment of the primary cervical tumor and integrated boosts targeting pathologically positive pelvic lymph nodes. The radiation field extends superiorly to cover the para-aortic region, a technique known as extended-field radiation. The 3D model and multi-planar reconstructions illustrate the conformality of the dose to target volumes while showing dose-sparing for critical organs at risk (OARs), such as the kidneys and spinal cord. This visual highlights advanced radiotherapy planning used in gynecologic oncology to address metastatic nodal disease while minimizing collateral tissue damage.

This diagnostic image displays a three-dimensional conformal radiotherapy (3DCRT) treatment plan for a patient with cervical cancer, shown in axial (left) and sagittal (right) CT sections. The images illustrate the distribution of external beam radiotherapy (EBRT) using a color wash overlay that represents the 95% isodose coverage. The color wash, transitioning from blue at the periphery to green and yellow at the center, is concentrated over the pelvic region, specifically targeting the clinical target volume (CTV) encompassing the uterus, cervix, and upper vagina. Several anatomical contours are visible: a white outline defining the target volume and a light orange outline tracing organs at risk, such as the bladder. In the axial view, the radiation dose maintains a rectangular-like field typical of multi-field conformal techniques, while the sagittal view shows the longitudinal coverage from the lower uterus down to the vaginal vault. This visual serves as an educational example of radiation oncology planning, demonstrating dose distribution and target localization in the management of FIGO stage IIB cervical carcinoma.

Educational comparison of radiotherapy planning techniques for cervical cancer, featuring conventional 2D external-beam radiotherapy (EBRT) and intensity-modulated radiotherapy (IMRT). Panel A displays a conventional simulator X-ray (anterior-posterior view) of the pelvis with radiation field borders delineated by black lines and a superimposed measurement grid for alignment based on bony landmarks. Panel B shows an axial CT slice through the pelvic region for IMRT planning. This panel demonstrates multi-color contouring of target volumes and organs at risk (OARs). Key delineated structures include the gross tumor volume (GTVp, red), primary clinical target volume (CTVp, light blue), and nodal targets (GTVn and CTVn, light/dark green). Anatomical OARs include the bladder (yellow, anterior), rectum (purple, posterior), uterus (dark blue), and vagina (light pink). The image illustrates the transition from basic field-shaping in 2D therapy to precise volumetric target delineation and OAR sparing in modern 3D/IMRT protocols.
mkdir -p /tmp/workspace/pfr-cervical-cancer-ppt/assets /tmp/workspace/pfr-cervical-cancer-ppt/output && ls -la /tmp/workspace/
cd /tmp/workspace/pfr-cervical-cancer-ppt && python3 -c " import json, subprocess, base64 urls = [ 'https://cdn.orris.care/cdss_images/pmc_clinical_VQA_4f3eba852a08414d1c411b65d902ccce640867cadf7d0008bce744477e4368e2.jpg', 'https://cdn.orris.care/cdss_images/pmc_clinical_VQA_56d3e42865c5039939250dcdde109635172fca1f56ea15653477758ac300edd1.jpg' ] result = json.loads(subprocess.check_output(['python', '/tmp/skills/shared/scripts/fetch_images.py'] + urls)) names = ['anatomy.jpg', 'radiotherapy.jpg'] for img, name in zip(result, names): if img.get('base64'): b64 = img['base64'].split(',',1)[1] if ',' in img['base64'] else img['base64'] raw = base64.b64decode(b64) with open(f'assets/{name}', 'wb') as f: f.write(raw) print(name, 'saved', len(raw), 'bytes') else: print(name, 'FAILED', img.get('error')) " ls -la assets/
~/pfr-cervical-cancer-ppt/build_ppt.py
# -*- coding: utf-8 -*-
"""
Rebuilding the Base: Pelvic Floor Rehabilitation in Cervical Cancer
Evidence-based conference deck for physiotherapists.
"""
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
# ---------- palette ----------
NAVY = RGBColor(0x0B, 0x2E, 0x45) # headers / dark backgrounds
TEAL = RGBColor(0x0E, 0x7C, 0x7B) # accent
TEAL_L = RGBColor(0xE3, 0xF2, 0xF1) # light accent fill
GREY_D = RGBColor(0x33, 0x3A, 0x3F) # body text
GREY_M = RGBColor(0x6B, 0x74, 0x79) # secondary text
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
GOLD = RGBColor(0xC9, 0x9A, 0x3E) # highlight accent
BG = RGBColor(0xF7, 0xF9, 0xF9)
RED_D = RGBColor(0xA8, 0x33, 0x3A)
FONT = "Calibri"
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
SLIDE_NO = {"n": 0}
def add_slide():
s = prs.slides.add_slide(BLANK)
SLIDE_NO["n"] += 1
# background
s.background.fill.solid()
s.background.fill.fore_color.rgb = BG
return s
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
shp.line.width = Pt(0.5)
else:
shp.line.fill.background()
shp.shadow.inherit = False
return shp
def add_text(slide, x, y, w, h, text, size=18, color=GREY_D, bold=False,
italic=False, align=PP_ALIGN.LEFT, font=FONT, anchor=MSO_ANCHOR.TOP,
line_spacing=1.0, wrap=True):
tb = slide.shapes.add_textbox(x, y, w, h)
tf = tb.text_frame
tf.word_wrap = wrap
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.name = font
r.font.color.rgb = color
return tb
def add_bullets(slide, x, y, w, h, items, size=16, color=GREY_D, bold_first=False,
font=FONT, space_after=10, bullet_color=TEAL, 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; tf.margin_top = 0; tf.margin_bottom = 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 "- "
run = p.add_run()
run.text = marker
run.font.size = Pt(size)
run.font.color.rgb = bullet_color if lvl == 0 else GREY_M
run.font.name = font
run2 = p.add_run()
run2.text = txt
run2.font.size = Pt(size - (2 if lvl else 0))
run2.font.color.rgb = color
run2.font.name = font
run2.font.bold = (lvl == 0 and bold_first)
p.level = 0
if lvl:
tb2 = None
# indent visually
p.paragraph_format if False else None
if lvl:
from pptx.oxml.ns import qn as _qn
pPr = p._pPr
# manual indent via margin: simulate using leading spaces already covered by marker
return tb
def header(slide, kicker, title, num=None):
add_rect(slide, 0, 0, SW, Inches(1.15), NAVY)
add_rect(slide, 0, Inches(1.15), SW, Pt(3), GOLD)
add_text(slide, Inches(0.55), Inches(0.12), Inches(11.5), Inches(0.3),
kicker.upper(), size=12, color=GOLD, bold=True, font=FONT)
add_text(slide, Inches(0.55), Inches(0.42), Inches(12.0), Inches(0.65),
title, size=26, color=WHITE, bold=True, font=FONT)
n = num if num is not None else SLIDE_NO["n"]
add_text(slide, SW - Inches(1.0), Inches(7.12), Inches(0.7), Inches(0.3),
f"{n:02d}", size=11, color=GREY_M, align=PP_ALIGN.RIGHT)
add_text(slide, Inches(0.55), Inches(7.12), Inches(6), Inches(0.3),
"Rebuilding the Base | Pelvic Floor Rehabilitation in Cervical Cancer",
size=9, color=GREY_M)
def footer_citation(slide, text):
add_text(slide, Inches(0.55), Inches(6.78), Inches(12.2), Inches(0.35),
text, size=10.5, color=GREY_M, italic=True)
# ============================================================ SLIDE 1 - TITLE
s = add_slide()
add_rect(s, 0, 0, SW, SH, NAVY)
add_rect(s, 0, Inches(5.55), SW, Inches(0.06), GOLD)
add_text(s, Inches(1.0), Inches(1.6), Inches(11.3), Inches(0.4),
"PHYSIOTHERAPY CONFERENCE | EVIDENCE-BASED PRACTICE", size=15, bold=True,
color=GOLD, font=FONT)
add_text(s, Inches(1.0), Inches(2.15), Inches(11.3), Inches(1.7),
"Rebuilding the Base", size=52, bold=True, color=WHITE, font=FONT)
add_text(s, Inches(1.0), Inches(3.35), Inches(11.3), Inches(1.0),
"Pelvic Floor Rehabilitation in Cervical Cancer",
size=28, color=TEAL_L, font=FONT)
add_text(s, Inches(1.0), Inches(5.85), Inches(11.3), Inches(0.5),
"A Physiotherapy-Led, Evidence-Based Framework for Assessment and Rehabilitation",
size=16, italic=True, color=RGBColor(0xC8,0xD4,0xDA))
add_text(s, Inches(1.0), Inches(6.85), Inches(11.3), Inches(0.4),
"Presented at [Conference Name] • [Presenter Name], Physiotherapist • [Date]",
size=13, color=RGBColor(0x9F,0xB2,0xBC))
# ============================================================ SLIDE 2 - AGENDA
s = add_slide(); header(s, "Session Roadmap", "What We Will Cover")
items = [
"The clinical problem: cervical cancer treatment and pelvic floor injury",
"Pathophysiology - surgical and radiation mechanisms of dysfunction",
"Prevalence and impact on quality of life",
"The evidence base: key systematic reviews, meta-analyses and trials",
"Assessment framework for the pelvic health physiotherapist",
"Intervention toolkit and rehabilitation timeline (prehab to survivorship)",
"Dosage, adherence and service delivery considerations",
"Evidence gaps, future research, and take-home messages",
]
add_bullets(s, Inches(0.7), Inches(1.55), Inches(11.9), Inches(5.2), items, size=18, space_after=16)
# ============================================================ SLIDE 3 - BURDEN
s = add_slide(); header(s, "Clinical Context", "Cervical Cancer: Burden & Treatment Landscape")
add_text(s, Inches(0.7), Inches(1.5), Inches(5.9), Inches(0.4), "Global burden", size=16, bold=True, color=TEAL)
add_bullets(s, Inches(0.7), Inches(1.95), Inches(5.9), Inches(3.2), [
"4th most common cancer in women worldwide",
"Increasingly diagnosed and treated at earlier stages -> growing survivorship population",
"Survivors live for decades with treatment sequelae affecting pelvic health",
], size=15.5, space_after=14)
add_text(s, Inches(6.9), Inches(1.5), Inches(5.7), Inches(0.4), "Primary treatment modalities", size=16, bold=True, color=TEAL)
add_bullets(s, Inches(6.9), Inches(1.95), Inches(5.7), Inches(3.2), [
"Radical hysterectomy with pelvic lymphadenectomy",
"External beam radiotherapy (EBRT) +/- brachytherapy",
"Concurrent chemoradiation (locally advanced disease)",
"Combined modality treatment is common -> cumulative pelvic floor insult",
], size=15.5, space_after=14)
add_rect(s, Inches(0.7), Inches(5.3), Inches(11.9), Inches(1.15), TEAL_L)
add_text(s, Inches(1.0), Inches(5.45), Inches(11.3), Inches(0.9),
"Clinical takeaway: nearly every curative treatment pathway for cervical cancer passes directly "
"through pelvic floor structures - dysfunction is a predictable, not incidental, consequence.",
size=15, italic=True, color=NAVY, bold=True)
# ============================================================ SLIDE 4 - ANATOMY
s = add_slide(); header(s, "Foundations", "Pelvic Floor Anatomy: A Rapid Refresher")
try:
s.shapes.add_picture("assets/anatomy.jpg", Inches(7.3), Inches(1.55), height=Inches(4.9))
except Exception:
pass
add_bullets(s, Inches(0.7), Inches(1.6), Inches(6.2), Inches(4.6), [
"Levator ani complex (pubococcygeus, puborectalis, iliococcygeus) - support and sphincteric function",
"External anal and urethral sphincters - continence control",
"Endopelvic fascia and ligamentous supports - organ suspension",
"Rich somatic (pudendal nerve) and autonomic (hypogastric plexus) innervation",
"Vagina - a distensible structure highly vulnerable to fibrosis and shortening after treatment",
], size=15.5, space_after=14)
footer_citation(s, "Panel adapted from pelvic floor anatomy imaging used in oncologic staging literature.")
# ============================================================ SLIDE 5 - MECHANISMS
s = add_slide(); header(s, "Pathophysiology", "How Treatment Injures the Pelvic Floor")
try:
s.shapes.add_picture("assets/radiotherapy.jpg", Inches(7.5), Inches(1.6), height=Inches(3.4))
except Exception:
pass
add_text(s, Inches(0.7), Inches(1.55), Inches(6.4), Inches(0.35), "Surgical mechanisms", size=16, bold=True, color=TEAL)
add_bullets(s, Inches(0.7), Inches(1.95), Inches(6.4), Inches(2.0), [
"Autonomic nerve injury during radical hysterectomy (hypogastric/pelvic plexus)",
"Direct levator ani and connective tissue disruption",
"Altered bladder and bowel neuromuscular control",
], size=14.5, space_after=10)
add_text(s, Inches(0.7), Inches(4.0), Inches(6.4), Inches(0.35), "Radiotherapy mechanisms", size=16, bold=True, color=TEAL)
add_bullets(s, Inches(0.7), Inches(4.4), Inches(6.4), Inches(2.2), [
"Progressive fibrosis of muscle and connective tissue (chronic, dose-dependent)",
"Microvascular damage -> tissue hypoxia and reduced elasticity",
"Vaginal shortening, stenosis and mucosal atrophy",
"Denervation effects compounding surgical nerve injury",
], size=14.5, space_after=10)
footer_citation(s, "Image: representative external-beam / 3D-conformal radiotherapy planning for cervical cancer (pelvic target volume).")
# ============================================================ SLIDE 6 - PREVALENCE
s = add_slide(); header(s, "The Scale of the Problem", "Clinical Consequences & Prevalence")
stats = [("45%", "Sexual dysfunction", TEAL), ("34%", "Urinary incontinence", NAVY), ("11%", "Fecal incontinence", GOLD)]
xpos = [Inches(0.7), Inches(4.75), Inches(8.8)]
for (val, label, col), x in zip(stats, xpos):
add_rect(s, x, Inches(1.55), Inches(3.8), Inches(2.1), TEAL_L)
add_text(s, x, Inches(1.75), Inches(3.8), Inches(1.0), val, size=48, bold=True, color=col, align=PP_ALIGN.CENTER)
add_text(s, x, Inches(2.9), Inches(3.8), Inches(0.6), label, size=15, color=NAVY, align=PP_ALIGN.CENTER, bold=True)
add_text(s, Inches(0.7), Inches(3.95), Inches(11.9), Inches(0.4),
"Pooled prevalence in cervical cancer survivors after treatment", size=13, italic=True, color=GREY_M)
add_bullets(s, Inches(0.7), Inches(4.5), Inches(11.9), Inches(1.9), [
"Other reported sequelae: vaginal stenosis and dyspareunia, pelvic pain, lower limb / genital lymphedema, reduced pelvic floor muscle strength",
"Effects persist for years and significantly reduce health-related quality of life if unaddressed",
], size=15, space_after=10)
footer_citation(s, "Shan X, Qian M, Wang L, Liu X. 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 7 - RATIONALE
s = add_slide(); header(s, "The Case for Rehabilitation", "Why Physiotherapy?")
add_bullets(s, Inches(0.7), Inches(1.55), Inches(11.9), Inches(4.6), [
"Pelvic floor dysfunction after cervical cancer treatment is common, persistent, and under-recognised in routine oncology follow-up",
"Mechanisms (denervation, fibrosis, disuse, fear-avoidance) are directly targetable by conservative physiotherapy",
"Pelvic health physiotherapy is a core component of survivorship care in general urogynaecology and colorectal populations - transferable, adaptable principles",
"Growing dedicated evidence base specific to gynaecological and cervical cancer populations (next section)",
"Early, structured, supervised intervention (\"rebuilding the base\") aims to preserve function rather than only remediate late damage",
], size=17, space_after=18, bold_first=False)
# ============================================================ SLIDE 8 - EVIDENCE TABLE
s = add_slide(); header(s, "Evidence Base", "The Evidence at a Glance")
rows = [
("Study / Year", "Design", "Population", "Key Finding"),
("Shan et al. 2023", "Systematic Review\n& Meta-Analysis", "Cervical cancer\nsurvivors", "Pooled prevalence: FSD 45%, UI 34%, FI 11%"),
("Brennen et al. 2020\n(Physical Therapy)", "Systematic Review\n(5 RCTs, 2 cohorts)", "Gynaecological\ncancer survivors", "PFMT + counseling +/- yoga improves sexual function (SMD -0.96) & HRQoL (SMD 0.63)"),
("Cyr et al. 2024", "Systematic Review\n(20 studies)", "Gynaecological\ncancer", "Combined PFM + education therapy most effective; dosage/adherence/supervision matter"),
("Sacomori et al. 2020", "Pilot Study\n(pre-rehabilitation)", "Cervical cancer,\npre-radiotherapy", "Pre-RT PFM education feasible; may protect muscle strength & continence"),
("Lindgren et al. 2024", "Qualitative study\nwithin RCT", "Pelvic cancer,\npost-radiotherapy", "Physiotherapist-supported PFMT valued; reduced incontinence, improved confidence"),
]
top = Inches(1.5)
col_w = [Inches(2.5), Inches(2.5), Inches(2.5), Inches(4.4)]
left0 = Inches(0.7)
row_h = Inches(0.85)
for r_i, row in enumerate(rows):
x = left0
is_header = r_i == 0
for c_i, cell in enumerate(row):
w = col_w[c_i]
fill = NAVY if is_header else (TEAL_L if r_i % 2 == 0 else WHITE)
rect = add_rect(s, x, top + row_h*r_i, w, row_h, fill, line=True)
rect.line.color.rgb = RGBColor(0xDD,0xE3,0xE4)
rect.line.width = Pt(0.75)
txt_color = WHITE if is_header else GREY_D
add_text(s, x + Inches(0.08), top + row_h*r_i + Inches(0.05), w - Inches(0.16), row_h - Inches(0.1),
cell, size=11 if not is_header else 12.5, bold=is_header, color=txt_color,
anchor=MSO_ANCHOR.MIDDLE)
x += w
# ============================================================ SLIDE 9 - SPOTLIGHT 1
def spotlight_slide(kicker, title, meta_lines, findings, citation):
s = add_slide(); header(s, "Evidence Spotlight", title)
add_rect(s, Inches(0.7), Inches(1.5), Inches(4.0), Inches(3.9), NAVY)
yy = Inches(1.75)
for label, val in meta_lines:
add_text(s, Inches(0.95), yy, Inches(3.5), Inches(0.3), label.upper(), size=11, bold=True, color=GOLD)
add_text(s, Inches(0.95), yy+Inches(0.28), Inches(3.5), Inches(0.55), val, size=13.5, color=WHITE)
yy += Inches(0.95)
add_text(s, Inches(5.0), Inches(1.5), Inches(7.6), Inches(0.35), "Key findings", size=16, bold=True, color=TEAL)
add_bullets(s, Inches(5.0), Inches(1.95), Inches(7.6), Inches(3.6), findings, size=15, space_after=14)
footer_citation(s, citation)
return s
spotlight_slide(
"Evidence Spotlight",
"Spotlight: Brennen et al. 2020 - Physical Therapy",
[("Design", "Systematic Review\n5 RCTs + 2 cohort studies (n=886)"),
("Population", "Survivors of gynaecological\ncancer (incl. cervical)"),
("Evidence tier", "Tier 1 - Systematic Review")],
[
"PFMT combined with counseling and yoga/core exercise improved sexual function (SMD -0.96, 95% CI -1.22 to -0.70)",
"Same combined therapy improved health-related quality of life (SMD 0.63, 95% CI 0.38 to 0.88)",
"Dilator therapy reduced vaginal complications in cervical/uterine cancer survivors (OR 0.37, 95% CI 0.17-0.80)",
"Insufficient data yet for firm conclusions on bladder or bowel outcomes",
],
"Brennen R, Lin KY, Denehy L, Frawley HC. The Effect of Pelvic Floor Muscle Interventions on Pelvic Floor Dysfunction After Gynecological Cancer Treatment: A Systematic Review. Phys Ther. 2020. PMID: 32367126."
)
# ============================================================ SLIDE 10 - SPOTLIGHT 2
spotlight_slide(
"Evidence Spotlight",
"Spotlight: Cyr et al. 2024",
[("Design", "Systematic Review\n20 studies (11 RCTs)"),
("Population", "Females treated for\ngynaecological cancer"),
("Evidence tier", "Tier 1 - Systematic Review")],
[
"Combined (multimodal) therapy - active PFM training PLUS education - was most consistently effective across vaginal, sexual and PFM function outcomes",
"Active and/or electrostimulation PFM therapy may improve bladder outcomes",
"Limited evidence that active PFM + education improves bowel function",
"Intervention dosage, adherence and clinical supervision repeatedly identified as key drivers of effectiveness",
],
"Cyr MP, Jones T, Brennen R, Colombage U, Frawley HC. Effectiveness of Pelvic Floor Muscle and Education-Based Therapies... Gynecological Cancer: A Systematic Review. Curr Oncol Rep. 2024. PMID: 39177709."
)
# ============================================================ SLIDE 11 - SPOTLIGHT 3
spotlight_slide(
"Evidence Spotlight",
"Spotlight: Sacomori et al. 2020 - Pre-rehabilitation",
[("Design", "Pilot study\nn=49 enrolled, 28 completed"),
("Population", "Cervical cancer,\nFIGO stage I-III, pre-radiotherapy"),
("Evidence tier", "Observational / pilot")],
[
"Women taught PFM exercises (slow/fast contractions, \"the knack\") by a physiotherapist BEFORE, during and after radiotherapy",
"No significant decline in PFM strength (modified Oxford scale), EMG activity, or incontinence from baseline to 1 month post-RT",
"Suggests pre-rehabilitation may be a protective, feasible strategy - introduces the \"prehabilitation\" concept to cervical cancer care",
"High attrition (43% lost to follow-up) highlights real-world adherence challenges",
],
"Sacomori C, Araya-Castro P, Diaz-Guerrero P, et al. Pre-rehabilitation of the pelvic floor before radiation therapy for cervical cancer: a pilot study. Int Urogynecol J. 2020. PMID: 32601784."
)
# ============================================================ SLIDE 12 - SPOTLIGHT 4
spotlight_slide(
"Evidence Spotlight",
"Spotlight: Lindgren et al. 2024 - Patient Experience",
[("Design", "Qualitative study\nnested in an RCT (n=11 interviewed)"),
("Population", "Pelvic cancer survivors,\nurinary/faecal incontinence post-RT"),
("Evidence tier", "RCT-nested qualitative")],
[
"3-month PFMT program, with or without physiotherapist support (individual biofeedback + group training)",
"Physiotherapist-supported women reported a structured program and individual support were highly valued",
"Perceived gains: increased PFM strength, reduced urinary/faecal incontinence, better urge control, improved sexual health, reduced anxiety",
"All participants wanted PFMT with physiotherapist guidance embedded into standard pelvic cancer rehabilitation for every patient",
],
"Lindgren A, Borjeson S, Dunberger G. Female pelvic cancer survivors' experiences of pelvic floor muscle training after pelvic radiotherapy. Support Care Cancer. 2024. PMID: 39623242."
)
# ============================================================ SLIDE 13 - ASSESSMENT
s = add_slide(); header(s, "Clinical Practice", "Assessment Framework for the Physiotherapist")
add_bullets(s, Inches(0.7), Inches(1.55), Inches(11.9), Inches(5.0), [
"Comprehensive oncology and treatment history: surgery type/nerve-sparing status, radiotherapy dose/field, chemotherapy, time since treatment",
"Validated patient-reported outcomes: ICIQ (urinary/bowel), FSFI or similar (sexual function), condition-specific HRQoL tools",
"Subjective screen: bladder and bowel habits, incontinence episodes, dyspareunia, pelvic/vaginal pain, lymphedema symptoms",
"Objective pelvic floor examination (where appropriate and consented): visual inspection for radiation skin/mucosal changes, digital assessment of PFM tone/strength/endurance (modified Oxford scale), vaginal length and calibre, scar and tissue mobility",
"Instrumented assessment: surface or internal EMG biofeedback, manometry where available",
"Screen for red flags: fistula, recurrence symptoms, severe stenosis, lymphedema - refer back to oncology team as needed",
"Psychosocial screen: body image, fear of intimacy/pain, cancer-related distress - informs a trauma-informed approach",
], size=15, space_after=13)
# ============================================================ SLIDE 14 - TIMELINE
s = add_slide(); header(s, "Care Pathway", "Rehabilitation Timeline: Prehab to Survivorship")
phases = [
("PRE-TREATMENT", "\"Prehabilitation\"", ["Baseline PFM assessment", "Education on expected effects", "Teach PFM exercises before RT/surgery"]),
("ACUTE / ON-TREATMENT", "During & shortly after RT/surgery", ["Symptom monitoring", "Gentle PFM activation as tolerated", "Skin/tissue precautions, pain management"]),
("EARLY SURVIVORSHIP", "3-12 months post-treatment", ["Structured PFMT +/- biofeedback", "Vaginal dilator therapy programme", "Scar and soft tissue mobilisation", "Bladder/bowel retraining"]),
("LONG-TERM SURVIVORSHIP", "12+ months", ["Maintenance PFMT", "Sexual health rehabilitation", "Ongoing self-management & re-assessment", "Lymphedema surveillance"]),
]
xw = Inches(2.95); gap = Inches(0.15); x0 = Inches(0.55)
for i, (tag, sub, items) in enumerate(phases):
x = x0 + i*(xw+gap)
add_rect(s, x, Inches(1.55), xw, Inches(0.75), NAVY)
add_text(s, x+Inches(0.12), Inches(1.62), xw-Inches(0.24), Inches(0.3), tag, size=13, bold=True, color=GOLD)
add_text(s, x+Inches(0.12), Inches(1.95), xw-Inches(0.24), Inches(0.35), sub, size=10.5, color=WHITE, italic=True)
add_rect(s, x, Inches(2.35), xw, Inches(3.2), TEAL_L)
add_bullets(s, x+Inches(0.12), Inches(2.5), xw-Inches(0.24), Inches(2.9),
[(it,0) for it in items], size=11.5, space_after=8)
if i < len(phases)-1:
add_text(s, x+xw, Inches(1.85), gap, Inches(0.5), "→", size=20, bold=True, color=GOLD, align=PP_ALIGN.CENTER)
footer_citation(s, "Framework synthesised from Sacomori 2020 (prehabilitation), Brennen 2020, Cyr 2024, and Lindgren 2024.")
# ============================================================ SLIDE 15 - TOOLKIT
s = add_slide(); header(s, "Interventions", "Core Intervention Toolkit")
tools = [
("PFMT", "Individualised active pelvic floor muscle training - strength, endurance, coordination (the \"knack\")"),
("Biofeedback", "Surface/internal EMG biofeedback to improve awareness, motor learning and adherence"),
("Electrical Stimulation", "Adjunct for weak/non-palpable contraction or bladder urgency symptoms"),
("Vaginal Dilator Therapy", "Structured, graded dilator programme to reduce stenosis and preserve vaginal length/calibre"),
("Manual Therapy", "Scar and soft-tissue mobilisation, myofascial techniques for fibrotic/radiated tissue"),
("Education & Counselling", "Symptom expectation-setting, sexual health counselling, bladder/bowel behavioural strategies"),
]
cols = 3
cw = Inches(3.85); ch = Inches(2.15); gx = Inches(0.15); gy = Inches(0.2)
x0 = Inches(0.65); y0 = Inches(1.55)
for i,(title,desc) in enumerate(tools):
r, c = divmod(i, cols)
x = x0 + c*(cw+gx); y = y0 + r*(ch+gy)
add_rect(s, x, y, cw, ch, WHITE, line=True)
add_rect(s, x, y, cw, Inches(0.55), TEAL)
add_text(s, x+Inches(0.15), y+Inches(0.08), cw-Inches(0.3), Inches(0.4), title, size=15, bold=True, color=WHITE)
add_text(s, x+Inches(0.15), y+Inches(0.68), cw-Inches(0.3), ch-Inches(0.8), desc, size=12.5, color=GREY_D, line_spacing=1.1)
# ============================================================ SLIDE 16 - DOSAGE
s = add_slide(); header(s, "Implementation Science", "Dosage, Adherence & Supervision: What the Evidence Shows")
add_bullets(s, Inches(0.7), Inches(1.55), Inches(11.9), Inches(5.0), [
"Multimodal (combined) programmes consistently outperform single-modality PFMT alone across sexual, vaginal and PFM outcomes",
"Supervised, structured programmes show better adherence and outcomes than unsupervised home programmes alone",
"Adequate treatment dose (frequency, duration, follow-up) is repeatedly cited as a determinant of effect size across reviews",
"Patient-reported barriers: fatigue, treatment burden, embarrassment, lack of access to pelvic health physiotherapy",
"Patient-reported facilitators: individual physiotherapist support, group training, a clear structured routine, and knowledge of follow-up review",
"Attrition/drop-out is common in this population (e.g. up to 40%+ in pilot data) - retention strategies must be built into programme design",
], size=16, space_after=14)
# ============================================================ SLIDE 17 - PATHWAY / RECOMMENDATIONS
s = add_slide(); header(s, "Practice Recommendations", "Towards an Integrated Clinical Pathway")
add_bullets(s, Inches(0.7), Inches(1.55), Inches(11.9), Inches(5.0), [
"Embed routine pelvic floor screening into gynae-oncology follow-up pathways, not only on patient-initiated complaint",
"Refer for pelvic health physiotherapy assessment prior to treatment where feasible (prehabilitation model)",
"Offer a supervised, multimodal programme (PFMT + education +/- biofeedback/dilator therapy) rather than a leaflet-only approach",
"Use validated outcome measures at baseline and follow-up to track progress and demonstrate service value",
"Adopt a trauma-informed, sexual-health-inclusive communication style given high rates of dyspareunia and body-image concern",
"Build multidisciplinary links with gynae-oncology, radiation oncology, psychology and lymphedema services",
], size=16.5, space_after=14)
# ============================================================ SLIDE 18 - GAPS
s = add_slide(); header(s, "Looking Ahead", "Evidence Gaps & Future Research")
add_bullets(s, Inches(0.7), Inches(1.55), Inches(11.9), Inches(5.0), [
"Cervical-cancer-specific RCTs remain limited; much evidence is extrapolated from mixed gynaecological cancer cohorts",
"Bladder and bowel outcomes are under-studied compared with sexual function and quality of life",
"Optimal dose, frequency and duration of PFMT/biofeedback protocols are not yet standardised",
"Long-term (>2 year) outcome data and cost-effectiveness data are sparse",
"High attrition in trials points to a need for implementation and adherence research, not just efficacy research",
"Prehabilitation before radiotherapy is promising but based on small pilot data - larger trials needed",
], size=16.5, space_after=14)
# ============================================================ SLIDE 19 - TAKEAWAYS
s = add_slide(); header(s, "Summary", "Key Takeaways")
add_rect(s, Inches(0.7), Inches(1.5), Inches(11.9), Inches(4.9), NAVY)
takeaways = [
"Pelvic floor dysfunction affects roughly a third to nearly half of cervical cancer survivors and is largely preventable/treatable",
"Systematic review evidence (Tier 1) supports multimodal PFM + education therapy for sexual function, vaginal, and PFM outcomes",
"Prehabilitation before radiotherapy is feasible and may protect pelvic floor function",
"Patients want, and value, physiotherapist-led, supervised pelvic floor rehabilitation as part of standard survivorship care",
"Physiotherapists are well placed to lead assessment, intervention and advocacy for integrated pelvic floor pathways in gynae-oncology",
]
tb = s.shapes.add_textbox(Inches(1.05), Inches(1.75), Inches(11.2), Inches(4.4))
tf = tb.text_frame; tf.word_wrap = True
for i, t in enumerate(takeaways):
p = tf.paragraphs[0] if i==0 else tf.add_paragraph()
p.space_after = Pt(16); p.line_spacing = 1.15
r1 = p.add_run(); r1.text = f"{i+1}. "; r1.font.bold=True; r1.font.size=Pt(18); r1.font.color.rgb = GOLD; r1.font.name=FONT
r2 = p.add_run(); r2.text = t; r2.font.size=Pt(18); r2.font.color.rgb = WHITE; r2.font.name=FONT
# ============================================================ SLIDE 20 - REFERENCES
s = add_slide(); header(s, "References", "Key Sources")
refs = [
"Shan X, Qian M, Wang L, Liu X. Prevalence of pelvic floor dysfunction and sexual dysfunction in cervical cancer survivors: a systematic review and meta-analysis. Int Urogynecol J. 2023. PMID: 36001098.",
"Brennen R, Lin KY, Denehy L, Frawley HC. The Effect of Pelvic Floor Muscle Interventions on Pelvic Floor Dysfunction After Gynecological Cancer Treatment: A Systematic Review. Phys Ther. 2020. PMID: 32367126.",
"Cyr MP, Jones T, Brennen R, Colombage U, Frawley HC. Effectiveness of Pelvic Floor Muscle and Education-Based Therapies on Bladder, Bowel, Vaginal, Sexual, Psychological Function, QoL, and PFM Function in Females Treated for Gynecological Cancer: A Systematic Review. Curr Oncol Rep. 2024. PMID: 39177709.",
"Sacomori C, Araya-Castro P, Diaz-Guerrero P, Ferrada IA, Martinez-Varas AC, Zomkowski K. Pre-rehabilitation of the pelvic floor before radiation therapy for cervical cancer: a pilot study. Int Urogynecol J. 2020. PMID: 32601784.",
"Lindgren A, Borjeson S, Dunberger G. Female pelvic cancer survivors' experiences of pelvic floor muscle training after pelvic radiotherapy. Support Care Cancer. 2024. PMID: 39623242.",
"Tim S, Mazur-Bialy AI. Physiotherapy interventions in the treatment of pelvic floor dysfunctions after gynaecological oncology procedures: a systematic review. J Gynecol Obstet Hum Reprod. 2023. PMID: 39491091.",
"Monteiro MGCT, de Morais Gouveia GP. Physiotherapy in the management of gynecological cancer patient: A systematic review. J Bodyw Mov Ther. 2021. PMID: 34776164.",
"Berek & Novak's Gynecology; Sabiston Textbook of Surgery; Fischer's Mastery of Surgery - pelvic floor exercise & biofeedback in pelvic floor/continence rehabilitation.",
]
add_bullets(s, Inches(0.7), Inches(1.5), Inches(11.9), Inches(5.1), refs, size=12.5, space_after=11)
# ============================================================ SLIDE 21 - THANK YOU
s = add_slide()
add_rect(s, 0, 0, SW, SH, NAVY)
add_rect(s, 0, Inches(3.55), SW, Inches(0.06), GOLD)
add_text(s, Inches(1.0), Inches(2.6), Inches(11.3), Inches(0.9), "Thank You", size=48, bold=True, color=WHITE)
add_text(s, Inches(1.0), Inches(3.75), Inches(11.3), Inches(0.6), "Questions & Discussion", size=22, color=TEAL_L)
add_text(s, Inches(1.0), Inches(6.6), Inches(11.3), Inches(0.5),
"[Presenter Name] • [Email] • [Institution]", size=14, color=RGBColor(0x9F,0xB2,0xBC))
prs.save("output/Rebuilding_the_Base_Pelvic_Floor_Rehab_Cervical_Cancer.pptx")
print("Slides created:", len(prs.slides.__iter__.__self__._sldIdLst))
print("DONE")
cd /tmp/workspace/pfr-cervical-cancer-ppt && python3 build_ppt.py
cd /tmp/workspace/pfr-cervical-cancer-ppt && python3 -c " from pptx import Presentation prs = Presentation('output/Rebuilding_the_Base_Pelvic_Floor_Rehab_Cervical_Cancer.pptx') print('Total slides:', len(prs.slides)) 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[0] if texts else '(no text)') " ls -la output/
Rebuilding the Base Pelvic Floor Rehab Cervical Cancer
Presentation · PPTX
[Presenter Name], [Conference Name], [Date], [Email], [Institution] are on the title and closing slides for you to fill in. Let me know if you'd like slide count trimmed/expanded, a different color scheme, or speaker notes added.required 2 hrs presentation with clear images in the slides
female bony pelvis anatomy diagram
levator ani muscle pelvic floor anatomy diagram

A composite image for medical education comprising a diagnostic radiological image (MRI) on the left and a corresponding anatomical diagram on the right, illustrating the pelvic floor and anal canal. The MRI shows a coronal view of the anorectal region, highlighting the muscular layers of the pelvic outlet. The anatomical diagram provides a schematic representation of the same structures for clarity. It labels the levator ani as a broad, striated muscle group superiorly that forms the pelvic diaphragm and descends to blend with the longitudinal muscle layer of the anal canal. The external sphincter is depicted as a distinct, thicker muscular cuff surrounding the distal portion of the anal canal, located inferior to the levator ani's main attachment points. This visual comparison is designed to teach the spatial relationships between the pelvic floor muscles and the terminal digestive tract, emphasizing the functional anatomy required for fecal continence. The educational focus is on identifying the levator ani and external sphincter during pelvic imaging and understanding their relative morphology.

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.

Educational medical composite depicting the anatomy and surgical context of a high horseshoe anal fistula (HHAF). Panel (a) is an anatomical diagram of the perianal region showing external landmarks including the gluteus maximus, anococcygeal body, and the subcutaneous/superficial external anal sphincters, with a dotted line delineating the HHAF scope. Panel (b) presents a sagittal pelvic diagram illustrating the internal anal sphincter, levator ani muscle, and the deep, superficial, and subcutaneous external sphincters. It highlights the deep intersphincteric space (DPIS) and deep postanal space (DPAS) in relation to the fistula tract. Panel (c) is a clinical photograph showing the patient in a prone jackknife position for surgical exposure. Panel (d) provides a close-up clinical photograph of the preoperative surgical field, where a green-shaded overlay identifies the external manifestation of the HHAF. This visual resource is designed for proctological surgical planning and provides clear anatomical orientation of complex perianal fistulas relative to the pelvic floor musculature.
FIGO staging cervical cancer diagram

A multi-panel medical illustration and anatomical diagram depicting the FIGO staging of cervical cancer (Stages IA and IB). The central bottom panel displays a 3D-style anatomical diagram representing Stages IA1 and IA2, where the cervix appears macroscopically normal, indicating microinvasive disease that is not visible to the naked eye. The top left panel illustrates Stage IB1, showing a cross-section of the uterus and cervix with a small, localized dark lesion on the cervical canal; it is annotated as a cancer of 4 mm or smaller. The top right panel illustrates Stage IB2, showing a significantly larger, darker, and more prominent exophytic/ulcerative lesion on the cervix, annotated as being larger than 4 cm. All panels show relevant reproductive anatomy including the uterus, fallopian tubes, and ovaries. This educational graphic serves to distinguish clinical stages of cervical carcinoma based on tumor size and macroscopic visibility, relevant for gynecologic oncology and diagnostic pathology training.

This educational image details the radiological assessment and measurement protocols for cervical cancer using MRI.
radical hysterectomy surgical anatomy diagram
lower limb lymphedema cervical cancer clinical photo
perineometer vaginal biofeedback device pelvic floor
vaginal dilator set device
Kegel pelvic floor muscle exercise illustration
cervical cancer histology squamous cell carcinoma microscopy
"electrical stimulation" AND "pelvic floor" AND radiotherapy
lymphedema AND "cervical cancer" AND physiotherapy
vaginal dilator AND cervical cancer AND stenosis
PMID: 32107315
PMID: 34112100
PMID: 37100224
mkdir -p /tmp/workspace/pfr-cervical-cancer-ppt/assets && cd /tmp/workspace/pfr-cervical-cancer-ppt && python3 -c " import json, subprocess, base64 urls = [ 'https://cdn.orris.care/cdss_images/pmc_clinical_VQA_378faedfa738a6fe976b8db019ba5299aeea0fde9efe0d516bde304a26c9c77b.jpg', 'https://cdn.orris.care/cdss_images/pmc_clinical_VQA_2adffcd40f62f17a82f204e6949790778938357e5f8e03e0c9ea38d05da9ca3b.jpg', 'https://cdn.orris.care/cdss_images/pmc_clinical_VQA_0f6bdae723d69486aec56dcf57534eadd94b434749c8714e7cb38ba36ac392d1.jpg', 'https://cdn.orris.care/cdss_images/pmc_clinical_VQA_565ce99e353a0dbda4cac0ec9964b2d20de23535dbf2a905be12c698c0dfafa1.jpg', 'https://cdn.orris.care/cdss_images/pmc_clinical_VQA_6dffc7a829bd6407364e5f16863e701b28e94d4464c1cecce820743d61f8068a.jpg' ] result = json.loads(subprocess.check_output(['python', '/tmp/skills/shared/scripts/fetch_images.py'] + urls)) names = ['levator_ani_anal.jpg', 'pudendal_levator_plate.jpg', 'figo_staging.jpg', 'imrt_extended_field.jpg', 'ebrt_vs_imrt.jpg'] for img, name in zip(result, names): if img.get('base64'): b64 = img['base64'].split(',',1)[1] if ',' in img['base64'] else img['base64'] raw = base64.b64decode(b64) with open(f'assets/{name}', 'wb') as f: f.write(raw) print(name, 'saved', len(raw), 'bytes') else: print(name, 'FAILED', img.get('error')) " ls -la assets/
~/pfr-cervical-cancer-ppt/build_ppt_v2.py
# -*- coding: utf-8 -*-
"""
Rebuilding the Base: Pelvic Floor Rehabilitation in Cervical Cancer
Extended 2-hour conference / workshop deck for physiotherapists, with images.
"""
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.enum.shapes import MSO_SHAPE
NAVY = RGBColor(0x0B, 0x2E, 0x45)
TEAL = RGBColor(0x0E, 0x7C, 0x7B)
TEAL_L = RGBColor(0xE3, 0xF2, 0xF1)
GREY_D = RGBColor(0x33, 0x3A, 0x3F)
GREY_M = RGBColor(0x6B, 0x74, 0x79)
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
GOLD = RGBColor(0xC9, 0x9A, 0x3E)
BG = RGBColor(0xF7, 0xF9, 0xF9)
CARD_BORDER = RGBColor(0xDD, 0xE3, 0xE4)
FONT = "Calibri"
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
SEC_LABEL = {"n": ""}
SLIDE_NO = {"n": 0}
AGENDA_ITEMS = [] # (section, title) collected for auto agenda if needed
def add_slide():
s = prs.slides.add_slide(BLANK)
SLIDE_NO["n"] += 1
s.background.fill.solid()
s.background.fill.fore_color.rgb = BG
return s
def add_rect(slide, x, y, w, h, color, line=False, line_color=None, line_w=0.75):
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 = line_color or color
shp.line.width = Pt(line_w)
else:
shp.line.fill.background()
shp.shadow.inherit = False
return shp
def add_text(slide, x, y, w, h, text, size=18, color=GREY_D, bold=False, italic=False,
align=PP_ALIGN.LEFT, font=FONT, anchor=MSO_ANCHOR.TOP, line_spacing=1.0, wrap=True):
tb = slide.shapes.add_textbox(x, y, w, h)
tf = tb.text_frame
tf.word_wrap = wrap
tf.vertical_anchor = anchor
tf.margin_left = 0; tf.margin_right = 0; tf.margin_top = 0; tf.margin_bottom = 0
for i, line in enumerate(text.split("\n")):
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.name = font; r.font.color.rgb = color
return tb
def add_bullets(slide, x, y, w, h, items, size=16, color=GREY_D, font=FONT,
space_after=10, bullet_color=TEAL, 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; tf.margin_top = 0; tf.margin_bottom = 0
for i, item in enumerate(items):
txt, lvl = (item if isinstance(item, tuple) else (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 GREY_M); r.font.name = font
r2 = p.add_run(); r2.text = txt
r2.font.size = Pt(size - (2 if lvl else 0)); r2.font.color.rgb = color; r2.font.name = font
return tb
def header(slide, kicker, title):
add_rect(slide, 0, 0, SW, Inches(1.15), NAVY)
add_rect(slide, 0, Inches(1.15), SW, Pt(3), GOLD)
add_text(slide, Inches(0.55), Inches(0.12), Inches(11.5), Inches(0.3), kicker.upper(),
size=12, color=GOLD, bold=True)
add_text(slide, Inches(0.55), Inches(0.42), Inches(12.2), Inches(0.65), title,
size=25, color=WHITE, bold=True)
add_text(slide, SW - Inches(1.0), Inches(7.12), Inches(0.7), Inches(0.3), f"{SLIDE_NO['n']:02d}",
size=11, color=GREY_M, align=PP_ALIGN.RIGHT)
add_text(slide, Inches(0.55), Inches(7.12), Inches(7), Inches(0.3),
"Rebuilding the Base | Pelvic Floor Rehabilitation in Cervical Cancer", size=9, color=GREY_M)
def footer_citation(slide, text):
add_text(slide, Inches(0.55), Inches(6.78), Inches(12.2), Inches(0.35), text,
size=10, color=GREY_M, italic=True)
def picture_fit(slide, path, x, y, max_w, max_h):
from PIL import Image
try:
with Image.open(path) as im:
iw, ih = im.size
ratio = min(max_w/iw, max_h/ih)
w, h = int(iw*ratio), int(ih*ratio)
px = x + (max_w - w)//2
py = y + (max_h - h)//2
slide.shapes.add_picture(path, px, py, width=w, height=h)
except Exception as e:
add_rect(slide, x, y, max_w, max_h, TEAL_L, line=True)
add_text(slide, x, y+max_h//2-Inches(0.2), max_w, Inches(0.4), "[image unavailable]",
size=12, color=GREY_M, align=PP_ALIGN.CENTER)
def image_content_slide(kicker, title, bullets, image_path, caption, img_side="right",
bullets_size=15.5, space_after=13):
s = add_slide(); header(s, kicker, title)
if img_side == "right":
bx, bw = Inches(0.7), Inches(6.6)
ix, iw = Inches(7.55), Inches(5.1)
else:
ix, iw = Inches(0.7), Inches(5.1)
bx, bw = Inches(6.05), Inches(6.6)
add_bullets(s, bx, Inches(1.55), bw, Inches(5.0), bullets, size=bullets_size, space_after=space_after)
picture_fit(s, image_path, ix, Inches(1.55), iw, Inches(4.75))
if caption:
footer_citation(s, caption)
return s
def stat_cards(slide, cards, y=Inches(1.55), card_h=Inches(2.0)):
n = len(cards)
gap = Inches(0.3)
total_w = SW - Inches(1.4)
cw = Emu(int((total_w - gap*(n-1))/n)) if n > 1 else total_w
x = Inches(0.7)
for val, label, col in cards:
add_rect(slide, x, y, cw, card_h, TEAL_L)
add_text(slide, x, y+Inches(0.2), cw, Inches(0.9), val, size=40, bold=True, color=col, align=PP_ALIGN.CENTER)
add_text(slide, x, y+card_h-Inches(0.65), cw, Inches(0.55), label, size=13.5, color=NAVY,
align=PP_ALIGN.CENTER, bold=True)
x = Emu(x + cw + gap)
from pptx.util import Emu
def spotlight_slide(title, meta_lines, findings, citation, tier="Systematic Review"):
s = add_slide(); header(s, "Evidence Spotlight", title)
add_rect(s, Inches(0.7), Inches(1.5), Inches(4.0), Inches(3.9), NAVY)
yy = Inches(1.75)
for label, val in meta_lines:
add_text(s, Inches(0.95), yy, Inches(3.5), Inches(0.3), label.upper(), size=11, bold=True, color=GOLD)
add_text(s, Inches(0.95), yy+Inches(0.28), Inches(3.5), Inches(0.6), val, size=13, color=WHITE)
yy += Inches(0.95)
add_text(s, Inches(5.0), Inches(1.5), Inches(7.6), Inches(0.35), "Key findings", size=16, bold=True, color=TEAL)
add_bullets(s, Inches(5.0), Inches(1.95), Inches(7.6), Inches(3.6), findings, size=14.5, space_after=13)
footer_citation(s, citation)
return s
def process_steps(slide, steps, y=Inches(1.7), h=Inches(3.4)):
n = len(steps)
gap = Inches(0.25)
total_w = SW - Inches(1.4)
cw = Emu(int((total_w - gap*(n-1))/n))
x = Inches(0.7)
for i, (title, desc) in enumerate(steps):
add_rect(slide, x, y, cw, Inches(0.55), TEAL)
add_text(slide, x, y+Inches(0.08), cw, Inches(0.4), f"STEP {i+1}", size=13, bold=True, color=WHITE,
align=PP_ALIGN.CENTER)
add_rect(slide, x, y+Inches(0.55), cw, h-Inches(0.55), WHITE, line=True, line_color=CARD_BORDER)
add_text(slide, x+Inches(0.15), y+Inches(0.72), cw-Inches(0.3), Inches(0.5), title, size=14, bold=True, color=NAVY)
add_text(slide, x+Inches(0.15), y+Inches(1.25), cw-Inches(0.3), h-Inches(1.4), desc, size=12, color=GREY_D,
line_spacing=1.15)
if i < n-1:
add_text(slide, Emu(x+cw), y+Inches(1.2), gap, Inches(0.5), "→", size=20, bold=True, color=GOLD,
align=PP_ALIGN.CENTER)
x = Emu(x + cw + gap)
def icon_cards(slide, cards, cols=3, y=Inches(1.55)):
cw = Inches(3.85); ch = Inches(2.15); gx = Inches(0.15); gy = Inches(0.2)
x0 = Inches(0.65)
for i, (title, desc) in enumerate(cards):
r, c = divmod(i, cols)
x = x0 + c*(cw+gx); yy = y + r*(ch+gy)
add_rect(slide, x, yy, cw, ch, WHITE, line=True, line_color=CARD_BORDER)
add_rect(slide, x, yy, cw, Inches(0.55), TEAL)
add_text(slide, x+Inches(0.15), yy+Inches(0.08), cw-Inches(0.3), Inches(0.4), title, size=14.5, bold=True, color=WHITE)
add_text(slide, x+Inches(0.15), yy+Inches(0.68), cw-Inches(0.3), ch-Inches(0.8), desc, size=12, color=GREY_D,
line_spacing=1.1)
def case_slide(case_no, title, subjective, objective, plan, outcome):
s = add_slide(); header(s, f"Case Study {case_no}", title)
colw = Inches(5.85)
add_rect(s, Inches(0.7), Inches(1.5), colw, Inches(2.5), TEAL_L)
add_text(s, Inches(0.9), Inches(1.6), colw-Inches(0.4), Inches(0.3), "SUBJECTIVE / HISTORY", size=12, bold=True, color=TEAL)
add_bullets(s, Inches(0.9), Inches(1.95), colw-Inches(0.4), Inches(1.95), subjective, size=12.5, space_after=6)
add_rect(s, Inches(6.75), Inches(1.5), colw, Inches(2.5), TEAL_L)
add_text(s, Inches(6.95), Inches(1.6), colw-Inches(0.4), Inches(0.3), "OBJECTIVE FINDINGS", size=12, bold=True, color=TEAL)
add_bullets(s, Inches(6.95), Inches(1.95), colw-Inches(0.4), Inches(1.95), objective, size=12.5, space_after=6)
add_rect(s, Inches(0.7), Inches(4.2), colw, Inches(2.3), WHITE, line=True, line_color=CARD_BORDER)
add_text(s, Inches(0.9), Inches(4.3), colw-Inches(0.4), Inches(0.3), "PHYSIOTHERAPY PLAN", size=12, bold=True, color=NAVY)
add_bullets(s, Inches(0.9), Inches(4.65), colw-Inches(0.4), Inches(1.75), plan, size=12, space_after=6)
add_rect(s, Inches(6.75), Inches(4.2), colw, Inches(2.3), NAVY)
add_text(s, Inches(6.95), Inches(4.3), colw-Inches(0.4), Inches(0.3), "OUTCOME", size=12, bold=True, color=GOLD)
add_bullets(s, Inches(6.95), Inches(4.65), colw-Inches(0.4), Inches(1.75), outcome, size=12, color=WHITE, space_after=6,
bullet_color=GOLD)
return s
# =========================================================================
# 1 TITLE
s = add_slide()
add_rect(s, 0, 0, SW, SH, NAVY)
add_rect(s, 0, Inches(5.55), SW, Inches(0.06), GOLD)
add_text(s, Inches(1.0), Inches(1.5), Inches(11.3), Inches(0.4), "PHYSIOTHERAPY CONFERENCE | 2-HOUR EVIDENCE-BASED WORKSHOP",
size=15, bold=True, color=GOLD)
add_text(s, Inches(1.0), Inches(2.05), Inches(11.3), Inches(1.7), "Rebuilding the Base", size=52, bold=True, color=WHITE)
add_text(s, Inches(1.0), Inches(3.25), Inches(11.3), Inches(1.0), "Pelvic Floor Rehabilitation in Cervical Cancer",
size=28, color=TEAL_L)
add_text(s, Inches(1.0), Inches(5.85), Inches(11.3), Inches(0.5),
"A Physiotherapy-Led, Evidence-Based Framework: Assessment, Intervention & Case Application",
size=15.5, italic=True, color=RGBColor(0xC8,0xD4,0xDA))
add_text(s, Inches(1.0), Inches(6.85), Inches(11.3), Inches(0.4),
"[Conference Name] • [Presenter Name], Physiotherapist • [Date] • Duration: 2 hours",
size=13, color=RGBColor(0x9F,0xB2,0xBC))
# 2 SESSION FORMAT / AGENDA WITH TIME BLOCKS
s = add_slide(); header(s, "Session Format", "2-Hour Workshop: Time Allocation")
blocks = [
("00:00 - 00:15", "Clinical context & treatment landscape", "Epidemiology, staging, surgery & radiotherapy overview"),
("00:15 - 00:35", "Anatomy & pathophysiology", "Pelvic floor anatomy; mechanisms of surgical/radiation injury"),
("00:35 - 01:05", "Clinical impact & evidence base", "Prevalence data + 6 evidence spotlights (SRs, meta-analyses, RCTs)"),
("01:05 - 01:20", "BREAK (15 min)", "Networking / informal Q&A"),
("01:20 - 01:35", "Assessment framework", "Subjective, objective, instrumented assessment"),
("01:35 - 02:00", "Intervention toolkit & practical demonstration", "PFMT, biofeedback, e-stim, dilators, manual therapy, lymphedema care"),
("02:00 - 02:10", "Case studies & clinical pathway", "3 worked cases + implementation recommendations"),
("02:10 - 02:20", "Key takeaways & open discussion", "Summary, resources, Q&A"),
]
y = Inches(1.45)
for t, title, desc in blocks:
row_h = Inches(0.62)
fill = TEAL_L if "BREAK" not in title else RGBColor(0xF3,0xE9,0xD3)
add_rect(s, Inches(0.7), y, Inches(1.9), row_h, NAVY)
add_text(s, Inches(0.7), y+Inches(0.12), Inches(1.9), Inches(0.4), t, size=12.5, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
add_rect(s, Inches(2.65), y, Inches(9.95), row_h, fill)
add_text(s, Inches(2.8), y+Inches(0.06), Inches(3.6), Inches(0.5), title, size=13, bold=True, color=NAVY, anchor=MSO_ANCHOR.MIDDLE)
add_text(s, Inches(6.5), y+Inches(0.06), Inches(6.0), Inches(0.5), desc, size=11.5, color=GREY_D, anchor=MSO_ANCHOR.MIDDLE)
y = y + row_h + Inches(0.06)
# 3 LEARNING OBJECTIVES
s = add_slide(); header(s, "Learning Objectives", "By the End of This Session You Will Be Able To...")
add_bullets(s, Inches(0.7), Inches(1.6), Inches(11.9), Inches(5.0), [
"Describe the prevalence and mechanisms of pelvic floor dysfunction after cervical cancer treatment",
"Critically appraise the current evidence base for physiotherapy-led pelvic floor rehabilitation",
"Apply a structured subjective, objective and instrumented assessment framework",
"Select and sequence conservative interventions (PFMT, biofeedback, electrostimulation, dilator therapy, manual therapy, lymphedema management) according to evidence and patient presentation",
"Apply this framework to realistic clinical cases across the survivorship timeline",
"Identify evidence gaps and advocate for integrated pelvic floor pathways in gynae-oncology services",
], size=18, space_after=18)
# 4 BURDEN & EPIDEMIOLOGY
s = add_slide(); header(s, "Clinical Context", "Cervical Cancer: Burden & Epidemiology")
add_bullets(s, Inches(0.7), Inches(1.55), Inches(11.9), Inches(2.2), [
"4th most common cancer in women worldwide; a leading cause of cancer death where screening access is limited",
"Earlier detection and improved oncologic treatment are increasing the number of long-term survivors",
"Survivors live for decades carrying treatment-related pelvic floor sequelae - a growing physiotherapy caseload",
], size=17, space_after=16)
stat_cards(s, [("~660,000", "New cases annually (global)", TEAL), ("~350,000", "Deaths annually (global)", NAVY), ("Decades", "Typical survivorship duration", GOLD)],
y=Inches(4.1), card_h=Inches(2.1))
footer_citation(s, "Approximate order-of-magnitude figures from global cancer surveillance sources (GLOBOCAN); confirm against current WHO/IARC data for your region.")
# 5 FIGO STAGING (image)
image_content_slide(
"Clinical Context", "FIGO Staging: Why Stage Drives Treatment Choice",
[
"FIGO staging (IA to IVB) reflects tumour size, depth of invasion, and spread to parametria, pelvic wall, nodes or distant sites",
"Early microinvasive disease (IA) may be treated with local excision/simple hysterectomy - lower pelvic floor risk",
"Bulkier or locally advanced disease (IB2 and above) more often requires radical surgery and/or chemoradiation - higher cumulative pelvic floor risk",
"Physiotherapists should ask about stage and treatment received - it directly predicts the pattern of dysfunction to expect",
],
"assets/figo_staging.jpg",
"Illustrative FIGO staging schematic (Stage IA/IB). Confirm current FIGO 2018 staging criteria for clinical use."
)
# 6 TREATMENT: SURGERY
s = add_slide(); header(s, "Treatment Landscape", "Surgical Management")
add_bullets(s, Inches(0.7), Inches(1.55), Inches(11.9), Inches(5.0), [
"Radical hysterectomy with pelvic lymphadenectomy - standard for early-stage, operable disease",
"Nerve-sparing techniques aim to preserve the hypogastric/pelvic autonomic plexus but injury remains common",
"Extent of parametrial and paracolpal resection (Querleu-Morrow classification) correlates with degree of bladder/bowel/sexual dysfunction",
"Pelvic lymphadenectomy is a major risk factor for lower-limb lymphedema",
"Fertility-sparing options (radical trachelectomy) preserve the uterus but still involve cervical/parametrial dissection",
], size=17, space_after=16)
# 7 TREATMENT: RADIOTHERAPY (image)
image_content_slide(
"Treatment Landscape", "Radiotherapy & Brachytherapy",
[
"External beam radiotherapy (EBRT) +/- image-guided brachytherapy is standard for locally advanced disease",
"Modern IMRT allows better sparing of bladder, rectum and small bowel compared with older 2D/3D-conformal techniques",
"Brachytherapy boosts the cervix/upper vagina with high local dose - directly affecting vaginal tissue elasticity",
"Radiation effects are dose-dependent, cumulative and progressive - late fibrosis can appear months to years after treatment",
"Concurrent chemoradiation (cisplatin-based) is standard for stage IB3-IVA disease",
],
"assets/ebrt_vs_imrt.jpg",
"Comparison of conventional 2D external-beam planning vs modern IMRT contouring for cervical cancer."
)
# 8 COMBINED MODALITY / SURVIVORSHIP GROWTH
s = add_slide(); header(s, "Treatment Landscape", "Combined Modality Treatment & the Survivorship Imperative")
add_bullets(s, Inches(0.7), Inches(1.55), Inches(11.9), Inches(5.0), [
"Many patients receive surgery AND radiotherapy (e.g. adjuvant RT for positive margins/nodes) - a 'double hit' to the pelvic floor",
"Combined modality treatment carries the highest risk of urinary, bowel, sexual and lymphatic dysfunction",
"Improved survival rates mean more women living long-term with treatment sequelae - unmet rehabilitation need",
"International survivorship guidelines increasingly recommend routine pelvic floor screening - physiotherapy is central to delivering this",
], size=17, space_after=16)
# 9 PF ANATOMY OVERVIEW
s = add_slide(); header(s, "Anatomy & Pathophysiology", "Pelvic Floor Anatomy: Setting the Scene")
add_bullets(s, Inches(0.7), Inches(1.55), Inches(11.9), Inches(5.0), [
"The pelvic floor is a dynamic muscular and fascial 'hammock' supporting bladder, uterus/vagina and rectum",
"Three functional layers: endopelvic fascia (support), levator ani complex (the main muscular sling), and perineal membrane/sphincters (continence)",
"Function depends on intact muscle, connective tissue AND nerve supply - all three can be affected by cervical cancer treatment",
"Understanding baseline anatomy is essential to interpret what surgery and radiotherapy actually damage",
], size=17, space_after=16)
# 10 LEVATOR ANI (image)
image_content_slide(
"Anatomy & Pathophysiology", "The Levator Ani Complex",
[
"Composed of pubococcygeus, puborectalis and iliococcygeus - forms the pelvic diaphragm",
"Provides constant resting tone plus reflexive/voluntary contraction for continence and support",
"Blends inferiorly with the anal sphincter mechanism - critical for bowel continence",
"This is the primary target muscle group for pelvic floor muscle training (PFMT)",
],
"assets/anatomy.jpg",
"Composite anatomical diagram of levator ani, puborectalis and anal sphincter complex."
)
# 11 CONTINENCE ANATOMY (image)
image_content_slide(
"Anatomy & Pathophysiology", "Continence Anatomy: Anal Canal & Sphincters",
[
"Internal anal sphincter (involuntary, smooth muscle) provides resting tone",
"External anal sphincter (voluntary, striated muscle) provides squeeze/urge control",
"Levator ani and puborectalis form the anorectal angle - key to faecal continence",
"Radiation fibrosis and surgical disruption can impair both sphincter integrity and rectal wall compliance",
],
"assets/levator_ani_anal.jpg",
"MRI and schematic correlation of levator ani, puborectalis and internal/external anal sphincter.",
img_side="left"
)
# 12 NERVE SUPPLY (image)
image_content_slide(
"Anatomy & Pathophysiology", "Nerve Supply & the Levator Plate",
[
"Pudendal nerve (S2-S4) - somatic innervation of external sphincters and pelvic floor muscles",
"Hypogastric/pelvic autonomic plexus - bladder, bowel and sexual (arousal) function",
"The levator plate provides the structural shelf on which pelvic organs rest at rest",
"Radical hysterectomy dissection runs directly through the autonomic plexus territory - explaining post-surgical bladder/bowel/sexual dysfunction",
],
"assets/pudendal_levator_plate.jpg",
"Schematic and ultrasound correlation of the levator plate and adjacent pudendal nerve territory."
)
# 13 SURGICAL MECHANISMS
s = add_slide(); header(s, "Anatomy & Pathophysiology", "Surgical Mechanisms of Pelvic Floor Injury")
add_bullets(s, Inches(0.7), Inches(1.55), Inches(11.9), Inches(5.0), [
"Autonomic nerve injury during radical parametrectomy - bladder hypotonia, bowel dysmotility, impaired arousal",
"Direct disruption of levator ani fibres and endopelvic fascia during dissection",
"Vaginal cuff shortening and altered vaginal axis after hysterectomy",
"Pelvic lymphadenectomy interrupts lymphatic drainage -> lower limb lymphedema risk",
"Post-operative pain, scarring and fear-avoidance further inhibit normal pelvic floor activation",
], size=17, space_after=16)
# 14 RADIOTHERAPY MECHANISMS (image)
image_content_slide(
"Anatomy & Pathophysiology", "Radiotherapy Mechanisms of Pelvic Floor Injury",
[
"Progressive fibrosis of muscle, fascia and vaginal tissue - dose-dependent and can worsen over years",
"Microvascular endothelial damage -> chronic tissue hypoxia, reduced elasticity and healing capacity",
"Vaginal mucosal atrophy, shortening and stenosis - agglutination risk without preventive dilation",
"Compounds any pre-existing surgical denervation - a cumulative, not isolated, injury pattern",
"Chronic changes may not manifest until months to years after treatment completion",
],
"assets/imrt_extended_field.jpg",
"Example extended-field IMRT dose distribution for cervical cancer with nodal boost."
)
# 15 CUMULATIVE INJURY MODEL
s = add_slide(); header(s, "Anatomy & Pathophysiology", "The Cumulative Injury Model")
steps = [
("Baseline", "Pre-existing pelvic floor function, parity, age-related changes"),
("Surgery", "Nerve injury, fascial disruption, lymphadenectomy"),
("Radiotherapy", "Fibrosis, microvascular damage, mucosal atrophy"),
("Disuse / Fear", "Pain avoidance, reduced activity, deconditioning"),
("Clinical Dysfunction", "Incontinence, stenosis, pain, lymphedema, sexual dysfunction"),
]
process_steps(s, steps, y=Inches(1.7), h=Inches(3.6))
add_rect(s, Inches(0.7), Inches(5.55), Inches(11.9), Inches(1.0), TEAL_L)
add_text(s, Inches(1.0), Inches(5.68), Inches(11.3), Inches(0.75),
"This model explains why combined-modality patients present with the most severe, multi-system pelvic floor dysfunction - "
"and why physiotherapy must address muscle, tissue AND behavioural contributors together.",
size=14, italic=True, color=NAVY, bold=True)
# 16 PREVALENCE OVERVIEW
s = add_slide(); header(s, "Clinical Impact", "Scale of the Problem: Prevalence")
stat_cards(s, [("45%", "Sexual dysfunction", TEAL), ("34%", "Urinary incontinence", NAVY), ("11%", "Fecal incontinence", GOLD)],
y=Inches(1.55), card_h=Inches(2.0))
add_bullets(s, Inches(0.7), Inches(3.85), Inches(11.9), Inches(2.6), [
"Additional sequelae: vaginal stenosis/dyspareunia, chronic pelvic pain, lower-limb lymphedema (up to ~20-36% after lymphadenectomy)",
"Symptoms frequently under-reported by patients and under-screened by oncology teams",
"Effects are persistent - often present years after treatment completion without intervention",
], size=15.5, space_after=12)
footer_citation(s, "Shan X, Qian M, Wang L, Liu X. Prevalence of pelvic floor dysfunction and sexual dysfunction in cervical cancer survivors: a systematic review and meta-analysis. Int Urogynecol J. 2023. PMID: 36001098.")
# 17 URINARY & BOWEL DETAIL
s = add_slide(); header(s, "Clinical Impact", "Urinary & Bowel Dysfunction")
add_text(s, Inches(0.7), Inches(1.5), Inches(5.9), Inches(0.35), "Urinary dysfunction", size=16, bold=True, color=TEAL)
add_bullets(s, Inches(0.7), Inches(1.9), Inches(5.9), Inches(3.6), [
"Stress urinary incontinence - denervation of urethral sphincter support",
"Urgency / overactive bladder - detrusor changes post-radiation",
"Voiding dysfunction / incomplete emptying - autonomic injury",
"Recurrent UTIs secondary to incomplete emptying",
], size=14.5, space_after=12)
add_text(s, Inches(6.9), Inches(1.5), Inches(5.7), Inches(0.35), "Bowel dysfunction", size=16, bold=True, color=TEAL)
add_bullets(s, Inches(6.9), Inches(1.9), Inches(5.7), Inches(3.6), [
"Faecal urgency and incontinence - sphincter and rectal compliance changes",
"Radiation proctitis - urgency, bleeding, mucus discharge",
"Chronic diarrhoea or constipation - altered bowel motility",
"Rectal capacity reduction limiting normal storage function",
], size=14.5, space_after=12)
# 18 SEXUAL DYSFUNCTION / STENOSIS DETAIL
s = add_slide(); header(s, "Clinical Impact", "Sexual Dysfunction & Vaginal Stenosis")
add_bullets(s, Inches(0.7), Inches(1.55), Inches(11.9), Inches(3.4), [
"Vaginal shortening, narrowing and reduced elasticity - can progress for 1-2+ years post-radiotherapy",
"Dyspareunia, reduced lubrication and altered sensation impacting sexual function and relationships",
"Fear of pain and body-image change can drive avoidance, worsening stenosis in a vicious cycle",
"Vaginal dilator therapy is the best-studied preventive strategy but adherence is a major challenge",
], size=16, space_after=14)
add_rect(s, Inches(0.7), Inches(5.15), Inches(11.9), Inches(1.35), TEAL_L)
add_text(s, Inches(1.0), Inches(5.3), Inches(11.3), Inches(1.05),
"RCT evidence (Martins et al. 2021, n=195): topical oestrogen, testosterone, lubricant and vaginal dilators all showed "
"similar reduction in vaginal volume over 12 months, but dilator users had significantly lower severity/frequency of "
"clinical vaginal stenosis (CTCAE scale) at 1 year.", size=14, italic=True, color=NAVY)
# 19 LYMPHEDEMA & PELVIC PAIN
s = add_slide(); header(s, "Clinical Impact", "Lower-Limb Lymphedema & Pelvic Pain")
add_text(s, Inches(0.7), Inches(1.5), Inches(5.9), Inches(0.35), "Lower-limb lymphedema", size=16, bold=True, color=TEAL)
add_bullets(s, Inches(0.7), Inches(1.9), Inches(5.9), Inches(3.6), [
"Result of pelvic lymphadenectomy +/- radiotherapy disrupting lymphatic drainage",
"Reported incidence roughly 20-36% depending on nodal dissection extent and RT",
"RCT evidence: modified complex decongestive physiotherapy (manual lymph drainage, compression, exercise, education) reduced incidence from 34.5% to 13.6% (OR 0.30) - Wang et al. 2020",
], size=14, space_after=11)
add_text(s, Inches(6.9), Inches(1.5), Inches(5.7), Inches(0.35), "Chronic pelvic pain", size=16, bold=True, color=TEAL)
add_bullets(s, Inches(6.9), Inches(1.9), Inches(5.7), Inches(3.6), [
"Myofascial pelvic floor pain / hypertonicity secondary to fibrosis and guarding",
"Neuropathic pain from nerve injury or fibrosis entrapment",
"Often coexists with dyspareunia and bowel/bladder urgency - needs a whole-person assessment",
], size=14, space_after=11)
# 20 PSYCHOSOCIAL / QOL
s = add_slide(); header(s, "Clinical Impact", "Psychosocial Impact & Quality of Life")
add_bullets(s, Inches(0.7), Inches(1.55), Inches(11.9), Inches(5.0), [
"Body image change, altered sense of femininity/sexuality after cervical cancer treatment",
"Anxiety around intimacy, fear of recurrence, and grief related to fertility loss",
"Incontinence and pain restrict social participation, exercise and return to work",
"Many women report feeling unprepared for these effects and under-supported by routine follow-up",
"Physiotherapy consultations offer a unique opportunity for open, normalised discussion of these concerns",
], size=17, space_after=16)
# 21 EVIDENCE TABLE OVERVIEW
s = add_slide(); header(s, "Evidence Base", "The Evidence at a Glance")
rows = [
("Study / Year", "Design", "Population", "Key Finding"),
("Shan 2023", "SR & Meta-Analysis", "Cervical CA survivors", "Pooled prevalence: FSD 45%, UI 34%, FI 11%"),
("Brennen 2020", "SR (5 RCT, 2 cohort)", "Gynae cancer survivors", "PFMT+counseling+yoga: sexual fn SMD -0.96, HRQoL SMD 0.63"),
("Cyr 2024", "SR (20 studies)", "Gynae cancer", "Combined PFM+education most effective; dose/adherence matter"),
("Sacomori 2020", "Pilot (prehab)", "Cervical CA, pre-RT", "Pre-RT PFM education feasible; preserved strength/continence"),
("Lindgren 2024", "Qualitative in RCT", "Pelvic cancer, post-RT", "Physio-supported PFMT valued; reduced incontinence"),
("Martins 2021", "RCT (n=195)", "Cervical CA, post-RT", "Dilator use -> lower stenosis severity at 1 year"),
("Wang 2020", "RCT (n=120)", "Cervical CA, post-surgery", "Decongestive physio cut lymphedema incidence 34.5%->13.6%"),
]
top = Inches(1.45); col_w = [Inches(2.1), Inches(2.3), Inches(2.5), Inches(5.0)]; left0 = Inches(0.7); row_h = Inches(0.68)
for r_i, row in enumerate(rows):
x = left0; is_header = r_i == 0
for c_i, cell in enumerate(row):
w = col_w[c_i]
fill = NAVY if is_header else (TEAL_L if r_i % 2 == 0 else WHITE)
rect = add_rect(s, x, top+row_h*r_i, w, row_h, fill, line=True, line_color=CARD_BORDER)
add_text(s, x+Inches(0.08), top+row_h*r_i+Inches(0.04), w-Inches(0.16), row_h-Inches(0.08), cell,
size=11 if not is_header else 12, bold=is_header, color=(WHITE if is_header else GREY_D),
anchor=MSO_ANCHOR.MIDDLE)
x += w
# 22-27 SPOTLIGHTS
spotlight_slide("Spotlight: Brennen et al. 2020 (Physical Therapy)",
[("Design", "Systematic Review\n5 RCTs + 2 cohorts (n=886)"), ("Population", "Gynaecological cancer\nsurvivors (incl. cervical)"), ("Tier", "1 - Systematic Review")],
["PFMT + counseling + yoga/core improved sexual function (SMD -0.96, 95% CI -1.22 to -0.70)",
"Same combined therapy improved HRQoL (SMD 0.63, 95% CI 0.38 to 0.88)",
"Dilator therapy reduced vaginal complications (OR 0.37, 95% CI 0.17-0.80)",
"Insufficient data yet for firm conclusions on bladder or bowel outcomes"],
"Brennen R, Lin KY, Denehy L, Frawley HC. Phys Ther. 2020. PMID: 32367126.")
spotlight_slide("Spotlight: Cyr et al. 2024",
[("Design", "Systematic Review\n20 studies (11 RCTs)"), ("Population", "Females treated for\ngynaecological cancer"), ("Tier", "1 - Systematic Review")],
["Combined (multimodal) active PFM training + education most consistently effective across vaginal, sexual, PFM outcomes",
"Active and/or electrostimulation PFM therapy may improve bladder outcomes",
"Limited evidence active PFM + education improves bowel function",
"Dosage, adherence and clinical supervision repeatedly identified as key effect modifiers"],
"Cyr MP, Jones T, Brennen R, Colombage U, Frawley HC. Curr Oncol Rep. 2024. PMID: 39177709.")
spotlight_slide("Spotlight: Sacomori et al. 2020 - Prehabilitation",
[("Design", "Pilot study\nn=49 enrolled, 28 completed"), ("Population", "Cervical CA, FIGO I-III,\npre-radiotherapy"), ("Tier", "Observational / pilot")],
["PFM exercises (slow/fast contractions, 'the knack') taught before, during and after RT",
"No significant decline in PFM strength, EMG activity or incontinence at 1 month post-RT",
"Introduces the 'prehabilitation' concept to cervical cancer pelvic floor care",
"43% lost to follow-up - highlights real-world adherence challenges"],
"Sacomori C, Araya-Castro P, Diaz-Guerrero P, et al. Int Urogynecol J. 2020. PMID: 32601784.")
spotlight_slide("Spotlight: Lindgren et al. 2024 - Patient Experience",
[("Design", "Qualitative, nested in RCT\n(n=11 interviewed)"), ("Population", "Pelvic cancer, urinary/faecal\nincontinence post-RT"), ("Tier", "RCT-nested qualitative")],
["3-month PFMT, with or without physiotherapist support (biofeedback + group training)",
"Physiotherapist support and structured routine were highly valued by participants",
"Perceived gains: PFM strength, reduced incontinence, better urge control, improved sexual health, less anxiety",
"All participants wanted physiotherapist-guided PFMT embedded into standard pelvic cancer care"],
"Lindgren A, Borjeson S, Dunberger G. Support Care Cancer. 2024. PMID: 39623242.")
spotlight_slide("Spotlight: Martins et al. 2021 - Dilator RCT",
[("Design", "Open-label RCT\nn=195"), ("Population", "Cervical CA stage I-IIIB,\npost-radiotherapy"), ("Tier", "3 - RCT")],
["Compared topical oestrogen, topical testosterone, lubricant gel, and vaginal dilators",
"All groups showed similar reduction in vaginal volume (~25%) over 12 months",
"Vaginal dilator users had significantly lower severity/frequency of stenosis on the CTCAE scale at 1 year (p=0.37 vs worsening p<0.01 in other groups)",
"Supports structured dilator therapy as a core preventive physiotherapy intervention post-RT"],
"Martins J, Vaz AF, Grion RC, Costa-Paiva L, Baccaro LF. BMC Cancer. 2021. PMID: 34112100.")
spotlight_slide("Spotlight: Wang et al. 2020 - Lymphedema RCT",
[("Design", "RCT\nn=120 (117 completed)"), ("Population", "Cervical CA, post radical\nhysterectomy + lymphadenectomy"), ("Tier", "3 - RCT")],
["Modified complex decongestive physiotherapy: manual lymph drainage, compression hosiery, exercise, education",
"Lymphedema incidence: 13.6% (intervention) vs 34.5% (control) - OR 0.30 (95% CI 0.12-0.75)",
"Median excess limb volume significantly lower in the intervention group",
"Later onset of lymphedema in the intervention group (8 vs 4.6 months)"],
"Wang X, Ding Y, Cai HY, et al. Int J Gynecol Cancer. 2020. PMID: 32107315.")
# 28 SUBJECTIVE ASSESSMENT
s = add_slide(); header(s, "Assessment Framework", "Subjective Assessment & Patient-Reported Outcomes")
add_bullets(s, Inches(0.7), Inches(1.55), Inches(11.9), Inches(5.0), [
"Full oncology history: cancer stage/FIGO, surgery type & nerve-sparing status, radiotherapy dose/field, chemotherapy, time since treatment",
"Validated PROMs: ICIQ (urinary/bowel), FSFI or PISQ (sexual function), condition-specific HRQoL tools, CTCAE for stenosis grading",
"Structured symptom screen: incontinence type/frequency, voiding/defaecation habits, dyspareunia, pelvic/vaginal pain, limb swelling",
"Psychosocial screen: body image, relationship impact, fear of intimacy or recurrence, distress",
"Goal-setting - align assessment with what matters most functionally to this specific patient",
], size=16.5, space_after=14)
# 29 OBJECTIVE EXAMINATION
s = add_slide(); header(s, "Assessment Framework", "Objective Pelvic Floor Muscle Examination")
add_bullets(s, Inches(0.7), Inches(1.55), Inches(11.9), Inches(5.0), [
"Visual inspection: perineal skin/mucosal integrity, radiation changes, scarring, prolapse signs",
"Digital vaginal/rectal assessment (with consent): PFM tone, voluntary contraction strength (Modified Oxford Scale 0-5), endurance and coordination",
"Assess vaginal length and calibre - baseline for dilator therapy progression",
"Palpate for trigger points, tissue restriction and scar mobility (surgical or radiation fibrosis)",
"Functional tests: cough/Valsalva for leakage, sit-to-stand, functional bowel/bladder diary review",
], size=16.5, space_after=14)
# 30 INSTRUMENTED ASSESSMENT
s = add_slide(); header(s, "Assessment Framework", "Instrumented Assessment: Biofeedback & EMG")
steps = [
("Sensor placement", "Surface or internal vaginal/anal EMG probe positioned per manufacturer protocol"),
("Baseline recording", "Resting tone and 3-5 maximal voluntary contractions recorded"),
("Visual feedback", "Real-time signal displayed to patient - improves motor awareness and learning"),
("Objective tracking", "Amplitude, hold time and fatigue index tracked across sessions to guide progression"),
]
process_steps(s, steps, y=Inches(1.7), h=Inches(3.4))
add_rect(s, Inches(0.7), Inches(5.4), Inches(11.9), Inches(1.15), TEAL_L)
add_text(s, Inches(1.0), Inches(5.53), Inches(11.3), Inches(0.9),
"Biofeedback is particularly valuable in this population: many women have reduced perineal sensation post-radiotherapy "
"and benefit from visual/auditory confirmation that a correct contraction is occurring.", size=14, italic=True, color=NAVY)
# 31 VAGINAL CALIBRATION / LYMPHEDEMA MEASUREMENT
s = add_slide(); header(s, "Assessment Framework", "Vaginal Calibration & Lymphedema Measurement")
add_text(s, Inches(0.7), Inches(1.5), Inches(5.9), Inches(0.35), "Vaginal assessment", size=16, bold=True, color=TEAL)
add_bullets(s, Inches(0.7), Inches(1.9), Inches(5.9), Inches(3.6), [
"Measure vaginal length and introital calibre using graduated dilators as a baseline",
"Grade stenosis severity using CTCAE criteria",
"Reassess at defined intervals to track progression/regression",
], size=14.5, space_after=12)
add_text(s, Inches(6.9), Inches(1.5), Inches(5.7), Inches(0.35), "Lymphedema assessment", size=16, bold=True, color=TEAL)
add_bullets(s, Inches(6.9), Inches(1.9), Inches(5.7), Inches(3.6), [
"Circumferential limb measurements at standardised points, or volumetry where available",
"Screen early (from surgery) - earlier detection improves complex decongestive therapy outcomes",
"Assess skin integrity, heaviness, and functional limitation",
], size=14.5, space_after=12)
# 32 RED FLAGS
s = add_slide(); header(s, "Assessment Framework", "Red Flags & Psychosocial Screening")
add_bullets(s, Inches(0.7), Inches(1.55), Inches(11.9), Inches(5.0), [
"Fistula symptoms (continuous leakage of urine/faeces per vagina) - urgent medical referral",
"New/worsening pain, bleeding or mass - possible recurrence, refer back to oncology team",
"Severe, non-negotiable vaginal stenosis or obliteration - may need medical/surgical input alongside physiotherapy",
"Significant unilateral limb swelling with pain/redness - rule out DVT before treating as lymphedema",
"Signs of significant psychological distress - screen and refer to psycho-oncology/counselling services",
"A trauma-informed, consent-driven approach is essential throughout - always explain and gain consent before internal examination",
], size=16, space_after=14)
# 33 TOOLKIT OVERVIEW
s = add_slide(); header(s, "Intervention Toolkit", "Core Intervention Toolkit: Overview")
icon_cards(s, [
("PFMT", "Individualised active pelvic floor muscle training - strength, endurance, coordination (the 'knack')"),
("Biofeedback", "Surface/internal EMG to improve awareness, motor learning and adherence"),
("Electrical Stimulation", "Neuromuscular re-education or TENS for weak contraction / pain modulation"),
("Vaginal Dilator Therapy", "Structured, graded programme to reduce stenosis and preserve vaginal calibre"),
("Manual Therapy", "Scar and soft-tissue mobilisation, myofascial techniques for fibrotic tissue"),
("Lymphedema Management", "Manual lymph drainage, compression, exercise, education (complex decongestive therapy)"),
], cols=3, y=Inches(1.55))
# 34 PFMT TECHNIQUE
s = add_slide(); header(s, "Intervention Toolkit", "PFMT in Practice: Technique & Progression")
steps = [
("Find the muscle", "Cue via digital palpation/biofeedback; avoid breath-holding or gluteal/abdominal substitution"),
("Build the basics", "Slow, sustained holds (build to 6-10s) plus fast/short contractions; 8-12 reps, 3 sets/day"),
("Add function", "Train 'the knack' - pre-contraction before cough/sneeze/lifting to prevent leakage"),
("Progress load", "Add functional positions (standing, walking) and integrate into daily activity"),
]
process_steps(s, steps, y=Inches(1.7), h=Inches(3.6))
footer_citation(s, "Progression principles consistent with PFMT protocols described across Brennen 2020, Cyr 2024 and Sacomori 2020.")
# 35 BIOFEEDBACK IN PRACTICE
s = add_slide(); header(s, "Intervention Toolkit", "Biofeedback in Practice")
add_bullets(s, Inches(0.7), Inches(1.55), Inches(11.9), Inches(3.6), [
"Especially useful where perineal sensation is reduced post-radiotherapy, or where patients struggle to isolate the correct muscle group",
"Session structure: baseline recording -> guided practice with real-time visual feedback -> home program calibrated to session data",
"Combine with education for best results - Cyr et al. 2024 found combined (active PFM + education) programmes outperform single-modality approaches",
"Track objective progress across sessions to support motivation and adherence",
], size=16, space_after=14)
add_rect(s, Inches(0.7), Inches(5.35), Inches(11.9), Inches(1.15), TEAL_L)
add_text(s, Inches(1.0), Inches(5.48), Inches(11.3), Inches(0.9),
"Clinical tip: normalise that sensation may be altered after radiotherapy - reassure patients this does not mean the muscle cannot be trained.",
size=14, italic=True, color=NAVY)
# 36 ELECTRICAL STIMULATION
s = add_slide(); header(s, "Intervention Toolkit", "Electrical Stimulation Protocols")
add_bullets(s, Inches(0.7), Inches(1.55), Inches(11.9), Inches(3.6), [
"Neuromuscular electrical stimulation (NMES) supports pelvic floor muscle re-education, particularly where voluntary contraction is weak or difficult to isolate",
"TENS-type analgesic stimulation can help modulate chronic pelvic/perineal pain",
"Systematic review evidence (Bouallalene-Jaramillo & Calvo-Sanz, 2023) confirms functional benefit of neuromuscular stimulation for PFM re-education, and TENS for pain, but calls for more consistent parameter reporting",
"Use caution and check local protocols regarding electrical stimulation over recently irradiated or surgically compromised tissue",
], size=16, space_after=14)
footer_citation(s, "Bouallalene-Jaramillo K, Calvo-Sanz J. Parameterization of electrotherapy interventions in physiotherapy for pelvic floor dysfunctions: a systematic review. Actas Urol Esp. 2023. PMID: 37100224.")
# 37 DILATOR PROTOCOL
s = add_slide(); header(s, "Intervention Toolkit", "Vaginal Dilator Therapy Protocol")
steps = [
("Timing", "Initiate as advised (commonly 2-4 weeks post-RT once acute mucositis settles) and continue long-term"),
("Technique", "Start with comfortable size; insert with lubricant, hold 5-10 min, gentle in/out and rotation"),
("Frequency", "Typically 3+ times/week (individualise); increase to daily if higher stenosis risk"),
("Progression", "Graduate to larger dilator sizes as tolerated; combine with PFM relaxation training"),
]
process_steps(s, steps, y=Inches(1.7), h=Inches(3.6))
add_rect(s, Inches(0.7), Inches(5.5), Inches(11.9), Inches(1.05), TEAL_L)
add_text(s, Inches(1.0), Inches(5.6), Inches(11.3), Inches(0.85),
"Martins et al. 2021: dilator users showed significantly lower stenosis severity at 1 year vs oestrogen, testosterone or lubricant alone.",
size=13.5, italic=True, color=NAVY)
# 38 MANUAL THERAPY
s = add_slide(); header(s, "Intervention Toolkit", "Manual Therapy & Scar Mobilisation")
add_bullets(s, Inches(0.7), Inches(1.55), Inches(11.9), Inches(5.0), [
"External and internal soft-tissue mobilisation for surgical scar adhesions and radiation-fibrosed tissue",
"Myofascial release for pelvic floor hypertonicity/guarding contributing to pain and voiding dysfunction",
"Connective tissue manipulation and stretching to improve vaginal and perineal tissue extensibility",
"Always screen tissue healing status and oncology clearance before deep or internal techniques post-treatment",
"Combine with breathing and relaxation strategies to down-train an overactive pelvic floor",
], size=16.5, space_after=14)
# 39 LYMPHEDEMA MANAGEMENT
s = add_slide(); header(s, "Intervention Toolkit", "Lymphedema Management (Complex Decongestive Therapy)")
add_bullets(s, Inches(0.7), Inches(1.55), Inches(11.9), Inches(3.4), [
"Manual lymphatic drainage - gentle, directional massage to stimulate lymphatic flow",
"Compression therapy - bandaging progressing to fitted compression hosiery",
"Remedial exercise - promotes muscle-pump assisted lymphatic and venous return",
"Skin care and patient education on early warning signs and self-management",
], size=16, space_after=14)
add_rect(s, Inches(0.7), Inches(5.05), Inches(11.9), Inches(1.4), TEAL_L)
add_text(s, Inches(1.0), Inches(5.2), Inches(11.3), Inches(1.1),
"Wang et al. 2020 RCT: this combined program reduced lower-limb lymphedema incidence from 34.5% to 13.6% "
"(OR 0.30) in cervical cancer survivors after radical hysterectomy and lymphadenectomy - started early and continued for 1 year.",
size=14, italic=True, color=NAVY)
# 40 EDUCATION / WHOLE BODY
s = add_slide(); header(s, "Intervention Toolkit", "Education, Counselling & Whole-Body Adjuncts")
add_bullets(s, Inches(0.7), Inches(1.55), Inches(11.9), Inches(5.0), [
"Expectation-setting: explain likely timeline and pattern of symptoms based on treatment received",
"Sexual health counselling: normalise concerns, discuss lubricants, positions, timing of intimacy resumption, and dilator use",
"Bladder and bowel behavioural strategies: timed voiding, urge deferral, dietary/fluid advice, defaecation posture",
"Yoga, core stability and general aerobic exercise - evidence supports these as adjuncts to PFMT for HRQoL and sexual function (Brennen 2020)",
"Signpost peer support, psycho-oncology and sexual health services as part of a holistic plan",
], size=16, space_after=14)
# 41 REHAB TIMELINE
s = add_slide(); header(s, "Care Pathway", "Rehabilitation Timeline: Prehab to Survivorship")
phases = [
("PRE-TREATMENT", ["Baseline PFM assessment", "Education on expected effects", "Teach PFM exercises before RT/surgery"]),
("ACUTE / ON-TREATMENT", ["Symptom monitoring", "Gentle PFM activation as tolerated", "Skin/tissue precautions, pain management"]),
("EARLY SURVIVORSHIP (3-12mo)", ["Structured PFMT +/- biofeedback", "Vaginal dilator programme", "Scar/soft tissue mobilisation", "Bladder/bowel retraining"]),
("LONG-TERM SURVIVORSHIP (12mo+)", ["Maintenance PFMT", "Sexual health rehabilitation", "Self-management & re-assessment", "Lymphedema surveillance"]),
]
xw = Inches(2.95); gap = Inches(0.15); x0 = Inches(0.55)
for i, (tag, items) in enumerate(phases):
x = x0 + i*(xw+gap)
add_rect(s, x, Inches(1.55), xw, Inches(0.6), NAVY)
add_text(s, x+Inches(0.1), Inches(1.62), xw-Inches(0.2), Inches(0.45), tag, size=12, bold=True, color=GOLD, align=PP_ALIGN.CENTER)
add_rect(s, x, Inches(2.15), xw, Inches(3.4), TEAL_L)
add_bullets(s, x+Inches(0.12), Inches(2.3), xw-Inches(0.24), Inches(3.1), [(it,0) for it in items], size=11.5, space_after=8)
if i < len(phases)-1:
add_text(s, x+xw, Inches(1.85), gap, Inches(0.5), "→", size=20, bold=True, color=GOLD, align=PP_ALIGN.CENTER)
# 42 DOSAGE / ADHERENCE
s = add_slide(); header(s, "Care Pathway", "Dosage, Adherence & Supervision: What the Evidence Shows")
add_bullets(s, Inches(0.7), Inches(1.55), Inches(11.9), Inches(5.0), [
"Multimodal (combined) programmes consistently outperform single-modality PFMT alone",
"Supervised, structured programmes show better adherence and outcomes than unsupervised home programmes",
"Adequate treatment dose (frequency, duration, follow-up) is a repeated determinant of effect size",
"Barriers: fatigue, treatment burden, embarrassment, limited access to pelvic health physiotherapy",
"Facilitators: individual physiotherapist support, group training, structured routine, scheduled follow-up",
"Attrition is common (up to 40%+ in pilot data) - build retention strategies into programme design from the outset",
], size=16, space_after=14)
# 43-45 CASE STUDIES
case_slide(1, "Post-Surgical Early Incontinence",
["45F, 6 weeks post radical hysterectomy + pelvic lymphadenectomy (Stage IB1)", "New-onset stress urinary incontinence and reduced sensation of bladder fullness", "Anxious about returning to exercise class"],
["PFM strength 2/5 (Modified Oxford Scale), poor isolation, substitutes with gluteal squeeze", "Mild lower limb swelling noted, no red flags", "Scar well healed, mild restriction on mobility testing"],
["Biofeedback-assisted PFMT to improve muscle isolation and strength", "Bladder retraining and 'the knack' education for exertional leakage", "Baseline lymphedema screening and self-monitoring education", "Graded return-to-exercise plan"],
["PFM strength improved to 4/5 by 12 weeks", "Incontinence episodes reduced from daily to occasional", "Returned to modified exercise class with confidence"])
case_slide(2, "Post-Radiotherapy Vaginal Stenosis",
["52F, 4 months post chemoradiation + brachytherapy for Stage IIB disease", "Reports painful intercourse, has avoided dilator use due to discomfort and fear", "Also reports urinary urgency"],
["Reduced vaginal calibre and length on assessment; tender, restricted introital tissue", "PFM hypertonicity noted on palpation - guarding pattern", "No signs of fistula or recurrence"],
["Trauma-informed education and graded, comfortable dilator programme with lubricant", "Manual therapy and relaxation-based PFM down-training before progressing to strengthening", "Sexual health counselling and referral for psychosexual support", "Bladder urgency strategies alongside pelvic floor down-training"],
["Improved comfort with dilator use over 8 weeks", "Reduced pain with intercourse reported at 3-month review", "Urinary urgency improved with combined bladder/PFM strategy"])
case_slide(3, "Long-Term Survivor: Lymphedema & Sexual Dysfunction",
["61F, 3 years post combined surgery and radiotherapy for Stage IIIB disease", "Chronic left lower limb swelling and ongoing sexual dysfunction never previously addressed", "Reduced quality of life and social participation"],
["Left leg circumference +3cm vs right at mid-calf; skin intact but heavy/tight sensation", "Significant vaginal shortening and reduced elasticity on assessment", "PFM strength preserved but poor coordination with functional tasks"],
["Complex decongestive therapy referral - manual lymph drainage, compression garment fitting, exercise", "Progressive dilator therapy combined with manual soft-tissue work", "Functional PFMT integrated with daily activity and exercise goals", "Coordinated review with gynae-oncology and psycho-oncology"],
["Limb volume reduced and stabilised with compression adherence", "Gradual improvement in vaginal calibre and comfort", "Patient reported renewed confidence in intimacy and social activity"])
# 46 CLINICAL PATHWAY
s = add_slide(); header(s, "Implementation", "Towards an Integrated Clinical Pathway")
add_bullets(s, Inches(0.7), Inches(1.55), Inches(11.9), Inches(5.0), [
"Embed routine pelvic floor screening into gynae-oncology follow-up, not only on patient-initiated complaint",
"Refer for pelvic health physiotherapy assessment prior to treatment where feasible (prehabilitation model)",
"Offer a supervised, multimodal programme (PFMT + education +/- biofeedback/dilator/e-stim) rather than a leaflet-only approach",
"Use validated outcome measures at baseline and follow-up to track progress and demonstrate service value",
"Adopt a trauma-informed, sexual-health-inclusive communication style given high rates of dyspareunia and body-image concern",
"Build multidisciplinary links with gynae-oncology, radiation oncology, psychology and lymphedema services",
], size=16.5, space_after=14)
# 47 EVIDENCE GAPS
s = add_slide(); header(s, "Implementation", "Evidence Gaps & Future Research")
add_bullets(s, Inches(0.7), Inches(1.55), Inches(11.9), Inches(5.0), [
"Cervical-cancer-specific RCTs remain limited; much evidence is extrapolated from mixed gynaecological cancer cohorts",
"Bladder and bowel outcomes are under-studied compared with sexual function and quality of life",
"Optimal dose, frequency and duration of PFMT/biofeedback/electrostimulation protocols are not yet standardised",
"Long-term (>2 year) outcome and cost-effectiveness data are sparse",
"High attrition in trials points to a need for implementation and adherence research, not just efficacy research",
"Prehabilitation before radiotherapy is promising but based on small pilot data - larger trials needed",
], size=16.5, space_after=14)
# 48 KEY TAKEAWAYS
s = add_slide(); header(s, "Summary", "Key Takeaways")
add_rect(s, Inches(0.7), Inches(1.5), Inches(11.9), Inches(4.9), NAVY)
takeaways = [
"Pelvic floor dysfunction affects roughly a third to nearly half of cervical cancer survivors and is largely preventable/treatable",
"Systematic review evidence supports multimodal PFM + education therapy for sexual, vaginal, and PFM outcomes",
"Targeted RCTs support dilator therapy for stenosis and complex decongestive therapy for lymphedema prevention",
"Prehabilitation before radiotherapy is feasible and may protect pelvic floor function",
"Patients want, and value, physiotherapist-led, supervised pelvic floor rehabilitation as standard survivorship care",
]
tb = s.shapes.add_textbox(Inches(1.05), Inches(1.75), Inches(11.2), Inches(4.4))
tf = tb.text_frame; tf.word_wrap = True
for i, t in enumerate(takeaways):
p = tf.paragraphs[0] if i==0 else tf.add_paragraph()
p.space_after = Pt(16); p.line_spacing = 1.15
r1 = p.add_run(); r1.text = f"{i+1}. "; r1.font.bold=True; r1.font.size=Pt(18); r1.font.color.rgb = GOLD; r1.font.name=FONT
r2 = p.add_run(); r2.text = t; r2.font.size=Pt(18); r2.font.color.rgb = WHITE; r2.font.name=FONT
# 49 REFERENCES
s = add_slide(); header(s, "References", "Key Sources (1 of 2)")
refs1 = [
"Shan X, Qian M, Wang L, Liu X. Prevalence of pelvic floor dysfunction and sexual dysfunction in cervical cancer survivors: a systematic review and meta-analysis. Int Urogynecol J. 2023. PMID: 36001098.",
"Brennen R, Lin KY, Denehy L, Frawley HC. The Effect of Pelvic Floor Muscle Interventions on Pelvic Floor Dysfunction After Gynecological Cancer Treatment: A Systematic Review. Phys Ther. 2020. PMID: 32367126.",
"Cyr MP, Jones T, Brennen R, Colombage U, Frawley HC. Effectiveness of Pelvic Floor Muscle and Education-Based Therapies... Gynecological Cancer: A Systematic Review. Curr Oncol Rep. 2024. PMID: 39177709.",
"Sacomori C, Araya-Castro P, Diaz-Guerrero P, et al. Pre-rehabilitation of the pelvic floor before radiation therapy for cervical cancer: a pilot study. Int Urogynecol J. 2020. PMID: 32601784.",
]
add_bullets(s, Inches(0.7), Inches(1.5), Inches(11.9), Inches(5.1), refs1, size=13, space_after=14)
s = add_slide(); header(s, "References", "Key Sources (2 of 2)")
refs2 = [
"Lindgren A, Borjeson S, Dunberger G. Female pelvic cancer survivors' experiences of pelvic floor muscle training after pelvic radiotherapy. Support Care Cancer. 2024. PMID: 39623242.",
"Martins J, Vaz AF, Grion RC, Costa-Paiva L, Baccaro LF. Topical estrogen, testosterone, and vaginal dilator in the prevention of vaginal stenosis after radiotherapy. BMC Cancer. 2021. PMID: 34112100.",
"Wang X, Ding Y, Cai HY, et al. Effectiveness of modified complex decongestive physiotherapy for preventing lower extremity lymphedema after radical surgery for cervical cancer: a RCT. Int J Gynecol Cancer. 2020. PMID: 32107315.",
"Bouallalene-Jaramillo K, Calvo-Sanz J. Parameterization of electrotherapy interventions in physiotherapy for pelvic floor dysfunctions: a systematic review. Actas Urol Esp. 2023. PMID: 37100224.",
"Tim S, Mazur-Bialy AI. Physiotherapy interventions in the treatment of pelvic floor dysfunctions after gynaecological oncology procedures: a systematic review. J Gynecol Obstet Hum Reprod. 2023. PMID: 39491091.",
]
add_bullets(s, Inches(0.7), Inches(1.5), Inches(11.9), Inches(5.1), refs2, size=13, space_after=14)
# 51 THANK YOU
s = add_slide()
add_rect(s, 0, 0, SW, SH, NAVY)
add_rect(s, 0, Inches(3.55), SW, Inches(0.06), GOLD)
add_text(s, Inches(1.0), Inches(2.6), Inches(11.3), Inches(0.9), "Thank You", size=48, bold=True, color=WHITE)
add_text(s, Inches(1.0), Inches(3.75), Inches(11.3), Inches(0.6), "Questions & Discussion", size=22, color=TEAL_L)
add_text(s, Inches(1.0), Inches(6.6), Inches(11.3), Inches(0.5), "[Presenter Name] • [Email] • [Institution]",
size=14, color=RGBColor(0x9F,0xB2,0xBC))
prs.save("output/Rebuilding_the_Base_2hr_Workshop.pptx")
print("TOTAL SLIDES:", len(prs.slides))
print("DONE")
cd /tmp/workspace/pfr-cervical-cancer-ppt && python3 build_ppt_v2.py
cd /tmp/workspace/pfr-cervical-cancer-ppt && python3 -c " from pptx import Presentation prs = Presentation('output/Rebuilding_the_Base_2hr_Workshop.pptx') print('Total slides:', len(prs.slides)) img_slides = 0 for i, slide in enumerate(prs.slides, 1): has_img = any(sh.shape_type == 13 for sh in slide.shapes) if has_img: img_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[0] if texts else '(no text)', '[IMG]' if has_img else '') print('Slides with images:', img_slides) " ls -la output/
Rebuilding the Base 2hr Workshop
Presentation · PPTX
| Time | Section | Slides |
|---|---|---|
| 00:00-00:15 | Title, session format/agenda, learning objectives | 1-3 |
| 00:00-00:15 | Clinical context: epidemiology, FIGO staging (image), surgery, radiotherapy (image), combined-modality/survivorship | 4-8 |
| 00:15-00:35 | Anatomy & pathophysiology: pelvic floor overview, levator ani (image), continence anatomy (image), nerve supply/levator plate (image), surgical mechanisms, radiotherapy mechanisms (image), cumulative injury model | 9-15 |
| 00:35-01:05 | Clinical impact & evidence: prevalence stats, urinary/bowel, sexual dysfunction/stenosis, lymphedema/pain, psychosocial impact, evidence table, 6 evidence spotlights (Brennen 2020, Cyr 2024, Sacomori 2020, Lindgren 2024, Martins 2021 dilator RCT, Wang 2020 lymphedema RCT) | 16-27 |
| 01:05-01:20 | BREAK | - |
| 01:20-01:35 | Assessment: subjective/PROMs, objective exam, instrumented biofeedback/EMG, vaginal/lymphedema measurement, red flags | 28-32 |
| 01:35-02:00 | Intervention toolkit: overview + PFMT technique, biofeedback, e-stim, dilator protocol, manual therapy, lymphedema CDT, education/whole-body — each with process-step or icon-card graphics | 33-40 |
| 02:00-02:10 | Care pathway timeline, dosage/adherence evidence, 3 full case studies (post-surgical, post-RT stenosis, long-term survivor) | 41-45 |
| 02:10-02:20 | Implementation pathway, evidence gaps, key takeaways, references (2 slides), thank you/Q&A | 46-51 |
[Presenter Name], [Conference Name], [Date]) remain on the title/closing slides for you to fill in. Let me know if you want the break slide removed to compress to a tighter 2 hours without networking time, speaker notes added per slide, or the earlier 21-slide version kept as a shorter companion deck.add speaker notes
~/pfr-cervical-cancer-ppt
~/pfr-cervical-cancer-ppt/output
Rebuilding the Base Pelvic Floor Rehab Cervical Cancer
Presentation · PPTX
[Presenter Name], [Conference Name], [Date], [Email], [Institution] are on the title and closing slides for you to fill in. Let me know if you'd like slide count trimmed/expanded, a different color scheme, or speaker notes added.The 2-hour workshop deck is built and verified: 51 slides, 6 with embedded real clinical/anatomical images, no build errors.Rebuilding the Base 2hr Workshop
Presentation · PPTX
| Time | Section | Slides |
|---|---|---|
| 00:00-00:15 | Title, session format/agenda, learning objectives | 1-3 |
| 00:00-00:15 | Clinical context: epidemiology, FIGO staging (image), surgery, radiotherapy (image), combined-modality/survivorship | 4-8 |
| 00:15-00:35 | Anatomy & pathophysiology: pelvic floor overview, levator ani (image), continence anatomy (image), nerve supply/levator plate (image), surgical mechanisms, radiotherapy mechanisms (image), cumulative injury model | 9-15 |
| 00:35-01:05 | Clinical impact & evidence: prevalence stats, urinary/bowel, sexual dysfunction/stenosis, lymphedema/pain, psychosocial impact, evidence table, 6 evidence spotlights (Brennen 2020, Cyr 2024, Sacomori 2020, Lindgren 2024, Martins 2021 dilator RCT, Wang 2020 lymphedema RCT) | 16-27 |
| 01:05-01:20 | BREAK | - |
| 01:20-01:35 | Assessment: subjective/PROMs, objective exam, instrumented biofeedback/EMG, vaginal/lymphedema measurement, red flags | 28-32 |
| 01:35-02:00 | Intervention toolkit: overview + PFMT technique, biofeedback, e-stim, dilator protocol, manual therapy, lymphedema CDT, education/whole-body — each with process-step or icon-card graphics | 33-40 |
| 02:00-02:10 | Care pathway timeline, dosage/adherence evidence, 3 full case studies (post-surgical, post-RT stenosis, long-term survivor) | 41-45 |
| 02:10-02:20 | Implementation pathway, evidence gaps, key takeaways, references (2 slides), thank you/Q&A | 46-51 |
[Presenter Name], [Conference Name], [Date]) remain on the title/closing slides for you to fill in. Let me know if you want the break slide removed to compress to a tighter 2 hours without networking time, speaker notes added per slide, or the earlier 21-slide version kept as a shorter companion deck.An error occurred (ValidationException) when calling the InvokeCodeInterpreter operation: Code interpreter session 01M0TK9JJNXRC8FSK0C2F2BCGV is not active
We encountered an error while processing your request. Please try again or reach out to us for help.
An error occurred (ValidationException) when calling the InvokeCodeInterpreter operation: Code interpreter session 01M0TK9JJNXRC8FSK0C2F2BCGV is not active
We encountered an error while processing your request. Please try again or reach out to us for help.
speaker notes added per slide
~/pfr-cervical-cancer-ppt
~/pfr-cervical-cancer-ppt/output
~/pfr-cervical-cancer-ppt/assets
~/pfr-cervical-cancer-ppt/add_speaker_notes.py
# -*- coding: utf-8 -*-
"""Add speaker notes to every slide of the 2-hour workshop deck."""
from pptx import Presentation
PATH = "output/Rebuilding_the_Base_2hr_Workshop.pptx"
NOTES = [
# 1 Title
"Welcome the audience. Introduce yourself and your clinical background in pelvic health physiotherapy and oncology rehabilitation. "
"Frame the session: this is a 2-hour, evidence-based workshop aimed at physiotherapists who want to build (or strengthen) a pelvic "
"floor rehabilitation service for cervical cancer patients. Acknowledge that this is a growing survivorship need that is currently "
"under-served in most services. Set expectations: didactic content, evidence review, practical/clinical application, and case discussion.",
# 2 Session format
"Walk through the time blocks so the audience knows what to expect and can pace their own note-taking/questions. Flag the 15-minute "
"break after the evidence section - encourage people to save clarifying questions for then or for the final open discussion so the "
"session stays on time. Mention that case studies and practical demonstration are deliberately placed after assessment/intervention "
"content so participants can apply what they've just learned.",
# 3 Learning objectives
"Read through the objectives briefly - these double as your session's self-assessment checklist. Emphasise objective 4 and 5 (applying "
"a structured framework and using it in realistic cases) as the practical payoff of the session. Invite attendees to think of one "
"patient in their own caseload they can mentally 'test' this framework against as you go through the talk.",
# 4 Burden & epidemiology
"Ground the audience in scale: cervical cancer remains a major global health issue, and, importantly, survival is improving. That's "
"good news clinically but it means our caseload of long-term survivors living with treatment sequelae is growing every year. Note "
"that the specific incidence/mortality figures are approximate global figures - encourage attendees to substitute local country data "
"if presenting to a regional audience. Key message: this is not a niche population, it's an expanding one.",
# 5 FIGO staging (img)
"Use the image to briefly orient non-oncology-specialist physiotherapists to what FIGO staging communicates: size and spread of "
"disease. You don't need to teach staging in detail - the key clinical pearl is that stage largely dictates treatment (surgery alone "
"vs surgery+radiotherapy vs chemoradiation), and treatment intensity predicts pelvic floor risk. Encourage attendees to always ask "
"'what treatment did you have, and what stage was it?' as part of their history taking - it changes your whole assessment approach.",
# 6 Treatment: surgery
"Explain radical hysterectomy in plain terms - removal of uterus, cervix, upper vagina and surrounding parametrial tissue, plus pelvic "
"lymph node dissection. Highlight the Querleu-Morrow classification briefly if the audience is familiar with oncology terminology - "
"more radical resection (type C) carries higher nerve injury risk than nerve-sparing approaches. Mention fertility-sparing trachelectomy "
"as a variant seen in younger patients. Key point: even 'clean' nerve-sparing surgery does not guarantee normal pelvic floor function.",
# 7 Treatment: radiotherapy (img)
"Use the image to show how radiotherapy planning has evolved - conventional 2D fields vs modern IMRT with organ-at-risk sparing. "
"Explain brachytherapy briefly: an internal radiation source placed in the vagina/cervix to deliver a high local boost - this is why "
"vaginal tissue is disproportionately affected by fibrosis and stenosis compared with more distant structures. Emphasise the dose-"
"dependent, cumulative, and delayed nature of radiation damage - a patient may look 'fine' at 3 months and develop stenosis at 18 months.",
# 8 Combined modality/survivorship (image not present but keep consistent)
"This is the 'double hit' slide - make sure the audience understands why combined modality patients are your highest-risk, most "
"complex caseload. Connect this back to the survivorship point from slide 4: as more patients survive long-term, more of them are "
"combined-modality patients living with compounded pelvic floor injury. This is your case for why physiotherapy needs to be built "
"into standard survivorship pathways, not offered reactively.",
# 9 PF anatomy overview
"Keep this as a rapid refresher - most physiotherapists will have some background, so don't over-teach. The key framing point is the "
"three-layer model (fascia, levator ani, perineal membrane/sphincters) and that function requires muscle + connective tissue + nerve "
"supply all working together. This sets up the next several slides, which map specific structures to specific injury mechanisms.",
# 10 Levator ani (img)
"Point out puborectalis, pubococcygeus and iliococcygeus on the image. Emphasise that this muscle group is under constant resting "
"tone as well as providing voluntary/reflexive contraction - which is why training must include both endurance/tone work and fast-"
"twitch functional training (the 'knack'), not just isolated Kegels. This is the primary target of PFMT covered later in the toolkit section.",
# 11 Continence anatomy (img)
"Use the MRI/schematic correlation to explain the difference between the internal (involuntary, smooth muscle, resting tone) and "
"external (voluntary, striated, squeeze) anal sphincters. Link this directly to the bowel dysfunction content coming up in the "
"clinical impact section - radiation fibrosis and surgical disruption can affect both sphincter integrity and rectal wall compliance, "
"which is why bowel urgency/incontinence is common in this population.",
# 12 Nerve supply (img)
"This is arguably the most clinically important anatomy slide. Explain that the hypogastric/pelvic autonomic plexus runs directly "
"through the surgical field during radical parametrectomy - this is precisely why bladder, bowel and sexual arousal dysfunction are "
"so common after radical hysterectomy, even with nerve-sparing technique. Contrast with the pudendal nerve (somatic, S2-S4), which "
"governs voluntary sphincter/pelvic floor muscle control and is more the target of PFMT.",
# 13 Surgical mechanisms
"Consolidate the surgical injury mechanisms into one clear list. Use this slide to explicitly link mechanism to downstream symptom: "
"nerve injury -> bladder/bowel/sexual dysfunction; fascial/levator disruption -> support/continence issues; lymphadenectomy -> "
"lymphedema; pain/fear-avoidance -> disuse atrophy. This mechanistic clarity is what allows physiotherapists to target treatment "
"rather than treating symptoms generically.",
# 14 Radiotherapy mechanisms (img)
"Reinforce that radiation injury is progressive and can worsen for one to two years or more after treatment ends - very different "
"from the acute, largely fixed-at-time-of-surgery injury pattern. This is the physiological rationale for starting dilator therapy "
"early and continuing it long-term, and for reassessing patients well beyond the typical 3-6 month oncology follow-up window.",
# 15 Cumulative injury model
"Walk through the five-step model left to right - baseline, surgery, radiotherapy, disuse/fear, clinical dysfunction. Make the point "
"that by the time a patient reaches you with symptoms, multiple mechanisms have usually compounded each other. This justifies a "
"multimodal treatment approach (muscle + tissue + behavioural) rather than assuming a single intervention (e.g. PFMT alone) will "
"address everything. Good slide to pause on and check for questions before moving into the clinical impact section.",
# 16 Prevalence overview
"These are the headline statistics of the whole talk - sexual dysfunction 45%, urinary incontinence 34%, faecal incontinence 11%, "
"pooled from the Shan et al. 2023 meta-analysis. Acknowledge the heterogeneity across studies (different countries, treatments) "
"but stress the consistent message: this is common, not rare. Use this slide as your 'why does this matter' anchor you can refer "
"back to throughout the rest of the talk.",
# 17 Urinary & bowel detail
"Go through each dysfunction type briefly, linking back to the mechanism slides. For urinary: stress incontinence from sphincter "
"support loss, urgency from detrusor changes, incomplete emptying from autonomic injury. For bowel: urgency/incontinence from "
"sphincter and rectal compliance change, and radiation proctitis symptoms. Mention that these are the least-studied outcomes in the "
"evidence base (flagged again later in the evidence gaps slide) - so clinical reasoning from mechanism is especially important here.",
# 18 Sexual dysfunction/stenosis
"This is often the most under-discussed symptom cluster in routine oncology follow-up, so spend a little extra time normalising it "
"for the audience as a legitimate physiotherapy target. Highlight the vicious cycle: fear of pain -> avoidance -> worse stenosis -> "
"more pain. Introduce the Martins 2021 RCT finding in the highlighted box - dilator users had significantly less severe stenosis at "
"1 year despite similar volume loss to other treatment arms - this sets up the dilator protocol slide later in the toolkit section.",
# 19 Lymphedema & pelvic pain
"Lymphedema is frequently under-recognised by physiotherapists outside of breast cancer/lymphoedema specialist practice - make sure "
"the audience understands cervical cancer patients are also at meaningful risk (roughly 20-36%) after pelvic lymphadenectomy. "
"Preview the Wang et al. 2020 RCT finding (34.5% down to 13.6% with structured decongestive therapy) - full spotlight coming shortly. "
"For pelvic pain, emphasise that myofascial hypertonicity and neuropathic pain often coexist and need a combined assessment approach.",
# 20 Psychosocial/QoL
"Slow down here - this is as much about clinical communication skills as physiology. Encourage physiotherapists to explicitly ask "
"about body image, intimacy and fear of recurrence rather than waiting for patients to volunteer it; many won't unless invited. "
"Frame the physiotherapy consultation as a uniquely private, hands-on, longer-duration touchpoint compared with a brief oncology "
"follow-up visit - an opportunity our profession is well placed to use well.",
# 21 Evidence table overview
"This table is your at-a-glance summary of the evidence you're about to walk through in detail. Give the audience 30 seconds to "
"scan it, then tell them you'll now go through each row as a dedicated 'spotlight' slide with more detail on methodology and figures, "
"so they leave with citable evidence they can take back to their own service or funding proposal.",
# 22 Spotlight Brennen 2020
"This is Tier 1 evidence (systematic review) specific to gynaecological cancer survivors including cervical cancer. Explain SMD "
"(standardised mean difference) briefly for those less familiar with meta-analytic statistics - negative SMD here favours the "
"intervention for sexual function. Flag the key limitation: bladder/bowel outcomes could not be pooled due to insufficient data - "
"this is an evidence gap you'll return to near the end of the talk.",
# 23 Spotlight Cyr 2024
"This is the most clinically actionable systematic review in the whole talk - it directly compares single-modality vs combined "
"therapy and finds combined (active PFM + education) wins across most outcome domains. Use this to justify the toolkit structure "
"you'll present later: education is not an optional add-on, it is evidenced as part of the core active ingredient of treatment.",
# 24 Spotlight Sacomori 2020
"Introduce the term 'prehabilitation' if not already familiar to the audience - intervening before treatment starts rather than "
"waiting for damage to occur. Be transparent about the limitations: small pilot, only 28 of 49 completed, no control group, so this "
"is hypothesis-generating rather than definitive. Still, it's an important proof-of-concept that opens the door to earlier referral "
"pathways - tie this back to the pre-treatment phase of the rehabilitation timeline slide later in the talk.",
# 25 Spotlight Lindgren 2024
"This is qualitative evidence, so treat it differently to the RCTs and SRs - it doesn't tell us effect size, but it tells us what "
"matters to patients and what will make or break adherence to your programme. The killer quote for your talk: all participants "
"wanted physiotherapist-guided PFMT to be a standard part of care, not something they had to seek out themselves. Use this to make "
"the human/advocacy case for service development, not just the statistical case.",
# 26 Spotlight Martins 2021
"Walk through the four comparison arms - oestrogen, testosterone, lubricant, dilator. Make sure the audience understands the "
"nuance: vaginal volume loss was similar across all arms (so dilators don't 'cure' stenosis outright) but the frequency/severity of "
"clinically graded stenosis was significantly better in the dilator group. This is the single best piece of RCT evidence you have "
"for recommending structured dilator therapy - refer back to this when you reach the dilator protocol slide in the toolkit.",
# 27 Spotlight Wang 2020
"This is your strongest single RCT result in the whole deck - an odds ratio of 0.30 is a large, clinically meaningful effect. Walk "
"through the intervention components (manual lymph drainage, compression, exercise, education) - note this is essentially the same "
"complex decongestive therapy framework used in breast cancer-related lymphedema, adapted for the lower limb. This should feel "
"very actionable and reassuring to physiotherapists already trained in lymphoedema management from other cancer populations.",
# 28 Subjective assessment
"This begins the practical, applied half of the workshop - signal the shift in tone from evidence review to clinical application. "
"Stress that a thorough oncology and treatment history (stage, surgery type, RT dose/field, time since treatment) is not optional "
"background - it is clinically necessary because it predicts which symptom clusters to expect and screen for proactively, rather "
"than waiting for the patient to report them.",
# 29 Objective examination
"Remind the audience of consent and trauma-informed practice before any internal assessment - many of these patients have had "
"extensive, sometimes distressing, medical examinations already. Talk through the Modified Oxford Scale briefly for those less "
"familiar. Emphasise assessing vaginal length/calibre as a baseline measurement you will track over time with dilator therapy, "
"and palpating for scar/fibrotic tissue restriction, which will guide manual therapy decisions later.",
# 30 Instrumented assessment
"Explain the biofeedback/EMG workflow using the four-step diagram: sensor placement, baseline recording, real-time visual feedback, "
"and objective tracking over time. Highlight the clinical pearl in the highlighted box - many post-radiotherapy patients have "
"reduced perineal sensation, so biofeedback's visual confirmation is especially valuable for this population compared with general "
"pelvic floor patients who may have normal sensation.",
# 31 Vaginal calibration/lymphedema measurement
"Two parallel assessment streams here - vaginal and lymphatic. For vaginal assessment, mention CTCAE grading as the standardised way "
"to document stenosis severity over time (useful for outcome tracking and communicating with the oncology team). For lymphedema, "
"stress early screening from the time of surgery - waiting until visible swelling develops means you've missed the window where "
"complex decongestive therapy is most effective, as shown in the Wang 2020 data.",
# 32 Red flags
"This is a safety-net slide - go through each red flag clearly since it protects both the patient and the physiotherapist's scope "
"of practice. Fistula symptoms and recurrence signs need urgent medical referral, not physiotherapy management. New unilateral limb "
"swelling with pain must rule out DVT before assuming lymphedema. End on the trauma-informed, consent-driven principle - it applies "
"across every assessment and intervention slide that follows.",
# 33 Toolkit overview
"This is the anchor slide for the entire intervention section - six core tools. Tell the audience you will now go through each one "
"in more depth with practical protocols, so they leave with take-home clinical detail, not just a list of modality names. Reiterate "
"the Cyr 2024 finding: these tools work best combined, not used in isolation.",
# 34 PFMT technique
"Walk through the four-step progression - find the muscle, build the basics, add function (the 'knack'), progress load. Consider "
"physically demonstrating a correct contraction cue if appropriate for your venue. Emphasise avoiding common substitution patterns "
"(breath holding, gluteal or abdominal bracing) which are common in this population, especially where perineal sensation is reduced.",
# 35 Biofeedback in practice
"Reiterate the value of biofeedback specifically for reduced-sensation patients, then walk through the practical session structure: "
"baseline recording, guided practice with real-time feedback, and a home programme calibrated from that data. Use the highlighted "
"clinical tip to reassure the audience it's normal (and expected) for post-radiotherapy patients to have altered sensation, and that "
"this doesn't mean the muscle can't be trained effectively.",
# 36 Electrical stimulation
"Distinguish neuromuscular electrical stimulation (for muscle re-education, useful when voluntary contraction is very weak or hard "
"to isolate) from TENS-type stimulation (for pain modulation). Reference the Bouallalene-Jaramillo 2023 systematic review supporting "
"both uses but flagging inconsistent parameter reporting in the literature - practical translation: follow your local protocols and "
"document your parameters carefully. Flag caution around stimulation over recently irradiated or surgically compromised tissue.",
# 37 Dilator protocol
"Walk through the four-step protocol - timing, technique, frequency, progression. Be explicit that this needs individualisation "
"based on local radiation oncology guidance on timing post-treatment. Circle back to the Martins 2021 RCT result in the highlighted "
"box as your evidence anchor for recommending this intervention confidently to patients who may be reluctant or fearful of trying it.",
# 38 Manual therapy
"Cover external and internal soft-tissue techniques for scar and fibrotic tissue, and myofascial release for pelvic floor "
"hypertonicity/guarding - link back to the pelvic pain content from the clinical impact section. Stress checking tissue healing "
"status and oncology clearance before deeper or internal work, particularly in the early post-treatment period. Mention combining "
"manual therapy with breathing/relaxation strategies for patients presenting with an overactive, guarding pelvic floor.",
# 39 Lymphedema management
"Walk through the four components of complex decongestive therapy - manual lymphatic drainage, compression, remedial exercise, and "
"skin care/education. Reiterate the Wang 2020 RCT numbers in the highlighted box as the evidence anchor, and stress that this "
"programme was started early and continued for a full year - early referral and sustained engagement are both important for "
"replicating these outcomes in practice.",
# 40 Education/whole-body
"This slide ties the toolkit together with the 'soft skills' that the evidence (Cyr 2024, Brennen 2020) shows meaningfully improve "
"outcomes: expectation-setting, sexual health counselling, bladder/bowel behavioural strategies, and whole-body exercise (yoga/core/"
"aerobic). Encourage attendees to build a simple referral list now (psycho-oncology, sexual health services, peer support groups) "
"so they are ready to signpost patients rather than trying to cover every need themselves.",
# 41 Rehab timeline
"This is your integrative 'so what do I actually do, and when' slide - walk left to right through prehab, acute, early survivorship, "
"long-term survivorship, and what physiotherapy activity belongs in each phase. Use this to summarise everything covered in the "
"assessment and toolkit sections into one memorable visual the audience can photograph and take back to their own clinic.",
# 42 Dosage/adherence
"This slide answers the practical implementation question every attendee will be thinking: 'how much therapy, how often, and how do "
"I keep patients engaged?' Stress that supervised, structured, multimodal programmes outperform unsupervised home programmes alone "
"across the evidence reviewed today. Use the attrition statistic (up to 40%+ in pilot data) to make the case that retention strategy "
"is not an afterthought - it needs to be designed into the programme from day one.",
# 43 Case study 1
"Present this case and pause for audience input before revealing the plan/outcome if time allows - ask 'what would you assess, what "
"would you prioritise?' This is a relatively straightforward early post-surgical presentation designed to consolidate the assessment "
"and PFMT/biofeedback content. Highlight the combined focus on continence retraining and early lymphedema screening even though "
"swelling wasn't yet clinically significant.",
# 44 Case study 2
"This case is deliberately more complex - a fearful, avoidant patient with stenosis, pain and hypertonicity, illustrating why simply "
"'prescribing a dilator' without addressing fear and muscle guarding often fails. Discuss the sequencing: down-training and "
"education before progressive loading/strengthening. This ties together the manual therapy, dilator protocol and psychosocial "
"content from earlier sections.",
# 45 Case study 3
"This case represents the long-term survivor who has fallen through the gaps of routine follow-up - use it to make the advocacy "
"point that these patients often present years later with compounded, multi-system dysfunction that could have been mitigated with "
"earlier intervention. Highlight the multidisciplinary coordination required (gynae-oncology, psycho-oncology) - reinforce that "
"physiotherapists don't work in isolation with this population.",
# 46 Clinical pathway
"Shift into the closing implementation section - this slide is your call to action for service development. Encourage attendees to "
"identify one achievable next step for their own service (e.g. building a referral pathway with their local gynae-oncology team, or "
"introducing a validated outcome measure) rather than trying to implement everything at once.",
# 47 Evidence gaps
"Be honest and balanced here - this session has presented good evidence, but it is not yet a mature, fully standardised evidence "
"base. Flag the specific gaps (bladder/bowel outcomes, standardised dosing, long-term data, attrition/implementation research) as "
"potential audit, quality improvement or research project ideas for physiotherapists in the audience who want to contribute to the "
"field, not just consume it.",
# 48 Key takeaways
"Read through the five takeaways as your closing summary - these should feel like a natural recap of everything covered. Pause "
"after reading them and ask if anyone wants to share how they might apply one of these points in their own practice this month - "
"a good way to transition into the open discussion/Q&A.",
# 49 References 1
"Briefly mention that full references are provided across these two slides for anyone wanting to follow up on specific studies, "
"and that you're happy to share the full reference list and/or slide deck electronically after the session.",
# 50 References 2
"Continue through the reference list. Consider mentioning that PMIDs are included so attendees can look papers up directly on "
"PubMed without needing the full citation.",
# 51 Thank you
"Thank the audience for their time and engagement. Open the floor for questions and discussion. Remind them of your contact details "
"for follow-up questions, and consider mentioning any handouts, resource lists, or slide/notes sharing you plan to provide after "
"the session.",
]
prs = Presentation(PATH)
slides = list(prs.slides)
assert len(slides) == len(NOTES), f"Slide count {len(slides)} does not match notes count {len(NOTES)}"
for slide, note in zip(slides, NOTES):
notes_slide = slide.notes_slide # creates notes slide if not present
tf = notes_slide.notes_text_frame
tf.text = note
prs.save(PATH)
print("Speaker notes added to", len(slides), "slides.")
print("Saved to", PATH)
cd /tmp/workspace/pfr-cervical-cancer-ppt && python3 add_speaker_notes.py
cd /tmp/workspace/pfr-cervical-cancer-ppt && python3 -c " from pptx import Presentation prs = Presentation('output/Rebuilding_the_Base_2hr_Workshop.pptx') print('Total slides:', len(prs.slides)) missing = 0 for i, slide in enumerate(prs.slides, 1): has_notes = slide.has_notes_slide and slide.notes_slide.notes_text_frame.text.strip() != '' if not has_notes: missing += 1 print('MISSING NOTES on slide', i) print('Slides missing notes:', missing) print('Sample note (slide 1):', prs.slides[0].notes_slide.notes_text_frame.text[:150]) print('Sample note (slide 27):', prs.slides[26].notes_slide.notes_text_frame.text[:150]) " ls -la output/
Rebuilding the Base 2hr Workshop
Presentation · PPTX
i want written speech to explain in conference
~/pfr-cervical-cancer-ppt/build_speech_doc.py
# -*- coding: utf-8 -*-
"""
Build the full spoken speech/script document for the 2-hour conference presentation
"Rebuilding the Base: Pelvic Floor Rehabilitation in Cervical Cancer".
Organised by slide number so the presenter can read/rehearse in sync with the deck.
"""
from docx import Document
from docx.shared import Pt, Inches, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.section import WD_SECTION
doc = Document()
style = doc.styles["Normal"]
style.font.name = "Calibri"
style.font.size = Pt(12)
NAVY = RGBColor(0x0B, 0x2E, 0x45)
TEAL = RGBColor(0x0E, 0x7C, 0x7B)
GREY = RGBColor(0x55, 0x55, 0x55)
def title_page():
doc.add_paragraph()
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = p.add_run("REBUILDING THE BASE")
r.font.size = Pt(34); r.font.bold = True; r.font.color.rgb = NAVY
p2 = doc.add_paragraph()
p2.alignment = WD_ALIGN_PARAGRAPH.CENTER
r2 = p2.add_run("Pelvic Floor Rehabilitation in Cervical Cancer")
r2.font.size = Pt(20); r2.font.color.rgb = TEAL
p3 = doc.add_paragraph()
p3.alignment = WD_ALIGN_PARAGRAPH.CENTER
r3 = p3.add_run("Full Speaker Script for a 2-Hour Conference Workshop")
r3.font.size = Pt(14); r3.italic = True; r3.font.color.rgb = GREY
doc.add_paragraph()
p4 = doc.add_paragraph()
p4.alignment = WD_ALIGN_PARAGRAPH.CENTER
r4 = p4.add_run(
"How to use this script: each section below corresponds to a slide number in the accompanying "
"PowerPoint deck (Rebuilding_the_Base_2hr_Workshop.pptx). The text is written to be read or "
"closely paraphrased aloud. Approximate delivery time per section is noted so you can pace "
"yourself against the total 2-hour (120-minute) session, which includes a 15-minute break."
)
r4.font.size = Pt(11); r4.font.color.rgb = GREY
doc.add_page_break()
def section_header(text):
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.LEFT
r = p.add_run(text.upper())
r.font.size = Pt(16); r.font.bold = True; r.font.color.rgb = NAVY
p.paragraph_format.space_before = Pt(18)
p.paragraph_format.space_after = Pt(6)
# thin rule
p2 = doc.add_paragraph()
p2.paragraph_format.space_after = Pt(10)
r2 = p2.add_run("_" * 90)
r2.font.color.rgb = TEAL
r2.font.size = Pt(8)
def slide_block(num, title, minutes, text):
p = doc.add_paragraph()
r = p.add_run(f"SLIDE {num} | {title}")
r.font.bold = True; r.font.size = Pt(12.5); r.font.color.rgb = TEAL
r2 = p.add_run(f" (~{minutes})")
r2.font.italic = True; r2.font.size = Pt(10.5); r2.font.color.rgb = GREY
p.paragraph_format.space_before = Pt(10)
p.paragraph_format.space_after = Pt(2)
body = doc.add_paragraph(text)
body.paragraph_format.space_after = Pt(4)
for run in body.runs:
run.font.size = Pt(11.5)
def break_block():
p = doc.add_paragraph()
p.paragraph_format.space_before = Pt(14)
p.paragraph_format.space_after = Pt(14)
r = p.add_run("— 15-MINUTE BREAK —")
r.font.bold = True; r.font.size = Pt(13); r.font.color.rgb = RGBColor(0xC9,0x9A,0x3E)
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
body = doc.add_paragraph(
"Thank the audience, remind them of the time, and let them know informal questions are welcome "
"during the break. Encourage them to jot down any questions on the evidence section so you can "
"circle back briefly before moving into assessment and intervention content."
)
body.alignment = WD_ALIGN_PARAGRAPH.CENTER
for run in body.runs:
run.italic = True; run.font.size = Pt(11); run.font.color.rgb = GREY
title_page()
# ============================================================ SECTION: OPENING
section_header("Opening (0:00 - 0:15)")
slide_block(1, "Title Slide", "2 min", (
"Good morning, everyone, and thank you for joining me. My name is [Presenter Name], and I'm a physiotherapist "
"working in pelvic health and oncology rehabilitation. Today we're going to spend the next two hours talking "
"about a topic that I think deserves a lot more attention in our profession than it currently gets: pelvic "
"floor rehabilitation for women treated for cervical cancer. I've called this talk 'Rebuilding the Base', "
"because that's really what we're doing as physiotherapists in this space - helping women rebuild physical "
"function, confidence, and quality of life after treatment that, quite literally, passes right through the "
"pelvic floor. "
"This session is designed to be practical as well as evidence-based. We'll cover the clinical background, "
"walk through the research evidence in detail, build a structured assessment framework together, go through "
"a full intervention toolkit, apply all of that to three realistic patient cases, and finish with some thoughts "
"on where the evidence still needs to catch up, and how we can push our services forward. By the end of the "
"next two hours, I want you to leave with something you can put into practice on Monday morning."
))
slide_block(2, "Session Format & Time Allocation", "2 min", (
"Just briefly, here's how our two hours will be structured. We'll start with about fifteen minutes on clinical "
"context - the disease, the treatments, and why survivorship numbers are growing. Then twenty minutes on "
"anatomy and pathophysiology, because I think understanding exactly what surgery and radiotherapy do to pelvic "
"floor tissue is what allows us to reason clinically rather than just following a generic protocol. "
"After that, we'll spend a good thirty minutes on the clinical impact and the evidence base - this is the "
"meat of the talk, where I'll walk you through six key studies in detail, including their numbers, so you can "
"take citable evidence back to your own services. "
"We'll then take a fifteen-minute break, which I'd encourage you to use for a stretch, a coffee, and jotting "
"down any questions. "
"After the break, we move into the practical half: fifteen minutes on assessment, twenty-five minutes on the "
"intervention toolkit with some practical demonstration, ten minutes applying all of it to case studies, and "
"we'll close with implementation, evidence gaps, and an open discussion. "
"If you have questions as we go, feel free to hold them for the break or the final discussion so we can keep "
"on schedule, but do flag urgent points of clarification any time."
))
slide_block(3, "Learning Objectives", "1 min", (
"Here are our objectives for today. By the end of this session, you should be able to describe the prevalence "
"and mechanisms of pelvic floor dysfunction after cervical cancer treatment; critically appraise the current "
"evidence base for physiotherapy-led rehabilitation; apply a structured subjective, objective and instrumented "
"assessment framework; select and sequence conservative interventions according to the evidence and the "
"patient in front of you; apply all of that to realistic clinical cases; and finally, identify where the "
"evidence still has gaps, so you can advocate confidently for integrated pelvic floor pathways in your own "
"gynae-oncology services. "
"I'd encourage you, as we go through this, to think of one patient on your own caseload - past or present - "
"and mentally test what we're covering against that real person. That's usually how this sort of content "
"sticks best."
))
# ============================================================ SECTION: CLINICAL CONTEXT
section_header("Clinical Context (0:15 - 0:30)")
slide_block(4, "Cervical Cancer: Burden & Epidemiology", "2 min", (
"Let's start with some context on scale. Cervical cancer remains the fourth most common cancer in women "
"worldwide, and in parts of the world without robust screening programmes, it's still a leading cause of "
"cancer death. Globally we're talking about roughly six hundred and sixty thousand new cases and around three "
"hundred and fifty thousand deaths every year - please treat these as approximate, order-of-magnitude figures, "
"and if you're presenting this to a specific regional audience, swap in your local or national data instead. "
"Here's the important clinical point for us as physiotherapists: survival is improving. Earlier detection "
"through screening programmes and better oncological treatment mean more women are surviving cervical cancer "
"long-term. That's obviously wonderful news. But it also means the number of women living for decades with "
"treatment-related pelvic floor sequelae is growing every single year. This is not a shrinking, niche problem "
"- it's an expanding one, and our services need to expand to meet it."
))
slide_block(5, "FIGO Staging: Why Stage Drives Treatment Choice", "2 min", (
"You don't need to become oncology staging experts today, but I do want you to understand roughly what FIGO "
"staging tells us, because it directly predicts what pelvic floor risk your patient is carrying. FIGO staging "
"runs from stage IA - very early, microinvasive disease - through to stage IVB, where cancer has spread "
"beyond the pelvis. "
"As you can see in this schematic, early microinvasive disease might be managed with a simple, more limited "
"surgical procedure, carrying comparatively lower pelvic floor risk. But bulkier or more locally advanced "
"disease - stage IB2 and above - much more often requires radical surgery, and frequently radiotherapy or "
"chemoradiation on top of that. "
"So here's a practical takeaway you can use starting this week: when you're taking a history from a cervical "
"cancer survivor, always ask what stage they were, and what treatment they actually received. That single "
"piece of information reframes your entire assessment - it tells you whether you're dealing with a lower-risk "
"surgical-only patient, or a higher-risk combined-modality patient, before you've even examined them."
))
slide_block(6, "Treatment Landscape: Surgical Management", "2 min", (
"Let's talk about surgery. Radical hysterectomy with pelvic lymphadenectomy is the standard surgical approach "
"for early-stage, operable disease. In plain terms, that means removal of the uterus, the cervix, the upper "
"vagina, and the surrounding parametrial tissue, plus removal of the pelvic lymph nodes. "
"Surgeons increasingly use nerve-sparing techniques, which aim to preserve the autonomic nerve plexus "
"surrounding the cervix. That's a genuine advance - but I want to be clear that nerve-sparing does not mean "
"nerve-injury-free. Even with the best surgical technique, some degree of autonomic disruption is common. "
"The extent of tissue removed - described using something called the Querleu-Morrow classification, which "
"you may come across in operative notes - correlates with the degree of bladder, bowel and sexual dysfunction "
"a patient is likely to experience. More radical resection, more risk. "
"I'll also mention fertility-sparing surgery, called radical trachelectomy, used in some younger patients who "
"wish to preserve their uterus. It still involves cervical and parametrial dissection, so similar principles "
"apply. "
"And one more point: pelvic lymphadenectomy - removing lymph nodes - is itself a major risk factor for "
"lower-limb lymphedema, which we'll come back to later in the clinical impact section."
))
slide_block(7, "Radiotherapy & Brachytherapy", "3 min", (
"Now let's talk about radiotherapy, because I think this is where a lot of physiotherapists have less "
"familiarity, and it's clinically really important. "
"External beam radiotherapy, or EBRT, with or without brachytherapy, is the standard approach for locally "
"advanced disease. This image shows you the evolution of planning technique - on one side, a conventional, "
"older two-dimensional field, and on the other, modern intensity-modulated radiotherapy, or IMRT, which "
"allows much more precise sparing of the bladder, rectum and small bowel. That's a real advance in reducing "
"collateral damage, but pelvic floor tissue within the treatment field is still affected. "
"Brachytherapy is worth explaining specifically, because I think it explains a lot of what we see clinically. "
"It's an internal radiation source placed directly in the vagina and cervix, delivering a very high, "
"concentrated local dose. That's precisely why vaginal tissue is so disproportionately affected by fibrosis "
"and shortening compared to more distant structures - it's getting the highest dose of all. "
"The other critical point I want you to take away: radiation damage is dose-dependent, cumulative, and "
"crucially, delayed. A patient can look completely fine at her three-month oncology check-up and then develop "
"significant vaginal stenosis at eighteen months. This has huge implications for when we as physiotherapists "
"need to be following these patients up - much longer than the typical acute oncology follow-up window."
))
slide_block(8, "Combined Modality Treatment & the Survivorship Imperative", "2 min", (
"Here's what I call the 'double hit' slide. Many patients don't get just surgery, or just radiotherapy - they "
"get both. For example, a patient might have surgery, and then need adjuvant radiotherapy afterwards because "
"of positive margins or lymph node involvement found on pathology. "
"When that happens, the pelvic floor takes a combined insult - surgical nerve and tissue injury, plus "
"radiation fibrosis and microvascular damage on top. Unsurprisingly, this group carries the highest risk of "
"urinary, bowel, sexual and lymphatic dysfunction of anyone we'll discuss today. "
"And remember the survivorship point from a few slides ago - as more women survive long-term, a growing "
"proportion of them are exactly this combined-modality group. This is really the crux of the argument for why "
"physiotherapy needs to be built into standard survivorship pathways as a default, rather than something "
"patients have to stumble across or specifically request."
))
# ============================================================ SECTION: ANATOMY & PATHOPHYSIOLOGY
section_header("Anatomy & Pathophysiology (0:15 - 0:35)")
slide_block(9, "Pelvic Floor Anatomy: Setting the Scene", "1.5 min", (
"Let's do a rapid anatomy refresher - I know most of you will have a working knowledge already, so I won't "
"over-teach this, but I want to set up a framework we'll keep coming back to. "
"Think of the pelvic floor as having three functional layers. First, the endopelvic fascia, providing organ "
"support and suspension. Second, the levator ani complex - the main muscular sling. And third, the perineal "
"membrane and sphincter mechanisms, responsible for continence. "
"The critical point is that normal function depends on all three of these working together - intact muscle, "
"intact connective tissue, AND intact nerve supply. Cervical cancer treatment, as we're about to see, can "
"damage any or all three of these components, which is exactly why the resulting clinical picture is so "
"often multifactorial."
))
slide_block(10, "The Levator Ani Complex", "1.5 min", (
"This image shows the levator ani complex - pubococcygeus, puborectalis, and iliococcygeus - forming what's "
"often called the pelvic diaphragm. "
"Two things I want you to notice. First, this muscle group provides constant resting tone as well as "
"voluntary and reflexive contraction. That's clinically important because it means our training approach "
"can't just be isolated squeeze-and-release Kegels - we need to think about tone, endurance, AND fast, "
"functional contraction together. "
"Second, notice how it blends inferiorly with the anal sphincter mechanism - that's your bridge into bowel "
"continence, which we'll look at on the next slide. This muscle group is really the primary target of the "
"pelvic floor muscle training we'll cover in detail later in the toolkit section."
))
slide_block(11, "Continence Anatomy: Anal Canal & Sphincters", "1.5 min", (
"Moving to bowel continence specifically. This MRI and schematic correlation shows the internal anal "
"sphincter - involuntary, smooth muscle, providing resting tone - and the external anal sphincter - "
"voluntary, striated muscle, providing squeeze and urge control. Together with the puborectalis, they form "
"the anorectal angle, which is critical to faecal continence. "
"Why does this matter for our patients? Because radiation fibrosis and surgical disruption can impair both "
"sphincter integrity and rectal wall compliance - the rectum's ability to stretch and store stool normally. "
"That combination is exactly why bowel urgency and incontinence show up so commonly in this population, and "
"it's an outcome I want you to actively screen for, even when a patient hasn't volunteered it."
))
slide_block(12, "Nerve Supply & the Levator Plate", "2 min", (
"This is, in my view, the single most clinically important anatomy slide in the whole talk. "
"We have two nerve supplies to keep straight. The hypogastric and pelvic autonomic plexus governs bladder, "
"bowel, and sexual arousal function. The pudendal nerve - somatic, from S2 to S4 - governs voluntary control "
"of the external sphincters and pelvic floor muscles. "
"Here's the key clinical insight: the autonomic plexus runs directly through the surgical field during "
"radical parametrectomy. That is precisely why bladder, bowel and sexual arousal dysfunction are so common "
"after radical hysterectomy - even when the surgeon has used a nerve-sparing technique. The pudendal nerve, "
"by contrast, is more the target of the voluntary muscle training we do as physiotherapists. "
"Understanding this distinction helps explain why some patients have good voluntary pelvic floor squeeze on "
"examination, but still struggle with bladder urgency or reduced arousal - different nerve pathways, "
"different injury patterns, different treatment targets."
))
slide_block(13, "Surgical Mechanisms of Pelvic Floor Injury", "2 min", (
"Let's consolidate the surgical mechanisms into one clear list, because I think mapping mechanism to symptom "
"is what allows us to treat specifically rather than generically. "
"Autonomic nerve injury during radical parametrectomy leads to bladder, bowel and sexual dysfunction. Direct "
"disruption of levator ani fibres and endopelvic fascia leads to support and continence problems. Vaginal "
"cuff shortening after hysterectomy changes the vaginal axis. Pelvic lymphadenectomy interrupts lymphatic "
"drainage, creating lymphedema risk. And postoperative pain, scarring and understandable fear-avoidance "
"further inhibit normal pelvic floor activation, layering a behavioural component on top of the physical "
"injury. "
"When you see a patient with multiple overlapping symptoms, this list is often your explanation for why."
))
slide_block(14, "Radiotherapy Mechanisms of Pelvic Floor Injury", "2 min", (
"Now radiotherapy mechanisms, shown here alongside an example extended-field IMRT plan. "
"Progressive fibrosis of muscle, fascia and vaginal tissue is dose-dependent, and - this is the point I "
"really want to land - it can continue to worsen for years, not just weeks or months. Microvascular "
"endothelial damage causes chronic tissue hypoxia, reducing both elasticity and the tissue's own healing "
"capacity. Vaginal mucosal atrophy, shortening and stenosis can progress to agglutination - the vaginal walls "
"adhering together - without preventive dilation. And all of this compounds any pre-existing surgical "
"denervation, rather than existing in isolation. "
"The clinical implication is huge: this is exactly why we recommend starting dilator therapy early after "
"radiotherapy and continuing it long-term, and why we need to reassess these patients well beyond the "
"typical three-to-six-month oncology follow-up window that most services default to."
))
slide_block(15, "The Cumulative Injury Model", "2 min", (
"This slide brings it all together into one model. Start on the left with baseline function - a woman's "
"pre-existing pelvic floor status, parity, age-related changes. Then surgery layers on nerve injury, fascial "
"disruption and lymphadenectomy. Then radiotherapy layers on fibrosis, microvascular damage and mucosal "
"atrophy. Then disuse and fear - understandable psychological responses to pain and uncertainty - layer on "
"further deconditioning. And what you're left with, on the right, is the clinical dysfunction we actually see "
"in clinic: incontinence, stenosis, pain, lymphedema, sexual dysfunction. "
"I want to pause here, because this model explains something really important: by the time a combined-"
"modality patient reaches your clinic room, multiple mechanisms have usually compounded each other. That's "
"exactly why a single intervention - say, PFMT alone - is unlikely to be sufficient on its own. We need a "
"multimodal approach addressing muscle, tissue AND behaviour together, which is exactly the structure of the "
"toolkit section we'll get to in the second half of this session. "
"Any quick questions before we move into the clinical impact and evidence section?"
))
# ============================================================ SECTION: CLINICAL IMPACT & EVIDENCE
section_header("Clinical Impact & Evidence Base (0:35 - 1:05)")
slide_block(16, "Scale of the Problem: Prevalence", "2 min", (
"These numbers are really the headline statistics for the whole talk, so I want you to remember them: forty-"
"five percent prevalence of sexual dysfunction, thirty-four percent urinary incontinence, and eleven percent "
"faecal incontinence, pooled from a 2023 systematic review and meta-analysis by Shan and colleagues. "
"I'll be upfront that there's real heterogeneity in these pooled estimates - different countries, different "
"treatment combinations, different measurement tools - but the consistent message across the literature is "
"clear: this is common, not rare. "
"On top of these headline figures, we also see vaginal stenosis and dyspareunia, chronic pelvic pain, and "
"lower-limb lymphedema, which we'll detail shortly. And these effects are persistent - they're often still "
"present years after treatment completion if nobody intervenes. "
"Keep this slide in the back of your mind - I'll refer back to it as our anchor for 'why does this matter' "
"throughout the rest of the talk."
))
slide_block(17, "Urinary & Bowel Dysfunction", "2.5 min", (
"Let's go through urinary and bowel dysfunction specifically, linking back to the mechanisms we just covered. "
"On the urinary side: stress incontinence from loss of urethral sphincter support; urgency or overactive "
"bladder from detrusor changes after radiation; voiding dysfunction or incomplete emptying from autonomic "
"nerve injury; and recurrent urinary tract infections secondary to that incomplete emptying. "
"On the bowel side: faecal urgency and incontinence from sphincter and rectal compliance changes; radiation "
"proctitis, presenting as urgency, bleeding or mucus discharge; chronic diarrhoea or constipation from "
"altered motility; and reduced rectal capacity limiting normal storage function. "
"I want to flag something important here: these two outcome domains - bladder and bowel - are actually the "
"least well-studied in the pelvic floor rehabilitation literature for this population, something we'll come "
"back to in the evidence gaps section near the end. That means your clinical reasoning from mechanism, rather "
"than from a specific trial result, is especially important when you're managing these symptoms."
))
slide_block(18, "Sexual Dysfunction & Vaginal Stenosis", "2.5 min", (
"This symptom cluster is, in my experience, the most under-discussed in routine oncology follow-up, so I want "
"to spend a bit of extra time here normalising it as a completely legitimate physiotherapy target. "
"Vaginal shortening, narrowing and reduced elasticity can progress for a year or two after radiotherapy "
"finishes. Combined with dyspareunia, reduced lubrication and altered sensation, this obviously impacts "
"sexual function and intimate relationships significantly. "
"And here's the vicious cycle I want you to watch for: fear of pain leads to avoidance, avoidance leads to "
"worse stenosis, worse stenosis leads to more pain next time. Physiotherapy input can break that cycle. "
"Vaginal dilator therapy is the best-studied preventive strategy here, but adherence is a real challenge - "
"which is exactly why the highlighted evidence box on this slide matters. A randomized trial by Martins and "
"colleagues in 2021, with a hundred and ninety-five women, found that although vaginal volume loss was "
"similar across all treatment arms - topical oestrogen, testosterone, lubricant, and dilators - the women "
"using dilators had significantly lower severity and frequency of clinically graded stenosis at one year. "
"We'll come back to this trial in detail in the evidence spotlight section, and again when we cover the "
"dilator protocol in the toolkit."
))
slide_block(19, "Lower-Limb Lymphedema & Pelvic Pain", "2.5 min", (
"Lymphedema is frequently under-recognised by physiotherapists who aren't already working in a specialist "
"lymphoedema or breast cancer setting, so I want to make sure everyone in the room understands that cervical "
"cancer survivors carry meaningful risk too - roughly twenty to thirty-six percent after pelvic "
"lymphadenectomy, depending on the extent of nodal dissection and whether radiotherapy was also given. "
"I'll give you a preview here: a randomized controlled trial by Wang and colleagues in 2020 found that a "
"structured decongestive physiotherapy programme reduced lymphedema incidence from thirty-four and a half "
"percent down to thirteen and a half percent. That's a genuinely large effect, and we'll go through the full "
"study shortly. "
"For pelvic pain, I want you to think about two overlapping mechanisms: myofascial hypertonicity and "
"guarding, and neuropathic pain from nerve injury or fibrotic entrapment. These often coexist with "
"dyspareunia and bladder or bowel urgency, so a combined, whole-person assessment approach is essential - you "
"can't just treat the pain in isolation from everything else going on."
))
slide_block(20, "Psychosocial Impact & Quality of Life", "2 min", (
"I want to slow down for this slide, because it's as much about our communication skills as it is about "
"physiology. "
"Body image change, an altered sense of femininity or sexuality, anxiety around intimacy, fear of recurrence, "
"and sometimes grief related to fertility loss - these are all real and common experiences for cervical "
"cancer survivors. Incontinence and pain restrict social participation, exercise, and return to work, "
"compounding the psychological burden. "
"Here's my challenge to you: actively ask about body image, intimacy, and fear of recurrence. Don't wait for "
"patients to volunteer this information, because many won't unless directly and sensitively invited to. "
"I'd frame the physiotherapy consultation as a genuinely unique touchpoint in this patient's care journey - "
"it's private, it's hands-on, and it's typically much longer in duration than a brief oncology follow-up "
"visit. That's an opportunity our profession is very well placed to use well, if we choose to."
))
slide_block(21, "The Evidence at a Glance", "1.5 min", (
"Now we get into the heart of the evidence base. This table summarises eight key studies - take a moment to "
"scan it. "
"I'm going to walk you through each of these as a dedicated spotlight slide over the next several minutes, "
"giving you the study design, the population, and the key numbers, so that you leave today with citable "
"evidence you can take back to your own service, whether that's for a funding proposal, a clinical pathway "
"document, or simply to build your own confidence in what you're recommending to patients."
))
slide_block(22, "Evidence Spotlight: Brennen et al. 2020", "3 min", (
"Our first spotlight is a systematic review published in the journal Physical Therapy in 2020, by Brennen and "
"colleagues. This pooled five randomized controlled trials and two cohort studies, a total of eight hundred "
"and eighty-six participants, across gynaecological cancer survivors including cervical cancer. This is "
"Tier-1 evidence - the highest level in our evidence hierarchy. "
"The key finding: pelvic floor muscle training combined with counselling and yoga or core exercise improved "
"sexual function, with a standardized mean difference of minus zero point nine six. For those less familiar "
"with this statistic, a negative SMD here favours the intervention - that's a large effect size. The same "
"combined therapy also improved health-related quality of life, with an SMD of zero point six three. "
"Dilator therapy specifically reduced vaginal complications, with an odds ratio of zero point three seven. "
"I do want to flag an important limitation: there wasn't enough data to pool bladder or bowel outcomes in "
"this review - that's the evidence gap I mentioned a few slides ago, and we'll return to it later."
))
slide_block(23, "Evidence Spotlight: Cyr et al. 2024", "3 min", (
"This is, in my view, the most clinically actionable systematic review in the entire evidence base we're "
"covering today. Cyr and colleagues, published in 2024, pooled twenty studies, eleven of which were "
"randomized controlled trials, again in females treated for gynaecological cancer. "
"The headline finding: combined, or multimodal, therapy - meaning active pelvic floor muscle training PLUS "
"education - was more consistently effective than any single-modality approach, across vaginal, overall "
"pelvic floor, sexual, and pelvic floor muscle function outcomes. Active training and or electrostimulation "
"specifically improved bladder outcomes, and there was limited but promising evidence for bowel function "
"improvement with active training plus education. "
"And here's the practical takeaway I want you to hold onto: this review repeatedly identified dosage, "
"adherence, and clinical supervision as key determinants of whether treatment actually worked. In other "
"words, education is not an optional add-on to pelvic floor muscle training - it's evidenced as part of the "
"core active ingredient of effective treatment. This directly justifies the structure of the intervention "
"toolkit I'll present to you in the second half of this session."
))
slide_block(24, "Evidence Spotlight: Sacomori et al. 2020", "2.5 min", (
"Let's introduce a term some of you may not have encountered yet in this specific context: prehabilitation. "
"This means intervening before treatment even starts, rather than waiting for damage to occur and then trying "
"to remediate it. "
"Sacomori and colleagues ran a pilot study in 2020 with forty-nine women with cervical cancer, stages one "
"through three, about to start radiotherapy. Women were taught pelvic floor exercises - slow and fast "
"contractions, and something called 'the knack' - by a physiotherapist before, during, and after their "
"radiotherapy. "
"The result: no significant decline in pelvic floor muscle strength, EMG activity, or continence at one "
"month post-radiotherapy. "
"Now, I want to be transparent about the limitations here, because good evidence-based practice means being "
"honest about study quality: this was a small pilot, only twenty-eight of the forty-nine women actually "
"completed it, and there was no control group. So this is hypothesis-generating rather than definitive proof. "
"But it's an important proof-of-concept, and it opens the door to earlier referral pathways - which is "
"exactly what we'll build into the rehabilitation timeline later in this session."
))
slide_block(25, "Evidence Spotlight: Lindgren et al. 2024", "2.5 min", (
"This next piece of evidence is qualitative, so I want you to hold it differently in your mind compared to "
"the randomized trials and systematic reviews - it doesn't give us an effect size, but it tells us what "
"actually matters to patients, and what will make or break their adherence to whatever programme we design. "
"Lindgren and colleagues interviewed eleven women, nested within a larger randomized trial, who had completed "
"a three-month pelvic floor muscle training programme, with or without physiotherapist support, for urinary "
"or faecal incontinence after pelvic radiotherapy. "
"The women who received physiotherapist support - individual biofeedback plus group training - described a "
"structured programme and individual support as highly valuable. They reported improved pelvic floor "
"strength, reduced incontinence, better urge control, improved sexual health, and reduced anxiety. "
"And here's the line I want you to remember, because it's the human, advocacy case for everything we're "
"talking about today: every single participant wanted physiotherapist-guided pelvic floor muscle training to "
"become a standard part of care for all women after pelvic cancer treatment - not something they had to "
"actively seek out for themselves."
))
slide_block(26, "Evidence Spotlight: Martins et al. 2021", "2.5 min", (
"We touched on this trial earlier when discussing sexual dysfunction and stenosis, so let's go through it "
"properly now. This is an open-label randomized controlled trial with a hundred and ninety-five women, stages "
"one to three-B, post-radiotherapy for cervical cancer. "
"Four treatment arms were compared: topical oestrogen, topical testosterone, water-based lubricant gel, and "
"vaginal dilators. "
"Here's the nuance I want you to really understand, because it's clinically important: all four groups "
"showed a similar reduction in vaginal volume of around twenty-five percent over twelve months. So dilators "
"don't 'cure' the underlying tissue changes outright. BUT, the frequency and severity of clinically graded "
"stenosis, using a standard adverse-event scale, was significantly better in the dilator group - it actually "
"showed no significant worsening over the year, compared to significant worsening in every other group. "
"This is genuinely the best piece of randomized evidence we have supporting structured dilator therapy, and "
"I'll refer back to this specific result when we get to the dilator protocol slide in the toolkit section."
))
slide_block(27, "Evidence Spotlight: Wang et al. 2020", "2.5 min", (
"This is, numerically, the strongest single result in our entire evidence base today. Wang and colleagues ran "
"a randomized controlled trial with a hundred and twenty women - a hundred and seventeen completed it - after "
"radical hysterectomy and pelvic lymphadenectomy for cervical cancer. "
"The intervention was modified complex decongestive physiotherapy: manual lymphatic drainage, compression "
"hosiery, structured exercise, and patient education. "
"The result: lymphedema incidence was thirteen point six percent in the intervention group, versus thirty-"
"four point five percent in the control group. That's an odds ratio of zero point three - a large, clinically "
"meaningful effect by any standard. Median excess limb volume was also significantly lower, and onset of "
"lymphedema, when it did occur, was delayed - eight months versus four point six months. "
"I want you to notice something reassuring here: this is essentially the same complex decongestive therapy "
"framework that many of you may already use for breast cancer-related lymphedema, simply adapted for the "
"lower limb. If you're already trained in that approach, you already have most of the skill set you need to "
"deliver this intervention confidently."
))
if True:
break_block()
# ============================================================ SECTION: ASSESSMENT
section_header("Assessment Framework (1:20 - 1:35)")
slide_block(28, "Subjective Assessment & Patient-Reported Outcomes", "2 min", (
"Welcome back, everyone. We're now moving into the practical, applied half of today's session - so let's "
"shift gears from evidence review into clinical application. "
"A thorough oncology and treatment history is not optional background information - it's clinically "
"necessary. I want you asking about cancer stage, surgery type and whether it was nerve-sparing, "
"radiotherapy dose and field, chemotherapy, and time since treatment completion. Why does this matter so "
"much? Because, as we established in the first part of this talk, that information predicts which symptom "
"clusters to expect and actively screen for - rather than waiting passively for the patient to report them. "
"Use validated patient-reported outcome measures where you can - things like the ICIQ for urinary and bowel "
"symptoms, the FSFI or similar tools for sexual function, condition-specific quality of life tools, and the "
"CTCAE scale for grading stenosis severity. "
"And build in a structured symptom screen covering incontinence, voiding and defaecation habits, "
"dyspareunia, pelvic or vaginal pain, and limb swelling - plus a psychosocial screen covering body image, "
"relationship impact, and fear. Always finish subjective assessment with collaborative goal-setting - align "
"what you're doing with what actually matters functionally to this specific woman."
))
slide_block(29, "Objective Pelvic Floor Muscle Examination", "2 min", (
"Before we talk technique, a reminder on consent and trauma-informed practice: many of these women have "
"already had extensive, and sometimes distressing, medical examinations. Always explain clearly what you're "
"proposing and why, and gain explicit consent before any internal assessment. "
"On examination: visual inspection for perineal skin and mucosal integrity, radiation-related changes, "
"scarring, and any signs of prolapse. Digital vaginal or rectal assessment, with consent, to grade pelvic "
"floor tone, voluntary contraction strength using the Modified Oxford Scale from zero to five, and assess "
"endurance and coordination. "
"I want you to specifically assess vaginal length and calibre - this becomes your baseline measurement that "
"you'll track over time as you progress dilator therapy. Palpate for trigger points and tissue restriction, "
"which will guide your manual therapy decisions later in the toolkit. And don't forget functional testing - "
"cough or Valsalva for leakage, sit-to-stand, and reviewing a bladder or bowel diary if you have one."
))
slide_block(30, "Instrumented Assessment: Biofeedback & EMG", "2 min", (
"Let's talk through the biofeedback and EMG workflow, shown here in four steps: sensor placement - surface or "
"internal vaginal or anal probe, positioned per manufacturer protocol; baseline recording of resting tone and "
"three to five maximal voluntary contractions; real-time visual feedback displayed to the patient during "
"practice; and objective tracking of amplitude, hold time, and fatigue index across sessions to guide "
"progression. "
"Here's a clinical pearl I really want you to take away: many post-radiotherapy patients have reduced "
"perineal sensation. Biofeedback's visual confirmation that a correct contraction is actually happening is "
"especially valuable for this population, compared to general pelvic floor patients who might have entirely "
"normal sensation to rely on."
))
slide_block(31, "Vaginal Calibration & Lymphedema Measurement", "1.5 min", (
"Two parallel assessment streams to finish off our objective measures. "
"For vaginal assessment: measure length and introital calibre using graduated dilators as your baseline, "
"grade stenosis severity using CTCAE criteria, and reassess at defined intervals to track progression or "
"regression over time - this also gives you a clear way to communicate progress back to the oncology team. "
"For lymphedema: use circumferential limb measurements at standardised points, or volumetry if it's "
"available to you. Screen early - from the time of surgery, not just when visible swelling appears - because "
"earlier detection meaningfully improves outcomes with complex decongestive therapy, exactly as we saw in the "
"Wang 2020 data. Also assess skin integrity, heaviness, and functional limitation."
))
slide_block(32, "Red Flags & Psychosocial Screening", "2 min", (
"This is our safety-net slide, and I think it's worth going through clearly because it protects both our "
"patients and our own scope of practice. "
"Fistula symptoms - continuous leakage of urine or faeces per vagina - need urgent medical referral, not "
"physiotherapy management. New or worsening pain, bleeding, or a palpable mass could indicate recurrence - "
"refer back to the oncology team promptly. Severe, non-negotiable vaginal stenosis or obliteration may need "
"medical or surgical input alongside our physiotherapy. Significant unilateral limb swelling with pain or "
"redness must have DVT ruled out before you assume it's simply lymphedema. And if you pick up signs of "
"significant psychological distress, screen appropriately and refer into psycho-oncology or counselling "
"services. "
"I'll say it again because it applies to everything we're about to cover: a trauma-informed, consent-driven "
"approach is essential throughout every assessment and every intervention we discuss for the rest of this "
"session."
))
# ============================================================ SECTION: INTERVENTION TOOLKIT
section_header("Intervention Toolkit (1:35 - 2:00)")
slide_block(33, "Core Intervention Toolkit: Overview", "1.5 min", (
"Here's our toolkit overview - six core interventions: pelvic floor muscle training, biofeedback, electrical "
"stimulation, vaginal dilator therapy, manual therapy, and lymphedema management. "
"I'm going to go through each of these in more practical depth over the next twenty-five minutes or so, "
"giving you protocols you can actually use, not just a list of names. But please keep the Cyr 2024 finding "
"front of mind as we go: these tools work best when combined, not used in isolation."
))
slide_block(34, "PFMT in Practice: Technique & Progression", "2.5 min", (
"Let's walk through a four-step progression for pelvic floor muscle training in this population. "
"Step one: find the muscle. Cue this via digital palpation or biofeedback, and actively watch for - and "
"correct - breath-holding or substitution with gluteal or abdominal muscles, which is very common, "
"especially where perineal sensation is reduced. "
"Step two: build the basics. Slow, sustained holds, building up to six to ten seconds, plus fast, short "
"contractions - aim for roughly eight to twelve repetitions, three sets a day as a starting point, "
"individualised of course. "
"Step three: add function. Train 'the knack' - a pre-emptive contraction just before a cough, a sneeze, or "
"lifting, to prevent leakage in the moment it would otherwise occur. "
"Step four: progress load. Add functional positions like standing and walking, and integrate pelvic floor "
"engagement into daily activity rather than keeping it as an isolated exercise."
))
slide_block(35, "Biofeedback in Practice", "2 min", (
"Building on what we covered in the assessment section, biofeedback is especially valuable where sensation "
"is reduced, or where a patient is struggling to isolate the correct muscle group. "
"A typical session structure: baseline recording, guided practice with real-time visual feedback, then a home "
"programme calibrated to that session's data. And remember - combine this with education for best results. "
"Cyr and colleagues' 2024 review found combined active training plus education programmes outperform "
"single-modality approaches. "
"My clinical tip here: reassure your patients explicitly that altered sensation after radiotherapy is normal "
"and expected, and does not mean the muscle cannot be trained effectively. That reassurance alone often "
"reduces anxiety and improves engagement."
))
slide_block(36, "Electrical Stimulation Protocols", "2 min", (
"Let's distinguish two different applications of electrical stimulation. Neuromuscular electrical "
"stimulation supports muscle re-education, particularly useful where voluntary contraction is very weak or "
"hard for the patient to isolate on their own. TENS-type stimulation, by contrast, is used for pain "
"modulation in chronic pelvic or perineal pain. "
"A 2023 systematic review by Bouallalene-Jaramillo and Calvo-Sanz supports both of these functional uses, but "
"flags a real lack of consistency in parameter reporting across the literature. The practical translation for "
"you: follow your local protocols, and document your stimulation parameters carefully so your own practice "
"contributes usefully to this evidence base. "
"One important caution: think carefully, and check your local protocols, before applying electrical "
"stimulation over recently irradiated or surgically compromised tissue."
))
slide_block(37, "Vaginal Dilator Therapy Protocol", "2.5 min", (
"Here's a practical four-step dilator protocol. "
"Timing: typically initiated two to four weeks post-radiotherapy once acute mucositis has settled, then "
"continued long-term - please individualise this against your local radiation oncology guidance. "
"Technique: start with a comfortable size, use adequate lubricant, insert and hold for five to ten minutes, "
"with gentle in-and-out and rotational movement. "
"Frequency: typically three or more times a week as a starting point, individualised, increasing to daily "
"use if the patient is at higher stenosis risk. "
"Progression: graduate to larger dilator sizes as tolerated, and combine this with pelvic floor relaxation "
"training rather than teaching dilator use in isolation from muscle down-training. "
"And remember our evidence anchor here - the Martins 2021 randomized trial we covered in detail earlier: "
"dilator users showed significantly lower stenosis severity at one year compared to oestrogen, testosterone, "
"or lubricant alone. Use that data confidently with patients who are fearful or reluctant to start."
))
slide_block(38, "Manual Therapy & Scar Mobilisation", "2 min", (
"Manual therapy techniques here include external and internal soft-tissue mobilisation for surgical scar "
"adhesions and radiation-fibrosed tissue, and myofascial release specifically for pelvic floor hypertonicity "
"and guarding - linking directly back to the chronic pelvic pain content we covered earlier. Connective "
"tissue manipulation and stretching can also improve vaginal and perineal tissue extensibility over time. "
"Always screen tissue healing status and confirm oncology clearance before deeper or internal techniques, "
"particularly in the early post-treatment period. And I'd encourage combining manual therapy with breathing "
"and relaxation strategies for any patient presenting with an overactive, guarding pelvic floor - manual "
"work alone rarely resolves a protective guarding pattern without addressing the nervous system component too."
))
slide_block(39, "Lymphedema Management (Complex Decongestive Therapy)", "2 min", (
"Four components make up complex decongestive therapy: manual lymphatic drainage, compression therapy - "
"bandaging progressing to fitted compression hosiery - remedial exercise to promote muscle-pump assisted "
"lymphatic and venous return, and skin care combined with patient education on early warning signs and "
"self-management. "
"Our evidence anchor here is the Wang 2020 trial we covered in detail before the break: this exact programme "
"reduced lymphedema incidence from thirty-four and a half percent to thirteen and a half percent. Two "
"practical implementation points worth emphasising - the programme in that trial was started early, right "
"from the post-surgical period, and continued consistently for a full year. Early referral and sustained "
"patient engagement both matter if you want to replicate outcomes anywhere close to this in your own practice."
))
slide_block(40, "Education, Counselling & Whole-Body Adjuncts", "2 min", (
"This slide ties the toolkit together with what I'd call the 'soft skills' that the evidence - both Cyr 2024 "
"and Brennen 2020 - shows meaningfully improve outcomes. "
"Expectation-setting: explain the likely timeline and pattern of symptoms based on the specific treatment a "
"patient received. Sexual health counselling: normalise concerns, and discuss lubricants, positioning, timing "
"of resuming intimacy, and dilator use openly and without embarrassment. Bladder and bowel behavioural "
"strategies: timed voiding, urge deferral techniques, dietary and fluid advice, and defaecation posture. And "
"whole-body exercise - yoga, core stability, general aerobic activity - which the evidence supports as a "
"valuable adjunct to pelvic floor muscle training for quality of life and sexual function outcomes. "
"My practical suggestion: build yourself a simple referral list right now - psycho-oncology, sexual health "
"services, peer support groups - so you're ready to signpost patients appropriately, rather than trying to "
"be everything to everyone yourself."
))
# ============================================================ SECTION: PATHWAY
section_header("Care Pathway (2:00 - 2:10)")
slide_block(41, "Rehabilitation Timeline: Prehab to Survivorship", "2 min", (
"This is our integrative slide - it answers the question, 'so what do I actually do, and when?' Let's walk "
"left to right. "
"Pre-treatment - prehabilitation: baseline assessment, education on expected effects, and teaching pelvic "
"floor exercises before radiotherapy or surgery even begins. Acute, on-treatment phase: symptom monitoring, "
"gentle pelvic floor activation as tolerated, and appropriate skin and tissue precautions alongside pain "
"management. Early survivorship, roughly three to twelve months: structured pelvic floor muscle training with "
"or without biofeedback, a vaginal dilator programme, scar and soft tissue mobilisation, and bladder and "
"bowel retraining. And long-term survivorship, beyond twelve months: maintenance training, sexual health "
"rehabilitation, ongoing self-management with periodic re-assessment, and continued lymphedema surveillance. "
"I'd encourage you to photograph this slide - it's designed to be the one-page summary you take back to your "
"own clinic of everything we've covered in the assessment and toolkit sections."
))
slide_block(42, "Dosage, Adherence & Supervision: What the Evidence Shows", "2 min", (
"This slide answers the practical implementation question I imagine many of you are already thinking about: "
"how much therapy, how often, and how do I actually keep patients engaged? "
"Across the evidence we've reviewed today, supervised, structured, multimodal programmes consistently "
"outperform unsupervised home programmes given in isolation. Adequate dose - frequency, duration, and "
"planned follow-up - is a repeated determinant of effect size across these studies. "
"Real barriers include fatigue, treatment burden, embarrassment, and simply limited access to pelvic health "
"physiotherapy. Real facilitators include individual physiotherapist support, group training options, a "
"clear structured routine, and scheduled follow-up review. "
"And I want to leave you with this statistic deliberately: attrition of up to forty percent or more is "
"common in the pilot data we've discussed. That tells us retention strategy is not an afterthought you bolt "
"on later - it needs to be designed into your programme from day one."
))
# ============================================================ SECTION: CASE STUDIES
section_header("Case Studies (2:00 - 2:10, continued)")
slide_block(43, "Case Study 1: Post-Surgical Early Incontinence", "3 min", (
"Let's apply everything to three realistic cases, starting with a relatively straightforward one. "
"Our patient is forty-five years old, six weeks post radical hysterectomy with pelvic lymphadenectomy for "
"stage IB1 disease. She presents with new-onset stress urinary incontinence and reduced sensation of bladder "
"fullness, and she's anxious about returning to her regular exercise class. "
"On examination: pelvic floor strength is two out of five on the Modified Oxford Scale, with poor muscle "
"isolation - she substitutes with a gluteal squeeze. There's mild lower limb swelling noted, though no red "
"flags, and her scar is well healed with mild restriction on mobility testing. "
"I'll pause here and ask you: what would you prioritise in this plan? [Pause for audience input if time "
"allows.] "
"Our approach: biofeedback-assisted pelvic floor muscle training to improve isolation and strength, bladder "
"retraining with 'the knack' education for exertional leakage, baseline lymphedema screening with self-"
"monitoring education even though swelling isn't yet clinically significant, and a graded return-to-exercise "
"plan. "
"Outcome: pelvic floor strength improved to four out of five by twelve weeks, incontinence episodes reduced "
"from daily to occasional, and she returned to a modified version of her exercise class with confidence."
))
slide_block(44, "Case Study 2: Post-Radiotherapy Vaginal Stenosis", "3 min", (
"Our second case is deliberately more complex. A fifty-two-year-old woman, four months post chemoradiation "
"and brachytherapy for stage IIB disease. She reports painful intercourse and admits she's been avoiding "
"dilator use because of discomfort and fear. She also reports urinary urgency. "
"On examination: reduced vaginal calibre and length, with tender, restricted introital tissue, and pelvic "
"floor hypertonicity on palpation - a clear guarding pattern. No signs of fistula or recurrence, which is "
"reassuring. "
"This case illustrates something important: simply 'prescribing a dilator' without addressing fear and "
"muscle guarding often fails. Our sequencing matters here - trauma-informed education and a graded, "
"comfortable dilator programme with adequate lubricant; manual therapy and relaxation-based pelvic floor "
"down-training BEFORE progressing to strengthening work; sexual health counselling with referral for "
"psychosexual support; and bladder urgency strategies delivered alongside the pelvic floor down-training, not "
"as a separate afterthought. "
"Outcome: improved comfort with dilator use over eight weeks, reduced pain with intercourse reported at the "
"three-month review, and urinary urgency improved with the combined bladder and pelvic floor strategy."
))
slide_block(45, "Case Study 3: Long-Term Survivor - Lymphedema & Sexual Dysfunction", "3 min", (
"Our final case represents a survivor who has, in a sense, fallen through the gaps of routine follow-up. A "
"sixty-one-year-old woman, three years post combined surgery and radiotherapy for stage IIIB disease, with "
"chronic left lower limb swelling and ongoing sexual dysfunction that has never previously been addressed. "
"Her quality of life and social participation have been significantly affected. "
"On examination: her left leg circumference is three centimetres greater than the right at mid-calf, skin "
"intact but with a heavy, tight sensation. Significant vaginal shortening and reduced elasticity. Pelvic "
"floor strength is actually preserved, but with poor coordination during functional tasks. "
"I want to use this case to make an advocacy point: patients like this often present years later with "
"compounded, multi-system dysfunction that could realistically have been mitigated with earlier intervention. "
"Our plan: complex decongestive therapy referral - manual lymph drainage, compression garment fitting, and "
"exercise; progressive dilator therapy combined with manual soft-tissue work; functional pelvic floor "
"training integrated with her daily activity and exercise goals; and coordinated review with gynae-oncology "
"and psycho-oncology - because physiotherapists don't, and shouldn't, work in isolation with this population. "
"Outcome: limb volume reduced and stabilised with good compression garment adherence, gradual improvement in "
"vaginal calibre and comfort, and she reported renewed confidence in both intimacy and social activity."
))
# ============================================================ SECTION: IMPLEMENTATION & CLOSE
section_header("Implementation & Close (2:10 - 2:20)")
slide_block(46, "Towards an Integrated Clinical Pathway", "2 min", (
"As we move into closing, I want this slide to be your call to action for service development. "
"Embed routine pelvic floor screening into gynae-oncology follow-up as standard, not only when a patient "
"raises a complaint themselves. Refer for pelvic health physiotherapy assessment before treatment starts "
"where feasible - the prehabilitation model we discussed earlier. Offer a supervised, multimodal programme "
"rather than a leaflet-only approach. Use validated outcome measures at baseline and follow-up, both to track "
"individual patient progress and to demonstrate the value of your service to funders and colleagues. Adopt a "
"trauma-informed, sexual-health-inclusive communication style given how common dyspareunia and body-image "
"concerns are in this group. And build genuine multidisciplinary links with gynae-oncology, radiation "
"oncology, psychology, and lymphedema services. "
"My challenge to each of you: identify just one achievable next step for your own service - perhaps building "
"a referral pathway with your local gynae-oncology team, or introducing a single validated outcome measure - "
"rather than trying to implement everything on this slide at once."
))
slide_block(47, "Evidence Gaps & Future Research", "2 min", (
"I want to be balanced and honest here. We've covered good evidence today, but this is not yet a mature, "
"fully standardised evidence base. "
"Cervical-cancer-specific randomized trials remain limited - much of what we rely on is extrapolated from "
"mixed gynaecological cancer cohorts. Bladder and bowel outcomes remain under-studied compared to sexual "
"function and quality of life. Optimal dose, frequency, and duration for PFMT, biofeedback, and "
"electrostimulation protocols aren't yet standardised. Long-term data beyond two years, and cost-"
"effectiveness data, are both sparse. High attrition across trials points to a real need for implementation "
"and adherence research, not just efficacy research. And prehabilitation before radiotherapy, while "
"promising, is currently based on small pilot data - it needs larger trials before we can recommend it "
"universally. "
"If any of you are considering an audit, a quality improvement project, or a research project, I'd genuinely "
"encourage you to look at this list - these are real opportunities to contribute to the field, not just "
"consume what already exists."
))
slide_block(48, "Key Takeaways", "2 min", (
"Let's bring this all together with five key takeaways. "
"Pelvic floor dysfunction affects roughly a third to nearly half of cervical cancer survivors, and it is "
"largely preventable and treatable. Systematic review evidence supports multimodal pelvic floor muscle "
"training combined with education for sexual, vaginal, and pelvic floor muscle outcomes. Targeted randomized "
"trials support structured dilator therapy for preventing stenosis, and complex decongestive therapy for "
"preventing lymphedema. Prehabilitation before radiotherapy is feasible and may protect pelvic floor "
"function, even though we need more research to confirm this at scale. And perhaps most importantly: "
"patients want, and clearly value, physiotherapist-led, supervised pelvic floor rehabilitation as a standard "
"part of survivorship care - not something they have to seek out for themselves. "
"I'd like to pause here and ask - does anyone want to share how they might apply one of these five points in "
"their own practice this month? [Open floor briefly before moving to references and close.]"
))
slide_block(49, "References (1 of 2)", "1 min", (
"Full references for the studies discussed today are provided across these two slides for anyone who wants "
"to follow up on specific papers. I'm happy to share the complete reference list and slide deck electronically "
"after the session, so please don't feel you need to copy everything down right now."
))
slide_block(50, "References (2 of 2)", "1 min", (
"Continuing through the reference list - I've included PMIDs throughout so you can look these papers up "
"directly on PubMed without needing the full citation details."
))
slide_block(51, "Thank You / Questions & Discussion", "5-10 min", (
"Thank you all so much for your time, your attention, and your engagement today. I know two hours is a long "
"session, and I really appreciate you staying with me through the evidence-heavy middle section. "
"I'd now like to open the floor for questions and discussion. Please don't hesitate to ask about anything we "
"covered - the evidence, the assessment framework, the toolkit, or the cases. And if anything comes up in "
"your own practice after today that you'd like to discuss further, my contact details are on the screen - "
"please do get in touch. "
"I'll also make sure the slide deck, speaker notes, and reference list are available to everyone after this "
"session. Thank you again, and I look forward to your questions."
))
doc.save("output/Rebuilding_the_Base_Speaker_Script.docx")
print("Speech document saved.")
print("Paragraph count:", len(doc.paragraphs))
cd /tmp/workspace/pfr-cervical-cancer-ppt && ls -la output/ && python3 build_speech_doc.py
cd /tmp/workspace/pfr-cervical-cancer-ppt && python3 -c " from docx import Document doc = Document('output/Rebuilding_the_Base_Speaker_Script.docx') words = sum(len(p.text.split()) for p in doc.paragraphs) print('Total words:', words) print('Estimated speaking time at 140 wpm:', round(words/140,1), 'minutes') " ls -la output/
Rebuilding the Base Speaker Script
Word Document · DOCX
i want written speech to explain in conference
ls -la /tmp/workspace/pfr-cervical-cancer-ppt/output/ 2>/dev/null && echo "---" && python3 -c " from docx import Document doc = Document('/tmp/workspace/pfr-cervical-cancer-ppt/output/Rebuilding_the_Base_Speaker_Script.docx') print('paragraphs:', len(doc.paragraphs)) "
Rebuilding the Base Speaker Script
Word Document · DOCX
Generate a speaker notes PDF with timing cues and audience engagement prompts
~/pfr-cervical-cancer-ppt/build_speaker_notes_pdf.py
# -*- coding: utf-8 -*-
"""
Build a Speaker Notes PDF (with running timing cues + audience engagement prompts)
for "Rebuilding the Base: Pelvic Floor Rehabilitation in Cervical Cancer".
"""
from reportlab.lib.pagesizes import letter
from reportlab.lib.units import inch
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT
from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, PageBreak,
Table, TableStyle, HRFlowable, KeepTogether)
NAVY = colors.HexColor("#0B2E45")
TEAL = colors.HexColor("#0E7C7B")
GOLD = colors.HexColor("#C99A3E")
GREY = colors.HexColor("#555555")
LIGHT_GOLD_BG = colors.HexColor("#FBF3E1")
LIGHT_TEAL_BG = colors.HexColor("#EAF5F5")
styles = getSampleStyleSheet()
styles.add(ParagraphStyle("CoverTitle", fontName="Helvetica-Bold", fontSize=30, textColor=NAVY,
alignment=TA_CENTER, spaceAfter=10))
styles.add(ParagraphStyle("CoverSub", fontName="Helvetica", fontSize=16, textColor=TEAL,
alignment=TA_CENTER, spaceAfter=6))
styles.add(ParagraphStyle("CoverItalic", fontName="Helvetica-Oblique", fontSize=12, textColor=GREY,
alignment=TA_CENTER, spaceAfter=4))
styles.add(ParagraphStyle("CoverNote", fontName="Helvetica", fontSize=10.5, textColor=GREY,
alignment=TA_LEFT, leading=15))
styles.add(ParagraphStyle("SectionHeader", fontName="Helvetica-Bold", fontSize=15, textColor=colors.white,
alignment=TA_LEFT, spaceAfter=0, spaceBefore=0, leftIndent=6, leading=20))
styles.add(ParagraphStyle("SlideTitle", fontName="Helvetica-Bold", fontSize=12.5, textColor=NAVY, spaceAfter=2))
styles.add(ParagraphStyle("TimingCue", fontName="Helvetica-Bold", fontSize=9.5, textColor=colors.white,
alignment=TA_CENTER, leading=12))
styles.add(ParagraphStyle("Body", fontName="Helvetica", fontSize=10.3, textColor=colors.black,
leading=14.5, spaceAfter=4))
styles.add(ParagraphStyle("PromptLabel", fontName="Helvetica-Bold", fontSize=9.5, textColor=GOLD))
styles.add(ParagraphStyle("PromptBody", fontName="Helvetica-Oblique", fontSize=10, textColor=NAVY, leading=13.5))
styles.add(ParagraphStyle("BreakText", fontName="Helvetica-Bold", fontSize=14, textColor=GOLD,
alignment=TA_CENTER, spaceAfter=6, spaceBefore=6))
story = []
def cover_page():
story.append(Spacer(1, 1.3*inch))
story.append(Paragraph("REBUILDING THE BASE", styles["CoverTitle"]))
story.append(Paragraph("Pelvic Floor Rehabilitation in Cervical Cancer", styles["CoverSub"]))
story.append(Spacer(1, 6))
story.append(Paragraph("SPEAKER NOTES", styles["CoverSub"]))
story.append(Paragraph("with Timing Cues & Audience Engagement Prompts", styles["CoverItalic"]))
story.append(Spacer(1, 0.6*inch))
note = ("HOW TO USE THIS DOCUMENT<br/><br/>"
"Each entry below corresponds to one slide in the accompanying deck "
"(<i>Rebuilding_the_Base_2hr_Workshop.pptx</i>), in order. For every slide you will find:<br/>"
" • A <b>timing cue</b> - the target duration for that slide and the running elapsed "
"time at which you should be starting it.<br/>"
" • The <b>speaker notes</b> - what to say, written in natural spoken language.<br/>"
" • Where relevant, a highlighted <b>Audience Engagement Prompt</b> box - a question, "
"pause, show-of-hands, or discussion cue to keep the room active.<br/><br/>"
"Total session length: <b>~2 hours</b>, including a scheduled 15-minute break and closing "
"discussion/Q&A. Timing cues assume a moderate conversational pace; adjust for your own delivery "
"style and audience size.")
story.append(Paragraph(note, styles["CoverNote"]))
story.append(PageBreak())
def section_header(text, timerange):
tbl = Table([[Paragraph(text.upper(), styles["SectionHeader"]),
Paragraph(timerange, styles["TimingCue"])]],
colWidths=[4.7*inch, 1.6*inch])
tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), NAVY),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("TOPPADDING", (0,0), (-1,-1), 7),
("BOTTOMPADDING", (0,0), (-1,-1), 7),
("LEFTPADDING", (0,0), (0,0), 10),
("RIGHTPADDING", (1,0), (1,0), 10),
]))
story.append(Spacer(1, 10))
story.append(tbl)
story.append(Spacer(1, 8))
# running clock in minutes
_clock = {"t": 0.0}
def fmt_time(mins):
h = int(mins // 60)
m = int(round(mins % 60))
return f"{h}:{m:02d}"
def slide_entry(num, title, minutes, notes, prompt=None):
start = _clock["t"]
_clock["t"] += minutes
end = _clock["t"]
header_tbl = Table([[
Paragraph(f"SLIDE {num} | {title}", styles["SlideTitle"]),
Paragraph(f"Starts at {fmt_time(start)} | ~{minutes:g} min", styles["TimingCue"].clone("TimingCue2", textColor=colors.white, fontSize=8.7))
]], colWidths=[4.5*inch, 1.8*inch])
header_tbl.setStyle(TableStyle([
("BACKGROUND", (1,0), (1,0), TEAL),
("BACKGROUND", (0,0), (0,0), LIGHT_TEAL_BG),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (0,0), 8),
("LEFTPADDING", (1,0), (1,0), 6),
("ALIGN", (1,0), (1,0), "CENTER"),
]))
block = [header_tbl, Spacer(1,4), Paragraph(notes, styles["Body"])]
if prompt:
ptbl = Table([[Paragraph("MIC AUDIENCE ENGAGEMENT PROMPT", styles["PromptLabel"])],
[Paragraph(prompt, styles["PromptBody"])]], colWidths=[6.3*inch])
ptbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), LIGHT_GOLD_BG),
("BOX", (0,0), (-1,-1), 0.75, GOLD),
("TOPPADDING", (0,0), (-1,0), 5),
("BOTTOMPADDING", (0,0), (-1,0), 1),
("TOPPADDING", (0,1), (-1,1), 1),
("BOTTOMPADDING", (0,1), (-1,1), 6),
("LEFTPADDING", (0,0), (-1,-1), 8),
("RIGHTPADDING", (0,0), (-1,-1), 8),
]))
block += [Spacer(1,4), ptbl]
block.append(Spacer(1, 10))
story.append(KeepTogether(block))
def break_entry():
start = _clock["t"]
_clock["t"] += 15
story.append(Spacer(1, 6))
story.append(HRFlowable(width="100%", thickness=1, color=GOLD))
story.append(Paragraph(f"BREAK - 15 MINUTES (starts at {fmt_time(start)})", styles["BreakText"]))
ptbl = Table([[Paragraph("MIC AUDIENCE ENGAGEMENT PROMPT", styles["PromptLabel"])],
[Paragraph("Thank the audience and remind them of the time. Invite informal questions "
"during the break, and ask them to jot down any questions on the evidence "
"section so you can circle back briefly before moving into assessment and "
"intervention content after the break.", styles["PromptBody"])]], colWidths=[6.3*inch])
ptbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), LIGHT_GOLD_BG),
("BOX", (0,0), (-1,-1), 0.75, GOLD),
("TOPPADDING", (0,0), (-1,0), 5), ("BOTTOMPADDING", (0,0), (-1,0), 1),
("TOPPADDING", (0,1), (-1,1), 1), ("BOTTOMPADDING", (0,1), (-1,1), 6),
("LEFTPADDING", (0,0), (-1,-1), 8), ("RIGHTPADDING", (0,0), (-1,-1), 8),
]))
story.append(ptbl)
story.append(HRFlowable(width="100%", thickness=1, color=GOLD))
story.append(Spacer(1, 10))
# ================= BUILD CONTENT =================
cover_page()
# ---------------- OPENING
section_header("Opening", "0:00 - 0:15")
slide_entry(1, "Title Slide", 2,
"Good morning, everyone, and thank you for joining me. My name is [Presenter Name], and I'm a "
"physiotherapist working in pelvic health and oncology rehabilitation. Today we're going to spend the "
"next two hours talking about pelvic floor rehabilitation for women treated for cervical cancer. I've "
"called this talk 'Rebuilding the Base', because that's really what we're doing as physiotherapists in "
"this space - helping women rebuild physical function, confidence, and quality of life after treatment "
"that passes right through the pelvic floor. This session covers clinical background, the research "
"evidence in detail, a structured assessment framework, a full intervention toolkit, three realistic "
"patient cases, and where the evidence still needs to catch up.",
prompt="Make eye contact and scan the room. Ask: \u201cBy a show of hands, how many of you currently see "
"cervical or gynaecological cancer survivors in your caseload?\u201d Use the response to calibrate "
"how much foundational context to linger on later.")
slide_entry(2, "Session Format & Time Allocation", 2,
"Here's how our two hours will be structured: about fifteen minutes on clinical context, twenty minutes "
"on anatomy and pathophysiology, then thirty minutes on clinical impact and evidence - the evidence-heavy "
"core of the talk. We'll take a fifteen-minute break, then move into the practical half: fifteen minutes "
"on assessment, twenty-five minutes on the intervention toolkit, ten minutes on case studies, and we'll "
"close with implementation, evidence gaps, and open discussion. Please hold questions for the break or "
"final discussion to keep us on schedule, but flag urgent clarifications any time.", None)
slide_entry(3, "Learning Objectives", 1,
"By the end of this session you should be able to: describe the prevalence and mechanisms of pelvic "
"floor dysfunction after cervical cancer treatment; critically appraise the current evidence base; apply "
"a structured assessment framework; select and sequence conservative interventions; apply all of this to "
"realistic cases; and identify evidence gaps so you can advocate for integrated pelvic floor pathways in "
"your own service.",
prompt="Invite the audience to silently pick one patient - past or present - from their own caseload to "
"mentally test today's content against as we go. Tell them you'll remind them of this at the end.")
# ---------------- CLINICAL CONTEXT
section_header("Clinical Context", "0:15 - 0:30")
slide_entry(4, "Cervical Cancer: Burden & Epidemiology", 2,
"Cervical cancer remains the fourth most common cancer in women worldwide, and in regions without "
"robust screening it's still a leading cause of cancer death. Roughly six hundred and sixty thousand new "
"cases and around three hundred and fifty thousand deaths occur globally each year - treat these as "
"approximate figures and substitute local data where relevant. Survival is improving thanks to earlier "
"detection and better oncological treatment. That means the number of women living for decades with "
"treatment-related pelvic floor sequelae is growing every year - an expanding problem, not a shrinking one.",
None)
slide_entry(5, "FIGO Staging: Why Stage Drives Treatment Choice", 2,
"FIGO staging runs from stage IA (microinvasive) to stage IVB (spread beyond the pelvis). Early "
"microinvasive disease may need only limited surgery with lower pelvic floor risk; bulkier or "
"locally advanced disease (stage IB2+) more often needs radical surgery plus radiotherapy or "
"chemoradiation. Practical takeaway: always ask what stage a survivor was, and what treatment she "
"actually received - that single detail reframes your whole assessment.",
prompt="Ask the room: \u201cWho here routinely documents FIGO stage and treatment modality before starting "
"a pelvic floor assessment?\u201d Pause for a response before moving on.")
slide_entry(6, "Treatment Landscape: Surgical Management", 2,
"Radical hysterectomy with pelvic lymphadenectomy is standard for early-stage disease - removal of "
"uterus, cervix, upper vagina, parametrial tissue, and pelvic lymph nodes. Nerve-sparing technique is "
"increasingly used but does not mean nerve-injury-free. The Querleu-Morrow classification of resection "
"extent correlates with degree of bladder, bowel and sexual dysfunction. Fertility-sparing radical "
"trachelectomy carries similar principles. Pelvic lymphadenectomy is itself a major lymphedema risk factor.",
None)
slide_entry(7, "Radiotherapy & Brachytherapy", 3,
"External beam radiotherapy with or without brachytherapy is standard for locally advanced disease. "
"Modern IMRT spares bladder, rectum and bowel more precisely than older 2D fields, but pelvic floor "
"tissue in the field is still affected. Brachytherapy delivers a very high internal dose directly to the "
"vagina and cervix - which is exactly why vaginal tissue is disproportionately affected by fibrosis and "
"shortening. Critical point: radiation damage is dose-dependent, cumulative, and delayed - a patient can "
"look fine at three months and develop significant stenosis at eighteen months.",
prompt="Pause and ask: \u201cHow many of you currently see patients for pelvic floor review beyond the "
"six-month oncology follow-up mark?\u201d This usually reveals a service gap worth naming out loud.")
slide_entry(8, "Combined Modality Treatment & the Survivorship Imperative", 2,
"Many patients receive both surgery and radiotherapy - for example adjuvant radiotherapy after surgery "
"for positive margins or nodal involvement. This combined insult (surgical nerve/tissue injury plus "
"radiation fibrosis and microvascular damage) carries the highest risk of urinary, bowel, sexual and "
"lymphatic dysfunction. As more women survive long-term, a growing share are exactly this combined-"
"modality group - the core argument for building physiotherapy into standard survivorship pathways.",
None)
# ---------------- ANATOMY
section_header("Anatomy & Pathophysiology", "0:15 - 0:35 (cont.)")
slide_entry(9, "Pelvic Floor Anatomy: Setting the Scene", 1.5,
"Think of the pelvic floor as three functional layers: endopelvic fascia (support/suspension), levator "
"ani complex (the main muscular sling), and the perineal membrane/sphincter mechanisms (continence). "
"Normal function needs intact muscle, connective tissue, AND nerve supply together. Cervical cancer "
"treatment can damage any or all three - which is why the resulting clinical picture is so often "
"multifactorial.", None)
slide_entry(10, "The Levator Ani Complex", 1.5,
"Pubococcygeus, puborectalis and iliococcygeus form the pelvic diaphragm. It provides constant resting "
"tone as well as voluntary and reflexive contraction - which is why training can't just be isolated "
"squeeze-and-release Kegels. It blends inferiorly with the anal sphincter mechanism, our bridge into "
"bowel continence on the next slide.", None)
slide_entry(11, "Continence Anatomy: Anal Canal & Sphincters", 1.5,
"The internal anal sphincter (involuntary resting tone) and external anal sphincter (voluntary squeeze/"
"urge control), together with puborectalis, form the anorectal angle critical to faecal continence. "
"Radiation fibrosis and surgical disruption can impair both sphincter integrity and rectal wall "
"compliance - exactly why bowel urgency and incontinence are so common. Actively screen for this even "
"when unreported.", None)
slide_entry(12, "Nerve Supply & the Levator Plate", 2,
"The single most clinically important anatomy slide today. The hypogastric/pelvic autonomic plexus "
"governs bladder, bowel and sexual arousal. The pudendal nerve (S2-S4, somatic) governs voluntary "
"control of external sphincters and pelvic floor muscles. The autonomic plexus runs directly through the "
"surgical field during radical parametrectomy - explaining why bladder, bowel and arousal dysfunction "
"occur even with nerve-sparing surgery. This is why some patients have a good voluntary squeeze on exam "
"but still struggle with bladder urgency or reduced arousal.",
prompt="Ask: \u201cCan anyone explain, in their own words, why a patient might have a perfectly good "
"voluntary pelvic floor contraction but still have significant bladder urgency?\u201d Let one or "
"two people answer before confirming the autonomic vs. pudendal distinction.")
slide_entry(13, "Surgical Mechanisms of Pelvic Floor Injury", 2,
"Mapping mechanism to symptom: autonomic nerve injury during radical parametrectomy leads to bladder, "
"bowel and sexual dysfunction; disruption of levator ani fibres/endopelvic fascia leads to support and "
"continence problems; vaginal cuff shortening changes the vaginal axis; pelvic lymphadenectomy interrupts "
"lymphatic drainage; postoperative pain, scarring and fear-avoidance further inhibit pelvic floor "
"activation.", None)
slide_entry(14, "Radiotherapy Mechanisms of Pelvic Floor Injury", 2,
"Progressive fibrosis of muscle, fascia and vaginal tissue is dose-dependent and can worsen for years. "
"Microvascular endothelial damage causes chronic tissue hypoxia. Vaginal mucosal atrophy, shortening and "
"stenosis can progress to agglutination without preventive dilation. All of this compounds pre-existing "
"surgical denervation. Clinical implication: start dilator therapy early post-radiotherapy and continue "
"long-term, and extend reassessment well beyond the typical three-to-six-month window.", None)
slide_entry(15, "The Cumulative Injury Model", 2,
"Baseline function, then surgery layers on nerve injury/fascial disruption/lymphadenectomy, then "
"radiotherapy layers on fibrosis/microvascular damage/mucosal atrophy, then disuse and fear layer on "
"further deconditioning - resulting in the clinical dysfunction we see: incontinence, stenosis, pain, "
"lymphedema, sexual dysfunction. By the time a combined-modality patient reaches your clinic, multiple "
"mechanisms have usually compounded each other. A single intervention alone is rarely sufficient - we "
"need a multimodal approach addressing muscle, tissue AND behaviour together.",
prompt="Pause here: \u201cAny quick questions before we move into the clinical impact and evidence "
"section?\u201d This is a natural inflection point in the talk - give the room a genuine few seconds "
"of silence, not just a rhetorical pause.")
# ---------------- CLINICAL IMPACT & EVIDENCE
section_header("Clinical Impact & Evidence Base", "0:35 - 1:05")
slide_entry(16, "Scale of the Problem: Prevalence", 2,
"Headline statistics to remember: forty-five percent prevalence of sexual dysfunction, thirty-four "
"percent urinary incontinence, and eleven percent faecal incontinence, pooled from Shan et al. 2023 "
"(systematic review/meta-analysis). There's real heterogeneity in these pooled estimates, but the "
"consistent message is clear: this is common, not rare. We also see vaginal stenosis, dyspareunia, "
"chronic pelvic pain, and lower-limb lymphedema, and these effects are persistent for years without "
"intervention.",
prompt="Ask the audience to guess the prevalence figures before you reveal them: \u201cBefore I show you "
"the numbers - what percentage of cervical cancer survivors do you think experience some form of "
"sexual dysfunction after treatment?\u201d This usually produces underestimates and makes the real "
"figure land harder.")
slide_entry(17, "Urinary & Bowel Dysfunction", 2.5,
"Urinary: stress incontinence from urethral sphincter support loss; urgency/overactive bladder from "
"detrusor changes post-radiation; voiding dysfunction from autonomic nerve injury; recurrent UTIs from "
"incomplete emptying. Bowel: faecal urgency/incontinence from sphincter and rectal compliance changes; "
"radiation proctitis; chronic diarrhoea or constipation; reduced rectal capacity. These two domains are "
"the least well-studied in this population's literature - mechanism-based clinical reasoning matters "
"especially here.", None)
slide_entry(18, "Sexual Dysfunction & Vaginal Stenosis", 2.5,
"The most under-discussed cluster in routine follow-up. Vaginal shortening, narrowing and reduced "
"elasticity can progress for a year or two post-radiotherapy. Fear of pain leads to avoidance, avoidance "
"worsens stenosis, worse stenosis means more pain - physiotherapy can break that cycle. Martins et al. "
"2021 (RCT, n=195): vaginal volume loss was similar across oestrogen, testosterone, lubricant and dilator "
"arms, but dilator users had significantly lower severity/frequency of graded stenosis at one year.", None)
slide_entry(19, "Lower-Limb Lymphedema & Pelvic Pain", 2.5,
"Lymphedema affects roughly twenty to thirty-six percent after pelvic lymphadenectomy. Preview: Wang et "
"al. 2020 RCT found structured decongestive physiotherapy reduced incidence from 34.5% to 13.6%. For "
"pelvic pain, think myofascial hypertonicity/guarding plus neuropathic pain from nerve injury or fibrotic "
"entrapment - these coexist with dyspareunia and bladder/bowel urgency, requiring a combined whole-person "
"assessment.", None)
slide_entry(20, "Psychosocial Impact & Quality of Life", 2,
"Body image change, altered sense of femininity/sexuality, anxiety around intimacy, fear of recurrence, "
"and grief related to fertility loss are all real and common. Incontinence and pain restrict social "
"participation, exercise, and return to work. Actively ask about body image, intimacy and fear of "
"recurrence - don't wait for patients to volunteer it. The physiotherapy consultation is a uniquely "
"private, hands-on, longer touchpoint in this patient's care journey.",
prompt="Invite reflection rather than a spoken answer: \u201cThink about your own consultation style for a "
"moment - do you actively ask about intimacy and body image, or do you wait for the patient to "
"bring it up?\u201d Let the silence sit for a few seconds before continuing.")
slide_entry(21, "The Evidence at a Glance", 1.5,
"This table summarises eight key studies. I'll walk through each as a dedicated spotlight over the next "
"several minutes, giving study design, population, and key numbers, so you leave with citable evidence "
"for your own service.", None)
slide_entry(22, "Evidence Spotlight: Brennen et al. 2020", 3,
"Systematic review, Physical Therapy, 2020: 5 RCTs + 2 cohort studies, n=886, gynaecological cancer "
"survivors including cervical cancer - Tier-1 evidence. PFMT + counselling + yoga/core exercise improved "
"sexual function (SMD -0.96, a large effect favouring intervention) and HRQoL (SMD 0.63). Dilator therapy "
"reduced vaginal complications (OR 0.37). Limitation: insufficient data to pool bladder or bowel "
"outcomes - an evidence gap we'll revisit later.", None)
slide_entry(23, "Evidence Spotlight: Cyr et al. 2024", 3,
"The most clinically actionable review in our evidence base: 20 studies (11 RCTs). Combined/multimodal "
"therapy (active PFMT + education) was more consistently effective than single-modality approaches across "
"vaginal, pelvic floor, sexual, and PFM function outcomes. Active training/electrostimulation improved "
"bladder outcomes; limited but promising bowel evidence with active training plus education. Key "
"takeaway: dosage, adherence, and clinical supervision were repeatedly identified as key determinants of "
"effect - education is part of the core active ingredient, not an optional add-on.", None)
slide_entry(24, "Evidence Spotlight: Sacomori et al. 2020", 2.5,
"Prehabilitation - intervening before treatment starts. Pilot study, n=49 women, stage I-III, starting "
"radiotherapy, taught PFM exercises before/during/after radiotherapy. Result: no significant decline in "
"PFM strength, EMG activity, or continence at one month post-RT. Be transparent about limitations: small "
"pilot, only 28 of 49 completed it, no control group - hypothesis-generating, not definitive.",
prompt="Ask: \u201cGiven the forty-three percent dropout in this pilot, what would you change about how "
"you'd deliver a prehabilitation programme to improve retention?\u201d Take one or two suggestions "
"if time allows.")
slide_entry(25, "Evidence Spotlight: Lindgren et al. 2024", 2.5,
"Qualitative study nested in an RCT, n=11 women who completed 3 months of PFMT with or without "
"physiotherapist support for incontinence post pelvic radiotherapy. Physiotherapist-supported women "
"described structured programmes and individual support as highly valuable - improved strength, reduced "
"incontinence, better urge control, improved sexual health, reduced anxiety. Every participant wanted "
"physiotherapist-guided PFMT to become standard care - not something they had to seek out themselves.",
None)
slide_entry(26, "Evidence Spotlight: Martins et al. 2021", 2.5,
"Open-label RCT, n=195, stages I-IIIB post-radiotherapy. Four arms: topical oestrogen, topical "
"testosterone, lubricant gel, vaginal dilators. All four groups showed similar ~25% vaginal volume "
"reduction over 12 months - dilators don't 'cure' tissue changes outright. But stenosis severity/"
"frequency was significantly better maintained in the dilator group. The best randomized evidence we have "
"supporting structured dilator therapy.", None)
slide_entry(27, "Evidence Spotlight: Wang et al. 2020", 2.5,
"Numerically the strongest single result in our evidence base. RCT, n=120 (117 completed), post radical "
"hysterectomy + pelvic lymphadenectomy. Modified complex decongestive physiotherapy (manual lymphatic "
"drainage, compression hosiery, structured exercise, education). Result: lymphedema incidence 13.6% "
"intervention vs 34.5% control (OR 0.30); onset delayed 8 months vs 4.6 months. This is essentially the "
"same complex decongestive framework many of you already use for breast cancer lymphedema, adapted for "
"the lower limb.",
prompt="Ask: \u201cIf you're already trained in complex decongestive therapy for breast cancer-related "
"lymphedema, what would you need to adapt to apply this confidently to a gynae-oncology patient?\u201d")
break_entry()
# ---------------- ASSESSMENT
section_header("Assessment Framework", "1:20 - 1:35")
slide_entry(28, "Subjective Assessment & Patient-Reported Outcomes", 2,
"Welcome back. We're shifting from evidence review into clinical application. A thorough oncology and "
"treatment history is clinically necessary - stage, surgery type (nerve-sparing or not), radiotherapy "
"dose/field, chemotherapy, time since treatment. This predicts which symptom clusters to actively screen "
"for. Use validated PROMs where possible (ICIQ, FSFI-type tools, condition-specific QoL tools, CTCAE for "
"stenosis grading). Build in a structured symptom and psychosocial screen, and finish with collaborative "
"goal-setting.",
prompt="\u201cWelcome back everyone\u201d - re-energise the room after the break with a quick check-in: "
"\u201cShow of hands - who has a burning question left over from the evidence section? Let's take "
"one quickly before we move into assessment.\u201d")
slide_entry(29, "Objective Pelvic Floor Muscle Examination", 2,
"Reminder on consent and trauma-informed practice - many of these women have had extensive, sometimes "
"distressing, medical examinations already. Always explain and gain explicit consent before internal "
"assessment. Visual inspection, digital vaginal/rectal assessment (Modified Oxford Scale 0-5), assess "
"vaginal length/calibre as your dilator-progress baseline, palpate for trigger points/tissue restriction, "
"and functional testing (cough/Valsalva, sit-to-stand, bladder/bowel diary).", None)
slide_entry(30, "Instrumented Assessment: Biofeedback & EMG", 2,
"Four steps: sensor placement per protocol; baseline recording of resting tone and 3-5 maximal voluntary "
"contractions; real-time visual feedback during practice; objective tracking of amplitude, hold time and "
"fatigue index to guide progression. Clinical pearl: many post-radiotherapy patients have reduced "
"perineal sensation - biofeedback's visual confirmation of correct contraction is especially valuable "
"here.", None)
slide_entry(31, "Vaginal Calibration & Lymphedema Measurement", 1.5,
"Vaginal: measure length/introital calibre using graduated dilators as baseline, grade stenosis with "
"CTCAE, reassess at defined intervals. Lymphedema: circumferential limb measurements or volumetry if "
"available. Screen early - from the time of surgery, not just when visible swelling appears - since "
"earlier detection improves outcomes with complex decongestive therapy.", None)
slide_entry(32, "Red Flags & Psychosocial Screening", 2,
"Fistula symptoms need urgent medical referral, not physiotherapy management. New/worsening pain, "
"bleeding, or a palpable mass - refer back to oncology promptly for recurrence work-up. Severe stenosis/"
"obliteration may need medical or surgical input alongside physiotherapy. Significant unilateral limb "
"swelling with pain/redness - rule out DVT before assuming lymphedema. Significant psychological distress "
"- refer to psycho-oncology. Trauma-informed, consent-driven practice is essential throughout everything "
"that follows.",
prompt="Pause deliberately after this slide: \u201cI want this list to sit with you for a moment before we "
"move into the toolkit, because everything we cover next assumes you've already ruled these out.\u201d")
# ---------------- TOOLKIT
section_header("Intervention Toolkit", "1:35 - 2:00")
slide_entry(33, "Core Intervention Toolkit: Overview", 1.5,
"Six core interventions: pelvic floor muscle training, biofeedback, electrical stimulation, vaginal "
"dilator therapy, manual therapy, and lymphedema management. Keep the Cyr 2024 finding in mind throughout "
"- these tools work best combined, not used in isolation.", None)
slide_entry(34, "PFMT in Practice: Technique & Progression", 2.5,
"Step 1 - find the muscle: cue via palpation or biofeedback, correct breath-holding or gluteal/abdominal "
"substitution. Step 2 - build the basics: slow sustained holds to 6-10 seconds plus fast contractions "
"(roughly 8-12 reps, 3 sets/day, individualised). Step 3 - add function: train 'the knack' - a pre-"
"emptive contraction before cough/sneeze/lifting. Step 4 - progress load: functional positions and "
"integration into daily activity.",
prompt="Consider a live demonstration here: cue the audience through one slow hold and one fast "
"contraction as if they were the patient, so they feel the cueing language land before they use it "
"themselves.")
slide_entry(35, "Biofeedback in Practice", 2,
"Especially valuable where sensation is reduced or isolation is difficult. Session structure: baseline "
"recording, guided practice with real-time feedback, calibrated home programme. Combine with education - "
"Cyr 2024 found combined active training plus education outperforms single-modality approaches. "
"Reassure patients that altered sensation post-radiotherapy is normal and doesn't mean the muscle can't "
"be trained effectively.", None)
slide_entry(36, "Electrical Stimulation Protocols", 2,
"Neuromuscular stimulation supports muscle re-education where voluntary contraction is weak or hard to "
"isolate. TENS-type stimulation is used for pain modulation in chronic pelvic/perineal pain. "
"Bouallalene-Jaramillo & Calvo-Sanz 2023 supports both uses but flags inconsistent parameter "
"reporting - follow local protocols and document your parameters carefully. Caution: think carefully "
"before applying stimulation over recently irradiated or surgically compromised tissue.", None)
slide_entry(37, "Vaginal Dilator Therapy Protocol", 2.5,
"Timing: typically 2-4 weeks post-radiotherapy once acute mucositis settles, continued long-term. "
"Technique: comfortable size, adequate lubricant, insert/hold 5-10 minutes with gentle movement. "
"Frequency: 3+ times/week starting point, increasing to daily if higher risk. Progression: graduate "
"sizes as tolerated, combine with pelvic floor relaxation training. Evidence anchor: Martins 2021 - "
"dilator users showed significantly lower stenosis severity at one year. Use this confidently with "
"fearful or reluctant patients.",
prompt="Ask: \u201cWhat's the most common objection you hear from patients about starting dilator "
"therapy, and how do you currently respond to it?\u201d Compare a couple of audience answers before "
"sharing your own approach.")
slide_entry(38, "Manual Therapy & Scar Mobilisation", 2,
"External/internal soft-tissue mobilisation for surgical scar adhesions and radiation-fibrosed tissue; "
"myofascial release for pelvic floor hypertonicity/guarding; connective tissue manipulation and "
"stretching for vaginal/perineal extensibility. Always confirm oncology clearance before deeper/internal "
"techniques, particularly early post-treatment. Combine with breathing/relaxation strategies for "
"overactive, guarding pelvic floors.", None)
slide_entry(39, "Lymphedema Management (Complex Decongestive Therapy)", 2,
"Four components: manual lymphatic drainage; compression therapy (bandaging progressing to fitted "
"hosiery); remedial exercise for muscle-pump assisted lymphatic/venous return; skin care plus education "
"on early warning signs. Evidence anchor: Wang 2020 - this exact programme reduced incidence from 34.5% "
"to 13.6%. Implementation points: started early from the post-surgical period and continued consistently "
"for a full year.", None)
slide_entry(40, "Education, Counselling & Whole-Body Adjuncts", 2,
"Expectation-setting on likely symptom timeline; sexual health counselling (lubricants, positioning, "
"timing of resuming intimacy, dilator use, discussed openly); bladder/bowel behavioural strategies (timed "
"voiding, urge deferral, dietary/fluid advice, defaecation posture); whole-body exercise (yoga, core "
"stability, aerobic activity) as a valuable adjunct. Build yourself a referral list now (psycho-oncology, "
"sexual health, peer support) rather than trying to be everything to everyone.", None)
# ---------------- CARE PATHWAY
section_header("Care Pathway", "2:00 - 2:10")
slide_entry(41, "Rehabilitation Timeline: Prehab to Survivorship", 2,
"Pre-treatment/prehabilitation: baseline assessment, education, PFM exercises before treatment starts. "
"Acute/on-treatment: symptom monitoring, gentle PFM activation as tolerated, precautions, pain "
"management. Early survivorship (3-12 months): structured PFMT +/- biofeedback, dilator programme, scar "
"mobilisation, bladder/bowel retraining. Long-term survivorship (12+ months): maintenance training, "
"sexual health rehabilitation, self-management, ongoing lymphedema surveillance.",
prompt="Suggest the audience photograph this slide: \u201cThis is designed to be the one-page summary you "
"take back to your own clinic - feel free to snap a picture now.\u201d")
slide_entry(42, "Dosage, Adherence & Supervision: What the Evidence Shows", 2,
"Supervised, structured, multimodal programmes consistently outperform unsupervised home programmes "
"alone. Adequate dose (frequency, duration, planned follow-up) repeatedly determines effect size. "
"Barriers: fatigue, treatment burden, embarrassment, limited access. Facilitators: individual "
"physiotherapist support, group options, clear routine, scheduled follow-up. Attrition of up to forty "
"percent or more is common - retention strategy needs to be designed in from day one, not bolted on "
"later.", None)
# ---------------- CASES
section_header("Case Studies", "2:00 - 2:10 (cont.)")
slide_entry(43, "Case 1: Post-Surgical Early Incontinence", 3,
"45-year-old, 6 weeks post radical hysterectomy + pelvic lymphadenectomy, stage IB1. New stress urinary "
"incontinence, reduced bladder fullness sensation, anxious about returning to exercise class. Exam: PFM "
"strength 2/5 Oxford Scale, poor isolation, mild limb swelling (no red flags), well-healed scar with mild "
"restriction. Plan: biofeedback-assisted PFMT, bladder retraining with 'the knack', baseline lymphedema "
"screening/education, graded return-to-exercise. Outcome: strength improved to 4/5 by 12 weeks, "
"incontinence reduced from daily to occasional, returned to modified exercise class with confidence.",
prompt="Pause and ask the room directly: \u201cBefore I show you our plan - what would YOU prioritise "
"first in this patient's programme?\u201d Take two or three answers, then reveal the actual "
"sequencing used.")
slide_entry(44, "Case 2: Post-Radiotherapy Vaginal Stenosis", 3,
"52-year-old, 4 months post chemoradiation + brachytherapy, stage IIB. Painful intercourse, avoiding "
"dilator use from fear, urinary urgency. Exam: reduced vaginal calibre/length, tender restricted "
"introital tissue, PFM hypertonicity/guarding, no fistula or recurrence signs. Sequencing: trauma-"
"informed education plus graded dilator programme; manual therapy and relaxation-based down-training "
"BEFORE strengthening; sexual health counselling with psychosexual referral; bladder urgency strategies "
"alongside down-training. Outcome: improved dilator comfort over 8 weeks, reduced pain with intercourse "
"at 3-month review, urgency improved.",
prompt="Ask: \u201cWhy might simply handing this patient a dilator and a leaflet fail here, even though "
"dilators are evidence-based?\u201d Let the discussion surface the guarding/fear component before "
"you confirm it.")
slide_entry(45, "Case 3: Long-Term Survivor - Lymphedema & Sexual Dysfunction", 3,
"61-year-old, 3 years post combined surgery + radiotherapy, stage IIIB. Chronic left limb swelling, "
"ongoing unaddressed sexual dysfunction, reduced quality of life. Exam: 3cm limb circumference "
"difference, heavy/tight skin sensation; significant vaginal shortening/reduced elasticity; PFM strength "
"preserved but poor functional coordination. Plan: complex decongestive therapy referral, progressive "
"dilator therapy plus manual soft-tissue work, functional PFM training, coordinated review with gynae-"
"oncology and psycho-oncology. Outcome: limb volume reduced and stabilised, gradual improvement in "
"vaginal calibre/comfort, renewed confidence in intimacy and social activity.",
prompt="Use this case as an advocacy moment: \u201cThis patient waited three years to have any of this "
"addressed. What could your service change THIS YEAR to make sure someone like her doesn't wait "
"that long?\u201d")
# ---------------- IMPLEMENTATION & CLOSE
section_header("Implementation & Close", "2:10 - 2:20")
slide_entry(46, "Towards an Integrated Clinical Pathway", 2,
"Embed routine pelvic floor screening into gynae-oncology follow-up as standard. Refer for pelvic health "
"physiotherapy before treatment starts where feasible. Offer supervised, multimodal programmes, not "
"leaflets alone. Use validated outcome measures at baseline and follow-up. Adopt trauma-informed, sexual-"
"health-inclusive communication. Build genuine multidisciplinary links with gynae-oncology, radiation "
"oncology, psychology, and lymphedema services.",
prompt="Challenge the room directly: \u201cIdentify just ONE achievable next step for your own service "
"right now - turn to the person next to you and say it out loud in one sentence.\u201d Give this "
"sixty seconds.")
slide_entry(47, "Evidence Gaps & Future Research", 2,
"Cervical-cancer-specific RCTs remain limited - much evidence is extrapolated from mixed gynaecological "
"cancer cohorts. Bladder/bowel outcomes are under-studied compared to sexual function/QoL. Optimal dose/"
"frequency/duration for PFMT, biofeedback, and electrostimulation aren't standardised. Long-term (2+ "
"years) and cost-effectiveness data are sparse. High attrition points to a need for implementation/"
"adherence research. Prehabilitation is promising but needs larger trials.", None)
slide_entry(48, "Key Takeaways", 2,
"Pelvic floor dysfunction affects roughly a third to nearly half of cervical cancer survivors, and is "
"largely preventable and treatable. Systematic review evidence supports multimodal PFMT plus education. "
"Targeted RCTs support structured dilator therapy for stenosis prevention and complex decongestive "
"therapy for lymphedema prevention. Prehabilitation before radiotherapy is feasible and may protect "
"pelvic floor function. Most importantly: patients want physiotherapist-led, supervised pelvic floor "
"rehabilitation as standard survivorship care.",
prompt="Open floor briefly: \u201cDoes anyone want to share how they might apply one of these five points "
"in their own practice this month?\u201d Allow genuine discussion time here - this is the most "
"important engagement moment in the whole session.")
slide_entry(49, "References (1 of 2)", 1,
"Full references for the studies discussed today are provided across these two slides. I'm happy to "
"share the complete reference list and slide deck electronically after the session.", None)
slide_entry(50, "References (2 of 2)", 1,
"Continuing through the reference list - PMIDs are included throughout so you can look these papers up "
"directly on PubMed.", None)
slide_entry(51, "Thank You / Questions & Discussion", 7,
"Thank you all so much for your time, attention, and engagement today. I know two hours is a long "
"session, and I appreciate you staying with me through the evidence-heavy middle section. I'd like to "
"open the floor for questions and discussion - please ask about anything we covered: the evidence, the "
"assessment framework, the toolkit, or the cases. My contact details are on screen. I'll make sure the "
"slide deck, speaker notes, and reference list are available to everyone after this session.",
prompt="Open Q&A formally: \u201cWhat questions do you have for me?\u201d If the room is slow to start, "
"have one or two of your own prepared discussion questions ready to seed the conversation (e.g. "
"\u201cWhat's the single biggest barrier to setting this up in YOUR service?\u201d).")
story.append(Spacer(1, 14))
story.append(HRFlowable(width="100%", thickness=0.75, color=GREY))
story.append(Paragraph(f"Total scripted + break time: approximately {fmt_time(_clock['t'])} (h:mm), "
"including the 15-minute break and closing Q&A allowance.", styles["CoverNote"]))
# ================= PAGE TEMPLATE (header/footer) =================
def on_page(canvas, doc):
canvas.saveState()
canvas.setFont("Helvetica", 8)
canvas.setFillColor(GREY)
canvas.drawString(0.75*inch, 0.5*inch, "Rebuilding the Base: Pelvic Floor Rehabilitation in Cervical Cancer - Speaker Notes")
canvas.drawRightString(letter[0]-0.75*inch, 0.5*inch, f"Page {doc.page}")
canvas.restoreState()
doc = SimpleDocTemplate("output/Rebuilding_the_Base_Speaker_Notes.pdf", pagesize=letter,
leftMargin=0.75*inch, rightMargin=0.75*inch,
topMargin=0.75*inch, bottomMargin=0.75*inch,
title="Rebuilding the Base - Speaker Notes")
doc.build(story, onFirstPage=on_page, onLaterPages=on_page)
print("PDF saved. Total slides scripted:", 51, "| Running time (min):", _clock["t"])
cd /tmp/workspace/pfr-cervical-cancer-ppt && python3 build_speaker_notes_pdf.py
cd /tmp/workspace/pfr-cervical-cancer-ppt && ls -la output/ && python3 -c " from pypdf import PdfReader r = PdfReader('output/Rebuilding_the_Base_Speaker_Notes.pdf') print('Pages:', len(r.pages)) print('Title:', r.metadata.title if r.metadata else None) "
Rebuilding the Base Speaker Notes
PDF Document · PDF
Design a follow-up survey template to measure participant confidence & practice change post-conference
Kirkpatrick model CME conference evaluation survey confidence practice change retrospective pre-post
post-conference follow-up survey template physiotherapy CPD practice change self-efficacy Likert
~/pfr-cervical-cancer-ppt/build_followup_survey.py
# -*- coding: utf-8 -*-
"""
Build a two-part Post-Conference Follow-Up Survey template (Word .docx) to measure
participant confidence and practice change after the "Rebuilding the Base" workshop.
Framework: Kirkpatrick Levels 1-3 (Reaction / Learning-Confidence-Commitment / Behaviour Change),
using a retrospective pre-post design for confidence ratings to reduce response-shift bias.
"""
from docx import Document
from docx.shared import Pt, Inches, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_TABLE_ALIGNMENT
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
NAVY = RGBColor(0x0B, 0x2E, 0x45)
TEAL = RGBColor(0x0E, 0x7C, 0x7B)
GOLD = RGBColor(0xC9, 0x9A, 0x3E)
GREY = RGBColor(0x55, 0x55, 0x55)
doc = Document()
style = doc.styles["Normal"]
style.font.name = "Calibri"
style.font.size = Pt(11)
def shade_cell(cell, hex_color):
tcPr = cell._tc.get_or_add_tcPr()
shd = OxmlElement('w:shd')
shd.set(qn('w:val'), 'clear')
shd.set(qn('w:color'), 'auto')
shd.set(qn('w:fill'), hex_color)
tcPr.append(shd)
def h1(text, color=NAVY, size=18):
p = doc.add_paragraph()
r = p.add_run(text)
r.font.bold = True; r.font.size = Pt(size); r.font.color.rgb = color
p.paragraph_format.space_before = Pt(14); p.paragraph_format.space_after = Pt(6)
return p
def h2(text, color=TEAL, size=13):
p = doc.add_paragraph()
r = p.add_run(text)
r.font.bold = True; r.font.size = Pt(size); r.font.color.rgb = color
p.paragraph_format.space_before = Pt(12); p.paragraph_format.space_after = Pt(4)
return p
def body(text, italic=False, size=10.5, color=None):
p = doc.add_paragraph()
r = p.add_run(text)
r.font.size = Pt(size); r.italic = italic
if color: r.font.color.rgb = color
p.paragraph_format.space_after = Pt(6)
return p
def instr(text):
return body(text, italic=True, size=10, color=GREY)
def checkbox_line(text):
p = doc.add_paragraph(style=None)
r = p.add_run("\u2610 " + text)
r.font.size = Pt(10.5)
p.paragraph_format.space_after = Pt(3)
return p
def rule(color=TEAL, weight=1):
p = doc.add_paragraph()
pPr = p._p.get_or_add_pPr()
pBdr = OxmlElement('w:pBdr')
bottom = OxmlElement('w:bottom')
bottom.set(qn('w:val'), 'single')
bottom.set(qn('w:sz'), str(weight*8))
bottom.set(qn('w:space'), '1')
bottom.set(qn('w:color'), '%02X%02X%02X' % (color[0], color[1], color[2]))
pBdr.append(bottom)
pPr.append(pBdr)
p.paragraph_format.space_after = Pt(10)
return p
def likert_table(rows, scale_labels, before_after=False):
"""rows: list of statement strings. scale_labels: list of column headers for the scale."""
ncols = 1 + len(scale_labels) * (2 if before_after else 1)
tbl = doc.add_table(rows=1, cols=ncols)
tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
tbl.autofit = False
hdr = tbl.rows[0].cells
hdr[0].text = ""
if before_after:
# merge groups conceptually via two header rows
tbl.rows[0].cells[0].text = "Item"
for i, lbl in enumerate(scale_labels):
hdr[1+i].text = f"Before\n{lbl}"
hdr[1+len(scale_labels)+i].text = f"After\n{lbl}"
else:
hdr[0].text = "Item"
for i, lbl in enumerate(scale_labels):
hdr[1+i].text = lbl
for cell in hdr:
shade_cell(cell, "0B2E45")
for p in cell.paragraphs:
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
for r in p.runs:
r.font.color.rgb = RGBColor(0xFF,0xFF,0xFF); r.font.bold = True; r.font.size = Pt(8.5)
for row_text in rows:
cells = tbl.add_row().cells
cells[0].text = row_text
cells[0].paragraphs[0].runs[0].font.size = Pt(9.5)
ncircle = len(scale_labels) * (2 if before_after else 1)
for i in range(1, 1+ncircle):
cells[i].text = "\u25CB"
cells[i].paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER
cells[i].paragraphs[0].runs[0].font.size = Pt(11)
# column widths
tbl.columns[0].width = Inches(2.6 if not before_after else 2.3)
return tbl
def page_break():
doc.add_page_break()
# ============================================================ COVER
p = doc.add_paragraph(); p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = p.add_run("REBUILDING THE BASE"); r.font.size = Pt(26); r.font.bold = True; r.font.color.rgb = NAVY
p2 = doc.add_paragraph(); p2.alignment = WD_ALIGN_PARAGRAPH.CENTER
r2 = p2.add_run("Pelvic Floor Rehabilitation in Cervical Cancer"); r2.font.size = Pt(15); r2.font.color.rgb = TEAL
p3 = doc.add_paragraph(); p3.alignment = WD_ALIGN_PARAGRAPH.CENTER
r3 = p3.add_run("Post-Conference Follow-Up Survey Template"); r3.font.size = Pt(18); r3.font.bold = True; r3.font.color.rgb = GOLD
p4 = doc.add_paragraph(); p4.alignment = WD_ALIGN_PARAGRAPH.CENTER
r4 = p4.add_run("Measuring Participant Confidence & Practice Change"); r4.font.italic = True; r4.font.size = Pt(12); r4.font.color.rgb = GREY
doc.add_paragraph()
h2("Purpose & Framework", TEAL, 12)
body("This template measures the impact of the workshop at two time points, using Kirkpatrick's model of "
"training evaluation (Levels 1-3):", size=10.5)
checkbox_line_removed = None
for line in [
"Level 1 - Reaction: brief satisfaction check (included in Part A).",
"Level 2 - Learning: self-rated confidence, knowledge, and commitment to change, captured immediately "
"post-session using a retrospective (\"then-now\") pre-post design. Asking participants to rate their "
"PRE-session confidence retrospectively, alongside their POST-session confidence, at the same time point "
"reduces response-shift bias compared with a true pre-test taken before participants know what they "
"didn't know.",
"Level 3 - Behaviour change: actual practice change, implementation, and barriers, captured at a 3-month "
"delayed follow-up (Part B), once participants have had a realistic opportunity to apply the content."
]:
p = doc.add_paragraph(); r = p.add_run("\u2022 " + line); r.font.size = Pt(10)
p.paragraph_format.space_after = Pt(4)
h2("Administration Guide", TEAL, 12)
for line in [
"Part A (Immediate Post-Conference Survey): distribute on-site or by email within 24-48 hours of the "
"session ending, while the content is still fresh.",
"Part B (3-Month Follow-Up Survey): send by email exactly 12 weeks after the conference date. Send one "
"reminder after 1 week if no response.",
"Matching without identifying data: ask each participant to create a personal confidential code in Q1 of "
"Part A (e.g. first 2 letters of mother's maiden name + day of birth) and repeat it in Part B. This allows "
"you to match an individual's before/after responses for paired analysis without collecting names or emails "
"in the dataset itself (collect contact details separately, only for sending the Part B link).",
"Estimated completion time: Part A ~6-8 minutes; Part B ~8-10 minutes.",
"Delivery format: reproduce as a paper handout, or transfer the items into an online form tool (e.g. "
"Microsoft Forms, Google Forms, REDCap, SurveyMonkey) using the same question wording and scales.",
]:
p = doc.add_paragraph(); r = p.add_run("\u2022 " + line); r.font.size = Pt(10)
p.paragraph_format.space_after = Pt(4)
page_break()
# ============================================================ PART A
h1("PART A - IMMEDIATE POST-CONFERENCE SURVEY", NAVY, 17)
instr("To be completed within 24-48 hours of the session. Estimated time: 6-8 minutes.")
rule()
h2("Section 1: Respondent Profile")
checkbox_line("Personal confidential code (for matching with your 3-month follow-up survey): _____________")
body("Professional role:", size=10.5)
for opt in ["Physiotherapist", "Nurse / Clinical Nurse Specialist", "Doctor (please specify specialty): ____________",
"Student", "Other (please specify): ____________"]:
checkbox_line(opt)
body("Years of clinical experience:", size=10.5)
for opt in ["Less than 2 years", "2-5 years", "6-10 years", "11-20 years", "More than 20 years"]:
checkbox_line(opt)
body("Current caseload exposure to cervical/gynaecological cancer survivors:", size=10.5)
for opt in ["None currently, but relevant to my role", "Occasional (a few patients per year)",
"Regular (a few patients per month)", "Core part of my caseload"]:
checkbox_line(opt)
h2("Section 2: Confidence Self-Rating (Retrospective Pre-Post)")
instr("For EACH item below, rate your confidence level BOTH before and after attending this session, "
"using the scale: 1 = Not at all confident, 2 = Slightly confident, 3 = Moderately confident, "
"4 = Confident, 5 = Very confident. Please complete BOTH columns now, reflecting back on how you "
"would have rated yourself before the session.")
conf_items = [
"Describing the prevalence and mechanisms of pelvic floor dysfunction after cervical cancer treatment",
"Explaining how surgery and radiotherapy each damage pelvic floor structures and function",
"Critically appraising the evidence for pelvic floor muscle training, dilator therapy, and lymphedema "
"management in this population",
"Taking a structured subjective and objective pelvic floor assessment for this patient group",
"Using biofeedback and/or vaginal dilator therapy as part of a treatment plan",
"Managing lymphedema risk after pelvic lymphadenectomy",
"Recognising red flags requiring referral back to the oncology team",
"Discussing sexual health, intimacy, and body image confidently and sensitively with survivors",
"Advocating for integrated pelvic floor pathways within my own service",
]
likert_table(conf_items, ["1","2","3","4","5"], before_after=True)
body("")
h2("Section 3: Knowledge Check (Optional)")
instr("Circle True (T) or False (F) for each statement.")
knowledge_items = [
"Vaginal volume loss after radiotherapy is prevented entirely by using dilators. (T / F)",
"Radiation-related pelvic floor tissue damage can continue to progress for a year or more after treatment "
"ends. (T / F)",
"Complex decongestive therapy has been shown in a randomized trial to reduce lymphedema incidence after "
"radical hysterectomy and pelvic lymphadenectomy. (T / F)",
"Combined pelvic floor muscle training plus education is generally more effective than either alone. (T / F)",
]
for item in knowledge_items:
checkbox_line(item)
h2("Section 4: Commitment to Practice Change")
instr("Which of the following do you intend to introduce or change in your own practice as a result of this "
"session? Select all that apply, and indicate your intended timeframe.")
change_items = [
"Screen routinely for pelvic floor dysfunction in cervical cancer follow-up (not just when reported)",
"Introduce or adjust a structured PFMT protocol (technique/dosage/progression)",
"Introduce or improve biofeedback-assisted assessment or treatment",
"Introduce or improve a structured vaginal dilator therapy protocol",
"Introduce or improve lymphedema screening and/or complex decongestive therapy",
"Improve how I discuss sexual health, intimacy, and body image with patients",
"Advocate for a prehabilitation referral pathway before radiotherapy/surgery",
"Build or strengthen a multidisciplinary referral pathway (gynae-oncology, psycho-oncology, lymphedema services)",
"Use a validated outcome measure I am not currently using",
]
tbl = doc.add_table(rows=1, cols=3)
tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
hdrs = tbl.rows[0].cells
hdrs[0].text = "Planned change"; hdrs[1].text = "Intend to do?"; hdrs[2].text = "Timeframe"
for c in hdrs:
shade_cell(c, "0B2E45")
for p in c.paragraphs:
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
for r in p.runs: r.font.color.rgb = RGBColor(255,255,255); r.font.bold = True; r.font.size=Pt(9)
for item in change_items:
cells = tbl.add_row().cells
cells[0].text = item; cells[0].paragraphs[0].runs[0].font.size = Pt(9)
cells[1].text = "\u2610 Yes \u2610 No \u2610 Already doing this"
cells[1].paragraphs[0].runs[0].font.size = Pt(9)
cells[2].text = "\u2610 This week \u2610 This month \u2610 This quarter \u2610 Not applicable"
cells[2].paragraphs[0].runs[0].font.size = Pt(8.5)
tbl.columns[0].width = Inches(2.8); tbl.columns[1].width = Inches(1.6); tbl.columns[2].width = Inches(2.4)
body("")
h2("Section 5: Anticipated Barriers")
instr("What do you anticipate will make it difficult to apply what you learned today? Select all that apply.")
for opt in ["Lack of time in clinical sessions", "Lack of equipment (e.g. biofeedback, dilators)",
"Lack of institutional support / no funded pathway", "Limited access to internal referral routes "
"(psycho-oncology, lymphedema service, etc.)", "Insufficient training/supervision to feel fully competent",
"Patient reluctance or engagement challenges", "No anticipated barriers",
"Other (please specify): ___________________________"]:
checkbox_line(opt)
h2("Section 6: Overall Session Feedback (Level 1)")
overall_items = ["The content was relevant to my clinical practice",
"The evidence presented was credible and clearly explained",
"The session gave me practical tools I can use",
"The pace and length of the session were appropriate",
"I would recommend this session to a colleague"]
likert_table(overall_items, ["1 - Strongly\ndisagree","2","3","4","5 - Strongly\nagree"], before_after=False)
body("")
body("What was the single most useful thing you learned today?", size=10.5)
for _ in range(2): checkbox_line("_" * 90)
body("What, if anything, would you change about this session?", size=10.5)
for _ in range(2): checkbox_line("_" * 90)
h2("Section 7: Follow-Up Consent")
checkbox_line("I am willing to be contacted in 3 months for a brief follow-up survey on practice change.")
checkbox_line("Preferred email for follow-up (kept separately from your survey responses): ____________________")
page_break()
# ============================================================ PART B
h1("PART B - 3-MONTH FOLLOW-UP SURVEY", NAVY, 17)
instr("To be sent by email 12 weeks after the conference. Estimated time: 8-10 minutes.")
rule()
h2("Section 1: Respondent Code")
checkbox_line("Personal confidential code (same code you used in Part A): _____________")
body("If you no longer have your original code, please provide your role and approximate years of experience so "
"we can still include your response in aggregate analysis (it simply cannot be paired with your Part A answers):",
size=10)
checkbox_line("Role: ______________ Years of experience: ______________")
h2("Section 2: Confidence Self-Rating (Now)")
instr("Using the same scale as before (1 = Not at all confident, 5 = Very confident), please rate your CURRENT "
"confidence in each area, three months on.")
likert_table(conf_items, ["1","2","3","4","5"], before_after=False)
body("")
h2("Section 3: Actual Practice Change")
instr("For each item you indicated an intention to change in Part A (or any other change prompted by the "
"session), please rate how far you have actually implemented it.")
tbl2 = doc.add_table(rows=1, cols=2)
tbl2.alignment = WD_TABLE_ALIGNMENT.CENTER
h2c = tbl2.rows[0].cells
h2c[0].text = "Practice item"; h2c[1].text = "Implementation status"
for c in h2c:
shade_cell(c, "0B2E45")
for p in c.paragraphs:
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
for r in p.runs: r.font.color.rgb = RGBColor(255,255,255); r.font.bold = True; r.font.size = Pt(9)
for item in change_items:
cells = tbl2.add_row().cells
cells[0].text = item; cells[0].paragraphs[0].runs[0].font.size = Pt(9)
cells[1].text = "\u2610 Not started \u2610 Tried once/twice \u2610 Using occasionally \u2610 Fully integrated into practice"
cells[1].paragraphs[0].runs[0].font.size = Pt(8.5)
tbl2.columns[0].width = Inches(3.4); tbl2.columns[1].width = Inches(3.4)
body("")
h2("Section 4: Barriers Actually Encountered")
instr("Looking back over the past 3 months, what actually got in the way of applying what you learned? Select "
"all that apply, and compare with what you anticipated in Part A.")
for opt in ["Lack of time in clinical sessions", "Lack of equipment (e.g. biofeedback, dilators)",
"Lack of institutional support / no funded pathway", "Limited access to internal referral routes",
"Insufficient training/supervision to feel fully competent", "Patient reluctance or engagement challenges",
"No significant barriers encountered", "Other (please specify): ___________________________"]:
checkbox_line(opt)
h2("Section 5: Outcomes & Impact")
body("Approximately how many patients have you applied this learning with since the conference?", size=10.5)
for opt in ["0", "1-5", "6-15", "More than 15"]:
checkbox_line(opt)
body("Have you noticed any changes in patient outcomes, engagement, or referral patterns as a result?", size=10.5)
for _ in range(2): checkbox_line("_" * 90)
body("Have you made or influenced any changes to service protocols, pathways, or team practice?", size=10.5)
for opt in ["No", "Discussed with colleagues/team but no formal change yet",
"Informal change to my own individual practice", "Formal change to service protocol or pathway"]:
checkbox_line(opt)
h2("Section 6: Ongoing Support Needs")
instr("What would help you sustain or extend this practice change? Select all that apply.")
for opt in ["A refresher session or webinar", "Access to specific equipment (biofeedback, dilators, etc.)",
"Case-based mentoring or supervision", "Written protocols/checklists for my clinical area",
"Networking with other clinicians doing this work", "Institutional/managerial buy-in and support",
"Other (please specify): ___________________________"]:
checkbox_line(opt)
h2("Section 7: Closing Reflection")
body("In one or two sentences, what has been the most meaningful change in your practice since the conference?",
size=10.5)
for _ in range(3): checkbox_line("_" * 90)
checkbox_line("I would be willing to share my experience as a brief testimonial / case example for future promotion "
"of this training.")
doc.add_paragraph()
rule(GOLD)
body("Thank you for completing this follow-up survey. Your responses help demonstrate the real-world impact of "
"this training and support the case for embedding pelvic floor rehabilitation into standard cervical cancer "
"survivorship care.", italic=True, size=10, color=GREY)
page_break()
# ============================================================ APPENDIX: ANALYSIS GUIDE
h1("APPENDIX - ANALYSIS GUIDE FOR ORGANISERS", NAVY, 16)
h2("Suggested Metrics")
for line in [
"Mean confidence shift per item: mean(After) - mean(Before) from Part A Section 2. Report per item and as an "
"overall average across the 9 confidence items.",
"Confidence retention at 3 months: mean(Part B Section 2) vs mean(Part A 'After') for matched respondents "
"(using the confidential code). A meaningful drop suggests a need for refresher input or ongoing support.",
"Commitment-to-action conversion rate: for each item in the change checklist, the percentage of respondents "
"who selected 'Yes' in Part A who report 'Using occasionally' or 'Fully integrated' in Part B.",
"Barrier concordance: compare anticipated barriers (Part A Section 5) against actual barriers encountered "
"(Part B Section 4) to identify which concerns were over- or under-anticipated.",
"Response rate and attrition: track how many Part A respondents complete Part B; low response rates may "
"themselves indicate implementation difficulty and are worth reporting alongside the results.",
]:
p = doc.add_paragraph(); r = p.add_run("\u2022 " + line); r.font.size = Pt(10)
p.paragraph_format.space_after = Pt(5)
h2("Reporting")
body("Present results as an aggregate summary (never individual identifiable responses) in a short impact "
"report: session satisfaction (Level 1), confidence gain and knowledge check results (Level 2), and "
"practice change/implementation rates at 3 months (Level 3). This is well suited for inclusion in a "
"conference impact report, a CPD portfolio, or a business case for service investment.", size=10.5)
doc.save("output/Rebuilding_the_Base_Followup_Survey_Template.docx")
print("Survey template saved.")
print("Paragraphs:", len(doc.paragraphs), "| Tables:", len(doc.tables))
cd /tmp/workspace/pfr-cervical-cancer-ppt && python3 build_followup_survey.py && ls -la output/
Rebuilding the Base Followup Survey Template
Word Document · DOCX
Follow-up suggestions 1 Create a quick-reference clinical pathway PDF for participants to take home 2 Generate a comparison poster: pre-treatment vs post-treatment pelvic floor dysfunction 3 Search PubMed for the latest 2024-2025 cervical cancer rehabilitation guidelines 4 Build an Excel tracker for monitoring patient outcomes across your PFMT cohort
Which follow-up deliverable(s) would you like me to create? (You can pick more than one.)
Rebuilding the Base Pelvic Floor Rehab Cervical Cancer
Presentation · PPTX
[Presenter Name], [Conference Name], [Date], [Email], [Institution] are on the title and closing slides for you to fill in. Let me know if you'd like slide count trimmed/expanded, a different color scheme, or speaker notes added.The 2-hour workshop deck is built and verified: 51 slides, 6 with embedded real clinical/anatomical images, no build errors.Rebuilding the Base 2hr Workshop
Presentation · PPTX
| Time | Section | Slides |
|---|---|---|
| 00:00-00:15 | Title, session format/agenda, learning objectives | 1-3 |
| 00:00-00:15 | Clinical context: epidemiology, FIGO staging (image), surgery, radiotherapy (image), combined-modality/survivorship | 4-8 |
| 00:15-00:35 | Anatomy & pathophysiology: pelvic floor overview, levator ani (image), continence anatomy (image), nerve supply/levator plate (image), surgical mechanisms, radiotherapy mechanisms (image), cumulative injury model | 9-15 |
| 00:35-01:05 | Clinical impact & evidence: prevalence stats, urinary/bowel, sexual dysfunction/stenosis, lymphedema/pain, psychosocial impact, evidence table, 6 evidence spotlights (Brennen 2020, Cyr 2024, Sacomori 2020, Lindgren 2024, Martins 2021 dilator RCT, Wang 2020 lymphedema RCT) | 16-27 |
| 01:05-01:20 | BREAK | - |
| 01:20-01:35 | Assessment: subjective/PROMs, objective exam, instrumented biofeedback/EMG, vaginal/lymphedema measurement, red flags | 28-32 |
| 01:35-02:00 | Intervention toolkit: overview + PFMT technique, biofeedback, e-stim, dilator protocol, manual therapy, lymphedema CDT, education/whole-body — each with process-step or icon-card graphics | 33-40 |
| 02:00-02:10 | Care pathway timeline, dosage/adherence evidence, 3 full case studies (post-surgical, post-RT stenosis, long-term survivor) | 41-45 |
| 02:10-02:20 | Implementation pathway, evidence gaps, key takeaways, references (2 slides), thank you/Q&A | 46-51 |
[Presenter Name], [Conference Name], [Date]) remain on the title/closing slides for you to fill in. Let me know if you want the break slide removed to compress to a tighter 2 hours without networking time, speaker notes added per slide, or the earlier 21-slide version kept as a shorter companion deck.Rebuilding the Base 2hr Workshop
Presentation · PPTX
Rebuilding the Base Speaker Script
Word Document · DOCX
Rebuilding the Base Speaker Script
Word Document · DOCX
Rebuilding the Base Speaker Notes
PDF Document · PDF
Rebuilding the Base Followup Survey Template
Word Document · DOCX
cervical cancer survivorship pelvic floor rehabilitation guideline
gynecologic cancer pelvic floor dysfunction rehabilitation 2024
PMID: 41378673
PMID: 39581933
PMID: 41579191
PMID: 39689426
~/pfr-cervical-cancer-ppt/build_comparison_poster.py
# -*- coding: utf-8 -*-
"""
Build a pre- vs post-treatment / without-vs-with-rehabilitation comparison poster (PDF)
for "Rebuilding the Base: Pelvic Floor Rehabilitation in Cervical Cancer".
Charts via matplotlib (using only real cited figures), composed into a poster via reportlab.
"""
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
from reportlab.lib.pagesizes import landscape
from reportlab.lib.units import inch, mm
from reportlab.pdfgen import canvas
from reportlab.lib import colors
NAVY = "#0B2E45"; TEAL = "#0E7C7B"; GOLD = "#C99A3E"; GREY = "#555555"; LIGHTBG = "#F4F1EA"
NAVY_C = colors.HexColor(NAVY); TEAL_C = colors.HexColor(TEAL); GOLD_C = colors.HexColor(GOLD)
GREY_C = colors.HexColor(GREY); LIGHTBG_C = colors.HexColor(LIGHTBG)
plt.rcParams.update({"font.family": "DejaVu Sans", "axes.edgecolor": GREY, "axes.labelcolor": NAVY,
"xtick.color": NAVY, "ytick.color": NAVY, "text.color": NAVY})
ASSETS = "assets"
import os
os.makedirs(ASSETS, exist_ok=True)
# ---------- Chart 1: Prevalence of PFD domains post-treatment (Shan et al. 2023) ----------
fig, ax = plt.subplots(figsize=(6.4, 4.6), dpi=200)
domains = ["Sexual\nDysfunction", "Urinary\nIncontinence", "Faecal\nIncontinence", "Lower-Limb\nLymphedema"]
vals = [45, 34, 11, 28]
err_low = [0, 0, 0, 8] # lymphedema reported range 20-36%
err_high = [0, 0, 0, 8]
colors_bar = [TEAL, NAVY, GOLD, "#7A3B3B"]
bars = ax.bar(domains, vals, color=colors_bar, width=0.55, zorder=3)
ax.errorbar(domains, vals, yerr=[err_low, err_high], fmt="none", ecolor=GREY, capsize=5, zorder=4)
for b, v in zip(bars, vals):
ax.text(b.get_x()+b.get_width()/2, v+2, f"{v}%", ha="center", fontsize=13, fontweight="bold", color=NAVY)
ax.set_ylim(0, 60)
ax.set_ylabel("Prevalence in survivors (%)", fontsize=11)
ax.set_title("Pelvic Floor Dysfunction AFTER Cervical Cancer Treatment", fontsize=12.5, fontweight="bold", color=NAVY, pad=12)
ax.spines[['top','right']].set_visible(False)
ax.grid(axis="y", linestyle="--", alpha=0.3)
fig.text(0.5, 0.01, "Source: Shan et al. 2023, systematic review & meta-analysis (PMID 36001098);\n"
"lymphedema range from pelvic lymphadenectomy literature (~20-36%)",
ha="center", fontsize=7.5, color=GREY, style="italic")
fig.tight_layout(rect=[0,0.07,1,1])
fig.savefig(f"{ASSETS}/chart_prevalence.png", facecolor="white")
plt.close(fig)
# ---------- Chart 2: Lymphedema incidence WITHOUT vs WITH structured rehab (Wang et al. 2020 RCT) ----------
fig, ax = plt.subplots(figsize=(6.0, 4.6), dpi=200)
groups = ["Usual care\n(no structured\nrehabilitation)", "Complex decongestive\nphysiotherapy\n(structured rehab)"]
vals2 = [34.5, 13.6]
cols2 = ["#7A3B3B", TEAL]
bars2 = ax.bar(groups, vals2, color=cols2, width=0.5, zorder=3)
for b, v in zip(bars2, vals2):
ax.text(b.get_x()+b.get_width()/2, v+1.2, f"{v}%", ha="center", fontsize=15, fontweight="bold", color=NAVY)
ax.annotate("", xy=(1, 13.6+7), xytext=(0, 34.5+2),
arrowprops=dict(arrowstyle="->", color=GOLD, lw=2))
ax.text(0.5, 42, "OR 0.30\n(large effect)", ha="center", fontsize=11, fontweight="bold", color=GOLD)
ax.set_ylim(0, 50)
ax.set_ylabel("Lymphedema incidence (%)", fontsize=11)
ax.set_title("Lower-Limb Lymphedema: Without vs With\nStructured Rehabilitation", fontsize=12.5, fontweight="bold", color=NAVY, pad=10)
ax.spines[['top','right']].set_visible(False)
ax.grid(axis="y", linestyle="--", alpha=0.3)
fig.text(0.5, 0.01, "Source: Wang et al. 2020, RCT, n=120 post radical hysterectomy + pelvic\n"
"lymphadenectomy (PMID 32107315)", ha="center", fontsize=7.5, color=GREY, style="italic")
fig.tight_layout(rect=[0,0.09,1,1])
fig.savefig(f"{ASSETS}/chart_lymphedema.png", facecolor="white")
plt.close(fig)
# ---------- Chart 3: Effect sizes of multimodal rehab on sexual function & QoL (Brennen et al. 2020 SR) ----------
fig, ax = plt.subplots(figsize=(6.0, 4.6), dpi=200)
labels = ["Sexual function\n(SMD)", "Health-related QoL\n(SMD)"]
effect = [0.96, 0.63] # magnitude; sexual function SMD is negative (favours intervention) - plot magnitude with note
cols3 = [TEAL, NAVY]
bars3 = ax.barh(labels, effect, color=cols3, height=0.5, zorder=3)
for b, v in zip(bars3, effect):
ax.text(v+0.03, b.get_y()+b.get_height()/2, f"{v:.2f}", va="center", fontsize=13, fontweight="bold", color=NAVY)
for th, lab in [(0.2,"small"), (0.5,"medium"), (0.8,"large")]:
ax.axvline(th, color=GREY, linestyle=":", linewidth=1)
ax.text(th, 1.55, lab, fontsize=7.5, color=GREY, ha="center")
ax.set_xlim(0, 1.3)
ax.set_xlabel("Standardized Mean Difference (magnitude, favouring rehabilitation)", fontsize=9.5)
ax.set_title("Effect of Multimodal Pelvic Floor Rehabilitation\n(PFMT + Counselling + Yoga/Core Exercise)", fontsize=12, fontweight="bold", color=NAVY, pad=10)
ax.spines[['top','right']].set_visible(False)
ax.grid(axis="x", linestyle="--", alpha=0.3)
fig.text(0.5, 0.01, "Source: Brennen et al. 2020, systematic review, 5 RCTs + 2 cohorts, n=886\n"
"(PMID 32367126). Dilator therapy separately reduced vaginal complications (OR 0.37).",
ha="center", fontsize=7.5, color=GREY, style="italic")
fig.tight_layout(rect=[0,0.1,1,0.93])
fig.savefig(f"{ASSETS}/chart_effect_sizes.png", facecolor="white")
plt.close(fig)
print("Charts generated.")
# ================= COMPOSE POSTER =================
PAGE_W, PAGE_H = 24*inch, 36*inch # portrait poster, 24x36in
c = canvas.Canvas("output/Rebuilding_the_Base_Comparison_Poster.pdf", pagesize=(PAGE_W, PAGE_H))
def rect(x, y, w, h, fill=None, stroke=None, lw=1):
c.saveState()
if fill: c.setFillColor(fill)
if stroke: c.setStrokeColor(stroke)
c.setLineWidth(lw)
c.rect(x, y, w, h, fill=1 if fill else 0, stroke=1 if stroke else 0)
c.restoreState()
def text(x, y, s, font="Helvetica", size=12, color=NAVY_C, align="left", leading=None):
c.saveState()
c.setFillColor(color)
c.setFont(font, size)
if align == "center":
c.drawCentredString(x, y, s)
elif align == "right":
c.drawRightString(x, y, s)
else:
c.drawString(x, y, s)
c.restoreState()
def wrapped_text(x, y, s, width, font="Helvetica", size=11, color=NAVY_C, leading=14, align="left"):
from reportlab.pdfbase.pdfmetrics import stringWidth
words = s.split()
lines, cur = [], ""
for w in words:
test = (cur + " " + w).strip()
if stringWidth(test, font, size) <= width:
cur = test
else:
lines.append(cur); cur = w
if cur: lines.append(cur)
for i, ln in enumerate(lines):
text(x, y - i*leading, ln, font=font, size=size, color=color, align=align)
return y - len(lines)*leading
# Background
rect(0, 0, PAGE_W, PAGE_H, fill=colors.white)
# Top banner
rect(0, PAGE_H-4.6*inch, PAGE_W, 4.6*inch, fill=NAVY_C)
text(PAGE_W/2, PAGE_H-1.5*inch, "REBUILDING THE BASE", font="Helvetica-Bold", size=64, color=colors.white, align="center")
text(PAGE_W/2, PAGE_H-2.35*inch, "Pelvic Floor Rehabilitation in Cervical Cancer", font="Helvetica", size=30, color=colors.HexColor("#BFE3E2"), align="center")
text(PAGE_W/2, PAGE_H-3.35*inch, "THE PROBLEM vs THE SOLUTION: A Comparison of Pelvic Floor Dysfunction", font="Helvetica-Bold", size=26, color=GOLD_C, align="center")
text(PAGE_W/2, PAGE_H-3.85*inch, "Before / Without Structured Rehabilitation vs. After / With Structured Rehabilitation", font="Helvetica-Oblique", size=18, color=colors.white, align="center")
content_top = PAGE_H - 5.0*inch
# Left column header: THE PROBLEM
col_w = PAGE_W/2 - 0.6*inch
left_x = 0.4*inch
right_x = PAGE_W/2 + 0.2*inch
rect(left_x, content_top-0.9*inch, col_w, 0.9*inch, fill=colors.HexColor("#7A3B3B"))
text(left_x+col_w/2, content_top-0.6*inch, "THE PROBLEM", font="Helvetica-Bold", size=30, color=colors.white, align="center")
rect(right_x, content_top-0.9*inch, col_w, 0.9*inch, fill=TEAL_C)
text(right_x+col_w/2, content_top-0.6*inch, "THE SOLUTION", font="Helvetica-Bold", size=30, color=colors.white, align="center")
y = content_top - 1.3*inch
wrapped_text(left_x+0.2*inch, y, "Cervical cancer treatment (radical surgery, radiotherapy, or both) commonly damages pelvic "
"floor muscle, nerve, and connective tissue, producing a high and persistent burden of dysfunction that is "
"often under-recognised in routine follow-up.", col_w-0.4*inch, size=15, leading=19)
wrapped_text(right_x+0.2*inch, y, "Structured, supervised, multimodal physiotherapy - pelvic floor muscle training, "
"biofeedback, dilator therapy, and complex decongestive therapy - produces large, measurable improvements "
"across bladder, bowel, sexual, and lymphatic outcomes.", col_w-0.4*inch, size=15, leading=19)
# Chart images
img_y = y - 3.0*inch
c.drawImage(f"{ASSETS}/chart_prevalence.png", left_x+0.1*inch, img_y-3.3*inch, width=col_w-0.2*inch, height=(col_w-0.2*inch)*4.6/6.4, preserveAspectRatio=True, mask='auto')
c.drawImage(f"{ASSETS}/chart_lymphedema.png", right_x+0.1*inch, img_y-3.3*inch, width=col_w-0.2*inch, height=(col_w-0.2*inch)*4.6/6.0, preserveAspectRatio=True, mask='auto')
y2 = img_y - 3.3*inch - (col_w-0.2*inch)*4.6/6.4 - 0.5*inch
wrapped_text(left_x+0.2*inch, y2, "Vaginal shortening/stenosis, dyspareunia, chronic pelvic pain, bladder urgency, and "
"faecal urgency frequently coexist, and these effects can persist or worsen for one to two years after "
"treatment ends if unaddressed (progressive radiation fibrosis).", col_w-0.4*inch, size=13.5, leading=17)
c.drawImage(f"{ASSETS}/chart_effect_sizes.png", right_x+0.1*inch, y2-3.1*inch, width=col_w-0.2*inch, height=(col_w-0.2*inch)*4.6/6.0, preserveAspectRatio=True, mask='auto')
y3 = y2 - 3.5*inch
wrapped_text(left_x+0.2*inch, y3, "Vaginal dilator RCT (Martins et al. 2021, n=195): all treatment arms showed a "
"similar ~25% reduction in vaginal volume over 12 months, but women using dilators had significantly "
"lower severity and frequency of clinically graded stenosis than women using oestrogen, testosterone, "
"or lubricant alone.", col_w-0.4*inch, size=13.5, leading=17)
y4_right = y2 - 3.1*inch - (col_w-0.2*inch)*4.6/6.0 - 0.4*inch
wrapped_text(right_x+0.2*inch, y4_right, "Cyr et al. 2024 (20 studies, 11 RCTs): combined PFMT + education "
"outperformed single-modality approaches across bladder, bowel, vaginal, sexual, and pelvic floor "
"muscle outcomes - dosage, adherence, and clinical supervision were key determinants of benefit.",
col_w-0.4*inch, size=13.5, leading=17)
# Bottom takeaway banner
bottom_h = 3.0*inch
rect(0, 0, PAGE_W, bottom_h, fill=colors.HexColor(LIGHTBG))
rect(0, bottom_h-0.06*inch, PAGE_W, 0.06*inch, fill=GOLD_C)
text(PAGE_W/2, bottom_h-0.6*inch, "KEY TAKEAWAY", font="Helvetica-Bold", size=24, color=NAVY_C, align="center")
wrapped_text(1.0*inch, bottom_h-1.15*inch,
"Pelvic floor dysfunction after cervical cancer treatment is common (affecting roughly a third to nearly "
"half of survivors) but is largely preventable and treatable. Structured, supervised, multimodal pelvic "
"floor physiotherapy - started early and continued through survivorship - can substantially reduce "
"lymphedema, stenosis, and sexual/bladder/bowel dysfunction, and should be embedded as standard "
"survivorship care rather than left for patients to seek out themselves.",
PAGE_W-2.0*inch, font="Helvetica", size=15, color=NAVY_C, leading=19, align="left")
text(PAGE_W/2, 0.55*inch,
"Evidence sources: Shan et al. 2023 (PMID 36001098) - Brennen et al. 2020 (PMID 32367126) - "
"Cyr et al. 2024 (PMID 39177709) - Martins et al. 2021 (PMID 34112100) - Wang et al. 2020 (PMID 32107315)",
font="Helvetica-Oblique", size=11, color=GREY_C, align="center")
text(PAGE_W/2, 0.28*inch, "Rebuilding the Base: Pelvic Floor Rehabilitation in Cervical Cancer | Prepared for conference distribution",
font="Helvetica", size=10, color=GREY_C, align="center")
c.save()
print("Poster PDF saved.")
~/pfr-cervical-cancer-ppt/build_quickref_pathway.py
# -*- coding: utf-8 -*-
"""
Quick-Reference Clinical Pathway PDF (take-home, 2 pages) for conference participants.
"""
from reportlab.lib.pagesizes import letter
from reportlab.lib.units import inch
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT
from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, PageBreak, Table, TableStyle,
HRFlowable, ListFlowable, ListItem)
NAVY = colors.HexColor("#0B2E45"); TEAL = colors.HexColor("#0E7C7B"); GOLD = colors.HexColor("#C99A3E")
GREY = colors.HexColor("#555555"); RED = colors.HexColor("#8B2E2E"); LBG = colors.HexColor("#EAF5F5")
GBG = colors.HexColor("#FBF3E1"); RBG = colors.HexColor("#F7E7E7")
styles = getSampleStyleSheet()
styles.add(ParagraphStyle("Title2", fontName="Helvetica-Bold", fontSize=22, textColor=NAVY, alignment=TA_CENTER, spaceAfter=2))
styles.add(ParagraphStyle("Sub2", fontName="Helvetica", fontSize=12.5, textColor=TEAL, alignment=TA_CENTER, spaceAfter=10))
styles.add(ParagraphStyle("H", fontName="Helvetica-Bold", fontSize=13, textColor=colors.white, leftIndent=6, leading=17))
styles.add(ParagraphStyle("B", fontName="Helvetica", fontSize=9.3, textColor=colors.black, leading=12.5))
styles.add(ParagraphStyle("Bb", fontName="Helvetica-Bold", fontSize=9.3, textColor=NAVY, leading=12.5))
styles.add(ParagraphStyle("Small", fontName="Helvetica-Oblique", fontSize=8, textColor=GREY, leading=10.5))
story = []
story.append(Paragraph("REBUILDING THE BASE", styles["Title2"]))
story.append(Paragraph("Quick-Reference Clinical Pathway — Pelvic Floor Rehabilitation in Cervical Cancer", styles["Sub2"]))
def section_bar(text_, color=NAVY):
t = Table([[Paragraph(text_, styles["H"])]], colWidths=[7.0*inch])
t.setStyle(TableStyle([("BACKGROUND",(0,0),(-1,-1),color), ("TOPPADDING",(0,0),(-1,-1),5),
("BOTTOMPADDING",(0,0),(-1,-1),5), ("LEFTPADDING",(0,0),(-1,-1),8)]))
story.append(Spacer(1,8)); story.append(t); story.append(Spacer(1,4))
# ---------------- PATHWAY TIMELINE ----------------
section_bar("REHABILITATION TIMELINE", NAVY)
timeline_data = [
[Paragraph("<b>Pre-Treatment</b><br/>(Prehabilitation)", styles["Bb"]),
Paragraph("<b>Acute / On-Treatment</b>", styles["Bb"]),
Paragraph("<b>Early Survivorship</b><br/>3–12 months", styles["Bb"]),
Paragraph("<b>Long-Term Survivorship</b><br/>12+ months", styles["Bb"])],
[Paragraph("Baseline assessment; education on expected effects; teach PFM exercises before RT/surgery", styles["B"]),
Paragraph("Symptom monitoring; gentle PFM activation as tolerated; skin/tissue precautions; pain management", styles["B"]),
Paragraph("Structured PFMT ± biofeedback; dilator programme; scar/soft tissue mobilisation; bladder & bowel retraining", styles["B"]),
Paragraph("Maintenance training; sexual health rehab; self-management; ongoing lymphedema surveillance", styles["B"])],
]
tw = 1.75*inch
t = Table(timeline_data, colWidths=[tw]*4)
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), TEAL), ("TEXTCOLOR", (0,0), (-1,0), colors.white),
("BACKGROUND", (0,1), (-1,1), LBG),
("BOX", (0,0), (-1,-1), 0.75, GREY), ("INNERGRID", (0,0), (-1,-1), 0.5, colors.white),
("VALIGN", (0,0), (-1,-1), "TOP"), ("ALIGN",(0,0),(-1,0),"CENTER"),
("TOPPADDING",(0,0),(-1,-1),6), ("BOTTOMPADDING",(0,0),(-1,-1),6),
("LEFTPADDING",(0,0),(-1,-1),6), ("RIGHTPADDING",(0,0),(-1,-1),6),
]))
story.append(t)
# ---------------- ASSESSMENT CHECKLIST ----------------
section_bar("ASSESSMENT CHECKLIST", TEAL)
assess_rows = [
["Subjective", "Stage, surgery type (nerve-sparing?), RT dose/field, chemo, time since treatment; ICIQ, FSFI/sexual "
"function tool, condition-specific QoL, CTCAE stenosis grade; symptom + psychosocial screen; goal-setting."],
["Objective", "Visual inspection; digital vaginal/rectal exam with consent (Modified Oxford Scale 0-5); vaginal "
"length/calibre baseline; trigger points/tissue restriction; cough/Valsalva, sit-to-stand, bladder/bowel diary."],
["Instrumented", "Biofeedback/EMG: baseline tone + 3-5 MVCs, real-time feedback, track amplitude/hold time/fatigue index. "
"Vaginal calibration with graduated dilators + CTCAE grading. Limb circumference/volumetry for lymphedema."],
]
t2 = Table([["Domain","What to check"]] + assess_rows, colWidths=[1.3*inch, 5.7*inch])
t2.setStyle(TableStyle([
("BACKGROUND",(0,0),(-1,0),NAVY), ("TEXTCOLOR",(0,0),(-1,0),colors.white), ("FONTNAME",(0,0),(-1,0),"Helvetica-Bold"),
("FONTSIZE",(0,0),(-1,-1),9), ("BOX",(0,0),(-1,-1),0.75,GREY), ("INNERGRID",(0,0),(-1,-1),0.5,colors.grey),
("VALIGN",(0,0),(-1,-1),"TOP"), ("TOPPADDING",(0,0),(-1,-1),5), ("BOTTOMPADDING",(0,0),(-1,-1),5),
("FONTNAME",(0,1),(0,-1),"Helvetica-Bold"), ("TEXTCOLOR",(0,1),(0,-1),TEAL),
]))
story.append(t2)
# ---------------- RED FLAGS ----------------
section_bar("RED FLAGS — REFER PROMPTLY", RED)
red_items = [
"Continuous urine/faecal leakage per vagina → possible fistula → urgent medical referral",
"New/worsening pain, bleeding, or palpable mass → rule out recurrence → refer to oncology team",
"Severe stenosis/vaginal obliteration → may need medical/surgical input alongside physiotherapy",
"Unilateral limb swelling with pain/redness → rule out DVT before assuming lymphedema",
"Signs of significant psychological distress → refer to psycho-oncology/counselling",
]
lf = ListFlowable([ListItem(Paragraph(x, styles["B"]), leftIndent=10) for x in red_items], bulletType="bullet",
bulletColor=RED, start="circle")
tbox = Table([[lf]], colWidths=[7.0*inch])
tbox.setStyle(TableStyle([("BACKGROUND",(0,0),(-1,-1),RBG), ("BOX",(0,0),(-1,-1),0.75,RED),
("TOPPADDING",(0,0),(-1,-1),6), ("BOTTOMPADDING",(0,0),(-1,-1),6),
("LEFTPADDING",(0,0),(-1,-1),8), ("RIGHTPADDING",(0,0),(-1,-1),8)]))
story.append(tbox)
story.append(PageBreak())
# ---------------- INTERVENTION TOOLKIT ----------------
section_bar("INTERVENTION TOOLKIT — AT A GLANCE", NAVY)
toolkit_rows = [
["PFMT", "Slow holds 6-10s + fast contractions, ~8-12 reps x 3 sets/day (individualise); add 'the knack'; progress to "
"functional positions/activity."],
["Biofeedback", "Baseline recording → real-time visual feedback during practice → calibrated home programme. "
"Especially useful with reduced perineal sensation."],
["Electrical stimulation", "NMES for muscle re-education (weak/hard-to-isolate contraction); TENS for chronic "
"pelvic/perineal pain. Caution over recently irradiated tissue."],
["Vaginal dilators", "Start 2-4 wks post-RT once mucositis settles; comfortable size, lubricant, hold 5-10 min; "
"3+x/week, progress size; combine with PFM relaxation training."],
["Manual therapy", "Scar/soft-tissue mobilisation, myofascial release for guarding, connective tissue stretching. "
"Confirm oncology clearance before deeper/internal work."],
["Lymphedema care", "Complex decongestive therapy: manual lymphatic drainage + compression + exercise + skin care/"
"education. Start early, continue >=1 year."],
]
t3 = Table([["Tool","Key protocol points"]] + toolkit_rows, colWidths=[1.5*inch, 5.5*inch])
t3.setStyle(TableStyle([
("BACKGROUND",(0,0),(-1,0),TEAL), ("TEXTCOLOR",(0,0),(-1,0),colors.white), ("FONTNAME",(0,0),(-1,0),"Helvetica-Bold"),
("FONTSIZE",(0,0),(-1,-1),9), ("BOX",(0,0),(-1,-1),0.75,GREY), ("INNERGRID",(0,0),(-1,-1),0.5,colors.grey),
("VALIGN",(0,0),(-1,-1),"TOP"), ("TOPPADDING",(0,0),(-1,-1),5), ("BOTTOMPADDING",(0,0),(-1,-1),5),
("FONTNAME",(0,1),(0,-1),"Helvetica-Bold"), ("TEXTCOLOR",(0,1),(0,-1),NAVY),
]))
story.append(t3)
# ---------------- EVIDENCE ANCHORS ----------------
section_bar("EVIDENCE ANCHORS", GOLD)
ev_items = [
"<b>Shan et al. 2023</b> (PMID 36001098): Prevalence — FSD 45%, UI 34%, FI 11% in cervical cancer survivors.",
"<b>Brennen et al. 2020</b> (PMID 32367126): PFMT+counselling+yoga improved sexual function (SMD -0.96) & HRQoL (SMD 0.63); "
"dilators reduced vaginal complications (OR 0.37).",
"<b>Cyr et al. 2024</b> (PMID 39177709): Combined PFMT+education more effective than single-modality; dosage/adherence/"
"supervision matter.",
"<b>Martins et al. 2021</b> (PMID 34112100): Dilator users had lower stenosis severity at 1 year vs oestrogen/testosterone/"
"lubricant.",
"<b>Wang et al. 2020</b> (PMID 32107315): Complex decongestive therapy reduced lymphedema incidence 34.5% → 13.6% "
"(OR 0.30).",
"<b>Sacomori et al. 2020</b> (PMID 32601784): Prehab PFM education preserved strength/continence pre-RT (small pilot, "
"43% attrition).",
]
lf2 = ListFlowable([ListItem(Paragraph(x, styles["B"]), leftIndent=10) for x in ev_items], bulletType="bullet", bulletColor=GOLD)
story.append(lf2)
story.append(Spacer(1,10))
story.append(HRFlowable(width="100%", thickness=0.75, color=GREY))
story.append(Paragraph("Rebuilding the Base: Pelvic Floor Rehabilitation in Cervical Cancer — Conference Quick-Reference. "
"Adapt dosing/frequency to local protocols and individual patient presentation.", styles["Small"]))
def on_page(canvas_, doc):
canvas_.saveState()
canvas_.setFont("Helvetica", 8); canvas_.setFillColor(GREY)
canvas_.drawString(0.6*inch, 0.4*inch, "Rebuilding the Base - Quick-Reference Clinical Pathway")
canvas_.drawRightString(letter[0]-0.6*inch, 0.4*inch, f"Page {doc.page}")
canvas_.restoreState()
doc = SimpleDocTemplate("output/Rebuilding_the_Base_QuickReference_Pathway.pdf", pagesize=letter,
leftMargin=0.6*inch, rightMargin=0.6*inch, topMargin=0.5*inch, bottomMargin=0.5*inch,
title="Rebuilding the Base - Quick Reference Clinical Pathway")
doc.build(story, onFirstPage=on_page, onLaterPages=on_page)
print("Quick-reference pathway PDF saved.")
cd /tmp/workspace/pfr-cervical-cancer-ppt && python3 build_comparison_poster.py 2>&1 | tail -30
cd /tmp/workspace/pfr-cervical-cancer-ppt && python3 build_quickref_pathway.py 2>&1 | tail -30
cd /tmp/workspace/pfr-cervical-cancer-ppt && ls -la output/ assets/ && python3 -c " from pypdf import PdfReader for f in ['output/Rebuilding_the_Base_Comparison_Poster.pdf','output/Rebuilding_the_Base_QuickReference_Pathway.pdf']: r = PdfReader(f) print(f, 'pages:', len(r.pages)) "
~/pfr-cervical-cancer-ppt/build_pfmt_tracker.py
# -*- coding: utf-8 -*-
"""
Build an Excel tracker (.xlsx) for monitoring patient outcomes across a PFMT cohort,
for "Rebuilding the Base: Pelvic Floor Rehabilitation in Cervical Cancer".
Uses openpyxl. Zero formula errors. Data validation dropdowns, conditional formatting,
and a dashboard sheet with summary formulas and charts.
"""
import openpyxl
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment, Border, Side, NamedStyle
from openpyxl.worksheet.datavalidation import DataValidation
from openpyxl.utils import get_column_letter
from openpyxl.formatting.rule import CellIsRule, ColorScaleRule
from openpyxl.chart import BarChart, LineChart, Reference
from openpyxl.chart.axis import DateAxis
NAVY = "0B2E45"; TEAL = "0E7C7B"; GOLD = "C99A3E"; LBG = "EAF5F5"; GBG = "FBF3E1"; WHITE="FFFFFF"
wb = Workbook()
FONT = "Calibri"
def style_header(ws, row, ncols, fill=NAVY, font_color=WHITE, height=32):
ws.row_dimensions[row].height = height
for col in range(1, ncols+1):
cell = ws.cell(row=row, column=col)
cell.font = Font(name=FONT, bold=True, color=font_color, size=10)
cell.fill = PatternFill("solid", fgColor=fill)
cell.alignment = Alignment(horizontal="center", vertical="center", wrap_text=True)
cell.border = Border(*[Side(style="thin", color="AAAAAA")]*4)
thin = Border(*[Side(style="thin", color="D9D9D9")]*4)
# ============================================================ SHEET 1: INSTRUCTIONS
ws0 = wb.active
ws0.title = "Instructions"
ws0.sheet_view.showGridLines = False
ws0.column_dimensions["A"].width = 100
ws0["A1"] = "REBUILDING THE BASE - PFMT COHORT OUTCOMES TRACKER"
ws0["A1"].font = Font(name=FONT, bold=True, size=18, color=NAVY)
ws0["A2"] = "Pelvic Floor Rehabilitation in Cervical Cancer - Patient Outcomes Monitoring Workbook"
ws0["A2"].font = Font(name=FONT, italic=True, size=12, color=TEAL)
ws0["A4"] = "How to use this workbook"
ws0["A4"].font = Font(name=FONT, bold=True, size=13, color=NAVY)
instructions = [
"1. Patient Roster: add one row per patient at intake. Use de-identified Patient IDs only (e.g. CX-001) - do NOT "
"enter names, dates of birth, or other identifying data in this workbook.",
"2. Assessment Log: add one row every time a patient is assessed or reviewed (baseline + each follow-up visit). "
"Use the dropdown lists provided for Oxford Scale, CTCAE grade, and Lymphedema stage to keep data consistent.",
"3. Dashboard: updates automatically from the Assessment Log and Patient Roster using formulas - no manual "
"entry required. Review it before team meetings or for reporting service impact.",
"4. Data validation: dropdown lists are pre-built into the Patient Roster and Assessment Log columns marked "
"with (dropdown). Do not overwrite the validation lists on the 'Lookups' sheet.",
"5. Adding rows: insert new rows WITHIN the existing table range (not below it) so formulas and formatting "
"extend automatically. If in doubt, copy an existing blank-looking row's formatting down.",
"6. Outcome measures used: Modified Oxford Scale (0-5) for pelvic floor muscle strength; ICIQ-UI Short Form "
"score (0-21, higher = worse) for urinary incontinence; ICIQ-B or equivalent for bowel symptoms; CTCAE v5 "
"grade (0-4) for vaginal stenosis; limb circumference difference (cm) and lymphedema stage (0-3, ISL "
"classification) for lymphedema surveillance.",
"7. Confidentiality: this workbook should be stored on a secure, access-controlled drive in line with your "
"institution's data governance policy. Treat it as clinical audit data.",
]
r = 6
for line in instructions:
ws0.cell(row=r, column=1, value=line).font = Font(name=FONT, size=10.5, color="333333")
ws0.cell(row=r, column=1).alignment = Alignment(wrap_text=True, vertical="top")
ws0.row_dimensions[r].height = 32
r += 2
ws0.cell(row=r+1, column=1, value="Sheets in this workbook: Instructions | Patient Roster | Assessment Log | "
"Dashboard | Lookups").font = Font(name=FONT, italic=True, size=10, color=TEAL)
# ============================================================ SHEET: LOOKUPS (hidden support sheet)
wsL = wb.create_sheet("Lookups")
lookups = {
"A": ["FIGO Stage", "IA1","IA2","IB1","IB2","IB3","IIA","IIB","IIIA","IIIB","IIIC1","IIIC2","IVA","IVB"],
"B": ["Treatment Type", "Surgery only","Surgery + adjuvant RT/CRT","Chemoradiation (definitive)",
"Chemoradiation + brachytherapy","Radical trachelectomy","Other"],
"C": ["Referral Source", "Prehabilitation (pre-treatment)","Gynae-oncology follow-up","Self-referral",
"GP/Primary care","Other"],
"D": ["Status", "Active - in programme","Completed programme","Lost to follow-up","Discharged - goals met",
"Referred elsewhere"],
"E": ["Oxford Scale (0-5)", "0","1","2","3","4","5"],
"F": ["CTCAE Stenosis Grade (0-4)", "0","1","2","3","4"],
"G": ["Lymphedema Stage (0-3)", "0","1","2","3"],
"H": ["Visit Type", "Baseline/Prehab","On-treatment","3-month","6-month","12-month","Other follow-up"],
"I": ["Yes/No", "Yes","No"],
}
for col, vals in lookups.items():
wsL[f"{col}1"] = vals[0]
wsL[f"{col}1"].font = Font(bold=True, size=9, color=NAVY)
for i, v in enumerate(vals[1:], start=2):
wsL[f"{col}{i}"] = v
wsL.column_dimensions[col].width = 24
wb._sheets = [wb._sheets[0]] + [wb._sheets[-1]] + wb._sheets[1:-1] # keep order sane (not critical)
# ============================================================ SHEET: PATIENT ROSTER
ws1 = wb.create_sheet("Patient Roster")
roster_cols = ["Patient ID","FIGO Stage (dropdown)","Age","Treatment Type (dropdown)","Treatment End Date",
"Referral Source (dropdown)","Referral Date","PFMT Programme Start Date","Prehabilitation? (dropdown)",
"Status (dropdown)","Assigned Physiotherapist","Notes"]
for i, h in enumerate(roster_cols, start=1):
ws1.cell(row=1, column=i, value=h)
style_header(ws1, 1, len(roster_cols))
widths1 = [12,16,7,20,15,18,13,16,14,18,18,28]
for i,w in enumerate(widths1, start=1):
ws1.column_dimensions[get_column_letter(i)].width = w
# sample rows (3 example patients, clearly marked as illustrative)
sample_roster = [
["CX-001","IB1",45,"Surgery only","2026-03-10","Gynae-oncology follow-up","2026-03-24","2026-04-07","No","Active - in programme","A. Smith","Example row - replace with real patient data"],
["CX-002","IIB",52,"Chemoradiation + brachytherapy","2026-01-15","Gynae-oncology follow-up","2026-05-20","2026-05-27","No","Active - in programme","A. Smith","Example row - replace with real patient data"],
["CX-003","IIIB",61,"Surgery + adjuvant RT/CRT","2023-06-01","Self-referral","2026-06-10","2026-06-17","No","Active - in programme","J. Doe","Example row - replace with real patient data"],
]
for r_i, row in enumerate(sample_roster, start=2):
for c_i, val in enumerate(row, start=1):
cell = ws1.cell(row=r_i, column=c_i, value=val)
cell.border = thin
cell.font = Font(name=FONT, size=10)
if c_i in (5,7,8):
cell.number_format = "yyyy-mm-dd"
# extend a blank formatted range for future entries
for r_i in range(5, 60):
for c_i in range(1, len(roster_cols)+1):
ws1.cell(row=r_i, column=c_i).border = thin
ws1.cell(row=r_i, column=c_i).font = Font(name=FONT, size=10)
if c_i in (5,7,8):
ws1.cell(row=r_i, column=c_i).number_format = "yyyy-mm-dd"
ws1.freeze_panes = "A2"
dv_stage = DataValidation(type="list", formula1="=Lookups!$A$2:$A$14", allow_blank=True)
dv_treat = DataValidation(type="list", formula1="=Lookups!$B$2:$B$7", allow_blank=True)
dv_ref = DataValidation(type="list", formula1="=Lookups!$C$2:$C$6", allow_blank=True)
dv_yn = DataValidation(type="list", formula1="=Lookups!$I$2:$I$3", allow_blank=True)
dv_status = DataValidation(type="list", formula1="=Lookups!$D$2:$D$6", allow_blank=True)
for dv in (dv_stage, dv_treat, dv_ref, dv_yn, dv_status):
ws1.add_data_validation(dv)
dv_stage.add("B2:B60"); dv_treat.add("D2:D60"); dv_ref.add("F2:F60"); dv_yn.add("I2:I60"); dv_status.add("J2:J60")
ws1.sheet_view.showGridLines = False
# ============================================================ SHEET: ASSESSMENT LOG
ws2 = wb.create_sheet("Assessment Log")
log_cols = ["Patient ID","Assessment Date","Visit Type (dropdown)","PFM Strength - Oxford Scale (dropdown)",
"ICIQ-UI Score (0-21)","Bowel Symptom Score (0-21)","Vaginal Length (cm)","Vaginal Calibre (finger-widths)",
"CTCAE Stenosis Grade (dropdown)","Dilator Adherence (dropdown Yes/No)","Right Limb Circumference (cm)",
"Left Limb Circumference (cm)","Limb Circumference Difference (cm)","Lymphedema Stage (dropdown)",
"Sexual Function Score (e.g. FSFI)","Continent? (dropdown Yes/No)","Clinician","Notes"]
for i, h in enumerate(log_cols, start=1):
ws2.cell(row=1, column=i, value=h)
style_header(ws2, 1, len(log_cols))
widths2 = [11,14,15,20,14,16,14,17,20,18,18,17,20,18,18,16,14,26]
for i,w in enumerate(widths2, start=1):
ws2.column_dimensions[get_column_letter(i)].width = w
sample_log = [
["CX-001","2026-04-07","Baseline/Prehab",2,14,3,7.0,2,1,"Yes",34.0,34.0,None,0,None,"No","A. Smith","Baseline assessment"],
["CX-001","2026-07-07","3-month",4,4,1,7.5,3,1,"Yes",34.5,34.2,None,0,None,"Yes","A. Smith","Good progress"],
["CX-002","2026-05-27","Baseline/Prehab",2,10,2,5.5,1,3,"No",35.0,35.0,None,0,None,"No","A. Smith","Reluctant to start dilators"],
["CX-002","2026-08-27","3-month",3,6,1,6.5,2,2,"Yes",35.1,35.2,None,0,None,"Yes","A. Smith","Improving with counselling"],
["CX-003","2026-06-17","Baseline/Prehab",4,3,1,7.0,3,0,"Yes",39.5,42.5,None,2,None,"Yes","J. Doe","Chronic lymphedema present"],
]
for r_i, row in enumerate(sample_log, start=2):
for c_i, val in enumerate(row, start=1):
cell = ws2.cell(row=r_i, column=c_i, value=val)
cell.border = thin
cell.font = Font(name=FONT, size=10)
if c_i == 2:
cell.number_format = "yyyy-mm-dd"
# circumference difference formula = |right - left|
ws2.cell(row=r_i, column=13, value=f"=IF(AND(K{r_i}<>\"\",L{r_i}<>\"\"),ABS(K{r_i}-L{r_i}),\"\")")
ws2.cell(row=r_i, column=13).font = Font(name=FONT, size=10, color="1F5C5C")
ws2.cell(row=r_i, column=13).border = thin
for r_i in range(len(sample_log)+2, 200):
for c_i in range(1, len(log_cols)+1):
ws2.cell(row=r_i, column=c_i).border = thin
ws2.cell(row=r_i, column=c_i).font = Font(name=FONT, size=10)
if c_i == 2:
ws2.cell(row=r_i, column=c_i).number_format = "yyyy-mm-dd"
ws2.cell(row=r_i, column=13, value=f"=IF(AND(K{r_i}<>\"\",L{r_i}<>\"\"),ABS(K{r_i}-L{r_i}),\"\")")
ws2.cell(row=r_i, column=13).font = Font(name=FONT, size=10, color="1F5C5C")
ws2.cell(row=r_i, column=13).border = thin
ws2.freeze_panes = "A2"
dv_visit = DataValidation(type="list", formula1="=Lookups!$H$2:$H$7", allow_blank=True)
dv_oxford = DataValidation(type="list", formula1="=Lookups!$E$2:$E$7", allow_blank=True)
dv_ctcae = DataValidation(type="list", formula1="=Lookups!$F$2:$F$6", allow_blank=True)
dv_lymph = DataValidation(type="list", formula1="=Lookups!$G$2:$G$5", allow_blank=True)
dv_yn2 = DataValidation(type="list", formula1="=Lookups!$I$2:$I$3", allow_blank=True)
dv_yn3 = DataValidation(type="list", formula1="=Lookups!$I$2:$I$3", allow_blank=True)
for dv in (dv_visit, dv_oxford, dv_ctcae, dv_lymph, dv_yn2, dv_yn3):
ws2.add_data_validation(dv)
dv_visit.add("C2:C200"); dv_oxford.add("D2:D200"); dv_ctcae.add("I2:I200"); dv_lymph.add("N2:N200")
dv_yn2.add("J2:J200"); dv_yn3.add("P2:P200")
# conditional formatting: Oxford scale color scale (red low - green high)
ws2.conditional_formatting.add("D2:D200",
ColorScaleRule(start_type="num", start_value=0, start_color="F2A19E",
mid_type="num", mid_value=2.5, mid_color="FCE9A8",
end_type="num", end_value=5, end_color="A9D8B8"))
# ICIQ-UI: higher = worse -> red high
ws2.conditional_formatting.add("E2:E200",
ColorScaleRule(start_type="num", start_value=0, start_color="A9D8B8",
mid_type="num", mid_value=10, mid_color="FCE9A8",
end_type="num", end_value=21, end_color="F2A19E"))
# CTCAE grade: higher = worse
ws2.conditional_formatting.add("I2:I200",
ColorScaleRule(start_type="num", start_value=0, start_color="A9D8B8",
mid_type="num", mid_value=2, mid_color="FCE9A8",
end_type="num", end_value=4, end_color="F2A19E"))
# lymphedema stage
ws2.conditional_formatting.add("N2:N200",
ColorScaleRule(start_type="num", start_value=0, start_color="A9D8B8",
mid_type="num", mid_value=1.5, mid_color="FCE9A8",
end_type="num", end_value=3, end_color="F2A19E"))
ws2.sheet_view.showGridLines = False
# ============================================================ SHEET: DASHBOARD
ws3 = wb.create_sheet("Dashboard")
ws3.sheet_view.showGridLines = False
ws3.column_dimensions["A"].width = 3
for col, w in zip("BCDEFGHIJ", [30,14,14,14,14,14,14,14,14]):
ws3.column_dimensions[col].width = w
ws3.merge_cells("B2:J2")
ws3["B2"] = "REBUILDING THE BASE - COHORT OUTCOMES DASHBOARD"
ws3["B2"].font = Font(name=FONT, bold=True, size=18, color=NAVY)
ws3.merge_cells("B3:J3")
ws3["B3"] = "Live summary - calculated automatically from Patient Roster and Assessment Log"
ws3["B3"].font = Font(name=FONT, italic=True, size=11, color=TEAL)
def kpi_box(ws, cell, label, formula, number_format="0.0", fill=LBG):
ws[cell] = label
ws[cell].font = Font(name=FONT, bold=True, size=10, color=NAVY)
ws[cell].alignment = Alignment(wrap_text=True, vertical="center")
below = f"{cell[0]}{int(cell[1:])+1}"
ws[below] = formula
ws[below].font = Font(name=FONT, bold=True, size=20, color=TEAL)
ws[below].number_format = number_format
for c in (cell, below):
ws[c].fill = PatternFill("solid", fgColor=fill)
ws[c].border = Border(*[Side(style="thin", color="AAAAAA")]*4)
ws.row_dimensions[int(cell[1:])].height = 30
ws.row_dimensions[int(cell[1:])+1].height = 32
kpi_box(ws3, "B5", "Total patients enrolled", "=COUNTA('Patient Roster'!A2:A60)-COUNTBLANK('Patient Roster'!A2:A60)", "0")
kpi_box(ws3, "D5", "Active in programme", "=COUNTIF('Patient Roster'!J2:J60,\"Active - in programme\")", "0")
kpi_box(ws3, "F5", "Total assessments logged", "=COUNTA('Assessment Log'!A2:A200)-COUNTBLANK('Assessment Log'!A2:A200)", "0")
kpi_box(ws3, "H5", "Mean Oxford Scale (all visits)", "=IFERROR(AVERAGE('Assessment Log'!D2:D200),0)", "0.0")
kpi_box(ws3, "B8", "Mean ICIQ-UI score (all visits)", "=IFERROR(AVERAGE('Assessment Log'!E2:E200),0)", "0.0", GBG)
kpi_box(ws3, "D8", "% visits reporting continence", "=IFERROR(COUNTIF('Assessment Log'!P2:P200,\"Yes\")/COUNTA('Assessment Log'!P2:P200),0)", "0.0%", GBG)
kpi_box(ws3, "F8", "% visits with dilator adherence", "=IFERROR(COUNTIF('Assessment Log'!J2:J200,\"Yes\")/(COUNTIF('Assessment Log'!J2:J200,\"Yes\")+COUNTIF('Assessment Log'!J2:J200,\"No\")),0)", "0.0%", GBG)
kpi_box(ws3, "H8", "Mean limb circumference diff (cm)", "=IFERROR(AVERAGE('Assessment Log'!M2:M200),0)", "0.0", GBG)
# Oxford strength by visit type (baseline vs 3-month) — small pivot-style table
ws3["B12"] = "Mean PFM Strength (Oxford Scale) by Visit Type"
ws3["B12"].font = Font(name=FONT, bold=True, size=12, color=NAVY)
visit_types = ["Baseline/Prehab","On-treatment","3-month","6-month","12-month"]
ws3["B13"] = "Visit Type"; ws3["C13"] = "Mean Oxford Scale"; ws3["D13"] = "Mean ICIQ-UI"
for c in ("B13","C13","D13"):
ws3[c].font = Font(name=FONT, bold=True, size=10, color="FFFFFF")
ws3[c].fill = PatternFill("solid", fgColor=NAVY)
ws3[c].alignment = Alignment(horizontal="center")
for i, vt in enumerate(visit_types, start=14):
ws3.cell(row=i, column=2, value=vt).font = Font(name=FONT, size=10)
ws3.cell(row=i, column=3, value=f'=IFERROR(AVERAGEIF(\'Assessment Log\'!$C$2:$C$200,B{i},\'Assessment Log\'!$D$2:$D$200),"")')
ws3.cell(row=i, column=4, value=f'=IFERROR(AVERAGEIF(\'Assessment Log\'!$C$2:$C$200,B{i},\'Assessment Log\'!$E$2:$E$200),"")')
ws3.cell(row=i, column=3).number_format = "0.0"; ws3.cell(row=i, column=4).number_format = "0.0"
for c in (2,3,4):
ws3.cell(row=i, column=c).border = thin
# Chart: Oxford scale + ICIQ-UI by visit stage
chart1 = BarChart()
chart1.title = "Mean PFM Strength & ICIQ-UI by Visit Stage"
chart1.y_axis.title = "Score"
chart1.x_axis.title = "Visit Type"
data = Reference(ws3, min_col=3, max_col=4, min_row=13, max_row=13+len(visit_types))
cats = Reference(ws3, min_col=2, min_row=14, max_row=13+len(visit_types))
chart1.add_data(data, titles_from_data=True)
chart1.set_categories(cats)
chart1.height = 8; chart1.width = 16
ws3.add_chart(chart1, "F12")
# Status breakdown
ws3["B22"] = "Patient Status Breakdown"
ws3["B22"].font = Font(name=FONT, bold=True, size=12, color=NAVY)
statuses = ["Active - in programme","Completed programme","Lost to follow-up","Discharged - goals met","Referred elsewhere"]
ws3["B23"] = "Status"; ws3["C23"] = "Count"
for c in ("B23","C23"):
ws3[c].font = Font(name=FONT, bold=True, size=10, color="FFFFFF")
ws3[c].fill = PatternFill("solid", fgColor=TEAL)
ws3[c].alignment = Alignment(horizontal="center")
for i, st in enumerate(statuses, start=24):
ws3.cell(row=i, column=2, value=st).font = Font(name=FONT, size=10)
ws3.cell(row=i, column=3, value=f"=COUNTIF('Patient Roster'!$J$2:$J$60,B{i})")
for c in (2,3):
ws3.cell(row=i, column=c).border = thin
chart2 = BarChart()
chart2.type = "col"
chart2.title = "Patients by Status"
data2 = Reference(ws3, min_col=3, min_row=23, max_row=23+len(statuses))
cats2 = Reference(ws3, min_col=2, min_row=24, max_row=23+len(statuses))
chart2.add_data(data2, titles_from_data=True)
chart2.set_categories(cats2)
chart2.height = 8; chart2.width = 16
ws3.add_chart(chart2, "F22")
ws3["B32"] = "Notes: 'Mean' figures blank as (0) when no data yet entered - add assessments in the Assessment Log to populate. " \
"This dashboard is illustrative; adapt KPI thresholds to your own service targets."
ws3["B32"].font = Font(name=FONT, italic=True, size=9, color="777777")
ws3.merge_cells("B32:J32")
ws3["B32"].alignment = Alignment(wrap_text=True)
# reorder sheets: Instructions, Patient Roster, Assessment Log, Dashboard, Lookups
order = ["Instructions","Patient Roster","Assessment Log","Dashboard","Lookups"]
wb._sheets = [wb[name] for name in order]
wb.active = 0
wb.save("output/Rebuilding_the_Base_PFMT_Outcomes_Tracker.xlsx")
print("Excel tracker saved.")
cd /tmp/workspace/pfr-cervical-cancer-ppt && python3 build_pfmt_tracker.py 2>&1 | tail -40
cd /tmp/workspace/pfr-cervical-cancer-ppt && python3 -c " import openpyxl wb = openpyxl.load_workbook('output/Rebuilding_the_Base_PFMT_Outcomes_Tracker.xlsx') print('Sheets:', wb.sheetnames) for name in wb.sheetnames: ws = wb[name] print(name, ws.dimensions) " ls -la output/
Rebuilding the Base QuickReference Pathway
PDF Document · PDF
Rebuilding the Base Comparison Poster
PDF Document · PDF
Rebuilding the Base PFMT Outcomes Tracker
Spreadsheet · XLSX
/tmp/workspace/pfr-cervical-cancer-ppt/output/. Let me know if you'd like the poster resized for a different print format, the tracker extended with additional outcome measures, or the PubMed findings folded directly into a specific slide in the deck.An error occurred (ValidationException) when calling the InvokeCodeInterpreter operation: Code interpreter session 01M0TK9JJNXRC8FSK0C2F2BCGV is not active
We encountered an error while processing your request. Please try again or reach out to us for help.
Search for images of pelvic anatomy & treatment techniques to add to the presentation
pelvic floor muscle anatomy diagram levator ani

A composite image for medical education comprising a diagnostic radiological image (MRI) on the left and a corresponding anatomical diagram on the right, illustrating the pelvic floor and anal canal. The MRI shows a coronal view of the anorectal region, highlighting the muscular layers of the pelvic outlet. The anatomical diagram provides a schematic representation of the same structures for clarity. It labels the levator ani as a broad, striated muscle group superiorly that forms the pelvic diaphragm and descends to blend with the longitudinal muscle layer of the anal canal. The external sphincter is depicted as a distinct, thicker muscular cuff surrounding the distal portion of the anal canal, located inferior to the levator ani's main attachment points. This visual comparison is designed to teach the spatial relationships between the pelvic floor muscles and the terminal digestive tract, emphasizing the functional anatomy required for fecal continence. The educational focus is on identifying the levator ani and external sphincter during pelvic imaging and understanding their relative morphology.

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.

Educational medical composite depicting the anatomy and surgical context of a high horseshoe anal fistula (HHAF). Panel (a) is an anatomical diagram of the perianal region showing external landmarks including the gluteus maximus, anococcygeal body, and the subcutaneous/superficial external anal sphincters, with a dotted line delineating the HHAF scope. Panel (b) presents a sagittal pelvic diagram illustrating the internal anal sphincter, levator ani muscle, and the deep, superficial, and subcutaneous external sphincters. It highlights the deep intersphincteric space (DPIS) and deep postanal space (DPAS) in relation to the fistula tract. Panel (c) is a clinical photograph showing the patient in a prone jackknife position for surgical exposure. Panel (d) provides a close-up clinical photograph of the preoperative surgical field, where a green-shaded overlay identifies the external manifestation of the HHAF. This visual resource is designed for proctological surgical planning and provides clear anatomical orientation of complex perianal fistulas relative to the pelvic floor musculature.
radical hysterectomy surgical technique nerve-sparing parametrectomy
vaginal brachytherapy applicator placement cervical cancer

This composite diagnostic image demonstrates radiotherapy planning for cervical or vaginal cancer using a vaginal applicator and Foley catheter. Image (b) shows a fused sagittal planning CT scan illustrating the longitudinal displacement of the Foley catheter balloon under two different tension levels: standard tension (Position A, green arrow) and extra tension (Position B, red arrow), which shifts the balloon caudally. Image (a) provides a coronal view where a blue arrow identifies the bladder reference point at the center of the catheter balloon, used for ICRU 38 dose reporting. Image (c) presents a Digitally Reconstructed Radiograph (DRR) derived from the CT scan at standard tension, visualizing the high-density vaginal applicator (highlighted in green) in relation to the pelvic skeletal anatomy. This clinical imaging series is used to evaluate the robustness of dose parameters and the spatial stability of organs at risk, specifically the bladder, during brachytherapy applicator placement.

This composite educational graphic illustrates the development and validation of a patient-specific 3D-printed vaginal template for gynecological brachytherapy. (A) A 3D digital model showing the contoured vaginal space in red, integrated with green cylindrical tracks for interstitial needles and a central tandem. (B) A wireframe mesh visualization of the template design, highlighting internal channels for Direction Modulated Brachytherapy (DMBT) and needle placement. (C) A clinical photograph of the physical 3D-printed template, manufactured from transparent medical-grade photopolymer, with the DMBT tandem and interstitial needles inserted. A ruler is included for scale. (D) Radiologic image registration panels showing the 3D-printed applicator (highlighted in green) overlaid on planning CT scans in axial, coronal, and sagittal planes to confirm geometric accuracy and anatomical fit. The material demonstrates the workflow for improving dose conformality in treating locally advanced cervical cancer using personalized, intensity-modulated brachytherapy applicators.

This diagnostic image displays two axial CT scan slices (A and B) of the female pelvic region, illustrating the placement of interstitial brachytherapy equipment for the treatment of cervical cancer. The images demonstrate the anatomical context of the central pelvis, including the pelvic girdle bones, gluteal musculature, and internal viscera. White arrows in both panels highlight numerous hyperdense (bright white), small, metallic points distributed within the soft tissue of the vaginal vault and cervical region. These represent interstitial needles and a Kelowna applicator used to deliver targeted radiation doses. The needles are arranged in a structured array to conform to the residual tumor volume. Panel A shows a slightly higher axial section than Panel B, both emphasizing the proximity of the radioactive source delivery system to the bladder (anteriorly) and rectum (posteriorly), which are critical organs at risk during gynecological brachytherapy planning.

This diagnostic imaging set consists of two orthogonal pelvic radiographs, anterior-posterior (A) and lateral (B), demonstrating the setup for two-dimensional intracavitary brachytherapy (2D-ICBT) for cervical cancer. The images show radiopaque intracavitary applicators (tandem and ovoids) centrally positioned within the pelvic cavity. Red arrows in both views indicate the placement of vaginal packing, which is used to increase the distance between the radiation source in the uterus and the adjacent organs at risk (OAR), specifically the bladder anteriorly and the rectum posteriorly. In the lateral view (B), a yellow arrow identifies a rectal dosimeter, a radio-opaque marker string used to monitor real-time radiation exposure to the rectal mucosa. The radiographs serve as a clinical tool for 2D treatment planning, allowing for the verification of applicator geometry relative to pelvic bony landmarks and the positioning of protective packing to minimize the risk of late radiation-induced complications such as vesicovaginal or rectovaginal fistulas.
vaginal dilator set for radiotherapy vaginal stenosis
manual lymphatic drainage massage leg lymphedema treatment
biofeedback pelvic floor perineometer device therapy
lymphedema compression stocking leg bandaging
female pelvis cross section anatomy uterus bladder rectum

Summary : This is a labeled anatomical illustration showing a sagittal (side) cross-section of the female pelvis, highlighting the spatial relationships between the urethra, bladder, vagina, uterus, and rectum.

Summary : This figure illustrates the anatomical differences in lower urogenital anatomy between mild and severe cases of congenital adrenal hyperplasia (CAH), focusing on the virilization of normal female genitalia. Two cross-sectional diagrams compare "low confluence" and "high confluence" of the vagina and urethra.

This axial Contrast-Enhanced Computed Tomography (CECT) scan depicts a cross-section of the female pelvis at the level of the internal genitalia. Key anatomical landmarks include the pelvic bones (hip bones and sacrum) appearing as high-attenuation, hyperdense structures. Centrally, the urinary bladder is visible as a moderately distended, fluid-filled organ with low-to-intermediate attenuation. Positioned immediately posterior to the bladder is the uterus, which presents as a well-defined, ovoid soft-tissue structure with homogenous density and normal enhancement, showing no evidence of focal masses or structural distortion. Posterior to the uterus, the rectum or distal sigmoid colon is visible containing pockets of air (hypodense/black areas). The surrounding musculature and pelvic fat planes are well-preserved. Clinically, this image serves to demonstrate the normal appearance and spatial orientation of the internal pelvic organs in a 42-year-old patient, contrasting with potential pathologies such as ovarian cysts or mesenteric lesions mentioned in the context. The educational focus is on identifying normal pelvic anatomy in cross-sectional imaging.

This diagnostic imaging set consists of three T2-weighted magnetic resonance imaging (MRI) views of the female pelvis, illustrating the anatomy of the uterus (indicated by white arrows) following hormonal management. Panel (a) presents a sagittal view, demonstrating the uterus in a pear-shaped longitudinal orientation, positioned posterior to the urinary bladder and anterior to the rectum. Panel (b) provides an axial cross-section, showing the transverse width of the uterine body and its relationship to the lateral pelvic walls and musculature. Panel (c) displays a coronal view, highlighting the frontal plane of the uterus and its relative position within the pelvic cavity. The images show a uterus with intermediate signal intensity and relatively small dimensions (approximately 4.9 x 1.7 x 3.1 cm), which is a significant finding in the context of long-term estrogen replacement therapy. These views collectively provide a comprehensive assessment of uterine morphology, signal characteristics, and spatial orientation (anteversion/retroversion) relative to adjacent pelvic viscera.
pelvic lymphadenectomy lymph node dissection diagram

This composite educational image illustrates the methodology for pelvic lymph node (LN) mapping in patients with muscle-invasive bladder cancer (MIBC). (A) Shows a SPECT-CT fusion image demonstrating the anatomical localization of radioactive sentinel lymph nodes (SLNs) within the pelvic cavity. (B) A schematic diagram of the pelvic anatomy and iliac vessels serves as a template, where two identified SLNs are mapped as reddish, irregular masses on one side. (C) Displays macroscopic lymphadenectomy specimens (resected fatty tissue and lymph nodes) placed onto the pelvic template and labeled by their specific anatomical drainage regions, including common iliac, external iliac, internal iliac, obturator, presacral, and Marcille’s fossa. (D) Shows the full range of resected pelvic lymphadenectomy specimens grouped by anatomical region. This figure demonstrates the workflow from nuclear imaging localization to surgical resection (super-extended pelvic lymph node dissection) and pathological mapping, highlighting the precision required for oncological staging and treatment planning.

An anatomical diagram illustrating the surgical boundaries and classification of Pelvic Lymph Node Dissection (PLND) templates. The illustration depicts the major vascular and nervous structures of the pelvic cavity, including the common iliac artery and vein, external and internal iliac vessels, the obturator nerve, and the ureter. The diagram uses color-coded regions to define four levels of dissection: 1) Limited PLND (red, Area 1) focusing on the external iliac artery and vein; 2) Standard PLND (blue, Areas 1–3) extending to include the obturator nerve and internal iliac artery; 3) Extended PLND (green, Areas 1–4) incorporating the region where the ureter crosses the common iliac artery; and 4) Superextended PLND (purple, Areas 1–5) reaching the common iliac bifurcation. This educational visual is designed to standardize surgical nomenclature for lymphadenectomy in bladder and prostate cancer staging, clearly identifying the anatomical landmarks required for each surgical approach (antegade vs. retrograde).

Summary : This flowchart outlines the clinical management pathway for non-metastatic muscle invasive bladder cancer, detailing staging, multidisciplinary approaches, treatment options (including bladder preservation, chemotherapy, surgery), and post-treatment surveillance or palliative care.
cd /tmp/workspace/pfr-cervical-cancer-ppt && python3 -c " from pptx import Presentation from pptx.util import Emu prs = Presentation('output/Rebuilding_the_Base_2hr_Workshop.pptx') print('slide size', prs.slide_width, prs.slide_height) for i, s in enumerate(prs.slides): title = '' pics = 0 for shp in s.shapes: if shp.has_text_frame and shp.text_frame.text and not title: title = shp.text_frame.text.split(chr(10))[0][:70] if shp.shape_type == 13: pics += 1 print(i, '|', title, '| pics:', pics) "
cd /tmp/workspace/pfr-cervical-cancer-ppt && python3 -c " from pptx import Presentation prs = Presentation('output/Rebuilding_the_Base_2hr_Workshop.pptx') target = [5,6,7,8,9,10,11,12,13,14,32,33,34,35,36,37,38,39] for i in target: s = prs.slides[i] texts = [] for shp in s.shapes: if shp.has_text_frame and shp.text_frame.text: texts.append(shp.text_frame.text[:90].replace(chr(10),' / ')) print('---', i, '---') for t in texts[:3]: print(' ', t) "
cd /tmp/workspace/pfr-cervical-cancer-ppt/assets && \ curl -sL -o plnd_diagram.jpg "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_1f828ece90d2e53686e81ff1c17264c5df5596f6fcd794961160d0c43621b499.jpg" && \ curl -sL -o pelvis_sagittal.png "https://cdn.orris.care/cdss_images/GLGCA_21892_1763336687101_32f67122-95a5-4f6d-8b4b-86bdc65d5dce.png" && \ curl -sL -o levator_ani_composite.jpg "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_378faedfa738a6fe976b8db019ba5299aeea0fde9efe0d516bde304a26c9c77b.jpg" && \ curl -sL -o cdt_bandaging.jpg "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_1fac250e6f0d26a8c784635d86212f35c4ed1f4136c0d21c4e29dfe3dda625a3.jpg" && \ curl -sL -o brachytherapy_tandem_ovoids.jpg "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_15a102a74dcd476cbb4ad0ce89c0eb1235ead2f34bf34bec8129097e27abe5d4.jpg" && \ ls -la *.jpg *.png && file plnd_diagram.jpg pelvis_sagittal.png levator_ani_composite.jpg cdt_bandaging.jpg brachytherapy_tandem_ovoids.jpg
cd /tmp/workspace/pfr-cervical-cancer-ppt/assets && md5sum levator_ani_anal.jpg levator_ani_composite.jpg
~/pfr-cervical-cancer-ppt/insert_new_images.py
# -*- coding: utf-8 -*-
"""
Insert 5 new pelvic anatomy & treatment-technique images into the existing 51-slide deck,
at slides that currently have no (or only one) supporting image. Adds a right-aligned
picture with a thin frame + small italic caption, sized to avoid overlapping existing text.
Does not touch any other slide content.
"""
from pptx import Presentation
from pptx.util import Inches, Pt, Emu
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN
from pptx.enum.shapes import MSO_SHAPE
SRC = "output/Rebuilding_the_Base_2hr_Workshop.pptx"
NAVY = RGBColor(0x0B, 0x2E, 0x45)
GREY = RGBColor(0x55, 0x55, 0x55)
prs = Presentation(SRC)
SLIDE_W, SLIDE_H = prs.slide_width, prs.slide_height
# (slide_index, image_path, caption, position) position = "right" places image in right margin column
placements = [
(5, "assets/plnd_diagram.jpg",
"Pelvic lymph node dissection templates (limited/standard/extended/superextended) - "
"greater dissection extent raises lymphedema & nerve-injury risk.", "right"),
(8, "assets/pelvis_sagittal.png",
"Sagittal view of the female pelvis: urethra, bladder, vagina, uterus, rectum.", "right"),
(12, "assets/levator_ani_composite.jpg",
"Levator ani & external anal sphincter - key structures at risk during radical pelvic surgery.", "right"),
(6, "assets/brachytherapy_tandem_ovoids.jpg",
"2D intracavitary brachytherapy: tandem & ovoids applicator with vaginal packing to protect "
"bladder/rectum.", "right"),
(38, "assets/cdt_bandaging.jpg",
"Multilayer compression bandaging - a core component of Complex Decongestive Therapy.", "right"),
]
def add_image_with_caption(slide, img_path, caption, area_left, area_top, area_w, area_h):
from PIL import Image
im = Image.open(img_path)
iw, ih = im.size
aspect = iw / ih
# reserve bottom strip for caption
cap_h = Inches(0.55)
img_area_h = area_h - cap_h
# fit image within area preserving aspect ratio
target_w = area_w
target_h = Emu(int(target_w / aspect))
if target_h > img_area_h:
target_h = img_area_h
target_w = Emu(int(target_h * aspect))
img_left = area_left + int((area_w - target_w) / 2)
img_top = area_top
pic = slide.shapes.add_picture(img_path, img_left, img_top, width=target_w, height=target_h)
# thin frame
pic.line.color.rgb = NAVY
pic.line.width = Pt(1.25)
# caption textbox
cap_top = img_top + target_height if False else img_top + pic.height + Pt(4)
tb = slide.shapes.add_textbox(area_left, cap_top, area_w, cap_h)
tf = tb.text_frame
tf.word_wrap = True
p = tf.paragraphs[0]
p.alignment = PP_ALIGN.LEFT
run = p.add_run()
run.text = caption
run.font.size = Pt(9)
run.font.italic = True
run.font.color.rgb = GREY
run.font.name = "Calibri"
count_ok = 0
for idx, img, cap, pos in placements:
slide = prs.slides[idx]
# right-side column area: reserve right ~34% of slide width, leave margin top/bottom
area_w = int(SLIDE_W * 0.32)
area_left = SLIDE_W - area_w - Inches(0.4)
area_top = Inches(1.75)
area_h = SLIDE_H - Inches(2.4)
add_image_with_caption(slide, img, cap, area_left, area_top, area_w, area_h)
count_ok += 1
print(f"Added image to slide {idx}: {img}")
prs.save(SRC)
print(f"Done. {count_ok} images inserted and saved to {SRC}")
cd /tmp/workspace/pfr-cervical-cancer-ppt/assets && curl -sL -o levator_puborectalis_mri.jpg "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_4f3eba852a08414d1c411b65d902ccce640867cadf7d0008bce744477e4368e2.jpg" && md5sum levator_puborectalis_mri.jpg levator_ani_anal.jpg && file levator_puborectalis_mri.jpg
~/pfr-cervical-cancer-ppt/insert_new_images.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/pfr-cervical-cancer-ppt/insert_new_images.py'
~/pfr-cervical-cancer-ppt/insert_new_images.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/pfr-cervical-cancer-ppt/insert_new_images.py'
cd /tmp/workspace/pfr-cervical-cancer-ppt && python3 insert_new_images.py 2>&1 | tail -30
cd /tmp/workspace/pfr-cervical-cancer-ppt && python3 -c " from pptx import Presentation prs = Presentation('output/Rebuilding_the_Base_2hr_Workshop.pptx') print('total slides:', len(prs.slides)) for i in [5,6,8,12,38]: s = prs.slides[i] pics = sum(1 for shp in s.shapes if shp.shape_type == 13) print('slide', i, 'pics:', pics) " ls -la output/Rebuilding_the_Base_2hr_Workshop.pptx
| Slide | Section | Image Added | Caption |
|---|---|---|---|
| 6 (Surgical Management) | Treatment Landscape | Pelvic lymph node dissection (PLND) template diagram | Limited/standard/extended/superextended dissection levels vs. lymphedema & nerve-injury risk |
| 7 (Radiotherapy & Brachytherapy) | Treatment Landscape | 2D intracavitary brachytherapy radiograph | Tandem & ovoids applicator with vaginal packing protecting bladder/rectum (now has 2 images total) |
| 9 (Pelvic Floor Anatomy: Setting the Scene) | Anatomy & Pathophysiology | Labeled sagittal cross-section of female pelvis | Urethra, bladder, vagina, uterus, rectum spatial relationships |
| 13 (Surgical Mechanisms of Pelvic Floor Injury) | Anatomy & Pathophysiology | Levator ani/puborectalis/sphincter MRI + diagram composite | Structures at direct risk during radical pelvic surgery |
| 39 (Lymphedema Management / CDT) | Intervention Toolkit | Multilayer compression bandaging clinical photo | Core technique of Complex Decongestive Therapy |
Rebuilding the Base 2hr Workshop
Presentation · PPTX