MediaWiki:Lékařská kalkulačka/ABR.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_ABR-content' ).text();
$( '#lekarska_kalkulacka_ABR' ).html( content.replaceAll('paragraph', 'p' ).replaceAll( 'resValue', 'span' ).replaceAll('breakline', 'br' ).replaceAll('division', 'div').replaceAll('orderedlist', 'ol').replaceAll('super', 'sup').replaceAll('subs', 'sub') );

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

$( '#lekarska_kalkulacka_ABR-pco2-number' ).change( function() {
        $( '#lekarska_kalkulacka_ABR-pco2-range').val( $( '#lekarska_kalkulacka_ABR-pco2-number' ).val() );
});
$( '#lekarska_kalkulacka_ABR-pco2-range' ).change( function() {
        $( '#lekarska_kalkulacka_ABR-pco2-number').val( $( '#lekarska_kalkulacka_ABR-pco2-range' ).val() );
});

$( '#lekarska_kalkulacka_ABR-na-number' ).change( function() {
        $( '#lekarska_kalkulacka_ABR-na-range').val( $( '#lekarska_kalkulacka_ABR-na-number' ).val() );
});
$( '#lekarska_kalkulacka_ABR-na-range' ).change( function() {
        $( '#lekarska_kalkulacka_ABR-na-number').val( $( '#lekarska_kalkulacka_ABR-na-range' ).val() );
});

$( '#lekarska_kalkulacka_ABR-hco3-number' ).change( function() {
        $( '#lekarska_kalkulacka_ABR-hco3-range').val( $( '#lekarska_kalkulacka_ABR-hco3-number' ).val() );
});
$( '#lekarska_kalkulacka_ABR-hco3-range' ).change( function() {
        $( '#lekarska_kalkulacka_ABR-hco3-number').val( $( '#lekarska_kalkulacka_ABR-hco3-range' ).val() );
});
$( '#lekarska_kalkulacka_ABR-cl-number' ).change( function() { 
        $( '#lekarska_kalkulacka_ABR-cl-range').val( $( '#lekarska_kalkulacka_ABR-cl-number' ).val() );
});
$( '#lekarska_kalkulacka_ABR-cl-range' ).change( function() { 
        $( '#lekarska_kalkulacka_ABR-cl-number').val( $( '#lekarska_kalkulacka_ABR-cl-range' ).val() );
});

/**************** Vlastní výpočet ****************/
$( 'input' ).change( function() {
  var pH = parseFloat($( '#lekarska_kalkulacka_ABR-ph-number').val());
  var pCO2 = parseFloat($( '#lekarska_kalkulacka_ABR-pco2-number').val());
  var Na = parseInt($( '#lekarska_kalkulacka_ABR-na-number').val());
  var HCO3 = parseInt($( '#lekarska_kalkulacka_ABR-hco3-number').val());
  var Cl = parseInt($( '#lekarska_kalkulacka_ABR-cl-number').val());
  var result = '<br />\n';
  
  var pred_pCO2 = ((1.5*HCO3) + 8)/7.5; //Winteruv vzorec
  var anion_gap = (Na - Cl - HCO3); //norma 10-14 mmol/l
  var pred_HCO3 = anion_gap - 12 + HCO3; //> 30 u metabolicke alkalozy, pod 23 u non-anion gap metabolicke acidozy
  if (pH >= 7.36 && pH <= 7.44) {
  	result += "neutrální prostředí";
  } else {
  	if (pH < 7.36) { //acidoza
  		if (pCO2 > 5.333) { //respiracni vs metabolicka
  			result += "respirační acidóza";
  		} else {
  			result += "metabolická acidóza";
  		}
  		
  	} else { //alkaloza
  		if (pCO2 < 5.333) { //respiracni vs metabolicka
  			result += "respirační alkalóza";
  			
  		} else {
  			result += "metabolická alkalóza";
  			if (pCO2 < pred_pCO2 - 0.267) { //Meze Winterovy formule jsou ±	2 mm Hg, tedy ±	0.26666 kPa
  				result += "<br>kombinovaná s respirační alkalózou";
  			} else if (pCO2 > pred_pCO2 + 0.267 ) { //Meze Winterovy formule jsou ±	2 mm Hg, tedy ±	0.26666 kPa
  				result += "<br>kombinovaná s respirační alkalózou";
  			}
  		}
  	}
  }
  
  if (anion_gap > 14) {
  	result += "<br>metabolická acidóza se zvýšeným anion gap";
  }
  if (pred_HCO3 > 30) {
  	result += "<br>metabolická alkalóza";
  } else if (pred_HCO3 < 23) {
  	result += "<br>metabolická acidóza s nezvýšeným anion gap";
  }
  
 $( '#lekarska_kalkulacka_ABR-pco2-mmhg').html( Math.round(pCO2*7.5));
 $( '#lekarska_kalkulacka_ABR-vysledek' ).html( result );
});