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

Asking for Preferences
Reading File
Reading File
Reading File
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Reading File
Finding Sources
Finding Sources
Reading File
Finding Sources
Finding Sources
Reading File
Finding Sources
Searching Images

hemodynamic monitoring ICU pulmonary artery catheter waveform

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.