Hemodynamic monitoring in icu standard books. Need this info for a ppt
hemodynamic monitoring ICU pulmonary artery catheter waveform
ls /home/daytona/workspace/ && mkdir -p /home/daytona/workspace/hemodynamic-ppt
~/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); });
cd /home/daytona/workspace/hemodynamic-ppt && node build.js
ls -lh /home/daytona/workspace/hemodynamic-ppt/Hemodynamic_Monitoring_ICU.pptx
Hemodynamic Monitoring ICU
Presentation · PPTX
| # | Slide |
|---|---|
| 1 | Title — Hemodynamic Monitoring in the ICU |
| 2 | Agenda — 10-topic outline |
| 3 | Why It Matters — haemodynamic decompensation, PPV effects on cardiac output |
| 4 | ECG & Basic Monitoring — HR, arrhythmia (AF 10–40%), NIBP, MAP targets |
| 5 | Arterial Line — indications, waveform components, MAP formula, complications |
| 6 | CVP — waveform (a/c/x/v/y), CVC uses, limitations (FACTT trial) + CVP waveform image |
| 7 | PAC — Parameters — RAP, PAOP, CO, CI, SVR, PVR, DO₂/VO₂ |
| 8 | PAC — Clinical Use — indications, complications, declining use + CXR image |
| 9 | SvO₂ / ScvO₂ — Fick equation, ScvO₂ ≥70% target, resuscitation endpoints |
| 10 | Echocardiography — TTE/TEE, IVC indices, bubble study, LV/RV assessment + monitor image |
| 11 | Minimally Invasive CO — PiCCO, LiDCO, FloTrac, Oesophageal Doppler |
| 12 | Fluid Responsiveness — PPV/SVV, PLR test, IVC distensibility index |
| 13 | Comparison Table — all 8 modalities vs invasiveness/parameters/limitations |
| 14 | 4-Step ICU Monitoring Algorithm — escalation framework |
| 15 | 7 Key Takeaways — numbered summary |
| 16 | References — Fishman's, Miller's, Tintinalli's, Mulholland's, FACTT, EGDT, Berlin ARDS |