MediaWiki:Lékařská kalkulačka/Nutrice.js

Z WikiSkript

Poznámka: Po zveřejnění musíte vyprázdnit cache vašeho prohlížeče, jinak změny neuvidíte.

  • Firefox / Safari: Při kliknutí na Aktualizovat držte Shift nebo stiskněte Ctrl-F5 nebo Ctrl-R (na Macu ⌘-R)
  • Google Chrome: Stiskněte Ctrl-Shift-R (na Macu ⌘-Shift-R)
  • Internet Explorer / Edge: Při kliknutí na Aktualizovat držte Ctrl nebo stiskněte Ctrl-F5
  • Opera: Stiskněte Ctrl-F5.
String.prototype.replaceAll = function(token, newToken, ignoreCase) {
    var str, i = -1, _token;
    if((str = this.toString()) && typeof token === "string") {
        _token = ignoreCase === true? token.toLowerCase() : undefined;
        while((i = (
            _token !== undefined? 
                str.toLowerCase().indexOf(
                            _token, 
                            i >= 0? i + newToken.length : 0
                ) : str.indexOf(
                            token,
                            i >= 0? i + newToken.length : 0
                )
        )) !== -1 ) {
            str = str.substring(0, i)
                    .concat(newToken)
                    .concat(str.substring(i + token.length));
        }
    }
return str;
};

/**************** Převod do html podoby ****************/
var content = $( '#lekarska_kalkulacka_Nutrice-content' ).text();
$( '#lekarska_kalkulacka_Nutrice' ).html( content.replaceAll('paragraph', 'p' ).replaceAll( 'resValue', 'span' ).replaceAll('breakline', 'br' ).replaceAll('division', 'div').replaceAll('orderedlist', 'ol') );

/**************** Propojeni input field: range a number *************/
$( '#lekarska_kalkulacka_Nutrice-hmotnost-number' ).change( function() {
	$( '#lekarska_kalkulacka_Nutrice-hmotnost-range').val( $( '#lekarska_kalkulacka_Nutrice-hmotnost-number' ).val() );
});
$( '#lekarska_kalkulacka_Nutrice-hmotnost-range' ).change( function() {
	$( '#lekarska_kalkulacka_Nutrice-hmotnost-number').val( $( '#lekarska_kalkulacka_Nutrice-hmotnost-range' ).val() );
});

$( '#lekarska_kalkulacka_Nutrice-vyska-number' ).change( function() {
	$( '#lekarska_kalkulacka_Nutrice-vyska-range').val( $( '#lekarska_kalkulacka_Nutrice-vyska-number' ).val() );
});
$( '#lekarska_kalkulacka_Nutrice-vyska-range' ).change( function() {
	$( '#lekarska_kalkulacka_Nutrice-vyska-number').val( $( '#lekarska_kalkulacka_Nutrice-vyska-range' ).val() );
});

$( '#lekarska_kalkulacka_Nutrice-vek-number' ).change( function() {
	$( '#lekarska_kalkulacka_Nutrice-vek-range').val( $( '#lekarska_kalkulacka_Nutrice-vek-number' ).val() );
});
$( '#lekarska_kalkulacka_Nutrice-vek-range' ).change( function() {
	$( '#lekarska_kalkulacka_Nutrice-vek-number').val( $( '#lekarska_kalkulacka_Nutrice-vek-range' ).val() );
});

$( '#lekarska_kalkulacka_Nutrice-propofol-number' ).change( function() {
	$( '#lekarska_kalkulacka_Nutrice-propofol-range').val( $( '#lekarska_kalkulacka_Nutrice-propofol-number' ).val() );
});
$( '#lekarska_kalkulacka_Nutrice-propofol-range' ).change( function() {
	$( '#lekarska_kalkulacka_Nutrice-propofol-number').val( $( '#lekarska_kalkulacka_Nutrice-propofol-range' ).val() );
});

$( '#lekarska_kalkulacka_Nutrice-citrat-number' ).change( function() {
	$( '#lekarska_kalkulacka_Nutrice-citrat-range').val( $( '#lekarska_kalkulacka_Nutrice-citrat-number' ).val() );
});
$( '#lekarska_kalkulacka_Nutrice-citrat-range' ).change( function() {
	$( '#lekarska_kalkulacka_Nutrice-citrat-number').val( $( '#lekarska_kalkulacka_Nutrice-citrat-range' ).val() );
});


/**************** Vlastní výpočet ****************/
$( 'input' ).change( function() {
  var hmotnost = parseInt( $( '#lekarska_kalkulacka_Nutrice-hmotnost-number' ).val() );
  var vyska = parseInt( $( '#lekarska_kalkulacka_Nutrice-vyska-number').val() );
  var vek = parseInt( $( '#lekarska_kalkulacka_Nutrice-vek-number').val() );
  var pohlavi = parseInt($('input[name=pohlavi]:checked').val());
  var aktivita = parseInt($('input[name=aktivita]:checked').val());
  var teplota = parseInt($('input[name=teplota]:checked').val());
  var stav = parseInt($('input[name=stav]:checked').val());
  var propofol = parseInt( $( '#lekarska_kalkulacka_Nutrice-propofol-number').val() );
  var citrat = parseInt( $( '#lekarska_kalkulacka_Nutrice-citrat-number').val() );
  var result = 'result';
  
  switch (aktivita) {
  	case 0: aktivita = 1.0; break;
  	case 1: aktivita = 1.1; break;
  	case 2: aktivita = 1.2; break;
  	case 3: aktivita = 1.3; break;
  	default: aktivita =1.0; break;
  }
  switch (teplota) {
  	case 0: teplota = 1.0; break;
  	case 1: teplota = 1.1; break;
  	case 2: teplota = 1.2; break;
  	case 3: teplota = 1.3; break;
  	default: teplota =1.0; break;
  }
  switch (stav) {
  	case 0: stav = 1.0; break;
  	case 1: stav = 1.1; break;
  	case 2: stav = 1.3; break;
  	case 3: stav = 1.4; break;
  }
  var harrisBenedict = 0;
  
  var idealni_hmotnost = 0;
  if (pohlavi == 0) { //muz
	idealni_hmotnost = (0.655 * vyska) - 44.1;
  } else {
  	idealni_hmotnost = (0.593* vyska) - 38.6;
  }
  var adjustovana_hmotnost = idealni_hmotnost + 0.4 * (hmotnost - idealni_hmotnost);
  
  if (pohlavi == 0) {        //muz
    harrisBenedict = 66.5 + (13.75 * adjustovana_hmotnost) + (5.003 * vyska) - (6.755 * vek);
  } else if (pohlavi == 1) { //zena
  	harrisBenedict = 655  + (9.563 * adjustovana_hmotnost) + (1.850 * vyska) - (4.676 * vek);
  }
  var harrisBenedictKJ = harrisBenedict * 4.184;
  var tee = harrisBenedict * aktivita * teplota * stav;
  var teeKJ = tee * 4.184;
  
  //pravidlo 100-50-20
  var fluids = 0;
  if (adjustovana_hmotnost > 20) {
  	fluids = 1100 + 20 * adjustovana_hmotnost;
  } else if (adjustovana_hmotnost > 10) {
  	fluids = 500 + 50 * adjustovana_hmotnost;
  } else {
  	fluids = 100 * adjustovana_hmotnost;
  }
  var fluidRate = fluids/24;

  var nenutricniZdroje = 1.1 * propofol + 3 * citrat;
  var espenMin     = 20  * adjustovana_hmotnost;
  var espenMax     = 25  * adjustovana_hmotnost;
  var espenProtein = 1.3 * adjustovana_hmotnost;
  var espenLipid   = 1.5 * adjustovana_hmotnost;
  
  result = "<p>Ideální hmotnost je " + Math.round(idealni_hmotnost) + " kg. Adjustovaná hmotnost je " + Math.round(adjustovana_hmotnost) + " kg.</p>";
  result += "<p>Výpočet bazální energetické potřeby podle Harris-Benedictovy rovnice s adjustovanou hmotností je: " + Math.round(harrisBenedict) + " kcal/den (" + Math.round(harrisBenedictKJ) + " kJ/den).</p>";
  result += "<p>Celková energetická potřeba vzhledem ke stavu je: " + Math.round(tee) + " kcal/den (" + Math.round(teeKJ) + " kJ/den). Pro bolusové podání je u koncentrace 1,0 kcal/ml dávka 5&times;" + Math.round(tee/5) + " ml (např. 14-18-22-06-10 hod.) či 6&times;" + Math.round(tee/6) + " ml (např. 12-15-18-21-06-09 hod.), pro kontinuální podání po 16 hodin (např. 06-22 hod.) je to rychlost " + Math.round(tee/16) + " ml/h. Pro koncentraci 1,5 kcal/ml je to 5&times;" + Math.round((tee/5)/1.5) + " ml, resp. 6&times;" + Math.round((tee/6)/1.5) + " ml, resp. " + Math.round((tee/16)/1.5) + " ml/h.</p>";
  result += "<p>Odhad potřeby tekutin podle pravidla 100-50-20 s adjustovanou hmotností je: " + Math.round(fluids) + " ml/den. Pro plné hrazení tekutin intravenózně je tedy rychlost infuze " + Math.round(fluidRate) + " ml/h.</p>";
  result += "<p>Z nenutričních zdrojů (propofol a citrát) je hrazeno " + Math.round(nenutricniZdroje) + " kcal.</p>";
  result += "<p>Dle doporučení <a href='https://www.espen.org/files/ESPEN-Guidelines/ESPEN_guideline-on-clinical-nutrition-in-the-intensive-care-unit.pdf'>ESPEN 2019</a> u ventilovaných pacientů má být použita nepřímá kalorimetrie. Není-li dostupná, tak je vhodné použít měření vydechovaného oxidu uhličitého dle ventilátoru. ";
  result += "Není-li ani to dostupné, tak je odhad dle ESPEN s využitím adjustované hmotnosti " + Math.round(espenMin) + "–" + Math.round(espenMax) + " kcal/den, první týden však jen 70 %, t.j. " + Math.round(0.7*espenMin) + "–" + Math.round(0.7*espenMax) + " kcal/den. ";
  result += "Progresivně se má dosáhnout dávky proteinu " + Math.round(espenProtein) + " g/den a dávky intravenózních lipidů dle tolerance, avšak ne vyšší než " + Math.round(espenLipid) + " g/den.</p>";
 
  $( '#lekarska_kalkulacka_Nutrice-vysledek' ).html( result );
});