create management protocol for all the types of shock
| Type | Cardiac Output | SVR | PAOP | CVP | SvO2 |
|---|---|---|---|---|---|
| Hypovolemic | ↓ | ↑ | ↓ | ↓ | ↓ |
| Cardiogenic (LV) | ↓ | ↑ | ↑ | N/↑ | ↓ |
| Cardiogenic (RV) | ↓ | ↑ | N/↓ | ↑ | ↓ |
| Obstructive (tamponade/PE) | ↓ | ↑ | ↑ | ↑ | ↓ |
| Distributive (early) | ↑/N/↓ | ↓ | N | N/↑ | N/↑ |
| Distributive (late) | ↓ | ↑ | N | N | ↓ |
| Class | Blood Loss | HR | SBP | RR | UO (mL/hr) | Mental Status |
|---|---|---|---|---|---|---|
| I | <15% (<750 mL) | <100 | Normal | 14-20 | >30 | Normal |
| II | 15-30% (750-1500 mL) | 100-120 | Normal | 20-30 | 20-30 | Anxious |
| III | 30-40% (1500-2000 mL) | 120-140 | ↓ | 30-40 | 5-15 | Confused |
| IV | >40% (>2000 mL) | >140 | Very ↓ | >35 | <5 | Lethargic/comatose |
| Drug | Mechanism | Dose | Primary Use |
|---|---|---|---|
| Norepinephrine | α1 > β1 | 0.01-3 mcg/kg/min | First-line all shock types except anaphylaxis |
| Epinephrine | α1, β1, β2 | 0.01-1 mcg/kg/min | Anaphylaxis (IM first), refractory septic shock |
| Vasopressin | V1 receptors | 0.03-0.04 units/min | Second-line adjunct to NE in septic/distributive |
| Dobutamine | β1 > β2 | 2-20 mcg/kg/min | Cardiogenic shock (add-on for inotropic support) |
| Phenylephrine | α1 only | 0.5-9 mcg/kg/min | Neurogenic shock; tachycardia with vasodilation |
| Dopamine | D1, β1, α1 (dose-dependent) | 5-20 mcg/kg/min | No longer first-line; use if bradycardia present |
| Angiotensin II | AT1 receptors | 20-40 ng/kg/min | Refractory vasodilatory shock |
| Parameter | Target |
|---|---|
| MAP | ≥65 mmHg (≥85-90 in neurogenic) |
| Urine output | ≥0.5 mL/kg/hr |
| Lactate | <2 mmol/L; ≥10% clearance per 2 hrs |
| ScvO2 | >70% |
| Blood glucose | 140-180 mg/dL |
| Temperature | ≥36°C (normothermia) |
| pH | 7.35-7.45 |
| Ionized Ca2+ | >1.1 mmol/L (especially with massive transfusion) |
| System | Score 0 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|---|
| Respiratory PaO2/FiO2 | >400 | 301-400 | 201-300 | 101-200 | ≤100 |
| Cardiovascular | MAP >70 | MAP <70 (no vasopressor) | Dopa ≤5 or any dobutamine | Dopa >5 or NE ≤0.1 | NE >0.1 or any vasopressin |
| Coagulation (plt ×10⁹/L) | >150 | 100-149 | 50-99 | 20-49 | <20 |
| Renal Cr (mg/dL) | <1.2 | 1.2-1.9 | 2.0-3.4 | 3.5-4.9 | >5 |
| Liver bili (mg/dL) | <1.2 | 1.2-1.9 | 2.0-5.9 | 6.0-11.9 | >12 |
| Neuro (GCS) | 15 | 13-14 | 10-12 | 6-9 | <6 |
| Finding | Most Likely Type |
|---|---|
| Hyperdynamic heart, small IVC | Distributive (septic/anaphylactic/neurogenic) |
| Dilated, poor LV function, B-lines on lung | Cardiogenic |
| Small heart, small IVC, no effusion | Hypovolemic |
| Pericardial effusion + RV diastolic collapse | Tamponade (obstructive) |
| RV enlargement, D-sign, no effusion | PE (obstructive) |
| Absent lung sliding unilaterally | Tension pneumothorax (obstructive) |
Create a decision tree flowchart to differentiate shock types using POCUS findings
ls -la /home/daytona/workspace/ && mkdir -p /home/daytona/workspace/shock-pocus-flowchart
~/shock-pocus-flowchart/build.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_WIDE"; // 13.3" x 7.5"
pres.title = "POCUS-Based Shock Differentiation Decision Tree";
pres.author = "Orris Medical";
// ─── Color Palette ───────────────────────────────────────────────────────────
const C = {
bg: "0B1C2E", // deep navy
bgLight: "122640", // panel navy
white: "FFFFFF",
accent: "00C9B1", // teal
accentDark: "009E8C", // darker teal
yellow: "F5C518", // gold
orange: "FF7043", // alert orange
red: "EF5350", // danger red
green: "66BB6A", // positive green
purple: "AB47BC", // purple
blue: "42A5F5", // sky blue
pink: "EC407A", // pink
grey: "90A4AE", // steel grey
greyDark: "546E7A", // dark grey
lineColor: "00C9B1", // connector teal
boxText: "0B1C2E", // dark text inside light boxes
dimWhite: "B0BEC5", // muted white
};
// ─── Helpers ─────────────────────────────────────────────────────────────────
function titleSlide(slide) {
// Full background
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.bg } });
// Accent stripe
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 0.12, fill: { color: C.accent } });
slide.addShape(pres.ShapeType.rect, { x: 0, y: 7.38, w: 13.3, h: 0.12, fill: { color: C.accent } });
// Left bar
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.18, h: 7.5, fill: { color: C.accent } });
// Icon circle
slide.addShape(pres.ShapeType.ellipse, { x: 1.1, y: 1.4, w: 1.6, h: 1.6, fill: { color: C.accent }, line: { color: C.accent } });
slide.addText("🔊", { x: 1.1, y: 1.4, w: 1.6, h: 1.6, fontSize: 36, align: "center", valign: "middle" });
slide.addText("POCUS-Based Shock", {
x: 2.9, y: 1.4, w: 9.8, h: 0.85,
fontSize: 44, bold: true, color: C.white, fontFace: "Calibri", align: "left",
});
slide.addText("Differentiation Protocol", {
x: 2.9, y: 2.2, w: 9.8, h: 0.75,
fontSize: 38, bold: false, color: C.accent, fontFace: "Calibri", align: "left",
});
slide.addShape(pres.ShapeType.rect, { x: 2.9, y: 3.08, w: 9.8, h: 0.04, fill: { color: C.greyDark } });
slide.addText("Point-of-Care Ultrasound · Decision Tree · All Shock Types", {
x: 2.9, y: 3.2, w: 9.8, h: 0.5,
fontSize: 16, color: C.dimWhite, fontFace: "Calibri", align: "left", italic: true,
});
// Badges
const badges = ["Hypovolemic", "Cardiogenic", "Distributive", "Obstructive"];
const bColors = [C.blue, C.red, C.orange, C.purple];
badges.forEach((b, i) => {
slide.addShape(pres.ShapeType.roundRect, {
x: 2.9 + i * 2.52, y: 3.95, w: 2.3, h: 0.5,
fill: { color: bColors[i] }, line: { color: bColors[i] }, rectRadius: 0.12,
});
slide.addText(b, {
x: 2.9 + i * 2.52, y: 3.95, w: 2.3, h: 0.5,
fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle",
});
});
slide.addText("Slide through the decision tree to identify shock type using echo, lung, and IVC windows.", {
x: 2.9, y: 4.65, w: 9.8, h: 0.5,
fontSize: 13, color: C.grey, fontFace: "Calibri", align: "left",
});
slide.addText("Based on: Rosen's Emergency Medicine · Barash Clinical Anesthesia 9e · ACEP POCUS Guidelines", {
x: 0.4, y: 7.1, w: 12.5, h: 0.3,
fontSize: 10, color: C.greyDark, align: "left",
});
}
// Generic slide background
function applyBg(slide) {
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.bg } });
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 0.08, fill: { color: C.accent } });
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.1, h: 7.5, fill: { color: C.accent } });
}
// Slide header bar
function addHeader(slide, title, subtitle) {
slide.addShape(pres.ShapeType.rect, { x: 0.1, y: 0.12, w: 13.2, h: 0.7, fill: { color: C.bgLight } });
slide.addText(title, {
x: 0.25, y: 0.12, w: 9, h: 0.7,
fontSize: 22, bold: true, color: C.accent, fontFace: "Calibri", valign: "middle",
});
if (subtitle) {
slide.addText(subtitle, {
x: 9.3, y: 0.12, w: 3.85, h: 0.7,
fontSize: 11, color: C.grey, fontFace: "Calibri", valign: "middle", align: "right", italic: true,
});
}
}
// Draw a decision node box (question)
function qBox(slide, x, y, w, h, text, color) {
color = color || C.accent;
slide.addShape(pres.ShapeType.roundRect, {
x, y, w, h,
fill: { color: color }, line: { color: color, width: 0 }, rectRadius: 0.1,
});
slide.addText(text, {
x, y, w, h,
fontSize: 11, bold: true, color: C.boxText, align: "center", valign: "middle",
fontFace: "Calibri", margin: 4,
});
}
// Outcome/diagnosis box
function diagBox(slide, x, y, w, h, title, sub, color) {
color = color || C.blue;
slide.addShape(pres.ShapeType.roundRect, {
x, y, w, h,
fill: { color: color }, line: { color: color, width: 0 }, rectRadius: 0.12,
});
slide.addText(title, {
x, y: y + 0.02, w, h: h * 0.52,
fontSize: 12, bold: true, color: C.white, align: "center", valign: "bottom",
fontFace: "Calibri",
});
if (sub) {
slide.addText(sub, {
x, y: y + h * 0.52, w, h: h * 0.46,
fontSize: 9, color: C.white, align: "center", valign: "top",
fontFace: "Calibri", italic: true,
});
}
}
// Arrow / connector line
function arrow(slide, x1, y1, x2, y2) {
slide.addShape(pres.ShapeType.line, {
x: x1, y: y1, w: x2 - x1, h: y2 - y1,
line: { color: C.accent, width: 1.5, endArrowType: "open" },
});
}
// Label along a connector
function label(slide, x, y, text, color) {
slide.addText(text, {
x, y, w: 0.7, h: 0.24,
fontSize: 8, bold: true, color: color || C.yellow, align: "center",
});
}
// ─── SLIDE 1: Title ───────────────────────────────────────────────────────────
{
const s = pres.addSlide();
titleSlide(s);
}
// ─── SLIDE 2: Overview – 3-Window POCUS Protocol ──────────────────────────────
{
const s = pres.addSlide();
applyBg(s);
addHeader(s, "3-Window POCUS Protocol for Undifferentiated Shock", "Step-by-step ultrasound assessment");
// Three window panels
const panels = [
{
icon: "❤️", title: "CARDIAC WINDOW",
sub: "Subxiphoid or Parasternal Long Axis",
points: [
"LV contractility (EF normal/reduced/hyperdynamic?)",
"RV size (RV:LV ratio >0.9 = RV strain)",
"Pericardial effusion present?",
"Wall motion abnormalities?",
],
color: C.red,
},
{
icon: "💧", title: "IVC WINDOW",
sub: "Subcostal, long axis, 2 cm from RA junction",
points: [
"IVC diameter: Small (<1.5 cm) / Normal / Dilated (>2.1 cm)",
"Collapsibility Index (CI): >50% = volume responsive",
"CI <50% + dilated IVC = elevated CVP",
"Non-collapsible IVC = obstructive or cardiogenic",
],
color: C.blue,
},
{
icon: "🫁", title: "LUNG WINDOW",
sub: "Anterior zones bilateral (2nd ICS MCL)",
points: [
"B-lines (≥3 per zone) = pulmonary edema/ARDS",
"Absent lung sliding = pneumothorax (check both sides)",
"Barcode sign on M-mode = absent sliding",
"A-lines bilateral = normal or hypovolemia",
],
color: C.green,
},
];
panels.forEach((p, i) => {
const x = 0.35 + i * 4.32;
// Panel background
slide_panel(s, x, 1.0, 4.1, 5.9, p, i);
});
// Footer note
s.addText("Always perform all 3 windows. Findings are integrated — no single window is diagnostic in isolation.", {
x: 0.3, y: 7.1, w: 12.7, h: 0.3,
fontSize: 10, color: C.grey, align: "center", italic: true,
});
function slide_panel(slide, x, y, w, h, p, idx) {
slide.addShape(pres.ShapeType.roundRect, {
x, y, w, h,
fill: { color: C.bgLight }, line: { color: p.color, width: 2 }, rectRadius: 0.15,
});
// Header band
slide.addShape(pres.ShapeType.roundRect, {
x, y, w, h: 1.0,
fill: { color: p.color }, line: { color: p.color }, rectRadius: 0.15,
});
// Square off bottom of header band
slide.addShape(pres.ShapeType.rect, {
x, y: y + 0.7, w, h: 0.3,
fill: { color: p.color }, line: { color: p.color },
});
slide.addText(p.icon, { x, y: y + 0.06, w, h: 0.5, fontSize: 26, align: "center" });
slide.addText(p.title, {
x, y: y + 0.5, w, h: 0.45,
fontSize: 12, bold: true, color: C.white, align: "center", valign: "middle",
});
slide.addText(p.sub, {
x: x + 0.1, y: y + 1.05, w: w - 0.2, h: 0.38,
fontSize: 9, color: p.color, align: "center", italic: true,
});
// Bullet points
const items = p.points.map((pt, j) => ({
text: pt,
options: { bullet: { type: "bullet" }, breakLine: j < p.points.length - 1, fontSize: 10, color: C.dimWhite },
}));
slide.addText(items, {
x: x + 0.15, y: y + 1.48, w: w - 0.3, h: h - 1.6,
fontFace: "Calibri", valign: "top",
});
}
}
// ─── SLIDE 3: Master Decision Tree ────────────────────────────────────────────
{
const s = pres.addSlide();
applyBg(s);
addHeader(s, "Master Decision Tree — POCUS Shock Differentiation", "All 4 shock categories");
// Start node
s.addShape(pres.ShapeType.ellipse, { x: 5.4, y: 0.9, w: 2.5, h: 0.65, fill: { color: C.accent }, line: { color: C.accent } });
s.addText("UNDIFFERENTIATED SHOCK", { x: 5.4, y: 0.9, w: 2.5, h: 0.65, fontSize: 9, bold: true, color: C.boxText, align: "center", valign: "middle" });
// Arrow down from start
arrow(s, 6.65, 1.55, 6.65, 2.0);
// Q1 – Cardiac view
qBox(s, 5.1, 2.0, 3.1, 0.65, "Q1: Is there a PERICARDIAL EFFUSION\n+ RV diastolic collapse?", C.accent);
// YES → Tamponade
arrow(s, 5.1, 2.32, 3.9, 2.32);
label(s, 4.3, 2.1, "YES", C.yellow);
diagBox(s, 2.45, 1.95, 1.45, 0.78, "CARDIAC\nTAMPONADE", "Obstructive", C.purple);
// NO arrow down
arrow(s, 6.65, 2.65, 6.65, 3.1);
label(s, 6.72, 2.74, "NO", C.orange);
// Q2 – Lung sliding
qBox(s, 5.1, 3.1, 3.1, 0.65, "Q2: Is there ABSENT LUNG SLIDING\n(+ barcode sign on M-mode)?", C.accent);
// YES → Tension PTX
arrow(s, 5.1, 3.42, 3.9, 3.42);
label(s, 4.3, 3.22, "YES", C.yellow);
diagBox(s, 2.45, 3.05, 1.45, 0.78, "TENSION\nPNEUMOTHORAX", "Obstructive", C.purple);
// NO arrow down
arrow(s, 6.65, 3.75, 6.65, 4.2);
label(s, 6.72, 3.84, "NO", C.orange);
// Q3 – RV strain
qBox(s, 5.1, 4.2, 3.1, 0.65, "Q3: RV:LV ratio >0.9 + D-sign\n+ non-collapsible IVC?", C.accent);
// YES → PE
arrow(s, 5.1, 4.52, 3.9, 4.52);
label(s, 4.3, 4.32, "YES", C.yellow);
diagBox(s, 2.45, 4.15, 1.45, 0.78, "MASSIVE\nPULM. EMBOLISM", "Obstructive", C.purple);
// NO arrow down
arrow(s, 6.65, 4.85, 6.65, 5.3);
label(s, 6.72, 4.94, "NO", C.orange);
// Q4 – LV function
qBox(s, 5.1, 5.3, 3.1, 0.65, "Q4: Is LV function SEVERELY REDUCED\n(EF <30%) + dilated/congested?", C.accent);
// YES → Cardiogenic
arrow(s, 5.1, 5.62, 3.9, 5.62);
label(s, 4.3, 5.42, "YES", C.yellow);
diagBox(s, 2.45, 5.25, 1.45, 0.78, "CARDIOGENIC\nSHOCK", "Low CO, high PAOP", C.red);
// NO arrow down
arrow(s, 6.65, 5.95, 6.65, 6.38);
label(s, 6.72, 6.04, "NO", C.orange);
// Q5 – IVC collapsibility
qBox(s, 5.1, 6.38, 3.1, 0.65, "Q5: Is the IVC SMALL + COLLAPSIBLE\n(CI >50%, IVC <1.5 cm)?", C.accent);
// YES → Hypovolemic
arrow(s, 5.1, 6.7, 3.9, 6.7);
label(s, 4.3, 6.5, "YES", C.yellow);
diagBox(s, 2.45, 6.33, 1.45, 0.78, "HYPOVOLEMIC\nSHOCK", "Hemorrhage/Fluid loss", C.blue);
// NO → Distributive
arrow(s, 8.2, 6.7, 9.4, 6.7);
label(s, 8.5, 6.5, "NO", C.orange);
diagBox(s, 9.4, 6.33, 1.6, 0.78, "DISTRIBUTIVE\nSHOCK", "Septic/Anaph/Neurogen.", C.orange);
// Legend panel
s.addShape(pres.ShapeType.roundRect, {
x: 10.55, y: 1.1, w: 2.5, h: 3.8,
fill: { color: C.bgLight }, line: { color: C.greyDark }, rectRadius: 0.1,
});
s.addText("LEGEND", {
x: 10.55, y: 1.12, w: 2.5, h: 0.35,
fontSize: 11, bold: true, color: C.accent, align: "center",
});
const legendItems = [
{ color: C.accent, label: "Decision question" },
{ color: C.purple, label: "Obstructive shock" },
{ color: C.red, label: "Cardiogenic shock" },
{ color: C.blue, label: "Hypovolemic shock" },
{ color: C.orange, label: "Distributive shock" },
{ color: C.yellow, label: "YES branch" },
];
legendItems.forEach((li, i) => {
s.addShape(pres.ShapeType.roundRect, {
x: 10.7, y: 1.55 + i * 0.55, w: 0.28, h: 0.28,
fill: { color: li.color }, line: { color: li.color }, rectRadius: 0.04,
});
s.addText(li.label, {
x: 11.05, y: 1.55 + i * 0.55, w: 1.9, h: 0.28,
fontSize: 9.5, color: C.dimWhite, valign: "middle",
});
});
}
// ─── SLIDE 4: Branch A – Obstructive Shock Drill-Down ─────────────────────────
{
const s = pres.addSlide();
applyBg(s);
addHeader(s, "Obstructive Shock — POCUS Drill-Down", "Tamponade · Tension PTX · Massive PE");
// Obstructive header
s.addShape(pres.ShapeType.roundRect, {
x: 0.2, y: 0.95, w: 12.9, h: 0.55,
fill: { color: C.purple }, line: { color: C.purple }, rectRadius: 0.1,
});
s.addText("🚨 OBSTRUCTIVE SHOCK PATHWAY — 3 Life-Threatening Causes", {
x: 0.2, y: 0.95, w: 12.9, h: 0.55,
fontSize: 14, bold: true, color: C.white, align: "center", valign: "middle",
});
// ── TAMPONADE COLUMN ──────────────────────────────────────────────────────
const col = (i) => 0.25 + i * 4.38;
const colW = 4.1;
// Column headers
const colData = [
{ title: "CARDIAC TAMPONADE", icon: "❤️", color: C.red },
{ title: "TENSION PNEUMOTHORAX", icon: "🫁", color: C.green },
{ title: "MASSIVE PULM. EMBOLISM", icon: "🩸", color: C.pink },
];
colData.forEach((c, i) => {
s.addShape(pres.ShapeType.roundRect, {
x: col(i), y: 1.6, w: colW, h: 0.5,
fill: { color: c.color }, line: { color: c.color }, rectRadius: 0.1,
});
s.addText(`${c.icon} ${c.title}`, {
x: col(i), y: 1.6, w: colW, h: 0.5,
fontSize: 11, bold: true, color: C.white, align: "center", valign: "middle",
});
});
// Row 1: POCUS Findings
const rows = [
{
label: "POCUS FINDINGS",
items: [
"• Pericardial effusion (any size)\n• RV diastolic collapse\n• RA systolic collapse\n• IVC dilated, non-collapsible\n• Swinging heart (large effusion)\n• Electrical alternans on ECG",
"• Absent lung sliding on affected side\n• Barcode sign (M-mode)\n• No B-lines on affected side\n• Lung point (pathognomonic)\n• Contralateral tracheal shift (late)\n• Clinical: JVD + absent breath sounds",
"• RV:LV ratio >0.9 (4-chamber view)\n• D-sign (septal bowing toward LV)\n• McConnell's sign (akinetic RV free wall,\n preserved apical motion)\n• IVC dilated, non-collapsible\n• No pericardial effusion",
],
},
{
label: "KEY DIFFERENTIATOR",
items: [
"Pericardial fluid + RV collapse\nin diastole is diagnostic",
"Absent lung sliding ipsilateral.\nLung point = definitive.",
"RV dilation + McConnell's sign.\nNo effusion.",
],
},
{
label: "IMMEDIATE ACTION",
items: [
"Pericardiocentesis\n(subxiphoid route)\nFluid bolus as bridge",
"Needle decompression\n2nd ICS MCL STAT\n→ Chest tube to follow",
"UFH anticoagulation\nSystemic thrombolysis\n(tPA 100 mg over 2h)",
],
},
{
label: "DO NOT",
items: [
"Do NOT give diuretics\nDo NOT give vasodilators\nDo NOT IPPV until drained",
"Do NOT delay for CXR\nTreat on clinical suspicion",
"Cautious IVF (RV dilated)\nDo NOT over-resuscitate",
],
},
];
const rowH = [1.45, 0.62, 0.78, 0.58];
const rowColors = [C.bgLight, "1A3A5C", "1A3A5C", "2C1A1A"];
let rowY = 2.18;
rows.forEach((row, ri) => {
// Row label
s.addShape(pres.ShapeType.rect, {
x: 0.25, y: rowY, w: 12.8, h: rowH[ri],
fill: { color: rowColors[ri] }, line: { color: C.greyDark },
});
s.addText(row.label, {
x: 0.28, y: rowY, w: 12.75, h: 0.26,
fontSize: 9, bold: true, color: C.accent, align: "left",
});
row.items.forEach((item, ci) => {
s.addText(item, {
x: col(ci) + 0.08, y: rowY + 0.26, w: colW - 0.16, h: rowH[ri] - 0.26,
fontSize: 9.5, color: C.dimWhite, valign: "top", fontFace: "Calibri",
});
});
rowY += rowH[ri] + 0.02;
});
// Footer
s.addText("All obstructive shock types: Low CO · High CVP/PAOP · High SVR — differentiated by POCUS window findings above.", {
x: 0.3, y: 7.15, w: 12.7, h: 0.27,
fontSize: 9.5, color: C.grey, align: "center", italic: true,
});
}
// ─── SLIDE 5: Cardiogenic Shock Drill-Down ─────────────────────────────────────
{
const s = pres.addSlide();
applyBg(s);
addHeader(s, "Cardiogenic Shock — POCUS Findings & Subtypes", "LV Failure · RV Failure · Mechanical Complication");
// Red header bar
s.addShape(pres.ShapeType.roundRect, {
x: 0.2, y: 0.95, w: 12.9, h: 0.52,
fill: { color: C.red }, line: { color: C.red }, rectRadius: 0.1,
});
s.addText("❤️ CARDIOGENIC SHOCK — Low CO · High PAOP · High SVR · Low SvO₂", {
x: 0.2, y: 0.95, w: 12.9, h: 0.52,
fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle",
});
// Flow: entry → Q branches
// Entry box
qBox(s, 4.65, 1.55, 4.0, 0.55, "LV Function Severely Reduced?\n(EF <30%, dilated LV)", C.accent);
// Arrow YES
arrow(s, 4.65, 1.82, 3.35, 1.82);
label(s, 3.7, 1.62, "YES", C.yellow);
// Box: LV failure confirmed
s.addShape(pres.ShapeType.roundRect, {
x: 1.0, y: 1.55, w: 2.3, h: 0.55,
fill: { color: C.red }, line: { color: C.red }, rectRadius: 0.1,
});
s.addText("LV CARDIOGENIC\nSHOCK CONFIRMED", {
x: 1.0, y: 1.55, w: 2.3, h: 0.55,
fontSize: 10, bold: true, color: C.white, align: "center", valign: "middle",
});
// Arrow NO
arrow(s, 8.65, 1.82, 9.95, 1.82);
label(s, 9.15, 1.62, "NO", C.orange);
// Is RV enlarged?
qBox(s, 9.95, 1.55, 3.1, 0.55, "RV enlarged (>2/3 LV)?\n+ RV dysfunction?", C.accent);
// YES → RV failure
arrow(s, 11.5, 2.1, 11.5, 2.55);
label(s, 11.56, 2.2, "YES", C.yellow);
s.addShape(pres.ShapeType.roundRect, {
x: 10.0, y: 2.55, w: 2.9, h: 0.55,
fill: { color: C.orange }, line: { color: C.orange }, rectRadius: 0.1,
});
s.addText("RV CARDIOGENIC\nSHOCK (RV MI / PE)", {
x: 10.0, y: 2.55, w: 2.9, h: 0.55,
fontSize: 10, bold: true, color: C.white, align: "center", valign: "middle",
});
// Lung B-lines sub-question
arrow(s, 2.15, 2.1, 2.15, 2.55);
qBox(s, 0.75, 2.55, 2.85, 0.55, "B-lines bilateral?\n(Pulmonary edema)", C.accentDark);
arrow(s, 2.15, 3.1, 2.15, 3.5);
s.addShape(pres.ShapeType.roundRect, {
x: 0.75, y: 3.5, w: 2.85, h: 0.55,
fill: { color: C.blue }, line: { color: C.blue }, rectRadius: 0.1,
});
s.addText("Acute Pulmonary Edema\n(Flash Pulm. Edema)", {
x: 0.75, y: 3.5, w: 2.85, h: 0.55,
fontSize: 10, bold: true, color: C.white, align: "center", valign: "middle",
});
// ── POCUS Findings Table ─────────────────────────────────────────────────
s.addShape(pres.ShapeType.rect, {
x: 0.2, y: 4.18, w: 12.9, h: 0.38,
fill: { color: C.bgLight }, line: { color: C.greyDark },
});
s.addText("CARDIOGENIC SHOCK — POCUS FINDINGS SUMMARY", {
x: 0.2, y: 4.18, w: 12.9, h: 0.38,
fontSize: 11, bold: true, color: C.accent, align: "center", valign: "middle",
});
const cgHeaders = ["ECHO Window", "LV Cardiogenic", "RV Cardiogenic", "Hyperdynamic (Distributive - rule out)"];
const cgRows = [
["LV Function", "EF <30%, dilated LV, WMA", "Normal or mildly reduced", "Hyperdynamic, EF >70%"],
["RV Size", "Normal or mildly enlarged", "RV:LV >0.9, D-sign, McConnell's","Normal or small"],
["Pericardium", "No effusion (unless post-MI rupture)", "No effusion", "No effusion"],
["IVC", "Dilated, non-collapsible", "Dilated, non-collapsible", "Collapsible if early sepsis"],
["Lung", "Bilateral B-lines (pulm. edema)", "A-lines (clear lungs if RV MI)", "A-lines or B-lines"],
["Valves", "Check for acute MR, VSD (post-MI)", "TR, pulm HTN features", "Normal"],
];
const colWs = [1.9, 3.3, 3.3, 4.2];
const colXs = [0.25, 2.18, 5.52, 8.85];
const rowHh = 0.38;
cgHeaders.forEach((h, ci) => {
s.addShape(pres.ShapeType.rect, {
x: colXs[ci], y: 4.6, w: colWs[ci], h: 0.35,
fill: { color: C.greyDark }, line: { color: C.bg },
});
s.addText(h, {
x: colXs[ci], y: 4.6, w: colWs[ci], h: 0.35,
fontSize: 9, bold: true, color: C.white, align: "center", valign: "middle",
});
});
cgRows.forEach((row, ri) => {
const rowBg = ri % 2 === 0 ? C.bgLight : C.bg;
row.forEach((cell, ci) => {
s.addShape(pres.ShapeType.rect, {
x: colXs[ci], y: 4.97 + ri * rowHh, w: colWs[ci], h: rowHh,
fill: { color: ci === 0 ? C.greyDark : rowBg }, line: { color: C.greyDark },
});
s.addText(cell, {
x: colXs[ci] + 0.05, y: 4.97 + ri * rowHh, w: colWs[ci] - 0.1, h: rowHh,
fontSize: ci === 0 ? 9 : 8.5,
bold: ci === 0,
color: ci === 0 ? C.accent : C.dimWhite,
valign: "middle", fontFace: "Calibri",
});
});
});
}
// ─── SLIDE 6: Hypovolemic vs Distributive ──────────────────────────────────────
{
const s = pres.addSlide();
applyBg(s);
addHeader(s, "Hypovolemic vs Distributive Shock — POCUS Differentiation", "IVC + Cardiac + Lung Windows");
// Shared banner
s.addShape(pres.ShapeType.roundRect, {
x: 0.2, y: 0.94, w: 12.9, h: 0.5,
fill: { color: C.bgLight }, line: { color: C.greyDark }, rectRadius: 0.1,
});
s.addText("Both have hyperdynamic/normal LV · Differentiated by IVC size, collapsibility, and clinical context", {
x: 0.2, y: 0.94, w: 12.9, h: 0.5,
fontSize: 12, color: C.dimWhite, align: "center", valign: "middle", italic: true,
});
// Left: Hypovolemic
s.addShape(pres.ShapeType.roundRect, {
x: 0.25, y: 1.54, w: 6.05, h: 5.6,
fill: { color: C.bgLight }, line: { color: C.blue, width: 2 }, rectRadius: 0.15,
});
s.addShape(pres.ShapeType.roundRect, {
x: 0.25, y: 1.54, w: 6.05, h: 0.55,
fill: { color: C.blue }, line: { color: C.blue }, rectRadius: 0.15,
});
s.addShape(pres.ShapeType.rect, {
x: 0.25, y: 1.84, w: 6.05, h: 0.25,
fill: { color: C.blue }, line: { color: C.blue },
});
s.addText("💧 HYPOVOLEMIC SHOCK", {
x: 0.25, y: 1.54, w: 6.05, h: 0.55,
fontSize: 14, bold: true, color: C.white, align: "center", valign: "middle",
});
const hypoRows = [
["IVC Size", "SMALL (<1.5 cm diameter)"],
["IVC Collapsibility", "MARKED (CI >50%) ✓"],
["LV Size/Function", "Small LV cavity, hyperdynamic EF"],
["LV Wall Motion", "Normal — no WMA"],
["Lung Windows", "A-lines (no pulmonary edema)"],
["RV Size", "Normal or small"],
["Pericardium", "No effusion"],
["Clinical Context", "Trauma, hemorrhage, vomiting,\ndiarrhea, burns, third-spacing"],
["Fluid Response", "Rapid improvement with IVF bolus"],
];
hypoRows.forEach(([k, v], i) => {
const yy = 2.2 + i * 0.52;
s.addText(k + ":", {
x: 0.4, y: yy, w: 2.1, h: 0.45,
fontSize: 9.5, bold: true, color: C.accent, valign: "middle",
});
s.addText(v, {
x: 2.52, y: yy, w: 3.6, h: 0.45,
fontSize: 9.5, color: C.dimWhite, valign: "middle",
});
});
// Right: Distributive
s.addShape(pres.ShapeType.roundRect, {
x: 6.95, y: 1.54, w: 6.1, h: 5.6,
fill: { color: C.bgLight }, line: { color: C.orange, width: 2 }, rectRadius: 0.15,
});
s.addShape(pres.ShapeType.roundRect, {
x: 6.95, y: 1.54, w: 6.1, h: 0.55,
fill: { color: C.orange }, line: { color: C.orange }, rectRadius: 0.15,
});
s.addShape(pres.ShapeType.rect, {
x: 6.95, y: 1.84, w: 6.1, h: 0.25,
fill: { color: C.orange }, line: { color: C.orange },
});
s.addText("🔥 DISTRIBUTIVE SHOCK", {
x: 6.95, y: 1.54, w: 6.1, h: 0.55,
fontSize: 14, bold: true, color: C.white, align: "center", valign: "middle",
});
const distRows = [
["IVC Size", "VARIABLE (often normal/small early)"],
["IVC Collapsibility", "VARIABLE or HIGH (after resuscitation: normal)"],
["LV Size/Function", "HYPERDYNAMIC EF >65–70% ⚡"],
["LV Wall Motion", "Normal, hyperdynamic — global"],
["Lung Windows", "A-lines early; B-lines if ARDS develops"],
["RV Size", "Normal (unless sepsis-induced RV dysfxn)"],
["Pericardium", "No effusion"],
["Clinical Context", "Fever, infection (sepsis), rash/allergen\n(anaphylaxis), SCI (neurogenic)"],
["Vasopressor Need", "Often high-dose NE required despite\nadequate volume"],
];
distRows.forEach(([k, v], i) => {
const yy = 2.2 + i * 0.52;
s.addText(k + ":", {
x: 7.1, y: yy, w: 2.2, h: 0.45,
fontSize: 9.5, bold: true, color: C.orange, valign: "middle",
});
s.addText(v, {
x: 9.32, y: yy, w: 3.6, h: 0.45,
fontSize: 9.5, color: C.dimWhite, valign: "middle",
});
});
// VS divider
s.addShape(pres.ShapeType.ellipse, {
x: 6.15, y: 3.88, w: 0.8, h: 0.8,
fill: { color: C.accent }, line: { color: C.accent },
});
s.addText("VS", { x: 6.15, y: 3.88, w: 0.8, h: 0.8, fontSize: 13, bold: true, color: C.boxText, align: "center", valign: "middle" });
}
// ─── SLIDE 7: Distributive Subtypes ───────────────────────────────────────────
{
const s = pres.addSlide();
applyBg(s);
addHeader(s, "Distributive Shock Subtypes — POCUS + Clinical Clues", "Septic · Anaphylactic · Neurogenic · Adrenal");
s.addShape(pres.ShapeType.roundRect, {
x: 0.2, y: 0.94, w: 12.9, h: 0.45,
fill: { color: C.orange }, line: { color: C.orange }, rectRadius: 0.1,
});
s.addText("🔥 All distributive subtypes share: Hyperdynamic LV · Low/Normal IVC · Vasoplegic state — differentiated by clinical triggers", {
x: 0.2, y: 0.94, w: 12.9, h: 0.45,
fontSize: 11, bold: true, color: C.white, align: "center", valign: "middle",
});
const subtypes = [
{
icon: "🦠", title: "SEPTIC SHOCK",
color: C.red,
echo: "Hyperdynamic LV (early)\nSeptic cardiomyopathy (late): reduced EF",
ivc: "Variable; small early; normal/dilated after resuscitation",
lung: "A-lines early; B-lines/consolidation if pneumonia or ARDS",
extra: "Clinical triggers: Fever >38.3°C or <36°C, tachycardia, hypotension. Lactate >2 mmol/L. Source: lung, abdomen, UTI, line.",
action: "Blood cultures → broad-spectrum ABx within 1h → 30 mL/kg IVF → NE if MAP <65",
},
{
icon: "⚠️", title: "ANAPHYLACTIC SHOCK",
color: C.yellow,
echo: "Hyperdynamic LV. High CO. May see Takotsubo-like pattern (rare). No structural abnormality.",
ivc: "Small, collapsible IVC (massive capillary leak + vasodilation)",
lung: "B-lines may appear if bronchospasm + ARDS. Airway edema on soft tissue views.",
extra: "Clinical triggers: Allergen exposure (food, drug, sting). Urticaria, angioedema, bronchospasm. Rapid onset (<30 min).",
action: "IM Epinephrine 0.3–0.5 mg (1:1000) STAT → IVF → Diphenhydramine + Steroids",
},
{
icon: "🫀", title: "NEUROGENIC SHOCK",
color: C.green,
echo: "Normal or hyperdynamic LV. Normal valves. No effusion. Bradycardia on tracing.",
ivc: "Variable; often small-normal; responds to IVF",
lung: "Normal (A-lines). Watch for aspiration if cervical SCI.",
extra: "Clinical: SCI ≥T6, hypotension + BRADYCARDIA (key!). Skin warm and dry (vasodilation without catecholamines). Poikilothermic.",
action: "IVF resuscitation → Norepinephrine/Phenylephrine → Atropine for bradycardia. MAP target ≥85 mmHg.",
},
{
icon: "💊", title: "ADRENAL/ENDOCRINE SHOCK",
color: C.purple,
echo: "Normal LV function. Occasionally mildly reduced contractility (steroid-responsive).",
ivc: "Small/collapsible (hypovolemia from aldosterone deficiency causing Na/water loss)",
lung: "Normal (A-lines). No pulmonary edema.",
extra: "Clinical: Hypotension refractory to IVF + vasopressors. Hyponatremia, hyperkalemia, hypoglycemia. Eosinophilia. Prior steroid use.",
action: "Hydrocortisone 100 mg IV bolus → D5NS → Do NOT wait for cortisol result if hemodynamically unstable",
},
];
subtypes.forEach((sub, i) => {
const x = 0.2 + i * 3.28;
const w = 3.1;
// Card background
s.addShape(pres.ShapeType.roundRect, {
x, y: 1.48, w, h: 5.75,
fill: { color: C.bgLight }, line: { color: sub.color, width: 2 }, rectRadius: 0.12,
});
// Card header
s.addShape(pres.ShapeType.roundRect, {
x, y: 1.48, w, h: 0.58,
fill: { color: sub.color }, line: { color: sub.color }, rectRadius: 0.12,
});
s.addShape(pres.ShapeType.rect, { x, y: 1.78, w, h: 0.28, fill: { color: sub.color }, line: { color: sub.color } });
s.addText(`${sub.icon} ${sub.title}`, {
x, y: 1.48, w, h: 0.58,
fontSize: 11, bold: true, color: C.white, align: "center", valign: "middle",
});
const sections = [
{ label: "ECHO", val: sub.echo },
{ label: "IVC", val: sub.ivc },
{ label: "LUNG", val: sub.lung },
{ label: "TRIGGERS", val: sub.extra },
{ label: "ACTION", val: sub.action },
];
let sy = 2.14;
sections.forEach((sec) => {
s.addText(sec.label, {
x: x + 0.08, y: sy, w: w - 0.16, h: 0.24,
fontSize: 8.5, bold: true, color: sub.color,
});
sy += 0.22;
const textH = sec.label === "TRIGGERS" || sec.label === "ACTION" ? 0.72 : 0.55;
s.addText(sec.val, {
x: x + 0.08, y: sy, w: w - 0.16, h: textH,
fontSize: 8.5, color: C.dimWhite, valign: "top", fontFace: "Calibri",
});
sy += textH + 0.04;
});
});
}
// ─── SLIDE 8: Quick Reference Summary Card ────────────────────────────────────
{
const s = pres.addSlide();
applyBg(s);
addHeader(s, "Quick Reference — POCUS Shock Summary Card", "Bedside reference · All 4 categories");
// Big table
const headers = ["SHOCK TYPE", "CARDIAC ECHO", "IVC", "LUNG", "KEY CLUE", "1st ACTION"];
const tableData = [
{
type: "HYPOVOLEMIC", tc: C.blue,
echo: "Small LV\nHyperdynamic EF",
ivc: "Small (<1.5 cm)\nCollapsible >50%",
lung: "A-lines\n(normal)",
clue: "Trauma, hemorrhage,\ndehydration history",
action: "Crystalloid/Blood\n30 mL/kg IVF bolus",
},
{
type: "CARDIOGENIC\n(LV)", tc: C.red,
echo: "Dilated LV\nEF <30%\nWall motion abnl.",
ivc: "Dilated\nNon-collapsible",
lung: "B-lines bilateral\n(pulm. edema)",
clue: "Chest pain, JVD,\nS3, rales, troponin ↑",
action: "Identify cause\nPCI if STEMI\nNE + Dobutamine",
},
{
type: "CARDIOGENIC\n(RV)", tc: "C06000",
echo: "RV:LV >0.9\nD-sign\nMcConnell's sign",
ivc: "Dilated\nNon-collapsible",
lung: "A-lines\n(clear)",
clue: "DVT risk, hypoxia,\nSinus tachycardia\nright heart strain ECG",
action: "UFH → tPA if massive\nCaution with IVF\nNE vasopressor",
},
{
type: "CARDIAC\nTAMPONADE", tc: C.purple,
echo: "Pericardial effusion\nRV diastolic collapse\nSwinging heart",
ivc: "Dilated\nNon-collapsible",
lung: "A-lines\n(normal)",
clue: "Beck's triad: JVD\n+ muffled sounds\n+ hypotension. Electrical alternans.",
action: "Pericardiocentesis\nSTAT + IV fluids\nas bridge",
},
{
type: "TENSION PTX", tc: C.green,
echo: "Hyperdynamic LV\n(RV compressed)",
ivc: "Variable",
lung: "ABSENT sliding\nBarcode M-mode\nLung point present",
clue: "Unilateral: no breath\nsounds + tracheal\ndeviation (late sign)",
action: "Needle decompression\n2nd ICS MCL\nNO imaging delay",
},
{
type: "SEPTIC\n(Distributive)", tc: C.orange,
echo: "Hyperdynamic EF\n(early)\nReduced EF (late)",
ivc: "Small early\nVariable after IVF",
lung: "A-lines early\nB-lines if ARDS",
clue: "Fever, infection\nsource. Lactate >2.\nWarm extremities.",
action: "Cultures → ABx\n→ 30 mL/kg IVF\n→ NE if MAP <65",
},
{
type: "ANAPHYLACTIC\n(Distributive)", tc: C.yellow,
echo: "Hyperdynamic EF\nHigh CO",
ivc: "Small + collapsible\n(capillary leak)",
lung: "B-lines if severe\nbronchospasm/ARDS",
clue: "Allergen exposure\nUrticaria, angioedema,\nbronchospasm",
action: "Epinephrine IM\n0.3 mg (1:1000)\nSTAT + IVF",
},
{
type: "NEUROGENIC\n(Distributive)", tc: "2E7D32",
echo: "Normal or hyper-\ndynamic. No WMA.",
ivc: "Small-normal\nResponds to IVF",
lung: "A-lines (normal)\nWatch for aspiration",
clue: "SCI ≥T6: BRADYCARDIA\n+ hypotension + warm\n dry skin",
action: "IVF + NE/Phenylephrine\nAtropine if bradycardia\nMAP target ≥85",
},
];
const cw = [1.42, 2.1, 1.62, 1.62, 2.38, 2.38];
const cx = [0.18, 1.62, 3.74, 5.38, 7.02, 9.42];
// Header row
headers.forEach((h, ci) => {
s.addShape(pres.ShapeType.rect, {
x: cx[ci], y: 1.05, w: cw[ci], h: 0.38,
fill: { color: C.accent }, line: { color: C.bg },
});
s.addText(h, {
x: cx[ci], y: 1.05, w: cw[ci], h: 0.38,
fontSize: 9.5, bold: true, color: C.boxText, align: "center", valign: "middle",
});
});
tableData.forEach((row, ri) => {
const rh = 0.74;
const ry = 1.45 + ri * rh;
const rowBg = ri % 2 === 0 ? C.bgLight : "0F2236";
// Type cell
s.addShape(pres.ShapeType.rect, {
x: cx[0], y: ry, w: cw[0], h: rh,
fill: { color: row.tc }, line: { color: C.bg },
});
s.addText(row.type, {
x: cx[0], y: ry, w: cw[0], h: rh,
fontSize: 9, bold: true, color: C.white, align: "center", valign: "middle",
});
const cells = [row.echo, row.ivc, row.lung, row.clue, row.action];
cells.forEach((cell, ci) => {
s.addShape(pres.ShapeType.rect, {
x: cx[ci + 1], y: ry, w: cw[ci + 1], h: rh,
fill: { color: rowBg }, line: { color: C.greyDark },
});
s.addText(cell, {
x: cx[ci + 1] + 0.05, y: ry + 0.02, w: cw[ci + 1] - 0.1, h: rh - 0.04,
fontSize: 8.5, color: C.dimWhite, valign: "middle", fontFace: "Calibri",
});
});
});
// Footer
s.addText("POCUS findings must always be interpreted with full clinical context. No single finding is pathognomonic.", {
x: 0.18, y: 7.2, w: 12.9, h: 0.26,
fontSize: 9, color: C.grey, align: "center", italic: true,
});
}
// ─── SLIDE 9: Closing / Key Pearls ────────────────────────────────────────────
{
const s = pres.addSlide();
applyBg(s);
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.bg } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.18, h: 7.5, fill: { color: C.accent } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 0.12, fill: { color: C.accent } });
s.addText("Key POCUS Pearls — Do Not Miss", {
x: 0.4, y: 0.2, w: 12.5, h: 0.7,
fontSize: 26, bold: true, color: C.accent, fontFace: "Calibri",
});
const pearls = [
{ icon: "1", color: C.red, text: "TAMPONADE: RV diastolic collapse is the most sensitive echo sign — even a small effusion can cause tamponade if rapid accumulation." },
{ icon: "2", color: C.green, text: "TENSION PTX: Treat on CLINICAL grounds BEFORE imaging. Needle decompression saves lives in seconds. Absent lung sliding = act now." },
{ icon: "3", color: C.blue, text: "HYPOVOLEMIA vs DISTRIBUTIVE: Small + collapsible IVC with hyperdynamic LV appears in both. History and lactate distinguish them." },
{ icon: "4", color: C.orange, text: "SEPTIC SHOCK: Look for septic cardiomyopathy (reduced EF) late in sepsis — the LV can fail after initial hyperdynamic phase." },
{ icon: "5", color: C.pink, text: "MASSIVE PE: McConnell's sign (akinetic RV free wall, spared apex) has high specificity for PE. D-sign = septal shift = obstructive." },
{ icon: "6", color: C.purple, text: "NEUROGENIC SHOCK: The only shock with BRADYCARDIA. Warm skin + bradycardia + SCI history = neurogenic until proven otherwise." },
{ icon: "7", color: C.yellow, text: "MIXED SHOCK: Always possible — e.g. sepsis + cardiac tamponade in cancer; trauma hemorrhage + myocardial contusion. Reassess after each intervention." },
];
pearls.forEach((p, i) => {
s.addShape(pres.ShapeType.ellipse, {
x: 0.35, y: 1.08 + i * 0.84, w: 0.42, h: 0.42,
fill: { color: p.color }, line: { color: p.color },
});
s.addText(p.icon, {
x: 0.35, y: 1.08 + i * 0.84, w: 0.42, h: 0.42,
fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle",
});
s.addText(p.text, {
x: 0.88, y: 1.07 + i * 0.84, w: 12.0, h: 0.44,
fontSize: 11, color: C.dimWhite, valign: "middle", fontFace: "Calibri",
});
});
s.addText("Sources: Rosen's Emergency Medicine 9e · Barash Clinical Anesthesia 9e · Mulholland & Greenfield's Surgery 7e · ACEP POCUS Guidelines", {
x: 0.4, y: 7.1, w: 12.5, h: 0.3,
fontSize: 9, color: C.greyDark, align: "center",
});
}
// ─── Write file ───────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/shock-pocus-flowchart/POCUS_Shock_Decision_Tree.pptx" })
.then(() => console.log("✅ DONE: POCUS_Shock_Decision_Tree.pptx"))
.catch(err => { console.error("ERROR:", err); process.exit(1); });
cd /home/daytona/workspace/shock-pocus-flowchart && node build.js 2>&1
ls -lh /home/daytona/workspace/shock-pocus-flowchart/
POCUS Shock Decision Tree
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Title slide |
| 2 | 3-Window POCUS Protocol - Cardiac, IVC, and Lung window assessment |
| 3 | Master Decision Tree - 5-question sequential flowchart: pericardial effusion → absent lung sliding → RV:LV ratio → LV function → IVC collapsibility → diagnosis |
| 4 | Obstructive Shock Drill-Down - Tamponade vs Tension PTX vs Massive PE side-by-side with POCUS findings, differentiators, and immediate actions |
| 5 | Cardiogenic Shock Drill-Down - LV vs RV cardiogenic with full comparison table |
| 6 | Hypovolemic vs Distributive - Head-to-head panel comparison (IVC, echo, lung, fluid response) |
| 7 | Distributive Subtypes - Septic, Anaphylactic, Neurogenic, Adrenal - individual cards with ECHO/IVC/Lung/Triggers/Action |
| 8 | Quick Reference Summary Card - Full 8-row × 6-column bedside reference table |
| 9 | 7 Key POCUS Pearls - Must-not-miss clinical tips |