以下、本発明の実施例について、図面を参照して詳述する。
ここでは、冠動脈の狭窄度の表示に本発明を実施した例について説明する。心筋梗塞、狭心症等の虚血性心疾患と呼ばれる疾患は、心臓を動かす筋肉(心筋)に血液を送る血管である冠動脈が動脈硬化により狭窄を起こし、心筋へ充分な酸素が送られないことにより発症する。これらの疾患の診断には、カテーテル検査が行われる。この検査では、カテーテルと呼ばれる細いチューブを手または足の血管から挿入して先端を冠動脈に到達させ、カテーテルより冠動脈へ造影剤を注入する。この状態で、X線撮影を行い、冠動脈がどの程度つまっているか(狭窄しているか)医師が判断する。また、狭窄が進行している場合には、更にその部位を広げる治療を行う。この治療法には何種類か存在するが、例えばカテーテルを利用して微小の風船状の器具を狭窄部位に挿入し、風船をふくらませることにより狭窄部位を広げる。
このようにして計測される冠動脈の狭窄の度合いを、本発明を用いてコンピューターの画面上に表示する例を、図1に示す。画面は、狭窄度表示エリア100、重症度表示エリア120、凡例表示エリア130の3種類の表示エリアから構成される。狭窄度表示エリア100では、冠動脈のどの部位が、どの程度狭窄しているか、という詳細な情報を表示する。重症度表示エリア120では、冠動脈全体として、どの程度動脈硬化が進展しているのかという情報を表示する。凡例表示エリア130では、狭窄度表示エリア100の表示内容の凡例を表示する。
冠動脈は、大きくは一本の血管が3本に分岐する構造となっている。分岐する手前の一本の部分をLMT、その後分岐した3本の部分をそれぞれRCA、LAD、LCXと呼ぶ。カテーテル検査を行う際、血管の物理的な位置を指定するためには、これらの4種類の血管(LMT、RCA、LAD、LCX)を位置によって15ヶ所の部位に分け、#1〜#15という番号で場所を表す。更に、#4の部位はPD、AVという2つの部位に分岐しており、計17の部位に区分される。LMTには1部位、RCAには6部位、LADには5部位、LCXには5部位が存在する。
狭窄度表示エリア100には、上記計17の部位のそれぞれが、どの程度狭窄しているかを表示する。狭窄度表示エリア100の左側の2列101、102が部位を表している。記号101で示す列には4本の血管をアルファベットによる略号(LMT、RCA、LAD、LCX)で表し、記号102で示される列には、4本の血管を上述のように更に詳しく17の部位に分割し、表示する。
狭窄部位を治療する場合には、通常、前述のようにカテーテルを用い、狭窄部位を広げる治療を実施するが、狭窄部位、狭窄の程度、狭窄部位の数、等の条件により、この治療法が実施できない場合がある。この場合には、バイパス手術が行われる。バイパス手術とは、腕や足の血管の一部を切除し、切除した血管を狭窄部位をバイパスするように繋げることにより、狭窄部位の先へ血液が流れるようにする手術である。この際、接合した血管は上記17部位のいずれにも当てはまらない。そのため、バイパスにより新たに繋いだ血管の狭窄の程度も表示できるよう、符号102で示す列の、上記17部位を示す行の下にバイパス血管の部位を表示する。バイパスした血管の部位は、どことどこを繋いだのか、すなわちバイパスの始点と終点を表示する。更に、バイパス部位を示す行の、符号101で示す列には、バイパス手術の略号である「CABG」という文字を表示する。
このように符号111で示す17行にはもともと存在する冠動脈の狭窄度を表示し、その下の符号112で示す行には、バイパス血管の狭窄度を表示する。狭窄度表示エリア100の横方向は時間の経過を示し、エリアの左側にはより古い、過去の狭窄度が表示され、右に行くに従い、より新しい狭窄度が表示される。狭窄度を検査した具体的な日付は符号113で示す最上部の行に表示する。例えば、符号104で示す列は、1999年12月15日における各部位の検査結果を表している。ある1日における狭窄度の検査結果は、列104に示すように、更に符号103、105で示す2列により表示する。カテーテルにより冠動脈をの狭窄部位を広げる治療を行った場合には、左側の列103に治療前の狭窄度を表示し、右側の列105に治療後の狭窄度を表示する。このような構成とすることにより、治療がどの程度の効果をもたらしたか、治療の結果、どの程度症状が改善されたかを正確に把握することが可能となる。
上記のように、狭窄度表示エリアは、縦方向が血管の場所(部位)を示し、横方向を時間の経過を示す表となっている。表中の各セルにはある一時点におけるある部位の狭窄度を表示する。狭窄度はセルの色、セル内の文字により表示する。セルに表示する情報の凡例は凡例表示エリア130に表示する。ある部位の狭窄度が以前に比べて低くなった場合、それが自然に治癒した結果であるのか、カテーテルによる治療を施した結果であるのか、という情報は医師にとって重要な情報である。また、狭窄度が進行した場合にも、一度治療を施した部位であるか否か、という情報は重要である。そのため、本発明では同じ狭窄度を表示する場合でも、過去に治療を行った部位であるかどうかにより、異なる表示を行う。符号131で示す色調系列は治療を行っていない部位に関する狭窄度の表示方法であり、符号132で示す色調系列は治療を行った部位に関する狭窄度の表示方法である。ここでは、狭窄度を0%、25%、50%、75%、90%、99%、100%の7段階で表示する例を示している。0%が全く狭窄が無い健康な状態を表し、100%は血管が完全に閉塞し、血流が遮断されている状態を表す。
図1の符号131、132で表される色調系列は、それぞれの狭窄度に対し、セル内を異なる網掛け模様とし、さらに治療の有無でも異なる網掛け模様することを表している。実際に計算機の画面上に表示する際には、セル内を異なる網掛け模様をとする代わりに、セル内を異なる色で塗りつぶしても良い。また、網掛けと色とを併用しても良い。異なる狭窄度に対し、セル内を異なる色とする場合には、例えば符号131で示す治療を行っていない状態における狭窄度を示す色調系列として、0%を青、100%を赤とし、その中間である25%、50%、75%、90%、99%に対しては青から赤に徐々に変化する色を用いる。また符号132で示す治療実施後の狭窄度を示す色調系列として、0%を白、100%を黒とし、その中間である25%、50%、75%、90%、99%に対しては白から黒に徐々に変化するグレースケールの色を用いる。
このように、狭窄度を表示するセルに背景として、狭窄度の進展に応じ、徐々に色が変化する色調系列を用いることにより、各部位の狭窄の度合いがどのように変化してきたか、また、現在の冠動脈全体がどのような状態にあるか、という情報を容易に把握することが可能となる。更に治療実施前と実施後で異なる色調系列を用いることにより、各部位に対しこれまで治療が行われたかどうか、また、狭窄度が改善した場合、自然に治癒したのか、治療の結果であるのか、という情報が容易に把握可能となる。
また、セルに狭窄度を表示する際には、セルに網掛け模様、または背景色を表示するだけではなく、更に狭窄度を示す具体的な数値を表示する。治療を実施した場合には、狭窄度と共に治療の内容を示す文字も表示する。模様、色と具体的な数値、治療内容を同時に表示することにより、これまでの病態の変化、現在の状態が視覚的に容易に把握できると同時に、セル内の数値を参照することにより、病態を定量的に把握することが可能となる。たとえばセル107は2001年1月6日のデータであり、2列ある行の左側であるので、検査の結果を示している。このセルの網掛け模様は、凡例表示エリアの、治療前の狭窄度25%の模様に一致し、さらにセル内に「25」という数値が表示されているため、2001年1月6日にカテーテル検査を実施し、その結果#1の部位の狭窄度が25%であったことを示している。また、セル106は2000年11月1日のデータであり、2列ある行の右側であるので、治療の結果を示している。このセルの網掛け模様は、凡例表示エリアの、治療以後の狭窄度0%の模様に一致し、さらにセル内に「PCI(0)」という文字が表示されているため、2000年11月1日にPCI治療を実施し、その結果狭窄度が0%になったことを示している。
狭窄度表示エリア100では、各日付ごとに検査、治療を表示するセルを設けているが、全ての日付けにおいて、全部位に関し検査、治療が存在するとは限らない。例えば、検査のみを実施し、治療を行わない場合もある。また、検査を行う場合にも、同じ日に全ての部位について検査を行うとは限らず、特定の部位のみに関し検査を行う場合もある。このように、狭窄度表示エリア100の全てのセルに表示すべき情報が存在するわけでは無い。しかし、情報が存在しないセルに何も表示しないとするとセルの網掛け模様または色がとびとびに変化し、病態がどのように変化したか、という情報が視覚的に把握しにくくなる。そのため、検査、治療が行われず、表示すべき情報の存在しない場合には、その一つ前の情報が大きくは変化していないと考え、左隣のセルと同じ網掛け模様または背景色を用いる。ただし、具体的な狭窄度は分からないため、狭窄度を示す数値は表示しない。狭窄度を示す数値の代わりに、左側のセルの情報を便宜的に引き継いだことを示すため、矢印を表示する。例えばセル108は、2001年1月6日における#1の治療結果を示すセルであるが、数値が示されず矢印が示されているため、この日は治療を実施しなかったことを示している。また、このセルの網掛けまたは背景色は左隣のセルと同じく、治療前の狭窄度25%を示す模様または背景色となっている。バイパス部位に関しては、バイパス手術を行うまでは狭窄度は定義されないため、バイパス手術前のセルは空白のままとする。バイパス手術を行った日付の治療を示すセル109には、バイパス手術を行ったことを示すため、"CABG"という文字を表示する。
また、前述のように血管には#1〜#15までの部位が定義されているが、血管の形状には個人差があり、人によっては#1〜#15の全てが存在しない場合がある。この場合、存在しない部位に対する検査結果を表示することができないため、「血管が存在しない」ということを表す別の網掛け模様、または背景色を用いる。この時に用いるセルの網掛け模様または背景色は、凡例表示エリア130の中の符号133に表示する。対応する部位が存在しないセルは、符号133で示す網掛け模様、または背景色を設定し、さらに部位が存在しないことを分かりやすく示すため「×」という記号を表示する。例えば狭窄度表示エリア100の中のセル110が、部位が存在しないことを表示している。
また、ある部位の狭窄度が非常に高い場合、その部位より先に造影剤が注入されず、X線撮影で血管が写らない場合がある。このような場合、部位によっては検査が不可能となる。検査ができず、狭窄度が不明である場合には、凡例表示エリア130の符号134で示す網掛け模様または背景色をセルに表示する。
狭窄度表示エリア100では、各部位の詳細な狭窄度を表示するのに対し、重症度表示エリア120では、LMT、RCA、LAD、LCXの各血管ごとの動脈硬化の進行度、および冠動脈全体の動脈硬化の進展度を表示する。動脈硬化の進展度としてはいくつかの計算方法が提案されているが、例えば、代表的な計算方法としては、Gencini ScoreやExtent Scoreが知られている。図1の重症度表示エリア120では、Gencini Scoreを表示する例を示しているが、Extent Scoreを表示しても良く、また、Gencini ScoreとExtent Scoreを切り換えて表示できるようにしても良い。
狭窄度表示エリア100は最も左の列101に血管を示し、左から2番目の列102に血管の部位を示したが、重症度表示エリアでは血管単位の表示のみを行うため、列101と列102を合わせた幅の列123に、血管の名称、および冠動脈全体を意味する「total」という文字を表示する。符号121で示す上から4行が各血管の重症度をあらわし、最下行122が冠動脈全体の重症度を表す。狭窄度表示エリア100同様、横方向が時間の経過を表し、列方向はある日付における各血管、および冠動脈全体の動脈硬化進展度を示す。各日付における進行度の表示エリアは2列より構成され、狭窄度表示エリア100と同じように、左側の列が検査の結果から計算された重症度、右側が治療の結果から計算された重症度を表す。例えば、列124は1999年12月15日における検査結果から計算された重症度を表し、列125は同日行われた治療の結果から計算された重症度を表す。また、各重症度が、治療を行っていない状態における値であるか、治療を実施した状態における値であるかを容易に区別できるようにする。そのため、血管の各部位に対し、一度も治療を行っていない状態における値を示すセルには、セル126に示すように模様または背景色を設定し、血管の中のいずれかの部位に一度でも治療を行っている場合には、セル127に示すように模様、背景色を設定しない。このように、各部位の詳細な狭窄度を示す狭窄度表示エリア100の他に、狭窄度から計算される重症度を表示するエリア120を設けることにより、冠動脈全体として考えた場合の病状の進行状況の把握が容易となる。
次に、検査結果、治療結果を、図1で示す画面上に表示するための処理について説明する。検査結果、治療結果は、図2に示すテーブル構造のデータベースに格納しておく。データベースは、診断履歴テーブル210、治療履歴テーブル220、バイパス手術履歴テーブル230より構成される。診断履歴テーブル210は検査結果を格納するテーブルであり、診断番号フィールド211、患者IDフィールド212、検査日フィールド213、部位フィールド214、狭窄度フィールド215、という5個のフィールドより構成される。診断番号フィールド211には診断履歴テーブル210内のレコードを一意に指定するための主キーとなる番号を格納する。カテーテル検査の結果は、検査を受けた患者の患者ID、検査日、部位、狭窄度を1つのレコードとしてそれぞれ患者IDフィールド212、検査日フィールド213、部位フィールド214、狭窄度フィールド215に格納する。狭窄部位が複数個所存在する場合には、同一患者ID、同一日付で部位と狭窄度の異なる複数のレコードを登録する。
前述のように、ある部位に狭窄が生じていると、造影剤がその先へ到達せず、狭窄度の検査が不可能となる場合がある。その場合、その部位に対する検査結果は「undetermined」と表現される。この状態の部位に関するデータを入力する際には、狭窄度フィールド215に200という数値を入力する。また、冠動脈の形状には個人差があり、人によってはある部位が存在しない場合がある。このような部位は「absent」と表現される。この部位の情報をデータベースに入力する際には、狭窄度フィールド215に300という数値を入力する。狭窄度の範囲は0〜100であるため、200、300という値を入力しておくことにより、通常の状態と「undetermined」、「absent」という状態とを容易に区別することが可能となる。
治療履歴テーブル220は、カテーテル治療の結果を格納するテーブルであり、治療番号フィールド221、患者IDフィールド222、施行日フィールド223、部位フィールド224、狭窄度フィールド225、の5個のフィールドより構成される。治療番号フィールド221には、治療履歴テーブル220内のレコードを一意に指定するための主キーとなる番号を格納する。カテーテル治療の結果は、治療を受けた患者の患者ID、治療の実施日、治療を行った部位、治療後の狭窄度、を1つのレコードとして、それぞれ患者IDフィールド222、施行日フィールド223、部位フィールド224、狭窄度フィールド225に格納する。複数部位に対し治療を行った場合には、同一患者ID、同一日付で、部位と狭窄度の異なる複数のレコードを登録する。なお、複数の治療方法がある場合には、どの方法を使用したかを記録するフィールドを設けても良い。
バイパス手術履歴テーブル230は、バイパス手術の結果を格納するテーブルであり、手術番号フィールド231、患者IDフィールド232、手術日フィールド233、部位フィールド234、の4個のフィールドより構成される。手術番号フィールド231には、バイパス手術履歴テーブル230内のレコードを一意に指定するための主キーとなる番号を格納する。バイパス手術の結果は、手術を受けた患者の患者ID、手術日、バイパス血管をつないだ部位、を1つのレコードとして、それぞれ患者IDフィールド232、手術日フィールド233、部位フィールド234、に格納する。複数部位にバイパス血管をつないだ場合には、同一患者ID、同一日付で、部位の異なる複数のレコードを登録する。
図2に示すテーブル構造のデータベースに格納されたデータを用い、図1に示す画面を表示するための処理の概要を図3に示す。まず、ステップS100で、図2に示すデータベースからデータを読み出し、図4に示す変数に格納する。その後、変数に格納された情報に基づき、ステップS300で画面に狭窄度、重症度を表示する。
ステップS100でデータベースの情報を読み込む変数には、図4に示す構造体300を、表示する日数分の配列とした変数を用いる。構造体300は日付を格納する変数310、各部位の診断・治療結果を格納する2次元配列320、バイパス部位の手術の有無、検査・治療結果を格納する2次元配列330、重症度を格納する1次元配列340、より構成される。2次元配列320の1レコードは、診断フィールド321と、診断フラグフィールド322と、治療フィールド323と、治療フラグフィールド324、から構成され、部位と同じ数のレコード数を有する。1レコードに1部位の検査・治療に関する情報を格納する。診断フィールド321には、診断の結果得られた狭窄度を格納し、治療フィールド323には、治療後の狭窄度を格納する。診断フラグフィールド322には、変数310に格納されている日に、検査が行われた部位については1を格納し、検査が行われなかった部位については0を格納する。治療フラグフィールドには、変数310に格納されている日に、治療が行われた部位については1を格納し、過去に治療が行われた部位については2を格納し、まだ治療を行ったことが無い部位については0を格納する。
2次元配列330は、バイパス部位の情報を格納する配列変数であり、1レコードは診断フィールド331、診断フラグフィールド332、治療フィールド333、治療フラグフィールド334、バイパスフィールド335、の5レコードから構成される。バイパス部位と同数のレコードを有し、各レコードは各バイパス部位の治療、診断に関する情報を格納する。診断フィールド331、診断フラグフィールド332、治療フィールド333、治療フラグフィールド334は、2次元配列320における診断フィールド321、診断フラグフィールド322、治療フィールド323、治療フラグフィールド324と同様の情報を格納する。バイパスフィールド335には、変数310に格納された日付に、バイパス手術が実施されたバイパス部位については1を格納し、まだバイパス手術が実施されていない場合には−1を格納し、それ以外のバイパス部位については0を格納する。配列340は、5個のレコードからなる1次元配列であり、各血管の重症度と、冠動脈全体の重症度を格納する。
図2に示すデータベースから図4に示す構造体300にデータを読み込む処理(ステップS100)の詳細を、図5を用いて説明する。まず、どの患者のデータ(狭窄度)を参照するか、ユーザーが指定する(ステップS105)。例えば、画面上に患者IDや患者氏名を入力あるいは選択するエリアを設け、ユーザーがマウスあるいはキーボードを用いて、患者ID、患者氏名を入力あるいは選択することにより、患者IDを一意に定める。図2のデータベース中の各テーブル(診断履歴テーブル210、治療履歴テーブル220、バイパス手術履歴テーブル230)から、各テーブルの患者IDフィールド(符号212、222、232で示すフィールド)内のデータが入力された患者IDに一致するレコードのみを抽出する(ステップS110)。
抽出されたバイパス手術履歴テーブル230のレコードを参照し、バイパス部位を読み出す(ステップS115)。更に、診断履歴テーブル210の抽出された全レコードの検査日フィールド213、治療履歴テーブル220の抽出された全レコードの施行日フィールド223、バイパス手術履歴テーブル230の抽出された全レコードの手術日フィールド233から、日付データを読み出し、格納されている日付の数をカウントする(ステップS120)。ただし、重複している日付は複数回カウントせず、1回のみカウントする。
次に、データを読み込むための配列aを初期化する(ステップS125)。配列aとして、図4に示す構造体300を配列構造とした変数を用いる。配列の初期化にはステップS115で読み出したバイパス部位、ステップS120でカウントした日付の数を用いる。まず、配列aの要素となる構造体300内の、バイパス部位の手術の有無、診断・治療結果を格納する2次元配列330の配列の数を、ステップS115で読み出したバイパス部位の数とする。この時、配列番号と、部位との対応付けを記憶しておく。更に、構造体300の配列aの数を、ステップS120で読み出した日付の数と同数に設定する。2次元配列320、330の各要素には、−1を設定しておく。また、各部位の診断・治療結果を格納する2次元配列の要素数は、部位の数と同数とするが、この際、どの要素がどの部位に対応するかを記憶しておく。
次に、データベース内の情報を読み出し、配列aへ格納する処理を行う。まずステップS120と同様に、各テーブル中の日付に関連するデータ(検査日フィールド213、施行日フィールド223、手術日フィールド233に格納されているデータ)を、重複を取り除いて抽出し、古い日付から順に配列aに格納する(ステップS130)。日付データは、配列aの中の、日付を格納する変数310に入力する。
日付の格納が終了した後、配列aの各要素に、それぞれの変数310に格納された日付に対応するデータをデータベースから読み出し、配列320、330、340へ格納する。まず、配列aの日付を格納する変数310に格納されている日付データを読み出す(ステップS135)。次に診断履歴テーブル210の検査日フィールド213が、読み出した日付と一致するレコードを抽出し、レコード内容を配列aに格納する(ステップS140)。日付が一致するレコードが存在しない場合には、ステップS140の処理はスキップする。
ステップS140の具体的な処理内容を、図6に示す。まず、検査日フィールド213の値が、ステップS135で読み出した日付に一致するレコードを抽出する(ステップS141)。診断履歴テーブル210の部位フィールド214、狭窄度フィールド215から、部位、狭窄度をそれぞれ読み出し(ステップS142)、読み出した部位がバイパス部位であるかどうかを調べる(ステップS143)。バイパス部位では無い場合には、配列a中の各部位の診断・治療結果を格納する2次元配列320の、読み出した部位に対応する要素の診断フィールド321に狭窄度を入力し(ステップS146)、更に診断フラグフィールド322に、診断を実施したことを示す数値である1を入力する(ステップS147)。読み出した部位がバイパス部位である場合には、バイパス部位の手術の有無、診断・治療結果を格納する2次元配列330の、読み出した部位に対応する要素の診断フィールド331に狭窄度を入力し(ステップS144)、更に診断フラグフィールド332に、診断を実施したことを示す数値である1を入力する(ステップS145)。診断履歴テーブル中に、同じ日付のレコードが複数存在する場合には、データを読みとっていないレコードの有無を調べ(ステップS148)、データを読み取っていないレコードが存在する場合には、次のレコードへ処理を進め(ステップS149)全てのレコードについてデータを読み出し、配列aに格納する。
図5に示すステップS140の処理の後、治療履歴テーブル220の施行日フィールド223が、ステップS135で読み出した日付と一致するレコードを抽出し、レコード内容を配列aに格納する(ステップS160)。日付が一致するレコードが存在しない場合には、ステップS160の処理はスキップする。
ステップS160の具体的な処理内容を、図7に示す。まず、施行日フィールド223の値が、ステップS135で読み出した日付に一致するレコードを抽出する(ステップS161)。治療履歴テーブル220の部位フィールド224、狭窄度フィールド225から部位、狭窄度をそれぞれ読み出し(ステップS162)、読み出した部位がバイパス部位であるかどうかを調べる(ステップS163)。バイパス部位では無い場合には、配列a中の各部位の診断・治療結果を格納する2次元配列320の、読み出した部位に対応する要素の治療フィールド323に狭窄度を入力し(ステップS166)、更に治療フラグフィールド324に、治療を実施したことを示す数値である1を入力する(ステップS167)。読み出した部位がバイパス部位である場合には、バイパス部位の手術の有無、診断・治療結果を格納する2次元配列330の、読み出した部位に対応する要素の治療フィールド333に狭窄度を入力し(ステップS164)、更に治療フラグフィールド334に、治療を実施したことを示す数値である1を入力する(ステップS165)。治療履歴テーブル中に、同じ日付のレコードが複数存在する場合には、データを読み取っていないレコードの有無を調べ(ステップS168)、データを読み取っていないレコードが存在する場合には、次のレコードへ処理を進め(ステップS169)全てのレコードについてデータを読み出し、配列aに格納する。
図5のステップS160の処理の後、バイパス手術履歴テーブル230の手術日フィールド233が、ステップS135で読み出した日付と一致するレコードを抽出し、レコード内容を配列aの現在の要素中の、バイパス部位の手術の有無、診断・治療結果を格納する2次元配列330に格納する(ステップS180)。日付が一致するレコードが存在しない場合には、ステップS180の処理はスキップする。具体的には、バイパス手術履歴テーブル230の部位フィールド234から部位を読み込み、配列a中の、バイパス部位の手術の有無、診断・治療結果を格納する2次元配列330の、読み込んだ部位に対応する要素のバイパスフィールドに、バイパス手術を実施したことを示す値である1を入力する。
以上の処理S140、S160、S180により、S130で読み出した日付の治療、診断、バイパス手術のデータが読み出され、配列aへ格納される。ただし、通常、一日分のデータには全ての部位に関する診断、治療結果が含まれるわけでは無い。本発明では、表示する際にデータが存在しない部分につていは、その最も近い過去におけるデータを引き継ぎ、表示する。そのため、ステップS200では、配列aの中でDB中に該当するデータの存在しない部位について、同部位の最も近い過去におけるデータを入力するための処理を行う。
ステップS200のより詳細な処理フローを、図8、図9を用いて説明する。ステップS125の初期化処理で説明したように、配列aの全ての変数、配列には−1が入力されている。そのため、ステップS140、S160、S180で該当するデータの存在しなかった部位に関しては、配列320、330の対応する要素が−1のままである。そこで、配列中の−1が入力されている要素を探索し、適切な値に置き換える。
まず、ステップS201において、配列aの現在の要素が、最初の要素(最も日付の古いデータ)であるか確認する。最初の要素である場合には、それより以前のデータが存在しないため、診断フィールドの値(検査結果)が未入力の部位に関しては便宜的に狭窄度0として取り扱う。そのため、配列320の中の、診断フィールド、診断フラグフィールド中に入力されている−1を全て0に置換する(ステップS202)。バイパス部位の情報を入力する配列330についても同様の処理を行う。この処理により、最も古い日付で、カテーテル検査結果(診断結果)の情報が無い部位については、検査が未実施であり、かつ診断の狭窄度0として取り扱われる。
配列aの最初の要素で無く、かつ診断結果が入力されていない場合には、一つ前の要素(最も日付の近い過去のデータ)の治療フィールドに入力されている狭窄度を順番に引き継いで行くことにより、データの無い部分を、最も近い過去に存在するデータで埋める。まず冠動脈の各部位の狭窄度を格納する配列320の最初の要素のデータを読み出し(ステップS203)、診断フィールドの値を調べる(ステップS204)。診断フィールドの値が−1では無い場合には、既に診断に関するデータは入力されているので、値を入力する処理は行わず、治療に関するデータを調べる処理(ステップS207)を行う。診断フィールドの値が−1であった場合には、配列aの一つ前の要素(日付が最も近い過去のデータ)の、同じ部位についての治療フィールドの値を読み出し、現在の配列aの、同部位の診断フィールドに代入する(ステップS205)。更に、今回は診断を行っておらず、過去のデータを引き継いだ値であることを示すため、診断フラグに0を入力する(ステップS206)。
診断についてのデータ入力処理の後、治療に関するデータに関しても同様の処理を行う。まず治療フィールドの値を調べ(ステップS207)、−1以外の値であった場合には、既にデータが入力されているため、データの入力処理は行わず、ステップS213へ処理を移す。治療フィールドの値が−1であった場合には、その部位について治療が実施されず、治療後の狭窄度に相当するデータが無いことを意味する。この場合、図1に示す表示方法を実現するため、以下の方針で治療フィールド、治療フラグフィールドへ値を入力する。
a)同じ日付に診断結果が存在する場合には、治療結果も同じ値とする。ただし治療を実施していないことを示すため、治療フラグは−1とする。
b)同じ日付に診断結果が存在しない場合には、最も近い過去の同部位の検査結果、または治療結果と同じ値とする。ただし治療を実施していなことを示すため、治療フラグは−1とする。
ステップS204〜S206の処理で、同じ日付に同部位の診断結果が存在しない場合には、最も近い過去の日付の、同部位の治療結果を入力している。そのため、同部位の診断フィールドの値を治療フィールドに入力する(ステップS208)ことにより、上記a)、b)のいずれの場合にも対応することができる。治療フラグについては、今回治療は実施していないので、過去に実施しているかどうかを調べ、実施している場合には治療フラグの値を2とし、実施していない場合には0とする。ステップS209〜S212で治療フラグの入力処理を行う。
まず、現データ中の治療フラグの値を調べる(ステップS209)。ここでもし0が入力されていた場合には、ステップS202で0を入力したことを意味するため、現在のデータは配列aの最初の要素であり、それよりも以前の日付のデータが存在しない。そのため、フラグは0のままとし、処理をステップS213へ移す。ステップS209で治療フラグが0では無かった場合には、配列aの1つ前の要素、すなわち最も近い過去のデータの、同部位の治療フラグを参照する(ステップS210)。参照したフラグ値が1か2であった場合には、過去に治療を実施していることを表すため、現在の配列a要素の同部位の治療フラグを2とする(ステップS211)。参照したフラグ値が0であった場合には、同部位に対してはまだ一度も治療を実施していないため、現在の配列aの要素の、同部位の治療フラグを0とする(ステップS212)。
ステップS212までの処理を終了したら、配列320でまだ調べていない要素があるかどうかを調べ(ステップS213)、ある場合には、次の要素へ処理を進め(ステップS214)、ステップS203以降の処理を繰り返す。ステップS213で、配列320の全ての要素について調べたと判断された場合には、処理を、図9に示すステップS220へ移し、バイパス部位に関する情報の入力されている配列330についての処理を開始する。
図9において、ステップS220で、まず配列330の最初の要素を読み出し、バイパスフィールドに入力されている値を調べる(ステップS221)。バイパスフィールドの値が−1では無い場合には、既にデータが入力されているためステップS222〜S232の処理はスキップし、処理をステップS234に移す。バイパスフィールドの値が−1の場合には、まず、現在の配列aの要素が、最初の要素であるかどうかを調べる(ステップS222)。最初の要素である場合には、それよりも過去の日付のデータが無いため、手術施行前でまだバイパス部位が存在しないと考えられる。そのため、バイパスフィールドの値も、手術施行前を表す−1のままとし、かつ治療、診断に関する情報を入力する処理をスキップし処理をS234に移す。
ステップS222で現在の配列aの要素が、最初の要素では無い場合、すなわち過去の日付のデータが存在すると判断された場合には、最も近い過去の日付のデータが格納されている、配列aの1つ前の要素の同部位のバイパスフィールドの値を参照する(ステップS223)。この値が−1であった場合には、まだバイパス手術が実施されておらず、バイパス血管が存在しないことを意味するため、バイパスフィールドの値を−1のままとし、かつ治療、診断に関する情報を入力する処理をスキップし処理をステップS234に移す。ステップS223で参照した過去の値が0か1であった場合には既にバイパス血管が存在することを意味するため、現在のバイパスフィールドには、バイパス血管が存在することを意味する0を入力する(ステップS224)。
バイパスフィールドに関する値の入力処理が終了した後、同部位について診断、治療の値が存在しない場合の処理を行う(ステップS225〜S233)。ステップS225〜S233の処理は、図8に示すステップS204〜S212の処理と同等の処理であるため、詳細な説明は省略する。ステップS234でまだ配列330に調べていない要素があるかどうかを調べ、ある場合には、次の要素へ処理を移し(ステップS235)、ステップS220以降の処理を繰り返す。
以上の処理により、配列320、330の全ての要素に値が入力される。各フィールドの値の意味をまとめると、以下のようになる。
1)診断フラグが0の場合は、診断は実施されず、診断フィールドの値は最も近い過去の診断または治療の値を引き継いだ値が入力されている
2)診断フラグが1場合は、診断が実施され、その結果の狭窄度が診断フィールドに入力されている。
3)治療フラグが0の場合には、同部位に対し治療が実施されておらず、治療フィールドには診断フィールドと同じ値が入力されている。
4)治療フラグが1の場合には、その日付に治療を実施し、治療後の狭窄度が治療フィールドに入力されている。
5)治療フラグが2の場合には、過去に同部位に対し治療が実施されており、治療フィールドには診断フィールドと同じ値が入力されている。
6)バイパスフィールドの値が−1である場合には、バイパス手術を実施前で、まだ該当するバイパス部位が存在しないことを意味する。
7)バイパスフィールドの値が0である場合には、過去にバイパス手術を実施し、既に該当するバイパス部位が存在することを意味する。
8)バイパスフィールドの値が1である場合には、その日付に該当部位のバイパス手術を実施したことを意味する。
以上、図8、図9を用いて図5の処理ステップS200の詳細な処理内容を説明した。ステップS200の処理が終了した後、各血管ごとの重症度、および冠動脈全体の重症度を計算し、配列aの要素中の配列340に格納する(ステップS250)。その後、処理を行っていない配列aの要素があるかどうかを調べ(ステップS255)、ある場合には、次の要素へ処理を移し(ステップS260)、ステップS135以降の処理を繰り返す。
次に、図3の処理ステップS300で説明した、配列aに格納された情報を用いて、図1に示す表示を行う処理方法について、図10を用いてより詳細に説明する。まず、図1に示す表示画面の初期化処理(ステップS310)を行う。初期化処理としては、狭窄度表示エリア100の表形式の表示領域を表示する。この際に、配列a中の配列330の要素数を調べ、バイパス部位の数をカウントし、バイパス血管表示行112の行数とする、更に血管表示列101、部位表示列102にそれぞれ血管の名称、部位の名称を表示し、バイパス部位の名称を表示する。また、重症度表示エリア120の表形式のエリアを準備し、列123に血管の名称、および“total”と表示する。
初期化処理の後、検査結果表示列103の最も左の行に表示位置を設定する(ステップS320)。次に配列aの最初の要素を読み出し(ステップS330)、変数310に格納されている日付を、日付表示セル104に表示する(ステップS340)。その後、配列aの要素中の、配列320の内容を用いて冠動脈部位の狭窄度を表示し(ステップS350)、配列330の内容を用いてバイパス部位の狭窄度、バイパス手術の有無を表示し(ステップS400)、配列340の内容を用いて重症度を表示する(ステップS450)。ステップS350、S400、S450のより詳細な処理内容については後述する。狭窄度、重症度の表示が終了したら、現在の処理対象が配列aの最後の要素であるかどうかを調べ(ステップS500)、最後の要素の場合には処理を終了する。まだ未処理の要素が存在する場合には、配列aの次の要素へ処理を移し(ステップS510)、画面上の表示位置を右隣の検査結果表示列103へ移動し(ステップS520)、ステップS330以降の処理を繰り返す。
次に、ステップS350のより詳細な処理内容を、図11を用いて説明する。まず、冠動脈の各部位の治療、診断結果が格納されている配列320の最初の要素からデータを読み出し(ステップS351)、診断フィールド321に格納されている値を調べる(ステップS352)。狭窄度は100以下の値であるが、該当部位の狭窄度が検査不可能である場合(「undetermined」)、該当部位が存在しない場合(「absent」)、にはそれぞれ200、300という値が格納される。そこで、診断フィールド321の値が200の時には画面上の該当するセルの背景色として「undetermined」表示用の色を選択し、セル上への表示文字列として「?」という文字を設定する(ステップS354)。診断フィールド321の値が300の場合には背景色として「absent」表示用の色を選択し、セル上への表示文字列として「×」という文字を設定する(ステップS355)。それぞれの表示用の背景色はあらかじめ定義しておき、例えば、図14のテーブル430に格納しておく。テーブル430は、部位の状態、それを表す表示色のR値、G値、B値を1つのレコードとして記憶しておく。例えば、ステップS354では、テーブル430の「状態」フィールドが「undetermined」であるレコードを検索し、該当レコードのR値、G値、B値を読み出し、背景色とする。ステップS354、S355の処理終了後は、この部位には治療結果が入力されていないため、治療の結果を表示する処理はスキップし、処理をステップS359に移す。
ステップS352で診断フィールド321の値が100以下であった場合には、該当するセルへの表示文字列として、診断フィールド321の値を文字列に変換し、設定する(ステップS353)。治療フラグの値を調べ(ステップS356)、0か1である場合には、セルの背景色として治療前を示す表示色を設定し(ステップS357)、2である場合には治療後を示す表示色を設定する(ステップS358)。治療フラグが1である場合には、同じ日に治療が行われたことを示しているが、診断フィールド321に入力する値は、治療前に実施される検査結果であるので、治療前の表示色を設定する。
治療前の表示色はあらかじめ定義しておき、例えば、図14に示すテーブル410に格納しておく。テーブル410は、狭窄度と、その狭窄度を表す表示色のR値、G値、B値を1つのレコードとして記憶しておく。ステップS357では、テーブル410の狭窄度フィールドの値が、診断フィールド321の値と一致するレコードを検索し、該当レコードのR値、G値、B値を読み出し、背景色とする。治療後の表示色は全く同様にテーブル420に記憶しておき、ステップS358では、テーブル420から表示色を選択する。
次に、診断フラグフィールド322の値を調べ(ステップS359)、0の場合にはこの日付には検査が実施されていないため、過去のデータを引き継いで表示することを示す「→」という文字をセルへの表示文字として設定する(ステップS360)。診断フラグフィールド322の値が1の場合には、検査が実施されているため、ステップS353で設定した表示文字列をそのまま用い、設定した背景色、文字列を該当するセルに表示する(ステップS361)。
次に、治療後の狭窄度を表示するため、治療フィールド323の値を調べる(ステップS362)。ここで、治療フィールド323の値が200であった場合には「undetermined」を表すため、図14のテーブル430から「undetermined」用の背景色を選択する(ステップS364)。治療フィールド323の値が300であった場合には「absent」を表すため、図14のテーブル430から「absent」用の背景色を選択する(ステップS365)。undetermined、absentとなっている場合には、いずれの場合にもその部位に対して、その日には治療は実施されていないので、undetermined、absentという情報は、同じ日の診断か、あるいはそれよりも以前の診断で明らかになった情報である。そのため、ステップS365、S364では更に、以前の情報を引き継いだことを意味する「→」を表示文字列として設定する。また、これらの部位に対しては治療の情報は無いため、治療に関する情報を表示する処理をスキップし、処理をステップS372に移す。
ステップS362において、治療フィールド323の値が100以下であった場合には、狭窄度を意味するため、その値を表示文字として設定する(ステップS363)。次に治療フラグフィールド324の値を調べる(ステップS366)。治療フラグの値が0の場合には、その部位に対して治療を行ったことが無いことを意味するため、過去の狭窄度を引き継いで表示することを意味する「→」を表示文字に設定し(ステップS367)、更に狭窄度に対応した背景色を、治療実施前背景色が格納されたテーブル410より選択する(ステップS370)。治療フラグが1の場合には、その日に治療が実施されたことを表すため、治療の実施を表す「PCI」という文字と、治療フィールドの値とを表示文字列に設定する(ステップS369)。治療フラグが2の場合には、過去に治療が実施されており、今回の日付には治療が実施されていないことを意味する。そこで過去の狭窄度を引き継いで表示することを意味する「→」を表示文字として設定する(ステップS368)。治療フラグが1、2の場合には、更にステップS368、S369の処理の後、狭窄度に対応した背景色を、治療実施後背景色が格納されたテーブル420より選択する(ステップS371)。なお、治療方法が別に記録されている場合、その名称を「PCI」の代わりに表示しても良い。
ステップS371までの処理で、適切な背景色が選択され、表示文字が設定されるので、ステップS372で設定文字列、背景色を画面上の対応するセルに表示する。その後、配列320の全ての要素について処理を行った否かを調べ(ステップS373)、未処理の要素がある場合には処理を次の要素に移し(ステップS374)、ステップS351以降の処理を繰り返す。以上が、図10におけるステップS350の詳細な処理内容である。
次に、図10におけるバイパス部位の狭窄度表示処理(ステップS400)の内容を、図12を用いて説明する。まず、配列330の最初の要素を読み出し(ステップS401)、バイパスフィールド335に格納されている値を調べる(ステップS402)。バイパスフィールド335の値が−1であった場合には、まだバイパス手術が実施されておらず、該当するバイパス部位が存在しないことを意味する。そこで、治療、診断の狭窄度を表示する処理をスキップし、処理をステップS425に移す。バイパスフィールドの値が1であった場合には、その日にバイパス手術が実施されたことを示す文字列「↑CABG」を治療結果セルに表示する(ステップS403)。この場合にも治療、診断の狭窄度は入力されていないため、治療、診断の狭窄度を表示する処理はスキップし、ステップS403の後、処理をステップS425へ移す。バイパスフィールドの値が0であった場合には、既にバイパス手術が実施されており、対象となるバイパス部位が存在するため、治療、診断の狭窄度が入力されている。そのためステップS404以降の処理を行う。
ステップS404〜S426の処理は、図11におけるステップS352〜S374の処理の相当するため、以後の処理の詳細は省略する。以上が、図10の処理ステップS400の処理内容である。
次に、図10における処理ステップS450の詳細について、図13を用いて説明する。ステップS450では4本の血管(RCA、LMT、LAD、LCX)と、冠動脈全体の重症度を表示する。重症度は、予め図5の処理ステップS250で計算し、配列aの要素中の配列340に格納されている。ここでは、例としてRCAの重症度の表示方法について述べるが、他の3本の血管の重症度、及び冠動脈全体の重症度も全く同じ方法で表示することができる。
まず、RCAに含まれる部位の中で、過去に治療を実施した部位があるかどうかを調べる(ステップS451)。具体的には、RCAには#1、#2、#3、#4、#4PD、#4AVの6部位が含まれる。そこで、配列320中の、この6部位に相当する要素の治療フラグフィールド324を調べ、治療フラグの値が1かまたは2である要素が1つでも存在した場合には、その血管に対し治療済の部位があると判断する。治療フラグの値が全て0の場合には、治療済の部位は無いと判断する。
治療済の部位が無い場合には、治療前の状態を示す背景色をテーブル430から選択する(ステップS452)。具体的には、テーブル430の「状態」フィールドが「重症度治療前」であるレコードを選択し、R値、G値、B値を読み取り、背景色として選択する。治療済の部位が存在する場合には、同様に治療後の状態を示す背景色を、図14に示すテーブル430から選択する(ステップS453)。その後、配列340からRCAの重症度を読み出し、選択した背景色と共に画面上の対応するセルに表示する(ステップS454)。
以上、本発明による健康状態の表示方法によれば、健康状態が良好な状態の検査値を表す色と、病的な状態の検査値を表す色を定義し、さらにその間の検査値に、健康状態が良好な状態を表す色から病的な状態を表す色へと徐々に変化する色を割り当てているため、色調を見ることにより、健康状態がどの程度良好か、どのように変化したか、等を容易に把握することが可能となる。また、複数の検査結果を並列して表示する場合にも、各検査値がどのような傾向を示しているか、等を視覚的なパターンとして容易に把握することができる。
また、以上では、本発明を冠動脈の狭窄度の表示に応用した実施例について説明したが、本発明は、この用途に限定されるものでは無い。例えば、冠動脈の各部位に代えて、中性脂肪、尿酸値、コレステロール等の検査の種別を縦方向に並べ、横方向に各検査値を表示する画面構成としても良い。この場合、各検査値の高低によりセルの背景色を変化させる。このような画面構成とすることにより、現在の各検査値の状態、これまでの変化、等の情報が視覚的に容易に把握可能となる。
また、同じ検査値であった場合でも、治療を行っているか、あるいは治療の種類によって異なる背景色を用いれば良い。このように、表示色を選択することにより、同じ検査値であっても、治療の効果によるものなのかどうかの把握が容易となる。また、冠動脈の重症度に代え、検査結果から総合的に判定される生活習慣病に罹患する危険度、等を定義し、表示しても良い。この場合には、多数の検査結果を集約した判断結果を容易に把握することができる。
100…狭窄度表示エリア、101…血管表示列、102…部位表示列、103…検査結果表示列、104…日付表示セル、105…治療結果表示列、106…治療結果の表示されているセル、107…検査結果の表示されているセル、108…検査結果の表示されていないセル、109…バイパス手術の実施を表示しているセル、110…血管が存在しないことを表示しているセル、111…冠動脈表示行、112…バイパス血管表示行113…日付を表示する行、120…重症度表示エリア、121…血管に対する重症度を表示する行、122…冠動脈全体の重症度を表示する行、123…血管の種類を表示する列、124…診断の結果から計算される重症度を表示する列、125…治療の結果から計算される重症度を表示する列、126…治療を実施していない状態での重症度を表示しているセル、127…治療を実施した状態での重症度を表示しているセル、130…凡例表示エリア、131…治療実施前の狭窄度を示す色調系列、132…治療実施後の狭窄度を示す色調系列、133…対象血管が存在しない場合の表示例、134…検査不可能であった場合の表示例、210…診断履歴テーブル、211…診断履歴テーブルの診断番号フィールド、212…診断履歴テーブルの患者IDフィールド、213…診断履歴テーブルの検査日フィールド、214…診断履歴テーブルの部位フィールド、215…診断履歴テーブルの狭窄度フィールド、220…治療履歴テーブル、221…治療履歴テーブルの治療番号フィールド、222…治療履歴テーブルの患者IDフィールド、223…治療履歴テーブルの施行日フィールド、224…治療履歴テーブルの部位フィール、225…治療履歴テーブルの狭窄度フィールド、230…バイパス手術履歴テーブル、231…バイパス手術履歴テーブルの手術番号フィールド、232…バイパス手術履歴テーブルの患者IDフィールド、233…バイパス手術履歴テーブルの手術日フィールド、234…バイパス手術履歴テーブルの部位フィールド、300…データベースの情報を格納する構造体、310…日付を格納する変数、320…各部位の診断・治療結果を格納する2次元配列、321…診断フィールド322…診断フラグフィールド、
323…治療フィールド、324…治療フラグフィールド、330…バイパス部位の手術の有無、診断・治療結果を格納する2次元配列、331…診断フィールド、332…診断フラグフィールド、333…治療フィールド334…治療フラグフィールド、335…バイパスフィールド、340…重症度を格納する1次元配列、410…治療実施前の背景色を定義するテーブル、420…治療実施後の背景色を定義するテーブル、430…部位の状態ごとの背景色を定義するテーブル。