Seite anzeigenÄltere VersionenLinks hierherNach oben Diese Seite ist nicht editierbar. Sie können den Quelltext sehen, jedoch nicht verändern. Kontaktieren Sie den Administrator, wenn Sie glauben, dass hier ein Fehler vorliegt. ====== Effektivität der Hämodialyse ====== <html> <style> .ktv-wrap{max-width:800px;border:1px solid #ccc;padding:15px;border-radius:12px;background:#fff;font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; color: #333;} .ktv-card{border:1px solid #ddd;border-radius:10px;padding:15px;margin-top:15px; box-shadow: 0 2px 4px rgba(0,0,0,0.05)} .ktv-card h3{margin:0 0 12px 0;font-size:17px;color:#2c3e50;border-bottom:2px solid #3498db;padding-bottom:5px;} .ktv-row label{display:block;font-size:13px;margin-bottom:5px;font-weight:600; color: #444;} .ktv-row input,.ktv-row select{ width:100%; padding:10px; border:1px solid #bbb; border-radius:8px; font-size:15px; box-sizing:border-box; background: #fdfdfd; } .ktv-flex-row {display: flex; gap: 12px;} .ktv-flex-row .ktv-row {flex: 1;} .ktv-out{ font-family: 'Cascadia Code', 'Courier New', monospace; background:#2c3e50; color:#ecf0f1; padding:18px; border-radius:10px; font-size:13px; line-height:1.6; white-space: pre-wrap; } .ktv-badge{display:inline-block;padding:3px 12px;border-radius:20px;font-size:12px;margin-left:8px;font-weight:bold; text-transform: uppercase;} .green{background:#27ae60; color:#fff} .yellow{background:#f1c40f; color:#000} .red{background:#e74c3c; color:#fff} .warn-box { background: #fff3cd; color: #856404; padding: 10px; border-radius: 8px; font-size: 12px; margin-top: 10px; border: 1px solid #ffeeba; } @media print { .btn-export, .no-print { display: none !important; } .ktv-wrap { border: none; width: 100%; } .ktv-out { background: #fff !important; color: #000 !important; border: 1px solid #000; } } </style> <div class="ktv-wrap" id="ktvApp"> <div class="ktv-card"> <h3>Patient & Datum</h3> <div class="ktv-flex-row"> <div class="ktv-row"><label>Name</label><input type="text" id="pName"></div> <div class="ktv-row"><label>Vorname</label><input type="text" id="pVorname"></div> </div> <div class="ktv-flex-row"> <div class="ktv-row"><label>Datum</label><input type="date" id="pDate"></div> <div class="ktv-row"><label>Geschlecht</label><select id="sex"><option value="m">männlich</option><option value="w">weiblich</option></select></div> </div> </div> <div class="ktv-card"> <h3>Anthropometrie (Watson-Korrektur)</h3> <div class="ktv-flex-row"> <div class="ktv-row"><label>Größe (cm)</label><input type="number" id="heightCm" value="175"></div> <div class="ktv-row"><label>Gewicht post (kg)</label><input type="number" id="wPostKg" value="75"></div> <div class="ktv-row"><label>Ödeme (L)</label><input type="number" id="edemaL" value="0"></div> </div> <div class="ktv-flex-row"> <div class="ktv-row"><label>Alter (Jahre)</label><input type="number" id="ageYears" value="65"></div> <div class="ktv-row"><label>V-Modell</label><select id="vModel"><option value="watson">Watson (empfohlen)</option><option value="simple">Einfach (0.6/0.55)</option></select></div> </div> </div> <div class="ktv-card"> <h3>Dialyse & Metabolismus</h3> <div class="ktv-flex-row"> <div class="ktv-row"><label>Cpre (mg/dl)</label><input type="number" id="cPre" value="80"></div> <div class="ktv-row"><label>Cpost (mg/dl)</label><input type="number" id="cPost" value="25"></div> <div class="ktv-row"><label>Cpre_nächste</label><input type="number" id="cPreNext" placeholder="nPCR"></div> </div> <div class="ktv-flex-row"> <div class="ktv-row"><label>Zeit t (h)</label><input type="number" id="tHours" value="4"></div> <div class="ktv-row"><label>UF-Ziel (L)</label><input type="number" id="ufL" value="2"></div> <div class="ktv-row"><label>Intervall (h)</label><input type="number" id="intervH" value="44"></div> </div> </div> <div class="ktv-card"> <h3>Residualfunktion (Variable Target)</h3> <div class="ktv-flex-row"> <div class="ktv-row"><label>U-Harnstoff</label><input type="number" id="uUrea"></div> <div class="ktv-row"><label>Urin (ml)</label><input type="number" id="uVolMl"></div> <div class="ktv-row"><label>Sitzungen/Wo</label><select id="nWeek"><option value="2">2</option><option value="3" selected>3</option></select></div> </div> <div class="ktv-row"> <label>Pu (optional)</label> <input type="number" id="pUreaOverride" placeholder="falls ≠ Cpre"> </div> </div> <div class="ktv-card"> <h3>Klinischer Report</h3> <div class="ktv-out" id="out"></div> <div id="warnArea"></div> <button class="btn-export" style="background:#3498db; color:white; width:100%; border:none; padding:15px; border-radius:8px; margin-top:10px; cursor:pointer; font-weight:bold;" onclick="window.print()">BERICHT ALS PDF SPEICHERN</button> </div> </div> <script> (function(){ document.getElementById('pDate').valueAsDate = new Date(); const inputs = document.querySelectorAll('input, select'); function num(id){ return parseFloat(document.getElementById(id).value) || 0; } function sel(id){ return document.getElementById(id).value; } function calc(){ const W = num("wPostKg"), H = num("heightCm"), sex = sel("sex"), age = num("ageYears"), edema = num("edemaL"); const dryW = W - edema; let V = (sex === "m") ? (2.447 - 0.09156*age + 0.1074*H + 0.3362*dryW) : (-2.097 + 0.1069*H + 0.2466*dryW); if(sel("vModel") === "simple") V = (sex === "m" ? 0.6 : 0.55) * dryW; const Cpre = num("cPre"), Cpost = num("cPost"), tH = num("tHours"), uf = num("ufL"), N = parseInt(sel("nWeek")); const R = Cpost / Cpre; const sp = -Math.log(R - 0.008 * tH) + (4 - 3.5 * R) * (uf / W); const e = sp * ( (tH*60) / (tH*60 + 35) ); const stdDial = (10080 * (1 - Math.exp(-e)) / (tH*60)) / ((1 - Math.exp(-e)) / sp + (10080 / (N * tH * 60)) - 1); const ufRate = (uf * 1000) / tH / W; const Uu = num("uUrea"), Vml = num("uVolMl"), Pu = num("pUreaOverride") || Cpre; const Kru = (Uu > 0) ? (Uu * Vml) / ( (Pu * 0.9) * 1440 ) : 0; const stdRenal = (1.25 * Kru / 1000) * 10080 / V; const total = stdDial + stdRenal; // --- MODERN: VARIABLE TARGET LOGIK --- const kruRef = 5.0; let dynamicTarget = 2.3; if (Kru > 0) { // Reduktion des Ziels um bis zu 0.3 Punkte bei guter Kru dynamicTarget = Math.max(2.0, 2.3 - (Math.min(1, Kru / kruRef) * 0.3)); } const isTargetMet = total >= dynamicTarget; const status = isTargetMet ? {c:"green", t:"ZIEL ERREICHT"} : {c:"red", t:"DOSIS ERHÖHEN"}; const Cnext = num("cPreNext"), interv = num("intervH"); let npcr = (Cnext > 0) ? (((Cnext - Cpost) / interv) * V * 0.6 / dryW) + 0.17 : null; document.getElementById("out").innerHTML = `PATIENT: ${document.getElementById("pName").value || '—'}, ${document.getElementById("pVorname").value || '—'}\n` + `----------------------------------------------------------------\n` + `stdKt/V GESAMT: ${total.toFixed(3)} [${status.t}]\n` + `INDIV. ZIELWERT: ${dynamicTarget.toFixed(2)} (basiert auf Kru)\n\n` + `DETAIL-ANALYSE:\n` + `stdKt/V dialytisch: ${stdDial.toFixed(3)} (spKt/V: ${sp.toFixed(2)})\n` + `stdKt/V renal: ${stdRenal.toFixed(3)} (Kru: ${Kru.toFixed(2)} ml/min)\n\n` + `SICHERHEIT & ERNÄHRUNG:\n` + `UF-Rate: ${ufRate.toFixed(1)} ml/h/kg\n` + `nPCR (Protein): ${npcr ? npcr.toFixed(2) + ' g/kg/d' : 'k.A.'}\n` + `V (Watson): ${V.toFixed(1)} L`; let warns = ""; if(!isTargetMet) warns += `<div class="warn-box" style="border-left: 5px solid #e74c3c;">⚠️ <b>Dosis-Defizit:</b> Das individuelle Wochenziel von ${dynamicTarget.toFixed(2)} wurde unterschritten.</div>`; if(ufRate > 12) warns += `<div class="warn-box" style="border-left: 5px solid #f1c40f;">⚠️ <b>Kardiale Belastung:</b> UF-Rate > 12 ml/h/kg.</div>`; document.getElementById("warnArea").innerHTML = warns; } inputs.forEach(el => el.addEventListener("input", calc)); calc(); })(); </script> </html> ====== Legende ====== ^ Parameter ^ Bedeutung ^ Klinischer Zielwert ^ | **spKt/V** | Single-Pool Kt/V. Misst die Harnstoff-Elimination einer Einzelsitzung ohne Rebound. | > 1,2 (bei 3x wöchentl.) | | **eKt/V** | Equilibrated Kt/V. Berücksichtigt den Harnstoff-Rebound aus dem Gewebe (nach Tattersall/Daugirdas). Entspricht dem double-Pool Kt/V | > 1,05 | | **stdKt/V** | Standardisierter Kt/V (Wochenwert). Erlaubt Vergleichbarkeit bei versch. Frequenzen und ist Voraussetzung, um die residuelle Restfunktion zu berücksichtigen. | **gut > 2,3** (mind. > 2,1), bei relevanter Kru individueller Zielwert| | **UF-Rate** | Ultrafiltrationsrate in ml pro Stunde pro kg Körpergewicht. | **< 10–13 ml/h/kg** | | **Kru** | Residuale Nierenfunktion (Harnstoff-Clearance). | Erhalt anstreben | | **nPCR** | Normalized Protein Catabolic Rate. Marker für die Proteinzufuhr/Ernährung. | **1,0 – 1,2 g/kg/d** | | **V** | Berechnetes Harnstoff-Verteilungsvolumen (entspricht ca. dem Gesamtkörperwasser). | Individuell (anthropometrisch) | ==== Sicherheitshinweise ==== * **UF**-Raten > 13 ml/h/kg korrelieren mit erhöhter Mortalität (Myocardial Stunning). * **nPCR**-Werte < 0,8 g/kg/d deuten auf eine Mangelernährung (PEW) hin. * **stdKt/V**-Werte < 2,1 erfordern Verlängerung der Dialysezeit oder Erhöhung des Blutflusses. ==== Literatur ==== * {{https://www.dgfn.eu/dialyse-standard.html|Dialysestandard 2016, Kapitel B.13.3.2 Dialyseeffektivität}} * [[https://kidney.wiki/adequacy-calculator/|Pädiatrischer Kt/V-Rechner]] modul2/ktv.txt Zuletzt geändert: 2026/02/20 09:07von kidneyboy