Cross-Connection Risk Assessment Calculator
ANA›Life Services Authority›National Calculator Authority›Cross-Connection Risk Assessment Calculator
.calc-container { max-width: 640px; margin: 2rem 0; padding: 1.5rem; background: #fff; border: 1px solid #ddd; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.06); font-family: system-ui, -apple-system, sans-serif; } .calc-container h3 { font-family: Georgia, serif; font-size: 1.15rem; color: #1a1a1a; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-row { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.75rem; flex-wrap: wrap; } .calc-row label { min-width: 160px; font-size: 0.9rem; color: #333; font-weight: 500; } .calc-row input[type="number"], .calc-row select { flex: 1; min-width: 120px; max-width: 200px; padding: 0.5rem 0.6rem; border: 1px solid #ccc; border-radius: 4px; font-size: 0.9rem; font-family: system-ui, sans-serif; color: #1a1a1a; background: #fafaf8; } .calc-row input:focus, .calc-row select:focus { outline: none; border-color: var(--ac, #3d5a80); box-shadow: 0 0 0 2px rgba(26,74,138,0.12); } .calc-row .unit { font-size: 0.82rem; color: #888; min-width: 30px; } .calc-btn { display: inline-block; margin-top: 0.5rem; padding: 0.55rem 1.5rem; background: var(--ac, #3d5a80); color: #fff; border: none; border-radius: 4px; font-size: 0.9rem; font-weight: 600; cursor: pointer; font-family: system-ui, sans-serif; } .calc-btn:hover { opacity: 0.9; } .calc-result { margin-top: 1.25rem; padding: 1rem 1.25rem; background: #f0f6fc; border-left: 3px solid var(--ac, #3d5a80); border-radius: 0 6px 6px 0; display: none; } .calc-result.visible { display: block; } .calc-result-label { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.06em; color: #666; margin-bottom: 0.25rem; } .calc-result-value { font-size: 1.6rem; font-weight: 700; color: var(--ac, #3d5a80); } .calc-result-detail { font-size: 0.85rem; color: #555; margin-top: 0.5rem; line-height: 1.5; } .calc-note { margin-top: 1rem; font-size: 0.8rem; color: #888; font-style: italic; } .calc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin-top: 0.75rem; } .calc-grid-item { padding: 0.6rem 0.8rem; background: #f8f9fa; border-radius: 4px; border: 1px solid #eee; } .calc-grid-item .label { font-size: 0.75rem; color: #888; text-transform: uppercase; letter-spacing: 0.04em; } .calc-grid-item .value { font-size: 1.1rem; font-weight: 600; color: #1a1a1a; } @media (max-width: 720px) { .calc-row { flex-direction: column; align-items: flex-start; gap: 0.3rem; } .calc-row label { min-width: auto; } .calc-row input[type="number"], .calc-row select { max-width: 100%; width: 100%; } .calc-grid { grid-template-columns: 1fr; } } .calc-chart { margin: 1rem 0; text-align: center; } .calc-chart svg { max-width: 100%; height: auto; } .calc-chart-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.6rem 1.2rem; margin-top: 0.6rem; font-size: 0.8rem; color: #555; } .calc-chart-legend span { display: inline-flex; align-items: center; gap: 0.3rem; } .calc-chart-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; font-style: normal; } .calc-related { max-width: 640px; margin: 2rem 0 1rem; padding: 1.25rem 1.5rem; background: #f8f9fa; border: 1px solid #e8e8e8; border-radius: 8px; } .calc-related h3 { font-family: Georgia, serif; font-size: 1rem; color: #1a1a1a; margin: 0 0 0.75rem; padding-bottom: 0.4rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-related-list { list-style: none; padding: 0; margin: 0 0 0.75rem; display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem 1.5rem; } .calc-related-list li a { font-size: 0.88rem; color: var(--ac, #3d5a80); text-decoration: none; } .calc-related-list li a:hover { text-decoration: underline; } .calc-browse-all { margin: 0.5rem 0 0; font-size: 0.9rem; font-weight: 600; } .calc-browse-all a { color: var(--ac, #3d5a80); text-decoration: none; } .calc-browse-all a:hover { text-decoration: underline; } @media (max-width: 720px) { .calc-related-list { grid-template-columns: 1fr; } }
Cross-Connection Risk Assessment Calculator
Evaluates the risk level of cross-connections in plumbing and water distribution systems based on hazard classification, backflow potential, system pressure differential, and existing protection measures per AWWA and USEPA guidelines.
Hazard Type
High Hazard – Toxic/Chemical (e.g., pesticides, industrial chemicals) High Hazard – Biological (e.g., sewage, reclaimed water) Moderate Hazard – Non-toxic but objectionable (e.g., boiler water, glycol) Low Hazard – Non-health (e.g., aesthetic contamination, color/odor)
Backflow Condition
Backsiphonage (negative pressure in supply line) Backpressure (downstream pressure exceeds supply pressure) Both conditions possible
Backsiphonage and backpressure are both assigned weight 2; select the applicable condition.
Pressure Differential (psi) — downstream minus supply (use negative for backsiphonage)
Positive = backpressure risk; Negative = backsiphonage risk. Range: −100 to 200 psi.
Cross-Connection Type
Direct connection (submerged inlet, no air gap) Indirect connection (hose, flexible pipe) Potential connection (intermittent, seasonal)
Existing Backflow Protection Device
Reduced Pressure Zone (RPZ) Assemby — highest protection Double Check Valve Assembly (DCVA) Pressure Vacuum Breaker (PVB) Atmospheric Vacuum Breaker (AVB) No protection device installed
Last Inspection / Testing (years ago)
Annual testing is required by most jurisdictions. Range: 0–50 years.
Population / Users at Risk (persons)
Number of people potentially exposed to contaminated water. Range: 1–1,000,000.
Calculate Risk Results will appear here.
function croCalc() { // --- Read inputs --- const hazardScore = parseFloat(document.getElementById('cro-hazard-type').value); const backflowScore = parseFloat(document.getElementById('cro-backflow-type').value); const pressureDiff = parseFloat(document.getElementById('cro-pressure-diff').value); const connScore = parseFloat(document.getElementById('cro-connection-type').value); const protScore = parseFloat(document.getElementById('cro-protection').value); const inspYears = parseFloat(document.getElementById('cro-inspection-freq').value); const population = parseFloat(document.getElementById('cro-population').value);
// --- Validation --- const errors = []; if (isNaN(pressureDiff) || pressureDiff 200) errors.push("Pressure differential must be between −100 and 200 psi."); if (isNaN(inspYears) || inspYears 50) errors.push("Inspection age must be between 0 and 50 years."); if (isNaN(population) || population 1000000) errors.push("Population must be between 1 and 1,000,000.");
if (errors.length > 0) { document.getElementById('cro-result').innerHTML = 'Input Error:' + errors.join('') + ''; return; }
// --------------------------------------------------------------- // FORMULA // --------------------------------------------------------------- // Risk Index (RI) is computed as a weighted composite score: // // RI = W_h * H + W_b * B + W_p * P_factor + W_c * C + W_d * D + W_i * I_factor // // Where: // H = Hazard score (1–4) // B = Backflow condition score (1–2) // P_factor = Pressure factor derived from |ΔP| (0–3) // C = Connection type score (1–3) // D = Protection device deficiency score (0–4) // I_factor = Inspection age factor (0–3) // // Weights (sum = 1.0): // W_h = 0.30 (hazard dominates) // W_b = 0.15 // W_p = 0.15 // W_c = 0.20 // W_d = 0.15 // W_i = 0.05 // // Pressure factor: // |ΔP| 5 years → I_factor = 3 // // Raw RI is normalized to a 0–100 scale: // RI_max = 0.304 + 0.152 + 0.153 + 0.203 + 0.154 + 0.053 // = 1.20 + 0.30 + 0.45 + 0.60 + 0.60 + 0.15 = 3.30 // Risk Score = (RI / RI_max) * 100 // // Consequence Index (CI): // CI = log10(population + 1) * (hazardScore / 4) * 100 // Normalized to 0–100 range (max population = 1,000,000) // CI_max = log10(1000001) * 1 * 100 ≈ 600 // CI_norm = (CI / CI_max) * 100 // // Overall Risk Rating = 0.70 * Risk Score + 0.30 * CI_norm // ---------------------------------------------------------------
// Pressure factor const absPressure = Math.abs(pressureDiff); let pFactor; if (absPressure = 3) { recommendedDevice = "Reduced Pressure Zone (RPZ) Assembly — required for high/toxic hazards"; } else if (hazardScore === 2) { recommendedDevice = "Double Check Valve Assembly (DCVA) or RPZ Assembly"; } else { recommendedDevice = "Atmospheric Vacuum Breaker (AVB) or Pressure Vacuum Breaker (PVB)"; }
// Pressure direction const pressureDir = pressureDiff >= 0 ? "Backpressure" : "Backsiphonage";
// Build result HTML const html = ` ### Cross-Connection Risk Assessment Results
Risk Score (Likelihood) ${riskScore.toFixed(1)} / 100
Consequence Index ${CI_norm.toFixed(1)} / 100
Overall Risk Rating ${overallRisk.toFixed(1)} / 100
Risk Level ${riskLevel}
Pressure Condition ${pressureDir} (|ΔP| = ${absPressure.toFixed(1)} psi → P-factor = ${pFactor})
Inspection Age Factor ${iFactor} (${inspYears} year${inspYears !== 1 ? 's' : ''} since last test)
Recommended Protection ${recommendedDevice}
Recommended Action:${action}
Score Breakdown: Hazard (×0.30): ${(Wh * hazardScore).toFixed(3)} | Backflow (×0.15): ${(Wb * backflowScore).toFixed(3)} | Pressure (×0.15): ${(Wp * pFactor).toFixed(3)} Connection (×0.20): ${(Wc * connScore).toFixed(3)} | Protection (×0.15): ${(Wd * protScore).toFixed(3)} | Inspection (×0.05): ${(Wi * iFactor).toFixed(3)} Raw RI = ${RI.toFixed(4)} / ${RI_max.toFixed(2)} (max)
`;
document.getElementById('cro-result').innerHTML = html; }
#### Formula
Risk Index (RI):
RI = 0.30·H + 0.15·B + 0.15·Pfactor + 0.20·C + 0.15·D + 0.05·Ifactor
Risk Score = (RI / RImax) × 100 [RImax = 3.30]
Consequence Index (CInorm) = [log₁₀(population + 1) × (H/4) × 100] / CImax × 100
Overall Risk Rating = 0.70 × Risk Score + 0.30 × CInorm
Pressure Factor (Pfactor): |ΔP| < 5 psi → 0.5; 5–20 psi → 1.5; 20–50 psi → 2.5; ≥50 psi → 3.0
Inspection Factor (Ifactor): <1 yr → 0; 1–2 yr → 1; 2–5 yr → 2; >5 yr → 3
Risk Levels: <20 = Low; 20–40 = Moderate; 40–65 = High; >65 = Critical
#### Assumptions & References
- Hazard classification follows AWWA M14 — Recommended Practice for Backflow Prevention and Cross-Connection Control (4th ed.).
- Backflow prevention device adequacy is based on USEPA Cross-Connection Control Manual (EPA 816-R-03-002).
More Calculators
- Lost Wages and Future Earnings Calculator
- EV Charging Cost Calculator
- Charging Time Calculator by Charger Level and Battery Size
- Breathing Rate & Pattern Calculator
- EV Range vs Michigan Winter Temperature Calculator
- Water Heater Size Calculator
- Water Usage & Cost Calculator
- Pool Volume Calculator
- Pool Chemical Dosing Calculator
- Pool Pump Sizing Calculator
Read Next
Study Time Planner Authority Network America › Life Services Authority › National Calculator Authority .calc-container { max-width: 640px;...