All breathing exercises
All breathing exercises and their actions how to respond with patient and in what situation what breathing exercises is initiated all details
breathing exercises types clinical nursing patient teaching diaphragmatic pursed lip deep breathing
all types breathing exercises nursing indications technique patient teaching 4-7-8 box breathing segmental
https://www.kauveryhospital.com/nightingale/effectiveness-of…
Prerequisite: Breathing exercises can only be given if the patient is conscious and cooperative.
| Sub-type | Region Targeted | Hand Position |
|---|---|---|
| Apical expansion | Upper lobes / apical segments | Below clavicles on upper chest |
| Lateral costal breathing | Lateral lower lobes | Lateral lower rib cage |
| Posterior basal expansion | Posterior lower lobes | Posterior lower chest |
| Exercise | Situation to Initiate | Key Action | Primary Use |
|---|---|---|---|
| Diaphragmatic | Dyspnea, COPD, anxiety, postop | Belly rises on inhale, belly falls on exhale | COPD, rehab, anxiety, postop |
| Pursed-Lip | Dyspnea, activity-related breathlessness | Inhale 2 counts through nose; exhale 4 counts through pursed lips | COPD, emphysema, acute dyspnea |
| Deep Breathing | Postoperative, bed-bound, atelectasis risk | Slow maximal inhale, hold 2-3s, slow exhale | Postop pulmonary care |
| Incentive Spirometry | Postoperative (high-risk), pneumonia | Slow sustained inhale through device to target volume | Postop, atelectasis prevention |
| Segmental | Lobar collapse, specific lobe underventilation | Manual resistance over target chest area + inhale into that area | Lobar atelectasis, post-thoracic surgery |
| ACBT | Retained secretions, cystic fibrosis, bronchiectasis | BC → TEE (deep breath + hold) → Huff → repeat | Airway clearance |
| Huff / FET | Retained secretions, post-surgery, fatigue | Open-glottis forced exhalation ("HA/HUF") | Secretion mobilization |
| Box Breathing | Anxiety, pre-procedure, acute agitation | 4-4-4-4 equal counts: inhale-hold-exhale-hold | Anxiety, panic, stress |
| 4-7-8 Breathing | Insomnia, sleep difficulty, anxiety | Inhale 4s, hold 7s, exhale 8s | Insomnia, anxiety |
| Cyclic Sighing | Acute distress, mood dysregulation | Double inhale + long slow exhale | Acute anxiety, rapid mood relief |
| Controlled Pattern | COPD, activity-related dyspnea | Combined diaphragmatic + pursed-lip during activities | COPD rehab, daily activities |
All breathing exercises and their actions how to respond with patient and in what situation what breathing exercises is initiated all details
Key Rule: Breathing exercises are only given to patients who are conscious and cooperative.
| Type | Target Region | Hand Placement |
|---|---|---|
| Apical expansion | Upper lobes / apex | Below clavicles, upper chest |
| Lateral costal | Lateral lower lobes | Lateral lower rib cage |
| Posterior basal | Posterior lower lobes | Posterior lower chest |
"Breathe in and out gently through your nose - or mouth if easier. Let all the tension go with each breath out. Keep your shoulders relaxed. Slowly make the breaths quieter and calmer. Close your eyes if it helps. Keep going until you feel settled."
"Now keep your chest and shoulders relaxed. Take a long, slow, deep breath in through your nose. At the end - hold the air in for 2-3 seconds before breathing out. Now breathe out gently and relaxed - like a quiet sigh. Repeat 3-5 times. If you feel dizzy, go back to gentle breathing."
"Now we're going to huff. Open your mouth wide. Take a medium breath in, then forcefully breathe out saying 'HUF' - like steaming up a mirror. You may need 2-3 huffs of different lengths. When you feel mucus move up, cough to clear it. Then go back to gentle breathing and repeat the cycle."
| Breathing Exercise | When to Initiate | Primary Action | Key Instruction to Patient |
|---|---|---|---|
| Diaphragmatic | Dyspnea, COPD, anxiety, postop, rehab | Belly rises on inhale; slows rate | "Smell the roses, blow out the candle" |
| Pursed-Lip | Acute dyspnea, activity breathlessness, COPD | Prolongs exhale, stents airways | In 2 counts / out 4 counts through pursed lips |
| Deep Breathing | Postop atelectasis prevention, bed rest | Maximal lung expansion, holds alveoli open | Slow deep inhale, hold 2-3s, slow exhale |
| Incentive Spirometry | High-risk postop, diagnosed atelectasis | Sustained maximal inhalation with visual feedback | Slow inhale to raise ball, hold 2-3s |
| Segmental | Lobar collapse, specific underventilation | Directs air to target lung segment | Push chest outward against nurse's hands |
| ACBT | Retained secretions, cystic fibrosis, bronchiectasis | Progressive mucus mobilization and clearance | BC → deep breaths + hold → huff → repeat |
| Huff / FET | Retained secretions, post-surgery, fatigue | Open-glottis airflow shears mucus centrally | Say "HUF" / "HA" with mouth open |
| Box Breathing | Anxiety, pre-procedure, panic, ICU agitation | Parasympathetic activation, CO2 normalization | Inhale 4 / hold 4 / exhale 4 / hold 4 |
| 4-7-8 Breathing | Insomnia, chronic anxiety, sleep difficulty | Strong vagal activation, heart rate reduction | Inhale 4 / hold 7 / exhale 8 |
| Cyclic Sighing | Acute distress, fastest mood relief needed | Re-inflates alveoli, rapid parasympathetic activation | Double inhale + long slow exhale x 5 min |
| Controlled Pattern | COPD with exertion, pulmonary rehab | Automated efficient breathing during activity | Combine diaphragmatic + PLB with all activity |
| Principle | Detail |
|---|---|
| Assess first | Auscultate, check SpO2, confirm consciousness and cooperation |
| Position | Upright (Fowler's/semi-Fowler's) for most; gravity-assisted for secretion drainage |
| Pain control | Ensure analgesia before postop exercises - pain prevents effort |
| Preoperative teaching | Always teach DBE and IS BEFORE surgery - improves compliance and outcomes |
| Demonstrate | Show the technique yourself before asking patient to perform |
| Splinting | Teach surgical patients to hold a pillow against the incision |
| Monitor | Dizziness, SpO2, respiratory rate, breath sounds, sputum |
| Frequency | Every 1-2 hours while awake (postop); 2-3x daily (chronic disease) |
| Combine techniques | Diaphragmatic + PLB together = controlled breathing pattern |
| Document | Technique taught, patient tolerance, sputum characteristics, SpO2 before/after |
| Stop if | Severe dizziness, SpO2 drop, bronchospasm, chest pain - return to quiet breathing control |
Create pdf format of MASTER QUICK REFERENCE TABLE and GENERAL NURSING PRINCIPLES FOR ALL BREATHING EXERCISES
ls -la /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace && echo "created"
mkdir -p /tmp/workspace/breathing-exercises && cat > /tmp/workspace/breathing-exercises/create_pdf.py << 'PYEOF' from reportlab.lib.pagesizes import A4, landscape from reportlab.lib import colors from reportlab.lib.units import cm, mm from reportlab.platypus import (SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer, HRFlowable, PageBreak) from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY from reportlab.platypus import KeepTogether OUTPUT = "/tmp/workspace/breathing-exercises/Breathing_Exercises_Quick_Reference.pdf" # ── Colour palette ────────────────────────────────────────────────────────── NAVY = colors.HexColor("#1B3A6B") STEEL = colors.HexColor("#2E6DA4") LIGHT_BLUE = colors.HexColor("#D6E8F7") MID_BLUE = colors.HexColor("#A8CCEB") TEAL = colors.HexColor("#1A7A7A") LIGHT_TEAL = colors.HexColor("#D0EFEF") MID_TEAL = colors.HexColor("#7ABFBF") AMBER = colors.HexColor("#F5A623") LIGHT_AMBER = colors.HexColor("#FEF3DC") WHITE = colors.white DARK_GREY = colors.HexColor("#333333") MED_GREY = colors.HexColor("#666666") LIGHT_GREY = colors.HexColor("#F4F4F4") BORDER = colors.HexColor("#CCCCCC") # ── Document setup ────────────────────────────────────────────────────────── doc = SimpleDocTemplate( OUTPUT, pagesize=landscape(A4), topMargin=1.5*cm, bottomMargin=1.5*cm, leftMargin=1.5*cm, rightMargin=1.5*cm, title="Breathing Exercises Quick Reference", author="Clinical Reference Guide" ) styles = getSampleStyleSheet() W = landscape(A4)[0] - 3*cm # usable width # ── Custom paragraph styles ───────────────────────────────────────────────── def pstyle(name, parent='Normal', **kw): s = ParagraphStyle(name, parent=styles[parent], **kw) return s title_style = pstyle('TitleS', fontSize=20, textColor=WHITE, fontName='Helvetica-Bold', alignment=TA_CENTER, spaceAfter=2, leading=24) subtitle_style = pstyle('SubS', fontSize=11, textColor=LIGHT_BLUE, fontName='Helvetica', alignment=TA_CENTER, spaceAfter=0) section_style = pstyle('SecHd', fontSize=13, textColor=WHITE, fontName='Helvetica-Bold', alignment=TA_LEFT, spaceAfter=4, leading=16) body_style = pstyle('Body', fontSize=8.5, textColor=DARK_GREY, fontName='Helvetica', leading=12, spaceAfter=2) body_b_style = pstyle('BodyB', fontSize=8.5, textColor=DARK_GREY, fontName='Helvetica-Bold', leading=12) cell_style = pstyle('Cell', fontSize=7.8, textColor=DARK_GREY, fontName='Helvetica', leading=11) cell_hdr_style = pstyle('CellHdr', fontSize=8.2, textColor=WHITE, fontName='Helvetica-Bold', leading=12) cell_b_style = pstyle('CellB', fontSize=7.8, textColor=DARK_GREY, fontName='Helvetica-Bold', leading=11) note_style = pstyle('Note', fontSize=7.5, textColor=MED_GREY, fontName='Helvetica-Oblique', alignment=TA_CENTER, leading=10) # ── Helper: coloured section header bar ───────────────────────────────────── def section_header(text, bg=NAVY, width=None): w = width or W data = [[Paragraph(text, section_style)]] t = Table(data, colWidths=[w]) t.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,-1), bg), ('TOPPADDING', (0,0), (-1,-1), 6), ('BOTTOMPADDING', (0,0), (-1,-1), 6), ('LEFTPADDING', (0,0), (-1,-1), 10), ('RIGHTPADDING', (0,0), (-1,-1), 10), ('ROUNDEDCORNERS', [4]), ])) return t # ════════════════════════════════════════════════════════════════════════════ # PAGE 1 HEADER # ════════════════════════════════════════════════════════════════════════════ def make_page_header(): hdr_data = [[ Paragraph("BREATHING EXERCISES", title_style), Paragraph("MASTER QUICK REFERENCE & NURSING PRINCIPLES", subtitle_style) ]] hdr = Table(hdr_data, colWidths=[W*0.45, W*0.55]) hdr.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,-1), NAVY), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ('TOPPADDING', (0,0), (-1,-1), 12), ('BOTTOMPADDING', (0,0), (-1,-1), 12), ('LEFTPADDING', (0,0), (-1,-1), 14), ('RIGHTPADDING', (0,0), (-1,-1), 14), ('LINEAFTER', (0,0), (0,-1), 0.5, colors.HexColor("#5C8FC4")), ])) return hdr # ════════════════════════════════════════════════════════════════════════════ # MASTER QUICK REFERENCE TABLE # ════════════════════════════════════════════════════════════════════════════ def make_qr_table(): headers = [ Paragraph("Breathing Exercise", cell_hdr_style), Paragraph("When to Initiate", cell_hdr_style), Paragraph("Primary Action / Mechanism", cell_hdr_style), Paragraph("Key Instruction to Patient", cell_hdr_style), ] rows = [ # [Exercise, When, Action, Key Instruction] ["Diaphragmatic\n(Abdominal / Belly)", "Dyspnea, COPD, asthma, anxiety, postop, pulmonary rehab", "Belly rises on inhale; slows respiratory rate; increases tidal volume; activates parasympathetic system", '"Smell the roses (inhale) - blow out the candle (exhale through pursed lips)"'], ["Pursed-Lip\nBreathing", "Acute dyspnea, activity-related breathlessness, COPD, emphysema, hyperventilation", "Prolongs exhalation; creates back-pressure to stent airways open; reduces air trapping", "Inhale through nose 2 counts / Exhale through pursed lips 4 counts. Never force."], ["Deep Breathing\nExercises (DBE)", "Postoperative (MOST important), bed-bound, atelectasis risk, pneumonia", "Maximal lung expansion; re-opens collapsed alveoli; reverses / prevents atelectasis", "Slow deep inhale through nose - hold 2-3 sec at peak - slow exhale. 10x every 1-2 hrs."], ["Incentive\nSpirometry (IS)", "High-risk postop patients; diagnosed atelectasis; pre-surgery education protocols", "Sustained maximal inspiration with visual feedback; equivalent to DBE; motivational aid", "Hold device upright; slow sustained inhale to raise ball to goal; hold 2-3 sec; rest."], ["Segmental\nBreathing", "Lobar collapse / specific underventilation; post-thoracotomy; pneumonia (single lobe); scoliosis", "Directs inspired air to target lung segment via manual counter-pressure; expands specific area", "Push chest outward against nurse's hands. Types: Apical / Lateral costal / Posterior basal."], ["Active Cycle of\nBreathing (ACBT)", "Retained secretions; cystic fibrosis; bronchiectasis; COPD exacerbation; post-surgery mucus retention", "3-phase cycle progressively mobilises secretions from peripheral to central airways", "BC (gentle breathing) → TEE (deep breath + hold) → Huff / FET → repeat cycle."], ["Huff Coughing /\nFET", "Retained secretions; post-thoracic or abdominal surgery; fatigue; weak cough effort", "Open-glottis forced exhalation; generates high airflow to shear mucus centrally; less traumatic than cough", 'Say "HUF" or "HA" with mouth OPEN - like steaming a mirror. Splint incision first.'], ["Box Breathing\n(4-4-4-4)", "Pre-procedure anxiety; panic attack; ICU agitation; hyperventilation; acute stress", "Equal-phase breathing normalises CO2/O2; activates parasympathetic; refocuses attention", "Inhale 4 / Hold 4 / Exhale 4 / Hold 4. Nurse counts aloud with patient."], ["4-7-8\nBreathing", "Insomnia; sleep difficulty; chronic anxiety; pre-procedure relaxation", "Prolonged hold activates strong vagal response; lowers heart rate; improves sleep quality", "Inhale nose 4 sec / Hold 7 sec / Exhale mouth 8 sec. Repeat 3-4 cycles. Halve for beginners."], ["Cyclic Sighing\n(Physiological Sigh)", "Acute emotional distress; panic; fastest mood relief needed; ICU or palliative settings", "Double inhale re-inflates microatelectatic alveoli; long exhale activates parasympathetic rapidly", "Inhale through nose - then top-up second deeper inhale - exhale slowly and fully. 5 min."], ["Controlled\nBreathing Pattern", "COPD with exertion; pulmonary rehab; activity-related dyspnea; chronic respiratory disease", "Combines diaphragmatic + pursed-lip breathing; creates automated efficient pattern during activity", "Belly breathe in 2 counts / Pursed-lip exhale 4 counts - with ALL daily activities."], ] # Alternating row colours row_colours = [LIGHT_BLUE, WHITE] table_data = [headers] for i, row in enumerate(rows): styled_row = [ Paragraph(row[0], cell_b_style), Paragraph(row[1], cell_style), Paragraph(row[2], cell_style), Paragraph(row[3], cell_style), ] table_data.append(styled_row) col_w = [W*0.13, W*0.22, W*0.33, W*0.32] t = Table(table_data, colWidths=col_w, repeatRows=1) ts = TableStyle([ # Header row ('BACKGROUND', (0,0), (-1,0), STEEL), ('TEXTCOLOR', (0,0), (-1,0), WHITE), ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'), ('FONTSIZE', (0,0), (-1,0), 8.5), ('ALIGN', (0,0), (-1,0), 'CENTER'), ('VALIGN', (0,0), (-1,-1), 'TOP'), ('TOPPADDING', (0,0), (-1,-1), 5), ('BOTTOMPADDING', (0,0), (-1,-1), 5), ('LEFTPADDING', (0,0), (-1,-1), 6), ('RIGHTPADDING', (0,0), (-1,-1), 6), ('GRID', (0,0), (-1,-1), 0.4, BORDER), ('ROWBACKGROUNDS', (0,1), (-1,-1), [LIGHT_BLUE, WHITE]), # First column accent ('BACKGROUND', (0,1), (0,-1), colors.HexColor("#EEF5FC")), ('FONTNAME', (0,1), (0,-1), 'Helvetica-Bold'), ('TEXTCOLOR', (0,1), (0,-1), NAVY), ]) t.setStyle(ts) return t # ════════════════════════════════════════════════════════════════════════════ # GENERAL NURSING PRINCIPLES TABLE # ════════════════════════════════════════════════════════════════════════════ def make_principles_table(): headers = [ Paragraph("Principle", cell_hdr_style), Paragraph("Clinical Detail & Action", cell_hdr_style), Paragraph("Why It Matters", cell_hdr_style), ] principles = [ ["Assess First", "Auscultate breath sounds. Check SpO2 baseline. Confirm patient is conscious and cooperative before starting.", "Identifies the appropriate exercise and establishes a baseline for evaluating effectiveness."], ["Optimise Position", "Upright (High Fowler's / Semi-Fowler's) for most exercises. Gravity-assisted positions for secretion drainage (ACBT, postural drainage).", "Gravity aids diaphragmatic descent and lung expansion; upright position maximises functional residual capacity."], ["Ensure Pain Control", "Administer analgesia before asking postoperative patients to deep breathe. Instruct splinting of incision with a firm pillow.", "Inadequate pain control is the most common barrier - pain prevents full inspiratory effort and effective coughing."], ["Teach Preoperatively", "Always teach deep breathing exercises and incentive spirometry BEFORE surgery. Provide a demonstration and practice session.", "Preoperative education significantly improves postoperative compliance and reduces rates of pulmonary complications."], ["Demonstrate First", "Show the technique yourself (or via a model) before asking the patient to perform it. Correct errors immediately.", "Adults learn physical techniques most effectively through visual demonstration and immediate feedback."], ["Instruct Splinting", "Surgical patients: hold a pillow firmly against the incision before deep breathing, huffing, or coughing.", "Reduces incisional pain during expiratory effort, enabling deeper breaths and more effective cough/huff."], ["Monitor During", "Observe SpO2, respiratory rate, accessory muscle use. Watch for dizziness, light-headedness, or bronchospasm.", "If SpO2 drops, patient becomes distressed, or bronchospasm develops - stop and return to breathing control."], ["Set Frequency", "Postoperative: every 1-2 hours while awake. Chronic disease management: 2-3 sessions daily. ACBT: min 10 min per position.", "Frequency determines effectiveness. Sporadic practice yields little benefit, especially postoperatively."], ["Combine Techniques", "Diaphragmatic breathing + pursed-lip breathing = Controlled Breathing Pattern. Teach as a unified technique for COPD.", "Combined use addresses both inspiratory and expiratory mechanics simultaneously, maximising benefit."], ["Stop Immediately If", "Severe dizziness, chest pain, SpO2 drop >4%, bronchospasm, or patient distress. Return to quiet tidal breathing.", "Safety first - a complication during a breathing exercise worsens patient trust and respiratory status."], ["Document", "Record: technique taught, patient tolerance and compliance, SpO2 before/after, sputum volume/colour/consistency.", "Documentation enables continuity of care, tracks progress, and alerts the next nurse to patient needs."], ["Use Calm Voice", "Count out loud with the patient for paced breathing (box, 4-7-8). Maintain eye contact. Project calmness.", "The nurse's demeanour is part of the therapeutic intervention, especially for anxiety-related breathlessness."], ] table_data = [headers] for row in principles: styled_row = [ Paragraph(row[0], cell_b_style), Paragraph(row[1], cell_style), Paragraph(row[2], cell_style), ] table_data.append(styled_row) col_w = [W*0.16, W*0.44, W*0.40] t = Table(table_data, colWidths=col_w, repeatRows=1) ts = TableStyle([ ('BACKGROUND', (0,0), (-1,0), TEAL), ('TEXTCOLOR', (0,0), (-1,0), WHITE), ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'), ('FONTSIZE', (0,0), (-1,0), 8.5), ('ALIGN', (0,0), (-1,0), 'CENTER'), ('VALIGN', (0,0), (-1,-1), 'TOP'), ('TOPPADDING', (0,0), (-1,-1), 5), ('BOTTOMPADDING', (0,0), (-1,-1), 5), ('LEFTPADDING', (0,0), (-1,-1), 6), ('RIGHTPADDING', (0,0), (-1,-1), 6), ('GRID', (0,0), (-1,-1), 0.4, BORDER), ('ROWBACKGROUNDS', (0,1), (-1,-1), [LIGHT_TEAL, WHITE]), ('BACKGROUND', (0,1), (0,-1), colors.HexColor("#E6F5F5")), ('FONTNAME', (0,1), (0,-1), 'Helvetica-Bold'), ('TEXTCOLOR', (0,1), (0,-1), TEAL), ]) t.setStyle(ts) return t # ════════════════════════════════════════════════════════════════════════════ # LEGEND / CLASSIFICATION BOX # ════════════════════════════════════════════════════════════════════════════ def make_legend(): legend_items = [ ("INSPIRATORY", "Deep Breathing, IS, Segmental", STEEL), ("EXPIRATORY", "Pursed-Lip, Huff/FET", colors.HexColor("#C0392B")), ("RELAXATION", "Diaphragmatic, 4-7-8, Box, Cyclic Sigh", colors.HexColor("#27AE60")), ("AIRWAY CLEARANCE", "ACBT, Huff/FET, Controlled Pattern", colors.HexColor("#8E44AD")), ] cells = [] for label, items, colour in legend_items: box = Table([[Paragraph(f'<font color="white"><b>{label}</b></font><br/>' f'<font color="white" size="7">{items}</font>', pstyle('Leg', fontSize=8, leading=11))]], colWidths=[(W-2*cm)/4]) box.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,-1), colour), ('TOPPADDING', (0,0), (-1,-1), 5), ('BOTTOMPADDING', (0,0), (-1,-1), 5), ('LEFTPADDING', (0,0), (-1,-1), 8), ('RIGHTPADDING', (0,0), (-1,-1), 8), ])) cells.append(box) row = Table([cells], colWidths=[(W-2*cm)/4]*4, hAlign='CENTER') row.setStyle(TableStyle([ ('LEFTPADDING', (0,0), (-1,-1), 2), ('RIGHTPADDING', (0,0), (-1,-1), 2), ])) return row # ════════════════════════════════════════════════════════════════════════════ # FOOTER NOTE # ════════════════════════════════════════════════════════════════════════════ def make_footer(): txt = ("Sources: Fishman's Pulmonary Diseases and Disorders | Murray & Nadel's Textbook of Respiratory Medicine | " "Harrison's Principles of Internal Medicine 22E | Kauvery Hospital Nursing Guidelines | " "UW Medicine Patient Education | COPD Foundation | Stanford Cyclic Sighing Research (2023)") return Paragraph(txt, note_style) # ════════════════════════════════════════════════════════════════════════════ # BUILD DOCUMENT # ════════════════════════════════════════════════════════════════════════════ story = [] # ── Page 1: Master Quick Reference Table ─────────────────────────────────── story.append(make_page_header()) story.append(Spacer(1, 6)) story.append(section_header(" MASTER QUICK REFERENCE TABLE", bg=STEEL)) story.append(Spacer(1, 4)) story.append(make_qr_table()) story.append(Spacer(1, 6)) story.append(make_legend()) story.append(Spacer(1, 6)) story.append(HRFlowable(width=W, thickness=0.5, color=BORDER)) story.append(Spacer(1, 3)) story.append(make_footer()) # ── Page 2: Nursing Principles ────────────────────────────────────────────── story.append(PageBreak()) story.append(make_page_header()) story.append(Spacer(1, 6)) story.append(section_header(" GENERAL NURSING PRINCIPLES FOR ALL BREATHING EXERCISES", bg=TEAL)) story.append(Spacer(1, 4)) story.append(make_principles_table()) story.append(Spacer(1, 8)) # ── Key Reminder Box ─────────────────────────────────────────────────────── reminder_data = [[ Paragraph("<b>PREREQUISITE:</b> Breathing exercises can only be given to patients who are " "<b>CONSCIOUS and COOPERATIVE</b>.", body_style), Paragraph("<b>FREQUENCY:</b> Postoperative = every 1-2 hours while awake. " "Chronic disease = 2-3 sessions daily. ACBT = min 10 min per position.", body_style), Paragraph("<b>ALWAYS:</b> Demonstrate first. Ensure pain control. " "Teach preoperatively. Document tolerance and SpO2 before/after.", body_style), ]] reminder = Table(reminder_data, colWidths=[W/3, W/3, W/3]) reminder.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,-1), LIGHT_AMBER), ('LINEABOVE', (0,0), (-1,0), 2, AMBER), ('LINEBELOW', (0,-1),(-1,-1), 2, AMBER), ('LEFTPADDING', (0,0), (-1,-1), 10), ('RIGHTPADDING', (0,0), (-1,-1), 10), ('TOPPADDING', (0,0), (-1,-1), 8), ('BOTTOMPADDING', (0,0), (-1,-1), 8), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ('LINEBEFORE', (1,0), (1,-1), 0.5, AMBER), ('LINEBEFORE', (2,0), (2,-1), 0.5, AMBER), ])) story.append(reminder) story.append(Spacer(1, 6)) story.append(HRFlowable(width=W, thickness=0.5, color=BORDER)) story.append(Spacer(1, 3)) story.append(make_footer()) doc.build(story) print(f"PDF created: {OUTPUT}") PYEOF echo "Script written."
cd /tmp/workspace/breathing-exercises && python create_pdf.py
ls -lh /tmp/workspace/breathing-exercises/Breathing_Exercises_Quick_Reference.pdf
Breathing Exercises Quick Reference
PDF Document · PDF