(57)【特許請求の範囲】
【請求項１】
複数の時系列データを、ディスプレイの１ドットあたりの表示時間である時間粒度に応じて前記ディスプレイに表示するデータ表示プログラムであって、
特定の時間粒度に対応した時系列データをデータベーステーブルに保存する処理と、
ユーザの操作を契機として前記ディスプレイに時系列データを表示するときのタイムスケールが変更された場合、変更後のタイムスケールで時系列データを表示可能な複数の時間粒度のうち、前記ディスプレイに表示する時間幅を前記時系列データが存在する全時間幅で除算して得られる値に対して、当該時間粒度で表示可能な全データ数を乗算して得られる平均データ数が最大となる時間粒度を選定する処理と、
前記最大の平均データ数と予め定められた閾値とを比較する処理と、
前記比較の結果、前記最大の平均データ数が前記閾値よりも大きい場合は、前記選定した時間粒度を変更する処理と、
前記変更後の時間粒度に対応するデータベーステーブルからデータを読み出してグラフを描画する処理と、の一連の処理を、コンピュータに実行させることを特徴とするデータ表示プログラム。
【請求項２】
前記タイムスケールは、離散的に変更されることを特徴とする請求項１記載のデータ表示プログラム。
【請求項３】
前記変更後のタイムスケールで時系列データを表示可能な各時間粒度にシグモイド関数を掛け合わせて得られる関数を用いて、前記時間粒度毎に平均データ数を算出する処理を更に含むことを特徴とする請求項１または請求項２記載のデータ表示プログラム。
【請求項４】
複数の時系列データを、ディスプレイの１ドットあたりの表示時間である時間粒度に応じて前記ディスプレイに表示するデータ表示方法であって、
特定の時間粒度に対応した時系列データをデータベーステーブルに保存するステップと、
ユーザの操作を契機として前記ディスプレイに時系列データを表示するときのタイムスケールが変更された場合、変更後のタイムスケールで時系列データを表示可能な複数の時間粒度のうち、前記ディスプレイに表示する時間幅を前記時系列データが存在する全時間幅で除算して得られる値に対して、当該時間粒度で表示可能な全データ数を乗算して得られる平均データ数が最大となる時間粒度を選定するステップと、
前記最大の平均データ数と予め定められた閾値とを比較するステップと、
前記比較の結果、前記最大の平均データ数が前記閾値よりも大きい場合は、前記選定した時間粒度を変更するステップと、
前記変更後の時間粒度に対応するデータベーステーブルからデータを読み出してグラフを描画するステップと、を少なくとも含むことを特徴とするデータ表示方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の時系列データを、ディスプレイの１ドットあたりの表示時間である時間粒度に応じて前記ディスプレイに表示する技術に関する。
【背景技術】
【０００２】
従来から、例えば、電子カルテシステムなどの医療情報システムが知られている。例えば、特許文献１には、医療行為の相互間の関係を考慮し、効率よく医療情報を入力して電子カルテを構築する電子カルテシステムが開示されている。この電子カルテシステムは、医療行為およびその関連情報を含む医療行為情報と、この医療行為情報の適用時間情報とにより電子カルテ情報を構成する。また、その電子カルテ情報の医療行為情報を時間軸上に閲覧情報として表示する。また、編集中の電子カルテ情報における医療行為情報を時間軸上に表示させる。そして、ユーザの操作を受け付けて、電子カルテにおける医療行為情報を編集する。
【０００３】
図１３は、電子カルテシステムの画面表示例を示す図である。図１３に示すように、この電子カルテシステムは、多段階の時間軸（例えば、年単位・月単位・日単位）を有する。また、その下に診療行為（オブジェクト）が表示される。この電子カルテシステムでは、左に並ぶ項目が医療行為（病名・投薬・診断・検査等）であって、その右側に実際の行為が、一定の時間幅をもって記録される。
【０００４】
ユーザは、上部の時間軸を選択することで、任意の尺度での情報俯瞰が可能であり、任意の時間にジャンプすることができる。このように、従来の電子カルテシステムでは、上記のような多段階のタイムスケールを表示し、ユーザは、任意のタイムスケールで時系列に沿って入力されたデータを俯瞰することができる。そして、任意のタイムスケール上で各行為項目の詳細情報を表示し、閲覧することができる。
【０００５】
このような電子カルテシステムにより、例えば、患者に対する投薬や検査の実施行為に関する医療情報のグラフ化を様々な時間粒度（ディスプレイの１ドットあたりの表示時間（msec/dot）であり、データを閲覧する際の時間幅とグラフ画像のサイズによって決定される。これは、特定サイズのディスプレイに時系列データを表示する際に、表示幅を変更することを考えたとき、プログラム上で表現できる最も小さい時間幅から、表示幅を拡大した際の倍率と同義である。）で表示することが可能となる。また、同時に複数の行為項目を表示することによって、さまざまな項目間の関係を種々の時間粒度で閲覧することが可能となる。
【０００６】
ここで、表示する時間粒度を変化させる方法として、タッチパネル上のピンチイン・アウト操作のような連続的な変化方法と、ボタンを押下することで予め決定された時間粒度へ変化させるような離散的な変化方法が存在する。
【０００７】
離散的な変化方法は、例えば、閲覧中の時間粒度が“年単位”であったものを“秒単位”に変化させる場合など、時間粒度を大きく変えたい場合に用いられることが多い。その場合、連続的にボタンを押下する操作を行なう。また、それ以外にも、上記のシステムでは、１０年・年・月・・・秒、それぞれのＴｉｍｅＳｃａｌｅに相当する離散的操作が存在しており、代表的なデータ閲覧用時間粒度としての意味を持つため、当該時間粒度（拡大率）は閲覧に供されることが多い。
【０００８】
なお、この離散的操作で、時系列データの表示は特定の時間粒度（時間拡大率、拡大率）に変化する。本明細書では、タイムスケールが切り替わる(たとえば、月のスケールから年のスケールへ）際の表示されるスケールの時間単位をユニットと呼び、その画面上のサイズをユニットサイズと呼ぶ。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００８−１９２００２号公報
【特許文献２】特開２００９−１３４７１３号公報
【特許文献３】特開２００９−２８２５５７号公報
【非特許文献】
【００１０】
【非特許文献１】電子情報通信学会  Ｖｏｌ１００，ｐ５０−ｐ６０
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかし、従来のシステムが処理すべきデータの数は極めて多い。例えば、糖尿病患者であれば、毎日投薬や検査がなされ、これらは年のスケールでは３６５のデータ数を持つ。これに加え、これら投薬や検査の種類は数百に及ぶことが多い。そのため、これらを表すデータオブジェクト数は一般的には数千から数万へと膨れ上がる。サーバ・クライアントで構成されるシステムにおいて、これらのデータを時系列のグラフで表示するためにはデータ伝送および描画に多くの時間がかかり、ユーザレスポンスが落ちてしまう。これは特に、計算・描画・伝送能力の低いタブレットや、携帯型デバイスなどのシンクライアントデバイスで特に顕著である。
【００１２】
このような場合、比較的計算能力の高いサーバ側でグラフを描画し、描画済みのグラフをクライアントへ伝送することで、比較的高速にグラフを描画し、伝送することが可能になる。このような手法では、様々な時間粒度（倍率、拡大率）でグラフを表示する際のグラフの伝送方法として、主に２通りの方法が考えられる。１つはグラフを描画するクライアントが、表示する際の倍率を指定してサーバに通知し、その倍率に相当するグラフ画像をサーバで描画してクライアントへ伝送する方法である。もう１つは、予めグラフを伝送する際の倍率を決めておき、その倍率においてグラフ描画に必要なデータを準備しておき、クライアントへ伝送する方法である。後者の方法をとった場合、例えば、タイムスケールと表示倍率を示す図１４を参照すると、図１４に示す倍率において、グラフ描画に必要なデータを予め作成することにより、最小限のデータ数でグラフを描画し、伝送を行なうことが可能となる。すなわち、図１４に示すように、伝送番号１〜２０に相当する倍率において、グラフを描画する際に必要なデータのみを１つの独立したテーブルであるデータベーステーブルとして保持することで、不必要なデータのサーチが必要なくなり、グラフ作成時間を短縮することが可能となる。
【００１３】
しかしながら、図１４に示したシステムでは、１０年、・年・・・等のスケールを代表する、固定の拡大率を予め決めておいて、離散的な操作を行なう場合、一度に表示するべきデータ量が極めて多い場合が存在してしまうという問題がある。
【００１４】
本発明は、このような事情に鑑みてなされたものであり、時系列データを多段階の時間粒度で表示する際に、特定の時間粒度付近のデータ伝送量を一定値以下に減らすことができるデータ表示プログラムおよびデータ表示方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
（１）上記の目的を達成するために、本発明は、以下のような手段を講じた。すなわち、本発明のデータ表示プログラムは、複数の時系列データを、ディスプレイの１ドットあたりの表示時間である時間粒度に応じて前記ディスプレイに表示するデータ表示プログラムであって、特定の時間粒度に対応した時系列データをデータベーステーブルに保存する処理と、ユーザの操作を契機として前記ディスプレイに時系列データを表示するときのタイムスケールが変更された場合、変更後のタイムスケールで時系列データを表示可能な複数の時間粒度のうち、前記ディスプレイに表示する時間幅を前記時系列データが存在する全時間幅で除算して得られる値に対して、当該時間粒度で表示可能な全データ数を乗算して得られる平均データ数が最大となる時間粒度を選定する処理と、前記最大の平均データ数と予め定められた閾値とを比較する処理と、前記比較の結果、前記最大の平均データ数が前記閾値よりも大きい場合は、前記時間粒度を変更する処理と、前記変更後の時間粒度に対応するデータベーステーブルからデータを読み出してグラフを描画する処理と、の一連の処理を、コンピュータに実行させることを特徴とする。
【００１６】
このように、複数の時系列データを、ディスプレイの１ドットあたりの表示時間である時間粒度に応じて前記ディスプレイに表示するデータ表示プログラムであって、特定の時間粒度に対応した時系列データをデータベーステーブルに保存する処理と、ユーザの操作を契機として前記ディスプレイに時系列データを表示するときのタイムスケールが変更された場合、変更後のタイムスケールで時系列データを表示可能な複数の時間粒度のうち、前記ディスプレイに表示する時間幅を前記時系列データが存在する全時間幅で除算して得られる値に対して、当該時間粒度で表示可能な全データ数を乗算して得られる平均データ数が最大となる時間粒度を選定する処理と、前記最大の平均データ数と予め定められた閾値とを比較する処理と、前記比較の結果、前記最大の平均データ数が前記閾値よりも大きい場合は、前記選定した時間粒度を変更する処理と、前記変更後の時間粒度に対応するデータベーステーブルからデータを読み出してグラフを描画する処理と、の一連の処理を、コンピュータに実行させるので、データ量を一定値以下に抑えることが可能となる。
【００１７】
（２）また、本発明のデータ表示プログラムにおいて、前記タイムスケールは、離散的に変更されることを特徴とする。
【００１８】
このように、タイムスケールは、離散的に変更されるので、例えば、１０年、・年・・・等のスケールを代表する固定の拡大率を予め決めておいて、離散的な操作を行なう場合、一度に表示するべきデータ量が極めて多い場合が存在してしまうという問題を解消することが可能となる。
【００１９】
（３）また、本発明のデータ表示プログラムは、前記変更後のタイムスケールで時系列データを表示可能な各時間粒度にシグモイド関数を掛け合わせて得られる関数を用いて、前記時間粒度毎に平均データ数を算出する処理を更に含むことを特徴とする。
【００２０】
時間粒度を横軸にして、存在する全データの中で、その時間粒度で表示できるデータ数を縦軸にすると、シグモイド関数となる。図５は、１ドットを表現するための秒数と、視認できるデータ数との関係を示す図である。ここでは、一例として、患者に対してあるカプセル投与をした場合のデータをプロットしたものである。図５に示すように、このようなデータでは、年および１０年のスケールで視認性が大きく低下していることがわかる。これは投薬が、１月あるいは数日単位で行なわれることが多いため、このようなグラフになっていると考えられる。また、その他の例を考えると、健康診断などの検査は、１年に１回の頻度で行なわれることが多いため、１０年スケールよりも大きなスケールでは視認性低下が起こると予想される。また、心拍のようなデータであれば、数秒単位でのデータプロットになるため、時スケール等での視認性低下が激しいと予想される。さらにナノ秒単位での化学反応等をプロットすれば、秒スケールでの視認性低下が激しいと予想される。
【００２１】
本明細書では、上述したようなタイムスケールの単位ユニットサイズをデータにあわせて動的に変更する。これにより、タイムスケールの変更ボタンが押下されたときの、データ量を一定値以下に抑える。時間粒度を横軸にとり、（全データの中で）縦軸に閲覧できるデータ数を取ると、上記のように、シグモイド曲線になる。
【００２２】
ここで、特定の時間粒度でデータを閲覧することを考える。クライアントの画面のサイズは一般的に固定されているため、表示する時間粒度を変化させたとき、クライアントで表示するべき時系列データの区間は、時間粒度に比例して変化する。一般的には、表示するべき時系列データの区間が大きくなると、その区間の中に存在するデータ数も比例して大きくなる。つまり、クライアントが表示するべきデータの数は時間粒度に比例する。しかしながら、上記のように実際に表示が必要なデータは全ての時間粒度において一定ではなく、時間粒度に応じて変化する。（時間粒度を横軸にして、存在する全データの中で、その時間粒度で表示できるデータ数を縦軸にすると、シグモイド関数となる）本特許において主張するシステムでは、様々な時間粒度で表示するべき最低限のデータのみを予め様々な時間粒度で保持しておくものである。そのため、時間粒度を変化させたときに表示するべきデータ数の上限は上記と同じシグモイド関数となる。このデータ数の上限に対して、「クライアントが表示する時間幅をデータが存在する全時間幅で除算したもの」をかけ合わせることによって、クライアントが当該時間粒度で表示するデータ量の平均値になる。上記したように表示する時間幅は時間粒度に比例する。例えば時間粒度をxとして、データが存在する全時間幅が固定とすると、任意の定数gを用いて、「クライアントが表示する時間幅をデータが存在する全時間幅で除算したもの」はgxと表現できる。したがって、このgxと、上記シグモイド関数をかけ合わせることによって、時間粒度と、クライアントが表示するデータ数の平均値の関係を表すグラフとなる。
【００２３】
このように、前記変更後のタイムスケールで時系列データを表示可能な各時間粒度にシグモイド関数を掛け合わせて得られる関数を用いて、前記時間粒度毎に平均データ数を算出することによって、処理速度の向上を図ることが可能となる。
【００２４】
（４）また、本発明のデータ表示方法は、複数の時系列データを、ディスプレイの１ドットあたりの表示時間である時間粒度に応じて前記ディスプレイに表示するデータ表示方法であって、特定の時間粒度に対応した時系列データをデータベーステーブルに保存するステップと、ユーザの操作を契機として前記ディスプレイに時系列データを表示するときのタイムスケールが変更された場合、変更後のタイムスケールで時系列データを表示可能な複数の時間粒度のうち、前記ディスプレイに表示する時間幅を前記時系列データが存在する全時間幅で除算して得られる値に対して、当該時間粒度で表示可能な全データ数を乗算して得られる平均データ数が最大となる時間粒度を選定するステップと、前記最大の平均データ数と予め定められた閾値とを比較するステップと、前記比較の結果、前記最大の平均データ数が前記閾値よりも大きい場合は、前記時間粒度を変更するステップと、前記変更後の時間粒度に対応するデータベーステーブルからデータを読み出してグラフを描画するステップと、を少なくとも含むことを特徴とする。
【００２５】
このように、ユーザの操作を契機として前記ディスプレイに時系列データを表示するときのタイムスケールが変更された場合、変更後のタイムスケールで時系列データを表示可能な複数の時間粒度のうち、平均データ数が最大となる時間粒度を選定し、前記最大の平均データ数と予め定められた閾値とを比較し、前記比較の結果、前記最大の平均データ数が前記閾値よりも大きい場合は、前記時間粒度を変更し、前記変更後の時間粒度に対応するデータベーステーブルからデータを読み出してグラフを描画するので、データ量を一定値以下に抑えることが可能となる。
【発明の効果】
【００２６】
本発明によれば、ユーザの操作を契機として前記ディスプレイに時系列データを表示するときのタイムスケールが変更された場合、変更後のタイムスケールで時系列データを表示可能な複数の時間粒度のうち、平均データ数が最大となる時間粒度を選定し、前記最大の平均データ数と予め定められた閾値とを比較し、前記比較の結果、前記最大の平均データ数が前記閾値よりも大きい場合は、前記時間粒度を変更し、前記変更後の時間粒度に対応するデータベーステーブルからデータを読み出してグラフを描画するので、データ量を一定値以下に抑えることが可能となる。
【図面の簡単な説明】
【００２７】
【図１】ピンチイン・アウトによる拡大率の変更の様子を示す図である。
【図２】拡大率に応じてプロット点の間隔が変化する様子を示す図である。
【図３】画面における隣り合う２つのデータプロットの一例を示す図である。
【図４】データ発生間隔と発生間隔を有するデータ数との関係が正規分布を示す様子を示す図である。
【図５】１ドットを表現するための秒数と、視認できるデータ数との関係を示す図である。
【図６】本実施形態におけるシステムにおいて時間粒度とデータ量との関係を示す図である。
【図７】本実施形態におけるシステムにおいて時間粒度とデータ量との関係を示す図である。
【図８】本実施形態に係るデータ表示システムの概略構成を示すブロック図である。
【図９Ａ】本実施形態の動作を示すフローチャートである。
【図９Ｂ】本実施形態の動作を示すフローチャートである。
【図１０】タイムスケール、伝送番号、拡大率および縮小率を示す図である。
【図１１】拡大率（時間粒度）を示す図である。
【図１２】投薬データを示す図である。
【図１３】電子カルテシステムの画面表示例を示す図である。
【図１４】タイムスケールと表示倍率を示す図である。
【発明を実施するための形態】
【００２８】
以下、本発明の実施形態について説明する。まず、本明細書における「タイムスケールの拡大または縮小」について定義する。「タイムスケールの拡大」とは、小さいタイムスパンでデータを表示している状態から、大きいタイムスパンでデータを表示している状態へ遷移させることをいう。逆に、「タイムスケールの縮小」とは、大きいタイムスパンでデータを表示している状態から、小さいタイムスパンでデータを表示している状態へ遷移させることをいう。次に、「拡大率」について定義する。「拡大」が生ずる時、プログラム内部では、プロット点の書き換えを実行する。具体的には、隣り合うプロット点同士の間隔を縮める操作を実行する。このときの縮める割合を、「拡大率」と定義する。この「拡大率」は、実装に依存するが、例えば、タブレット端末の画面上で、ユーザがピンチイン・アウトを行なう場合のユーザの指の間隔の変化に基づいて、「拡大率」を変化させる。また、拡大率は、時間粒度と同義であり、時間粒度はディスプレイの１ドットあたりの表示時間（msec/dot）と定義される。
【００２９】
図１は、ピンチイン・アウトによる拡大率の変更の様子を示す図である。図１において、紙面に対して上側の図がピンチイン前の画面表示例を示しており、ユーザの２本の指が触れている座標間距離をｍで表している。一方、紙面に対して下側の図がピンチイン後の画面表示例を示しており、ユーザの２本の指が触れている座標間距離をｌで表している。このとき、この指間隔の距離差分（ｍ−ｌ）に応じて、プロット点の間隔を縮めれば、表示上グラフが「拡大」したことになる。
【００３０】
ここで、任意の係数γを使って、「拡大率」をγ（ｍ−ｌ）と表わす。このγは任意であるため、適当な値にセットすることができる。ユーザが「拡大」したいと考える場合は、大きな値に設定する一方、ゆっくりと「拡大」したいと考える場合は、小さな値に設定すれば良い。
【００３１】
図２は、拡大率に応じてプロット点の間隔が変化する様子を示す図である。図２に示すように、「拡大」したときに、プロット点の間隔が、１／γ（ｍ−ｌ）倍になるように計算すると、拡大率に応じて、プロット点間隔が変化し、画面が「拡大」したように見える。
【００３２】
一般的に、自然界に存在するデータを時系列的にプロットする場合、その発生間隔には偏りが存在することが多い。医療で用いられるデータを例に取ると、例えば、糖尿病慢性疾患の患者の投薬発生イベントに関するデータは、血糖改善剤等を毎食後服用し、血糖検査を毎食後行なうため、３〜４時間に１回程度の発生間隔で発生することが多く、数分単位・数年単位での発生間隔はとらないことが多い。
【００３３】
さらに、医療で用いられるデータ以外の例をあげると、農業等では四季の移り変わりによって、種まき・収穫等が決定するため、ほぼ１年に１回程度の発生間隔で、イベントが発生することになる。上述したように、小さいタイムスパンから大きいタイムスパンで表示するシステム、例えば、秒・分・時間・日・月・年・１０年の表現を持つシステムでは、このような様々なタイムスパンを持つデータをプロットして表現することができるため、時系列データの推移を俯瞰的に把握することに適している。
【００３４】
ところで、上記のようなデータを、システム上で時系列プロットをして表現する場合、上述したように、グラフの視認性低下が発生する。しかも視認性低下の発生する領域が、表示する時系列データの種類によって大きく偏る。すなわち、表示するデータの性質に応じて、データの発生間隔の平均周期が異なるため、平均周期によって決定されるタイムスパンに応じて、視認性低下の傾向が大きく変わる。このような偏りを、横軸にデータを表示するための時間幅、縦軸を表示可能なデータプロット数をとってグラフ化すると、シグモイド形状をとることが推測できる。以下、その理由について説明する。
【００３５】
図３は、画面における隣り合う２つのデータプロットの一例を示す図である。図３では、例えば、α番目と（α＋１）番目の隣り合う２つのデータプロットを考える。各データプロットの開始時刻を、それぞれｔｓα（秒）、ｔｓ（α＋１）（秒）と定義する。このとき、図３に示すように、これらのデータの間隔は、
｛ｔｓ（α＋１）−ｔｓα｝（秒）
と表わされる。ここで、システム上では、１秒＝ａ（ｄｏｔ）で表わされるとすると、この間隔は、
ａ｛ｔｓ（α＋１）−ｔｓα｝（ｄｏｔ）
と表わされる。
【００３６】
次に、ユーザが画面上でピンチイン操作を行なったときにデータプロット間隔について考える。ピンチイン前のデータプロット間隔ａ｛ｔｓ（α＋１）−ｔｓα｝に対して、拡大操作１／γ（ｍ−ｌ）倍をすると、画面上のデータプロット間隔が変化する。つまり、ピンチイン後のデータプロット間隔は、
ａ｛ｔｓ（α＋１）−ｔｓα｝・１／γ（ｍ−ｌ）
となる。
【００３７】
人間が視認できるサイズを、最も厳しい条件として、ディスプレイ上の１ドットとすると、データプロット間隔が、１ドットよりも小さければ、２つのデータを肉眼で区別することができず、両者が統合して見えることになる。そこで、２つのデータを単一のデータで代表することが可能となる。すなわち、次式を満たした時に、２つのデータが統合される。
ａ｛ｔｓ（α＋１）−ｔｓα｝・１／γ（ｍ−ｌ）＜１
なお、人間が視認できるサイズを、最も厳しい条件である１ドットとすることによって、最も良い視認性を確保することが可能となる。
【００３８】
ここで、本発明者らは、データプロットを効率的に扱うため、様々な拡大率（時間粒度）で表示されるグラフを生成する上で、必要最低限のデータを扱うようにシステムを組むと、システムが高速化されることに着目し、予めデータを特定の拡大率に応じて、マージした上でデータベース上に保持することによって、効率の良いグラフ作成が可能となることを見出し、本発明をするに至った。
【００３９】
拡大率γ（ｍ−ｌ）を、Ｅで表わすと、上記の式は、次のように簡略化される。
ａ｛ｔｓ（α＋１）−ｔｓα｝・１／Ｅ＜１
ここで、拡大率Ｅに応じて、視認できるプロット数がどのように変化するかについて考える。式変形により、
ａ｛ｔｓ（α＋１）−ｔｓα｝＜Ｅ
が得られる。この式は、２つのデータ間のプロット間隔が、一定の拡大率以下であれば、マージ（統合）しても良いことを意味している。その結果、マージするときの拡大率Ｅは、データ発生間隔｛ｔｓ（α＋１）−ｔｓα｝に比例する、ということが理解できる。
【００４０】
次に、このデータ発生間隔について考える。データ発生間隔は、医療データの場合、一定の周期に従うことが多い。例えば、糖尿病患者は、食後にインスリンの注射をしたり、投薬をしたり、血糖値検査を食後２時間後にしたりする。このことは、概ね３、４時間という時間がデータ発生間隔に相当することを意味する。ただし、このようなデータは自然界のデータのため、“ゆらぎ”が必ず発生する。例えば、上記の例では、夕食を食べる時間は、昨日６時であったが、今日は７時だったということが生ずる。このような“ゆらぎ”が存在することを考慮し、データ発生間隔は、平均周期を平均とする正規分布に従うとみなす。
【００４１】
図４は、データ発生間隔と発生間隔を有するデータ数との関係が正規分布を示す様子を示す図である。上述したように、拡大率Ｅはデータ発生間隔に比例するため、図４の横軸のデータ発生間隔をＥに置き換えたとしても、データ発生間隔と発生間隔を有するデータ数との関係は正規分布となる。ここで、上記の正規分布において、最も小さい拡大率から徐々に拡大率を大きくしていったときの表示可能なデータ数の分布について考える。これは、上記の正規分布を累積させた累積正規分布関数により求めることができる。この累積正規分布関数は、シグモイド関数になることが知られている。シグモイド関数は、横軸の変数がある特定の値を超えると、グラフの傾きが急増するという特徴を有している。これは、拡大率が大きくなると、ある瞬間にディスプレイ上に表示できないデータが発生し始めるということを意味している。
【００４２】
ここでクライアントの画面にデータを表示することを考える。クライアントの固定された画面上で、表示できる期間は時間粒度をxとすると、xに比例する。例えば、任意定数jを使うと、jxと表わされる。データの存在する全期間をhとして、（閲覧可能な全データ数）×jx/hが、平均的な1画面あたりのデータ数となる。このj/hをgとする。
【００４３】
ここで、シグモイド関数をロジスティック関数とすると、データ数は、次式で表わされる。
【００４４】
【数１】
0005903332.tif 000002
ここで、医療データが与えられた際にシグモイド関数でフィットしたパラメタを上記に代入し、xを変化させて値を代入していけば、どの時間粒度で平均的にどの程度のデータ量を表示するかを求めることができる。
【００４５】
上記の手法の他、以下の手法によってデータ表示量が最大になる点を求めても良い。この値が最大になる点を求めるために、微分して0とおく。Cを足したのは、最小値を0にするためである。
【００４６】
【数２】
0005903332.tif 000003
式変形をして、次式を得る。
【００４７】
【数３】
0005903332.tif 000004
両辺をCgで割ると、次式を得る。
【００４８】
【数４】
0005903332.tif 000005
【数５】
0005903332.tif 000006
両辺をexp(ax+b)で割ると、次式を得る。
【００４９】
【数６】
0005903332.tif 000007
この方程式に、データごとにフィットしたaとbを入れれば、1画面上に表示するデータ数が最も増えるxすなわち時間粒度を得ることができる。
【００５０】
本発明が対象とするシステムは２種類に分かれる。１つは、図６に示すように、時間粒度を指定して、データを表示するシステムであり、もう１つは、図７に示すように、予め時間粒度を決めておいて、データを伝送するシステムである。まず、図８を参照して、本実施形態に係るデータ表示システムの基本構成について説明する。図８において、データ取得部１は、時系列データを取得する。時系列データは、医師などによる入力のほか、外部記憶装置から読み出しても良い。フィッティング部３は、シグモイド関数などのロジスティック関数を用いてフィッティングを行なう。
【００５１】
パラメタ取得部５は、フィッティングの結果得られるパラメタを取得する。最大データ表示時間粒度計算部７は、表示するデータ量が最大となる時間粒度を計算する。離散移動時間粒度決定部９は、ユーザの操作を契機として、時間粒度を変更する際の離散的な移動量を決定する。この移動量は、例えば、「日から年」の場合は、３６５倍であり、「時間から秒」の場合は、３６００分の１であるように、時系列データの横軸を変更する場合の変更の程度を表す。平均表示データ数計算部１１は、各時間粒度における平均的な表示データ数を計算する。すなわち、各時間粒度において、ディスプレイに表示する時間幅を時系列データが存在する全時間幅で除算して得られる平均データ数を計算する。データ数判断部１３は、しきい値保持部１９が保持する閾値を取得し、平均表示データ数と閾値とを比較する。離散移動時間粒度調整部１５は、閾値を用いた判断の結果に応じて、離散的な移動量を調整する。離散時間粒度保持部１７は、離散的な各時間粒度を保持する。なお、2種類のシステムにおける基本的なステップは以下に示す通りである。
【００５２】
［１］時間粒度をクライアントが指定し、当該時間粒度を表現できるデータを持つテーブルの内、最大の時間粒度を持つテーブルからデータを取得し、描画済みデータもしくはデータそのものをクライアントへ送信するシステムの場合
（１−１）表示すべきデータのデータ発生間隔の分布を調べる。
（１−２）年・月・日等のスケール表示を切り替える倍率（時間粒度）を決定する。この際には切替が発生するそれぞれのスケールのユニットサイズを決定すれば良い。
（１−３）上記関数において、平均表示データ量が最大となる点を決定する。
（１−４）（１−２）で定めた時間粒度における平均表示データ量を上記関数に当てはめて求める。
（１−５）（１−４）の値がしきい値以上の場合、データの処理数が多すぎると判断し、（１−３）で求めた最大となる時間粒度を参照する。
（１−６）（１−４）の時間粒度が（１−３）の最大となる時間粒度より大きい場合、（１−４）の時間粒度を増加させる。これは、移動先のスケールにおけるユニットサイズを小さくすることで調節ができる。
（１−７）（１−４）の時間粒度が（１−３）の最大となる時間粒度より小さい場合、（１−４）の時間粒度を減少させる。これは、移動先のスケールにおけるユニットサイズを大きくすることで調節ができる。
【００５３】
図９Ａは、この動作を示すフローチャートである。すなわち、まず、データを取得し（ステップＳ１）、次に、データ発生間隔を調べる（ステップＳ２）。次に、時間粒度と発生間隔のグラフを、ロジスティック関数で近似する（ステップＳ３）。次に、ロジスティック関数に時間粒度を乗算した関数から、平均表示データ量が最大となる時間粒度を決定する（ステップＳ４）。次に、スケール表示を切り替えて、時間粒度を取得する（ステップＳ５）。次に、当該時間粒度における平均表示データ量と閾値とを比較する（ステップＳ６）。閾値を超えた場合、最大時間粒度と上記時間粒度とを比較して、データ数が減少するように、ユニットサイズを変化させる（ステップＳ７）。
【００５４】
［２］予め伝送を行なう時間粒度を決めておいて、データを伝送するシステムの場合
（２−１）表示すべきデータのデータ発生間隔の分布を調べる。
（２−２）年・月・日等のスケール表示を切り替える倍率（時間粒度）を決定する。この際には切替が発生するそれぞれのスケールのベースサイズを決定すれば良い。
（２−３）上記式から、表示データ数が最大となる倍率を計算する。
（２−４）上記倍率から、伝送する固定倍率の番号を決定する（図１０のテーブル）。
（２−５）上記固定倍率の番号に相当する倍率の平均データ数を上記式から決定する。
（２−６）上記平均データ数がしきい値以上であれば、（２−３）の値と（２−４）の値を比較し、（２−３）より（２−４）の方が大きい場合、ユニットサイズを小さくして、伝送番号を変える。
（２−７）上記平均データ数がしきい値以上であれば、（２−３）の値と（２−４）の値を比較し、（２−３）より（２−４）の方が小さい場合、ユニットサイズを大きくして、伝送番号を変える。
【００５５】
図９Ｂは、この動作を示すフローチャートである。すなわち、まず、データを取得し（ステップＴ１）、次に、データ発生間隔を調べる（ステップＴ２）。次に、伝送を行なう時間粒度を取得する（ステップＴ３）。次に、当該時間粒度の平均表示データ数を計算する（ステップＴ４）。次に、スケール表示を切り替えて、時間粒度を取得する（ステップＴ５）。次に、当該時間粒度における平均表示データ量と閾値とを比較する（ステップＴ６）。閾値を超えた場合、伝送番号を、データ数が減少するように、変化させる（ステップＴ７）。
【００５６】
また、この手法の場合、高々20の固定倍率しかないため、それぞれにおいて1画像（画面）に表示できる時間幅を計算し、データの存在する時間全体で除算したあと、全データ数を掛ければ、1画像に表示する平均的なデータ数が出てくるため、この値を用いても良い。すなわち上記（２−３）の箇所が、それぞれの固定倍率おいて1画像（画面）に表示できる時間幅を計算し、データの存在する時間全体で除算したあと、全データ数を掛けた値を計算し、最大となる倍率を計算する、としても良い。
【００５７】
ここで、一例として、図１０に示すシステムを用いる。この場合、図１０に示す拡大倍率ごとにグラフ画像の作り変えが発生する。ここで、1ドットあたりのミリ秒数（msec/dot）（時間粒度）として、この拡大率を表すと、図１１に示すようになる。ユニットサイズは各々以下のようになっている（単位はドット）。
秒のユニットサイズ＝２４
分のユニットサイズ＝２４
時のユニットサイズ＝２４
日のユニットサイズ＝２４
月のユニットサイズ＝６０
年のユニットサイズ＝１５０
１０年のユニットサイズ＝２００
【００５８】
データ間隔が、上記の値よりも大きくなった場合、データがマージされる。例えば、ｙｅａｒスケールの近辺に周期を持つ投薬データがあったとする。ここで、既存特許資料によれば、第ｎスケールまでの累積倍率はＣ・（ａ１／ａｎ）で表されるから、ｙｅａｒのユニットサイズをａｙとして、ここまでの累積倍率は６０・６０・２４・３０・１２・（２４／ａｙ）＝３１１０４０００＊（２４／ａｙ）＝７４６４９６０００／ａｙとなる。
【００５９】
ａｙの値を３０にした場合は、２４８８３２００、ａｙが６０の場合は１２４４１６００となるので、ｙｅａｒスケールのボタンが押された時に、それぞれの場合、レベルがそれぞれ１８と１７の画像を用いることになる。もし、レベル１８にデータの集中が発生する場合、ユニットサイズを６０とすれば良い。
【００６０】
ここで例として、図１２に示すようなデータを考える。これはネフローゼ症候群患者の“＊＊＊＊錠”の投薬データである。投薬間隔８６４０００００を持つデータ間隔が平均周期である。本周期は、８６４０００００／９７２０００００＜１となることから、レベル１６でマージされる。従って、このレベルより上位となるようにスケールを決定すれば良い。現在画面に表示しているグラフが１０あり、それぞれについてスケールに対するユニットスケールを計算し、多数決をとると最適なユニットサイズとなる。
【００６１】
また上記のような簡単な例では、マージされる・されないについて基準としたが、より低レベルのデータの表示をする場合、この基準だけでは、判断ができない。そこで、表示するデータ数に対して上限となるしきい値を決めておいて、当該しきい値以下になるように計算を行なっても良い。
【００６２】
この場合は、ある拡大率をサーバへ伝えて、グラフを描画してクライアントへ送信するようなシステムを想定すれば良い。上記のような２０段階の固定的な拡大率ではなく、例えば、レベル15の拡大率ではデータの大規模なマージは発生しないため詳細にデータを表現する必要がある。
【００６３】
ここで、ディスプレイサイズが６００ドットであった場合、レベル１５で１画面に表現できる時間幅は４８６０００００＊６００ミリ秒＝３３７．５日となる。ここで当該データ全体が存在する時間範囲が１０００日であった場合、全部で７３８データ存在する内、平均的に７３８＊３３７．５／１０００＝２４９データ分表示する必要があると考えられる。システムの処理能力から、しきい値を予め定めておき、拡大率、すなわち、上記で言う４８６０００００を調整すれば良い。
【００６４】
上記に加えて、グラフの表現形式に応じて離散的変化の倍率を変化させることも望ましい。一般的に時系列グラフの表現形式としては、折れ線グラフと棒グラフが存在している。棒グラフは周期などを見るのに適しており、折れ線グラフは値の変化の傾向等を見るのに適しているという特徴がある。また折れ線グラフは表示するべきデータがあまりに少ない場合、描画時間が大きくなるという特徴も持つ。つまり、グラフの種類に応じて1画面に表示するべきデータ数が異なるため、前記閾値も変化する。
【００６５】
以上説明したように、本実施形態によれば、ユーザの操作を契機として前記ディスプレイに時系列データを表示するときのタイムスケールが変更された場合、変更後のタイムスケールで時系列データを表示可能な複数の時間粒度のうち、平均データ数が最大となる時間粒度を選定し、前記最大の平均データ数と予め定められた閾値とを比較し、前記比較の結果、前記最大の平均データ数が前記閾値よりも大きい場合は、前記時間粒度を変更し、前記変更後の時間粒度に対応するデータベーステーブルからデータを読み出してグラフを描画するので、データ量を一定値以下に抑えることが可能となる。
【符号の説明】
【００６６】
１  データ取得部
３  フィッティング部
５  パラメタ取得部
７  最大データ表示時間粒度計算部
９  離散移動時間粒度決定部
１１  平均表示データ数計算部
１３  データ数判断部
１５  離散移動時間粒度調整部
１７  離散時間粒度保持部
１９  しきい値保持部
【図１】
0005903332.tif 000008
【図２】
0005903332.tif 000009
【図３】
0005903332.tif 000010
【図４】
0005903332.tif 000011
【図５】
0005903332.tif 000012
【図６】
0005903332.tif 000013
【図７】
0005903332.tif 000014
【図８】
0005903332.tif 000015
【図９Ａ】
0005903332.tif 000016
【図９Ｂ】
0005903332.tif 000017
【図１０】
0005903332.tif 000018
【図１１】
0005903332.tif 000019
【図１２】
0005903332.tif 000020
【図１３】
0005903332.tif 000021
【図１４】
0005903332.tif 000022