Files
DialysisTriggerHTML/index.html
T

1551 lines
69 KiB
HTML
Raw Normal View History

2026-03-23 14:20:53 +05:30
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CKD Dialysis Initiation — Clinical Decision Flow</title>
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,600;0,700;1,600&family=Source+Serif+4:wght@300;400;600&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
<style>
:root {
--bg: #0B0F14;
--surface: #111620;
--surface2: #161D28;
--border: #1E2A38;
--border2: #243040;
--red: #E84040;
--red-dim: rgba(232,64,64,0.12);
--red-glow: rgba(232,64,64,0.25);
--amber: #F0922A;
--amber-dim: rgba(240,146,42,0.12);
--green: #2ECC8A;
--green-dim: rgba(46,204,138,0.12);
--green-glow: rgba(46,204,138,0.2);
--blue: #4A9EE8;
--blue-dim: rgba(74,158,232,0.12);
--violet: #9B72E8;
--violet-dim: rgba(155,114,232,0.12);
--teal: #2EC4B6;
--teal-dim: rgba(46,196,182,0.12);
--text: #C8D6E8;
--text-dim: #6A7D94;
--text-bright: #E8F0FA;
--serif: 'Playfair Display', Georgia, serif;
--body: 'Source Serif 4', serif;
--mono: 'JetBrains Mono', monospace;
}
- { box-sizing: border-box; margin: 0; padding: 0; }
html { font-size: 15px; scroll-behavior: smooth; }
body {
background: var(--bg);
color: var(--text);
font-family: var(--body);
min-height: 100vh;
overflow-x: hidden;
}
/* ── HEADER ── */
.header {
background: linear-gradient(180deg, #0D1520 0%, var(--bg) 100%);
border-bottom: 1px solid var(--border);
padding: 2.5rem 3rem 2rem;
position: relative;
overflow: hidden;
}
.header::before {
content: '';
position: absolute; top: 0; left: 0; right: 0; bottom: 0;
background: radial-gradient(ellipse 60% 80% at 80% 50%, rgba(74,158,232,0.06) 0%, transparent 60%);
pointer-events: none;
}
.header-badge {
font-family: var(--mono);
font-size: 0.62rem;
letter-spacing: 0.2em;
text-transform: uppercase;
color: var(--blue);
margin-bottom: 0.8rem;
opacity: 0.8;
}
.header h1 {
font-family: var(--serif);
font-size: 2.4rem;
color: var(--text-bright);
line-height: 1.15;
margin-bottom: 0.6rem;
font-weight: 700;
}
.header h1 em { font-style: italic; color: var(--blue); }
.header-sub {
font-size: 0.88rem;
color: var(--text-dim);
max-width: 700px;
line-height: 1.65;
margin-bottom: 1.5rem;
}
.guideline-pills {
display: flex; flex-wrap: wrap; gap: 0.5rem;
}
.pill {
display: inline-flex; align-items: center; gap: 0.4rem;
padding: 0.28rem 0.75rem;
border-radius: 20px;
font-family: var(--mono);
font-size: 0.62rem;
letter-spacing: 0.06em;
font-weight: 500;
border: 1px solid;
}
.pill.blue { background: var(--blue-dim); border-color: rgba(74,158,232,0.3); color: var(--blue); }
.pill.green { background: var(--green-dim); border-color: rgba(46,204,138,0.3); color: var(--green); }
.pill.amber { background: var(--amber-dim); border-color: rgba(240,146,42,0.3); color: var(--amber); }
.pill.violet { background: var(--violet-dim); border-color: rgba(155,114,232,0.3); color: var(--violet); }
.pill.red { background: var(--red-dim); border-color: rgba(232,64,64,0.3); color: var(--red); }
/* ── TAB NAV ── */
.tab-nav {
display: flex;
background: var(--surface);
border-bottom: 1px solid var(--border);
overflow-x: auto;
padding: 0 2rem;
}
.tab-btn {
display: flex; align-items: center; gap: 0.5rem;
padding: 1rem 1.4rem;
font-family: var(--mono);
font-size: 0.7rem;
letter-spacing: 0.06em;
text-transform: uppercase;
color: var(--text-dim);
border: none;
background: none;
cursor: pointer;
border-bottom: 2px solid transparent;
white-space: nowrap;
transition: all 0.2s;
}
.tab-btn:hover { color: var(--text); }
.tab-btn.active {
color: var(--blue);
border-bottom-color: var(--blue);
}
.tab-btn .dot {
width: 6px; height: 6px;
border-radius: 50%;
background: currentColor;
opacity: 0.6;
}
/* ── PANELS ── */
.panel { display: none; padding: 2rem 3rem 4rem; }
.panel.active { display: block; }
/* ── SECTION HEADER ── */
.sec-head {
margin-bottom: 2rem;
}
.sec-head h2 {
font-family: var(--serif);
font-size: 1.7rem;
color: var(--text-bright);
font-weight: 600;
line-height: 1.2;
margin-bottom: 0.4rem;
}
.sec-head p {
font-size: 0.86rem;
color: var(--text-dim);
max-width: 620px;
line-height: 1.6;
}
/* ── FLOW DIAGRAM ── */
.flow-container {
display: flex;
flex-direction: column;
align-items: center;
gap: 0;
max-width: 900px;
margin: 0 auto;
}
.flow-node {
width: 100%;
position: relative;
}
/* Node types */
.node-box {
border-radius: 6px;
padding: 1.1rem 1.4rem;
border: 1px solid var(--border2);
background: var(--surface2);
position: relative;
cursor: default;
transition: border-color 0.2s, box-shadow 0.2s;
}
.node-box:hover {
border-color: var(--blue);
box-shadow: 0 0 0 1px rgba(74,158,232,0.15), 0 4px 20px rgba(0,0,0,0.4);
}
.node-box.start {
background: linear-gradient(135deg, rgba(74,158,232,0.18) 0%, rgba(74,158,232,0.06) 100%);
border-color: rgba(74,158,232,0.4);
text-align: center;
}
.node-box.decision {
background: linear-gradient(135deg, rgba(155,114,232,0.14) 0%, rgba(155,114,232,0.04) 100%);
border-color: rgba(155,114,232,0.35);
clip-path: polygon(20px 0, calc(100% - 20px) 0, 100% 50%, calc(100% - 20px) 100%, 20px 100%, 0 50%);
padding: 1.2rem 3rem;
text-align: center;
}
.node-box.emergency {
background: linear-gradient(135deg, rgba(232,64,64,0.2) 0%, rgba(232,64,64,0.06) 100%);
border-color: rgba(232,64,64,0.45);
border-left: 3px solid var(--red);
box-shadow: 0 0 20px var(--red-glow);
}
.node-box.action {
background: linear-gradient(135deg, rgba(46,204,138,0.12) 0%, rgba(46,204,138,0.03) 100%);
border-color: rgba(46,204,138,0.3);
border-left: 3px solid var(--green);
}
.node-box.amber-node {
background: linear-gradient(135deg, rgba(240,146,42,0.14) 0%, rgba(240,146,42,0.04) 100%);
border-color: rgba(240,146,42,0.35);
border-left: 3px solid var(--amber);
}
.node-box.info-node {
background: var(--surface2);
border-color: var(--border2);
border-left: 3px solid var(--teal);
}
.node-label {
font-family: var(--mono);
font-size: 0.58rem;
letter-spacing: 0.15em;
text-transform: uppercase;
color: var(--text-dim);
margin-bottom: 0.4rem;
}
.node-title {
font-size: 0.95rem;
font-weight: 600;
color: var(--text-bright);
font-family: var(--body);
margin-bottom: 0.25rem;
line-height: 1.35;
}
.node-desc {
font-size: 0.8rem;
color: var(--text-dim);
line-height: 1.55;
}
.node-desc strong { color: var(--text); }
.source-tag {
display: inline-flex; align-items: center;
margin-top: 0.5rem;
font-family: var(--mono);
font-size: 0.58rem;
letter-spacing: 0.06em;
color: var(--text-dim);
gap: 0.3rem;
}
.source-tag .ref {
padding: 0.1rem 0.4rem;
border-radius: 3px;
background: rgba(255,255,255,0.05);
border: 1px solid var(--border2);
}
/* Arrows */
.arrow {
display: flex;
flex-direction: column;
align-items: center;
margin: 0.3rem 0;
color: var(--text-dim);
font-size: 0.7rem;
}
.arrow-line {
width: 2px;
height: 24px;
background: linear-gradient(180deg, var(--border2), rgba(255,255,255,0.1));
}
.arrow-head { font-size: 0.9rem; color: var(--border2); margin-top: -4px; }
.arrow-label {
font-family: var(--mono);
font-size: 0.6rem;
color: var(--text-dim);
letter-spacing: 0.08em;
margin: 2px 0;
}
/* Split flow */
.flow-split {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1.2rem;
width: 100%;
}
.flow-split-3 {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 1rem;
width: 100%;
}
.split-label {
font-family: var(--mono);
font-size: 0.6rem;
letter-spacing: 0.12em;
text-transform: uppercase;
text-align: center;
color: var(--text-dim);
margin-bottom: 0.4rem;
}
/* ── CHECKLIST ── */
.checklist-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1.2rem;
margin-top: 1rem;
}
.cl-card {
background: var(--surface2);
border: 1px solid var(--border2);
border-radius: 6px;
overflow: hidden;
}
.cl-card-head {
padding: 0.8rem 1.1rem;
display: flex; align-items: center; gap: 0.6rem;
border-bottom: 1px solid var(--border);
}
.cl-card-head .icon {
font-size: 1rem;
}
.cl-card-head h4 {
font-family: var(--mono);
font-size: 0.68rem;
letter-spacing: 0.1em;
text-transform: uppercase;
font-weight: 600;
}
.cl-card-head.blue { background: rgba(74,158,232,0.08); }
.cl-card-head.blue h4 { color: var(--blue); }
.cl-card-head.green { background: rgba(46,204,138,0.08); }
.cl-card-head.green h4 { color: var(--green); }
.cl-card-head.amber { background: rgba(240,146,42,0.08); }
.cl-card-head.amber h4 { color: var(--amber); }
.cl-card-head.red { background: rgba(232,64,64,0.08); }
.cl-card-head.red h4 { color: var(--red); }
.cl-card-head.violet { background: rgba(155,114,232,0.08); }
.cl-card-head.violet h4 { color: var(--violet); }
.cl-card-head.teal { background: rgba(46,196,182,0.08); }
.cl-card-head.teal h4 { color: var(--teal); }
.cl-items { padding: 0.6rem 0; }
.cl-item {
display: flex; align-items: flex-start; gap: 0.6rem;
padding: 0.38rem 1.1rem;
font-size: 0.8rem;
color: var(--text);
line-height: 1.45;
border-bottom: 1px solid rgba(255,255,255,0.03);
cursor: pointer;
transition: background 0.15s;
user-select: none;
}
.cl-item:last-child { border-bottom: none; }
.cl-item:hover { background: rgba(255,255,255,0.03); }
.cl-check {
width: 14px; height: 14px;
border: 1.5px solid var(--border2);
border-radius: 3px;
flex-shrink: 0;
margin-top: 1px;
display: flex; align-items: center; justify-content: center;
font-size: 0.6rem;
transition: all 0.15s;
}
.cl-item.checked .cl-check {
background: var(--green);
border-color: var(--green);
color: #000;
}
.cl-item .cl-text { flex: 1; }
.cl-item .cl-sub { font-size: 0.7rem; color: var(--text-dim); display: block; }
.cl-item .threshold {
font-family: var(--mono);
font-size: 0.65rem;
color: var(--amber);
white-space: nowrap;
flex-shrink: 0;
}
/* ── MEDICATION TABLE ── */
.med-table-wrap {
overflow-x: auto;
margin: 1rem 0;
border: 1px solid var(--border);
border-radius: 6px;
}
.med-table {
width: 100%;
border-collapse: collapse;
font-size: 0.8rem;
}
.med-table th {
background: var(--surface2);
color: var(--text-dim);
font-family: var(--mono);
font-size: 0.62rem;
letter-spacing: 0.1em;
text-transform: uppercase;
font-weight: 600;
padding: 0.7rem 0.9rem;
text-align: left;
border-bottom: 1px solid var(--border2);
white-space: nowrap;
}
.med-table td {
padding: 0.6rem 0.9rem;
border-bottom: 1px solid rgba(255,255,255,0.04);
color: var(--text);
vertical-align: top;
line-height: 1.45;
}
.med-table tr:hover td { background: rgba(255,255,255,0.02); }
.med-table tr:last-child td { border-bottom: none; }
.risk-badge {
display: inline-block;
padding: 0.12rem 0.45rem;
border-radius: 3px;
font-family: var(--mono);
font-size: 0.6rem;
font-weight: 600;
letter-spacing: 0.05em;
}
.risk-badge.stop { background: var(--red-dim); color: var(--red); border: 1px solid rgba(232,64,64,0.3); }
.risk-badge.caution { background: var(--amber-dim); color: var(--amber); border: 1px solid rgba(240,146,42,0.3); }
.risk-badge.reduce { background: var(--violet-dim); color: var(--violet); border: 1px solid rgba(155,114,232,0.3); }
.risk-badge.monitor { background: var(--blue-dim); color: var(--blue); border: 1px solid rgba(74,158,232,0.3); }
.risk-badge.continue { background: var(--green-dim); color: var(--green); border: 1px solid rgba(46,204,138,0.3); }
/* ── DDX ── */
.ddx-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1rem;
margin-top: 1rem;
}
.ddx-card {
background: var(--surface2);
border: 1px solid var(--border2);
border-radius: 6px;
overflow: hidden;
}
.ddx-head {
padding: 0.75rem 1rem;
display: flex; align-items: center; justify-content: space-between;
border-bottom: 1px solid var(--border);
}
.ddx-head h4 {
font-size: 0.85rem;
font-weight: 600;
color: var(--text-bright);
}
.prob-bar-wrap {
display: flex; align-items: center; gap: 0.6rem;
padding: 0.65rem 1rem;
border-bottom: 1px solid rgba(255,255,255,0.03);
}
.prob-bar-wrap:last-child { border-bottom: none; }
.prob-name {
font-size: 0.78rem;
color: var(--text);
min-width: 160px;
}
.prob-bar {
flex: 1; height: 5px;
background: rgba(255,255,255,0.06);
border-radius: 3px;
overflow: hidden;
}
.prob-fill {
height: 100%;
border-radius: 3px;
transition: width 0.6s ease;
}
.prob-pct {
font-family: var(--mono);
font-size: 0.65rem;
color: var(--text-dim);
min-width: 32px;
text-align: right;
}
/* ── CALLOUT ── */
.callout {
padding: 0.9rem 1.1rem;
border-radius: 5px;
margin: 1rem 0;
font-size: 0.82rem;
line-height: 1.6;
border-left: 3px solid;
}
.callout-label {
font-family: var(--mono);
font-size: 0.6rem;
letter-spacing: 0.15em;
text-transform: uppercase;
font-weight: 600;
margin-bottom: 0.35rem;
}
.callout.urgent { background: var(--red-dim); border-color: var(--red); color: #f0a0a0; }
.callout.urgent .callout-label { color: var(--red); }
.callout.info { background: var(--blue-dim); border-color: var(--blue); color: #a0c8f0; }
.callout.info .callout-label { color: var(--blue); }
.callout.success-c { background: var(--green-dim); border-color: var(--green); color: #90e0b8; }
.callout.success-c .callout-label { color: var(--green); }
.callout.warn { background: var(--amber-dim); border-color: var(--amber); color: #f0c878; }
.callout.warn .callout-label { color: var(--amber); }
/* ── EVIDENCE GRADE ── */
.grade {
display: inline-flex; align-items: center;
padding: 0.1rem 0.4rem;
border-radius: 3px;
font-family: var(--mono);
font-size: 0.6rem;
font-weight: 600;
letter-spacing: 0.05em;
}
.grade.1A { background: rgba(46,204,138,0.15); color: var(--green); }
.grade.1B { background: rgba(74,158,232,0.15); color: var(--blue); }
.grade.2B { background: rgba(240,146,42,0.15); color: var(--amber); }
.grade.2C { background: rgba(155,114,232,0.15); color: var(--violet); }
/* ── VASCULAR ACCESS ── */
.va-timeline {
display: flex;
flex-direction: column;
gap: 0;
margin: 1rem 0;
max-width: 800px;
}
.va-step {
display: flex;
gap: 1.2rem;
padding-bottom: 1.5rem;
position: relative;
}
.va-step::before {
content: '';
position: absolute;
left: 15px; top: 32px;
bottom: 0;
width: 2px;
background: var(--border2);
}
.va-step:last-child::before { display: none; }
.va-dot {
width: 32px; height: 32px;
border-radius: 50%;
border: 2px solid;
display: flex; align-items: center; justify-content: center;
font-family: var(--mono);
font-size: 0.65rem;
font-weight: 700;
flex-shrink: 0;
position: relative; z-index: 1;
}
.va-dot.avf { background: rgba(46,204,138,0.1); border-color: var(--green); color: var(--green); }
.va-dot.avg { background: rgba(240,146,42,0.1); border-color: var(--amber); color: var(--amber); }
.va-dot.cvc { background: rgba(232,64,64,0.1); border-color: var(--red); color: var(--red); }
.va-dot.pd { background: rgba(74,158,232,0.1); border-color: var(--blue); color: var(--blue); }
.va-content { flex: 1; padding-top: 4px; }
.va-content h4 { font-size: 0.9rem; font-weight: 600; color: var(--text-bright); margin-bottom: 0.25rem; }
.va-content p { font-size: 0.8rem; color: var(--text-dim); line-height: 1.55; }
.va-content .timing { font-family: var(--mono); font-size: 0.65rem; color: var(--amber); margin-top: 0.3rem; }
/* ── PROGRESS ── */
.progress-row {
display: flex; gap: 0.4rem;
margin-bottom: 0.8rem;
align-items: center;
}
.progress-label {
font-family: var(--mono);
font-size: 0.6rem;
color: var(--text-dim);
min-width: 80px;
text-align: right;
}
/* ── INTERACTIVE eGFR calc ── */
.calc-section {
background: var(--surface2);
border: 1px solid var(--border2);
border-radius: 6px;
padding: 1.4rem;
margin: 1.5rem 0;
}
.calc-title {
font-family: var(--mono);
font-size: 0.65rem;
letter-spacing: 0.15em;
text-transform: uppercase;
color: var(--teal);
margin-bottom: 1rem;
}
.calc-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 0.8rem;
margin-bottom: 1rem;
}
.calc-field label {
display: block;
font-family: var(--mono);
font-size: 0.6rem;
color: var(--text-dim);
letter-spacing: 0.1em;
text-transform: uppercase;
margin-bottom: 0.3rem;
}
.calc-field input, .calc-field select {
width: 100%;
background: var(--bg);
border: 1px solid var(--border2);
border-radius: 4px;
padding: 0.5rem 0.7rem;
font-family: var(--mono);
font-size: 0.8rem;
color: var(--text-bright);
outline: none;
transition: border-color 0.2s;
}
.calc-field input:focus, .calc-field select:focus {
border-color: var(--blue);
}
.calc-field select option { background: var(--bg); }
.calc-btn {
background: linear-gradient(135deg, rgba(74,158,232,0.3), rgba(74,158,232,0.1));
border: 1px solid rgba(74,158,232,0.4);
color: var(--blue);
padding: 0.6rem 1.4rem;
border-radius: 4px;
font-family: var(--mono);
font-size: 0.72rem;
letter-spacing: 0.08em;
text-transform: uppercase;
cursor: pointer;
transition: all 0.2s;
}
.calc-btn:hover {
background: linear-gradient(135deg, rgba(74,158,232,0.4), rgba(74,158,232,0.15));
box-shadow: 0 0 12px rgba(74,158,232,0.2);
}
.calc-result {
display: none;
margin-top: 1rem;
padding: 1rem;
background: var(--bg);
border-radius: 5px;
border: 1px solid var(--border2);
}
.calc-result.show { display: block; }
.egfr-value {
font-family: var(--serif);
font-size: 2.4rem;
line-height: 1;
margin-bottom: 0.3rem;
}
.egfr-unit {
font-family: var(--mono);
font-size: 0.7rem;
color: var(--text-dim);
}
.ckd-stage-bar {
display: grid;
grid-template-columns: repeat(5, 1fr);
gap: 2px;
margin: 0.8rem 0;
border-radius: 4px;
overflow: hidden;
}
.stage-seg {
padding: 0.35rem 0;
text-align: center;
font-family: var(--mono);
font-size: 0.58rem;
font-weight: 600;
letter-spacing: 0.04em;
transition: opacity 0.3s;
opacity: 0.3;
}
.stage-seg.active { opacity: 1; }
.stage-seg.g1 { background: rgba(46,204,138,0.3); color: var(--green); }
.stage-seg.g2 { background: rgba(74,158,232,0.3); color: var(--blue); }
.stage-seg.g3 { background: rgba(240,146,42,0.3); color: var(--amber); }
.stage-seg.g4 { background: rgba(232,64,64,0.25); color: #f07060; }
.stage-seg.g5 { background: rgba(232,64,64,0.45); color: var(--red); }
/* ── RESPONSIVE ── */
@media (max-width: 760px) {
.header { padding: 1.5rem; }
.header h1 { font-size: 1.6rem; }
.panel { padding: 1.5rem; }
.checklist-grid, .ddx-grid { grid-template-columns: 1fr; }
.flow-split, .flow-split-3 { grid-template-columns: 1fr; }
.calc-grid { grid-template-columns: 1fr 1fr; }
.tab-nav { padding: 0 0.5rem; }
}
/* ── FADE IN ── */
@keyframes fadeUp {
from { opacity: 0; transform: translateY(12px); }
to { opacity: 1; transform: none; }
}
.panel.active > * {
animation: fadeUp 0.4s ease both;
}
.panel.active > *:nth-child(2) { animation-delay: 0.06s; }
.panel.active > *:nth-child(3) { animation-delay: 0.12s; }
.panel.active > *:nth-child(4) { animation-delay: 0.18s; }
</style>
</head>
<body>
<!-- HEADER -->
<div class="header">
<div class="header-badge">Agentic AI RAG · Clinical Decision Flow · Nephrology</div>
<h1>CKD Dialysis Initiation<br><em>Decision Framework</em></h1>
<p class="header-sub">Evidence-based clinical decision support integrating KDIGO 2022, ERA-EDTA 2023, IDEAL Trial, and KDOQI Vascular Access guidelines with pre-dialysis workup, medication safety, and differential diagnosis modules.</p>
<div class="guideline-pills">
<span class="pill blue">● KDIGO 2022 Update</span>
<span class="pill green">● ERA-EDTA 2023</span>
<span class="pill amber">● IDEAL Trial</span>
<span class="pill violet">● KDOQI Vascular Access 2019</span>
<span class="pill red">● Emergency Criteria</span>
</div>
</div>
<!-- TAB NAV -->
<div class="tab-nav">
<button class="tab-btn active" onclick="switchTab('flow', this)"><span class="dot"></span>Decision Flow</button>
<button class="tab-btn" onclick="switchTab('checklist', this)"><span class="dot"></span>Pre-Dialysis Checklist</button>
<button class="tab-btn" onclick="switchTab('medications', this)"><span class="dot"></span>Medication Safety</button>
<button class="tab-btn" onclick="switchTab('ddx', this)"><span class="dot"></span>Differential Diagnosis</button>
<button class="tab-btn" onclick="switchTab('access', this)"><span class="dot"></span>Vascular Access</button>
</div>
<!-- ══════════════════════════════════════════════
TAB 1 — DECISION FLOW
═══════════════════════════════════════════════ -->
<div id="tab-flow" class="panel active">
<div class="sec-head">
<h2>Dialysis Initiation Decision Flow</h2>
<p>Step-by-step clinical pathway from CKD staging to modality selection, grounded in KDIGO 2022 and ERA-EDTA 2023. Includes IDEAL Trial evidence for timing of elective initiation.</p>
</div>
<!-- eGFR CALCULATOR -->
<div class="calc-section">
<div class="calc-title">⚙ CKD-EPI 2021 eGFR Calculator (Race-Free Equation)</div>
<div class="calc-grid">
<div class="calc-field">
<label>Serum Creatinine (mg/dL)</label>
<input type="number" id="cr" placeholder="e.g. 3.8" step="0.1" min="0.1">
</div>
<div class="calc-field">
<label>Age (years)</label>
<input type="number" id="age" placeholder="e.g. 65" min="18" max="120">
</div>
<div class="calc-field">
<label>Sex Assigned at Birth</label>
<select id="sex">
<option value="male">Male</option>
<option value="female">Female</option>
</select>
</div>
<div class="calc-field">
<label>Cystatin C (mg/L) — optional</label>
<input type="number" id="cystc" placeholder="e.g. 1.8" step="0.01" min="0.1">
</div>
</div>
<button class="calc-btn" onclick="calcEGFR()">Calculate eGFR → Stage CKD</button>
<div class="calc-result" id="calc-result">
<div style="display:flex; align-items:baseline; gap:0.5rem; margin-bottom:0.5rem;">
<div class="egfr-value" id="egfr-val"></div>
<div class="egfr-unit">mL/min/1.73 m²</div>
<div id="stage-label" style="margin-left:0.5rem; font-family:var(--mono); font-size:0.75rem; color:var(--text-dim);"></div>
</div>
<div class="ckd-stage-bar">
<div class="stage-seg g1" id="seg-g1">G1 ≥90</div>
<div class="stage-seg g2" id="seg-g2">G2 6089</div>
<div class="stage-seg g3" id="seg-g3">G3 3059</div>
<div class="stage-seg g4" id="seg-g4">G4 1529</div>
<div class="stage-seg g5" id="seg-g5">G5 &lt;15</div>
</div>
<div id="egfr-recommendation" style="font-size:0.82rem; color:var(--text-dim); margin-top:0.5rem; line-height:1.6;"></div>
</div>
</div>
<div class="flow-container">
```
<!-- Step 1 -->
<div class="flow-node">
<div class="node-box start">
<div class="node-label">Entry Point</div>
<div class="node-title">CKD Patient Assessment — Staging & Trajectory</div>
<div class="node-desc">Determine CKD stage using <strong>CKD-EPI 2021 eGFR</strong> (race-free) + urine ACR. Assess trajectory: rate of eGFR decline over ≥3 months. Document modifying factors: diabetes, hypertension, proteinuria, AKI history.</div>
<div class="source-tag"><span class="ref">KDIGO 2022 §2.1</span> <span class="ref">CKD-EPI 2021 — Inker et al. NEJM</span></div>
</div>
</div>
<div class="arrow"><div class="arrow-line"></div><div class="arrow-label">KDIGO Staging →</div><div class="arrow-head"></div></div>
<!-- Step 2: Emergency Check -->
<div class="flow-node">
<div class="node-box emergency">
<div class="node-label">⚡ Emergency Screen — KDIGO 2022 §4 + ERA-EDTA 2023</div>
<div class="node-title">Absolute Indications for Urgent Dialysis Initiation</div>
<div class="node-desc">
Screen for any of the following — presence of <strong>any one criterion</strong> mandates immediate initiation regardless of eGFR:
<br><br>
<strong style="color:var(--red);">U</strong>raemia symptomatic: encephalopathy, seizures, pericarditis, uremic bleeding &nbsp;|&nbsp;
<strong style="color:var(--red);">A</strong>cidosis: pH &lt;7.1 or HCO₃⁻ &lt;12 mEq/L refractory to medical Rx &nbsp;|&nbsp;
<strong style="color:var(--red);">E</strong>lectrolyte: K⁺ &gt;6.5 mEq/L or EKG changes &nbsp;|&nbsp;
<strong style="color:var(--red);">O</strong>verload: pulmonary oedema refractory to diuretics &nbsp;|&nbsp;
<strong style="color:var(--red);">I</strong>ntoxication: dialysable toxin (methanol, lithium, salicylate)
</div>
<div class="source-tag"><span class="ref">KDIGO 2022 Emergency Triggers</span> <span class="ref">ERA-EDTA 2023 §3.2</span></div>
</div>
</div>
<div class="arrow">
<div class="arrow-line"></div>
<div class="arrow-label">If NO emergency criteria →</div>
<div class="arrow-head"></div>
</div>
<!-- Step 3: eGFR threshold -->
<div class="flow-node">
<div class="node-box decision">
<div class="node-label">Decision Node</div>
<div class="node-title">Is eGFR ≤ 15 mL/min/1.73 m² OR rapid decline (&gt;5 mL/min/yr)?</div>
</div>
</div>
<div class="flow-split" style="margin:0.8rem 0;">
<div>
<div class="split-label" style="color:var(--green);">YES — Initiation Zone</div>
<div class="node-box action">
<div class="node-label">KDIGO G5 / Pre-ESRD</div>
<div class="node-title">Proceed to Elective Dialysis Planning</div>
<div class="node-desc">IDEAL Trial: <strong>no survival benefit</strong> to early initiation (eGFR 1014) vs. late (eGFR 57). Initiate based on symptoms + clinical judgement, not eGFR alone. Target: symptom burden, nutritional status, volume status.</div>
<div class="source-tag"><span class="ref">IDEAL Trial — Cooper et al. NEJM 2010</span> <span class="ref">ERA-EDTA 2023 §4.1</span></div>
</div>
</div>
<div>
<div class="split-label" style="color:var(--amber);">NO — Monitoring Zone</div>
<div class="node-box amber-node">
<div class="node-label">CKD G3bG4</div>
<div class="node-title">Optimise Conservative Management + Prepare</div>
<div class="node-desc">Intensify CKD retardation: RAAS blockade, SGLT2i (if eGFR &gt;20), blood pressure to &lt;130/80 mmHg. Refer to nephrology if not already. Begin patient education on RRT modalities. Nephrology referral: eGFR &lt;30 or rapid decline.</div>
<div class="source-tag"><span class="ref">DAPA-CKD — Heerspink NEJM 2020</span> <span class="ref">KDIGO 2022 §5</span></div>
</div>
</div>
</div>
<div class="arrow"><div class="arrow-line"></div><div class="arrow-label">Elective initiation path →</div><div class="arrow-head"></div></div>
<!-- Step 4: Symptoms -->
<div class="flow-node">
<div class="node-box decision">
<div class="node-label">Symptom Assessment — IDEAL Trial Criteria</div>
<div class="node-title">Symptomatic uraemia OR clinical deterioration despite optimised conservative Rx?</div>
</div>
</div>
<div class="flow-split" style="margin:0.8rem 0;">
<div>
<div class="split-label" style="color:var(--red);">YES — Initiate</div>
<div class="node-box emergency" style="box-shadow:none;">
<div class="node-label">Symptom-Driven Initiation</div>
<div class="node-title">Symptoms mandating initiation</div>
<div class="node-desc">
<strong>Uraemic symptoms:</strong> nausea, vomiting, anorexia, weight loss, pruritus, encephalopathy &nbsp;|&nbsp;
<strong>Volume:</strong> resistant oedema, cardiac decompensation &nbsp;|&nbsp;
<strong>Metabolic:</strong> progressive acidosis, hyperkalaemia unresponsive to medical Rx &nbsp;|&nbsp;
<strong>Nutritional:</strong> unintentional weight loss &gt;10%, serum albumin &lt;3.5 g/dL
</div>
<div class="source-tag"><span class="ref">IDEAL Trial — Cooper 2010</span> <span class="ref">KDIGO 2022 §4.2</span></div>
</div>
</div>
<div>
<div class="split-label" style="color:var(--green);">NO — Continue Conservative</div>
<div class="node-box action">
<div class="node-label">Pre-emptive Planning</div>
<div class="node-title">Watchful Waiting with 48 weekly review</div>
<div class="node-desc">Continue CKD management. Monitor eGFR, electrolytes, nutritional parameters monthly. Initiate vascular access planning if eGFR &lt;20 (see Vascular Access tab). Patient choice and shared decision-making is central. Consider peritoneal dialysis or home HD.</div>
<div class="source-tag"><span class="ref">ERA-EDTA 2023 §4.3</span></div>
</div>
</div>
</div>
<div class="arrow"><div class="arrow-line"></div><div class="arrow-label">Initiating → Modality Selection</div><div class="arrow-head"></div></div>
<!-- Step 5: Modality -->
<div class="flow-node">
<div class="node-box info-node">
<div class="node-label">Modality Selection — Shared Decision Making</div>
<div class="node-title">Select RRT Modality Based on Clinical + Patient Factors</div>
</div>
</div>
<div class="flow-split-3" style="margin:0.8rem 0;">
<div class="node-box action">
<div class="node-label" style="color:var(--green);">Preferred (If feasible)</div>
<div class="node-title">Haemodialysis (HD)</div>
<div class="node-desc">In-centre or home HD. Requires AVF (preferred) or AVG. <strong>Avoid CVC</strong> for long-term HD — associated with ×3 higher infection risk and mortality. Initiate AVF referral ≥6 months before anticipated start.</div>
<div class="source-tag"><span class="ref">KDOQI VA 2019</span> <span class="ref">ERA-EDTA 2023</span></div>
</div>
<div class="node-box amber-node">
<div class="node-label" style="color:var(--amber);">Patient-Centred Choice</div>
<div class="node-title">Peritoneal Dialysis (PD)</div>
<div class="node-desc">Home-based. CAPD or APD. Preferred in: preserved residual renal function, young patients, remote geography, diabetic patients. Contraindicated: abdominal adhesions, hernia, no caregiver support.</div>
<div class="source-tag"><span class="ref">KDIGO 2022 §5.1</span></div>
</div>
<div class="node-box" style="border-left:3px solid var(--violet);">
<div class="node-label" style="color:var(--violet);">Acute/Bridge</div>
<div class="node-title">CRRT / SLED</div>
<div class="node-desc">For haemodynamically unstable patients in ICU. CRRT preferred over IHD in AKI-on-CKD with vasopressor dependency. SLED as intermediate modality. Transition to IHD when stable.</div>
<div class="source-tag"><span class="ref">KDIGO AKI 2012 §5.3</span></div>
</div>
</div>
```
</div><!-- /flow-container -->
<div class="callout warn" style="margin-top:2rem;">
<div class="callout-label">IDEAL Trial Key Finding</div>
The IDEAL RCT (n=828, Cooper et al. NEJM 2010) found <strong>no significant difference</strong> in survival or quality of life between early (eGFR 1014) vs. late (eGFR 57) initiation of dialysis. The current recommendation is symptom-guided initiation, avoiding automatic eGFR-based triggers for elective dialysis start.
</div>
</div>
<!-- ══════════════════════════════════════════════
TAB 2 — PRE-DIALYSIS CHECKLIST
═══════════════════════════════════════════════ -->
<div id="tab-checklist" class="panel">
<div class="sec-head">
<h2>Pre-Dialysis Workup Checklist</h2>
<p>Comprehensive investigations and interventions required before dialysis initiation. Click items to mark as completed. Adapted from KDIGO 2022 pre-dialysis care standards and ERA-EDTA 2023.</p>
</div>
<div class="callout urgent">
<div class="callout-label">Emergency — Complete within 4 hours if urgent dialysis</div>
U&E, VBG/ABG, 12-lead ECG, portable CXR, bedside weight, IV access × 2, anaesthesia/critical care alert if HD planned emergently.
</div>
<div class="checklist-grid">
```
<!-- HAEMATOLOGY -->
<div class="cl-card">
<div class="cl-card-head blue"><span class="icon">🔬</span><h4>Haematology & Iron Studies</h4></div>
<div class="cl-items">
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">FBC / CBC with differential<span class="cl-sub">Anaemia of CKD staging; baseline pre-ESA</span></div><div class="threshold">Hb target 1012 g/dL</div></div>
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">Serum Ferritin & Transferrin Saturation<span class="cl-sub">Iron deficiency screen before ESA therapy</span></div><div class="threshold">Ferritin &gt;200; TSAT &gt;20%</div></div>
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">Reticulocyte count & reticulocyte Hb<span class="cl-sub">Functional iron deficiency assessment</span></div></div>
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">Blood film morphology<span class="cl-sub">Exclude haemolysis, microangiopathy</span></div></div>
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">Coagulation — PT, APTT, fibrinogen<span class="cl-sub">Baseline before AV fistula creation or CVC insertion</span></div></div>
</div>
</div>
<!-- BIOCHEMISTRY -->
<div class="cl-card">
<div class="cl-card-head amber"><span class="icon">⚗️</span><h4>Biochemistry & Electrolytes</h4></div>
<div class="cl-items">
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">U&E: Na, K, Cl, HCO₃, Urea, Creatinine<span class="cl-sub">eGFR (CKD-EPI 2021), acidosis assessment</span></div><div class="threshold">K⁺ &gt;5.5 = urgent</div></div>
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">Venous blood gas (VBG)<span class="cl-sub">pH, pCO₂, HCO₃, lactate — metabolic acidosis severity</span></div><div class="threshold">pH &lt;7.2 = urgent</div></div>
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">Calcium, Phosphate, Magnesium<span class="cl-sub">CKD-MBD assessment; HD prescription planning</span></div><div class="threshold">PO₄ &gt;5.5 mg/dL</div></div>
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">PTH (intact/biointact), Vitamin D 25-OH<span class="cl-sub">Secondary hyperparathyroidism staging</span></div></div>
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">Uric acid, LDH, haptoglobin<span class="cl-sub">Exclude haemolysis, gout exacerbation</span></div></div>
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">24h Urine protein or spot ACR<span class="cl-sub">Proteinuria quantification — KDIGO staging</span></div><div class="threshold">ACR &gt;300 = high risk</div></div>
</div>
</div>
<!-- LIVER & NUTRITION -->
<div class="cl-card">
<div class="cl-card-head green"><span class="icon">🍃</span><h4>Liver Function & Nutrition</h4></div>
<div class="cl-items">
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">LFT: ALT, AST, GGT, Alk Phos, Bilirubin<span class="cl-sub">Hepatic comorbidity; hepatitis serology baseline</span></div></div>
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">Serum Albumin & Pre-albumin<span class="cl-sub">Nutritional status — &lt;3.5 g/dL indicates malnutrition risk</span></div><div class="threshold">Alb &lt;3.5 = high risk</div></div>
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">Lipid panel: TC, LDL, HDL, TG<span class="cl-sub">Cardiovascular risk baseline</span></div></div>
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">HbA1c (if diabetic)<span class="cl-sub">Glycaemic control assessment (note: unreliable in severe anaemia)</span></div><div class="threshold">Target HbA1c 6.58%</div></div>
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">Nutritional screening (MIS or SGA)<span class="cl-sub">Malnutrition Inflammation Score baseline</span></div></div>
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">Fasting glucose & Insulin (HOMA-IR)<span class="cl-sub">Insulin resistance in CKD-metabolic syndrome</span></div></div>
</div>
</div>
<!-- SEROLOGY & INFECTION -->
<div class="cl-card">
<div class="cl-card-head red"><span class="icon">🦠</span><h4>Serology & Infection Screen</h4></div>
<div class="cl-items">
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">Hepatitis B sAg, sAb, core Ab (HBcAb)<span class="cl-sub">Mandatory pre-HD; isolation bay planning; vaccination status</span></div></div>
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">Hepatitis C Ab + HCV RNA (if Ab+)<span class="cl-sub">Identify for treatment pre-dialysis if possible (DAA therapy)</span></div></div>
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">HIV 1/2 Ag/Ab combination assay<span class="cl-sub">Infection control planning; antiretroviral renal dosing</span></div></div>
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">SARS-CoV-2 status (institutional protocol)<span class="cl-sub">Dialysis unit isolation protocol compliance</span></div></div>
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">Quantiferon-TB (or TST)<span class="cl-sub">Latent TB screen — immunosuppressed population</span></div></div>
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">Nasal MRSA swab (pre-AVF / CVC)<span class="cl-sub">Decolonisation protocol if positive (mupirocin × 5d)</span></div></div>
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">Blood culture × 2 if febrile or septic<span class="cl-sub">Before empiric antibiotics — mandatory</span></div></div>
</div>
</div>
<!-- CARDIAC WORKUP -->
<div class="cl-card">
<div class="cl-card-head violet"><span class="icon">❤️</span><h4>Cardiovascular Workup</h4></div>
<div class="cl-items">
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">12-lead ECG<span class="cl-sub">Hyperkalaemia changes, LVH, arrhythmia, ischaemia</span></div><div class="threshold">Mandatory always</div></div>
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">Echocardiogram (transthoracic)<span class="cl-sub">LVH, wall motion, EF, pericardial effusion — uraemic pericarditis</span></div></div>
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">Troponin I/T (high-sensitivity)<span class="cl-sub">Chronically elevated in CKD — baseline essential for future comparison</span></div></div>
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">NT-proBNP or BNP<span class="cl-sub">Volume overload assessment; cardiac failure staging</span></div></div>
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">Chest X-ray (erect PA if possible)<span class="cl-sub">Pulmonary congestion, cardiomegaly, pleural effusion</span></div></div>
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">Holter / prolonged cardiac monitoring (if indicated)<span class="cl-sub">Atrial fibrillation, dialysis-related arrhythmia risk</span></div></div>
</div>
</div>
<!-- VASCULAR ACCESS PRE-ASSESSMENT -->
<div class="cl-card">
<div class="cl-card-head teal"><span class="icon">💉</span><h4>Vascular Access & Miscellaneous</h4></div>
<div class="cl-items">
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">Upper limb vein mapping (duplex USS)<span class="cl-sub">Basilic / cephalic vein diameter ≥2.5 mm for AVF suitability</span></div><div class="threshold">KDOQI VA 2019</div></div>
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">Arterial assessment (radial/brachial pulse, Allen test)<span class="cl-sub">Arterial patency for radio-cephalic or brachio-cephalic AVF</span></div></div>
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">Surgical vascular access referral (≥6 months pre-HD)<span class="cl-sub">AVF maturation requires 68 weeks minimum post-creation</span></div></div>
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">Hepatitis B vaccination status + booster if needed<span class="cl-sub">3-dose series or 2-dose Heplisav-B; higher-dose regimen for CKD</span></div></div>
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">Vaccination: Pneumococcal, Influenza, COVID-19<span class="cl-sub">Immunisation before immunosuppression or dialysis commencement</span></div></div>
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">Renal Dietitian referral + low K/P diet counselling<span class="cl-sub">Pre-dialysis dietary optimisation; phosphate binder education</span></div></div>
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">Psychosocial assessment + RRT modality education<span class="cl-sub">Shared decision-making — HD vs PD vs conservative care</span></div></div>
<div class="cl-item" onclick="toggle(this)"><div class="cl-check"></div><div class="cl-text">Advance care planning documentation<span class="cl-sub">Goals of care, ceiling of treatment, organ donation wishes</span></div></div>
</div>
</div>
```
</div><!-- /checklist-grid -->
<div class="callout success-c" style="margin-top:1.5rem;">
<div class="callout-label">Checklist Progress</div>
Click items above to track completion. All items should be completed before elective dialysis initiation. Items marked <span style="color:var(--red);">red-threshold</span> require immediate clinical action if outside target range.
</div>
</div>
<!-- ══════════════════════════════════════════════
TAB 3 — MEDICATION SAFETY
═══════════════════════════════════════════════ -->
<div id="tab-medications" class="panel">
<div class="sec-head">
<h2>Medication Safety & Renal Dose Adjustment</h2>
<p>Pre-dialysis medication reconciliation with renal dose adjustment guidance. Adjusted for eGFR thresholds per BNF/Micromedex/KDIGO 2022 pharmacotherapy recommendations.</p>
</div>
<div class="callout urgent">
<div class="callout-label">STOP Immediately — Pre-Dialysis</div>
Metformin (if eGFR &lt;30), NSAIDs/COX-2 inhibitors, ACE inhibitors on day of HD (volume-dependent), nephrotoxic antibiotics (gentamicin without level monitoring), oral anticoagulants without renal dose adjustment.
</div>
<div class="med-table-wrap">
<table class="med-table">
<thead>
<tr>
<th>Drug / Class</th>
<th>Action at eGFR</th>
<th>Recommendation</th>
<th>Evidence</th>
<th>Status</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Metformin</strong><br><span style="color:var(--text-dim);font-size:0.72rem;">Biguanide</span></td>
<td>eGFR &lt;45: reduce dose<br>eGFR &lt;30: STOP</td>
<td>Lactic acidosis risk in renal impairment. Withhold if AKI or contrast. Discontinue permanently at eGFR &lt;30.</td>
<td><span class="grade 1A">1A</span> KDIGO</td>
<td><span class="risk-badge stop">STOP &lt;30</span></td>
</tr>
<tr>
<td><strong>SGLT2 Inhibitors</strong><br><span style="color:var(--text-dim);font-size:0.72rem;">Dapagliflozin, Empagliflozin</span></td>
<td>eGFR &lt;25: glycaemic benefit lost; eGFR &lt;20: STOP for glycaemia (renoprotective benefit may persist per DAPA-CKD)</td>
<td>Continue for CKD progression retardation down to eGFR ≥20 (DAPA-CKD trial). Discontinue before HD initiation — dehydration/DKA risk.</td>
<td><span class="grade 1B">1B</span> DAPA-CKD</td>
<td><span class="risk-badge reduce">Reduce/Stop</span></td>
</tr>
<tr>
<td><strong>ACE Inhibitors / ARBs</strong><br><span style="color:var(--text-dim);font-size:0.72rem;">Ramipril, Losartan</span></td>
<td>Continue through CKD if tolerated. Withhold on HD days if volume-depleted. Stop if K⁺ &gt;6.0 mEq/L unresponsive to measures.</td>
<td>Continue for renoprotection and proteinuria reduction. Monitor creatinine (acceptable rise &lt;30% from baseline). Avoid in bilateral RAS.</td>
<td><span class="grade 1A">1A</span> KDIGO 2022</td>
<td><span class="risk-badge monitor">Monitor</span></td>
</tr>
<tr>
<td><strong>NSAIDs / COX-2 inhibitors</strong><br><span style="color:var(--text-dim);font-size:0.72rem;">Ibuprofen, Celecoxib</span></td>
<td>All eGFR levels: avoid; esp. eGFR &lt;30</td>
<td>Contraindicated in CKD G3b+. Accelerate eGFR decline, cause AKI via NSAID-mediated afferent arteriolar constriction. Substitute paracetamol.</td>
<td><span class="grade 1A">1A</span></td>
<td><span class="risk-badge stop">STOP</span></td>
</tr>
<tr>
<td><strong>Gabapentin / Pregabalin</strong><br><span style="color:var(--text-dim);font-size:0.72rem;">Neuropathic pain, uraemic itch</span></td>
<td>eGFR 3060: reduce to 50% dose<br>eGFR &lt;30: 25% dose<br>Dialysis: dose post-HD session</td>
<td>Renally cleared; accumulation causes somnolence, confusion. In HD: significant dialysis clearance — dose after session (100300 mg post-HD).</td>
<td><span class="grade 2B">2B</span></td>
<td><span class="risk-badge reduce">Dose Reduce</span></td>
</tr>
<tr>
<td><strong>Low Molecular Weight Heparin</strong><br><span style="color:var(--text-dim);font-size:0.72rem;">Enoxaparin, Dalteparin</span></td>
<td>eGFR &lt;30: accumulation risk — anti-Xa monitoring or switch to UFH</td>
<td>Use UFH (unfractionated) in eGFR &lt;30 or active HD. If LMWH required: anti-Xa monitoring (target 0.51.0 IU/mL), dose reduction (enoxaparin 1 mg/kg once daily vs BD).</td>
<td><span class="grade 1B">1B</span></td>
<td><span class="risk-badge caution">Caution</span></td>
</tr>
<tr>
<td><strong>Direct Oral Anticoagulants</strong><br><span style="color:var(--text-dim);font-size:0.72rem;">Apixaban, Rivaroxaban, Dabigatran</span></td>
<td>Dabigatran: STOP eGFR &lt;30 (dialysable)<br>Apixaban: use 2.5 mg BD if ≥2 of: Cr&gt;1.5, age≥80, wt≤60 kg; STOP on HD<br>Rivaroxaban: avoid eGFR &lt;15</td>
<td>Warfarin is preferred in CKD G45 AF (lower stroke risk reduction with DOACs in dialysis patients per observational data). Individual risk-benefit with haematology.</td>
<td><span class="grade 2B">2B</span></td>
<td><span class="risk-badge caution">Caution/Adjust</span></td>
</tr>
<tr>
<td><strong>Statins</strong><br><span style="color:var(--text-dim);font-size:0.72rem;">Atorvastatin, Rosuvastatin</span></td>
<td>Continue through all CKD stages. Do NOT initiate in HD patients (4D, AURORA trials — no benefit, possible harm).</td>
<td>Continue if already established in dialysis patients. Do not start de novo in prevalent HD (KDIGO Lipids 2013). Atorvastatin preferred (mainly hepatic clearance).</td>
<td><span class="grade 1A">1A</span> KDIGO Lipids</td>
<td><span class="risk-badge continue">Continue (pre-HD)</span></td>
</tr>
<tr>
<td><strong>Allopurinol</strong><br><span style="color:var(--text-dim);font-size:0.72rem;">Uric acid reduction</span></td>
<td>eGFR 3060: max 200 mg/day<br>eGFR &lt;30: max 100 mg/day<br>HD: dose post-dialysis</td>
<td>Accumulation of active metabolite oxipurinol causes severe toxicity (bone marrow suppression, Stevens-Johnson). Monitor allopurinol level if &lt;eGFR 30.</td>
<td><span class="grade 2C">2C</span></td>
<td><span class="risk-badge reduce">Dose Reduce</span></td>
</tr>
<tr>
<td><strong>Phosphate Binders</strong><br><span style="color:var(--text-dim);font-size:0.72rem;">Calcium carbonate, Sevelamer, Lanthanum</span></td>
<td>Initiate when PO₄ &gt;4.5 mg/dL despite dietary restriction</td>
<td>Non-calcium binders (sevelamer, lanthanum) preferred in dialysis — avoid calcium loading. Calcium carbonate acceptable pre-dialysis if serum Ca normal. Take with meals.</td>
<td><span class="grade 1B">1B</span> KDIGO MBD</td>
<td><span class="risk-badge continue">Initiate if indicated</span></td>
</tr>
<tr>
<td><strong>ESA — Erythropoiesis Stimulating Agents</strong><br><span style="color:var(--text-dim);font-size:0.72rem;">Darbepoetin alfa, Epoetin alfa</span></td>
<td>Initiate when Hb &lt;10 g/dL after iron repletion (TSAT &gt;20%, ferritin &gt;100)</td>
<td>Target Hb 1012 g/dL. Avoid Hb &gt;13 g/dL (CHOIR trial: increased CV events). Reduce or withhold if Hb rising &gt;1 g/dL per 2 weeks or Hb &gt;12.</td>
<td><span class="grade 1A">1A</span> KDIGO Anaemia</td>
<td><span class="risk-badge monitor">Monitor closely</span></td>
</tr>
<tr>
<td><strong>Potassium Binders</strong><br><span style="color:var(--text-dim);font-size:0.72rem;">Patiromer, Sodium Zirconium Cyclosilicate</span></td>
<td>Initiate for persistent K⁺ &gt;5.0 mEq/L to maintain RAAS therapy</td>
<td>Novel agents enable continuation of ACEi/ARB in hyperkalaemia-prone CKD patients. Patiromer: 8.4 g once daily with food. SZC: 10 g TDS × 48h then 5 g/day maintenance.</td>
<td><span class="grade 1B">1B</span></td>
<td><span class="risk-badge continue">Initiate if K⁺ raised</span></td>
</tr>
<tr>
<td><strong>Aminoglycosides</strong><br><span style="color:var(--text-dim);font-size:0.72rem;">Gentamicin, Tobramycin</span></td>
<td>Nephrotoxic — avoid in CKD G3b+. If essential: single-dose, level-guided, with nephrology input</td>
<td>If unavoidable in life-threatening infection: extended-interval dosing, trough &lt;1 mg/L. Monitor renal function daily. Dialysis patients: dose post-HD session; obtain pre-HD trough level.</td>
<td><span class="grade 1A">1A</span></td>
<td><span class="risk-badge stop">Avoid / Level-guide</span></td>
</tr>
</tbody>
</table>
</div>
<div class="callout info" style="margin-top:1rem;">
<div class="callout-label">Medication Reconciliation Principle</div>
All patients transitioning to dialysis require a full medication reconciliation by a renal pharmacist. Particular attention to: drugs requiring post-HD supplemental dosing (gabapentin, acyclovir, vancomycin), drugs with altered protein binding in uraemia, and drugs contraindicated in PD (icodextrin interactions with amylase-based glucose monitors).
</div>
</div>
<!-- ══════════════════════════════════════════════
TAB 4 — DIFFERENTIAL DIAGNOSIS
═══════════════════════════════════════════════ -->
<div id="tab-ddx" class="panel">
<div class="sec-head">
<h2>Differential Diagnosis Support</h2>
<p>Common and important differential diagnoses for acute or subacute deterioration in eGFR in a CKD patient. Probability estimates are contextual — adjust based on clinical history, urinalysis, and imaging.</p>
</div>
<div class="callout warn">
<div class="callout-label">AKI-on-CKD — First Exclude Reversible Causes</div>
Before accepting progressive CKD as the aetiology of eGFR decline, systematically exclude: obstruction (obstructive uropathy), volume depletion, nephrotoxins, renovascular disease, and intrinsic AKI causes. Every unexplained eGFR drop warrants urine dipstick, microscopy, and renal ultrasound as minimum workup.
</div>
<div class="ddx-grid">
```
<!-- PRE-RENAL -->
<div class="ddx-card">
<div class="ddx-head">
<h4>Pre-renal / Haemodynamic</h4>
<span class="pill amber" style="font-size:0.58rem;">Common</span>
</div>
<div class="prob-bar-wrap"><div class="prob-name">Volume depletion (over-diuresis)</div><div class="prob-bar"><div class="prob-fill" style="width:85%;background:var(--amber);"></div></div><div class="prob-pct">85%</div></div>
<div class="prob-bar-wrap"><div class="prob-name">Cardiac failure / cardiorenal</div><div class="prob-bar"><div class="prob-fill" style="width:70%;background:var(--amber);"></div></div><div class="prob-pct">70%</div></div>
<div class="prob-bar-wrap"><div class="prob-name">Sepsis / distributive shock</div><div class="prob-bar"><div class="prob-fill" style="width:60%;background:var(--amber);"></div></div><div class="prob-pct">60%</div></div>
<div class="prob-bar-wrap"><div class="prob-name">Hepatorenal syndrome</div><div class="prob-bar"><div class="prob-fill" style="width:25%;background:var(--amber);"></div></div><div class="prob-pct">25%</div></div>
<div style="padding:0.6rem 1rem;font-size:0.75rem;color:var(--text-dim);">Key: BUN:Cr ratio &gt;20:1, fractional Na excretion &lt;1%, orthostatic hypotension, muddy brown casts absent.</div>
</div>
<!-- OBSTRUCTIVE -->
<div class="ddx-card">
<div class="ddx-head">
<h4>Post-renal / Obstructive</h4>
<span class="pill red" style="font-size:0.58rem;">Must Exclude</span>
</div>
<div class="prob-bar-wrap"><div class="prob-name">BPH / bladder outlet obstruction</div><div class="prob-bar"><div class="prob-fill" style="width:70%;background:var(--red);"></div></div><div class="prob-pct">70%</div></div>
<div class="prob-bar-wrap"><div class="prob-name">Ureteric calculi (bilateral / solitary kidney)</div><div class="prob-bar"><div class="prob-fill" style="width:40%;background:var(--red);"></div></div><div class="prob-pct">40%</div></div>
<div class="prob-bar-wrap"><div class="prob-name">Malignancy — extrinsic compression</div><div class="prob-bar"><div class="prob-fill" style="width:30%;background:var(--red);"></div></div><div class="prob-pct">30%</div></div>
<div class="prob-bar-wrap"><div class="prob-name">Retroperitoneal fibrosis</div><div class="prob-bar"><div class="prob-fill" style="width:10%;background:var(--red);"></div></div><div class="prob-pct">10%</div></div>
<div style="padding:0.6rem 1rem;font-size:0.75rem;color:var(--text-dim);">Key: Renal USS — hydronephrosis. Bladder residual volume &gt;300 mL. Consider CT KUB if USS non-diagnostic. Catheterise if outlet obstruction suspected.</div>
</div>
<!-- NEPHROTOXIN -->
<div class="ddx-card">
<div class="ddx-head">
<h4>Nephrotoxin-Induced AKI</h4>
<span class="pill amber" style="font-size:0.58rem;">High Risk in CKD</span>
</div>
<div class="prob-bar-wrap"><div class="prob-name">NSAIDs / COX-2 inhibitors</div><div class="prob-bar"><div class="prob-fill" style="width:80%;background:#f07060;"></div></div><div class="prob-pct">80%</div></div>
<div class="prob-bar-wrap"><div class="prob-name">Contrast nephropathy (CI-AKI)</div><div class="prob-bar"><div class="prob-fill" style="width:65%;background:#f07060;"></div></div><div class="prob-pct">65%</div></div>
<div class="prob-bar-wrap"><div class="prob-name">Aminoglycosides</div><div class="prob-bar"><div class="prob-fill" style="width:55%;background:#f07060;"></div></div><div class="prob-pct">55%</div></div>
<div class="prob-bar-wrap"><div class="prob-name">Calcineurin inhibitors (tacrolimus, ciclosporin)</div><div class="prob-bar"><div class="prob-fill" style="width:45%;background:#f07060;"></div></div><div class="prob-pct">45%</div></div>
<div class="prob-bar-wrap"><div class="prob-name">Herbal / complementary medicines</div><div class="prob-bar"><div class="prob-fill" style="width:30%;background:#f07060;"></div></div><div class="prob-pct">30%</div></div>
<div style="padding:0.6rem 1rem;font-size:0.75rem;color:var(--text-dim);">Full medication history including OTC, herbal, supplements. NSAID mechanism: afferent arteriolar constriction → acute tubular ischaemia on background CKD.</div>
</div>
<!-- RENOVASCULAR -->
<div class="ddx-card">
<div class="ddx-head">
<h4>Renovascular Disease</h4>
<span class="pill violet" style="font-size:0.58rem;">Under-diagnosed</span>
</div>
<div class="prob-bar-wrap"><div class="prob-name">Atherosclerotic renal artery stenosis</div><div class="prob-bar"><div class="prob-fill" style="width:60%;background:var(--violet);"></div></div><div class="prob-pct">60%</div></div>
<div class="prob-bar-wrap"><div class="prob-name">ACEi-induced in bilateral RAS</div><div class="prob-bar"><div class="prob-fill" style="width:45%;background:var(--violet);"></div></div><div class="prob-pct">45%</div></div>
<div class="prob-bar-wrap"><div class="prob-name">Cholesterol embolisation</div><div class="prob-bar"><div class="prob-fill" style="width:20%;background:var(--violet);"></div></div><div class="prob-pct">20%</div></div>
<div class="prob-bar-wrap"><div class="prob-name">Fibromuscular dysplasia (younger patients)</div><div class="prob-bar"><div class="prob-fill" style="width:10%;background:var(--violet);"></div></div><div class="prob-pct">10%</div></div>
<div style="padding:0.6rem 1rem;font-size:0.75rem;color:var(--text-dim);">Clues: flash pulmonary oedema, refractory hypertension, asymmetric kidneys on USS, eGFR drop &gt;30% on ACEi initiation. Renal duplex or CT angiography for evaluation.</div>
</div>
<!-- GLOMERULAR -->
<div class="ddx-card">
<div class="ddx-head">
<h4>Intrinsic Renal / Glomerular</h4>
<span class="pill blue" style="font-size:0.58rem;">Biopsy May Be Needed</span>
</div>
<div class="prob-bar-wrap"><div class="prob-name">Rapidly progressive GN (RPGN)</div><div class="prob-bar"><div class="prob-fill" style="width:75%;background:var(--blue);"></div></div><div class="prob-pct">75%</div></div>
<div class="prob-bar-wrap"><div class="prob-name">IgA nephropathy exacerbation</div><div class="prob-bar"><div class="prob-fill" style="width:60%;background:var(--blue);"></div></div><div class="prob-pct">60%</div></div>
<div class="prob-bar-wrap"><div class="prob-name">Diabetic nephropathy (DKD) progression</div><div class="prob-bar"><div class="prob-fill" style="width:55%;background:var(--blue);"></div></div><div class="prob-pct">55%</div></div>
<div class="prob-bar-wrap"><div class="prob-name">Membranous nephropathy (de novo)</div><div class="prob-bar"><div class="prob-fill" style="width:30%;background:var(--blue);"></div></div><div class="prob-pct">30%</div></div>
<div class="prob-bar-wrap"><div class="prob-name">Vasculitis (ANCA, anti-GBM)</div><div class="prob-bar"><div class="prob-fill" style="width:20%;background:var(--blue);"></div></div><div class="prob-pct">20%</div></div>
<div style="padding:0.6rem 1rem;font-size:0.75rem;color:var(--text-dim);">Red cell casts / nephritic sediment = glomerular origin. Immunology: ANCA, anti-GBM, ANA, complement (C3/C4), anti-PLA2R. Biopsy if aetiology unclear and clinically safe.</div>
</div>
<!-- METABOLIC / SYSTEMIC -->
<div class="ddx-card">
<div class="ddx-head">
<h4>Metabolic / Systemic</h4>
<span class="pill green" style="font-size:0.58rem;">Reversible if Caught Early</span>
</div>
<div class="prob-bar-wrap"><div class="prob-name">Hypercalcaemia (myeloma, sarcoid, PTH)</div><div class="prob-bar"><div class="prob-fill" style="width:50%;background:var(--green);"></div></div><div class="prob-pct">50%</div></div>
<div class="prob-bar-wrap"><div class="prob-name">Acute uric acid nephropathy</div><div class="prob-bar"><div class="prob-fill" style="width:35%;background:var(--green);"></div></div><div class="prob-pct">35%</div></div>
<div class="prob-bar-wrap"><div class="prob-name">Light chain nephropathy (myeloma cast)</div><div class="prob-bar"><div class="prob-fill" style="width:25%;background:var(--green);"></div></div><div class="prob-pct">25%</div></div>
<div class="prob-bar-wrap"><div class="prob-name">Thrombotic microangiopathy (TMA)</div><div class="prob-bar"><div class="prob-fill" style="width:15%;background:var(--green);"></div></div><div class="prob-pct">15%</div></div>
<div style="padding:0.6rem 1rem;font-size:0.75rem;color:var(--text-dim);">Workup: SPEP, serum free light chains, BJP urine, blood film (schistocytes in TMA), ADAMTS13 (TTP). Calcium and uric acid levels. Bone marrow biopsy if myeloma suspected.</div>
</div>
```
</div><!-- /ddx-grid -->
<div class="callout info" style="margin-top:1.5rem;">
<div class="callout-label">Systematic DDx Approach — AKI-on-CKD Workup</div>
Step 1: Urine dipstick + microscopy (sediment analysis) → Step 2: Urine Na, osmolality, FENa → Step 3: Renal USS (obstruction, kidneys size/symmetry) → Step 4: Medication review for nephrotoxins → Step 5: Immunology screen if glomerular suspected → Step 6: Renal biopsy if aetiology unclear and clinically safe (avoid if small &lt;8 cm echogenic kidneys — chronic irreversible disease likely).
</div>
</div>
<!-- ══════════════════════════════════════════════
TAB 5 — VASCULAR ACCESS
═══════════════════════════════════════════════ -->
<div id="tab-access" class="panel">
<div class="sec-head">
<h2>Vascular Access Planning</h2>
<p>Sequential decision pathway for HD vascular access — KDOQI Vascular Access 2019 guidelines with ERA-EDTA 2023 supplementary recommendations. Fistula First principle remains the gold standard.</p>
</div>
<div class="callout success-c">
<div class="callout-label">KDOQI 2019 — Fistula First Principle</div>
AVF is the preferred permanent access for HD. Access hierarchy: <strong>AVF (radiocephalic → brachiocephalic → transposed brachiobasilic) → AVG → Tunnelled CVC (bridge only)</strong>. Non-tunnelled CVC: emergency only, maximum 7 days.
</div>
<div class="va-timeline">
```
<div class="va-step">
<div class="va-dot avf">AVF</div>
<div class="va-content">
<h4>1st Choice — Autologous AV Fistula (AVF)</h4>
<p>Radiocephalic (wrist, RC-AVF) is the preferred first attempt — lowest thrombosis, best long-term patency. If unsuitable (vein &lt;2 mm, arterial disease): brachiocephalic (BC-AVF) or transposed brachiobasilic (BB-AVF). Requires vein diameter ≥2.5 mm and radial artery diameter ≥2.0 mm on duplex mapping.</p>
<p style="margin-top:0.4rem;font-size:0.78rem;"><strong style="color:var(--text);">Maturation criteria (KDOQI "Rule of 6s"):</strong> Diameter ≥6 mm, depth ≤6 mm from skin, flow ≥600 mL/min at 6 weeks post-creation.</p>
<p class="timing">⏱ Refer ≥6 months before anticipated HD start · Maturation 612 weeks · Primary failure rate: 2040%</p>
</div>
</div>
<div class="va-step">
<div class="va-dot avg">AVG</div>
<div class="va-content">
<h4>2nd Choice — Prosthetic AV Graft (AVG)</h4>
<p>When autologous veins are unsuitable or primary AVF has failed. ePTFE or PTFE graft — brachio-antecubital most common. Earlier cannulation possible (23 weeks for standard PTFE, 2472 hours for early cannulation grafts). Higher thrombosis and infection rates vs. AVF. Surveillance programme essential (monthly flow monitoring).</p>
<p class="timing">⏱ Cannulation 26 weeks (standard) or 2472h (Acuseal/Flixene) · Suitable for patients with poor vein anatomy</p>
</div>
</div>
<div class="va-step">
<div class="va-dot cvc">CVC</div>
<div class="va-content">
<h4>Bridge / Emergency — Tunnelled Cuffed CVC (TCC)</h4>
<p>Right internal jugular vein is the preferred site. Subclavian vein must be avoided — high risk of central vein stenosis that precludes future ipsilateral AVF/AVG. Femoral CVC only for short-term bridge in emergencies with no upper limb access. TCC carries ×3 higher mortality risk than AVF (infection, thrombosis, bacteraemia — <em>Staphylococcus aureus</em> most common pathogen).</p>
<p style="color:var(--red);font-size:0.78rem;margin-top:0.4rem;">⚠ Non-tunnelled CVC: maximum 7 days only. Convert to TCC or functioning AVF/AVG as soon as possible.</p>
<p class="timing">⏱ Right IJV preferred · Subclavian CONTRAINDICATED · Lock with citrate or heparin between sessions</p>
</div>
</div>
<div class="va-step">
<div class="va-dot pd">PD</div>
<div class="va-content">
<h4>Alternative — Peritoneal Dialysis Catheter</h4>
<p>For patients choosing PD as modality. Tenckhoff catheter — laparoscopic placement preferred (lower malposition rates). Break-in period: 2 weeks minimum (urgent start PD possible with low-volume supine exchanges after 12 days in experienced centres). Patient suitability: intact peritoneum, adequate home environment, manual dexterity or trained caregiver.</p>
<p><strong style="color:var(--text);">Absolute PD contraindications:</strong> extensive abdominal adhesions, active abdominal infection/IBD, large abdominal hernia (repair first), no peritoneal access possible.</p>
<p class="timing">⏱ Insert ≥2 weeks before PD start · Allows flush and leak testing · Urgent start possible in experienced centres</p>
</div>
</div>
```
</div>
<h3 style="color:var(--text-bright); font-family:var(--body); font-size:1rem; margin-bottom:1rem; margin-top:0.5rem;">Access Selection Decision Matrix</h3>
<div class="med-table-wrap">
<table class="med-table">
<thead>
<tr>
<th>Clinical Factor</th>
<th>AVF</th>
<th>AVG</th>
<th>TCC</th>
<th>PD Catheter</th>
</tr>
</thead>
<tbody>
<tr><td>Adequate vein (≥2.5 mm duplex)</td><td style="color:var(--green)">✓ Preferred</td><td style="color:var(--amber)">Alternative</td><td style="color:var(--text-dim)">Not indicated</td><td style="color:var(--text-dim)">Not applicable</td></tr>
<tr><td>Poor peripheral veins</td><td style="color:var(--text-dim)">Not feasible</td><td style="color:var(--green)">✓ Preferred</td><td style="color:var(--amber)">Bridge</td><td style="color:var(--blue)">Consider PD</td></tr>
<tr><td>Imminent HD need (&lt;1 week)</td><td style="color:var(--text-dim)">Not ready</td><td style="color:var(--amber)">Early cannulation graft</td><td style="color:var(--green)">✓ Use</td><td style="color:var(--amber)">Urgent start PD</td></tr>
<tr><td>Active systemic infection</td><td style="color:var(--red)">Defer</td><td style="color:var(--red)">Defer</td><td style="color:var(--amber)">Caution</td><td style="color:var(--red)">Contraindicated</td></tr>
<tr><td>Patient preference — home therapy</td><td style="color:var(--amber)">Home HD possible</td><td style="color:var(--text-dim)">Less suitable</td><td style="color:var(--text-dim)">Not suitable</td><td style="color:var(--green)">✓ Ideal</td></tr>
<tr><td>Diabetic + severe peripheral vascular disease</td><td style="color:var(--amber)">May have arterial issues</td><td style="color:var(--green)">✓ Preferred</td><td style="color:var(--amber)">Bridge</td><td style="color:var(--blue)">Consider</td></tr>
<tr><td>Previous failed access (ipsilateral)</td><td style="color:var(--amber)">Contralateral AVF</td><td style="color:var(--green)">✓ Preferred</td><td style="color:var(--amber)">Bridge</td><td style="color:var(--blue)">Consider PD</td></tr>
</tbody>
</table>
</div>
<div class="callout info" style="margin-top:1rem;">
<div class="callout-label">Subclavian Vein — Absolute Contraindication for HD Access</div>
Subclavian vein catheterisation carries a 4050% risk of central vein stenosis or occlusion, which permanently precludes ipsilateral upper limb arteriovenous access. KDOQI 2019 recommends the subclavian route is <strong>never used</strong> for HD access in patients with existing or potential future upper limb fistulas. Right internal jugular vein is the universal first choice.
</div>
</div><!-- /panel -->
<script>
// Tab switching
function switchTab(id, btn) {
document.querySelectorAll('.panel').forEach(p => p.classList.remove('active'));
document.querySelectorAll('.tab-btn').forEach(b => b.classList.remove('active'));
document.getElementById('tab-' + id).classList.add('active');
btn.classList.add('active');
}
// Checklist toggle
function toggle(el) {
el.classList.toggle('checked');
}
// CKD-EPI 2021 eGFR Calculator (Creatinine-only, race-free)
function calcEGFR() {
const cr = parseFloat(document.getElementById('cr').value);
const age = parseFloat(document.getElementById('age').value);
const sex = document.getElementById('sex').value;
if (!cr || !age || cr <= 0 || age <= 0) {
alert('Please enter valid creatinine and age values.');
return;
}
let kappa, alpha;
if (sex === 'female') { kappa = 0.7; alpha = -0.241; }
else { kappa = 0.9; alpha = -0.302; }
const crKappa = cr / kappa;
const minTerm = Math.min(crKappa, 1);
const maxTerm = Math.max(crKappa, 1);
const sexMult = sex === 'female' ? 1.012 : 1.0;
const egfr = 142 * Math.pow(minTerm, alpha) * Math.pow(maxTerm, -1.200) * Math.pow(0.9938, age) * sexMult;
const egfrRounded = Math.round(egfr * 10) / 10;
// Stage
let stage, stageDesc, stageColor, rec;
if (egfr >= 90) {
stage = 'G1'; stageDesc = 'Normal or high eGFR'; stageColor = 'var(--green)';
rec = 'CKD G1 — Diagnosis requires additional evidence of kidney damage (e.g., proteinuria, haematuria, structural abnormality). Optimise cardiovascular risk factors. Annual eGFR monitoring.';
} else if (egfr >= 60) {
stage = 'G2'; stageDesc = 'Mildly reduced'; stageColor = 'var(--blue)';
rec = 'CKD G2 — Mildly reduced eGFR. Requires evidence of kidney damage for CKD diagnosis. RAAS blockade if proteinuric. 6-12 monthly monitoring.';
} else if (egfr >= 30) {
stage = 'G3'; stageDesc = 'Moderately reduced';
stageColor = egfr >= 45 ? 'var(--teal)' : 'var(--amber)';
rec = 'CKD G3 (' + (egfr >= 45 ? 'G3a' : 'G3b') + ') — Begin CKD complications screening (anaemia, MBD, acidosis). Consider nephrology referral. SGLT2i if eligible. 36 monthly monitoring.';
} else if (egfr >= 15) {
stage = 'G4'; stageDesc = 'Severely reduced'; stageColor = '#f07060';
rec = '⚠ CKD G4 — Nephrology must be involved. Begin pre-dialysis preparation: RRT education, vascular access planning (AVF referral if HD planned), vaccinations (HBV, pneumococcal). Monthly monitoring.';
} else {
stage = 'G5'; stageDesc = 'Kidney failure'; stageColor = 'var(--red)';
rec = '🚨 CKD G5 (Kidney Failure) — Assess for dialysis initiation. Evaluate for emergency criteria (uraemia, hyperkalaemia, acidosis, fluid overload). If asymptomatic, may defer — IDEAL Trial: no benefit to early initiation. Symptom-guided start.';
}
document.getElementById('egfr-val').textContent = egfrRounded;
document.getElementById('egfr-val').style.color = stageColor;
document.getElementById('stage-label').textContent = stage + ' — ' + stageDesc;
document.getElementById('egfr-recommendation').textContent = rec;
// Stage bar
['g1','g2','g3','g4','g5'].forEach(s => document.getElementById('seg-'+s).classList.remove('active'));
const stageMap = { 'G1': 'g1', 'G2': 'g2', 'G3': 'g3', 'G4': 'g4', 'G5': 'g5' };
document.getElementById('seg-' + stageMap[stage]).classList.add('active');
document.getElementById('calc-result').classList.add('show');
}
</script>
</body>
</html>