MediaWiki:Lékařská kalkulačka/Ionty.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.
/**
 * ReplaceAll by Fagner Brack (MIT Licensed)
 * Replaces all occurrences of a substring in a string
 */
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_Ionty-content' ).text();
$( '#lekarska_kalkulacka_Ionty' ).html( content.replaceAll('paragraph', 'p' ).replaceAll( 'resValue', 'span' ).replaceAll('breakline', 'br' ).replaceAll('division', 'div').replaceAll('orderedlist', 'ol').replaceAll('super', 'sup').replaceAll('bb', 'b')  );

/**************** Propojeni input field: range a number *************/
$( '#lekarska_kalkulacka_Ionty-ionty-hmotnost-number' ).change( function() {
        $( '#lekarska_kalkulacka_Ionty-ionty-hmotnost-range').val( $( '#lekarska_kalkulacka_Ionty-ionty-hmotnost-number' ).val() );
});
$( '#lekarska_kalkulacka_Ionty-ionty-hmotnost-range' ).change( function() {
        $( '#lekarska_kalkulacka_Ionty-ionty-hmotnost-number').val( $( '#lekarska_kalkulacka_Ionty-ionty-hmotnost-range' ).val() );
});
$( '#lekarska_kalkulacka_Ionty-ionty-Na-number' ).change( function() { 
        $( '#lekarska_kalkulacka_Ionty-ionty-Na-range').val( $( '#lekarska_kalkulacka_Ionty-ionty-Na-number' ).val() );
});
$( '#lekarska_kalkulacka_Ionty-ionty-Na-range' ).change( function() { 
        $( '#lekarska_kalkulacka_Ionty-ionty-Na-number').val( $( '#lekarska_kalkulacka_Ionty-ionty-Na-range' ).val() );
});
$( '#lekarska_kalkulacka_Ionty-ionty-K-number' ).change( function() {  
        $( '#lekarska_kalkulacka_Ionty-ionty-K-range').val( $( '#lekarska_kalkulacka_Ionty-ionty-K-number' ).val() );
});
$( '#lekarska_kalkulacka_Ionty-ionty-K-range' ).change( function() {  
        $( '#lekarska_kalkulacka_Ionty-ionty-K-number').val( $( '#lekarska_kalkulacka_Ionty-ionty-K-range' ).val() );
});
$( '#lekarska_kalkulacka_Ionty-ionty-rychlost-09NaCl-number' ).change( function() {
        $( '#lekarska_kalkulacka_Ionty-ionty-rychlost-09NaCl-range').val( $( '#lekarska_kalkulacka_Ionty-ionty-rychlost-09NaCl-number' ).val() );
});
$( '#lekarska_kalkulacka_Ionty-ionty-rychlost-09NaCl-range' ).change( function() { 
        $( '#lekarska_kalkulacka_Ionty-ionty-rychlost-09NaCl-number').val( $( '#lekarska_kalkulacka_Ionty-ionty-rychlost-09NaCl-range' ).val() );
});

$( '#lekarska_kalkulacka_Ionty-ionty-10NaCl-number' ).change( function() {
        $( '#lekarska_kalkulacka_Ionty-ionty-10NaCl-range').val( $( '#lekarska_kalkulacka_Ionty-ionty-rychlost-10NaCl-number' ).val() );
});
$( '#lekarska_kalkulacka_Ionty-ionty-10NaCl-range' ).change( function() { 
        $( '#lekarska_kalkulacka_Ionty-ionty-10NaCl-number').val( $( '#lekarska_kalkulacka_Ionty-ionty-10NaCl-range' ).val() );
});

$( '#lekarska_kalkulacka_Ionty-ionty-rychlost-G5-number' ).change( function() {
        $( '#lekarska_kalkulacka_Ionty-ionty-rychlost-G5-range').val( $( '#lekarska_kalkulacka_Ionty-ionty-rychlost-G5-number' ).val() );
});
$( '#lekarska_kalkulacka_Ionty-ionty-rychlost-G5-range' ).change( function() { 
        $( '#lekarska_kalkulacka_Ionty-ionty-rychlost-G5-number').val( $( '#lekarska_kalkulacka_Ionty-ionty-rychlost-G5-range' ).val() );
});

/**************** Vlastní výpočet ****************/
$( 'input' ).change( function() {
  var pohlavi = parseInt($('input[name=ionty_pohlavi]:checked').val());
  var vek = parseInt($('input[name=ionty_vek]:checked').val());
  var hmotnost = parseInt($( '#lekarska_kalkulacka_Ionty-ionty-hmotnost-number').val());
  var Na = parseInt($( '#lekarska_kalkulacka_Ionty-ionty-Na-number').val());
  var K = parseFloat($( '#lekarska_kalkulacka_Ionty-ionty-K-number').val());
  var nacl09 = parseInt($( '#lekarska_kalkulacka_Ionty-ionty-rychlost-09NaCl-number').val());
  var nacl10 = parseInt($( '#lekarska_kalkulacka_Ionty-ionty-10NaCl-number').val());
  var g5 = parseInt($( '#lekarska_kalkulacka_Ionty-ionty-rychlost-G5-number').val());

  var na_konc = (154 + 1.7 * nacl10) * (nacl09)/(nacl09+g5); //koncentrace Na v infuznim roztoku
  if (nacl09 == 0) { //podavana pouze glukoza
    na_konc = 0;
  }
  
  var ctv_coef = 0.6;
  if (pohlavi == 1) { //zena
    if (vek == 1) { //geriatricka ci malnutricni populace
    	ctv_coef = 0.45;
    } else {
    	ctv_coef = 0.5;
    }
  } else { //muz
  	if (vek == 1) { //geriatricka ci malnutricni populace
  		ctv_coef = 0.5;
  	} else {
  		ctv_coef = 0.6;
  	}
  }
  var ctv = ctv_coef * hmotnost;
  var na_dif = (na_konc - Na)/(ctv + 1);
  var na_dif_rate = (nacl09+g5)*(na_dif / 1000); //prepocet na 1 litr roztoku
  
  var result = 'Odhad celkové tělesné vody je ' + Math.round(ctv) + ' l.<br />';
  result += "Vypočítaná celková koncentrace Na v podávaných roztocích je " + Math.round(na_konc) + " mmol/l. Podáním celkového objemu 1 l dojde ke změně natrémie " + Math.round(10*na_dif)/10 + " mmol/l.<br />";
  result += "Podáním infuzí uváděnými rychlostmi dojde ke změně natrémie " + Math.round(10000*na_dif_rate)/10000 + " mmol/l/h. (Neuvažujeme činnost ledvin.)<br />";
  result += "U chronické hyponaterie nesmíme překročit 0.35 mmol/l/h, u akutní 2 mmol/l/h. <br />";
 $( '#lekarska_kalkulacka_Ionty-vysledek' ).html( result );
});