(57)【要約】【課題】自動分析装置による分析結果及びその根拠となる情報の表示に適したデータを生成することが可能な分析結果表示用データ生成装置、方法及びプログラムを提供する。【解決手段】分析結果表示用データ生成装置１０は、検体のＩＤ等を取得する分析結果取得部１１と、記憶部１２に記憶された検体のＩＤと、当該検体の分析結果と、当該検体の分析根拠情報と、を表示装置４０に表示させる分析結果表示データを生成する分析結果表示データ生成部１４と、分析結果表示データにおける分析根拠情報を選択するユーザ入力情報取得部１３と、を備え、分析結果表示データ生成部１４は、選択された分析根拠情報に基づいて記憶部１２を参照し、当該分析根拠情報と同一分析根拠情報に関連付けられた分析結果を表示装置４０に表示させる分析結果一覧表示データを生成する。【選択図】図１
2009281996.tif 000002
【特許請求の範囲】
【請求項１】
検体の分析結果及びそれに対応する分析根拠情報を表示装置に表示させる分析結果表示用データ生成装置であって、
検体のＩＤと、当該検体の分析結果と、当該検体の分析結果の根拠となる分析根拠情報と、を取得する分析結果取得部と、
検体ごとに、前記検体のＩＤと、当該検体の分析結果と、当該検体の分析の根拠となる分析根拠情報と、を関連付けて記憶する記憶部と、
前記記憶部に記憶された前記検体のＩＤと、当該検体の分析結果と、当該検体の分析根拠情報と、を前記表示装置に表示させる分析結果表示データを生成する分析結果表示データ生成部と、
前記分析結果表示データにおける分析根拠情報を選択する分析根拠情報選択部と、
を備え、
前記分析結果表示データ生成部は、選択された前記分析根拠情報に基づいて前記記憶部を参照し、当該分析根拠情報と同一分析根拠情報に関連付けられた分析結果を前記表示装置に表示させる分析結果一覧表示データを生成する
ことを特徴とする分析結果表示用データ生成装置。
【請求項２】
前記分析根拠情報は、分析に使用された試薬、前記試薬のキャリブレーション、分析に使用された機構、及び、分析に使用された機構の制御動作の少なくとも一つを備える
ことを特徴とする請求項１に記載の分析結果表示用データ生成装置。
【請求項３】
前記分析根拠情報は、分析に使用された機構の制御動作を備えており、
前記分析結果一覧表示データは、分析に使用された各機構を一つの軸、各機構が検体に対する動作を行った時間をもう一つの軸とし、前記分析結果に対する前記機構の動作を折れ線グラフで描画するデータである
ことを特徴とする請求項１に記載の分析結果表示用データ生成装置。
【請求項４】
検体の分析結果及びそれに対応する分析根拠情報を表示装置に表示させる分析結果表示用データ生成方法であって、
検体のＩＤと、当該検体の分析結果と、当該検体の分析結果の根拠となる分析根拠情報と、を取得する分析結果取得ステップと、
検体ごとに、前記検体のＩＤと、当該検体の分析結果と、当該検体の分析の根拠となる分析根拠情報と、を関連付けて記憶する記憶ステップと、
前記記憶部に記憶された前記検体のＩＤと、当該検体の分析結果と、当該検体の分析根拠情報と、を前記表示装置に表示させる分析結果表示データを生成する分析結果表示データ生成ステップと、
前記分析結果表示データにおける分析根拠情報を選択する分析根拠情報選択ステップと、
選択された前記分析根拠情報に基づいて前記記憶部を参照し、当該分析根拠情報と同一分析根拠情報に関連付けられた分析結果を前記表示装置に表示させる分析結果一覧表示データを生成する分析結果一覧表示データ生成ステップと、
を含むことを特徴とする分析結果表示用データ生成方法。
【請求項５】
検体の分析結果及びそれに対応する分析根拠情報を表示装置に表示させるためにコンピュータを、
検体のＩＤと、当該検体の分析結果と、当該検体の分析結果の根拠となる分析根拠情報と、を取得し、検体ごとに、前記検体のＩＤと、当該検体の分析結果と、当該検体の分析の根拠となる分析根拠情報と、を関連付けて記憶部に記憶させる分析結果取得部、
前記記憶部に記憶された前記検体のＩＤと、当該検体の分析結果と、当該検体の分析根拠情報と、を前記表示装置に表示させる分析結果表示データを生成する分析結果表示データ生成部、及び、
前記分析結果表示データにおける分析根拠情報を選択する分析根拠情報選択部、
として機能させ、
分析結果表示データ生成部に、選択された前記分析根拠情報に基づいて前記記憶部を参照させ、当該分析根拠情報と同一分析根拠情報に関連付けられた分析結果を前記表示装置に表示させる分析結果一覧表示データを生成させる
ことを特徴とする分析結果表示用データ生成プログラム。
【請求項６】
テストの対象となるテスト対象プログラムと、前記テスト対象プログラムをテストするテストプログラムとを取得するプログラム取得部を備えるとともに、前記テスト対象プログラムの機能に前記テストプログラムが正常に動作しているか否かをテストする機能を付加したテスト機能付きプログラムを生成するテスト機能付きプログラム生成部を備えるテスト機能付きプログラム生成装置であって、
前記テストプログラムには、前記テスト対象プログラムが正常に動作しているときのテスト用入力値と正解出力値とが記述されており、
前記テスト機能付きプログラム生成部は、
前記テストプログラムを解析し、前記テスト対象プログラムに対して、
プログラムへの入力値が前記テスト用入力値と一致するか否かを判定する入力値判定ステップと、
前記入力値が前記テスト用入力値と一致すると判定された場合において、プログラムの出力値と前記正解出力値とが一致しないときに、プログラムは異常であると判定するステップと、
前記判定結果を出力するステップと、
を付加することによって前記テスト機能付きプログラムを生成する
ことを特徴とするテスト機能付きプログラム生成装置。
【請求項７】
前記テスト対象プログラムは、前記入力値としてパラメータを受け取るとともに前記出力値として戻り値を返す関数であり、
前記テストプログラムは、前記テスト対象プログラムにテスト用入力値を渡すとともに前記テスト対象プログラムからの前記戻り値が前記正解出力値と等しいか否かを判定するプログラムである
ことを特徴とする請求項６に記載のテスト機能付きプログラム生成装置。
【請求項８】
前記テスト対象プログラムは、前記入力値を受け取って制御を返す第一の関数と、一定時間後に呼び出されることによって前記出力値を返す第二の関数と、を備えるプログラムであり、
前記テストプログラムは、前記第一の関数にテスト用入力値を渡し、一定時間後に前記第二の関数を呼び出すことによって、前記第二の関数によって返される前記出力値が前記正解出力値と等しいか否かを判定するプログラムである
ことを特徴とする請求項６に記載のテスト機能付きプログラム生成装置。
【請求項９】
前記テスト対象プログラムは、前記入力値としてメソッド呼び出しを受け取るとともに当該メソッド呼び出しに応じて変化させた内部状態を前記出力値として返すオブジェクトであり、
前記テストプログラムは、元プログラムにテスト用入力値を渡すとともに当該テスト用入力値に応じて変化させた前記内部状態が前記正解出力値と等しいか否かを判定するプログラムである
ことを特徴とする請求項６に記載のテスト機能付きプログラム生成装置。
【請求項１０】
テストの対象となるテスト対象プログラムと、前記テスト対象プログラムをテストするテストプログラムとを取得するプログラム取得ステップと、
前記テスト対象プログラムの機能に前記テストプログラムが正常に動作しているか否かをテストする機能を付加したテスト機能付きプログラムを生成するテスト機能付きプログラム生成ステップと、を含むテスト機能付きプログラムをコンピュータにより生成するテスト機能付きプログラム生成方法であって、
前記テストプログラムには、前記テスト対象プログラムが正常に動作しているときのテスト用入力値と正解出力値とが記述されており、
前記コンピュータは、前記テスト機能付きプログラム生成ステップにおいて、
前記テストプログラムを解析し、前記テスト対象プログラムに対して、
プログラムへの入力値が前記テスト用入力値と一致するか否かを判定する入力値判定ステップと、
前記入力値が前記テスト用入力値と一致すると判定された場合において、プログラムの出力値と前記正解出力値とが一致しないときに、プログラムは異常であると判定するステップと、
前記判定結果を出力するステップと、
を付加することによって前記テスト機能付きプログラムを生成する
ことを特徴とするテスト機能付きプログラム生成方法。
【請求項１１】
コンピュータを、
テストの対象となるテスト対象プログラムと、前記テスト対象プログラムをテストするテストプログラムとを取得するプログラム取得部、
前記テスト対象プログラムの機能に前記テストプログラムが正常に動作しているか否かをテストする機能を付加したテスト機能付きプログラムを生成するテスト機能付きプログラム生成部、
として機能させるテスト機能付きプログラム生成プログラムであって、
前記テストプログラムには、前記テスト対象プログラムが正常に動作しているときのテスト用入力値と正解出力値とが記述されており、
前記テスト機能付きプログラム生成部は、
前記テストプログラムを解析し、前記テスト対象プログラムに対して、
プログラムへの入力値が前記テスト用入力値と一致するか否かを判定する入力値判定ステップと、
前記入力値が前記テスト用入力値と一致すると判定された場合において、プログラムの出力値と前記正解出力値とが一致しないときに、プログラムは異常であると判定するステップと、
前記判定結果を出力するステップと、
を付加することによって前記テスト機能付きプログラムを生成する
ことを特徴とするテスト機能付きプログラム生成プログラム。
【請求項１２】
テスト対象プログラムと、前記テスト対象プログラムのテストプログラムのテスト用入力値とそれに対応する正解出力値と、を用いて制御動作が正常であるか否かを判定する制御動作判定装置であって、
入力値を取得する入力値取得部と、
前記入力値が前記テスト用入力値と一致するか否かを判定する入力値判定部と、
前記入力値を用いて前記テスト対象プログラムを実行することによって、出力値を生成する出力値生成部と、
前記入力値が前記テスト用入力値と一致すると判定された場合に、前記出力値と前記正解出力値とが一致する場合に正常であると判定し、前記出力値と前記正解出力値とが一致しない場合に異常であると判定する出力値判定部と、
判定結果を通知する通知部と、
を備えることを特徴とする制御動作判定装置。
【請求項１３】
テスト対象プログラムと、前記テスト対象プログラムのテストプログラムのテスト用入力値とそれに対応する正解出力値と、を用いて制御動作が正常であるか否かを判定する制御動作判定方法であって、
入力値を取得する入力値取得ステップと、
前記入力値が前記テスト用入力値と一致するか否かを判定する入力値判定ステップと、
前記入力値を用いて前記テスト対象プログラムを実行することによって、出力値を生成する出力値生成ステップと、
前記入力値が前記テスト用入力値と一致すると判定された場合に、前記出力値と前記正解出力値とが一致する場合に正常であると判定し、前記出力値と前記正解出力値とが一致しない場合に異常であると判定する出力値判定ステップと、
判定結果を通知する通知ステップと、
を含むことを特徴とする制御動作判定方法。
【請求項１４】
テスト対象プログラムと、前記テスト対象プログラムのテストプログラムのテスト用入力値とそれに対応する正解出力値と、を用いて制御動作が正常であるか否かを判定するためにコンピュータを、
入力値を取得する入力値取得部、
前記入力値が前記テスト用入力値と一致するか否かを判定する入力値判定部、
前記入力値を用いて前記テスト対象プログラムを実行することによって、出力値を生成する出力値生成部、
前記入力値が前記テスト用入力値と一致すると判定された場合に、前記出力値と前記正解出力値とが一致する場合に正常であると判定し、前記出力値と前記正解出力値とが一致しない場合に異常であると判定する出力値判定部、及び
判定結果を通知する通知部、
として機能させることを特徴とする制御動作判定プログラム。
【請求項１５】
請求項１２に記載の制御動作判定装置を備えた制御動作判定システムであって、
前記テスト対象プログラムによって制御される機構は、ディスクの外周に設けられた複数のＲＦＩＤタグの一つを読み取ることによって前記ディスクの回転位置を検出する自動分析装置であり、
前記入力値は、前記ＲＩＦＤタグを読み取った結果であり、
前記出力値は、前記ＲＦＩＤタグを読み取った結果に基づく前記ディスクの回転位置である
ことを特徴とする制御動作判定システム。
【請求項１６】
前記ディスクは、前記複数のＲＦＩＤタグに対応付けられた複数の試薬を保持する試薬ディスク又は前記複数のＲＦＩＤタグに対応付けられた複数の検体を保持する検体ディスクである
ことを特徴とする請求項１５に記載の制御動作判定システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検体の分析結果を表示装置に表示させる分析結果表示用データ生成装置、方法及びプログラムに関する。
また、本発明は、テスト対象プログラムとテストプログラムとに基づいてテスト機能付きプログラムを生成するテスト機能付きプログラム生成装置、方法及びプログラムに関する。
また、本発明は、機構の制御動作が正常であるか否かを判定する制御動作判定装置、方及びプログラム、並びに制御動作判定システムに関する。
【背景技術】
【０００２】
検体を自動的に分析する自動分析装置において、分析結果の信頼性を向上させるため、分析に使用された試薬、試薬のキャリブレーション、分析に使用された機構及びその制御動作等、分析結果の根拠となるデータを分析結果から追跡確認することが可能な技術が求められている。かかる技術は、トレーサビリティ機能と呼ばれている。
【０００３】
従来の自動分析装置は、分析結果を表示する親画面を開いた状態において、詳細表示等の機能を実行することにより、子画面を開く等の画面遷移を行い、分析結果の根拠となるデータも表示することができる。
【０００４】
トレーサビリティ機能に対する要求は高まってきており、以前は分析に使用された試薬のロット番号を確認することができればよかったが、最近ではいつ行われたキャリブレーションの検量線を用いて測定したか等の情報も確認することができるようになってきており、分析結果とその根拠との関連性が複雑になってきている。
【０００５】
逆に、分析結果の根拠となるデータから、同じ根拠に基づく分析結果を一覧として確認したいという要求もある。例えば、従来の自動分析装置は、分析した患者の検体とＱＣ（Quality Control）検体とを同じ画面に一覧表示する。これによって、同一の２つのＱＣ分析結果の間に対応する患者の検体が表示される。２つのＱＣ分析結果に大きな差異がなければ、自動分析装置はその間ほぼ一定の状態で分析を行ったと推測することができ、患者の検体の分析結果に対しての信頼性を得ることができる。
【０００６】
かかる自動分析装置の機構を制御するソフトウェアは、通常はマイコン上で動作しているが、一般的には、開発時にはパソコン等の別アーキテクチャのコンピュータ又はシミュレータ上で開発及びテストが行われ、その後に実機でデバッグが実行される。
【０００７】
一般的に、テストを行うテストプログラムは、テスト対象プログラムに対して予め決められた入力を行い、所望の出力が得られるかどうかを確認する。テスト対象プログラムに対する入力としては、テスト対象プログラムが関数のプログラムである場合には、パラメータ渡しによる値の入力、テスト対象プログラムがオブジェクトのプログラムである場合には、メソッドを一定の順序で呼び出すことによる入力、が挙げられる。テスト対象プログラムの出力としては、関数のプログラムからの戻り値、オブジェクトのプログラムからのオブジェクトの内部状態が挙げられる。テストプログラムはある程度定型的であるため、テストプログラムを開発するためのフレームワークも開発されており、テストプログラム作成の効率化が図られている。
【０００８】
【特許文献１】特開平１０−１０１３１号公報
【特許文献２】特開平１０−３００７５５号公報
【特許文献３】特開２００６−２６８８５８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
トレーサビリティ機能を実現するために保存される分析の根拠となるさまざまなデータと分析結果との関係は、単純なツリー構造ではなく、一般的にはグラフ構造となる。例えば、ある生化学自動分析装置が分析結果を生成する際に用いられる根拠としては、試薬の検量線を測定するキャリブレーション、検体と試薬とを反応させる反応セル、分析に用いられた機構の制御動作等といったデータがあり、これらが分析対象の検体と関連付けられている。これら根拠となるデータは、単一の測定結果の根拠だけではなく、一般的に複数の測定結果の根拠となる。そのため、これら根拠となるデータの関連は、グラフ構造となる。
【００１０】
これに対し、自動分析装置による分析結果及びその根拠となる情報の表示には、パソコン用のウィンドウシステムに類した画面体系が用いられており、分析結果及びその根拠となる情報は、階層的な親子関係を有する複数のウィンドウを用いて表示される。
【００１１】
しかし、階層的な画面体系は、ツリー構造を有する情報の表示には適しているが、自動分析装置による分析結果及びその根拠となる情報のように複雑な関係を有する情報の表示には適していない。
【００１２】
階層的な画面体系においては、分析結果を表示する親画面においてＧＵＩを用いて詳細表示等の機能を実行することにより、子画面を開いて分析結果の根拠となる情報を表示するといった機能を実現することは可能であるが、同一根拠に基づく他の分析結果を表示することは困難である。このため、さまざまなデータを保存してトレーサビリティ機能を実現したとしても、利用者が画面を見て同一根拠に基づく他の分析結果を追跡確認することは困難である。
【００１３】
また、自動分析装置の機構を制御するソフトウェアは、パソコン等の別アーキテクチャのコンピュータ又はシミュレータ上で開発及びテストが行われるが、実際に実機で動作する場合に、実機とパソコン又はシミュレータとの微妙な差異が原因で、パソコン又はシミュレータ上で検証済みの箇所でも問題が発生するおそれがある。
【００１４】
従来、自動分析装置の機構制御ソフトウェアとテストプログラムとを同時に動作させることはできないため、機構制御ソフトウェアの動作時に問題が発生しているかを検証する自己診断機能を実機に実装する必要がある。しかし、このような機能を別途開発すると、不具合の発生及び開発コストの増大につながってしまう。
【００１５】
本発明は、前記した問題を解決すべく創案されたものであり、自動分析装置による分析結果及びその根拠となる情報の表示に適したデータを生成することが可能な分析結果表示用データ生成装置、方法及びプログラムを提供することを課題とする。
また、本発明は、実機において問題が発生しているかを検証することができるテスト機能付きプログラムを生成することが可能なテスト機能付きプログラム生成装置、方法及びプログラムを提供することを課題とする。
また、本発明は、機構の制御動作が正常であるか否かを判定することが可能な制御動作装置、方法及びプログラム、並びに、制御動作判定システムを提供することを課題とする。
【課題を解決するための手段】
【００１６】
前記課題を解決するため、本発明は、検体の分析結果及びそれに対応する分析根拠情報を表示装置に表示させる分析結果表示用データ生成装置であって、検体のＩＤと、当該検体の分析結果と、当該検体の分析結果の根拠となる分析根拠情報と、を取得する分析結果取得部と、検体ごとに、前記検体のＩＤと、当該検体の分析結果と、当該検体の分析の根拠となる分析根拠情報と、を関連付けて記憶する記憶部と、前記記憶部に記憶された前記検体のＩＤと、当該検体の分析結果と、当該検体の分析根拠情報と、を前記表示装置に表示させる分析結果表示データを生成する分析結果表示データ生成部と、前記分析結果表示データにおける分析根拠情報を選択する分析根拠情報選択部と、を備え、前記分析結果表示データ生成部は、選択された前記分析根拠情報に基づいて前記記憶部を参照し、当該分析根拠情報と同一分析根拠情報に関連付けられた分析結果を前記表示装置に表示させる分析結果一覧表示データを生成することを特徴とする。
【００１７】
また、前記課題を解決するため、本発明は、テストの対象となるテスト対象プログラムと、前記テスト対象プログラムをテストするテストプログラムとを取得するプログラム取得部を備えるとともに、前記テスト対象プログラムの機能に前記テストプログラムが正常に動作しているか否かをテストする機能を付加したテスト機能付きプログラムを生成するテスト機能付きプログラム生成部を備えるテスト機能付きプログラム生成装置であって、前記テストプログラムには、前記テスト対象プログラムが正常に動作しているときのテスト用入力値と正解出力値とが記述されており、前記テスト機能付きプログラム生成部は、前記テストプログラムを解析し、前記テスト対象プログラムに対して、プログラムへの入力値が前記テスト用入力値と一致するか否かを判定する入力値判定ステップと、前記入力値が前記テスト用入力値と一致すると判定された場合において、プログラムの出力値と前記正解出力値とが一致しないときに、プログラムは異常であると判定するステップと、前記判定結果を出力するステップと、を付加することによって前記テスト機能付きプログラムを生成することを特徴とする。
【００１８】
また、前記課題を解決するため、本発明は、テスト対象プログラムと、前記テスト対象プログラムのテストプログラムのテスト用入力値とそれに対応する正解出力値と、を用いて制御動作が正常であるか否かを判定する制御動作判定装置であって、入力値を取得する入力値取得部と、前記入力値が前記テスト用入力値と一致するか否かを判定する入力値判定部と、前記入力値を用いて前記テスト対象プログラムを実行することによって、出力値を生成する出力値生成部と、前記入力値が前記テスト用入力値と一致すると判定された場合に、前記出力値と前記正解出力値とが一致する場合に正常であると判定し、前記出力値と前記正解出力値とが一致しない場合に異常であると判定する出力値判定部と、判定結果を通知する通知部と、を備えることを特徴とする。
【発明の効果】
【００１９】
本発明によれば、自動分析装置による分析結果及びその根拠となる情報の表示に適したデータを生成することができる。
また、本発明によれば、実機において問題が発生しているかを検証することが可能なテスト機能付きプログラムを生成することができる。
また、本発明によれば、機構の制御動作が正常であるか否かを判定することができる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明の実施形態について、適宜図面を参照しながら説明する。同様の部分には同一符号を付し、重複する説明を省略する。
【００２１】
＜分析結果表示用データ生成装置＞
まず、本発明の実施形態に係る分析結果表示用データ生成装置について説明する。図１は、本発明の実施形態に係る分析結果表示用データ生成装置を示すブロック図である。
【００２２】
本発明の実施形態に係る分析結果表示用データ生成装置１０は、例えば、ＣＰＵ、ＲＡＭ、ＲＯＭ及び入出力回路を備えており、図１に示すように、ユーザによる入力装置２０の操作に基づいて、自動分析装置３０から入力された検体の分析結果及び当該検体の分析結果の根拠となる分析根拠情報を表示装置４０に表示させる装置である。入力装置２０としては、キーボード、マウス等が挙げられ、ＧＵＩを用いた入力も可能である。表示装置３０としては、液晶ディスプレイ、プリンタ等が挙げられる。分析結果表示用データ生成装置１０は、機能部として、分析結果取得部１１と、記憶部１２と、ユーザ入力情報取得部１３と、分析結果表示データ生成部１４と、を備える。
【００２３】
分析結果取得部１１は、自動分析装置３０から検体のＩＤと、当該検体の分析結果と、当該検体の分析結果の根拠となる分析根拠情報と、を取得する。取得されたＩＤ、分析結果及び分析根拠情報は、記憶部１２に出力される。
【００２４】
記憶部１２は、分析結果取得部から出力された検体のＩＤ、当該検体の分析結果、及び、当該検体の分析結果の根拠となる分析根拠情報を関連付けて記憶する。分析根拠情報としては、分析に使用された試薬のＩＤ、キャリブレーションのＩＤ、分析に使用された機構のＩＤ、及び、分析に使用された機構の制御動作が挙げられる。
【００２５】
ユーザ入力情報取得部１３は、ユーザによる入力装置２０の操作に基づくユーザ入力情報を取得する。このユーザ入力情報取得部１３が、「分析根拠情報選択部」の一例である。取得されたユーザ入力情報は、分析結果表示データ生成部１４に出力される。
【００２６】
分析結果表示データ生成部１４は、ユーザ入力情報を用いて記憶部１２を参照し、ユーザが見たい検体の分析結果を表示装置４０に表示させる分析結果表示データを生成する。
生成された分析結果表示データは、表示装置４０に出力される。
【００２７】
また、分析結果表示データ生成部１４は、ユーザ入力情報を用いて記憶部１２を参照し、ユーザが見たい同一の分析根拠情報に関連付けられた分析結果を表示装置４０に表示させる分析結果一覧表示データを生成する。
生成された分析結果一覧表示データは、表示装置４０に出力される。
【００２８】
続いて、本発明の実施形態に係る分析結果表示データ生成部１４による表示装置の画面の遷移例について説明する。図２は、本発明の実施形態に係る画面遷移例を模式的に示す図である。図３は、図２の検体分析結果表示画面を模式的に示す図である。図４は、図２の分析結果表示画面を模式的に示す図である。図５は、図２の同一制御動作表示画面を模式的に示す図である。図６は、図２の同一試薬表示画面を模式的に示す図である。図７は、図２の同一キャリブレーション表示画面を模式的に示す図である。
【００２９】
図２に示すように、分析結果表示データ生成部１４によって、検体分析結果表示画面４１、分析結果表示画面４２、同一制御動作表示画面４３、同一試薬表示画面４４、同一キャリブレーション表示画面４５及び同一機構表示画面４６が表示装置４０に表示される。これらの画面４１〜４６は、ＧＵＩを用いたユーザの操作によって遷移可能である。
【００３０】
図３に示すように、検体分析結果表示画面４１は、検体ＩＤ４１ａと、かかる検体ＩＤ４１ａに対応する分析結果一覧４１ｂと、を表示する画面である。これらの表示領域は、ＧＵＩを用いて操作可能となっている。
【００３１】
ここで、ユーザがマウスを用いて、分析結果一覧４１ｂ内の一の分析結果（例えば、ＧＴＰ  １００）を選択すると、かかる選択結果によって、分析結果表示用データ生成部１４が、選択された分析結果に対応する分析結果表示画面４２を表示させる分析結果表示用データを生成する。図４に示すように、分析結果表示画面４２は、一の分析結果に対応する情報を表示する画面であり、検体ＩＤ４２ａと、試薬ＩＤ４２ｂと、キャリブレーションＩＤ４２ｃと、使用機構ＩＤ４２ｄと、機構の制御動作４２ｅと、分析結果４２ｆと、を表示する画面である。これらの表示領域は、ＧＵＩを用いて操作可能となっている。なお、これらの表示は、ユーザによる選択操作を可能とするためのものであるので、キャリブレーション、機構、制御動作にＩＤが付与されていない場合には、それらを示す文字列による表示も可能である。また、画面上にボタンを配置し、その上にＩＤ又は文字列を表示してもよい。
【００３２】
ここで、ユーザがマウスを用いて制御動作４２ｅを選択すると、かかる選択結果によって、分析結果表示用データ生成部１４が、選択された制御動作４２ｅに対応する同一制御動作表示画面４３を表示させる分析結果一覧表示データを生成する。図５に示すように、同一制御動作表示画面４３は、一の制御動作に対応する複数の検体に関する情報を表示する画面であり、使用機構４３ａと、分析に使用された各機構を縦軸、各機構が検体に対して分析のための動作を行った時間を横軸とし、分析結果に対する機構の動作を示す折れ線グラフ４３ｂと、を表示する画面である。ここでは、後工程で用いられる機構ほど下に表示されている。一の検体の分析工程で行われた機構の制御動作を直線で結ぶと、左上から右下への折れ線グラフが形成される。分析工程の途中で検体を子分注した場合には、折れ線グラフは分岐する。かかるグラフは、上下左右が反転していてもよく、縦軸、横軸を入れ替えてもよい。また、ユーザがマウスを用いて、折れ線グラフ４３ｂの一つを選択すると、かかる選択結果によって、分析結果表示用データ生成部１４が、分析結果表示画面４２を表示させる分析結果表示データを生成する。
【００３３】
また、図４の分析結果表示画面４２において、ユーザがマウスを用いて試薬ＩＤ４２ｂを選択すると、かかる選択結果によって、分析結果表示用データ生成部１４が、選択された試薬ＩＤ４２ｂに対応する複数の検体に関する情報を表示する画面である同一試薬表示画面４４（図６参照）を表示させる分析結果一覧表示データを生成する。
また、図４の分析結果表示画面４２が表示された状態で、ユーザがマウスを用いてキャリブレーションＩＤ４２ｃを選択すると、かかる選択結果によって、分析結果表示用データ生成部１４が、選択されたキャリブレーションＩＤ４２ｃに対応する複数の検体に関する情報を表示する画面である同一キャリブレーション表示画面４５（図７参照）を表示させる分析結果一覧表示データを生成する。
さらに、図４の分析結果表示画面４２において、ユーザがマウスを用いて使用機構ＩＤ４２ｄを選択すると、かかる選択結果によって、分析結果表示用データ生成部１４が、選択された使用機構ＩＤ４２ｄに対応する複数の検体に関する情報を表示する画面である同一機構表示画面４６を表示させる分析結果一覧表示データを生成する。
【００３４】
本発明の実施形態に係る分析結果表示用データ生成装置１０は、同一検体の異なる分析結果を速やかに表示することができる。また、試薬、キャリブレーション、機構、機構の制御動作についても同様である。また、分析結果表示用データ生成装置１０に他のコンピュータへの通信装置を組み合わせて分析結果表示用データ生成システムとすることも可能である。
【００３５】
＜テスト機能付きプログラム生成装置＞
続いて、本発明の実施形態に係るテスト機能付きプログラム生成装置について説明する。図８は、本発明の実施形態に係るテスト機能付きプログラム生成装置を示すブロック図である。図８に示すように、本発明の実施形態に係るテスト機能付きプログラム生成装置１１０は、例えば、ＣＰＵ、ＲＡＭ、ＲＯＭ及び入出力回路から構成されており、機能部として、プログラム取得部１１１と、テスト機能付きプログラム生成部１１２と、を備える。
【００３６】
プログラム取得部１１１は、テスト対象プログラムと、テストプログラムのテスト用入力値及びそれに対応する正解出力値を含むテストプログラムと、を取得する。取得されたテスト対象プログラム及びテストプログラムは、テスト機能付きプログラム生成部１１２に出力される。
【００３７】
テスト機能付きプログラム生成部１１２は、取得されたテスト対象プログラム及びテストプログラムに基づいて、テスト機能付きプログラムを生成する。生成されるテスト機能付きプログラムは、入力値がテスト用入力値と一致するか否かを判定する入力値判定ステップと、入力値がテスト用入力値と一致すると判定された場合に、テスト対象プログラムの出力値と正解出力値とが一致する場合に正常であると判定し、テスト対象プログラムの出力値と正解出力値とが一致しない場合に異常であると判定する出力値判定ステップと、判定結果を通知する通知ステップと、を含む。
【００３８】
続いて、図９及び図１０を参照して、本発明の実施形態に係るテスト機能付きプログラム生成方法について説明する。なお、本実施形態では、テスト対象プログラム及びテストプログラムはＣ言語で記述されているものとする。図９は、本発明の実施形態に係るテスト機能付きプログラム生成方法を示すフローチャートである。図１０は、本発明の実施形態に係るテスト対象プログラム、テストプログラム及びテスト機能付きプログラムの一例を示す図である。
【００３９】
図１０の上段は、テスト対象プログラム１２１のソースコードを示すものであり（以下「ソースコード」との表記は省略）、このテスト対象プログラム１２１は、別のプログラムから呼び出されることで実行される。ちなみに、このテスト対象プログラム１２１の１行目は、入力される変数ｘと関数の出力がともに整数型であることを示して（宣言して）いる。３行目は、関数がｙ＝ｘ＋１であることを示している。４行目は、計算結果のｙが呼び出し元のプログラムにリターンされることを示している。
【００４０】
また、図１０の中段は、テストプログラム１２２を示すものである。ちなみに、このテストプログラム１２２の１行目は入力も出力もないことを示して（宣言して）いる。３行目は、変数であるｘとｙがともに整数型であることを示している。４行目は、ｘに１を代入することを示している。５行目は、引数をｘとする関数（ここではテスト対象プログラム１２１）を呼び出して計算結果のｙを得ることを示している。６行目は、計算結果のｙが２であるかを確認することを示している。
【００４１】
また、図１０の下段は、テスト機能付きプログラム１２３を示すものであり、このテスト機能付きプログラム１２３は、テスト対象プログラム１２１の２行目の後に新しい３行目（ｉｆ文）を追加するともに、テスト対象プログラム１２１の３行目の後に新しい５行目（ｉｆ文）を追加したものである。ちなみに、このテスト機能付きプログラム１２３の３行目のｉｆ文は、変数であるｘが１であれば__test_noに１を代入することを示している。また、５行目のｉｆ文は、__test_noが１であれば出力値であるｙが２であるかを確認することを示している。
【００４２】
この処理手順は、図９に示すように、入力された複数のテストプログラムに関する繰り返し（ステップＳ１，Ｓ２）により実現される。まず、この中で一つのテストプログラムに対する処理手順を表すステップ群Ｓ１０について説明する。
【００４３】
図９に示すように、まず、テスト機能付きプログラム生成部１１２が、入力されたテストプログラム１２２から、テスト対象プログラム１２１が呼び出されている行を抽出（検索）する（ステップＳ１１）。テスト対象プログラム１２１の先頭の行には、テスト対象プログラム１２１である関数が定義されているため、その関数名をテストプログラム１２２から抽出すればよい。図１０の例に限らず、テストプログラム１２２はテスト対象プログラム１２１を何らかの形で呼び出しているため、こうした行はかならず見つかる。本実施形態では、ステップＳ１１において、テスト機能付きプログラム生成部１１２は、テストプログラム１２２の５行目を抽出する。テストプログラム１２２の５行目は、テスト対象プログラム１２１を呼び出す処理である。
【００４４】
次に、テスト機能付きプログラム生成部１１２が、抽出された行（テストプログラム１２２の５行目）において、テストプログラム１２２の引数としてテスト対象プログラム１２１に渡されている変数がとる値、すなわちテスト対象プログラム１２１への入力式を検索する（ステップＳ１２）。本実施形態では、テスト対象プログラム１２１が呼び出されている行から前方に、テスト対象プログラム１２１の引数に渡されている変数への代入文を検索することによってこの処理が行われる。本実施形態ではＣ言語を想定しているため、ステップＳ１２において検索された関数呼び出しの引数の変数が、「＝」の左に出現する式（４行目）がテストプログラム１２２から抽出される。本実施形態では、ステップＳ１２において、テスト機能付きプログラム生成部１１２は、テスト対象プログラム１２１の引数に渡される式が"１"であるということを判断する。
【００４５】
本実施形態では、説明の簡略化のためにこうした手法を用いているので、入力値を用意するために条件分岐を含むようなテストプログラムには適用できないが、一般的にはテストプログラムで条件分岐が必要なケースは限られていると考えられるため、こうした簡易な方法でも多くの場合に適用できると期待できる。
【００４６】
次に、テスト機能付きプログラム生成部１１２が、テスト対象プログラム１２１の先頭部に、引数（入力値）が、ステップＳ１２において検索された代入文において代入されている式と等しいかどうかを確認し、等しいようであれば、実行中のテストプログラム１２２を示す状態変数"__test_no"に、本処理手順に入力された複数のテストプログラムに関してのステップ群Ｓ１０の実行の繰り返しの回数、すなわち本方法においてステップ群Ｓ１０を何回目に実行しているか、を代入する処理を追加する（ステップＳ１３）。本実施形態では、プログラミング言語はＣ言語であることを想定しているため、条件分岐であるif文を用いて代入されている式と等しいかどうかを確認する処理が追加される。ここで、実行中のテストプログラム１２２を示す状態変数は、テスト対象プログラム１２１の他の変数と名前が衝突しないように選んだ変数である。衝突しないようであれば他の名前を選んでもよい。本実施形態では、ステップＳ１３において、テスト機能付きプログラム生成部１１２は、テスト対象プログラム１２１を元にしたテスト機能付きプログラム１２３において、テスト対象プログラム１２１における３行目の前に、"if (x == 1) { __test_no = 1; }"という処理を追加する（図１０の点線矩形枠部分）。
【００４７】
次に、テスト機能付きプログラム生成部１１２が、テストプログラム１２２の抽出された行から後方に、テスト対象プログラム１２１の返却値を代入している変数の値に対して条件のチェックを行っている行、すなわち出力値条件式を検索する（ステップＳ１４）。Ｃ言語のプログラムにおいては、条件のチェックはassertというライブラリ関数の呼び出しで行われることが多いため、本実施形態でも、テスト対象プログラムの返却値を代入している変数を含む式を引数に持つassertが検索される。本実施形態では、ステップＳ１４において、テスト機能付きプログラム生成部１１２は、条件としてテストプログラム１２２の６行目を抽出する。
【００４８】
最後に、テスト機能付きプログラム生成部１１２が、テスト対象プログラム１２１のreturn y;の前に、実行中のテストプログラムを表す変数がステップ群Ｓ１０の実行の繰り返しの回数と等しいかどうかをif文で比較し、等しければステップＳ１４において検索されたassertの引数の条件と同じ条件を引数にprint_okという関数を呼び出す処理、すなわち出力値を確認するステップを追加する（ステップＳ１５）。本実施形態では、ステップＳ１５において、テスト機能付きプログラム生成部１１２は、テスト対象プログラム１２１を元にしたテスト機能付きプログラム１２３において、テスト対象プログラム１２１の４行目の前に、"if (__test_no == 1) { print_ok(y == 2) }"という処理を追加する（図１０の点線矩形枠部分）。結果として、テスト機能付きプログラム生成部１１２は、生成したテスト機能付きプログラムを１２３を出力する。ここで、図１０における点線矩形枠部分が、テスト対象プログラム１２１に追加されたテスト機能に相当する（以下同様）。図１０の例では、１つのテストプログラム１２２を用いるので、ステップ群Ｓ１０は１回のみ実行される。
【００４９】
ここで、print_okは、ログファイルに条件が成立しているかどうかを記録する関数である。本実施形態ではログファイルに記録する方式をとっているが、画面に出力したり、通信によって他のコンピュータに結果を送信してもよい。
【００５０】
続いて、複数のテストプログラムを用いる実施形態について説明する。図１１は、本発明の実施形態に係るテスト対象プログラム、テストプログラム及びテスト機能付きプログラムの一例を示す図である。
【００５１】
まず、テスト機能付きプログラム生成部１１２は、テストプログラム１２７に関してステップ群Ｓ１０を実行する。ステップＳ１１では、テストプログラム１２７の５行目が抽出され、ステップＳ１２では、テスト対象プログラム１２６の引数に渡される式が”１”であるということがわかる。続いて、ステップＳ１３では、テスト対象プログラム１２６を元にしたテスト機能付きプログラム１２９において、テスト対象プログラム１２６における３行目の前に，"if (x == 1) { __test_no = 1; }"という処理が追加される。続いて、ステップＳ１４では、条件としてテストプログラム１２７の６行目が抽出され、ステップＳ１５では、テスト対象プログラム１２６を元にしたテスト機能付きプログラム１２９において、テスト対象プログラム１２６における８行目の前に，"if (__test_no == 1) { print_ok(y == 1) }"という処理が追加される。
【００５２】
続いて、テスト機能付きプログラム生成部１１２は、テストプログラム１２８に関して２順目となるステップ群Ｓ１０を実行する。ステップＳ１１では、テストプログラム１２８の５行目が抽出され、ステップＳ１２では、テスト対象プログラム１２６の引数に渡される式が”１”であるということがわかる。続いて、ステップＳ１３では、テスト対象プログラム１２６を元にしたテスト機能付きプログラム１２９において、テスト対象プログラム１２６における３行目の前に，"if (x == -1) { __test_no = 2; }"という処理が追加される。続いて、ステップＳ１４では、条件としてテストプログラム１２８の６行目が抽出され、ステップＳ１５では、テスト対象プログラム１２６を元にしたテスト機能付きプログラム１２９において、テスト対象プログラム１２６における８行目の前に，"if (__test_no == 2) { print_ok(y == -1) }"という処理が追加される。図１１の例では、２つのテストプログラム１２７，１２８を用いるので、ステップ群Ｓ１０は、テストプログラム１２７，１２８のそれぞれについて１回ずつ、計２回実行される。
これらの結果、テスト機能付きプログラム生成部１１２は、テスト機能付きプログラム１２９を生成することができる。
【００５３】
制御ソフトウェアにはさまざまな実装形態があり、上に述べた関数プログラムのように結果が関数呼び出しの戻り値として返されるものばかりではない。他に考えられる実施形態として、ここでは２つの例を説明する。
１つ目は制御に時間を要するために、制御プログラムとしては入力を受け取った後にすぐに親プログラムに制御を返すものである。この実施形態では、制御が終了した後に同じプログラム、あるいは他の制御プログラムを呼び出すことにより、制御結果を得ることができる。制御に要する時間の経過後、あるいは制御が終わるまで繰り返し、親プログラムから制御プログラムを呼び出すことにより制御結果を得ることができる。
２つ目は制御対象をオブジェクトとして実装するものである。この実施形態では、親プログラムからの制御依頼はオブジェクトに対してメソッド呼び出しをすることにより行うことができる。制御結果は、同じオブジェクトの他のメソッド呼び出しをすることによって得られるか、あるいは同じオブジェクトのメンバの値を確認することによって得られる。メソッド呼び出しにより制御結果を得る場合は、前記した入力を受け取った後にすぐに親プログラムに制御を返す例と類似しているため、ここではメンバの値を確認することにより制御結果を得るプログラムについて説明する。
【００５４】
まず、入力を受け取った後にすぐに親プログラムに制御を返す制御プログラムでの例について説明する。図１２は、本発明の他の実施形態に係るテスト機能付きプログラム生成方法を示すフローチャートである。図１３は、本発明の他の実施形態に係るテスト対象プログラム、テストプログラム及びテスト機能付きプログラムの一例を示す図である。
【００５５】
本実施形態では、テスト対象プログラムは、入力を受け取った後に何らかの処理を行いすぐに親プログラムに制御を返す関数と、一定時間後に呼び出すことにより出力を返す別の関数の組からなるとする。すなわち、テスト対象プログラムは、図１３に示すように、入力を受け取るプログラム１３１と、出力を返すプログラム１３２と、を備える。この例に見られるように、入力と出力を別の関数とする場合、入力を受け取るプログラムから何らかの識別子を返し、出力を返すプログラムに得られた識別子を渡すことにより出力を得るのが一般的な設計である。
【００５６】
図１３の上から一番目は、テスト対象の入力を受け取る受け取りプログラム（テスト対象プログラム）１３１を示すものであり、このテスト対象プログラム１３１は、別のプログラム（この例ではテストプログラム１３３の６行目）から呼び出されることで実行される。ちなみに、このテスト対象プログラム１３１の４行目は、ｘを引数とするdo_something関数の計算結果の値をhandleという変数に代入することを示している。５行目は、計算結果の（計算結果が代入された）handleが呼び出し元のプログラムに返されるされることを示している。
【００５７】
図１３の上から２番目は、テスト対象の出力を返す返却プログラム（テスト対象プログラム）１３２を示すものであり、このテスト対象プログラム１３２は、別のプログラム（この例ではテストプルグラム１３３の８行目）から呼び出されることで実行される。ちなみに、このテスト対象プログラム１３２の４行目は、handleを引数とするget_result関数の計算結果の値をresultという変数に代入することを示している。５行目は、計算結果の（計算結果が代入された）resultが呼び出し元のプログラムにリターンされることを示している。
【００５８】
図１３の上から３番目は、テストプログラム１３３を示すものである。ちなみに、このテストプログラム１３３の５行目は、ｘに１を代入することを示している。６行目は、引数をｘとする関数（ここではテスト対象プログラム１３１）を呼び出して計算結果のhandleを得ることを示している。７行目は、５０秒間待機することを示している。８行目は、handleを引数とする関数（ここではテスト対象プログラム１３２）を呼び出して計算結果をｙという変数に代入することを示している。９行目は、計算結果の（計算結果が代入された）ｙが２であるかを確認することを示している。
【００５９】
図１３の下から２番目はテスト対象プログラム１３１に対応するテスト機能付きプログラム１３４を示すものであり、このテスト機能付きプログラム１３４は、テスト対象プログラム１３１の４行目の後に新しい５行目から７行目（ｉｆ文）を追加している。ちなみに、テスト機能付きプログラム１３４の追加されたｉｆ文は、「handle」と「現在時刻」と「１」とを対として（対応付けて）記憶領域に記憶するものである。ここで、「１」は後記するように__test_noの一例に相当する。
【００６０】
図１３の一番下は、テスト対象プログラム１３２に対応するテスト機能付きプログラム１３５を示すものであり、このテスト機能付きプログラム１３５は、テスト対象プログラム１３２の３行目の後に新しい４行目と５行目を追加し、かつ、テスト対象プログラム１３２の４行目の後に新しい７行目〜１１行目を追加している。ちなみに、追加された７行目は、記憶領域に記憶された値を読み出すものであり、ここでは、テスト機能付きプログラム１３４により記憶された「handle」と「現在時刻」と「数値」とを、「handle」、「スタート時刻」、「__test_no」として読み出している。また、追加された８行目からのｉｆ文は、__test_noが１ならば、現在時刻とスタート時刻との差が５０であるか否か、かつ、resultが２であるか否かを確認するものである。
【００６１】
図１２に示すように、本方法は、入力された複数のテストプログラムに関する繰り返し（ステップＳ２１，Ｓ２２）により実現される。まず、この中で一つのテストプログラムに対する処理手順を表すステップ群Ｓ３０について説明する。
【００６２】
まず、テスト機能付きプログラム生成部１１２は、入力されたテストプログラム１３３から、テスト対象の入力を受け取る受け取りプログラム１３１が呼び出されている行を抽出する（ステップＳ３１）。テストプログラム１３３は受け取りプログラム１３１を何らかの形で呼び出しているため、こうした行はかならず見つかる。本実施形態では、ステップＳ３１において、テスト機能付きプログラム生成部１１２は、テストプログラム１３３の６行目を抽出する。テストプログラム１３３の６行目は、受け取りプログラム１３１を呼び出す処理である。
【００６３】
次に、テスト機能付きプログラム生成部１１２は、抽出された行（テストプログラム１３３の６行目）において、テストプログラムの引数として渡されている変数がとる値、すなわち受け取りプログラム１３１への入力式を検索する（ステップＳ３２）。本実施形態では、受け取りプログラム１３１が呼び出されている行から前方に、受け取りプログラム１３１の引数に渡されている変数への代入文を検索することによってこの処理が行われる。本実施形態では、ステップＳ３２において、テスト機能付きプログラム生成部１１２は、受け取りプログラム１３１の引数に渡される式が"１"であるということを判断する。
ここまでは、前記ステップＳ１１，１２の手順と同じである。
【００６４】
次に、テスト機能付きプログラム生成部１１２は、受け取りプログラム１３１のreturnhandle;の前に、引数が、ステップＳ３１において検索された代入文において代入されている式と等しいかどうかをif文で確認し、等しいようであれば、register_handleというライブラリ関数を用いて、入力を受け取る処理によって得られた識別子に、現在時刻とステップＳ３１によるステップ群Ｓ３０の繰り返し回数とを関連付けて記憶する処理を追加する（ステップＳ３３）。
【００６５】
ここで、register_handleは、第１引数の値に第２引数および第３引数の値を関連付けて記憶する関数である。こうして記憶した値はsearch_handleという別のライブラリ関数を呼び出すことにより取得することができる。
【００６６】
入力を受け取った後にすぐに親プログラムに制御を返すテスト対象プログラムをテストするテストプログラム１３３では、入力をしてから出力を得るまでの間に何らかの待ち時間を設けるのが一般的である。そこで本実施形態では、テストプログラムは入力と出力の間でsleepという関数を呼び出すことにより一定時間待つ処理を行っていると仮定する。本実施形態では、ステップＳ３３において、テスト機能付きプログラム生成部１１２は、受け取りプログラム１３１を元にしたテスト機能付きプログラム１３４において、受け取りプログラム１３１における５行目の前に、テスト機能付きプログラム１３４の５行目〜７行目の処理を追加する。
【００６７】
次に、テスト機能付きプログラム生成部１１２は、テストプログラム１３３からsleepを呼び出している行を検索し、その引数を待ち時間として抽出する（ステップＳ３４）。本実施形態では、ステップＳ３４において、テスト機能付きプログラム生成部１１２は、テストプログラム１３３の７行目を抽出する。
【００６８】
次に、テスト機能付きプログラム生成部１１２は、テストプログラム１３３からテスト対象の出力を返す返却プログラム１３２が呼び出されている行（８行目）を抽出し、その呼び出しの戻り値（返却値ともいう）を代入している変数の値に対して条件のチェックを行っている行、すなわち返却プログラム１３２からの出力値条件式を検索する（ステップＳ３５）。これも前記したステップＳ１４と同様にassertの呼び出しを検索する。本実施形態では、ステップＳ３５において、テスト機能付きプログラム生成部１１２は、テストプログラム１３３の９行目を検索する。
【００６９】
次に、テスト機能付きプログラム生成部１１２は、ステップＳ３４，Ｓ３５で得られた待ち時間、出力値と、ステップ群Ｓ３０の繰り返し回数を元にし、待ち時間と出力値を確認するステップを返却プログラム１３２のreturn result;の前に追加する（ステップＳ３６）。まず、テスト機能付きプログラム生成部１１２は、返却プログラム１３２の引数をsearch_handleに渡し、受け取りプログラム１３１の実行時にregister_handleによって記憶された現在時刻とステップ群Ｓ３０の繰り返し回数を取得する処理を追加する。このsearch_handleの追加はステップ群Ｓ３０の繰り返しの最初の1回でだけ行われる。次に、テスト機能付きプログラム生成部１１２は、search_handleの呼び出しによって得られた繰り返し回数とステップ群Ｓ３０の繰り返し回数が等しいかどうかを比較し、等しいならば、現在の時刻がregister_handleによって記憶された現在時刻からステップＳ３４によって得られた待ち時間だけ経過したものになっているかどうかの確認、及び返却プログラム１３２からの返却値がステップＳ３５によって得られた出力値になっているかどうかの確認をassertという関数の呼び出しによって行う処理を追加する。本実施形態では、ステップＳ３６において、テスト機能付きプログラム生成部１１２は、返却プログラム１３２を元にしたテスト機能付きプログラム１３５において、返却プログラム１３２における５行目の前に、テスト機能付きプログラム１３５の７行目〜１１行目の処理を追加する。
【００７０】
なお、制御対象をオブジェクトとして実装する方式が、制御結果を同じオブジェクトの他のメソッド呼び出しをすることによって得られる場合には、前記した入力を受け取る関数と出力を返す関数との組で制御を行う場合と同様と考えられる。
【００７１】
そこで、本実施形態では、まず、制御依頼をメソッド呼び出しによって行い、メンバの値を確認することにより制御結果を得るテスト対象プログラムを、制御結果をメソッド呼び出しによって得るテスト機能付きプログラムに変換する。テスト機能付きプログラムは、入力を受け取る関数と出力を返す関数との組の制御プログラムを変換する手順である本方法と同様の手順で変換することができるため、この２つの変換を組み合わせることによって、テスト対象プログラムにテストプログラムの入出力値チェックのステップを追加することができる。
【００７２】
ここでは、メンバの値を確認することにより制御結果を得るテスト対象プログラムを、制御結果をメソッド呼び出しによって得るテスト機能付きプログラムに変換する手順を例に挙げて説明する。図１４は、本発明の他の実施形態に係る変換前のテスト対象プログラム及びテストプログラム、並びに、変換後のテスト対象プログラム及びテストプログラムの一例を示す図である。図１５は、本発明の他の実施形態に係るテスト機能付きプログラムの一例を示す図である。
【００７３】
図１４に示すように、まず、テスト機能付きプログラム生成部１１２は、テストプログラム１４２のassertの中でクラスClsのメンバであるyを参照する。このように変換前のテスト対象プログラム１４１のassertの中で参照されているクラスのメンバ全てについて、そのメンバの値を返すだけの関数をテスト対象プログラム１４１のクラスに追加して変換後のテスト対象プログラム１４３を生成する。この実施形態では、変換後のテスト対象プログラム１４３の３行目の関数get_yがそれにあたる。
【００７４】
また、テスト機能付きプログラム生成部１１２は、テストプログラム１４２を、クラスClsのメンバyを直接参照しないように、まずget_yを呼び出して返却値を変数に代入し、得られた値をassertによって確認するように変更して変換後のテストプログラム１４４を生成する。すなわち、変換後のテストプログラム１４４の５行目〜６行目がそれにあたる。
【００７５】
以上のような手順により、テスト対象プログラム１４１及びテストプログラム１４２を、制御結果をメソッド呼び出しによって得るテスト対象プログラム１４３及びテストプログラム１４４に変換することができ、それをさらに前記した方法と同様の手順で変換することにより、テスト対象プログラム１４３にテストプログラム１４４の入出力値チェックのステップを追加して、図１５に示すテスト機能付きプログラム１４５を生成することができる。
【００７６】
本発明の実施形態に係るテスト機能付きプログラム生成装置は、実機において問題が発生しているかを検証することが可能なテスト機能付きプログラムを生成することができる。また、かかるテスト機能付きプログラムは、低コストで制御ソフトウェアの信頼性を向上させることができる。
【００７７】
＜制御動作判定システム＞
最後に、実際に図９に記載の方法を用い、自動分析装置の試薬ディスク、または検体ディスクを回転させる制御プログラムを変換し、動作チェックを追加する制御動作判定装置を備える制御動作判定システムについて説明する。図１６は、本発明の実施形態に係る制御動作判定システムを模式的に示す図である。図１６に示すように、本発明の実施形態に係る制御動作判定システムは、例えば、ＣＰＵ、ＲＡＭ、ＲＯＭ及び入出力回路から構成されており、機能部として、制御動作判定装置２１０と、自動分析装置２３０と、表示装置２４０と、を備えている。
【００７８】
自動分析装置２３０は、試薬ディスク（又は検体ディスク）２３１と、試薬ディスク（又は検体ディスク）２３１の外周に配置された複数の試薬ボトル（又は検体ボトル）２３２と、複数の試薬ボトル（又は検体ボトル）２３２に対応して配置された複数のＲＦＩＤタグ２３３と、ＲＦＩＤリーダ２３４と、を備える。ＲＦＩＤタグ２３３は、ＲＦＩＤリーダ２３４に対向して停止する可能性のある試薬ディスク（又は検体ディスク）２３１上の全ての位置に配置されている。
【００７９】
図１７を参照して、この試薬ディスク２３１を備えた自動分析装置２３０の動作制御を行うための関数について考える。試薬ディスク２３１の現在の回転位置は、get_current_posで取得される。試薬ディスク２３１の回転制御は、rotate_diskで行われる。rotate_diskには、回転して停止させたい試薬ディスク２３１の回転位置の差分が、引数として与えられる。
【００８０】
試薬ディスク２３１上の複数の試薬ボトル２３２のＩＤ一覧が、配列に保持されている。その変数名を、reagentとする。配列の添え字に試薬ディスク２３１の回転位置を与えると試薬ボトル２３２のＩＤが得られる。
【００８１】
これらを元に、引数として試薬ボトル２３２のＩＤを与えると、その試薬ボトル２３２の位置まで回転するrotate_reagent_diskを実装することを考える。実装した結果が、図１７のテスト対象プログラム１５１である。
【００８２】
テスト対象プログラム１５１をテストするプログラムがテストプログラム１５２である。テストプログラム１５２は、６行目のassert呼び出しにより、制御終了後の試薬ディスク２３１の回転位置にある試薬ボトル２３２のＩＤが、rotate_reagent_diskの引数に渡した試薬ボトル２３２のＩＤと等しいか否かを確認している。
【００８３】
ここで、テスト対象プログラム１５１及びテストプログラム１５２を用いて図９の方法を実行すると、テスト機能付きプログラム１５３が得られる。テスト機能付きプログラム１５３は、変数reagent_idにbottle_idと同じ値を代入した後にテスト機能付きプログラム１５３を呼び出すことにより、制御終了後に試薬ディスク２３１の回転位置にある試薬ボトル２３２のＩＤが、rotate_reagent_diskの引数に渡した試薬ボトル２３２のＩＤと等しいか否かを確認することができる。１２行目〜１３行目の処理がそれにあたる。
【００８４】
かかるテスト機能付きプログラムを実装した装置が、制御動作判定装置２１０である。図１６に示すように、制御動作判定装置２１０は、機能部として、入力値取得部２１１と、入力値判定部２１２と、出力値生成部２１３と、出力値判定部２１４と、通知部２１５と、を備える。
【００８５】
入力値取得部２１１は、ＲＦＩＤリーダ２３４から出力された入力値、すなわち試薬ボトル２３２のＩＤを取得する。取得された入力値は、入力値判定部２１２および出力値生成部２１３に出力される。
【００８６】
入力値判定部２１２は、取得された入力値が、予め記憶されたテストプログラムのテスト用入力値と一致するか否かを判定する。判定結果は、出力値判定部２１４に出力される。
【００８７】
出力値生成部２１３は、取得された入力値を予め記憶されたテスト対象プログラムに代入することによって、かかる入力値に対応する出力値を生成する。生成された出力値は、出力値判定部２１４に出力される。
【００８８】
出力値判定部２１４は、入力値がテスト用入力値と一致すると判定された場合に、出力値生成部２１３によって生成された出力値と予め記憶されたテストプログラムの正解出力値とが一致するか否かを判定する。すなわち、出力値判定部２１４は、出力値と正解出力値とが一致する場合には、自動分析装置２３０の制御動作は正常であると判定し、出力値と正解出力値とが一致しない場合には、自動分析装置２３０の制御動作は異常であると判定する。判定結果は、通知部２１５に出力される。
【００８９】
通知部２１５は、判定結果を表示装置２４０に表示させる判定結果表示データを生成し、表示装置２４０に出力する。
【００９０】
本発明の実施形態に係る制御動作判定装置２１０は、自動分析装置２３０の制御動作が正常であるか否かを判定することができる。
【００９１】
以上、本発明の実施形態について説明したが、本発明は前記実施形態に限定されず、本発明の要旨を逸脱しない範囲で適宜設計変更可能である。本発明は、コンピュータを分析結果表示用データ生成装置、テスト機能付きプログラム生成装置又は制御動作判定装置として機能させるプログラムとしても実現可能である。
【図面の簡単な説明】
【００９２】
【図１】本発明の実施形態に係る分析結果表示用データ生成装置を示すブロック図である。
【図２】本発明の実施形態に係る画面遷移例を模式的に示す図である。
【図３】図２の検体分析結果表示画面を模式的に示す図である。
【図４】図２の分析結果表示画面を模式的に示す図である。
【図５】図２の同一制御動作表示画面を模式的に示す図である。
【図６】図２の同一試薬表示画面を模式的に示す図である。
【図７】図２の同一キャリブレーション表示画面を模式的に示す図である。
【図８】本発明の実施形態に係るテスト機能付きプログラム生成装置を示すブロック図である。
【図９】本発明の実施形態に係るテスト機能付きプログラム生成方法を示すフローチャートである。
【図１０】本発明の実施形態に係るテスト対象プログラム、テストプログラム及びテスト機能付きプログラムの一例を示す図である。
【図１１】本発明の実施形態に係るテスト対象プログラム、テストプログラム及びテスト機能付きプログラムの一例を示す図である。
【図１２】本発明の他の実施形態に係るテスト機能付きプログラム生成方法を示すフローチャートである。
【図１３】本発明の他の実施形態に係るテスト対象プログラム、テストプログラム及びテスト機能付きプログラムの一例を示す図である。
【図１４】本発明の他の実施形態に係る変換前のテスト対象プログラム及びテストプログラム、並びに、変換後のテスト対象プログラム及びテストプログラムの一例を示す図である。
【図１５】本発明の他の実施形態に係るテスト機能付きプログラムの一例を示す図である。
【図１６】本発明の実施形態に係る制御動作判定システムを模式的に示す図である。
【図１７】本発明の実施形態に係るテスト対象プログラム、テストプログラム及びテスト機能付きプログラムの一例を示す図である。
【符号の説明】
【００９３】
１０    分析結果表示用データ生成装置
１１    分析結果取得部
１２    記憶部
１３    ユーザ入力情報取得部
１４    分析結果表示データ生成部
１１０  テスト機能付きプログラム生成装置
１１１  プログラム取得部
１１２  テスト機能付きプログラム生成部
２１０  制御動作判定装置
２１１  入力値取得部
２１２  入力値判定部
２１３  出力値生成部
２１４  出力値判定部
２１５  通知部
【図１】
2009281996.tif 000003
【図２】
2009281996.tif 000004
【図３】
2009281996.tif 000005
【図４】
2009281996.tif 000006
【図５】
2009281996.tif 000007
【図６】
2009281996.tif 000008
【図７】
2009281996.tif 000009
【図８】
2009281996.tif 000010
【図９】
2009281996.tif 000011
【図１０】
2009281996.tif 000012
【図１１】
2009281996.tif 000013
【図１２】
2009281996.tif 000014
【図１３】
2009281996.tif 000015
【図１４】
2009281996.tif 000016
【図１５】
2009281996.tif 000017
【図１６】
2009281996.tif 000018
【図１７】
2009281996.tif 000019