.crrt-calculator-container {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
max-width: 800px;
margin: 0 auto;
background: #fff;
padding: 20px;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}
.crrt-calc-header {
text-align: center;
margin-bottom: 30px;
background-color: #0056b3;
color: white;
padding: 20px;
border-radius: 8px 8px 0 0;
margin: -20px -20px 20px -20px;
}
.crrt-calc-header h2 {
margin: 0;
font-size: 24px;
}
.crrt-input-group {
margin-bottom: 20px;
}
.crrt-input-group label {
display: block;
margin-bottom: 8px;
font-weight: 600;
color: #333;
}
.crrt-input-group input {
width: 100%;
padding: 12px;
border: 1px solid #ddd;
border-radius: 4px;
font-size: 16px;
box-sizing: border-box;
}
.crrt-input-group input:focus {
border-color: #0056b3;
outline: none;
box-shadow: 0 0 0 2px rgba(0,86,179,0.2);
}
.crrt-btn {
width: 100%;
background-color: #0056b3;
color: white;
border: none;
padding: 15px;
font-size: 18px;
font-weight: bold;
border-radius: 4px;
cursor: pointer;
transition: background-color 0.2s;
margin-top: 10px;
}
.crrt-btn:hover {
background-color: #004494;
}
.crrt-result-box {
background-color: #f8f9fa;
border: 1px solid #e9ecef;
padding: 20px;
margin-top: 25px;
border-radius: 4px;
display: none;
}
.crrt-result-item {
margin-bottom: 15px;
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1px solid #e0e0e0;
padding-bottom: 10px;
}
.crrt-result-item:last-child {
border-bottom: none;
margin-bottom: 0;
padding-bottom: 0;
}
.crrt-result-label {
font-weight: 600;
color: #555;
}
.crrt-result-value {
font-size: 20px;
font-weight: bold;
color: #0056b3;
}
.crrt-article {
margin-top: 40px;
line-height: 1.6;
color: #444;
}
.crrt-article h3 {
color: #2c3e50;
border-bottom: 2px solid #0056b3;
padding-bottom: 10px;
margin-top: 30px;
}
.crrt-article p {
margin-bottom: 15px;
}
.crrt-article ul {
margin-bottom: 20px;
padding-left: 20px;
}
.crrt-article li {
margin-bottom: 8px;
}
.error-msg {
color: #dc3545;
font-weight: bold;
display: none;
margin-top: 10px;
text-align: center;
}
Please enter a valid patient weight greater than zero.
Understanding CRRT Effluent Flow Rate
Continuous Renal Replacement Therapy (CRRT) is a critical intervention for hemodynamically unstable patients with Acute Kidney Injury (AKI). The efficacy of this therapy is largely determined by the Effluent Flow Rate, which represents the total volume of fluid leaving the hemofilter per hour. This metric is the primary surrogate for the "dose" of dialysis delivered to the patient.
The Effluent Flow Calculation Formula
The total effluent flow rate ($Q_{eff}$) is calculated by summing the flow rates of all fluids exiting the filter. This includes the spent dialysate, the replacement fluid (which eventually exits as effluent), and the net fluid removed from the patient.
Formula:
$Q_{eff} = Q_d + Q_{rf} + Q_{net}$
- $Q_d$ (Dialysate Flow Rate): The rate at which dialysate solution flows counter-current to blood flow.
- $Q_{rf}$ (Replacement Fluid Rate): The sum of pre-filter and post-filter replacement solutions.
- $Q_{net}$ (Net Ultrafiltration Rate): The rate of fluid volume removed from the patient to achieve fluid balance goals.
Calculating the Effluent Dose (mL/kg/h)
To standardize the therapy across patients of different sizes, the absolute effluent flow rate is normalized by the patient's weight. This provides the therapeutic dose.
Dose Formula:
$Dose = \frac{Q_{eff} (mL/h)}{Patient Weight (kg)}$
KDIGO Guidelines and Clinical Targets
The Kidney Disease: Improving Global Outcomes (KDIGO) clinical practice guidelines recommend delivering an effluent dose of 20–25 mL/kg/h. However, because therapy interruptions (due to clotting, bag changes, or transport) reduce the actual delivered dose, clinicians often prescribe a slightly higher target dose of 25–30 mL/kg/h to ensure the minimum adequate dose is achieved over a 24-hour period.
Accurate calculation of the effluent flow rate is essential to prevent both under-dosing (which leads to inadequate toxin clearance) and over-dosing (which can wash out essential nutrients and antibiotics).
function calculateCRRT() {
// Get input values
var weightStr = document.getElementById('crrt_patient_weight').value;
var dialysateStr = document.getElementById('crrt_dialysate_flow').value;
var replacementStr = document.getElementById('crrt_replacement_flow').value;
var netUfStr = document.getElementById('crrt_net_uf').value;
// Parse inputs
var weight = parseFloat(weightStr);
var dialysate = parseFloat(dialysateStr);
var replacement = parseFloat(replacementStr);
var netUf = parseFloat(netUfStr);
// Error handling elements
var errorDiv = document.getElementById('crrt_error');
var resultDiv = document.getElementById('crrt_results');
// Reset display
errorDiv.style.display = 'none';
resultDiv.style.display = 'none';
// Validation: Weight is mandatory and must be > 0
if (isNaN(weight) || weight <= 0) {
errorDiv.style.display = 'block';
return;
}
// Treat empty fields as 0
if (isNaN(dialysate)) dialysate = 0;
if (isNaN(replacement)) replacement = 0;
if (isNaN(netUf)) netUf = 0;
// Calculation Logic
// 1. Total Effluent Flow Rate (Qeff) = Qd + Qrf + Qnet
var totalEffluent = dialysate + replacement + netUf;
// 2. Dose = Qeff / Weight
var dose = totalEffluent / weight;
// Determine Status based on KDIGO (20-25 recommended, usually prescribe 25-30)
var statusHtml = '';
var statusColor = '#333';
if (dose < 20) {
statusHtml = 'Below Target (= 20 && dose 30 mL/kg/h)';
statusColor = '#ffc107'; // Yellow/Orange
}
// Display Results
document.getElementById('res_flow_rate').innerHTML = totalEffluent.toFixed(0) + ' mL/h';
document.getElementById('res_dose').innerHTML = dose.toFixed(1) + ' mL/kg/h';
var statusEl = document.getElementById('res_status');
statusEl.innerHTML = statusHtml;
statusEl.style.color = statusColor;
resultDiv.style.display = 'block';
}