Hemodynamic monitoring in icu standard books. Need this info for a ppt

Asking for Preferences

Who is the target audience for this PPT? · How detailed should the content be? · Approximately how many slides?

I'll proceed with reasonable defaults: intermediate level, ~20 slides, audience of ICU residents/fellows. Let me first read the medical library skill and gather content in parallel.
Reading File
Reading File
Reading File
Finding Sources
Finding Sources
Good — I have key source files. Now let me read the richest ICU-relevant sections in parallel.
Reading File
Reading File
Reading File
Reading File
Finding Sources
Finding Sources
Reading File
Finding Sources
Finding Sources
Excellent — I have rich textbook content. Let me get a few more critical sections and an image, then build the PPT.
Reading File
Finding Sources
Searching Images

hemodynamic monitoring ICU pulmonary artery catheter waveform

I now have comprehensive content. Let me build the PPT.
Running Command

ls /home/daytona/workspace/ && mkdir -p /home/daytona/workspace/hemodynamic-ppt

Writing File

~/hemodynamic-ppt/build.js

const pptxgen = require("pptxgenjs");
const { execSync } = require("child_process");

// ── Fetch images ──────────────────────────────────────────────────────────────
const imageUrls = [
  "https://cdn.orris.care/cdss_images/3b2b9eed00a8df26b799d84f99f2ba0834a16fcd6e432c3df80e8366817047d7.png", // CVP waveform
  "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_781642e3139830e28fa91cf2c2fdd803df0e467783e546c207dd2738b3c18892.jpg", // CXR Swan-Ganz
  "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_a20416095754e4eab73a2b3704aa3bf487aad51e70fd15b477029595ddc8d28a.jpg", // PA pressure monitor
];

let imgs = [];
try {
  imgs = JSON.parse(
    execSync(
      `node /home/daytona/skills/shared/scripts/fetch_images.js "${imageUrls[0]}" "${imageUrls[1]}" "${imageUrls[2]}"`
    ).toString()
  );
} catch (e) {
  console.error("Image fetch error:", e.message);
}

const cvpImg   = imgs[0] && !imgs[0].error ? imgs[0].base64 : null;
const cxrImg   = imgs[1] && !imgs[1].error ? imgs[1].base64 : null;
const paMonImg = imgs[2] && !imgs[2].error ? imgs[2].base64 : null;

// ── Palette ───────────────────────────────────────────────────────────────────
const DARK  = "0D1B2A";   // deep navy (dominant bg)
const MID   = "1B3A52";   // steel blue (card bg)
const TEAL  = "1FA3A3";   // teal accent
const AMBER = "F4A43A";   // amber accent
const WHITE = "F0F4F8";
const LGRAY = "C8D8E8";
const CORAL = "E85D4A";

// ── Helpers ───────────────────────────────────────────────────────────────────
function titleSlide(pres, title, subtitle) {
  const slide = pres.addSlide();
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: DARK } });
  // accent bar left
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.18, h: 5.625, fill: { color: TEAL } });
  // amber accent bar right
  slide.addShape(pres.ShapeType.rect, { x: 9.82, y: 0, w: 0.18, h: 5.625, fill: { color: AMBER } });
  // subtle horizontal rule
  slide.addShape(pres.ShapeType.line, { x: 0.5, y: 2.9, w: 9, h: 0, line: { color: TEAL, width: 1.5 } });

  slide.addText(title, {
    x: 0.5, y: 1.1, w: 9, h: 1.3,
    fontSize: 36, bold: true, color: WHITE, fontFace: "Calibri",
    align: "center", margin: 0,
  });
  slide.addText(subtitle, {
    x: 0.5, y: 3.1, w: 9, h: 0.65,
    fontSize: 18, color: TEAL, fontFace: "Calibri",
    align: "center", margin: 0,
  });
  slide.addText("ICU Critical Care | 2026", {
    x: 0.5, y: 4.0, w: 9, h: 0.45,
    fontSize: 13, color: LGRAY, fontFace: "Calibri",
    align: "center", margin: 0,
  });
  return slide;
}

function sectionDivider(pres, sectionNum, sectionTitle) {
  const slide = pres.addSlide();
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: MID } });
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.12, fill: { color: TEAL } });
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 5.505, w: 10, h: 0.12, fill: { color: AMBER } });
  slide.addText(`0${sectionNum}`, {
    x: 0.5, y: 0.9, w: 2, h: 2,
    fontSize: 100, bold: true, color: TEAL, fontFace: "Calibri",
    align: "left", margin: 0, transparency: 60,
  });
  slide.addText(sectionTitle, {
    x: 2.8, y: 2.0, w: 6.8, h: 1.4,
    fontSize: 30, bold: true, color: WHITE, fontFace: "Calibri",
    align: "left", margin: 0,
  });
  return slide;
}

function contentSlide(pres, title, bullets, opts = {}) {
  const slide = pres.addSlide();
  // background
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: DARK } });
  // header bar
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.85, fill: { color: MID } });
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0.85, w: 10, h: 0.04, fill: { color: TEAL } });
  // title
  slide.addText(title, {
    x: 0.3, y: 0.1, w: 9.4, h: 0.7,
    fontSize: 20, bold: true, color: WHITE, fontFace: "Calibri",
    align: "left", margin: 0, valign: "middle",
  });

  const hasImg = opts.imgData && opts.imgData !== null;
  const bw = hasImg ? 5.5 : 9.2;
  const bx = 0.4;

  // bullets
  const bulletItems = bullets.map((b, i) => {
    if (b.startsWith("►")) {
      return { text: b.replace("►", "").trim(), options: { bullet: { type: "number", style: "arabicPeriod", color: AMBER }, color: WHITE, fontSize: 14, fontFace: "Calibri", bold: true, paraSpaceAfter: 6, breakLine: i < bullets.length - 1 } };
    }
    if (b.startsWith("  •")) {
      return { text: b.replace("  •", "").trim(), options: { bullet: { indent: 20 }, color: LGRAY, fontSize: 13, fontFace: "Calibri", paraSpaceAfter: 3, indentLevel: 1, breakLine: i < bullets.length - 1 } };
    }
    return { text: b, options: { bullet: { color: TEAL }, color: WHITE, fontSize: 14, fontFace: "Calibri", paraSpaceAfter: 5, breakLine: i < bullets.length - 1 } };
  });

  slide.addText(bulletItems, {
    x: bx, y: 1.05, w: bw, h: 4.35,
    valign: "top", margin: [8, 8, 4, 14],
  });

  if (hasImg) {
    slide.addImage({ data: opts.imgData, x: 6.1, y: 1.1, w: 3.6, h: 4.2, rounding: true });
  }

  // slide number bottom right
  if (opts.slideNum) {
    slide.addText(`${opts.slideNum}`, {
      x: 9.3, y: 5.25, w: 0.6, h: 0.3,
      fontSize: 10, color: LGRAY, fontFace: "Calibri", align: "right",
    });
  }
  return slide;
}

function twoColSlide(pres, title, leftItems, rightItems, opts = {}) {
  const slide = pres.addSlide();
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: DARK } });
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.85, fill: { color: MID } });
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0.85, w: 10, h: 0.04, fill: { color: TEAL } });
  slide.addText(title, {
    x: 0.3, y: 0.1, w: 9.4, h: 0.7,
    fontSize: 20, bold: true, color: WHITE, fontFace: "Calibri",
    align: "left", margin: 0, valign: "middle",
  });
  // divider
  slide.addShape(pres.ShapeType.line, { x: 5.05, y: 1.05, w: 0, h: 4.2, line: { color: TEAL, width: 0.75, dashType: "dash" } });

  // left header
  slide.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.05, w: 4.55, h: 0.38, fill: { color: TEAL }, rounding: true });
  slide.addText(opts.leftTitle || "Column A", { x: 0.3, y: 1.05, w: 4.55, h: 0.38, fontSize: 13, bold: true, color: WHITE, fontFace: "Calibri", align: "center", margin: 0, valign: "middle" });

  // right header
  slide.addShape(pres.ShapeType.rect, { x: 5.2, y: 1.05, w: 4.55, h: 0.38, fill: { color: AMBER }, rounding: true });
  slide.addText(opts.rightTitle || "Column B", { x: 5.2, y: 1.05, w: 4.55, h: 0.38, fontSize: 13, bold: true, color: DARK, fontFace: "Calibri", align: "center", margin: 0, valign: "middle" });

  const makeItems = (arr, col) => arr.map((b, i) => ({
    text: b.replace(/^[►•–]\s*/, ""),
    options: { bullet: { color: col }, color: WHITE, fontSize: 13, fontFace: "Calibri", paraSpaceAfter: 5, breakLine: i < arr.length - 1 }
  }));

  slide.addText(makeItems(leftItems, TEAL), { x: 0.3, y: 1.55, w: 4.55, h: 3.8, valign: "top", margin: [6, 8, 4, 12] });
  slide.addText(makeItems(rightItems, AMBER), { x: 5.2, y: 1.55, w: 4.55, h: 3.8, valign: "top", margin: [6, 8, 4, 12] });

  return slide;
}

function tableSlide(pres, title, headers, rows) {
  const slide = pres.addSlide();
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: DARK } });
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.85, fill: { color: MID } });
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0.85, w: 10, h: 0.04, fill: { color: TEAL } });
  slide.addText(title, {
    x: 0.3, y: 0.1, w: 9.4, h: 0.7,
    fontSize: 20, bold: true, color: WHITE, fontFace: "Calibri",
    align: "left", margin: 0, valign: "middle",
  });

  const tableData = [
    headers.map(h => ({ text: h, options: { bold: true, color: WHITE, fill: { color: TEAL }, fontSize: 13, fontFace: "Calibri", align: "center" } })),
    ...rows.map((row, ri) => row.map(cell => ({ text: cell, options: { color: ri % 2 === 0 ? WHITE : LGRAY, fill: { color: ri % 2 === 0 ? MID : "0F2637" }, fontSize: 12, fontFace: "Calibri", align: "center" } })))
  ];

  slide.addTable(tableData, {
    x: 0.3, y: 1.0, w: 9.4, h: 4.35,
    border: { type: "solid", color: TEAL, pt: 0.5 },
    rowH: 0.5,
  });
  return slide;
}

function summarySlide(pres) {
  const slide = pres.addSlide();
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: DARK } });
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.85, fill: { color: MID } });
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0.85, w: 10, h: 0.04, fill: { color: AMBER } });

  slide.addText("Key Takeaways", {
    x: 0.3, y: 0.1, w: 9.4, h: 0.7,
    fontSize: 22, bold: true, color: WHITE, fontFace: "Calibri",
    align: "left", margin: 0, valign: "middle",
  });

  const points = [
    { num: "1", text: "Match monitoring intensity to clinical need — start non-invasive, escalate based on shock severity & diagnostic uncertainty." },
    { num: "2", text: "Arterial line is the cornerstone of ICU BP monitoring; provides continuous waveform + sampling access." },
    { num: "3", text: "CVP alone is unreliable for fluid responsiveness; use dynamic indices (PPV >13%, SVV >13%) in ventilated patients." },
    { num: "4", text: "PAC remains the gold standard for CO/PAOP but is reserved for refractory shock or complex hemodynamics." },
    { num: "5", text: "ScvO2 <70% signals inadequate O₂ delivery; Fick equation links CO to oxygen extraction." },
    { num: "6", text: "Bedside echo (TTE/TEE) rapidly differentiates cardiogenic vs distributive shock without invasive risk." },
    { num: "7", text: "Minimally invasive devices (PiCCO, LiDCO, FloTrac) bridge the gap between CVP and PAC." },
  ];

  points.forEach((p, i) => {
    const col = i % 2 === 0 ? TEAL : AMBER;
    slide.addShape(pres.ShapeType.ellipse, { x: 0.35, y: 1.05 + i * 0.63, w: 0.4, h: 0.4, fill: { color: col } });
    slide.addText(p.num, { x: 0.35, y: 1.05 + i * 0.63, w: 0.4, h: 0.4, fontSize: 13, bold: true, color: DARK, fontFace: "Calibri", align: "center", margin: 0, valign: "middle" });
    slide.addText(p.text, { x: 0.9, y: 1.05 + i * 0.63, w: 8.8, h: 0.45, fontSize: 13, color: WHITE, fontFace: "Calibri", align: "left", margin: 0, valign: "middle" });
  });
  return slide;
}

// ══════════════════════════════════════════════════════════════════════════════
// BUILD PRESENTATION
// ══════════════════════════════════════════════════════════════════════════════
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.author = "ICU Critical Care";
pres.title = "Hemodynamic Monitoring in the ICU";

// SLIDE 1: Title
titleSlide(pres,
  "Hemodynamic Monitoring\nin the ICU",
  "Principles, Devices & Clinical Decision-Making"
);

// SLIDE 2: Agenda
contentSlide(pres, "Agenda", [
  "1.  Why Hemodynamic Monitoring Matters",
  "2.  ECG & Basic Monitoring",
  "3.  Arterial Line — Invasive BP Monitoring",
  "4.  Central Venous Pressure (CVP)",
  "5.  Pulmonary Artery Catheter (PAC)",
  "6.  Venous Oxygen Saturation (SvO₂ / ScvO₂)",
  "7.  Echocardiography in the ICU",
  "8.  Minimally Invasive CO Monitoring",
  "9.  Fluid Responsiveness & Dynamic Indices",
  "10. Monitoring Algorithm & Key Takeaways",
], { slideNum: 2 });

// SECTION 1 DIVIDER
sectionDivider(pres, 1, "Why Hemodynamic Monitoring Matters");

// SLIDE 3: Rationale
contentSlide(pres, "Why Hemodynamic Monitoring Matters", [
  "Hemodynamic assessment is vital for caring for critically ill patients",
  "  • Detects early signs of hemodynamic decompensation",
  "  • Differentiates cardiogenic vs non-cardiogenic pulmonary edema",
  "  • Identifies adverse effects of positive-pressure ventilation",
  "Positive-pressure ventilation effects:",
  "  • ↑ Intrathoracic pressure → ↓ venous return",
  "  • ↑ Pulmonary vascular resistance → ↓ RV output",
  "  • Ventricular interdependence can impair LV filling",
  "  • Can reduce cardiac output and precipitate cardiovascular collapse",
  "Goal: match O₂ delivery to tissue O₂ demand across all organ systems",
], { slideNum: 3 });

// SECTION 2 DIVIDER
sectionDivider(pres, 2, "ECG & Basic Monitoring");

// SLIDE 4: ECG Monitoring
contentSlide(pres, "ECG & Basic Monitoring in the ICU", [
  "Continuous bedside ECG (3–5 leads) — standard in all ICU patients",
  "Heart rate:",
  "  • Tachycardia: earliest sign of volume depletion / compensatory response",
  "  • Bradycardia: propofol, dexmedetomidine — ensure adequate CO",
  "Arrhythmia surveillance:",
  "  • Atrial fibrillation: most common ICU arrhythmia (10–40% of patients)",
  "  • New-onset AF: ↑ RRT need, longer LOS, higher mortality",
  "  • Risk factors: age, sepsis, shock, vasopressors, heart failure",
  "Non-invasive BP (NIBP):",
  "  • Automated oscillometric cuff; adequate in haemodynamically stable patients",
  "  • Mean arterial pressure (MAP) target ≥ 60–65 mmHg in most ICU patients",
  "  • Inaccurate in arrhythmias, obesity, vascular disease, shock states",
], { slideNum: 4 });

// SECTION 3 DIVIDER
sectionDivider(pres, 3, "Arterial Line — Invasive BP Monitoring");

// SLIDE 5: Arterial Line
contentSlide(pres, "Intra-Arterial Catheter (Arterial Line)", [
  "Indications:",
  "  • Continuous beat-to-beat BP monitoring",
  "  • Haemodynamic instability / vasopressor therapy",
  "  • Frequent arterial blood gas sampling",
  "  • Calculation of dynamic fluid-responsiveness indices",
  "Sites: Radial (1st choice) → Femoral → Brachial → Ulnar / Dorsalis pedis",
  "Waveform components:",
  "  • Systolic peak → dicrotic notch (aortic valve closure) → diastolic trough",
  "  • Damping affects accuracy — check resonant frequency & damping coefficient",
  "MAP = Diastolic + 1/3 (Pulse Pressure)",
  "Complications: thrombosis, infection, air embolism, distal ischaemia",
  "Bonus: waveform-derived PPV & SVV for dynamic preload assessment",
], { slideNum: 5 });

// SECTION 4 DIVIDER
sectionDivider(pres, 4, "Central Venous Pressure (CVP)");

// SLIDE 6: CVP
contentSlide(pres, "Central Venous Pressure (CVP)", [
  "CVP reflects right atrial pressure (normal: 2–8 mmHg)",
  "CVP waveform components:",
  "  • a wave: atrial contraction (after P wave)",
  "  • c wave: tricuspid valve bulge during early ventricular systole",
  "  • x descent: atrial relaxation",
  "  • v wave: atrial filling (tricuspid closed)",
  "  • y descent: tricuspid opens, atrium empties",
  "CVC provides: CVP, drug infusion access, blood sampling, ScvO₂",
  "CVP limitations:",
  "  • Poor predictor of fluid responsiveness (evidence: FACTT trial)",
  "  • High CVP ≠ cardiogenic pulmonary oedema (intravascular loading raises CVP)",
  "  • Not recommended as sole guide for fluid resuscitation",
], { slideNum: 6, imgData: cvpImg });

// SECTION 5 DIVIDER
sectionDivider(pres, 5, "Pulmonary Artery Catheter (PAC)");

// SLIDE 7: PAC — What It Measures
contentSlide(pres, "Pulmonary Artery Catheter — Measured & Derived Parameters", [
  "Direct measurements:",
  "  • RAP, RVP, PAP (systolic/diastolic/mean)",
  "  • Pulmonary artery occlusion pressure (PAOP / wedge) — reflects LVEDP",
  "  • Continuous cardiac output (CCO) via thermodilution",
  "  • Mixed venous oxygen saturation (SvO₂)",
  "Derived parameters:",
  "  • Cardiac Index (CI = CO / BSA) — normal: 2.5–4.0 L/min/m²",
  "  • SVR = (MAP − RAP) × 80 / CO   [normal: 800–1200 dyn·s·cm⁻⁵]",
  "  • PVR = (mPAP − PAOP) × 80 / CO",
  "  • DO₂ (O₂ delivery) and VO₂ (O₂ consumption)",
  "PAOP >18 mmHg previously used to define cardiogenic pulmonary oedema",
  "  • Berlin ARDS definition removed PAOP criterion (FACTT trial, NEJM 2006)",
], { slideNum: 7 });

// SLIDE 8: PAC — Indications, Complications, Image
contentSlide(pres, "Pulmonary Artery Catheter — Clinical Use", [
  "Indications (select patients only):",
  "  • Refractory shock (unresponsive to initial therapy)",
  "  • Pulmonary hypertension titration of vasodilators",
  "  • Complex post-cardiac surgery haemodynamics",
  "  • Differentiating high-output vs low-output heart failure",
  "Complications:",
  "  • Arrhythmias (most common during insertion)",
  "  • Pulmonary artery rupture (rare but fatal)",
  "  • Right bundle branch block, complete heart block",
  "  • Infection, thromboembolism",
  "Evidence: Multiple RCTs show no mortality benefit of routine PAC use",
  "Status: Declining use; replaced by echo + minimally invasive monitors",
], { slideNum: 8, imgData: cxrImg });

// SECTION 6 DIVIDER
sectionDivider(pres, 6, "Venous Oxygen Saturation");

// SLIDE 9: SvO2 / ScvO2
contentSlide(pres, "Mixed Venous & Central Venous O₂ Saturation", [
  "SvO₂ (mixed venous, pulmonary artery): normal 65–75%",
  "  • SvO₂ < 50% → severe inadequate O₂ delivery (shock)",
  "  • High SvO₂ → septic shock (↓ extraction) or high-output state",
  "Fick Equation:   CO = VO₂ / (CaO₂ − CvO₂)",
  "  • CaO₂ = 1.34 × [Hgb] × SaO₂ + 0.003 × PaO₂",
  "  • CI = CO / BSA",
  "ScvO₂ (central venous, CVC): practical surrogate for SvO₂",
  "  • ScvO₂ ≥ 70% is a resuscitation target (Rivers et al, EGDT)",
  "  • ScvO₂ < 70% → increase O₂ delivery (Hgb, CO, FiO₂)",
  "  • ScvO₂ slightly higher than SvO₂ (~5–8%) due to hepatic-mesenteric extraction",
  "Continuous ScvO₂ monitoring possible with specialized CVC catheters",
  "Superior to monitoring CO alone — detects occult hypoperfusion",
], { slideNum: 9 });

// SECTION 7 DIVIDER
sectionDivider(pres, 7, "Echocardiography in the ICU");

// SLIDE 10: Echo
contentSlide(pres, "Bedside Echocardiography (TTE / TEE)", [
  "TTE: widely available, rapid, adequate in most ICU patients",
  "TEE: reserved for poor TTE windows, endocarditis, atrial thrombus",
  "Standard focused views: Parasternal long/short axis, Apical 4-chamber, Subcostal",
  "Applications:",
  "  • LV systolic/diastolic function — cardiomyopathy, ischaemia, sepsis",
  "  • RV function — PE, ARDS, high PEEP → RV failure",
  "  • Fluid status — IVC diameter & collapsibility index",
  "  • Right-to-left shunting — PFO ('bubble study' with agitated saline)",
  "IVC Collapsibility Index (spontaneous breathing):",
  "  • = (IVC_exp − IVC_insp) / IVC_exp",
  "IVC Distensibility Index (mechanically ventilated):",
  "  • = (IVC_insp_max − IVC_exp_min) / IVC_exp_min",
  "Differentiates cardiogenic from non-cardiogenic pulmonary oedema rapidly",
], { slideNum: 10, imgData: paMonImg });

// SECTION 8 DIVIDER
sectionDivider(pres, 8, "Minimally Invasive CO Monitoring");

// SLIDE 11: Minimally Invasive Devices
contentSlide(pres, "Minimally Invasive Cardiac Output Monitoring", [
  "Pulse contour analysis — derived from arterial waveform:",
  "  • Assumes: stroke volume ∝ area under systolic portion of arterial waveform",
  "  • Requires periodic calibration for accuracy",
  "PiCCO (Pulse index Contour Cardiac Output):",
  "  • Transpulmonary thermodilution calibration",
  "  • Requires CVC + femoral arterial catheter",
  "  • Also measures ITBV, EVLW (extravascular lung water)",
  "LiDCOplus:",
  "  • Pulse power analysis + lithium dilution calibration",
  "  • Requires existing arterial line + peripheral IV (no CVC needed)",
  "FloTrac / Vigileo (Edwards):",
  "  • Uncalibrated pulse contour analysis — radial artery only",
  "  • Simple setup; less accurate in high vasoplegia/low SVR states",
  "Oesophageal Doppler (CardioQ):",
  "  • Measures descending aortic blood flow → estimates CO",
  "  • Minimally invasive; useful in theatre and post-operative ICU",
], { slideNum: 11 });

// SECTION 9 DIVIDER
sectionDivider(pres, 9, "Fluid Responsiveness & Dynamic Indices");

// SLIDE 12: Dynamic Indices
contentSlide(pres, "Predicting Fluid Responsiveness — Dynamic Indices", [
  "Static preload markers (CVP, PAOP) are poor predictors of fluid responsiveness",
  "Dynamic indices exploit heart-lung interactions in mechanically ventilated patients:",
  "Pulse Pressure Variation (PPV):",
  "  • PPV = (PPmax − PPmin) / [(PPmax + PPmin)/2] × 100%",
  "  • PPV > 12–13% → fluid responsive",
  "Stroke Volume Variation (SVV):",
  "  • SVV > 13% → fluid responsive",
  "  • Less reliable in: arrhythmias, low tidal volume, spontaneous breathing",
  "Passive Leg Raise (PLR) test:",
  "  • 45° leg elevation → autotransfusion of ~300 mL",
  "  • ↑ CO ≥ 10% during PLR = fluid responsive (works in spontaneous breathing)",
  "IVC Distensibility Index > 18% (mechanically ventilated patients)",
  "Fluid bolus target: PPV/SVV decreases toward <10% after administration",
], { slideNum: 12 });

// SLIDE 13: Comparison Table
tableSlide(pres,
  "Hemodynamic Monitoring Modalities — At a Glance",
  ["Modality", "Invasiveness", "Key Parameters", "Limitations"],
  [
    ["ECG / SpO₂", "Non-invasive", "HR, rhythm, O₂ sat", "No CO or pressure data"],
    ["NIBP", "Non-invasive", "SBP, DBP, MAP", "Inaccurate in shock/arrhythmia"],
    ["Arterial Line", "Invasive (artery)", "Beat-to-beat BP, PPV, ABGs", "Thrombosis, infection risk"],
    ["CVP / CVC", "Invasive (central vein)", "CVP, ScvO₂, drug access", "Poor fluid responsiveness guide"],
    ["PAC (Swan-Ganz)", "Highly invasive", "CO, PAOP, SvO₂, PVR/SVR", "No mortality benefit; risk of complications"],
    ["Echocardiography", "Non/minimally invasive", "LV/RV function, preload, valves", "Operator-dependent, intermittent"],
    ["PiCCO / LiDCO", "Minimally invasive", "CO, SVV, ITBV, EVLW", "Calibration required; femoral artery"],
    ["FloTrac", "Minimally invasive", "CO, SVV (uncalibrated)", "Inaccurate in low SVR states"],
  ]
);

// SLIDE 14: Monitoring Algorithm
contentSlide(pres, "ICU Hemodynamic Monitoring Algorithm", [
  "Step 1 — All ICU patients:",
  "  • Continuous ECG, SpO₂, NIBP, urine output, clinical assessment",
  "Step 2 — Haemodynamic instability / shock:",
  "  • Arterial line for continuous BP + waveform analysis",
  "  • CVC for CVP, ScvO₂, vasopressor/inotrope infusions",
  "Step 3 — Undifferentiated shock or fluid management:",
  "  • Bedside TTE to categorise shock (cardiogenic / distributive / obstructive / hypovolaemic)",
  "  • Dynamic fluid indices (PLR, PPV/SVV) to guide fluid resuscitation",
  "Step 4 — Refractory / complex haemodynamics:",
  "  • Minimally invasive CO monitor (PiCCO, LiDCO, FloTrac)",
  "  • Consider PAC for pulmonary hypertension, biventricular failure",
  "  • TEE if TTE inadequate or endocarditis/thrombus suspected",
  "Reassess after every intervention — monitoring is dynamic, not one-time",
], { slideNum: 14 });

// SLIDE 15: Summary / Key Takeaways
summarySlide(pres);

// References
contentSlide(pres, "References & Sources", [
  "Fishman's Pulmonary Diseases & Disorders, 2-Volume Set — Hemodynamic Monitoring (Ch 146)",
  "Miller's Anesthesia, 10e — Invasive & Minimally Invasive Hemodynamic Monitoring",
  "Mulholland & Greenfield's Surgery, 7e — Minimally Invasive CO Monitors",
  "Morgan & Mikhail's Clinical Anesthesiology, 7e — PAC & Dynamic Indices",
  "Tintinalli's Emergency Medicine — CVP, ScvO₂, Fluid Responsiveness",
  "Barash, Cullen & Stoelting's Clinical Anesthesia, 9e — Arterial Catheterization",
  "FACTT Trial (NEJM 2006) — PAC vs CVC in ARDS fluid management",
  "Rivers E et al. (NEJM 2001) — Early Goal-Directed Therapy (EGDT) in Septic Shock",
  "Berlin Definition of ARDS (JAMA 2012)",
], { slideNum: 16 });

// ── Write file ─────────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/hemodynamic-ppt/Hemodynamic_Monitoring_ICU.pptx" })
  .then(() => console.log("DONE: /home/daytona/workspace/hemodynamic-ppt/Hemodynamic_Monitoring_ICU.pptx"))
  .catch(e => { console.error("ERROR:", e); process.exit(1); });
Running Command

cd /home/daytona/workspace/hemodynamic-ppt && node build.js

Running Command

ls -lh /home/daytona/workspace/hemodynamic-ppt/Hemodynamic_Monitoring_ICU.pptx

Your presentation is ready:

Hemodynamic Monitoring ICU

Presentation · PPTX


What's inside (16 slides, deep navy + teal/amber palette):
#Slide
1Title — Hemodynamic Monitoring in the ICU
2Agenda — 10-topic outline
3Why It Matters — haemodynamic decompensation, PPV effects on cardiac output
4ECG & Basic Monitoring — HR, arrhythmia (AF 10–40%), NIBP, MAP targets
5Arterial Line — indications, waveform components, MAP formula, complications
6CVP — waveform (a/c/x/v/y), CVC uses, limitations (FACTT trial) + CVP waveform image
7PAC — Parameters — RAP, PAOP, CO, CI, SVR, PVR, DO₂/VO₂
8PAC — Clinical Use — indications, complications, declining use + CXR image
9SvO₂ / ScvO₂ — Fick equation, ScvO₂ ≥70% target, resuscitation endpoints
10Echocardiography — TTE/TEE, IVC indices, bubble study, LV/RV assessment + monitor image
11Minimally Invasive CO — PiCCO, LiDCO, FloTrac, Oesophageal Doppler
12Fluid Responsiveness — PPV/SVV, PLR test, IVC distensibility index
13Comparison Table — all 8 modalities vs invasiveness/parameters/limitations
144-Step ICU Monitoring Algorithm — escalation framework
157 Key Takeaways — numbered summary
16References — Fishman's, Miller's, Tintinalli's, Mulholland's, FACTT, EGDT, Berlin ARDS
Source textbooks used: Fishman's Pulmonary Diseases & Disorders, Miller's Anesthesia 10e, Mulholland & Greenfield's Surgery 7e, Morgan & Mikhail's Clinical Anesthesiology 7e, Tintinalli's Emergency Medicine, Barash's Clinical Anesthesia 9e.
This is a shared conversation. Sign in to Orris to start your own chat.