説明

分析結果表示用データ生成装置、方法及びプログラム、テスト機能付きプログラム生成装置、方法及びプログラム、制御動作判定装置、方法及びプログラム、並びに、制御動作判定システム

【課題】自動分析装置による分析結果及びその根拠となる情報の表示に適したデータを生成することが可能な分析結果表示用データ生成装置、方法及びプログラムを提供する。
【解決手段】分析結果表示用データ生成装置10は、検体のID等を取得する分析結果取得部11と、記憶部12に記憶された検体のIDと、当該検体の分析結果と、当該検体の分析根拠情報と、を表示装置40に表示させる分析結果表示データを生成する分析結果表示データ生成部14と、分析結果表示データにおける分析根拠情報を選択するユーザ入力情報取得部13と、を備え、分析結果表示データ生成部14は、選択された分析根拠情報に基づいて記憶部12を参照し、当該分析根拠情報と同一分析根拠情報に関連付けられた分析結果を表示装置40に表示させる分析結果一覧表示データを生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、検体の分析結果を表示装置に表示させる分析結果表示用データ生成装置、方法及びプログラムに関する。
また、本発明は、テスト対象プログラムとテストプログラムとに基づいてテスト機能付きプログラムを生成するテスト機能付きプログラム生成装置、方法及びプログラムに関する。
また、本発明は、機構の制御動作が正常であるか否かを判定する制御動作判定装置、方及びプログラム、並びに制御動作判定システムに関する。
【背景技術】
【0002】
検体を自動的に分析する自動分析装置において、分析結果の信頼性を向上させるため、分析に使用された試薬、試薬のキャリブレーション、分析に使用された機構及びその制御動作等、分析結果の根拠となるデータを分析結果から追跡確認することが可能な技術が求められている。かかる技術は、トレーサビリティ機能と呼ばれている。
【0003】
従来の自動分析装置は、分析結果を表示する親画面を開いた状態において、詳細表示等の機能を実行することにより、子画面を開く等の画面遷移を行い、分析結果の根拠となるデータも表示することができる。
【0004】
トレーサビリティ機能に対する要求は高まってきており、以前は分析に使用された試薬のロット番号を確認することができればよかったが、最近ではいつ行われたキャリブレーションの検量線を用いて測定したか等の情報も確認することができるようになってきており、分析結果とその根拠との関連性が複雑になってきている。
【0005】
逆に、分析結果の根拠となるデータから、同じ根拠に基づく分析結果を一覧として確認したいという要求もある。例えば、従来の自動分析装置は、分析した患者の検体とQC(Quality Control)検体とを同じ画面に一覧表示する。これによって、同一の2つのQC分析結果の間に対応する患者の検体が表示される。2つのQC分析結果に大きな差異がなければ、自動分析装置はその間ほぼ一定の状態で分析を行ったと推測することができ、患者の検体の分析結果に対しての信頼性を得ることができる。
【0006】
かかる自動分析装置の機構を制御するソフトウェアは、通常はマイコン上で動作しているが、一般的には、開発時にはパソコン等の別アーキテクチャのコンピュータ又はシミュレータ上で開発及びテストが行われ、その後に実機でデバッグが実行される。
【0007】
一般的に、テストを行うテストプログラムは、テスト対象プログラムに対して予め決められた入力を行い、所望の出力が得られるかどうかを確認する。テスト対象プログラムに対する入力としては、テスト対象プログラムが関数のプログラムである場合には、パラメータ渡しによる値の入力、テスト対象プログラムがオブジェクトのプログラムである場合には、メソッドを一定の順序で呼び出すことによる入力、が挙げられる。テスト対象プログラムの出力としては、関数のプログラムからの戻り値、オブジェクトのプログラムからのオブジェクトの内部状態が挙げられる。テストプログラムはある程度定型的であるため、テストプログラムを開発するためのフレームワークも開発されており、テストプログラム作成の効率化が図られている。
【0008】
【特許文献1】特開平10−10131号公報
【特許文献2】特開平10−300755号公報
【特許文献3】特開2006−268858号公報
【発明の開示】
【発明が解決しようとする課題】
【0009】
トレーサビリティ機能を実現するために保存される分析の根拠となるさまざまなデータと分析結果との関係は、単純なツリー構造ではなく、一般的にはグラフ構造となる。例えば、ある生化学自動分析装置が分析結果を生成する際に用いられる根拠としては、試薬の検量線を測定するキャリブレーション、検体と試薬とを反応させる反応セル、分析に用いられた機構の制御動作等といったデータがあり、これらが分析対象の検体と関連付けられている。これら根拠となるデータは、単一の測定結果の根拠だけではなく、一般的に複数の測定結果の根拠となる。そのため、これら根拠となるデータの関連は、グラフ構造となる。
【0010】
これに対し、自動分析装置による分析結果及びその根拠となる情報の表示には、パソコン用のウィンドウシステムに類した画面体系が用いられており、分析結果及びその根拠となる情報は、階層的な親子関係を有する複数のウィンドウを用いて表示される。
【0011】
しかし、階層的な画面体系は、ツリー構造を有する情報の表示には適しているが、自動分析装置による分析結果及びその根拠となる情報のように複雑な関係を有する情報の表示には適していない。
【0012】
階層的な画面体系においては、分析結果を表示する親画面においてGUIを用いて詳細表示等の機能を実行することにより、子画面を開いて分析結果の根拠となる情報を表示するといった機能を実現することは可能であるが、同一根拠に基づく他の分析結果を表示することは困難である。このため、さまざまなデータを保存してトレーサビリティ機能を実現したとしても、利用者が画面を見て同一根拠に基づく他の分析結果を追跡確認することは困難である。
【0013】
また、自動分析装置の機構を制御するソフトウェアは、パソコン等の別アーキテクチャのコンピュータ又はシミュレータ上で開発及びテストが行われるが、実際に実機で動作する場合に、実機とパソコン又はシミュレータとの微妙な差異が原因で、パソコン又はシミュレータ上で検証済みの箇所でも問題が発生するおそれがある。
【0014】
従来、自動分析装置の機構制御ソフトウェアとテストプログラムとを同時に動作させることはできないため、機構制御ソフトウェアの動作時に問題が発生しているかを検証する自己診断機能を実機に実装する必要がある。しかし、このような機能を別途開発すると、不具合の発生及び開発コストの増大につながってしまう。
【0015】
本発明は、前記した問題を解決すべく創案されたものであり、自動分析装置による分析結果及びその根拠となる情報の表示に適したデータを生成することが可能な分析結果表示用データ生成装置、方法及びプログラムを提供することを課題とする。
また、本発明は、実機において問題が発生しているかを検証することができるテスト機能付きプログラムを生成することが可能なテスト機能付きプログラム生成装置、方法及びプログラムを提供することを課題とする。
また、本発明は、機構の制御動作が正常であるか否かを判定することが可能な制御動作装置、方法及びプログラム、並びに、制御動作判定システムを提供することを課題とする。
【課題を解決するための手段】
【0016】
前記課題を解決するため、本発明は、検体の分析結果及びそれに対応する分析根拠情報を表示装置に表示させる分析結果表示用データ生成装置であって、検体のIDと、当該検体の分析結果と、当該検体の分析結果の根拠となる分析根拠情報と、を取得する分析結果取得部と、検体ごとに、前記検体のIDと、当該検体の分析結果と、当該検体の分析の根拠となる分析根拠情報と、を関連付けて記憶する記憶部と、前記記憶部に記憶された前記検体のIDと、当該検体の分析結果と、当該検体の分析根拠情報と、を前記表示装置に表示させる分析結果表示データを生成する分析結果表示データ生成部と、前記分析結果表示データにおける分析根拠情報を選択する分析根拠情報選択部と、を備え、前記分析結果表示データ生成部は、選択された前記分析根拠情報に基づいて前記記憶部を参照し、当該分析根拠情報と同一分析根拠情報に関連付けられた分析結果を前記表示装置に表示させる分析結果一覧表示データを生成することを特徴とする。
【0017】
また、前記課題を解決するため、本発明は、テストの対象となるテスト対象プログラムと、前記テスト対象プログラムをテストするテストプログラムとを取得するプログラム取得部を備えるとともに、前記テスト対象プログラムの機能に前記テストプログラムが正常に動作しているか否かをテストする機能を付加したテスト機能付きプログラムを生成するテスト機能付きプログラム生成部を備えるテスト機能付きプログラム生成装置であって、前記テストプログラムには、前記テスト対象プログラムが正常に動作しているときのテスト用入力値と正解出力値とが記述されており、前記テスト機能付きプログラム生成部は、前記テストプログラムを解析し、前記テスト対象プログラムに対して、プログラムへの入力値が前記テスト用入力値と一致するか否かを判定する入力値判定ステップと、前記入力値が前記テスト用入力値と一致すると判定された場合において、プログラムの出力値と前記正解出力値とが一致しないときに、プログラムは異常であると判定するステップと、前記判定結果を出力するステップと、を付加することによって前記テスト機能付きプログラムを生成することを特徴とする。
【0018】
また、前記課題を解決するため、本発明は、テスト対象プログラムと、前記テスト対象プログラムのテストプログラムのテスト用入力値とそれに対応する正解出力値と、を用いて制御動作が正常であるか否かを判定する制御動作判定装置であって、入力値を取得する入力値取得部と、前記入力値が前記テスト用入力値と一致するか否かを判定する入力値判定部と、前記入力値を用いて前記テスト対象プログラムを実行することによって、出力値を生成する出力値生成部と、前記入力値が前記テスト用入力値と一致すると判定された場合に、前記出力値と前記正解出力値とが一致する場合に正常であると判定し、前記出力値と前記正解出力値とが一致しない場合に異常であると判定する出力値判定部と、判定結果を通知する通知部と、を備えることを特徴とする。
【発明の効果】
【0019】
本発明によれば、自動分析装置による分析結果及びその根拠となる情報の表示に適したデータを生成することができる。
また、本発明によれば、実機において問題が発生しているかを検証することが可能なテスト機能付きプログラムを生成することができる。
また、本発明によれば、機構の制御動作が正常であるか否かを判定することができる。
【発明を実施するための最良の形態】
【0020】
以下、本発明の実施形態について、適宜図面を参照しながら説明する。同様の部分には同一符号を付し、重複する説明を省略する。
【0021】
<分析結果表示用データ生成装置>
まず、本発明の実施形態に係る分析結果表示用データ生成装置について説明する。図1は、本発明の実施形態に係る分析結果表示用データ生成装置を示すブロック図である。
【0022】
本発明の実施形態に係る分析結果表示用データ生成装置10は、例えば、CPU、RAM、ROM及び入出力回路を備えており、図1に示すように、ユーザによる入力装置20の操作に基づいて、自動分析装置30から入力された検体の分析結果及び当該検体の分析結果の根拠となる分析根拠情報を表示装置40に表示させる装置である。入力装置20としては、キーボード、マウス等が挙げられ、GUIを用いた入力も可能である。表示装置30としては、液晶ディスプレイ、プリンタ等が挙げられる。分析結果表示用データ生成装置10は、機能部として、分析結果取得部11と、記憶部12と、ユーザ入力情報取得部13と、分析結果表示データ生成部14と、を備える。
【0023】
分析結果取得部11は、自動分析装置30から検体のIDと、当該検体の分析結果と、当該検体の分析結果の根拠となる分析根拠情報と、を取得する。取得されたID、分析結果及び分析根拠情報は、記憶部12に出力される。
【0024】
記憶部12は、分析結果取得部から出力された検体のID、当該検体の分析結果、及び、当該検体の分析結果の根拠となる分析根拠情報を関連付けて記憶する。分析根拠情報としては、分析に使用された試薬のID、キャリブレーションのID、分析に使用された機構のID、及び、分析に使用された機構の制御動作が挙げられる。
【0025】
ユーザ入力情報取得部13は、ユーザによる入力装置20の操作に基づくユーザ入力情報を取得する。このユーザ入力情報取得部13が、「分析根拠情報選択部」の一例である。取得されたユーザ入力情報は、分析結果表示データ生成部14に出力される。
【0026】
分析結果表示データ生成部14は、ユーザ入力情報を用いて記憶部12を参照し、ユーザが見たい検体の分析結果を表示装置40に表示させる分析結果表示データを生成する。
生成された分析結果表示データは、表示装置40に出力される。
【0027】
また、分析結果表示データ生成部14は、ユーザ入力情報を用いて記憶部12を参照し、ユーザが見たい同一の分析根拠情報に関連付けられた分析結果を表示装置40に表示させる分析結果一覧表示データを生成する。
生成された分析結果一覧表示データは、表示装置40に出力される。
【0028】
続いて、本発明の実施形態に係る分析結果表示データ生成部14による表示装置の画面の遷移例について説明する。図2は、本発明の実施形態に係る画面遷移例を模式的に示す図である。図3は、図2の検体分析結果表示画面を模式的に示す図である。図4は、図2の分析結果表示画面を模式的に示す図である。図5は、図2の同一制御動作表示画面を模式的に示す図である。図6は、図2の同一試薬表示画面を模式的に示す図である。図7は、図2の同一キャリブレーション表示画面を模式的に示す図である。
【0029】
図2に示すように、分析結果表示データ生成部14によって、検体分析結果表示画面41、分析結果表示画面42、同一制御動作表示画面43、同一試薬表示画面44、同一キャリブレーション表示画面45及び同一機構表示画面46が表示装置40に表示される。これらの画面41〜46は、GUIを用いたユーザの操作によって遷移可能である。
【0030】
図3に示すように、検体分析結果表示画面41は、検体ID41aと、かかる検体ID41aに対応する分析結果一覧41bと、を表示する画面である。これらの表示領域は、GUIを用いて操作可能となっている。
【0031】
ここで、ユーザがマウスを用いて、分析結果一覧41b内の一の分析結果(例えば、GTP 100)を選択すると、かかる選択結果によって、分析結果表示用データ生成部14が、選択された分析結果に対応する分析結果表示画面42を表示させる分析結果表示用データを生成する。図4に示すように、分析結果表示画面42は、一の分析結果に対応する情報を表示する画面であり、検体ID42aと、試薬ID42bと、キャリブレーションID42cと、使用機構ID42dと、機構の制御動作42eと、分析結果42fと、を表示する画面である。これらの表示領域は、GUIを用いて操作可能となっている。なお、これらの表示は、ユーザによる選択操作を可能とするためのものであるので、キャリブレーション、機構、制御動作にIDが付与されていない場合には、それらを示す文字列による表示も可能である。また、画面上にボタンを配置し、その上にID又は文字列を表示してもよい。
【0032】
ここで、ユーザがマウスを用いて制御動作42eを選択すると、かかる選択結果によって、分析結果表示用データ生成部14が、選択された制御動作42eに対応する同一制御動作表示画面43を表示させる分析結果一覧表示データを生成する。図5に示すように、同一制御動作表示画面43は、一の制御動作に対応する複数の検体に関する情報を表示する画面であり、使用機構43aと、分析に使用された各機構を縦軸、各機構が検体に対して分析のための動作を行った時間を横軸とし、分析結果に対する機構の動作を示す折れ線グラフ43bと、を表示する画面である。ここでは、後工程で用いられる機構ほど下に表示されている。一の検体の分析工程で行われた機構の制御動作を直線で結ぶと、左上から右下への折れ線グラフが形成される。分析工程の途中で検体を子分注した場合には、折れ線グラフは分岐する。かかるグラフは、上下左右が反転していてもよく、縦軸、横軸を入れ替えてもよい。また、ユーザがマウスを用いて、折れ線グラフ43bの一つを選択すると、かかる選択結果によって、分析結果表示用データ生成部14が、分析結果表示画面42を表示させる分析結果表示データを生成する。
【0033】
また、図4の分析結果表示画面42において、ユーザがマウスを用いて試薬ID42bを選択すると、かかる選択結果によって、分析結果表示用データ生成部14が、選択された試薬ID42bに対応する複数の検体に関する情報を表示する画面である同一試薬表示画面44(図6参照)を表示させる分析結果一覧表示データを生成する。
また、図4の分析結果表示画面42が表示された状態で、ユーザがマウスを用いてキャリブレーションID42cを選択すると、かかる選択結果によって、分析結果表示用データ生成部14が、選択されたキャリブレーションID42cに対応する複数の検体に関する情報を表示する画面である同一キャリブレーション表示画面45(図7参照)を表示させる分析結果一覧表示データを生成する。
さらに、図4の分析結果表示画面42において、ユーザがマウスを用いて使用機構ID42dを選択すると、かかる選択結果によって、分析結果表示用データ生成部14が、選択された使用機構ID42dに対応する複数の検体に関する情報を表示する画面である同一機構表示画面46を表示させる分析結果一覧表示データを生成する。
【0034】
本発明の実施形態に係る分析結果表示用データ生成装置10は、同一検体の異なる分析結果を速やかに表示することができる。また、試薬、キャリブレーション、機構、機構の制御動作についても同様である。また、分析結果表示用データ生成装置10に他のコンピュータへの通信装置を組み合わせて分析結果表示用データ生成システムとすることも可能である。
【0035】
<テスト機能付きプログラム生成装置>
続いて、本発明の実施形態に係るテスト機能付きプログラム生成装置について説明する。図8は、本発明の実施形態に係るテスト機能付きプログラム生成装置を示すブロック図である。図8に示すように、本発明の実施形態に係るテスト機能付きプログラム生成装置110は、例えば、CPU、RAM、ROM及び入出力回路から構成されており、機能部として、プログラム取得部111と、テスト機能付きプログラム生成部112と、を備える。
【0036】
プログラム取得部111は、テスト対象プログラムと、テストプログラムのテスト用入力値及びそれに対応する正解出力値を含むテストプログラムと、を取得する。取得されたテスト対象プログラム及びテストプログラムは、テスト機能付きプログラム生成部112に出力される。
【0037】
テスト機能付きプログラム生成部112は、取得されたテスト対象プログラム及びテストプログラムに基づいて、テスト機能付きプログラムを生成する。生成されるテスト機能付きプログラムは、入力値がテスト用入力値と一致するか否かを判定する入力値判定ステップと、入力値がテスト用入力値と一致すると判定された場合に、テスト対象プログラムの出力値と正解出力値とが一致する場合に正常であると判定し、テスト対象プログラムの出力値と正解出力値とが一致しない場合に異常であると判定する出力値判定ステップと、判定結果を通知する通知ステップと、を含む。
【0038】
続いて、図9及び図10を参照して、本発明の実施形態に係るテスト機能付きプログラム生成方法について説明する。なお、本実施形態では、テスト対象プログラム及びテストプログラムはC言語で記述されているものとする。図9は、本発明の実施形態に係るテスト機能付きプログラム生成方法を示すフローチャートである。図10は、本発明の実施形態に係るテスト対象プログラム、テストプログラム及びテスト機能付きプログラムの一例を示す図である。
【0039】
図10の上段は、テスト対象プログラム121のソースコードを示すものであり(以下「ソースコード」との表記は省略)、このテスト対象プログラム121は、別のプログラムから呼び出されることで実行される。ちなみに、このテスト対象プログラム121の1行目は、入力される変数xと関数の出力がともに整数型であることを示して(宣言して)いる。3行目は、関数がy=x+1であることを示している。4行目は、計算結果のyが呼び出し元のプログラムにリターンされることを示している。
【0040】
また、図10の中段は、テストプログラム122を示すものである。ちなみに、このテストプログラム122の1行目は入力も出力もないことを示して(宣言して)いる。3行目は、変数であるxとyがともに整数型であることを示している。4行目は、xに1を代入することを示している。5行目は、引数をxとする関数(ここではテスト対象プログラム121)を呼び出して計算結果のyを得ることを示している。6行目は、計算結果のyが2であるかを確認することを示している。
【0041】
また、図10の下段は、テスト機能付きプログラム123を示すものであり、このテスト機能付きプログラム123は、テスト対象プログラム121の2行目の後に新しい3行目(if文)を追加するともに、テスト対象プログラム121の3行目の後に新しい5行目(if文)を追加したものである。ちなみに、このテスト機能付きプログラム123の3行目のif文は、変数であるxが1であれば__test_noに1を代入することを示している。また、5行目のif文は、__test_noが1であれば出力値であるyが2であるかを確認することを示している。
【0042】
この処理手順は、図9に示すように、入力された複数のテストプログラムに関する繰り返し(ステップS1,S2)により実現される。まず、この中で一つのテストプログラムに対する処理手順を表すステップ群S10について説明する。
【0043】
図9に示すように、まず、テスト機能付きプログラム生成部112が、入力されたテストプログラム122から、テスト対象プログラム121が呼び出されている行を抽出(検索)する(ステップS11)。テスト対象プログラム121の先頭の行には、テスト対象プログラム121である関数が定義されているため、その関数名をテストプログラム122から抽出すればよい。図10の例に限らず、テストプログラム122はテスト対象プログラム121を何らかの形で呼び出しているため、こうした行はかならず見つかる。本実施形態では、ステップS11において、テスト機能付きプログラム生成部112は、テストプログラム122の5行目を抽出する。テストプログラム122の5行目は、テスト対象プログラム121を呼び出す処理である。
【0044】
次に、テスト機能付きプログラム生成部112が、抽出された行(テストプログラム122の5行目)において、テストプログラム122の引数としてテスト対象プログラム121に渡されている変数がとる値、すなわちテスト対象プログラム121への入力式を検索する(ステップS12)。本実施形態では、テスト対象プログラム121が呼び出されている行から前方に、テスト対象プログラム121の引数に渡されている変数への代入文を検索することによってこの処理が行われる。本実施形態ではC言語を想定しているため、ステップS12において検索された関数呼び出しの引数の変数が、「=」の左に出現する式(4行目)がテストプログラム122から抽出される。本実施形態では、ステップS12において、テスト機能付きプログラム生成部112は、テスト対象プログラム121の引数に渡される式が"1"であるということを判断する。
【0045】
本実施形態では、説明の簡略化のためにこうした手法を用いているので、入力値を用意するために条件分岐を含むようなテストプログラムには適用できないが、一般的にはテストプログラムで条件分岐が必要なケースは限られていると考えられるため、こうした簡易な方法でも多くの場合に適用できると期待できる。
【0046】
次に、テスト機能付きプログラム生成部112が、テスト対象プログラム121の先頭部に、引数(入力値)が、ステップS12において検索された代入文において代入されている式と等しいかどうかを確認し、等しいようであれば、実行中のテストプログラム122を示す状態変数"__test_no"に、本処理手順に入力された複数のテストプログラムに関してのステップ群S10の実行の繰り返しの回数、すなわち本方法においてステップ群S10を何回目に実行しているか、を代入する処理を追加する(ステップS13)。本実施形態では、プログラミング言語はC言語であることを想定しているため、条件分岐であるif文を用いて代入されている式と等しいかどうかを確認する処理が追加される。ここで、実行中のテストプログラム122を示す状態変数は、テスト対象プログラム121の他の変数と名前が衝突しないように選んだ変数である。衝突しないようであれば他の名前を選んでもよい。本実施形態では、ステップS13において、テスト機能付きプログラム生成部112は、テスト対象プログラム121を元にしたテスト機能付きプログラム123において、テスト対象プログラム121における3行目の前に、"if (x == 1) { __test_no = 1; }"という処理を追加する(図10の点線矩形枠部分)。
【0047】
次に、テスト機能付きプログラム生成部112が、テストプログラム122の抽出された行から後方に、テスト対象プログラム121の返却値を代入している変数の値に対して条件のチェックを行っている行、すなわち出力値条件式を検索する(ステップS14)。C言語のプログラムにおいては、条件のチェックはassertというライブラリ関数の呼び出しで行われることが多いため、本実施形態でも、テスト対象プログラムの返却値を代入している変数を含む式を引数に持つassertが検索される。本実施形態では、ステップS14において、テスト機能付きプログラム生成部112は、条件としてテストプログラム122の6行目を抽出する。
【0048】
最後に、テスト機能付きプログラム生成部112が、テスト対象プログラム121のreturn y;の前に、実行中のテストプログラムを表す変数がステップ群S10の実行の繰り返しの回数と等しいかどうかをif文で比較し、等しければステップS14において検索されたassertの引数の条件と同じ条件を引数にprint_okという関数を呼び出す処理、すなわち出力値を確認するステップを追加する(ステップS15)。本実施形態では、ステップS15において、テスト機能付きプログラム生成部112は、テスト対象プログラム121を元にしたテスト機能付きプログラム123において、テスト対象プログラム121の4行目の前に、"if (__test_no == 1) { print_ok(y == 2) }"という処理を追加する(図10の点線矩形枠部分)。結果として、テスト機能付きプログラム生成部112は、生成したテスト機能付きプログラムを123を出力する。ここで、図10における点線矩形枠部分が、テスト対象プログラム121に追加されたテスト機能に相当する(以下同様)。図10の例では、1つのテストプログラム122を用いるので、ステップ群S10は1回のみ実行される。
【0049】
ここで、print_okは、ログファイルに条件が成立しているかどうかを記録する関数である。本実施形態ではログファイルに記録する方式をとっているが、画面に出力したり、通信によって他のコンピュータに結果を送信してもよい。
【0050】
続いて、複数のテストプログラムを用いる実施形態について説明する。図11は、本発明の実施形態に係るテスト対象プログラム、テストプログラム及びテスト機能付きプログラムの一例を示す図である。
【0051】
まず、テスト機能付きプログラム生成部112は、テストプログラム127に関してステップ群S10を実行する。ステップS11では、テストプログラム127の5行目が抽出され、ステップS12では、テスト対象プログラム126の引数に渡される式が”1”であるということがわかる。続いて、ステップS13では、テスト対象プログラム126を元にしたテスト機能付きプログラム129において、テスト対象プログラム126における3行目の前に,"if (x == 1) { __test_no = 1; }"という処理が追加される。続いて、ステップS14では、条件としてテストプログラム127の6行目が抽出され、ステップS15では、テスト対象プログラム126を元にしたテスト機能付きプログラム129において、テスト対象プログラム126における8行目の前に,"if (__test_no == 1) { print_ok(y == 1) }"という処理が追加される。
【0052】
続いて、テスト機能付きプログラム生成部112は、テストプログラム128に関して2順目となるステップ群S10を実行する。ステップS11では、テストプログラム128の5行目が抽出され、ステップS12では、テスト対象プログラム126の引数に渡される式が”1”であるということがわかる。続いて、ステップS13では、テスト対象プログラム126を元にしたテスト機能付きプログラム129において、テスト対象プログラム126における3行目の前に,"if (x == -1) { __test_no = 2; }"という処理が追加される。続いて、ステップS14では、条件としてテストプログラム128の6行目が抽出され、ステップS15では、テスト対象プログラム126を元にしたテスト機能付きプログラム129において、テスト対象プログラム126における8行目の前に,"if (__test_no == 2) { print_ok(y == -1) }"という処理が追加される。図11の例では、2つのテストプログラム127,128を用いるので、ステップ群S10は、テストプログラム127,128のそれぞれについて1回ずつ、計2回実行される。
これらの結果、テスト機能付きプログラム生成部112は、テスト機能付きプログラム129を生成することができる。
【0053】
制御ソフトウェアにはさまざまな実装形態があり、上に述べた関数プログラムのように結果が関数呼び出しの戻り値として返されるものばかりではない。他に考えられる実施形態として、ここでは2つの例を説明する。
1つ目は制御に時間を要するために、制御プログラムとしては入力を受け取った後にすぐに親プログラムに制御を返すものである。この実施形態では、制御が終了した後に同じプログラム、あるいは他の制御プログラムを呼び出すことにより、制御結果を得ることができる。制御に要する時間の経過後、あるいは制御が終わるまで繰り返し、親プログラムから制御プログラムを呼び出すことにより制御結果を得ることができる。
2つ目は制御対象をオブジェクトとして実装するものである。この実施形態では、親プログラムからの制御依頼はオブジェクトに対してメソッド呼び出しをすることにより行うことができる。制御結果は、同じオブジェクトの他のメソッド呼び出しをすることによって得られるか、あるいは同じオブジェクトのメンバの値を確認することによって得られる。メソッド呼び出しにより制御結果を得る場合は、前記した入力を受け取った後にすぐに親プログラムに制御を返す例と類似しているため、ここではメンバの値を確認することにより制御結果を得るプログラムについて説明する。
【0054】
まず、入力を受け取った後にすぐに親プログラムに制御を返す制御プログラムでの例について説明する。図12は、本発明の他の実施形態に係るテスト機能付きプログラム生成方法を示すフローチャートである。図13は、本発明の他の実施形態に係るテスト対象プログラム、テストプログラム及びテスト機能付きプログラムの一例を示す図である。
【0055】
本実施形態では、テスト対象プログラムは、入力を受け取った後に何らかの処理を行いすぐに親プログラムに制御を返す関数と、一定時間後に呼び出すことにより出力を返す別の関数の組からなるとする。すなわち、テスト対象プログラムは、図13に示すように、入力を受け取るプログラム131と、出力を返すプログラム132と、を備える。この例に見られるように、入力と出力を別の関数とする場合、入力を受け取るプログラムから何らかの識別子を返し、出力を返すプログラムに得られた識別子を渡すことにより出力を得るのが一般的な設計である。
【0056】
図13の上から一番目は、テスト対象の入力を受け取る受け取りプログラム(テスト対象プログラム)131を示すものであり、このテスト対象プログラム131は、別のプログラム(この例ではテストプログラム133の6行目)から呼び出されることで実行される。ちなみに、このテスト対象プログラム131の4行目は、xを引数とするdo_something関数の計算結果の値をhandleという変数に代入することを示している。5行目は、計算結果の(計算結果が代入された)handleが呼び出し元のプログラムに返されるされることを示している。
【0057】
図13の上から2番目は、テスト対象の出力を返す返却プログラム(テスト対象プログラム)132を示すものであり、このテスト対象プログラム132は、別のプログラム(この例ではテストプルグラム133の8行目)から呼び出されることで実行される。ちなみに、このテスト対象プログラム132の4行目は、handleを引数とするget_result関数の計算結果の値をresultという変数に代入することを示している。5行目は、計算結果の(計算結果が代入された)resultが呼び出し元のプログラムにリターンされることを示している。
【0058】
図13の上から3番目は、テストプログラム133を示すものである。ちなみに、このテストプログラム133の5行目は、xに1を代入することを示している。6行目は、引数をxとする関数(ここではテスト対象プログラム131)を呼び出して計算結果のhandleを得ることを示している。7行目は、50秒間待機することを示している。8行目は、handleを引数とする関数(ここではテスト対象プログラム132)を呼び出して計算結果をyという変数に代入することを示している。9行目は、計算結果の(計算結果が代入された)yが2であるかを確認することを示している。
【0059】
図13の下から2番目はテスト対象プログラム131に対応するテスト機能付きプログラム134を示すものであり、このテスト機能付きプログラム134は、テスト対象プログラム131の4行目の後に新しい5行目から7行目(if文)を追加している。ちなみに、テスト機能付きプログラム134の追加されたif文は、「handle」と「現在時刻」と「1」とを対として(対応付けて)記憶領域に記憶するものである。ここで、「1」は後記するように__test_noの一例に相当する。
【0060】
図13の一番下は、テスト対象プログラム132に対応するテスト機能付きプログラム135を示すものであり、このテスト機能付きプログラム135は、テスト対象プログラム132の3行目の後に新しい4行目と5行目を追加し、かつ、テスト対象プログラム132の4行目の後に新しい7行目〜11行目を追加している。ちなみに、追加された7行目は、記憶領域に記憶された値を読み出すものであり、ここでは、テスト機能付きプログラム134により記憶された「handle」と「現在時刻」と「数値」とを、「handle」、「スタート時刻」、「__test_no」として読み出している。また、追加された8行目からのif文は、__test_noが1ならば、現在時刻とスタート時刻との差が50であるか否か、かつ、resultが2であるか否かを確認するものである。
【0061】
図12に示すように、本方法は、入力された複数のテストプログラムに関する繰り返し(ステップS21,S22)により実現される。まず、この中で一つのテストプログラムに対する処理手順を表すステップ群S30について説明する。
【0062】
まず、テスト機能付きプログラム生成部112は、入力されたテストプログラム133から、テスト対象の入力を受け取る受け取りプログラム131が呼び出されている行を抽出する(ステップS31)。テストプログラム133は受け取りプログラム131を何らかの形で呼び出しているため、こうした行はかならず見つかる。本実施形態では、ステップS31において、テスト機能付きプログラム生成部112は、テストプログラム133の6行目を抽出する。テストプログラム133の6行目は、受け取りプログラム131を呼び出す処理である。
【0063】
次に、テスト機能付きプログラム生成部112は、抽出された行(テストプログラム133の6行目)において、テストプログラムの引数として渡されている変数がとる値、すなわち受け取りプログラム131への入力式を検索する(ステップS32)。本実施形態では、受け取りプログラム131が呼び出されている行から前方に、受け取りプログラム131の引数に渡されている変数への代入文を検索することによってこの処理が行われる。本実施形態では、ステップS32において、テスト機能付きプログラム生成部112は、受け取りプログラム131の引数に渡される式が"1"であるということを判断する。
ここまでは、前記ステップS11,12の手順と同じである。
【0064】
次に、テスト機能付きプログラム生成部112は、受け取りプログラム131のreturnhandle;の前に、引数が、ステップS31において検索された代入文において代入されている式と等しいかどうかをif文で確認し、等しいようであれば、register_handleというライブラリ関数を用いて、入力を受け取る処理によって得られた識別子に、現在時刻とステップS31によるステップ群S30の繰り返し回数とを関連付けて記憶する処理を追加する(ステップS33)。
【0065】
ここで、register_handleは、第1引数の値に第2引数および第3引数の値を関連付けて記憶する関数である。こうして記憶した値はsearch_handleという別のライブラリ関数を呼び出すことにより取得することができる。
【0066】
入力を受け取った後にすぐに親プログラムに制御を返すテスト対象プログラムをテストするテストプログラム133では、入力をしてから出力を得るまでの間に何らかの待ち時間を設けるのが一般的である。そこで本実施形態では、テストプログラムは入力と出力の間でsleepという関数を呼び出すことにより一定時間待つ処理を行っていると仮定する。本実施形態では、ステップS33において、テスト機能付きプログラム生成部112は、受け取りプログラム131を元にしたテスト機能付きプログラム134において、受け取りプログラム131における5行目の前に、テスト機能付きプログラム134の5行目〜7行目の処理を追加する。
【0067】
次に、テスト機能付きプログラム生成部112は、テストプログラム133からsleepを呼び出している行を検索し、その引数を待ち時間として抽出する(ステップS34)。本実施形態では、ステップS34において、テスト機能付きプログラム生成部112は、テストプログラム133の7行目を抽出する。
【0068】
次に、テスト機能付きプログラム生成部112は、テストプログラム133からテスト対象の出力を返す返却プログラム132が呼び出されている行(8行目)を抽出し、その呼び出しの戻り値(返却値ともいう)を代入している変数の値に対して条件のチェックを行っている行、すなわち返却プログラム132からの出力値条件式を検索する(ステップS35)。これも前記したステップS14と同様にassertの呼び出しを検索する。本実施形態では、ステップS35において、テスト機能付きプログラム生成部112は、テストプログラム133の9行目を検索する。
【0069】
次に、テスト機能付きプログラム生成部112は、ステップS34,S35で得られた待ち時間、出力値と、ステップ群S30の繰り返し回数を元にし、待ち時間と出力値を確認するステップを返却プログラム132のreturn result;の前に追加する(ステップS36)。まず、テスト機能付きプログラム生成部112は、返却プログラム132の引数をsearch_handleに渡し、受け取りプログラム131の実行時にregister_handleによって記憶された現在時刻とステップ群S30の繰り返し回数を取得する処理を追加する。このsearch_handleの追加はステップ群S30の繰り返しの最初の1回でだけ行われる。次に、テスト機能付きプログラム生成部112は、search_handleの呼び出しによって得られた繰り返し回数とステップ群S30の繰り返し回数が等しいかどうかを比較し、等しいならば、現在の時刻がregister_handleによって記憶された現在時刻からステップS34によって得られた待ち時間だけ経過したものになっているかどうかの確認、及び返却プログラム132からの返却値がステップS35によって得られた出力値になっているかどうかの確認をassertという関数の呼び出しによって行う処理を追加する。本実施形態では、ステップS36において、テスト機能付きプログラム生成部112は、返却プログラム132を元にしたテスト機能付きプログラム135において、返却プログラム132における5行目の前に、テスト機能付きプログラム135の7行目〜11行目の処理を追加する。
【0070】
なお、制御対象をオブジェクトとして実装する方式が、制御結果を同じオブジェクトの他のメソッド呼び出しをすることによって得られる場合には、前記した入力を受け取る関数と出力を返す関数との組で制御を行う場合と同様と考えられる。
【0071】
そこで、本実施形態では、まず、制御依頼をメソッド呼び出しによって行い、メンバの値を確認することにより制御結果を得るテスト対象プログラムを、制御結果をメソッド呼び出しによって得るテスト機能付きプログラムに変換する。テスト機能付きプログラムは、入力を受け取る関数と出力を返す関数との組の制御プログラムを変換する手順である本方法と同様の手順で変換することができるため、この2つの変換を組み合わせることによって、テスト対象プログラムにテストプログラムの入出力値チェックのステップを追加することができる。
【0072】
ここでは、メンバの値を確認することにより制御結果を得るテスト対象プログラムを、制御結果をメソッド呼び出しによって得るテスト機能付きプログラムに変換する手順を例に挙げて説明する。図14は、本発明の他の実施形態に係る変換前のテスト対象プログラム及びテストプログラム、並びに、変換後のテスト対象プログラム及びテストプログラムの一例を示す図である。図15は、本発明の他の実施形態に係るテスト機能付きプログラムの一例を示す図である。
【0073】
図14に示すように、まず、テスト機能付きプログラム生成部112は、テストプログラム142のassertの中でクラスClsのメンバであるyを参照する。このように変換前のテスト対象プログラム141のassertの中で参照されているクラスのメンバ全てについて、そのメンバの値を返すだけの関数をテスト対象プログラム141のクラスに追加して変換後のテスト対象プログラム143を生成する。この実施形態では、変換後のテスト対象プログラム143の3行目の関数get_yがそれにあたる。
【0074】
また、テスト機能付きプログラム生成部112は、テストプログラム142を、クラスClsのメンバyを直接参照しないように、まずget_yを呼び出して返却値を変数に代入し、得られた値をassertによって確認するように変更して変換後のテストプログラム144を生成する。すなわち、変換後のテストプログラム144の5行目〜6行目がそれにあたる。
【0075】
以上のような手順により、テスト対象プログラム141及びテストプログラム142を、制御結果をメソッド呼び出しによって得るテスト対象プログラム143及びテストプログラム144に変換することができ、それをさらに前記した方法と同様の手順で変換することにより、テスト対象プログラム143にテストプログラム144の入出力値チェックのステップを追加して、図15に示すテスト機能付きプログラム145を生成することができる。
【0076】
本発明の実施形態に係るテスト機能付きプログラム生成装置は、実機において問題が発生しているかを検証することが可能なテスト機能付きプログラムを生成することができる。また、かかるテスト機能付きプログラムは、低コストで制御ソフトウェアの信頼性を向上させることができる。
【0077】
<制御動作判定システム>
最後に、実際に図9に記載の方法を用い、自動分析装置の試薬ディスク、または検体ディスクを回転させる制御プログラムを変換し、動作チェックを追加する制御動作判定装置を備える制御動作判定システムについて説明する。図16は、本発明の実施形態に係る制御動作判定システムを模式的に示す図である。図16に示すように、本発明の実施形態に係る制御動作判定システムは、例えば、CPU、RAM、ROM及び入出力回路から構成されており、機能部として、制御動作判定装置210と、自動分析装置230と、表示装置240と、を備えている。
【0078】
自動分析装置230は、試薬ディスク(又は検体ディスク)231と、試薬ディスク(又は検体ディスク)231の外周に配置された複数の試薬ボトル(又は検体ボトル)232と、複数の試薬ボトル(又は検体ボトル)232に対応して配置された複数のRFIDタグ233と、RFIDリーダ234と、を備える。RFIDタグ233は、RFIDリーダ234に対向して停止する可能性のある試薬ディスク(又は検体ディスク)231上の全ての位置に配置されている。
【0079】
図17を参照して、この試薬ディスク231を備えた自動分析装置230の動作制御を行うための関数について考える。試薬ディスク231の現在の回転位置は、get_current_posで取得される。試薬ディスク231の回転制御は、rotate_diskで行われる。rotate_diskには、回転して停止させたい試薬ディスク231の回転位置の差分が、引数として与えられる。
【0080】
試薬ディスク231上の複数の試薬ボトル232のID一覧が、配列に保持されている。その変数名を、reagentとする。配列の添え字に試薬ディスク231の回転位置を与えると試薬ボトル232のIDが得られる。
【0081】
これらを元に、引数として試薬ボトル232のIDを与えると、その試薬ボトル232の位置まで回転するrotate_reagent_diskを実装することを考える。実装した結果が、図17のテスト対象プログラム151である。
【0082】
テスト対象プログラム151をテストするプログラムがテストプログラム152である。テストプログラム152は、6行目のassert呼び出しにより、制御終了後の試薬ディスク231の回転位置にある試薬ボトル232のIDが、rotate_reagent_diskの引数に渡した試薬ボトル232のIDと等しいか否かを確認している。
【0083】
ここで、テスト対象プログラム151及びテストプログラム152を用いて図9の方法を実行すると、テスト機能付きプログラム153が得られる。テスト機能付きプログラム153は、変数reagent_idにbottle_idと同じ値を代入した後にテスト機能付きプログラム153を呼び出すことにより、制御終了後に試薬ディスク231の回転位置にある試薬ボトル232のIDが、rotate_reagent_diskの引数に渡した試薬ボトル232のIDと等しいか否かを確認することができる。12行目〜13行目の処理がそれにあたる。
【0084】
かかるテスト機能付きプログラムを実装した装置が、制御動作判定装置210である。図16に示すように、制御動作判定装置210は、機能部として、入力値取得部211と、入力値判定部212と、出力値生成部213と、出力値判定部214と、通知部215と、を備える。
【0085】
入力値取得部211は、RFIDリーダ234から出力された入力値、すなわち試薬ボトル232のIDを取得する。取得された入力値は、入力値判定部212および出力値生成部213に出力される。
【0086】
入力値判定部212は、取得された入力値が、予め記憶されたテストプログラムのテスト用入力値と一致するか否かを判定する。判定結果は、出力値判定部214に出力される。
【0087】
出力値生成部213は、取得された入力値を予め記憶されたテスト対象プログラムに代入することによって、かかる入力値に対応する出力値を生成する。生成された出力値は、出力値判定部214に出力される。
【0088】
出力値判定部214は、入力値がテスト用入力値と一致すると判定された場合に、出力値生成部213によって生成された出力値と予め記憶されたテストプログラムの正解出力値とが一致するか否かを判定する。すなわち、出力値判定部214は、出力値と正解出力値とが一致する場合には、自動分析装置230の制御動作は正常であると判定し、出力値と正解出力値とが一致しない場合には、自動分析装置230の制御動作は異常であると判定する。判定結果は、通知部215に出力される。
【0089】
通知部215は、判定結果を表示装置240に表示させる判定結果表示データを生成し、表示装置240に出力する。
【0090】
本発明の実施形態に係る制御動作判定装置210は、自動分析装置230の制御動作が正常であるか否かを判定することができる。
【0091】
以上、本発明の実施形態について説明したが、本発明は前記実施形態に限定されず、本発明の要旨を逸脱しない範囲で適宜設計変更可能である。本発明は、コンピュータを分析結果表示用データ生成装置、テスト機能付きプログラム生成装置又は制御動作判定装置として機能させるプログラムとしても実現可能である。
【図面の簡単な説明】
【0092】
【図1】本発明の実施形態に係る分析結果表示用データ生成装置を示すブロック図である。
【図2】本発明の実施形態に係る画面遷移例を模式的に示す図である。
【図3】図2の検体分析結果表示画面を模式的に示す図である。
【図4】図2の分析結果表示画面を模式的に示す図である。
【図5】図2の同一制御動作表示画面を模式的に示す図である。
【図6】図2の同一試薬表示画面を模式的に示す図である。
【図7】図2の同一キャリブレーション表示画面を模式的に示す図である。
【図8】本発明の実施形態に係るテスト機能付きプログラム生成装置を示すブロック図である。
【図9】本発明の実施形態に係るテスト機能付きプログラム生成方法を示すフローチャートである。
【図10】本発明の実施形態に係るテスト対象プログラム、テストプログラム及びテスト機能付きプログラムの一例を示す図である。
【図11】本発明の実施形態に係るテスト対象プログラム、テストプログラム及びテスト機能付きプログラムの一例を示す図である。
【図12】本発明の他の実施形態に係るテスト機能付きプログラム生成方法を示すフローチャートである。
【図13】本発明の他の実施形態に係るテスト対象プログラム、テストプログラム及びテスト機能付きプログラムの一例を示す図である。
【図14】本発明の他の実施形態に係る変換前のテスト対象プログラム及びテストプログラム、並びに、変換後のテスト対象プログラム及びテストプログラムの一例を示す図である。
【図15】本発明の他の実施形態に係るテスト機能付きプログラムの一例を示す図である。
【図16】本発明の実施形態に係る制御動作判定システムを模式的に示す図である。
【図17】本発明の実施形態に係るテスト対象プログラム、テストプログラム及びテスト機能付きプログラムの一例を示す図である。
【符号の説明】
【0093】
10 分析結果表示用データ生成装置
11 分析結果取得部
12 記憶部
13 ユーザ入力情報取得部
14 分析結果表示データ生成部
110 テスト機能付きプログラム生成装置
111 プログラム取得部
112 テスト機能付きプログラム生成部
210 制御動作判定装置
211 入力値取得部
212 入力値判定部
213 出力値生成部
214 出力値判定部
215 通知部

【特許請求の範囲】
【請求項1】
検体の分析結果及びそれに対応する分析根拠情報を表示装置に表示させる分析結果表示用データ生成装置であって、
検体のIDと、当該検体の分析結果と、当該検体の分析結果の根拠となる分析根拠情報と、を取得する分析結果取得部と、
検体ごとに、前記検体のIDと、当該検体の分析結果と、当該検体の分析の根拠となる分析根拠情報と、を関連付けて記憶する記憶部と、
前記記憶部に記憶された前記検体のIDと、当該検体の分析結果と、当該検体の分析根拠情報と、を前記表示装置に表示させる分析結果表示データを生成する分析結果表示データ生成部と、
前記分析結果表示データにおける分析根拠情報を選択する分析根拠情報選択部と、
を備え、
前記分析結果表示データ生成部は、選択された前記分析根拠情報に基づいて前記記憶部を参照し、当該分析根拠情報と同一分析根拠情報に関連付けられた分析結果を前記表示装置に表示させる分析結果一覧表示データを生成する
ことを特徴とする分析結果表示用データ生成装置。
【請求項2】
前記分析根拠情報は、分析に使用された試薬、前記試薬のキャリブレーション、分析に使用された機構、及び、分析に使用された機構の制御動作の少なくとも一つを備える
ことを特徴とする請求項1に記載の分析結果表示用データ生成装置。
【請求項3】
前記分析根拠情報は、分析に使用された機構の制御動作を備えており、
前記分析結果一覧表示データは、分析に使用された各機構を一つの軸、各機構が検体に対する動作を行った時間をもう一つの軸とし、前記分析結果に対する前記機構の動作を折れ線グラフで描画するデータである
ことを特徴とする請求項1に記載の分析結果表示用データ生成装置。
【請求項4】
検体の分析結果及びそれに対応する分析根拠情報を表示装置に表示させる分析結果表示用データ生成方法であって、
検体のIDと、当該検体の分析結果と、当該検体の分析結果の根拠となる分析根拠情報と、を取得する分析結果取得ステップと、
検体ごとに、前記検体のIDと、当該検体の分析結果と、当該検体の分析の根拠となる分析根拠情報と、を関連付けて記憶する記憶ステップと、
前記記憶部に記憶された前記検体のIDと、当該検体の分析結果と、当該検体の分析根拠情報と、を前記表示装置に表示させる分析結果表示データを生成する分析結果表示データ生成ステップと、
前記分析結果表示データにおける分析根拠情報を選択する分析根拠情報選択ステップと、
選択された前記分析根拠情報に基づいて前記記憶部を参照し、当該分析根拠情報と同一分析根拠情報に関連付けられた分析結果を前記表示装置に表示させる分析結果一覧表示データを生成する分析結果一覧表示データ生成ステップと、
を含むことを特徴とする分析結果表示用データ生成方法。
【請求項5】
検体の分析結果及びそれに対応する分析根拠情報を表示装置に表示させるためにコンピュータを、
検体のIDと、当該検体の分析結果と、当該検体の分析結果の根拠となる分析根拠情報と、を取得し、検体ごとに、前記検体のIDと、当該検体の分析結果と、当該検体の分析の根拠となる分析根拠情報と、を関連付けて記憶部に記憶させる分析結果取得部、
前記記憶部に記憶された前記検体のIDと、当該検体の分析結果と、当該検体の分析根拠情報と、を前記表示装置に表示させる分析結果表示データを生成する分析結果表示データ生成部、及び、
前記分析結果表示データにおける分析根拠情報を選択する分析根拠情報選択部、
として機能させ、
分析結果表示データ生成部に、選択された前記分析根拠情報に基づいて前記記憶部を参照させ、当該分析根拠情報と同一分析根拠情報に関連付けられた分析結果を前記表示装置に表示させる分析結果一覧表示データを生成させる
ことを特徴とする分析結果表示用データ生成プログラム。
【請求項6】
テストの対象となるテスト対象プログラムと、前記テスト対象プログラムをテストするテストプログラムとを取得するプログラム取得部を備えるとともに、前記テスト対象プログラムの機能に前記テストプログラムが正常に動作しているか否かをテストする機能を付加したテスト機能付きプログラムを生成するテスト機能付きプログラム生成部を備えるテスト機能付きプログラム生成装置であって、
前記テストプログラムには、前記テスト対象プログラムが正常に動作しているときのテスト用入力値と正解出力値とが記述されており、
前記テスト機能付きプログラム生成部は、
前記テストプログラムを解析し、前記テスト対象プログラムに対して、
プログラムへの入力値が前記テスト用入力値と一致するか否かを判定する入力値判定ステップと、
前記入力値が前記テスト用入力値と一致すると判定された場合において、プログラムの出力値と前記正解出力値とが一致しないときに、プログラムは異常であると判定するステップと、
前記判定結果を出力するステップと、
を付加することによって前記テスト機能付きプログラムを生成する
ことを特徴とするテスト機能付きプログラム生成装置。
【請求項7】
前記テスト対象プログラムは、前記入力値としてパラメータを受け取るとともに前記出力値として戻り値を返す関数であり、
前記テストプログラムは、前記テスト対象プログラムにテスト用入力値を渡すとともに前記テスト対象プログラムからの前記戻り値が前記正解出力値と等しいか否かを判定するプログラムである
ことを特徴とする請求項6に記載のテスト機能付きプログラム生成装置。
【請求項8】
前記テスト対象プログラムは、前記入力値を受け取って制御を返す第一の関数と、一定時間後に呼び出されることによって前記出力値を返す第二の関数と、を備えるプログラムであり、
前記テストプログラムは、前記第一の関数にテスト用入力値を渡し、一定時間後に前記第二の関数を呼び出すことによって、前記第二の関数によって返される前記出力値が前記正解出力値と等しいか否かを判定するプログラムである
ことを特徴とする請求項6に記載のテスト機能付きプログラム生成装置。
【請求項9】
前記テスト対象プログラムは、前記入力値としてメソッド呼び出しを受け取るとともに当該メソッド呼び出しに応じて変化させた内部状態を前記出力値として返すオブジェクトであり、
前記テストプログラムは、元プログラムにテスト用入力値を渡すとともに当該テスト用入力値に応じて変化させた前記内部状態が前記正解出力値と等しいか否かを判定するプログラムである
ことを特徴とする請求項6に記載のテスト機能付きプログラム生成装置。
【請求項10】
テストの対象となるテスト対象プログラムと、前記テスト対象プログラムをテストするテストプログラムとを取得するプログラム取得ステップと、
前記テスト対象プログラムの機能に前記テストプログラムが正常に動作しているか否かをテストする機能を付加したテスト機能付きプログラムを生成するテスト機能付きプログラム生成ステップと、を含むテスト機能付きプログラムをコンピュータにより生成するテスト機能付きプログラム生成方法であって、
前記テストプログラムには、前記テスト対象プログラムが正常に動作しているときのテスト用入力値と正解出力値とが記述されており、
前記コンピュータは、前記テスト機能付きプログラム生成ステップにおいて、
前記テストプログラムを解析し、前記テスト対象プログラムに対して、
プログラムへの入力値が前記テスト用入力値と一致するか否かを判定する入力値判定ステップと、
前記入力値が前記テスト用入力値と一致すると判定された場合において、プログラムの出力値と前記正解出力値とが一致しないときに、プログラムは異常であると判定するステップと、
前記判定結果を出力するステップと、
を付加することによって前記テスト機能付きプログラムを生成する
ことを特徴とするテスト機能付きプログラム生成方法。
【請求項11】
コンピュータを、
テストの対象となるテスト対象プログラムと、前記テスト対象プログラムをテストするテストプログラムとを取得するプログラム取得部、
前記テスト対象プログラムの機能に前記テストプログラムが正常に動作しているか否かをテストする機能を付加したテスト機能付きプログラムを生成するテスト機能付きプログラム生成部、
として機能させるテスト機能付きプログラム生成プログラムであって、
前記テストプログラムには、前記テスト対象プログラムが正常に動作しているときのテスト用入力値と正解出力値とが記述されており、
前記テスト機能付きプログラム生成部は、
前記テストプログラムを解析し、前記テスト対象プログラムに対して、
プログラムへの入力値が前記テスト用入力値と一致するか否かを判定する入力値判定ステップと、
前記入力値が前記テスト用入力値と一致すると判定された場合において、プログラムの出力値と前記正解出力値とが一致しないときに、プログラムは異常であると判定するステップと、
前記判定結果を出力するステップと、
を付加することによって前記テスト機能付きプログラムを生成する
ことを特徴とするテスト機能付きプログラム生成プログラム。
【請求項12】
テスト対象プログラムと、前記テスト対象プログラムのテストプログラムのテスト用入力値とそれに対応する正解出力値と、を用いて制御動作が正常であるか否かを判定する制御動作判定装置であって、
入力値を取得する入力値取得部と、
前記入力値が前記テスト用入力値と一致するか否かを判定する入力値判定部と、
前記入力値を用いて前記テスト対象プログラムを実行することによって、出力値を生成する出力値生成部と、
前記入力値が前記テスト用入力値と一致すると判定された場合に、前記出力値と前記正解出力値とが一致する場合に正常であると判定し、前記出力値と前記正解出力値とが一致しない場合に異常であると判定する出力値判定部と、
判定結果を通知する通知部と、
を備えることを特徴とする制御動作判定装置。
【請求項13】
テスト対象プログラムと、前記テスト対象プログラムのテストプログラムのテスト用入力値とそれに対応する正解出力値と、を用いて制御動作が正常であるか否かを判定する制御動作判定方法であって、
入力値を取得する入力値取得ステップと、
前記入力値が前記テスト用入力値と一致するか否かを判定する入力値判定ステップと、
前記入力値を用いて前記テスト対象プログラムを実行することによって、出力値を生成する出力値生成ステップと、
前記入力値が前記テスト用入力値と一致すると判定された場合に、前記出力値と前記正解出力値とが一致する場合に正常であると判定し、前記出力値と前記正解出力値とが一致しない場合に異常であると判定する出力値判定ステップと、
判定結果を通知する通知ステップと、
を含むことを特徴とする制御動作判定方法。
【請求項14】
テスト対象プログラムと、前記テスト対象プログラムのテストプログラムのテスト用入力値とそれに対応する正解出力値と、を用いて制御動作が正常であるか否かを判定するためにコンピュータを、
入力値を取得する入力値取得部、
前記入力値が前記テスト用入力値と一致するか否かを判定する入力値判定部、
前記入力値を用いて前記テスト対象プログラムを実行することによって、出力値を生成する出力値生成部、
前記入力値が前記テスト用入力値と一致すると判定された場合に、前記出力値と前記正解出力値とが一致する場合に正常であると判定し、前記出力値と前記正解出力値とが一致しない場合に異常であると判定する出力値判定部、及び
判定結果を通知する通知部、
として機能させることを特徴とする制御動作判定プログラム。
【請求項15】
請求項12に記載の制御動作判定装置を備えた制御動作判定システムであって、
前記テスト対象プログラムによって制御される機構は、ディスクの外周に設けられた複数のRFIDタグの一つを読み取ることによって前記ディスクの回転位置を検出する自動分析装置であり、
前記入力値は、前記RIFDタグを読み取った結果であり、
前記出力値は、前記RFIDタグを読み取った結果に基づく前記ディスクの回転位置である
ことを特徴とする制御動作判定システム。
【請求項16】
前記ディスクは、前記複数のRFIDタグに対応付けられた複数の試薬を保持する試薬ディスク又は前記複数のRFIDタグに対応付けられた複数の検体を保持する検体ディスクである
ことを特徴とする請求項15に記載の制御動作判定システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate