JP4059547B2 - クライアント/サーバ型の医療用イメージング・システムで指令を実行する方法 - Google Patents
クライアント/サーバ型の医療用イメージング・システムで指令を実行する方法 Download PDFInfo
- Publication number
- JP4059547B2 JP4059547B2 JP21747897A JP21747897A JP4059547B2 JP 4059547 B2 JP4059547 B2 JP 4059547B2 JP 21747897 A JP21747897 A JP 21747897A JP 21747897 A JP21747897 A JP 21747897A JP 4059547 B2 JP4059547 B2 JP 4059547B2
- Authority
- JP
- Japan
- Prior art keywords
- server
- user
- script
- client
- code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
- G06F9/45512—Command shells
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16H—HEALTHCARE INFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR THE HANDLING OR PROCESSING OF MEDICAL OR HEALTHCARE DATA
- G16H30/00—ICT specially adapted for the handling or processing of medical images
- G16H30/20—ICT specially adapted for the handling or processing of medical images for handling medical images, e.g. DICOM, HL7 or PACS
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16H—HEALTHCARE INFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR THE HANDLING OR PROCESSING OF MEDICAL OR HEALTHCARE DATA
- G16H40/00—ICT specially adapted for the management or administration of healthcare resources or facilities; ICT specially adapted for the management or operation of medical equipment or devices
- G16H40/40—ICT specially adapted for the management or administration of healthcare resources or facilities; ICT specially adapted for the management or operation of medical equipment or devices for the management of medical equipment or devices, e.g. scheduling maintenance or upgrades
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S345/00—Computer graphics processing and selective visual display systems
- Y10S345/949—Animation processing method
- Y10S345/96—Iterative display of preconfigured images
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Public Health (AREA)
- Primary Health Care (AREA)
- Medical Informatics (AREA)
- Epidemiology (AREA)
- Radiology & Medical Imaging (AREA)
- Nuclear Medicine, Radiotherapy & Molecular Imaging (AREA)
- Human Computer Interaction (AREA)
- User Interface Of Digital Computer (AREA)
- Computer And Data Communications (AREA)
- Medical Treatment And Welfare Office Work (AREA)
- Measuring And Recording Apparatus For Diagnosis (AREA)
- Stored Programmes (AREA)
Description
【発明の分野】
本発明は全般的に医療用イメージング方式に関し、更に具体的に云えば、プログラム可能なイメージング・システムに関する。
【0002】
【発明の背景】
一般的に医療用イメージング・システムは、患者の身体の一部分の画像を作成して医者が観察できるようにするために利用されている。場合によって様式とも呼ばれる異なるイメージング技術を使って、患者の身体の複数の部分をイメージングすることが出来る。イメージング様式の例としては、コンピュータ断層撮影(CT)イメージング、磁気共鳴(MR)イメージング、超音波イメージング、ポジトロン・エミッション断層撮影(PET)イメージング、及び核イメージングがある。
【0003】
医療用の画像の作成、処理及び表示に関連して、医療用イメージング・アプリケーションの開発には、一般的に、かなりのソフトウェア開発の努力を必要とする。この開発は、グラフィック・ユーザ・インタフェース(GUI)を基本とする医療用イメージングのアプリケーションを開発するのに特殊なソフトウェア技術が必要とされるので、高度に熟練したソフトウェア実務者によって行われるのが普通である。しかし、ソフトウェア技術者は、その知識の領域が限られている。実際にソフトウェア・アプリケーションを使う臨床医は、アプリケーションを開発するのに必要なソフトウェア技術に熟練していないのが普通である。臨床医がイメージング・アプリケーションを開発することが出来るように高度に使いやすいイメージング・システムを提供することが望ましい。
【0004】
公知の「プログラム可能な(programmable)」システムは、臨床医がカスタマイズされたイメージング・アプリケーションを作成することが出来るようにしている。例えば、最も簡単な形式のカスタマイズ化は、特定の医者に対する表示スクリーン又はその他の条件のカスタマイズ化である。更に複雑なカスタマイズ化は、例えば研究機関では必要になる。
【0005】
しかし、既知のプログラム可能なイメージング・システムは多数の欠点がある。例えば、一つの既知のプログラム可能なシステムは、新しいGUI素子を作成/カスタマイズする能力がない。更に、こういうシステムは基本システムに統合されておらず、その結果、視覚上、機能的及び使い易さの点で問題がある。更に、経験のあるプログラマしかシステムに機能を追加することが出来ない。
【0006】
次に、既知のプログラム可能なイメージング・システムの別の欠点を説明する。これらの欠点は、一般的にスクリプトの作成と実行、非同期的な実行、及び観察テンプレート編集機能に関係するものである。
【0007】
1.スクリプトの作成と実行
典型的には、画像を見る医者が所望のフォーマットで画像データを見ることが出来るように、医療用の画像の表示及び処理シーケンスを制御する為にスクリプトが利用される。例えば、特定の医者は、特定の器官を見る時、特定の系列(シーケンス)のビュー(view)が表示されることを好むことがある。スクリプトは、画像の表示を制御して所望の系列のビューが作成されて表示されるように、作成することが出来る。
【0008】
グラフィック・ユーザ・インターフェース(GUI)を基本とするソフトウェア・アプリケーションから十分に機能的で使いやすいスクリプトを作成することは困難である。典型的には、ボタンのクリックのようなGUIイベントを記録し、同じアプリケーション内でこのイベントを再現することによってスクリプトが作成される。しかし、多くの場合、異なる処理環境のコンテキストで使うことの出来る出力スクリプトを作成することが望ましい。こういう場合、単なる一系列のGUIイベントではなく、ユーザが行った動作のセマンティクス(semantics)を捕捉しなければならない。
【0009】
種々のレベルのGUIイベントを記録して再生することが出来るアプリケーションの例は多くある。このような一つの既知のプログラムは、マウスの動き、ボタンを押したこと並びにキーボードのクリックを記録し、これらのイベントを再現する。しかし、GUIに対する極くわずかな変更でも、その変更を捕捉するにはイベントをもう一度記録することが必要になる。
【0010】
別の既知のアプリケーションは、単にマウス及びキーボードの動作ではなく、作動された(押された)GUIウィジット(ボタン、スライダ等)を記録する。このプログラムは、GUIの変更がわずかな場合、問題を軽減するが、それでも、もとのアプリケーションで作成されたスクリプトを再生することを必要とする。即ち、このプログラムはアプリケーションを記録し、同じアプリケーションを使ってそれを再生することが出来るようにするだけである。作成されたスクリプトは、計装として設けられたアプリケーションの外部で使うように設計されていない。更に、作成された出力スクリプトのシンタックス(syntax)が完全に予じめ定められていて、ユーザが構成し得るものではない。
【0011】
2.非同期的な実行
既知の医療用イメージングシステムはクライアント/サーバ形アーキテクチュアを持っている。このアーキテクチュアの主な利点は、アプリケーションがほとんど処理をしないので、アプリケーションのプロセスがユーザの面倒を見る状態にとどまることが出来ることである。大抵の処理はサーバによって処理される。このサーバは、特定のサービスを行う「専門家」であり、実際に、特定のタスクに対して最適にした専用のハードウェアで動作することがある。この専門化の良い例が、共通の画像処理動作をハードウェアで加速する処理サーバである。ネットワークに分布したリソースにアクセスする能力が、クライアント/サーバ形アーキテクチュアの主な利点である。
【0012】
クライアント/サーバ形アーキテクチュアに於けるタスクの実行について云うと、アプリケーションがあるサービスに対する要請(リクエスト)を出す。この要請を処理するサーバは、ローカル・エリア・ネットワークのどこにあっても良いから、アプリケーションはその結果をユーザに報告する前に、動作が完了するのを待たなければならない。アプリケーションが待たなければならない時間の長さは、サーバの速度を含めた多くの因子に関係する。対話状態に留まる為には、アプリケーションは明け渡しをしなければならないが、これは典型的には、アプリケーションが他のユーザの要請に応答することが出来るように、実行スレッド(thread)をアイドル状態に戻すことによって行われる。この明け渡す機能が高度に対話型のアプリケーションの基本である。前に待ち行列に入れていた要請からの返答が到着した時、アプリケーションはアプリケーションの処理コンテキストをこの要請以前の状態に回復し、動作の結果を提示しなければならない。この過程は、普通、非同期挙動と呼ばれている。
【0013】
経験によると、要請−明け渡し−返答形のパラダイムを実施すると、プログラミングにかなりの昏迷が入り込むことが分かった。これは、1個の動作を多数の実行スレッドに分割しなければならないし、状態またはコンテキスト情報を、要請側を返答側に拘束するように管理しなければならないし、また多数の対話型の非同期的な実行スレッドの為に、微妙な診断の難しいタイミングに関係するエラーがコードに入り込むことがあるからである。その結果得られるコードは維持するのが難しい。こういう因子により、こういう環境でのプログラマの生産性が大幅に低下している。
【0014】
それに、非同期的な実行のアプリケーション・コードは複雑であって、こういう環境でコードを開発するには、コンピュータ・プログラミングの高度の熟練が要求される。例えば、上に述べた要請−明け渡し−返答形の開発パラダイムでは、経験のあるソフトウェア技術者に対して、典型的には6週間ないし8週間の訓練期間が必要である。この訓練期間の多くは、非同期的なソフトウェア・プログラミングの細かい点を理解することに費やされる。更に、非同期的なプログラミングの複雑さの為、これは、普通はソフトウェア技術者ではない大抵の最終ユーザにとって不適当な方式である。クライアント/サーバ形アプリケーションの開発者は、大部分、クライアント/サーバ形アプリケーションの融通性並びに高い対話能力の代償として、要請−明け渡し−返答形のプログラム・パラダイムの開発の効率の悪さを受け入れている。
【0015】
更に、非同期的な動作のある欠点を避けようとして、データベースの機能が同期的に挙動する方式が存在する。例えば、既知の一つの方式では、プログラマが異常に長い動作を検出し、是正措置をとる。こういう挙動を実施する為に使われる機構がポーリング機構であり、待ち段階の間、GUIを凍結する。即ち、GUIは真の明け渡しをしない。応答の待ち時間を非常に短くしなければならない医療用イメージング及び実時間制御のアプリケーションでは、オペレータが長いトランザクションの間に緊急の状況に応答しなければならないことがあるから、こういう形式の機構は受け入れることが出来ないことがある。この方式の別の欠点は、待ち期間の間、長い動作を取り消すことが出来ないことである。要請−明け渡し−返答形のパラダイムのコードを入れる煩わしさを無くすと共にその利点を生かしながら、長いトランザクションの間でも、アプリケーションの対話能力を温存するシステムを提供することが望ましい。
【0016】
3.オーバーラップの検出と補正
医療用イメージング・アプリケーションを開発する時、頻繁に起こるのは観察テンプレートを構成することである。観察テンプレートは、医療用診断情報を見直すことに関連して、画像、曲線、テキスト及びその他の患者情報をグラフで提示することである。観察テンプレートを構成する時、典型的には矩形セルが構成され、スクリーン上のセルの配置を選び、これらのセルに対する属性の明細を定める。セルは、画像、曲線、テキスト並びに診断過程に関連するその他の情報を含むことが出来る。
【0017】
患者情報を見る多くの医者にとって、情報の提示及びフォーマットは非常に重要である。その為、多くの医者は、自分の個人的な診断の必要に合う個人向けの観察テンプレートを要求する。最終ユーザが観察テンプレートをカスタマイズできるようにする為には、イメージング・システムは、観察テンプレートを構成し又は変更する容易な方法を提供しなければならない。更に、観察テンプレート・エディタは特定のタスクに対して最適にすることが好ましい。
【0018】
観察テンプレートを構成する既知の1つのシステムは、テンプレートを作る為にポイント・アンド・クリック形のインターフェースとなるグラフ式観察テンプレート・エディタを使っている。グラフ式エディタは、観察テンプレートを構成する為の最終ユーザにとって容易な方法であることが分かっている。
【0019】
しかし、既知の観察テンプレート・エディタの1つの欠点は、こういうシステムはユーザがセルのオーバーラップを補正することを必要とすることである。具体的に云うと、セルはタイル状になっていて、オーバーラップがあると重要な診断情報が隠れてしまうので、決してオーバーラップを生じることがない。従って、ユーザは、マウス又はプロパティ・エディタを使って、辛抱強く、細心にセルを位置ぎめしなければならない。このタスクを助ける為、ある観察テンプレート・エディタは、更に正確なアラインメントを行うことが出来るようにするズーム・モードのようなツールを含んでいる。他の既知のシステムは、タイリング(tiling)ポストプロセッサを使い、それがセルを最小の幾何学的な形に詰め込む。医療用イメージングの観察テンプレートを構成する場合、こういうツールは実行する時に時間がかかりすぎるか、タイリング・ポストプロセッサの場合のように、ユーザに代ってあまりにも多くのことをする為に、融通性が欠ける。手作業のセル・アラインメント・タスクを加速することにより、使い易さを高めることが出来るような自動的なオーバーラップ検出及び補正アルゴリズムを提供することが好ましい。
【0020】
既知のプログラム可能なシステムに関連する上に述べた欠点が、臨床医が比較的容易に且つ素早くイメージング・アプリケーションを開発することが出来るように、ユーザにとって極めて親しみやすいプログラム可能なシステムによって解決されることが好ましい。更に、スクリプトについて云うと、このスクリプトは、環境の如何に関わらず、余分のかなりの努力及び費用をかけずに、医者の希望に従って、画像及びデータを観察の為に表示することが出来るように、多くの異なる環境で使うことが出来ることが好ましい。このスクリプトの作成が簡単であって、対話型であることも好ましい。更に、前に述べたように、要請−明け渡し−返答形のパラダイムのコードを入力する煩わしさを避けると共に、その利点を生かしながら、長いトランザクションの間でも、アプリケーションの対話能力を温存するシステムを提供することが望ましい。また、観察テンプレートを作成するため、手作業のセル・アラインメント・タスクを加速することにより、使い易さを高めた自動的なオーバーラップ検出及び補正アルゴリズムを提供することが望ましい。
【0021】
【発明の概要】
上記並びにその他の目的が、臨床医にとってシステムの使い易さを高める為に、アルゴリズムを取り入れたプログラム可能な医療用イメージング・システムによって達成することが出来る。プログラム可能な点について云うと、本発明の一面では、スクリプトを作成する為に使うことの出来る学習モードを含むプログラム可能なシステムを提供する。学習モードでは、ユーザが一連の動作を稽古し、それらの動作を後で再現するように保存することが出来る。学習モードは、ユーザがプログラミングの努力を伴わずに新しい機能を開発できるようにするので、新しいユーザ・プロトコルを定義する為の直感的な出発点になる。
【0022】
更に具体的に学習モードについて云うと、システムは、システム構成ファイル、テーブル・ローダ及び自動インストーラを含む初期設定/計装サブシステムを含む。動作について説明すると、テーブル・ローダがシステム構成ファイルを読取って、システム構成ファイルから読取った情報を使って、マスター・テーブルを初期設定する。自動インストーラが、マスター・テーブルに記憶されている「ウィジット(wedget)ネーム」を使って、グラフィック・ユーザ・インターフェース(GUI)アプリケーションから関連するウィジットを見つけ、そのウィジットIDをマスター・テーブルに記憶する。
【0023】
システムGUIで作業するユーザが、一連のイベントを入力し、それがGUIイベント・ハンドラー・システムによって記録される。コード作成器が、特定された各々のGUI動作に対応するスクリプト指令を出力する。コード圧縮システムが、現在の指令及び前の指令からの出力変数を抽出し、出力変数を圧縮コードにある1及び0と比較する。マスクされていないオブジェクト・ネームの副次記号表現が同じであれば、出力は前の出力の代わりであると考えられる。システムが前の出力を追跡し、新しい出力が代わりであると考えられる場合、前の出力を削除する。一般的に、コード圧縮システムからの出力が出力スクリプトと呼ばれる。
【0024】
上に述べたシステムを使って作成された出力スクリプトは、他の処理環境に容易に転送可能である。更に、このシステムは、既知のプログラム可能なシステムに比べて、比較的使いやすく、ユーザにとって極めて親しみやすい。更に、このシステムは、単に動作自体を記録するのではなく、動作の意図を捕捉する形で、ユーザ動作(例えば、キーのクリック及びマウスの動き)のシーケンスを出力指令に解釈する。例えば、2つの像を付け加える為、GUIは、ユーザが付け加える画像を選び、加算動作を選び、選ばれた動作を印加するなどという一連の動作を行うことを必要とする。本発明のシステムでは、出力は、個別の画像を選択するプロセスよりもむしろ、ユーザが意図する画像を付け加える指令を表わす。
【0025】
本発明の別の一面では、下位の非同期的なアーキテクチュアに対する非ブロッキング同期インターフェイスを構成するアルゴリズムを提供する。全般的に云うと、このアルゴリズムはアプリケーションのクライアント/サーバ部分を同期的な開発の環境から切り離す。このアルゴリズムを使うと、プログラマーは、非同期的なプログラミング技術に頼らずに、非ブロッキング型の高度に対話型のクライアント/サーバ形アプリケーションを開発することが出来る。
【0026】
その結果得られるコードは同期的で、非常に読取りやすく、こじんまりしており、クライアント/サーバ形アーキテクチュアのプログラミングに習熟していない実務家によって開発することが出来る。更に、このアルゴリズムは、多重実行スレッドの本質的な支援を持っている又は持っていないオペレーティング・システムで実施することが出来る。
【0027】
本発明の更に別の一面では、オーバーラップ検出及び補正アルゴリズムを提供する。一形式では、このアルゴリズムは、観察テンプレートを作る為の観察テンプレート・エディタに統合されている。1実施例では、オーバーラップ検出及び補正アルゴリズムは、1又は2境界矩形セル・オーバーラップ検出及び補正アルゴリズムである。このアルゴリズムは非パッキング型であって、その為、ユーザのアラインメント動作の意図を正確に実行し、セル・アラインメント・タスクを加速するという重要な利点をもたらす。
【0028】
上に述べたプログラム可能なシステムは、ユーザに極めて親しみやすく、臨床医はこのシステムを使って、イメージング・アプリケーションを比較的容易に且つ素早く開発することが出来ると考えられる。更に、このシステムを使って作成されたスクリプトは、多くの異なる環境で使うように容易に移すことが出来、この為、環境の如何に関わらず、余分のかなりの努力及び費用を伴わずに、医者の希望に従って、画像及びデータを観察の為に表示することが出来る。更に、クライアント/サーバ形アーキテクチュアを利用するが、要請−明け渡し−返答形のパラダイムのコードを入力するという煩わしさを避けながら、長いトランザクションの間でも、システムの対話能力を温存する。更に、観察テンプレートの作成について云うと、自動オーバーラップ検出及び補正は、手作業のセル・アラインメント・タスクを加速することにより、使い易さを高めることが出来る。
【0029】
本発明の一態様では、スクリプト指令を実行するインタプリタ及びグラフィック・ユーザ・インターフェースを持つ少なくとも1つのクライアント装置、並びに少なくとも1つのサーバ装置を含んでいるクライアント/サーバ型の医療用イメージング・システムで、指令を実行する方法が提供される。該方法は、スクリプト指令を実行するように前記インタプリタを動作させ、スクリプト指令がサーバ要請を含んでいる場合、該サーバ要請を前記クライアント装置から前記サーバ装置に送信し、前記インタプリタを中断し、前記インタプリタが中断されている間、前記グラフィック・ユーザ・インターフェースを対話状態に保つステップを含んでいる。該方法は、前記要請に対するサーバ返答を受け取ったとき、更に、前記要請に対する前記サーバ返答を処理し、前記インタプリタの動作を再開してスクリプト指令を実行するステップを含んでいる。前記グラフィック・ユーザ・インターフェースを対話状態に保つ前記ステップは、グラフィック・ユーザ・インターフェース・イベントを処理するステップを有する。
【0030】
【発明の好ましい実施の形態】
本発明の一面は、システムの使い易さを高めるアルゴリズムを取り入れたプログラム可能な医療用イメージング・システムに関する。アルゴリズムは全般的に、学習モードのスクリプトの作成、同期動作、及び観察テンプレート・エディタに於けるオーバーラップ検出及び補正に関係する。重要なことは、本発明を多くの異なる医療イメージング様式で実施することが出来、何ら1つの特定の様式で実施する場合に制限されないことである。次に本発明の1実施態様のプログラム可能なシステムを説明する。更に、学習モード、同期動作並びにオーバーラップ検出及び補正ルーチンを説明する。
【0031】
[プログラム可能なシステムの説明]
ここで説明するプログラム可能な医療用イメージング・システムは、例えば米国ウイスコンシン州、ブルックフィールド、スート100、ノース・パトリック・ブールバード250所在のヒューレット・パッカード・カンパニから商業的に入手し得る製品名「HP715/100UNIX」を基本としたワークステーションを含む多くのハードウェア・プラットフォームで実現することが出来る。1形式では、例として云うと、ルーチンは、米国ウイスコンシン州、ウォーキーシャ、ノース・グランドビュー・ブールバード3000所在のゼネラル・エレクトリック・カンパニ社GEメディカル・システムズ事業部から商業的に入手し得る「GENIE(登録商標)システム」の名前で知られいるような核イメージング・システムに統合して、それに関連して実施することが出来ると考えられている。もちろん、ルーチンは、核イメージング・システム以外のものを含む他の多くの医療用イメージング・システムに関連して、他の多くのプラットフォームで実施することが出来る。
【0032】
次に説明するのは、スクリプトの作成、並びにその他のプログラム能力に関係するタスクに対するツールを含む1実施態様のプログラム可能なシステムである。これらのツールは、ユーザ・ワークステーションで実現することが出来、後で説明するように、メニューを介してユーザがアクセス可能である。ツールの機能を理解しやすくする為、新しいアプリケーション、即ちスクリプトを開発するステップを下にまとめて示す。
【0033】
1.予め定めたプロトコル・ナビゲーション区域に所望のボタンを置く。
2.GUI上でアプリケーションの挙動を稽古することにより、コードを作成する。
3.必要であれば作成されたコードをカスタマイズする。
4.作成されたコードをボタンに付加する。
【0034】
プログラム能力に関するツールは、これらの4つの基本的な工程をポイント・アンド・クリック動作で達成出来るようにすることが好ましい。更に、簡単なアプリケーションでは、これらのツールは、プログラミングを必要としないようにし、更に複雑なアプリケーション並びに更に融通性を持たせる場合には、ビジュアル・ベーシック(Visual Basic)及びC言語を使って低レベルのプログラミングを行うことが出来るようにすることが好ましい。UNIXを基本としたシステムに対するビジュアル・ベーシック・コンパイラは、米国ニューヨーク州、ジェームスヴィル、ジェームスヴィル・ロード4933所在のサミット・ソフトウェア・カンパニから商業的に入手し得る。
【0035】
1実施態様では、特に前に述べたGENIEの環境で実施する場合、現存のGENIEプロトコルに従ってナビゲーションユーザ・インターフェース(UI)のモデルを定め、簡単なポイント・アンド・クリックによりボタン及びメニューの形の新しいナビゲーション要素を付け加える。ボタンの二重クリックにより、ユーザはそのボタンに挙動を持たせることが出来る。普通、挙動は結果スクリーンに表示すること、又は一連の処理動作を行い、その後にその結果を表示することである。更に、生(なま)の縮小した画像の区域が常に存在しており、アプリケーションの「ダッシュボード」になる。生の画像区域がダッシュボードの性質を持つことにより、アルゴリズムの変更の影響が瞬時的にフィードバックされる。この対話能力とアプリケーションの開発及び実行の間の透明性により、実質的に設計−組立−試験サイクルが無くなる。
【0036】
図1は前掲のGENIEシステム用に構成した一例のユーザ・インターフェース100を示す。図1に示すように、ナビゲーション区域102が組み立てられつつある。2つのタブ104及び106が作られており、第1のタブ104が3つのボタン108、110及び112を含む。ナビゲーション区域102を組み立てる為の「ナビゲーション」メニュー項目114がメニュー116に設けられている。ユーザ・インターフェースはスクリプト・エディタ窓118をも含み、メニュー116はユーザが選ぶことの出来る種々の機能を示している。アクティブ・ヘルプ窓120も示されている。更にインターフェース100は、医療用の画像及びデータを表示する画像区域122をも含む。
【0037】
アプリケーションの挙動を特定しやすくするため、ポイント・アンド・クリック作成器、統合エディタ及び外部インタフェースが設けられる。ポイント・アンド・クリック・コード作成器は、例えばユーザがコードを使うことが出来るようにするユーザ動作のセマンティクスを表すコードを作成するために設けられる。統合エディタは、融通性を最大にする為に複合コードを書き込むことが出来るようにする為に設けられており、また統合エディタは、作成されたコードをカスタマイズする為に使うこともできる。外部に限定されたライブラリに対するインタフェースが、性能を左右するような計算並びに最大の融通性の為に設けられている。この外部インターフェースは、例えば、画像処理機能又は外部データ収集装置のような外部機能を素早く利用出来るようにする。
【0038】
多数の部品をプログラム能力の環境内に統合して、臨床アプリケーションを開発する為のコヒーレンスの高いツールとする。これらの部品は、学習モード、スクリプト・エディタ、スクリプト・デバッガ及びスクリプト実行部を含む。学習モードは、ユーザが1つのシーケンスの動作を稽古し、後で再現されるようにそれらの動作を保存することが出来るようにする。更に、学習モードを使って、ユーザは動作のシーケンスを変更することが出来る。学習モードは、ユーザがプログラミングということをせずに、新しい機能を開発することが出来るようにするので、新しいユーザ・プロトコルを定義する為の直感的な出発点になる。学習モードは、動作とそれに対応するユーザ・プロトコル・スクリプトとの間のリンクとなるので、新米のユーザに対する良い学習ツールにもなる。1形式では、学習モードは次のことを行う。
【0039】
1.1組のユーザ動作を記録し、保存し、後でプロトコルを組み立てるのに使うことが出来る。
2.記録の間、動作のシーケンスからの作成されたテキストを表示することが出来る。
3.データ・ローディング及び保存動作が記録可能である。
4.観察テンプレートの記述が記録可能である。
5.画像及び曲線処理動作が記録可能である。
6.画像及び曲線統計結果が記録可能である。
【0040】
1例としての学習モード捕捉窓150が図2に示されており、この図には学習モードを動作させた結果が示されている。学習モードについて更に詳しいことは次の部分で説明する。
【0041】
再び図1を参照すると、ユーザがユーザ・プロトコルを編集することが出来るようにする為に、スクリプト・エディタ124が設けられている。エントリ並びにユーザ・プロトコルに対するテキストの変更を容易にする為、次に述べる特徴を設けることが出来る。下記の全ての特徴はマウス又はキーボードから作動することが出来る。
【0042】
1.「Edit(編集)→Cut(切り取り)」、「Edit(編集)→Copy(コピー)」、及び「Edit(編集)→Paste(貼り付け)」の為のテキスト編集能力。
2.順方向及び逆方向のテキスト・ストリングの探索。探索はいくつかのテキスト・ファイルに亘ることが出来る。
3.テキスト・ストリングの交換。
【0043】
適当なスクリプト・エディタは米国ニューヨーク州、ジェームスヴィル、ジェームスヴィル・ロード4933所在のサミット・ソフトウェア・カンパニから商業的に入手し得る。
【0044】
更に図1について説明すると、ユーザ・プロトコルの開発及びデバッギングを助ける為にスクリプト・デバッガ126が設けられている。スクリプト・デバッガ126は下記の作用を実行する。
【0045】
1.シンタックス検査の特徴が設けられる。エラーが存在する場合、正しくない行が強調され、カーソルがシンタックスとして正しくない要素の上に置かれる。更に、診断メッセージが表示される。
2.ユーザ・プロトコルは一度に1行実行することが出来る。
3.機能/手順に歩進することが出来、或いは機能/手順を1つのユニットとして実行することが出来る。
4.ブレーク点をユーザ・プロトコル内の任意の行にセットすることが出来る。ユーザ・プロトコルの実行はブレーク点で停止する。ブレーク点は取り除くことが出来る。
5.変数をデバッガ内にある間に検査し変更することが出来る。
【0046】
適当なスクリプト・デバッガが前に引用したサミット・ソフトウェア・カンパニから商業的に入手し得る。
【0047】
完全な又は部分的に完成したユーザ・プロトコルの実行128がスクリプト実行部によって行われる。プロトコルは、そのプロトコルの断片を開発し、次いで徐々に機能を埋めることによって、増分的に試験することが出来る。スクリプト実行部は、下記の特徴を用いてこの能力を発揮する。
【0048】
1.プロトコルはスクラッチから開始することが出来る。完了するまで又は割込みに出会うまで実行を続ける。
2.プロトコルを実行するとき、ユーザはスクリプト実行部から全ての画像表示、対話、メニュー及びツールを利用し得る。本質的にはプロトコルは、ユーザが実際のプロトコルを始動させた場合と同様に実行される。スクリーン画像区域全体の代わりに、縮尺された画像区域122が表示されることに注意されたい。
3.ユーザ・プロトコルは休止ボタンを使うことにより、任意の点で中断可能である。再開した時、ユーザ・プロトコルを休止した点から実行が続けられる。
4.ユーザ・プロトコルは、停止ボタンを使って、任意の時に中止することが出来る。
5.全ての予め定められた機能ライブラリ及びユーザによって定められた機能ライブラリがスクリプト実行部で利用出来なければならない。
6.多重プロトコルは同時に実行することが出来ると共に対話状態に留まることが出来る。これは、全てのプロトコルが或るCPU時間を受け取ることを保証する時間スライス機構によって達成される。
【0049】
新しいプロトコルの作成について云うと、ユーザは現存のプロトコルを変更し、変更したプロトコルを新しいプロトコルとして保存することが出来る。この代わりに、ユーザはスクラッチから出発することが出来る。ユーザが現存のプロトコルを削除したいと思うことも考えられる。こういう活動が一般的にプロトコル・マネージメントと呼ばれる。1実施態様では、全てGUI100からアクセス可能である下記の特徴がプロトコルを管理するのに利用することが出来る。
【0050】
1.製造業者により提供されたプロトコルをコピーすることが出来、そのコピーは「File(ファイル)→Save As(そのまま保存)」の特徴(130)を使って変更することが出来る。
2.現存のプロトコルを見ることが出来る。即ちユーザにはソース・スクリプトが常に利用出来る。
3.ユーザは「File(ファイル)ファイル→New(新)」(130)によりスクラッチから新しいユーザ・プロトコルを作成することが出来る。
4.「File(ファイル)→Save(保存)」(130)により現存のプロトコルを変更することが出来る。
5.「File(ファイル)→Delete(削除)」(130)により現存のプロトコルを削除することが出来る。
【0051】
非常に使いやすいシステムには、そのシステム内の全てのアプリケーションが従う「ルック・アンド・フィール(look and feel)」がある。同様に前掲のGENIEシステムでは、プロトコルに対しルック・アンド・フィールが設定されている。1実施態様では、ナビゲーションGUI組立て部114を設けて、アプリケーションを作成するタスクを簡単にする。ナビゲーションGUI組立て部114は下記のことをする。
【0052】
1.ポイント・アンド・クリック・インターフェースを使って、タブ、ボタン及びメニューの項目を作成することが出来る。プログラミングは全く必要とされない。
2.ナビゲーションGUI組立て部の全ての要素に対してプロパティ・エディタを設ける。プロパティは、「動作(action)」手順の明細並びに要素の可視的な性質を含む。
3.完成されたナビゲーションの記述がプロトコルと共に保存される。プロトコルを実行するとき、動作プロパティが呼び出される。
【0053】
1実施態様では、オンライン・ハイパーテキスト・ヘルプ・システム120を含む多数のツール132を設ける。ヘルプ・システム120は、プログラム能力の環境の全ての要素の利用に対してヘルプを提供する。この全般的なヘルプの他に、ビジュアル・ベーシック言語の包括的なヘルプも設けてある。言語に対する全ての新しい拡張に対してヘルプ・ファイルも設けてある。適当なハイパーテキスト・ヘルプ・システムが、米国コネティカット州、リッジフィールド、イーサン・アレン・ハイウェイ241所在のブリストル・テクノロジー・インコーポレーテッドから商業的に入手し得る。
【0054】
ヘルプ・システムのスクリーンを通じてスクリプトを容易に作成することが出来る。具体的に云うと、ユーザはヘルプ・スクリーンを呼び出し、作成しようとするスクリプトに関連するトピックを選ぶことが出来る。典型的には、ユーザが所定の機能を理解するのを助ける為、サンプル・ワーキング・コード、即ち、スクリプトがヘルプ・ファイルに含まれている。ユーザは例を強調表示し、「コピー」指令を使って例をコピーし、その後「貼り付け」指令を使って、この指令をスクリプト・エディタに貼り付けることが出来る。ユーザは、スクリプトを直接的に使って指令を実行するか、又は別のスクリプトに含める為にスクリプトを編集することが出来る。
【0055】
観察テンプレート・エディタのツールの場合について云うと、前に述べたように、観察テンプレートはスクリーンの配置(レイアウト)であり、この配置は複数のセルで構成されており、各々のセルには画像(単独又は多重フレーム)、曲線又はオーバーレー・グラフィックスを入れることが出来る。1実施態様では、観察テンプレート・エディタ(RTE)は、ユーザが観察テンプレートをグラフ式に組み立てることが出来るようにする。
【0056】
図3はRTEに対する1実施態様のユーザ・インターフェイス200を示す。インターフェイス200は、作られたセルを表示する表示区域202を含み、ユーザが種々の機能を容易に選ぶことが出来るようにする「ファイル」メニュー204が設けられている。更に、画像、曲線及びROIデータに対する特定の数学的な又は臨床的な処理を行う為にデータ処理指令206が設けられている。標準的な1組のデータ処理指令と、こういうデータ処理指令206に対する詳細なヘルプ・ファイルが設けられる。アドレスされる全体的な機能区域は、画像及び曲線の演算と、画像の閾値作用と、画像の切り取り、コピー及び貼り付けと、画像及び曲線の統計と、画像のフィルター作用(空間及び周波数)と、曲線のフィルター作用と、画像のフレーム組替えと、画像の向き(回転、方位及び鏡)と、画像の寸法取り(任意の寸法)と、ROI処理(論理動作)とである。
【0057】
ツール132は、ユーザがプログラム、即ちスクリプトを容易に且つ素早く作成することが出来るようにする。もちろん、各々の実行に全てのツール132が必要ではないこと、並びに他の実行にはこの他のツールが望ましいことがあることが考えられる。従って、種々のツールについてこれまで説明したことは、例に過ぎず、本発明をそれに制限するつもりはない。
【0058】
[学習モード]
図4は、本発明の1実施態様に従って学習モードのプログラム能力を達成するように構成されたサブシステムを含むイメージング・システム250のブロック図である。前に説明したように、学習モードは、ユーザがあるシーケンスの動作を稽古し、それらの動作を後で再現されるように保存することが出来るようにするものであり、この学習モードを使うことによって、ユーザは動作のシーケンスを変更することが出来る。本発明の1実施態様に従って学習モードを実施する為、イメージング・システム250が初期設定/計装サブシステム252、及びコード作成サブシステム254を含む。グラフィック・ユーザ・インターフェース(GUI)イベント・ハンドラー・システム256が設けられていて、GUIで起こるイベントを検出すると共に、こういうイベントをコード作成サブシステム254に供給する。後で更に詳しく説明するが、初期設定/計装サブシステム252はシステム構成ファイル258、テーブル・ローダ260及び自動インストーラ262を含む。コード作成サブシステム254はコード作成器264及びコード圧縮システム266を含む。コード圧縮システム266から出力スクリプト268が出力される。サブシステム252及び258は、例えばユーザ・ワークステーション内に構成される。
【0059】
全体について総括的に云うと、システム構成ファイル258が、計装として備える必要があるシステム250内の全てのウィジットのリストを持っている。出力制御スクリプト268を作成するために使われるシーケンス(テキスト・ストリング)も、対応するウィジット・ネームと並んで、システム構成ファイル258内に表示されている。始動すると、システム構成ファイル258(これは読取可能なASCIIフォーマットで記憶されている)が内部データ構造にロードされる。基本ウィジットから出発して、データ構造内にある各々のウィジットに対するウィジット識別子を探索して記録する。実行の間、あるウィジット(ボタン、メニューの項目など)が作動される(押される)と、内部データ構造から出力制御スクリプト・シーケンスが得られる。このシーケンスを、特定された規則を用いて有効な出力制御スクリプト268に拡張する。制御シーケンスが、特定された規則と共に、出力制御スクリプト268を表す言語を定める。システム250は、単にシステム構成ファイル258を編集することにより、異なるシンタックス又は指令を出力するように実行時間で構成し得る。更に、内部制御シーケンス拡張論理は、シェル・スクリプトを含めて異なる出力言語に容易に拡張することが出来る。更に、システム250が、単に動作自体を記録するのではなく、動作の意図を捕捉する形で、ユーザの動作(例えば、キーのクリック及びマウスの動き)のシーケンスを出力指令に解釈する。例えば、2つの画像を付け加える為に、GUIは、付け加えるべき画像を選び、付加動作を選び、選ばれた動作を適用するなどというような一連の動作をユーザが実行することを要求することがある。システム250では、出力が、個別の画像を選ぶプロセスよりもむしろ、ユーザが意図するものとして画像を追加する指令を表す。
【0060】
図5は、システム250の動作を更に詳しく示すデータの流れ図である。前に述べたように、システム構成ファイル258は、所定のアプリケーションを計装し且つ出力スクリプト268を作成するために必要な異なる要素を持っている。システム構成ファイル258内の典型的な行を下記に示す。
【0061】
panUP:panZoomForm.panUp,NORMAL,O,C102G2,VpanY($0panScope,$0panY)
【0062】
この行は下に述べる6つのトークン(要素)を含んでいる。
1.オブジェクト・ネーム(「panUP」)
これは計装される指令の論理名称であり、英字(数字なし)の場合に応じて敏感に変わるストリングである。このネームは、後で説明するシステムのGenCode部分で参照される。
2.ウィジット・ネーム(「panZoomForm.panUp」)
これは計装されるウィジットの名称であり、そのウィジットに対する唯一のパス・ネームに対応すべきである。このストリングは、アプリケーション・ウィジット階層内のウィジットをルックアップするために使用され、オブジェクトがウィジットに対応しない場合はNULL(無効)である。
3.オブジェクトの種類(「NORMAL」)
これはオブジェクトの種類を特定する。考えられる選択は次の通りである。
様式(MODAL)
この種類のオブジェクトは直接的に指令を作成せず、オブジェクトにGenCodeが関連しているが、オブジェクトが作動されたときにコードを作成すべきでない場合に使われる。典型的には、アプリケーションの状態を変えるあらゆるオブジェクトはMODALと記される。
デストラクタ/コンストラクタ(DESTRUCTOR/CONSTRUCTOR)
コンストラクタ及びデストラクタ・ウィジットは、作動された時、ウィジットの数が変わるかもしれないことを示し、自動インストーラ162に全てのウィジットを再びインストールさせる。
ノーマル(NORMAL)
これは、上に述べた何れの種類でもない全てのウィジットに与えら一般的な種類である。
4.グループ(「0」)
グループは、同様なオブジェクトを一様な形で取り扱うための便利な方法を提供する。
5.圧縮コード(「C102G2」)
これは出力コードを再構成する為に使われる随意選択の特徴である。例えば、ユーザがマウスをスクリーンを横切って引っ張る時、マウスの各々の位置で指令を作成する代わりに、動作の終わりに指令を作成することが望ましいことがある。圧縮コードは、このような圧縮を行うのに使われる規則を記述する。
6.GenCode(「VpanY($OpanScope,$OpanY)」)
これは、GUIイベントを有効な出力スクリプトに変換する時にどの規則を使うべきかを特定する。
【0063】
システム構成ファイル258に表されている要素は、計装されたアプリケーションのウィジット階層及び作成された出力スクリプト268と密接な関係を持つ。テーブル・ローダ260が実行時間にシステム構成ファイル258を読取り、システム構成ファイル258から読取った情報を使って、本明細書でマスター・テーブルと呼ぶ内部データ構造270を初期設定する。システム構成ファイル108を実行時間にロード可能なファイルとすることにより、構成に変更を加える為にソフトウェアをコンパイルし直す必要がないので、開発が早められると共に、ファイルは必要がない限りロードされないので、2進ファイルは一層小さくなる。
【0064】
マスター・テーブル270は、テーブル・ローダ260によって読取られた全ての情報、並びに後で説明する自動インストーラ262を使ってアプリケーションGUIから取出された若干の情報を記憶する内部データ構造である。マスター・テーブル270は、システム構成ファイルにある情報を記憶するのに加えて、計装される全てのウィジットのウィジット識別子(ID)を記憶するフィールドをも持っている。1例では、マスター・テーブル構造は次のようになっている。
【0065】
【0066】
自動インストーラ262は、マスター・テーブル270に記憶されている「ウィジット・ネーム」を使って、GUIアプリケーションから関連するウィジットを見つけ、そのウィジットのIDをマスター・テーブル270に記憶する。自動インストーラ262は、ネームを付したウィジット階層272を持つ任意のGUIアプリケーションに作用するように適応させることが出来る。例えば、Xウィンドウズ・アプリケーションでは、自動インストーラ262は、Xt指令を使ってウィジット、即ち、XtNameToWidgetを見つける。
各々のウィジットを探索する為、自動インストーラ262は、アプリケーションに対する基本ウィジットのIDを必要とするが、これは、初期設定の呼の一部分として、システム250に送られたウィジットから、適当なネームのウィジットが見つかるまで、アプリケーション・ウィジット階層272を昇ることによって見つけられる。
【0067】
ウィジット階層272の一例が図6に示されている。図6に示すように、この例のウィジット階層272は基本ウィジット274を含む。この階層の中にpanZoomForm形のウィジット276があり、これがpanZoomForm形計装の総称である。panUPウィジット278が、panZoomFormウィジット276の1形式であり、従って、panUPウィジット278はpanZoomFoorm形ウィジット276より下位にあって、それに接続されている。
【0068】
再び図5について説明すると、様式(MODAL)でない全てのオブジェクトに対し、自動インストーラ262が単一呼戻し機能を呼び出す呼戻しを付加する。自動インストーラ262はウィジットの種類をも決定する。「計装された」ウィジットによって呼出された時、それをマスター・テーブル270でルックアップし、コード作成器264をインデックスによりエントリーに呼込む。
【0069】
コード作成器264はマスター・テーブル270のGenCode部分を使って、特定されたGUI動作に対応するスクリプト指令を出力する。コード作成器264は$n(nは数)で始まりその後に英字が続く任意のストリングを正規の表式”$[0−9][a−zA−Z]+”として、例えば”$0panUp”として拡張することによって、テキストを「評価」する。英字が「オブジェクト・ネーム」を表す。評価すべきオブジェクトがウィジットである場合、ウィジットの値を戻し、出力指令に”$n<object>”テキストを入れ替える。例えば、”panUp”が、テキスト「123.4」を含んでいたテキストウィジットに対するオブジェクト・ネームであった場合、GenCodeでは、ストリング”print$0panUp”は、マスター・テーブル270でpanUpを見ることにより、”print123.4”に変更される。
【0070】
コード作成器264は$01F(”...”=”...”)<result>[$0else<else result>]表式をも拡張する。=の両辺を評価し、その後ストリングを比較する。「真」であれば、<result>を評価して使う。「虚偽」であれば、<else result>を評価して使う。GenCodeは評価が簡単であって、コードを複雑にして拡大するlex又はyaccを使う必要がない。
【0071】
コード圧縮器とも呼ばれることのあるコード圧縮システム266について云うと、コード圧縮は、システム構成ファイル258から読取った圧縮コードによって制御される。ユーザが、コード圧縮システム266なしに、動作、例えばズーム・アップを繰り返すと、システム250はマウス・ボタンを押す毎に新しい指令を作成する。コード圧縮システム266は、重複した行が現れた時、それを除去する。コード圧縮システム266は、現在の指令及び前の指令から出力変数I($n<object name>表式)を抽出し、出力変数を圧縮コードにある1及び0と比較する。マスクされていないオブジェクト・ネームの全ての副次表式が同じである場合、出力は前の出力の代わりであると考えられる。システム266は前の出力を追跡し、新しい出力が代わりであると考えられる場合、前の出力を削除する。
【0072】
上に述べた動作を要約すると、テーブル・ローダ260がシステム構成ファイル258を読取り、システム構成ファイル258から読取った情報を使って、マスター・テーブル270を初期設定する。自動インストーラ262が、マスター・テーブル270に記憶されている「ウィジット・ネーム」を使って、GUIアプリケーションから関連するウィジットを見つけ、そのウィジットのIDをマスター・テーブル270に記憶する。システムのGUIで作業するユーザは、一連のイベントを入力し、それらがGUIイベント・ハンドラー・システム256によって記録される。コード作成器264が、特定された各々のGUIの動作に対応するスクリプト指令を出力する。コード圧縮システム266が現在の指令及び前の指令からの出力変数を抽出し、出力変数を圧縮コードにある1及び0と比較する。マスクされていない全てのウィジット・ネームの副次表式が同じであれば、出力が前の出力の代わりと考えられる。コード圧縮システム266が前の出力を追跡し、新しい出力が代わりと考えられる場合、前の出力を削除する。コード圧縮システム266がスクリプト268を出力する。
【0073】
この場合も、前に説明したように、システム250は、単にシステム構成ファイルを編集することにより、異なるシンタックス又は指令を出力するように、実行時間で構成し得るという重要な利点を持つ。更に、内部制御シーケンス拡張論理を容易に拡張して、シェル・スクリプトを含めて異なる言語を出力することが出来る。
【0074】
[同期動作]
本発明の一面は、下位の非同期的なアーキテクチュアに対する非ブロッキング同期インターフェイスとなるアルゴリズムに関する。全体的に云うと、このアルゴリズムはアプリケーションのクライアント/サーバ部分を同期的な開発の環境から切り離す。クライアント部分又はユニットとサーバ部分又はユニットとは、別々のコンピュータ又は1個のコンピュータにあっても良い。このアルゴリズムを使うと、プログラマは非同期的なプログラミング方式に頼らずに、非ブロッキングの、高度に対話型のクライアント/サーバ形アプリケーションを開発することが出来る。その結果得られるコードは同期的であって、非常に読取り易く、こじんまりしていて、クライアント/サーバ形アーキテクチュアのプログラミングに習熟していない実務家によっても開発することが出来る。更に、このアルゴリズムは、多重実行スレッドの本質的な支援を持つか又は持っていないオペレーティング・システムで実施することが出来る。
【0075】
図7は、本発明の1実施態様に従って同期的な実行をする為の方法の工程のシーケンスを示すフローチャート300であるが、アプリケーションのクライアント/サーバ部分が、要請−明け渡し−返答の細部を取り扱うコードである。開発環境は埋込みインタープリタである。両方の装置は、単一の実行スレッドを持つ同じプロセスにあるが、アルゴリズムは多重実行スレッドに対して実行し得る。
【0076】
図7について具体的に説明すると、最終ユーザが実行時間にコード又はスクリプトを開発する。このコードがインタープリタにより302の所で実行される。クライアント/サーバ形のトランザクションを必要とするスクリプト指令では、即ちサーバ要請304では、インタープリタは、アプリケーションのクライアント/サーバ部分にある適当な機能を発動するようにプログラムされている。サーバ要請304を出す前および/又は出した後、アプリケーションのクライアント/サーバ部分がインタープリタを中断して、明け渡す(306)。GUIを管理するクライアント/ サーバは、待ち期間の間対話状態に留まる。クライアント/サーバが明け渡しをしている為、時間が重要な、実時間で処理する特徴は、アプリケーションのクライアント/サーバ部分に置いておくと、待ち期間の間生きている。
【0077】
対話状態に留まる為、実行スレッドをアイドル状態(XtMainLoop)308に戻す。サービス要請が完了していないと(310)、イベントが引き続いて処理される(312)。要請に対応する返答が到着して処理されると(314)、アプリケーションのインタープリタ部分を再開し(316)、その後、インタープリタのプログラム・カウンタ(PC)は中断したところから継続する。その後の処理はスクリプト行302の実行に戻る。
【0078】
図8は、図7に示した方法の工程により切り離された実行の一例を示す。この例では、2つの非同期的な動作を実行しなければならない。ボックス350には、クライアント/サーバ側の高レベルのタスクが示されている。これらのタスクは実際のコードの何行かを表しており、その為図示のプログラム・カウンタ(PC)は、実際のプロセッサPCに直接的に対応しない。中央の列は、クライアント/サーバ擬似PCが変化する時のインタープリタPCの進行を示す。クライアント/サーバPCがインタープリタPCよりも更に早く変化すること並びに非同期的な動作の間、インタープリタPCが休眠状態になることに注意されたい。ボックス352には、アプリケーション・タスクが示されている。非同期的動作が完了する時、インタープリタPCを目ざめさせる。
【0079】
特定の一つの構成では、商用Basicインタープリタをアプリケーションに埋込む。インタープリタは、アプリケーションに結合されたライブラリとして送り出される。インタープリタ・ライブラリが、インタープリタを中断し、インタープリタを再開させ、プログラミング言語を拡張し、クライアント/サーバ形アプリケーションの機能を呼び出し、クライアント/サーバ形アプリケーションからスクリプト機能/サブルーチンを実行し、インタープリタとアプリケーションの間で情報をやりとりする機関になる。アプリケーションがUNIXオペレーティング・システムで実行され、Xウィンドウ・システムを使う。具体的に云うと、アプリケーションはX Intrinsics(Xt)、Motif Wedgetツールキット(Xm)及びXプロトコル・ライブラリXlibで構成される。この他のクライアント側ライブラリも、夫々のサーバと連絡する為にアプリケーションによって使われる。インタープリタ・ライブラリから得れる文書拡張機構を使って、Basic言語に拡張が加えられる。この拡張は、クライアント・サーバ機能を発動することによりタスクを実行する。アプリケーションは、スレッドに対する明確なオペレーティング・システムの支援を使わずに実施される。即ち、アプリケーション・プロセスに対して単一の実行スレッドを用いる。しかし、このアプリケーションは、プロセス当たり多重の実行スレッドを支援するオペレーティング・システムに適している。多重実行スレッドを支援すれば、スタックを解きほぐす必要が少なくなるので、この方式の性能が高まる。
【0080】
前に述べたように、コードは同期的で、非常に読取り易く、こじんまりしていて、クライアント/サーバ形アーキテクチュアのプログラミングに習熟していない実務者によって開発することが出来る。更に、アルゴリズムは、多重実行スレッドの本質的な支援を持つ又は持たないオペレーティング・システムで実施することが出来る。
【0081】
[オーバーラップ検出及び補正]
前に述べたように、観察テンプレートは、医学的な診断情報を観察することに関係する画像、曲線、テキスト及びその他の患者情報のグラフ表示である。観察テンプレートを組立てる時、典型的には矩形セルを組立てる。スクリーン上のセルの配置を選び、これらのセルの属性の明細を作成する。セルは画像、曲線、テキスト並びに診断プロセスに関連するその他の情報を入れることが出来る。セルはタイリングされ、オーバーラップがあると重要な診断情報が隠れるので、オーバーラップの無いことが好ましい。本発明の一面は、手作業のセル・アラインメント・タスクを加速することによって使い易さを高めることが出来る自動的なオーバーラップ検出及び補正アルゴリズムである。
【0082】
更に具体的に云うと、一形式では、1又は2境界矩形セル・オーバーラップ検出及び補正アルゴリズムを提供する。このアルゴリズムは非パッキングであって、ユーザのアラインメント動作の意図を正確に実行するようにする。一形式では、アルゴリズムが、観察テンプレート(RT)を作成する観察テンプレート・エディタに統合される。
【0083】
一実施態様のオーバーラップ検出及び補正アルゴリズムのフローチャート400が図9に示されている。図9に示すように、アルゴリズムは2回通過形対話形アルゴリズムであって、セルの配置形状が変更された時のオーバーラップを除こうとするものである。配置形状の変更は、セルの寸法又は場所の変更である。
【0084】
更に具体的に説明すると、セル配置形状変更402(開始)に応答して、セルオーバーラップ検出器404が呼び出される。オーバーラップが検出されなければ、ユーザ要請が点406(終わり)に示すように首尾よく実行されている。オーバーラップが検出されると、ブロック408で、アルゴリズムを呼び出して、オーバーラップを補正する為に、変更されたセルを移動させなければならない最小距離Dminを計算する。Dminをオーバーラップ補正器410に送り、このオーバーラップ補正器によりセルを距離Dminだけ移動させる。距離Dminだけ移動したことにより、セルの別の区域に別のオーバーラップが起こることがあり、その為、再びブロック412の所でオーバーラップを検査する。補正によって別のオーバーラップが生じなかった場合、動作が実行されており、アルゴリズムは点406(終わり)に示すように首尾よく終了する。別のオーバーラップが見つかった場合、新しい距離Dminをブロック414の所で計算し、オーバーラップ補正器416に送って、そこでセルを新しい距離Dminだけ移動させる。新しい距離Dminだけ移動したことにより、セルの別の区域で別のオーバーラップが起こることがあり、その為ブロック418で再びオーバーラップがあるかどうか検査する。補正によって別のオーバーラップが生じなかった場合、動作が実行されており、点406(終わり)に示すようにアルゴリズムが首尾よく終了する。別のオーバーラップが見つかった場合、オーバーラップ補正過程は、ユーザに対するエラーメッセージ420と共に終了する。これ以上のパスをすると、セルの詰め込み(パッキング)が起こるので、これ以上の補正パスは行わない。この詰め込み動作は、うまくはめ合わせる可能性もあったのに、セルを比較的大きな距離だけ移動しなければならないかもしれないこと、それ以上のパスによっても決して終わることの無い(無限探索になる)ことを含めて、望ましくない副作用がある。第1の副作用、即ちセルが初めの位置からかなり離れた場所に来るということは、セルがユーザが特定した場所に接近した状態を保つという重要な目標に違反する。
【0085】
図10を参照して、セルのオーバーラップ404、412,418を決定することについて説明すると、このオーバーラップは、その配置形状が変更されたセルと、カンバス上にある残りのセルとの間の線形検査を実施することによって決定される。セルのオーバーラップを決定するために下記の4つの状態が検査され、これらの状態は図10に例示されている。
【0086】
状態1. 変更されたセルの隅が別のセルの内側にある。
状態2. 別のセルの隅が、変更されたセルの内側にある。
状態3. どの隅も別のセルの内側にはないが、2つのセルが交差する。
状態4. 変更されたセルがカンバスの縁を越えて伸びる。
【0087】
変更されたセルを他の1つのセルからオーバーラップを補正する為に移動させる必要のある最小の距離Dminは、移動するセルがオーバーラップしている各々のセルに対し、下記の距離を決定し、そのうちの最小値に戻ることによって見つける。
【0088】
1.移動するセルの頂部から、オーバーラップしたセルの底部までの距離。
2.移動するセルの底部から、オーバーラップしたセルの頂部までの距離。
3.移動するセルの左辺から、オーバーラップしたセルの右辺までの距離。
4.移動するセルの右辺から、オーバーラップしたセルの左辺までの距離。
【0089】
2つのセルのオーバーラップが極くわずかである場合、ルーチンはその内の一番左側のオーバーラップの小さいセルを保存する。これでも、1つのセルをオーバーラップが極く小さいと一意的に確認するのに十分ではない場合、一番下側のオーバーラップの小さいセルに戻る。
【0090】
オーバーラップ補正ルーチン410、416は、オーバーラップが極く小さいセル及び最小距離を入力とする。その後、オーバーラップを補正する方向にそのセルを最小距離だけ移動する。最小距離が2つ又は更に多くの方向で同じである場合、変更されたセルを、右、左、上及び下という優先順位で移動する。こういう優先順位は、オーバーラップが決まる方向が見つかるまで、逐次的に評価する。このオーバーラップ検出及び補正アルゴリズムは、セルのタイリングが実質的に自動化され、且つ積み重ねを避けるようにユーザと対話型であるという利点がある。
【0091】
上に述べたプログラム可能なシステムはユーザにとって極めて親しみやすく、臨床医はこのシステムを使って、イメージング・アプリケーションを比較的容易に素早く開発することが出来ると考えられる。更に、このシステムを使って作成されたスクリプトは、多くの異なる環境で使うように移し替えが容易に出来、この為、環境の如何に関わらず、余分の相当の労力及び費用をかけずに、画像及びデータを医者の希望に従って医者が観察することが出来るように表示することが出来る。更に、クライアント/サーバ形アーキテクチュアを利用したが、要請−明け渡し−返答形のパラダイムでコードを入れる煩わしさを避けながら、長いトランザクションの間でも、システムの対話能力が温存される。更に、観察テンプレートの作成について云うと、自動的なオーバーラップ検出及び補正は、手作業のセル・アラインメント・タスクを加速することにより、使い易さを高めることが出来る。
【0092】
本発明の種々の実施態様についてこれまで説明したところから、本発明の目的が達成されたことは明らかである。本発明を詳しく説明し、図面に示したが、これは例示の為に過ぎず、本発明を制約するものと解してはならないことを承知されたい。従って、本発明の範囲は、特許請求の範囲によって限定されることを承知されたい。
【図面の簡単な説明】
【図1】本発明の1実施態様によるプログラム可能なシステムの為の一例のユーザ・インターフェースを示す模写図である。
【図2】学習モードを実行した結果を表示する一例の学習モード捕捉窓を示す模写図である。
【図3】観察テンプレート・エディタに対する1実施態様のユーザ・インターフェースの模写図である。
【図4】本発明の1実施態様の学習モード・システムのブロック図である。
【図5】図4にブロック図で示したシステム内のデータの流れを示すデータ・フローチャートである。
【図6】ウィジット階層の1例を示す図である。
【図7】本発明の1実施態様に従って同期的な実行を行うプロセスのシーケンスを示すフローチャートである。
【図8】本発明の1実施態様に従って切り離された1例の同期的な指令実行を示す構成図である。
【図9】本発明の1実施態様によるオーバーラップ検出及び補正アルゴリズムのフローチャートである。
【図10】本発明の1実施態様によるセル・オーバーラップ検出及び補正アルゴリズムに関連して検査されるセル・オーバーラップ状態を示す説明図である。
【符号の説明】
100 ユーザ・インターフェイス
102 ナビゲーション区域
104、106 タブ
108 ボタン
116 メニュー
118 スクリプト・エディタ窓
120 アクティブ・ヘルプ窓
122 画像区域
150 学習モード捕捉窓
200 RTE用のユーザ・インターフェイス
250 イメージング・システム
252 初期設定/計装サブシステム
254 コード作成サブシステム
272 ウィジット階層
Claims (2)
- 各スクリプトが複数のスクリプト指令を含む、複数のスクリプトを実行するインタプリタ及びグラフィック・ユーザ・インターフェースを持つ少なくとも1つのクライアント装置、並びに少なくとも1つのサーバ装置を含んでいるクライアント/サーバ型のイメージング・システムで、指令を実行する方法に於いて、
前記複数のスクリプトを実行するように前記インタプリタを動作させ、
ある実行スレッドにおいてサーバ処理を要請するスクリプト指令を実行するに際し、
該サーバ処理の要請を前記クライアント装置から前記サーバ装置に送信し、
前記サーバ処理の要請に対する応答を受信するまで、前記実行スレッドにおいて前記サーバ処理の要請を含むスクリプトを中断し、
前記応答を待っている間、前記実行スレッドにおいて前記グラフィック・ユーザ・インターフェースを対話状態に保つステップと、
前記要請に対するサーバ返答を受け取ったとき、前記実行スレッドにおいて前記要請に対する前記サーバ返答を処理し、前記実行スレッドにおいて前記サーバ処理の要請を含むスクリプトの動作を前記インタープリタのプログラム・カウンタ(PC)が中断したところから継続することにより再開するステップとを含んでいることを特徴とする方法。 - 前記グラフィック・ユーザ・インターフェースを対話状態に保つ前記ステップが、グラフィック・ユーザ・インターフェース・イベントを処理するステップを有する請求項1記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/696,627 US6707469B1 (en) | 1996-08-13 | 1996-08-13 | Synchronous execution in a medical imaging system |
US08/696627 | 1996-08-13 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10222466A JPH10222466A (ja) | 1998-08-21 |
JP4059547B2 true JP4059547B2 (ja) | 2008-03-12 |
Family
ID=24797887
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP21747897A Expired - Fee Related JP4059547B2 (ja) | 1996-08-13 | 1997-08-12 | クライアント/サーバ型の医療用イメージング・システムで指令を実行する方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US6707469B1 (ja) |
JP (1) | JP4059547B2 (ja) |
CA (1) | CA2211334A1 (ja) |
IL (1) | IL121514A (ja) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000305796A (ja) * | 1999-04-22 | 2000-11-02 | Hitachi Ltd | 電子計算機間のジョブ転送方法およびジョブ転送システム |
CN100489819C (zh) * | 1999-11-24 | 2009-05-20 | 肯纳米亚公司 | 电子网络中的连续交互通信的方法 |
US8565937B2 (en) * | 2000-09-07 | 2013-10-22 | The Boeing Company | System, process and computer program product for issue communication and facilitating issue resolution |
US7302397B1 (en) | 2000-09-07 | 2007-11-27 | The Boeing Company | System for issue identification, prioritization, and resolution and associated method |
US20040049530A1 (en) * | 2001-06-11 | 2004-03-11 | Simon Lok | Distributed computer system using a graphical user interface toolkit |
KR20040066836A (ko) * | 2001-11-22 | 2004-07-27 | 가부시끼가이샤 도시바 | 초음파 진단장치, 워크플로우 편집 시스템, 및 초음파진단장치의 제어방법 |
JP4818100B2 (ja) * | 2003-02-28 | 2011-11-16 | アペリオ・テクノロジーズ・インコーポレイテッド | 画像処理及び画像解析用フレームワーク |
US7116440B2 (en) | 2003-02-28 | 2006-10-03 | Aperio Technologies, Inc. | Image processing and analysis framework |
EP1680684A1 (en) * | 2003-10-24 | 2006-07-19 | Koninklijke Philips Electronics N.V. | Diagnostic imaging system with user interface |
US20060236328A1 (en) * | 2004-12-10 | 2006-10-19 | Siemens Medical Solutions Usa, Inc. | Integrated graphical user interface server for use with multiple client applications |
JP4138783B2 (ja) | 2005-07-26 | 2008-08-27 | ザイオソフト株式会社 | 画像処理方法及び画像処理プログラム |
US8179396B2 (en) * | 2006-08-02 | 2012-05-15 | General Electric Company | System and methods for rule-based volume rendition and navigation |
US8522208B2 (en) * | 2006-09-29 | 2013-08-27 | Siemens Aktiengesellschaft | System for creating and running a software application for medical imaging |
DE102006046310A1 (de) * | 2006-09-29 | 2008-04-03 | Siemens Ag | System zur Erzeugung und zum Betrieb einer Softwareapplikation für medizinische Bildgebung |
WO2008061919A2 (en) * | 2006-11-22 | 2008-05-29 | Agfa Healthcare Inc. | Method and system for remote collaboration |
US8924888B2 (en) * | 2008-11-13 | 2014-12-30 | SAP France S.A. | Dynamic data object insertion |
JP5786110B2 (ja) | 2009-12-11 | 2015-09-30 | ライカ バイオシステムズ イメージング インコーポレイテッドAperio Technologies, Inc. | デジタル病理画像分析における信号対雑音比の改善 |
DE102010025480A1 (de) * | 2010-06-29 | 2011-12-29 | Siemens Aktiengesellschaft | Verfahren und System zur Steuerung einer Benutzeroberfläche einer Softwareapplikation |
US20140245159A1 (en) * | 2013-02-28 | 2014-08-28 | Hewlett-Packard Development Company, L.P. | Transport script generation based on a user interface script |
USD781896S1 (en) * | 2015-03-18 | 2017-03-21 | Google Inc. | Display screen or portion thereof with transitional graphical user interface |
USD789394S1 (en) * | 2015-03-18 | 2017-06-13 | Google Inc. | Display screen or portion thereof with transitional graphical user interface |
USD780784S1 (en) * | 2015-03-18 | 2017-03-07 | Google Inc. | Display screen or portion thereof with transitional graphical user interface |
US10884593B1 (en) * | 2019-11-26 | 2021-01-05 | GE Precision Healthcare LLC | Systems and methods for remote layout control of medical image viewers |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5297249A (en) * | 1990-10-31 | 1994-03-22 | International Business Machines Corporation | Hypermedia link marker abstract and search services |
US5452416A (en) * | 1992-12-30 | 1995-09-19 | Dominator Radiology, Inc. | Automated system and a method for organizing, presenting, and manipulating medical images |
US5572643A (en) * | 1995-10-19 | 1996-11-05 | Judson; David H. | Web browser with dynamic display of information objects during linking |
US5687717A (en) * | 1996-08-06 | 1997-11-18 | Tremont Medical, Inc. | Patient monitoring system with chassis mounted or remotely operable modules and portable computer |
-
1996
- 1996-08-13 US US08/696,627 patent/US6707469B1/en not_active Expired - Lifetime
-
1997
- 1997-07-24 CA CA002211334A patent/CA2211334A1/en not_active Abandoned
- 1997-08-11 IL IL12151497A patent/IL121514A/xx not_active IP Right Cessation
- 1997-08-12 JP JP21747897A patent/JP4059547B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US6707469B1 (en) | 2004-03-16 |
JPH10222466A (ja) | 1998-08-21 |
IL121514A (en) | 2000-02-17 |
IL121514A0 (en) | 1998-02-08 |
CA2211334A1 (en) | 1998-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4731643B2 (ja) | スクリプト作成システム | |
JP4059547B2 (ja) | クライアント/サーバ型の医療用イメージング・システムで指令を実行する方法 | |
US5961610A (en) | Systems, methods and apparatus for generating and controlling display of medical images | |
JP4201363B2 (ja) | セル・オーバーラップ検出及び補正方法 | |
US6342907B1 (en) | Specification language for defining user interface panels that are platform-independent | |
JP3565850B2 (ja) | オブジェクト指向通知フレームワークシステム | |
JP3798014B2 (ja) | バルーン・ヘルプ・システム | |
US8656352B2 (en) | System and method for synchronized workflow management | |
US5317688A (en) | Software agent used to provide instruction to a user for a plurality of computer applications | |
EP3338179B1 (en) | Graphical representation of data in a program code editor | |
US6668370B1 (en) | Synchronous execution of object-oriented scripts and procedural code from within an interactive test facility | |
JP2002278668A (ja) | スクロールシステムおよびその方法 | |
JP2008146664A (ja) | メニュー項目表示方法および装置 | |
Smyth | Android Studio 3.2 Development Essentials-Android 9 Edition: Developing Android 9 Apps Using Android Studio 3.2, Java and Android Jetpack | |
US20080177525A1 (en) | Integrated debugger simulator | |
US7865883B1 (en) | Parallel and asynchronous debugger and debugging method for multi-threaded programs | |
JP4686117B2 (ja) | ソースコード変換装置、ソースコード変換方法、およびプログラム | |
JPH08314760A (ja) | プログラム開発支援装置 | |
JP5374965B2 (ja) | シミュレーション制御プログラム、シミュレーション制御装置、およびシミュレーション制御方法 | |
Griffiths et al. | NET Windows forms in a nutshell | |
US11816420B2 (en) | Automatic template and logic generation from a codified user experience design | |
JP3119939B2 (ja) | アプリケーションプログラムを実行するシステム | |
Smyth | Android Studio 3.3 Development Essentials-Kotlin Edition: Developing Android 9 Apps Using Android Studio 3.3, Kotlin and Android Jetpack | |
Cameron et al. | Design-Time Support | |
Baker | CONVERSION OF THE BAND DIAGRAM PROGRAM: A LOOK AT PORTABILITY, EFFICIENCY AND EASE OF USE. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040812 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061031 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20070131 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20070207 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070426 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070529 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070824 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20071001 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20071120 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20071218 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101228 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111228 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121228 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121228 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131228 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |