(57)【特許請求の範囲】
【請求項１】
その上に複数個のセルを表示することが出来る観察テンプレートを含んでいる医療用イメージング・システムで、観察テンプレート上のセルのオーバーラップを検出して補正するセル・オーバーラップ検出及び補正方法であって、
１）第１のセルが観察テンプレート上の他のセルとオーバーラップしているかを検出するステップ、及び
２）セルのオーバーラップが検出された場合、
（ａ）最小オーバーラップ補正距離Ｄｍｉｎを決定し、
（ｂ）前記第１のセルをこうして決定された最小オーバーラップ補正距離Ｄｍｉｎだけ移動させ、
（ｃ）第１のセルを移動させた後、第１のセルが別のセルとオーバーラップしているかどうかを検出するステップを含んでおり、
前記最小距離Ｄｍｉｎを決定する前記ステップは、
（ａ１）前記第１のセルの頂部からそれとオーバーラップするセルの底部までの距離を決定するステップ、
（ａ２）前記第１のセルの底部からそれとオーバーラップするセルの頂部までの距離を決定するステップ、
（ａ３）前記第１のセルの左辺からそれとオーバーラップするセルの右辺までの距離を決定するステップ、
（ａ４）前記第１のセルの右辺からそれとオーバーラップするセルの左辺までの距離を決定するステップ、及び
（ａ５）前記決定された距離のうちの最短距離を前記最小距離Ｄｍｉｎとして選択するステップを含んでおり、更に、前記ステップ２）（ｃ）でセルのオーバーラップが検出された場合、前記ステップ２）（ａ）に戻り、前記ステップ２）（ａ）及び２）（ｂ）を所定の回数だけ実行するステップを含んでいるセル・オーバーラップ検出及び補正方法。
【請求項２】
前記第１のセルが前記観察テンプレート上の別のセルとオーバーラップしているかどうかを検出する前記ステップは、前記第１のセルの隅が別のセルの内側にあるかどうかを判定し、別のセルの隅が前記第１のセルの内側にあるかどうかを判定し、第１のセルのどの隅も別のセルの内側になくて、前記第１のセルが別のセルと交差しているかどうかを判定し、前記第１のセルが前記テンプレートの縁を越えて伸びているかどうかを判定するステップを含んでいる請求項１記載のセル・オーバーラップ検出及び補正方法。
【請求項３】
前記決定された距離のうちの２つが等しい場合、セルのオーバーラップが無くなる方向が見つかるまで、前記第１のセルが右、左、上及び下の順に最小距離Ｄｍｉｎだけ順次動かされる請求項１記載のセル・オーバーラップ検出及び補正方法。
【請求項４】
請求項１乃至３のいずれかに記載のセル・オーバーラップ検出及び補正方法を実行するプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の分野】
本発明は全般的に医療用イメージング方式に関し、更に具体的に云えば、プログラム可能なイメージング・システムに関する。
【０００２】
【発明の背景】
一般的に医療用イメージング・システムは、患者の身体の一部分の画像を作成して医者が観察できるようにするために利用されている。場合によって様式とも呼ばれる異なるイメージング技術を使って、患者の身体の複数の部分をイメージングすることが出来る。イメージング様式の例としては、コンピュータ断層撮影（ＣＴ）イメージング、磁気共鳴（ＭＲ）イメージング、超音波イメージング、ポジトロン・エミッション断層撮影（ＰＥＴ）イメージング、及び核イメージングがある。
【０００３】
医療用の画像の作成、処理及び表示に関連して、医療用イメージング・アプリケーションの開発には、一般的に、かなりのソフトウェア開発の努力を必要とする。この開発は、グラフィック・ユーザ・インタフェース（ＧＵＩ）を基本とする医療用イメージングのアプリケーションを開発するのに特殊なソフトウェア技術が必要とされるので、高度に熟練したソフトウェア実務者によって行われるのが普通である。しかし、ソフトウェア技術者は、その知識の領域が限られている。実際にソフトウェア・アプリケーションを使う臨床医は、アプリケーションを開発するのに必要なソフトウェア技術に熟練していないのが普通である。臨床医がイメージング・アプリケーションを開発することが出来るように高度に使いやすいイメージング・システムを提供することが望ましい。
【０００４】
公知の「プログラム可能な（ｐｒｏｇｒａｍｍａｂｌｅ）」システムは、臨床医がカスタマイズされたイメージング・アプリケーションを作成することが出来るようにしている。例えば、最も簡単な形式のカスタマイズ化は、特定の医者に対する表示スクリーン又はその他の条件のカスタマイズ化である。更に複雑なカスタマイズ化は、例えば研究機関では必要になる。
【０００５】
しかし、既知のプログラム可能なイメージング・システムは多数の欠点がある。例えば、一つの既知のプログラム可能なシステムは、新しいＧＵＩ素子を作成／カスタマイズする能力がない。更に、こういうシステムは基本システムに統合されておらず、その結果、視覚上、機能的及び使い易さの点で問題がある。更に、経験のあるプログラマしかシステムに機能を追加することが出来ない。
【０００６】
次に、既知のプログラム可能なイメージング・システムの別の欠点を説明する。これらの欠点は、一般的にスクリプトの作成と実行、非同期的な実行、及び観察テンプレート編集機能に関係するものである。
【０００７】
１．スクリプトの作成と実行
典型的には、画像を見る医者が所望のフォーマットで画像データを見ることが出来るように、医療用の画像の表示及び処理シーケンスを制御する為にスクリプトが利用される。例えば、特定の医者は、特定の器官を見る時、特定の系列（シーケンス）のビュー（ｖｉｅｗ）が表示されることを好むことがある。スクリプトは、画像の表示を制御して所望の系列のビューが作成されて表示されるように、作成することが出来る。
【０００８】
グラフィック・ユーザ・インターフェース（ＧＵＩ）を基本とするソフトウェア・アプリケーションから十分に機能的で使いやすいスクリプトを作成することは困難である。典型的には、ボタンのクリックのようなＧＵＩイベントを記録し、同じアプリケーション内でこのイベントを再現することによってスクリプトが作成される。しかし、多くの場合、異なる処理環境のコンテキストで使うことの出来る出力スクリプトを作成することが望ましい。こういう場合、単なる一系列のＧＵＩイベントではなく、ユーザが行った動作のセマンティクス（ｓｅｍａｎｔｉｃｓ）を捕捉しなければならない。
【０００９】
種々のレベルのＧＵＩイベントを記録して再生することが出来るアプリケーションの例は多くある。このような一つの既知のプログラムは、マウスの動き、ボタンを押したこと並びにキーボードのクリックを記録し、これらのイベントを再現する。しかし、ＧＵＩに対する極くわずかな変更でも、その変更を捕捉するにはイベントをもう一度記録することが必要になる。
【００１０】
別の既知のアプリケーションは、単にマウス及びキーボードの動作ではなく、作動された（押された）ＧＵＩウィジット（ボタン、スライダ等）を記録する。このプログラムは、ＧＵＩの変更がわずかな場合、問題を軽減するが、それでも、もとのアプリケーションで作成されたスクリプトを再生することを必要とする。即ち、このプログラムはアプリケーションを記録し、同じアプリケーションを使ってそれを再生することが出来るようにするだけである。作成されたスクリプトは、計装として設けられたアプリケーションの外部で使うように設計されていない。更に、作成された出力スクリプトのシンタックス（ｓｙｎｔａｘ）が完全に予じめ定められていて、ユーザが構成し得るものではない。
【００１１】
２．非同期的な実行
既知の医療用イメージングシステムはクライアント／サーバ形アーキテクチュアを持っている。このアーキテクチュアの主な利点は、アプリケーションがほとんど処理をしないので、アプリケーションのプロセスがユーザの面倒を見る状態にとどまることが出来ることである。大抵の処理はサーバによって処理される。このサーバは、特定のサービスを行う「専門家」であり、実際に、特定のタスクに対して最適にした専用のハードウェアで動作することがある。この専門化の良い例が、共通の画像処理動作をハードウェアで加速する処理サーバである。ネットワークに分布したリソースにアクセスする能力が、クライアント／サーバ形アーキテクチュアの主な利点である。
【００１２】
クライアント／サーバ形アーキテクチュアに於けるタスクの実行について云うと、アプリケーションがあるサービスに対する要請（リクエスト）を出す。この要請を処理するサーバは、ローカル・エリア・ネットワークのどこにあっても良いから、アプリケーションはその結果をユーザに報告する前に、動作が完了するのを待たなければならない。アプリケーションが待たなければならない時間の長さは、サーバの速度を含めた多くの因子に関係する。対話状態に留まる為には、アプリケーションは明け渡しをしなければならないが、これは典型的には、アプリケーションが他のユーザの要請に応答することが出来るように、実行スレッド（ｔｈｒｅａｄ）をアイドル状態に戻すことによって行われる。この明け渡す機能が高度に対話型のアプリケーションの基本である。前に待ち行列に入れていた要請からの返答が到着した時、アプリケーションはアプリケーションの処理コンテキストをこの要請以前の状態に回復し、動作の結果を提示しなければならない。この過程は、普通、非同期挙動と呼ばれている。
【００１３】
経験によると、要請−明け渡し−返答形のパラダイムを実施すると、プログラミングにかなりの昏迷が入り込むことが分かった。これは、１個の動作を多数の実行スレッドに分割しなければならないし、状態またはコンテキスト情報を、要請側を返答側に拘束するように管理しなければならないし、また多数の対話型の非同期的な実行スレッドの為に、微妙な診断の難しいタイミングに関係するエラーがコードに入り込むことがあるからである。その結果得られるコードは維持するのが難しい。こういう因子により、こういう環境でのプログラマの生産性が大幅に低下している。
【００１４】
それに、非同期的な実行のアプリケーション・コードは複雑であって、こういう環境でコードを開発するには、コンピュータ・プログラミングの高度の熟練が要求される。例えば、上に述べた要請−明け渡し−返答形の開発パラダイムでは、経験のあるソフトウェア技術者に対して、典型的には６週間ないし８週間の訓練期間が必要である。この訓練期間の多くは、非同期的なソフトウェア・プログラミングの細かい点を理解することに費やされる。更に、非同期的なプログラミングの複雑さの為、これは、普通はソフトウェア技術者ではない大抵の最終ユーザにとって不適当な方式である。クライアント／サーバ形アプリケーションの開発者は、大部分、クライアント／サーバ形アプリケーションの融通性並びに高い対話能力の代償として、要請−明け渡し−返答形のプログラム・パラダイムの開発の効率の悪さを受け入れている。
【００１５】
更に、非同期的な動作のある欠点を避けようとして、データベースの機能が同期的に挙動する方式が存在する。例えば、既知の一つの方式では、プログラマが異常に長い動作を検出し、是正措置をとる。こういう挙動を実施する為に使われる機構がポーリング機構であり、待ち段階の間、ＧＵＩを凍結する。即ち、ＧＵＩは真の明け渡しをしない。応答の待ち時間を非常に短くしなければならない医療用イメージング及び実時間制御のアプリケーションでは、オペレータが長いトランザクションの間に緊急の状況に応答しなければならないことがあるから、こういう形式の機構は受け入れることが出来ないことがある。この方式の別の欠点は、待ち期間の間、長い動作を取り消すことが出来ないことである。要請−明け渡し−返答形のパラダイムのコードを入れる煩わしさを無くすと共にその利点を生かしながら、長いトランザクションの間でも、アプリケーションの対話能力を温存するシステムを提供することが望ましい。
【００１６】
３．オーバーラップの検出と補正
医療用イメージング・アプリケーションを開発する時、頻繁に起こるのは観察テンプレートを構成することである。観察テンプレートは、医療用診断情報を見直すことに関連して、画像、曲線、テキスト及びその他の患者情報をグラフで提示することである。観察テンプレートを構成する時、典型的には矩形セルが構成され、スクリーン上のセルの配置を選び、これらのセルに対する属性の明細を定める。セルは、画像、曲線、テキスト並びに診断過程に関連するその他の情報を含むことが出来る。
【００１７】
患者情報を見る多くの医者にとって、情報の提示及びフォーマットは非常に重要である。その為、多くの医者は、自分の個人的な診断の必要に合う個人向けの観察テンプレートを要求する。最終ユーザが観察テンプレートをカスタマイズできるようにする為には、イメージング・システムは、観察テンプレートを構成し又は変更する容易な方法を提供しなければならない。更に、観察テンプレート・エディタは特定のタスクに対して最適にすることが好ましい。
【００１８】
観察テンプレートを構成する既知の１つのシステムは、テンプレートを作る為にポイント・アンド・クリック形のインターフェースとなるグラフ式観察テンプレート・エディタを使っている。グラフ式エディタは、観察テンプレートを構成する為の最終ユーザにとって容易な方法であることが分かっている。
【００１９】
しかし、既知の観察テンプレート・エディタの１つの欠点は、こういうシステムはユーザがセルのオーバーラップを補正することを必要とすることである。具体的に云うと、セルはタイル状になっていて、オーバーラップがあると重要な診断情報が隠れてしまうので、決してオーバーラップを生じることがない。従って、ユーザは、マウス又はプロパティ・エディタを使って、辛抱強く、細心にセルを位置ぎめしなければならない。このタスクを助ける為、ある観察テンプレート・エディタは、更に正確なアラインメントを行うことが出来るようにするズーム・モードのようなツールを含んでいる。他の既知のシステムは、タイリング（ｔｉｌｉｎｇ）ポストプロセッサを使い、それがセルを最小の幾何学的な形に詰め込む。医療用イメージングの観察テンプレートを構成する場合、こういうツールは実行する時に時間がかかりすぎるか、タイリング・ポストプロセッサの場合のように、ユーザに代ってあまりにも多くのことをする為に、融通性が欠ける。手作業のセル・アラインメント・タスクを加速することにより、使い易さを高めることが出来るような自動的なオーバーラップ検出及び補正アルゴリズムを提供することが好ましい。
【００２０】
既知のプログラム可能なシステムに関連する上に述べた欠点が、臨床医が比較的容易に且つ素早くイメージング・アプリケーションを開発することが出来るように、ユーザにとって極めて親しみやすいプログラム可能なシステムによって解決されることが好ましい。更に、スクリプトについて云うと、このスクリプトは、環境の如何に関わらず、余分のかなりの努力及び費用をかけずに、医者の希望に従って、画像及びデータを観察の為に表示することが出来るように、多くの異なる環境で使うことが出来ることが好ましい。このスクリプトの作成が簡単であって、対話型であることも好ましい。更に、前に述べたように、要請−明け渡し−返答形のパラダイムのコードを入力する煩わしさを避けると共に、その利点を生かしながら、長いトランザクションの間でも、アプリケーションの対話能力を温存するシステムを提供することが望ましい。また、観察テンプレートを作成するため、手作業のセル・アラインメント・タスクを加速することにより、使い易さを高めた自動的なオーバーラップ検出及び補正アルゴリズムを提供することが望ましい。
【００２１】
【発明の概要】
上記並びにその他の目的が、臨床医にとってシステムの使い易さを高める為に、アルゴリズムを取り入れたプログラム可能な医療用イメージング・システムによって達成することが出来る。プログラム可能な点について云うと、本発明の一面では、スクリプトを作成する為に使うことの出来る学習モードを含むプログラム可能なシステムを提供する。学習モードでは、ユーザが一連の動作を稽古し、それらの動作を後で再現するように保存することが出来る。学習モードは、ユーザがプログラミングの努力を伴わずに新しい機能を開発できるようにするので、新しいユーザ・プロトコルを定義する為の直感的な出発点になる。
【００２２】
更に具体的に学習モードについて云うと、システムは、システム構成ファイル、テーブル・ローダ及び自動インストーラを含む初期設定／計装サブシステムを含む。動作について説明すると、テーブル・ローダがシステム構成ファイルを読取って、システム構成ファイルから読取った情報を使って、マスター・テーブルを初期設定する。自動インストーラが、マスター・テーブルに記憶されている「ウィジット（ｗｅｄｇｅｔ）ネーム」を使って、グラフィック・ユーザ・インターフェース（ＧＵＩ）アプリケーションから関連するウィジットを見つけ、そのウィジットＩＤをマスター・テーブルに記憶する。
【００２３】
システムＧＵＩで作業するユーザが、一連のイベントを入力し、それがＧＵＩイベント・ハンドラー・システムによって記録される。コード作成器が、特定された各々のＧＵＩ動作に対応するスクリプト指令を出力する。コード圧縮システムが、現在の指令及び前の指令からの出力変数を抽出し、出力変数を圧縮コードにある１及び０と比較する。マスクされていないオブジェクト・ネームの副次記号表現が同じであれば、出力は前の出力の代わりであると考えられる。システムが前の出力を追跡し、新しい出力が代わりであると考えられる場合、前の出力を削除する。一般的に、コード圧縮システムからの出力が出力スクリプトと呼ばれる。
【００２４】
上に述べたシステムを使って作成された出力スクリプトは、他の処理環境に容易に転送可能である。更に、このシステムは、既知のプログラム可能なシステムに比べて、比較的使いやすく、ユーザにとって極めて親しみやすい。更に、このシステムは、単に動作自体を記録するのではなく、動作の意図を捕捉する形で、ユーザ動作（例えば、キーのクリック及びマウスの動き）のシーケンスを出力指令に解釈する。例えば、２つの像を付け加える為、ＧＵＩは、ユーザが付け加える画像を選び、加算動作を選び、選ばれた動作を印加するなどという一連の動作を行うことを必要とする。本発明のシステムでは、出力は、個別の画像を選択するプロセスよりもむしろ、ユーザが意図する画像を付け加える指令を表わす。
【００２５】
本発明の別の一面では、下位の非同期的なアーキテクチュアに対する非ブロッキング同期インターフェイスを構成するアルゴリズムを提供する。全般的に云うと、このアルゴリズムはアプリケーションのクライアント／サーバ部分を同期的な開発の環境から切り離す。このアルゴリズムを使うと、プログラマーは、非同期的なプログラミング技術に頼らずに、非ブロッキング型の高度に対話型のクライアント／サーバ形アプリケーションを開発することが出来る。
【００２６】
その結果得られるコードは同期的で、非常に読取りやすく、こじんまりしており、クライアント／サーバ形アーキテクチュアのプログラミングに習熟していない実務家によって開発することが出来る。更に、このアルゴリズムは、多重実行スレッドの本質的な支援を持っている又は持っていないオペレーティング・システムで実施することが出来る。
【００２７】
本発明の更に別の一面では、オーバーラップ検出及び補正アルゴリズムを提供する。一形式では、このアルゴリズムは、観察テンプレートを作る為の観察テンプレート・エディタに統合されている。１実施例では、オーバーラップ検出及び補正アルゴリズムは、１又は２境界矩形セル・オーバーラップ検出及び補正アルゴリズムである。このアルゴリズムは非パッキング型であって、その為、ユーザのアラインメント動作の意図を正確に実行し、セル・アラインメント・タスクを加速するという重要な利点をもたらす。
【００２８】
上に述べたプログラム可能なシステムは、ユーザに極めて親しみやすく、臨床医はこのシステムを使って、イメージング・アプリケーションを比較的容易に且つ素早く開発することが出来ると考えられる。更に、このシステムを使って作成されたスクリプトは、多くの異なる環境で使うように容易に移すことが出来、この為、環境の如何に関わらず、余分のかなりの努力及び費用を伴わずに、医者の希望に従って、画像及びデータを観察の為に表示することが出来る。更に、クライアント／サーバ形アーキテクチュアを利用するが、要請−明け渡し−返答形のパラダイムのコードを入力するという煩わしさを避けながら、長いトランザクションの間でも、システムの対話能力を温存する。更に、観察テンプレートの作成について云うと、自動オーバーラップ検出及び補正は、手作業のセル・アラインメント・タスクを加速することにより、使い易さを高めることが出来る。
【００２９】
本発明の一態様によれば、その上に複数個のセルを表示することが出来る観察テンプレートを含んでいる医療用イメージング・システムで、観察テンプレート上のセルのオーバーラップを検出して補正するセル・オーバーラップ検出及び補正方法が提供される。該セル・オーバーラップ検出及び補正方法は、１）第１のセルが観察テンプレート上の他のセルとオーバーラップしているかを検出するステップ、及び２）セルのオーバーラップが検出された場合、（ａ）最小オーバーラップ補正距離Ｄｍｉｎを決定し、（ｂ）前記第１のセルをこうして決定された最小オーバーラップ補正距離Ｄｍｉｎだけ移動させ、（ｃ）第１のセルを移動させた後、第１のセルが別のセルとオーバーラップしているかどうかを検出するステップを含んでいる。前記方法は、更に、前記ステップ２）（ｃ）でセルのオーバーラップが検出された場合、前記ステップ２）（ａ）に戻り、前記ステップ２）（ａ）及び２）（ｂ）を実行するステップを含んでいる。前記第１のセルが前記観察テンプレート上の別のセルとオーバーラップしているかどうかを検出する前記ステップは、前記観察テンプレート上の前記第１のセルと前記別のセルとの間の線形検査を行うステップを有する。一実施態様では、前記第１のセルが前記観察テンプレート上の別のセルとオーバーラップしているかどうかを検出する前記ステップは、前記第１のセルの隅が別のセルの内側にあるかどうかを判定し、別のセルの隅が前記第１のセルの内側にあるかどうかを判定し、第１のセルのどの隅も別のセルの内側になくて、前記第１のセルが別のセルと交差しているかどうかを判定し、前記第１のセルが前記テンプレートの縁を越えて伸びているかどうかを判定するステップを含む。前記最小距離Ｄｍｉｎを決定する前記ステップは、（ａ）前記第１のセルの頂部からそれとオーバーラップするセルの底部までの距離、（ｂ）前記第１のセルの底部からそれとオーバーラップするセルの頂部までの距離、（ｃ）前記第１のセルの左辺からそれとオーバーラップするセルの右辺までの距離、及び（ｄ）前記第１のセルの右辺からそれとオーバーラップするセルの左辺までの距離を決定するステップを含む。前記最小距離Ｄｍｉｎが、決定された距離のうちの最短距離である。前記決定された距離のうちの２つが等しい場合、セルのオーバーラップが無くなる方向が見つかるまで、前記第１のセルが右、左、上及び下の順に最小距離Ｄｍｉｎだけ順次動かされる。
【００３０】
【発明の好ましい実施の形態】
本発明の一面は、システムの使い易さを高めるアルゴリズムを取り入れたプログラム可能な医療用イメージング・システムに関する。アルゴリズムは全般的に、学習モードのスクリプトの作成、同期動作、及び観察テンプレート・エディタに於けるオーバーラップ検出及び補正に関係する。重要なことは、本発明を多くの異なる医療イメージング様式で実施することが出来、何ら１つの特定の様式で実施する場合に制限されないことである。次に本発明の１実施態様のプログラム可能なシステムを説明する。更に、学習モード、同期動作並びにオーバーラップ検出及び補正ルーチンを説明する。
【００３１】
［プログラム可能なシステムの説明］
ここで説明するプログラム可能な医療用イメージング・システムは、例えば米国ウイスコンシン州、ブルックフィールド、スート１００、ノース・パトリック・ブールバード２５０所在のヒューレット・パッカード・カンパニから商業的に入手し得る製品名「ＨＰ７１５／１００ＵＮＩＸ」を基本としたワークステーションを含む多くのハードウェア・プラットフォームで実現することが出来る。１形式では、例として云うと、ルーチンは、米国ウイスコンシン州、ウォーキーシャ、ノース・グランドビュー・ブールバード３０００所在のゼネラル・エレクトリック・カンパニ社ＧＥメディカル・システムズ事業部から商業的に入手し得る「ＧＥＮＩＥ（登録商標）システム」の名前で知られいるような核イメージング・システムに統合して、それに関連して実施することが出来ると考えられている。もちろん、ルーチンは、核イメージング・システム以外のものを含む他の多くの医療用イメージング・システムに関連して、他の多くのプラットフォームで実施することが出来る。
【００３２】
次に説明するのは、スクリプトの作成、並びにその他のプログラム能力に関係するタスクに対するツールを含む１実施態様のプログラム可能なシステムである。これらのツールは、ユーザ・ワークステーションで実現することが出来、後で説明するように、メニューを介してユーザがアクセス可能である。ツールの機能を理解しやすくする為、新しいアプリケーション、即ちスクリプトを開発するステップを下にまとめて示す。
【００３３】
１．予め定めたプロトコル・ナビゲーション区域に所望のボタンを置く。
２．ＧＵＩ上でアプリケーションの挙動を稽古することにより、コードを作成する。
３．必要であれば作成されたコードをカスタマイズする。
４．作成されたコードをボタンに付加する。
【００３４】
プログラム能力に関するツールは、これらの４つの基本的な工程をポイント・アンド・クリック動作で達成出来るようにすることが好ましい。更に、簡単なアプリケーションでは、これらのツールは、プログラミングを必要としないようにし、更に複雑なアプリケーション並びに更に融通性を持たせる場合には、ビジュアル・ベーシック（Ｖｉｓｕａｌ  Ｂａｓｉｃ）及びＣ言語を使って低レベルのプログラミングを行うことが出来るようにすることが好ましい。ＵＮＩＸを基本としたシステムに対するビジュアル・ベーシック・コンパイラは、米国ニューヨーク州、ジェームスヴィル、ジェームスヴィル・ロード４９３３所在のサミット・ソフトウェア・カンパニから商業的に入手し得る。
【００３５】
１実施態様では、特に前に述べたＧＥＮＩＥの環境で実施する場合、現存のＧＥＮＩＥプロトコルに従ってナビゲーションユーザ・インターフェース（ＵＩ）のモデルを定め、簡単なポイント・アンド・クリックによりボタン及びメニューの形の新しいナビゲーション要素を付け加える。ボタンの二重クリックにより、ユーザはそのボタンに挙動を持たせることが出来る。普通、挙動は結果スクリーンに表示すること、又は一連の処理動作を行い、その後にその結果を表示することである。更に、生（なま）の縮小した画像の区域が常に存在しており、アプリケーションの「ダッシュボード」になる。生の画像区域がダッシュボードの性質を持つことにより、アルゴリズムの変更の影響が瞬時的にフィードバックされる。この対話能力とアプリケーションの開発及び実行の間の透明性により、実質的に設計−組立−試験サイクルが無くなる。
【００３６】
図１は前掲のＧＥＮＩＥシステム用に構成した一例のユーザ・インターフェース１００を示す。図１に示すように、ナビゲーション区域１０２が組み立てられつつある。２つのタブ１０４及び１０６が作られており、第１のタブ１０４が３つのボタン１０８、１１０及び１１２を含む。ナビゲーション区域１０２を組み立てる為の「ナビゲーション」メニュー項目１１４がメニュー１１６に設けられている。ユーザ・インターフェースはスクリプト・エディタ窓１１８をも含み、メニュー１１６はユーザが選ぶことの出来る種々の機能を示している。アクティブ・ヘルプ窓１２０も示されている。更にインターフェース１００は、医療用の画像及びデータを表示する画像区域１２２をも含む。
【００３７】
アプリケーションの挙動を特定しやすくするため、ポイント・アンド・クリック作成器、統合エディタ及び外部インタフェースが設けられる。ポイント・アンド・クリック・コード作成器は、例えばユーザがコードを使うことが出来るようにするユーザ動作のセマンティクスを表すコードを作成するために設けられる。統合エディタは、融通性を最大にする為に複合コードを書き込むことが出来るようにする為に設けられており、また統合エディタは、作成されたコードをカスタマイズする為に使うこともできる。外部に限定されたライブラリに対するインタフェースが、性能を左右するような計算並びに最大の融通性の為に設けられている。この外部インターフェースは、例えば、画像処理機能又は外部データ収集装置のような外部機能を素早く利用出来るようにする。
【００３８】
多数の部品をプログラム能力の環境内に統合して、臨床アプリケーションを開発する為のコヒーレンスの高いツールとする。これらの部品は、学習モード、スクリプト・エディタ、スクリプト・デバッガ及びスクリプト実行部を含む。学習モードは、ユーザが１つのシーケンスの動作を稽古し、後で再現されるようにそれらの動作を保存することが出来るようにする。更に、学習モードを使って、ユーザは動作のシーケンスを変更することが出来る。学習モードは、ユーザがプログラミングということをせずに、新しい機能を開発することが出来るようにするので、新しいユーザ・プロトコルを定義する為の直感的な出発点になる。学習モードは、動作とそれに対応するユーザ・プロトコル・スクリプトとの間のリンクとなるので、新米のユーザに対する良い学習ツールにもなる。１形式では、学習モードは次のことを行う。
【００３９】
１．１組のユーザ動作を記録し、保存し、後でプロトコルを組み立てるのに使うことが出来る。
２．記録の間、動作のシーケンスからの作成されたテキストを表示することが出来る。
３．データ・ローディング及び保存動作が記録可能である。
４．観察テンプレートの記述が記録可能である。
５．画像及び曲線処理動作が記録可能である。
６．画像及び曲線統計結果が記録可能である。
【００４０】
１例としての学習モード捕捉窓１５０が図２に示されており、この図には学習モードを動作させた結果が示されている。学習モードについて更に詳しいことは次の部分で説明する。
【００４１】
再び図１を参照すると、ユーザがユーザ・プロトコルを編集することが出来るようにする為に、スクリプト・エディタ１２４が設けられている。エントリ並びにユーザ・プロトコルに対するテキストの変更を容易にする為、次に述べる特徴を設けることが出来る。下記の全ての特徴はマウス又はキーボードから作動することが出来る。
【００４２】
１．「Ｅｄｉｔ（編集）→Ｃｕｔ（切り取り）」、「Ｅｄｉｔ（編集）→Ｃｏｐｙ（コピー）」、及び「Ｅｄｉｔ（編集）→Ｐａｓｔｅ（貼り付け）」の為のテキスト編集能力。
２．順方向及び逆方向のテキスト・ストリングの探索。探索はいくつかのテキスト・ファイルに亘ることが出来る。
３．テキスト・ストリングの交換。
【００４３】
適当なスクリプト・エディタは米国ニューヨーク州、ジェームスヴィル、ジェームスヴィル・ロード４９３３所在のサミット・ソフトウェア・カンパニから商業的に入手し得る。
【００４４】
更に図１について説明すると、ユーザ・プロトコルの開発及びデバッギングを助ける為にスクリプト・デバッガ１２６が設けられている。スクリプト・デバッガ１２６は下記の作用を実行する。
【００４５】
１．シンタックス検査の特徴が設けられる。エラーが存在する場合、正しくない行が強調され、カーソルがシンタックスとして正しくない要素の上に置かれる。更に、診断メッセージが表示される。
２．ユーザ・プロトコルは一度に１行実行することが出来る。
３．機能／手順に歩進することが出来、或いは機能／手順を１つのユニットとして実行することが出来る。
４．ブレーク点をユーザ・プロトコル内の任意の行にセットすることが出来る。ユーザ・プロトコルの実行はブレーク点で停止する。ブレーク点は取り除くことが出来る。
５．変数をデバッガ内にある間に検査し変更することが出来る。
【００４６】
適当なスクリプト・デバッガが前に引用したサミット・ソフトウェア・カンパニから商業的に入手し得る。
【００４７】
完全な又は部分的に完成したユーザ・プロトコルの実行１２８がスクリプト実行部によって行われる。プロトコルは、そのプロトコルの断片を開発し、次いで徐々に機能を埋めることによって、増分的に試験することが出来る。スクリプト実行部は、下記の特徴を用いてこの能力を発揮する。
【００４８】
１．プロトコルはスクラッチから開始することが出来る。完了するまで又は割込みに出会うまで実行を続ける。
２．プロトコルを実行するとき、ユーザはスクリプト実行部から全ての画像表示、対話、メニュー及びツールを利用し得る。本質的にはプロトコルは、ユーザが実際のプロトコルを始動させた場合と同様に実行される。スクリーン画像区域全体の代わりに、縮尺された画像区域１２２が表示されることに注意されたい。
３．ユーザ・プロトコルは休止ボタンを使うことにより、任意の点で中断可能である。再開した時、ユーザ・プロトコルを休止した点から実行が続けられる。
４．ユーザ・プロトコルは、停止ボタンを使って、任意の時に中止することが出来る。
５．全ての予め定められた機能ライブラリ及びユーザによって定められた機能ライブラリがスクリプト実行部で利用出来なければならない。
６．多重プロトコルは同時に実行することが出来ると共に対話状態に留まることが出来る。これは、全てのプロトコルが或るＣＰＵ時間を受け取ることを保証する時間スライス機構によって達成される。
【００４９】
新しいプロトコルの作成について云うと、ユーザは現存のプロトコルを変更し、変更したプロトコルを新しいプロトコルとして保存することが出来る。この代わりに、ユーザはスクラッチから出発することが出来る。ユーザが現存のプロトコルを削除したいと思うことも考えられる。こういう活動が一般的にプロトコル・マネージメントと呼ばれる。１実施態様では、全てＧＵＩ１００からアクセス可能である下記の特徴がプロトコルを管理するのに利用することが出来る。
【００５０】
１．製造業者により提供されたプロトコルをコピーすることが出来、そのコピーは「Ｆｉｌｅ（ファイル）→Ｓａｖｅ  Ａｓ（そのまま保存）」の特徴（１３０）を使って変更することが出来る。
２．現存のプロトコルを見ることが出来る。即ちユーザにはソース・スクリプトが常に利用出来る。
３．ユーザは「Ｆｉｌｅ（ファイル）ファイル→Ｎｅｗ（新）」（１３０）によりスクラッチから新しいユーザ・プロトコルを作成することが出来る。
４．「Ｆｉｌｅ（ファイル）→Ｓａｖｅ（保存）」（１３０）により現存のプロトコルを変更することが出来る。
５．「Ｆｉｌｅ（ファイル）→Ｄｅｌｅｔｅ（削除）」（１３０）により現存のプロトコルを削除することが出来る。
【００５１】
非常に使いやすいシステムには、そのシステム内の全てのアプリケーションが従う「ルック・アンド・フィール（ｌｏｏｋ  ａｎｄ  ｆｅｅｌ）」がある。同様に前掲のＧＥＮＩＥシステムでは、プロトコルに対しルック・アンド・フィールが設定されている。１実施態様では、ナビゲーションＧＵＩ組立て部１１４を設けて、アプリケーションを作成するタスクを簡単にする。ナビゲーションＧＵＩ組立て部１１４は下記のことをする。
【００５２】
１．ポイント・アンド・クリック・インターフェースを使って、タブ、ボタン及びメニューの項目を作成することが出来る。プログラミングは全く必要とされない。
２．ナビゲーションＧＵＩ組立て部の全ての要素に対してプロパティ・エディタを設ける。プロパティは、「動作（ａｃｔｉｏｎ）」手順の明細並びに要素の可視的な性質を含む。
３．完成されたナビゲーションの記述がプロトコルと共に保存される。プロトコルを実行するとき、動作プロパティが呼び出される。
【００５３】
１実施態様では、オンライン・ハイパーテキスト・ヘルプ・システム１２０を含む多数のツール１３２を設ける。ヘルプ・システム１２０は、プログラム能力の環境の全ての要素の利用に対してヘルプを提供する。この全般的なヘルプの他に、ビジュアル・ベーシック言語の包括的なヘルプも設けてある。言語に対する全ての新しい拡張に対してヘルプ・ファイルも設けてある。適当なハイパーテキスト・ヘルプ・システムが、米国コネティカット州、リッジフィールド、イーサン・アレン・ハイウェイ２４１所在のブリストル・テクノロジー・インコーポレーテッドから商業的に入手し得る。
【００５４】
ヘルプ・システムのスクリーンを通じてスクリプトを容易に作成することが出来る。具体的に云うと、ユーザはヘルプ・スクリーンを呼び出し、作成しようとするスクリプトに関連するトピックを選ぶことが出来る。典型的には、ユーザが所定の機能を理解するのを助ける為、サンプル・ワーキング・コード、即ち、スクリプトがヘルプ・ファイルに含まれている。ユーザは例を強調表示し、「コピー」指令を使って例をコピーし、その後「貼り付け」指令を使って、この指令をスクリプト・エディタに貼り付けることが出来る。ユーザは、スクリプトを直接的に使って指令を実行するか、又は別のスクリプトに含める為にスクリプトを編集することが出来る。
【００５５】
観察テンプレート・エディタのツールの場合について云うと、前に述べたように、観察テンプレートはスクリーンの配置（レイアウト）であり、この配置は複数のセルで構成されており、各々のセルには画像（単独又は多重フレーム）、曲線又はオーバーレー・グラフィックスを入れることが出来る。１実施態様では、観察テンプレート・エディタ（ＲＴＥ）は、ユーザが観察テンプレートをグラフ式に組み立てることが出来るようにする。
【００５６】
図３はＲＴＥに対する１実施態様のユーザ・インターフェイス２００を示す。インターフェイス２００は、作られたセルを表示する表示区域２０２を含み、ユーザが種々の機能を容易に選ぶことが出来るようにする「ファイル」メニュー２０４が設けられている。更に、画像、曲線及びＲＯＩデータに対する特定の数学的な又は臨床的な処理を行う為にデータ処理指令２０６が設けられている。標準的な１組のデータ処理指令と、こういうデータ処理指令２０６に対する詳細なヘルプ・ファイルが設けられる。アドレスされる全体的な機能区域は、画像及び曲線の演算と、画像の閾値作用と、画像の切り取り、コピー及び貼り付けと、画像及び曲線の統計と、画像のフィルター作用（空間及び周波数）と、曲線のフィルター作用と、画像のフレーム組替えと、画像の向き（回転、方位及び鏡）と、画像の寸法取り（任意の寸法）と、ＲＯＩ処理（論理動作）とである。
【００５７】
ツール１３２は、ユーザがプログラム、即ちスクリプトを容易に且つ素早く作成することが出来るようにする。もちろん、各々の実行に全てのツール１３２が必要ではないこと、並びに他の実行にはこの他のツールが望ましいことがあることが考えられる。従って、種々のツールについてこれまで説明したことは、例に過ぎず、本発明をそれに制限するつもりはない。
【００５８】
［学習モード］
図４は、本発明の１実施態様に従って学習モードのプログラム能力を達成するように構成されたサブシステムを含むイメージング・システム２５０のブロック図である。前に説明したように、学習モードは、ユーザがあるシーケンスの動作を稽古し、それらの動作を後で再現されるように保存することが出来るようにするものであり、この学習モードを使うことによって、ユーザは動作のシーケンスを変更することが出来る。本発明の１実施態様に従って学習モードを実施する為、イメージング・システム２５０が初期設定／計装サブシステム２５２、及びコード作成サブシステム２５４を含む。グラフィック・ユーザ・インターフェース（ＧＵＩ）イベント・ハンドラー・システム２５６が設けられていて、ＧＵＩで起こるイベントを検出すると共に、こういうイベントをコード作成サブシステム２５４に供給する。後で更に詳しく説明するが、初期設定／計装サブシステム２５２はシステム構成ファイル２５８、テーブル・ローダ２６０及び自動インストーラ２６２を含む。コード作成サブシステム２５４はコード作成器２６４及びコード圧縮システム２６６を含む。コード圧縮システム２６６から出力スクリプト２６８が出力される。サブシステム２５２及び２５８は、例えばユーザ・ワークステーション内に構成される。
【００５９】
全体について総括的に云うと、システム構成ファイル２５８が、計装として備える必要があるシステム２５０内の全てのウィジットのリストを持っている。出力制御スクリプト２６８を作成するために使われるシーケンス（テキスト・ストリング）も、対応するウィジット・ネームと並んで、システム構成ファイル２５８内に表示されている。始動すると、システム構成ファイル２５８（これは読取可能なＡＳＣＩＩフォーマットで記憶されている）が内部データ構造にロードされる。基本ウィジットから出発して、データ構造内にある各々のウィジットに対するウィジット識別子を探索して記録する。実行の間、あるウィジット（ボタン、メニューの項目など）が作動される（押される）と、内部データ構造から出力制御スクリプト・シーケンスが得られる。このシーケンスを、特定された規則を用いて有効な出力制御スクリプト２６８に拡張する。制御シーケンスが、特定された規則と共に、出力制御スクリプト２６８を表す言語を定める。システム２５０は、単にシステム構成ファイル２５８を編集することにより、異なるシンタックス又は指令を出力するように実行時間で構成し得る。更に、内部制御シーケンス拡張論理は、シェル・スクリプトを含めて異なる出力言語に容易に拡張することが出来る。更に、システム２５０が、単に動作自体を記録するのではなく、動作の意図を捕捉する形で、ユーザの動作（例えば、キーのクリック及びマウスの動き）のシーケンスを出力指令に解釈する。例えば、２つの画像を付け加える為に、ＧＵＩは、付け加えるべき画像を選び、付加動作を選び、選ばれた動作を適用するなどというような一連の動作をユーザが実行することを要求することがある。システム２５０では、出力が、個別の画像を選ぶプロセスよりもむしろ、ユーザが意図するものとして画像を追加する指令を表す。
【００６０】
図５は、システム２５０の動作を更に詳しく示すデータの流れ図である。前に述べたように、システム構成ファイル２５８は、所定のアプリケーションを計装し且つ出力スクリプト２６８を作成するために必要な異なる要素を持っている。システム構成ファイル２５８内の典型的な行を下記に示す。
【００６１】
panUP:panZoomForm.panUp,NORMAL,O,C102G2,VpanY($0panScope,$0panY)
【００６２】
この行は下に述べる６つのトークン（要素）を含んでいる。
１．オブジェクト・ネーム（「ｐａｎＵＰ」）
これは計装される指令の論理名称であり、英字（数字なし）の場合に応じて敏感に変わるストリングである。このネームは、後で説明するシステムのＧｅｎＣｏｄｅ部分で参照される。
２．ウィジット・ネーム（「ｐａｎＺｏｏｍＦｏｒｍ．ｐａｎＵｐ」）
これは計装されるウィジットの名称であり、そのウィジットに対する唯一のパス・ネームに対応すべきである。このストリングは、アプリケーション・ウィジット階層内のウィジットをルックアップするために使用され、オブジェクトがウィジットに対応しない場合はＮＵＬＬ（無効）である。
３．オブジェクトの種類（「ＮＯＲＭＡＬ」）
これはオブジェクトの種類を特定する。考えられる選択は次の通りである。
様式（ＭＯＤＡＬ）
この種類のオブジェクトは直接的に指令を作成せず、オブジェクトにＧｅｎＣｏｄｅが関連しているが、オブジェクトが作動されたときにコードを作成すべきでない場合に使われる。典型的には、アプリケーションの状態を変えるあらゆるオブジェクトはＭＯＤＡＬと記される。
デストラクタ／コンストラクタ（ＤＥＳＴＲＵＣＴＯＲ／ＣＯＮＳＴＲＵＣＴＯＲ）
コンストラクタ及びデストラクタ・ウィジットは、作動された時、ウィジットの数が変わるかもしれないことを示し、自動インストーラ１６２に全てのウィジットを再びインストールさせる。
ノーマル（ＮＯＲＭＡＬ）
これは、上に述べた何れの種類でもない全てのウィジットに与えら一般的な種類である。
４．グループ（「０」）
グループは、同様なオブジェクトを一様な形で取り扱うための便利な方法を提供する。
５．圧縮コード（「Ｃ１０２Ｇ２」）
これは出力コードを再構成する為に使われる随意選択の特徴である。例えば、ユーザがマウスをスクリーンを横切って引っ張る時、マウスの各々の位置で指令を作成する代わりに、動作の終わりに指令を作成することが望ましいことがある。圧縮コードは、このような圧縮を行うのに使われる規則を記述する。
６．ＧｅｎＣｏｄｅ（「VpanY($OpanScope,$OpanY)」）
これは、ＧＵＩイベントを有効な出力スクリプトに変換する時にどの規則を使うべきかを特定する。
【００６３】
システム構成ファイル２５８に表されている要素は、計装されたアプリケーションのウィジット階層及び作成された出力スクリプト２６８と密接な関係を持つ。
テーブル・ローダ２６０が実行時間にシステム構成ファイル２５８を読取り、システム構成ファイル２５８から読取った情報を使って、本明細書でマスター・テーブルと呼ぶ内部データ構造２７０を初期設定する。システム構成ファイル１０８を実行時間にロード可能なファイルとすることにより、構成に変更を加える為にソフトウェアをコンパイルし直す必要がないので、開発が早められると共に、ファイルは必要がない限りロードされないので、２進ファイルは一層小さくなる。
【００６４】
マスター・テーブル２７０は、テーブル・ローダ２６０によって読取られた全ての情報、並びに後で説明する自動インストーラ２６２を使ってアプリケーションＧＵＩから取出された若干の情報を記憶する内部データ構造である。マスター・テーブル２７０は、システム構成ファイルにある情報を記憶するのに加えて、計装される全てのウィジットのウィジット識別子（ＩＤ）を記憶するフィールドをも持っている。１例では、マスター・テーブル構造は次のようになっている。
【００６５】
0004201363.tif 000002
【００６６】
自動インストーラ２６２は、マスター・テーブル２７０に記憶されている「ウィジット・ネーム」を使って、ＧＵＩアプリケーションから関連するウィジットを見つけ、そのウィジットのＩＤをマスター・テーブル２７０に記憶する。自動インストーラ２６２は、ネームを付したウィジット階層２７２を持つ任意のＧＵＩアプリケーションに作用するように適応させることが出来る。例えば、Ｘウィンドウズ・アプリケーションでは、自動インストーラ２６２は、Ｘｔ指令を使ってウィジット、即ち、ＸｔＮａｍｅＴｏＷｉｄｇｅｔを見つける。
各々のウィジットを探索する為、自動インストーラ２６２は、アプリケーションに対する基本ウィジットのＩＤを必要とするが、これは、初期設定の呼の一部分として、システム２５０に送られたウィジットから、適当なネームのウィジットが見つかるまで、アプリケーション・ウィジット階層２７２を昇ることによって見つけられる。
【００６７】
ウィジット階層２７２の一例が図６に示されている。図６に示すように、この例のウィジット階層２７２は基本ウィジット２７４を含む。この階層の中にｐａｎＺｏｏｍＦｏｒｍ形のウィジット２７６があり、これがｐａｎＺｏｏｍＦｏｒｍ形計装の総称である。ｐａｎＵＰウィジット２７８が、ｐａｎＺｏｏｍＦｏｒｍウィジット２７６の１形式であり、従って、ｐａｎＵＰウィジット２７８はｐａｎＺｏｏｍＦｏｏｒｍ形ウィジット２７６より下位にあって、それに接続されている。
【００６８】
再び図５について説明すると、様式（ＭＯＤＡＬ）でない全てのオブジェクトに対し、自動インストーラ２６２が単一呼戻し機能を呼び出す呼戻しを付加する。自動インストーラ２６２はウィジットの種類をも決定する。「計装された」ウィジットによって呼出された時、それをマスター・テーブル２７０でルックアップし、コード作成器２６４をインデックスによりエントリーに呼込む。
【００６９】
コード作成器２６４はマスター・テーブル２７０のＧｅｎＣｏｄｅ部分を使って、特定されたＧＵＩ動作に対応するスクリプト指令を出力する。コード作成器２６４は＄ｎ（ｎは数）で始まりその後に英字が続く任意のストリングを正規の表式”＄［０−９］［ａ−ｚＡ−Ｚ］＋”として、例えば”＄０ｐａｎＵｐ”として拡張することによって、テキストを「評価」する。英字が「オブジェクト・ネーム」を表す。評価すべきオブジェクトがウィジットである場合、ウィジットの値を戻し、出力指令に”＄ｎ＜ｏｂｊｅｃｔ＞”テキストを入れ替える。例えば、”ｐａｎＵｐ”が、テキスト「１２３．４」を含んでいたテキストウィジットに対するオブジェクト・ネームであった場合、ＧｅｎＣｏｄｅでは、ストリング”ｐｒｉｎｔ＄０ｐａｎＵｐ”は、マスター・テーブル２７０でｐａｎＵｐを見ることにより、”ｐｒｉｎｔ１２３．４”に変更される。
【００７０】
コード作成器２６４は＄０１Ｆ（”．．．”＝”．．．”）＜ｒｅｓｕｌｔ＞［＄０ｅｌｓｅ＜ｅｌｓｅ  ｒｅｓｕｌｔ＞］表式をも拡張する。＝の両辺を評価し、その後ストリングを比較する。「真」であれば、＜ｒｅｓｕｌｔ＞を評価して使う。「虚偽」であれば、＜ｅｌｓｅ  ｒｅｓｕｌｔ＞を評価して使う。ＧｅｎＣｏｄｅは評価が簡単であって、コードを複雑にして拡大するｌｅｘ又はｙａｃｃを使う必要がない。
【００７１】
コード圧縮器とも呼ばれることのあるコード圧縮システム２６６について云うと、コード圧縮は、システム構成ファイル２５８から読取った圧縮コードによって制御される。ユーザが、コード圧縮システム２６６なしに、動作、例えばズーム・アップを繰り返すと、システム２５０はマウス・ボタンを押す毎に新しい指令を作成する。コード圧縮システム２６６は、重複した行が現れた時、それを除去する。コード圧縮システム２６６は、現在の指令及び前の指令から出力変数Ｉ（＄ｎ＜ｏｂｊｅｃｔ  ｎａｍｅ＞表式）を抽出し、出力変数を圧縮コードにある１及び０と比較する。マスクされていないオブジェクト・ネームの全ての副次表式が同じである場合、出力は前の出力の代わりであると考えられる。システム２６６は前の出力を追跡し、新しい出力が代わりであると考えられる場合、前の出力を削除する。
【００７２】
上に述べた動作を要約すると、テーブル・ローダ２６０がシステム構成ファイル２５８を読取り、システム構成ファイル２５８から読取った情報を使って、マスター・テーブル２７０を初期設定する。自動インストーラ２６２が、マスター・テーブル２７０に記憶されている「ウィジット・ネーム」を使って、ＧＵＩアプリケーションから関連するウィジットを見つけ、そのウィジットのＩＤをマスター・テーブル２７０に記憶する。システムのＧＵＩで作業するユーザは、一連のイベントを入力し、それらがＧＵＩイベント・ハンドラー・システム２５６によって記録される。コード作成器２６４が、特定された各々のＧＵＩの動作に対応するスクリプト指令を出力する。コード圧縮システム２６６が現在の指令及び前の指令からの出力変数を抽出し、出力変数を圧縮コードにある１及び０と比較する。マスクされていない全てのウィジット・ネームの副次表式が同じであれば、出力が前の出力の代わりと考えられる。コード圧縮システム２６６が前の出力を追跡し、新しい出力が代わりと考えられる場合、前の出力を削除する。コード圧縮システム２６６がスクリプト２６８を出力する。
【００７３】
この場合も、前に説明したように、システム２５０は、単にシステム構成ファイルを編集することにより、異なるシンタックス又は指令を出力するように、実行時間で構成し得るという重要な利点を持つ。更に、内部制御シーケンス拡張論理を容易に拡張して、シェル・スクリプトを含めて異なる言語を出力することが出来る。
【００７４】
［同期動作］
本発明の一面は、下位の非同期的なアーキテクチュアに対する非ブロッキング同期インターフェイスとなるアルゴリズムに関する。全体的に云うと、このアルゴリズムはアプリケーションのクライアント／サーバ部分を同期的な開発の環境から切り離す。クライアント部分又はユニットとサーバ部分又はユニットとは、別々のコンピュータ又は１個のコンピュータにあっても良い。このアルゴリズムを使うと、プログラマは非同期的なプログラミング方式に頼らずに、非ブロッキングの、高度に対話型のクライアント／サーバ形アプリケーションを開発することが出来る。その結果得られるコードは同期的であって、非常に読取り易く、こじんまりしていて、クライアント／サーバ形アーキテクチュアのプログラミングに習熟していない実務家によっても開発することが出来る。更に、このアルゴリズムは、多重実行スレッドの本質的な支援を持つか又は持っていないオペレーティング・システムで実施することが出来る。
【００７５】
図７は、本発明の１実施態様に従って同期的な実行をする為の方法の工程のシーケンスを示すフローチャート３００であるが、アプリケーションのクライアント／サーバ部分が、要請−明け渡し−返答の細部を取り扱うコードである。開発環境は埋込みインタープリタである。両方の装置は、単一の実行スレッドを持つ同じプロセスにあるが、アルゴリズムは多重実行スレッドに対して実行し得る。
【００７６】
図７について具体的に説明すると、最終ユーザが実行時間にコード又はスクリプトを開発する。このコードがインタープリタにより３０２の所で実行される。クライアント／サーバ形のトランザクションを必要とするスクリプト指令では、即ちサーバ要請３０４では、インタープリタは、アプリケーションのクライアント／サーバ部分にある適当な機能を発動するようにプログラムされている。サーバ要請３０４を出す前および／又は出した後、アプリケーションのクライアント／サーバ部分がインタープリタを中断して、明け渡す（３０６）。ＧＵＩを管理するクライアント／  サーバは、待ち期間の間対話状態に留まる。クライアント／サーバが明け渡しをしている為、時間が重要な、実時間で処理する特徴は、アプリケーションのクライアント／サーバ部分に置いておくと、待ち期間の間生きている。
【００７７】
対話状態に留まる為、実行スレッドをアイドル状態（ＸｔＭａｉｎＬｏｏｐ）３０８に戻す。サービス要請が完了していないと（３１０）、イベントが引き続いて処理される（３１２）。要請に対応する返答が到着して処理されると（３１４）、アプリケーションのインタープリタ部分を再開し（３１６）、その後、インタープリタのプログラム・カウンタ（ＰＣ）は中断したところから継続する。その後の処理はスクリプト行３０２の実行に戻る。
【００７８】
図８は、図７に示した方法の工程により切り離された実行の一例を示す。この例では、２つの非同期的な動作を実行しなければならない。ボックス３５０には、クライアント／サーバ側の高レベルのタスクが示されている。これらのタスクは実際のコードの何行かを表しており、その為図示のプログラム・カウンタ（ＰＣ）は、実際のプロセッサＰＣに直接的に対応しない。中央の列は、クライアント／サーバ擬似ＰＣが変化する時のインタープリタＰＣの進行を示す。クライアント／サーバＰＣがインタープリタＰＣよりも更に早く変化すること並びに非同期的な動作の間、インタープリタＰＣが休眠状態になることに注意されたい。ボックス３５２には、アプリケーション・タスクが示されている。非同期的動作が完了する時、インタープリタＰＣを目ざめさせる。
【００７９】
特定の一つの構成では、商用Ｂａｓｉｃインタープリタをアプリケーションに埋込む。インタープリタは、アプリケーションに結合されたライブラリとして送り出される。インタープリタ・ライブラリが、インタープリタを中断し、インタープリタを再開させ、プログラミング言語を拡張し、クライアント／サーバ形アプリケーションの機能を呼び出し、クライアント／サーバ形アプリケーションからスクリプト機能／サブルーチンを実行し、インタープリタとアプリケーションの間で情報をやりとりする機関になる。アプリケーションがＵＮＩＸオペレーティング・システムで実行され、Ｘウィンドウ・システムを使う。具体的に云うと、アプリケーションはＸ  Ｉｎｔｒｉｎｓｉｃｓ（Ｘｔ）、Ｍｏｔｉｆ  Ｗｅｄｇｅｔツールキット（Ｘｍ）及びＸプロトコル・ライブラリＸｌｉｂで構成される。この他のクライアント側ライブラリも、夫々のサーバと連絡する為にアプリケーションによって使われる。インタープリタ・ライブラリから得れる文書拡張機構を使って、Ｂａｓｉｃ言語に拡張が加えられる。この拡張は、クライアント・サーバ機能を発動することによりタスクを実行する。アプリケーションは、スレッドに対する明確なオペレーティング・システムの支援を使わずに実施される。即ち、アプリケーション・プロセスに対して単一の実行スレッドを用いる。しかし、このアプリケーションは、プロセス当たり多重の実行スレッドを支援するオペレーティング・システムに適している。多重実行スレッドを支援すれば、スタックを解きほぐす必要が少なくなるので、この方式の性能が高まる。
【００８０】
前に述べたように、コードは同期的で、非常に読取り易く、こじんまりしていて、クライアント／サーバ形アーキテクチュアのプログラミングに習熟していない実務者によって開発することが出来る。更に、アルゴリズムは、多重実行スレッドの本質的な支援を持つ又は持たないオペレーティング・システムで実施することが出来る。
【００８１】
［オーバーラップ検出及び補正］
前に述べたように、観察テンプレートは、医学的な診断情報を観察することに関係する画像、曲線、テキスト及びその他の患者情報のグラフ表示である。観察テンプレートを組立てる時、典型的には矩形セルを組立てる。スクリーン上のセルの配置を選び、これらのセルの属性の明細を作成する。セルは画像、曲線、テキスト並びに診断プロセスに関連するその他の情報を入れることが出来る。セルはタイリングされ、オーバーラップがあると重要な診断情報が隠れるので、オーバーラップの無いことが好ましい。本発明の一面は、手作業のセル・アラインメント・タスクを加速することによって使い易さを高めることが出来る自動的なオーバーラップ検出及び補正アルゴリズムである。
【００８２】
更に具体的に云うと、一形式では、１又は２境界矩形セル・オーバーラップ検出及び補正アルゴリズムを提供する。このアルゴリズムは非パッキングであって、ユーザのアラインメント動作の意図を正確に実行するようにする。一形式では、アルゴリズムが、観察テンプレート（ＲＴ）を作成する観察テンプレート・エディタに統合される。
【００８３】
一実施態様のオーバーラップ検出及び補正アルゴリズムのフローチャート４００が図９に示されている。図９に示すように、アルゴリズムは２回通過形対話形アルゴリズムであって、セルの配置形状が変更された時のオーバーラップを除こうとするものである。配置形状の変更は、セルの寸法又は場所の変更である。
【００８４】
更に具体的に説明すると、セル配置形状変更４０２（開始）に応答して、セルオーバーラップ検出器４０４が呼び出される。オーバーラップが検出されなければ、ユーザ要請が点４０６（終わり）に示すように首尾よく実行されている。オーバーラップが検出されると、ブロック４０８で、アルゴリズムを呼び出して、オーバーラップを補正する為に、変更されたセルを移動させなければならない最小距離Ｄｍｉｎを計算する。Ｄｍｉｎをオーバーラップ補正器４１０に送り、このオーバーラップ補正器によりセルを距離Ｄｍｉｎだけ移動させる。距離Ｄｍｉｎだけ移動したことにより、セルの別の区域に別のオーバーラップが起こることがあり、その為、再びブロック４１２の所でオーバーラップを検査する。補正によって別のオーバーラップが生じなかった場合、動作が実行されており、アルゴリズムは点４０６（終わり）に示すように首尾よく終了する。別のオーバーラップが見つかった場合、新しい距離Ｄｍｉｎをブロック４１４の所で計算し、オーバーラップ補正器４１６に送って、そこでセルを新しい距離Ｄｍｉｎだけ移動させる。新しい距離Ｄｍｉｎだけ移動したことにより、セルの別の区域で別のオーバーラップが起こることがあり、その為ブロック４１８で再びオーバーラップがあるかどうか検査する。補正によって別のオーバーラップが生じなかった場合、動作が実行されており、点４０６（終わり）に示すようにアルゴリズムが首尾よく終了する。別のオーバーラップが見つかった場合、オーバーラップ補正過程は、ユーザに対するエラーメッセージ４２０と共に終了する。これ以上のパスをすると、セルの詰め込み（パッキング）が起こるので、これ以上の補正パスは行わない。この詰め込み動作は、うまくはめ合わせる可能性もあったのに、セルを比較的大きな距離だけ移動しなければならないかもしれないこと、それ以上のパスによっても決して終わることの無い（無限探索になる）ことを含めて、望ましくない副作用がある。第１の副作用、即ちセルが初めの位置からかなり離れた場所に来るということは、セルがユーザが特定した場所に接近した状態を保つという重要な目標に違反する。
【００８５】
図１０を参照して、セルのオーバーラップ４０４、４１２，４１８を決定することについて説明すると、このオーバーラップは、その配置形状が変更されたセルと、カンバス上にある残りのセルとの間の線形検査を実施することによって決定される。セルのオーバーラップを決定するために下記の４つの状態が検査され、これらの状態は図１０に例示されている。
【００８６】
状態１．  変更されたセルの隅が別のセルの内側にある。
状態２．  別のセルの隅が、変更されたセルの内側にある。
状態３．  どの隅も別のセルの内側にはないが、２つのセルが交差する。
状態４．  変更されたセルがカンバスの縁を越えて伸びる。
【００８７】
変更されたセルを他の１つのセルからオーバーラップを補正する為に移動させる必要のある最小の距離Ｄｍｉｎは、移動するセルがオーバーラップしている各々のセルに対し、下記の距離を決定し、そのうちの最小値に戻ることによって見つける。
【００８８】
１．移動するセルの頂部から、オーバーラップしたセルの底部までの距離。
２．移動するセルの底部から、オーバーラップしたセルの頂部までの距離。
３．移動するセルの左辺から、オーバーラップしたセルの右辺までの距離。
４．移動するセルの右辺から、オーバーラップしたセルの左辺までの距離。
【００８９】
２つのセルのオーバーラップが極くわずかである場合、ルーチンはその内の一番左側のオーバーラップの小さいセルを保存する。これでも、１つのセルをオーバーラップが極く小さいと一意的に確認するのに十分ではない場合、一番下側のオーバーラップの小さいセルに戻る。
【００９０】
オーバーラップ補正ルーチン４１０、４１６は、オーバーラップが極く小さいセル及び最小距離を入力とする。その後、オーバーラップを補正する方向にそのセルを最小距離だけ移動する。最小距離が２つ又は更に多くの方向で同じである場合、変更されたセルを、右、左、上及び下という優先順位で移動する。こういう優先順位は、オーバーラップが決まる方向が見つかるまで、逐次的に評価する。このオーバーラップ検出及び補正アルゴリズムは、セルのタイリングが実質的に自動化され、且つ積み重ねを避けるようにユーザと対話型であるという利点がある。
【００９１】
上に述べたプログラム可能なシステムはユーザにとって極めて親しみやすく、臨床医はこのシステムを使って、イメージング・アプリケーションを比較的容易に素早く開発することが出来ると考えられる。更に、このシステムを使って作成されたスクリプトは、多くの異なる環境で使うように移し替えが容易に出来、この為、環境の如何に関わらず、余分の相当の労力及び費用をかけずに、画像及びデータを医者の希望に従って医者が観察することが出来るように表示することが出来る。更に、クライアント／サーバ形アーキテクチュアを利用したが、要請−明け渡し−返答形のパラダイムでコードを入れる煩わしさを避けながら、長いトランザクションの間でも、システムの対話能力が温存される。更に、観察テンプレートの作成について云うと、自動的なオーバーラップ検出及び補正は、手作業のセル・アラインメント・タスクを加速することにより、使い易さを高めることが出来る。
【００９２】
本発明の種々の実施態様についてこれまで説明したところから、本発明の目的が達成されたことは明らかである。本発明を詳しく説明し、図面に示したが、これは例示の為に過ぎず、本発明を制約するものと解してはならないことを承知されたい。従って、本発明の範囲は、特許請求の範囲によって限定されることを承知されたい。
【図面の簡単な説明】
【図１】本発明の１実施態様によるプログラム可能なシステムの為の一例のユーザ・インターフェースを示す模写図である。
【図２】学習モードを実行した結果を表示する一例の学習モード捕捉窓を示す模写図である。
【図３】観察テンプレート・エディタに対する１実施態様のユーザ・インターフェースの模写図である。
【図４】本発明の１実施態様の学習モード・システムのブロック図である。
【図５】図４にブロック図で示したシステム内のデータの流れを示すデータ・フローチャートである。
【図６】ウィジット階層の１例を示す図である。
【図７】本発明の１実施態様に従って同期的な実行を行うプロセスのシーケンスを示すフローチャートである。
【図８】本発明の１実施態様に従って切り離された１例の同期的な指令実行を示す構成図である。
【図９】本発明の１実施態様によるオーバーラップ検出及び補正アルゴリズムのフローチャートである。
【図１０】本発明の１実施態様によるセル・オーバーラップ検出及び補正アルゴリズムに関連して検査されるセル・オーバーラップ状態を示す説明図である。
【符号の説明】
１００    ユーザ・インターフェイス
１０２    ナビゲーション区域
１０４、１０６    タブ
１０８    ボタン
１１６    メニュー
１１８    スクリプト・エディタ窓
１２０    アクティブ・ヘルプ窓
１２２    画像区域
１５０    学習モード捕捉窓
２００    ＲＴＥ用のユーザ・インターフェイス
２５０    イメージング・システム
２５２    初期設定／計装サブシステム
２５４    コード作成サブシステム
２７２    ウィジット階層
【図１】
0004201363.tif 000003
【図２】
0004201363.tif 000004
【図３】
0004201363.tif 000005
【図４】
0004201363.tif 000006
【図５】
0004201363.tif 000007
【図６】
0004201363.tif 000008
【図７】
0004201363.tif 000009
【図８】
0004201363.tif 000010
【図９】
0004201363.tif 000011
【図１０】
0004201363.tif 000012