Severe Hypercalcemic Crisis is a hyper-acute, metabolic and oncologic emergency defined biochemically by a corrected serum calcium $\ge 14.0\text{ mg/dL}$ ($3.5\text{ mmol/L}$) or ionized calcium $> 3.0\text{ mmol/L}$, accompanied by rapid neurologic deterioration, acute kidney injury (AKI), severe hypovolemia, and life-threatening cardiac dysrhythmias (shortened QT interval, J waves, heart block, ventricular fibrillation).
Hypercalcemia affects up to $10\% - 30\%$ of patients with advanced malignancy (most commonly squamous cell carcinomas of lung, head/neck, and esophagus; breast cancer; multiple myeloma; and renal cell carcinoma) and is the most common metabolic oncologic emergency. The remaining non-malignant cases are overwhelmingly driven by primary hyperparathyroidism, granulomatous diseases (sarcoidosis, tuberculosis), or medication toxicity (calcium carbonate / milk-alkali syndrome, thiazides, lithium, vitamin D toxicity).
Despite clinical practice guidelines from the Endocrine Society, the American Society of Clinical Oncology (ASCO), and the European Society of Endocrinology (ESE), severe morbidity and avoidable mortality persist due to five critical clinical errors:
+---------------------------------------------------------------------------------------------------------+
| SEVERE HYPERCALCEMIC CRISIS DIAGNOSTIC & RESUSCITATION CASCADE |
+---------------------------------------------------------------------------------------------------------+
| 1. RAPID BIOCHEMICAL STAGING & ALBUMIN CORRECTION |
| - Payne Equation: Corrected Ca = Total Ca (mg/dL) + 0.8 * [4.0 - Albumin (g/dL)] |
| - STAGE 1 (Mild) : Corrected Ca 10.5 - 11.9 mg/dL (Asymptomatic; oral hydration & etiology workup)|
| - STAGE 2 (Moderate): Corrected Ca 12.0 - 13.9 mg/dL (Lethargy, constipation, polyuria; saline hydration)|
| - STAGE 3 (Severe / Crisis): Corrected Ca >= 14.0 mg/dL OR Severe Encephalopathy / Coma / QTc Shortening|
+---------------------------------------------------------------------------------------------------------+
|
v
+---------------------------------------------------------------------------------------------------------+
| 2. IMMEDIATE FOUR-PATHWAY ETIOLOGY SIEVE |
| - Intact PTH Elevated / Inappropriately Normal -> Primary / Tertiary Hyperparathyroidism |
| - Suppressed PTH (< 10 pg/mL) -> Order PTHrP, 25-OH Vit D, 1,25-(OH)2 Vit D, SPEP/UPEP/SFLC: |
| * PTHrP Elevated: Humoral Hypercalcemia of Malignancy (HHM - Lung, H&N, Renal) |
| * 1,25-(OH)2 Vit D Elevated: Granulomatous (Sarcoidosis, TB) or Lymphoma -> STEROIDS FIRST-LINE |
| * Both Normal + Lytic Lesions: Multiple Myeloma / Osteolytic Bone Mets -> BISPHOSPHONATE / DENOSUMAB|
+---------------------------------------------------------------------------------------------------------+
|
v
+---------------------------------------------------------------------------------------------------------+
| 3. MULTI-PHASE EMERGENCY PHARMACOTHERAPY CASCADE |
| - Phase 1: Aggressive Isotonic Saline Resuscitation (200 - 300 mL/hr to maintain UOP 100-150 mL/hr) |
| Re-expands intravascular volume & prompts passive calcium kaliuresis / calciuresis. |
| - Phase 2: Rapid Calcitonin Bridge (Salmon Calcitonin 4 - 8 IU/kg IM/SC q12h x 48 hours) |
| Onset in 2-4 hours; reduces Ca by 1-2 mg/dL. Stop at 48 hours due to tachyphylaxis. |
| - Phase 3: Potent Anti-Resorptive Therapy (Select based on Renal Function): |
| * If eGFR >= 30 mL/min: Zoledronic Acid 4 mg IV over 15 min (Pamidronate 60-90 mg alternative). |
| * If eGFR < 30 mL/min OR Dialysis: Denosumab 120 mg SubQ on Day 1, 8, 15, then q4w (Zero renal tox)|
| - Phase 4: Glucocorticoids (Prednisone 40-60 mg/day PO/IV) if Lymphoma, Myeloma, or Granulomatous. |
| - Loop Diuretic (Furosemide 20-40 mg IV): STRICTLY GATED to volume overload / pulmonary edema ONLY. |
+---------------------------------------------------------------------------------------------------------+
|
v
+---------------------------------------------------------------------------------------------------------+
| 4. EMERGENT LOW-CALCIUM HEMODIALYSIS CRITERIA |
| - Corrected Ca >= 18.0 mg/dL OR Intractable Coma / Stupor |
| - Anuric / Oliguric Acute Kidney Injury unable to tolerate saline resuscitation |
| - Severe Congestive Heart Failure / Volume Overload with refractory hypercalcemia |
| - Use zero or low-calcium dialysate (Ca 0.0 - 1.0 mmol/L) with regional citrate or heparin. |
+---------------------------------------------------------------------------------------------------------+
Serum calcium circulates in three equilibrium fractions: ionized / free ($~50\%$), protein-bound to albumin ($~40\%$), and complexed with anions (phosphate, citrate, bicarbonate $~10\%$). Because routine hospital analyzers quantify total serum calcium, changes in serum albumin alter total measurements without reflecting physiological ionized calcium:
\[\text{Corrected Calcium (mg/dL)} = \text{Measured Total Calcium (mg/dL)} + 0.8 \times \left(4.0 - \text{Serum Albumin (g/dL)}\right)\] \[\text{Corrected Calcium (mmol/L)} = \text{Measured Total Calcium (mmol/L)} + 0.02 \times \left(40.0 - \text{Serum Albumin (g/L)}\right)\]| Pathway | Primary Mechanism | Laboratory Hallmark | Primary Diseases | Targeted Therapeutics |
|---|---|---|---|---|
| 1. PTH-Dependent | Autonomous PTH hypersecretion | Intact $\text{PTH} > 65\ \text{pg/mL}$ or normal in hypercalcemia | Parathyroid adenoma, hyperplasia, MEN1/2A | Parathyroidectomy, Cinacalcet |
| 2. Humoral Malignancy (HHM) | Tumor PTHrP secretion mimicking PTH | $\text{PTH} < 10\ \text{pg/mL}$, $\text{PTHrP} > 2.0\ \text{pmol/L}$ | Squamous lung, head/neck, esophageal, RCC | Saline, Calcitonin, Zoledronate/Denosumab |
| 3. Vitamin D Mediated | Extra-renal $1\alpha$-hydroxylase calcitriol synthesis | $\text{PTH} < 10\ \text{pg/mL}$, $1,25\text{-(OH)}_2\text{D} > 70\ \text{pg/mL}$ | Sarcoidosis, Hodgkin/Non-Hodgkin Lymphoma, TB | Systemic Glucocorticoids (Prednisone) |
| 4. Local Osteolytic | Cytokine/chemokine osteoclast activation | $\text{PTH} < 10$, $\text{PTHrP}$ normal, Lytic lesions | Multiple Myeloma, Breast carcinoma bone mets | Zoledronate, Denosumab, Dexamethasone |
The following complete, zero-dependency Python clinical decision-support engine provides automated Payne albumin-correction, four-pathway etiology triage, weight-tiered fluid and salmon calcitonin titrators, GFR-gated bisphosphonate vs. denosumab selection, and emergent low-calcium hemodialysis criteria.
#!/usr/bin/env python3
"""
OpenPHR Cookbook 381: Offline Clinical Oncology & Critical Care Engine
Severe Hypercalcemic Crisis Staging, Four-Pathway Etiology Sieve,
Calcitonin/Bisphosphonate/Denosumab Titrator & Hemodialysis Protocol.
Dependencies: Python 3.8+ (Standard Library Only).
"""
from dataclasses import dataclass, field
from enum import Enum
from typing import Dict, List, Optional, Tuple, Union
class HypercalcemiaSeverityTier(Enum):
CRISIS_SEVERE = "Severe Hypercalcemic Crisis (Corrected Ca >= 14.0 mg/dL or Life-Threatening Encephalopathy)"
MODERATE = "Moderate Hypercalcemia (Corrected Ca 12.0 - 13.9 mg/dL)"
MILD = "Mild Hypercalcemia (Corrected Ca 10.5 - 11.9 mg/dL)"
NORMAL_EUCALCEMIA = "Eucalcemia (Corrected Ca 8.5 - 10.4 mg/dL)"
HYPOCALCEMIA = "Hypocalcemia (Corrected Ca < 8.5 mg/dL)"
class HypercalcemiaEtiology(Enum):
PTH_DEPENDENT = "Primary / Tertiary Hyperparathyroidism (Elevated / Inappropriately Normal Intact PTH)"
HUMORAL_MALIGNANCY_PTHRP = "Humoral Hypercalcemia of Malignancy (HHM - Elevated PTHrP with Suppressed PTH)"
VITAMIN_D_CALCITRIOL_MEDIATED = "Calcitriol-Mediated Hypercalcemia (Elevated 1,25-OH2 Vit D: Lymphoma or Granulomatous Disease)"
LOCAL_OSTEOLYTIC_METASTASES = "Local Osteolytic Hypercalcemia (Multiple Myeloma or Extensive Skeletal Metastases)"
EXOGENOUS_TOXICITY = "Exogenous Toxicity / Milk-Alkali / Medication-Induced (Thiazides, Lithium, Vitamin D Toxicity)"
INDETERMINATE = "Indeterminate Etiology - Requires Full PTH, PTHrP, and Calcitriol Panel"
class AntiResorptiveAgent(Enum):
ZOLEDRONIC_ACID = "Zoledronic Acid (Reclast / Zometa) 4 mg IV over 15 minutes"
DENOSUMAB = "Denosumab (Xgeva) 120 mg Subcutaneous Injection"
PAMIDRONATE = "Pamidronate Disodium (Aredia) 60 to 90 mg IV over 2 to 4 hours"
GLUCOCORTICOIDS_ONLY = "Systemic Glucocorticoids (Prednisone 40-60 mg/day PO or Hydrocortisone 100 mg IV q8h)"
HEMODIALYSIS_ONLY = "Low-Calcium / Zero-Calcium Hemodialysis (Severe Refractory / GFR < 15 with Overload)"
@dataclass
class HypercalcemiaPatientPresentation:
# Patient demographics
age_years: float
weight_kg: float
is_adult: bool
# Laboratory parameters
measured_total_calcium_mg_dl: float
serum_albumin_g_dl: float
serum_creatinine_mg_dl: float
estimated_gfr_ml_min: float
serum_potassium_meq_l: float = 4.0
serum_magnesium_mg_dl: float = 2.0
serum_phosphorus_mg_dl: float = 2.8
ionized_calcium_mmol_l: Optional[float] = None
# Endocrine & Tumor markers
intact_pth_pg_ml: Optional[float] = None
pthrop_pmol_l: Optional[float] = None # Normal < 2.0 pmol/L
vit_d_25_hydroxy_ng_ml: Optional[float] = None # Calcidiol
vit_d_1_25_dihydroxy_pg_ml: Optional[float] = None # Calcitriol (Normal 20-76 pg/mL)
spep_free_light_chains_positive: bool = False
known_malignancy_type: Optional[str] = None # e.g., "Squamous Cell Lung", "Multiple Myeloma", "Breast"
known_sarcoidosis_or_tb: bool = False
# Clinical manifestations
severe_encephalopathy_coma_stupor: bool = False
qtc_interval_shortened: bool = False
cardiac_arrhythmias_present: bool = False
volume_overload_pulmonary_edema: bool = False
anuric_or_oliguric_aki: bool = False
@dataclass
class PayneAlbuminCorrectionResult:
measured_total_calcium_mg_dl: float
serum_albumin_g_dl: float
corrected_calcium_mg_dl: float
corrected_calcium_mmol_l: float
severity_tier: HypercalcemiaSeverityTier
is_crisis: bool
clinical_interpretation: str
@dataclass
class HypercalcemiaDecisionReport:
albumin_correction: PayneAlbuminCorrectionResult
etiology_classification: HypercalcemiaEtiology
etiology_rationale: str
saline_resuscitation_protocol: Dict[str, Union[str, float]]
calcitonin_bridge_protocol: Dict[str, Union[str, float]]
antiresorptive_selection: AntiResorptiveAgent
antiresorptive_dosing_instructions: Dict[str, str]
furosemide_loop_diuretic_sentinel: Dict[str, str]
steroid_protocol_for_calcitriol: Optional[Dict[str, str]]
emergent_dialysis_evaluation: Dict[str, Union[bool, str, List[str]]]
class AcuteHypercalcemiaEngine:
"""
Clinical Decision Support Engine for Severe Hypercalcemic Crisis Staging,
Etiology Identification, Anti-Resorptive Titration, and Dialysis Gating.
"""
@staticmethod
def calculate_payne_corrected_calcium(
total_ca: float, albumin: float, has_encephalopathy: bool
) -> PayneAlbuminCorrectionResult:
"""
Calculates albumin-corrected calcium using the validated Payne equation:
Corrected Calcium (mg/dL) = Total Calcium (mg/dL) + 0.8 * (4.0 - Albumin g/dL).
"""
corrected_ca = round(total_ca + 0.8 * (4.0 - albumin), 2)
corrected_mmol = round(corrected_ca * 0.25, 2)
if corrected_ca >= 14.0 or has_encephalopathy:
tier = HypercalcemiaSeverityTier.CRISIS_SEVERE
is_crisis = True
interp = (
f"Severe Hypercalcemic Crisis (Corrected Ca {corrected_ca} mg/dL [{corrected_mmol} mmol/L]). "
"Immediate inpatient ICU admission, aggressive IV isotonic hydration, salmon calcitonin bridge, "
"and targeted anti-resorptive therapy indicated."
)
elif corrected_ca >= 12.0:
tier = HypercalcemiaSeverityTier.MODERATE
is_crisis = False
interp = (
f"Moderate Hypercalcemia (Corrected Ca {corrected_ca} mg/dL). Saline volume expansion and "
"anti-resorptive therapy indicated to prevent escalation to crisis."
)
elif corrected_ca >= 10.5:
tier = HypercalcemiaSeverityTier.MILD
is_crisis = False
interp = (
f"Mild Hypercalcemia (Corrected Ca {corrected_ca} mg/dL). Outpatient/inpatient oral hydration "
"and diagnostic etiology workup indicated."
)
elif corrected_ca >= 8.5:
tier = HypercalcemiaSeverityTier.NORMAL_EUCALCEMIA
is_crisis = False
interp = f"Normal corrected serum calcium ({corrected_ca} mg/dL)."
else:
tier = HypercalcemiaSeverityTier.HYPOCALCEMIA
is_crisis = False
interp = f"Hypocalcemia (Corrected Ca {corrected_ca} mg/dL)."
return PayneAlbuminCorrectionResult(
measured_total_calcium_mg_dl=total_ca,
serum_albumin_g_dl=albumin,
corrected_calcium_mg_dl=corrected_ca,
corrected_calcium_mmol_l=corrected_mmol,
severity_tier=tier,
is_crisis=is_crisis,
clinical_interpretation=interp,
)
@staticmethod
def identify_etiology(
p: HypercalcemiaPatientPresentation
) -> Tuple[HypercalcemiaEtiology, str]:
"""
Triages hypercalcemia across the 4 primary mechanistic pathways:
1. PTH-Dependent: Intact PTH >= 20 pg/mL (inappropriately normal or high).
2. Humoral Malignancy: Suppressed PTH (< 10-15) + Elevated PTHrP (> 2.0 pmol/L).
3. Calcitriol Mediated: Suppressed PTH + Elevated 1,25-(OH)2 Vit D (> 70 pg/mL).
4. Local Osteolytic: Suppressed PTH + Normal PTHrP + Multiple Myeloma / Bone Mets.
"""
if p.intact_pth_pg_ml is not None:
if p.intact_pth_pg_ml >= 20.0:
return (
HypercalcemiaEtiology.PTH_DEPENDENT,
f"Intact PTH is inappropriately elevated/normal ({p.intact_pth_pg_ml} pg/mL in the setting of hypercalcemia). Confirms PTH-dependent hyperparathyroidism.",
)
if p.vit_d_1_25_dihydroxy_pg_ml is not None and p.vit_d_1_25_dihydroxy_pg_ml > 70.0:
return (
HypercalcemiaEtiology.VITAMIN_D_CALCITRIOL_MEDIATED,
f"Elevated 1,25-(OH)2 Vitamin D ({p.vit_d_1_25_dihydroxy_pg_ml} pg/mL > 70 pg/mL) with suppressed PTH. Confirms extra-renal 1-alpha-hydroxylase calcitriol synthesis (Lymphoma or Granulomatous Disease).",
)
if p.pthrop_pmol_l is not None and p.pthrop_pmol_l >= 2.0:
return (
HypercalcemiaEtiology.HUMORAL_MALIGNANCY_PTHRP,
f"Suppressed PTH with elevated PTHrP ({p.pthrop_pmol_l} pmol/L >= 2.0 pmol/L). Confirms Humoral Hypercalcemia of Malignancy (HHM).",
)
if p.spep_free_light_chains_positive or (
p.known_malignancy_type and "myeloma" in p.known_malignancy_type.lower()
):
return (
HypercalcemiaEtiology.LOCAL_OSTEOLYTIC_METASTASES,
"Suppressed PTH with paraproteinemia / Multiple Myeloma or extensive skeletal metastases. Confirms Local Osteolytic Hypercalcemia.",
)
if p.known_sarcoidosis_or_tb:
return (
HypercalcemiaEtiology.VITAMIN_D_CALCITRIOL_MEDIATED,
"Clinical history of active granulomatous disease (Sarcoidosis/TB) with suppressed PTH. Presumed Calcitriol-mediated hypercalcemia.",
)
return (
HypercalcemiaEtiology.INDETERMINATE,
"Suppressed PTH without definitive PTHrP, 1,25-Vit D, or skeletal imaging confirmation. Complete diagnostic panel pending.",
)
@staticmethod
def calculate_saline_resuscitation(
weight_kg: float, is_overloaded: bool
) -> Dict[str, Union[str, float]]:
"""
Calculates aggressive isotonic crystalloid volume expansion.
Most hypercalcemic crisis patients have a 3 to 6 liter intravascular volume deficit
due to calcium-induced nephrogenic diabetes insipidus and vomiting.
"""
if is_overloaded:
return {
"initial_bolus_ml": 0.0,
"maintenance_rate_ml_hr": 50.0,
"fluid_type": "0.9% Normal Saline (Restricted)",
"clinical_guidance": (
"CAUTION: Patient has baseline congestive heart failure / volume overload. "
"Aggressive saline boluses are contraindicated. Maintain slow infusion with invasive CVP "
"or bedside lung ultrasound (B-line) monitoring. Prepare for emergent hemodialysis."
),
}
initial_bolus = 1000.0 # 1-2 L in first 2-4 hours
maint_rate = 250.0 # 200 - 300 mL/hr titrated to urine output 100 - 150 mL/hr
return {
"initial_bolus_ml": initial_bolus,
"maintenance_rate_ml_hr": maint_rate,
"fluid_type": "0.9% Normal Saline (Isotonic Crystalloid)",
"infusion_protocol": (
f"Administer {initial_bolus:.0f} mL 0.9% Normal Saline over the first 1-2 hours. "
f"Continue maintenance at {maint_rate:.0f} mL/hour. Titrate to target urine output of "
"100 to 150 mL/hour to drive proximal tubule calcium excretion."
),
"monitoring_sentinels": (
"Monitor serum sodium, potassium, and magnesium every 4-6 hours. Saline-induced kaliuresis "
"and magnesiuria require proactive replacement to prevent secondary hypokalemia / hypomagnesemia."
),
}
@staticmethod
def calculate_calcitonin_bridge(
weight_kg: float
) -> Dict[str, Union[str, float]]:
"""
Calculates Salmon Calcitonin bridging regimen:
Dose: 4 to 8 IU/kg IM or SubQ every 12 hours.
Rapid onset (2-4 hours), but efficacy wanes after 48 hours due to tachyphylaxis.
"""
dose_4iu = round(weight_kg * 4.0, 0)
dose_8iu = round(weight_kg * 8.0, 0)
return {
"recommended_agent": "Salmon Calcitonin (Miacalcin) Injection",
"dose_range_iu": f"{dose_4iu:.0f} - {dose_8iu:.0f} IU (4 to 8 IU/kg)",
"route_and_frequency": "Subcutaneous or Intramuscular injection every 12 hours (can increase to q6h in refractory crisis)",
"onset_of_action": "Rapid: 2 to 4 hours (Lowers corrected calcium by 1.0 to 2.0 mg/dL)",
"duration_and_tachyphylaxis_sentinel": (
"MANDATORY DISCONTINUATION AT 48 HOURS: Calcitonin receptors rapidly down-regulate, "
"leading to tachyphylaxis and loss of efficacy after 48 hours. Calcitonin is strictly a "
"fast-acting bridge while waiting 48-72 hours for bisphosphonates or denosumab to take effect."
),
}
@classmethod
def select_antiresorptive_therapy(
cls,
egfr: float,
etiology: HypercalcemiaEtiology,
is_dialysis_dependent: bool,
) -> Tuple[AntiResorptiveAgent, Dict[str, str]]:
"""
Selects optimal anti-resorptive therapy respecting renal safety gates:
- eGFR >= 30 mL/min: Zoledronic acid 4 mg IV (preferred first-line).
- eGFR < 30 mL/min or Dialysis: Denosumab 120 mg SC (avoids bisphosphonate nephrotoxicity).
- Calcitriol-mediated: Systemic glucocorticoids first-line.
"""
if etiology == HypercalcemiaEtiology.VITAMIN_D_CALCITRIOL_MEDIATED:
agent = AntiResorptiveAgent.GLUCOCORTICOIDS_ONLY
instructions = {
"drug": "Prednisone (or IV Hydrocortisone / Methylprednisolone)",
"dose": "Prednisone 40 to 60 mg PO daily (or IV Methylprednisolone 20-40 mg q12h)",
"mechanism": "Inhibits 1-alpha-hydroxylase activity and decreases intestinal calcium absorption in calcitriol-driven hypercalcemia.",
"renal_adjustment": "No dose adjustment required for renal impairment.",
}
return agent, instructions
if egfr < 30.0 or is_dialysis_dependent:
agent = AntiResorptiveAgent.DENOSUMAB
instructions = {
"drug": "Denosumab (Xgeva) Monoclonal Antibody (RANKL Inhibitor)",
"dose": "120 mg Subcutaneously on Day 1, Day 8, Day 15, and then every 4 weeks",
"mechanism": "Binds and neutralizes RANKL, preventing osteoclast maturation and bone resorption.",
"renal_advantage": (
"ZERO RENAL TOXICITY: Denosumab is cleared via the reticuloendothelial system and does not "
"undergo renal filtration. It is the MANDATED agent when eGFR < 30 mL/min, where Zoledronic Acid "
"is strictly contraindicated due to risk of irreversible acute tubular necrosis."
),
"hypocalcemia_sentinel": (
"HIGH RISK OF PROTRACTED SEVERE HYPOCALCEMIA in severe CKD/dialysis patients. "
"Monitor serum calcium closely for 2-4 weeks post-injection."
),
}
return agent, instructions
# Standard eGFR >= 30 mL/min: Zoledronic Acid
agent = AntiResorptiveAgent.ZOLEDRONIC_ACID
instructions = {
"drug": "Zoledronic Acid (Zometa / Reclast) Intravenous Bisphosphonate",
"dose": "4.0 mg in 100 mL Normal Saline or D5W infused IV over AT LEAST 15 MINUTES",
"mechanism": "Inhibits farnesyl pyrophosphate synthase in mature osteoclasts, inducing osteoclast apoptosis.",
"renal_safety_gate": (
f"Permissible based on patient's eGFR ({egfr} mL/min >= 30 mL/min cutoff). "
"Ensure patient is fully hydrated before infusion to prevent acute phase nephrotoxicity."
),
"onset": "Takes 48 to 72 hours to achieve nadir calcium; paired with salmon calcitonin for early 48h coverage.",
}
return agent, instructions
@staticmethod
def evaluate_loop_diuretic_sentinel(
is_overloaded: bool, uremic_failure: bool
) -> Dict[str, str]:
"""
Enforces strict safety guardrails on loop diuretics (furosemide).
Loop diuretics are strictly contraindicated until full euvolemia is restored.
"""
if is_overloaded:
status = "PERMITTED WITH CAUTION (Strictly for Volume Overload Management)"
rule = (
"Furosemide (20 - 40 mg IV) is permitted ONLY to manage clinical pulmonary edema or "
"iatrogenic volume overload following saline resuscitation. It does NOT replace hemodialysis "
"in oliguric renal failure."
)
else:
status = "STRICTLY CONTRAINDICATED IN DEHYDRATED PATIENTS"
rule = (
"DO NOT ADMINISTER FUROSEMIDE OR LOOP DIURETICS TO DEHYDRATED PATIENTS. "
"Early loop diuretic use aggravates hypovolemia, impairs GFR, stimulates proximal tubular "
"calcium reabsorption, and increases mortality. Modern Endocrine Society guidelines strictly "
"forbid routine diuretic use unless overt hypervolemia/pulmonary edema supervenes."
)
return {
"sentinel_status": status,
"clinical_rule": rule,
}
@staticmethod
def evaluate_dialysis_criteria(
corrected_ca: float,
p: HypercalcemiaPatientPresentation,
) -> Dict[str, Union[bool, str, List[str]]]:
"""
Evaluates emergency low-calcium hemodialysis criteria:
- Corrected Calcium >= 18.0 mg/dL (4.5 mmol/L)
- Corrected Calcium >= 14.0 mg/dL with severe neurological compromise (coma, stupor)
- Severe oliguric/anuric AKI or advanced CKD unable to tolerate saline volume expansion
- Volume overload / pulmonary edema with refractory hypercalcemia
"""
reasons = []
if corrected_ca >= 18.0:
reasons.append(f"Extreme life-threatening hypercalcemia (Corrected Ca {corrected_ca} mg/dL >= 18.0 mg/dL)")
if corrected_ca >= 14.0 and p.severe_encephalopathy_coma_stupor:
reasons.append("Severe acute encephalopathy / coma refractory to medical therapy")
if p.anuric_or_oliguric_aki or (p.estimated_gfr_ml_min < 15.0 and p.volume_overload_pulmonary_edema):
reasons.append("Anuric/oliguric acute kidney injury or severe heart failure unable to tolerate saline hydration")
if p.cardiac_arrhythmias_present:
reasons.append("Life-threatening cardiac dysrhythmias / severe QTc shortening")
needs_dialysis = len(reasons) > 0
dialysate_protocol = (
"Dialysis Prescription: Perform emergent hemodialysis using ZERO-CALCIUM (0.0 mmol/L) or "
"LOW-CALCIUM (1.0 mmol/L) dialysate bath. Continuous Renal Replacement Therapy (CRRT / CVVHDF) "
"with regional citrate anticoagulation provides rapid, smooth calcium clearance without rebound."
if needs_dialysis
else "Patient does not meet emergent hemodialysis criteria; proceed with medical pharmacotherapy cascade."
)
return {
"dialysis_indicated": needs_dialysis,
"triggers_identified": reasons if reasons else ["None - Medical management appropriate"],
"dialysis_prescription": dialysate_protocol,
}
@classmethod
def run_clinical_assessment(
cls, p: HypercalcemiaPatientPresentation
) -> HypercalcemiaDecisionReport:
"""
Runs the end-to-end clinical assessment.
"""
correction = cls.calculate_payne_corrected_calcium(
p.measured_total_calcium_mg_dl,
p.serum_albumin_g_dl,
p.severe_encephalopathy_coma_stupor,
)
etiology, etiology_rationale = cls.identify_etiology(p)
saline = cls.calculate_saline_resuscitation(
p.weight_kg, p.volume_overload_pulmonary_edema
)
calcitonin = cls.calculate_calcitonin_bridge(p.weight_kg)
antiresorptive_agent, antiresorptive_dosing = cls.select_antiresorptive_therapy(
p.estimated_gfr_ml_min,
etiology,
p.anuric_or_oliguric_aki or p.estimated_gfr_ml_min < 15.0,
)
furosemide_sentinel = cls.evaluate_loop_diuretic_sentinel(
p.volume_overload_pulmonary_edema, p.anuric_or_oliguric_aki
)
steroids = None
if etiology == HypercalcemiaEtiology.VITAMIN_D_CALCITRIOL_MEDIATED:
steroids = {
"indication": "Calcitriol-Mediated Hypercalcemia (Lymphoma / Sarcoidosis / Granulomatous)",
"regimen": "Prednisone 40 to 60 mg PO daily (or IV Methylprednisolone 20-40 mg q12h)",
"duration": "Continue for 7 to 10 days until calcium normalizes, then taper under specialist guidance.",
}
dialysis = cls.evaluate_dialysis_criteria(correction.corrected_calcium_mg_dl, p)
return HypercalcemiaDecisionReport(
albumin_correction=correction,
etiology_classification=etiology,
etiology_rationale=etiology_rationale,
saline_resuscitation_protocol=saline,
calcitonin_bridge_protocol=calcitonin,
antiresorptive_selection=antiresorptive_agent,
antiresorptive_dosing_instructions=antiresorptive_dosing,
furosemide_loop_diuretic_sentinel=furosemide_sentinel,
steroid_protocol_for_calcitriol=steroids,
emergent_dialysis_evaluation=dialysis,
)
# =====================================================================
# SELF-CONTAINED CLINICAL VALIDATION SUITE
# =====================================================================
def verify_clinical_scenarios():
print("=" * 80)
print("OpenPHR Cookbook 381: Severe Hypercalcemic Crisis & Anti-Resorptive Suite")
print("=" * 80)
# Test Case 1: Severe Squamous Lung HHM in Renal Failure (eGFR 22, Total Ca 13.6, Alb 2.0 -> Corr Ca 15.2)
pt_hhm = HypercalcemiaPatientPresentation(
age_years=66.0,
weight_kg=72.0,
is_adult=True,
measured_total_calcium_mg_dl=13.6,
serum_albumin_g_dl=2.0, # Corrected Ca = 13.6 + 0.8*(4.0 - 2.0) = 15.2 mg/dL!
serum_creatinine_mg_dl=2.8,
estimated_gfr_ml_min=22.0, # Severe CKD / AKI (GFR < 30)
intact_pth_pg_ml=6.0, # Suppressed PTH
pthrop_pmol_l=5.4, # High PTHrP -> HHM
known_malignancy_type="Squamous Cell Lung Carcinoma",
severe_encephalopathy_coma_stupor=True,
qtc_interval_shortened=True,
)
rep1 = AcuteHypercalcemiaEngine.run_clinical_assessment(pt_hhm)
assert rep1.albumin_correction.is_crisis is True, "Must be crisis with corrected Ca 15.2 mg/dL"
assert rep1.albumin_correction.corrected_calcium_mg_dl == 15.2
assert rep1.etiology_classification == HypercalcemiaEtiology.HUMORAL_MALIGNANCY_PTHRP
assert rep1.antiresorptive_selection == AntiResorptiveAgent.DENOSUMAB, "Must select Denosumab because GFR < 30"
assert rep1.emergent_dialysis_evaluation["dialysis_indicated"] is True, "Encephalopathy + Ca >= 14 triggers dialysis readiness"
print("[*] Test Case 1 (Severe HHM with GFR 22 mL/min - Denosumab Gate) PASSED")
print(f" - Measured Total Ca: {rep1.albumin_correction.measured_total_calcium_mg_dl} mg/dL | Albumin: {rep1.albumin_correction.serum_albumin_g_dl} g/dL")
print(f" - Payne Corrected Ca: {rep1.albumin_correction.corrected_calcium_mg_dl} mg/dL ({rep1.albumin_correction.severity_tier.value})")
print(f" - Etiology: {rep1.etiology_classification.value}")
print(f" - Anti-Resorptive Selected: {rep1.antiresorptive_selection.value}")
print(f" - Calcitonin Dose: {rep1.calcitonin_bridge_protocol['dose_range_iu']} ({rep1.calcitonin_bridge_protocol['route_and_frequency']})")
# Test Case 2: Sarcoidosis Calcitriol-Mediated Hypercalcemia (eGFR 65, 1,25-VitD 110 pg/mL)
pt_sarcoid = HypercalcemiaPatientPresentation(
age_years=38.0,
weight_kg=68.0,
is_adult=True,
measured_total_calcium_mg_dl=12.4,
serum_albumin_g_dl=3.5, # Corrected Ca = 12.4 + 0.8*(0.5) = 12.8 mg/dL
serum_creatinine_mg_dl=1.1,
estimated_gfr_ml_min=65.0,
intact_pth_pg_ml=8.0,
vit_d_1_25_dihydroxy_pg_ml=110.0, # High Calcitriol
known_sarcoidosis_or_tb=True,
)
rep2 = AcuteHypercalcemiaEngine.run_clinical_assessment(pt_sarcoid)
assert rep2.etiology_classification == HypercalcemiaEtiology.VITAMIN_D_CALCITRIOL_MEDIATED
assert rep2.antiresorptive_selection == AntiResorptiveAgent.GLUCOCORTICOIDS_ONLY
assert rep2.steroid_protocol_for_calcitriol is not None
print("\n[*] Test Case 2 (Sarcoidosis Calcitriol-Mediated - Glucocorticoid Protocol) PASSED")
print(f" - Corrected Ca: {rep2.albumin_correction.corrected_calcium_mg_dl} mg/dL")
print(f" - Etiology: {rep2.etiology_classification.value}")
print(f" - Primary Therapy: {rep2.steroid_protocol_for_calcitriol['regimen']}")
print("\n>>> ALL CLINICAL VERIFICATION TESTS PASSED (100% CONCORDANCE) <<<")
if __name__ == "__main__":
verify_clinical_scenarios()