図2は、一実施形態に係る辞書生成装置の機能ブロック図である。辞書生成装置10は、項目名別データ生成部1、項目名別データ統合部2及び辞書生成部3を備える。項目名別データ統合部2はさらに、連続判定部21及び統合部22を含む。統合部22はさらに、接続範囲算出部221、数値範囲確認部222及び探索更新部223を含む。
項目名別データ生成部1は、測定対象における諸項目について所定期間に渡ってなされた時系列上の各回の測定について、表記された項目名並びにその測定日時及び測定値を入力データとして受け取る。このような入力データの典型的な例として、図1で説明したような、地域医療連携システムにおける各患者の検査項目名、当該検査の日時及び当該検査における当該検査項目名の測定値が挙げられる。
本発明は、地域医療連携システムにおける例に限らず、上記のような入力データであれば適用可能である。例えば、入力データは患者に関するものではなく、動植物の検査記録であってもよく、気象データの記録であってもよく、実験データの記録であってもよい。
ここで、データ測定は測定対象(医療の例であれば、患者)を特定したうえで定期的になされ、その都度データ項目名並びに測定日時及び測定値が入力されることで、入力データが構成されている必要がある。表記ゆれに関しても、各回の測定毎に別の表記がなされる状況よりは、複数回は同じ表記が用いられることが継続している状況が好ましい。
項目名別データ生成部1はさらに、当該入力データ内に存在する項目名ごとに分けて、対応する測定日時及び測定値を当該測定日時の順番に並べることで、項目名別データを生成し、当該項目名別データを項目名別データ統合部2に渡す。
すなわち、i=1, 2, ..., NX(NXは当該測定対象Xに対する入力データ内の項目総数)として、以下のように構成されている入力データにおいて、
{ 項目名[i], 測定日時[i], 測定値[i] }
その項目名[i](i=1, 2, ..., NX)に含まれる全種類の項目名を抽出したうえで、各項目名に対応する測定日時及び測定値を、測定日時の順にソートしたものが、当該測定対象Xにおける各項目名の項目名別データとなる。
図3は、入力データから項目名別データを生成する例を示す図である。(1)のような、ある測定対象における入力データより、(2)に示すように含まれている全種類の項目名a, b, c, a2, b2, ...が抽出されるので、(3)に示すような当該項目名a, b, c, a2, b2, ...ごとの項目名別データが生成される。(3)に示すように、項目名別データの各々は、入力データにおける測定日時の順にソートされて構成されている。
なお、項目名の全種類を抽出するに際しては、項目名が文字列として完全一致するものを、同一種類の項目名とする。例えば、「ヘモグロビンA1C」という項目名と、「ヘモグロビンa1c」という項目名とは、別種類の項目名となる。
項目名別データ統合部2は、項目名別データ生成部1より受け取った項目名別データの各々を比較して、同一項目であると判定されるもの同士を統合し、統合結果を辞書生成部3に渡す。辞書生成部3は、当該統合結果を用いて、統合された項目名別データを構成している項目名が、同一項目の表記ゆれであるものとして、表記ゆれ辞書を生成する。
例えば、3つの項目名「HbA1C」、「ヘモグロビンA1C」及び「ヘモグロビンa1c」における3つの項目名別データが統合された場合には、当該3つの項目名は同一項目の表記ゆれであるものとして、表記ゆれ辞書が生成される。
なお、項目名別データ統合部2及び辞書生成部3の処理は、項目名別データ生成部1と同様に、測定対象ごとになされる。例えば、医療の場合であれば、患者αに関しての入力データより、表記ゆれ辞書Dαが生成され、患者βの入力データからは、表記ゆれ辞書Dβが生成されるといったように、患者ごとに辞書が生成される。
図4は、項目名別データ統合部2による項目名別データの統合の原理を模式的に説明するための図である。当該統合の原理は、本来存在している同一項目のデータ(測定日時及び測定値)を全体として見た場合における2つの性質に基づく。
第一の性質は、定期的に測定がなされていることである。第二の性質は、測定値が概ね連続的に得られており、各回においてなされる測定の値が、隣接する回で極端に変動することはない、というものである。なおここで、隣接する回で極端に変動しないとは、各n回目の測定において、以下のようにn回目の測定値V(n)と、n+1回目の測定値V(n+1)との差が、閾値T1内に収まることである。
|V(n)−V(n+1)| < T1
そして、本来存在する同一項目のデータが、表記ゆれによって、項目名別データとして複数に分断して得られているという関係がある。従って、項目名別データのうち同一項目のデータに対応するもの同士を組み合わせれば、上記第一及び第二の性質を有した本来のデータが得られる。そこで、項目名別データ統合部2では、そのような組み合わせを探索することで、項目名別データの統合を行う。当該探索の際の方針が、図4に示されている。
図4では、それぞれ図示するように4つの測定結果で構成されている項目名aの項目名別データ(項目名aとして入力されたデータ)と、項目名bの項目名別データ(項目名bとして入力されたデータ)とが、同一項目に対応するものであるかを判断する例が示されている。
当該判断の第一方針は、上記第一の性質に基づくものであり、図中(1)として示すように、測定日時が整合するかを確認する。すなわち、項目名aのデータにおける一連の測定日時ta1〜ta4より、測定間隔の平均Maが得られる。同様に、項目名bのデータにおける一連の測定日時tb1〜tb4より、測定間隔の平均Mbが得られる。当該平均Ma及びMbが概ね等しく、かつ、日時ta4と日時tb1との間隔が、当該平均Ma及びMbに概ね一致するものであれば、当該2つの項目名別データは統合可能であると判断できる。
なおここで、一連の測定日時ta1〜ta4及びtb1〜tb4はそれぞれ、測定の回が隣接するもので構成されていることを、当該日時を解析することで予め確認しておく必要がある。また、図4ではそのような関係にあるものとして描いているが、区間[ta1, ta4]と区間[tb1, tb4]とが重ならないことも、予め確認しておく必要がある。
また、当該判断の第二方針は、上記第二の性質に基づくものであり、図中(2)として示すように、測定値が整合する必要がある。すなわち、上記第一方針で時間の観点から統合可能であると判断された場合において、さらに、当該統合した際のデータが時間軸上で接続される箇所ta4及びtb1における測定値va4及びvb1の差が、以下のように閾値T2内に収まる必要がある。
|va4−vb1| < T2
統合可能かどうかを判断しているものが別の項目であったならば、通常は値の範囲自体が大きく異なるので、上記閾値条件が満たされない。なお、上記閾値T2は固定値として与えてもよいが、各測定値va1〜va4及びvb1〜vb4の変動傾向を考慮して、上昇又は下降傾向にある場合は、その傾向に応じて大きな値として閾値T2を与えるようにしてもよい。
以下、上記のような原理に基づく項目名別データ統合部2の処理の詳細を説明する。
連続判定部21は、項目名別データ生成部1が生成した項目名別データの各々を対象として、第一処理として、一連の測定日時の中から、実際の測定の回が隣接していると判定されるものを特定する。当該特定の際には、実際の各回の測定は、各日の朝・昼・晩といったように概ね一定間隔で定期的になされていることを前提として利用する。
従って、当該特定においては、項目名別データ内において隣接している測定日時の間隔の分布を求め、主ピークの分布に属しているものを、測定の回が隣接しているものであると判定することができる。主ピーク分布に属さず、長い側の間隔は、隣接していないものと判定する。なお、当該隣接していないものと判定された箇所は、実際には測定がなされているが、別の項目名で記録されたために、当該項目名別データ内には現れていないと推定される箇所である。
なお、主ピークに属さず、短い側の間隔が存在する場合、当該短い側の間隔も、測定の回が隣接しているものとして判定してもよい。また、分布から主ピークを求める際には、周知の統計解析処理を用いることができる。例えば、隣接間隔の平均及び標準偏差を求め、平均に対して±標準偏差×2〜3程度の大きさの範囲(より一般には、標準偏差に基づく所定範囲)に入っているような隣接間隔が、実際の測定の回が隣接するものとして判定してよい。
連続判定部21はまた、第二処理として、当該隣接していると判定された箇所を全てつなげることで、測定の回が連続している区間として、継続測定区間を生成する。
連続判定部21はさらに、第三処理として、項目名別データの各々において、第二処理にて生成された継続測定区間が1つのみである場合、当該1つの継続測定区間を「連続区間」であるものとして識別する。また、当該生成された継続測定区間が2つ以上である場合、当該複数の継続測定区間と、それらの間に生成されるギャップ区間(測定の回が隣接していない箇所をつないでいると判定された区間)と、の全体を、「断続区間」であるものとして識別する。こうして、項目名別データの全体(測定日時の存在している範囲の全体)が「連続区間」又は「断続区間」として、識別される。
連続判定部21は、以上の第一〜第三処理によって当該連続区間又は断続区間として識別した各項目名別データを、統合部22に渡す。統合部22では、後述するように統合処理がなされる。
図5及び図6は、連続判定部21による処理を模式的に説明するための図であり、図5は連続区間として識別した例を、図6は断続区間として識別した例を示している。
図5の例では、(1)に示すように、ある項目名別データが6個の点(測定日時及び測定値でプロットする際の点)p11〜p16で構成されている。点pの測定日時をt(p)と表記する(なお以下では、当該表記を同様に用いる)と、連続判定部21の第一処理では、まず、当該6個の点の間に形成される以下の5個の測定日時間の隣接間隔の分布(頻度分布)を求める。
t(p12)−t(p11), t(p13)−t(p12), t(p14)−t(p13), t(p15)−t(p14), t(p16)−t(p15)
上記5個の隣接間隔の分布が、図5の(3)に模式的に示されている。隣接間隔が概ね等しいことより、当該分布は主ピークP10のみで形成される。従って、第一処理にて、上記5個の隣接間隔は全て、実際の測定の回が隣接しているものに対応している、と判定する。(すなわち、点p11〜p16は、1回目〜6回目の連続した測定の回に対応すると判定する。)こうして、第二処理によって、上記5個の隣接箇所を全てつなげることで、継続測定区間R(=[t(p11), t(p16)])を生成する。
ここで、当該6個の点p11〜p16で構成された項目名別データから生成された継続測定区間はR(=[t(p11), t(p16)])の1つのみであり、当該項目名別データの全体範囲(時間軸方向の範囲)と一致している。従って、図5の(2)に示すように、第三処理によって、当該全体の区間[t(p11), t(p16)](=継続測定区間R)が、連続区間Cであるとして識別される。
一方、図6の例では、(1)に示すように、ある項目名別データが6個の点p21〜p26で構成されており、これらから形成される5個の隣接間隔の分布が(3)に示されている。当該分布は主ピークP20と、主ピークから外れた分布B20と、で形成されており、分布B20は、(1)の5個の隣接間隔のうち、「t(24)−p(23)」の1個のみが平均から大きく外れて長いことを表している。
従って、第一処理においては、5個の間隔のうち、「t(24)−p(23)」の1個のみは実際の測定の回が隣接していない箇所に対応し、その他の4個の間隔は実際の測定の回が隣接しているものである、と判定する。(すなわち、点p21〜p23は、1回目〜3回目の連続した測定の回であり、点p23と点p24の間には当該項目名別データ内には現れていないn回の測定が存在し、点p24〜p26は、4+n回目〜6+n回目の連続した測定の回である、と判定する。)
第二処理では、隣接していると判定された以下の4つの箇所をつなげる。
t(p21)-t(p22)間、t(p22)-t(p23)間、t(p24)-t(p25)間、t(p25)-t(p26)間
上記4つの箇所をつなげることで、図6の(2)に示すように、2つの継続測定区間Ra(=[t(p21), t(p23)])及びRb(=[t(p24), t(p26)])と、その間のギャップ区間Gab(=[t(p23), t(p24)])が得られる。従って、第三処理によって、これら3つの区別が設けられた区間として、断続区間D(=Ra ∪ Gab ∪ Rb)が識別される。
なお、一般には、項目名別データよりm個(m≧2)の継続測定区間が得られた場合は、その間のギャップ区間はm−1個存在することとなり、当該m個の継続測定区間及びm−1個のギャップ区間にて、断続区間が形成されることとなる。図6では説明のため、m=2の場合を例として示した。
なおまた、図5の(2)及び図6の(2)にて用いたような、継続測定区間、ギャップ区間、連続区間及び断続区間の各区間を、図面上において「ブロック」として描く手法を、以降の図においても利用する。(当該ブロックは、横幅方向によって時間軸上の位置を識別するものであり、縦幅方向には特に意味を持たないことに注意されたい。)
統合部22は、以上のような連続判定部21によって連続区間又は断続区間の区別が設けられた項目名別データの各々を比較して、以下の第一条件及び第二条件を満たすもの同士を統合する。当該統合された結果は、辞書生成部3に渡される。
(第一条件)継続測定区間同士が互いに重複せず、且つ、当該重複しない継続測定区間同士の間隔が各回の測定の隣接間隔と整合している。
(第二条件)上記第一条件により整合すると判定された箇所における測定値の変動が所定値内に収まっている。
上記2条件によって統合を行うために、統合部22に含まれる各部221,222,223は以下のような処理を担う。
接続範囲算出部221は、上記第一条件の判定を行う。数値範囲確認部222は、上記第二条件の判定を行う。探索更新部223は、当該第一条件及び第二条件を満たして互いに統合可能な項目名別データの探索を行いつつ、統合可能なものを統合して新たに連続区間又は断続区間となすことで項目名別データを逐次的に更新していくことを、当該更新が不可能になる時点まで繰り返し、最終的な統合結果を得て、当該結果を辞書生成部3へと渡す。
なお、当該逐次的に更新される途中において、接続範囲算出部221及び数値範囲確認部222は随時、探索更新部223が探索している対象に対して、各条件の判定を行う。
図7は、接続範囲算出部221による処理を説明するための図である。接続範囲算出部221は、継続測定区間の各々につき、その前方側及び後方側で、他の継続測定区間を接続可能な範囲を算出する。このため、まず、図7の(1)に示すように、点p_startから点p_endまでに渡って存在している継続測定区間R10(=[t(p_start), t(p_end)])に対して、当該区間R10内のデータ点の間隔(隣接データ点の時間間隔)の平均M10及び分散V10を求める。
さらに、図7の(2)に示すように、時間軸t上において、前方側接続区間F10及び後方側接続区間B10を以下(式1)及び(式2)のように求める。ここで、fは正値の単調増加関数である。(式3)は、自身R10と重複する箇所が存在するような継続測定区間を接続させないようにするための条件である。
すなわち、継続測定区間R10に対して、端点(t_end及びt_start)からそれぞれ前方及び後方へと当該区間R10内のデータ間隔平均M10だけ離れた位置を中心とし、幅が当該データ間隔の分散V10に応じた値f(V10)となる範囲が、前方側接続区間F10及び後方側接続区間B10となる。
接続範囲算出部221は、継続測定区間の各々につき以上のようにして前方側接続区間及び後方側接続区間を算出することで、2つの継続測定区間が接続可能である旨(従って、その他の条件が満たされれば、対応する項目名別データが統合可能な旨)を以下の(条件A)及び(条件B)が満たされていることを確認することで、判定する。
(条件A)2つの継続測定区間に重複する部分は存在しない。
(条件B)条件Aを満たす2つの継続測定区間のうち、時間軸上の前方(未来側)に存在するものをRforwardと(=[tfs, tfe])し、時間軸上の後方(過去側)に存在するものをRbackward(=[tbs, tbe])とすると、以下の(条件B1)及び(条件B2)を満たす。
(条件B1)Rbackwardの前方側接続区間内に、Rforwardの開始日時がtfs存在する。
(条件B2)Rforwardの後方側接続区間内に、Rbackwardの終了日時tbeが存在する。
なお、(条件B)では、「(条件B1)及び(条件B2)を満たす」の代わりに、「(条件B1)及び(条件B2)のうち少なくとも一方を満たす」としてもよい。
なお、以上の(条件A)及び(条件B)を満たすような区間Rforward及び区間Rbackwardがさらに、以下の(条件C)を満たす場合に、接続可能な旨を判定してもよい。なお、以下の「有意な差がない」ことは、平均及び分散がそれぞれ閾値以上変化していないことで判定してもよい。
(条件C)区間Rforward及び区間Rbackwardのそれぞれにおけるデータ点の時間間隔の平均及び分散と、当該区間Rforward及び区間Rbackwardを仮に接続して1つの区間となしたものにおけるデータ点の時間間隔の平均及び分散と、に有意な差がない。
図8、図9及び図10は、接続範囲算出部221の以上のような判定により、統合可能となる項目名別データの例である。なお、図8及び図9においては、表記の規則として、区間Xの開始日時をt(Xs)、終了日時をt(Xe)と表記している。
図8は、第一の統合パターンとして、共に連続区間として構成されている2つの項目名別データC1及びC2を統合して、新たな連続区間としての項目名別データC102が得られる例である。
ここでは、(条件A)が確認され、図8の(1)に示すように、時間軸上、C1が後方、C2が前方に存在しているものとする。さらに、(条件B)が確認されC1の前方側接続区間内にC2の開始日時t(C2s)が存在し、C2の後方側接続区間内にC1の終了日時t(C1e)が存在している場合に、(2)に示すように、C1の開始日時t(C1s)からC2の終了日時t(C2e)までの連続区間(=継続測定区間)として、1つに統合された新たな項目名別データC102が得られる。
図9は、第二の統合パターンとして、(1)に示す、2つの継続測定区間R101及びR102と1つのギャップ区間G12とを有する断続期間として構成された項目名別データD12に対して、(2)に示すように、そのギャップ区間G12内に「埋め込み可能」な位置関係にあり、且つ連続区間として構成された項目名別データC12が存在する場合に、当該C12を埋め込んで接続することにより、(3)に示す新たな連続区間としての項目名別データC1002が得られる例である。
(3)に示すように、新たな項目名別データとして得られる区間C1002は、断続区間D12と同一範囲であり、区間R101の開始日時t(R101s)から区間R102の終了日時t(R102e)までの連続区間として得られる。ここで特に、新たに連続区間C1002となることで、断続区間D12に存在していたギャップ区間G12が解消され、当該区間C1002の全体が、継続測定区間となる。
なお、第二の統合パターンにおいて「埋め込み可能」な位置関係にある旨は、区間R101と区間C12とが前記第一の統合パターンの手法で接続可能であり、且つ、区間C12と区間R102とが前記第一の統合パターンの手法で接続可能であることを確認することで、判定可能である。
さらに、第二の統合パターンの変形として、第三の統合パターンでは、2個以上のm個のギャップ区間を有する断続区間として構成された項目名別データDmのうちの1つのギャップ区間に、1つの連続区間として構成された項目名別データConeを、第二の統合パターンの際と同様にして埋め込むことで、ギャップ区間の数が1個減ってm−1個となった断続区間としての項目名別データDm-1が新たに得られる。
なお、項目名別データConeが埋め込まれることから明らかなように、新たに得られた項目名別データDm-1が時間軸上で占める位置は、埋め込まれる前の項目名別データDmが占める位置と同一であり、項目名別データConeに対応する部分が継続測定区間に変化している。
図10は、上記第三の統合パターンにおいて、ギャップ区間の数m=2の場合を例として示したものである。(1)に示す2個のギャップ区間G212及びG223を有する断続区間としての項目名別データD22に対して、ギャップ区間G212の箇所に、(2)に示す連続区間として構成された項目名別データC212が埋め込まれ、(3)に示すようなギャップの数m=1となった断続区間として項目名別データD23が新たに得られる。
この際、(1)における間にギャップ区間G212を有していた2つの継続測定区間R201及びR202の部分が、(3)に示すように1つの新たな継続測定区間R2002となる。当該部分の変化は、第二の統合パターンで説明したのと同様である。
以上、接続範囲算出部221により、上記(第一条件)すなわち時間軸上の整合性に基づいて、項目名別データ同士を統合する各種の例を説明した。前述のように、実際に統合を行う場合はさらに、上記(第二条件)すなわち測定値の整合性も確認する必要があり、数値範囲確認部222が当該確認を行う。これに関して、以下説明する。
図11は、数値範囲確認部222の処理を説明するための図である。数値範囲確認部222は、接続範囲算出部221が互いに接続可能と判断した継続測定区間の間において、当該接続箇所近傍の所定個のデータによって接続先のデータの測定値範囲を予測し、当該範囲内に接続先データが存在していれば、接続可能であると判断する。
図11では、継続測定区間R30と、当該R30の前方側に存在する不図示の継続測定区間とを接続可能か判断する際の、当該予測の例である。例えば、図示するように区間R30の最後方3点p31, p32及びp33に最小二乗法フィッティングを適用して得られる直線L(v=At+B;A, Bは得られたフィッティング係数)を用いて、当該直線Lから所定の閾値Th以内にある範囲に、前方側の継続測定区間の開始点p40が存在すれば、接続可能と判断できる。
なお、図11では測定日時を変数t、測定値を変数vとして描いてあり、上記範囲を表す2直線L上限(v=At+B+Th)及びL下限(v=At+B−Th)で囲まれた内部に点p40が存在するので、接続可能と判断される。
数値範囲確認部222は、図11で示すように前方側へ向けて予測範囲を求める代わりに、後方側へ向けて予測範囲を求めてもよいし、前方・後方の両側で範囲の整合を確認してもよい。数値範囲確認部222のその他の実施形態は後述する。
探索更新部223は、以上の接続範囲算出部221及び数値範囲確認部222の条件を互いに満たすような継続測定区間を探索し、条件を満たすものを見つけて逐次的に対応する項目名別データ同士を統合して更新することを、当該更新が不可能となるまで継続する。図12は、当該統合の一実施形態に係るフローチャートである。
当該フローは図示するように、ループ処理が構成されたステップS10,S20,S30,S40及びS50のメインフローと、ステップS20の内部(サブフロー)としてのループ処理が構成されたステップS21〜S27と、ステップS30の内部(サブフロー)としてのループ処理が構成されたステップS31〜S37と、によって構成されている。
当該フローの説明に利用する変数を説明する。メインフローのループを回る回数の変数としてk(k=0, 1, 2, ...)を導入する。ループk回目のステップS20(に入る時点)において保持されている連続区間及び断続区間として構成された項目名別データのリストをそれぞれ、Clist[k]及びDlist[k]とし、その構成要素を表す変数を以下の通りとする。
Clist[k] = {C1k, C2k, ..., Cnk}
Dlist[k] = {D1k, D2k, ..., Dmk}
また、断続区間として構成された項目名別データのリストDlist[k]内に存在する全てのギャップ区間のリストを、以下のようにGlist[k]とする。Glist[k]はすなわち、D1k内にある全てのギャップ区間と、D2k内にある全てのギャップ区間と、…Dmk内にある全てのギャップ区間と、の全て(Dlist[k]内の各断続区間内の全ギャップ区間を、全ての断続区間につき集めたもの)である。
Glist[k] = {G1k, G2k, ..., GMk}
ステップS10では、ループ変数kにk=0として初期値を設定し、以上のリストClist[k]、Dlist[k]及びGlist[k]を当該初期値k=0において用意して、ステップS20へ進む。なお、ステップS10ではまた当該ループを1回も回っていないので、k=0である。当該k=0でのリストを用意するには、連続判定部21によって得られた直後の、連続区間・断続区間の区別が設けられた項目名別データの結果をそのまま利用すればよい。この際、各リストClist[0]、Dlist[0]及びGlist[0]内の要素の並びは、ランダムに決めてよい。
ステップS20では、当該連続区間として構成された項目名別データのリストClist[k]内において、図8で説明した第一の統合パターンによって統合可能なもの同士を可能な限り統合して、ステップS30へ進む。なお、ステップS20にて当該統合された後のリストをClist[k]tmpとする。ステップS20の詳細(サブフローS21〜S27)は後述する。
ステップS30では、当該断続区間として構成された項目名別データのリストDlist[k]内において、図9で説明した第二又は第三の統合パターンによって統合可能なものを可能な限り統合して、ステップS40へ進む。
当該ステップS30の統合においては、ギャップ区間のリストGlist[k]内の各要素につき、前記リストClist[k]tmp内の連続区間によって埋め込みが可能なものを探索し、可能であれば埋め込むことによりリストClist[k]tmp及びリストDlist[k]を逐次更新する。ステップS30の詳細(サブフローS31〜S37)は後述する。ステップS30にて当該統合された後のリストを、連続区間の項目名別データにつきリストClist[k]tmp2、断続区間の項目名別データにつきDlist[k]tmp、ギャップ区間につきGlist[k]tmpとする。
ステップS30を終えるとステップS40に進み、更新処理が収束したかを判定する。当該判定は、上記3つのリストClist[k]tmp2、Dlist[k]tmp及びGlist[k]tmpが、それぞれClist[k]、Dlist[k]及びGlist[k](当該k回目のループ処理の開始時点でのリスト)と完全に一致している場合に、これ以上の更新処理は不可能であるとして、収束判定を下し、ステップS50へと進んでフローは終了する。
一方、ステップS40にて、上記3つが完全には一致しておらず、収束判定ではない場合は、リスト変数を以下のように更新した後、次のk+1回目に対してループ処理を継続すべく、ステップS20へ戻る。なお、以下にて記号「←」は、プログラム表記における慣例に従い、「『更新後のリスト変数』←『更新後のリスト変数に格納される内容』」を表す。
Clist[k+1] ← Clist[k]tmp2
Dlist[k+1] ← Dlist[k]tmp
Glist[k+1] ← Glist[k]tmp
ステップS20の詳細(サブフローS21〜S27)は以下の通りである。
まず、開始ステップS21では、当該時点のリストClist[k]を、本サブフロー内で処理対象となる連続区間としての項目名別データの順番を記載したものとして保持しており、当該リスト内のi番目に記載されている要素(連続区間としての項目名別データ)を処理対象に設定するための変数iに初期値の1を設定する。
なお、本サブフロー内のループ処理により、リストClist[k]は適宜更新されるので、ループ周回のi番目の時点でのリストをClist[k](i)とする。
ステップS22では、リストClist[k](i)内のi番目の連続区間iを処理対象として選択する。ステップS23では、当該連続区間i以外でリストClist[k]内に存在する連続区間j(j≠i)で、区間iと接続可能なものがあった場合には接続して統合する。なお、当該選択された区間iが後述のステップS24によって「空席」に置き換えられていた場合は、自動的に接続不可能と判断され、ステップS23での統合は行われない。
当該ステップS23における統合は、図8で説明したような第一の統合パターンであり、連続区間iの前方及び/又は後方に統合可能な連続区間jがあった場合に、統合がなされる。前方及び後方の両者に統合可能な連続区間があれば、区間iには前後で合計2つの区間が統合される。
ステップS24では、連続区間の集合すなわちリストClist[k](i)を更新して、Clist[k](i+1)とする。ここで、ステップS23において統合がなされた場合に、Clist[k](i)から当該統合の結果を反映した形で、Clist[k](i+1)が得られる。統合がなされなかった場合、Clist[k](i+1)の内容は、Clist[k](i)と同じである。
連続区間iにて区間j(jは1つ又は2つ)との間で統合がなされた場合は、リストClist[k](i)内において当該区間jに対応する要素を以降の処理対象から外すべく「空席」で置き換え、区間iに対応する要素を、統合後の項目名別データで置き換えることによって、更新後のリストClist[k](i+1)が得られる。
ステップS25では、全ての区間iにつき処理が完了したかが判断され、完了していればステップS27へと進み、本サブフローを終了してメインフローに戻り、ステップS30へ進む。なお、ステップS30に進む際は、ステップS24で「空席」とされた区間jは全てリスト内から消去したものを、リストClist[k]tmpとする。未処理の区間iが存在していれば、ステップS26に進んでiを増分した後、次の区間i+1を対象として処理を継続すべく、ステップS22に戻る。
ステップS30の詳細(サブフローS31〜S37)は以下の通りである。
まず、開始ステップS31では、当該時点のリストGlist[k]を、本サブフロー内で処理対象となるギャップ区間の順番を記載したものとして保持しており、当該リスト内のi番目に記載されている要素(ギャップ区間)を処理対象に設定するための変数iに初期値の1を設定する。
なお、本サブフロー内のループ処理により、3つのリストClist[k]tmp, Dlist[k]及びGlist[k]は適宜更新されるので、ループ周回のi番目の時点でのリストをそれぞれ、Clist[k](i)tmp, Dlist[k](i)及びGlist[k](i)とする。
ステップS32では、リストGlist[k](i)内のi番目のギャップ区間iを処理対象として選択する。ステップS33では、当該ギャップ区間iに対して埋め込み可能な連続区間jがリストClist[k](i)tmp内にあった場合には、埋め込むことにより、当該ギャップ区間iに対応する断続区間と、埋め込まれた連続区間jと、を統合して、新たな断続区間又は連続区間を得る。
当該ステップS33における統合は、図9又は図10で説明したような第二又は第三の統合パターンである。第二の統合パターンの場合は新たに1つの連続区間として項目名別データが得られ、第三の統合パターンの場合は新たに1つの断続区間としての項目名別データが得られる。
ステップS34では、3つのリストClist[k](i)tmp, Dlist[k](i)及びGlist[k](i)をそれぞれ更新して、Clist[k](i+1)tmp, Dlist[k](i+1)及びGlist[k](i+1)とする。ステップS33で統合が行われた場合、当該更新で内容が変化する。当該更新する際の要素の置き換え等は、ステップS24で説明したのと同様にすればよい。ギャップ区間iが埋められた場合は、当該区間iを「空席」に置き換えればよい。
ステップS35では、全てのギャップ区間iにつき処理が完了したかが判断され、完了していればステップS37へと進み、本サブフローを終了してメインフローに戻り、ステップS40へ進む。なお、当該ステップS40へ進む際に、「空席」とされたギャップ区間iをリスト内から消去したものを、Glist[k]tmpとする。未処理のギャップ区間iが存在していれば、ステップS36に進んでiを増分した後、次のギャップ区間i+1を対象として処理を継続すべく、ステップS32に戻る。
以上、図12のフローにおいては、ステップS20では第一の統合パターン(図8)により、ステップS30では第二又は第三の統合パターン(図9又は図10)により、統合可能かを確認しながら、統合・更新を可能なまで継続した。(なお、この際、図11のような測定値範囲の整合性も同時に確認している。)以下、さらに別の統合パターンを利用して統合を行う各実施形態を説明する。
この場合、上記第一〜第三の統合パターンによる実施形態により、ステップS40においてこれ以上は更新不可能であると判定された場合に、さらに当該別の統合パターンを試みるべく、ステップS20に戻るようにして、同様にループを継続するようにすればよい。
ここで、別の統合パターンは、ステップS30内のステップS33において第二又は第三の統合パターンに対して追加で導入することができる。この際、第二又は第三の統合パターンを適用可能かを最初に確認してから、適用できなかった場合に、別の統合パターンの適用を試みるようにすればよい。なお、ステップS20は以上の実施形態と同様に、第一の統合パターンの適用のみを調べればよい。
また、ステップS40において当該別の統合パターンを追加導入する判断を下してから再度ループ処理を継続した後に、再びステップS40においてこれ以上は更新不可能であると判定された場合には、ステップS50に進んでフローを終了すればよい。
以下、上記のようにして追加導入可能な、別の統合パターンの各種を説明する。
第四の統合パターンは、断続区間に連続区間を接続するに際して、第二又は第三の統合パターンのようにギャップ区間を埋める形ではなく、断続区間の両端のいずれかにおいて接続する。当該接続の際は、断続区間の端に存在する継続測定区間と、接続しようとする連続区間との間で、図7で説明した時間軸上の整合性を確認する。
図13に、第四の統合パターンの例を示す。(1)に示す断続区間Daは、継続測定区間Ra1, Ra2,Ra3とそれらの間のギャップ区間Ga1,Ga2で構成されている。当該断続区間Daと、(2)に示す連続区間Cbとが、断続区間Daの端の継続測定区間Ra3との間の箇所で接続されて、(3)に示すような新たな断続区間Dbが得られる。ここでは、区間Ra3とCbとが統合され、新たな継続測定区間がRbとなっている。
ステップS33で第四の統合パターンを試みる際は、対象とされているギャップ区間iを含む断続区間の両端に対して、当該時点における連続区間のリストClist[k](i+1)tmpで接続可能なものを探索すればよい。
なお、ある断続区間に含まれる全てのギャップ区間iにつき当該探索を実施すると探索の重複が生ずるので、ある断続区間における全てのギャップ区間iにおいて第二又は第三の統合パターンが全く適用できなかった場合のみに、当該第四の統合パターンを当該断続区間に対して探索するようにしてもよい。
第五の統合パターンは、断続区間同士を統合して、新たな断続区間又は連続区間となすものである。この場合、ステップS33でギャップ区間iを埋めるために探索する対象を、連続区間のリストClist[k](i+1)tmpから探すのではなく、当該ギャップ区間iを含む断続区間以外の断続区間に含まれる各継続測定区間を、独立した連続区間であるものとみなして、埋め込みが可能であるかを調べればよい。なお、当該埋め込み可能か否かは、第二又は第三の統合パターンの場合と同様に判定すればよい。
また、当該ギャップ区間iを含む断続区間Iに対して、別の断続区間Jに含まれる継続測定区間jによって、ギャップ区間iが埋め込み可能であると判定された場合はさらに、断続区間Iと断続区間Jとが、当該埋め込まれた箇所以外の部分においても、互いに重複することなく、且つ図7の処理における時間軸上の整合性を有しているかを確認し、当該確認がなされた場合に、統合を行う。
なお、確認がなされ統合する際は、埋め込んだ箇所以外の部分も適宜、図7の処理によって接続させるか否かを調べることにより、継続測定区間又は断続区間の区別を更新して、新たな断続区間又は連続区間を得る。
図14〜図16に、第五の統合パターンにおける確認処理及び確認がなされた場合の実際の統合の例を示す。
図14は、(1)に示す図13と同様の断続区間Daにおいて、ギャップ区間Ga1を別の断続区間の継続測定区間で埋める際の確認処理の例である。(2)に示す別の断続区間Dcに含まれる継続測定区間Rc1によって当該ギャップ区間Ga1は埋め込み可能であるが、継続測定区間Ra3及びRc2が重複してしまうため、断続区間Da及びDcは統合することができない。
図15は、同じく(1)に示す図13と同様の断続区間Daにおいて、ギャップ区間Ga1を別の断続区間の継続測定区間で埋める際の確認処理の例である。(2)に示す別の断続区間Deに含まれる区間Re1によって当該ギャップ区間Ga1は埋め込み可能であり、且つ、断続区間Da及びDcは当該埋め込んだ箇所以外においても重複が発生しないので、(3)に示すような統合が可能である。
ここでは、当該埋めたギャップ区間Ga1以外のギャップ区間Ga2も、区間Re2によって同時に埋めることが可能であることが確認され、全体として一つの連続区間Ce2が(3)に示すように得られている。
図16は、統合可能と判断され、埋め込んだ箇所以外を更新する他の例である。(1)に示す断続区間d1のギャップ区間g1が、(2)に示す断続区間d2の継続測定区間r3により埋め込み可能である。区間d1及びd2に重複等は存在しないため、統合処理が行われ、(3)の断続区間d3が得られる。ここでは、(a)のように埋め込みにより新たに区間r5が生ずると共に、その他の部分(b)においても更新がなされ、当初のd2内の区間g2が縮小されてg3となっている。
第六の統合パターンは、第五の統合パターンを拡張するものであり、断続区間同士を統合して、新たな断続区間となす。ここで、埋め込みを検討しているギャップ区間を、第五の統合パターンのように「完全に埋める」ものを別の断続区間の継続測定区間から探索するのではなく、当該ギャップ区間の片側の継続測定区間のみに接続可能であり、当該ギャップ区間内に収まる(「部分的に埋める」)ことで、ギャップ区間の幅を縮小させるようなものを探す。
なお、当該部分的に埋まった箇所以外の整合性は、第五の統合パターンと同様に確認する。
図17は、第六の統合パターンによって統合される例である。(1)に示す断続区間d11のギャップ区間g11に対して、(2)に示すような、当該区間g11内に収まり且つ片側の区間r11のみに接続可能(もう一方の区間r12には接続不可能)な区間r13を有する断続区間d12が統合され、(3)に示す新たな断続区間d13を得る。
すなわち、(3)では部分的に埋め込まれた箇所が(a)であり、区間g11が区間g13へと縮小している。その他の部分(b)についても更新がなされ、区間g12は区間g13とg14とに分かれている。
以上、第四〜第六の統合パターンを追加利用するに際しては、いずれか1つのみを利用してもよいし、2つ以上を利用してもよい。2つ以上利用する場合は、適用を試みる順番を設定しておき、n番目の統合パターンが適用された場合は、n+1番目以降は適用しないようにしてもよい。
さらに、更新探索部223による、図12とは別の一実施形態を説明する。図18は、当該別の一実施形態に係る更新のフローチャートである。当該フローは図示するように、ループ処理が構成されたステップS100,S20,S301,S401及びS500のメインフローと、ステップS20の内部(サブフロー)としてのループ処理が構成されたステップS21〜S27と、ステップS301の内部(サブフロー)としてのループ処理が構成されたステップS310〜S370と、によって構成されている。
ここで特に、図18においてステップS20は図12の実施形態におけるステップS20と同一であるので、サブフローを含めて同じ番号を付与してある。図12の実施形態との差異点として、ステップS30がステップS301で置き換えられ、収束判定のステップS40も対応する判定処理のステップS401で置き換えられる。
当該図18の実施形態では、図12の実施形態においてステップS30で断続区間内のギャップ区間を可能な限り埋める処理に代えて、ステップS301が存在する。ステップS301では、断続区間の各々を仮想的に分割して、構成している複数の継続測定区間の各々からなる仮想的な複数の連続区間とみなして、当該仮想的な連続区間と、ステップS20で扱った本来の連続区間と、を含めた全ての連続区間同士を、ステップS20の処理と同様にして可能な限り接続する。
ステップS301において、例えば図9で説明した断続区間D12は、当該D12を構成している2つの継続測定区間R101及びR102に仮想的に分割されることによって、2つの仮想的な連続区間R101及びR102とみなされ、その他の当初から存在する本来の連続区間C12等との間で、統合の処理が行われる。なお、「仮想的」な連続区間R101及びR102は、本来であれば一つの項目名別データに対応する断続区間D12の一部分であり、当該一部分である旨の情報は保持されるので、「仮想的」と呼ぶこととした。また同様に、このような分割を仮想的な分割と呼ぶこととした。
上述のようなステップS301により、図18の実施形態においては、図12の実施形態との差異点として、埋め込むためのギャップ区間を処理対象として扱う必要はなく、また、統合の際にも、埋め込むタイプの統合(第二・第三の統合パターンその他)は不要であり、図8で説明した第一の統合パターンのみを利用すればよい。ただし、仮想的な連続区間を含む統合がなされる際には、対応する本来の断続区間において図14〜図17等にて説明したような重複等が発生せず、項目名別データとして矛盾なく統合可能であることを逐次確認してから統合を行うようにする。すなわち、図12の実施形態における埋め込み可能であるかの確認と類似した確認は、図18の実施形態においてもなされる。以下、その詳細を説明する。
ここで、図12の説明で用いたのと同様に、図18にてループk回目(k=0, 1, 2, ...)のステップS20(に入る時点)において保持されている連続区間及び断続区間として構成された項目名別データのリストをそれぞれ、Clist[k]及びDlist[k]とし、同様に、その構成要素を表す変数を以下の通りとする。
Clist[k] = {C1k, C2k, ..., Cnk}
Dlist[k] = {D1k, D2k, ..., Dmk}
ステップS100では、図12のステップS10の場合と同様に、ループ変数kにk=0として初期値を設定し、上記リストClist[k]及びDlist[k]を当該初期値k=0において用意して、ステップS20へ進む。なお、ギャップ区間のリストGlist[k]を用意する必要がない点は、ステップS10とは異なる。ステップS20は図12の場合と同様であり、当該ステップS20を終えた時点で、リストClist[k]は更新されてリストClist[k]tmpとなっているものとする。
ステップS301に進むと、まず、ステップS315において、当該時点における断続区間リストDlist[k]内の全ての断続区間を、仮想的な連続区間へと分割してから、ステップS320へと進む。当該分割にて得られた全ての仮想的な連続区間のリストをCDlist[k]とし、その構成要素を以下の通りとする。
CDlist[k] = {CD1k, CD2k, ..., CDNk}
ステップS320〜S370は、対応する参照番号が付与されたステップS22〜S27とそれぞれ同様であるが、第一の差異点として、処理対象が異なる。すなわち、当該ステップS320〜S370にて処理対象となる各連続区間iは、本来の連続区間Clist[k]tmpのみではなく、上記仮想的な連続区間CDlist[k]をも加えた全てによって構成され、当該各リストに記載された所定の順番にて、ステップS22〜S27と同様の処理がなされる。
また、第二の差異点として、ステップS330における連続区間iに対してその前後から接続可能な接続区間jを接続する際の、接続可能の判定において、ステップS23にはない追加の判断処理がなされる。すなわち、ステップS23と同様に、第一の統合方針によって当該連続区間iの前方及び/又は後方に接続可能な連続区間j(j[前方]、j[後方]とする)を見つけた場合において、さらに、当該接続しようとしている連続区間(区間i、区間j[前方]及び区間j[後方])の中に、仮想的な連続区間が1つ以上存在する場合、次の確認を行う。
すなわち、当該仮想的な連続区間に対して、当該接続しようとしている箇所以外の箇所(分割前の断続区間における各継続測定区間)において、図14〜図17等にて説明したような、接続した際の区間の重複がないことを確認する。これにより、例えば前述のような図14の場合において区間Ra1と区間Rc1との接続は、当該接続しようとしている箇所以外のRa3及びRc2における重複によって、不可能であることが確認されるため、このような接続が行われることはない。
なお、ステップS330にて上記のような確認を行うために、仮想的な連続区間CDlist[k]の各要素につき、ステップS315において分割する前の当初の断続区間がどのように構成されていたかの情報も、区間iが処理される毎にステップS340にて更新されるリストDlist[k](=Dlist[k](i))と対応づけて保持しておくものとする。
さらに、第三の差異点として、ステップS340では、ステップS330で仮想的な連続区間CDlist[k]のいずれかと、本来の連続区間Clist[k]tmpの1つ又は2つと、を接続する判断が下された場合には、接続される本来の連続区間Clist[k]tmp内の要素を「空席」として、仮想的な連続区間CDlist[k]内において、追加接続更新の処理(統合処理)を行う。すなわち、本来の連続区間は、接続された仮想的な連続区間における断続区間の一部分に「吸収」される形で統合処理がなされ、断続区間が新たに得られることとなる。
ステップS340ではまた、仮想的な連続区間を含んだ接続がなされた結果、対応する断続区間においてギャップ区間の存在が解消された場合(ギャップ区間が0個になった場合)は、当該断続区間を連続区間へと更新することで、i回目の時点におけるリストDlist[k](=Dlist[k](i))及びリストClist[k]tmp(=Clist[k]tmp(i))を更新する。
ステップS340ではまた、仮想的な連続区間が2つ以上接続される場合は、対応する2つ以上の断続区間の当該接続する箇所以外において接続可能な箇所があれば、当該箇所も接続(当該箇所に対応する仮想的な連続区間を1つに統合する)したうえで、更新を行う。またこの際、対応する2つ以上の断続区間が1つに統合されたものとして、i回目の時点におけるリストDlist[k](=Dlist[k](i))を更新する。
以上、ステップS301を終えた時点において、本来の連続区間のリストがClist[k]tmp2となり、仮想的な連続区間のリストがCDlist[k]tmpとなり、断続区間のリストがDlist[k]tmpとなっているものとする。
ステップS401では、更新処理が収束したかが判定され、収束していればステップS500へ進んでフローは終了し、収束していなければステップS20へと戻る。当該判定は、ステップS40の場合と概ね同様であり、リストClist[k]tmp2及びDlist[k]tmpがリストClist[k]及びDlist[k](当該k回目のループ処理の開始時点でのリスト)と完全一致している場合、これ以上の統合処理は不可能であるとして、収束判定を行う。それ以外の場合、すなわち、当該2つのリストの少なくとも一方に少しでも変化があった場合、収束していないと判定し、ステップS40の場合と概ね同様に、リストClist[k]tmp2及びDlist[k]tmpを次のk+1回目の処理対象のリスト(Clist[k+1]及びDlist[k+1])として設定したうえで、ステップS20へと戻る。
以下、数値範囲確認部222による処理の補足説明として、図11で説明した例の他の実施形態等を説明する。ここで、接続範囲算出部221による判定で、2つの継続測定区間が時間軸上は接続可能であるものと判定されているものとし、当該2つの継続測定区間を、前記(条件A)及び(条件B)で導入したのと同様に、前方側(未来側)の区間Rforwardと、後方側(過去の側)の区間Rbackwardとする。
また、それぞれ、時間軸上の過去の側から順に、以下のようなデータ点を有するものとし、後方側Rbackwardより見て前方側Rforwardの点が許容範囲内かを判定する場合を説明するが、その逆向きでも同様に判定可能である。
Rbackward … p1, p2, p3, ..., pNのN個の点
Rforward … q1, q2, q3, ..., qMのM個の点
一実施形態では、図11の場合と同様に、一般にはn(n≦N)個の以下の後方側の点を用いて、フィッティング直線Ln[1]を求め、当該直線Ln[1]から見て上下の閾値Th[1]内にq1が収まっていれば、許容範囲とする。
pN−n+1, pN−n+2, ..., pN−1, pN
q1が許容範囲と判定された場合、さらに、次のq2が許容範囲内かを判定する。この際、当該q1を予測用に加え、逆にpN−n+1を予測用から除外して、以下のn個の点により、フィッティング直線Ln[2]を求め、当該直線Ln[2]から見て上下の閾値Th[2]内にq2が収まっていれば、許容範囲とする。
pN−n+2, pN−n+3,..., pN−1, pN, q1
以降同様に、以下のn個の一連の点を予測用のウィンドウ範囲として当該ウィンドウを1点ずつシフトしながら、フィッティング直線Ln[k]を求め、当該直線Ln[k]から見て上下の閾値Th[k]内にqkが収まっていれば、許容範囲とする。
pN−n+k, pN−n+k+1,..., pN−1, pN, q1, q2, ..., qk−1
上記kにつき所定の上限値まで繰り返して、全てが許容範囲であれば、前方側Rbackward及び後方側Rforwardは接続可能と判断すればよい。この際、「つなぎ目」の連続性が重要であるので、閾値Th[k]は、kの単調増加関数としてもよい。
また、一実施形態では、上記と同じくkの上限値までフィッティング直線Ln[k]を求めて閾値Th[k]内に収まるかを判定するが、フィッティング直線Ln[k]を以下の場合には最小二乗法ではなく、時間tによらず一定値v0を取る直線v=v0を用いるようにしてもよい。
すなわち、上記n個の点のうち、隣接するn−1箇所における測定値の変化を調べ、増加しているものと、減少しているものと、の個数の差の絶対値が、閾値Thdiffよりも小さい場合は、当該n個の点から予測される測定値の変化は上昇・下降のいずれでもなく、ランダムなものであるとして、一定値v0を取る直線v=v0を用いるようにしてよい。当該一定値にv0には、上記n個の点における測定値の平均値を用いてよい。
一実施形態ではさらに、上記n個の点のうち、隣接するn−1箇所における測定値の変化を調べ、増加しているものと、減少しているものと、の個数の差の絶対値が、上記閾値Thdiff以上であり、且つ、増加している又は減少している箇所が連続する個数が閾値Thc以上である場合に、最小二乗法フィッティングによる増加又は減少傾向の予測を適用してもよい。当該連続する個数が閾値Thcよりも小さい場合は、増加又は減少の傾向ではないものとして、上記と同様に一定値v0を取る直線v=v0を用いればよい。
以上の各実施施形態における予測直線からの測定値の上下幅の許容範囲を設定する閾値Th[k]については、当該n個の測定値の分散Vnを求めて、分散Vnに対する単調増加関数として与えるようにしてもよい。
また、以上の各実施施形態における予測直線からの測定値の上下幅の許容範囲を設定する閾値Th[k]については、プラス側(図11ではL上限の側)の閾値Th[k](+)と、マイナス側(図11ではL下限の側)の閾値Th[k](-)と、で別の値として区別して与えるようにしてもよい。増加傾向と判定された場合は、Th[k](+)>Th[k](-)の関係でそれぞれ所定値を与え、減少傾向と判定された場合は、Th[k](+)<Th[k](-)との関係でそれぞれ所定値を与えてもよい。
以下、測定値に単位が記載されている場合について、本発明における補足の説明を行うが、本発明は、当該単位記載がなくても、あるいは当該単位記載を用いなくとも、実施可能である。
項目名別データ生成部1では、前述のように、入力データとして{ 項目名[i], 測定日時[i], 測定値[i] }を受け取り、項目名別データを生成する。この際、測定値に単位が記載されている場合、予め用意しておく単位辞書を参照して、所定の単位に変換した際の値として測定値[i]を修正してから、項目名別データを生成してもよい。
例えば、体積に関して、1000ml等を1l等へと統一して修正して、リットル単位での値を利用するようにしてもよい。また例えば、ヘモグロビンA1cにおいて国際基準のNGSP値は、旧日本基準のJDS値に対してJDS+0.4=NGSPという式が成立するので、いずれかの基準で統一した値を利用するようにしてもよい。このような変換式も単位辞書に予め記載しておけばよい。
数値範囲確認部223では、上記のように数値範囲の整合性を判断する際の前処理として、単位が整合していることを確認して、単位が整合しているもののみを対象として数値範囲の整合を判断するようにしてもよい。このため、上記予め用意しておく単位辞書に、単位の整合の確認方式を定義しておき、当該定義を参照して、単位の整合を確認することができる。当該定義の例として例えば、次元の一致を利用してもよい。