Anaesthesia for copd
"COPD" AND "anesthesia" AND "perioperative"
| Feature | Chronic Bronchitis | Emphysema |
|---|---|---|
| Cough | Frequent, productive | Minimal |
| Hematocrit | Elevated | Normal |
| PaCO₂ | Often elevated (>40 mmHg) | Usually normal/<40 |
| Chest X-ray | Increased lung markings | Hyperinflation |
| Elastic recoil | Normal | Decreased |
| Airway resistance | Increased | Normal–slightly increased |
| Cor pulmonale | Early | Late |
| Parameter | Target |
|---|---|
| Tidal volume | 6–8 mL/kg IBW |
| Respiratory rate | Slow (8–12 breaths/min) |
| I:E ratio | Prolonged expiration (1:3 or 1:4) |
| PEEP | Low extrinsic PEEP (3–5 cmH₂O) to counterbalance iPEEP |
| Peak airway pressure | <30 cmH₂O |
| FiO₂ | Titrate to SpO₂ 92–96% |
| Complication | Recognition | Management |
|---|---|---|
| Bronchospasm | ↑ peak airway pressure, wheeze, desaturation | Deepen anaesthesia (volatile), IV salbutamol, ipratropium, IV hydrocortisone |
| Dynamic hyperinflation / iPEEP | ↑ airway pressure, haemodynamic instability, hypercapnia | Slow RR, extend expiration, disconnect & allow passive exhalation |
| Pneumothorax (esp. bullae) | Hypoxia, ↑ airway pressure, ↓ tidal volumes, haemodynamic collapse | Immediate needle decompression; avoid N₂O |
| Right heart failure / cor pulmonale | Hypotension, ↑ CVP, ECG changes | Treat hypercapnia/acidosis, inotropes (dobutamine), vasopressors |
| Hypoxaemia | SpO₂ ↓ | ABG; address V/Q mismatch; avoid excessive O₂ in chronic retainers |
Make it ppt
ls -la /home/daytona/workspace/ 2>/dev/null || echo "workspace not found"
mkdir -p /home/daytona/workspace/copd-anaesthesia-ppt
~/copd-anaesthesia-ppt/generate.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Anaesthesia for COPD";
pres.author = "Orris Medical";
// ─── THEME ──────────────────────────────────────────────────────────────────
const C = {
navy: "0D1B3E", // dominant dark bg
teal: "00B4D8", // accent / headers
tealDk: "0077A8",
white: "FFFFFF",
offWht: "E8F4F8",
amber: "F4A261", // warning / highlight
red: "E63946", // danger
green: "52B788", // safe / positive
grey: "8ECAE6",
ltGrey: "C8D8E0",
dark: "061226",
};
// ─── HELPERS ────────────────────────────────────────────────────────────────
function titleSlide(slide, title, subtitle) {
// full dark bg
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:10, h:5.625, fill:{ color: C.navy }, line:{ color: C.navy } });
// teal accent bar left
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:0.35, h:5.625, fill:{ color: C.teal }, line:{ color: C.teal } });
// bottom stripe
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:5.1, w:10, h:0.525, fill:{ color: C.tealDk }, line:{ color: C.tealDk } });
slide.addText(title, {
x:0.6, y:1.5, w:8.8, h:1.4,
fontSize:40, bold:true, color: C.white, fontFace:"Calibri",
align:"left", valign:"middle"
});
if (subtitle) {
slide.addText(subtitle, {
x:0.6, y:3.0, w:8.8, h:0.8,
fontSize:20, color: C.grey, fontFace:"Calibri", align:"left"
});
}
slide.addText("Based on Miller's Anesthesia 10e | Morgan & Mikhail 7e | Barash Clinical Anesthesia 9e", {
x:0.4, y:5.15, w:9.2, h:0.4,
fontSize:10, color: C.white, fontFace:"Calibri", align:"left"
});
}
function sectionHeader(slide, title, subtitle) {
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:10, h:5.625, fill:{ color: C.tealDk }, line:{ color: C.tealDk } });
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:10, h:0.08, fill:{ color: C.amber }, line:{ color: C.amber } });
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:5.545, w:10, h:0.08, fill:{ color: C.amber }, line:{ color: C.amber } });
slide.addText(title, {
x:0.8, y:1.8, w:8.4, h:1.2,
fontSize:38, bold:true, color: C.white, fontFace:"Calibri", align:"center"
});
if (subtitle) {
slide.addText(subtitle, {
x:0.8, y:3.1, w:8.4, h:0.7,
fontSize:18, color: C.offWht, fontFace:"Calibri", align:"center", italic:true
});
}
}
function contentSlide(slide, title, bullets, opts={}) {
// Header bar
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:10, h:0.9, fill:{ color: C.navy }, line:{ color: C.navy } });
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:0.9, w:10, h:0.055, fill:{ color: C.teal }, line:{ color: C.teal } });
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:0.9, w:0.18, h:4.725, fill:{ color: C.teal }, line:{ color: C.teal } });
slide.addText(title, {
x:0.3, y:0.08, w:9.4, h:0.74,
fontSize:22, bold:true, color: C.white, fontFace:"Calibri", valign:"middle"
});
const items = bullets.map((b, i) => {
if (typeof b === "string") {
return { text: b, options: { bullet:{ code:"2022" }, color: C.dark, fontSize:opts.fontSize||16, fontFace:"Calibri", breakLine: i < bullets.length-1, paraSpaceBefore:4 } };
}
return b;
});
slide.addText(items, {
x:0.45, y:1.1, w:9.3, h:4.3,
valign:"top", margin:8
});
// page accent
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:5.525, w:10, h:0.1, fill:{ color: C.tealDk }, line:{ color: C.tealDk } });
}
function twoColSlide(slide, title, leftTitle, leftBullets, rightTitle, rightBullets) {
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:10, h:0.9, fill:{ color: C.navy }, line:{ color: C.navy } });
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:0.9, w:10, h:0.055, fill:{ color: C.teal }, line:{ color: C.teal } });
slide.addText(title, {
x:0.3, y:0.08, w:9.4, h:0.74,
fontSize:22, bold:true, color: C.white, fontFace:"Calibri", valign:"middle"
});
// Left panel
slide.addShape(pres.shapes.RECTANGLE, { x:0.25, y:1.05, w:4.45, h:4.35, fill:{ color: C.offWht }, line:{ color: C.ltGrey } });
slide.addText(leftTitle, { x:0.35, y:1.1, w:4.25, h:0.42, fontSize:14, bold:true, color: C.tealDk, fontFace:"Calibri" });
const lItems = leftBullets.map((b,i)=>({ text:b, options:{ bullet:{code:"2022"}, color:C.dark, fontSize:14, fontFace:"Calibri", breakLine:i<leftBullets.length-1, paraSpaceBefore:3 } }));
slide.addText(lItems, { x:0.35, y:1.55, w:4.2, h:3.7, valign:"top" });
// Right panel
slide.addShape(pres.shapes.RECTANGLE, { x:5.1, y:1.05, w:4.65, h:4.35, fill:{ color: C.offWht }, line:{ color: C.ltGrey } });
slide.addText(rightTitle, { x:5.2, y:1.1, w:4.45, h:0.42, fontSize:14, bold:true, color: C.tealDk, fontFace:"Calibri" });
const rItems = rightBullets.map((b,i)=>({ text:b, options:{ bullet:{code:"2022"}, color:C.dark, fontSize:14, fontFace:"Calibri", breakLine:i<rightBullets.length-1, paraSpaceBefore:3 } }));
slide.addText(rItems, { x:5.2, y:1.55, w:4.45, h:3.7, valign:"top" });
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:5.525, w:10, h:0.1, fill:{ color: C.tealDk }, line:{ color: C.tealDk } });
}
function tableSlide(slide, title, headers, rows, colW) {
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:10, h:0.9, fill:{ color: C.navy }, line:{ color: C.navy } });
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:0.9, w:10, h:0.055, fill:{ color: C.teal }, line:{ color: C.teal } });
slide.addText(title, {
x:0.3, y:0.08, w:9.4, h:0.74,
fontSize:22, bold:true, color: C.white, fontFace:"Calibri", valign:"middle"
});
const tableData = [
headers.map(h => ({ text: h, options: { bold:true, color: C.white, fill: C.tealDk, fontSize:13, fontFace:"Calibri", align:"center" } })),
...rows.map((row, ri) =>
row.map(cell => ({ text: cell, options: { fontSize:12, fontFace:"Calibri", color: C.dark, fill: ri%2===0 ? "F0F8FB" : C.white } }))
)
];
slide.addTable(tableData, {
x:0.3, y:1.05, w:9.4,
rowH:0.42,
border: { type:"solid", color: C.ltGrey, pt:0.5 },
colW: colW
});
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:5.525, w:10, h:0.1, fill:{ color: C.tealDk }, line:{ color: C.tealDk } });
}
// ─── SLIDE 1: TITLE ─────────────────────────────────────────────────────────
let s1 = pres.addSlide();
titleSlide(s1, "Anaesthesia for COPD", "Preoperative Assessment · Intraoperative Management · Postoperative Care");
// ─── SLIDE 2: SECTION — Pathophysiology ─────────────────────────────────────
let s2 = pres.addSlide();
sectionHeader(s2, "Pathophysiology", "Understanding the respiratory derangements that drive anaesthetic decision-making");
// ─── SLIDE 3: COPD Overview ──────────────────────────────────────────────────
let s3 = pres.addSlide();
contentSlide(s3, "COPD — Overview & Pathophysiology", [
"COPD = Chronic Bronchitis + Emphysema (most patients have both)",
"Chronic Bronchitis: productive cough ≥3 months/year for ≥2 consecutive years; ↑ airway resistance, mucus hypersecretion",
"Emphysema: irreversible alveolar destruction → loss of elastic recoil → expiratory airflow limitation",
"Air trapping → Dynamic Hyperinflation → ↑ RV, FRC, TLC and RV/TLC ratio",
"V/Q mismatch + ↓ diffusion capacity → hypoxaemia",
"Chronic CO₂ retention → compensated respiratory acidosis; blunted hypercapnic drive",
"Advanced disease: pulmonary hypertension → right ventricular dysfunction → Cor Pulmonale",
]);
// ─── SLIDE 4: Pink Puffer vs Blue Bloater ────────────────────────────────────
let s4 = pres.addSlide();
tableSlide(s4, "Emphysema vs Chronic Bronchitis",
["Feature", "Chronic Bronchitis\n(\"Blue Bloater\")", "Emphysema\n(\"Pink Puffer\")"],
[
["Cough", "Frequent, productive", "With exertion"],
["Sputum", "Copious", "Scant"],
["Hematocrit", "Elevated", "Normal"],
["PaCO₂", "Often elevated (>40 mmHg)", "Usually normal / <40"],
["Chest X-ray", "↑ lung markings", "Hyperinflation, bullae"],
["Elastic recoil", "Normal", "Decreased"],
["Airway resistance", "Increased", "Normal–slightly increased"],
["Cor pulmonale", "Early", "Late"],
],
[2.5, 3.45, 3.45]
);
// ─── SLIDE 5: SECTION — Preoperative Assessment ──────────────────────────────
let s5 = pres.addSlide();
sectionHeader(s5, "Preoperative Assessment", "Optimise before elective surgery — only limited improvement is possible in a short window");
// ─── SLIDE 6: History & Clinical Assessment ──────────────────────────────────
let s6 = pres.addSlide();
twoColSlide(s6, "Preoperative Assessment — History & Examination",
"Key History Points", [
"Dyspnoea grade: exertional vs minimal activity",
"Productive cough — sputum colour, volume",
"Recent exacerbations / hospitalisations",
"Exercise tolerance (stairs / flat walking)",
"Wheeze, current medications",
"Smoking history (pack-years)",
"Symptoms of cor pulmonale (oedema, exertional syncope)",
],
"Examination Findings", [
"Barrel chest, hyperinflated",
"Pursed-lip breathing (emphysema)",
"Prolonged expiration, wheeze",
"Accessory muscle use",
"Cyanosis, elevated JVP",
"Peripheral oedema (cor pulmonale)",
"Clubbing (lung cancer co-morbidity)",
]
);
// ─── SLIDE 7: Investigations ─────────────────────────────────────────────────
let s7 = pres.addSlide();
contentSlide(s7, "Investigations", [
"Spirometry (PFTs): FEV₁/FVC <0.7 confirms obstruction; FEV₁ % predicted grades severity (GOLD 1–4)",
"⚠️ PFT results are NOT predictors of perioperative complications and should NOT be used to deny surgery",
"ABG: establish baseline; PaCO₂ >45 mmHg = chronic CO₂ retention → higher postoperative morbidity",
"Chest X-ray: hyperinflation, bullae (critical — bullae + N₂O = pneumothorax risk), increased lung markings",
"ECG: P pulmonale, right axis deviation, RV hypertrophy",
"ECHO: assess pulmonary hypertension, RV function, LVEF",
"FBC: polycythaemia (chronic hypoxaemia); Sputum culture if infected",
"ARISCAT Score: Low <26 (1.6%), Intermediate 26–44 (13.3%), High ≥45 (42.1%) risk of pulmonary complications",
], { fontSize: 15 });
// ─── SLIDE 8: Preoperative Optimisation ──────────────────────────────────────
let s8 = pres.addSlide();
contentSlide(s8, "Preoperative Optimisation", [
"🚭 Smoking cessation ≥6–8 weeks before surgery (↓ secretions, ↓ carboxyHb). Even 24h → ↑ O₂-carrying capacity",
"💊 Continue ALL bronchodilators (SABAs, LABAs, anticholinergics, ICS) on the day of surgery",
"🦠 Treat active respiratory infection with antibiotics; culture sputum if purulent",
"💉 Short course corticosteroids (prednisolone 40 mg/day × 2 days) for significant COPD/asthma",
"🫁 Chest physiotherapy, incentive spirometry, breathing exercises, postural drainage",
"🏃 Pulmonary rehabilitation (prehabilitation) in high-risk patients — improves functional reserve",
"⚕️ Patients with FEV₁ <50% predicted: warn of possible postoperative HDU/ICU admission & ventilation",
"❌ Treat any active COPD exacerbation aggressively before proceeding with elective surgery",
], { fontSize: 15 });
// ─── SLIDE 9: SECTION — Choice of Anaesthesia ────────────────────────────────
let s9 = pres.addSlide();
sectionHeader(s9, "Choice of Anaesthesia", "Regional vs General — benefits and caveats for the COPD patient");
// ─── SLIDE 10: Regional vs General ───────────────────────────────────────────
let s10 = pres.addSlide();
twoColSlide(s10, "Regional vs General Anaesthesia",
"Regional Anaesthesia — Preferred Where Feasible", [
"Avoids airway manipulation (↓ bronchospasm risk)",
"Reduces postoperative opioid requirements",
"↓ respiratory depression risk",
"Epidural/spinal: good for lower limb, urological, some abdominal surgery",
"BUT: high spinal/epidural → ↓ lung volumes, restricted accessory muscles, ineffective cough",
"Interscalene block: relatively contraindicated (hemidiaphragm paralysis risk)",
"Awake patients: positional dyspnoea in lithotomy/lateral positions",
],
"General Anaesthesia — When Required", [
"Mandatory preoxygenation — rapid desaturation on induction",
"Volatile agents (sevo/iso) preferred — bronchodilatory",
"LMA preferred over ETT where feasible (less airway stimulation)",
"Ketamine useful: bronchodilatory properties",
"Avoid N₂O: bullae → pneumothorax; worsens V/Q; pulmonary HTN",
"ETCO₂ unreliable — widened a-ET CO₂ gradient (↑ dead space)",
"Neuromuscular blockade: full reversal essential (sugammadex preferred)",
]
);
// ─── SLIDE 11: SECTION — Intraoperative Management ───────────────────────────
let s11 = pres.addSlide();
sectionHeader(s11, "Intraoperative Management", "Ventilation strategy · Dynamic hyperinflation · Monitoring");
// ─── SLIDE 12: Ventilation Strategy ──────────────────────────────────────────
let s12 = pres.addSlide();
tableSlide(s12, "Ventilator Settings for COPD (Positive Pressure Ventilation)",
["Parameter", "Target", "Rationale"],
[
["Tidal Volume", "6–8 mL/kg IBW", "Prevent volutrauma; accommodate hyperinflation"],
["Respiratory Rate", "8–12 breaths/min (slow)", "Allow full expiration; reduce air trapping"],
["I:E Ratio", "1:3 or 1:4 (prolonged expiration)", "↑ expiratory time to allow lung emptying"],
["PEEP (extrinsic)", "Low: 3–5 cmH₂O", "Counterbalance iPEEP; stent airways open"],
["Peak Airway Pressure", "<30 cmH₂O", "Prevent barotrauma"],
["FiO₂", "Target SpO₂ 92–96%", "Avoid hyperoxia suppressing hypoxic drive"],
["PaCO₂", "Permissive hypercapnia (up to 70 mmHg)", "Prioritise lung-protective strategy over normocapnia"],
],
[2.5, 3.3, 3.6]
);
// ─── SLIDE 13: Dynamic Hyperinflation / iPEEP ─────────────────────────────────
let s13 = pres.addSlide();
contentSlide(s13, "Dynamic Hyperinflation & Intrinsic PEEP (iPEEP)", [
"Mechanism: expiratory flow limitation → incomplete lung emptying before next breath → air trapping → iPEEP",
"Consequences: lung injury, haemodynamic instability, hypercapnia, acidosis",
"Recognition: persistently elevated plateau/peak pressures, haemodynamic deterioration, hypercapnia",
"Management (4 key interventions):",
{ text: "① ↓ Respiratory rate + ↑ expiratory time (lower I:E ratio)", options: { bullet:false, indentLevel:1, color:C.tealDk, bold:true, fontSize:16, fontFace:"Calibri", breakLine:true, paraSpaceBefore:2 } },
{ text: "② ↓ Tidal volume to reduce air delivered per breath", options: { bullet:false, indentLevel:1, color:C.tealDk, bold:true, fontSize:16, fontFace:"Calibri", breakLine:true, paraSpaceBefore:2 } },
{ text: "③ Apply low extrinsic PEEP to stent small airways open", options: { bullet:false, indentLevel:1, color:C.tealDk, bold:true, fontSize:16, fontFace:"Calibri", breakLine:true, paraSpaceBefore:2 } },
{ text: "④ Treat bronchospasm aggressively — nebulised salbutamol, ipratropium, IV hydrocortisone", options: { bullet:false, indentLevel:1, color:C.tealDk, bold:true, fontSize:16, fontFace:"Calibri", breakLine:true, paraSpaceBefore:2 } },
"Disconnect circuit and allow passive exhalation if haemodynamic collapse occurs",
]);
// ─── SLIDE 14: Intraoperative Complications ───────────────────────────────────
let s14 = pres.addSlide();
tableSlide(s14, "Intraoperative Complications — Recognition & Management",
["Complication", "Recognition", "Management"],
[
["Bronchospasm", "↑ peak pressures, wheeze, SpO₂↓", "Deepen volatile, nebulised salbutamol, ipratropium, IV hydrocortisone"],
["Dynamic Hyperinflation / iPEEP", "↑ airway pressures, haemodynamic collapse, hypercapnia", "↓ RR, extend expiration, disconnect circuit for passive exhale"],
["Pneumothorax (bullae rupture)", "Hypoxia, ↑ pressures, ↓ TV, cardiovascular collapse", "Immediate needle decompression; avoid N₂O entirely"],
["Cor pulmonale / RV failure", "Hypotension, ↑ CVP, ECG: RV strain", "Treat hypercapnia/acidosis; dobutamine; vasopressors"],
["Hypoxaemia", "SpO₂↓, widened A-a gradient", "ABG; address V/Q mismatch; adjust FiO₂; PEEP titration"],
["Hypotension", "BP↓ intraoperatively", "Exclude pneumothorax, iPEEP; fluid; vasopressors; inotropes"],
],
[2.4, 3.2, 3.8]
);
// ─── SLIDE 15: SECTION — Postoperative Care ───────────────────────────────────
let s15 = pres.addSlide();
sectionHeader(s15, "Postoperative Care", "Extubation criteria · Oxygen therapy · Analgesia · Monitoring");
// ─── SLIDE 16: Extubation & Postoperative Management ────────────────────────
let s16 = pres.addSlide();
twoColSlide(s16, "Postoperative Management",
"Extubation Criteria", [
"Adequate pain control (multimodal/regional)",
"Full reversal of neuromuscular blockade (TOF ratio ≥0.9)",
"Absence of significant bronchospasm / secretions",
"No significant hypercapnia",
"SpO₂ acceptable on moderate FiO₂",
"Awake, cooperative, protective airway reflexes present",
"Plan ICU/HDU admission for high-risk patients (FEV₁ <50%)",
],
"Postoperative Interventions", [
"O₂ therapy: target SpO₂ 88–92% in CO₂ retainers (avoid hyperoxia suppressing hypoxic drive)",
"Regional/epidural analgesia: ↓ systemic opioids → ↓ respiratory depression",
"Chest physiotherapy, incentive spirometry, early mobilisation",
"NIV/CPAP: for postoperative atelectasis, mild-moderate respiratory failure",
"Continue bronchodilators (inhaled + nebulised as needed)",
"Monitor for: pneumonia, atelectasis, respiratory failure, COPD exacerbation",
"ABG postoperatively if CO₂ retainer at baseline",
]
);
// ─── SLIDE 17: Key Summary ────────────────────────────────────────────────────
let s17 = pres.addSlide();
slide = s17;
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:10, h:5.625, fill:{ color: C.navy }, line:{ color: C.navy } });
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:10, h:0.08, fill:{ color: C.amber }, line:{ color: C.amber } });
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:5.545, w:10, h:0.08, fill:{ color: C.amber }, line:{ color: C.amber } });
slide.addText("Key Summary", {
x:0.5, y:0.12, w:9, h:0.7,
fontSize:26, bold:true, color: C.teal, fontFace:"Calibri", align:"center"
});
const summaryPoints = [
{ icon:"🫁", text:"COPD = air trapping + V/Q mismatch + ↓ elastic recoil → dynamic hyperinflation risk under PPV" },
{ icon:"⚕️", text:"Optimise pre-op: continue bronchodilators, treat exacerbation, smoking cessation ≥6–8 wks" },
{ icon:"📊", text:"PFTs diagnose severity but do NOT predict perioperative risk — do not deny surgery on PFTs alone" },
{ icon:"🩺", text:"Regional anaesthesia preferred where feasible; avoid interscalene block (hemidiaphragm risk)" },
{ icon:"💉", text:"If GA: volatile agents (bronchodilatory), avoid N₂O (bullae/pulmonary HTN), ensure full NMB reversal" },
{ icon:"🌬️", text:"Ventilate: slow rate, prolonged expiration (1:3–1:4), low tidal volume, permissive hypercapnia" },
{ icon:"⚠️", text:"Unexplained haemodynamic collapse → exclude pneumothorax, dynamic hyperinflation, RV failure" },
{ icon:"🏥", text:"Post-op: SpO₂ 88–92% in CO₂ retainers; regional analgesia; plan ICU if FEV₁ <50% predicted" },
];
const summaryItems = summaryPoints.map((p, i) => [
{ text: p.icon + " " + p.text, options: { bullet:false, color:C.offWht, fontSize:14, fontFace:"Calibri", breakLine: i < summaryPoints.length-1, paraSpaceBefore:5 } }
]).flat();
slide.addText(summaryItems, {
x:0.4, y:0.88, w:9.2, h:4.55,
valign:"top", margin:6
});
// ─── WRITE ────────────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/copd-anaesthesia-ppt/Anaesthesia_for_COPD.pptx" })
.then(() => console.log("✅ Saved: Anaesthesia_for_COPD.pptx"))
.catch(e => { console.error("❌ Error:", e); process.exit(1); });
Failed to upload files: 400: /home/daytona/workspace/copd-anaesthesia-ppt/generate.js: rename: rename /home/daytona/workspace/copd-anaesthesia-ppt/generate.js.daytona-upload-1447350952 /home/daytona/workspace/copd-anaesthesia-ppt/generate.js: function not implemented
We encountered an error while processing your request. Please try again or reach out to us for help.