以下、本発明による生体モデルと、このモデルを用いる擬似生体情報発生装置と、この装置を用いるパルスオキシメータ対応型生体シミュレータとについて、添付図面を参照しながら説明する。以下の説明では、生体モデルの一例として指モデルが採用されている。
図1は、擬似生体情報発生装置とこの装置を用いるパルスオキシメータ対応型生体シミュレータとの実施形態をパルスオキシメータと共に示すブロック図である。この図1は、1)擬似生体情報発生装置10と、2)擬似生体情報発生装置10を含むパルスオキシメータ対応型生体シミュレータ12と、3)パルスオキシメータ(パルスオキシメータ本体14、プローブ発光部16、及びプローブ受光部18)との三つに分類される。擬似生体情報発生装置10は、単体でつまりパルスオキシメータ対応型生体シミュレータ12の環境・呼吸循環指標入力部40及びSpO2・脈拍数算出部42が接続されていない状態と、後述する様にパルスオキシメータ対応型生体シミュレータ12の一部としてつまり環境・呼吸循環指標入力部40及びSpO2・脈拍数算出部42が接続されている状態との、何れでも動作することができる。図1による擬似生体情報発生装置10の以下の説明では、この擬似生体情報発生装置10が単体で動作する場合が説明されている。
図1に示されている様に、擬似生体情報発生装置10は、制御部20、記憶部19、タイマ21、指モデル22、制御部20と指モデル22との間の信号をやりとりするインタフェース群、及び制御部20と操作者との間のメッセージ・入力値をやりとりするインタフェース群から構成されている。制御部20と指モデル22との間の信号をやりとりするインタフェース群は、A/D変換部30、D/A変換部32、電流・電圧変換部28、第一の発光素子駆動部34a、及び第二の発光素子駆動部34bで構成されており、制御部20と操作者との間のメッセージ・入力値をやりとりするインタフェース群は、表示部36と操作入力部38とで構成されている。記憶部19は、制御に必要な情報を記憶し、制御部との間でこの情報を相互にやりとりする。タイマ21は、制御部20へ現在時刻を出力する。A/D変換部30は一つの入力チャンネルを有しており、D/A変換部32は二つの出力チャンネルを有している。なお、タイマ21は後述のサブルーチンSR1またはSR1bの開始時に初期化されるので、本明細書中における「時刻」とはタイマ21が初期化された時点からの経過時間を意味する。
図2〜4は、生体モデルの一例である指モデル22の実施形態の夫々平面図(爪側)、底面図(腹側)、及び断面図を示している。指モデル22の外形及び質感は、生体の指に似せて作られている。しかし、その指の爪側に指モデル受光部24(図2参照)が備えられており、指の腹側に指モデル発光部26(図3参照)が備えられている。指モデル受光部24は一つの受光素子50で構成されており、指モデル発光部26は互いに波長の異なる光を発する二つの発光素子(第一の発光素子60aと第二の発光素子60b)で構成されている。つまり、指モデル22は、パルスオキシメータのプローブ発光部16の発光面とは反対側の面と、プローブ受光部18の受光面とは反対側の面とを、互いに貼り合わせたものと考えることもできる。指モデル発光部26を構成する第一の発光素子60aと第二の発光素子60bとの発する光の波長は、パルスオキシメータのプローブ発光部16に備わっている二つの発光ダイオードの波長と夫々一致している。つまり、指モデル発光部26とプローブ発光部16とが夫々発する二種類の光は同じものである。また、図4に示されている様に、指モデル受光部24内の受光素子50は電流・電圧変換部28への信号線及びグランド54と接続されており、指モデル発光部26内の第一の発光素子60aは第一の発光素子駆動部34aからの信号線及びグランド56aと接続されており、第二の発光素子60bは第二の発光素子駆動部34bからの信号線及びグランド56bと接続されている。
図5は、指モデル22の実施形態の使用状態を示している。指モデル22は、生体の指と同様に、パルスオキシメータのブロープ発光部16とプローブ受光部18との間に挟まれて使用される。指モデル受光部24は、プロープ発光部16からの照射光44を受光することができる様に指モデル22上に配置されている。指モデル発光部26も、その発する擬似透過光46をプローブ受光部18へ照射することができる様に指モデル22上に配置されている。更に、パルスオキシメータのプローブ発光部16からの照射光44がプローブ受光部18へ入射することを防ぐために、この照射光44を透過させない遮光物52が、指モデル22内に充填されている(図4参照)。
次に、図1において、擬似生体情報発生装置10の動作の概要を説明する。指モデル受光部24は、プロープ発光部16からの照射光44を受光信号に変換し、この受光信号を電流・電圧変換部28へ出力する。電流・電圧変換部28は、この微弱な受光信号の電流値を適切な大きさの電圧値に変換し、この電圧値に変換された受光信号をA/D変換部30へ出力する。A/D変換部30は、この受光信号をデジタル値に変換し、このデジタル化された受光信号を制御部20へ出力する。制御部20は、このデジタル化された受光信号を用いて、D/A変換部32の二つの出力チャンネルに発光信号を設定する時刻である同期時刻を決定し、また、操作入力部38から入力されたSpO2及び脈拍数とタイマ21から入力された現在時刻と記憶部19内の情報とを用いて、これらの入力された値に対応する発光信号を算出する。同期時刻の決定方法と発光信号の算出方法とは後述する。
更に、制御部20は、現在時刻を用いて、D/A変換部32の二つの出力チャンネルに発光信号を設定しない状態である後述のアイドリング制御を行った後、上記の同期時刻において、D/A変換部32の二つの出力チャンネルに発光信号を設定する。D/A変換部32は、これらの発光信号をアナログ値に変換して第一の発光素子駆動部34aと第二の発光素子駆動部34bとへ出力する。第一の発光素子駆動部34aと第二の発光素子駆動部34bとは、これらの発光信号の電圧値を適切な駆動レベルの電流値に変換し、これらの電流値に変換された発光信号を指モデル発光部26へ出力する。指モデル発光部26は、これらの発光信号に従って、パルスオキシメータのプローブ受光部18へ擬似透過光46を照射する。
次に、同期時刻の決定方法を説明する。説明に用いる記号を以下の様に定義する。
(本文内)
L1、L2:パルスオキシメータから発せられる互いに異なる波長を有する光
T1:光L1の発光時間
T2:一組の発光中における光L1と光L2との発光間隔
T3:光L2の発光時間
T4:各組同士の発光間隔
VP1:プロープ発光部16から発せられる光L1の発光出力
VP2:プロープ発光部16から発せられる光L2の発光出力
VF1:指モデル発光部26から発せられる光L1用の発光信号の値
VF2:指モデル発光部26から発せられる光L2用の発光信号の値
CH1:指モデル発光部26から発せられる光L1用の発光信号を設定するD/A変換部32の出力チャンネル
CH2:指モデル発光部26から発せられる光L2用の発光信号を設定するD/A変換部32の出力チャンネル
(フローチャート内のみ)
Δt:サブルーチンSR1の制御ループの繰り返し周期
t:現在時刻
V:A/D変換部30から入力される受光信号の値
Vl:一つ前のループにおける受光信号の値
Vd:VからVlを減算した値
Vt:受光信号の値Vが変化したか否かを判定する閾値
F:現在時刻が制御期間T1〜T3内であるか否かを示すフラグ(0「ゼロ」:制御期間外、1:制御期間内)
C1:制御期間T1〜T3における指モデル発光部26の発光動作を制御するカウンタ
N1:制御期間T1〜T3における発光時間T1での指モデル発光部26の発光動作の停止時刻を決める値
N2:制御期間T1〜T3における発光間隔T2での指モデル発光部26の発光動作の停止時刻を決める値
N3:制御期間T1〜T3における発光時間T3での指モデル発光部26の発光動作の停止時刻を決める値
Ti:条件判定で用いられる変数値(Vd、F)が不定ではなくなることを待つ時間
前述の様に、パルスオキシメータのブロープ発光部16は二つの発光ダイオードを備えており、これら二つの発光ダイオードは夫々互いに異なる波長を有する光L1、L2を発する。プローブ発光部16は、これらの光L1、L2を同時でなく、図6の例に示されている様に、光L1、L2の各一回ずつの発光を一組として、一定の周期でこの一組の発光を繰り返す。T1、T2、T3、T4は、夫々光L1の発光時間、一組の発光中における光L1と光L2との発光間隔、光L2の発光時間、各組同士の発光間隔である。特に、T1〜T3を制御期間、T4を休止期間と称する。また、VP1、VP2は、夫々プロープ発光部16から発せられる光L1、L2の発光出力である。生体が測定対象である場合には、光L1、L2の透過光は、夫々の発光時刻とほぼ同時刻にブロープ受光部18で受光される。従って、パルスオキシメータ本体14は、プローブ発光部16の発光時刻を用いて、光L1、L2の透過光の受光信号を識別することができる。
しかし、指モデル22が測定対象である場合には、照射光44は遮光物52によって遮られる。従って、擬似生体情報発生装置10は、光L1、L2があたかも生体内を透過しているかの様に指モデル22を作動させる必要がある。前述の様に、指モデル発光部22を構成する第一の発光素子60aと第二の発光素子60bとの発する光は、夫々光L1、L2と同じである。更に、第一の発光素子60aは第一の発光素子駆動部34aを介して、また第二の発光素子60bは第二の発光素子駆動部34bを介して、D/A変換部32の別々の出力チャンネルに接続されているので、制御部20は、D/A変換部32のこれら二つの出力チャンネルに発光信号を設定することによって、光L1、L2の発光出力を制御することができる。光L1、L2に対応するD/A変換部32の上記二つの出力チャンネルを、夫々CH1、CH2と称する。従って、制御部20は、受光した光がL1の場合にはD/A変換部32のCH1に、また受光した光がL2の場合にはD/A変換部32のCH2に、夫々値を設定することによって、光L1、L2があたかも生体内を透過しているかの様に指モデル22を作動させることができる。
以下に、発光制御サブルーチンSR1のフローチャートである図7を用いて、同期時刻の決定方法を具体的に説明する。なお、光L1の発光時間T1、一組の発光中における光L1と光L2との発光間隔T2、光L2の発光時間T3、及び発光時間T1におけるプローブ発光部16の照射光44が光L1であることを既知とする。更に、図7に示されているサブルーチンSR1の制御ループの繰り返し周期Δtは、T2よりも短いことを前提とする。
まず、F、C1をゼロで初期化し、Vt、N1、N2、N3、Tiに下記の様に数値を設定し、A/D変換部30、D/A変換部32、タイマ21を初期化する(S1)。Fは、現在時刻が制御期間T1〜T3内であるか否かを示すフラグであり、C1は、制御期間T1〜T3における指モデル発光部26の発光動作を制御するカウンタである。VtはA/D変換部30から入力された受光信号の値Vが変化したか否かを判定する閾値であり、この閾値はゼロよりも大きくかつブロープ発光部16の発光出力VP1、VP2に対応する受光信号のうちの小さい方の値よりも小さく設定される。但し、その範囲内でノイズの影響等を考慮して適切な値を選択する。N1、N2、N3は制御期間T1〜T3における指モデル発光部26の各発光動作の停止時刻を決める値であり、数式1〜3を用いて得られる。N1、N2、N3は夫々T1、T2、T3に対応する。
(数1)
N1=T1/Δt
(数2)
N2=(T1+T2)/Δt
(数3)
N3=(T1+T2+T3)/Δt
Tiは、条件判定で用いられる変数値(Vd、F)が不定ではなくなることを待つ時間、つまり、既述のアイドリング制御が行われる時間であり、具体的には、数式4の様に設定される。
(数4)
Ti>T3+T4
なお、Ti秒後に変数値(Vd、F)は必ず定まり、しかも、時間(T3+T4)は一般に数ミリ秒と極めて短くて擬似生体情報発生装置10が正しい値を出力しない時間は最初の数ミリ秒間だけであるので、アイドリング制御が行われなくても、パルスオキシメータが実用上は正常に反応する。従って、アイドリング制御のための後述のステップS25はなくてもよい。しかし、後述する様に、アイドリング制御を行えば、擬似生体情報発生装置10は最初から正しい値を出力し、万全を期すことができる。以下の説明では、上記の様にTiを設定し、アイドリング制御を含む方法について述べる。また、上記F、C1、Vt、N1、N2、N3、Tiについては、それらが使用される後述の各ステップにおいて、再度詳述する。
次に、制御ループへ入る前に、表示部36を用いて操作者に”制御停止の判断”の入力を指示し(S2)、制御ループ内で、操作入力部38から操作者による”制御停止の判断”を入力する(S3)。前記ステップS2において、制御ループ外で操作者に入力を指示する理由は、制御ループ内で操作者の指示を必要とするステップが一つしかないからである。そして、前記ステップS3での操作者による入力結果を用いて、操作者の判断を判定する(S4)。この判断が”制御停止”であれば(YES)、制御ループを抜けてこのサブルーチンSR1から呼び出しルーチンヘ戻る。一方、この判断が”制御停止”ではなければ(NO)、デジタル化されて値がVである受光信号をA/D変換部30から入力する(S5)。
前記ステップS5で入力されて値がVである受光信号は、指モデル受光部24を構成する一つの受光素子50から得られた信号であり、この時点では、この受光信号が光L1、L2の何れに対応する信号であるのかを未だ識別できない。しかし、制御期間T1〜T3の始まりを検出することができれば、発光時間T1におけるプローブ発光部16の照射光44は光L1であることが既知であり、制御期間T1〜T3内でのプローブ発光部16の発光動作は光L1、L2の順であるので、同期時刻を決定することができる。そこで、後続のステップS6〜S9で、受光信号が立ち上がり信号であるか否かを判定し、立ち上がり信号であれば、現在時刻が制御期間T1〜T3内であることを示すフラグFを設定する。
まず、受光信号が立ち上がり信号であるか否かを判定する前処理として、前記ステップS5で得られた受光信号の値Vから前回のループにおける受光信号の値Vlを減算し、その差を受光信号の値の変化分Vdとして求め(S6)、その次に、次回のループのために、受光信号の値VをVlへ設定する(S7)。前記ステップS6において、1回目のループでは、Vlの値が未定であるので、Vdの値は不定になるが、後述するアイドリング制御のために、発光制御つまり擬似生体情報発生装置10の出力は影響されない。
そして、前記ステップS6で得られた受光信号の値の変化分Vdが前記ステップS1で設定された閾値Vtよりも大きいか否かを判定する(S8)。受光信号の値の変化分Vdが閾値Vtよりも大きければ(YES)、この時の受光信号が立ち上がり信号であると判定して、現在時刻が制御期間T1〜T3内であることを示すフラグFに1を設定する(S9)。また、受光信号の値の変化分Vdが閾値Vt以下であれば(NO)、この時の受光信号が立ち上がり信号ではないと判定して、フラグFに何も設定せずにステップS10へ移る。
前記ステップS9において、現在時刻が制御期間T1〜T3内であることを示すフラグFに1を設定する際に、光L2によって引き起こされると考えられる二つの問題がある。一つの問題は、光L2の立ち上がり信号を受光した場合にも、Fに1が常に設定されることであり、他の一つの問題は、初めての立ち上がり信号が光L2であった場合には、T3の開始時点で初めてフラグFに1が設定されるので、現在時刻が実際にはT3の開始時点であるにも拘らずT1の開始時点であると認識され、正しい制御期間からずれた期間にVF1、VF2の値が設定されることである。しかし、前者の問題については、制御期間T1〜T3内でFに1が再び設定されるだけであり、光L2の立ち上がり信号によるステップS9での動作結果は常に無視されて発光制御つまり擬似生体情報発生装置10の出力には影響しない。
後者の問題についても、実際の動作においては、フラグFへの誤設定は2回目以降の制御期間T1〜T3で生じない。これは、T4(数ミリ秒)が発光動作における休止期間であって制御期間の時間(T1+T2+T3)(数百マイクロ秒)に比べて一般的に十分に長いので、光L1による立ち上がり信号が常に正しく検出されるからである。つまり、初めての立ち上がり信号が光L2であった場合には、フラグFは最初の制御期間T1〜T3を正確には示さない。しかし、休止期間T4が十分に長いので、誤設定されたフラグFは発光時間T3の最後(後述のステップS24)でゼロに設定される。この結果、2回目の立ち上がり信号以降つまり初めての光L1による立ち上がり信号以降において、フラグFは制御期間T1〜T3を正確に示す。また、初めての立ち上がり信号が光L2であったことによる誤設定は、後述するアイドリング制御のために、発光制御つまり擬似生体情報発生装置10の出力に影響を与えない。従って、上記二つの問題は結果的に影響がない。
次に、フラグFを用いて、現在時刻が制御期間T1〜T3内であるか否かによって以降の制御を分岐させる(S10)。フラグFが1であれば(YES)、現在時刻は制御期間T1〜T3内である。そこで、後述するステップS11〜S26において、各発光動作の停止時刻に対応する前記N1、N2、N3の値を用いて光L1、L2の発光制御を逐次的に行う。また、フラグFがゼロであれば(NO)、現在時刻は休止期間T4内であるので、光L1、L2の発光制御を行わず、制御ループの始まりである前記ステップS3へ戻る。
前記ステップS10による分岐の結果、現在時刻が制御期間T1〜T3内であれば、まずタイマ21から現在時刻tを入力する(S11)。この現在時刻tは、後述する発光信号の値(VF1、VF2)の算出、及びアイドリング制御に利用される。その次に、カウンタC1と前記ステップS1で設定された値N1とを用いて、現在時刻が発光時間T1内であるか否かを判定する(S12)。カウンタC1がN1よりも小さければ(YES)、現在時刻は発光時間T1内である。そこで、発光時間T1内におけるプローブ発光部16の照射光44は光L1であることが既知であるので、指モデル発光部26から発する光L1の発光信号の値VF1を算出し(S13)、光L2の発光信号の値VF2にゼロを設定する(S14)。更に、カウンタC1に1を加算し(S15)、次のステップへ移る。前記ステップS13における光L1の発光信号の値VF1の算出方法は後述する。
次に、前記ステップS11で得られた現在時刻tと前記ステップS1で設定された値Tiとを用いて、前記ステップS8、S10における条件判定の変数値Vd、Fが不定ではなくなることを待つ時間が経過したか否かを判定する(S25)。現在時刻tがTiよりも大きければ(YES)、現在時刻tにおいて、前記ステップS8、S10における条件判定の変数値Vd、Fが不定ではなくなっており、アイドリング制御が完了している。そこで、VF1の値をD/A変換部32のチャンネルCH1へ設定し、またVF2の値をD/A変換部32のチャンネルCH2へ設定する(S26)。また、前記ステップS25において、現在時刻tがTi以下であれば(NO)、前記ステップS8、S10における条件判定の変数値Vd、Fが依然として不定のままである可能性があり、アイドリング制御が継続される。つまり、前記ステップS26のD/A変換部32への値の設定を行わず、制御ループの始まりである前記ステップS3へ戻る。
一方、前記ステップS12において、カウンタC1がN1以上であれば(NO)、現在時刻は、発光間隔T2内、発光時間T3内、または制御期間後の何れかであり、カウンタC1と前記ステップS1で設定された値N2とを用いて、現在時刻が発行間隔T2内であるか否かを再び判定する(S16)。カウンタC1がN2よりも小さければ(YES)、現在時刻は発行間隔T2内である。そこで、光L1、L2ともに受光していないので、光L1と光L2の発光信号の値VF1、VF2にゼロを設定する(S17)。更に、カウンタC1に1を加算し(S18)、前記ステップS25へ移る。
また、前記ステップS16において、カウンタC1がN2以上であれば(NO)、現在時刻は、発光時間T3内か制御期間後との何れかであり、カウンタC1と前記ステップS1で設定された値N3とを用いて、現在時刻が発行時間T3内であるか否かを再び判定する(S19)。カウンタC1がN3より小さければ(YES)、現在時刻は発光時間T3内である。そこで、発光時間T1におけるブロープ発光部16の照射光44は光L1であることから、残る次の発光時間T3における光はL2であるので、指モデル発光部26から発する光L2の発光信号の値VF2を算出し(S20)、光L1の発光信号の値VF1にゼロを設定する(S21)。前記ステップS20における光L2の発光信号の値VF2の算出方法は後述する。更に、カウンタC1に1を加算し(S22)、前記ステップS25へ移る。
また、前記ステップS19において、カウンタC1がN3以上であれば(NO)、現在時刻が制御期間後であり、光L1、L2ともに受光していないので、光L1と光L2との発光信号の値VF1、VF2にゼロを設定する(S23)。更に、カウンタC1とフラグFとにゼロを設定し(S24)、前記ステップS25へ移る。前記ステップS24において、カウンタC1がゼロになるので、VF1、VF2の次回の設定のための初期化が行われ、またフラグFがゼロになるので、次のループから次回の光L1の立ち上がり信号までの間は、ステップS11〜S26による発光制御は行われず指モデル発光部26は休止状態になる。
ところで、以上の同期時刻の決定方法はプローブ発光部16の照射光44の受光信号が立ち上がり信号であるか否かのみを判定しているが、以上の方法とは別に、受光信号が立ち上がり信号または立ち下がり信号であるか否かを判定する同期時刻の決定方法もある。この方法は、上述の方法における「T1、T2、T3を既知とする」という前提条件を必要としないので、パルスオキシメータの大幅な仕様変更にも自動的に対応することができる。
そこで、以下に、受光信号が立ち上がり信号または立ち下がり信号であるか否かを判定する同期時刻の決定方法を説明する。説明に用いる記号を以下の様に定義する。
(本文内)
Tw:現在の立ち上がり信号と前回の立ち上がり信号との間隔(以下、「現在及び前回の立ち上がり信号の間隔」と記す)
Twl:前回の立ち上がり信号と前々回の立ち上がり信号との間隔(以下、「前回及び前々回の立ち上がり信号の間隔」と記す)
Tu:前回の立ち上がり信号の検出時刻
Tib:条件判定で用いられる変数値(Vd、Tw、Twl)が不定ではなくなることを待つ時間
但し、以下に説明する別の発光制御サブルーチンSR1b及びそのフローチャートである図8内で用いられている記号Δt、t、V、Vl、Vd、Vtは、前述の発光制御サブルーチンSR1及びそのフローチャートである図7内の記号と同じ意味を有している。
具体的な説明の前に、この同期時刻の決定方法の概要を説明する。以下に述べるこの方法は、プローブ発光部16の照射光44の時間に関する既知の値(T1〜T3)を用いずに、照射光44の受光信号のみを利用してブロープ発光部16の動作を認識する方法である。まず、照射光44の受光信号が立ち上がり信号と立ち下がり信号との何れであるのかを判定する前に、受光信号の値が変化したか否かを判定する。変化していない場合は、制御部20は発光信号の値(VF1、VF2)を設定する必要がない。変化した場合は、制御部20は、立ち上がり信号によって発光時間T1、T3の開始時刻を決定し、また立ち下がり信号によってそれらの終了時刻を決定する。
発光時間T1、T3の開始時刻については、照射光44が光L1、光L2の何れであるのかを識別する必要がある。そのために、まず現在及び前回の立ち上がり信号の間隔Twを算出する。Twには(T1+T2)または(T3+T4)の二通りがあり、(T1+T2)及び(T3+T4)の後の時間は夫々発光時間T3及びT1である。次に、現在及び前回の立ち上がり信号の間隔Twと前回及び前々回の立ち上がり信号の間隔Twlとの大小を比較する。ここで、T1≒T3(共に発光時間)とT2≪T4(T4は休止期間)とから、(T1+T2)≪(T3+T4)であり、更に、(T1+T2)と(T3+T4)とは交互に検出される。従って、Tw>Twlの場合は、Tw=(T3+T4)から現在時刻は発光時間T1内であるので、プローブ発光部16の照射光44は光L1である。逆に、Tw<Twlの場合は、Tw=(T1+T2)から現在時刻は発光時間T3内であるので、プローブ発光部16の照射光44は光L2である。従って、制御部20は、適切に受光信号を識別することができ、受光した光がL1の場合には、VF1とVF2とに夫々発光信号の値とゼロとを設定し、受光した光がL2の場合には、VF1とVF2とに夫々ゼロと発光信号の値とを設定する。
発光時間T1、T3の終了時刻については、照射光44が光L1、光L2の何れであるのかを識別する必要はなく、制御部20は、単に、立ち下がり信号を検出した際にVF1及びVF2に共にゼロを設定すればよい。
以下に、上述の発光制御サブルーチンSR1とは別の発光制御サブルーチンSR1bのフローチャートである図8を用いて、プローブ発光部16の照射光44の受光信号が立ち上がり信号または立ち下がり信号であるか否かを判定する同期時刻の決定方法を具体的に説明する。なお、受光信号が立ち上がり信号であるか否かのみを判定するサブルーチンSR1の方法と同様に、発光時間T1におけるプローブ発光部16の照射光44が光L1であることを既知とする。更に、図8に示されているサブルーチンSR1bの制御ループの繰り返し周期Δtは、T2よりも短いことを前提とする。
まず、Vt、Tibに下記の様に数値を設定し、A/D変換部30、D/A変換部32、タイマ21を初期化する(S97)。Vtは、A/D変換部30から入力された受光信号の値Vが変化したか否かを判定する閾値であり、サブルーチンSR1の方法と同様に設定される。また、Tibは、サブルーチンSR1の方法におけるTiと同様に条件判定で用いられる変数値(Vd、Tw、Twl)が不定ではなくなることを待つ時間、つまり、既述のアイドリング制御が行われる時間であり、具体的には、数式5の様に設定される。
(数5)
Tib>T1+T2+2(T3+T4)
なお、Tib秒後に変数値(Vd、Tw、Twl)は必ず定まり、しかも、時間T1+T2+2(T3+T4)は一般に十数ミリ秒と極めて短くて擬似生体情報発生装置10が正しい値を出力しない時間は最初の十数ミリ秒間だけであるので、アイドリング制御が行われなくても、パルスオキシメータが実用上は正常に反応する。従って、アイドリング制御のための後述のステップS116はなくてもよい。しかし、後述する様に、アイドリング制御を行えば、擬似生体情報発生装置10は最初から正しい値を出力し、万全を期すことができる。以下の説明では、上記の様にTibを設定し、アイドリング制御を含む方法について述べる。また、上記Vt、Tibについては、それらが使用される後述の各ステップにおいて、再度詳述する。
次に、制御ループへ入る前に、表示部36を用いて操作者に”制御停止の判断”の入力を指示し(S98)、制御ループ内で、操作入力部38から操作者による”制御停止の判断”を入力する(S99)。前記ステップS98において、制御ループ外で操作者に入力を指示する理由は、制御ループ内で操作者の指示を必要とするステップが一つしかないからである。そして、前記ステップS99での操作者による入力結果を用いて、操作者の判断を判定する(S100)。この判断が”制御停止”であれば(YES)、制御ループを抜けてこのサブルーチンSR1bから呼び出しルーチンヘ戻る。一方、この判断が”制御停止”ではなければ(NO)、デジタル化されて値がVである受光信号をA/D変換部30から入力する(S101)。
前記ステップS101で入力されて値がVである受光信号は、指モデル受光部24を構成する一つの受光素子50から得られた信号であり、この時点では、この受光信号が光L1、L2の何れに対応する信号であるのかを未だ識別できない。そこで、まず、後続のステップS102〜S104で、受光信号の値が変化したか否かを判定する。変化した場合は、後述のステップS106で、受光信号が立ち上がり信号であるか立ち下がり信号であるかを判定し、更に、受光信号が立ち上がり信号であれば、後述のステップS107〜S109で、現在及び前回の立ち上がり信号の間隔Twを算出し、この間隔Twを前回及び前々回の立ち上がり信号の間隔Twlと比較することによって、同期時刻を決定する。
まず、受光信号の値が変化したか否かを判定する前処理として、前記ステップS101で得られた受光信号の値Vから前回のループにおける受光信号の値Vlを減算し、その差を受光信号の値の変化分Vdとして求め(S102)、その次に、次回のループのために、受光信号の値VをVlへ設定する(S103)。前記ステップS102において、1回目のループでは、Vlの値が未定であるので、Vdの値は不定になるが、後述するアイドリング制御のために、発光制御つまり擬似生体情報発生装置10の出力は影響されない。
そして、前記ステップS102で得られた受光信号の値における変化分の絶対値|Vd|が前記ステップS97で設定された閾値Vtよりも大きいか否かを判定する(S104)。受光信号の値における変化分の絶対値|Vd|が閾値Vtよりも大きければ(YES)、受光信号の値が変化したと判定して、次のステップS105へ移る。また、受光信号の変化分の絶対値|Vd|が閾値Vt以下であれば(NO)、受光信号の値が変化していないと判定して、光L1、L2の発光制御を行わず、制御ループの始まりである前記ステップS99へ戻る。
前記ステップS104による分岐の結果、受光信号の値が変化した場合は、まず、タイマ21から現在時刻tを入力する(S105)。この現在時刻tは、後述する現在及び前回の立ち上がり信号の間隔Twの算出、発光信号の値(VF1、VF2)の算出、及びアイドリング制御に利用される。その次に、受光信号の値の変化がこの受光信号の立ち上がりによるのか立ち下がりによるのかを、夫々Vdの値がゼロよりも大きいか否かによって判定する(S106)。Vdの値がゼロよりも大きければ(YES)、受光信号は立ち上がり信号であり、後述するステップS107へ移る。また、Vdの値がゼロ以下であれば(NO、但し前記ステップS104の判定において、Vtはゼロよりも大きく、この時点でVd=0は除外されているので、実際上はVd<0のみが成り立つ)、受光信号は立ち下がり信号であり、光L1、L2の何れをも受光していないので、光L1と光L2との発光信号の値VF1、VF2にゼロを設定し(S115)、アイドリング制御のための後述のステップS116へ移る。
前記ステップS106による分岐の結果、受光信号が立ち上がり信号であれば、前記ステップS105で得られた現在時刻tから前回の立ち上がり信号の検出時刻Tuを減算し、その差を現在及び前回の立ち上がり信号の間隔Twとして求め(S107)、その次に、次回のTw算出のために、現在時刻tをTuへ設定する(S108)。前記ステップS107において、初めてのTw算出では、Tuの値が未定であるので、Twの値は不定になるが、後述するアイドリング制御のために、発光制御つまり擬似生体情報発生装置10の出力は影響されない。
そして、現在時刻が発光時間T1内であるのかT3内であるのかを判定するために、前記ステップS107で得られた現在及び前回の立ち上がり信号の間隔Twが前回及び前々回の立ち上がり信号の間隔Twlよりも大きいか否かを判定する(S109)。現在及び前回の立ち上がり信号の間隔Twが前回及び前々回の立ち上がり信号の間隔Twlよりも大きければ(YES)、現在時刻は発光時間T1内である。そこで、発光時間T1内におけるプローブ発光部16の照射光44は光L1であることが既知であるので、指モデル発光部26から発する光L1の発光信号の値VF1を算出し(S110)、光L2の発光信号の値VF2にゼロを設定する(S111)。更に、次回の間隔Twの判定のために、現在及び前回の立ち上がり信号の間隔Twを前回及び前々回の立ち上がり信号の間隔Twlへ設定し(S112)、アイドリング制御のための後述のステップS116へ移る。前記ステップS110における光L1の発光信号の値VF1の算出方法は後述する。
次に、前記ステップS105で得られた現在時刻tと前記ステップS97で設定された値Tibとを用いて、前記ステップS104、S106、及びS109における条件判定の変数値Vd、Tw及びTwlが不定ではなくなることを待つ時間が経過したか否かを判定する(S116)。現在時刻tがTibよりも大きければ(YES)、現在時刻tにおいて、前記ステップS104、S106、及びS109における条件判定の変数値Vd、Tw、及びTwlが不定ではなくなっており、アイドリング制御が完了している。そこで、VF1の値をD/A変換部32のチャンネルCH1へ設定し、またVF2の値をD/A変換部32のチャンネルCH2へ設定する(S117)。また、前記ステップS116において、現在時刻tがTib以下であれば(NO)、前記ステップS104、S106、及びS109における条件判定の変数値Vd、Tw、及びTwlが依然として不定のままである可能性があり、アイドリング制御が継続される。つまり、前記ステップS117のD/A変換部32への値の設定を行わず、制御ループの始まりである前記ステップS99へ戻る。
一方、前記ステップS109において、現在及び前回の立ち上がり信号の間隔Twが前回及び前々回の立ち上がり信号の間隔Twl以下であれば(NO、但し実際上はTw=Twlとなる場合はあり得ず、Tw<Twlのみ成り立つ)、現在時刻は発光時間T3内である。そこで、発光時間T1におけるブロープ発光部16の照射光44は光L1であることから、残る次の発光時間T3における光はL2であるので、指モデル発光部26から発する光L2の発光信号の値VF2を算出し(S113)、光L1の発光信号の値VF1にゼロを設定する(S114)。更に、前記ステップS112へ移り、次回のTwの判定のために、現在及び前回の立ち上がり信号の間隔TwをTwlへ設定した後、アイドリング制御のための前記ステップS116へ移る。前記ステップS113における光L2の発光信号の値VF2の算出方法は後述する。
なお、以後の説明中で同期時刻の決定が必要な個所では、上記二つの同期時刻の決定方法のうちで前者の発光制御サブルーチンSR1のみを用いて説明しているが、その部分を後者の発光制御サブルーチンSR1bに置き換えることが当然に可能である。つまり、発光制御サブルーチンSR1bを用いる場合には、サブルーチンSR1を呼び出す後述のサブルーチンSR2、SR3、及びSR4のフローチャート中のサブルーチンSR1をサブルーチンSR1bに置き換えればよい。
次に、発光信号の値の算出方法を説明する。説明に用いる記号を以下の様に定義する。
(本文内)
VB1:生体を対象とする場合のプロープ受光部18での光L1の受光出力
VB2:生体を対象とする場合のプロープ受光部18での光L2の受光出力
ΔVb1:VB1のAC成分
Vb1:VB1のDC成分
ΔVb2:VB2のAC成分
Vb2:VB2のDC成分
φ:生体を透過する光L1、L2の吸光度の脈波成分の比
ΔVf1:VF1のAC成分
Vf1:VF1のDC成分
ΔVf2:VF2のAC成分
Vf2:VF2のDC成分
f():パルスオキシメータに内蔵されており、φを変数、SpO2を値とする関数(数式7)
Pr:操作入力部38から入力される脈拍数
(フローチャート内のみ)
g():擬似生体情報発生装置10の記憶部19に記憶されており、SpO2を変数、φを値とする関数(数式8)
ΔVf1c:パルスオキシメータが正常に反応する場合の発光信号VF1のAC成分
Vf1c:パルスオキシメータが正常に反応する場合の発光信号VF1のDC成分
ΔVf2c:パルスオキシメータが正常に反応する場合の発光信号VF2のAC成分
Vf2c:パルスオキシメータが正常に反応する場合の発光信号VF2のDC成分
ΔVf1v:操作入力部38から入力されたSpO2に対応するφを満たす発光信号VF1のAC成分
k:Vf1c、ΔVf2c、Vf2cから算出される定数値(数式10)
パルスオキシメータの測定対象が生体であれば、プローブ受光部18における光L1の受光出力VB1の波形と光L2の受光出力VB2の波形とは、夫々図9、10の例の様になる。ΔVb1、Vb1、ΔVb2、Vb2は夫々、VB1のAC成分、VB1のDC成分、VB2のAC成分、VB2のDC成分である。実際の受光出力波形は、プローブ発光部16の発光出力波形である図6中のパルスが複数個並ぶ離散的な波形であるが、図9、10は各パルスの包絡線を示しており、しかもその表示されている時間範囲が図6の時間範囲よりも長いので、図9、10には生体の動脈血による脈波が表されている。
ところで、パルスオキシメータは、その動作に際して、まず、生体を透過する光L1、L2の吸光度の脈波成分の比φを数式6の様に求める。
(数6)
φ=(ΔVb1/Vb1)/(ΔVb2/Vb2)
更に、パルスオキシメータは、数式7に示す様な、φを変数としSpO2を値とする関数f()を内蔵しており、この関数f()を用いてSpO2を算出する。図11は、パルスオキシメータが内蔵する関数f()の一例を示している。
(数7)
SpO2=f(φ)
擬似生体情報発生装置10の制御部20は、上述のパルスオキシメータにおけるSpO2の算出手順を逆に辿り、まず操作入力部38から入力されるSpO2を用いてφを算出し、次に数式6の関係を用いて、このφを満たす光L1の発光信号VF1のAC成分ΔVf1、DC成分Vf1、及び光L2の発光信号VF2のAC成分ΔVf2、DC成分Vf2という四つの値を決定する。更に、これらの発光信号VF1、VF2のAC・DC成分(ΔVf1、Vf1、ΔVf2、Vf2)と操作入力部38から入力される脈拍数Prとタイマ21から入力される現在時刻とを用いて、光L1、L2に対応する発光信号VF1、VF2を算出する。
以下に、発光信号算出サブルーチンSR2のフローチャートである図12を用いて、発光信号の算出方法を具体的に説明する。但し、パルスオキシメータが正常に反応する場合の発光信号VF1、VF2のAC・DC成分(ΔVf1、Vf1、ΔVf2、Vf2)の一組が既知であるとし、この一組を(ΔVf1c、Vf1c、ΔVf2c、Vf2c)とする。また、制御部20は、数式8に示す様な関数f()の逆関数g()を記憶部19に記憶しているものとする。但し、関数f()はパルスオキシメータの機種に依存する関数であり、その逆関数g()もパルスオキシメータの機種毎に異なる。従って、この逆関数g()の算出方法は後述する。
(数8)
φ=g(SpO2)
まず、Vf1c、ΔVf2c、Vf2cに数値を設定する(S31)。このステップS31では、パルスオキシメータが正常に反応する場合の発光信号VF1のAC成分ΔVf1には数値が設定されないが、後に発光制御サブルーチンSR1を呼び出す後述のステップS37の前のステップS36において、ΔVf1の数値が求められて設定される。次に、表示部36を用いて操作者にSpO2と脈拍数Prとの入力を指示し(S32)、操作入力部38からSpO2と脈拍数Prとを入力する(S33)。脈拍数Prは、後述する様にサブルーチンSR1内で使用される。
制御部20は、記憶部19に記憶されている逆関数g()を用いて、前記ステップS33で得られたSpO2に対応する光L1、L2についての吸光度の脈波成分の比φを算出する(S34)。前記ステップS34で得られたφとこれを満たす発光信号VF1、VF2のAC・DC成分(ΔVf1、Vf1、ΔVf2、Vf2)とは、数式6と同様に、数式9の関係を持つべきである。
(数9)
φ=(ΔVf1/Vf1)/(ΔVf2/Vf2)
従って、数式9によってφが指定される場合には、右辺の(ΔVf1、Vf1、ΔVf2、Vf2)のうちの一つを変数として変化させて、この式を満たさせる。(ΔVf1、Vf1、ΔVf2、Vf2)のうちのDC成分であるVf1、Vf2は、本来的に変化の少ない静脈血や動脈血以外の組織による吸光度成分と関係しており、定数値としても差し支えない。従って、AC成分であるΔVf1、ΔVf2の何れかを変化させてφを満たせばよいが、以下の説明では、数式9の分子にあってφと正比例の関係にあるΔVf1を変数として採用し、ΔVf2を定数値とする。
そこで、まず、前記ステップS31で設定されたVf1c、ΔVF2c、Vf2cを用いて、数式9の右辺の定数部分の値kを数式10に示されている様に算出する(S35)。更に、前記ステップS34で得られたφを前記ステップS35で得られたkで除算することによって、数式9を満たす発光信号VF1のAC成分ΔVf1vを得る(S36)。
(数10)
k=Vf2c/(Vf1c・ΔVf2c)
次に、前記ステップS31で設定されたVflc、ΔVf2c、Vf2c、前記ステップS33で得られたPr、及び前記ステップS36で得られたΔVf1vを引数として、発光制御サブルーチンSR1を呼び出す(S37)。このステップS37において、図7に示したサブルーチンSR1へ制御が移る。そして、サブルーチンSR1内の前記ステップS13において数式11に示されている様に発光信号VF1を算出し、また前記ステップS20において数式12に示されている様に発光信号VF2を算出する。数式11、12中の現在時刻tは、前記ステップS11において、タイマ21から制御部20へ既に入力されている。
(数11)
VF1=ΔVf1v・sin(2π(Pr/60)t)+Vflc
(数12)
VF2=ΔVf2c・sin(2π(Pr/60)t)+Vf2c
なお、サブルーチンSR1の代わりにサブルーチンSR1bを用いる場合には、同様にして、図8に示したサブルーチンSR1bへ制御が移る。そして、サブルーチンSR1b内の前記ステップS110において数式11に示されている様に発光信号VF1を算出し、また前記ステップS113において数式12に示されている様に発光信号VF2を算出する。数式11、12中の現在時刻tは、前記ステップS105において、タイマ21から制御部20へ既に入力されている。
数式11、12は、正弦関数を用いて、動脈血による脈波を擬似的に表現しており、更にその周期(60/Pr)を用いて、脈拍数を制御している。数式11、12で算出される発光信号VF1、VF2のAC・DC成分は前記ステップS31で設定された定数(Vflc、ΔVf2c、Vf2c)とこれらの定数及び前記ステップS34で得られたφを満たす様に前記ステップS36で求められた変数(ΔVf1v)とであるので、これらのAC・DC成分は前記ステップS34で得られたφを当然に満たしている。その結果、操作入力部38から入力されるSpO2と脈拍数Prとを反映した擬似透過光46が、パルスオキシメータのプローブ受光部18へ照射され、パルスオキシメータ本体14は、指モデル22があたかも生体の指であるかの様に反応して、SpO2と脈拍数とを表示する。最後に、制御が、前記ステップS37のサブルーチンSR1からこのサブルーチンSR2ヘ戻り、更にこのサブルーチンSR2から呼び出しルーチンヘ戻る。
次に、関数f()の逆関数g()を説明する。説明に用いる記号を以下の様に定義する。
(本文内)
Ns:SpO2のサンプリング数
(フローチャート内のみ)
C2:パルスオキシメータが表示するSpO2をサンプリングする際に、その回数を制御するカウンタ
ε:パルスオキシメータが正常に反応するφの範囲を求める際に、φを増減させる微少値
Δφ:SpO2のサンプリング時に変化させるφの刻み幅
SpO2s:SpO2のサンプリング値
φs:SpO2sに対応するφ
h():SpO2sを変数、φsを値とする回帰曲線
前述の様に、逆関数g()はパルスオキシメータの機種毎に異なるので、これを算出する必要がある。逆に言えば、逆関数g()を算出することによって、同様な原理で動作するが機種の異なるパルスオキシメータに擬似生体情報発生装置10を対応させることができる。逆関数g()を算出するためには、まず、発光信号VF1、VF2のAC・DC成分(ΔVf1、Vf1、ΔVf2、Vf2)の既知の一組(ΔVf1c、Vf1c、ΔVf2c、Vf2c)を用いて、パルスオキシメータが正常に反応するφの範囲を求める。次に、操作入力部38からサンプリング数Nsを入力し、上記の範囲内においてφを変化させ、パルスオキシメータが表示するSpO2をNs個サンプリングする。最後に、最小二乗法を用いて、φとSpO2とのNs個の組から回帰曲線を算出し、これを新たな逆関数g()として、記憶部19に記憶されている古い逆関数g()と置き換える。
以下に、逆関数g()算出用サブルーチンSR3のフローチャートの前半を示す図13と後半を示す図14とを用いて、逆関数g()の算出法を具体的に説明する。まず、C2をゼロで初期化し、ΔVf1c、Vf1c、ΔVf2c、Vf2c、ε、Prに数値を設定する(S41)。C2は、SpO2をサンプリングする際に、その回数を制御するカウンタであり、εは、パルスオキシメータが正常に反応するφの範囲を求める際に、φを増減させる微少値である。εが小さい値であるほどφの範囲の精度が向上するが、作業の繰り返し回数が増えるので、精度と回数との釣り合いを考慮して適切な値を選択する。脈拍数Prは、数式11、12から明らかな様に、指モデル発光部26から発せられる光L1、L2の発光信号VF1、VF2の周期を制御するだけで強度は制御しないので、逆関数g()の算出結果には影響を与えないが、数式11、12のために必要であるので、パルスオキシメータが想定している一般的な生体の脈拍数の範囲内で設定する。
次に、以下のステップのうちの三つのステップ(S45、S53、S64)でΔVf1vを算出するが、その際に必要となる定数kの値を、上述の数式10を用いて予め算出しておく(S42)。そして、フローチャートの前半で、φを増減させて、パルスオキシメータが正常に反応するφの最小値φminと最大値φmaxとを求める。そのために、まず、始点となるφcを、前記ステップS41で設定されたΔVf1c、Vf1c、ΔVf2c、Vf2cを用いて、数式13によって得る(S43)。
(数13)
φc=(ΔVf1c/Vf1c)/(ΔVf2c/Vf2c)
次に、前記ステップS43で得られたφcから微少値εを減算して、この減算結果をφminとする(S44)。更に、このステップS44で得られたφminを前記ステップS42で得られたkで除算して、ΔVf1vを得る(S45)。なお、2回目以降のループにおいて、このステップS45で用いられるφminは、繰り返しループの途中で再設定される。次に、前記ステップS41で設定されたVf1c、ΔVf2c、Vf2c、Prと、前記ステップS45で得られたΔVf1vとを引数として、発光制御サブルーチンSR1を呼び出す(S46)。このステップS46で呼び出されるサブルーチンSR1の制御によって、パルスオキシメータのプロープ受光部18へ擬似透過光46が照射されて、パルスオキシメータが反応する。その後、前記ステップS46のサブルーチンSR1からこのサブルーチンSR3へ制御が戻る。
そこで、表示部36を用いて操作者に”パルスオキシメータの反応結果”の入力を指示し(S47)、操作入力部38からこの”パルスオキシメータの反応結果”を入力する(S48)。そして、このステップS48の入力結果を用いて、パルスオキシメータが正常に反応したか否かを判定する(S49)。パルスオキシメータが正常に反応すれば(YES)、φの最小値がφminよりも小さい可能性があるので、φminからεを減算し、これを新たなφminとして(S50)、前記ステップS45へ戻る。パルスオキシメータが正常に反応しなければ(NO)、φminはφの最小値よりもεだけ小さいので、φminにεを加算し、これをφminとして確定する(S51)。なお、既述の様にΔVf1c、Vf1c、ΔVf2c、Vf2cはパルスオキシメータが正常に反応する場合の値であるので、数式13の始点φcではパルスオキシメータは必ず反応する。
次に、前記ステップS44〜S51と同様な手順で、最大値φmaxを求める。まず、前記ステップS43で得られたφcに微少値εを加算して、この加算結果をφmaxとする(S52)。更に、このステップS52で得られたφmaxを前記ステップS42で得られたkで除算して、ΔVf1vを得る(S53)。なお、2回目以降のループにおいて、このステップS53で用いられるφmaxは、繰り返しループの途中で再設定される。
次に、前記ステップS41で設定されたVf1c、ΔVf2c、Vf2c、Prと、前記ステップS53で得られたΔVf1vとを引数として、発光制御サブルーチンSR1を呼び出す(S54)。このステップS54で呼び出されたサブルーチンSR1の制御によって、パルスオキシメータのプローブ受光部18へ擬似透過光46が照射されて、パルスオキシメータが反応する。その後、前記ステップS54のサブルーチンSR1からこのサブルーチンSR3ヘ制御が戻る。
そこで、表示部36を用いて操作者に”パルスオキシメータの反応結果“の入力を指示し(S55)、操作入力部38からこの”パルスオキシメータの反応結果”を入力する(S56)。そして、このステップS56の入力結果を用いて、パルスオキシメータが正常に反応したか否かを判定する(S57)。パルスオキシメータが正常に反応すれば(YES)、φの最大値がφmaxよりも大きい可能性があるので、φmaxにεを加算し、これを新たなφmaxとして(S58)、前記ステップS53へ戻る。パルスオキシメータが正常に反応しなければ(NO)、φmaxはφの最大値よりもεだけ大きいので、φmaxからεを減算し、これをφmaxとして確定する(S59)。
次に、フローチャートの後半で、パルスオキシメータが正常に反応する範囲内において、パルスオキシメータが表示するSpO2をサンプリングし、逆関数g()を表す回帰曲線を求める。まず、表示部36を用いて操作者にサンプリング数Nsの入力を指示し(S60)、操作入力部38からNsを入力する(S61)。そして、前記ステップS51で得られたφmin、前記ステップS59で得られたφmax、前記ステップS61で得られたNsを用いて、数式14に示されている様に、サンプリング時に変化させるφの刻み幅Δφを求める(S62)。
(数14)
Δφ=(φmax−φmin)/Ns
次に、前記ステップS41で設定されたC2、前記ステップS51で得られたφmin、前記ステップS62で得られたΔφを用いて、数式15に示されている様に、サンプリング対象となるφsを求める(S63)。更に、このステップS63で得られたφsを前記ステップS42で得られたkで除算して、ΔVf1vを得る(S64)。
(数15)
φs=Δφ・C2+φmin
次に、前記ステップS41で設定されたVf1c、ΔVf2c、Vf2c、Prと、前記ステップS64で得られたΔVf1vとを引数として、発光制御サブルーチンSR1を呼び出す(S65)。このステップS65で呼び出されたサブルーチンSR1の制御により、パルスオキシメータのプロープ受光部18へ擬似透過光46が照射されて、パルスオキシメータが反応する。その後、前記ステップS65のサブルーチンSR1からこのサブルーチンSR3ヘ制御が戻る。そこで、表示部36を用いて操作者にパルスオキシメータの表示値SpO2sの入力を指示し(S66)、操作入力部38からSpO2sを入力する(S67)。そして、この時のφsとSpO2sとの組(φs、SpO2s)を記憶部19に記憶する(S68)。
次に、カウンタC2と前記ステップS61で得られたサンプリング数Nsとを用いて、サンプリングが終了したか否かを判定する(S69)。C2がNsよりも小さければ(YES)、サンプリングは終了していないので、C2に1を加算して(S70)、前記ステップS63へ戻る。C2がNs以上であれば(NO)、サンプリングは終了したので、最小2乗法を用いて、これまでにサンプリングしたNs組の(φs、SpO2s)からSpO2sを変数、φsを値とする回帰曲線h()を算出する(S71)。
このステップS71で得られる回帰曲線h()は、図15の例に示されている様に、図11に示した関数f()の逆関数であり、この回帰曲線h()を新たな逆関数g()として記憶部19に記憶する(S72)。最後に前記ステップS72の後、本サブルーチンSR3から呼び出しルーチンヘ制御が戻る。
擬似生体情報発生装置10は、通常では、記憶部19に記憶している逆関数g()を用いて、発光信号算出サブルーチンSR2を実行する。しかし、対象とするパルスオキシメータの機種が変更された場合や、何らかの外乱によってパルスオキシメータのSpO2が正しく表示されなくなった場合には、逆関数g()算出用サブルーチンSR3を実行して逆関数g()を再算出し、記憶部19に記憶されている古い逆関数g()を新たな逆関数g()と置き換える必要がある。
この置き換え手順を、メインルーチンMRのフローチャートである図16を用いて説明する。まず、表示部36を用いて操作者に”逆関数g()再算出実行の判断”の入力を指示し(S81)、操作入力部38から”逆関数g()再算出実行の判断”を入力する(S82)。そして、このステップS82の操作者による入力結果を用いて、操作者の判断を判定する(S83)。この判断が”再算出実行”であれば(YES)、サブルーチンSR3を呼び出して(S84)、逆関数g()を再算出し、記憶部19に記憶されている古い逆関数g()を新たな逆関数g()と置き換える。
そして、前記ステップS84で呼び出されたサブルーチンSR3からこのメインルーチンヘ制御が戻った後、更にサブルーチンSR2を呼び出す(S85)。このステップS85で呼び出されたサブルーチンSR2において、発光信号が算出され、更にパルスオキシメータのプローブ受光部18へ擬似透過光46が照射される。そして、前記ステップS85で呼び出されたサブルーチンSR2からこのメインルーチンヘ制御が戻った後、総ての処理が終了する。前記ステップS83の判断が”再算出実行”でなければ(NO)、サブルーチンSR3は呼び出されず、前記ステップS85へ移り、サブルーチンSR2が直接に呼び出される。この場合は、記憶部19に記憶されている逆関数g()が継続して使用される。
次に、パルスオキシメータ対応型生体シミュレータ12について説明する。パルスオキシメータ対応型生体シミュレータ12は、図1に示されている様に、人体モデル39、環境・呼吸循環指標入力部40、SpO2・脈拍数算出部42、及び擬似生体情報発生装置10から構成されている。人体モデル39、環境・呼吸循環指標入力部40、及びSpO2・脈拍数算出部42は公知の技術である。人体モデル39及び環境・呼吸循環指標入力部40は、例えば、公知の生体シミュレータ(非特許文献3参照)に使用されている技術である。具体的には、人体モデル39は、外形及び質感を人間の全身または半身に似せて作られた模型であり、合成樹脂等を用いて成形されている。また、環境・呼吸循環指標入力部40は、気圧、気温等の環境指標と呼吸量、心拍数、血圧、血流量等の呼吸循環指標とを、キーボード、スイッチ、及びセンサ等の各種入力装置から入力して信号に変換し、環境・呼吸循環指標として出力する装置である。
一方、SpO2・脈拍数算出部42は、例えば、既述の生体シミュレータ(非特許文献1、2参照)に使用されている技術である(但し、脈拍数算出部は非特許文献3の生体シミュレータも有している)。具体的には、SpO2・脈拍数算出部42は、生体の呼吸や循環等を模擬する生理学モデルを内蔵しており、環境・呼吸循環指標を入力して、これに応じたSpO2及び脈拍数を出力する。なお、環境・呼吸循環指標入力部40、SpO2・脈拍数算出部42及び擬似生体情報発生装置10は、人体モデル39の内部と外部との何れに配置されていてもよい。但し、図1では、人体モデル39の内部に環境・呼吸循環指標入力部40が配置されており、人体モデル39の外部にSpO2・脈拍数算出部42と擬似生体情報発生装置10とが配置されている。一方、擬似生体情報発生装置10の指モデル22は、当然に人体モデル39の指部分に配置されるべきである。
株式会社高研:カタログ、蘇生訓練用生体シミュレータ KOKEN RESIM「レシム」
図17は、パルスオキシメータ対応型生体シミュレータ12において人体モデル39の内部に環境・呼吸循環指標入力部40、SpO2・脈拍数算出部42、及び擬似生体情報発生装置10の総てを配置した場合の使用状態をパルスオキシメータと共に示す模式図である。但し、図1及び図17に示されているパルスオキシメータ対応型生体シミュレータ12の制御方法は互いに同じである。この図17を用いて、パルスオキシメータ対応型生体シミュレータ12の動作の概要を説明する。まず、救急医療の訓練に際して、環境・呼吸循環指標入力部40に、何らかの値、通常は正常値からずれた値、の環境・呼吸循環指標が入力される。環境・呼吸循環指標入力部40はこの環境・呼吸循環指標をSpO2・脈拍数算出部42へ出力する。SpO2・脈拍数算出部42は、その内部に備える生理学モデルを用いてこの環境・呼吸循環指標に対応するSpO2・脈拍数を算出して、このSpO2・脈拍数を擬似生体情報発生装置10へ出力する。擬似生体情報発生装置10は、その指モデル22を用いて、パルスオキシメータのプローブ80へSpO2・脈拍数に対応する擬似透過光46を照射する。その結果、パルスオキシメータ本体14は、環境・呼吸循環指標入力部40に入力された環境・呼吸循環指標に対応するSpO2・脈拍数を表示する。
環境・呼吸循環指標入力部40に入力された環境・呼吸循環指標が上述の様に通常は正常値からずれた値であるので、パルスオキシメータ本体14に表示されるSpO2・脈拍数も正常値からずれた値である。生体においてこの様にSpO2・脈拍数が正常値からずれていれば、この生体に対する処置者は、例えば、気圧を高めるために生体を高圧室に収容したり、血圧を高めるために生体に昇圧薬を投与したりする。これらに対応して、処置訓練者は、気圧を高める必要があると判断すれば環境・呼吸循環指標入力部40に当初に入力された気圧よりも高い気圧を入力し直したり、血圧を高める必要があると判断すれば環境・呼吸循環指標入力部40に当初に入力された血圧よりも高い血圧を入力し直したりする。パルスオキシメータ本体14に表示されるSpO2・脈拍数が、これらの入力によって、正常値に近づけば処置訓練者の判断が正しかったことになり、正常値に近づかなければ処置訓練者の判断が正しくなかったことになる。また、パルスオキシメータ本体14についての処置訓練者の使用技術の熟達度等を知ることもできる。
上述の様に擬似生体情報発生装置10がパルスオキシメータ対応型生体シミュレータ12の構成要素の一つとして用いられる場合には、この擬似生体情報発生装置10は操作入力部38のみならずSpO2・脈拍数算出部42からもSpO2及び脈拍数を入力することができる。擬似生体情報発生装置10がSpO2・脈拍数算出部42からSpO2及び脈拍数を入力する場合、図12に示されている発光信号算出サブルーチンSR2は、図18に示されている様に、操作入力部38の代わりにSpO2・脈拍数算出部42からSpO2及び脈拍数を入力する発光信号算出サブルーチンSR4に置き換えられる。サブルーチンSR4のフローチャートである図18は、サブルーチンSR2のフローチャートである図12からステップS32、S33を除き、その代わりにその位置に、SpO2・脈拍数算出部42からSpO2・脈拍数を入力するステップS92を置いた構成である。
なお、以上の実施形態では生体モデルの一例としての指モデルに本発明が適用されているが、本発明はその他の生体モデル例えば耳モデルにも適用することができ、この耳モデルでは生体の耳たぶを透過する光に対応する擬似透過光が発せられる。また、生体モデルとしての指モデル22、擬似生体情報発生装置10、及びパルスオキシメータ対応型生体シミュレータ12の総てが、生体情報モニタ装置としてのパルスオキシメータに対応していて、互いに波長の異なる光L1、L2を発するが、単一波長の光で作動する生体情報モニタ装置があれば、指モデル22の発光素子60bとD/A変換部32の出力チャンネルCH2と発光素子駆動部34bとを省略し、発光制御サブルーチンSR1を発光信号VF1にのみ対応させること等によって、この様な生体情報モニタ装置にも本発明を適用することができる。