Please check this presentation to present the conference

Reading File
Browsing Directory

~/

Reading File
Browsing Directory

~/attachments/39bc459a-9788-470b-92e0-056e49ff141a

Running Command

python -c "from pptx import Presentation; p=Presentation('/tmp/workspace/attachments/39bc459a-9788-470b-92e0-056e49ff141a/Rebuilding the base EOC (1).pptx'); print('slides',len(p.slides),'size',p.slide_width,p.slide_height);\nfor i,s in enumerate(p.slides,1):\n print('\\n--- SLIDE',i,'---');\n for sh in s.shapes:\n if getattr(sh,'has_text_frame',False) and sh.text_frame.text.strip(): print('[TEXT]',repr(sh.text_frame.text));\n print('shapes',len(s.shapes),'pictures',sum(1 for x in s.shapes if x.shape_type==13))"

Running Command

python -c "from pptx import Presentation; p=Presentation('/tmp/workspace/attachments/39bc459a-9788-470b-92e0-056e49ff141a/Rebuilding the base EOC (1).pptx'); print('slides:',len(p.slides)); exec(\"for i,s in enumerate(p.slides,1):\\n print('\\\\n--- SLIDE',i,'---')\\n print('\\\\n'.join('[TEXT] '+repr(sh.text_frame.text) for sh in s.shapes if getattr(sh,'has_text_frame',False) and sh.text_frame.text.strip()))\\n print('shapes',len(s.shapes),'pictures',sum(x.shape_type==13 for x in s.shapes))\")"

Reading File
Searching PubMed

cervical cancer pelvic floor rehabilitation

Searching the Web

WHO cervical cancer global 2022 660000 350000 deaths factsheet

Finding Sources
Running Command

python -c "from pptx import Presentation; p=Presentation('/tmp/workspace/attachments/39bc459a-9788-470b-92e0-056e49ff141a/Rebuilding the base EOC (1).pptx'); exec(\"for i,s in enumerate(p.slides,1):\\n notes=s.notes_slide.notes_text_frame.text.strip() if s.has_notes_slide else ''\\n fonts=[]\\n for sh in s.shapes:\\n if getattr(sh,'has_text_frame',False):\\n for pa in sh.text_frame.paragraphs:\\n for r in pa.runs:\\n if r.font.size: fonts.append(round(r.font.size.pt,1))\\n print(i, 'notes='+repr(notes[:110]), 'font range='+str((min(fonts),max(fonts)) if fonts else None))\")"

Conference-readiness review

The presentation has a strong clinical storyline and professional visual structure. It is suitable for a 25 to 35 minute conference session once a few high-priority items are corrected.

What works well

  • Clear, memorable theme: “Rebuilding the Base” connects pelvic floor rehabilitation with survivorship.
  • Logical clinical arc: burden and anatomy → assessment → phenotype-matched treatment → systems pathway → implementation.
  • Strong safety and consent framing on the pelvic floor examination slide.
  • The distinction between hypotonic weakness and hypertonic guarding is clinically useful and appropriately challenges generic “more Kegels” advice.
  • The final systems-of-care slides make the session practical for a multidisciplinary audience.
  • The global burden figures on Slide 2 are current and align with the WHO cervical cancer overview: approximately 660,000 diagnoses and 350,000 deaths globally in 2022.

Changes to make before presenting

1. Fix the slide-numbering and flow

Visible slide numbers are inconsistent: for example, Slides 3, 6, 7, and 8 display 06, 17, 15, and 16. This can distract the audience and makes the deck appear incomplete.
Also check the sequence around:
  • Slides 3 to 8: anatomy, visual-only slides, then assessment
  • Slides 9 to 10: section divider followed by visual-only slide
  • Slide 26: reference slide shows “19” twice
Use either:
  • actual sequential slide numbers, or
  • no visible slide numbers.

2. Increase body-text size

Several slides use approximately 8 to 9 pt text. This will be hard to read in a conference room, particularly from the back.
Most affected:
  • Slide 2: small source note
  • Slides 3, 7, 8, 11 to 19: dense body content
  • Slides 21 to 24: pathway and implementation details
Aim for:
  • Title: 30 to 36 pt
  • Main body text: 20 to 24 pt minimum
  • References or footnotes: 14 to 16 pt minimum
Reduce text rather than shrinking it. Your verbal explanation can carry the detail.

3. Simplify the densest clinical slides

These are clinically sound in intent but read like handout material rather than presentation material:
SlideIssueRecommendation
7Too much assessment detailKeep 3 headings and 2 bullets each
8Consent and grading compete for attentionSplit into consent/setup and examination/grading, if time permits
11Excellent core message but denseRetain “tone, not diagnosis” and convert each pathway into 3 concise actions
12Three sections plus detailed bulletsUse one short clinical takeaway per section
13Protocol is presented too definitivelyFrame it as an individualized, oncology-cleared plan
16-18Medical and rehabilitation interventions blend togetherClearly label what requires medical or specialist prescription/review
19Long text blockTurn into a simple home-program checklist
26References are too small for projectionProvide a QR code or handout instead

Clinical wording to tighten

Vaginal dilator slide: Slide 13

The message is useful, but avoid making a universal timing and frequency prescription. “Start early” and “minimum 3x/week” may not be appropriate for every patient, particularly with active mucositis, bleeding, infection, severe pain, marked tissue fragility, or unclear oncologic status.
Suggested wording:
“Following oncology clearance and individualized assessment, introduce graded vaginal rehabilitation when tissue healing and symptoms allow. Frequency, duration, and progression should be guided by tolerance, goals, and local protocol.”
This is especially important because evidence supports rehabilitation as promising, but the evidence base is still heterogeneous. A recent umbrella review, Hao et al., supports pelvic floor rehabilitation in cancer survivorship while highlighting variation in interventions and outcomes.

Bladder slide: Slide 16

“Hypogastric plexus injury” is too narrow as an explanation for postoperative voiding dysfunction after radical hysterectomy. A safer phrase is:
“Pelvic autonomic nerve disruption following radical pelvic surgery may contribute to impaired bladder sensation, detrusor underactivity, incomplete emptying, or retention.”
Also make clear that catheterization and suspected retention require medical/urology direction.

Bowel slide: Slide 17

Add a visible red-flag statement:
“New rectal bleeding, severe pain, fever, obstruction symptoms, significant weight loss, or suspected fistula require medical assessment before rehabilitation progression.”
This protects against inadvertently treating presumed “radiation bowel dysfunction” when recurrence, infection, fistula, or significant radiation injury may be present.

Slide 18: Hormonal and topical treatment

The phrase “local estrogen where oncologically appropriate” is sensible. Add that the decision should be made with gynecologic oncology or a clinician experienced in cancer survivorship, particularly for patients with uncertain pathology or concurrent systemic therapy.

Speaker-delivery notes

Your notes are strong on a few major slides, particularly 2, 9, 11, and 14 to 18, but most slides have no notes. Add one short message to every slide:
  1. What should the audience remember?
  2. Why does it matter in practice?
  3. What transition leads to the next slide?

Recommended timing

  • Opening and burden: 2 minutes
  • Anatomy and assessment: 6 minutes
  • Rehabilitation toolkit: 10 to 12 minutes
  • Bladder, bowel, sexuality: 5 to 6 minutes
  • Pathway and implementation: 5 to 6 minutes
  • Closing: 1 minute
For a 20-minute slot, reduce the detailed treatment slides and preserve:
  • Slides 1-2
  • Slide 7 or 8
  • Slide 11
  • Slide 13
  • Slide 20
  • Slides 21-25

Opening and closing lines

Opening:
“For many cervical cancer survivors, the end of treatment does not mean the end of morbidity. Bladder, bowel, pain, and intimacy concerns may remain invisible unless we ask. Today, I will focus on how pelvic floor rehabilitation can make recovery more functional, safe, and patient-defined.”
Closing:
“No recurrence is not the same as no morbidity. If we ask early, assess the phenotype, and create a named pelvic-health pathway, we can help survivors rebuild not only pelvic function, but confidence and participation in life.”

Overall verdict

Strong content, strong concept, and conference-appropriate. Before presenting, correct the numbering, enlarge small text, simplify dense slides, and soften protocol-like statements where individual assessment and oncology clearance are required. The deck will then feel more polished, readable, and defensible in a multidisciplinary conference setting.

Make a 20-minute version of this presentation

Reading File
Reading File
Browsing Directory

~/

Searching the Web

WHO cervical cancer 2022 660000 350000

Searching PubMed

cervical cancer pelvic floor rehabilitation

Running Command

mkdir -p "/tmp/workspace/rebuilding-base-20min/src" "/tmp/workspace/rebuilding-base-20min/output" && python -c "from pptx import Presentation; p=Presentation('/tmp/workspace/attachments/39bc459a-9788-470b-92e0-056e49ff141a/Rebuilding the base EOC (1).pptx'); print(len(p.slides))"

Writing File

~/rebuilding-base-20min/src/make_20min.py

from pptx import Presentation
from pptx.util import Pt
from pptx.enum.text import MSO_AUTO_SIZE
from copy import deepcopy

SRC = '/tmp/workspace/attachments/39bc459a-9788-470b-92e0-056e49ff141a/Rebuilding the base EOC (1).pptx'
OUT = '/tmp/workspace/rebuilding-base-20min/output/Rebuilding_the_Base_20_Minute_Conference.pptx'
KEEP = [1,2,3,7,8,11,13,15,16,17,20,21,23,25,26]

prs = Presentation(SRC)
# remove all unneeded slides, in reverse so retained slide identities remain stable
for idx in range(len(prs.slides), 0, -1):
    if idx not in KEEP:
        rId = prs.slides._sldIdLst[idx-1].rId
        prs.part.drop_rel(rId)
        del prs.slides._sldIdLst[idx-1]

# helper methods
def all_text(slide):
    return [sh for sh in slide.shapes if getattr(sh, 'has_text_frame', False)]

def find_text(slide, starts):
    for sh in all_text(slide):
        text = sh.text_frame.text.strip()
        if any(text.startswith(s) for s in starts):
            return sh
    return None

def set_text(sh, text, size=None, bold_first=False):
    tf = sh.text_frame
    tf.clear()
    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.level = 0
        for run in p.runs:
            if size:
                run.font.size = Pt(size)
            if bold_first and i == 0:
                run.font.bold = True
    tf.word_wrap = True
    tf.auto_size = MSO_AUTO_SIZE.TEXT_TO_FIT_SHAPE

def remove_page_numbers(slide):
    for sh in list(all_text(slide)):
        text = sh.text_frame.text.strip()
        if text.isdigit() and len(text) <= 2:
            sp = sh._element
            sp.getparent().remove(sp)

def set_notes(slide, note):
    tf = slide.notes_slide.notes_text_frame
    tf.text = note

# streamline contents after the retained slides have moved to 1..15
slides = list(prs.slides)
for s in slides:
    remove_page_numbers(s)

# 1 title
set_notes(slides[0], 'TIME 0:45. Opening: “For many survivors, finishing cancer treatment does not mean finishing morbidity. Today is about making pelvic recovery visible, safe and actionable.”')
# 2 context: keep data but reduce dense copy
sh = find_text(slides[1], ['•  4th most common'])
set_text(sh, '• Cervical cancer is the fourth most common cancer in women worldwide.\n• In 2022, about 660,000 women were diagnosed and 350,000 died.\n• Better cancer outcomes mean more survivors living with bladder, bowel, pain and intimacy concerns.', 19)
set_notes(slides[1], 'TIME 1:00. The burden is not only cancer mortality. Survivorship needs to include function and quality of life. State the figures as 2022 WHO/IARC estimates.')
# 3 anatomy
sh = find_text(slides[2], ['•  The pelvic floor'])
set_text(sh, '• A coordinated muscular and fascial support system for bladder, vagina and rectum.\n• It contributes to continence, evacuation, sexual function and load transfer.\n• Treatment can affect tissue mobility, sensation, strength, coordination and pain.', 18)
set_notes(slides[2], 'TIME 1:00. Do not teach every muscle. The point is coordinated function: strength is only one possible rehabilitation target.')
#4 is original slide 7 assessment
sh = find_text(slides[3], ['Comprehensive History'])
set_text(sh, 'HISTORY\n• Begin with the survivor’s main concern and functional goal.\n• Review treatment, urinary, bowel, sexual and pain symptoms.\n• Include fatigue, distress, work, hobbies and medical trauma.', 18)
sh = find_text(slides[3], ['Movement & Postural'])
set_text(sh, 'MOVEMENT SCREEN\n• Screen the whole body, breathing, abdominal tenderness and scar mobility.\n• Treatment may change strength, mobility and balance.', 18)
sh = find_text(slides[3], ['Breathing-Abdominal'])
set_text(sh, 'COORDINATION\n• Observe diaphragm, abdominal wall and pelvic-floor coordination.\n• Compensation in one part may signal dysfunction in another.', 18)
set_notes(slides[3], 'TIME 1:45. Ask before examining. Assessment starts with the patient goal, then looks at the entire movement and breathing system rather than the pelvis in isolation.')
#5 consent
sh = find_text(slides[4], ['CONSENT & SETUP'])
set_text(sh, 'CONSENT & SETUP\n• Explain the examination and obtain explicit consent.\n• Offer internal, external or no internal examination.\n• The patient can stop at any time.\n• Use a gentle, symptom-led approach, especially after radiotherapy.', 17)
sh = find_text(slides[4], ['MODIFIED OXFORD'])
set_text(sh, 'EXAMINATION\n• Assess resting tone, relaxation, voluntary contraction, tenderness, tissue tolerance and functional coordination.\n• Use a validated measure such as the Modified Oxford Scale where appropriate.\n• Document the baseline that matters to the patient.', 17)
set_notes(slides[4], 'TIME 1:15. Consent is ongoing. Internal examination is never a prerequisite for education or initial rehabilitation. Do not rush an irradiated or painful presentation.')
#6 phenotype matched slide
sh = find_text(slides[5], ['"More Kegels"'])
set_text(sh, '“More Kegels” is not always correct. Match treatment to tone, symptoms and goals.', 20)
sh = find_text(slides[5], ['Hypotonic / Weak'])
set_text(sh, 'WEAK / HYPOTONIC\n• Graded strength, endurance and functional training.\n• Integrate with cough, lifting and exertion.\n• Reassess function, not strength alone.', 18)
sh = find_text(slides[5], ['Hypertonic / Guarded'])
set_text(sh, 'GUARDED / HYPERTONIC\n• Start with down-training, breathing and symptom modulation.\n• Use gentle mobility and manual strategies when indicated.\n• Strengthen only when relaxation and tissue tolerance allow.', 18)
set_notes(slides[5], 'TIME 2:00. This is the clinical hinge of the talk. Same diagnosis does not equal same rehabilitation. A guarded, painful floor can worsen if we prescribe strengthening without assessment.')
#7 dilators
sh = find_text(slides[6], ['WHAT & WHY'])
set_text(sh, 'WHAT & WHY\n• Graded vaginal rehabilitation can support tissue accommodation, examination tolerance and sexual goals.\n• It is a rehabilitation tool, not a test of adherence or sexual activity.', 18)
sh = find_text(slides[6], ['PROTOCOL'])
set_text(sh, 'INDIVIDUALIZE THE PLAN\n• Introduce after oncology clearance when healing and symptoms allow.\n• Choose size, frequency and progression according to tolerance and goals.\n• Use lubricant and pause for bleeding, infection, severe pain or active mucositis.\n• Discuss barriers without judgement.', 17)
set_notes(slides[6], 'TIME 1:30. Avoid a universal protocol. Confirm oncology clearance and assess healing. The goal may be a comfortable examination, reduced fear, or intimacy, not necessarily intercourse.')
#8 breathing
sh = find_text(slides[7], ['DIAPHRAGMATIC'])
set_text(sh, 'DIAPHRAGMATIC BREATHING\n• A simple entry point for restoring diaphragm, abdominal-wall and pelvic-floor coordination.\n• Supports pelvic-floor release before active training in a guarded presentation.', 18)
sh = find_text(slides[7], ['PAIN NEUROSCIENCE'])
set_text(sh, 'PAIN EDUCATION\n• Explain that persistent pain can reflect a sensitized protective system as well as tissue change.\n• Reduce fear and build graded return to movement and intimacy.\n• Work alongside psychology and sexual-health care when needed.', 18)
set_notes(slides[7], 'TIME 1:00. Use plain language: an alarm system can become overprotective. This validates symptoms while showing that safe, graded recovery is possible.')
#9 bladder
sh = find_text(slides[8], ['Neurogenic / Post'])
set_text(sh, 'POST-SURGICAL VOIDING DYSFUNCTION\n• Pelvic autonomic nerve disruption may contribute to impaired sensation, incomplete emptying or retention.\n• Use timed and double voiding only within an assessed plan.\n• Refer for residual assessment and urology input when retention is suspected.', 17)
sh = find_text(slides[8], ['Stress Incontinence'])
set_text(sh, 'STRESS-INCONTINENCE COMPONENT\n• Treat confirmed weakness with graded pelvic-floor muscle training and functional practice.\n• Refer refractory or complex presentations to urogynecology/urology.', 17)
set_notes(slides[8], 'TIME 1:00. Bladder management is phenotype-led. Do not normalize retention. New, progressive, or unexplained symptoms need medical assessment.')
#10 bowel
sh = find_text(slides[9], ['FUNCTIONAL BOWEL'])
set_text(sh, 'FUNCTIONAL BOWEL MANAGEMENT\n• Assess urgency, leakage, stool consistency, diet, hydration and evacuation pattern.\n• Use coordination training and individualized dietary or continence strategies.\n• Involve gastroenterology and nutrition for suspected chronic radiation injury or malabsorption.\n• New bleeding, severe pain, fever, obstruction symptoms or suspected fistula require medical review.', 17)
set_notes(slides[9], 'TIME 1:00. The key safety message is that rectal bleeding and progressive symptoms are not automatically “radiation proctitis.” Pause and seek medical review when red flags occur.')
#11 sexual health retains visual ladder but concise paragraph
sh = find_text(slides[10], ['•  This stepped'])
set_text(sh, '• Progress stepwise and never rush or skip a stage.\n• Start with permission to discuss, then comfort, reconnection and graded exposure.\n• Penetration is optional and patient-defined.\n• Refer for persistent pain, distress or request for specialist support.', 18)
set_notes(slides[10], 'TIME 1:30. Walk through the staircase. Emphasize that “success” is a survivor-defined return to safety, connection and valued activity, not a mandatory sexual endpoint.')
#12 pathway
set_notes(slides[11], 'TIME 2:00. This is the implementation message: make the route visible. At every oncology follow-up, ask about bladder, bowel, pain and intimacy. A positive screen gets a named next step, not a vague referral.')
#13 sprint
set_notes(slides[12], 'TIME 1:30. Start small. In 90 days, agree red flags and screening questions, pilot in one clinic, then audit referral completion and delays. Build a service, not a brochure.')
#14 take-home
set_notes(slides[13], 'TIME 0:45. Deliver these three messages slowly. “No recurrence” is not “no morbidity.”')
#15 refs
set_notes(slides[14], 'TIME 0:15. Selected sources. Thank the audience and invite questions.')

# Standardize footer page number removal left enough branding; ensure no accidental internal slide number remains.
prs.save(OUT)
print(OUT)
Running Command

python "/tmp/workspace/rebuilding-base-20min/src/make_20min.py" && ls -lh "/tmp/workspace/rebuilding-base-20min/output/Rebuilding_the_Base_20_Minute_Conference.pptx"

Running Command

python -c "from pptx import Presentation; from zipfile import ZipFile; f='/tmp/workspace/rebuilding-base-20min/output/Rebuilding_the_Base_20_Minute_Conference.pptx'; p=Presentation(f); print('slide_count:',len(p.slides)); print('dimensions:',p.slide_width,p.slide_height); exec(\"for i,s in enumerate(p.slides,1):\\n texts=[sh.text_frame.text.strip().replace('\\\\n',' / ') for sh in s.shapes if getattr(sh,'has_text_frame',False) and sh.text_frame.text.strip()]\\n print(i, '|', texts[0] if texts else '[visual]', '| notes:', bool(s.notes_slide.notes_text_frame.text.strip()))\"); z=ZipFile(f); print('zip_test:',z.testzip()); print('slides_xml:',len([n for n in z.namelist() if n.startswith('ppt/slides/slide') and n.endswith('.xml')]))"

Running Command

python -c "from pptx import Presentation; f='/tmp/workspace/rebuilding-base-20min/output/Rebuilding_the_Base_20_Minute_Conference.pptx'; p=Presentation(f); exec(\"for i,s in enumerate(p.slides,1):\\n sizes=[r.font.size.pt for sh in s.shapes if getattr(sh,'has_text_frame',False) for pa in sh.text_frame.paragraphs for r in pa.runs if r.font.size]\\n print(i, min(sizes) if sizes else None, max(sizes) if sizes else None)\")"

Created a streamlined 15-slide, 20-minute conference version with:
  • Focused clinical storyline and reduced text
  • Clear timing notes in speaker notes for every slide
  • Updated safety wording for dilator, bladder, bowel, and sexual-health content
  • Removed inconsistent visible slide numbers
  • Retained the original visual style and key practical pathway slides

no download

Use this link to download the presentation:

Rebuilding the Base 20 Minute Conference

Presentation · PPTX

Regenerate the 20-minute deck and provide a working download link

Reading File
Reading File
Browsing Directory

~/

Running Command

python "/tmp/workspace/rebuilding-base-20min/src/make_20min.py" && python -c "from pptx import Presentation; from zipfile import ZipFile; f='/tmp/workspace/rebuilding-base-20min/output/Rebuilding_the_Base_20_Minute_Conference.pptx'; p=Presentation(f); assert len(p.slides)==15; assert ZipFile(f).testzip() is None; print('Validated:', len(p.slides), 'slides |', f)" && ls -lh "/tmp/workspace/rebuilding-base-20min/output/Rebuilding_the_Base_20_Minute_Conference.pptx"

Regenerated and validated the 15-slide, 20-minute deck.

Rebuilding the Base 20 Minute Conference

Presentation · PPTX

slides inside overwriting is there, not understanding

Reading File
Reading File
Browsing Directory

~/rebuilding-base-20min/

Reading File
Reading File
Writing File

~/rebuilding-base-20min/src/build_clean_deck.py

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
from pptx.enum.dml import MSO_THEME_COLOR

OUT = '/tmp/workspace/rebuilding-base-20min/output/Rebuilding_the_Base_20_Minute_Clean.pptx'
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
blank = prs.slide_layouts[6]

NAVY = RGBColor(18, 42, 62)
TEAL = RGBColor(20, 130, 133)
CORAL = RGBColor(224, 107, 91)
CREAM = RGBColor(248, 246, 241)
INK = RGBColor(30, 45, 56)
MUTED = RGBColor(91, 108, 117)
PALE = RGBColor(228, 240, 239)
WHITE = RGBColor(255,255,255)


def rect(slide, x,y,w,h,color, radius=False):
    shape = slide.shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE if radius else MSO_SHAPE.RECTANGLE, Inches(x), Inches(y), Inches(w), Inches(h))
    shape.fill.solid(); shape.fill.fore_color.rgb = color
    shape.line.fill.background()
    return shape

def text(slide, x,y,w,h, value, size=18, color=INK, bold=False, align=PP_ALIGN.LEFT, font='Aptos', valign=MSO_ANCHOR.TOP):
    box=slide.shapes.add_textbox(Inches(x),Inches(y),Inches(w),Inches(h))
    tf=box.text_frame; tf.clear(); tf.word_wrap=True; tf.margin_left=0; tf.margin_right=0; tf.margin_top=0; tf.margin_bottom=0; tf.vertical_anchor=valign
    lines=value.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.space_after=Pt(4)
        for r in p.runs:
            r.font.name=font; r.font.size=Pt(size); r.font.bold=bold; r.font.color.rgb=color
    return box

def rich_lines(slide,x,y,w,h, lines, size=17):
    box=slide.shapes.add_textbox(Inches(x),Inches(y),Inches(w),Inches(h)); tf=box.text_frame; tf.clear(); tf.word_wrap=True
    tf.margin_left=tf.margin_right=tf.margin_top=tf.margin_bottom=0
    for i,(content, color, bold) in enumerate(lines):
        p=tf.paragraphs[0] if i==0 else tf.add_paragraph(); p.text=content; p.space_after=Pt(10)
        for r in p.runs: r.font.name='Aptos'; r.font.size=Pt(size); r.font.color.rgb=color; r.font.bold=bold
    return box

def base(section, title, number):
    s=prs.slides.add_slide(blank); rect(s,0,0,13.333,7.5,CREAM); rect(s,0,0,13.333,.18,TEAL)
    text(s,.6,.4,9,.25,section.upper(),11,TEAL,True)
    text(s,.6,.75,11.8,.8,title,30,NAVY,True)
    text(s,12.1,.42,.6,.25,f'{number:02d}',11,MUTED,True,PP_ALIGN.RIGHT)
    text(s,.6,7.12,12,.18,'CERVICAL CANCER SURVIVORSHIP  •  PELVIC FLOOR REHABILITATION',9,MUTED,True)
    return s

def note(slide, content):
    slide.notes_slide.notes_text_frame.text=content

def bullets(slide,x,y,w,items,size=17):
    return rich_lines(slide,x,y,w,5.5,[(f'•  {i}',INK,False) for i in items],size)

def card(slide,x,y,w,h,heading,body,accent=TEAL):
    rect(slide,x,y,w,h,WHITE,True); rect(slide,x,y,w,.09,accent)
    text(slide,x+.22,y+.25,w-.44,.3,heading,16,accent,True)
    text(slide,x+.22,y+.75,w-.44,h-.95,body,15,INK,False)

# 1
s=prs.slides.add_slide(blank); rect(s,0,0,13.333,7.5,NAVY); rect(s,0,0,13.333,.18,CORAL)
text(s,.75,1.05,7.2,1.5,'Rebuilding\nthe Base',42,WHITE,True)
text(s,.78,3.05,8.2,.45,'Pelvic floor rehabilitation in cervical cancer survivorship',21,RGBColor(213,235,233),False)
text(s,.78,3.75,7.4,.7,'A whole-person pathway from treatment to recovery',25,WHITE,True)
rect(s,.78,5.3,4.1,.08,CORAL)
text(s,.78,5.6,6.4,.5,'Mohanambal Natesan  |  Physiotherapist  |  Tawam Hospital, Al Ain',14,RGBColor(213,235,233))
text(s,10.1,6.25,2.4,.35,'20-MINUTE SESSION',13,RGBColor(213,235,233),True,PP_ALIGN.RIGHT)
note(s,'TIME 0:45. Opening: finishing treatment does not always mean finishing morbidity. This session makes pelvic recovery visible, safe and actionable.')

#2
s=base('Clinical context','Survival changes the clinical question',2)
text(s,.65,1.8,4.1,.35,'Cervical cancer is the fourth most common cancer in women worldwide.',20,NAVY,True)
for x,num,lab,col in [(0.7,'660,000','new diagnoses in 2022',TEAL),(4.55,'350,000','deaths in 2022',CORAL),(8.4,'Decades','many years of survivorship',NAVY)]:
    rect(s,x,3.0,3.3,1.65,WHITE,True); text(s,x+.2,3.28,2.9,.46,num,30,col,True,PP_ALIGN.CENTER); text(s,x+.2,3.93,2.9,.28,lab,14,MUTED,False,PP_ALIGN.CENTER)
text(s,.75,5.25,11.5,.7,'The rehabilitation question is not only “Is she cancer-free?”  It is also “Can she void, move, sleep and be intimate without fear?”',22,NAVY,True,PP_ALIGN.CENTER)
text(s,.7,6.25,11.8,.25,'WHO/IARC 2022 estimates: approximately 660,000 diagnoses and 350,000 deaths.',11,MUTED,False,PP_ALIGN.CENTER)
note(s,'TIME 1:15. Give the global burden briefly. Pivot immediately to survivorship function: bladder, bowel, pain and intimacy deserve routine attention.')

#3
s=base('Foundation','The pelvic floor is a coordinated system',3)
text(s,.75,1.75,5.1,.9,'Not just a muscle.\nA support, continence and pressure-management system.',23,NAVY,True)
for x,h,b in [(6.0,'Support','Bladder, vagina and rectum'),(8.2,'Control','Urethral and anal continence'),(10.4,'Coordination','Breathing, abdomen and movement')]: card(s,x,2.0,1.85,2.45,h,b)
rect(s,.75,4.55,11.7,1.2,PALE,True); text(s,1.0,4.88,11.2,.5,'Clinical implication: dysfunction may present as weakness, overactivity, pain, impaired relaxation or a mixture.',21,NAVY,True,PP_ALIGN.CENTER)
note(s,'TIME 1:00. Give the 30-second anatomy overview. The key message is coordinated function, not isolated pelvic-floor squeezing.')

#4
s=base('Assessment','Start with safety, consent and the survivor’s goal',4)
card(s,.72,1.75,3.7,3.65,'1. Ask','Bladder\nBowel\nPain\nIntimacy',TEAL)
card(s,4.82,1.75,3.7,3.65,'2. Screen','Treatment timeline\nFatigue, scars, mobility\nRed flags and recurrence concerns',CORAL)
card(s,8.92,1.75,3.7,3.65,'3. Assess','Movement and breathing\nExternal or internal exam only with explicit consent\nPatient may stop at any time',NAVY)
text(s,.8,5.95,11.6,.45,'A named functional goal makes assessment meaningful: “I want a comfortable examination” may come before intercourse.',18,NAVY,True,PP_ALIGN.CENTER)
note(s,'TIME 1:30. State consent explicitly. Explain that history, movement, breathing and a patient-chosen pelvic examination guide the plan.')

#5
s=base('Assessment','Match the intervention to the phenotype',5)
rect(s,.8,1.75,5.65,3.85,WHITE,True); rect(s,.8,1.75,5.65,.1,TEAL); text(s,1.05,2.08,5.1,.4,'HYPOTONIC / WEAK',21,TEAL,True)
bullets(s,1.05,2.75,4.9,['Often follows surgical nerve or fascial disruption','Reduced lift, endurance or pressure control','Strengthening, endurance and functional integration'],16)
rect(s,6.9,1.75,5.65,3.85,WHITE,True); rect(s,6.9,1.75,5.65,.1,CORAL); text(s,7.15,2.08,5.1,.4,'HYPERTONIC / GUARDED',21,CORAL,True)
bullets(s,7.15,2.75,4.9,['Often associated with pain, fibrosis or fear-driven guarding','Tenderness, restricted excursion, difficulty relaxing','Down-training, breathing and graded exposure first'],16)
text(s,.85,6.05,11.6,.4,'“More Kegels” is not always correct. Direction of training depends on tone and function, not diagnosis alone.',19,NAVY,True,PP_ALIGN.CENTER)
note(s,'TIME 1:30. This is the clinical pivot. Explain that strengthening a guarded, painful pelvic floor can worsen symptoms. Treat the phenotype.')

#6
s=base('Rehabilitation','A small toolkit, applied precisely',6)
for x,h,b,c in [(0.7,'Retrain','Pelvic-floor work matched to tone',TEAL),(3.8,'Release','Manual therapy and scar mobility',CORAL),(6.9,'Accommodate','Graded vaginal rehabilitation when appropriate',NAVY),(10.0,'Learn','Biofeedback and self-management',TEAL)]: card(s,x,2.0,2.6,2.65,h,b,c)
text(s,.9,5.35,11.4,.55,'The common thread: individualized dosage, symptom monitoring and progression at the patient’s pace.',21,NAVY,True,PP_ALIGN.CENTER)
note(s,'TIME 1:00. Do not list every modality in depth. Introduce the toolkit, then focus on two high-yield examples: dilator rehabilitation and pain/guarding.')

#7
s=base('Rehabilitation','Vaginal rehabilitation: graded, informed and individualized',7)
card(s,.72,1.8,3.65,3.75,'Purpose','Support tissue accommodation, examination tolerance and intimacy goals.',TEAL)
card(s,4.84,1.8,3.65,3.75,'Approach','Oncology clearance and symptom review\nProgressive size and duration\nWater-based lubricant\nStop for concerning symptoms',CORAL)
card(s,8.96,1.8,3.65,3.75,'Conversation','Normalize the tool clinically\nAddress barriers without pressure\nThe patient defines the goal',NAVY)
text(s,.85,6.0,11.5,.36,'Avoid progression during active mucositis, infection, unexplained bleeding or severe pain. Refer for medical review when needed.',16,NAVY,True,PP_ALIGN.CENTER)
note(s,'TIME 1:30. Avoid a one-size-fits-all protocol. Explain progression is based on tissue healing, tolerance, goals and local oncology guidance.')

#8
s=base('Rehabilitation','For guarding and pain, begin with safety and relaxation',8)
rect(s,.75,1.8,11.85,1.1,PALE,True); text(s,1.0,2.12,11.3,.38,'Breathing, abdominal wall and pelvic floor move as one system.',22,NAVY,True,PP_ALIGN.CENTER)
for x,n,h,b in [(1.0,'01','Explain','Pain can persist through sensitivity and guarding, not only ongoing damage.'),(4.45,'02','Down-train','Use diaphragmatic breathing, release and pacing before strengthening.'),(7.9,'03','Expose gradually','Return to movement, examination and intimacy in safe, patient-chosen steps.')]:
    text(s,x,3.55,1,.35,n,18,CORAL,True); text(s,x,4.0,2.75,.3,h,18,NAVY,True); text(s,x,4.55,2.75,1.25,b,15,INK)
note(s,'TIME 1:15. Use simple language: an alarm system can stay sensitive after treatment. Validate symptoms while avoiding the message that pain is “all in the mind.”')

#9
s=base('Organ-specific management','Bladder and bowel: rehabilitate, but know the red flags',9)
card(s,.75,1.8,5.65,3.95,'BLADDER','Post-surgical autonomic nerve disruption may cause impaired sensation, incomplete emptying or retention.\n\nRehabilitation: timed voiding, double voiding, pressure-control training and referral when needed.',TEAL)
card(s,6.9,1.8,5.65,3.95,'BOWEL','Radiation-related urgency, frequency or incontinence can benefit from dietary review and coordination training.\n\nNew bleeding, severe pain, fever, obstruction symptoms or suspected fistula need medical assessment first.',CORAL)
note(s,'TIME 1:15. Keep the scope clear. Physiotherapy contributes to symptom management but does not replace investigation of retention, bleeding, infection, fistula or recurrence.')

#10
s=base('Self-management','Sexual recovery is a stepped pathway, not a performance test',10)
steps=[('1','Permission','Make space to discuss intimacy'),('2','Reconnect','Non-genital touch and communication'),('3','Explore','Self-exploration or dilator progression'),('4','Partner','Non-penetrative partnered activity'),('5','If desired','Penetrative intercourse')]
for i,(n,h,b) in enumerate(steps):
    x=.55+i*2.5; rect(s,x,2.35,2.15,2.55,WHITE,True); text(s,x+.15,2.65,1.85,.25,n,17,CORAL,True,PP_ALIGN.CENTER); text(s,x+.15,3.15,1.85,.35,h,16,NAVY,True,PP_ALIGN.CENTER); text(s,x+.18,3.8,1.8,.65,b,13,INK,False,PP_ALIGN.CENTER)
text(s,.75,5.75,11.8,.45,'No step is compulsory, skipped or rushed. Persistent pain, relationship distress or a request for help should trigger referral.',17,NAVY,True,PP_ALIGN.CENTER)
note(s,'TIME 1:30. State that penetrative intercourse is never the sole outcome. The patient’s definition of meaningful intimacy guides progression.')

#11
s=base('Systems of care','Make the pathway visible',11)
path=[('Ask','4-domain screen at follow-up'),('Define','Rule out red flags; agree a goal'),('Support','Education and symptom-specific basics'),('Refer','Pelvic-health assessment and plan'),('Review','Measure, escalate and close the loop')]
for i,(h,b) in enumerate(path):
    x=.6+i*2.52; rect(s,x,2.2,2.1,2.4,WHITE,True); text(s,x+.2,2.55,1.7,.3,str(i+1),20,CORAL,True,PP_ALIGN.CENTER); text(s,x+.2,3.0,1.7,.3,h,17,TEAL,True,PP_ALIGN.CENTER); text(s,x+.17,3.5,1.76,.6,b,13,INK,False,PP_ALIGN.CENTER)
text(s,.85,5.5,11.4,.46,'A named route is more useful than a generic referral. Confirm completion and return the plan to the oncology team.',19,NAVY,True,PP_ALIGN.CENTER)
note(s,'TIME 1:30. This is the service-level takeaway. Name the route, define ownership and close the feedback loop.')

#12
s=base('Implementation','Start where you are: a 90-day service sprint',12)
for x,h,b,c in [(0.85,'0-30 days: MAP','Agree red flags\nChoose the 4-domain screen\nMap referral routes',TEAL),(4.8,'31-60 days: PILOT','Train one clinic team\nUse one patient information sheet\nTest referral flow',CORAL),(8.75,'61-90 days: MEASURE','Audit completion and delay\nReview patient goals\nRefine the pathway',NAVY)]: card(s,x,2.0,3.65,3.4,h,b,c)
note(s,'TIME 1:00. End systems content with practical action. A small pilot is better than waiting for a perfect program.')

#13
s=base('Case application','From symptom list to meaningful recovery',13)
text(s,.85,1.7,11.5,.55,'“I want intimacy to feel safe again and to move without fear.”',25,NAVY,True,PP_ALIGN.CENTER)
for x,h,b in [(1.0,'ASSESS','Rule out infection or recurrence. Assess tissue tolerance, guarding, bladder pattern and priorities.'),(4.55,'PLAN','Education, bladder strategies, down-training and graded exposure. Consider vaginal rehabilitation if appropriate.'),(8.1,'REVIEW','Track pain, urgency, examination tolerance and return to valued activity. Escalate when needed.')]: card(s,x,3.1,3.15,2.45,h,b,[TEAL,CORAL,NAVY][[1.0,4.55,8.1].index(x)])
note(s,'TIME 1:15. The goal is not a generic exercise prescription. It is a shared, safe plan based on phenotype and the survivor’s priorities.')

#14
s=base('Take-home messages','Rebuild the base. Restore the life.',14)
for x,n,h,b,c in [(1.0,'01','Ask early','Bladder, bowel, pain and intimacy are survivorship outcomes.',TEAL),(4.55,'02','Assess the phenotype','Generic strengthening is not the answer to every symptom.',CORAL),(8.1,'03','Build the pathway','A named pelvic-health route makes recovery actionable.',NAVY)]:
    text(s,x,2.1,2.8,.3,n,18,c,True,PP_ALIGN.CENTER); text(s,x,2.7,2.8,.4,h,19,NAVY,True,PP_ALIGN.CENTER); text(s,x,3.45,2.8,.8,b,16,INK,False,PP_ALIGN.CENTER)
text(s,.8,5.85,11.7,.45,'“No recurrence” is not “no morbidity.”',26,NAVY,True,PP_ALIGN.CENTER)
note(s,'TIME 1:00. Close with the three actions. Repeat the final line, pause, then thank the audience.')

#15
s=base('Selected references','Evidence and guidance',15)
refs=['World Health Organization. Cervical cancer fact sheet and 2022 global estimates.','Hao J, Yao Z, Remis A. Pelvic floor rehabilitation in cancer survivorship: an umbrella review. J Cancer Surviv. 2026. PMID: 39581933.','Tim S, Mazur-Bialy A. Physiotherapy interventions after gynaecological oncology procedures: systematic review. J Gynecol Obstet Hum Reprod. 2024;53:102688.','Yang EJ, et al. Pelvic floor muscle training in gynecologic cancer survivors with pelvic floor dysfunction: randomized controlled trial. Gynecol Oncol. 2012;123:705-711.']
text(s,.95,1.75,11.4,.35,'Selected references. Adapt local protocols and oncology guidance to your setting.',17,NAVY,True)
rich_lines(s,1.05,2.55,11.0,3.4,[(f'•  {r}',INK,False) for r in refs],15)
rect(s,.9,6.0,11.55,.55,PALE,True); text(s,1.1,6.16,11.15,.2,'Safety note: new bleeding, progressive pain, suspected infection, fistula or recurrence require medical assessment before rehabilitation progression.',12,NAVY,True,PP_ALIGN.CENTER)
note(s,'TIME 0:15. References only. Thank the audience and invite questions if the format permits.')

prs.save(OUT)
print(OUT)
Running Command

python "/tmp/workspace/rebuilding-base-20min/src/build_clean_deck.py" && python -c "from pptx import Presentation; from zipfile import ZipFile; f='/tmp/workspace/rebuilding-base-20min/output/Rebuilding_the_Base_20_Minute_Clean.pptx'; p=Presentation(f); assert len(p.slides)==15; assert ZipFile(f).testzip() is None; print('VALID',len(p.slides),'slides')" && ls -lh "/tmp/workspace/rebuilding-base-20min/output/Rebuilding_the_Base_20_Minute_Clean.pptx"

The previous version retained elements from the original slides, which caused text boxes to overlap. I rebuilt it as a clean 15-slide deck with separate, non-overlapping layouts and speaker notes timed for 20 minutes.

Rebuilding the Base 20 Minute Clean

Presentation · PPTX

This is a shared conversation. Sign in to Orris to start your own chat.