I am physiotherapist, I want to take a workshop of corporate workers on ergonomics and basic physiotherapy & life style modification. find and arrange content in good sequence for me.
office workers AND ergonomics
OSHA computer workstations eTool ergonomics neutral posture breaks official
| Time | Segment | Goal |
|---|---|---|
| 0-5 min | Opening and interaction | Establish relevance |
| 5-15 min | Why desk work causes pain | Explain risks simply |
| 15-40 min | Ergonomic workstation setup | Give practical, observable fixes |
| 40-55 min | Movement-break routine | Teach safe office exercises |
| 55-70 min | Lifestyle modification | Link sleep, activity, stress and hydration |
| 70-80 min | Pain self-management and red flags | Promote safe action and referral |
| 80-90 min | Quiz, workstation challenge, Q&A | Reinforce take-home habits |
“Work-related pain is usually not caused by one bad posture or one difficult day. It develops when the body faces too much repetition, too little movement, poor setup, inadequate recovery, or a sudden increase in workload.”
“Pain is influenced by posture and workload, but also by sleep, stress, physical capacity, and recovery.”
“Use the chair for support, not just as a place to perch.”
“The exercise routine is not a replacement for workstation changes. It is the reset that prevents one position from becoming too much.”
“Most office-related aches improve with sensible adjustments, movement, and graded activity. Red flags are uncommon, but they should not be ignored.”
Create a professional PPT on this workshop
~/
office worker neutral workstation posture ergonomic desk chair monitor diagram
mkdir -p "/tmp/workspace/corporate-ergonomics-ppt/src" "/tmp/workspace/corporate-ergonomics-ppt/output" && python - <<'PY' from pathlib import Path p=Path('/tmp/workspace/corporate-ergonomics-ppt/src/create_deck.py') p.write_text(r'''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 from pptx.oxml.xmlchemy import OxmlElement OUT='/tmp/workspace/corporate-ergonomics-ppt/output/Corporate_Ergonomics_Workshop.pptx' prs=Presentation(); prs.slide_width=Inches(13.333); prs.slide_height=Inches(7.5) blank=prs.slide_layouts[6] # palette NAVY=RGBColor(14,35,56); BLUE=RGBColor(31,108,151); TEAL=RGBColor(25,152,143) MINT=RGBColor(222,244,240); SKY=RGBColor(230,242,249); ORANGE=RGBColor(239,142,66) RED=RGBColor(203,74,76); INK=RGBColor(28,43,56); MUTED=RGBColor(91,108,122) LIGHT=RGBColor(247,250,252); WHITE=RGBColor(255,255,255); LINE=RGBColor(214,225,231) FONT='Aptos' def rect(s,x,y,w,h,fill, radius=False, line=None): sh=s.shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE if radius else MSO_SHAPE.RECTANGLE, Inches(x), Inches(y), Inches(w), Inches(h)) sh.fill.solid(); sh.fill.fore_color.rgb=fill sh.line.color.rgb=line if line else fill if radius: sh.adjustments[0]=0.12 return sh def txt(s,x,y,w,h,text,size=20,color=INK,bold=False,align=PP_ALIGN.LEFT, val=MSO_ANCHOR.TOP, font=FONT): box=s.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 tf.vertical_anchor=val 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.space_after=Pt(0); p.space_before=Pt(0) 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 bullets(s,x,y,w,h,items,size=18,color=INK, gap=10): box=s.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h)); tf=box.text_frame tf.clear(); tf.word_wrap=True; tf.margin_left=Inches(.03); tf.margin_right=0; tf.margin_top=0; tf.margin_bottom=0 for i,item in enumerate(items): p=tf.paragraphs[0] if i==0 else tf.add_paragraph(); p.text=item; p.level=0; p.bullet=True p.space_after=Pt(gap); p.font.size=Pt(size); p.font.name=FONT; p.font.color.rgb=color return box def title(s, kicker, heading, sub=None, n=None): txt(s,.6,.34,5.0,.28,kicker.upper(),10,TEAL,True) txt(s,.6,.67,11.9,.58,heading,28,NAVY,True) if sub: txt(s,.6,1.28,11.8,.36,sub,12,MUTED) rect(s,.6,1.72,1.1,.04,TEAL) if n: txt(s,12.2,.38,.5,.3,f'{n:02}',11,MUTED,True,PP_ALIGN.RIGHT) def footer(s, text='Corporate ergonomics workshop'): rect(s,.6,7.12,12.1,.012,LINE) txt(s,.6,7.2,7,.16,text,8,MUTED) def card(s,x,y,w,h,head,body,accent=TEAL, icon=None): rect(s,x,y,w,h,WHITE,True,LINE) rect(s,x,y,.07,h,accent) if icon: txt(s,x+.26,y+.25,.4,.36,icon,20,accent,True,PP_ALIGN.CENTER) tx=x+.28+(0.4 if icon else 0); tw=w-.5-(.35 if icon else 0) txt(s,tx,y+.23,tw,.32,head,15,NAVY,True) txt(s,tx,y+.68,tw,h-.82,body,11,MUTED) def circle(s,x,y,d,fill,label,fs=16,color=WHITE): sh=s.shapes.add_shape(MSO_SHAPE.OVAL, Inches(x), Inches(y), Inches(d), Inches(d)); sh.fill.solid(); sh.fill.fore_color.rgb=fill; sh.line.color.rgb=fill txt(s,x,y+.02,d,d-.04,label,fs,color,True,PP_ALIGN.CENTER,MSO_ANCHOR.MIDDLE) def add_notes(slide, text): # Notes are omitted for broad compatibility. pass # 1 title s=prs.slides.add_slide(blank); rect(s,0,0,13.333,7.5,NAVY); rect(s,8.85,0,4.48,7.5,BLUE) # abstract workstation motif for x,y,w,h,c in [(9.55,1.1,2.45,1.52,SKY),(10.25,2.75,1.05,.14,TEAL),(11.0,2.75,.14,1.25,TEAL),(9.25,4.0,3.0,.13,WHITE),(9.65,4.13,.18,1.35,WHITE),(11.72,4.13,.18,1.35,WHITE),(10.1,4.85,1.35,.12,WHITE)]: rect(s,x,y,w,h,c,True if h>.2 else False) circle(s,10.15,1.38,.48,ORANGE,'',12); rect(s,10.1,1.85,.58,.88,ORANGE,True); rect(s,9.75,2.25,.38,.12,ORANGE,True); rect(s,10.64,2.25,.38,.12,ORANGE,True) txt(s,.75,.8,6.9,.25,'WORK SMARTER. MOVE BETTER.',13,RGBColor(115,214,201),True) txt(s,.75,1.35,7.4,1.5,'Ergonomics,\nMovement & Lifestyle',34,WHITE,True) txt(s,.78,3.17,6.7,.58,'A practical workshop for healthy, comfortable and productive workdays.',16,RGBColor(219,234,242)) rect(s,.78,4.25,2.35,.5,TEAL,True); txt(s,.78,4.25,2.35,.5,'CORPORATE WORKSHOP',11,WHITE,True,PP_ALIGN.CENTER,MSO_ANCHOR.MIDDLE) txt(s,.78,6.58,6.7,.25,'Facilitator: ____________________ | Physiotherapist',11,RGBColor(184,204,218)) #2 s=prs.slides.add_slide(blank); title(s,'Welcome','Today is practical', 'A 75-90 minute workshop designed for office, hybrid and remote workers.',2); footer(s) for i,(h,b,ic,c) in enumerate([('Understand','Why desk work can lead to pain and fatigue.','01',BLUE),('Adjust','Set up chair, screen, keyboard and mouse.','02',TEAL),('Move','Use a simple 6-minute reset during the day.','03',ORANGE),('Sustain','Build lifestyle habits that support recovery.','04',RED)]): x=.75+i*3.1; circle(s,x,2.25,.68,c,ic,13); card(s,x,3.12,2.65,1.68,h,b,c) txt(s,.75,5.55,11.6,.45,'Outcome: each participant leaves with one workstation change and one movement habit to start tomorrow.',17,NAVY,True,PP_ALIGN.CENTER) #3 s=prs.slides.add_slide(blank); title(s,'Start with the room','Where do you feel it?', 'Invite a show of hands. This creates relevance before education begins.',3); footer(s) qs=[('Neck & head','Stiffness, tension headaches, forward head posture'),('Shoulders & upper back','Tightness, fatigue, rounded shoulders'),('Low back & hips','Discomfort after prolonged sitting'),('Wrist & hand','Mouse, keyboard or mobile-related symptoms')] for i,(h,b) in enumerate(qs): x=.75+(i%2)*6.05;y=2.1+(i//2)*1.75; card(s,x,y,5.55,1.35,h,b,[BLUE,TEAL,ORANGE,RED][i],str(i+1)) txt(s,.8,5.95,11.6,.45,'Ask: “Which one shows up most often at the end of your workday?”',18,NAVY,True,PP_ALIGN.CENTER) #4 s=prs.slides.add_slide(blank); title(s,'The simple model','Why discomfort builds up', 'Usually, it is the combination of exposure and recovery, not one “bad” posture.',4); footer(s) items=[('STATIC LOAD','Staying in one position too long',BLUE),('AWKWARD REACH','Screen, mouse or laptop positioned poorly',TEAL),('REPETITION','Typing, clicking and scrolling without variation',ORANGE),('RECOVERY GAP','Sleep, stress, activity and workload affect capacity',RED)] for i,(h,b,c) in enumerate(items): x=.75+i*3.08; circle(s,x+1.0,2.2,.75,c,str(i+1),18); txt(s,x,3.12,2.75,.3,h,13,c,True,PP_ALIGN.CENTER); txt(s,x,3.55,2.75,.75,b,12,MUTED,False,PP_ALIGN.CENTER) # arrows for x in [3.28,6.36,9.44]: txt(s,x,2.35,.35,.32,'+',18,MUTED,True,PP_ALIGN.CENTER) rect(s,1.55,5.05,10.2,.82,MINT,True); txt(s,1.75,5.25,9.8,.38,'Reduce strain by improving setup, changing position and building physical capacity.',18,NAVY,True,PP_ALIGN.CENTER) #5 s=prs.slides.add_slide(blank); title(s,'Key concept','The best posture is the next posture', 'Neutral alignment helps, but no position is healthy when held without breaks.',5); footer(s) # timeline rect(s,1.05,2.5,11.1,.08,LINE); xs=[1.2,3.7,6.2,8.7,11.2] for i,x in enumerate(xs): circle(s,x,2.18,.68,[BLUE,TEAL,ORANGE,TEAL,BLUE][i],['SET','SIT','STAND','WALK','RESET'][i],10) for x,h,b in [(1.0,'Set up','Start supported'),(3.4,'Sit','Work comfortably'),(5.9,'Stand','Change load'),(8.45,'Walk','Add circulation'),(10.9,'Reset','Return refreshed')]: txt(s,x,3.25,1.3,.25,h,13,NAVY,True,PP_ALIGN.CENTER); txt(s,x,3.6,1.3,.45,b,10,MUTED,False,PP_ALIGN.CENTER) txt(s,1.0,5.25,11.25,.55,'Practical habit: change position or take a short movement break every 30-60 minutes.',21,NAVY,True,PP_ALIGN.CENTER) #6 workstation checklist s=prs.slides.add_slide(blank); title(s,'Ergonomics live demo','Build the workstation from the ground up', 'Use a chair, desk, laptop and external keyboard/mouse if available.',6); footer(s) # person setup visual rect(s,7.8,2.05,4.1,.12,NAVY,True); rect(s,8.15,2.17,.16,2.6,NAVY,True); rect(s,11.5,2.17,.16,2.6,NAVY,True); rect(s,8.05,4.7,3.7,.14,NAVY,True) rect(s,9.25,1.0,1.75,.92,SKY,True); rect(s,9.93,1.92,.3,.16,NAVY,True) circle(s,8.85,1.52,.45,ORANGE,'',11); rect(s,8.9,1.93,.48,1.12,ORANGE,True); rect(s,8.25,2.65,.72,.14,ORANGE,True); rect(s,9.35,2.55,.65,.14,ORANGE,True); rect(s,8.95,3.0,.16,1.25,ORANGE,True); rect(s,9.25,3.0,.16,1.25,ORANGE,True) for x,y,label in [(9.25,.7,'Screen ahead'),(7.0,2.05,'Relaxed shoulders'),(6.9,3.2,'Elbows close'),(7.25,4.5,'Feet supported'),(10.95,2.45,'Keyboard close')]: txt(s,x,y,1.45,.28,label,10,TEAL,True); for i,(h,b) in enumerate([('1. Feet','Supported on floor or footrest'),('2. Hips & knees','Hips level with or slightly higher than knees'),('3. Low back','Sit back and use lumbar support'),('4. Screen','Directly ahead, near eye level'),('5. Hands','Keyboard and mouse close; wrists neutral')]): y=2.0+i*.78; circle(s,.75,y,.34,TEAL,str(i+1),10); txt(s,1.22,y-.01,2.0,.24,h,13,NAVY,True); txt(s,3.15,y-.01,3.85,.28,b,12,MUTED) #7 laptop s=prs.slides.add_slide(blank); title(s,'High-value fix','Laptop work needs a different setup', 'A raised laptop screen without a separate keyboard simply shifts the strain.',7); footer(s) card(s,.75,2.0,5.55,3.65,'Better for regular laptop work','1. Raise the screen using a stable stand or books\n2. Add an external keyboard\n3. Add a separate mouse\n4. Keep the screen directly ahead',TEAL,'✓') card(s,7.0,2.0,5.55,3.65,'If equipment is not available','Use shorter screen blocks\nChange position often\nTake calls standing or walking\nAvoid long work sessions from bed or sofa',ORANGE,'!') rect(s,1.2,5.95,10.9,.48,SKY,True); txt(s,1.35,6.05,10.6,.22,'For long calls: use a headset or speakerphone. Do not hold a phone between the shoulder and ear.',13,NAVY,True,PP_ALIGN.CENTER) #8 reset s=prs.slides.add_slide(blank); title(s,'Apply immediately','The 10-second workstation reset', 'Use this at the start of a focused task, after a meeting, or whenever discomfort appears.',8); footer(s) steps=[('1','Feet supported'),('2','Sit back'),('3','Low back supported'),('4','Relax shoulders'),('5','Bring keyboard close'),('6','Straight wrists'),('7','Screen ahead'),('8','Three slow breaths')] for i,(num,label) in enumerate(steps): x=.75+(i%4)*3.08;y=2.0+(i//4)*1.6; rect(s,x,y,2.7,1.05,WHITE,True,LINE); circle(s,x+.22,y+.25,.46,[BLUE,TEAL,ORANGE,RED][i%4],num,12); txt(s,x+.82,y+.33,1.55,.25,label,13,NAVY,True) #9 movement s=prs.slides.add_slide(blank); title(s,'Move together','6-minute office reset', 'Work in a comfortable range. Stop if movement causes sharp pain, dizziness, numbness or tingling.',9); footer(s) ex=[('Chin nods','8 reps','Gently draw chin back'),('Shoulder blades','10 reps','Back and slightly down'),('Chest opener','2 × 20 sec','Open chest, avoid force'),('Thoracic rotation','5/side','Rotate from upper back'),('Sit-to-stand','8-12 reps','Controlled; knees aligned'),('Walk / calf raises','30-60 sec','Finish with circulation')] for i,(h,r,c) in enumerate(ex): x=.75+(i%3)*4.1;y=2.0+(i//3)*1.8; card(s,x,y,3.65,1.35,h,r+'\n'+c,[BLUE,TEAL,ORANGE][i%3],str(i+1)) #10 lifestyle s=prs.slides.add_slide(blank); title(s,'Beyond the workstation','Four lifestyle pillars', 'Work comfort improves when the body has capacity and recovery.',10); footer(s) for i,(h,b,c,ico) in enumerate([('MOVE','Choose regular activity you enjoy',BLUE,'↗'),('STRENGTHEN','Build strength at least twice weekly',TEAL,'↑'),('RECOVER','Protect sleep and decompress from stress',ORANGE,'◐'),('FUEL','Hydrate and eat regular balanced meals',RED,'○')]): x=.75+i*3.08; rect(s,x,2.1,2.7,2.7,WHITE,True,LINE); circle(s,x+.9,2.42,.9,c,ico,23); txt(s,x+.2,3.55,2.3,.3,h,14,c,True,PP_ALIGN.CENTER); txt(s,x+.3,4.02,2.1,.42,b,11,MUTED,False,PP_ALIGN.CENTER) txt(s,.75,5.75,11.8,.4,'Start small: a 10-minute walk after lunch is a useful first step.',17,NAVY,True,PP_ALIGN.CENTER) #11 early response s=prs.slides.add_slide(blank); title(s,'When discomfort starts','Use the 4R response', 'A simple way to act early without fear or unnecessary rest.',11); footer(s) rs=[('REVIEW','Check chair, screen, mouse and workload',BLUE),('REPOSITION','Stand, walk, or change the task',TEAL),('REDUCE','Temporarily reduce continuous exposure',ORANGE),('REBUILD','Stay active and return gradually',RED)] for i,(h,b,c) in enumerate(rs): x=.75+i*3.08; circle(s,x+.87,2.25,.95,c,'R',26); txt(s,x,3.45,2.7,.27,h,14,c,True,PP_ALIGN.CENTER); txt(s,x+.1,3.88,2.5,.62,b,11,MUTED,False,PP_ALIGN.CENTER) rect(s,1.3,5.42,10.6,.6,MINT,True); txt(s,1.5,5.58,10.2,.25,'Seek a physiotherapy assessment if symptoms persist, recur, or interfere with work, sleep or daily life.',14,NAVY,True,PP_ALIGN.CENTER) #12 red flags s=prs.slides.add_slide(blank); title(s,'Safety first','When to seek medical care urgently', 'Red flags are uncommon, but must not be ignored.',12); footer(s) warn=[('New or worsening weakness','Arm or leg weakness, loss of coordination'),('Bladder or bowel changes','Especially with numbness in the groin/saddle area'),('Serious systemic symptoms','Fever, unexplained weight loss, cancer history'),('Trauma or severe unrelenting pain','Fall, accident or severe pain not settling'),('Chest / neurological symptoms','Chest pain, breathlessness, fainting, sudden neurological signs')] for i,(h,b) in enumerate(warn): x=.85+(i%2)*6.05;y=2.0+(i//2)*1.2; card(s,x,y,5.55,.9,h,b,RED,'!') #13 interactive s=prs.slides.add_slide(blank); title(s,'Make it stick','Workstation challenge', 'Pair activity: 2 minutes to identify and correct two changes in a colleague’s setup.',13); footer(s) for i,(h,b) in enumerate([('LOOK','Find one reach, twist or unsupported body part.'),('ADJUST','Make one practical change using what is available.'),('MOVE','Practice the 10-second reset and 60-second walk break.'),('COMMIT','Write one habit you will begin tomorrow.')]): x=.75+i*3.08; circle(s,x+.85,2.2,.95,[BLUE,TEAL,ORANGE,RED][i],str(i+1),20); txt(s,x,3.42,2.7,.3,h,15,NAVY,True,PP_ALIGN.CENTER); txt(s,x+.1,3.88,2.5,.65,b,11,MUTED,False,PP_ALIGN.CENTER) #14 take home s=prs.slides.add_slide(blank); title(s,'Take-home message','The 5-part workday formula', 'A sustainable workday is designed, not endured.',14); footer(s) formula=[('SET UP WELL',BLUE),('MOVE OFTEN',TEAL),('BUILD CAPACITY',ORANGE),('RECOVER WELL',RED),('ACT EARLY',NAVY)] for i,(h,c) in enumerate(formula): x=.62+i*2.54; rect(s,x,2.4,2.25,1.3,c,True); txt(s,x+.14,2.76,1.97,.56,h,14,WHITE,True,PP_ALIGN.CENTER,MSO_ANCHOR.MIDDLE) if i<4: txt(s,x+2.25,2.8,.28,.25,'+',18,MUTED,True,PP_ALIGN.CENTER) txt(s,.8,5.0,11.7,.5,'My one change tomorrow:',18,NAVY,True,PP_ALIGN.CENTER); rect(s,2.2,5.65,8.9,.5,WHITE,True,LINE) #15 close s=prs.slides.add_slide(blank); rect(s,0,0,13.333,7.5,NAVY); rect(s,0,5.85,13.333,1.65,TEAL) txt(s,.8,1.0,11.6,.33,'THANK YOU',13,RGBColor(115,214,201),True,PP_ALIGN.CENTER) txt(s,.8,1.65,11.7,.65,'Questions & discussion',33,WHITE,True,PP_ALIGN.CENTER) txt(s,1.8,2.72,9.7,.55,'What is the one workstation or lifestyle change you are ready to start?',17,RGBColor(205,224,235),False,PP_ALIGN.CENTER) rect(s,4.05,4.0,5.25,.62,WHITE,True); txt(s,4.05,4.0,5.25,.62,'Facilitator: ____________________',14,NAVY,True,PP_ALIGN.CENTER,MSO_ANCHOR.MIDDLE) txt(s,.8,6.38,11.7,.32,'Work smarter. Move better. Recover well.',17,WHITE,True,PP_ALIGN.CENTER) # 16 sources s=prs.slides.add_slide(blank); title(s,'Sources','Selected references', 'Use this slide for transparency. Adapt to your local workplace policy and referral pathways.',16); footer(s,'References') refs=[ 'Occupational Safety and Health Administration. Computer Workstations eTool: Good Working Positions and Workstation Evaluation. osha.gov/etools/computer-workstations', 'Park’s Textbook of Preventive and Social Medicine. Ergonomics: “fitting the job to the worker.”', 'Bradley and Daroff’s Neurology in Clinical Practice. Low Back Pain: emphasis on exercise, avoiding deconditioning and graded return to work.', 'Alencar MCB, da Silva NR, Serranheira F. Musculoskeletal pain and risk factors in office workers versus teleworkers: a systematic review. Work. 2025. PMID: 40297886.' ] bullets(s,.85,2.0,11.55,3.8,refs,15,INK,18) txt(s,.85,6.35,11.5,.25,'Educational workshop content. It does not replace individual medical assessment, diagnosis or treatment.',10,MUTED,False,PP_ALIGN.CENTER) prs.save(OUT) print(OUT) ''') PY python "/tmp/workspace/corporate-ergonomics-ppt/src/create_deck.py"
python - <<'PY' from pptx import Presentation from pathlib import Path p=Path('/tmp/workspace/corporate-ergonomics-ppt/output/Corporate_Ergonomics_Workshop.pptx') print('exists=',p.exists(),'bytes=',p.stat().st_size) prs=Presentation(str(p)) print('slides=',len(prs.slides)) for i,slide in enumerate(prs.slides,1): text=' '.join(sh.text.replace('\n',' / ') for sh in slide.shapes if getattr(sh,'has_text_frame',False) and sh.text.strip()) print(i, text[:150]) PY
Corporate Ergonomics Workshop
Presentation · PPTX
i want some changes in it 1. donot mention instructions for me 2. better realistic diagrams/ Pictures 3. below in place of corporate workshop mention HOME (House of movement and excellence). 4. speaker is Dr. Manvi Dhyani 5. no need of referances . 6. single slide for each exercise with realistic image
~/
OSHA computer workstation neutral posture monitor keyboard chair diagram