検査部ホームページへ
香川医科大

Japanese, only

ICG 血中消失率

 あまり厳密なエラーチェックをしていません。くれぐれも正しいデータを入力してください。

 5〜15分のデータすべてを入力した場合は、一次回帰を用いて半減時間を計算します。

 5分、15分を入力して、10分値を省いた時はこの2つのデータだけで計算します。

 15分値のみ入力した時には、ICGを静注した時点の血中濃度を1mg/dl(つまり100%)と仮定して計算します。従って、静注量や採血時間が不正確だった場合は、半減時間やk値の信頼性が損なわれますのでご注意ください。

 上記以外の組あわせで入力した場合は、妙な結果が表示されます。例えば、5分値のみ、あるいは10分値のみ入力した。あるいは数字以外のものを入力したなどです。

 正しいデータを入力し直してください。

5分値
10分値
15分値

 

半減時間
  k値
メッセージ:


参考:

JavaScript版のソースは以下のようになってます。あまりに簡単なので、Java Applet版がどうしてあんなに長くなってしまったのか、自分でも理解に苦しみます。要するに計画性が無いのです...

function Arry(n){this.length=n;}
function calc(form){
	var _param, _harf_time, _k_value;
	var _intercept, _slope;
	_param=0.693;

	var x=new Arry(3);
	x[0]=5.0;
	x[1]=10.0;
	x[2]=15.0;
	var icg=new Arry(3);
	icg[0] = form.min5.value;
	icg[1] = form.min10.value;
	icg[2] = form.min15.value;
	
	var y=new Arry(3);
	y[0] = Math.log(icg[0]);
	y[1] = Math.log(icg[1]);
	y[2] = Math.log(icg[2]);


	//回帰
	if(icg[1]==0.0){
		if(icg[0]==0.0 && icg[2]>0.0){	//C0=100%で計算
			_intercept = Math.log(100);
			_slope = (y[2]-_intercept)/x[2];
			form.mess.value="";
		}else if(icg[0]>0.0 && icg[2]>0.0){ //10分値抜きで計算
			_slope = (y[2]-y[0])/(x[2]-x[0]);
			_intercept = (y[2]+y[0])/2.0 - _slope * (x[2]+x[0])/2.0;
			form.mess.value="";
		}else{
			//入力内容が不正
			form.mess.value="データ不正";
		}
	}else if(icg[0]>0.0 && icg[1]>0.0 && icg[2]>0.0){	//普通に回帰
		var _avx, _avy, i;
		var sxx, sxy;
		
		_avx = (x[0]+x[1]+x[2])/3.0;
		_avy = (y[0]+y[1]+y[2])/3.0;

		sxx = 0.0;
		sxy = 0.0;
		
		for(i=0; i<3; i++){
			sxx += (x[i]-_avx) * (x[i]-_avx);
			sxy += (x[i]-_avx) * (y[i]-_avy);
		}
		_slope = sxy/sxx;
		_intercept = _avy - _slope * _avx;
		form.mess.value="";
	}else{
		//入力内容が不正
		form.mess.value="データ不正";
	}
	//半減時間計算
	var c0;
	var sec;
	c0 = Math.exp(_intercept);
	_halftime = (Math.log(c0/2.0)-_intercept)/_slope;
	_k_value = rnd(_param/_halftime,3);
	sec = Math.round((_halftime - Math.floor(_halftime))*60.0);
	form.halftime.value = Math.floor(_halftime)+"分"+sec+"秒";
	form.k_value.value = _k_value;
}

function rnd(n, f){
	var _keisu = Math.pow(10,f);
	n = n * _keisu;
	n =  Math.round(n)
	return n/_keisu;
}

このページは香川医科大学検査部の紹介・情報提供が目的であり、
営利目的のものではありません。
香川医科大学
香川医科大学 検査部
検査部 clinilab@kms.ac.jp
Web管理者 tinage@kms.ac.jp
6