PDE4 inhibitors used in COPD and there dosages plans

Reading File
Finding Sources
Searching PubMed

PDE4 inhibitor COPD roflumilast ensifentrine

Reading File
Reading File
Searching PubMed

roflumilast COPD exacerbations

Reading File
Reading Article

PMID: 38476122

Searching the Web

ensifentrine COPD dosage FDA approved 2024 nebulization

Here is a complete overview of PDE4 inhibitors used in COPD, including dosages and clinical context:

PDE4 Inhibitors in COPD

1. Roflumilast (Daliresp / Daxas)

Mechanism

Roflumilast is an oral, selective PDE4 inhibitor. It is a prodrug converted by CYPs 3A4 and 1A2 to its active metabolite roflumilast N-oxide, which has a longer half-life and accounts for the majority of PDE4 inhibition. By blocking PDE4, it raises intracellular cAMP, suppressing activation of neutrophils, macrophages, and other inflammatory cells in the airways.
  • Goodman & Gilman's Pharmacological Basis of Therapeutics, p. 2603

Standard Dosing

RegimenDose
Standard dose500 mcg (0.5 mg) orally once daily

Dose-Escalation Strategy (to improve tolerability)

A 2024 systematic review and meta-analysis (Lee & Song, PMID 38476122) found that two alternative strategies significantly reduce discontinuation rates vs. standard dosing:
StrategyTypical ApproachDiscontinuation Rate
Dose-escalationStart at 250 mcg/day for 4 weeks, then increase to 500 mcg/day~27.9%
Low-doseContinue at 250 mcg/day (sub-standard)~11.7%
Standard dose500 mcg/day from the startHigher (reference)
The low-dose group showed significantly less diarrhea (RR 0.58) with no statistically significant difference in acute exacerbation rates (22.9% vs. 20.1%), suggesting a lower dose may be a reasonable compromise in poorly-tolerant patients.

Indications

  • Add-on therapy in severe COPD (FEV1 <50% predicted) with chronic bronchitis and frequent exacerbations despite maximal inhaled therapy (ICS + LABA + LAMA triple therapy)
  • Reduces exacerbations by ~20% but has minimal effect on symptoms or lung function
  • Not for acute bronchospasm relief
  • Harrison's Principles of Internal Medicine 22E, p. 782

Contraindications & Cautions

  • Contraindicated in severe liver impairment (Child-Pugh B or C)
  • Use with caution in pregnancy
  • Drug interactions: CYP3A4/1A2 inhibitors (erythromycin, ketoconazole, fluvoxamine, cimetidine) increase roflumilast exposure; rifampicin (CYP3A4 inducer) reduces efficacy

Side Effects

Common dose-limiting adverse effects (all due to PDE4 inhibition):
  • Diarrhea
  • Nausea
  • Headache
  • Weight loss

2. Ensifentrine (Ohtuvayre) - Dual PDE3/4 Inhibitor

Mechanism

Ensifentrine (RPL554) is a first-in-class inhaled dual PDE3 and PDE4 inhibitor with 3.5 orders of magnitude greater selectivity for PDE3 over PDE4. PDE3 inhibition causes bronchodilation (relaxes airway smooth muscle); PDE4 inhibition provides non-steroidal anti-inflammatory effects. Because it is inhaled, systemic side effects typical of oral PDE4 inhibitors (nausea, diarrhea) are largely avoided.
  • Goodman & Gilman's, p. 2617

Standard Dosing

RegimenDose
FDA-approved dose3 mg inhaled via standard jet nebulizer twice daily
  • FDA approved: June 26, 2024 (trade name: Ohtuvayre)
  • Delivered via standard jet nebulizer - no high inspiratory flow rates or complex hand-breath coordination needed
  • First new inhaled COPD treatment with a novel mechanism in over 20 years

Indications

  • Maintenance treatment of COPD in adults - approved for broad use (not restricted to a specific severity subgroup like roflumilast)
  • Efficacy established in two Phase 3 trials: ENHANCE-1 and ENHANCE-2 (double-blind, placebo-controlled)
  • Provides bronchodilation on top of LAMA monotherapy, but does not offer additional bronchodilation in patients already on LABA-LAMA combination

Side Effects

  • Generally well tolerated due to inhaled delivery
  • Minimal systemic GI effects compared to oral PDE4 inhibitors

Comparison at a Glance

FeatureRoflumilastEnsifentrine
ClassPDE4 inhibitor (oral)Dual PDE3/4 inhibitor (inhaled)
RouteOralNebulizer (inhaled)
Dose500 mcg once daily3 mg twice daily
Key indicationSevere COPD + chronic bronchitis + exacerbations despite triple therapyMaintenance COPD (broad)
Main benefitReduces exacerbations ~20%Bronchodilation + anti-inflammation
Main side effectsDiarrhea, nausea, weight lossMinimal (inhaled)
ContraindicationSevere liver impairmentNone established yet
FDA approval2011June 2024

Key takeaway: Roflumilast is the established oral PDE4 inhibitor, reserved for a specific high-risk COPD phenotype (severe disease, chronic bronchitis, frequent exacerbations). Its main dosing challenge is tolerability - a dose-escalation strategy (250 mcg → 500 mcg) or even staying at 250 mcg/day may improve adherence without major loss of efficacy. Ensifentrine is the newer inhaled dual PDE3/4 inhibitor (3 mg nebulized twice daily), FDA-approved in 2024, offering both bronchodilation and anti-inflammation with a better side effect profile, applicable to a broader COPD population.
You can watch a detailed explanation of ensifentrine's mechanism and the ENHANCE trials here:

Antibiotic therapy for VOPd. Keep it short... Just the dosage regimens ond treatment plan

Finding Sources
Reading File
Reading File

Antibiotic Therapy for COPD Exacerbations

When to Give Antibiotics (GOLD Criteria)

Antibiotics are indicated when any of these are present:
  1. Increased dyspnea + increased sputum volume + increased sputum purulence (all three)
  2. Increased sputum purulence + either increased dyspnea OR sputum volume
  3. Patient requires mechanical ventilation (NIV or intubation) - clear mortality benefit

Regimens by Patient Type

Mild-Moderate (no Pseudomonas risk)

Target organisms: S. pneumoniae, H. influenzae, M. catarrhalis
DrugDoseDuration
Azithromycin500 mg PO once daily5 days
Amoxicillin-clavulanate875/125 mg PO twice daily5-7 days
Doxycycline / TetracyclineStandard dose PO7 days

Severe COPD / High-Risk (Pseudomonas coverage needed)

Risk factors: severe airflow limitation, bronchiectasis, recent hospitalization, prior Pseudomonas colonization, mechanical ventilation
DrugDoseDuration
Levofloxacin750 mg PO/IV once daily7-10 days
(or other anti-pseudomonal agent based on local resistance)

Post-Exacerbation (Maintenance to Prevent Recurrence)

DrugDoseDuration
Azithromycin (prophylactic)250 mg every 2 days3 months after infection
This significantly reduces the likelihood of treatment failure after an acute exacerbation.

Key Points

  • Base antibiotic choice on local resistance patterns
  • Sputum culture rarely changes management acutely
  • CRP point-of-care testing can guide antibiotic prescribing and reduce unnecessary use
  • Follow up within 10 days of discharge; decreased sputum purulence = marker of improvement
  • Goldman-Cecil Medicine, p. 3150 | Rosen's Emergency Medicine, p. 2584

Exacerbation management according to Gold and dosages plan for drugs used write by step by step as I'm taking notes

Finding Sources
Searching the Web

GOLD 2025 COPD exacerbation management guidelines drug dosages

Reading Web Page

https://goldcopd.org/wp-content/uploads/2024/11/GOLD-2025-Re…

Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Here is your step-by-step note on COPD exacerbation management per GOLD 2025:

COPD Exacerbation Management - GOLD 2025

Step-by-Step Treatment Plan


STEP 1 - Assess Severity & Decide Setting

Outpatient if: mild increase in symptoms, no respiratory failure, stable home situation Go to ER / Admit if any of:
  • Marked dyspnea at rest
  • SpO₂ < 90%, severe hypoxemia
  • New or worsening cyanosis
  • Altered consciousness / confusion
  • Failure to respond to initial treatment
  • Significant comorbidities (cardiac disease, etc.)
ICU if: Persistent hypoxia despite O₂, severe acidosis (pH <7.25), respiratory arrest, hemodynamic instability, altered mental status

STEP 2 - Oxygen Therapy

Goal: SpO₂ 88-92% (avoid hyperoxia - risk of hypercapnia)
  • Start controlled low-flow O₂ via nasal cannula or Venturi mask
  • Titrate to maintain SpO₂ 88-92%
  • Use air-driven (not oxygen-driven) nebulizers to avoid worsening hypercapnia
  • Monitor ABG after 30-60 min of O₂ therapy

STEP 3 - Bronchodilators (First-Line Pharmacotherapy)

SABA (Short-acting Beta-2 Agonist) - Start immediately
DrugDoseRoute
Salbutamol (Albuterol)2.5 mg nebulized q 20 min x 3, then q 1-4h PRNNebulizer
OR Salbutamol MDI4-8 puffs (100 mcg/puff) q 1-4hSpacer + MDI
Add SAMA (Short-acting Anticholinergic) if response inadequate
DrugDoseRoute
Ipratropium0.5 mg (500 mcg) nebulized q 4-6hNebulizer
OR Ipratropium MDI4-8 puffs (18-20 mcg/puff) q 4-6hSpacer + MDI
  • Salbutamol + Ipratropium can be combined in the same nebulizer
  • Continue existing long-acting bronchodilators (LABA/LAMA) - do NOT stop them
  • IV methylxanthines (theophylline/aminophylline) are NOT recommended - significant side effects, no proven benefit

STEP 4 - Systemic Corticosteroids

Shorten recovery time, improve FEV1 and oxygenation. Duration should NOT exceed 5 days.
DrugDoseRouteDuration
Prednisolone30-40 mg once dailyPO5 days
OR Methylprednisolone40 mg IV once dailyIV5 days (if cannot take oral)
  • Oral is as effective as IV
  • No benefit beyond 5 days
  • Do NOT taper for a 5-day course

STEP 5 - Antibiotics

Give only when indicated (GOLD criteria):
✔ All 3 of: increased dyspnea + sputum volume + sputum purulence ✔ OR: increased sputum purulence + either dyspnea OR volume ✔ OR: requires assisted ventilation (NIV or intubation)

No Pseudomonas risk (most outpatients):

DrugDoseDuration
Azithromycin500 mg PO once daily5 days
Amoxicillin-clavulanate875/125 mg PO twice daily5-7 days
Doxycycline100 mg PO twice daily5-7 days

High risk (severe COPD, bronchiectasis, recent hospitalization, prior Pseudomonas):

DrugDoseDuration
Levofloxacin750 mg PO/IV once daily7-10 days
Or Ciprofloxacin400 mg IV / 750 mg PO twice daily7-10 days
Duration of antibiotic therapy: 5 days (per GOLD 2025 - evidence shows no benefit beyond 5 days for most)

STEP 6 - Non-Invasive Ventilation (NIV / BiPAP)

First-line ventilation in COPD. Do NOT go straight to intubation.
Indications for NIV:
  • Respiratory acidosis: arterial pH ≤ 7.35, PaCO₂ > 45 mmHg
  • Severe dyspnea with signs of respiratory muscle fatigue (accessory muscle use, paradoxical breathing)
  • Persistent hypoxia despite O₂
NIV Settings (BiPAP - start):
  • IPAP: 10-15 cmH₂O (titrate up)
  • EPAP: 4-5 cmH₂O
  • Titrate to relieve dyspnea, reduce respiratory rate, improve pH

STEP 7 - Invasive Mechanical Ventilation

Indications (escalate from NIV if):
  • NIV failure / patient intolerance
  • Respiratory or cardiac arrest
  • Diminished consciousness, agitation
  • Massive aspiration
  • Persistent life-threatening hypoxia

STEP 8 - Additional Measures

ActionDetail
Monitor fluid balanceAvoid overhydration
DVT prophylaxisHeparin or LMWH in hospitalized patients
NutritionMaintain caloric intake
Chest physioAssist mucus clearance
Treat precipitantPneumonia, PE, pneumothorax, heart failure
VaccinationInfluenza + pneumococcal if not up to date

STEP 9 - Discharge Criteria & Follow-up

Safe to discharge when:
  • SABA needed no more than q 4h
  • Patient can walk across the room
  • Can eat and sleep without frequent waking from dyspnea
  • Stable for 12-24 hours
  • ABG acceptable, SpO₂ stable
After discharge:
  • Follow-up within 4-6 weeks
  • Review inhaler technique
  • Optimize maintenance therapy (LAMA, LABA, ICS)
  • Consider adding prophylactic azithromycin 250 mg every 2 days for 3 months if high exacerbation risk

Sources: GOLD 2025 Report & Pocket Guide | Goldman-Cecil Medicine, p. 3160 | Rosen's Emergency Medicine, p. 2584

Create a one-page quick reference PDF for COPD exacerbation dosages

Reading File
Running Command

ls /home/daytona/workspace/ 2>/dev/null || echo "workspace empty or missing"

Running Command

mkdir -p /home/daytona/workspace/copd-ref && python3 -c "from reportlab.lib impo…

Writing File

~/copd-ref/make_pdf.py

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import mm
from reportlab.platypus import (
    SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer, HRFlowable
)
from reportlab.lib.styles import ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT
from reportlab.platypus import KeepTogether

OUTPUT = "/home/daytona/workspace/copd-ref/COPD_Exacerbation_Quick_Reference.pdf"

# ── Colours ──────────────────────────────────────────────────────────────────
DARK_BLUE   = colors.HexColor("#1A3A5C")
MED_BLUE    = colors.HexColor("#2E6DA4")
LIGHT_BLUE  = colors.HexColor("#D6E8F7")
ACCENT_RED  = colors.HexColor("#C0392B")
ACCENT_GRN  = colors.HexColor("#1E7E34")
PALE_GREY   = colors.HexColor("#F5F5F5")
WHITE       = colors.white
GOLD_AMBER  = colors.HexColor("#F0A500")

# ── Styles ────────────────────────────────────────────────────────────────────
title_style = ParagraphStyle("title",
    fontName="Helvetica-Bold", fontSize=15, textColor=WHITE,
    alignment=TA_CENTER, spaceAfter=2)

subtitle_style = ParagraphStyle("subtitle",
    fontName="Helvetica", fontSize=8, textColor=LIGHT_BLUE,
    alignment=TA_CENTER, spaceAfter=0)

section_style = ParagraphStyle("section",
    fontName="Helvetica-Bold", fontSize=8, textColor=WHITE,
    alignment=TA_CENTER)

body = ParagraphStyle("body", fontName="Helvetica", fontSize=7.5, textColor=colors.black, leading=10)
body_bold = ParagraphStyle("body_bold", fontName="Helvetica-Bold", fontSize=7.5, textColor=DARK_BLUE, leading=10)
small = ParagraphStyle("small", fontName="Helvetica", fontSize=6.5, textColor=colors.grey, leading=9)
red_bold = ParagraphStyle("red_bold", fontName="Helvetica-Bold", fontSize=7.5, textColor=ACCENT_RED)
grn_bold = ParagraphStyle("grn_bold", fontName="Helvetica-Bold", fontSize=7.5, textColor=ACCENT_GRN)
cell_hdr = ParagraphStyle("cell_hdr", fontName="Helvetica-Bold", fontSize=7.5, textColor=WHITE, alignment=TA_CENTER)
cell_body = ParagraphStyle("cell_body", fontName="Helvetica", fontSize=7, textColor=colors.black, leading=9)
cell_bold = ParagraphStyle("cell_bold", fontName="Helvetica-Bold", fontSize=7, textColor=DARK_BLUE, leading=9)

def section_header(text, bg=MED_BLUE):
    t = Table([[Paragraph(text, section_style)]], colWidths=[175*mm])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), bg),
        ("TOPPADDING",    (0,0), (-1,-1), 3),
        ("BOTTOMPADDING", (0,0), (-1,-1), 3),
        ("LEFTPADDING",   (0,0), (-1,-1), 5),
        ("RIGHTPADDING",  (0,0), (-1,-1), 5),
    ]))
    return t

def drug_table(headers, rows, col_widths):
    data = [[Paragraph(h, cell_hdr) for h in headers]]
    for row in rows:
        data.append([Paragraph(str(c), cell_body) for c in row])
    t = Table(data, colWidths=col_widths)
    style = [
        ("BACKGROUND",    (0,0), (-1,0),  DARK_BLUE),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, PALE_GREY]),
        ("GRID",          (0,0), (-1,-1), 0.4, colors.HexColor("#AAAAAA")),
        ("TOPPADDING",    (0,0), (-1,-1), 3),
        ("BOTTOMPADDING", (0,0), (-1,-1), 3),
        ("LEFTPADDING",   (0,0), (-1,-1), 4),
        ("RIGHTPADDING",  (0,0), (-1,-1), 4),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ]
    t.setStyle(TableStyle(style))
    return t

# ── Document ──────────────────────────────────────────────────────────────────
doc = SimpleDocTemplate(
    OUTPUT, pagesize=A4,
    leftMargin=10*mm, rightMargin=10*mm,
    topMargin=8*mm,   bottomMargin=8*mm
)

story = []

# ── HEADER BANNER ─────────────────────────────────────────────────────────────
header_data = [[
    Paragraph("COPD EXACERBATION", title_style),
    Paragraph("QUICK REFERENCE CARD", title_style),
]]
header_table = Table(header_data, colWidths=[90*mm, 85*mm])
header_table.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,-1), DARK_BLUE),
    ("TOPPADDING",    (0,0), (-1,-1), 6),
    ("BOTTOMPADDING", (0,0), (-1,-1), 2),
]))
story.append(header_table)

sub_data = [[Paragraph("Based on GOLD 2025 Guidelines  |  For reference only — always apply clinical judgement", subtitle_style)]]
sub_t = Table(sub_data, colWidths=[175*mm])
sub_t.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,-1), DARK_BLUE),
    ("TOPPADDING",    (0,0), (-1,-1), 0),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
]))
story.append(sub_t)
story.append(Spacer(1, 2*mm))

# ────────────────────────────────────────────────────────────────────────────
# TWO-COLUMN LAYOUT via a wide Table
# ────────────────────────────────────────────────────────────────────────────
col_W = 86*mm   # each column
gap   = 3*mm

# ── LEFT COLUMN ───────────────────────────────────────────────────────────────
left = []

# 1. OXYGEN
left.append(section_header("① OXYGEN THERAPY", ACCENT_RED))
left.append(Spacer(1,1.5*mm))
left.append(Paragraph("<b>Target SpO₂: 88–92%</b>  (avoid hyperoxia → hypercapnia)", body_bold))
left.append(Spacer(1,1*mm))
oxy_rows = [
    ["Nasal cannula", "1–4 L/min", "Titrate to SpO₂ 88-92%"],
    ["Venturi mask", "24–28%", "More precise FiO₂ control"],
    ["Use <b>air-driven</b> nebulizers", "—", "Avoid O₂-driven (↑PaCO₂)"],
]
left.append(drug_table(["Device","Flow/FiO₂","Note"], oxy_rows, [32*mm, 24*mm, 30*mm]))
left.append(Paragraph("→ Check ABG at 30–60 min. Monitor for rising PaCO₂.", small))

left.append(Spacer(1,2*mm))

# 2. BRONCHODILATORS
left.append(section_header("② BRONCHODILATORS  (Start Immediately)", MED_BLUE))
left.append(Spacer(1,1.5*mm))
left.append(Paragraph("<b>SABA — First Line</b>", body_bold))
bd_rows = [
    ["Salbutamol (nebulized)", "2.5 mg q20 min × 3\nthen q1–4h PRN"],
    ["Salbutamol MDI + spacer", "4–8 puffs q1–4h PRN"],
]
left.append(drug_table(["Drug","Dose"], bd_rows, [46*mm, 40*mm]))
left.append(Spacer(1,1*mm))
left.append(Paragraph("<b>SAMA — Add if inadequate response</b>", body_bold))
sa_rows = [
    ["Ipratropium (nebulized)", "0.5 mg (500 mcg) q4–6h"],
    ["Ipratropium MDI + spacer", "4–8 puffs q4–6h"],
]
left.append(drug_table(["Drug","Dose"], sa_rows, [46*mm, 40*mm]))
left.append(Spacer(1,1*mm))
left.append(Paragraph(
    "✔ Can combine Salbutamol + Ipratropium in same nebulizer\n"
    "✔ Continue existing LABA/LAMA — do NOT stop\n"
    "✘ IV Methylxanthines (theophylline) — NOT recommended", small))

left.append(Spacer(1,2*mm))

# 3. CORTICOSTEROIDS
left.append(section_header("③ SYSTEMIC CORTICOSTEROIDS", colors.HexColor("#7B3F00")))
left.append(Spacer(1,1.5*mm))
cs_rows = [
    ["Prednisolone", "30–40 mg PO once daily", "5 days (preferred)"],
    ["Methylprednisolone", "40 mg IV once daily", "5 days if cannot take PO"],
]
left.append(drug_table(["Drug","Dose","Duration"], cs_rows, [30*mm, 33*mm, 23*mm]))
left.append(Paragraph(
    "• Oral = IV in efficacy  • No benefit > 5 days  • No taper needed for 5-day course", small))

left.append(Spacer(1,2*mm))

# INDICATORS FOR HOSPITALIZATION
left.append(section_header("⚠ ADMIT TO HOSPITAL IF", colors.HexColor("#7D3C98")))
left.append(Spacer(1,1.5*mm))
admit_items = [
    "Marked dyspnea at rest / cyanosis",
    "SpO₂ < 90% despite O₂",
    "Confusion / altered consciousness",
    "Respiratory acidosis: pH ≤ 7.35",
    "Failure to respond to initial treatment",
    "Significant comorbidities (cardiac, etc.)",
]
for item in admit_items:
    left.append(Paragraph(f"▸  {item}", body))
left.append(Spacer(1,1*mm))
left.append(Paragraph(
    "<b>ICU if:</b> pH < 7.25, persistent hypoxia, resp. arrest, hemodynamic instability",
    red_bold))

# ── RIGHT COLUMN ──────────────────────────────────────────────────────────────
right = []

# 4. ANTIBIOTICS
right.append(section_header("④ ANTIBIOTICS", ACCENT_GRN))
right.append(Spacer(1,1.5*mm))
right.append(Paragraph("<b>Indications (GOLD — any ONE below):</b>", body_bold))
right.append(Paragraph("1. Increased dyspnea + sputum volume + purulence (all 3)", body))
right.append(Paragraph("2. Increased purulence + either dyspnea OR volume", body))
right.append(Paragraph("3. Requires assisted ventilation (NIV or intubation)", body))
right.append(Spacer(1,1.5*mm))
right.append(Paragraph("<b>Standard risk (no Pseudomonas):</b>", body_bold))
ab_rows = [
    ["Azithromycin", "500 mg PO OD", "5 days"],
    ["Amoxicillin-clavulanate", "875/125 mg PO BD", "5–7 days"],
    ["Doxycycline", "100 mg PO BD", "5–7 days"],
]
right.append(drug_table(["Drug","Dose","Duration"], ab_rows, [35*mm, 28*mm, 18*mm]))
right.append(Spacer(1,1.5*mm))
right.append(Paragraph(
    "<b>High risk — Pseudomonas coverage</b>\n"
    "(severe COPD, bronchiectasis, recent hospitalization, prior Pseudomonas):", body_bold))
ab_rows2 = [
    ["Levofloxacin", "750 mg PO/IV OD", "7–10 days"],
    ["Ciprofloxacin", "400 mg IV / 750 mg PO BD", "7–10 days"],
]
right.append(drug_table(["Drug","Dose","Duration"], ab_rows2, [28*mm, 37*mm, 16*mm]))
right.append(Paragraph(
    "Post-exacerbation prophylaxis: Azithromycin 250 mg every 2 days × 3 months", small))

right.append(Spacer(1,2*mm))

# 5. NIV
right.append(section_header("⑤ NON-INVASIVE VENTILATION (BiPAP)", colors.HexColor("#1A6352")))
right.append(Spacer(1,1.5*mm))
right.append(Paragraph("<b>Indications:</b>", body_bold))
right.append(Paragraph("• pH ≤ 7.35 with PaCO₂ > 45 mmHg (respiratory acidosis)", body))
right.append(Paragraph("• Severe dyspnea + accessory muscle use / paradoxical breathing", body))
right.append(Paragraph("• Persistent hypoxia despite controlled O₂ therapy", body))
right.append(Spacer(1,1.5*mm))
niv_rows = [
    ["IPAP (inspiratory)", "10–15 cmH₂O", "Titrate up for relief"],
    ["EPAP (expiratory)", "4–5 cmH₂O", "Start low"],
    ["FiO₂", "Titrate", "SpO₂ target 88–92%"],
]
right.append(drug_table(["Parameter","Start","Goal"], niv_rows, [33*mm, 27*mm, 21*mm]))
right.append(Paragraph(
    "• NIV reduces mortality, intubation rate, ICU stay\n"
    "• Reassess in 1h — if pH worsening, escalate to intubation", small))

right.append(Spacer(1,2*mm))

# 6. SUPPORTIVE
right.append(section_header("⑥ SUPPORTIVE CARE", DARK_BLUE))
right.append(Spacer(1,1.5*mm))
sup_rows = [
    ["DVT prophylaxis", "LMWH SC (e.g. enoxaparin 40 mg OD)"],
    ["Fluid balance", "Monitor — avoid overhydration"],
    ["Nutrition", "Maintain caloric intake"],
    ["Smoking cessation", "Counsel at every admission"],
    ["Vaccinations", "Influenza + pneumococcal if due"],
]
right.append(drug_table(["Measure","Detail"], sup_rows, [32*mm, 54*mm]))

right.append(Spacer(1,2*mm))

# 7. DISCHARGE
right.append(section_header("⑦ DISCHARGE & FOLLOW-UP", GOLD_AMBER))
right.append(Spacer(1,1.5*mm))
right.append(Paragraph("<b>Safe to discharge when:</b>", body_bold))
right.append(Paragraph("• SABA needed ≤ q4h  •  Patient mobile across room", body))
right.append(Paragraph("• Eating/sleeping without major dyspnea  •  ABG stable", body))
right.append(Spacer(1,1*mm))
right.append(Paragraph("<b>Follow-up:</b>  Within 4–6 weeks", body_bold))
right.append(Paragraph("Review: inhaler technique • maintenance therapy • exacerbation triggers", body))

# ── ASSEMBLE TWO-COLUMN TABLE ─────────────────────────────────────────────────
two_col = Table([[left, right]], colWidths=[col_W, col_W])
two_col.setStyle(TableStyle([
    ("VALIGN",       (0,0), (-1,-1), "TOP"),
    ("LEFTPADDING",  (0,0), (-1,-1), 0),
    ("RIGHTPADDING", (0,0), (-1,-1), 0),
    ("TOPPADDING",   (0,0), (-1,-1), 0),
    ("BOTTOMPADDING",(0,0), (-1,-1), 0),
    ("LINEAFTER",    (0,0), (0,-1), 0.5, colors.HexColor("#CCCCCC")),
    ("RIGHTPADDING", (0,0), (0,-1), 3),
    ("LEFTPADDING",  (1,0), (1,-1), 3),
]))
story.append(two_col)

# ── FOOTER ────────────────────────────────────────────────────────────────────
story.append(Spacer(1, 2*mm))
story.append(HRFlowable(width="100%", thickness=0.5, color=DARK_BLUE))
story.append(Spacer(1,1*mm))
footer_data = [[
    Paragraph("Sources: GOLD 2025 Report &amp; Pocket Guide | Goldman-Cecil Medicine | Rosen's Emergency Medicine | Goodman &amp; Gilman's Pharmacology", small),
    Paragraph("July 2026  |  For educational use only", small),
]]
ft = Table(footer_data, colWidths=[135*mm, 40*mm])
ft.setStyle(TableStyle([
    ("LEFTPADDING",  (0,0), (-1,-1), 0),
    ("RIGHTPADDING", (0,0), (-1,-1), 0),
    ("TOPPADDING",   (0,0), (-1,-1), 0),
    ("BOTTOMPADDING",(0,0), (-1,-1), 0),
    ("ALIGN", (1,0), (1,0), "RIGHT"),
]))
story.append(ft)

doc.build(story)
print("PDF created:", OUTPUT)
Running Command

cd /home/daytona/workspace/copd-ref && python3 make_pdf.py 2>&1

Your one-page quick reference PDF is ready:

COPD Exacerbation Quick Reference

PDF Document · PDF

What's included on the card:
  • ① Oxygen Therapy - target SpO₂ 88-92%, device options, air-driven nebulizer rule
  • ② Bronchodilators - Salbutamol doses (nebulized + MDI), Ipratropium add-on, notes on LABA/LAMA
  • ③ Systemic Corticosteroids - Prednisolone 30-40 mg × 5 days, oral vs IV
  • ④ Antibiotics - GOLD indications, standard vs Pseudomonas-risk regimens with durations, post-exacerbation prophylaxis
  • ⑤ NIV (BiPAP) - indications, starting IPAP/EPAP settings
  • ⑥ Supportive Care - DVT prophylaxis, fluids, nutrition, vaccinations
  • ⑦ Discharge & Follow-up - criteria + 4-6 week follow-up reminder
  • Admit/ICU criteria panel with red flags
Formatted as a colour-coded two-column A4 page, based on GOLD 2025.
This is a shared conversation. Sign in to Orris to start your own chat.