Evidence for prehabilitation in cancer patients
cancer AND prehabilitation
cancer AND prehabilitation
cancer prehabilitation guideline preoperative 2025
PMID: 39438910
PMID: 41549884
PMID: 37978411
colorectal cancer AND prehabilitation
https://macmillan.org.uk/healthcare-professionals/cancer-pat…
| Outcome | Overall evidence |
|---|---|
| Exercise capacity / physical function | Most consistent benefit. A 2024 meta-analysis of RCTs found improved 6-minute walk distance by 38.5 m (95% CI 33.0-44.0). |
| Anxiety and depression | Small but statistically significant improvements in HADS anxiety and depression scores in the same meta-analysis. |
| Muscle strength, respiratory function, quality of life | Often improve, especially short term, but results vary between programmes and cancer populations. |
| Postoperative complications and length of stay | Promising in some colorectal and minimally invasive-surgery studies, but no consistent pooled benefit across all cancers. |
| Frailty subgroup | A 2026 systematic review found no statistically significant reduction in length of stay, complications, functional decline, or readmission. |
| Adherence and implementation | Major real-world limitations: referral timing, fatigue, transport, socioeconomic barriers, competing appointments, and short intervals before treatment. |
Find the latest guidelines for cancer prehabilitation
site:macmillan.org.uk "Prehabilitation for people with cancer" "Clinical and Implementation Guidelines" 2025 PDF
cancer prehabilitation clinical practice guideline 2025 2026 PDF
cancer AND prehabilitation
cancer AND prehabilitation
https://www.macmillan.org.uk/healthcare-professionals/news-a…
PMID: 41232938
PMID: 35576506
PMID: 40613665
Make a clinical pathway for cancer prehabilitation
2025 Macmillan cancer prehabilitation clinical implementation guidelines early assessment referral exercise nutrition psychology
cancer AND prehabilitation
Cancer diagnosis / treatment decision
↓
Prehabilitation offer and rapid screening
within 48-72 hours
↓
Risk stratification
Low risk / Moderate risk / High or complex risk
↓
Personalised multimodal plan and referrals
↓
Delivery until treatment starts
with weekly review and escalation if needed
↓
Treatment-day handover
↓
Continue rehabilitation during and after treatment
| Domain | Minimum screen | Positive result / concern |
|---|---|---|
| Physical function | ECOG/WHO performance status; activity history; sit-to-stand or Timed Up and Go where feasible | ECOG 2 or above, falls, impaired mobility, low activity, dyspnoea, inability to complete basic function |
| Frailty | Clinical Frailty Scale, G8, or locally validated geriatric screen | Frailty, recurrent falls, cognitive concern, polypharmacy, dependence in daily activities |
| Nutrition | MUST, PG-SGA short form, or local validated malnutrition screen; weight change and intake | Malnutrition risk, >5% unintentional weight loss over 1 month or >10% over 6 months, poor intake, dysphagia, severe symptoms |
| Psychological wellbeing | Distress thermometer plus problem list, or PHQ-2/GAD-2 | Moderate-severe distress, depression, anxiety, poor coping, substance misuse, safeguarding concern |
| Medical optimisation | Anaemia, diabetes, cardiopulmonary disease, pain, tobacco/alcohol use, medication review | Uncontrolled comorbidity, symptomatic anaemia, unstable cardiac/respiratory disease, high-risk alcohol use |
| Social and access needs | Transport, finances, language, caring duties, housing, health literacy, digital access | Barriers likely to prevent attendance or adherence |
| Time available before treatment | Recommended approach |
|---|---|
| 0 to 7 days | Rapid assessment, safety-netting, nutrition and symptom management, brief exercise advice, smoking/alcohol intervention, and treatment-day handover. Do not delay urgent therapy. |
| 1 to 4 weeks | Targeted or multimodal plan, supervised or home-based exercise, dietetic and psychological input, weekly review. |
| More than 4 weeks | Full personalised multimodal programme, formal baseline and repeat functional testing, goal progression, and a documented treatment-readiness review. |
Can you please make a PowerPoint of the same
~/
mkdir -p "/tmp/workspace/cancer-prehabilitation-ppt/src" "/tmp/workspace/cancer-prehabilitation-ppt/output" && printf '%s' 'workspace prepared'
cat > "/tmp/workspace/cancer-prehabilitation-ppt/src/create_deck.py" <<'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, MSO_CONNECTOR from pptx.enum.dml import MSO_THEME_COLOR from pptx.enum.text import MSO_AUTO_SIZE OUT = '/tmp/workspace/cancer-prehabilitation-ppt/output/Cancer_Prehabilitation_Clinical_Pathway.pptx' prs = Presentation() prs.slide_width = Inches(13.333) prs.slide_height = Inches(7.5) blank = prs.slide_layouts[6] # Palette NAVY = RGBColor(16, 49, 76) TEAL = RGBColor(0, 132, 139) MINT = RGBColor(220, 241, 236) SKY = RGBColor(229, 241, 247) GOLD = RGBColor(237, 177, 75) CORAL = RGBColor(205, 94, 76) INK = RGBColor(30, 45, 58) MUTED = RGBColor(91, 111, 125) LIGHT = RGBColor(246, 249, 250) WHITE = RGBColor(255,255,255) LINE = RGBColor(205,218,223) def rect(slide, x,y,w,h, fill, line=None, radius=False): shp=slide.shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE if radius else MSO_SHAPE.RECTANGLE, Inches(x), Inches(y), Inches(w), Inches(h)) shp.fill.solid(); shp.fill.fore_color.rgb=fill shp.line.color.rgb = line if line else fill if radius: shp.adjustments[0]=0.08 return shp def text(slide, x,y,w,h, value, size=18, color=INK, bold=False, align=PP_ALIGN.LEFT, font='Aptos', valign=MSO_ANCHOR.TOP, margin=0.06): tb=slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h)) tf=tb.text_frame; tf.clear(); tf.word_wrap=True; tf.vertical_anchor=valign tf.margin_left=tf.margin_right=Inches(margin); tf.margin_top=tf.margin_bottom=Inches(margin) p=tf.paragraphs[0]; p.alignment=align r=p.add_run(); r.text=value; r.font.name=font; r.font.size=Pt(size); r.font.bold=bold; r.font.color.rgb=color return tb def add_bullets(slide,x,y,w,h,items,size=18,color=INK,bullet_color=TEAL,leading=1.18): tb=slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h)); tf=tb.text_frame; tf.clear(); tf.word_wrap=True tf.margin_left=Inches(.03);tf.margin_right=Inches(.03);tf.margin_top=Inches(.02);tf.margin_bottom=Inches(.02) for i,item in enumerate(items): p=tf.paragraphs[0] if i==0 else tf.add_paragraph(); p.text=item; p.level=0; p.font.name='Aptos';p.font.size=Pt(size);p.font.color.rgb=color p.space_after=Pt(8); p.bullet=True return tb def title(slide, title_text, kicker=None, num=None): rect(slide,0,0,13.333,.18,TEAL) if kicker: text(slide,.58,.38,11.7,.28,kicker.upper(),10,TEAL,True) text(slide,.56,.68,11.7,.52,title_text,28,NAVY,True) rect(slide,.56,1.30,1.05,.05,GOLD) if num: text(slide,12.25,.45,.48,.30,num,10,MUTED,True,PP_ALIGN.RIGHT) def footer(slide, source='Clinical pathway draft | October 2026'): rect(slide,.56,7.10,12.2,.012,LINE) text(slide,.56,7.16,8.5,.18,source,8.5,MUTED) text(slide,11.75,7.16,1.0,.18,'Cancer prehabilitation',8.5,MUTED,False,PP_ALIGN.RIGHT) def arrow(slide,x1,y1,x2,y2,color=TEAL,width=2): ln=slide.shapes.add_connector(MSO_CONNECTOR.STRAIGHT, Inches(x1), Inches(y1), Inches(x2), Inches(y2)) ln.line.color.rgb=color; ln.line.width=Pt(width) ln.line.end_arrowhead = True return ln def pill(slide,x,y,w,label,fill=SKY,fg=NAVY): rect(slide,x,y,w,.34,fill,fill,True); text(slide,x+.06,y+.05,w-.12,.21,label,10,fg,True,PP_ALIGN.CENTER) # 1 Title s=prs.slides.add_slide(blank) rect(s,0,0,13.333,7.5,NAVY) rect(s,0,0,13.333,.18,TEAL) # design circles for x,y,r,c in [(10.8,.9,1.7,TEAL),(11.55,1.65,.85,GOLD),(9.9,5.55,1.25,RGBColor(25,72,104))]: sh=s.shapes.add_shape(MSO_SHAPE.OVAL,Inches(x),Inches(y),Inches(r),Inches(r)); sh.fill.solid();sh.fill.fore_color.rgb=c;sh.line.color.rgb=c text(s,.72,1.05,8.8,.34,'CLINICAL PATHWAY',14,RGBColor(158,222,217),True) text(s,.68,1.52,8.6,1.55,'Cancer\nprehabilitation',38,WHITE,True) text(s,.72,3.38,7.6,.8,'A needs-based, multimodal pathway from diagnosis to treatment and rehabilitation',18,RGBColor(221,235,239)) rect(s,.72,5.35,3.05,.48,TEAL,TEAL,True);text(s,.83,5.46,2.82,.22,'Adult cancer pathways',12,WHITE,True,PP_ALIGN.CENTER) text(s,.72,6.72,5,.25,'Prepared for clinical pathway development | October 2026',10,RGBColor(187,208,215)) # 2 purpose s=prs.slides.add_slide(blank); title(s,'Purpose, scope and operating principles','Pathway at a glance','02') text(s,.62,1.58,5.75,.55,'Who is this for?',20,NAVY,True) add_bullets(s,.65,2.18,5.7,2.8,[ 'Adults with a new cancer diagnosis and planned curative-intent treatment', 'Surgery, systemic therapy, radiotherapy, chemoradiotherapy, transplant, or multimodality care', 'Begins at diagnosis or treatment decision, then transitions into rehabilitation' ],17) rect(s,6.73,1.55,5.85,4.6,SKY,SKY,True) text(s,7.05,1.88,5.2,.40,'Operating principles',20,NAVY,True) principles=[('Start early','Screen and refer as soon as possible after diagnosis.'),('Tailor care','Match intensity to risk, treatment window and patient goals.'),('Do not delay therapy','Prehabilitation supports, but does not postpone, time-sensitive treatment.'),('Design for access','Address transport, language, cost, digital and caregiver barriers.')] for i,(a,b) in enumerate(principles): y=2.50+i*.79 rect(s,7.07,y,.33,.33,TEAL,TEAL,True); text(s,7.16,y+.065,.15,.16,str(i+1),10,WHITE,True,PP_ALIGN.CENTER) text(s,7.55,y-.02,2.1,.24,a,13,NAVY,True); text(s,7.55,y+.24,4.53,.28,b,11.5,INK) footer(s) # 3 Pathway map s=prs.slides.add_slide(blank); title(s,'End-to-end pathway','One route, three levels of support','03') steps=[('1','Diagnosis / treatment decision','Offer prehabilitation'),('2','Rapid screen','Within 48-72 h'),('3','Risk stratify','Low | moderate | high'),('4','Personalised plan','Core domains + referrals'),('5','Review & handover','Weekly review; treatment-ready summary'),('6','Rehabilitation','Continue during and after treatment')] for i,(n,a,b) in enumerate(steps): x=.62+i*2.08 rect(s,x,2.08,1.72,1.72,WHITE,LINE,True) rect(s,x+.12,2.22,.36,.36,TEAL,TEAL,True);text(s,x+.19,2.295,.2,.13,n,9,WHITE,True,PP_ALIGN.CENTER) text(s,x+.16,2.76,1.40,.48,a,13,NAVY,True,PP_ALIGN.CENTER) text(s,x+.14,3.32,1.44,.28,b,10.5,MUTED,False,PP_ALIGN.CENTER) if i<5: arrow(s,x+1.74,2.94,x+2.00,2.94,TEAL,1.8) text(s,.68,4.55,12,.32,'The pathway is cyclical: changing symptoms, treatment dates or risks trigger reassessment and plan adjustment.',16,INK,False,PP_ALIGN.CENTER) rect(s,1.3,5.35,10.75,.68,MINT,MINT,True);text(s,1.58,5.56,10.15,.25,'Safety rule: urgent medical, nutritional or psychological concerns bypass routine prehabilitation and enter the appropriate clinical escalation pathway.',13,NAVY,True,PP_ALIGN.CENTER) footer(s) #4 rapid screen s=prs.slides.add_slide(blank); title(s,'Rapid screening bundle','Complete within 48-72 hours','04') domains=[('Physical function','Performance status, activity, mobility, falls, dyspnoea'),('Frailty','Clinical Frailty Scale, G8 or local validated screen'),('Nutrition','Weight loss, oral intake, MUST / PG-SGA Short Form'),('Psychological','Distress screen, anxiety, mood, coping, sleep'),('Medical','Anaemia, comorbidity, medicines, pain, tobacco/alcohol'),('Social access','Transport, language, finances, caregiving, digital access')] for i,(a,b) in enumerate(domains): col=i%2; row=i//2; x=.65+col*6.15; y=1.62+row*1.47 rect(s,x,y,5.65,1.15, LIGHT,LINE,True) rect(s,x+.18,y+.19,.36,.36,[TEAL,GOLD,CORAL][row%3],[TEAL,GOLD,CORAL][row%3],True) text(s,x+.67,y+.16,4.58,.26,a,15,NAVY,True);text(s,x+.67,y+.51,4.65,.38,b,12,INK) rect(s,.65,6.12,12.0,.52,SKY,SKY,True); text(s,.88,6.28,11.5,.17,'Document treatment intent and anticipated start date at the same encounter. This determines the achievable prehabilitation dose.',11.5,NAVY,True,PP_ALIGN.CENTER) footer(s) #5 Red flags s=prs.slides.add_slide(blank);title(s,'Red flags and immediate escalation','Do not wait for routine prehabilitation review','05') rect(s,.64,1.55,12.05,.62,RGBColor(250,231,227),RGBColor(250,231,227),True);text(s,.90,1.75,11.55,.20,'Escalate the same day to the treating team, acute service, nutrition team or mental-health pathway according to local policy.',13,CORAL,True,PP_ALIGN.CENTER) flags=[('Acute medical','Chest pain, syncope, significant arrhythmia, acute dyspnoea, resting hypoxaemia, infection'),('Severe nutrition risk','Dehydration, inability to maintain oral intake, rapidly progressive weight loss, unsafe swallow'),('Psychological / safeguarding','Suicidal ideation, acute confusion, safeguarding concern, severe withdrawal risk'),('Cancer-related emergency','Uncontrolled pain, neurological deficit, spinal cord compression symptoms, suspected pathological fracture')] for i,(a,b) in enumerate(flags): x=.80+(i%2)*6.0;y=2.65+(i//2)*1.55 rect(s,x,y,5.52,1.20,WHITE,LINE,True); rect(s,x+.18,y+.21,.34,.34,CORAL,CORAL,True) text(s,x+.66,y+.17,4.45,.25,a,15,NAVY,True);text(s,x+.66,y+.52,4.45,.43,b,11.5,INK) text(s,.70,6.03,11.9,.42,'Always use local emergency, deterioration and safeguarding policies. This slide does not replace assessment by an appropriately qualified clinician.',11.5,MUTED,False,PP_ALIGN.CENTER) footer(s) # 6 stratification s=prs.slides.add_slide(blank);title(s,'Risk stratification and service response','Risk determines contact intensity, not eligibility','06') levels=[('LOW','Universal support','Independent mobility; no major nutritional, psychological or medical risk','Education, self-management plan, lifestyle support, re-screen at treatment start',MINT,TEAL),('MODERATE','Targeted support','Mild functional limitation, nutrition risk, distress, smoking or controlled comorbidity','Physio/exercise and relevant dietetic or wellbeing review within 7 days; weekly follow-up',SKY,NAVY),('HIGH / COMPLEX','Multidisciplinary plan','Frailty, major deconditioning, significant malnutrition, high symptom burden or complex social need','Assessment within 72 h where feasible; named coordinator; documented treatment handover',RGBColor(250,237,224),CORAL)] for i,(head,sub,criteria,act,bg,accent) in enumerate(levels): x=.62+i*4.16 rect(s,x,1.65,3.78,4.93,bg,bg,True);rect(s,x,1.65,3.78,.56,accent,accent,True) text(s,x+.19,1.82,3.38,.18,head,13,WHITE,True,PP_ALIGN.CENTER) text(s,x+.23,2.47,3.30,.36,sub,18,NAVY,True,PP_ALIGN.CENTER) text(s,x+.25,3.12,3.25,.22,'Typical profile',11,MUTED,True,PP_ALIGN.CENTER) text(s,x+.25,3.42,3.25,.95,criteria,12,INK,False,PP_ALIGN.CENTER) rect(s,x+.30,4.67,3.18,.02,accent,accent) text(s,x+.25,4.89,3.25,.22,'Service response',11,MUTED,True,PP_ALIGN.CENTER) text(s,x+.25,5.20,3.25,.87,act,12,INK,False,PP_ALIGN.CENTER) footer(s) #7 core intervention s=prs.slides.add_slide(blank);title(s,'Personalised multimodal intervention','Build the plan around patient goals and treatment readiness','07') core=[('Exercise & function','Aerobic, resistance, mobility, balance; breathing training when indicated',TEAL),('Nutrition','Screening, symptom management, food-first advice, supplements and feeding escalation when needed',GOLD),('Psychological & behavioural','Information, distress support, sleep, coping, smoking and alcohol intervention',CORAL),('Medical optimisation','Anaemia, comorbidity, medication, pain, diabetes, respiratory and cardiac optimisation',NAVY),('Social & practical support','Transport, language, finances, carer support, community and digital options',RGBColor(92,151,176))] for i,(a,b,c) in enumerate(core): x=.65+(i%3)*4.12;y=1.65+(i//3)*2.18 rect(s,x,y,3.74,1.73,WHITE,LINE,True);rect(s,x+.20,y+.20,.42,.42,c,c,True) text(s,x+.73,y+.18,2.75,.28,a,14,NAVY,True);text(s,x+.23,y+.80,3.24,.64,b,11.5,INK) # sixth conceptual card x=.65+2*4.12;y=3.83 rect(s,x,y,3.74,1.73,MINT,MINT,True);text(s,x+.28,y+.23,3.17,.24,'Care coordination',14,NAVY,True,PP_ALIGN.CENTER);text(s,x+.30,y+.74,3.12,.58,'Named contact, shared record, MDT links and treatment-day handover.',11.5,INK,False,PP_ALIGN.CENTER) text(s,.70,6.33,11.9,.24,'Select only interventions that are clinically appropriate, feasible in the available treatment window and acceptable to the patient.',12,NAVY,True,PP_ALIGN.CENTER) footer(s) #8 Time window s=prs.slides.add_slide(blank);title(s,'Match the plan to the treatment window','Treatment timing shapes the achievable dose','08') windows=[('0-7 days','Rapid optimisation','Safety-netting; symptom and nutrition support; brief activity advice; treatment-day handover',CORAL),('1-4 weeks','Targeted programme','Supervised or home-based exercise; dietetic and wellbeing input; weekly review',GOLD),('>4 weeks','Full multimodal programme','Baseline and repeat function testing; progressive goals; formal treatment-readiness review',TEAL)] for i,(a,b,c,d) in enumerate(windows): x=.78+i*4.13 rect(s,x,1.77,3.63,3.96,WHITE,LINE,True);rect(s,x,1.77,3.63,.70,d,d,True) text(s,x+.18,1.98,3.28,.22,a,16,WHITE,True,PP_ALIGN.CENTER) text(s,x+.25,2.80,3.15,.40,b,18,NAVY,True,PP_ALIGN.CENTER) text(s,x+.30,3.50,3.02,1.05,c,13,INK,False,PP_ALIGN.CENTER) rect(s,x+.55,5.06,2.5,.28,RGBColor(238,246,246),RGBColor(238,246,246),True);text(s,x+.64,5.12,2.32,.15,'Do not postpone urgent therapy',9.5,NAVY,True,PP_ALIGN.CENTER) text(s,.78,6.25,11.75,.24,'If treatment dates change, reassess risk and redesign the plan instead of restarting the pathway.',12,MUTED,False,PP_ALIGN.CENTER) footer(s) #9 review handover s=prs.slides.add_slide(blank);title(s,'Review, escalation and treatment-day handover','Close the loop before treatment begins','09') rect(s,.63,1.62,5.75,4.72,SKY,SKY,True);text(s,.95,1.95,5.0,.30,'Weekly review checklist',20,NAVY,True) add_bullets(s,.97,2.58,5.05,3.1,[ 'Treatment date confirmed or changed?', 'Attendance, adherence and access barriers?', 'New symptoms, falls, pain, dyspnoea, infection or weight loss?', 'Function, intake, distress and goals improving?', 'Does the plan need escalation, reduction or pause?' ],14.5) rect(s,6.76,1.62,5.90,4.72,MINT,MINT,True);text(s,7.08,1.95,5.22,.30,'Treatment-day handover',20,NAVY,True) add_bullets(s,7.10,2.58,5.16,3.4,[ 'Baseline risk, function, frailty and falls assessment', 'Nutrition status, weight trend and feeding plan', 'Exercise plan, restrictions and safety considerations', 'Psychological, communication and social support needs', 'Medication, smoking/alcohol and unresolved risks', 'Post-treatment rehabilitation plan and named contact' ],14.2) footer(s) #10 measurement s=prs.slides.add_slide(blank);title(s,'Minimum dataset and quality measures','Use data to improve reach, safety and outcomes','10') cols=[('Timeliness',['Diagnosis to screen','Screen to first contact','High-risk response within 72 h']),('Reach & equity',['Offer, uptake and completion','Language, deprivation, rurality, ethnicity, disability','Digital and travel barriers']),('Patient change',['Function and activity','Weight / nutrition-risk score','Distress and patient goals']),('Treatment outcomes',['Readiness at treatment start','Treatment completion / interruptions','Complications, length of stay, patient-reported outcomes'])] for i,(a,items) in enumerate(cols): x=.55+i*3.17; rect(s,x,1.78,2.86,4.44,WHITE,LINE,True);rect(s,x,1.78,2.86,.58,[TEAL,NAVY,GOLD,CORAL][i],[TEAL,NAVY,GOLD,CORAL][i],True) text(s,x+.15,1.96,2.55,.20,a,14,WHITE,True,PP_ALIGN.CENTER) add_bullets(s,x+.22,2.72,2.42,2.86,items,13.5) text(s,.70,6.48,11.95,.22,'Review measures by tumour group and by equity strata. Use results for service improvement, not as a reason to withhold support.',11.5,NAVY,True,PP_ALIGN.CENTER) footer(s) #11 governance s=prs.slides.add_slide(blank);title(s,'Implementation checklist','Make the pathway usable in routine care','11') items=[('Governance','Executive sponsor, clinical lead, pathway owner and escalation policy'),('Workforce','Named coordinator plus defined access to exercise, nutrition, psychological and medical support'),('Workflow','Referral trigger embedded in MDT, clinic or pre-assessment; shared documentation template'),('Access','In-person, community, telephone and digital options with proactive equity adaptation'),('Training','Brief education for referrers on screening, red flags, safety and expectations'),('Co-production','Develop materials and service design with people living with cancer and carers')] for i,(a,b) in enumerate(items): x=.65+(i%2)*6.05;y=1.55+(i//2)*1.55 rect(s,x,y,5.55,1.18,LIGHT,LINE,True);rect(s,x+.20,y+.23,.38,.38,TEAL,TEAL,True);text(s,x+.32,y+.30,.14,.13,'✓',10,WHITE,True,PP_ALIGN.CENTER) text(s,x+.75,y+.17,4.45,.23,a,14,NAVY,True);text(s,x+.75,y+.51,4.40,.34,b,11.5,INK) footer(s) #12 citations s=prs.slides.add_slide(blank);title(s,'Evidence base and source documents','Use local policy and specialty guidance alongside this pathway','12') refs=[ 'Macmillan Cancer Support. Prehabilitation for People with Cancer: Clinical and Implementation Guidelines. 2025. Available via Macmillan professional prehabilitation resources.', 'Brunelli A, et al. European Respiratory Society and European Society of Thoracic Surgeons clinical practice guideline on fitness for curative intent treatment of lung cancer. Eur Respir J. 2025. PMID: 41232938.', 'Vargo M, et al. Recommendations for interventions to improve function in patients with lung cancer: a clinical practice guideline. Cancer Medicine. 2025. PMID: 40613665.', 'Ligibel JA, et al. Exercise, diet, and weight management during cancer treatment: ASCO guideline. J Clin Oncol. 2022. PMID: 35576506.', 'Hoff JL, et al. Prehabilitation in patients with frailty undergoing cancer-related surgery: a systematic review. Intern Med J. 2026. PMID: 41549884.' ] text(s,.67,1.54,12.0,.30,'Key message',18,NAVY,True) rect(s,.67,1.95,12.0,.78,MINT,MINT,True);text(s,.95,2.17,11.48,.31,'Prehabilitation improves readiness and can support function, nutrition and wellbeing. Expected benefits and clinical endpoints vary across cancer populations, so use an individualised, risk-based approach.',13,NAVY,True,PP_ALIGN.CENTER) text(s,.67,3.12,12,.27,'References',18,NAVY,True) add_bullets(s,.75,3.55,11.8,2.75,refs,11.2,INK) text(s,.72,6.60,11.8,.22,'Clinical disclaimer: This presentation is an implementation aid, not a substitute for local governance, specialist review or individual clinical judgement.',10.5,MUTED,False,PP_ALIGN.CENTER) footer(s,'Sources current to October 2026') prs.save(OUT) print(OUT) PY python "/tmp/workspace/cancer-prehabilitation-ppt/src/create_deck.py"
python - <<'PY' from pptx import Presentation p='/tmp/workspace/cancer-prehabilitation-ppt/output/Cancer_Prehabilitation_Clinical_Pathway.pptx' prs=Presentation(p) print('slides', len(prs.slides)) for i,s in enumerate(prs.slides,1): texts=[sh.text_frame.text.replace('\n',' | ') for sh in s.shapes if sh.has_text_frame and sh.text_frame.text.strip()] print(i, texts[0][:85] if texts else 'NO TEXT', 'shapes',len(s.shapes)) PY python - <<'PY' from zipfile import ZipFile p='/tmp/workspace/cancer-prehabilitation-ppt/output/Cancer_Prehabilitation_Clinical_Pathway.pptx' with ZipFile(p) as z: bad=z.testzip() print('zip_integrity', 'OK' if bad is None else bad) PY ls -lh "/tmp/workspace/cancer-prehabilitation-ppt/output/Cancer_Prehabilitation_Clinical_Pathway.pptx"
Cancer Prehabilitation Clinical Pathway
Presentation · PPTX
Add speaker notes and presenter guidance
~/
Macmillan 2025 cancer prehabilitation clinical implementation guidance early assessment referral exercise nutrition psychology
cancer AND prehabilitation
~/cancer-prehabilitation-ppt/
python - <<'PY' from pptx import Presentation p='/tmp/workspace/cancer-prehabilitation-ppt/output/Cancer_Prehabilitation_Clinical_Pathway.pptx' prs=Presentation(p) s=prs.slides[0] print('has notes_slide', hasattr(s,'notes_slide')) if hasattr(s,'notes_slide'): print(s.notes_slide) print([(sh.name,sh.has_text_frame, getattr(sh.text_frame,'text','') if sh.has_text_frame else '') for sh in s.notes_slide.shapes]) PY
cat > "/tmp/workspace/cancer-prehabilitation-ppt/src/add_notes.py" <<'PY' from pptx import Presentation SOURCE = '/tmp/workspace/cancer-prehabilitation-ppt/output/Cancer_Prehabilitation_Clinical_Pathway.pptx' OUT = '/tmp/workspace/cancer-prehabilitation-ppt/output/Cancer_Prehabilitation_Clinical_Pathway_with_Speaker_Notes.pptx' notes = [ """PRESENTER GUIDANCE Timing: 45-60 seconds. Audience: clinical leaders and pathway stakeholders. SAY: "This presentation sets out a practical clinical pathway for cancer prehabilitation. It is intended to help teams move from an ad hoc referral model to a consistent, needs-based service from diagnosis through treatment and into rehabilitation." EMPHASISE: Prehabilitation is not a separate elective programme. It is part of treatment readiness and supportive cancer care. TRANSITION: "First, let us define who the pathway is for and the principles that keep it safe and workable.""", """PRESENTER GUIDANCE Timing: 60-75 seconds. SAY: "The pathway applies to adults starting curative-intent cancer treatment, not only those having surgery. Its purpose is to identify modifiable risks early and provide the right intensity of support in the available window before treatment." EMPHASISE: The principles are early action, tailoring to individual need, protection of treatment timelines, and equitable access. Do not present this as a fixed-duration programme that every patient must complete. ASK THE AUDIENCE: "Which treatment pathways in our service currently offer the earliest practical referral point?" TRANSITION: "These principles translate into a simple six-step operational pathway.""", """PRESENTER GUIDANCE Timing: 60 seconds. SAY: "This is the whole pathway in one view. We begin when diagnosis or a treatment decision is made, screen rapidly, stratify risk, provide a tailored plan, review progress and hand over clearly at treatment start. Support then continues as rehabilitation." EMPHASISE: This is a loop rather than a one-off event. A changed treatment date, new symptom, or loss of function should trigger reassessment. PAUSE on the safety rule: urgent clinical problems leave the routine pathway and use established escalation routes. TRANSITION: "The first operational task is a short, reliable screening bundle.""", """PRESENTER GUIDANCE Timing: 75-90 seconds. SAY: "The screening bundle is deliberately broad. A patient may be fit enough to exercise but have nutrition risk, high distress, uncontrolled pain, or barriers that make attendance impossible. Each of these can affect treatment readiness." EMPHASISE: Record the expected treatment start date at the same encounter. It determines whether the team can offer rapid optimisation, a targeted programme, or a fuller multimodal plan. IMPLEMENTATION TIP: Build the screen into an existing MDT, diagnostic clinic, oncology clinic, or pre-assessment workflow rather than creating a parallel referral process. TRANSITION: "Screening must also identify the small group who need action today.""", """PRESENTER GUIDANCE Timing: 60 seconds. SAY: "Prehabilitation must never create delay in recognition or management of acute deterioration. These examples are prompts for immediate escalation using local policy, not a complete emergency checklist." EMPHASISE: Severe intake failure, acute cardiopulmonary symptoms, safeguarding concerns, and cancer emergencies should be managed by the appropriate urgent service. The prehabilitation team should communicate, coordinate and resume support when clinically appropriate. CAUTION: Do not advise audiences to use this slide for independent triage. Local emergency pathways take precedence. TRANSITION: "For patients without red flags, we stratify intensity of support.""", """PRESENTER GUIDANCE Timing: 75 seconds. SAY: "Everyone can receive an offer of basic support. Risk stratification determines the speed, intensity and team composition, not who deserves access." LOW RISK: Education, self-management and re-screening may be enough. MODERATE RISK: Add targeted exercise, dietetic, wellbeing or behaviour support, usually with weekly contact. HIGH OR COMPLEX RISK: Bring in a multidisciplinary plan quickly, nominate a coordinator, and document the treatment handover. EMPHASISE: Use locally approved assessment tools. Do not treat this slide as a diagnostic definition of frailty or malnutrition. TRANSITION: "The care plan is multimodal because risk is rarely confined to one domain.""", """PRESENTER GUIDANCE Timing: 75-90 seconds. SAY: "The intervention is selected with the patient, based on their goals, symptoms, fitness, safety considerations and treatment window. The core domains are exercise and function, nutrition, psychological and behavioural support, medical optimisation, and practical access support." EMPHASISE: Avoid automatic exercise prescriptions. For example, patients with unstable skeletal disease, severe cytopenia, acute infection, high fracture risk, or cardiopulmonary instability need individual clinical assessment and modification. IMPLEMENTATION TIP: A named coordinator and shared record prevent fragmented referrals from becoming a burden for patients. TRANSITION: "The time available before treatment determines the dose we can realistically deliver.""", """PRESENTER GUIDANCE Timing: 60 seconds. SAY: "Short windows still matter. In the first week, the priority is safety, symptom control, nutrition, brief activity advice and a clear handover. A one-to-four-week window can support targeted exercise and dietetic or psychological work. Longer windows permit progressive goals and repeat measures." EMPHASISE: The clinical team should redesign the plan when the date changes, rather than automatically delaying treatment to finish a programme. TRANSITION: "We then review progress and make treatment readiness visible to the treating team.""", """PRESENTER GUIDANCE Timing: 75 seconds. SAY: "Weekly review is a practical minimum for moderate and high-risk patients, adjusted to clinical need. It should check treatment timing, engagement barriers, new symptoms, function, intake and distress." EMPHASISE: The treatment-day handover is the safety net. It gives the surgical, anaesthetic, radiotherapy or systemic-treatment team a concise account of risk, restrictions, nutrition plan, psychosocial needs and the plan after treatment begins. IMPLEMENTATION TIP: Use a single structured handover template in the electronic record where possible. TRANSITION: "To sustain the service, we need measures that assess more than hospital outcomes.""", """PRESENTER GUIDANCE Timing: 60 seconds. SAY: "Measure whether the service reaches people quickly and fairly, whether patients experience meaningful change, and whether care is carried through to treatment." EMPHASISE: Completion rate alone can be misleading. Review uptake and outcomes by deprivation, ethnicity, disability, language, rurality and digital access. This helps identify whether the model unintentionally excludes people. CAUTION: Use outcomes for quality improvement rather than as a gatekeeping mechanism for access to treatment or support. TRANSITION: "The final operational question is how to make this routine rather than dependent on individual champions.""", """PRESENTER GUIDANCE Timing: 60-75 seconds. SAY: "Implementation needs ownership, workforce routes, an embedded workflow, multiple modes of access, staff training and co-production with people living with cancer." EMPHASISE: Start with one or two tumour pathways if necessary, but build the data and governance structure so that expansion is possible. Community, primary-care and voluntary-sector partnerships can increase capacity and reach. ASK THE AUDIENCE: "Who would be the executive sponsor, clinical lead and pathway owner in our setting?" TRANSITION: "These recommendations align with current cancer prehabilitation and specialty guidance.""", """PRESENTER GUIDANCE Timing: 45-60 seconds. SAY: "The pathway is informed by the 2025 Macmillan clinical and implementation guidance and complementary specialty guidance. The evidence supports improving readiness, function, nutrition and wellbeing, but effect sizes and postoperative endpoints differ across cancer groups and programmes." EMPHASISE: Local policy, specialty-specific guidance, and individual clinical judgement remain essential. The pathway should be adapted through local governance rather than copied without review. CLOSE: "The next step is to agree the first pilot pathway, referral trigger, minimum dataset and accountable leads." REFERENCES: Full sources are listed on this slide; retain them when adapting the deck.""" ] prs=Presentation(SOURCE) assert len(prs.slides)==len(notes) for slide, note_text in zip(prs.slides, notes): ns=slide.notes_slide target=None for shape in ns.shapes: if shape.has_text_frame and 'Notes Placeholder' in shape.name: target=shape break if target is None: for shape in ns.shapes: if shape.has_text_frame: target=shape break tf=target.text_frame tf.clear() # Preserve clear headings and paragraphs in PowerPoint notes pane for idx, para in enumerate(note_text.split('\n')): p=tf.paragraphs[0] if idx==0 else tf.add_paragraph() p.text=para prs.save(OUT) print(OUT) PY python "/tmp/workspace/cancer-prehabilitation-ppt/src/add_notes.py"
python - <<'PY' from pptx import Presentation p='/tmp/workspace/cancer-prehabilitation-ppt/output/Cancer_Prehabilitation_Clinical_Pathway_with_Speaker_Notes.pptx' prs=Presentation(p) print('slides',len(prs.slides)) for i, slide in enumerate(prs.slides,1): notes=[] for sh in slide.notes_slide.shapes: if sh.has_text_frame and 'Notes Placeholder' in sh.name: notes.append(sh.text_frame.text) txt=' '.join(notes).replace('\n',' | ') print(i, len(txt), txt[:90]) PY python - <<'PY' from zipfile import ZipFile p='/tmp/workspace/cancer-prehabilitation-ppt/output/Cancer_Prehabilitation_Clinical_Pathway_with_Speaker_Notes.pptx' with ZipFile(p) as z: print('zip_integrity', 'OK' if z.testzip() is None else 'FAILED') print('notes_files',len([x for x in z.namelist() if x.startswith('ppt/notesSlides/notesSlide') and x.endswith('.xml')])) PY ls -lh "/tmp/workspace/cancer-prehabilitation-ppt/output/Cancer_Prehabilitation_Clinical_Pathway_with_Speaker_Notes.pptx"
Cancer Prehabilitation Clinical Pathway with Speaker Notes
Presentation · PPTX