Hypertensive pt posted for Ca ovary Cyto reduction surgery and in post op pt on Sodium thiosulfate and KCL and hypothermic explained all this

Reading File
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Searching the Web

sodium thiosulfate cisplatin HIPEC ovarian cancer cytoreduction postoperative use

Now I have comprehensive information. Let me compile a thorough, well-organized answer.

Hypertensive Patient - Ca Ovary Cytoreduction Surgery + Postoperative Management

This is a CRS + HIPEC (Cytoreductive Surgery + Hyperthermic Intraperitoneal Chemotherapy) scenario. Here is a full breakdown of each element:

1. Background: Cytoreductive Surgery (CRS) for Ca Ovary

Cytoreductive (debulking) surgery aims to remove all visible peritoneal disease in ovarian cancer. After interval chemotherapy, CRS + HIPEC is the current standard:
  • HIPEC = cisplatin 75-100 mg/m² delivered heated (40-42°C) directly into the peritoneal cavity for 60-90 minutes immediately after surgery
  • The OVHIPEC-1 Phase III RCT (van Driel et al.) showed an 11.8-month overall survival benefit with HIPEC vs surgery alone in stage III EOC
  • Now incorporated into NCCN guidelines

2. Why Sodium Thiosulfate (STS) in Postoperative Period?

Primary Indication: Cisplatin Nephroprotection

Cisplatin from HIPEC is the key reason STS is given postoperatively.
Mechanism of cisplatin nephrotoxicity:
  • Cisplatin accumulates in renal tubular cells after IP administration, persisting in the bloodstream for ~5 days post-HIPEC
  • It causes DNA-adduct-mediated tubular cell death and mitochondrial damage in proximal tubular cells
  • AKI incidence: 15-31% at cisplatin doses of 50-100 mg/m²
How STS works as a nephroprotectant:
  • STS binds and inactivates ("scavenges") free cisplatin in the systemic circulation and kidneys - it acts as a sulfur donor that forms an inactive thiosulfate-cisplatin complex
  • This preferential binding in the systemic compartment does NOT interfere with intraperitoneal cisplatin cytotoxicity (the two compartments are somewhat separated temporally and physically)
  • STS also protects renal tubular mitochondria from cisplatin-mediated oxidative damage
Clinical evidence:
  • Studies show: patients receiving cisplatin 100 mg/m² + STS had no significant creatinine rise vs 53% median creatinine increase in the no-STS group (p=0.003) - Annals of Surgical Oncology, 2023
  • No AKI episodes in the STS group vs sustained AKI in the non-STS group
Dosing protocol (typical):
  • Pre-HIPEC bolus (9 g IV over 15 min) + postoperative maintenance infusion (12 g IV over 6 hours) started ~3-6 hours after HIPEC completion

3. Why KCl (Potassium Chloride) Postoperatively?

Multiple mechanisms converge to cause hypokalemia after major cytoreductive surgery:
MechanismDetails
Renal potassium wastingKidneys excrete 30-60 mEq/L of K+ daily regardless of serum levels; cannot conserve K+ like they conserve Na+
Postoperative aldosteronismSurgical stress + any intraoperative hypotension elevates circulating aldosterone, driving K+ excretion in exchange for Na+ retention
ADH elevationCauses sodium/water retention; dilutional effect on K+
Third spacingExtensive peritoneal dissection during CRS causes 1-3 L/day fluid sequestration; K+ shifts into third space
Cisplatin-specific effectCisplatin causes renal tubular wasting of K+ and Mg²+ (Fanconi-syndrome-like tubular toxicity), worsening hypokalemia
Metabolic alkalosisFrom intraoperative fluid losses/transfusions; alkalosis drives K+ intracellularly
After the first postoperative day, potassium supplementation is mandatory since endogenous release from tissue catabolism is insufficient (Berek & Novak's Gynecology, p.1228).
Clinical importance in a hypertensive patient:
  • Hypertensive patients may be on thiazide diuretics or loop diuretics - both independently cause urinary K+ wasting
  • ACE inhibitors/ARBs used for hypertension are kidney-protective but won't adequately compensate for cisplatin-driven tubular losses
  • Hypokalemia causes: cardiac arrhythmias, ileus, muscle weakness, neuromuscular dysfunction, potentiation of digitalis toxicity if applicable

4. Why Hypothermia Postoperatively?

Several overlapping causes in this specific surgical context:

Intraoperative Causes

  1. Prolonged surgery - CRS typically lasts 6-10 hours; longer open abdominal surgery = massive evaporative + radiant heat loss
  2. Large abdominal exposure - the peritoneal cavity is a large evaporative surface; the cytoreduction involves stripping the peritoneum extensively
  3. Massive fluid administration - large volumes of cold IV fluids and blood products cause core temperature drop
  4. General anesthesia - impairs thermoregulation; vasodilation redistributes heat from core to periphery

HIPEC-Specific Paradox

  • During HIPEC, the abdomen is filled with heated fluid (40-42°C) - this can briefly raise core temperature (iatrogenic hyperthermia intraoperatively)
  • After HIPEC, the heated fluid is drained and the cold OR environment + post-perfusion hemodynamics predispose to rebound hypothermia
  • Post-HIPEC fluid shifts can also contribute to hemodynamic instability + cooling

Consequences of Postoperative Hypothermia (important to monitor)

EffectClinical Significance
Delayed emergenceCore temp <33°C has anesthetic effect; potentiates CNS depressants (Morgan & Mikhail, p.2427)
CoagulopathyImpairs platelet function and coagulation enzyme activity - dangerous after already bloody surgery
ShiveringIncreases O₂ consumption 200-500%; poorly tolerated in hypertensive/cardiac patients
Cardiac arrhythmiasEspecially combined with hypokalemia (from KCl issue above) - dangerous combination
Impaired drug metabolismSlower biotransformation of anesthetic agents, NMBDs, analgesics
Immune suppressionIncreases surgical site infection risk

Management

  • Forced-air warming blankets (Bair Hugger) - most effective
  • Warm IV fluids
  • Warming mattress pads
  • Raise OR/ICU ambient temperature
  • Monitor core temperature continuously (esophageal/rectal/bladder probe)

5. Hypertension - Perioperative Considerations

Preoperative:
  • Continue antihypertensives up to the morning of surgery (especially beta-blockers, clonidine - abrupt withdrawal is dangerous)
  • ACE inhibitors/ARBs: controversial - some centers hold on day of surgery to prevent intraoperative hypotension
  • Target BP <160/100 before elective surgery
Intraoperative risks:
  • Exaggerated hemodynamic swings with intubation/extubation
  • During CRS: hypotension from bleeding, third spacing; hypertension from pneumoperitoneum if laparoscopic component
  • HIPEC phase: vasodilation from heat, hemodynamic instability
Postoperative:
  • Hypertensive patients are at higher risk of cardiac events, AKI, stroke postoperatively
  • STS + adequate hydration are particularly important since pre-existing hypertension may mean some degree of renovascular disease, making the kidneys more vulnerable to cisplatin nephrotoxicity
  • Monitor BP closely; restart antihypertensives as soon as patient is hemodynamically stable and tolerating oral/NG medications
  • Avoid NSAIDs for pain (worsen hypertension + nephrotoxicity)

Summary Table

Postoperative Finding/DrugWhy It Happens / Why It's Given
Sodium ThiosulfateCisplatin renal protectant - scavenges systemic cisplatin after HIPEC to prevent AKI; given as postop maintenance infusion after pre-HIPEC bolus
KCl supplementationMandatory after Day 1 postop; worsened by aldosterone response, ADH, cisplatin tubular wasting, diuretics (if on antihypertensives)
HypothermiaProlonged open CRS surgery + large abdominal exposure + massive fluids + post-HIPEC rebound cooling; treat with forced-air warming
Hypertension contextAdds cardiac risk; increases AKI vulnerability; antihypertensives must be managed carefully perioperatively

Key Sources:

Create a postoperative monitoring checklist for HIPEC patients with STS/KCl protocols

Reading File
Running Command

mkdir -p /tmp/workspace/hipec-checklist && ls /tmp/workspace/hipec-checklist/

Writing File

~/hipec-checklist/generate_checklist.py

from docx import Document
from docx.shared import Pt, Inches, RGBColor, Cm
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_TABLE_ALIGNMENT, WD_ALIGN_VERTICAL
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
import copy

doc = Document()

# ── Page margins ──────────────────────────────────────────────
section = doc.sections[0]
section.top_margin    = Cm(1.5)
section.bottom_margin = Cm(1.5)
section.left_margin   = Cm(2.0)
section.right_margin  = Cm(2.0)

# ── Helper: shade a table cell ─────────────────────────────────
def shade_cell(cell, fill_hex):
    tc   = cell._tc
    tcPr = tc.get_or_add_tcPr()
    shd  = OxmlElement("w:shd")
    shd.set(qn("w:val"),   "clear")
    shd.set(qn("w:color"), "auto")
    shd.set(qn("w:fill"),  fill_hex)
    tcPr.append(shd)

# ── Helper: set cell border ────────────────────────────────────
def set_cell_border(cell, **kwargs):
    tc   = cell._tc
    tcPr = tc.get_or_add_tcPr()
    tcBorders = OxmlElement("w:tcBorders")
    for side in ("top","left","bottom","right","insideH","insideV"):
        tag = OxmlElement(f"w:{side}")
        tag.set(qn("w:val"),   kwargs.get("val",   "single"))
        tag.set(qn("w:sz"),    kwargs.get("sz",    "4"))
        tag.set(qn("w:space"), "0")
        tag.set(qn("w:color"), kwargs.get("color", "BFBFBF"))
        tcBorders.append(tag)
    tcPr.append(tcBorders)

# ── Helper: add a styled paragraph inside a cell ───────────────
def cell_para(cell, text, bold=False, size=9, color=None, align=None, italic=False):
    cell.paragraphs[0].clear()
    p   = cell.paragraphs[0]
    run = p.add_run(text)
    run.bold   = bold
    run.italic = italic
    run.font.size = Pt(size)
    run.font.name = "Calibri"
    if color:
        run.font.color.rgb = RGBColor.from_string(color)
    if align:
        p.alignment = align
    p.paragraph_format.space_before = Pt(1)
    p.paragraph_format.space_after  = Pt(1)

# ── Colour palette ─────────────────────────────────────────────
DARK_BLUE   = "1F3864"   # deep navy  (header bg)
MID_BLUE    = "2E75B6"   # section headers
LIGHT_BLUE  = "D6E4F0"   # alternate row tint
TEAL        = "1ABC9C"
ORANGE      = "E67E22"
RED         = "C0392B"
WHITE       = "FFFFFF"
LIGHT_GRAY  = "F2F2F2"
AMBER       = "F39C12"
GREEN       = "27AE60"
DARK_GRAY   = "404040"

# ══════════════════════════════════════════════════════════════
# TITLE BLOCK
# ══════════════════════════════════════════════════════════════
tbl = doc.add_table(rows=1, cols=1)
tbl.style = "Table Grid"
tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
hdr_cell = tbl.cell(0, 0)
shade_cell(hdr_cell, DARK_BLUE)
p = hdr_cell.paragraphs[0]
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
p.paragraph_format.space_before = Pt(4)
p.paragraph_format.space_after  = Pt(4)
r1 = p.add_run("POSTOPERATIVE MONITORING CHECKLIST\n")
r1.bold = True; r1.font.size = Pt(16); r1.font.name = "Calibri"
r1.font.color.rgb = RGBColor.from_string(WHITE)
r2 = p.add_run("CRS + HIPEC | Sodium Thiosulfate / KCl Protocols | Hypertensive Patients")
r2.bold = False; r2.font.size = Pt(10); r2.font.name = "Calibri"
r2.font.color.rgb = RGBColor.from_string("BDD7EE")

doc.add_paragraph()

# ── Sub-header: patient & date fields ──────────────────────────
info_tbl = doc.add_table(rows=1, cols=4)
info_tbl.style = "Table Grid"
info_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
labels = ["Patient Name / MRD#:", "Date of Surgery:", "Surgeon:", "Anaesthetist:"]
for i, lbl in enumerate(labels):
    c = info_tbl.cell(0, i)
    shade_cell(c, LIGHT_GRAY)
    set_cell_border(c)
    p = c.paragraphs[0]
    r = p.add_run(lbl + "\n_________________________")
    r.bold = False; r.font.size = Pt(8); r.font.name = "Calibri"

doc.add_paragraph()

# ══════════════════════════════════════════════════════════════
# HELPER: section header row
# ══════════════════════════════════════════════════════════════
def add_section_header(table, text, cols, color=MID_BLUE):
    row  = table.add_row()
    cell = row.cells[0]
    # merge across all columns
    for i in range(1, cols):
        cell = cell.merge(row.cells[i])
    shade_cell(cell, color)
    p  = cell.paragraphs[0]
    r  = p.add_run(text)
    r.bold = True; r.font.size = Pt(10); r.font.name = "Calibri"
    r.font.color.rgb = RGBColor.from_string(WHITE)
    p.paragraph_format.space_before = Pt(2)
    p.paragraph_format.space_after  = Pt(2)
    return row

def add_col_header_row(table, headers, fills=None):
    row = table.add_row()
    fills = fills or [LIGHT_BLUE] * len(headers)
    for i, (hdr, fill) in enumerate(zip(headers, fills)):
        c = row.cells[i]
        shade_cell(c, fill)
        set_cell_border(c)
        cell_para(c, hdr, bold=True, size=8.5, color=DARK_GRAY,
                  align=WD_ALIGN_PARAGRAPH.CENTER)
    return row

def add_check_row(table, cols_data, shade=WHITE):
    row = table.add_row()
    for i, txt in enumerate(cols_data):
        c = row.cells[i]
        shade_cell(c, shade)
        set_cell_border(c)
        cell_para(c, txt, size=8.5)
    return row

# ══════════════════════════════════════════════════════════════
# SECTION 1 – VITALS & HAEMODYNAMICS
# ══════════════════════════════════════════════════════════════
p_h = doc.add_paragraph()
r_h = p_h.add_run("1.  VITALS & HAEMODYNAMIC MONITORING")
r_h.bold = True; r_h.font.size = Pt(11); r_h.font.name = "Calibri"
r_h.font.color.rgb = RGBColor.from_string(MID_BLUE)

v_tbl = doc.add_table(rows=0, cols=5)
v_tbl.style = "Table Grid"
v_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
# Set col widths
widths = [Cm(4.5), Cm(2.5), Cm(2.5), Cm(2.5), Cm(5.5)]
for i, w in enumerate(widths):
    for row in v_tbl.rows:
        row.cells[i].width = w

add_col_header_row(v_tbl,
    ["Parameter", "0-2 h", "2-6 h", "6-12 h", "Target / Alert Threshold"],
    fills=[MID_BLUE, MID_BLUE, MID_BLUE, MID_BLUE, MID_BLUE])
# fix header text colour
for cell in v_tbl.rows[0].cells:
    for para in cell.paragraphs:
        for run in para.runs:
            run.font.color.rgb = RGBColor.from_string(WHITE)

rows_v = [
    ["BP (Systolic/Diastolic) mmHg", "□ q30 min", "□ q1 h", "□ q2 h", "SBP 100-160 mmHg\n⚠ SBP >180 or <90 → act immediately (hypertensive pt)"],
    ["HR (bpm)", "□ q30 min", "□ q1 h", "□ q2 h", "60-100 bpm\n⚠ <50 or >120 → ECG + review"],
    ["SpO2 (%)", "□ Continuous", "□ Continuous", "□ q1 h", "≥95%\n⚠ <92% → O2, CXR, ABG"],
    ["Core Temperature (°C)", "□ q30 min", "□ q1 h", "□ q2 h", "36.5-37.5°C\n⚠ <36°C → warming measures\n⚠ >38.5°C post-HIPEC → sepsis workup"],
    ["Urine Output (mL/kg/h)", "□ Hourly", "□ Hourly", "□ q2 h", "≥0.5 mL/kg/h\n⚠ <0.5 mL/kg/h → fluid challenge\n⚠ Oliguria + rising Cr → STS toxicity?"],
    ["CVP (if applicable)", "□ q1 h", "□ q2 h", "□ q4 h", "8-12 mmHg"],
    ["GCS / Sedation Score", "□ q1 h", "□ q1 h", "□ q2 h", "Alert or RASS target\n⚠ Prolonged sedation: exclude hypothermia"],
    ["Pain Score (NRS 0-10)", "□ q1 h", "□ q1 h", "□ q2 h", "NRS ≤3\n→ Multimodal analgesia; avoid NSAIDs"],
]
for i, r in enumerate(rows_v):
    add_check_row(v_tbl, r, shade=LIGHT_BLUE if i % 2 == 0 else WHITE)

doc.add_paragraph()

# ══════════════════════════════════════════════════════════════
# SECTION 2 – TEMPERATURE / HYPOTHERMIA PROTOCOL
# ══════════════════════════════════════════════════════════════
p_h2 = doc.add_paragraph()
r_h2 = p_h2.add_run("2.  HYPOTHERMIA MANAGEMENT PROTOCOL")
r_h2.bold = True; r_h2.font.size = Pt(11); r_h2.font.name = "Calibri"
r_h2.font.color.rgb = RGBColor.from_string(RED)

temp_tbl = doc.add_table(rows=0, cols=4)
temp_tbl.style = "Table Grid"
temp_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER

add_col_header_row(temp_tbl,
    ["Core Temp", "Grade", "Action Required", "Done / Time"],
    fills=["1F3864","1F3864","1F3864","1F3864"])
for c in temp_tbl.rows[0].cells:
    for p in c.paragraphs:
        for r in p.runs:
            r.font.color.rgb = RGBColor.from_string(WHITE)

temp_rows = [
    ["36.5 – 37.5°C",  "Normal",           "□ Continue routine monitoring",                       "____"],
    ["36.0 – 36.4°C",  "Mild Hypothermia",  "□ Forced-air warming blanket ON\n□ Warm IV fluids\n□ Raise ambient temp to 24°C", "____"],
    ["35.0 – 35.9°C",  "Moderate",          "□ Above + warming mattress\n□ Warm humidified O2\n□ Check coagulation profile\n□ Notify ICU consultant", "____"],
    ["< 35.0°C",       "Severe",            "□ Emergency warming protocol\n□ ABG + coags STAT\n□ Consider warm bladder irrigation\n□ Rewarming target: 0.5-1°C / hour", "____"],
]
colors = [WHITE, LIGHT_BLUE, "FFF3CD", "FFE0E0"]
for row_data, col in zip(temp_rows, colors):
    add_check_row(temp_tbl, row_data, shade=col)

# note
note_p = doc.add_paragraph()
r_note = note_p.add_run("⚠ HIPEC-SPECIFIC NOTE: Intraoperative hyperthermic phase (40-42°C perfusate) may mask hypothermia development. "
                         "Core temp MUST be re-checked immediately on arrival to ICU/PACU regardless of intraoperative readings.")
r_note.font.size = Pt(8); r_note.italic = True; r_note.font.name = "Calibri"
r_note.font.color.rgb = RGBColor.from_string(RED)

doc.add_paragraph()

# ══════════════════════════════════════════════════════════════
# SECTION 3 – SODIUM THIOSULFATE (STS) PROTOCOL
# ══════════════════════════════════════════════════════════════
p_h3 = doc.add_paragraph()
r_h3 = p_h3.add_run("3.  SODIUM THIOSULFATE (STS) PROTOCOL  —  Cisplatin Nephroprotection")
r_h3.bold = True; r_h3.font.size = Pt(11); r_h3.font.name = "Calibri"
r_h3.font.color.rgb = RGBColor.from_string(TEAL)

sts_tbl = doc.add_table(rows=0, cols=4)
sts_tbl.style = "Table Grid"
sts_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER

add_col_header_row(sts_tbl,
    ["Phase", "Dose / Rate", "Monitoring During Infusion", "Checkbox"],
    fills=["0E6655","0E6655","0E6655","0E6655"])
for c in sts_tbl.rows[0].cells:
    for p in c.paragraphs:
        for r in p.runs:
            r.font.color.rgb = RGBColor.from_string(WHITE)

sts_rows = [
    ["Pre-HIPEC Bolus\n(Intraoperative)",
     "9 g IV over 15 min\n(~300 mL of 3% solution)\nGiven 20 min before cisplatin instillation",
     "• BP q5 min during bolus\n• Watch for nausea/vomiting\n• Note time of administration",
     "□ Given\nTime: ____"],
    ["Post-HIPEC Maintenance\n(Start in Recovery)",
     "12 g IV over 6 hours\n(~400 mL of 3% solution)\nBegin 3-6 h after HIPEC completion",
     "• BP + HR q30 min\n• UO hourly (target ≥0.5 mL/kg/h)\n• Watch for hyponatraemia (STS contains Na+)\n• Serum Na+ at 6 h",
     "□ Started\nTime: ____\n□ Completed\nTime: ____"],
    ["Renal Function Monitoring\n(Days 1-5 post-op)",
     "No further STS infusion\n(monitor only)",
     "• Serum Cr, BUN, eGFR DAILY (Days 1-5)\n• Urine Na+, K+, Cr (Day 2)\n• ⚠ Cr rise >25% from baseline = AKI alert\n• 24 h urine if oliguria",
     "□ Day 1 labs\n□ Day 2 labs\n□ Day 3 labs\n□ Day 5 labs"],
]
shade_sts = [WHITE, LIGHT_BLUE, "E8F8F5"]
for row_data, col in zip(sts_rows, shade_sts):
    add_check_row(sts_tbl, row_data, shade=col)

sts_note = doc.add_paragraph()
r_sn = sts_note.add_run("STS Mechanism: Binds and inactivates systemic cisplatin via thiosulfate-platinum complex formation → prevents cisplatin accumulation in proximal renal tubules. "
                         "Intraperitoneal cisplatin efficacy is NOT significantly reduced (compartmental separation). "
                         "Evidence: OVHIPEC-1 protocol; Kurreck et al. Ann Surg Oncol 2022; Chambers et al. 2021 (PMID 34141848).")
r_sn.font.size = Pt(7.5); r_sn.italic = True; r_sn.font.name = "Calibri"
r_sn.font.color.rgb = RGBColor.from_string("2C7A7B")

doc.add_paragraph()

# ══════════════════════════════════════════════════════════════
# SECTION 4 – KCl / ELECTROLYTE PROTOCOL
# ══════════════════════════════════════════════════════════════
p_h4 = doc.add_paragraph()
r_h4 = p_h4.add_run("4.  KCl / ELECTROLYTE REPLACEMENT PROTOCOL")
r_h4.bold = True; r_h4.font.size = Pt(11); r_h4.font.name = "Calibri"
r_h4.font.color.rgb = RGBColor.from_string(ORANGE)

kcl_tbl = doc.add_table(rows=0, cols=5)
kcl_tbl.style = "Table Grid"
kcl_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER

add_col_header_row(kcl_tbl,
    ["Serum K+ (mEq/L)", "Grade", "KCl Dose / Route", "Rate Limit", "Monitoring"],
    fills=["7D6608","7D6608","7D6608","7D6608","7D6608"])
for c in kcl_tbl.rows[0].cells:
    for p in c.paragraphs:
        for r in p.runs:
            r.font.color.rgb = RGBColor.from_string(WHITE)

kcl_rows = [
    ["≥ 3.5",         "Normal",          "Maintenance only\nAdd 20 mEq/L to maintenance IVF",        "Routine IV rate",                "□ q6h electrolytes Day 0\n□ Daily thereafter"],
    ["3.0 – 3.4",     "Mild Hypokalaemia","KCl 20-40 mEq IV over 2-4 h\n(or oral K+ if tolerating)", "Max 10 mEq/h peripheral\nMax 20 mEq/h central line",   "□ ECG\n□ Repeat K+ in 4 h\n□ Check Mg²+"],
    ["2.5 – 2.9",     "Moderate",        "KCl 40 mEq IV over 2-4 h\n→ Repeat until K+ ≥3.5",         "Max 20 mEq/h via CENTRAL only",  "□ Continuous cardiac monitor\n□ ECG\n□ Mg²+ replacement if <0.8 mmol/L\n□ Re-check K+ q2h"],
    ["< 2.5",         "Severe",          "KCl 60-80 mEq IV\nCentral line MANDATORY\nICU consult",     "Max 20 mEq/h central\nNEVER IV push",               "□ Continuous ECG monitoring\n□ Q1h K+ check\n□ Mg²+, PO4, Ca²+ panel\n□ ABG (metabolic alkalosis?)"],
]
colors_kcl = [WHITE, "FFF9C4", "FFE0B2", "FFE0E0"]
for row_data, col in zip(kcl_rows, colors_kcl):
    add_check_row(kcl_tbl, row_data, shade=col)

# KCl causes table
doc.add_paragraph()
p_h4b = doc.add_paragraph()
r_h4b = p_h4b.add_run("   Why Hypokalaemia Occurs in HIPEC Patients (Reference Reasons)")
r_h4b.bold = True; r_h4b.font.size = Pt(9); r_h4b.font.name = "Calibri"
r_h4b.font.color.rgb = RGBColor.from_string(DARK_GRAY)

cause_tbl = doc.add_table(rows=0, cols=2)
cause_tbl.style = "Table Grid"
add_col_header_row(cause_tbl, ["Mechanism", "Clinical Relevance"], fills=[DARK_GRAY, DARK_GRAY])
for c in cause_tbl.rows[0].cells:
    for p in c.paragraphs:
        for r in p.runs:
            r.font.color.rgb = RGBColor.from_string(WHITE)

causes = [
    ["Mandatory renal K+ excretion (30-60 mEq/day)", "Kidneys cannot conserve K+ → continuous loss regardless of serum level"],
    ["Elevated aldosterone (surgical stress)", "Drives K+ loss in exchange for Na+ retention"],
    ["Cisplatin tubular toxicity", "Proximal tubular damage → Fanconi-type K+/Mg²+ wasting, persists 3-5 days post-HIPEC"],
    ["Third spacing (peritoneal dissection)", "1-3 L/day fluid sequestration; K+ shifts into third space"],
    ["Thiazide/Loop diuretics (hypertensive pts)", "Additive urinary K+ wasting - review antihypertensive medication list"],
    ["Metabolic alkalosis", "Alkalosis drives K+ intracellularly (transcellular shift)"],
]
for i, c in enumerate(causes):
    add_check_row(cause_tbl, c, shade=LIGHT_BLUE if i % 2 == 0 else WHITE)

doc.add_paragraph()

# ══════════════════════════════════════════════════════════════
# SECTION 5 – RENAL FUNCTION MONITORING
# ══════════════════════════════════════════════════════════════
p_h5 = doc.add_paragraph()
r_h5 = p_h5.add_run("5.  RENAL FUNCTION & AKI MONITORING")
r_h5.bold = True; r_h5.font.size = Pt(11); r_h5.font.name = "Calibri"
r_h5.font.color.rgb = RGBColor.from_string("7B241C")

renal_tbl = doc.add_table(rows=0, cols=4)
renal_tbl.style = "Table Grid"
add_col_header_row(renal_tbl,
    ["Investigation", "Timing", "Alert Value", "Action"],
    fills=["7B241C","7B241C","7B241C","7B241C"])
for c in renal_tbl.rows[0].cells:
    for p in c.paragraphs:
        for r in p.runs:
            r.font.color.rgb = RGBColor.from_string(WHITE)

renal_rows = [
    ["Serum Creatinine",             "Pre-op baseline; Days 1, 2, 3, 5 post-op",   "Rise >25% from baseline",         "AKI staging (KDIGO)\nNephrology consult\nReview nephrotoxins"],
    ["BUN / Urea",                   "Days 1, 3, 5",                                ">40 mg/dL rising",                "Fluid adequacy review\nProtein catabolism vs AKI"],
    ["eGFR",                         "Days 1, 3, 5",                                "< 60 mL/min/1.73m²",              "Hold nephrotoxic agents\nReview drug doses"],
    ["Urine Output",                 "Hourly (ICU/HDU)",                            "< 0.5 mL/kg/h × 2 h",            "Fluid bolus 250 mL\nFurosemide only if euvolaemic\nRecheck K+"],
    ["Urine Na+, K+, Osmolality",    "Day 2 if AKI concern",                        "FeNa > 2% (intrinsic AKI)",       "Distinguish pre-renal vs intrinsic\nSTS effectiveness check"],
    ["Serum Mg²+",                   "Days 1, 3",                                   "< 0.7 mmol/L",                    "IV MgSO4 replacement\n(Cisplatin causes Mg²+ wasting)\nCorrect before K+ rises"],
    ["Serum Na+",                    "q6h Day 0, daily thereafter",                 "< 130 or > 150 mEq/L",            "STS infusion contains Na+\nHyponatraemia risk if over-hydrated\nAdjust fluids"],
]
for i, r in enumerate(renal_rows):
    add_check_row(renal_tbl, r, shade=LIGHT_BLUE if i % 2 == 0 else WHITE)

doc.add_paragraph()

# ══════════════════════════════════════════════════════════════
# SECTION 6 – HYPERTENSION SPECIFIC MANAGEMENT
# ══════════════════════════════════════════════════════════════
p_h6 = doc.add_paragraph()
r_h6 = p_h6.add_run("6.  HYPERTENSION-SPECIFIC POSTOPERATIVE MANAGEMENT")
r_h6.bold = True; r_h6.font.size = Pt(11); r_h6.font.name = "Calibri"
r_h6.font.color.rgb = RGBColor.from_string(DARK_BLUE)

htn_tbl = doc.add_table(rows=0, cols=3)
htn_tbl.style = "Table Grid"
add_col_header_row(htn_tbl,
    ["Item", "Protocol", "Checkbox / Time"],
    fills=["1F3864","1F3864","1F3864"])
for c in htn_tbl.rows[0].cells:
    for p in c.paragraphs:
        for r in p.runs:
            r.font.color.rgb = RGBColor.from_string(WHITE)

htn_rows = [
    ["Antihypertensive Review",
     "• List all home antihypertensives\n• Beta-blockers: NEVER stop abruptly → restart via NG/IV if NBM\n• ACE-I / ARBs: hold Day 0-1 (renal protection post-cisplatin), restart Day 2 if Cr stable\n• Thiazides / Loop diuretics: assess K+ before restart",
     "□ Meds reviewed\n□ Beta-blocker continued\n□ ACE-I restart plan noted"],
    ["BP Target Postoperatively",
     "• Target SBP: 130-160 mmHg (avoid aggressive lowering - risk of renal hypoperfusion)\n• If SBP >180 mmHg: IV labetalol or hydralazine\n• If SBP <100 mmHg: hold antihypertensives, IV fluid challenge, vasopressor if needed",
     "□ BP target documented\n□ Nursing escalation criteria set"],
    ["Cardiac Monitoring",
     "• Continuous ECG monitoring first 24 h (HTN + hypokalaemia = arrhythmia risk)\n• 12-lead ECG at 0 h, 6 h, Day 1\n• Watch for: ST changes, prolonged QTc (cisplatin + hypokalaemia)\n• Echo if haemodynamic instability",
     "□ ECG 0h ____\n□ ECG 6h ____\n□ ECG Day 1 ____"],
    ["Analgesic Restrictions",
     "• AVOID NSAIDs (worsen hypertension + renal function)\n• Preferred: paracetamol + opioid (PCA) + epidural/regional if placed\n• Gabapentin/pregabalin: caution in elderly\n• Dexamethasone: monitor BP (steroid effect)",
     "□ NSAIDs avoided\n□ Analgesia plan documented"],
    ["Fluid Management",
     "• Goal-directed fluid therapy: target CVP 8-12 / MAP ≥65 mmHg\n• Avoid excessive free water (risk of dilutional hyponatraemia + STS Na+ load)\n• Maintain adequate intravascular volume for renal perfusion\n• Albumin 4% if oncotic pressure low",
     "□ Fluid balance q6h\n□ Target MAP documented"],
]
for i, r_data in enumerate(htn_rows):
    add_check_row(htn_tbl, r_data, shade=LIGHT_BLUE if i % 2 == 0 else WHITE)

doc.add_paragraph()

# ══════════════════════════════════════════════════════════════
# SECTION 7 – LABS SCHEDULE SUMMARY TABLE
# ══════════════════════════════════════════════════════════════
p_h7 = doc.add_paragraph()
r_h7 = p_h7.add_run("7.  LABORATORY INVESTIGATIONS SCHEDULE")
r_h7.bold = True; r_h7.font.size = Pt(11); r_h7.font.name = "Calibri"
r_h7.font.color.rgb = RGBColor.from_string(GREEN)

lab_tbl = doc.add_table(rows=0, cols=7)
lab_tbl.style = "Table Grid"
add_col_header_row(lab_tbl,
    ["Investigation", "Pre-op", "0-2h", "Day 1", "Day 2", "Day 3", "Day 5"],
    fills=["1E8449","1E8449","1E8449","1E8449","1E8449","1E8449","1E8449"])
for c in lab_tbl.rows[0].cells:
    for p in c.paragraphs:
        for r in p.runs:
            r.font.color.rgb = RGBColor.from_string(WHITE)

labs = [
    ["CBC / FBC",                 "✓", "✓", "✓", "✓", "✓", "✓"],
    ["Serum Creatinine",          "✓", "—", "✓", "✓", "✓", "✓"],
    ["BUN / Urea",                "✓", "—", "✓", "—", "✓", "✓"],
    ["Na+, K+, Cl-, HCO3-",       "✓", "✓", "✓", "✓", "✓", "✓"],
    ["Serum Mg²+",                "✓", "—", "✓", "—", "✓", "—"],
    ["Serum Ca²+ (ionised)",      "✓", "—", "✓", "—", "✓", "—"],
    ["Coagulation (PT/aPTT/INR)", "✓", "—", "✓", "—", "✓", "—"],
    ["Serum Albumin",             "✓", "—", "—", "✓", "—", "✓"],
    ["LFTs (ALT, AST, Bili)",     "✓", "—", "—", "✓", "—", "✓"],
    ["ABG + Lactate",             "✓", "✓", "If concern", "—", "—", "—"],
    ["Urine Na+, K+, Cr",         "—", "—", "—", "If AKI", "—", "—"],
    ["12-lead ECG",               "✓", "On arrival", "✓", "—", "—", "—"],
    ["CXR",                       "✓", "On arrival", "—", "✓", "—", "—"],
]
for i, r_data in enumerate(labs):
    add_check_row(lab_tbl, r_data, shade=LIGHT_BLUE if i % 2 == 0 else WHITE)

doc.add_paragraph()

# ══════════════════════════════════════════════════════════════
# SECTION 8 – ESCALATION CRITERIA
# ══════════════════════════════════════════════════════════════
p_h8 = doc.add_paragraph()
r_h8 = p_h8.add_run("8.  ESCALATION / RED FLAG CRITERIA")
r_h8.bold = True; r_h8.font.size = Pt(11); r_h8.font.name = "Calibri"
r_h8.font.color.rgb = RGBColor.from_string(RED)

esc_tbl = doc.add_table(rows=0, cols=3)
esc_tbl.style = "Table Grid"
add_col_header_row(esc_tbl,
    ["Red Flag Finding", "Likely Cause", "Immediate Action"],
    fills=["922B21","922B21","922B21"])
for c in esc_tbl.rows[0].cells:
    for p in c.paragraphs:
        for r in p.runs:
            r.font.color.rgb = RGBColor.from_string(WHITE)

esc_rows = [
    ["UO < 0.3 mL/kg/h × 2h despite fluids",   "Cisplatin AKI / Hypovolaemia",       "Nephrology consult\nReview STS administration\nCheck Cr, electrolytes STAT"],
    ["K+ < 2.5 mEq/L",                           "Severe hypokalaemia\n(cisplatin + aldosterone + diuretics)", "Central line KCl replacement\nContinuous ECG\nICU escalation"],
    ["Core temp < 35°C",                          "Severe hypothermia",                 "Emergency warming protocol\nABG + coagulation STAT\nICU consultant"],
    ["SBP > 200 mmHg sustained",                  "Uncontrolled hypertension\n+ pain / anxiety", "IV labetalol / hydralazine\nAnalgesia review\nCardiologist if needed"],
    ["New ECG changes / arrhythmia",              "Hypokalaemia + hypomagnesaemia\n+ cisplatin cardiotoxicity", "12-lead ECG\nElectrolyte correction\nCardiology consult"],
    ["Serum Cr rise > 25% Day 1-3",               "Cisplatin nephrotoxicity\n(AKI Stage 1+)", "Stop nephrotoxins\nNephrology\nOptimise fluid balance\nUrine FeNa"],
    ["Hyponatraemia Na+ < 130",                   "STS Na+ load + fluid retention\n(ADH/aldosterone response)", "Restrict free water\nStop hypotonic fluids\nRecheck q4h"],
    ["Altered consciousness / delayed emergence", "Hypothermia / metabolic / drug effect", "Core temp, ABG, glucose, Na+\nReverse residual agents\nCT head if focal deficit"],
]
for i, r_data in enumerate(esc_rows):
    add_check_row(esc_tbl, r_data, shade="FFE0E0" if i % 2 == 0 else "FFF5F5")

doc.add_paragraph()

# ══════════════════════════════════════════════════════════════
# FOOTER
# ══════════════════════════════════════════════════════════════
footer_tbl = doc.add_table(rows=1, cols=1)
footer_tbl.style = "Table Grid"
fc = footer_tbl.cell(0, 0)
shade_cell(fc, DARK_BLUE)
fp = fc.paragraphs[0]
fp.alignment = WD_ALIGN_PARAGRAPH.CENTER
fr = fp.add_run(
    "HIPEC Postoperative Monitoring Checklist  |  Version 1.0  |  July 2026\n"
    "Based on: OVHIPEC-1 Trial | NCCN Guidelines | Berek & Novak's Gynecology | Morgan & Mikhail's Anesthesiology\n"
    "This checklist is a clinical aid only. Always apply individual clinical judgement. Not a substitute for clinical guidelines."
)
fr.font.size = Pt(7); fr.font.name = "Calibri"
fr.font.color.rgb = RGBColor.from_string("BDD7EE")

# ── Save ──────────────────────────────────────────────────────
out_path = "/tmp/workspace/hipec-checklist/HIPEC_Postop_Monitoring_Checklist.docx"
doc.save(out_path)
print(f"Saved: {out_path}")
Running Command

cd /tmp/workspace/hipec-checklist && python generate_checklist.py

Running Command

ls -lh /tmp/workspace/hipec-checklist/HIPEC_Postop_Monitoring_Checklist.docx

Your checklist is ready (45 KB Word document):

HIPEC Postop Monitoring Checklist

Word Document · DOCX


What's Inside (8 Sections)

SectionContents
1. Vitals & HaemodynamicsBP, HR, SpO2, Core Temp, UO, CVP, GCS, Pain - with frequency (0-2h / 2-6h / 6-12h) and alert thresholds
2. Hypothermia Protocol4-grade table (Normal → Mild → Moderate → Severe) with specific warming actions per grade + HIPEC-specific rebound hypothermia warning
3. STS ProtocolPre-HIPEC bolus (9 g/15 min) + Post-HIPEC maintenance (12 g/6h) with timing checkboxes + Days 1-5 renal monitoring; mechanism note
4. KCl ProtocolHypokalaemia grading table (K+ ≥3.5 → <2.5), dose/route/rate limits per grade + cause table (cisplatin tubular wasting, aldosterone, diuretics, third spacing)
5. Renal / AKI MonitoringCr, BUN, eGFR, UO, urine electrolytes, Mg²+, Na+ - with alert values and actions
6. Hypertension-SpecificAntihypertensive restart plan (ACE-I hold Day 0-1, beta-blocker never stop), BP targets, cardiac monitoring, NSAID restrictions
7. Labs ScheduleGrid: Pre-op / 0-2h / Day 1 / Day 2 / Day 3 / Day 5 for all key investigations
8. Red Flag Escalation8 critical findings (oliguria, K+ <2.5, severe hypothermia, SBP >200, arrhythmia, Cr rise, hyponatraemia, altered consciousness) with likely cause and immediate action

Evidence base used: OVHIPEC-1 Phase III RCT, Kurreck et al. (Ann Surg Oncol 2022), Berek & Novak's Gynecology, Morgan & Mikhail's Clinical Anesthesiology 7e, Schwartz's Principles of Surgery.
This is a shared conversation. Sign in to Orris to start your own chat.