In which type of fluid can we give ampule of KCL ?
KCl ampoule which IV fluid safe to mix potassium chloride administration
| IV Fluid | Notes |
|---|---|
| Normal Saline (0.9% NaCl) | Most preferred diluent |
| 0.45% NaCl (half-normal saline) | Common — e.g., D5 + 0.45% NaCl + 20 mEq KCl/L |
| Ringer's Lactate / PlasmaLyte | Acceptable in balanced electrolyte solutions |
| Fluid | Reason |
|---|---|
| Dextrose-containing solutions (D5W, D10W, etc.) | The resulting hyperglycemia triggers insulin secretion, which drives K⁺ into cells, worsening hypokalemia further |
| Plain water (sterile water for injection) | Hypotonic — causes hemolysis and erratic KCl distribution |
"Dextrose-containing solutions should be avoided in cases of hypokalemia because the resulting hyperglycemia and secondary insulin secretion may worsen the low plasma [K⁺]." — Morgan & Mikhail's Clinical Anesthesiology, 7e
"The most common postoperative maintenance fluid is 5% dextrose in half-normal saline (D5½NS) with 20 mEq/L potassium chloride." — Current Surgical Therapy, 14e (this is acceptable because the KCl dose is low and the fluid is already balanced)
Create a quick reference guide on IV electrolyte replacemen 3.0 how to correct this hypokalemia and how many ampules of kcl should be given and what is deficit
mkdir -p /home/daytona/workspace/kcl-guide && ls /home/daytona/workspace/
~/kcl-guide/build.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_WIDE"; // 13.3" x 7.5"
// ─── COLOR PALETTE ───────────────────────────────────────────────
const C = {
navy: "0A2342",
teal: "0B7A75",
tealDk: "085E5A",
red: "C0392B",
orange: "E67E22",
yellow: "F39C12",
green: "1E8449",
white: "FFFFFF",
offwhite:"F2F6FA",
gray: "6C7A89",
ltGray: "DCE6F1",
dark: "1A1A2E",
};
// ─── HELPERS ─────────────────────────────────────────────────────
function header(slide, title, subtitle) {
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:13.3, h:1.1, fill:{color:C.navy} });
slide.addText(title, { x:0.35, y:0.08, w:10, h:0.55, fontSize:26, bold:true, color:C.white, margin:0 });
if (subtitle) {
slide.addText(subtitle, { x:0.35, y:0.62, w:10, h:0.38, fontSize:13, color:"A8C4D8", italic:true, margin:0 });
}
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:1.08, w:13.3, h:0.06, fill:{color:C.teal} });
}
function footer(slide, src) {
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:7.3, w:13.3, h:0.2, fill:{color:C.navy} });
slide.addText(src || "Sources: Tintinalli's EM · Morgan & Mikhail's Anesthesiology · Goldman-Cecil Medicine", {
x:0.3, y:7.3, w:13.0, h:0.2, fontSize:7, color:"8AAFC6", italic:true, valign:"middle", margin:0
});
}
function sectionBox(slide, x, y, w, h, bgColor, title, titleColor, items, itemColor) {
// background card
slide.addShape(pres.shapes.RECTANGLE, { x, y, w, h, fill:{color:bgColor}, shadow:{type:"outer",color:"000000",blur:4,offset:2,angle:135,opacity:0.12} });
// title bar
slide.addShape(pres.shapes.RECTANGLE, { x, y, w, h:0.38, fill:{color:C.tealDk} });
slide.addText(title, { x:x+0.1, y:y+0.02, w:w-0.2, h:0.34, fontSize:11, bold:true, color:titleColor||C.white, margin:0 });
// content
const formatted = items.map((it, i) => ({
text: it.text,
options: {
bullet: it.bullet !== false,
breakLine: i < items.length-1,
fontSize: it.size||10,
bold: !!it.bold,
color: it.color || itemColor || C.dark,
indentLevel: it.indent||0,
}
}));
slide.addText(formatted, { x:x+0.15, y:y+0.42, w:w-0.3, h:h-0.52, valign:"top", margin:0 });
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 1 — TITLE
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:13.3, h:7.5, fill:{color:C.navy} });
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:0.18, h:7.5, fill:{color:C.teal} });
s.addShape(pres.shapes.RECTANGLE, { x:0, y:3.5, w:13.3, h:0.08, fill:{color:C.teal} });
s.addText("IV ELECTROLYTE REPLACEMENT", { x:1, y:1.5, w:11.5, h:0.9, fontSize:40, bold:true, color:C.white, charSpacing:3, margin:0 });
s.addText("QUICK REFERENCE GUIDE", { x:1, y:2.45, w:11.5, h:0.6, fontSize:28, color:"A8C4D8", charSpacing:2, margin:0 });
s.addShape(pres.shapes.RECTANGLE, { x:1, y:3.75, w:4.5, h:0.06, fill:{color:C.teal} });
const bullets = [
"Hypokalemia (K⁺ = 3.0 mEq/L) — Deficit, Dosing & Correction Protocol",
"KCl Ampoule Administration — Fluid Selection & Safety Rules",
"Severity Classification & ECG Monitoring Guide",
];
s.addText(bullets.map((b,i)=>({text:b, options:{bullet:true, breakLine:i<bullets.length-1, fontSize:13, color:"C8DCF0"}})),
{ x:1, y:3.95, w:11.5, h:1.5, valign:"top", margin:0 });
s.addText("Based on: Tintinalli's EM · Morgan & Mikhail's Anesthesiology · Goldman-Cecil Medicine", {
x:1, y:7.1, w:11.5, h:0.3, fontSize:9, color:C.gray, italic:true, margin:0
});
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 2 — DEFICIT CALCULATION FOR K⁺ = 3.0
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:13.3, h:7.5, fill:{color:C.offwhite} });
header(s, "Potassium Deficit Calculation | K⁺ = 3.0 mEq/L", "Tintinalli's EM Formula — estimating total body K⁺ deficit");
// ── FORMULA BOX ──
s.addShape(pres.shapes.RECTANGLE, { x:0.35, y:1.3, w:12.6, h:1.7, fill:{color:C.navy} });
s.addShape(pres.shapes.RECTANGLE, { x:0.35, y:1.3, w:12.6, h:0.36, fill:{color:C.teal} });
s.addText("DEFICIT FORMULA", { x:0.5, y:1.3, w:4, h:0.36, fontSize:11, bold:true, color:C.white, margin:0 });
s.addText([
{ text: "K⁺ Deficit (mEq) = (Normal K⁺ − Measured K⁺) × (0.4 × Body Weight in kg)", options:{bold:true, fontSize:15, color:C.white, breakLine:true} },
{ text: "• Normal K⁺ = 4.5 mEq/L | Measured K⁺ = 3.0 mEq/L | Deficit per kg = 1.5 × 0.4 = 0.6 mEq/kg", options:{fontSize:11, color:"A8C4D8"} }
], { x:0.55, y:1.7, w:12.1, h:1.2, valign:"top", margin:0 });
// ── WORKED EXAMPLES TABLE ──
s.addText("Worked Examples by Body Weight", { x:0.35, y:3.15, w:6, h:0.35, fontSize:12, bold:true, color:C.navy, margin:0 });
const rows = [
[ {text:"Body Weight (kg)", options:{bold:true, color:C.white}}, {text:"K⁺ Deficit (mEq)", options:{bold:true, color:C.white}}, {text:"KCl Ampoules (10 mEq each)", options:{bold:true, color:C.white}}, {text:"KCl Ampoules (20 mEq each)", options:{bold:true, color:C.white}} ],
[ {text:"50 kg"}, {text:"30 mEq"}, {text:"3 ampoules"}, {text:"1.5 ampoules"} ],
[ {text:"60 kg"}, {text:"36 mEq"}, {text:"3–4 ampoules"}, {text:"2 ampoules"} ],
[ {text:"70 kg"}, {text:"42 mEq"}, {text:"4–5 ampoules"}, {text:"2 ampoules"} ],
[ {text:"80 kg"}, {text:"48 mEq"}, {text:"5 ampoules"}, {text:"2–3 ampoules"} ],
[ {text:"90 kg"}, {text:"54 mEq"}, {text:"5–6 ampoules"}, {text:"3 ampoules"} ],
];
s.addTable(rows, {
x:0.35, y:3.5, w:8.5, h:3.4,
fontSize:11,
border:{type:"solid", color:"B8CCDC", pt:1},
colW:[2.2, 2.1, 2.2, 2.0],
fill: { color: C.white },
rowH: 0.5,
});
// color header row manually via shape behind
s.addShape(pres.shapes.RECTANGLE, { x:0.35, y:3.5, w:8.5, h:0.5, fill:{color:C.navy} });
// Re-add table on top (this is the standard approach for colored header rows in pptxgenjs)
// Actually we handle it in the cell options above
// ── IMPORTANT NOTES ──
sectionBox(s, 9.25, 1.3, 3.75, 5.65, C.white, "⚠ IMPORTANT NOTES", C.white, [
{ text:"This formula estimates INITIAL replacement only — does NOT represent full total body deficit", bold:true, color:C.red },
{ text:"", bullet:false },
{ text:"Each 0.1 mEq/L drop in serum K⁺ ≈ 100–200 mEq total body deficit (in moderate depletion)", color:C.dark },
{ text:"", bullet:false },
{ text:"At K⁺ < 3.0, each 0.1 mEq/L drop = 200–400 mEq deficit (non-linear)", bold:true, color:C.orange },
{ text:"", bullet:false },
{ text:"Always recheck serum K⁺ after every 40–60 mEq given", color:C.dark },
{ text:"", bullet:false },
{ text:"Correct hypomagnesemia first — refractory hypokalemia will not respond without Mg²⁺ correction", bold:true, color:C.teal },
], C.dark);
footer(s);
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 3 — SEVERITY & ECG + IV PROTOCOL
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:13.3, h:7.5, fill:{color:C.offwhite} });
header(s, "Hypokalemia Severity Classification & IV Protocol", "Classification · ECG changes · Route of administration");
// ── SEVERITY TABLE ──
const sevRows = [
[{text:"Severity", options:{bold:true,color:C.white}}, {text:"K⁺ Level", options:{bold:true,color:C.white}}, {text:"ECG Changes", options:{bold:true,color:C.white}}, {text:"Symptoms", options:{bold:true,color:C.white}}, {text:"Treatment Route", options:{bold:true,color:C.white}}],
[{text:"Mild"},{text:"3.0 – 3.5 mEq/L"},{text:"Flattened T waves, U waves appear"},{text:"Fatigue, weakness, cramps"},{text:"Oral KCl preferred"}],
[{text:"Moderate"},{text:"2.5 – 3.0 mEq/L"},{text:"Prominent U waves, prolonged QT"},{text:"Muscle weakness, constipation, palpitations"},{text:"IV via peripheral line ≤ 8 mEq/hr"}],
[{text:"Severe"},{text:"< 2.5 mEq/L"},{text:"ST depression, T-wave inversion, widened QRS, arrhythmias"},{text:"Paralysis, rhabdomyolysis, life-threatening arrhythmias"},{text:"IV via central line 10–20 mEq/hr + continuous ECG"}],
];
s.addTable(sevRows, {
x:0.35, y:1.25, w:12.6, h:2.5,
fontSize:10,
border:{type:"solid", color:"B8CCDC", pt:1},
colW:[1.8, 2.1, 3.0, 3.2, 2.5],
fill:{ color: C.white },
rowH:0.55,
});
// Header row background
s.addShape(pres.shapes.RECTANGLE, { x:0.35, y:1.25, w:12.6, h:0.55, fill:{color:C.tealDk} });
// Mild row background
s.addShape(pres.shapes.RECTANGLE, { x:0.35, y:1.8, w:12.6, h:0.55, fill:{color:"E8F5E9"} });
// Moderate row background
s.addShape(pres.shapes.RECTANGLE, { x:0.35, y:2.35, w:12.6, h:0.55, fill:{color:"FFF3CD"} });
// Severe row background
s.addShape(pres.shapes.RECTANGLE, { x:0.35, y:2.9, w:12.6, h:0.55, fill:{color:"FDECEA"} });
// Re-draw table on top of colored rows
s.addTable(sevRows, {
x:0.35, y:1.25, w:12.6, h:2.5,
fontSize:10,
border:{type:"solid", color:"B8CCDC", pt:1},
colW:[1.8, 2.1, 3.0, 3.2, 2.5],
fill:{ color: "00000000", transparency:100 },
rowH:0.55,
});
// ── 3 INFO BOXES ──
// K⁺ = 3.0 context box
s.addShape(pres.shapes.RECTANGLE, { x:0.35, y:3.85, w:4.0, h:3.4, fill:{color:"FFF8E1"}, shadow:{type:"outer",color:"000000",blur:4,offset:2,angle:135,opacity:0.1} });
s.addShape(pres.shapes.RECTANGLE, { x:0.35, y:3.85, w:4.0, h:0.38, fill:{color:C.orange} });
s.addText("K⁺ = 3.0 mEq/L — THIS PATIENT", { x:0.45, y:3.87, w:3.8, h:0.34, fontSize:10, bold:true, color:C.white, margin:0 });
s.addText([
{text:"Moderate hypokalemia", options:{bold:true, fontSize:11, color:C.orange, breakLine:true}},
{text:"ECG: Flattened/inverted T-waves, prominent U waves, prolonged QT interval", options:{fontSize:10, color:C.dark, breakLine:true}},
{text:"Symptoms: Weakness, cramps, fatigue, mild palpitations", options:{fontSize:10, color:C.dark, breakLine:true}},
{text:"Action: IV KCl in Normal Saline — peripheral line acceptable at ≤ 8 mEq/hr", options:{fontSize:10, bold:true, color:C.navy}},
], { x:0.5, y:4.28, w:3.7, h:2.85, valign:"top", margin:0 });
// Fluid selection
s.addShape(pres.shapes.RECTANGLE, { x:4.65, y:3.85, w:4.2, h:3.4, fill:{color:"E8F5E9"}, shadow:{type:"outer",color:"000000",blur:4,offset:2,angle:135,opacity:0.1} });
s.addShape(pres.shapes.RECTANGLE, { x:4.65, y:3.85, w:4.2, h:0.38, fill:{color:C.green} });
s.addText("IV FLUID SELECTION FOR KCl", { x:4.75, y:3.87, w:4.0, h:0.34, fontSize:10, bold:true, color:C.white, margin:0 });
s.addText([
{text:"✅ Normal Saline (0.9% NaCl) — PREFERRED", options:{bold:true, fontSize:10, color:C.green, breakLine:true}},
{text:"✅ 0.45% NaCl (half-normal saline)", options:{fontSize:10, color:C.dark, breakLine:true}},
{text:"✅ Ringer's Lactate / PlasmaLyte (balanced)", options:{fontSize:10, color:C.dark, breakLine:true}},
{text:"", options:{fontSize:8, breakLine:true}},
{text:"❌ D5W or any dextrose solution — AVOID", options:{bold:true, fontSize:10, color:C.red, breakLine:true}},
{text:" (Insulin release drives K⁺ into cells — worsens hypokalemia)", options:{fontSize:9, color:C.gray, breakLine:true}},
{text:"❌ Sterile Water — AVOID (hemolysis risk)", options:{bold:true, fontSize:10, color:C.red}},
], { x:4.8, y:4.28, w:3.95, h:2.85, valign:"top", margin:0 });
// Monitoring
s.addShape(pres.shapes.RECTANGLE, { x:9.15, y:3.85, w:3.85, h:3.4, fill:{color:"EDE7F6"}, shadow:{type:"outer",color:"000000",blur:4,offset:2,angle:135,opacity:0.1} });
s.addShape(pres.shapes.RECTANGLE, { x:9.15, y:3.85, w:3.85, h:0.38, fill:{color:"5E35B1"} });
s.addText("MONITORING CHECKLIST", { x:9.25, y:3.87, w:3.65, h:0.34, fontSize:10, bold:true, color:C.white, margin:0 });
s.addText([
{text:"□ Baseline ECG before replacement", options:{fontSize:10, color:C.dark, breakLine:true}},
{text:"□ Recheck serum K⁺ after 40–60 mEq", options:{fontSize:10, color:C.dark, breakLine:true}},
{text:"□ Check serum Mg²⁺ — correct if < 0.8 mmol/L", options:{fontSize:10, bold:true, color:"5E35B1", breakLine:true}},
{text:"□ Monitor urine output (must be > 30 mL/hr)", options:{fontSize:10, color:C.dark, breakLine:true}},
{text:"□ Continuous ECG if peripheral arrhythmias or severe", options:{fontSize:10, color:C.dark, breakLine:true}},
{text:"□ Avoid hyperventilation (↓ pCO₂ drives K⁺ into cells)", options:{fontSize:10, color:C.dark}},
], { x:9.25, y:4.28, w:3.65, h:2.85, valign:"top", margin:0 });
footer(s);
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 4 — STEP-BY-STEP IV PROTOCOL FOR K⁺ = 3.0
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:13.3, h:7.5, fill:{color:C.dark} });
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:13.3, h:1.1, fill:{color:C.navy} });
s.addShape(pres.shapes.RECTANGLE, { x:0, y:1.08, w:13.3, h:0.06, fill:{color:C.teal} });
s.addText("Step-by-Step IV KCl Protocol for K⁺ = 3.0 mEq/L", { x:0.35, y:0.12, w:11, h:0.55, fontSize:22, bold:true, color:C.white, margin:0 });
s.addText("Moderate Hypokalemia · Peripheral Line · 70 kg Adult Example", { x:0.35, y:0.65, w:11, h:0.35, fontSize:12, color:"A8C4D8", italic:true, margin:0 });
const steps = [
{ n:"1", title:"Calculate Deficit", body:"K⁺ Deficit = (4.5 − 3.0) × (0.4 × 70 kg) = 1.5 × 28 = 42 mEq\nGoal: Replace 40–60 mEq initially, then recheck.", color:C.teal },
{ n:"2", title:"Prepare Solution", body:"Add 20–40 mEq KCl per 1 L of Normal Saline\nStandard: 1 ampoule (10 mEq) per 500 mL NS = 20 mEq/L\nNEVER give undiluted KCl — fatal cardiac arrest risk.", color:C.orange },
{ n:"3", title:"Set Infusion Rate", body:"Peripheral line: MAX 8 mEq/hr\n→ 40 mEq over 5 hours in 2 L NS (running at 400 mL/hr)\nOR 20 mEq over 2.5 hours in 1 L NS", color:"5E35B1" },
{ n:"4", title:"Monitor During Infusion", body:"ECG monitoring if K⁺ < 2.5 or arrhythmias present\nCheck K⁺ after first 40 mEq given\nCheck renal function & urine output (> 30 mL/hr)", color:C.green },
{ n:"5", title:"Recheck & Repeat", body:"Repeat serum K⁺ — if still low, give another 20–40 mEq\nCheck Mg²⁺ — refractory hypokalemia requires Mg correction\nSwitch to oral KCl 40–80 mEq/day once K⁺ > 3.2 mEq/L", color:C.yellow },
];
steps.forEach((st, i) => {
const x = 0.3 + i * 2.55;
const y = 1.3;
const w = 2.4;
const h = 5.8;
s.addShape(pres.shapes.RECTANGLE, { x, y, w, h, fill:{color:"162040"} });
s.addShape(pres.shapes.RECTANGLE, { x, y, w, h:0.5, fill:{color:st.color} });
// Number circle
s.addShape(pres.shapes.OVAL, { x:x+0.05, y:y+0.06, w:0.38, h:0.38, fill:{color:C.navy} });
s.addText(st.n, { x:x+0.05, y:y+0.07, w:0.38, h:0.34, fontSize:13, bold:true, color:C.white, align:"center", margin:0 });
s.addText(st.title, { x:x+0.48, y:y+0.08, w:w-0.55, h:0.34, fontSize:11, bold:true, color:C.white, margin:0 });
s.addText(st.body, { x:x+0.1, y:y+0.6, w:w-0.2, h:h-0.75, fontSize:9.5, color:"C8DCF0", valign:"top", margin:0, lineSpacingMultiple:1.3 });
});
// Bottom note
s.addShape(pres.shapes.RECTANGLE, { x:0.3, y:7.1, w:12.7, h:0.25, fill:{color:"1E3A5F"} });
s.addText("Note: This protocol is a guide only. Always individualize based on patient weight, renal function, clinical condition and response to therapy. Central line required for rates > 8 mEq/hr.", {
x:0.4, y:7.1, w:12.5, h:0.25, fontSize:8, color:"8AAFC6", italic:true, valign:"middle", margin:0
});
}
// ═══════════════════════════════════════════════════════════════════
// SLIDE 5 — KCl AMPOULE REFERENCE CARD
// ═══════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:13.3, h:7.5, fill:{color:C.offwhite} });
header(s, "KCl Ampoule Quick Reference Card", "Preparation · Concentration · Maximum Rates · Safety Rules");
// ── AMPOULE SIZES TABLE ──
s.addText("Common KCl Ampoule Sizes", { x:0.35, y:1.25, w:5, h:0.35, fontSize:12, bold:true, color:C.navy, margin:0 });
const ampRows = [
[{text:"Ampoule", options:{bold:true,color:C.white}}, {text:"Volume", options:{bold:true,color:C.white}}, {text:"Concentration", options:{bold:true,color:C.white}}, {text:"Content (mEq)", options:{bold:true,color:C.white}}],
[{text:"KCl 7.45%"}, {text:"10 mL"}, {text:"1 mEq/mL"}, {text:"10 mEq"}],
[{text:"KCl 7.45%"}, {text:"20 mL"}, {text:"1 mEq/mL"}, {text:"20 mEq"}],
[{text:"KCl 11.2%"}, {text:"10 mL"}, {text:"1.5 mEq/mL"}, {text:"15 mEq"}],
[{text:"KCl 14.9%"}, {text:"10 mL"}, {text:"2 mEq/mL"}, {text:"20 mEq"}],
];
s.addTable(ampRows, {
x:0.35, y:1.62, w:6.2, h:2.2,
fontSize:11,
border:{type:"solid", color:"B8CCDC", pt:1},
colW:[1.8, 1.4, 1.8, 1.2],
fill:{ color: C.white },
rowH:0.44,
});
s.addShape(pres.shapes.RECTANGLE, { x:0.35, y:1.62, w:6.2, h:0.44, fill:{color:C.navy} });
s.addTable(ampRows, {
x:0.35, y:1.62, w:6.2, h:2.2,
fontSize:11,
border:{type:"solid", color:"B8CCDC", pt:1},
colW:[1.8, 1.4, 1.8, 1.2],
rowH:0.44,
});
// ── MAX RATE TABLE ──
s.addText("Maximum Infusion Rates", { x:6.9, y:1.25, w:6, h:0.35, fontSize:12, bold:true, color:C.navy, margin:0 });
const rateRows = [
[{text:"Route", options:{bold:true,color:C.white}}, {text:"Max Rate", options:{bold:true,color:C.white}}, {text:"Monitoring Required", options:{bold:true,color:C.white}}],
[{text:"Peripheral IV"}, {text:"≤ 8 mEq/hr"}, {text:"Routine — check K⁺ q4–6h"}],
[{text:"Central IV (CVP/PICC)"}, {text:"10–20 mEq/hr"}, {text:"Continuous ECG monitoring"}],
[{text:"NEVER"}, {text:"IV bolus undiluted"}, {text:"⚠ FATAL — cardiac arrest"}],
];
s.addTable(rateRows, {
x:6.9, y:1.62, w:6.1, h:2.2,
fontSize:11,
border:{type:"solid", color:"B8CCDC", pt:1},
colW:[2.3, 1.6, 2.2],
fill:{ color: C.white },
rowH:0.44,
});
s.addShape(pres.shapes.RECTANGLE, { x:6.9, y:1.62, w:6.1, h:0.44, fill:{color:C.tealDk} });
s.addTable(rateRows, {
x:6.9, y:1.62, w:6.1, h:2.2,
fontSize:11,
border:{type:"solid", color:"B8CCDC", pt:1},
colW:[2.3, 1.6, 2.2],
rowH:0.44,
});
// ── SAFETY RULES ──
sectionBox(s, 0.35, 4.0, 6.2, 3.15, C.white, "🚨 SAFETY RULES — NEVER FORGET", C.white, [
{ text:"NEVER give KCl as undiluted IV bolus — direct cardiac arrest", bold:true, color:C.red },
{ text:"NEVER add KCl to dextrose (D5W/D10W) solutions in hypokalemia", bold:true, color:C.red },
{ text:"Always dilute: max 40 mEq per 1 L of IV fluid", color:C.dark },
{ text:"Peripheral line: always ≤ 40 mEq/L concentration", color:C.dark },
{ text:"Always confirm adequate urine output before giving KCl IV", bold:true, color:C.orange },
{ text:"In anuric/oliguric patients — extreme caution, risk of fatal hyperkalemia", bold:true, color:C.orange },
], C.dark);
sectionBox(s, 6.9, 4.0, 6.1, 3.15, C.white, "📋 STANDARD IV KCl ORDERS", C.white, [
{ text:"Mild (K⁺ 3.0–3.5): 40 mEq KCl in 1L NS over 5h via peripheral", color:C.dark },
{ text:"Moderate (K⁺ 2.5–3.0): 40 mEq KCl in 1L NS over 4–5h — recheck after", bold:true, color:C.tealDk },
{ text:"Severe (K⁺ < 2.5): 20 mEq KCl in 100 mL NS over 1h via central + ECG monitor", bold:true, color:C.red },
{ text:"Maintenance: 20–40 mEq/L added to standard fluids", color:C.dark },
{ text:"Daily max IV: 240 mEq/day", color:C.gray },
], C.dark);
footer(s);
}
// ═══════════════════════════════════════════════════════════════════
// WRITE FILE
// ═══════════════════════════════════════════════════════════════════
pres.writeFile({ fileName: "/home/daytona/workspace/kcl-guide/IV_KCl_Quick_Reference_Guide.pptx" })
.then(() => console.log("✅ Saved: IV_KCl_Quick_Reference_Guide.pptx"))
.catch(e => { console.error("❌ Error:", e); process.exit(1); });
cd /home/daytona/workspace/kcl-guide && node build.js 2>&1
~/kcl-guide/build.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/kcl-guide/build.js'
cd /home/daytona/workspace/kcl-guide && node build.js 2>&1
IV KCl Quick Reference Guide
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 — Title | Cover slide with scope overview |
| 2 — Deficit Calculation | Formula + worked examples table for K⁺ = 3.0 mEq/L by body weight (50–90 kg) |
| 3 — Severity & Protocol | Classification table (mild/moderate/severe) + ECG changes + fluid selection + monitoring checklist |
| 4 — Step-by-Step Protocol | 5-step visual protocol for K⁺ = 3.0 in a 70 kg adult |
| 5 — Quick Reference Card | Ampoule sizes, max infusion rates, safety rules, standard orders |
K⁺ Deficit (mEq) = (4.5 − 3.0) × (0.4 × body weight in kg)
| Weight | Estimated Deficit | Ampoules (10 mEq) | Ampoules (20 mEq) |
|---|---|---|---|
| 50 kg | 30 mEq | 3 | 1.5 |
| 60 kg | 36 mEq | 3–4 | 2 |
| 70 kg | 42 mEq | 4–5 | 2 |
| 80 kg | 48 mEq | 5 | 2–3 |