Breathing exercises exercises therapy
breathing exercises AND respiratory therapy
American Lung Association pursed lip breathing diaphragmatic breathing instructions
Breathing exercises for my exercise therapy exam
breathing exercises AND respiratory therapy
breathing exercises physiotherapy diaphragmatic pursed lip segmental breathing patient education
Create a quick-reference PDF for breathing exercises
~/
breathing exercises AND respiratory therapy
American Lung Association breathing exercises pursed lip diaphragmatic instructions
mkdir -p "/tmp/workspace/breathing-exercises-pdf/src" "/tmp/workspace/breathing-exercises-pdf/output" && python -c "import reportlab; print(reportlab.Version)"
~/breathing-exercises-pdf/src/create_pdf.py
from reportlab.lib import colors
from reportlab.lib.enums import TA_CENTER, TA_LEFT
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, KeepTogether
from reportlab.pdfbase.pdfmetrics import stringWidth
OUT = '/tmp/workspace/breathing-exercises-pdf/output/Breathing_Exercises_Quick_Reference.pdf'
NAVY = colors.HexColor('#12324A')
TEAL = colors.HexColor('#087E8B')
PALE = colors.HexColor('#EAF5F5')
GOLD = colors.HexColor('#F4C95D')
INK = colors.HexColor('#1E2933')
MUTED = colors.HexColor('#52616B')
LINE = colors.HexColor('#C9D6DB')
RED = colors.HexColor('#A52A2A')
styles = getSampleStyleSheet()
styles.add(ParagraphStyle(name='TitleCustom', parent=styles['Title'], fontName='Helvetica-Bold', fontSize=22, leading=26, textColor=NAVY, alignment=TA_CENTER, spaceAfter=3))
styles.add(ParagraphStyle(name='Subtitle', parent=styles['Normal'], fontName='Helvetica', fontSize=9.5, leading=12, textColor=MUTED, alignment=TA_CENTER, spaceAfter=10))
styles.add(ParagraphStyle(name='Section', parent=styles['Heading2'], fontName='Helvetica-Bold', fontSize=12, leading=14, textColor=colors.white, backColor=TEAL, borderPadding=(4,6,4,6), spaceBefore=7, spaceAfter=6))
styles.add(ParagraphStyle(name='BodySmall', parent=styles['BodyText'], fontName='Helvetica', fontSize=8.4, leading=10.5, textColor=INK))
styles.add(ParagraphStyle(name='Body', parent=styles['BodyText'], fontName='Helvetica', fontSize=9, leading=11.5, textColor=INK))
styles.add(ParagraphStyle(name='CardHead', parent=styles['BodyText'], fontName='Helvetica-Bold', fontSize=9.2, leading=11, textColor=NAVY, spaceAfter=2))
styles.add(ParagraphStyle(name='Tiny', parent=styles['BodyText'], fontName='Helvetica', fontSize=7.3, leading=9, textColor=MUTED))
styles.add(ParagraphStyle(name='Warn', parent=styles['BodyText'], fontName='Helvetica-Bold', fontSize=8.5, leading=10.5, textColor=RED))
def P(text, style='Body'):
return Paragraph(text, styles[style])
def card(title, purpose, method, key=None):
content = [P(title, 'CardHead'), P(f'<b>Purpose:</b> {purpose}', 'BodySmall'), P(f'<b>Method:</b> {method}', 'BodySmall')]
if key:
content.append(P(f'<b>Key point:</b> {key}', 'Tiny'))
t = Table([[content]], colWidths=[8.6*cm])
t.setStyle(TableStyle([
('BACKGROUND',(0,0),(-1,-1),colors.white), ('BOX',(0,0),(-1,-1),0.65,LINE),
('LEFTPADDING',(0,0),(-1,-1),7), ('RIGHTPADDING',(0,0),(-1,-1),7),
('TOPPADDING',(0,0),(-1,-1),6), ('BOTTOMPADDING',(0,0),(-1,-1),6),
]))
return t
def footer(canvas, doc):
canvas.saveState()
canvas.setStrokeColor(LINE)
canvas.line(1.35*cm, 1.1*cm, A4[0]-1.35*cm, 1.1*cm)
canvas.setFont('Helvetica', 7.2)
canvas.setFillColor(MUTED)
canvas.drawString(1.35*cm, .72*cm, 'Breathing Exercises - Exercise Therapy Quick Reference')
canvas.drawRightString(A4[0]-1.35*cm, .72*cm, f'Page {doc.page}')
canvas.restoreState()
pdf = SimpleDocTemplate(OUT, pagesize=A4, leftMargin=1.35*cm, rightMargin=1.35*cm, topMargin=1.15*cm, bottomMargin=1.45*cm)
story = []
story += [P('BREATHING EXERCISES', 'TitleCustom'), P('Exercise Therapy Quick Reference | Exam Revision Sheet', 'Subtitle')]
story.append(P('Definition and aims', 'Section'))
aims = [
[P('<b>Definition</b>', 'CardHead'), P('Therapeutic techniques used to improve ventilation, lung expansion, respiratory-muscle efficiency, relaxation, and airway clearance.', 'BodySmall')],
[P('<b>Main aims</b>', 'CardHead'), P('Improve alveolar ventilation and chest expansion; reduce dyspnea and work of breathing; prevent postoperative atelectasis; mobilize secretions; improve exercise tolerance.', 'BodySmall')],
]
t = Table(aims, colWidths=[4.1*cm, 13.2*cm])
t.setStyle(TableStyle([('BACKGROUND',(0,0),(0,-1),PALE), ('BOX',(0,0),(-1,-1),0.6,LINE), ('INNERGRID',(0,0),(-1,-1),0.45,LINE), ('VALIGN',(0,0),(-1,-1),'TOP'), ('LEFTPADDING',(0,0),(-1,-1),7),('RIGHTPADDING',(0,0),(-1,-1),7),('TOPPADDING',(0,0),(-1,-1),6),('BOTTOMPADDING',(0,0),(-1,-1),6)]))
story += [t, Spacer(1,7)]
story.append(P('Core techniques', 'Section'))
left = [
card('1. Diaphragmatic / abdominal breathing', 'Promotes diaphragmatic excursion and reduces unnecessary accessory-muscle activity.', 'Semi-Fowler or sitting. One hand on chest, one on abdomen. Inhale through the nose so the abdomen rises; relax and exhale slowly, often through pursed lips.', 'Chest movement should be minimal; use short sets with rest.'),
Spacer(1,6),
card('2. Pursed-lip breathing', 'Controls dyspnea, slows respiration, and prolongs expiration, especially in COPD.', 'Relax shoulders. Inhale through the nose for about 2 counts. Purse lips as if blowing out a candle. Exhale gently for about 4 counts. Do not force.', 'Expiration is longer than inspiration, commonly 2:1.'),
Spacer(1,6),
card('3. Deep breathing / thoracic expansion', 'Encourages full lung expansion and helps prevent atelectasis.', 'Upright or semi-Fowler. Slow deep inspiration, hold 2-3 seconds if tolerated, then relaxed full expiration. Repeat 5-10 times, followed by breathing control.', 'May be combined with arm elevation or trunk movements.'),
]
right = [
card('4. Segmental (localized) breathing', 'Improves expansion in a selected chest region.', 'Place therapist hands over the target area: apical, lateral costal, or posterior basal. Ask the patient to breathe “into the hands”. Gentle manual resistance may be added during inspiration.', 'Use 3-5 breaths per selected region; avoid fatigue.'),
Spacer(1,6),
card('5. Breathing control', 'Relaxes the patient and reduces breathlessness between active maneuvers.', 'Comfortable supported position. Gentle, quiet breathing at the patient’s own rate, preferably nasal; relax shoulders and accessory muscles.', 'Used between exercises and during dyspnea.'),
Spacer(1,6),
card('6. Incentive spirometry', 'Provides visual feedback for sustained maximal inspiration.', 'Sit upright. Seal lips around mouthpiece, inhale slowly and deeply to raise indicator, hold briefly, then exhale normally and rest.', 'Use only as prescribed; combine with mobility, positioning, and coughing when indicated.'),
]
t = Table([[left, right]], colWidths=[8.7*cm,8.7*cm], hAlign='CENTER')
t.setStyle(TableStyle([('VALIGN',(0,0),(-1,-1),'TOP'), ('LEFTPADDING',(0,0),(-1,-1),0), ('RIGHTPADDING',(0,0),(-1,-1),0)]))
story += [t, Spacer(1,7)]
story.append(P('Airway clearance: ACBT', 'Section'))
story.append(P('<b>Active cycle of breathing technique (ACBT)</b> = <b>Breathing control</b> → <b>Thoracic expansion exercises</b> → <b>Forced expiratory technique (huff)</b>. A huff is a forced exhalation through an open mouth and throat, as if steaming a mirror. It assists secretion movement and may be less exhausting than repeated coughing.', 'Body'))
story.append(Spacer(1,6))
story.append(P('Quick selection guide', 'Section'))
rows = [
[P('<b>Clinical goal</b>', 'BodySmall'), P('<b>Useful exercise</b>', 'BodySmall'), P('<b>Remember</b>', 'BodySmall')],
[P('Breathlessness, COPD', 'BodySmall'), P('Pursed-lip + breathing control', 'BodySmall'), P('Long, gentle expiration; do not force.', 'BodySmall')],
[P('Poor basal expansion or postoperative risk', 'BodySmall'), P('Deep breathing, thoracic expansion, segmental breathing', 'BodySmall'), P('Position upright; include early mobilization.', 'BodySmall')],
[P('Inefficient diaphragm / anxiety-related fast breathing', 'BodySmall'), P('Diaphragmatic breathing', 'BodySmall'), P('Abdomen rises on inspiration; shoulders relaxed.', 'BodySmall')],
[P('Retained secretions', 'BodySmall'), P('ACBT with huff/cough', 'BodySmall'), P('Progress only if patient is stable and not fatigued.', 'BodySmall')],
]
t = Table(rows, colWidths=[4.5*cm,6.2*cm,6.7*cm], repeatRows=1)
t.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,0),NAVY),('TEXTCOLOR',(0,0),(-1,0),colors.white),('BACKGROUND',(0,1),(-1,-1),colors.white),('ROWBACKGROUNDS',(0,1),(-1,-1),[colors.white,PALE]),('GRID',(0,0),(-1,-1),0.5,LINE),('VALIGN',(0,0),(-1,-1),'TOP'),('LEFTPADDING',(0,0),(-1,-1),6),('RIGHTPADDING',(0,0),(-1,-1),6),('TOPPADDING',(0,0),(-1,-1),5),('BOTTOMPADDING',(0,0),(-1,-1),5)]))
story += [t, Spacer(1,7)]
story.append(P('Safety and exam points', 'Section'))
warn = Table([[P('<b>Stop and reassess:</b> dizziness, chest pain, marked fatigue, severe breathlessness, cyanosis, confusion, or falling oxygen saturation.', 'Warn')]], colWidths=[17.4*cm])
warn.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,-1),colors.HexColor('#FFF3E7')),('BOX',(0,0),(-1,-1),0.65,colors.HexColor('#E6B17E')),('LEFTPADDING',(0,0),(-1,-1),7),('RIGHTPADDING',(0,0),(-1,-1),7),('TOPPADDING',(0,0),(-1,-1),6),('BOTTOMPADDING',(0,0),(-1,-1),6)]))
story += [warn, Spacer(1,5), P('<b>Precautions:</b> avoid repeated exaggerated deep breaths in hyperventilation-prone patients; do not force expiration in severe obstruction; use adequate analgesia and supported cough after surgery. Prescribe frequency, position, repetitions, and rest according to the person’s diagnosis and tolerance.', 'BodySmall')]
story += [Spacer(1,6), P('<b>Evidence note:</b> Breathing retraining is part of pulmonary rehabilitation. A 2024 systematic review found symptom benefits may occur in serious respiratory illness, but the best technique and degree of benefit vary by condition (PMID: 39477355).', 'Tiny')]
story += [Spacer(1,3), P('<b>Key sources:</b> Fishman’s Pulmonary Diseases and Disorders, “Breathing Retraining Techniques”; Murray & Nadel’s Textbook of Respiratory Medicine, “Inspiratory muscle training, breathing training, and chest physical therapy”; American Lung Association, “Breathing Exercises for Better Lung Health”.', 'Tiny')]
pdf.build(story, onFirstPage=footer, onLaterPages=footer)
print(OUT)
python "/tmp/workspace/breathing-exercises-pdf/src/create_pdf.py" && ls -lh "/tmp/workspace/breathing-exercises-pdf/output/Breathing_Exercises_Quick_Reference.pdf"
python -c "from pypdf import PdfReader; p='/tmp/workspace/breathing-exercises-pdf/output/Breathing_Exercises_Quick_Reference.pdf'; r=PdfReader(p); text='\\n'.join(page.extract_text() or '' for page in r.pages); print('pages=',len(r.pages)); print('chars=',len(text)); print(text[:1200]); assert len(r.pages) in (1,2); assert 'Pursed-lip breathing' in text; assert 'Safety and exam points' in text"
Breathing Exercises Quick Reference
PDF Document · PDF
Respiratory resistance tecchnique
inspiratory muscle training AND respiratory disease
respiratory muscle training resistance technique inspiratory muscle training clinical practice
Butterfly technique
Which butterfly technique do you mean?
Breathing Exercises Quick Reference
PDF Document · PDF
Explain the butterfly technique used in respiratory therapy
chest expansion exercises respiratory therapy
"butterfly technique" respiratory therapy breathing exercise
https://www.slideshare.net/slideshow/chest-mobilization-exer…