Management of bronchial asthma acc to latest standard guidelines and harrison
"asthma"[MeSH Terms] AND "management" AND "guidelines"
GINA 2025 2026 asthma management guidelines latest update
https://www.guidelinecentral.com/insights/may-2026-gina-asth…
asthma stepwise management GINA treatment steps inhaler

Summary : This figure presents the 2021 Asthma Management Continuum for preschoolers, children, and adults, outlining a stepwise approach to asthma therapy based on severity and age, with regular reassessment and escalation of treatment as needed. flowchart: # Main Structure : • The continuum is depicted as a sloped, color-coded triangle progressing from bottom left (mild) to top right (severe). • The base includes foundational steps, with increasing therapy intensity as you move upward. # Steps and Nodes : • Confirm Diagnosis (bottom, blue bar) • Environmental Control, Education and Written Action Plan (above, teal bar) • SABA or bud/form* as needed (grey bar) • Inhaled Corticosteroid (ICS) (large yellow-green area, central) – Second-Line: Leukotriene Receptor Antagonist (LTRA) – ICS Dosing: • Low Dose: – ≥12 yrs: ≤250 mcg/day § – 6-11 yrs: ≤200 mcg/day § – 1-5 yrs: <200 mcg/day § • Medium Dose: – ≥12 yrs: 251–500 mcg/day § – 6-11 yrs: 201–400 mcg/day § – 1-5 yrs: 200–250 mcg/day § • High Dose: – ≥12 yrs: >500 mcg/day § – 6-11 yrs: >400 mcg/day § – 1-5 yrs: Refer • Add-on therapies (upper right, color-coded by age group): – ≥12 yrs: Add LABA, then LTRA and/or tiotropium – 6-11 yrs: Add LABA or LTRA – 1-11 yrs: Increase ICS • Severe Asthma (top right, red): Add LTRA and/or tiotropium for ≥12 yrs # Regular Reassessment Box (left side) : • Control • Risk of exacerbation • Spirometry or PEF • Inhaler technique • Adherence • Triggers • Comorbidities • Sputum eosinophils # Connectors and Flow : • Large grey arrow labeled “Adjust Therapy to Achieve Control and Prevent Future Risk” runs diagonally upward, indicating escalation. • Steps are arranged from foundational (bottom) to advanced (top right). # Design Encodings : • Color gradient from blue (mild) to red (severe). • Age groups and therapy steps are color-coded. • Text boxes and arrows guide progression and reassessment. # Analysis : • The figure emphasizes a stepwise, age-specific approach to asthma management, starting with diagnosis and environmental control, then escalating pharmacologic therapy as needed. • Regular reassessment is highlighted as essential at all stages. • The structure supports individualized therapy adjustment based on control and risk, with clear escalation pathways for increasing severity.

Summary : This figure presents two flowcharts outlining the pharmacological management of chronic obstructive pulmonary disease (COPD) based on the primary symptom: dyspnea or exacerbations. It details stepwise treatment escalation, decision points based on blood eosinophil counts, and additional therapeutic options. flowchart: # Dyspnea Management : Nodes : • LABA or LAMA (rounded rectangle) • LABA + LAMA* (rounded rectangle) • Consider switching inhaler device or molecules; Implement or escalate non-pharmacological treatment(s); Consider adding ensifentrine; Investigate (and treat) other causes of dyspnea (large rounded rectangle) Connectors : • Downward arrows from LABA or LAMA → LABA + LAMA* → management options box Layout : • Vertical, single branch, two main steps followed by a box with four bullet points # Exacerbations Management : Nodes : • LABA or LAMA (rounded rectangle) • LABA + LAMA* (rounded rectangle) • LABA + LAMA + ICS* (rounded rectangle) • Roflumilast (rounded rectangle, “FEV1 < 50% & chronic bronchitis”) • Azithromycin (rounded rectangle, “preferentially in former smokers”) • Dupilumab (rounded rectangle, “chronic bronchitis”) Connectors : • LABA or LAMA → LABA + LAMA* (if blood eos < 300) • LABA or LAMA → LABA + LAMA + ICS* (if blood eos ≥ 300) • LABA + LAMA* → LABA + LAMA + ICS* (if blood eos ≥ 100) • LABA + LAMA + ICS* → Roflumilast, Azithromycin, Dupilumab (branching arrows) • LABA + LAMA + ICS* → Dupilumab (if blood eos ≥ 300) Layout : • Vertical with multiple branches based on blood eosinophil count thresholds (<100, <300, ≥100, ≥300) • Final step branches into three parallel options # Additional Information : • Footnote: Single inhaler therapy may be more convenient and effective than multiple inhalers; single inhalers improve adherence to treatment. • Consider de-escalation of ICS if pneumonia or other considerable side-effects. In case of blood eos ≥ 300 cells/μl de-escalation is more likely to be associated with the development of exacerbations. • Exacerbations refers to the number of exacerbations per year. # Analysis : • The dyspnea pathway is linear, focusing on escalation and device/molecule switching, with consideration for non-pharmacological treatments and other causes. • The exacerbation pathway is more complex, with branching based on blood eosinophil counts, leading to different combinations of inhaled therapies and add-on treatments for specific patient subgroups (chronic bronchitis, former smokers, high eosinophil counts). • The figure emphasizes personalized treatment escalation and the importance of blood eosinophil count in guiding therapy for COPD exacerbations.

Summary : This flowchart outlines the evaluation and management process for patients with Sjögren’s syndrome who present with signs and/or symptoms of airway disorders, including recommended diagnostic steps and treatment options. flowchart: # Nodes : • “Sjögren’s patient with signs and/or symptoms of airway disorders” (rounded rectangle, top) • “Obtain PFTs and HRCT” (rounded rectangle) • “Airways disorder” (rounded rectangle) • Treatment options (rectangle with numbered list): 1. Asthma/COPD: Manage as per clinical practice guidelines. Inhaled corticosteroids and beta-agonists are the mainstay of management. Avoid anticholinergics to prevent drying of secretions. 2. Bronchiolitis: Trial of inhaled corticosteroids ± macrolides. 3. Nebulized saline and secretagogues in patients with concern for xerotrachea. • “Annual PFTs” (rounded rectangle, bottom) # Connectors : • Downward arrows connect each node sequentially from top to bottom. • No branching; all steps are linear. # Layout : • Vertical, single-column arrangement. • All nodes are aligned centrally, with the treatment options node larger to accommodate the list. # Analysis : • The flowchart presents a stepwise, linear approach for managing airway disorders in Sjögren’s patients: initial assessment, diagnostic testing, confirmation of disorder, tailored treatment based on specific airway condition, and ongoing annual monitoring. No decision branches or alternative pathways are depicted; the process is straightforward and protocol-driven.
| Score | Control Level |
|---|---|
| 0 "Yes" | Well controlled |
| 1-2 "Yes" | Partly controlled |
| 3-4 "Yes" | Uncontrolled |
| Severity | Step Required |
|---|---|
| Mild | Well controlled at Step 1 or 2 |
| Moderate | Well controlled at Step 3 |
| Severe | Requires Step 4-5, or uncontrolled despite it |
"A major change in the stepwise approach, advocated for more than two decades, has occurred. Evidence has accumulated that as-needed ICS can be used instead of regular ICS in milder asthma... Since formoterol is a LABA with a rapid onset, combination ICS/formoterol has been used as a single agent in multiple studies: as needed without background therapy in milder asthma... GINA, as part of a comprehensive strategy, recommends ICS/formoterol as the reliever in all steps of asthma severity, including intermittent asthma (step 1)."
| Step | Preferred Controller | Reliever | Notes |
|---|---|---|---|
| Step 1 (Intermittent) | None (AIR track) or low-dose ICS | As-needed low-dose ICS-formoterol (preferred) or ICS-SABA | SABA alone no longer preferred per GINA 2024+ |
| Step 2 (Mild persistent) | Low-dose ICS daily | As-needed low-dose ICS-formoterol or SABA + ICS | LTRA alternative if ICS intolerable |
| Step 3 (Moderate persistent) | Low-dose ICS-LABA daily | As-needed low-dose ICS-formoterol (MART) | Medium ICS mono or ICS+LTRA as alternatives |
| Step 4 (Severe) | Medium/high-dose ICS-LABA | As-needed low-dose ICS-formoterol | Add LAMA (tiotropium) if uncontrolled; check technique, adherence |
| Step 5 (Very severe) | High-dose ICS-LABA + LAMA | As-needed ICS-formoterol | Add biologic; consider low-dose OCS |
| Biologic | Target | Biomarker | Indication |
|---|---|---|---|
| Omalizumab | Anti-IgE | Elevated serum IgE, allergic sensitization | Allergic asthma ≥6 yrs |
| Mepolizumab | Anti-IL-5 | Blood eos ≥150-300/µL | Eosinophilic asthma ≥6 yrs |
| Benralizumab | Anti-IL-5Rα | Blood eos ≥300/µL | Eosinophilic asthma ≥12 yrs |
| Dupilumab | Anti-IL-4Rα (blocks IL-4 + IL-13) | Blood eos ≥150/µL or FeNO ≥25 ppb | Type 2 asthma ≥6 yrs; also COPD with eos + recurrent exacerbations |
| Tezepelumab | Anti-TSLP | Broad (even non-T2) | Severe asthma ≥12 yrs; shows benefit even without elevated biomarkers |
| Depemokimab | Anti-IL-5 (ultra-long-acting) | Blood eos ≥300/µL | NEW in GINA 2026 - eosinophilic asthma ≥12 yrs; also CRSwNP ≥18 yrs |
| PEFR | Action |
|---|---|
| >60% predicted | Often responds to beta-2 agonists alone |
| <60% predicted | Add ipratropium + systemic steroids; consider admission |
| <30% predicted | ICU-level care, consider IV magnesium |
50% have persistent eosinophilic inflammation
| Device | Pros | Cons |
|---|---|---|
| pMDI | Compact, portable, cheap, multidose | Needs hand-mouth coordination; oropharyngeal deposition |
| pMDI + spacer | Removes coordination need; less oropharyngeal deposition | Bulkier |
| DPI | Breath-actuated, no coordination needed | Needs adequate inspiratory flow; humidity sensitive |
| Nebulizer | Good for acute/severe, elderly, young children | Bulky, time-consuming, expensive |

Create a concise clinical summary document for easy reference
ls -la /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace && echo "workspace ready"
mkdir -p /tmp/workspace/asthma-summary && cat > /tmp/workspace/asthma-summary/create_doc.py << 'PYEOF' from docx import Document from docx.shared import Pt, Inches, RGBColor from docx.enum.text import WD_ALIGN_PARAGRAPH from docx.oxml.ns import qn from docx.oxml import OxmlElement import copy doc = Document() # ── Page margins ────────────────────────────────────────────────── section = doc.sections[0] section.page_width = Inches(8.5) section.page_height = Inches(11) section.top_margin = Inches(0.75) section.bottom_margin = Inches(0.75) section.left_margin = Inches(0.85) section.right_margin = Inches(0.85) # ── Base style ──────────────────────────────────────────────────── normal = doc.styles["Normal"] normal.font.name = "Calibri" normal.font.size = Pt(9.5) # ── Colour palette ──────────────────────────────────────────────── NAVY = RGBColor(0x1A, 0x35, 0x5E) # headings TEAL = RGBColor(0x00, 0x7A, 0x87) # sub-headings RED = RGBColor(0xC0, 0x39, 0x2B) # warnings / alerts GREEN = RGBColor(0x1E, 0x7A, 0x45) # positive / new GREY = RGBColor(0xF2, 0xF5, 0xF7) # table header fill WHITE = RGBColor(0xFF, 0xFF, 0xFF) BLACK = RGBColor(0x00, 0x00, 0x00) # ── Helper: set cell background ─────────────────────────────────── def set_cell_bg(cell, rgb: RGBColor): tc = cell._tc tcPr = tc.get_or_add_tcPr() shd = OxmlElement("w:shd") hex6 = f"{rgb[0]:02X}{rgb[1]:02X}{rgb[2]:02X}" shd.set(qn("w:val"), "clear") shd.set(qn("w:color"), "auto") shd.set(qn("w:fill"), hex6) tcPr.append(shd) def set_cell_borders(cell, border_color="999999", border_sz="4"): tc = cell._tc tcPr = tc.get_or_add_tcPr() tcBorders = OxmlElement("w:tcBorders") for side in ["top","left","bottom","right"]: b = OxmlElement(f"w:{side}") b.set(qn("w:val"), "single") b.set(qn("w:sz"), border_sz) b.set(qn("w:space"), "0") b.set(qn("w:color"), border_color) tcBorders.append(b) tcPr.append(tcBorders) def para_spacing(para, before=0, after=60): pPr = para._p.get_or_add_pPr() spacing = OxmlElement("w:spacing") spacing.set(qn("w:before"), str(before)) spacing.set(qn("w:after"), str(after)) pPr.append(spacing) # ── Helper: coloured heading ────────────────────────────────────── def add_heading(text, level=1, color=NAVY, size=13, bold=True, before=120, after=40): p = doc.add_paragraph() para_spacing(p, before=before, after=after) run = p.add_run(text) run.bold = True run.font.color.rgb = color run.font.size = Pt(size) run.font.name = "Calibri" return p def add_sub(text, color=TEAL, size=10, bold=True): p = doc.add_paragraph() para_spacing(p, before=60, after=20) run = p.add_run(text) run.bold = bold run.font.color.rgb = color run.font.size = Pt(size) run.font.name = "Calibri" return p def add_body(text, bold_prefix=None, color=BLACK, size=9.5, indent=False): p = doc.add_paragraph() para_spacing(p, before=0, after=30) if indent: pPr = p._p.get_or_add_pPr() ind = OxmlElement("w:ind") ind.set(qn("w:left"), "200") pPr.append(ind) if bold_prefix: r = p.add_run(bold_prefix + " ") r.bold = True r.font.size = Pt(size) r.font.name = "Calibri" r.font.color.rgb = color r2 = p.add_run(text) r2.font.size = Pt(size) r2.font.name = "Calibri" r2.font.color.rgb = color return p def add_bullet(text, bold_prefix=None, level=0): p = doc.add_paragraph(style="List Bullet") para_spacing(p, before=0, after=18) if bold_prefix: r = p.add_run(bold_prefix + " ") r.bold = True r.font.size = Pt(9.5) r.font.name = "Calibri" r2 = p.add_run(text) r2.font.size = Pt(9.5) r2.font.name = "Calibri" return p def add_alert(text, color=RED, size=9.5): p = doc.add_paragraph() para_spacing(p, before=40, after=40) pPr = p._p.get_or_add_pPr() # left border pBdr = OxmlElement("w:pBdr") left = OxmlElement("w:left") left.set(qn("w:val"), "thick") left.set(qn("w:sz"), "18") left.set(qn("w:space"), "8") left.set(qn("w:color"), f"{color[0]:02X}{color[1]:02X}{color[2]:02X}") pBdr.append(left) pPr.append(pBdr) r = p.add_run(text) r.bold = True r.font.color.rgb = color r.font.size = Pt(size) r.font.name = "Calibri" return p # ══════════════════════════════════════════════════════════════════ # TITLE BLOCK # ══════════════════════════════════════════════════════════════════ title_p = doc.add_paragraph() para_spacing(title_p, before=0, after=20) tr = title_p.add_run("BRONCHIAL ASTHMA — Clinical Management Summary") tr.bold = True tr.font.size = Pt(15) tr.font.color.rgb = WHITE tr.font.name = "Calibri" # set para shading (navy banner) pPr2 = title_p._p.get_or_add_pPr() shd2 = OxmlElement("w:shd") shd2.set(qn("w:val"), "clear") shd2.set(qn("w:color"), "auto") shd2.set(qn("w:fill"), "1A355E") pPr2.append(shd2) title_p.alignment = WD_ALIGN_PARAGRAPH.CENTER sub_p = doc.add_paragraph() para_spacing(sub_p, before=0, after=60) sr = sub_p.add_run("Based on Harrison's 22E (2025) · GINA 2026 · Murray & Nadel's · Fishman's") sr.italic = True sr.font.size = Pt(8.5) sr.font.color.rgb = RGBColor(0x55, 0x55, 0x55) sr.font.name = "Calibri" sub_p.alignment = WD_ALIGN_PARAGRAPH.CENTER # ══════════════════════════════════════════════════════════════════ # 1. ASSESSMENT OF CONTROL # ══════════════════════════════════════════════════════════════════ add_heading("1. ASSESSMENT OF SYMPTOM CONTROL (GINA 4-Question Tool)", level=1, size=11) tbl = doc.add_table(rows=1, cols=3) tbl.style = "Table Grid" hdr = tbl.rows[0].cells for i, txt in enumerate(["Question (past 4 weeks)", "Yes", "No"]): hdr[i].text = txt hdr[i].paragraphs[0].runs[0].bold = True hdr[i].paragraphs[0].runs[0].font.size = Pt(9) set_cell_bg(hdr[i], NAVY) hdr[i].paragraphs[0].runs[0].font.color.rgb = WHITE rows_data = [ "Daytime symptoms >2×/week?", "Night waking due to asthma?", "Reliever needed >2×/week?", "Any activity limitation?", ] for q in rows_data: row = tbl.add_row().cells row[0].text = q row[0].paragraphs[0].runs[0].font.size = Pt(9) set_cell_bg(row[1], RGBColor(0xF8,0xF8,0xF8)) set_cell_bg(row[2], RGBColor(0xF8,0xF8,0xF8)) # score legend score_row = tbl.add_row().cells score_row[0].merge(score_row[2]) score_row[0].text = "0 Yes = Well controlled | 1–2 Yes = Partly controlled | 3–4 Yes = Uncontrolled" sr2 = score_row[0].paragraphs[0].runs[0] sr2.bold = True sr2.font.size = Pt(9) set_cell_bg(score_row[0], RGBColor(0xE8,0xF4,0xFD)) doc.add_paragraph() # Risk factors box add_sub("Risk Factors for Poor Outcomes") risks = [ "Uncontrolled symptoms / ≥1 severe exacerbation in past year", "SABA overuse (>1 canister/month) — marker of poor control", "No ICS, poor adherence, or incorrect inhaler technique", "FEV1 <60% predicted or high bronchodilator reversibility", "Comorbidities: obesity, chronic rhinosinusitis, GERD, depression", "Smoking, occupational exposure, indoor allergens", "Blood eosinophilia / elevated FeNO", ] for r in risks: add_bullet(r) doc.add_paragraph() # ══════════════════════════════════════════════════════════════════ # 2. SEVERITY CLASSIFICATION # ══════════════════════════════════════════════════════════════════ add_heading("2. SEVERITY CLASSIFICATION (GINA)", level=1, size=11) sev_tbl = doc.add_table(rows=1, cols=2) sev_tbl.style = "Table Grid" for i, h in enumerate(["Severity", "Definition"]): sev_tbl.rows[0].cells[i].text = h sev_tbl.rows[0].cells[i].paragraphs[0].runs[0].bold = True sev_tbl.rows[0].cells[i].paragraphs[0].runs[0].font.size = Pt(9) set_cell_bg(sev_tbl.rows[0].cells[i], TEAL) sev_tbl.rows[0].cells[i].paragraphs[0].runs[0].font.color.rgb = WHITE for sev, defn in [ ("Mild", "Well controlled on Step 1 or Step 2"), ("Moderate", "Well controlled on Step 3"), ("Severe", "Requires Step 4–5 to maintain control, OR uncontrolled despite Step 4–5"), ]: row = sev_tbl.add_row().cells row[0].text = sev row[0].paragraphs[0].runs[0].font.size = Pt(9) row[0].paragraphs[0].runs[0].bold = True row[1].text = defn row[1].paragraphs[0].runs[0].font.size = Pt(9) doc.add_paragraph() # ══════════════════════════════════════════════════════════════════ # 3. STEPWISE TREATMENT # ══════════════════════════════════════════════════════════════════ add_heading("3. STEPWISE PHARMACOLOGIC MANAGEMENT (Adults & Adolescents ≥12 yrs)", level=1, size=11) add_alert("⚑ GINA 2026 PARADIGM SHIFT: SABA monotherapy is NO LONGER preferred at any step.\n" " All patients should receive ICS-containing therapy. ICS-formoterol is the preferred reliever at every step.") doc.add_paragraph() step_tbl = doc.add_table(rows=1, cols=5) step_tbl.style = "Table Grid" step_hdrs = ["Step", "Severity", "Controller (Daily)", "Reliever (As-needed)", "Notes"] for i, h in enumerate(step_hdrs): c = step_tbl.rows[0].cells[i] c.text = h c.paragraphs[0].runs[0].bold = True c.paragraphs[0].runs[0].font.size = Pt(8.5) set_cell_bg(c, NAVY) c.paragraphs[0].runs[0].font.color.rgb = WHITE steps = [ ("1", "Intermittent", "None (AIR track)\nOR Low-dose ICS daily", "As-needed low-dose ICS-formoterol ★\nOR ICS-SABA combo (new 2026)\n[SABA alone: no longer preferred]", "AIR = Anti-Inflammatory Reliever strategy"), ("2", "Mild\nPersistent", "Low-dose ICS daily", "As-needed low-dose ICS-formoterol ★\nOR SABA + concurrent ICS\nAlt: LTRA if ICS intolerable", "Caution: montelukast — FDA black-box warning (suicidal ideation)"), ("3", "Moderate\nPersistent", "Low-dose ICS-LABA\n(preferred)\nAlt: Medium ICS or ICS+LTRA", "As-needed low-dose ICS-formoterol\n(MART strategy ★★)", "MART: same inhaler for maintenance + relief\n(budesonide-formoterol)"), ("4", "Severe", "Medium/High-dose ICS-LABA\n+ consider add-on LAMA", "As-needed low-dose ICS-formoterol", "Check adherence & inhaler technique first\nRefer to specialist"), ("5", "Very Severe\n/ Refractory", "High-dose ICS-LABA + LAMA\n+ Biologic therapy\n(see biologic table)", "As-needed ICS-formoterol", "Minimize/avoid maintenance OCS\nBronchial thermoplasty option"), ] row_fills = [RGBColor(0xEA,0xF4,0xEA), RGBColor(0xFF,0xFF,0xE8), RGBColor(0xFD,0xF0,0xD8), RGBColor(0xFD,0xE8,0xE8), RGBColor(0xF5,0xE8,0xF5)] for idx, (step, sev, ctrl, rel, note) in enumerate(steps): row = step_tbl.add_row().cells for ci, txt in enumerate([step, sev, ctrl, rel, note]): row[ci].text = txt for run in row[ci].paragraphs[0].runs: run.font.size = Pt(8.5) set_cell_bg(row[ci], row_fills[idx]) row[0].paragraphs[0].runs[0].bold = True row[0].paragraphs[0].runs[0].font.size = Pt(10) p_note = doc.add_paragraph() para_spacing(p_note, before=20, after=20) rn = p_note.add_run("★ ICS-formoterol (e.g., budesonide/formoterol) preferred reliever across all steps per GINA 2026 " "★★ MART = Maintenance And Reliever Therapy") rn.italic = True rn.font.size = Pt(8) rn.font.color.rgb = RGBColor(0x44,0x44,0x44) doc.add_paragraph() # ══════════════════════════════════════════════════════════════════ # 4. DRUG CLASSES # ══════════════════════════════════════════════════════════════════ add_heading("4. KEY DRUG CLASSES", level=1, size=11) drug_tbl = doc.add_table(rows=1, cols=4) drug_tbl.style = "Table Grid" for i, h in enumerate(["Drug Class", "Examples", "Mechanism / Role", "Key Cautions"]): c = drug_tbl.rows[0].cells[i] c.text = h c.paragraphs[0].runs[0].bold = True c.paragraphs[0].runs[0].font.size = Pt(9) set_cell_bg(c, TEAL) c.paragraphs[0].runs[0].font.color.rgb = WHITE drug_rows = [ ("SABA", "Salbutamol, Terbutaline", "β2 activation → ↑cAMP → smooth muscle relaxation\nRelief/rescue; PRN use", "Overuse (>1 can/month) = poor control marker\nTachyphylaxis with scheduled use"), ("LABA", "Formoterol, Salmeterol, Indacaterol", "Long-acting β2 agonist; combine with ICS\nFormoterol: rapid onset → suitable for MART", "NEVER monotherapy in asthma\n(↑mortality — black box warning)"), ("ICS", "Budesonide, Fluticasone, Beclomethasone, Mometasone", "Suppress eosinophilic inflammation\nCornerstoneof all asthma therapy", "Oral candidiasis, dysphonia\n→ use spacer, rinse mouth after"), ("ICS-LABA\nCombination", "Budesonide/formoterol\nFluticasone/salmeterol\nFluticasone/vilanterol", "Dual controller; MART possible with\nbudesonide/formoterol", "Preferred combination at Steps 3–5"), ("LAMA", "Tiotropium (Respimat)\nUmeclidinium", "Long-acting muscarinic antagonist\nAdd-on at Steps 4–5", "Triple Rx (ICS-LABA+LAMA) < biologics\nfor reducing severe exacerbations"), ("LTRA", "Montelukast, Zafirlukast", "Leukotriene receptor antagonist\nAlt/add-on; useful in AERD, allergic rhinitis", "⚠ Montelukast: FDA black box — suicidal ideation/behaviour"), ("Theophylline", "Aminophylline (IV)\nTheophylline (oral)", "PDE inhibition → ↑cAMP; anti-inflammatory\nNarrow therapeutic window", "Serum level: 10–20 mcg/mL\nDrug interactions: fluoroquinolones, macrolides"), ("OCS", "Prednisolone\nMethylprednisolone (IV)", "Acute: short courses 5–7 days, 30–50 mg/day\nChronic: only if all else fails", "Minimize long-term use\nCumulative toxicity: T2DM, osteoporosis, cataracts"), ] alt_fill = [RGBColor(0xFF,0xFF,0xFF), RGBColor(0xF7,0xF9,0xFC)] for idx, row_data in enumerate(drug_rows): row = drug_tbl.add_row().cells for ci, txt in enumerate(row_data): row[ci].text = txt for run in row[ci].paragraphs[0].runs: run.font.size = Pt(8.5) set_cell_bg(row[ci], alt_fill[idx % 2]) doc.add_paragraph() # ══════════════════════════════════════════════════════════════════ # 5. BIOLOGICS # ══════════════════════════════════════════════════════════════════ add_heading("5. BIOLOGIC AGENTS (Step 5 — Severe / Type 2 Asthma)", level=1, size=11) bio_tbl = doc.add_table(rows=1, cols=5) bio_tbl.style = "Table Grid" for i, h in enumerate(["Biologic", "Target", "Biomarker Threshold", "Age", "Notes"]): c = bio_tbl.rows[0].cells[i] c.text = h c.paragraphs[0].runs[0].bold = True c.paragraphs[0].runs[0].font.size = Pt(9) set_cell_bg(c, NAVY) c.paragraphs[0].runs[0].font.color.rgb = WHITE bio_rows = [ ("Omalizumab\n(biosimilar available)", "Anti-IgE", "Elevated serum IgE\n+ allergic sensitization", "≥6 yrs", "Allergic/atopic asthma\nMonthly or bimonthly SC"), ("Mepolizumab", "Anti-IL-5", "Blood eos ≥150–300/μL", "≥6 yrs", "Eosinophilic asthma\nMonthly SC"), ("Benralizumab", "Anti-IL-5Rα", "Blood eos ≥300/μL", "≥12 yrs", "Eosinophilic; Q8 weekly SC\nafter 3 monthly loading doses"), ("Dupilumab", "Anti-IL-4Rα\n(blocks IL-4 + IL-13)", "Blood eos ≥150/μL\nOR FeNO ≥25 ppb", "≥6 yrs", "Type 2 asthma; also approved\nfor COPD with eos + exacerbations"), ("Tezepelumab", "Anti-TSLP\n(upstream cytokine)", "Broad; works even without\nelevated T2 biomarkers", "≥12 yrs", "Severe asthma including\nnon-Type 2 phenotype"), ("Depemokimab ★NEW", "Anti-IL-5\n(ultra-long-acting)", "Blood eos ≥300/μL", "≥12 yrs\n(CRSwNP ≥18)", "NEW — GINA 2026\nDosing every 6 months SC"), ] for idx, row_data in enumerate(bio_rows): row = bio_tbl.add_row().cells for ci, txt in enumerate(row_data): row[ci].text = txt for run in row[ci].paragraphs[0].runs: run.font.size = Pt(8.5) set_cell_bg(row[ci], alt_fill[idx % 2]) doc.add_paragraph() # ══════════════════════════════════════════════════════════════════ # 6. ACUTE EXACERBATION MANAGEMENT # ══════════════════════════════════════════════════════════════════ add_heading("6. ACUTE EXACERBATION MANAGEMENT", level=1, size=11) add_sub("Initial Assessment — PEFR/FEV1 Classification") pefr_tbl = doc.add_table(rows=1, cols=4) pefr_tbl.style = "Table Grid" for i, h in enumerate(["Severity", "PEFR", "Features", "Immediate Action"]): c = pefr_tbl.rows[0].cells[i] c.text = h c.paragraphs[0].runs[0].bold = True c.paragraphs[0].runs[0].font.size = Pt(9) set_cell_bg(c, TEAL) c.paragraphs[0].runs[0].font.color.rgb = WHITE pefr_rows = [ ("Mild–Moderate", ">60% predicted", "Wheeze, SOB; speaks in sentences\nSpO2 ≥92%", "Inhaled SABA q20 min ×3 (or ICS-formoterol)\nMonitor, OCS if no response in 1–2h"), ("Severe", "40–60% predicted", "Speaks in words; accessory muscle use\nSpO2 <92%", "SABA + ipratropium q20 min ×3\nSystemic OCS\nControlled O2 (target SpO2 93–95%)"), ("Life-Threatening", "<40% predicted", "Silent chest, cyanosis, altered consciousness\nPEFR <30% = ICU", "IV methylprednisolone\nIV/nebulized bronchodilators\nIV MgSO4 2g over 20 min\nConsider intubation"), ] exac_fills = [RGBColor(0xEA,0xF7,0xEA), RGBColor(0xFF,0xF3,0xCC), RGBColor(0xFD,0xE8,0xE8)] for idx, row_data in enumerate(pefr_rows): row = pefr_tbl.add_row().cells for ci, txt in enumerate(row_data): row[ci].text = txt for run in row[ci].paragraphs[0].runs: run.font.size = Pt(8.5) set_cell_bg(row[ci], exac_fills[idx]) doc.add_paragraph() add_alert("⚑ O2 THERAPY (GINA 2026): Supplemental O2 ONLY if SpO2 <92%\n" " Target: 93–95% (adults, adolescents, children 6–11 yrs) | ≥92% (children ≤5 yrs)\n" " ⚑ ANAPHYLAXIS + ASTHMA: Give EPINEPHRINE first, then bronchodilators") doc.add_paragraph() add_sub("ICU / Ventilated Patient") icu_bullets = [ "Permissive hypercapnia acceptable (avoid barotrauma)", "Low tidal volumes 5–7 mL/kg ideal body weight", "Prolonged expiratory time; minimise auto-PEEP", "Heliox (He:O2 70:30) — reduces turbulent airflow in critical obstruction", "IV ketamine: bronchodilatory anaesthetic induction agent", "Avoid propofol-only without ICS if reactive airways", ] for b in icu_bullets: add_bullet(b) doc.add_paragraph() add_sub("Discharge Criteria") dc = [ "PEFR ≥60% predicted (ideally ≥70–80%)", "Symptoms controlled; no nocturnal symptoms", "Inhaler technique verified", "Written asthma action plan provided", "Follow-up arranged within 1–2 weeks", "Prednisolone course completed or continued as prescribed", ] for d in dc: add_bullet(d) doc.add_paragraph() # ══════════════════════════════════════════════════════════════════ # 7. GINA 2026 KEY UPDATES # ══════════════════════════════════════════════════════════════════ add_heading("7. GINA 2026 — KEY NEW UPDATES (May 5, 2026)", level=1, size=11, color=GREEN, before=80) updates = [ ("ICS-SABA combo at Step 1:", "Added as Track 2 (AIR) alternative to ICS-formoterol at Step 1"), ("ICS-formoterol in mild exacerbations:", "Now an alternate to inhaled SABA in primary care / ED (adults, adolescents, children 6–11)"), ("Depemokimab:", "New biologic (anti-IL-5, every-6-month dosing) added for severe eosinophilic asthma ≥12 yrs"), ("Biosimilar omalizumab:", "Generic anti-IgE added as biologic option"), ("O2 thresholds revised:", "O2 only if SpO2 <92%; target 93–95% adults; ≥92% for children ≤5 yrs"), ("Anaphylaxis protocol:", "If anaphylaxis + asthma co-present → epinephrine FIRST, then bronchodilators"), ("Triple therapy clarification:", "ICS-LABA + LAMA reduces exacerbations vs ICS-LABA, but far less than biologics"), ("OCS minimization:", "Strongly emphasized — optimize ICS-LABA, modifiable factors, and biologics before maintenance OCS"), ("New assessment tools:", "CAAT, Peds-AIRQ, PRAM added to guideline toolkit"), ("Vaccines:", "Evidence updated for influenza, RSV, and COVID-19 vaccines in asthma"), ("GLP-1 receptor agonists:", "Observational data added on potential role in improving asthma outcomes (future direction)"), ("New flowcharts:", "4 new flowcharts for primary care / ED management of exacerbations by age group"), ] for bold_t, body_t in updates: add_bullet(body_t, bold_prefix=bold_t) doc.add_paragraph() # ══════════════════════════════════════════════════════════════════ # 8. SPECIAL POPULATIONS # ══════════════════════════════════════════════════════════════════ add_heading("8. SPECIAL POPULATIONS", level=1, size=11) sp_tbl = doc.add_table(rows=1, cols=2) sp_tbl.style = "Table Grid" for i, h in enumerate(["Population", "Key Considerations"]): c = sp_tbl.rows[0].cells[i] c.text = h c.paragraphs[0].runs[0].bold = True c.paragraphs[0].runs[0].font.size = Pt(9) set_cell_bg(c, TEAL) c.paragraphs[0].runs[0].font.color.rgb = WHITE sp_rows = [ ("Elderly (>65 yrs)", "5× higher mortality than younger patients\nAdjust β2-agonist dose for arrhythmia/tremulousness\nAlways consider COPD coexistence\nNew-onset: ~50% are/were smokers; ~25% occupational aetiology"), ("Asthma-COPD Overlap", "Smoking blunts ICS response\nDupilumab approved in COPD with eos + recurrent exacerbations\nEarlier initiation of LAMAs beneficial"), ("Severe Refractory\n(~5–10% of asthma)", "Uncontrolled on Step 5 after confirming adherence, technique, and treating comorbidities\n>50% have persistent eosinophilic inflammation\nMacrolides useful in neutrophilic/non-eosinophilic subset\nBronchial thermoplasty: bronchoscopic option — reduces airway smooth muscle mass"), ("Pregnancy", "Uncontrolled asthma more dangerous than ICS therapy\nContinue ICS; avoid stepping down\nSalbutamol safe as reliever; budesonide preferred ICS"), ("Exercise-Induced", "Pre-exercise SABA or ICS-formoterol 15 min before\nRegular ICS reduces EIB\nLTRA useful adjunct"), ("Aspirin/NSAID-Exacerbated\n(AERD)", "Avoid NSAIDs, aspirin\nLTRA particularly useful\nAspirin desensitisation under specialist supervision"), ] for idx, row_data in enumerate(sp_rows): row = sp_tbl.add_row().cells for ci, txt in enumerate(row_data): row[ci].text = txt for run in row[ci].paragraphs[0].runs: run.font.size = Pt(8.5) set_cell_bg(row[ci], alt_fill[idx % 2]) doc.add_paragraph() # ══════════════════════════════════════════════════════════════════ # 9. NON-PHARMACOLOGIC / MONITORING # ══════════════════════════════════════════════════════════════════ add_heading("9. NON-PHARMACOLOGIC MEASURES & MONITORING", level=1, size=11) left_items = [ ("Trigger avoidance:", "Remove pets, occupational antigens, second-hand smoke, cannabis"), ("Allergen immunotherapy:", "Mild–moderate allergic asthma; SCIT under controlled conditions"), ("Vaccinations:", "Annual influenza; pneumococcal; COVID-19; RSV"), ("Inhaler education:", "Technique check at every visit — poor technique in up to 50% of 'refractory' cases"), ("Written action plan:", "Green/yellow/red zones based on PEFR or symptoms"), ("FeNO monitoring:", "≥25 ppb = eosinophilic inflammation; predicts ICS response"), ("Weight loss / OSA:", "Obesity worsens control; screen and treat OSA"), ("Rhinosinusitis / GERD:", "Manage upper airway disease and reflux as asthma comorbidities"), ] for bold_t, body_t in left_items: add_bullet(body_t, bold_prefix=bold_t) doc.add_paragraph() # ══════════════════════════════════════════════════════════════════ # FOOTER # ══════════════════════════════════════════════════════════════════ footer_p = doc.add_paragraph() para_spacing(footer_p, before=60, after=0) pPr3 = footer_p._p.get_or_add_pPr() shd3 = OxmlElement("w:shd") shd3.set(qn("w:val"), "clear") shd3.set(qn("w:color"), "auto") shd3.set(qn("w:fill"), "1A355E") pPr3.append(shd3) footer_r = footer_p.add_run( "Sources: Harrison's Principles of Internal Medicine 22E (2025, McGraw-Hill) · " "GINA 2026 Strategy Report (May 5 2026, ginasthma.org) · " "Murray & Nadel's Textbook of Respiratory Medicine · " "Fishman's Pulmonary Diseases & Disorders | Prepared: August 2026" ) footer_r.font.size = Pt(7.5) footer_r.font.color.rgb = WHITE footer_r.font.name = "Calibri" footer_p.alignment = WD_ALIGN_PARAGRAPH.CENTER # ── Save ────────────────────────────────────────────────────────── out = "/tmp/workspace/asthma-summary/Asthma_Clinical_Summary.docx" doc.save(out) print(f"SAVED: {out}") PYEOF python3 /tmp/workspace/asthma-summary/create_doc.py
python3 -c " from docx import Document doc = Document('/tmp/workspace/asthma-summary/Asthma_Clinical_Summary.docx') headings = [p.text for p in doc.paragraphs if p.text.strip() and len(p.text) > 5][:30] print('Paragraphs preview:') for h in headings: print(' -', h[:90]) import os size = os.path.getsize('/tmp/workspace/asthma-summary/Asthma_Clinical_Summary.docx') print(f'File size: {size:,} bytes') "
Asthma Clinical Summary
Word Document · DOCX
| Section | Contents |
|---|---|
| 1. Symptom Control Assessment | GINA 4-question tool table + risk factors for poor outcomes |
| 2. Severity Classification | Mild / Moderate / Severe defined by treatment step |
| 3. Stepwise Treatment | Step 1-5 table with colour-coded rows — controller, reliever, and notes per step; GINA 2026 paradigm shift callout box |
| 4. Drug Classes | SABA, LABA, ICS, ICS-LABA, LAMA, LTRA, Theophylline, OCS — mechanism, examples, key cautions |
| 5. Biologics | All 6 agents (incl. Depemokimab - new 2026) — target, biomarker threshold, age, notes |
| 6. Acute Exacerbation | PEFR severity table, revised O2 targets, ICU/ventilation tips, discharge criteria |
| 7. GINA 2026 Updates | 12 key changes highlighted with bold prefixes |
| 8. Special Populations | Elderly, asthma-COPD overlap, refractory, pregnancy, exercise-induced, AERD |
| 9. Non-pharmacologic & Monitoring | Trigger avoidance, vaccination, FeNO, written action plans, comorbidities |