I want to learn all emergency medicine management in ICU I a doctor
ICU emergency medicine management protocols 2024 2025 comprehensive guide
| Action | Detail |
|---|---|
| Measure lactate | Remeasure if >2 mmol/L |
| Blood cultures x2 | Before antibiotics |
| Broad-spectrum antibiotics | Within 1 hour of recognition |
| IV crystalloid | 30 mL/kg if hypotension or lactate ≥4 |
| Vasopressors | For MAP <65 despite fluids |
| Type | Mechanism | CVP | CO | SVR | Example |
|---|---|---|---|---|---|
| Hypovolemic | Volume loss | ↓ | ↓ | ↑ | Hemorrhage, burns |
| Distributive | Vasodilation | ↓/N | ↑ | ↓ | Sepsis, anaphylaxis, neurogenic |
| Cardiogenic | Pump failure | ↑ | ↓ | ↑ | MI, severe HF, myocarditis |
| Obstructive | Outflow block | ↑ | ↓ | ↑ | PE, tamponade, tension PTX |
| Type | PaCO2 | PaO2 | Cause |
|---|---|---|---|
| Type 1 (Hypoxic) | Normal/↓ | ↓ | Pneumonia, pulmonary edema, ARDS |
| Type 2 (Hypercapnic) | ↑ | ↓ | COPD, neuromuscular, sedation |
| Type 3 (Periop) | Variable | ↓ | Atelectasis |
| Type 4 (Shock) | Variable | ↓ | Reduced DO2 |
| Step | Drug/Action |
|---|---|
| Pre-oxygenate | 100% FiO2 x 3-5 min, head-up 20° |
| Pre-treatment | Lidocaine 1.5 mg/kg (if increased ICP) |
| Induction | Ketamine 1.5 mg/kg IV (preferred in unstable) OR Etomidate 0.3 mg/kg |
| Neuromuscular blockade | Succinylcholine 1.5 mg/kg IV (fastest) OR Rocuronium 1.2 mg/kg |
| Confirm | EtCO2 + CXR |
| Therapy | Indication | Notes |
|---|---|---|
| Prone positioning | Moderate-severe ARDS (P/F <150) | ≥16 hrs/day; reduces mortality |
| Neuromuscular blockade | Severe ARDS (P/F <150) | Cisatracurium 37.5 mg/hr |
| iNO (inhaled NO) | Rescue | Improves oxygenation, no mortality benefit |
| High-frequency oscillation (HFOV) | Not recommended (OSCAR/OSCILLATE trials) | |
| VV-ECMO | Severe ARDS failing all measures | Refer to ECMO center |
| Arrhythmia | Cardioversion Energy |
|---|---|
| SVT (narrow) | 50-100 J (sync) |
| Atrial flutter | 50-100 J (sync) |
| AF | 120-200 J (sync) |
| VT (stable) | 100-200 J (sync) |
| VF/pulseless VT | 200 J (unsync, defibrillation) |
| H's | T's |
|---|---|
| Hypovolemia | Tension pneumothorax |
| Hypoxia | Tamponade |
| Hydrogen ion (acidosis) | Toxins |
| Hypo/hyperkalemia | Thrombosis (PE) |
| Hypothermia | Thrombosis (MI) |
| Stage | Creatinine | Urine Output |
|---|---|---|
| 1 | 1.5-1.9x baseline | <0.5 mL/kg/hr x 6-12 hrs |
| 2 | 2.0-2.9x baseline | <0.5 mL/kg/hr x ≥12 hrs |
| 3 | ≥3x baseline or ≥4 mg/dL | <0.3 mL/kg/hr x ≥24 hrs or anuria x12 hrs |
| Time | Action |
|---|---|
| 0 hr | Confirm DKA (pH <7.3, HCO3 <15, glucose >250, ketones +) |
| Immediate | 0.9% NS 1L/hr for 1st hour (if hypovolemic) |
| 1-2 hrs | Change to 0.45% NS at 250-500 mL/hr (avoid rapid fluid shifts) |
| When glucose <250 | Add 5% dextrose to IV fluid, reduce insulin rate |
| Insulin | Regular insulin 0.1 units/kg bolus → 0.1 units/kg/hr infusion; target glucose drop 50-75 mg/dL/hr |
| Potassium | Replace aggressively: K⁺ <3.5 = hold insulin + replace; K⁺ 3.5-5.5 = add 20-40 mEq/L to fluids |
| Bicarbonate | Only if pH <6.9 (NaHCO3 100 mEq over 2 hrs) |
| Resolution criteria | pH >7.3, HCO3 >18, anion gap closed |
| Transition to SC insulin | 1-2 hrs overlap with IV insulin |
| Phase | Time | Treatment |
|---|---|---|
| Early SE | 0-5 min | Benzodiazepines: Lorazepam 0.1 mg/kg IV (max 4mg) OR Midazolam 10 mg IM |
| Established SE | 5-20 min | Levetiracetam 60 mg/kg IV (max 4.5g) OR Valproate 40 mg/kg IV OR Fosphenytoin 20 mg PE/kg IV |
| Refractory SE | 20-40 min | Repeat 2nd line agent OR anesthetic agents |
| Super-refractory SE | >24 hrs | Propofol infusion OR Midazolam infusion OR Ketamine; EEG-guided burst suppression |
| Risk | Management |
|---|---|
| Massive (arrest) | Systemic thrombolysis - Alteplase 100 mg IV over 2 hrs (or 0.6 mg/kg if arrest) |
| Massive (no arrest) | Thrombolysis vs. surgical embolectomy vs. catheter-directed therapy |
| Submassive | Anticoagulation (UFH preferred) + monitor; consider CDT if deteriorating |
| Low-risk | LMWH/DOAC; early discharge if PESI score low |
| Step | Drug | Mechanism | Onset |
|---|---|---|---|
| 1. Stabilize membrane | Calcium gluconate 1g IV | Antagonizes K⁺ effect on heart | 1-3 min |
| 2. Shift K⁺ intracellularly | Insulin 10 units + D50W 50 mL IV | Drives K⁺ into cells | 15-30 min |
| Albuterol 10-20 mg nebulized | β2-stimulation | 30 min | |
| NaHCO3 (if acidotic) | Drives H⁺/K⁺ exchange | 30-60 min | |
| 3. Remove K⁺ | Furosemide IV (if urine output) | Renal excretion | 1-2 hrs |
| Patiromer/SPS (exchange resin) | GI excretion | Hours | |
| RRT/dialysis | Definitive if severe | Immediate |
| Letter | Component |
|---|---|
| A | Assess and manage Pain (NRS/CPOT scale) |
| B | Both SAT + SBT (spontaneous awakening + breathing) |
| C | Choice of sedation (minimize benzodiazepines; use propofol/dexmedetomidine) |
| D | Delirium assessment (CAM-ICU) and management |
| E | Early mobility and Exercise |
| F | Family engagement and empowerment |
| Toxin | Antidote / Management |
|---|---|
| Opioids | Naloxone 0.4-2 mg IV/IM/IN; repeat q2-3 min; infusion for long-acting opioids |
| Benzodiazepines | Flumazenil 0.2 mg IV q1 min (up to 1 mg) - caution: seizures in dependent |
| Tricyclic antidepressants | NaHCO3 1-2 mEq/kg IV (QRS >100 ms or hypotension); alkalinize to pH 7.45-7.55 |
| Organophosphates | Atropine (large doses until secretions dry) + Pralidoxime 1-2g IV |
| Acetaminophen | N-Acetylcysteine (NAC) IV protocol |
| Beta-blockers | High-dose insulin (0.5-1 unit/kg/hr) + calcium + glucagon + lipid emulsion (ILE) |
| Calcium channel blockers | Calcium chloride 1g IV + high-dose insulin + vasopressors + ILE |
| Digoxin | Digoxin-specific Fab antibodies (Digibind) |
| Cyanide | Hydroxocobalamin 5g IV (preferred) or sodium nitrite + sodium thiosulfate |
| CO poisoning | 100% O2 (NRB); severe: hyperbaric oxygen |
| Methanol/Ethylene glycol | Fomepizole 15 mg/kg IV (ADH inhibitor) + dialysis |
| Procedure | Key Points |
|---|---|
| Central line (CVC) | Ultrasound guidance; prefer subclavian/IJ; femoral last resort |
| Arterial line | Radial (first choice); Allen test; continuous BP + ABG sampling |
| Chest tube | Tension PTX: needle first (2nd ICS midclavicular) → tube 5th ICS midaxillary |
| Pericardiocentesis | Cardiac tamponade; ultrasound-guided; subxiphoid approach |
| FAST exam | Bedside ultrasound for trauma/hemodynamic instability |
| Lumbar puncture | Rule out meningitis; send glucose, protein, cell count, gram stain, culture |
| Bronchoscopy | Hemoptysis, mucus plugging, BAL for PNA diagnosis |
| Parameter | Target |
|---|---|
| MAP | ≥65 mmHg (>70-80 for vasopressors, elevated ICP) |
| SpO2 | 94-98% (88-92% for COPD) |
| PaCO2 | 35-45 mmHg |
| Temperature | 36-37.5°C (36-38°C for febrile) |
| Glucose | 140-180 mg/dL |
| Hb (sepsis) | 7-9 g/dL |
| Platelets (bleeding risk) | >50K for procedures, >100K for CNS/eye |
| INR (before procedures) | <1.5 |
| pH | 7.35-7.45 |
It's very impressive add the moreinjections and uses to it and make me a easy understanding notes and make it pdf format
mkdir -p /home/daytona/workspace/icu-notes && ls /home/daytona/workspace/
~/icu-notes/generate_icu_pdf.py
#!/usr/bin/env python3
"""
ICU Emergency Medicine Management Notes - PDF Generator
Uses ReportLab for professional, color-coded medical reference PDF
"""
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm, mm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
PageBreak, HRFlowable, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import BaseDocTemplate, Frame, PageTemplate
from reportlab.pdfgen import canvas
from reportlab.lib.colors import HexColor
import datetime
# ─── COLOUR PALETTE ──────────────────────────────────────────────────────────
C_NAVY = HexColor("#0D2137") # header background
C_RED = HexColor("#C0392B") # critical / alert
C_ORANGE = HexColor("#E67E22") # warning
C_GREEN = HexColor("#1A7A4A") # safe / normal
C_BLUE = HexColor("#1A5276") # section heading bg
C_LBLUE = HexColor("#D6EAF8") # section heading light
C_TEAL = HexColor("#148F77") # sub-heading
C_YELLOW = HexColor("#FFF3CD") # callout background
C_LGRAY = HexColor("#F2F3F4") # table row alt
C_WHITE = colors.white
C_BLACK = colors.black
C_DARKGRAY = HexColor("#2C3E50")
# ─── PAGE SETUP ──────────────────────────────────────────────────────────────
PAGE_W, PAGE_H = A4
MARGIN = 1.8 * cm
def make_doc(filename):
return SimpleDocTemplate(
filename,
pagesize=A4,
rightMargin=MARGIN, leftMargin=MARGIN,
topMargin=2.5*cm, bottomMargin=2*cm,
title="ICU Emergency Medicine Management Notes",
author="Orris Medical AI",
subject="Critical Care Reference Guide"
)
# ─── STYLES ──────────────────────────────────────────────────────────────────
def make_styles():
base = getSampleStyleSheet()
styles = {}
styles['cover_title'] = ParagraphStyle('cover_title',
fontSize=28, fontName='Helvetica-Bold',
textColor=C_WHITE, alignment=TA_CENTER, spaceAfter=6)
styles['cover_sub'] = ParagraphStyle('cover_sub',
fontSize=14, fontName='Helvetica',
textColor=HexColor("#AED6F1"), alignment=TA_CENTER, spaceAfter=4)
styles['cover_date'] = ParagraphStyle('cover_date',
fontSize=11, fontName='Helvetica',
textColor=HexColor("#D5D8DC"), alignment=TA_CENTER, spaceAfter=2)
styles['section'] = ParagraphStyle('section',
fontSize=13, fontName='Helvetica-Bold',
textColor=C_WHITE, backColor=C_BLUE,
borderPad=6, spaceBefore=14, spaceAfter=4,
leftIndent=0, leading=18)
styles['subsection'] = ParagraphStyle('subsection',
fontSize=11, fontName='Helvetica-Bold',
textColor=C_TEAL, spaceBefore=8, spaceAfter=3)
styles['body'] = ParagraphStyle('body',
fontSize=9.5, fontName='Helvetica',
textColor=C_DARKGRAY, leading=14,
spaceBefore=2, spaceAfter=2)
styles['bullet'] = ParagraphStyle('bullet',
fontSize=9.5, fontName='Helvetica',
textColor=C_DARKGRAY, leading=13,
leftIndent=14, bulletIndent=4,
spaceBefore=1, spaceAfter=1)
styles['red_box'] = ParagraphStyle('red_box',
fontSize=9.5, fontName='Helvetica-Bold',
textColor=C_RED, leading=13,
leftIndent=6, spaceBefore=1, spaceAfter=1)
styles['green_box'] = ParagraphStyle('green_box',
fontSize=9.5, fontName='Helvetica-Bold',
textColor=C_GREEN, leading=13,
leftIndent=6, spaceBefore=1, spaceAfter=1)
styles['callout'] = ParagraphStyle('callout',
fontSize=9, fontName='Helvetica-Oblique',
textColor=HexColor("#7D6608"), backColor=C_YELLOW,
borderPad=5, leading=13,
leftIndent=8, spaceBefore=4, spaceAfter=4)
styles['drug_name'] = ParagraphStyle('drug_name',
fontSize=9.5, fontName='Helvetica-Bold',
textColor=C_NAVY, leading=13)
styles['toc_title'] = ParagraphStyle('toc_title',
fontSize=16, fontName='Helvetica-Bold',
textColor=C_NAVY, alignment=TA_CENTER,
spaceBefore=0, spaceAfter=12)
styles['toc_item'] = ParagraphStyle('toc_item',
fontSize=10, fontName='Helvetica',
textColor=C_DARKGRAY, leading=16, leftIndent=10)
styles['footer_style'] = ParagraphStyle('footer_style',
fontSize=8, fontName='Helvetica',
textColor=HexColor("#95A5A6"), alignment=TA_CENTER)
return styles
# ─── HELPERS ─────────────────────────────────────────────────────────────────
def section_header(title, styles):
return [
Spacer(1, 4*mm),
Paragraph(f" {title}", styles['section']),
HRFlowable(width="100%", thickness=2, color=C_BLUE, spaceAfter=4),
]
def sub_header(title, styles):
return Paragraph(title, styles['subsection'])
def bullet_item(text, styles, color=None):
st = styles['bullet']
if color == 'red':
return Paragraph(f"<font color='#C0392B'>■</font> {text}", st)
elif color == 'green':
return Paragraph(f"<font color='#1A7A4A'>■</font> {text}", st)
else:
return Paragraph(f"<font color='#1A5276'>►</font> {text}", st)
def callout(text, styles):
return Paragraph(f"⚠ {text}", styles['callout'])
def make_table(headers, rows, col_widths=None, stripe=True):
data = [headers] + rows
if col_widths is None:
available = PAGE_W - 2*MARGIN
col_widths = [available / len(headers)] * len(headers)
ts = [
('BACKGROUND', (0,0), (-1,0), C_NAVY),
('TEXTCOLOR', (0,0), (-1,0), C_WHITE),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,0), 9),
('ALIGN', (0,0), (-1,0), 'CENTER'),
('BOTTOMPADDING', (0,0), (-1,0), 6),
('TOPPADDING', (0,0), (-1,0), 6),
('FONTNAME', (0,1), (-1,-1), 'Helvetica'),
('FONTSIZE', (0,1), (-1,-1), 8.5),
('TOPPADDING', (0,1), (-1,-1), 4),
('BOTTOMPADDING', (0,1), (-1,-1), 4),
('LEFTPADDING', (0,0), (-1,-1), 6),
('RIGHTPADDING', (0,0), (-1,-1), 6),
('GRID', (0,0), (-1,-1), 0.4, HexColor("#BDC3C7")),
('ROWBACKGROUNDS', (0,1), (-1,-1), [C_WHITE, C_LGRAY] if stripe else [C_WHITE]),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
]
t = Table(data, colWidths=col_widths, repeatRows=1)
t.setStyle(TableStyle(ts))
return t
def page_num_canvas(canvas_obj, doc):
canvas_obj.saveState()
# Header bar
canvas_obj.setFillColor(C_NAVY)
canvas_obj.rect(0, PAGE_H - 1.5*cm, PAGE_W, 1.5*cm, fill=1, stroke=0)
canvas_obj.setFillColor(C_WHITE)
canvas_obj.setFont("Helvetica-Bold", 9)
canvas_obj.drawString(MARGIN, PAGE_H - 1*cm, "ICU Emergency Medicine Management")
canvas_obj.setFont("Helvetica", 8)
canvas_obj.drawRightString(PAGE_W - MARGIN, PAGE_H - 1*cm, "For Medical Professionals")
# Footer
canvas_obj.setFillColor(HexColor("#95A5A6"))
canvas_obj.setFont("Helvetica", 8)
canvas_obj.drawCentredString(PAGE_W/2, 1.2*cm, f"Page {doc.page} | ICU Emergency Reference | {datetime.date.today().strftime('%B %Y')}")
canvas_obj.restoreState()
# ─── CONTENT BUILDER ─────────────────────────────────────────────────────────
def build_content(styles):
story = []
S = styles
# ══════════════════ COVER PAGE ══════════════════
story.append(Spacer(1, 3*cm))
# Blue cover box
cover_data = [[
Paragraph("🏥 ICU EMERGENCY MEDICINE", S['cover_title']),
]]
cover_data2 = [[
Paragraph("MANAGEMENT NOTES", S['cover_title']),
]]
cover_data3 = [[
Paragraph("Drugs · Injections · Protocols · Doses · Quick Reference", S['cover_sub']),
]]
cover_data4 = [[
Paragraph("For Doctors & Critical Care Clinicians", S['cover_date']),
]]
cover_data5 = [[
Paragraph(f"Compiled: {datetime.date.today().strftime('%B %Y')} | Based on Surviving Sepsis 2026, ACLS 2025, KDIGO, AHA Guidelines", S['cover_date']),
]]
for d in [cover_data, cover_data2, cover_data3, cover_data4, cover_data5]:
t = Table(d, colWidths=[PAGE_W - 2*MARGIN])
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), C_NAVY),
('BOTTOMPADDING', (0,0), (-1,-1), 8),
('TOPPADDING', (0,0), (-1,-1), 8),
('LEFTPADDING', (0,0), (-1,-1), 12),
('RIGHTPADDING', (0,0), (-1,-1), 12),
]))
story.append(t)
story.append(Spacer(1, 2*cm))
# Quick stats boxes
stats = [
["14 Clinical\nDomains", "50+ Emergency\nDrugs & Doses", "ICU Protocols\n& Bundles", "Quick\nReference Tables"],
]
st = Table(stats, colWidths=[(PAGE_W - 2*MARGIN)/4]*4)
st.setStyle(TableStyle([
('BACKGROUND', (0,0), (0,0), C_RED),
('BACKGROUND', (1,0), (1,0), C_TEAL),
('BACKGROUND', (2,0), (2,0), C_ORANGE),
('BACKGROUND', (3,0), (3,0), C_BLUE),
('TEXTCOLOR', (0,0), (-1,-1), C_WHITE),
('FONTNAME', (0,0), (-1,-1), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,-1), 11),
('ALIGN', (0,0), (-1,-1), 'CENTER'),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0), (-1,-1), 14),
('BOTTOMPADDING', (0,0), (-1,-1), 14),
('GRID', (0,0), (-1,-1), 1, C_WHITE),
]))
story.append(st)
story.append(PageBreak())
# ══════════════════ TABLE OF CONTENTS ══════════════════
story.append(Paragraph("TABLE OF CONTENTS", S['toc_title']))
story.append(HRFlowable(width="100%", thickness=2, color=C_BLUE, spaceAfter=8))
toc_items = [
("1", "Sepsis & Septic Shock", "Bundles, vasopressors, antibiotics"),
("2", "Shock - All Types", "Hypovolemic, cardiogenic, distributive, obstructive"),
("3", "Acute Respiratory Failure & Mechanical Ventilation", "RSI, ARDS, ventilator settings"),
("4", "Cardiac Arrest (ACLS 2025)", "CPR, drugs, post-arrest care"),
("5", "Arrhythmias", "AF, VT, SVT, bradycardia management"),
("6", "Acute Coronary Syndrome (ACS)", "STEMI, NSTEMI, antiplatelet, reperfusion"),
("7", "Neurological Emergencies", "Status epilepticus, raised ICP, stroke"),
("8", "Pulmonary Embolism", "Massive, submassive, thrombolysis"),
("9", "AKI & Renal Emergencies", "KDIGO staging, RRT indications"),
("10", "Diabetic Emergencies", "DKA, HHS protocols"),
("11", "Electrolyte Emergencies", "Hyperkalemia, hyponatremia, Ca, Mg"),
("12", "ICU Drugs & Injections - Complete Reference", "Vasopressors, sedatives, analgesics, antibiotics"),
("13", "Toxicology & Antidotes", "Overdose management, antidotes"),
("14", "ICU Bundles & Protocols", "ABCDEF, VAP, DVT, glycemic control"),
]
for num, title, desc in toc_items:
story.append(Paragraph(
f"<font color='#1A5276'><b>{num}.</b></font> <b>{title}</b> "
f"<font color='#7F8C8D'>— {desc}</font>",
S['toc_item']
))
story.append(PageBreak())
# ══════════════════ SECTION 1: SEPSIS ══════════════════
story += section_header("1. SEPSIS & SEPTIC SHOCK", S)
story.append(callout("Sepsis = Life-threatening organ dysfunction (SOFA ≥2) from dysregulated infection response. Septic Shock = Sepsis + vasopressors needed + lactate >2 mmol/L", S))
story.append(Spacer(1, 3*mm))
story.append(sub_header("qSOFA Bedside Screen (≥2 = High Risk)", S))
qsofa = [
["Criterion", "Threshold"],
["Respiratory Rate", "≥ 22 breaths/min"],
["Altered Mental Status", "GCS < 15"],
["Systolic Blood Pressure", "≤ 100 mmHg"],
]
story.append(make_table(qsofa[0:1], qsofa[1:], col_widths=[9*cm, 8.6*cm]))
story.append(Spacer(1, 3*mm))
story.append(sub_header("HOUR-1 BUNDLE (Start Immediately)", S))
h1 = [
["Action", "Detail", "Priority"],
["Measure Lactate", "Remeasure if initial >2 mmol/L", "⚡ STAT"],
["Blood Cultures x2", "Before starting antibiotics", "⚡ STAT"],
["Broad-Spectrum Antibiotics", "Within 1 HOUR of recognition", "🔴 CRITICAL"],
["IV Crystalloid Bolus", "30 mL/kg if hypotension or lactate ≥4", "⚡ STAT"],
["Vasopressors", "If MAP <65 despite fluid bolus", "⚡ STAT"],
]
story.append(make_table(h1[0:1], h1[1:], col_widths=[6*cm, 8*cm, 3.6*cm]))
story.append(Spacer(1, 3*mm))
story.append(sub_header("Vasopressor Ladder (MAP Target ≥65 mmHg)", S))
vaso = [
["Step", "Drug", "Dose", "Notes"],
["1st LINE", "Norepinephrine (Levophed)", "0.01–0.5 mcg/kg/min IV", "Preferred; alpha+beta"],
["2nd ADD-ON", "Vasopressin", "0.03–0.04 units/min IV (fixed)", "Add when NE ≥0.25–0.5"],
["3rd ADD-ON", "Epinephrine (Adrenaline)", "0.01–0.5 mcg/kg/min IV", "Add if NE+VP insufficient"],
["Low CO", "Dobutamine", "2.5–20 mcg/kg/min IV", "Inotrope; for low CO states"],
["AVOID", "Dopamine", "—", "Higher mortality; arrhythmias"],
]
story.append(make_table(vaso[0:1], vaso[1:], col_widths=[2.5*cm, 5*cm, 5.5*cm, 4.6*cm]))
story.append(Spacer(1, 3*mm))
story.append(sub_header("Fluids", S))
for txt in [
"First choice: Balanced crystalloids (Lactated Ringer's / PlasmaLyte) — NOT normal saline alone",
"Add albumin 4–5% when large volumes of crystalloid are needed",
"AVOID Hetastarch (HES) — increases AKI and mortality",
"Guide with dynamic measures: Pulse Pressure Variation (PPV >13% = fluid responsive), Passive Leg Raise (PLR) test",
]:
story.append(bullet_item(txt, S))
story.append(Spacer(1, 3*mm))
story.append(sub_header("Antibiotics — Empiric Selection", S))
abx = [
["Suspected Source", "Empiric Choice", "Dose"],
["Unknown Source (ICU)", "Piperacillin-Tazobactam", "4.5g IV q6h (extended infusion 4h)"],
["Unknown (MRSA risk)", "Vancomycin + Pip-Taz", "Van 25–30 mg/kg IV load"],
["Abdominal", "Meropenem OR Pip-Taz", "Meropenem 1g IV q8h"],
["Pneumonia (CAP)", "Ceftriaxone + Azithromycin", "Ceftriaxone 2g IV daily"],
["Pneumonia (HAP/VAP)", "Piperacillin-Taz + Vancomycin", "Cover MRSA + Pseudomonas"],
["Meningitis", "Ceftriaxone + Vancomycin ± Ampicillin", "+ Dexamethasone 0.15 mg/kg IV q6h x4d"],
["Fungal (Candida, risk)", "Micafungin OR Caspofungin", "Micafungin 100mg IV daily"],
]
story.append(make_table(abx[0:1], abx[1:], col_widths=[4.5*cm, 6*cm, 7.1*cm]))
story.append(Spacer(1, 3*mm))
story.append(sub_header("Corticosteroids in Septic Shock", S))
story.append(bullet_item("Hydrocortisone 200 mg/day IV (50 mg q6h OR continuous infusion) if shock persists despite adequate fluids + vasopressors", S))
story.append(bullet_item("Do NOT use corticosteroids if shock resolves with fluids alone", S))
story.append(bullet_item("Target serum lactate clearance ≥10% per 2 hrs as resuscitation endpoint", S))
story.append(PageBreak())
# ══════════════════ SECTION 2: SHOCK ══════════════════
story += section_header("2. SHOCK — ALL TYPES", S)
story.append(sub_header("Classification", S))
shock_class = [
["Type", "Mechanism", "CVP", "CO", "SVR", "Example"],
["Hypovolemic", "Volume loss", "↓", "↓", "↑", "Hemorrhage, GI bleed, burns"],
["Distributive", "Vasodilation", "↓/N", "↑", "↓↓", "Sepsis, anaphylaxis, neurogenic"],
["Cardiogenic", "Pump failure", "↑", "↓↓", "↑", "STEMI, severe HF, myocarditis"],
["Obstructive", "Outflow block", "↑", "↓", "↑", "PE, tamponade, tension PTX"],
]
story.append(make_table(shock_class[0:1], shock_class[1:], col_widths=[3*cm,4*cm,1.5*cm,1.5*cm,1.5*cm,6.1*cm]))
story.append(Spacer(1, 3*mm))
story.append(sub_header("Hemorrhagic Shock — Damage Control Resuscitation", S))
hem = [
["Class", "Blood Loss", "HR", "SBP", "GCS", "Management"],
["I", "<750 mL (<15%)", "Normal", "Normal", "Normal", "Crystalloid; no transfusion"],
["II", "750–1500 mL", "100–120", "Normal", "Anxious", "Crystalloid + consider pRBC"],
["III", "1500–2000 mL", "120–140", "↓", "Confused", "pRBC + FFP; Activate MTP"],
["IV", ">2000 mL (>40%)", ">140", "↓↓", "Lethargic", "MTP 1:1:1; TXA; surgery"],
]
story.append(make_table(hem[0:1], hem[1:], col_widths=[1.5*cm,3.5*cm,1.8*cm,1.8*cm,2*cm,7*cm]))
story.append(Spacer(1, 2*mm))
story.append(callout("Tranexamic Acid (TXA): 1g IV over 10 min WITHIN 3 hours of trauma, then 1g over 8 hrs. MTP Ratio: pRBC:FFP:Platelets = 1:1:1. Target fibrinogen >1.5 g/L — give cryoprecipitate.", S))
story.append(Spacer(1, 3*mm))
story.append(sub_header("Anaphylactic Shock — Step-by-Step", S))
ana = [
["Step", "Drug/Action", "Dose", "Route"],
["1 (FIRST)", "Epinephrine (Adrenaline) 🔴", "0.5 mg (adult)", "IM anterolateral thigh"],
["2", "Remove trigger; lay flat, legs elevated", "—", "—"],
["3", "Normal Saline fluid bolus", "1–2 L rapidly", "IV"],
["4", "Diphenhydramine (H1 blocker)", "25–50 mg", "IV/IM"],
["5", "Ranitidine/Famotidine (H2 blocker)", "50 mg / 20 mg", "IV"],
["6", "Methylprednisolone (prevents biphasic)", "125 mg", "IV"],
["7 (if BB use)", "Glucagon", "1–5 mg over 5 min", "IV — bypasses beta blockade"],
["8 (bronchospasm)", "Salbutamol/Albuterol", "2.5–5 mg", "Nebulized"],
]
story.append(make_table(ana[0:1], ana[1:], col_widths=[2*cm,5.5*cm,3.5*cm,6.6*cm]))
story.append(Spacer(1, 3*mm))
story.append(sub_header("Cardiogenic Shock — Key Drugs", S))
cardio = [
["Drug", "Class", "Dose", "Notes"],
["Dobutamine", "Inotrope (β1)", "2.5–20 mcg/kg/min IV", "First-line inotrope"],
["Milrinone", "PDE3 inhibitor", "0.375–0.75 mcg/kg/min IV", "Use if on beta-blockers"],
["Norepinephrine", "Vasopressor", "0.01–0.5 mcg/kg/min IV", "For refractory hypotension"],
["Levosimendan", "Ca sensitizer", "0.1–0.2 mcg/kg/min x24h", "Alternative inotrope"],
["Furosemide", "Loop diuretic", "40–200 mg IV bolus or infusion", "For fluid overload"],
]
story.append(make_table(cardio[0:1], cardio[1:], col_widths=[3.5*cm,3.5*cm,5*cm,5.6*cm]))
story.append(PageBreak())
# ══════════════════ SECTION 3: RESPIRATORY FAILURE ══════════════════
story += section_header("3. ACUTE RESPIRATORY FAILURE & MECHANICAL VENTILATION", S)
story.append(sub_header("RSI — Rapid Sequence Intubation", S))
rsi = [
["Step", "Drug / Action", "Dose", "Notes"],
["Pre-oxygenate", "100% FiO2 via NRB / BVM / HFNC", "3–5 min", "HOB 20°; NODESAT technique"],
["Pre-treatment", "Lidocaine (if raised ICP)", "1.5 mg/kg IV", "3 min before induction"],
["Induction", "Ketamine (hemodynamically unstable)", "1.5–2 mg/kg IV", "Preferred in hypotensive patients"],
["Induction (alt)", "Etomidate (stable CV)", "0.3 mg/kg IV", "Minimal cardiac depression"],
["Induction (alt)", "Propofol (elective)", "1–2 mg/kg IV", "Avoid if hypotensive"],
["Paralysis 1st", "Succinylcholine (fastest)", "1.5 mg/kg IV", "Contraindicated: hyperK, burns >48h, SCI"],
["Paralysis 2nd", "Rocuronium (if succinyl CI)", "1.2 mg/kg IV", "Reversed by sugammadex 16 mg/kg"],
["Confirm", "EtCO2 + CXR", "—", "Gold standard confirmation"],
]
story.append(make_table(rsi[0:1], rsi[1:], col_widths=[2.8*cm,4.8*cm,3*cm,7*cm]))
story.append(Spacer(1, 3*mm))
story.append(sub_header("Lung Protective Ventilation (Berlin ARDS Protocol)", S))
vent = [
["Parameter", "Target", "Rationale"],
["Tidal Volume (Vt)", "6 mL/kg IBW (ideal body weight)", "Prevent volutrauma"],
["Plateau Pressure (Pplat)", "≤ 30 cmH₂O", "Prevent barotrauma"],
["Driving Pressure (DP)", "≤ 15 cmH₂O (Pplat − PEEP)", "Best mortality predictor"],
["PEEP", "Titrate to FiO₂ (higher for severe ARDS)", "Prevent atelectrauma"],
["FiO₂", "Target SpO₂ 88–95%", "Avoid hyperoxia"],
["RR", "14–20 breaths/min", "Adjust for pH/PaCO₂"],
["I:E Ratio", "1:2 (standard)", "Prolonged for auto-PEEP states"],
]
story.append(make_table(vent[0:1], vent[1:], col_widths=[4.5*cm,6.5*cm,6.6*cm]))
story.append(Spacer(1, 3*mm))
story.append(sub_header("ARDS Severity & Rescue Therapies", S))
ards = [
["ARDS Severity", "P/F Ratio", "Rescue Therapy"],
["Mild", "200–300 mmHg", "Optimize PEEP, position"],
["Moderate", "100–200 mmHg", "Prone positioning ≥16 hrs/day"],
["Severe", "<100 mmHg", "Prone + NMB (Cisatracurium) + Consider ECMO"],
]
story.append(make_table(ards[0:1], ards[1:], col_widths=[4*cm,4*cm,9.6*cm]))
story.append(Spacer(1, 2*mm))
story.append(callout("Prone Positioning: Turn face-down for ≥16 hrs/day. Reduces mortality in moderate-severe ARDS (PROSEVA trial). Cisatracurium 37.5 mg/hr infusion for NMB.", S))
story.append(Spacer(1, 3*mm))
story.append(sub_header("Sedation & Analgesia in Mechanically Ventilated Patients", S))
sed = [
["Drug", "Class", "Dose (IV)", "Duration", "Key Notes"],
["Propofol", "Sedative/hypnotic", "5–50 mcg/kg/min infusion", "Short-term", "Check triglycerides if >48h; propofol infusion syndrome risk"],
["Dexmedetomidine", "Alpha-2 agonist", "0.2–1.5 mcg/kg/hr infusion", "ICU sedation", "Preserves breathing; less delirium; cooperative sedation"],
["Midazolam", "Benzodiazepine", "1–5 mg/hr infusion", "Avoid long-term", "Accumulates; increases delirium; use short-term only"],
["Fentanyl", "Opioid analgesic", "25–200 mcg/hr infusion", "Analgesia first", "Preferred opioid in ICU; renal-safe"],
["Morphine", "Opioid analgesic", "1–10 mg/hr infusion", "Analgesia", "Avoid in AKI (active metabolite accumulation)"],
["Ketamine", "NMDA antagonist", "0.1–0.5 mg/kg/hr infusion", "Adjunct", "Bronchodilator; maintains BP; good adjunct"],
["Hydromorphone", "Opioid analgesic", "0.2–1 mg/hr infusion", "Analgesia", "More potent than morphine; use in opioid tolerance"],
]
story.append(make_table(sed[0:1], sed[1:], col_widths=[3*cm,3.2*cm,4.5*cm,2.5*cm,4.4*cm]))
story.append(callout("RASS Target: −1 to 0 (light sedation). Use Analgesia-First strategy. CAM-ICU daily for delirium assessment.", S))
story.append(PageBreak())
# ══════════════════ SECTION 4: CARDIAC ARREST ══════════════════
story += section_header("4. CARDIAC ARREST — ACLS 2025", S)
story.append(sub_header("CPR Quality Standards", S))
for txt in [
"Compression rate: 100–120/min",
"Depth: 5–6 cm (2–2.4 inches); full chest recoil between compressions",
"Minimize interruptions: pause <10 seconds for rhythm check",
"Ratio: 30:2 until advanced airway; then continuous compressions (10 breaths/min)",
"Avoid hyperventilation — worsens venous return",
]:
story.append(bullet_item(txt, S))
story.append(Spacer(1, 3*mm))
story.append(sub_header("Drugs in Cardiac Arrest", S))
acls_drugs = [
["Drug", "Indication", "Dose", "Timing"],
["Epinephrine (Adrenaline)", "VF/pVT + PEA/Asystole", "1 mg IV q3–5 min", "VF: after 2nd shock; PEA: immediately"],
["Amiodarone", "Refractory VF/pVT", "300 mg IV bolus; then 150 mg x1", "After 3rd shock"],
["Lidocaine (if no amiodarone)", "Refractory VF/pVT", "1–1.5 mg/kg IV; repeat 0.5–0.75 mg/kg", "Alternative to amiodarone"],
["Sodium Bicarbonate", "Hyperkalemia / TCA OD / acidosis", "1–2 mEq/kg IV", "Specific reversible causes"],
["Calcium Chloride", "Hyperkalemia / Ca-channel OD", "10 mL of 10% IV (1g)", "Membrane stabilization"],
["Magnesium Sulfate", "Torsades de Pointes", "2g IV over 5 min", "Hypomagnesemia VF"],
]
story.append(make_table(acls_drugs[0:1], acls_drugs[1:], col_widths=[4*cm,4.5*cm,4.5*cm,4.6*cm]))
story.append(Spacer(1, 3*mm))
story.append(sub_header("Reversible Causes — H's and T's", S))
ht = [
["H's", "Management", "T's", "Management"],
["Hypovolemia", "IV fluid bolus / blood", "Tension Pneumothorax", "Needle decompression → chest tube"],
["Hypoxia", "100% O₂, intubate", "Tamponade", "Pericardiocentesis"],
["Hydrogen ion (Acidosis)", "NaHCO₃, treat cause", "Toxins (OD)", "Specific antidotes"],
["Hypo/Hyperkalemia", "Correct electrolytes", "Thrombosis (PE)", "Thrombolysis (tPA 0.6 mg/kg)"],
["Hypothermia", "Warm fluids, external warming", "Thrombosis (MI)", "PCI / Thrombolysis"],
]
story.append(make_table(ht[0:1], ht[1:], col_widths=[3.5*cm,4.5*cm,3.5*cm,6.1*cm]))
story.append(Spacer(1, 3*mm))
story.append(sub_header("Post-Cardiac Arrest Care (ROSC)", S))
post = [
["Parameter", "Target / Action"],
["Temperature (TTM)", "32–36°C for 24 hrs (comatose); PREVENT fever >37.5°C actively"],
["SpO₂", "94–98% — avoid both hypoxia AND hyperoxia"],
["PaCO₂", "35–45 mmHg (normocapnia)"],
["Glucose", "140–180 mg/dL (insulin if needed)"],
["MAP", "≥65 mmHg; consider 80–100 if prior hypertension"],
["Coronary Angiography", "Emergent if STEMI on ECG or suspected cardiac cause"],
["Neuroprognostication", "Wait ≥72 hrs after rewarming before declaring prognosis"],
]
story.append(make_table(post[0:1], post[1:], col_widths=[5*cm,12.6*cm]))
story.append(PageBreak())
# ══════════════════ SECTION 5: ARRHYTHMIAS ══════════════════
story += section_header("5. ARRHYTHMIAS IN THE ICU", S)
story.append(callout("Unstable arrhythmia = Hypotension / Chest pain / Altered consciousness / Acute HF → IMMEDIATE synchronized cardioversion", S))
story.append(Spacer(1, 2*mm))
arrhythmia_drugs = [
["Arrhythmia", "First Drug", "Dose", "Second Option"],
["SVT (narrow, stable)", "Adenosine", "6 mg IV rapid push; repeat 12 mg x2", "Diltiazem 0.25 mg/kg IV or Metoprolol 5 mg IV"],
["AF — Rate Control", "Metoprolol OR Diltiazem", "Metoprolol 5 mg IV q5min x3; Diltiazem 20 mg IV", "Digoxin 0.5 mg IV (HF)"],
["AF — Rhythm Control", "Amiodarone", "150 mg IV over 10 min → infusion 1 mg/min x6h", "Electrical cardioversion 120–200J sync"],
["AF + WPW (pre-excite)", "Procainamide", "15–18 mg/kg IV over 60 min", "AVOID adenosine, digoxin, CCBs"],
["VT (stable, monomorphic)", "Amiodarone", "150 mg IV over 10 min", "Lidocaine 1 mg/kg IV bolus"],
["Torsades de Pointes", "Magnesium Sulfate", "2g IV over 5 min (repeat x1)", "Correct K⁺; overdrive pacing"],
["Bradycardia (symptomatic)", "Atropine", "0.5 mg IV q3–5 min; max 3 mg", "Transcutaneous pacing; Dopamine infusion"],
["Complete Heart Block", "Transcutaneous Pacing", "80–100 bpm", "Transvenous pacing for definitive"],
]
story.append(make_table(arrhythmia_drugs[0:1], arrhythmia_drugs[1:], col_widths=[3.5*cm,3.5*cm,5.5*cm,5.1*cm]))
story.append(Spacer(1, 3*mm))
story.append(sub_header("Cardioversion Energy Guide", S))
cardio_energy = [
["Arrhythmia", "Type", "Energy (Biphasic)"],
["Ventricular Fibrillation (VF)", "UNSYNCHRONIZED (defibrillation)", "200 J"],
["Pulseless VT", "UNSYNCHRONIZED", "200 J"],
["Stable VT (monomorphic)", "Synchronized", "100–200 J"],
["Atrial Fibrillation", "Synchronized", "120–200 J"],
["Atrial Flutter / SVT", "Synchronized", "50–100 J"],
]
story.append(make_table(cardio_energy[0:1], cardio_energy[1:], col_widths=[5.5*cm,6*cm,6.1*cm]))
story.append(PageBreak())
# ══════════════════ SECTION 6: ACS ══════════════════
story += section_header("6. ACUTE CORONARY SYNDROME (ACS)", S)
story.append(sub_header("STEMI Management — Time Targets", S))
story.append(callout("Primary PCI: Door-to-Balloon < 90 min. Thrombolysis: Door-to-Needle < 30 min (if PCI not available within 120 min)", S))
acs_drugs = [
["Drug", "Class", "Dose", "Timing"],
["Aspirin", "Antiplatelet", "300 mg PO load → 75–100 mg daily", "Immediately"],
["Ticagrelor (preferred)", "P2Y12 inhibitor", "180 mg PO load → 90 mg BD", "With aspirin (DAPT)"],
["Prasugrel", "P2Y12 inhibitor", "60 mg PO load → 10 mg daily", "Post-PCI (avoid if prior stroke)"],
["Clopidogrel", "P2Y12 inhibitor", "300–600 mg PO load → 75 mg daily", "If ticagrelor/prasugrel CI"],
["Unfractionated Heparin", "Anticoagulant", "60–70 U/kg IV bolus (max 5000U) → infusion", "During PCI / thrombolysis"],
["Enoxaparin", "LMWH", "1 mg/kg SC q12h OR 0.5 mg/kg IV", "For NSTEMI management"],
["Alteplase (tPA)", "Thrombolytic", "15 mg IV bolus → 0.75 mg/kg x30min → 0.5 mg/kg x60min", "STEMI if no PCI <120 min"],
["Metoprolol", "Beta-blocker", "5 mg IV q5min x3; then oral", "Within 24h (stable only)"],
["Atorvastatin", "High-intensity statin", "80 mg PO stat", "Start immediately"],
["Nitroglycerin", "Vasodilator", "0.4 mg SL q5min x3; then infusion 5–200 mcg/min", "Ongoing chest pain (not if SBP <90)"],
]
story.append(make_table(acs_drugs[0:1], acs_drugs[1:], col_widths=[3.5*cm,3.5*cm,5.5*cm,5.1*cm]))
story.append(PageBreak())
# ══════════════════ SECTION 7: NEURO ══════════════════
story += section_header("7. NEUROLOGICAL EMERGENCIES", S)
story.append(sub_header("Status Epilepticus Protocol", S))
se = [
["Phase", "Time", "Drug", "Dose"],
["Early SE", "0–5 min", "Lorazepam (preferred)", "0.1 mg/kg IV (max 4 mg); repeat x1"],
["Early SE (alt)", "0–5 min", "Midazolam IM (if no IV)", "10 mg IM (>40 kg); 5 mg (<40 kg)"],
["Established SE", "5–20 min", "Levetiracetam (1st choice)", "60 mg/kg IV (max 4500 mg) over 10 min"],
["Established SE", "5–20 min", "Valproate sodium", "40 mg/kg IV (max 3000 mg) over 10 min"],
["Established SE", "5–20 min", "Fosphenytoin", "20 mg PE/kg IV at 150 mg PE/min"],
["Refractory SE", "20–40 min", "Propofol infusion (intubate)", "1–2 mg/kg IV bolus → 1–10 mg/kg/hr"],
["Refractory SE", "20–40 min", "Midazolam infusion (intubate)", "0.2 mg/kg IV bolus → 0.1–2 mg/kg/hr"],
["Super-Refractory SE", ">24 hrs", "Ketamine infusion", "1.5 mg/kg bolus → 0.01–10 mg/kg/hr"],
["Super-Refractory SE", ">24 hrs", "Phenobarbital", "15–20 mg/kg IV (EEG-guided burst suppression)"],
]
story.append(make_table(se[0:1], se[1:], col_widths=[3.5*cm,2.5*cm,4.5*cm,7.1*cm]))
story.append(Spacer(1, 3*mm))
story.append(sub_header("Elevated ICP Management", S))
icp = [
["Intervention", "Drug / Action", "Dose / Detail"],
["Osmotherapy (1st)", "Mannitol 20%", "0.25–1 g/kg IV over 15–20 min; repeat q4–6h; serum Osm <320"],
["Osmotherapy (if hypotensive)", "Hypertonic Saline 3%", "150–250 mL IV over 20 min; Na target 145–155"],
["Sedation / analgesia", "Propofol + Fentanyl", "Propofol 50–200 mcg/kg/min + Fentanyl 25–100 mcg/hr"],
["Neuromuscular blockade", "Vecuronium OR Cisatracurium", "Vec 0.1 mg/kg IV PRN; Cisa 0.1 mg/kg/hr"],
["Temp control", "Acetaminophen + cooling", "37.0–37.5°C target; avoid fever"],
["Seizure prophylaxis", "Levetiracetam", "1g IV BD (TBI, SAH, ICH)"],
["Surgical", "Decompressive craniectomy", "For malignant MCA infarct or refractory ICP"],
]
story.append(make_table(icp[0:1], icp[1:], col_widths=[4.2*cm,4.5*cm,9*cm]))
story.append(callout("CPP = MAP − ICP. Target CPP 60–70 mmHg. Head at 30°, neutral position. Avoid hypoxia (SpO₂ >94%), hypotension (MAP >80), fever, hyponatremia.", S))
story.append(Spacer(1, 3*mm))
story.append(sub_header("Ischemic Stroke — IV tPA + Thrombectomy", S))
stroke = [
["Treatment", "Eligibility", "Dose / Detail"],
["IV Alteplase (tPA)", "Within 4.5 hrs of onset; BP ≤185/110", "0.9 mg/kg (max 90 mg); 10% bolus → 90% over 1 hr"],
["Tenecteplase (TNK)", "Alternative to alteplase; within 4.5 hrs", "0.25 mg/kg IV single bolus (max 25 mg)"],
["Mechanical Thrombectomy", "Large vessel occlusion (LVO); within 24 hrs (selected)", "mTICI ≥2b recanalization goal"],
["BP management (pre-tPA)", "Lower if >185/110 before tPA", "Labetalol 10 mg IV OR Nicardipine infusion"],
["Permissive hypertension (no tPA)", "Allow up to 220/120 unless organ damage", "Reduce by 15% only if needed"],
]
story.append(make_table(stroke[0:1], stroke[1:], col_widths=[4*cm,5.5*cm,8.1*cm]))
story.append(PageBreak())
# ══════════════════ SECTION 8: PE ══════════════════
story += section_header("8. PULMONARY EMBOLISM (PE)", S)
story.append(sub_header("Risk Stratification & Management", S))
pe = [
["Risk", "Definition", "Management"],
["Massive (High)", "SBP <90 or vasopressors or cardiac arrest", "Systemic thrombolysis (Alteplase 100 mg IV/2hrs) OR surgical embolectomy"],
["Submassive (Intermediate)", "Normal BP + RV dysfunction / raised troponin", "Anticoagulation (UFH); monitor; CDT if deteriorating"],
["Low Risk", "Normal BP, no RV dysfunction, low PESI", "DOAC (rivaroxaban or apixaban); consider early discharge"],
]
story.append(make_table(pe[0:1], pe[1:], col_widths=[3*cm,5.5*cm,9.1*cm]))
story.append(Spacer(1, 3*mm))
story.append(sub_header("Anticoagulation Options", S))
pe_drugs = [
["Drug", "Dose", "Route", "Notes"],
["UFH (Heparin)", "80 U/kg bolus → 18 U/kg/hr infusion", "IV", "Target aPTT 60–100; titrate per protocol"],
["Enoxaparin", "1 mg/kg q12h OR 1.5 mg/kg daily", "SC", "Avoid CrCl <30; preferred in cancer"],
["Rivaroxaban", "15 mg BD x3 wks → 20 mg daily", "PO", "DOAC; no monitoring needed; CI in pregnancy"],
["Apixaban", "10 mg BD x7 days → 5 mg BD", "PO", "DOAC; preferred in elderly / renal impairment"],
["Alteplase (systemic)", "100 mg IV over 2 hrs (massive PE)", "IV", "0.6 mg/kg if cardiac arrest; risk major bleed"],
["Fondaparinux", "5–10 mg SC daily (weight-based)", "SC", "HIT alternative; no antidote"],
]
story.append(make_table(pe_drugs[0:1], pe_drugs[1:], col_widths=[3*cm,5*cm,1.5*cm,8.1*cm]))
story.append(PageBreak())
# ══════════════════ SECTION 9: AKI ══════════════════
story += section_header("9. ACUTE KIDNEY INJURY (AKI) IN THE ICU", S)
story.append(sub_header("KDIGO Staging", S))
aki = [
["Stage", "Serum Creatinine", "Urine Output"],
["Stage 1", "1.5–1.9× baseline OR ↑ 0.3 mg/dL in 48h", "<0.5 mL/kg/hr for 6–12 hrs"],
["Stage 2", "2.0–2.9× baseline", "<0.5 mL/kg/hr for ≥12 hrs"],
["Stage 3", "≥3× baseline OR ≥4 mg/dL OR RRT", "<0.3 mL/kg/hr for ≥24 hrs OR anuria ≥12 hrs"],
]
story.append(make_table(aki[0:1], aki[1:], col_widths=[2.5*cm,7.5*cm,7.6*cm]))
story.append(Spacer(1, 3*mm))
story.append(sub_header("Indications for RRT (AEIOU Mnemonic)", S))
rrt = [
["Letter", "Indication", "Detail"],
["A", "Acidosis", "pH <7.1 refractory to medical management"],
["E", "Electrolytes", "K⁺ >6.5 mEq/L refractory OR severe hyponatremia"],
["I", "Intoxication", "Dialyzable toxins: methanol, lithium, salicylates, ethylene glycol"],
["O", "Overload", "Refractory pulmonary edema unresponsive to diuretics"],
["U", "Uremia", "BUN >100 or uremic encephalopathy, pericarditis, platelet dysfunction"],
]
story.append(make_table(rrt[0:1], rrt[1:], col_widths=[1.5*cm,3*cm,13.1*cm]))
story.append(callout("CRRT preferred in hemodynamically unstable ICU patients. IHD for stable patients or rapid electrolyte correction. SLED as middle ground.", S))
story.append(PageBreak())
# ══════════════════ SECTION 10: DIABETIC EMERGENCIES ══════════════════
story += section_header("10. DIABETIC EMERGENCIES", S)
story.append(sub_header("DKA Management Protocol", S))
dka = [
["Time", "Action", "Detail"],
["0 hr — Diagnosis", "Confirm DKA", "pH <7.3, HCO₃ <15, Glucose >250, Ketones ++ "],
["0–1 hr — Fluids", "0.9% NaCl 1L in 1st hour", "If hypovolemic / hemodynamically unstable"],
["1–4 hrs — Fluids", "0.45% NaCl or 0.9% NaCl at 250–500 mL/hr", "Add K⁺ to each bag (see below)"],
["Glucose <250", "Add 5% Dextrose to IV fluid", "Prevent hypoglycemia while running insulin"],
["Insulin", "Regular Insulin 0.1 U/kg IV bolus → 0.1 U/kg/hr infusion", "Target glucose drop 50–75 mg/dL/hr; HOLD if K <3.5"],
["K⁺ < 3.5", "HOLD insulin; KCl 40 mEq/hr IV", "Correct potassium FIRST before insulin"],
["K⁺ 3.5–5.5", "KCl 20–40 mEq/L to each IV bag", "Monitor q2h"],
["Bicarbonate", "NaHCO₃ 100 mEq IV over 2 hrs", "ONLY if pH <6.9"],
["Resolution", "pH >7.3, HCO₃ >18, Anion gap closed", "Overlap SC insulin 1–2 hrs before stopping IV"],
]
story.append(make_table(dka[0:1], dka[1:], col_widths=[3.5*cm,5.5*cm,8.6*cm]))
story.append(Spacer(1, 3*mm))
story.append(sub_header("HHS vs DKA — Quick Comparison", S))
hhs = [
["Feature", "DKA", "HHS"],
["Glucose", ">250 mg/dL (often <600)", ">600 mg/dL (up to 1200)"],
["Ketones", "Moderate to large (++/+++)", "Absent or trace"],
["pH", "<7.3", ">7.3 (no significant acidosis)"],
["Osmolality", "Normal to mildly elevated", ">320 mOsm/kg"],
["Fluid Deficit", "4–6 L", "8–10 L"],
["Key Treatment", "Insulin + Fluids + K⁺", "Aggressive fluid replacement (1st priority)"],
["DVT Risk", "Moderate", "HIGH — give prophylactic anticoagulation"],
]
story.append(make_table(hhs[0:1], hhs[1:], col_widths=[4*cm,5.5*cm,8.1*cm]))
story.append(PageBreak())
# ══════════════════ SECTION 11: ELECTROLYTES ══════════════════
story += section_header("11. ELECTROLYTE EMERGENCIES", S)
story.append(sub_header("Hyperkalemia — Step-by-Step Management", S))
hyk = [
["Step", "Drug / Action", "Dose", "Mechanism", "Onset"],
["1 — Stabilize", "Calcium Gluconate 10%", "10 mL IV over 3 min (repeat x1)", "Membrane stabilization", "1–3 min"],
["1 (alt)", "Calcium Chloride 10%", "10 mL IV over 3 min", "More Ca²⁺ per mL", "1–3 min"],
["2 — Shift", "Insulin Regular + D50W", "10 U insulin + 50 mL D50W IV", "Drives K⁺ into cells", "15–30 min"],
["2 — Shift", "Albuterol/Salbutamol", "10–20 mg nebulized (4× usual dose)", "β2 stimulation", "20–30 min"],
["2 — Shift", "NaHCO₃", "50–100 mEq IV (if acidotic)", "H⁺/K⁺ exchange", "30–60 min"],
["3 — Remove", "Furosemide", "40–80 mg IV (if urine output)", "Renal K⁺ excretion", "1–2 hrs"],
["3 — Remove", "Patiromer (Veltassa)", "8.4 g PO daily", "GI cation exchange", "Hours"],
["3 — Remove", "Sodium Zirconium Cyclosilicate", "10 g PO TDS x2 days", "GI K⁺ binder", "1–2 hrs"],
["Definitive", "Hemodialysis", "—", "Most effective removal", "Minutes (on machine)"],
]
story.append(make_table(hyk[0:1], hyk[1:], col_widths=[2.5*cm,4*cm,4.2*cm,3.5*cm,2.4*cm]))
story.append(Spacer(1, 3*mm))
story.append(sub_header("Hyponatremia — Symptomatic (Seizures, Coma)", S))
hna = [
["Severity", "Na⁺ Level", "Treatment", "Target Rate"],
["Severe (seizures/coma)", "<120 mEq/L", "3% NaCl 1–2 mL/kg/hr IV", "Raise Na⁺ by 1–2 mEq/L/hr until symptoms resolve"],
["Moderate (AMS)", "120–130 mEq/L", "3% NaCl 0.5–1 mL/kg/hr", "Raise Na⁺ by 6–8 mEq/L in 24 hrs"],
["Chronic/Mild", ">130 mEq/L", "Treat underlying cause", "Max correction ≤10 mEq/L/24 hrs"],
["SIADH", "Low Na, concentrated urine", "Fluid restriction 800–1000 mL/day ± Tolvaptan", "Monitor q2h during correction"],
]
story.append(make_table(hna[0:1], hna[1:], col_widths=[3.5*cm,3*cm,5.5*cm,5.6*cm]))
story.append(callout("DANGER: Overcorrection of hyponatremia (>10 mEq/L/24hrs) causes Osmotic Demyelination Syndrome (ODS) / Central Pontine Myelinolysis — irreversible neurological damage.", S))
story.append(Spacer(1, 3*mm))
story.append(sub_header("Other Key Electrolyte Emergencies", S))
elec = [
["Disorder", "Drug", "Dose", "Notes"],
["Hypocalcemia (tetany/arrest)", "Calcium Gluconate 10%", "10–20 mL IV slowly over 10 min", "ECG monitoring; repeat as needed"],
["Hypomagnesemia / Torsades", "Magnesium Sulfate", "2–4 g IV over 5–15 min", "Correct Mg before K⁺ in Torsades"],
["Hypophosphatemia (<1.0)", "Sodium/Potassium Phosphate", "0.08–0.16 mmol/kg IV over 6 hrs", "Severe: may cause resp failure, rhabdo"],
["Hypermagnesemia (toxicity)", "Calcium Gluconate 10%", "10 mL IV over 3 min", "Antagonizes Mg; stop Mg infusion"],
]
story.append(make_table(elec[0:1], elec[1:], col_widths=[4*cm,4*cm,4.5*cm,5.1*cm]))
story.append(PageBreak())
# ══════════════════ SECTION 12: DRUG REFERENCE ══════════════════
story += section_header("12. ICU DRUGS & INJECTIONS — COMPLETE REFERENCE", S)
story.append(sub_header("A. Vasopressors & Inotropes", S))
vasopressor_ref = [
["Drug", "Receptors", "IV Dose", "Indications", "Key Cautions"],
["Norepinephrine\n(Noradrenaline)", "α1>β1", "0.01–0.5 mcg/kg/min\n(up to 3 mcg/kg/min)", "Septic/distributive shock\n1st-line vasopressor", "Limb ischemia at high dose;\nneed central line"],
["Epinephrine\n(Adrenaline)", "α1,β1,β2", "0.01–0.5 mcg/kg/min\nAnaphylaxis: 0.5 mg IM", "Anaphylaxis, cardiac arrest,\nsecond vasopressor in sepsis", "Tachycardia, lactic acidosis,\nhyperglycemia"],
["Vasopressin", "V1/V2", "0.03–0.04 units/min\n(fixed dose)", "Septic shock adjunct;\nrefractory vasoplegia", "Mesenteric ischemia;\ncardiac ischemia at high dose"],
["Dopamine", "D1,β1,α1\n(dose-dependent)", "Low: 2–5 mcg/kg/min\nHigh: 5–20 mcg/kg/min", "Bradycardic shock only;\notherwise AVOID", "Tachyarrhythmias;\nhigher mortality in sepsis"],
["Dobutamine", "β1>β2", "2.5–20 mcg/kg/min", "Cardiogenic shock;\nlow CO states", "Tachycardia; vasodilation;\nPO₂ demand ↑"],
["Milrinone", "PDE3 inhibitor", "0.375–0.75 mcg/kg/min", "HF on beta-blockers;\nright heart failure", "Hypotension; arrhythmias;\naccumulates in AKI"],
["Phenylephrine", "α1 selective", "100–400 mcg/min infusion", "SVR ↑ without HR↑;\nspinal/neurogenic shock", "Pure vasoconstriction;\nreflex bradycardia"],
["Levosimendan", "Ca sensitizer + K-ATP", "0.1–0.2 mcg/kg/min x24h\n(no loading in ICU)", "Acute decompensated HF;\nbetter than dobutamine in HF", "Hypotension; prolonged effect\n(active metabolite days)"],
]
story.append(make_table(vasopressor_ref[0:1], vasopressor_ref[1:], col_widths=[2.5*cm,2.5*cm,3.5*cm,3.5*cm,5.6*cm]))
story.append(Spacer(1, 4*mm))
story.append(sub_header("B. Anticoagulants in ICU", S))
anticoag = [
["Drug", "Mechanism", "Dose", "Monitoring", "Reversal"],
["UFH (Heparin)", "AT-III potentiation", "DVT: 5000U SC q8-12h\nTherapeutic: 80U/kg bolus → 18U/kg/hr", "aPTT 60–100 sec", "Protamine sulfate 1mg per 100U heparin"],
["Enoxaparin (LMWH)", "Anti-Xa (mainly)", "Prophylactic: 40 mg SC daily\nTherapeutic: 1 mg/kg SC q12h", "Anti-Xa level (AKI)", "Protamine (partial ~60%)"],
["Fondaparinux", "Anti-Xa (selective)", "Prophylactic: 2.5 mg SC daily\nTherapeutic: 5–10 mg SC daily", "Anti-Xa level", "No direct reversal; Andexanet alfa (off-label)"],
["Argatroban", "Direct thrombin inhibitor", "2 mcg/kg/min infusion\n(reduce in liver failure)", "aPTT 1.5–3× baseline", "No specific reversal; short half-life"],
["Bivalirudin", "Direct thrombin inhibitor", "0.1 mg/kg/hr (CKD/HIT)", "aPTT or ACT", "No reversal; dialyzable"],
["Warfarin", "Vit K antagonist", "Individualized; target INR 2–3", "INR", "Vit K + 4-factor PCC (Beriplex) or FFP"],
["Andexanet Alfa", "Factor Xa reversal", "400–800 mg IV bolus + infusion", "Anti-Xa level", "Reverses rivaroxaban, apixaban, enoxaparin"],
["Idarucizumab", "Direct thrombin reversal", "5g IV (2 × 2.5g)", "Dabigatran level", "Specific reversal for dabigatran only"],
]
story.append(make_table(anticoag[0:1], anticoag[1:], col_widths=[3*cm,3*cm,4.5*cm,2.5*cm,4.6*cm]))
story.append(PageBreak())
story.append(sub_header("C. Diuretics in ICU", S))
diuretics = [
["Drug", "Class", "IV Dose", "Indication", "Key Notes"],
["Furosemide", "Loop diuretic", "20–200 mg IV bolus\nInfusion: 5–40 mg/hr", "Fluid overload, AHF, hyperkalemia, HHS", "Monitor K⁺/Mg²⁺; ototoxic at high doses"],
["Bumetanide", "Loop diuretic", "0.5–2 mg IV", "Alternative to furosemide", "10× more potent than furosemide"],
["Torsemide", "Loop diuretic", "10–100 mg IV/PO", "Diuretic resistance", "Better bioavailability in HF"],
["Mannitol 20%", "Osmotic diuretic", "0.25–1 g/kg IV over 20 min", "Raised ICP, cerebral edema", "Monitor serum osmolality <320 mOsm/kg"],
["Acetazolamide", "Carbonic anhydrase inh.", "250–500 mg IV BD", "Metabolic alkalosis on diuretics", "Also for altitude sickness"],
["Spironolactone", "K⁺-sparing (aldosterone ant)", "25–200 mg PO/via NG tube", "HF, ascites, hyperaldosteronism", "IV form limited availability; oral/NG"],
]
story.append(make_table(diuretics[0:1], diuretics[1:], col_widths=[3*cm,3*cm,4*cm,4*cm,3.6*cm]))
story.append(Spacer(1, 4*mm))
story.append(sub_header("D. Antihypertensive Agents (IV) for Hypertensive Emergency", S))
antihtn = [
["Drug", "Class", "Dose", "Onset", "Use For"],
["Labetalol", "α+β blocker", "20 mg IV q10min\nOR 0.5–2 mg/min infusion", "5 min", "Most hypertensive emergencies;\nAortic dissection (with SNP)"],
["Nicardipine", "CCB (IV)", "5–15 mg/hr infusion\n(titrate q5–15 min)", "5–10 min", "Hypertensive encephalopathy;\nPost-op hypertension"],
["Clevidipine", "Ultra-short CCB", "1–2 mg/hr → up to 32 mg/hr", "2–4 min", "Perioperative; precise control;\nLipid emulsion — use caution in dyslipidemia"],
["Esmolol", "Ultra-short β1 blocker", "500 mcg/kg bolus → 50–300 mcg/kg/min", "1–2 min", "Aortic dissection; periop tachycardia"],
["Sodium Nitroprusside", "Vasodilator (NO)", "0.3–10 mcg/kg/min", "Seconds", "Hypertensive crisis; use <10 min;\ncyanide toxicity risk"],
["Hydralazine", "Vasodilator", "10–20 mg IV q4–6h", "10–20 min", "Pre-eclampsia/eclampsia; pregnancy"],
["Phentolamine", "Alpha blocker", "2–5 mg IV bolus", "2 min", "Pheochromocytoma crisis; MAOI OD"],
["Nitroglycerin (GTN)", "Nitrate", "5–200 mcg/min infusion", "2–5 min", "ACS + hypertension; acute HF"],
]
story.append(make_table(antihtn[0:1], antihtn[1:], col_widths=[2.8*cm,3*cm,4*cm,1.5*cm,6.3*cm]))
story.append(PageBreak())
story.append(sub_header("E. Antibiotics — IV Reference for ICU", S))
abx2 = [
["Drug", "Class", "Dose", "Coverage", "Notes"],
["Piperacillin-Tazobactam", "Penicillin+BLI", "4.5g IV q6h (extended 4h)", "GN, GP, anaerobes, Pseudomonas", "NOT MRSA; adjust in AKI"],
["Meropenem", "Carbapenem", "1–2g IV q8h", "Broad: GN, GP, Pseudo, ESBL", "Reserve for ESBL/AmpC; adjust AKI"],
["Imipenem-Cilastatin", "Carbapenem", "500mg–1g IV q6h", "Very broad; anaerobes", "Seizure risk (lower than older imipenem)"],
["Vancomycin", "Glycopeptide", "25–30 mg/kg IV load → AUC-guided", "MRSA, enterococcus, coag-neg staph", "Monitor AUC/MIC ratio 400–600; nephrotoxic"],
["Linezolid", "Oxazolidinone", "600 mg IV q12h", "MRSA, VRE (alternative)", "No dose adj in renal failure; serotonin syndrome"],
["Daptomycin", "Lipopeptide", "6–10 mg/kg IV daily", "MRSA, VRE, bacteremia, endocarditis", "NOT for pneumonia (inactivated by surfactant)"],
["Ceftriaxone", "3rd gen cephalosporin", "2g IV q24h (meningitis: 4g)", "GN, strep, meningitis, CAP", "Biliary sludge; drug-drug interactions"],
["Cefepime", "4th gen cephalosporin", "2g IV q8h", "Pseudomonas + most GN", "Neurotoxicity in AKI — adjust dose"],
["Azithromycin", "Macrolide", "500 mg IV daily", "Atypicals, CAP adjunct", "QTc prolongation; check ECG"],
["Metronidazole", "Nitroimidazole", "500 mg IV q8h", "Anaerobes, C.difficile (PO)", "C.diff: oral/rectal preferred"],
["Fluconazole", "Azole antifungal", "400–800 mg IV daily", "Candida (non-krusei/glabrata)", "Check for azole resistance; drug interactions"],
["Micafungin", "Echinocandin", "100–150 mg IV daily", "Candida spp. (inc. azole-resistant)", "Preferred for invasive candidiasis in ICU"],
["Amphotericin B (liposomal)", "Polyene antifungal", "3–5 mg/kg IV daily", "Aspergillus, Mucor, resistant fungi", "Nephrotoxic; monitor K⁺, Mg²⁺; pre-hydrate"],
]
story.append(make_table(abx2[0:1], abx2[1:], col_widths=[3.5*cm,2.8*cm,3.5*cm,3.5*cm,4.3*cm]))
story.append(PageBreak())
story.append(sub_header("F. Reversal Agents & Antidotes in ICU", S))
antidotes = [
["Toxin / Drug", "Antidote", "Dose", "Notes"],
["Opioids", "Naloxone", "0.4–2 mg IV/IM/IN q2–3 min", "Infusion: 2/3 of effective bolus/hr for long-acting opioids"],
["Benzodiazepines", "Flumazenil", "0.2 mg IV q1 min (max 1 mg)", "Risk seizures in dependent; short duration"],
["Warfarin / OD bleed", "4-Factor PCC (Beriplex)", "25–50 IU/kg IV (based on INR)", "Fastest reversal; also give Vit K 10 mg IV"],
["Heparin", "Protamine Sulfate", "1 mg per 100 U heparin IV (max 50 mg)", "Risk anaphylaxis; give slowly"],
["Rivaroxaban/Apixaban", "Andexanet Alfa", "400–800 mg IV bolus + infusion", "Expensive; also use 4F-PCC 50 IU/kg as alternative"],
["Dabigatran", "Idarucizumab (Praxbind)", "5g IV (2 × 2.5g IV)", "Complete reversal within minutes"],
["TCA antidepressants", "Sodium Bicarbonate", "1–2 mEq/kg IV; maintain pH 7.45–7.55", "QRS >100ms or hypotension; also hypertonic saline"],
["Organophosphates", "Atropine + Pralidoxime", "Atropine: 2–4 mg IV q5–10 min (until dry); 2-PAM: 1–2g IV over 30 min", "Dry secretions = endpoint; 2-PAM within 24–36h"],
["Acetaminophen/Paracetamol", "N-Acetylcysteine (NAC)", "150 mg/kg IV over 1h → 50 mg/kg/4h → 100 mg/kg/16h", "Use Rumack-Matthew nomogram"],
["Cyanide", "Hydroxocobalamin (Cyanokit)", "5g IV over 15 min", "Preferred; turns urine red; also Sodium thiosulfate 12.5g IV"],
["CO Poisoning", "100% O₂ (NRB mask)", "Until COHb <5%", "Hyperbaric O₂ if: CoHb >25%, pregnant, neuro sx"],
["Beta-blocker OD", "High-dose Insulin (HDIE)", "1 U/kg IV bolus → 0.5–2 U/kg/hr + D50W", "Also Calcium, Glucagon 5 mg IV, Lipid emulsion"],
["CCB OD", "Calcium Chloride + HDIE", "CaCl 1g IV q15–20 min + insulin 1 U/kg/hr", "Lipid emulsion 20%: 1.5 mL/kg bolus for refractory"],
["Digoxin toxicity", "Digoxin-specific Fab (Digibind)", "Based on serum level or # of tablets", "10 vials if unknown; 1 vial neutralizes ~0.5 mg digoxin"],
["Methanol / Ethylene glycol", "Fomepizole (4-MP)", "15 mg/kg IV load → 10 mg/kg q12h", "ADH inhibitor; also hemodialysis for severe cases"],
["Magnesium toxicity", "Calcium Gluconate 10%", "10–20 mL IV over 3 min", "Antagonizes Mg effects; supportive care"],
["Isoniazid OD (seizures)", "Pyridoxine (Vit B6)", "Gram-for-gram (unknown: 5g IV)", "Treat refractory status epilepticus from INH"],
]
story.append(make_table(antidotes[0:1], antidotes[1:], col_widths=[3.5*cm,3.5*cm,4.5*cm,6.1*cm]))
story.append(PageBreak())
# ══════════════════ SECTION 13: TOXICOLOGY ══════════════════
story += section_header("13. TOXICOLOGY IN THE ICU", S)
story.append(sub_header("Toxidrome Recognition", S))
toxidrome = [
["Toxidrome", "Signs", "Pupils", "HR/BP", "Common Causes"],
["Sympathomimetic", "Agitation, diaphoresis, hyperthermia", "Dilated", "HR↑ BP↑", "Cocaine, amphetamines, decongestants"],
["Cholinergic (SLUDGE)", "Salivation, lacrimation, urination, diarrhea, GI cramps, emesis + bradycardia", "Constricted", "HR↓ BP↓", "Organophosphates, carbamates, nerve agents"],
["Anticholinergic", "'Dry as bone, red as beet, hot as hades, mad as hatter'", "Dilated", "HR↑ BP↑", "Antihistamines, atropine, TCAs, phenothiazines"],
["Opioid", "Miosis, respiratory depression, reduced GCS", "Pinpoint", "HR↓ BP↓", "Heroin, morphine, oxycodone, fentanyl"],
["Sedative-Hypnotic", "Sedation, slurred speech, ataxia, amnesia", "Normal", "Normal/↓", "BZD, barbiturates, GHB, alcohol"],
["Serotonin Syndrome", "Hyperthermia, clonus, tremor, diarrhea, agitation", "Dilated", "HR↑ BP↑", "SSRIs + MAOIs, tramadol, linezolid"],
]
story.append(make_table(toxidrome[0:1], toxidrome[1:], col_widths=[3*cm,5*cm,2*cm,2.2*cm,5.4*cm]))
story.append(Spacer(1, 3*mm))
story.append(sub_header("Serotonin Syndrome Treatment", S))
serotonin = [
["Severity", "Treatment"],
["Mild", "Discontinue serotonergic agents; supportive care; BZD for agitation"],
["Moderate", "Cyproheptadine 12 mg PO/NG → 2 mg q2h (max 32 mg/day) — 5-HT2A antagonist"],
["Severe (hyperthermia >41°C)", "Intubation + paralysis (vecuronium/rocuronium); active cooling; AVOID succinylcholine"],
]
story.append(make_table(serotonin[0:1], serotonin[1:], col_widths=[5*cm, 12.6*cm]))
story.append(PageBreak())
# ══════════════════ SECTION 14: ICU BUNDLES ══════════════════
story += section_header("14. ICU BUNDLES & PROTOCOLS", S)
story.append(sub_header("ABCDEF Bundle (ICU Liberation)", S))
abcdef = [
["Letter", "Component", "Key Actions"],
["A", "Assess & Manage Pain", "NRS (0–10) or CPOT; analgesia-first approach"],
["B", "Both SAT + SBT daily", "SAT: stop sedation daily. SBT: T-piece or PSV 5 cmH₂O x30min"],
["C", "Choice of Sedation", "RASS −1 to 0; prefer propofol/dexmedetomidine over BZD"],
["D", "Delirium Prevention", "CAM-ICU assessment BD; reorient; avoid BZD; early mobilize"],
["E", "Early Mobility", "PT/OT from day 1 if safe; passive→active ROM→walking"],
["F", "Family Engagement", "Involve family; ICU diaries; support mental health; open visiting"],
]
story.append(make_table(abcdef[0:1], abcdef[1:], col_widths=[1.5*cm,4*cm,12.1*cm]))
story.append(Spacer(1, 3*mm))
story.append(sub_header("VAP Prevention Bundle", S))
vap = [
["Intervention", "Target"],
["Head of bed elevation", "30–45° at all times (unless contraindicated)"],
["Oral chlorhexidine care", "0.12–0.2% chlorhexidine gluconate q12h"],
["Daily SBT", "Wean ventilation proactively each day"],
["Subglottic suctioning ETT", "Use ETT with subglottic suction port"],
["Hand hygiene", "Before and after any ventilator circuit contact"],
["Sedation minimization", "Daily SAT; RASS −1 to 0 target"],
]
story.append(make_table(vap[0:1], vap[1:], col_widths=[5*cm,12.6*cm]))
story.append(Spacer(1, 3*mm))
story.append(sub_header("ICU Targets Quick Reference", S))
targets = [
["Parameter", "Target", "Notes"],
["MAP", "≥65 mmHg", ">70–80 in elevated ICP, chronic hypertension"],
["SpO₂", "94–98%", "88–92% for COPD; avoid hyperoxia"],
["PaO₂", "55–80 mmHg", "Permissive hypoxia in ARDS"],
["PaCO₂", "35–45 mmHg", "Mild permissive hypercapnia acceptable in ARDS"],
["Temperature", "36–37.5°C", "Strict normothermia post-arrest; treat fever aggressively"],
["Blood Glucose", "140–180 mg/dL", "NICE-SUGAR: tight control (80–110) increases mortality"],
["Hb (sepsis)", "7–9 g/dL", "Transfuse if Hb <7 (or <8 in cardiac disease)"],
["Platelet threshold", ">50K (procedures)", ">100K for CNS/ocular procedures"],
["INR", "<1.5 before procedures", "FFP or PCC if urgent reversal needed"],
["Na⁺", "135–145 mEq/L", "Correct slowly — max 10 mEq/L/24h for hyponatremia"],
["K⁺", "3.5–5.0 mEq/L", "Correct hypokalemia before antiarrhythmic therapy"],
["pH", "7.35–7.45", "Permissive acidosis (pH >7.2) acceptable in ARDS"],
]
story.append(make_table(targets[0:1], targets[1:], col_widths=[4*cm,4*cm,9.6*cm]))
story.append(Spacer(1, 3*mm))
story.append(sub_header("DVT/VTE Prophylaxis in ICU", S))
dvt = [
["Method", "Drug/Device", "Dose", "Notes"],
["Pharmacologic (preferred)", "Enoxaparin", "40 mg SC daily (CrCl ≥30)\n30 mg SC BD (bariatric >120 kg)", "Start when safe; withhold 12h before procedure"],
["Pharmacologic (alt)", "UFH", "5000 U SC q8–12h", "Preferred in severe AKI (CrCl <30)"],
["Mechanical (CI to pharmacologic)", "Pneumatic Compression Devices (IPC)", "Bilateral legs continuously", "Use if bleeding risk; NOT a substitute if can use pharmacologic"],
["High-risk (PE hx, thrombophilia)", "LMWH therapeutic OR IVC filter (last resort)", "As per therapeutic dose", "IVC filter does not prevent DVT; long-term anticoagulation still needed"],
]
story.append(make_table(dvt[0:1], dvt[1:], col_widths=[3.5*cm,3.5*cm,4.5*cm,6.1*cm]))
story.append(Spacer(1, 3*mm))
story.append(sub_header("Stress Ulcer Prophylaxis", S))
story.append(bullet_item("Indications: Mechanical ventilation >48 hrs, coagulopathy, ≥2 ICU risk factors, high-dose steroids, burns >35% BSA, head injury (Cushing's ulcer)", S))
story.append(bullet_item("Preferred: Pantoprazole 40 mg IV daily OR Esomeprazole 40 mg IV daily", S))
story.append(bullet_item("Alternative: Famotidine 20 mg IV q12h (H2RA)", S))
story.append(bullet_item("CAUTION: PPI overuse → C.difficile infection, community-acquired pneumonia, hypomagnesemia", S))
story.append(Spacer(1, 3*mm))
story.append(sub_header("Nutrition in the ICU", S))
nutrition = [
["Parameter", "Recommendation"],
["Timing", "Early enteral nutrition within 24–48 hrs of ICU admission if hemodynamically stable"],
["Route", "Enteral preferred over parenteral (reduces infection, maintains gut barrier)"],
["Calories", "25–30 kcal/kg/day (avoid overfeeding — hyperglycemia, CO₂ retention)"],
["Protein", "1.2–2 g/kg/day (higher in burns, trauma, obese)"],
["Initiation of PN", "Only if EN contraindicated AND >5–7 days in ICU, or malnourished"],
["Prokinetics", "Metoclopramide 10 mg IV q6h OR Erythromycin 70–100 mg IV BD for gastroparesis/high GRV"],
]
story.append(make_table(nutrition[0:1], nutrition[1:], col_widths=[4.5*cm, 13.1*cm]))
# Final page
story.append(PageBreak())
story.append(Spacer(1, 2*cm))
footer_box = [["IMPORTANT DISCLAIMER"]]
fb = Table(footer_box, colWidths=[PAGE_W - 2*MARGIN])
fb.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), C_RED),
('TEXTCOLOR', (0,0), (-1,-1), C_WHITE),
('FONTNAME', (0,0), (-1,-1), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,-1), 12),
('ALIGN', (0,0), (-1,-1), 'CENTER'),
('TOPPADDING', (0,0), (-1,-1), 10),
('BOTTOMPADDING', (0,0), (-1,-1), 10),
]))
story.append(fb)
disc_text = """This document is a clinical reference guide compiled for qualified medical professionals (doctors, intensivists, emergency physicians, residents).
It is based on current guidelines including Surviving Sepsis Campaign 2026, AHA ACLS 2025, KDIGO 2024, and major clinical textbooks.
Drug doses must be verified against local formularies and adjusted for individual patient factors (renal function, hepatic function, weight, allergies, drug interactions).
Always consult current local antibiotic stewardship guidelines and institutional protocols.
This guide does not replace clinical judgment. All treatment decisions must be made by qualified clinicians based on individual patient assessment.
Compiled: July 2026 | Orris Medical AI"""
story.append(Spacer(1, 4*mm))
story.append(Paragraph(disc_text, ParagraphStyle('disc',
fontSize=9, fontName='Helvetica', textColor=C_DARKGRAY,
leading=14, alignment=TA_JUSTIFY, spaceBefore=4, spaceAfter=4,
leftIndent=10, rightIndent=10)))
return story
# ─── MAIN ─────────────────────────────────────────────────────────────────────
def main():
output_path = "/home/daytona/workspace/icu-notes/ICU_Emergency_Management_Notes.pdf"
doc = make_doc(output_path)
styles = make_styles()
story = build_content(styles)
doc.build(story, onFirstPage=page_num_canvas, onLaterPages=page_num_canvas)
print(f"PDF generated: {output_path}")
import os
size = os.path.getsize(output_path)
print(f"File size: {size:,} bytes ({size/1024:.1f} KB)")
if __name__ == "__main__":
main()
cd /home/daytona/workspace/icu-notes && python3 generate_icu_pdf.py 2>&1
~/icu-notes/generate_icu_pdf.py
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/icu-notes/generate_icu_pdf.py'
cd /home/daytona/workspace/icu-notes && python3 generate_icu_pdf.py 2>&1
cd /home/daytona/workspace/icu-notes && python3 -c " from generate_icu_pdf impor…
cd /home/daytona/workspace/icu-notes && python3 -c " from generate_icu_pdf impor…
cd /home/daytona/workspace/icu-notes && python3 -c " from generate_icu_pdf impor…
cd /home/daytona/workspace/icu-notes && python3 -c " from generate_icu_pdf impor…
cd /home/daytona/workspace/icu-notes && python3 -c " from generate_icu_pdf impor…
~/icu-notes/generate_icu_pdf.py
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/icu-notes/generate_icu_pdf.py'
cd /home/daytona/workspace/icu-notes && python3 generate_icu_pdf.py 2>&1
cd /home/daytona/workspace/icu-notes && python3 -c " from reportlab.platypus imp…
~/icu-notes/generate_icu_pdf.py
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/icu-notes/generate_icu_pdf.py'
cd /home/daytona/workspace/icu-notes && python3 generate_icu_pdf.py 2>&1
Give me this PDF
~/icu-notes/gen_icu.py
#!/usr/bin/env python3
"""ICU Emergency Medicine Management Notes - PDF Generator (Fixed)"""
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import ParagraphStyle
from reportlab.lib.units import cm, mm
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.lib.colors import HexColor
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
PageBreak, HRFlowable, KeepTogether
)
import datetime, os
PAGE_W, PAGE_H = A4
MARGIN = 1.8 * cm
CONTENT_W = PAGE_W - 2 * MARGIN
# Colors
C_NAVY = HexColor("#0D2137")
C_RED = HexColor("#C0392B")
C_ORANGE = HexColor("#E67E22")
C_GREEN = HexColor("#1A7A4A")
C_BLUE = HexColor("#1A5276")
C_LBLUE = HexColor("#D6EAF8")
C_TEAL = HexColor("#148F77")
C_YELLOW = HexColor("#FFF3CD")
C_LGRAY = HexColor("#F2F3F4")
C_WHITE = colors.white
C_DARK = HexColor("#2C3E50")
C_AMBER = HexColor("#7D6608")
# ── Paragraph styles ─────────────────────────────────────────────────────────
H = ParagraphStyle('H', fontSize=9, fontName='Helvetica-Bold', textColor=C_WHITE, leading=13, alignment=TA_CENTER)
B = ParagraphStyle('B', fontSize=8.5, fontName='Helvetica', textColor=C_DARK, leading=12)
BL= ParagraphStyle('BL', fontSize=9, fontName='Helvetica', textColor=C_DARK, leading=13, leftIndent=12)
SE= ParagraphStyle('SE', fontSize=13, fontName='Helvetica-Bold', textColor=C_WHITE, leading=18)
SS= ParagraphStyle('SS', fontSize=11, fontName='Helvetica-Bold', textColor=C_TEAL, leading=15)
CB= ParagraphStyle('CB', fontSize=9, fontName='Helvetica-Oblique',textColor=C_AMBER, leading=13, leftIndent=8)
DI= ParagraphStyle('DI', fontSize=9, fontName='Helvetica', textColor=C_DARK, leading=13, alignment=TA_JUSTIFY)
def p(text, style=B):
"""Wrap text in a Paragraph, converting \n to <br/>."""
return Paragraph(str(text).replace('\n','<br/>'), style)
def ph(text): return p(text, H)
def pb(text): return p(text, B)
def pbl(text): return p(f"► {text}", BL)
def sec(title):
row = [[p(f" {title}", SE)]]
t = Table(row, colWidths=[CONTENT_W])
t.setStyle(TableStyle([
('BACKGROUND',(0,0),(-1,-1),C_BLUE),
('TOPPADDING',(0,0),(-1,-1),6),('BOTTOMPADDING',(0,0),(-1,-1),6),
('LEFTPADDING',(0,0),(-1,-1),8),('RIGHTPADDING',(0,0),(-1,-1),8),
]))
return [Spacer(1,4*mm), t, HRFlowable(width="100%",thickness=2,color=C_BLUE,spaceAfter=4)]
def sub(title): return p(title, SS)
def callout(text):
row = [[p(f"⚠ {text}", CB)]]
t = Table(row, colWidths=[CONTENT_W])
t.setStyle(TableStyle([
('BACKGROUND',(0,0),(-1,-1),C_YELLOW),
('TOPPADDING',(0,0),(-1,-1),5),('BOTTOMPADDING',(0,0),(-1,-1),5),
('LEFTPADDING',(0,0),(-1,-1),8),('RIGHTPADDING',(0,0),(-1,-1),8),
('BOX',(0,0),(-1,-1),1,C_ORANGE),
]))
return t
def tbl(headers, rows, widths=None):
"""Build a table; all headers and body cells are Paragraphs."""
if widths is None:
widths = [CONTENT_W / len(headers)] * len(headers)
data = [[ph(h) for h in headers]]
for row in rows:
data.append([pb(c) for c in row])
t = Table(data, colWidths=widths, repeatRows=1)
t.setStyle(TableStyle([
('BACKGROUND',(0,0),(-1,0),C_NAVY),
('TOPPADDING',(0,0),(-1,-1),4),('BOTTOMPADDING',(0,0),(-1,-1),4),
('LEFTPADDING',(0,0),(-1,-1),5),('RIGHTPADDING',(0,0),(-1,-1),5),
('GRID',(0,0),(-1,-1),0.4,HexColor("#BDC3C7")),
('ROWBACKGROUNDS',(0,1),(-1,-1),[C_WHITE,C_LGRAY]),
('VALIGN',(0,0),(-1,-1),'MIDDLE'),
]))
return t
def header_footer(canvas, doc):
canvas.saveState()
canvas.setFillColor(C_NAVY)
canvas.rect(0, PAGE_H-1.4*cm, PAGE_W, 1.4*cm, fill=1, stroke=0)
canvas.setFillColor(C_WHITE)
canvas.setFont("Helvetica-Bold",9)
canvas.drawString(MARGIN, PAGE_H-0.95*cm, "ICU Emergency Medicine Management")
canvas.setFont("Helvetica",8)
canvas.drawRightString(PAGE_W-MARGIN, PAGE_H-0.95*cm, "For Medical Professionals")
canvas.setFillColor(HexColor("#95A5A6"))
canvas.setFont("Helvetica",8)
canvas.drawCentredString(PAGE_W/2, 1.0*cm,
f"Page {doc.page} | ICU Emergency Reference | {datetime.date.today().strftime('%B %Y')}")
canvas.restoreState()
# ═══════════════════════════════════════════════════════════════════════════════
def build():
S = []
# ── COVER ─────────────────────────────────────────────────────────────────
S.append(Spacer(1,3*cm))
for txt, style in [
("ICU EMERGENCY MEDICINE", ParagraphStyle('ct',fontSize=28,fontName='Helvetica-Bold',textColor=C_WHITE,alignment=TA_CENTER)),
("MANAGEMENT NOTES", ParagraphStyle('ct2',fontSize=26,fontName='Helvetica-Bold',textColor=HexColor("#AED6F1"),alignment=TA_CENTER)),
("Drugs · Injections · Protocols · Doses · Quick Reference", ParagraphStyle('cs',fontSize=13,fontName='Helvetica',textColor=HexColor("#D5D8DC"),alignment=TA_CENTER)),
("For Doctors & Critical Care Clinicians", ParagraphStyle('cs2',fontSize=11,fontName='Helvetica',textColor=HexColor("#D5D8DC"),alignment=TA_CENTER)),
(f"Compiled: {datetime.date.today().strftime('%B %Y')} | Surviving Sepsis 2026, ACLS 2025, KDIGO, AHA Guidelines",
ParagraphStyle('cs3',fontSize=9,fontName='Helvetica',textColor=HexColor("#AAB7B8"),alignment=TA_CENTER)),
]:
row = [[Paragraph(txt, style)]]
t = Table(row, colWidths=[CONTENT_W])
t.setStyle(TableStyle([
('BACKGROUND',(0,0),(-1,-1),C_NAVY),
('TOPPADDING',(0,0),(-1,-1),8),('BOTTOMPADDING',(0,0),(-1,-1),8),
('LEFTPADDING',(0,0),(-1,-1),12),('RIGHTPADDING',(0,0),(-1,-1),12),
]))
S.append(t)
S.append(Spacer(1,1.5*cm))
box_data = [[
Paragraph("14 Clinical\nDomains", ParagraphStyle('bx',fontSize=11,fontName='Helvetica-Bold',textColor=C_WHITE,alignment=TA_CENTER,leading=16)),
Paragraph("60+ Emergency\nDrugs & Doses", ParagraphStyle('bx2',fontSize=11,fontName='Helvetica-Bold',textColor=C_WHITE,alignment=TA_CENTER,leading=16)),
Paragraph("ICU Protocols\n& Bundles", ParagraphStyle('bx3',fontSize=11,fontName='Helvetica-Bold',textColor=C_WHITE,alignment=TA_CENTER,leading=16)),
Paragraph("Quick Reference\nTables", ParagraphStyle('bx4',fontSize=11,fontName='Helvetica-Bold',textColor=C_WHITE,alignment=TA_CENTER,leading=16)),
]]
bt = Table(box_data, colWidths=[CONTENT_W/4]*4)
bt.setStyle(TableStyle([
('BACKGROUND',(0,0),(0,0),C_RED),
('BACKGROUND',(1,0),(1,0),C_TEAL),
('BACKGROUND',(2,0),(2,0),C_ORANGE),
('BACKGROUND',(3,0),(3,0),C_BLUE),
('TOPPADDING',(0,0),(-1,-1),14),('BOTTOMPADDING',(0,0),(-1,-1),14),
('GRID',(0,0),(-1,-1),1,C_WHITE),
('VALIGN',(0,0),(-1,-1),'MIDDLE'),
]))
S.append(bt)
S.append(PageBreak())
# ── TABLE OF CONTENTS ────────────────────────────────────────────────────
S.append(p("TABLE OF CONTENTS", ParagraphStyle('tth',fontSize=16,fontName='Helvetica-Bold',textColor=C_NAVY,alignment=TA_CENTER,spaceAfter=8)))
S.append(HRFlowable(width="100%",thickness=2,color=C_BLUE,spaceAfter=8))
toc = [
("1","Sepsis & Septic Shock","Hour-1 bundle, vasopressors, antibiotics, corticosteroids"),
("2","Shock — All Types","Hypovolemic, cardiogenic, distributive, obstructive"),
("3","Acute Respiratory Failure & Mechanical Ventilation","RSI, ARDS, ventilator settings, sedation"),
("4","Cardiac Arrest (ACLS 2025)","CPR quality, drugs, H&Ts, post-arrest care"),
("5","Arrhythmias","AF, VT, SVT, torsades, bradycardia, cardioversion"),
("6","Acute Coronary Syndrome","STEMI, NSTEMI, antiplatelet, reperfusion"),
("7","Neurological Emergencies","Status epilepticus, raised ICP, ischemic stroke"),
("8","Pulmonary Embolism","Massive, submassive, thrombolysis, anticoagulation"),
("9","AKI & Renal Emergencies","KDIGO staging, RRT indications, CRRT vs IHD"),
("10","Diabetic Emergencies","DKA protocol, HHS, insulin management"),
("11","Electrolyte Emergencies","Hyperkalemia, hyponatremia, Mg, Ca, Phos"),
("12","ICU Drugs & Injections — Complete Reference","Vasopressors, inotropes, anticoagulants, antihypertensives, antibiotics"),
("13","Toxicology & Antidotes","Toxidromes, overdose, specific antidotes"),
("14","ICU Bundles & Protocols","ABCDEF, VAP, DVT prophylaxis, nutrition, glycemic control"),
]
tocstyle = ParagraphStyle('toc',fontSize=10,fontName='Helvetica',textColor=C_DARK,leading=17,leftIndent=10)
for num, title, desc in toc:
S.append(Paragraph(f"<font color='#1A5276'><b>{num}.</b></font> <b>{title}</b> <font color='#7F8C8D'>— {desc}</font>", tocstyle))
S.append(PageBreak())
# ══════════════ 1. SEPSIS ════════════════════════════════════════════════
S += sec("1. SEPSIS & SEPTIC SHOCK")
S.append(callout("Sepsis = life-threatening organ dysfunction (SOFA ≥2) from dysregulated infection response. Septic Shock = Sepsis + vasopressors + lactate >2 mmol/L"))
S.append(Spacer(1,3*mm))
S.append(sub("qSOFA Bedside Screen (≥2 of 3 = High Risk)"))
S.append(tbl(["Criterion","Threshold"],[
["Respiratory Rate","≥ 22 breaths/min"],
["Altered Mental Status","GCS < 15"],
["Systolic Blood Pressure","≤ 100 mmHg"],
],[9*cm,8.6*cm]))
S.append(Spacer(1,3*mm))
S.append(sub("Hour-1 Bundle — Start Immediately"))
S.append(tbl(["Action","Detail","Priority"],[
["Measure Lactate","Remeasure if initial >2 mmol/L","STAT"],
["Blood Cultures x2","Before starting antibiotics","STAT"],
["Broad-Spectrum Antibiotics","Within 1 HOUR of recognition","CRITICAL"],
["IV Crystalloid Bolus","30 mL/kg if hypotension or lactate ≥4","STAT"],
["Vasopressors if needed","If MAP <65 despite fluid bolus","STAT"],
],[6*cm,8*cm,3.6*cm]))
S.append(Spacer(1,3*mm))
S.append(sub("Vasopressor Ladder (MAP Target ≥65 mmHg)"))
S.append(tbl(["Step","Drug","IV Dose","Notes"],[
["1st LINE","Norepinephrine (Levophed)","0.01–0.5 mcg/kg/min","Preferred; alpha+beta1"],
["2nd ADD-ON","Vasopressin","0.03–0.04 units/min (fixed)","Add when NE ≥0.25–0.5 mcg/kg/min"],
["3rd ADD-ON","Epinephrine (Adrenaline)","0.01–0.5 mcg/kg/min","Add if NE+vasopressin insufficient"],
["Low CO","Dobutamine","2.5–20 mcg/kg/min","Inotrope for low cardiac output"],
["AVOID","Dopamine","—","Higher mortality; tachyarrhythmias"],
],[2.5*cm,4.8*cm,5.2*cm,5.1*cm]))
S.append(Spacer(1,3*mm))
S.append(sub("Fluids in Sepsis"))
for t in ["Balanced crystalloids: Lactated Ringer's / PlasmaLyte (preferred over 0.9% NaCl alone)",
"Add albumin 4–5% when large volumes of crystalloid are needed",
"AVOID Hetastarch (HES) — increases AKI and mortality",
"Guide with dynamic measures: Pulse Pressure Variation (PPV >13% = fluid responsive), Passive Leg Raise test"]:
S.append(pbl(t))
S.append(Spacer(1,3*mm))
S.append(sub("Empiric Antibiotics in Sepsis"))
S.append(tbl(["Suspected Source","Empiric Choice","Dose / Notes"],[
["Unknown Source (ICU)","Piperacillin-Tazobactam","4.5g IV q6h (extended 4h infusion)"],
["Unknown + MRSA risk","Vancomycin + Pip-Taz","Vancomycin 25–30 mg/kg IV load; AUC-guided"],
["Abdominal","Meropenem OR Pip-Taz","Meropenem 1g IV q8h"],
["Pneumonia (CAP)","Ceftriaxone + Azithromycin","Ceftriaxone 2g IV daily + Azithromycin 500mg"],
["Pneumonia (HAP/VAP)","Piperacillin-Taz + Vancomycin","Cover MRSA + Pseudomonas"],
["Meningitis","Ceftriaxone + Vancomycin ± Ampicillin","+ Dexamethasone 0.15 mg/kg IV q6h x4 days"],
["Fungal (Candida risk)","Micafungin OR Caspofungin","Micafungin 100mg IV daily"],
],[4.5*cm,5.5*cm,7.6*cm]))
S.append(Spacer(1,3*mm))
S.append(sub("Corticosteroids"))
for t in ["Hydrocortisone 200 mg/day IV (50 mg q6h OR continuous infusion) if shock persists despite fluids + vasopressors",
"Do NOT use if shock resolves with fluids alone",
"Target lactate clearance ≥10% per 2 hrs as resuscitation endpoint"]:
S.append(pbl(t))
S.append(PageBreak())
# ══════════════ 2. SHOCK ════════════════════════════════════════════════
S += sec("2. SHOCK — ALL TYPES")
S.append(sub("Classification"))
S.append(tbl(["Type","Mechanism","CVP","CO","SVR","Example"],[
["Hypovolemic","Volume loss","↓","↓","↑","Hemorrhage, GI bleed, burns"],
["Distributive","Vasodilation","↓/N","↑","↓↓","Sepsis, anaphylaxis, neurogenic"],
["Cardiogenic","Pump failure","↑","↓↓","↑","STEMI, severe HF, myocarditis"],
["Obstructive","Outflow block","↑","↓","↑","PE, tamponade, tension PTX"],
],[3*cm,4*cm,1.5*cm,1.5*cm,1.5*cm,6.1*cm]))
S.append(Spacer(1,3*mm))
S.append(sub("Hemorrhagic Shock Classes"))
S.append(tbl(["Class","Blood Loss","HR","SBP","GCS","Management"],[
["I","<750 mL (<15%)","Normal","Normal","Normal","Crystalloid; no transfusion needed"],
["II","750–1500 mL","100–120","Normal","Anxious","Crystalloid + consider pRBC"],
["III","1500–2000 mL","120–140","↓","Confused","pRBC + FFP; activate MTP"],
["IV",">2000 mL (>40%)",">140","↓↓","Lethargic","MTP 1:1:1; Tranexamic acid; surgery"],
],[1.5*cm,3.5*cm,1.8*cm,1.8*cm,2*cm,7*cm]))
S.append(callout("Tranexamic Acid (TXA): 1g IV over 10 min within 3 hrs of trauma → 1g over 8 hrs. MTP Ratio: pRBC:FFP:Platelets = 1:1:1. Target fibrinogen >1.5 g/L."))
S.append(Spacer(1,3*mm))
S.append(sub("Anaphylactic Shock — Step-by-Step"))
S.append(tbl(["Step","Drug / Action","Dose","Route"],[
["1 — FIRST","Epinephrine (Adrenaline)","0.5 mg","IM anterolateral thigh — IMMEDIATELY"],
["2","Remove trigger; lay flat, legs elevated","—","—"],
["3","Normal Saline fluid bolus","1–2 L rapidly","IV"],
["4","Diphenhydramine (H1 blocker)","25–50 mg","IV/IM"],
["5","Ranitidine / Famotidine (H2 blocker)","50 mg / 20 mg","IV"],
["6","Methylprednisolone (prevents biphasic)","125 mg","IV"],
["7 (if on BB)","Glucagon","1–5 mg over 5 min","IV — bypasses beta-blockade"],
["8 (bronchospasm)","Salbutamol / Albuterol","2.5–5 mg","Nebulized"],
],[2*cm,4.5*cm,3.5*cm,7.6*cm]))
S.append(Spacer(1,3*mm))
S.append(sub("Cardiogenic Shock — Key Drugs"))
S.append(tbl(["Drug","Class","IV Dose","Notes"],[
["Dobutamine","Inotrope (β1)","2.5–20 mcg/kg/min","First-line inotrope"],
["Milrinone","PDE3 inhibitor","0.375–0.75 mcg/kg/min","Use if on beta-blockers; accumulates in AKI"],
["Norepinephrine","Vasopressor","0.01–0.5 mcg/kg/min","For refractory hypotension"],
["Furosemide","Loop diuretic","40–200 mg IV bolus or 5–40 mg/hr infusion","For pulmonary edema / fluid overload"],
["Levosimendan","Ca sensitizer","0.1–0.2 mcg/kg/min x24h","Alternative inotrope; prolonged effect"],
],[3.5*cm,3.5*cm,5*cm,5.6*cm]))
S.append(PageBreak())
# ══════════════ 3. RESP FAILURE ═════════════════════════════════════════
S += sec("3. ACUTE RESPIRATORY FAILURE & MECHANICAL VENTILATION")
S.append(sub("RSI — Rapid Sequence Intubation"))
S.append(tbl(["Step","Drug / Action","Dose","Key Notes"],[
["Pre-oxygenate","100% FiO2 via NRB / HFNC / BVM","3–5 min","HOB 20°; use NODESAT if time allows"],
["Pre-treatment","Lidocaine (if raised ICP)","1.5 mg/kg IV","3 min before induction"],
["Induction","Ketamine (hemodynamically unstable)","1.5–2 mg/kg IV","Preferred in hypotensive patients; bronchodilator"],
["Induction (alt)","Etomidate (stable CV)","0.3 mg/kg IV","Minimal cardiac depression; caution in adrenal insufficiency"],
["Induction (alt)","Propofol (elective)","1–2 mg/kg IV","Avoid if hypotensive; reduces ICP"],
["Paralysis 1st","Succinylcholine","1.5 mg/kg IV","Fastest onset; CI: hyperK, burns >48h, SCI, malignant hyperthermia"],
["Paralysis 2nd","Rocuronium (if succinyl CI)","1.2 mg/kg IV","Reversed by Sugammadex 16 mg/kg"],
["Confirm","EtCO2 + CXR","—","Gold standard; 6 waveforms = confirmed"],
],[2.8*cm,4.5*cm,3*cm,7.3*cm]))
S.append(Spacer(1,3*mm))
S.append(sub("Lung Protective Ventilation (ARDS Berlin Protocol)"))
S.append(tbl(["Parameter","Target","Rationale"],[
["Tidal Volume (Vt)","6 mL/kg IBW (ideal body weight — NOT actual weight)","Prevent volutrauma"],
["Plateau Pressure (Pplat)","≤ 30 cmH₂O","Prevent barotrauma"],
["Driving Pressure","≤ 15 cmH₂O (Pplat minus PEEP)","Best independent mortality predictor"],
["PEEP","Titrate to FiO₂ using PEEP-FiO2 table (higher for severe ARDS)","Prevent atelectrauma / alveolar collapse"],
["FiO₂","Target SpO₂ 88–95%; avoid hyperoxia","Oxygen toxicity above SpO2 98%"],
["Respiratory Rate","14–20 breaths/min","Adjust for pH and PaCO₂"],
["I:E Ratio","1:2 (standard)","Prolonged for auto-PEEP/obstructive states"],
],[4.5*cm,6.2*cm,7*cm]))
S.append(Spacer(1,3*mm))
S.append(sub("ARDS Severity & Rescue Therapies"))
S.append(tbl(["ARDS Severity","P/F Ratio","Rescue Therapy"],[
["Mild","200–300 mmHg","Optimize PEEP; positioning"],
["Moderate","100–200 mmHg","Prone positioning ≥16 hrs/day (PROSEVA trial — reduces mortality)"],
["Severe","< 100 mmHg","Prone + Cisatracurium NMB (37.5 mg/hr) + consider VV-ECMO"],
],[4*cm,3.5*cm,10.1*cm]))
S.append(Spacer(1,3*mm))
S.append(sub("Sedation & Analgesia in Mechanically Ventilated Patients"))
S.append(tbl(["Drug","Class","IV Dose","Key Notes"],[
["Propofol","Sedative/hypnotic","5–50 mcg/kg/min infusion","Short-acting; check TG if >48h; Propofol Infusion Syndrome risk >4 mg/kg/hr"],
["Dexmedetomidine","Alpha-2 agonist","0.2–1.5 mcg/kg/hr infusion","Less delirium; preserves spontaneous breathing; cooperative sedation"],
["Midazolam","Benzodiazepine","1–5 mg/hr infusion","Avoid prolonged use; accumulates; increases delirium"],
["Fentanyl","Opioid (analgesia first)","25–200 mcg/hr infusion","Preferred opioid in ICU; renal-safe"],
["Morphine","Opioid","1–10 mg/hr infusion","Avoid in AKI (active metabolite accumulation)"],
["Ketamine","NMDA antagonist","0.1–0.5 mg/kg/hr infusion","Opioid-sparing; bronchodilator; maintains BP"],
["Hydromorphone","Opioid","0.2–1 mg/hr infusion","More potent than morphine; use in opioid tolerance"],
],[3*cm,3.2*cm,4.5*cm,7*cm]))
S.append(callout("RASS Target: -1 to 0 (light sedation preferred). Analgesia-FIRST approach. Daily CAM-ICU for delirium screening."))
S.append(PageBreak())
# ══════════════ 4. CARDIAC ARREST ═══════════════════════════════════════
S += sec("4. CARDIAC ARREST — ACLS 2025")
S.append(sub("CPR Quality Standards"))
for t in ["Compression rate: 100–120 per min",
"Depth: 5–6 cm; allow FULL chest recoil between compressions",
"Minimize interruptions: pause <10 seconds for rhythm check only",
"Ratio: 30:2 until advanced airway placed; then continuous compressions + 10 breaths/min",
"Avoid hyperventilation — worsens venous return and cardiac output"]:
S.append(pbl(t))
S.append(Spacer(1,3*mm))
S.append(sub("Drugs in Cardiac Arrest"))
S.append(tbl(["Drug","Indication","Dose","Timing"],[
["Epinephrine 1 mg IV","VF/pVT and PEA/Asystole","1 mg IV/IO q3–5 min","VF: after 2nd shock; PEA: immediately"],
["Amiodarone","Refractory VF/pulseless VT","300 mg IV bolus; then 150 mg x1","After 3rd shock"],
["Lidocaine (if no amiodarone)","Refractory VF/pVT","1–1.5 mg/kg IV; repeat 0.5–0.75 mg/kg","Alternative to amiodarone"],
["Sodium Bicarbonate","Hyperkalemia / TCA OD / acidosis","1–2 mEq/kg IV bolus","Specific reversible causes only"],
["Calcium Chloride 10%","Hyperkalemia / CCB overdose","10 mL IV (1g)","Membrane stabilization"],
["Magnesium Sulfate","Torsades de Pointes","2g IV over 5 min","Hypomagnesemia-associated VF"],
],[4*cm,4*cm,4.5*cm,5.1*cm]))
S.append(Spacer(1,3*mm))
S.append(sub("Reversible Causes — H's and T's"))
S.append(tbl(["H's","Treatment","T's","Treatment"],[
["Hypovolemia","Fluid bolus / blood products","Tension Pneumothorax","Needle decompression 2nd ICS MCL → chest tube"],
["Hypoxia","100% O₂; intubation","Tamponade","Pericardiocentesis (subxiphoid)"],
["Hydrogen ion (Acidosis)","NaHCO₃; treat cause","Toxins (Overdose)","Specific antidotes (see Section 13)"],
["Hypo/Hyperkalemia","Correct electrolytes (see Section 11)","Thrombosis (PE)","tPA 0.6 mg/kg IV; continue CPR 60–90 min"],
["Hypothermia","Warm IV fluids; external warming","Thrombosis (MI)","Emergency PCI; thrombolysis"],
],[3.5*cm,5*cm,3.5*cm,5.6*cm]))
S.append(Spacer(1,3*mm))
S.append(sub("Post-Cardiac Arrest Care (ROSC)"))
S.append(tbl(["Parameter","Target / Action"],[
["Targeted Temperature Management (TTM)","32–36°C for 24 hrs in comatose patients; PREVENT fever >37.5°C"],
["SpO₂","94–98% — avoid both hypoxia AND hyperoxia (do not target 100%)"],
["PaCO₂","35–45 mmHg (normocapnia)"],
["Blood Glucose","140–180 mg/dL; use insulin if needed"],
["MAP","≥65 mmHg; consider 80–100 mmHg if previously hypertensive"],
["12-lead ECG","Perform immediately after ROSC; emergent PCI if STEMI"],
["Neuroprognostication","Wait ≥72 hrs after rewarming before declaring prognosis (multimodal assessment)"],
],[5*cm,12.6*cm]))
S.append(PageBreak())
# ══════════════ 5. ARRHYTHMIAS ══════════════════════════════════════════
S += sec("5. ARRHYTHMIAS IN THE ICU")
S.append(callout("Unstable Arrhythmia = Hypotension / Chest pain / Altered consciousness / Acute HF → IMMEDIATE Synchronized Cardioversion"))
S.append(Spacer(1,3*mm))
S.append(sub("Drug Management of Arrhythmias"))
S.append(tbl(["Arrhythmia","First Drug","Dose","Second Option"],[
["SVT (narrow, stable)","Adenosine","6 mg IV rapid push; repeat 12 mg x2","Diltiazem 0.25 mg/kg IV or Metoprolol 5 mg IV"],
["AF — Rate Control","Metoprolol or Diltiazem","Metoprolol 5 mg IV q5min x3; Diltiazem 20 mg IV","Digoxin 0.5 mg IV (for HF with AF)"],
["AF — Rhythm Control","Amiodarone","150 mg IV over 10 min → 1 mg/min x6h","Electrical cardioversion 120–200J sync"],
["AF with WPW/pre-excitation","Procainamide","15–18 mg/kg IV over 60 min","AVOID adenosine, digoxin, CCBs"],
["VT (stable, monomorphic)","Amiodarone","150 mg IV over 10 min","Lidocaine 1 mg/kg IV bolus"],
["Torsades de Pointes","Magnesium Sulfate","2g IV over 5 min (repeat once)","Correct K+; overdrive pacing"],
["Bradycardia (symptomatic)","Atropine","0.5 mg IV q3–5 min; max 3 mg total","Transcutaneous pacing; dopamine/epi infusion"],
["Complete Heart Block","Transcutaneous pacing","80–100 bpm","Transvenous pacing for definitive management"],
],[3.5*cm,3.5*cm,5.5*cm,5.1*cm]))
S.append(Spacer(1,3*mm))
S.append(sub("Cardioversion Energy Guide"))
S.append(tbl(["Arrhythmia","Type","Energy (Biphasic)"],[
["Ventricular Fibrillation (VF)","UNSYNCHRONIZED (defibrillation)","200 J — repeat if needed"],
["Pulseless VT","UNSYNCHRONIZED","200 J"],
["Stable VT (monomorphic)","Synchronized","100–200 J"],
["Atrial Fibrillation","Synchronized","120–200 J"],
["Atrial Flutter / SVT","Synchronized","50–100 J"],
],[5.5*cm,5.5*cm,6.6*cm]))
S.append(PageBreak())
# ══════════════ 6. ACS ══════════════════════════════════════════════════
S += sec("6. ACUTE CORONARY SYNDROME (ACS)")
S.append(callout("STEMI: Primary PCI — Door-to-Balloon < 90 min. Thrombolysis — Door-to-Needle < 30 min (if PCI not available within 120 min)"))
S.append(Spacer(1,3*mm))
S.append(sub("ACS Drug Therapy"))
S.append(tbl(["Drug","Class","Dose","Timing"],[
["Aspirin","Antiplatelet","300 mg PO load → 75–100 mg daily","Immediately — always"],
["Ticagrelor (preferred P2Y12)","P2Y12 inhibitor","180 mg PO load → 90 mg BD","With aspirin (DAPT)"],
["Prasugrel","P2Y12 inhibitor","60 mg PO load → 10 mg daily","Post-PCI; avoid if prior stroke/TIA"],
["Clopidogrel","P2Y12 inhibitor","300–600 mg PO load → 75 mg daily","If ticagrelor/prasugrel contraindicated"],
["UFH (Heparin)","Anticoagulant","60–70 U/kg IV bolus (max 5000U) → infusion","During PCI / thrombolysis"],
["Enoxaparin","LMWH","1 mg/kg SC q12h OR 0.5 mg/kg IV","NSTEMI management"],
["Alteplase (tPA)","Thrombolytic","15 mg bolus → 0.75 mg/kg x30min → 0.5 mg/kg x60min (max 100 mg)","STEMI if no PCI within 120 min"],
["Metoprolol","Beta-blocker","5 mg IV q5min x3; then oral","Within 24h if stable (avoid in shock/HF)"],
["Atorvastatin","High-intensity statin","80 mg PO stat","Start immediately regardless of baseline LDL"],
["Nitroglycerin (GTN)","Nitrate vasodilator","0.4 mg SL q5min x3; then 5–200 mcg/min IV infusion","Ongoing chest pain; CI: SBP <90, RV infarct"],
["Morphine","Opioid analgesic","2–4 mg IV q5–15 min","Refractory chest pain (use cautiously — may delay P2Y12 absorption)"],
],[3.5*cm,3.5*cm,5.5*cm,5.1*cm]))
S.append(PageBreak())
# ══════════════ 7. NEURO ════════════════════════════════════════════════
S += sec("7. NEUROLOGICAL EMERGENCIES")
S.append(sub("Status Epilepticus Protocol"))
S.append(tbl(["Phase","Time","Drug","Dose"],[
["Early SE","0–5 min","Lorazepam (preferred IV)","0.1 mg/kg IV (max 4 mg); repeat once after 5 min"],
["Early SE (no IV)","0–5 min","Midazolam IM","10 mg IM (>40 kg); 5 mg IM (<40 kg)"],
["Established SE","5–20 min","Levetiracetam (1st choice)","60 mg/kg IV (max 4500 mg) over 10 min"],
["Established SE","5–20 min","Valproate sodium","40 mg/kg IV (max 3000 mg) over 10 min"],
["Established SE","5–20 min","Fosphenytoin","20 mg PE/kg IV at 150 mg PE/min"],
["Refractory SE","20–40 min","Propofol (intubate first)","1–2 mg/kg IV bolus → 1–10 mg/kg/hr infusion"],
["Refractory SE","20–40 min","Midazolam infusion (intubate)","0.2 mg/kg IV bolus → 0.1–2 mg/kg/hr"],
["Super-Refractory SE",">24 hrs","Ketamine infusion","1.5 mg/kg bolus → 0.01–10 mg/kg/hr"],
["Super-Refractory SE",">24 hrs","Phenobarbital","15–20 mg/kg IV; EEG-guided burst suppression"],
],[3.5*cm,2.5*cm,4.5*cm,7.1*cm]))
S.append(Spacer(1,3*mm))
S.append(sub("Elevated ICP Management"))
S.append(tbl(["Intervention","Drug / Action","Dose / Detail"],[
["Osmotherapy (1st)","Mannitol 20%","0.25–1 g/kg IV over 15–20 min; repeat q4–6h; keep serum Osm <320"],
["Osmotherapy (if hypotensive)","Hypertonic Saline 3%","150–250 mL IV over 20 min; Na target 145–155 mEq/L"],
["Sedation + analgesia","Propofol + Fentanyl","Propofol 50–200 mcg/kg/min + Fentanyl 25–100 mcg/hr"],
["NMB (if refractory)","Vecuronium or Cisatracurium","Vec 0.1 mg/kg IV PRN; Cisa 0.1 mg/kg/hr infusion"],
["Fever control","Acetaminophen + cooling","Target 37.0–37.5°C; fever worsens outcome"],
["Seizure prophylaxis","Levetiracetam","1g IV BD (TBI, SAH, ICH for 7 days)"],
["Surgical","Decompressive craniectomy","For malignant MCA infarct, refractory ICP >30 cmH2O"],
],[4*cm,4.5*cm,9.1*cm]))
S.append(callout("CPP = MAP minus ICP. Target CPP 60–70 mmHg. Head at 30°, neutral position. Avoid: hypoxia (SpO2 <94%), hypotension, fever, hyponatremia, hypercapnia."))
S.append(Spacer(1,3*mm))
S.append(sub("Ischemic Stroke — IV Thrombolysis + Thrombectomy"))
S.append(tbl(["Treatment","Eligibility / Window","Dose / Detail"],[
["IV Alteplase (tPA)","Within 4.5 hrs of onset; BP must be ≤185/110","0.9 mg/kg (max 90 mg); 10% as IV bolus → 90% over 1 hour"],
["Tenecteplase (TNK)","Alternative to alteplase; within 4.5 hrs","0.25 mg/kg IV single bolus (max 25 mg)"],
["Mechanical Thrombectomy","Large vessel occlusion (LVO); within 24 hrs (selected)","Goal mTICI ≥2b recanalization; transfer to stroke centre"],
["BP before tPA","Lower if >185/110 before giving tPA","Labetalol 10 mg IV OR Nicardipine 5 mg/hr infusion"],
["BP without tPA","Permissive hypertension up to 220/120","Only reduce by 15% if hypertensive emergency signs"],
],[3.8*cm,5.2*cm,8.6*cm]))
S.append(PageBreak())
# ══════════════ 8. PE ═══════════════════════════════════════════════════
S += sec("8. PULMONARY EMBOLISM (PE)")
S.append(sub("Risk Stratification & Management"))
S.append(tbl(["Risk Category","Definition","Management"],[
["Massive (High-risk)","SBP <90 or vasopressors needed or cardiac arrest","Systemic thrombolysis: Alteplase 100 mg IV over 2 hrs OR surgical embolectomy OR CDT"],
["Submassive (Intermediate)","Normal BP + RV dysfunction / raised troponin or BNP","UFH anticoagulation; monitor closely; CDT if deteriorating"],
["Low Risk","Normal BP; no RV dysfunction; low PESI score","DOAC (rivaroxaban or apixaban); early discharge if suitable"],
],[3*cm,5.5*cm,9.1*cm]))
S.append(Spacer(1,3*mm))
S.append(sub("Anticoagulation in PE"))
S.append(tbl(["Drug","Dose","Route","Notes"],[
["UFH (Heparin)","80 U/kg bolus → 18 U/kg/hr infusion","IV","Target aPTT 60–100; titrate per protocol; reversible with protamine"],
["Enoxaparin","1 mg/kg q12h OR 1.5 mg/kg daily","SC","Avoid CrCl <30; preferred in cancer-associated PE"],
["Rivaroxaban","15 mg BD x3 wks → 20 mg daily","PO","DOAC; no monitoring; avoid in pregnancy, severe renal impairment"],
["Apixaban","10 mg BD x7 days → 5 mg BD","PO","DOAC; preferred in elderly and renal impairment"],
["Alteplase (systemic)","100 mg IV over 2 hrs (massive PE)","IV","0.6 mg/kg if cardiac arrest; significant major bleed risk"],
["Fondaparinux","5–10 mg SC daily (weight-based)","SC","HIT alternative; no direct antidote"],
],[3*cm,5*cm,1.5*cm,8.1*cm]))
S.append(PageBreak())
# ══════════════ 9. AKI ══════════════════════════════════════════════════
S += sec("9. ACUTE KIDNEY INJURY (AKI) IN THE ICU")
S.append(sub("KDIGO Staging"))
S.append(tbl(["Stage","Serum Creatinine","Urine Output"],[
["Stage 1","1.5–1.9× baseline OR ↑0.3 mg/dL within 48h","<0.5 mL/kg/hr for 6–12 hrs"],
["Stage 2","2.0–2.9× baseline","<0.5 mL/kg/hr for ≥12 hrs"],
["Stage 3","≥3× baseline OR ≥4 mg/dL OR any RRT","<0.3 mL/kg/hr for ≥24 hrs OR anuria ≥12 hrs"],
],[2.5*cm,7*cm,8.1*cm]))
S.append(Spacer(1,3*mm))
S.append(sub("Indications for Renal Replacement Therapy — AEIOU"))
S.append(tbl(["Letter","Indication","Detail"],[
["A","Acidosis","pH <7.1 refractory to bicarbonate and medical management"],
["E","Electrolytes","K+ >6.5 mEq/L refractory to medical treatment"],
["I","Intoxication","Dialyzable toxins: methanol, lithium, salicylates, ethylene glycol"],
["O","Overload","Refractory pulmonary edema not responding to diuretics"],
["U","Uremia","BUN >100 mg/dL OR uremic encephalopathy, pericarditis, platelet dysfunction"],
],[1.5*cm,3*cm,13.1*cm]))
S.append(callout("CRRT preferred in hemodynamically unstable patients. IHD for stable patients. SLED as middle ground. Both modalities are equivalent in outcomes."))
S.append(PageBreak())
# ══════════════ 10. DIABETIC EMERGENCIES ════════════════════════════════
S += sec("10. DIABETIC EMERGENCIES")
S.append(sub("DKA Management Protocol"))
S.append(tbl(["Time","Action","Detail"],[
["0 hr — Diagnosis","Confirm DKA","pH <7.3, HCO3 <15, Glucose >250 mg/dL, Ketones ++ or +++"],
["0–1 hr — Fluids","0.9% NaCl 1 L in first hour","If hypovolemic or hemodynamically unstable"],
["1–4 hrs — Fluids","0.45% NaCl or 0.9% NaCl 250–500 mL/hr","Add K+ to each bag based on level"],
["When glucose <250","Add 5% Dextrose to IV fluid","Prevent hypoglycemia while continuing insulin"],
["Insulin","Regular Insulin 0.1 U/kg IV bolus → 0.1 U/kg/hr infusion","Target glucose drop 50–75 mg/dL/hr; HOLD if K+ <3.5"],
["K+ < 3.5 mEq/L","HOLD insulin; KCl 40 mEq/hr IV","Correct potassium FIRST before starting insulin"],
["K+ 3.5–5.5 mEq/L","KCl 20–40 mEq/L in each IV bag","Monitor electrolytes q2h"],
["Bicarbonate","NaHCO3 100 mEq IV over 2 hrs","ONLY if pH <6.9"],
["Resolution criteria","pH >7.3, HCO3 >18, Anion gap closed","Overlap SC insulin 1–2 hrs before stopping IV insulin"],
],[3.5*cm,5*cm,9.1*cm]))
S.append(Spacer(1,3*mm))
S.append(sub("HHS vs DKA — Quick Comparison"))
S.append(tbl(["Feature","DKA","HHS"],[
["Glucose","Often 250–600 mg/dL",">600 mg/dL (can reach 1200)"],
["Ketones","Moderate to large (++ / +++)","Absent or trace"],
["pH","<7.3 (acidosis)",">7.3 (no significant acidosis)"],
["Osmolality","Normal to mildly elevated",">320 mOsm/kg"],
["Fluid Deficit","4–6 L","8–10 L (aggressive rehydration is KEY)"],
["Key Treatment","Insulin + Fluids + K+ replacement","Fluids first; insulin less aggressive initially"],
["DVT Risk","Moderate","HIGH — start prophylactic anticoagulation"],
],[4*cm,5.5*cm,8.1*cm]))
S.append(PageBreak())
# ══════════════ 11. ELECTROLYTES ════════════════════════════════════════
S += sec("11. ELECTROLYTE EMERGENCIES")
S.append(sub("Hyperkalemia — Step-by-Step (K+ >6.0 or ECG changes)"))
S.append(tbl(["Step","Drug / Action","Dose","Mechanism","Onset"],[
["1 — Stabilize","Calcium Gluconate 10%","10 mL IV over 3 min (repeat once)","Membrane stabilization (no K+ change)","1–3 min"],
["1 alt","Calcium Chloride 10%","10 mL IV over 3 min","More Ca2+ per mL than gluconate","1–3 min"],
["2 — Shift","Insulin Regular + D50W","10 U insulin + 50 mL D50W IV","Drives K+ into cells (drops by 0.5–1 mEq/L)","15–30 min"],
["2 — Shift","Albuterol/Salbutamol","10–20 mg nebulized (4x normal dose)","Beta-2 stimulation shifts K+ into cells","20–30 min"],
["2 — Shift","NaHCO3 (if acidotic)","50–100 mEq IV","H+/K+ exchange — K+ enters cells","30–60 min"],
["3 — Remove","Furosemide","40–80 mg IV (if urine output present)","Renal K+ excretion","1–2 hrs"],
["3 — Remove","Patiromer (Veltassa)","8.4 g PO daily","GI cation exchange resin","Hours"],
["3 — Remove","Sodium Zirconium Cyclosilicate","10 g PO TDS x2 days → maintenance","GI K+ binder","1–2 hrs"],
["Definitive","Hemodialysis","—","Fastest definitive K+ removal","Minutes (on machine)"],
],[2.5*cm,3.8*cm,4*cm,4.2*cm,2.1*cm]))
S.append(Spacer(1,3*mm))
S.append(sub("Hyponatremia — Symptomatic Management"))
S.append(tbl(["Severity","Na+ Level","Treatment","Correction Rate"],[
["Severe (seizures/coma)","<120 mEq/L","3% NaCl 1–2 mL/kg/hr IV","Raise Na+ by 1–2 mEq/L/hr until symptoms resolve"],
["Moderate (AMS, confusion)","120–130 mEq/L","3% NaCl 0.5–1 mL/kg/hr","Raise Na+ by 6–8 mEq/L in 24 hrs"],
["Chronic/Mild","≥130 mEq/L","Treat underlying cause (SIADH, hypovolemia)","Max correction ≤10 mEq/L per 24 hrs"],
],[3*cm,2.5*cm,6*cm,6.1*cm]))
S.append(callout("DANGER: Overcorrection of hyponatremia (>10 mEq/L/24hrs) causes Osmotic Demyelination Syndrome (ODS) — irreversible brainstem injury. Monitor Na+ q2h during correction."))
S.append(Spacer(1,3*mm))
S.append(sub("Other Electrolyte Emergencies"))
S.append(tbl(["Disorder","Drug","Dose","Notes"],[
["Hypocalcemia (tetany/arrest)","Calcium Gluconate 10%","10–20 mL IV slowly over 10 min","ECG monitoring; may repeat; follow ionized Ca2+"],
["Hypomagnesemia / Torsades","Magnesium Sulfate","2–4 g IV over 5–15 min","Correct Mg before K+ in Torsades; check Mg in all arrhythmias"],
["Hypophosphatemia (<1.0 mg/dL)","Sodium/Potassium Phosphate","0.08–0.16 mmol/kg IV over 6 hrs","Severe deficiency: respiratory failure, rhabdomyolysis, hemolysis"],
["Hypermagnesemia (toxicity)","Calcium Gluconate 10%","10 mL IV over 3 min","Antagonizes Mg2+ effects; stop all Mg infusion; RRT if severe"],
],[4*cm,4*cm,4.5*cm,5.1*cm]))
S.append(PageBreak())
# ══════════════ 12. DRUG REFERENCE ══════════════════════════════════════
S += sec("12. ICU DRUGS & INJECTIONS — COMPLETE REFERENCE")
S.append(sub("A. Vasopressors & Inotropes"))
S.append(tbl(["Drug","Receptors","IV Dose","Indications","Key Cautions"],[
["Norepinephrine (Noradrenaline)","alpha1 > beta1","0.01–0.5 mcg/kg/min (up to 3)","Septic/distributive shock — 1st line","Limb ischemia at high dose; central line required"],
["Epinephrine (Adrenaline)","alpha1, beta1, beta2","0.01–0.5 mcg/kg/min; Anaphylaxis: 0.5 mg IM","Anaphylaxis, cardiac arrest, 2nd vasopressor","Tachycardia, lactic acidosis, hyperglycemia"],
["Vasopressin","V1/V2 receptors","0.03–0.04 units/min (fixed dose)","Septic shock adjunct; refractory vasoplegia","Mesenteric/cardiac ischemia at high doses"],
["Dopamine","D1, beta1, alpha1 (dose-dependent)","Low: 2–5; Mid: 5–10; High: 10–20 mcg/kg/min","Bradycardic shock (only specific use)","Tachyarrhythmias; higher mortality in sepsis — AVOID generally"],
["Dobutamine","beta1 > beta2","2.5–20 mcg/kg/min","Cardiogenic shock; low CO states","Tachycardia; vasodilation; increases O2 demand"],
["Milrinone","PDE3 inhibitor","0.375–0.75 mcg/kg/min","HF on beta-blockers; right heart failure","Hypotension; arrhythmias; reduce dose in AKI"],
["Phenylephrine","alpha1 selective","100–400 mcg/min infusion","Neurogenic shock; reflex bradycardia desired","Pure vasoconstriction; no inotropy; reflex bradycardia"],
["Levosimendan","Ca sensitizer + KATP opener","0.1–0.2 mcg/kg/min x24h","Acute decompensated HF","Hypotension; prolonged effect (active metabolite days)"],
],[4*cm,2.8*cm,4*cm,3.5*cm,3.3*cm]))
S.append(Spacer(1,4*mm))
S.append(sub("B. Anticoagulants & Reversal Agents"))
S.append(tbl(["Drug","Mechanism","Dose","Monitoring","Reversal"],[
["UFH (Heparin)","AT-III potentiation","DVT prophylaxis: 5000U SC q8-12h; Therapeutic: 80 U/kg bolus → 18 U/kg/hr","aPTT 60–100","Protamine 1 mg per 100 U heparin (max 50 mg)"],
["Enoxaparin (LMWH)","Anti-Xa mainly","Prophylaxis: 40 mg SC daily; Therapeutic: 1 mg/kg SC q12h","Anti-Xa level in AKI","Protamine (partial ~60% reversal)"],
["Fondaparinux","Selective anti-Xa","Prophylaxis: 2.5 mg SC daily; Therapeutic: 5–10 mg SC","Anti-Xa level","Andexanet alfa (off-label); no direct antidote"],
["Argatroban","Direct thrombin inhibitor","2 mcg/kg/min IV (reduce in liver failure)","aPTT 1.5–3× baseline","No reversal; short half-life 40–50 min"],
["Bivalirudin","Direct thrombin inhibitor","0.1 mg/kg/hr (CKD/HIT)","aPTT or ACT","No reversal; partially dialyzable"],
["Warfarin","Vitamin K antagonist","Individualized dosing","INR (target 2–3)","Vit K + 4-factor PCC OR FFP"],
["Andexanet Alfa","Factor Xa reversal","400–800 mg IV bolus + 4–8 mg/min infusion","Anti-Xa level","Reverses rivaroxaban, apixaban, enoxaparin"],
["Idarucizumab (Praxbind)","Direct anti-dabigatran Fab","5g IV (2 × 2.5g)","Dabigatran level","Specific reversal for dabigatran ONLY"],
],[3*cm,3*cm,4.8*cm,2.5*cm,4.3*cm]))
S.append(PageBreak())
S.append(sub("C. Diuretics in ICU"))
S.append(tbl(["Drug","Class","IV Dose","Indication","Notes"],[
["Furosemide","Loop diuretic","20–200 mg IV bolus; or 5–40 mg/hr infusion","Fluid overload, AHF, hyperkalemia","Monitor K+/Mg2+; ototoxic at high doses"],
["Bumetanide","Loop diuretic","0.5–2 mg IV","Furosemide resistance","10× more potent per mg than furosemide"],
["Torsemide","Loop diuretic","10–100 mg IV/PO","Diuretic resistance / poor furosemide bioavailability","Better oral bioavailability in HF"],
["Mannitol 20%","Osmotic diuretic","0.25–1 g/kg IV over 15–20 min","Raised ICP; cerebral edema; rhabdomyolysis","Monitor serum osmolality <320; avoid in severe renal failure"],
["Acetazolamide","Carbonic anhydrase inhibitor","250–500 mg IV BD","Metabolic alkalosis on loop diuretics; COPD","Also used for altitude sickness; sulfa allergy caution"],
["Spironolactone","K+-sparing / aldosterone ant.","25–200 mg PO/NG tube","HF, ascites, hyperaldosteronism","IV form limited; mostly oral/NG in ICU"],
],[3.5*cm,3*cm,4*cm,3.5*cm,3.6*cm]))
S.append(Spacer(1,4*mm))
S.append(sub("D. IV Antihypertensives for Hypertensive Emergency"))
S.append(callout("Target: Reduce MAP by 25% in the FIRST HOUR only — NOT to normal. Rapid drop risks stroke and MI."))
S.append(tbl(["Drug","Class","IV Dose","Onset","Preferred Use"],[
["Labetalol","Alpha + Beta blocker","20 mg IV q10min; OR 0.5–2 mg/min infusion","5 min","Most hypertensive emergencies; aortic dissection (with SNP)"],
["Nicardipine","CCB (dihydropyridine)","5–15 mg/hr infusion; titrate q5–15 min","5–10 min","Encephalopathy; post-op hypertension; eclampsia"],
["Clevidipine","Ultra-short-acting CCB","1–2 mg/hr → up to 32 mg/hr","2–4 min","Perioperative; precise, rapidly titratable control"],
["Esmolol","Ultra-short beta-1 blocker","500 mcg/kg bolus → 50–300 mcg/kg/min","1–2 min","Aortic dissection; periop tachycardia-hypertension"],
["Sodium Nitroprusside","NO-mediated vasodilator","0.3–10 mcg/kg/min infusion","Seconds","Crisis/titration only; cyanide toxicity >10 min; ICU only"],
["Hydralazine","Direct vasodilator","10–20 mg IV q4–6h","10–20 min","Pre-eclampsia/eclampsia; pregnancy-safe"],
["Phentolamine","Non-selective alpha blocker","2–5 mg IV bolus","2 min","Pheochromocytoma crisis; MAOI + tyramine hypertensive crisis"],
["Nitroglycerin (GTN)","Nitrate","5–200 mcg/min IV infusion","2–5 min","ACS + hypertension; acute cardiogenic pulmonary edema"],
],[3*cm,2.8*cm,3.5*cm,1.5*cm,7.3*cm]))
S.append(PageBreak())
S.append(sub("E. IV Antibiotics — ICU Reference"))
S.append(tbl(["Drug","Class","Dose","Coverage","Key Notes"],[
["Piperacillin-Tazobactam","Penicillin + BLI","4.5g IV q6h (extended 4h infusion)","GN, GP, anaerobes, Pseudomonas","NOT MRSA; adjust dose in AKI"],
["Meropenem","Carbapenem","1–2g IV q8h","Very broad: GN, GP, Pseudo, ESBL organisms","Reserve for ESBL/multidrug-resistant organisms"],
["Imipenem-Cilastatin","Carbapenem","500 mg–1g IV q6h","Very broad including anaerobes","Seizure risk; lower threshold than older formulations"],
["Vancomycin","Glycopeptide","25–30 mg/kg IV load → AUC-guided dosing","MRSA, Enterococcus, coagulase-negative staph","Monitor AUC/MIC ratio 400–600; nephrotoxic — monitor levels"],
["Linezolid","Oxazolidinone","600 mg IV q12h","MRSA, VRE — alternative to vancomycin","No dose adjustment in renal failure; serotonin syndrome risk"],
["Daptomycin","Lipopeptide","6–10 mg/kg IV daily","MRSA, VRE, bacteremia, endocarditis","NOT for pneumonia (inactivated by pulmonary surfactant)"],
["Ceftriaxone","3rd gen cephalosporin","2g IV q24h (meningitis: 4g BD)","GN, streptococcal, meningitis, CAP","Biliary sludge; check drug interactions"],
["Cefepime","4th gen cephalosporin","2g IV q8h","Pseudomonas + most GN organisms","Neurotoxicity in AKI — must adjust dose; monitor levels"],
["Azithromycin","Macrolide","500 mg IV daily","Atypical organisms; CAP adjunct","QTc prolongation — check baseline ECG; drug interactions"],
["Metronidazole","Nitroimidazole","500 mg IV q8h","Anaerobes; C.difficile (oral preferred for C.diff)","For C.diff: oral/rectal preferred over IV"],
["Micafungin","Echinocandin","100–150 mg IV daily","Candida spp including azole-resistant","Preferred for invasive candidiasis in ICU"],
["Liposomal Amphotericin B","Polyene antifungal","3–5 mg/kg IV daily","Aspergillus, Mucor, resistant fungi","Nephrotoxic; pre-hydrate; monitor K+, Mg2+ closely"],
],[3.5*cm,2.8*cm,3.5*cm,3.5*cm,4.3*cm]))
S.append(PageBreak())
# ══════════════ 13. TOXICOLOGY ══════════════════════════════════════════
S += sec("13. TOXICOLOGY & ANTIDOTES IN THE ICU")
S.append(sub("Toxidrome Recognition"))
S.append(tbl(["Toxidrome","Signs","Pupils","HR/BP","Common Causes"],[
["Sympathomimetic","Agitation, diaphoresis, hyperthermia, tachycardia","Dilated","HR up, BP up","Cocaine, amphetamines, decongestants"],
["Cholinergic (SLUDGE)","Salivation, lacrimation, urination, diarrhea, GI cramps, emesis","Constricted","HR down, BP down","Organophosphates, carbamates, nerve agents"],
["Anticholinergic","Dry as bone, red as beet, hot as hades, mad as hatter","Dilated","HR up, BP up","Antihistamines, atropine, TCAs, phenothiazines"],
["Opioid","Miosis, resp depression, reduced GCS / stupor","Pinpoint","HR down, BP down","Heroin, morphine, oxycodone, fentanyl"],
["Sedative-Hypnotic","Sedation, slurred speech, ataxia, amnesia","Normal","Normal or low","BZD, barbiturates, GHB, alcohol"],
["Serotonin Syndrome","Hyperthermia, clonus, tremor, diarrhea, agitation (Hunter criteria)","Dilated","HR up, BP up","SSRIs + MAOIs, tramadol, linezolid, fentanyl"],
],[3*cm,5*cm,2*cm,2.2*cm,5.4*cm]))
S.append(Spacer(1,3*mm))
S.append(sub("Antidotes Reference"))
S.append(tbl(["Toxin / Drug","Antidote","Dose","Notes"],[
["Opioids","Naloxone","0.4–2 mg IV/IM/IN q2–3 min; infusion: 2/3 effective bolus/hr","Repeat/infusion for long-acting opioids (methadone, fentanyl patches)"],
["Benzodiazepines","Flumazenil","0.2 mg IV q1 min (max 1 mg)","Risk seizures in BZD-dependent; short duration 45–90 min"],
["Warfarin / OD bleed","4-Factor PCC (Beriplex) + Vit K","PCC 25–50 IU/kg IV + Vit K 10 mg IV","Fastest reversal; PCC preferred over FFP for life-threatening bleed"],
["Heparin","Protamine Sulfate","1 mg per 100 U heparin IV (max 50 mg)","Anaphylaxis risk — give slowly over 10 min; fish allergy caution"],
["TCA antidepressants","Sodium Bicarbonate","1–2 mEq/kg IV; maintain pH 7.45–7.55","QRS >100 ms or hypotension or arrhythmia; repeat as needed"],
["Organophosphates","Atropine + Pralidoxime","Atropine: 2–4 mg IV q5–10 min until secretions dry; 2-PAM 1–2g IV over 30 min","Dry secretions = atropine endpoint; 2-PAM within 24–36h of exposure"],
["Acetaminophen/Paracetamol","N-Acetylcysteine (NAC)","150 mg/kg IV over 1h → 50 mg/kg/4h → 100 mg/kg/16h","Use Rumack-Matthew nomogram; start within 8–10 hrs for best effect"],
["Cyanide","Hydroxocobalamin (Cyanokit)","5g IV over 15 min","Preferred; turns urine red; alternative: sodium thiosulfate 12.5g IV"],
["CO Poisoning","100% O2 (NRB mask)","Until COHb <5%","Hyperbaric O2 if: COHb >25%, pregnant, loss of consciousness, neuro sx"],
["Beta-blocker OD","High-Dose Insulin (HDIE)","1 U/kg IV bolus → 0.5–2 U/kg/hr + D50W","Also: Calcium gluconate, Glucagon 5 mg IV, Intralipid 20%"],
["CCB OD","Calcium Chloride + HDIE","CaCl 1g IV q15–20 min; Insulin 1 U/kg/hr","Intralipid 20%: 1.5 mL/kg bolus for refractory cases (lipophilic CCBs)"],
["Digoxin toxicity","Digoxin-specific Fab (Digibind)","10 vials IV if level unknown; 1 vial per 0.5 mg digoxin ingested","Life-threatening arrhythmia, K+ >5.5 with toxicity, cardiac arrest"],
["Methanol/Ethylene glycol","Fomepizole (4-MP)","15 mg/kg IV load → 10 mg/kg q12h","ADH inhibitor; plus hemodialysis if severe acidosis or level >50 mg/dL"],
["Isoniazid OD (seizures)","Pyridoxine (Vitamin B6)","Gram-for-gram (if unknown: 5g IV)","Treats refractory status epilepticus from INH; give with BZD"],
],[4*cm,3.5*cm,4.5*cm,5.6*cm]))
S.append(PageBreak())
# ══════════════ 14. ICU BUNDLES ═════════════════════════════════════════
S += sec("14. ICU BUNDLES & PROTOCOLS")
S.append(sub("ABCDEF Bundle — ICU Liberation"))
S.append(tbl(["Letter","Component","Key Actions"],[
["A","Assess and Manage Pain","NRS (0–10) or CPOT scale; analgesia-first approach before sedation"],
["B","Both SAT + SBT daily","SAT: stop all sedation daily. SBT: T-piece or PSV 5 cmH2O x30 min"],
["C","Choice of Sedation","RASS target -1 to 0; prefer propofol/dexmedetomidine over benzodiazepines"],
["D","Delirium Prevention","CAM-ICU assessment BD; reorient; natural light; avoid BZD; early mobility"],
["E","Early Mobility and Exercise","PT/OT from day 1 if safe; passive → active ROM → sitting → walking"],
["F","Family Engagement","Involve family in rounds; ICU diaries; support mental health; open visiting hours"],
],[1.5*cm,3.5*cm,12.6*cm]))
S.append(Spacer(1,3*mm))
S.append(sub("VAP Prevention Bundle"))
S.append(tbl(["Intervention","Target"],[
["Head of bed elevation","30–45° at all times (unless specific contraindication)"],
["Oral chlorhexidine care","0.12–0.2% chlorhexidine gluconate BD — reduces VAP incidence"],
["Daily SBT","Proactive ventilator weaning each morning"],
["Subglottic suctioning ETT","Use ETT with subglottic suction port for expected ventilation >48h"],
["Hand hygiene","Before and after any ventilator circuit or patient contact"],
["Sedation minimization","Daily SAT; RASS target -1 to 0"],
],[5*cm,12.6*cm]))
S.append(Spacer(1,3*mm))
S.append(sub("DVT/VTE Prophylaxis"))
S.append(tbl(["Method","Drug/Device","Dose","Notes"],[
["Pharmacologic (preferred)","Enoxaparin","40 mg SC daily (CrCl ≥30); 30 mg SC BD (bariatric)","Start when safe; hold 12h before procedures"],
["Pharmacologic (alt)","UFH (Heparin)","5000 U SC q8–12h","Use in severe AKI (CrCl <30)"],
["Mechanical (if bleeding risk)","Pneumatic Compression Devices (IPC)","Bilateral legs continuously","Use when pharmacologic is contraindicated; NOT a substitute if can use pharmacologic"],
],[3.5*cm,3.5*cm,4.5*cm,6.1*cm]))
S.append(Spacer(1,3*mm))
S.append(sub("Glycemic Control"))
for t in ["Target blood glucose: 140–180 mg/dL (NICE-SUGAR trial — tight control 80–110 increases ICU mortality)",
"Use insulin infusion protocol for glucose >180 mg/dL consistently",
"Monitor glucose q1–2h on insulin infusion; q4–6h if stable off infusion",
"Avoid hypoglycemia (<70 mg/dL) — treat with D50W 25–50 mL IV immediately"]:
S.append(pbl(t))
S.append(Spacer(1,3*mm))
S.append(sub("Nutrition in the ICU"))
S.append(tbl(["Parameter","Recommendation"],[
["Timing","Early enteral nutrition (EN) within 24–48 hrs if hemodynamically stable"],
["Route","Enteral preferred over parenteral — reduces infection, maintains gut barrier"],
["Calories","25–30 kcal/kg/day; avoid overfeeding (hyperglycemia, CO2 retention)"],
["Protein","1.2–2 g/kg/day (higher in burns, trauma, obesity)"],
["Parenteral Nutrition (PN)","Only if EN contraindicated AND >5–7 days post-admission, or if severely malnourished"],
["Prokinetics","Metoclopramide 10 mg IV q6h OR Erythromycin 70–100 mg IV BD for gastroparesis"],
],[5*cm,12.6*cm]))
S.append(Spacer(1,3*mm))
S.append(sub("ICU Quick-Reference Targets"))
S.append(tbl(["Parameter","Target","Clinical Notes"],[
["MAP","≥65 mmHg",">70–80 in elevated ICP, chronic hypertension, post-cardiac arrest"],
["SpO2","94–98%","88–92% for COPD; avoid SpO2 of 100% (hyperoxia)"],
["PaO2","55–80 mmHg","Permissive hypoxia acceptable in ARDS (SpO2 88–92%)"],
["PaCO2","35–45 mmHg","Mild permissive hypercapnia (up to 55) acceptable in ARDS"],
["Temperature","36–37.5°C","Strict normothermia post-arrest; aggressively treat fever in ICU"],
["Blood Glucose","140–180 mg/dL","NICE-SUGAR — avoid tight control; insulin infusion if >180"],
["Hb (sepsis/stable)","7–9 g/dL","Transfuse if Hb <7 (or <8 in cardiac disease)"],
["Platelet threshold","Procedures: >50K; CNS/eye: >100K","Hold anticoagulants around procedure window"],
["INR (procedures)","<1.5","Correct with FFP or 4F-PCC if urgent"],
["Na+","135–145 mEq/L","Correct hyponatremia slowly — max 10 mEq/L per 24 hrs"],
["K+","3.5–5.0 mEq/L","Replace hypokalemia before antiarrhythmic therapy"],
["pH","7.35–7.45","Permissive acidosis (pH >7.2) acceptable in ARDS/protective ventilation"],
],[4.5*cm,4*cm,9.1*cm]))
# ── DISCLAIMER ────────────────────────────────────────────────────────────
S.append(PageBreak())
disc_row = [[Paragraph("IMPORTANT DISCLAIMER", ParagraphStyle('dr',fontSize=12,fontName='Helvetica-Bold',textColor=C_WHITE,alignment=TA_CENTER))]]
dt = Table(disc_row, colWidths=[CONTENT_W])
dt.setStyle(TableStyle([
('BACKGROUND',(0,0),(-1,-1),C_RED),
('TOPPADDING',(0,0),(-1,-1),10),('BOTTOMPADDING',(0,0),(-1,-1),10),
]))
S.append(Spacer(1,2*cm))
S.append(dt)
S.append(Spacer(1,4*mm))
disc = ("This document is a clinical reference guide compiled for qualified medical professionals. "
"It is based on current guidelines including Surviving Sepsis Campaign 2026, AHA ACLS 2025, KDIGO 2024, "
"and major clinical textbooks.\n\n"
"Drug doses must be verified against local formularies and adjusted for individual patient factors "
"(renal function, hepatic function, weight, allergies, drug interactions). "
"Always consult current local antibiotic stewardship guidelines and institutional protocols.\n\n"
"This guide does not replace clinical judgment. All treatment decisions must be made by "
"qualified clinicians based on individual patient assessment.\n\n"
"Compiled: July 2026 | Orris Medical AI")
S.append(Paragraph(disc.replace('\n\n','<br/><br/>'), DI))
return S
def main():
out = "/home/daytona/workspace/icu-notes/ICU_Emergency_Management_Notes.pdf"
doc = SimpleDocTemplate(
out, pagesize=A4,
rightMargin=MARGIN, leftMargin=MARGIN,
topMargin=2.2*cm, bottomMargin=1.8*cm,
title="ICU Emergency Medicine Management Notes",
author="Orris Medical AI")
story = build()
doc.build(story, onFirstPage=header_footer, onLaterPages=header_footer)
size = os.path.getsize(out)
print(f"SUCCESS: {out}")
print(f"Size: {size:,} bytes ({size/1024:.0f} KB)")
if __name__ == "__main__":
main()
cd /home/daytona/workspace/icu-notes && python3 gen_icu.py 2>&1
ICU Emergency Management Notes
PDF Document · PDF
| Section | Content |
|---|---|
| Cover Page | Colour-coded cover with 4 summary stats boxes |
| Table of Contents | All 14 sections listed |
| 1. Sepsis & Septic Shock | Hour-1 bundle, vasopressor ladder, empiric antibiotics, corticosteroids |
| 2. Shock — All Types | Classification table, hemorrhagic classes, anaphylaxis steps, cardiogenic drugs |
| 3. Resp Failure & Ventilation | RSI drugs & doses, ARDS protocol, sedation agents full table |
| 4. Cardiac Arrest ACLS 2025 | CPR standards, arrest drugs, H's & T's, post-ROSC targets |
| 5. Arrhythmias | Drug management + cardioversion energy guide |
| 6. ACS | Full antiplatelet, anticoagulant, thrombolytic, statin doses |
| 7. Neurology | Status epilepticus phases, ICP management, stroke (tPA + thrombectomy) |
| 8. Pulmonary Embolism | Risk tiers, anticoagulation options with doses |
| 9. AKI | KDIGO staging, RRT indications (AEIOU) |
| 10. Diabetic Emergencies | DKA step-by-step, HHS vs DKA comparison |
| 11. Electrolytes | Hyperkalemia 9-step table, hyponatremia, Mg/Ca/Phos |
| 12. Drugs & Injections | Vasopressors, anticoagulants, diuretics, antihypertensives, antibiotics — all with IV doses |
| 13. Toxicology | Toxidrome recognition + 14 antidotes with doses |
| 14. ICU Bundles | ABCDEF, VAP bundle, DVT prophylaxis, glycemic control, nutrition |