次では、他のコンポーネントの中でもハードウェア上で実行されるファームウェアおよび/またはソフトウェアを含む例の方法、装置、システム、および製造品を開示するが、そのような方法、装置、システム、および/または製造品が、単に例示的であって、限定的と解釈されてはならないことに留意されたい。たとえば、これらのファームウェアコンポーネント、ハードウェアコンポーネント、および/またはソフトウェアコンポーネントのいずれかまたはすべてを、排他的にハードウェアで、排他的にソフトウェアで、排他的にファームウェアで、またはハードウェア、ソフトウェア、および/もしくはファームウェアの任意の組合せで実施することができる。したがって、次では、例の方法、装置、システム、および/または製造品を説明するが、提供される例は、そのような方法、装置、システム、および/または製造品を実施する唯一の形ではない。
添付の請求項のいずれかが、純粋にソフトウェアの実施態様および/または純粋にファームウェアの実施態様を含むと解釈される時には、少なくとも1つの例の要素のうちの少なくとも1つが、これによって、そのソフトウェアおよび/またはファームウェアを格納する、メモリ、DVD、CD、Blu−ray、その他などの有形の媒体を含むと明白に定義される。
本明細書で説明される例は、ヘルスケア組織の異種の臨床システムからのデータを、たとえば臨床医によってアクセス可能な1つの中央位置に集中化することを可能にする。したがって、説明される例を使用して、特定の患者のデータにアクセスする臨床医は、その患者の関連データのすべてにアクセスでき、エンドユーザコンポーネントを使用して、そのデータのうちのどれを見たいのかを選択することができる。本明細書で説明される例は、異種臨床システムからの関連するデータを、データベース(たとえば、臨床データリポジトリ)に格納する前に、標準化されたおよび/または構造化されたフォーマットまたはモデルに集約することによって、異種臨床システム(たとえば、既存のアプリケーションおよび製品)のインターオペラビリティを可能にする。さらに、本明細書で説明される例は、データが受け取られた後に、そのデータを、カスタマイズ可能なダッシュボードユーザインターフェースを使用して表示することを可能にする。データは、電子医療記録(EMR)、ITソリューションに関連するデータなどを含むことができる。
いくつかの例では、ダッシュボードユーザインターフェースは、受け取られたデータが定義された臨床標準規格と異なる時に臨床医に通知するために警報および/または通知を含むことができる。データが異種臨床システムから受け取られる時に、データを他の臨床システムおよび/または臨床アプリケーションによって使用可能な構造化されたフォーマットまたはモデルに変換し、格納することを可能にするためにマッピングすることによって、データを正規化することができる。データが異種臨床システムから受け取られる時に、たとえばデータを臨床意思決定支援で他の臨床システムおよび/または臨床アプリケーションによって使用可能にすることを可能にするために、データ内の語彙を標準化することができる(たとえば、標準Health Level Seven(HL7)言語)。本明細書で説明される例のプラットフォームのオープンアーキテクチャのゆえに、説明される例を使用する顧客は、彼ら自身のアプリケーションを作成するためにこれらのプラットフォームを活用し、他の提供されたアプリケーションと一緒にプラットフォームを使用し、かつ/または顧客の特定の好みおよび/もしくは必要に基づいてダッシュボードユーザインターフェースをカスタマイズすることができる。
本明細書で説明する例は、異なってフォーマットされたメッセージに単一のユニバーサルスキーマ内で対処し、異なるデバイスを接続することおよび/または異なる通信を情報システムの間でルーティングすることを可能にする。より具体的には、本明細書で説明する例のシステムおよび方法は、Health Level Seven(HL7)のAdmit Discharge Transfer(ADT)、Observation Results(ORU)、Medical Document Management(MDM)、その他、ADT、ORU、MDM、その他のさまざまな2.x HL7バージョン、およびトリガ(たとえば、AO1、AO2など)などのメッセージ構造の異なるバージョンに関連するフィールドの集約を可能にする。いくつかの例では、例のユニバーサルスキーマ定義は、フィールドがHL7構造のすべてのバージョンにまたがってサポートされるのではない可能性がある場合であっても、フォーマットのいずれかに関連して生成されたフィールドを制限しないことによって、第1のプログラムによって第1のHL7フォーマットで作成されたメッセージを受け取り、第2のプログラムによって第2のHL7フォーマットで作成されたメッセージをも受け取ることができる。いくつかの例では、例のユニバーサルスキーマ定義は、第1のHL7フォーマットまたは第2のHL7フォーマットのいずれかに関連して生成されたのではないフィールドがHL7構造のすべてのバージョンにまたがってサポートされない場合に、それらのフィールドを要求しないものとすることができる。
既知の手法とは異なって、本明細書で説明される例は、異なるHL7メッセージタイプ(たとえば、ADT、ORU、MDM)のそれぞれのすべてのトリガについて単一のユニバーサルスキーマ定義を提供し、既存システムの異なるHL7メッセージタイプのそれぞれに関連して使用されるインターフェースエンドポイントの数を減らすことができる。したがって、本明細書で説明する例を使用して、そのようなシステムを維持することの時間集約度および労働集約度を減らし、単純化することができる。
異なるフォーマットを有するメッセージが、ユニバーサルスキーマによって受け取られた後に、同一のまたは類似するビジネスロジックを使用して、受け取られたメッセージタイプに基づいて、メッセージをフォーマットし、編成し、かつ/または格納することができる。たとえば、受け取られたメッセージおよび/または内容に基づいて、例のシステムは、メッセージ内の異なるタイプのデータを検索し、1つまたは複数のオブジェクトの1つまたは複数のフィールドを含む構成ファイル(1つまたは複数)をセットアップすることができる。作成された構成ファイルを、受け取られたメッセージのトリガに関連付けることができ、オブジェクトを、作成された後に相関させることができる。その後、識別されたデータを、構造化されたフォーマットで格納されるフィールドおよび/またはオブジェクトに伝えることができる。フィールドおよび/またはデータに投入されるデータを識別するために着信メッセージを検索することによって、着信メッセージを、望まれるデータについて効果的にフィルタリングすることができる。いくつかの例では、顧客は、受け取られたメッセージおよび/または内容をどのように処理するのかをカスタマイズすることができる。たとえば、顧客は、特定のメッセージタイプが受け取られる場合に行われるアクションおよび/または作成されるオブジェクトを変更することができる。たとえば、ストレージデータ構造を、ランタイムに定義されるスキーマを使用してランタイムに動的に定義することができる。たとえば、ビジネスロジックをランタイムに動的に定義することができる。
異なるフォーマットを有するメッセージがユニバーサルスキーマによって受け取られた後に、受け取られたメッセージタイプと構成ユーザインターフェースのセッティングとに基づいて、メッセージを、異なるオブジェクトの異なるフィールドにマッピングし、データ構造に格納することができる。いくつかの例では、受け取られたデータを、受け取られたメッセージのフォーマットにかかわりなく、同一のまたは類似するビジネスロジックを使用して複数のオブジェクト内の異なるフィールドにマッピングすることができる。
本明細書で説明される例を使用する顧客は、構成ユーザインターフェースを使用して、システムおよび方法を顧客の特定の好みにあわせて調整するために、メッセージ、オブジェクト状態などが、メッセージが処理される時、特定のオブジェクトが操作される時などにどのように振る舞い、操作され、または変更されるのかを構成し、触れ、かつ/または規定することができる。本明細書で説明される例を、第1の顧客について、メッセージがデータを保存するための新しいオブジェクトを作成するように調整することができる。本明細書で説明される例を、同一のメッセージを受け取る第2の顧客について、メッセージ内のデータから更新される特定のオブジェクトが使用可能になるように調整することができる。いくつかの例では、顧客は、特定のメッセージを受け取る時に特定のオブジェクトが作成されるようにシステムを構成することができる。それに加えてまたはその代わりに、顧客は、特定のメッセージを受け取る時の特定のオブジェクトの作成を無視するようにシステムを構成することができる。
たとえば、構成されるストレージデータ構造に基づいて、システムは、メッセージを、病院の健康情報システム(HIS)からのものであり、A01メッセージタイプであるものとして識別することができる。さらに、システムは、そのメッセージに含まれるデータをオブジェクトフィールドにマッピングし、そのメッセージが処理される時に、関連するオブジェクト状態(たとえば、新規、アクティブ、インアクティブ)を変更することができる。いくつかの例では、少なくともいくつかのメッセージは、オブジェクトが特定の状態になるための前提条件を有することができる。患者入院(たとえば、A01)メッセージタイプの患者オブジェクトとして識別された着信メッセージについて、例のシステムおよび方法は、患者がシステムに以前に登録されているので、「New(新規)」および/または「Active(アクティブ)」であるものとして前提条件状態を有することができる。患者入院メッセージタイプが処理されつつある時に、患者オブジェクト状態は、その患者がヘルスケア施設でアクティブ患者であることを示す「Active」に変更される。また、患者入院メッセージタイプが処理されつつある時に、患者オブジェクトを、患者ID、エンティティ、相関、マッピング、その他などの患者入院タイプに含まれる情報を用いて更新することができる。患者登録(たとえば、A04)メッセージタイプとして識別される着信メッセージについて、例のシステムおよび方法は、患者がまだシステム内で患者として登録されていないので、患者オブジェクトが当初に存在しないと期待することができる。患者登録メッセージタイプが処理されつつある時に、患者オブジェクトが作成され、状態は、「Active」であるものとしてセットされる。
本明細書で説明される例は、ランタイムに展開される1つまたは複数のスクリプトを使用して、異なるフォーマットで受け取られる関連する検査室データおよび/または観察データを1つの構造化されたフォーマット(たとえば、Extensible Markup Language)に再構成し、かつ/または集約することができる。たとえば、第1フォーマットで受け取られた第1データを解析し、構造化されたフォーマット(たとえば、親子関係を有するツリー構造)でフォーマットすることができ、第2フォーマットで受け取られ、第1データに関連する第2データを、解析し、構造化されたフォーマットでフォーマットし、第1データと共に集約することができる。データの解析は、関連するデータを識別し、かつ/または抽出し、将来の使用のために保存することを可能にする。いくつかの例では、観察は、実際のデータ、コメント、基準範囲などを含む異なるオブジェクト内のデータを含むことができる。本明細書で説明される例を使用して、観察に関連するデータを、解析し、意思決定支援で、および/または患者データを収集するために使用可能な1つの構造化されたオブジェクトに集約することができる。いくつかの例では、受け取られた臨床データに応じて、警報を、意思決定支援を助けるために生成し、データ構造化の親レベルおよび/または子レベルでヘッダに追加することができる。いくつかの例では、オブジェクト内に格納されるデータは、十分に検証されたコードおよび/または構造を含むことができる。
いくつかの例では、プロセスフローをインターセプトし、受け取られたデータに基づく構造化されたフォーマットへのデータの集約、変更、解析、フィルタリングなどを行うスクリプトを動的に導入するフックをプロセスフロー内で公表することができる。スクリプトを、プロセスフロー内の1つまたは複数のステージで実行されるカスタマイズ可能なプラグインとすることができる。ステージの1つを、データが内部データ構造に変換されかつ/またはマッピングされる前(たとえば、マッピング前スクリプト)とすることができ、かつ/あるいは、ステージの1つを、データが内部データ構造に変換されかつ/またはマッピングされた後(マッピング後スクリプト)とすることができる。データが内部データ構造に変換された後にプロセスフローをインターセプトできるスクリプトを、アペンダ(appender)プラグインスクリプトとすることができる。いくつかの例では、アペンダプラグインスクリプトは、同一の観察に関連する着信メッセージからのすべての観察値(たとえば、それぞれが同一のキーコードおよび/または観察IDを有する)を、システムによって永続される1つのオブジェクトとして格納できる1つのストリングにアペンドすることができる。そのような手法は、観察値がその末尾にキャリッジリターンを含む時に有利である可能性がある。アペンダを使用することによって、キャリッジリターンを観察値からフィルタリングすることができる。その後、キャリッジリターンを伴わない観察値を、格納のために集約し、かつ/またはアペンドすることができる。他の例では、微生物標本観察データを、異なってフォーマットされたセグメントで受け取ることができる。例のスクリプトを使用することによって、セグメントを、集約し、適用可能である場合にテキスト形式で埋め込まれたデータを分離することによって関連情報を抽出するために解析し、構造化されたフォーマットで格納することができる。いくつかの例では、関連するセグメントのデータは集約されるが、関連しないセグメントは集約されないものとすることができる。
スクリプトを、ユーザによって選択できるツリー構造内に表示することができる。選択されたスクリプトを、システムをシャットダウンする必要なしに、受け取られたメッセージタイプに基づいて実行することができる。たとえば、スクリプトを顧客に提供することができ、かつ/または、スクリプトを顧客が記述しかつ/もしくは変更することができる。
いくつかの例では、データを、システムをシャットダウンすることなく展開可能な例のカスタマイズ可能なデータ構造モデリングツールを使用して、受け取られたデータおよび/または内容に基づいて動的にモデリングすることができる。例のツールは、さまざまなシステムから受け取られた患者検査室データおよび/または患者観察データを集約し、このデータをカスタマイズ可能なおよび/または動的に構成可能なデータ構造に格納することができる。たとえば、本明細書で説明される例は、観察に関係し、異なるソースから受け取られるデータ(たとえば、異なるセグメント)を取り込み、解析し、かつ/または十分に検証できるコードおよび/もしくは構造を含む構造化された形での格納のための観察の単位に集約することができる。いくつかの例では、受け取られたデータに基づく意思決定支援を助ける警報を、セットアップすることができる。データを、格納された後に、臨床意思決定支援を助けるために取り出し、かつ/または使用することができる。異なるソースからのデータを構造化されたフォーマットで編成できるので、本明細書で説明される例は、国立保健局(national health department)による国の健康統計に達するための特定の患者のステージ3メジャー(stage 3 measures)の意味のある使用を助けることができる。
いくつかの例では、インメモリのおよび/または永続的なデータストレージが、特定のデータ構造を作成するためにルックアップを検索することによって動的に構成されるデータ構造に基づいて作成され、永続することができる。いくつかの例では、インメモリのおよび/または永続的なデータストレージを、オブジェクトを作成するためのイベントで指定されたデータと受け取られたデータの内容とに基づいて作成することができる。イベントデータスキーマとデータモデルとの間のマッピングを、顧客の好みおよび/または必要に基づいてカスタマイズ可能とすることができる。
いくつかの例では、受け取られた入力メッセージに基づいて、例のシステムは、そのメッセージに関連するサービス識別子コードを識別し、識別されたコードについて指定されたモデルがあるかどうかを判定する。指定されたモデルがある場合には、例のシステムは、メッセージ内容からモデルを抽出し、そのモデルをメモリ内にパネルとして格納する。いくつかの例では、受け取られた入力メッセージに基づいて、例のシステムは、観察識別子コードを識別し、識別されたコードについて指定されたモデルがあるかどうかを判定する。指定されたモデルがある場合には、例のシステムは、メッセージ内容からモデルを抽出し、そのモデルをメモリ内に観察として格納する。
図1は、ヘルスケア情報を受け取り、処理し、かつ/または構造化するために本明細書で説明される例の方法、装置、システム、および/または製造品を実施できる、例のヘルスケア環境100のブロック図である。例のヘルスケア環境100は、病院102内で動作し、かつ/または病院102に関連する複数のエンティティを有する病院102を含む。病院102は、ピクチャ記録更新システム(PACS)104、検査室情報システム106、心臓病科108、放射線情報システム(RIS)110、および腫瘍科112を含む。しかし、病院102は、ヘルスケア情報システム(HIS)を含むなど、図示されたものより多数の、より少数の、および/または異なるエンティティを含むことができる。
心臓病科108は、心臓病学関連の医療従業者、スタッフ、ならびに心臓病学の実践および治療をサポートするデバイスおよび/またはシステムを含む。心臓病科108は、ヘルスケア文書が生成され、送信され、受信され、かつ/または処理される特定のフォーマットおよび/または構造を有する場合がある。腫瘍科112は、癌関連の医療従業者、スタッフ、ならびに腫瘍学の実践および治療をサポートするデバイスおよび/またはシステムを含む。腫瘍科112は、心臓病科108に関連して使用されるフォーマットおよび/または構造とは異なる、ヘルスケア文書が生成され、送信され、受信され、かつ/または処理される特定のフォーマットおよび/または構造を有する場合がある。いくつかの例では、心臓病科108によって生成されるAdmit Discharge Transfer(ADT)メッセージが、第1フォーマットであり、腫瘍科112によって生成される類似するADTメッセージが、第2フォーマットである場合がある。いくつかの例では、心臓病科108によって生成されるObservation Results Message(ORU)メッセージが、第1フォーマットであり、腫瘍科112によって生成される類似するORUメッセージが、第2フォーマットである場合がある。そのような相違が、PACS 104、検査室情報システム106、RIS 110、その他のいずれの間にも存在する可能性がある。
PACS 104は、たとえばデータベースまたはレジストリ内のディジタルイメージなどの医療イメージ(たとえば、X線、スキャン、3次元レンダリングなど)を格納する。イメージは、患者の医療イメージングの後に医療従業者(たとえば、イメージング技師、内科医、放射線科医)によってPACS 104に格納される。それに加えてまたはその代わりに、イメージを、格納のために医療イメージングデバイスからPACS 104に自動的に送信することができる。
RIS 110は、たとえば放射線医学レポート、メッセージ、警告、警報、患者スケジューリング情報、患者人口統計データ、患者追跡情報、ならびに/または内科医および患者状況モニタなどの放射線医学実践に関係するデータを格納する。さらに、RIS 110は、検査指示入力(たとえば、患者のX線の指示)、イメージ追跡、およびフィルム追跡(たとえば、フィルムを調査した1人または複数の人の身元の追跡)を可能にする。
検査室情報システム106は、検査室結果、試験スケジューリング情報、対応する従業者(1人または複数)、および/または対応するヘルスケア施設の1つもしくは複数の検査室の動作(1つまたは複数)に関係する他の情報などの臨床情報を格納する。情報の例のタイプが、上で、病院102のある種の要素に格納されるものとして説明されるが、異なるタイプのヘルスケアデータを、エンティティ104〜112のうちの1つまたは複数に格納することができる。さらに、エンティティ104〜112に格納される情報が、オーバーラップし、かつ/またはエンティティ104〜112のうちの1つまたは複数に組み合わされる場合がある。いくつかの例では、図1のエンティティ104〜112は、電子医療記録(EMR)システム114と相互作用することができる。EMR 114は、たとえば病院102およびそのエンティティ104〜112に関連するヘルスケア記録の電子コピーを格納する。
例のヘルスケア環境100は、外来診療所116をも含む。2つのヘルスケア事業(たとえば、病院102、外来診療所116)が、図1のヘルスケア環境に図示されているが、ヘルスケア環境100は、任意の個数(1、2、3など)の類似するまたは異なるヘルスケア事業を含むことができる。例の外来診療所116は、例の病院102の対応するエンティティに似て動作する、検査室情報システム118およびPACS 120を含む。例の外来診療所116の検査室情報システム118およびPACS 120は、病院102とは異なってヘルスケア文書を生成し、受信し、送信し、かつ/または処理することができる。したがって、ヘルスケア文書のフォーマッティングおよび/または構造化の相違が、一般に、1つのヘルスケア事業のエンティティの間および/またはヘルスケア事業の間に存在する可能性がある。
病院102および外来診療所116は、ネットワーク124を介してECIS(Enterprise Clinical Information System)(たとえば、Qualibria(登録商標))122と通信する。ネットワーク124は、たとえば、私有ネットワークまたはインターネットなどの無線または有線の広域ネットワーク(WAN)、イントラネット、仮想プライベートネットワーク、有線または無線のローカルエリアネットワークなどによって実施することができる。より一般的には、本明細書で説明される結合(1つまたは複数)のすべてを、ネットワークを介するものとすることができる。それに加えてまたはその代わりに、病院102および/または外来診療所116は、直接のまたは専用の伝送媒体126および128を介してECIS 122と通信することができる。
ECIS 122は、ヘルスケア事業(たとえば、病院102、外来診療所116など)のシステム、デバイス、アプリケーションなどによって実施されるヘルスケア情報処理をサポートすることができる。ECIS 122は、異なるヘルスケア事業エンティティ(たとえば、エンティティ104〜114、118、120)に関連して生成されたメッセージ、内容、セグメントなどが、異なるフォーマット、構造、用語法、プロトコル、ポリシなどを含む場合であっても、それらのメッセージ、内容、セグメントなどを処理することができる。
いくつかの例では、ECIS 122の処理は、臨床意思決定支援を助けるためにヘルスケア事業エンティティのすべてによって使用できる標準化されたおよび/または構造化されたフォーマットおよび/またはモデルにデータを集約することによって、ヘルスケア事業エンティティのインターオペラビリティを可能にする。いくつかの例では、ECIS 122および、より具体的にはECIS 122の例のメッセージ処理システム130は、すべてのメッセージ変形形態(たとえば、異なるHL7メッセージ)に対処することによって、ユニバーサルスキーマを介して異なるメッセージタイプ(たとえば、ADT:01、ADT:02など)を含むデータを受信することができる。それに加えてまたはその代わりに、メッセージ処理システム130は、ランタイムに展開される1つまたは複数のスクリプトを使用して、着信データのプロセスフローをインターセプトすることができる。スクリプトは、異なってフォーマットされたデータをECIS 122および/またはヘルスケア事業エンティティによってより使用可能な1つの構造化されたフォーマット(たとえば、ツリー構造)に再構成し、解析し、変更し、かつ/または集約することができる。それに加えてまたはその代わりに、メッセージ処理システム130は、受け取られるメッセージのフォーマットにかかわりなく、同一のまたは類似するビジネスロジックを使用して、着信メッセージの諸部分を異なるオブジェクトの異なるフィールドにマッピングすることができる。それに加えてまたはその代わりに、メッセージ処理システム130は、受け取られたデータをカスタマイズ可能なおよび/または動的に構成可能なデータ構造に動的にモデリングすることができる。メッセージ処理システム130を使用して構造化されたデータを、データベースまたはデータストア132に格納することができる。いくつかの例では、データベース132を、臨床データリポジトリとすることができる。
図2は、図1の例のメッセージ処理システム130および/またはデータベース132を実施するのに使用できる例のメッセージ処理システム200のブロック図である。この例では、メッセージ処理システム130は、インターフェース202、識別子204、ユニバーサルスキーマ206、プリマッパ(pre−mapper)208、プロセッサ210、ポストマッパ(post−mapper)212、およびデータストア214を含む。図1のメッセージ処理システム130およびデータベース132を実施する例の形が図1に示されたが、図2に示された要素、プロセス、および/またはデバイスのうちの1つまたは複数を、任意の他の形で組み合わせ、分割し、再配置し、省略し、除去し、かつ/または実施することができる。さらに、インターフェース202、識別子204、ユニバーサルスキーマ206、プリマッパ208、プロセッサ210、ポストマッパ212、およびデータストア214、ならびに/またはより一般的に、図2の例のメッセージ処理システム200を、ハードウェア、ソフトウェア、ファームウェア、ならびに/あるいはハードウェア、ソフトウェア、および/またはファームウェアの任意の組合せで実施することができる。したがって、たとえば、インターフェース202、識別子204、ユニバーサルスキーマ206、プリマッパ208、プロセッサ210、ポストマッパ212、およびデータストア214、ならびに/またはより一般的に、図2の例のメッセージ処理システム200のいずれをも、1つまたは複数の回路、プログラム可能プロセッサ(1つまたは複数)、特定用途向け集積回路(ASIC)(1つまたは複数)、プログラマブル論理デバイス(PLD)(1つまたは複数)、および/またはフィールドプログラマブル論理デバイス(FPLD)(1つまたは複数)などで実施することができる。添付の請求項のいずれかが、純粋にソフトウェアの実施態様および/または純粋にハードウェアの実施態様を包含すると解釈される時に、インターフェース202、識別子204、ユニバーサルスキーマ206、プリマッパ208、プロセッサ210、ポストマッパ212、およびデータストア214、ならびに/またはより一般的に、図2の例のメッセージ処理システム200のうちの少なくとも1つが、これによって、ソフトウェアおよび/またはファームウェアを格納する、メモリ、DVD、CDその他などの有形の媒体を含むと特に定義される。さらに、図2の例のメッセージ処理システム200は、図2に示されたものに加えてまたはその代わりに1つまたは複数の要素、プロセス、および/またはデバイスを含むことができ、かつ/あるいは図示の要素、プロセス、およびデバイスのいずれかまたはすべてを複数含むことができる。
一般に、例のメッセージ処理システム200は、ヘルスケア組織の異種臨床システムからのデータを臨床医、他のアプリケーション、プログラムなどによって使用可能な標準フォーマットで1つの位置で集中化し、かつ/またはフォーマットすることを可能にする。いくつかの例では、メッセージ処理システム200は、これらの異種臨床システムから受け取られたメッセージのフォーマットおよび/または内容を解析し、フィルタリングし、標準化されたおよび/または構造化されたフォーマットおよび/またはモデルに変換し、集約し、アペンドし、構成し、かつ/または変更することができる。この構造化されたデータを、たとえばインターフェース202を使用して、表示し、かつ/または臨床医によって使用することができる。
いくつかの例では、メッセージ処理システム200が、たとえばユニバーサルスキーマ206を介してメッセージを受け取る時に、識別子204は、メッセージタイプ、メッセージのフォーマッティング、および/またはメッセージ内に含まれる内容を識別することができる。識別子204は、第1フォーマッティング、第2フォーマッティングなどであるADTメッセージタイプとしてメッセージを識別することができる。識別子204は、第1タイプの内容、第2タイプの内容などを含むものとしてADTメッセージ内に含まれる内容を識別することができる。識別子204は、第1フォーマッティング、第2フォーマッティングなどであるORUメッセージタイプとしてメッセージを識別することができる。識別子204は、第1タイプの内容、第2タイプの内容などを識別するものとしてORUメッセージ内に含まれる内容を識別することができる。
いくつかの例では、プロセッサ210を使用してメッセージを処理し、マッピングし、かつ/または動的にモデリングする前に、プリマッパ208が、着信プロセスフローに1つまたは複数のスクリプトを適用することができる。スクリプトは、異なるフォーマットで受け取られたデータをプロセッサ210によってより使用可能な1つの構造化されたフォーマットにフィルタリングし、解析し、変更し、集約し、その他を行うことができる。たとえば、メッセージ処理システム200が、異なるフォーマットの複数のセグメントからなり、同一の観察に関係するメッセージを受け取る場合がある。プリマッパ208を使用することによって、複数のセグメントを、メッセージ処理システム200内で永続される単一のオブジェクトに集約することができる。この単一のオブジェクトを、親子関係を有するツリー構造にフォーマットすることができ、ここで、親は、より一般的な内容を含むことができ、かつ/または子は、より詳細な内容および/もしくはデータを含むことができる。たとえば、微生物学検査結果に関係する複数のセグメントを受け取る場合がある。微生物学検査結果は、定性的データ、定量的データ、および/またはその中に埋め込まれたコメントを有する微生物学標本およびスライド検査を含む場合がある。プリマッパ208を使用することによって、微生物学検査結果のデータを、ツリー構造にフォーマットすることができ、標本データがその標本データに関連するノードに格納され、マイクロスライド検査データが、そのマイクロスライド検査データに関連するノードに格納され、定性的データ、定量的データ、および/またはコメントが、その中のそれぞれのノードに格納されるようになる。構造化されたデータを、たとえば後の使用のためにデータストア214に保存することができる。
メッセージがプリマッパ208でフォーマットされた後に、ならびに/あるいはこのフォーマッティングが適用可能ではないおよび/または必要ではない場合に、メッセージを、プロセッサ210を使用して処理することができる。プロセッサ210は、システムをシャットダウンする必要なしに、データを動的にモデリングし、かつ/または構成することができる。プロセッサ210は、さまざまなシステムから受け取った患者データ(たとえば、ADTデータ、検査室データ、観察データなど)および/または内容をマッピングし、解析し、フィルタリングし、変更し、かつ/または集約し、その他を行うことができ、このデータをデータストア214でカスタマイズ可能なおよび/または動的に構成可能なデータ構造内に格納することができる。このデータ構造を、たとえばインターフェース202を使用して顧客および/またはプロバイダによってカスタマイズすることができる。
いくつかの例では、プロセッサ210は、マッピングによってデータおよび/またはメッセージの内容を正規化することができる。マッピングを、たとえばインターフェース202を使用して、顧客の好みおよび/または必要に基づいてカスタマイズ可能とすることができる。次に、この正規化されたデータを臨床意思決定支援で使用可能な構造化されたフォーマット、モデル、パネルなどに変換し、格納することができる。たとえば、病院のヘルスケア情報システム(HIS)からの、A01メッセージタイプであるものとしてメッセージを識別する識別子204に基づいて、プロセッサ210は、メッセージからのデータをA01メッセージタイプに関連する1つまたは複数のオブジェクトのフィールドにマッピングし、かつ/または抽出することができ、ここで、データを、その後、後の使用のためにデータストア214で構造化されたフォーマットで保存することができる。
たとえば、病院の心臓病科からの、観察メッセージであるものとしてメッセージを識別する識別子204に基づいて、プロセッサ210は、メッセージからのデータを観察メッセージに関連するパネルおよび/またはサブパネル内の1つまたは複数の観察項目にマッピングし、かつ/または抽出することができ、ここで、データを、その後、後の使用のためにデータストア214で構造化されたフォーマットで保存することができる。しかし、観察メッセージに関連するパネルがない場合には、データを、たとえば後の使用のために観察項目としてデータストア214で構造化されたフォーマットで保存することができる。
たとえば、腫瘍科からの、検査室メッセージであるものとしてメッセージを識別する識別子204に基づいて、プロセッサ210は、検査室メッセージに関連するモデルを生成するためにメッセージからのデータをマッピングし、かつ/または抽出することができ、ここで、データを、その後、後の使用のためにデータストア214で構造化されたフォーマットで保存することができる。いくつかの例では、異なるソースからのおよび/または異なるフォーマットのマッピングされたデータを、十分に検証できるコードおよび/または構造を含む構造化された形での格納のために単一の単位に解析し、かつ/または集約することができる。
プロセッサ210を使用してメッセージを処理した後に、ポストマッパ212が、プロセスフローに1つまたは複数のスクリプトを適用することができる。スクリプトは、受け取られたデータをフィルタリングし、解析し、変更し、集約することができる。たとえば、末尾にキャリッジリターンを含む観察値を、ポストマッパ212を使用してフィルタリングして、キャリッジリターンを除去することができる。次に、フィルタリングされた観察値を、たとえばデータストア214での格納のためにアペンドすることができる。
メッセージ処理システム200は、データストア214を含む1つまたは複数の内部メモリおよび/またはデータストアを含むことができる。データストレージは、メッセージ処理システム200と通信する、任意のさまざまな内部のおよび/または外部のメモリ、ディスク、リモートストレージを含むことができる。いくつかの例では、インターフェース202を、グラフィカルユーザインターフェース(GUI)として構成することができる。
図3に、複数の既知のサービスインターフェース、サブスキーマ、および/またはスキーマ304を介してヘルスケア情報システム306にルーティングされる複数のADTメッセージ構造302を示す。複数のサービスインターフェース304が使用されているのは、着信ADTメッセージ(たとえば、A01、A02など)が異なってフォーマットされ、かつ/またはそれに関連するより少ない、より多い、および/もしくは異なるフィールドを有する場合があるからである。多数のサービスインターフェース304を含めることは、その保守が時間集中的であり労働集中的である多数のインターフェースエンドポイント308を生じる。
図4に、例の「ユニバーサル」スキーマまたはユニフォームスキーマ(たとえば、ユニバーサルXMLスキーマ)404を介してヘルスケア情報システム406にルーティングされる複数のADTメッセージ構造402を示す。いくつかの例では、ユニバーサルスキーマ404を使用して、HL7メッセージ(たとえば、ADTメッセージ、ORUメッセージ、MDMメッセージなど)のすべてのバージョンおよび/またはトリガを処理することができる。いくつかの例では、ユニバーサルスキーマ404は、HL7のさまざまなバージョンに関連するHL7メッセージ構造および/またはフィールドのすべての変形形態に対処する拡張的なメッセージングフレームワークを含む。たとえば、ユニバーサルスキーマ404は、すべてのHL7バージョンおよび/またはHL7構造にまたがってサポートされるのではない可能性があるフィールドを制限し、かつ/または要求することをしないことによって、2.x HL7 ADTメッセージのさまざまなバージョンに関連するHL7 ADTメッセージ構造および/またはフィールドのそれぞれのすべてのフィールドを集約することができる。図3の複数のサービスインターフェース304ではなくユニバーサルスキーマ404を使用することによって、ヘルスケア情報システム406でのインターフェースエンドポイント408の個数が、大幅に減らされ、これによって、そのようなシステムの保守の時間集約度および労働集約度が減らされる。
図5に、その中でメッセージをマッピングし、ルーティングし、構成し、フォーマットし、構造化し、かつ/または格納できる、親子関係を有する例のツリー構造500を示す。この例では、ツリー構造500は、親ノード502〜510および子ノード512〜514を含む。しかし、他の例では、ツリー構造500は、より少数の、より多数の、および/または異なるノードを含むことができる。ノード502は、A01メッセージタイプに関係し、ノード504は、A01メッセージの患者オブジェクトタイプに関係し、ノード512〜516は、メッセージがオブジェクト状態を介して操作される時にその状態が変化し得る患者オブジェクトタイプのフィールドに関係する。ノード506は、外来診察オブジェクトタイプに関係し、ノード518および520は、メッセージがオブジェクト状態を介して操作される時にその状態が変化し得る外来診察オブジェクトタイプのフィールドに関係する。ノード508は、A04メッセージタイプに関係し、ノード510は、A04メッセージの患者オブジェクトタイプに関係し、ノード522および524は、メッセージがオブジェクト状態を介して操作される時にその状態が変化し得る患者オブジェクトタイプのフィールドに関係する。
いくつかの例では、顧客(たとえば、Mayo Clinic(登録商標))526から受信したメッセージを、A01メッセージタイプとして識別することができ、それに応じてノード(1つまたは複数)502、504、および/または506にマッピングすることができる。いくつかの例では、A01メッセージタイプについて、患者オブジェクトタイプは、患者がシステム内で以前に登録されていることをシステムが期待するので、ノード514で「New」および/または「Active」であるものとして前提条件状態を有することができる。A01メッセージタイプが処理されている時に、患者オブジェクト状態を、ノード516で「Active」に変更し、その患者がヘルスケア施設でアクティブ患者であることを示すことができる。さらに、A01メッセージが処理されている時に、それに関連するデータおよび/または内容を、たとえばツリー構造500の構造化フォーマットに集約し、フォーマットし、その他を行うことができる。
いくつかの例では、顧客(たとえば、Intermountain Healthcare)526から受信したメッセージを、A04メッセージタイプとして識別することができ、それに応じてノード(1つまたは複数)508および/または510にマッピングすることができる。いくつかの例では、A04メッセージについて、患者オブジェクトタイプは、患者がヘルスケア施設で患者としてシステム内で登録されていないので、患者オブジェクトが当初に存在しないと期待することができる。患者登録タイプメッセージが処理される時に、患者オブジェクトが、ノード522で作成され、その後、状態が、ノード524で「Active」に変更される。
いくつかの例では、ツリー構造500に関連する例のシステムのデータ構造を、構成ユーザインターフェースを使用して顧客および/またはプロバイダによって操作し、かつ/またはカスタマイズすることができる。いくつかの例では、ツリー構造500に関連する例のシステムは、ストレージデータ構造(たとえば、ツリー構造500)を動的に定義することができる。いくつかの例では、ツリー構造500に関連する例のシステムは、ランタイムにスキーマを定義することおよび/またはフォーマットすることによって、任意のタイプの入力データを受け取ることができる。
いくつかの例では、ツリー構造500を、異なる顧客、アプリケーション、および/またはプログラムから異なるフォーマットで受け取られたメッセージをマッピングし、フォーマットし、かつ/または構造化するビジネスロジックに関連付けることができる。ビジネスロジックを、ランタイムに動的に定義することができる。本明細書で説明する例のこのビジネスロジックは、顧客が異なるメッセージフォーマット、アプリケーション、および/またはシステムを使用する場合であっても、すべての顧客について同一および/または類似するものとすることができる。したがって、新規のおよび/または既存のクライアントまたは顧客を、たとえばシステムの基礎になるビジネスロジックを変更せずに、彼らの着信メッセージがマッピングされ、フォーマットされ、構成され、その他が行われるように、同期化することができる。
図6に、顧客に基づくスクリプトを含む例のアーキテクチャ600を示す。いくつかの例では、アーキテクチャ600は、着信メッセージにスクリプトを導入することができるプリマッピングプラグイン602を含むことができる。スクリプトは、データおよび/または内容をより使用可能な形にフォーマットし、かつ/または構造化するために着信メッセージのデータおよび/または内容をフィルタリングし、アペンドし、解析し、かつ/または集約することができる。いくつかの例では、複数のプラグインスクリプト(たとえば、観察群604、コメントパッケージャ606)を、顧客(たとえば、管理者)および/またはプロバイダによる使用のためにライブラリ内で使用可能にすることができる。他の例では、プラグインスクリプトを、顧客および/またはプロバイダが記述し、かつ/または変更し、ライブラリに追加することができる。
この例では、プリマッピングプラグイン602は、観察指示または観察群604およびコメントパッケージャ606を含む。観察指示または観察群604は、たとえば、スクリプトのうちの1つまたは複数がそれに作用する観察(1つまたは複数)の着信データ構造を表すことができる。コメントパッケージャ606は、関連する観察(たとえば、同一の観察)のさまざまなデータ構造からのコメントを識別し、集約し、かつ/または組み合わせ、組み合わされたデータをたとえばストレージデータ構造のフィールドにアペンドすることができる。
いくつかの例では、着信メッセージ608は、第1データ構造内の微生物学観察に関係する第1セグメントと、第2構造内の追加の標本データを含む第2セグメントとを含むことができる。プリマッピングプラグイン602を使用することによって、適用可能な場合に、着信メッセージ608を標準データ構造に集約し、解析することができる。いくつかの例では、解析は、セグメント内にテキスト形式で埋め込まれたデータを分離することを含むことができる。いくつかの例では、着信メッセージタイプ、フォーマット、および/またはメッセージがそこから受信された顧客に固有の1つまたは複数のスクリプトを追加することによって、データを標準データ構造に集約し、フォーマットすることができる。
アーキテクチャ600は、さまざまなシステムから受け取られたデータをマッピングし、かつ/または集約し、そのデータを医療情報を保持するリポジトリ内のカスタマイズ可能なおよび/または動的に構成可能なデータ構造に格納する、例のマッピング/モデリングツール610を含むことができる。たとえば、OSGI(すなわち、open services gateway initiative)を使用することによって、マッピング/モデリングツール610は、コードにパッチ(たとえば、顧客の要求で製造業者によって生成されたカスタムパッチ)を全く適用せずに、ランタイムにデータのマッピングおよび/または構造化に対して行われる変更を適用することができる。いくつかの例では、データを、プリマッピングプラグイン602のスクリプト(1つまたは複数)の適用の後にマッピング/モデリングツール610を使用して処理することができる。
いくつかの例では、マッピング/モデリングツール610は、イベントデータスキーマとデータモデルとの間のカスタマイズされたマッピングを可能にする。いくつかの例では、マッピング/モデリングツール610は、ある観察に関係し、異なるソースから受け取られたセグメントに含まれるデータを取り込み、かつ/または構造化されたフォーマットでの格納のために解析できる観察の単位に集約することができる。構造化されたおよび/または一貫するフォーマットでのデータは、十分に検証されるコードおよび/または構造を含むことができる。データを、格納の後に、意思決定支援に有利に使用することができる。いくつかの例では、受け取られたデータが標準から変化する時に顧客および/またはプロバイダに警報を与える警報をセットアップすることができる。
アーキテクチャ600は、マッピング/モデリングツール610を使用して処理された後にデータにスクリプトを導入できるポストマッピングプラグイン612を含むことができる。スクリプトは、たとえば格納の前にデータおよび/または内容をフィルタリングし、アペンドし、解析し、かつ/または集約することができる。いくつかの例では、複数のプラグインスクリプト(たとえば、観察群614、アペンダ616)を、顧客および/またはプロバイダによる使用のためにライブラリ内で使用可能とすることができる。いくつかの例では、プラグインスクリプトを顧客および/またはプロバイダが記述し、かつ/または変更し、ライブラリに追加することができる。
いくつかの例では、ポストマッピングプラグイン612は、観察指示または観察群614およびアペンダ616を含む。観察指示または観察群614は、たとえば、スクリプトのうちの1つまたは複数がそれに作用する観察(1つまたは複数)のデータ構造を表すことができる。アペンダ616は、同一の観察に関連する着信観察メッセージの観察値を、システム内で永続させられるオブジェクトにアペンドすることができる。たとえば、末尾にキャリッジリターンを含む観察値を、アペンダ616を使用してフィルタリングして、キャリッジリターンを除去することができる。次に、たとえば、フィルタリングされた観察値を、格納のためにアペンドすることができる。
図7に、例のプリマッピングプラグインを使用してメッセージを集約し、フィルタリングし、解析し、フォーマットし、構造化し、かつ/または格納することができる親子関係を有する例のツリー構造700を示す。この例では、ツリー構造700は、親ノード702、704、および706と、子ノード708〜716とを含む。しかし、他の例では、ツリー構造700は、より少数の、より多数の、および/または異なるノードを含むことができる。ノード702は、マイクロパネルに関係し、ノード704は、ノード708の定性的データ、ノード710の定量的、およびノード712のコメントを含む標本データに関係する。ノード706は、ノード714の定性的データおよびノード716の定量的データを含むマイクロスライド検査データに関係する。
いくつかの例では、着信メッセージは、すべてが微生物学標本に関係する複数のセグメントを含むことができる。セグメントのうちのいくつかは、定性的データを含むことができ、セグメントのうちのいくつかは、定量的データを含むことができ、セグメントのうちのいくつかは、コメントを含むことができる。プリマッピングスクリプトを適用することによって、定性的データをフィルタリングし、集約し、組み合わせ、かつ/または解析し、ノード708で格納することができ、定量的データをフィルタリングし、集約し、組み合わせ、かつ/または解析し、ノード710で格納することができ、コメントをフィルタリングし、集約し、組み合わせ、かつ/または解析し、ノード712で格納することができる。
いくつかの例では、着信メッセージは、マイクロスライド検査に関係する複数のセグメントを含むことができる。セグメントのうちのいくつかは、定量的データを含むことができ、セグメントのうちのいくつかは、定性的データを含むことができる。プリマッピングスクリプトを適用することによって、定性的データをフィルタリングし、集約し、組み合わせ、かつ/または解析し、ノード714で格納することができ、定量的データをフィルタリングし、集約し、組み合わせ、かつ/または解析し、ノード716で格納することができる。他の例では、微生物学標本データおよびマイクロスライド検査データを含む複数のセグメントを受け取ることができる。
図8〜16に、たとえばヘルスケアシステム内でデータをマッピングし、かつ/またはモデリングするのに使用できるコンピュータ可読命令を使用して実施できるプロセスを表す例の流れ図を示す。図8〜16の例のプロセスを、プロセッサ、コントローラ、および/または任意の他の適切な処理デバイスを使用して実行することができる。たとえば、図8〜16の例のプロセスを、フラッシュメモリ、読取り専用メモリ(ROM)、および/またはランダムアクセスメモリ(RAM)などの有形のコンピュータ可読媒体に格納されたコーディングされた命令(たとえば、コンピュータ可読命令)を使用して実施することができる。本明細書で使用される時に、用語有形のコンピュータ可読媒体は、すべてのタイプのコンピュータ可読ストレージを含み、伝搬する信号を除外すると特に定義される。それに加えてまたはその代わりに、図8〜16の例のプロセスを、フラッシュメモリ、読取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、キャッシュ、または情報が任意の持続時間の間(たとえば、長い時間期間の間、永久的に、短い瞬間、一時的バッファリングのため、および/または情報のキャッシングのため)格納される任意の他の記憶媒体などの固定コンピュータ可読媒体に格納されたコーディングされた命令(たとえば、コンピュータ可読命令)を使用して実施することができる。本明細書で使用される時に、用語固定コンピュータ可読媒体は、すべてのタイプのコンピュータ可読媒体を含み、伝搬する信号を除外すると特に定義される。
その代わりに、図8〜16の例のプロセスの一部またはすべてを、特定用途向け集積回路(ASIC)(1つまたは複数)、プログラマブル論理デバイス(PLD)(1つまたは複数)、フィールドプログラマブル論理デバイス(FPLD)(1つまたは複数)、ディスクリート論理、ハードウェア、ファームウェア、その他の任意の組合せ(1つまたは複数)を使用して実施することができる。また、図8〜16の例のプロセスの一部またはすべてを、手動でまたは前述の技法のいずれかの任意の組合せ(1つまたは複数)、たとえば、ファームウェア、ソフトウェア、ディスクリート論理、および/またはハードウェアの任意の組合せとして、実施することができる。さらに、図8〜16の例のプロセスを、図8〜16の流れ図を参照して説明するが、図8〜16のプロセスを実施する他の方法を使用することができる。たとえば、ブロックの実行の順序を変更することができ、かつ/あるいは説明されるブロックのいくつかを、変更し、除去し、副分割し、または組み合わせることができる。さらに、図8〜16の例のプロセスのいずれかまたはすべてを、順次および/またはたとえば別々の処理スレッド、プロセッサ、デバイス、ディスクリート論理、回路などによって並列に実行することができる。
図8に、着信メッセージのデータをマッピングし、動的にモデリングし、かつ/または構造化されたフォーマットで格納することを可能にする例の流れ図800を示す。ブロック802では、方法800は、入力メッセージが受け取られたかどうかを判定する。着信メッセージは、観察データ、検査室データなどを含むORUメッセージである場合がある。着信メッセージが受け取られた場合には、ブロック804で、方法800は、メッセージに関連するサービス識別子コード(たとえば、OBR−4.1)の用語法を識別する。ブロック806では、方法800は、識別されたサービス識別子コードについて指定されたモデルおよび/または識別されたサービス識別子コードに関連するモデルがあるか(たとえば、OBR−4.1について指定されたモデルがあるか)どうかを判定する。識別されたサービス識別子コードに関連するモデルがない場合には、制御はブロック808に移り、ここで、エラーメッセージを生成することができる。
しかし、方法800が、識別されたサービス識別子コードに関連するモデルを識別する場合には、制御はブロック810に移り、方法800は、メッセージの内容から関連するモデルを抽出する。ブロック812では、方法800は、抽出されたモデルをパネルのためにメモリ内に格納することができる。
ブロック814では、方法800は、メッセージに関連する観察識別子コード(たとえば、OBX 3.2)の用語法を識別することができる。ブロック816では、方法800は、識別された観察識別子コードについて指定されたモデルがあるか(たとえば、OBX 3.2について指定されたモデルがあるか)どうかを判定する。識別された観察識別子コードについて指定されたモデルがないと方法800が判定する場合には、制御はブロック818に移り、方法800は、観察に関する総称的モデルを作成し、ブロック820で、観察に関するモデルをメモリ内に格納する。
しかし、識別された観察識別子コードについて指定されたモデルがあると方法800が判定する場合には、制御はブロック822に移り、方法800は、メッセージの内容から関連するモデルを抽出する。ブロック824では、方法800は、抽出されたモデルを観察のためにメモリ内に格納することができる。ブロック826では、方法800は、ブロック802に戻るべきか否かを判定する。そうでない場合には、例の方法800を終了する。
図9に、着信メッセージのデータをマッピングし、動的にモデリングし、かつ/または構造化されたフォーマットで格納することを可能にする例の流れ図900を示す。いくつかの例では、方法900を使用して、パネルを用いて観察を処理することができる。ブロック902では、方法900は、ORU−R01メッセージが受け取られたか否かを判定する。そのようなメッセージが受け取られた場合には、制御はブロック904に移り、方法900は、メッセージ関連するOBX−3観察IDを識別する。ブロック906では、方法900は、識別されたOBX−3観察IDのマッピングされた概念コードがあるかどうかを判定する。方法900が、マッピングされた概念コードを識別しない場合には、制御はブロック908に移り、方法900は、エラーメッセージを生成する。
しかし、方法900がマッピングされた概念コードを識別する場合には、制御はブロック910に移り、方法900は、識別されたOBX−3観察IDのマッピングされた概念コードを入手する。ブロック912では、方法900は、マッピングされた概念コードに関連するおよび/またはマッピングされた概念コードがポイントするパネルが作成済みであるかどうかを判定する。いくつかの例では、パネルを、収縮期血圧測定値、拡張期血圧測定値、平均動脈圧測定値、その他などの項目を含む血圧パネルとすることができる。いくつかの例では、パネルを、排出量測定値、流体記述評価(fluid description evaluation)、その他などの項目を含む尿排出量パネルとすることができる。パネルが作成されていないと方法900が判定する場合には、制御はブロック914に移り、方法900は、パネルマッピングを入手し、ブロック916では、方法900がパネルを作成する。
ブロック918では、方法900は、観察項目マッピングを入手し、ブロック920では、方法900は、たとえばメッセージに含まれるデータを使用して、観察項目を作成する。ブロック922では、方法900は、観察項目を関連するパネルに伝え、かつ/または置き、ブロック924では、方法900は、パネルをメモリ内に格納する。ブロック926では、方法900は、ブロック902に戻るべきか否かを判定する。そうでない場合には、例の方法900を終了する。
図10に、着信メッセージのデータをマッピングし、動的にモデリングし、かつ/または構造化されたフォーマットで格納することを可能にする例の流れ図1000を示す。いくつかの例では、方法1000を使用して、パネルを用いずに複数のセグメントを含む観察を1つのモデルに処理することができる。ブロック1002では、方法1000は、ORU−R01メッセージが受け取られたか否かを判定する。そのようなメッセージが受け取られた場合には、制御はブロック1004に移り、方法1000は、メッセージに関連するOBX−3観察IDを識別する。ブロック1006では、方法1000は、識別されたOBX−3観察IDに関するマッピングされた概念コードがあるかどうかを判定する。方法1000がマッピングされた概念コードを識別しない場合には、制御はブロック1008に移り、方法1000は、エラーメッセージを生成する。
しかし、方法1000がマッピングされた概念コードを識別する場合には、制御はブロック1010に移り、方法1000は、識別されたOBX−3観察IDに関するマッピングされた概念コードを入手する。ブロック1012では、方法1000は、マッピングされた概念コードに関連するおよび/またはマッピングされた概念コードがポイントする観察項目が作成済みであるかどうかを判定する。いくつかの例では、観察項目を、温度測定値、人工呼吸器血管作用薬、または血圧とすることができる。方法1000が、観察項目が作成されていないと判定する場合には、制御はブロック1014に移り、方法1000は、観察項目マッピングを入手し、ブロック1016では、方法1000は、たとえばメッセージに含まれるデータを使用して観察項目を作成する。
ブロック1018では、方法1000は、観察項目マッピングを入手し、かつ/またはプラグイン修飾子処理を適用する。ブロック1020では、方法1000は、たとえばメッセージに含まれるデータを使用して観察項目を作成する。ブロック1022では、方法1000は、観察項目をメモリ内に格納する。ブロック1024では、方法1000は、ブロック1002に戻るべきか否かを判定する。そうでない場合には、例の方法1000を終了する。
図11に、着信メッセージのデータをマッピングし、動的にモデリングし、かつ/または構造化されたフォーマットで格納することを可能にする例の流れ図1100を示す。いくつかの例では、方法1100を使用して、パネルを用いずに観察を処理することができる。ブロック1102では、方法1100は、ORU−R01メッセージが受け取られたか否かを判定する。そのようなメッセージが受け取られた場合には、制御はブロック1104に移り、方法1100は、メッセージに関連するOBX−3観察IDを識別する。ブロック1106では、方法1100は、識別されたOBX−3観察IDに関するマッピングされた概念コードがあるかどうかを判定する。方法1100がマッピングされた概念コードを識別しない場合には、制御はブロック1108に移り、方法1100は、エラーメッセージを生成する。
しかし、方法1100がマッピングされた概念コードを識別する場合には、制御はブロック1110に移り、方法1100は、識別されたOBX−3観察IDに関するマッピングされた概念コードおよび/またはマッピングを入手する。ブロック1112では、方法1100は、観察ベースタイプが総称的手続きであるかどうかを判定する。いくつかの例では、総称的手続きを、人工呼吸器モード評価、呼吸セッティングレート(breath setting rate)測定値、呼吸数測定値、終末呼気陽圧セッティング測定値、満了した訂正済み機械一回呼吸量(expired corrected machine tidal volume)測定値、吸入酸素濃度(fraction of inspired oxygen)測定値、圧補助(pressure support)セッティング測定値、心拍数測定値、中心静脈圧測定値、その他に関連付けることができる。方法1100が、観察ベースタイプが総称的手続きではないと判定する場合には、制御はブロック1114に移り、方法1100は、メッセージに関連する特定の観察に関するマッピングを入手する。ブロック1116では、方法1100は、特定の観察を構築する。
しかし、方法1100が、観察ベースタイプが総称的手続きであると判定する場合には、制御はブロック1118に移り、方法1100は、総称的手続きに関するマッピングを入手する。ブロック1120では、方法1100は、メッセージに関連する総称的手続きを作成し、かつ/または構築する。いくつかの例では、手続きを、単一の弁の手続き(たとえば、AVR、MVR、TVRなど)、冠状動脈バイパス手術(たとえば、CABG)、中隔心筋切除、サーキュラアレスト(circular arrest)を用いない近心上行大動脈瘤再建(proximal ascending aorta aneurysm repair)などに関連付けることができる。ブロック1122で、方法1100は、キーコード(たとえば、CETypeキーコード)を、OBX−3観察IDに関連するマッピングされた概念コードに置換する。ブロック1124で、方法1100は、手続きおよび/または関連する情報をメモリ内に格納する。ブロック1126で、方法1100は、ブロック1102に戻るべきか否かを判定する。そうでない場合には、例の方法1100を終了する。
図12に、着信メッセージのデータをマッピングし、動的にモデリングし、かつ/または構造化されたフォーマットで格納することを可能にする例の流れ図1200を示す。いくつかの例では、方法1200を使用して、検査室データを処理することができる。ブロック1202では、方法1200は、ORU−R01メッセージが受け取られたか否かを判定する。そのようなメッセージが受け取られた場合には、制御はブロック1204に移り、方法1200は、メッセージに関連するOBR−4サービスコード(たとえば、ユニバーサルOBR−4サービスコード)を識別する。ブロック1206では、方法1200は、メッセージに関連するOBX−3観察IDを識別する。ブロック1208では、方法1200は、OBX−3観察IDに関するマッピングがあるかどうか、および/またはECIS用語法名前空間内にマッピングがあるかどうかを判定する。方法1200がOBX−3観察IDに関するマッピングを識別しない場合には、制御はブロック1210に移り、方法1200は、エラーメッセージを生成する。
しかし、方法1200が、OBX−3観察IDに関するマッピングを識別する場合には、制御はブロック1212に移り、そのようなマッピングを入手する。ブロック1214では、方法1200は、メッセージが標準検査室領域および/または検査室観察領域内であるかどうかを判定する。メッセージが標準検査室領域および/または検査室観察領域内ではない場合には、制御はブロック1216に移り、方法1200は、エラーメッセージを生成する。ブロック1218では、方法1200は、どの総称的検査室モデルがメッセージに関連するのかを判定する。いくつかの例では、方法1200は、メッセージに関連するOBX−2値タイプを識別し、そのOBX−2値タイプを使用して、データが標準検査室観察定量的(standard lab observations quantitative)モデル、標準検査室観察コーデッド(standard lab observations coded)モデル、標準検査室観察ナレーティブ(standard lab observations narrative)モデル、その他にあることなどの結果のデータタイプを判定することができる。
しかし、方法1200が、メッセージが標準検査室領域および/または検査室観察領域内にあると判定する場合には、制御はブロック1220に移り、方法1200は、たとえばメッセージに関連するキーコード、関係文脈などに基づいて特定の検査室モデルを判定する。ブロック1222では、方法1200は、メッセージ内容からモデルを生成し、ブロック1224では、方法1200は、そのモデルをメモリ内に格納する。
ブロック1226では、方法1200は、OBR−4サービスコードに関する標準検査室パネル領域があるか(たとえば、コードが標準検査室パネル領域内に存在するか)どうかを判定する。OBR−4サービスコードに関する標準検査室パネルがない場合には、制御はブロック1210に移り、方法1200は、エラーメッセージを生成する。しかし、OBR−4サービスコードに関する標準検査室パネルがある場合には、制御はブロック1228に移り、方法1200は、メッセージ内容から検査室パネルを生成する。ブロック1230では、方法1200は、パネルをメモリ内に格納し、ブロック1232では、方法1200は、ブロック1202に戻るべきか否かを判定する。そうでない場合には、例の方法1200を終了する。
図13に、着信メッセージのデータをマッピングし、動的にモデリングし、かつ/または構造化されたフォーマットで格納することを可能にする例の流れ図1300を示す。いくつかの例では、方法1300を使用して、観察データを処理することができる。ブロック1302では、方法1300は、ORU−R01メッセージが受け取られたか否かを判定する。そのようなメッセージが受け取られた場合には、制御はブロック1304に移り、方法1300は、メッセージに関連するOBR−4サービスコード(たとえば、ユニバーサルOBR−4サービスコード)を識別する。ブロック1306では、方法1300は、メッセージに関連するOBX−3観察IDを識別する。ブロック1308では、方法1300は、OBX−3観察IDに関するマッピングがあるかどうか、および/またはECIS用語法名前空間内にマッピングがあるかどうかを判定する。方法1300がOBX−3観察IDに関するマッピングを識別しない場合には、制御はブロック1310に移り、方法1300は、エラーメッセージを生成する。
しかし、方法1300が、OBX−3観察IDに関するマッピングを識別する場合には、制御はブロック1312に移り、そのようなマッピングを入手する。ブロック1314では、方法1300は、メッセージが観察領域内であるかどうかを判定する。メッセージが観察領域内ではない場合には、制御はブロック1316に移り、方法1300は、エラーメッセージを生成する。ブロック1318では、方法1300は、どの総称的観察モデルがメッセージに関連するのかを判定する。
しかし、方法1300が、メッセージが観察領域内であると判定する場合には、制御はブロック1320に移り、方法1300は、メッセージ、OBX−3コードなどに関連するキーコード、関係文脈などに基づいて特定の観察モデル(たとえば、特定の観察臨床要素タイプ(CEType))を判定する。ブロック1322では、方法1300は、メッセージ内容からモデルを生成し、ブロック1324では、方法1300は、そのモデルをメモリ内に格納する。
ブロック1326では、方法1300は、OBR−4サービスコードに関する標準観察パネル領域があるか(たとえば、コードが標準観察パネル領域内に存在するか)どうかを判定する。OBR−4サービスコードに関する標準観察パネルがない場合には、制御はブロック1310に移り、方法1300は、エラーメッセージを生成する。しかし、OBR−4サービスコードに関する標準観察パネルがある場合には、制御はブロック1328に移り、方法1300は、メッセージ内容から特定の観察パネル(たとえば、特定の検査室CEType)を生成する。ブロック1330では、方法1300は、パネルをメモリ内に格納し、ブロック1332では、方法1300は、ブロック1302に戻るべきか否かを判定する。そうでない場合には、例の方法1300を終了する。
図14に、着信メッセージのデータをマッピングし、動的にモデリングし、かつ/または構造化されたフォーマットで格納することを可能にする例の流れ図1400を示す。いくつかの例では、方法1400を使用して、代替データを処理することができる。ブロック1402では、方法1400は、ORU−R01メッセージが受け取られたか否かを判定する。そのようなメッセージが受け取られた場合には、制御はブロック1404に移り、方法1400は、メッセージに関連するOBX−3観察IDを識別する。ブロック1406では、方法1400は、識別されたOBX−3観察IDに関する検査室ベースタイプがあるかどうかを判定する。識別されたOBX−3観察IDに関する検査室ベースタイプがない場合には、制御はブロック1408に移り、方法1400は、エラーメッセージを生成する。
しかし、方法1400が、識別されたOBX−3観察IDに関する検査室ベースタイプがあると判定する場合には、制御はブロック1410に移り、方法1400は、メッセージ内容から標準検査室観察を生成する。標準検査室観察を、標準検査室観察定量的、標準検査室観察コーデッド、標準検査室観察オリジナル(standard lab observations original)、標準検査室観察読み(standard lab observations read)、標準検査室観察ナレーティブなどに関連付けることができる。
ブロック1412では、方法1400は、OBX−2値タイプを識別し、ブロック1414では、方法1400は、OBX−2値タイプがベース検査室データタイプと互換であるかどうかを判定する。OBX−2値タイプがベース検査室データタイプと互換ではない場合には、制御はブロック1416に移り、方法1400は、メッセージに関連するOBX−5観察値を識別する。ブロック1418では、方法1400は、代替処理を開始し、警告メッセージを生成することができる。ブロック1420では、方法1400は、研究室観察およびOBX−5(PQに関する)単位を代替データとして格納する。
しかし、方法1400が、OBX−2値タイプがベース検査室データタイプと互換であると判定する場合には、制御はブロック1422に移り、通常処理を継続する。ブロック1424では、方法1400は、検査室観察をメモリ内に格納し、ブロック1426では、方法1400は、ブロック1402に戻るべきか否かを判定する。そうでない場合には、例の方法1400を終了する。
図15に、着信メッセージのデータをマッピングし、動的にモデリングし、かつ/または構造化されたフォーマットで格納することを可能にする例の流れ図1500を示す。いくつかの例では、方法1500を使用して、順序定量(Ordinal Quantitative)(OrdQn)データを処理することができる。ブロック1502では、方法1500は、ORU−R01メッセージが受け取られたか否かを判定する。そのようなメッセージが受け取られた場合には、制御はブロック1504に移り、方法1500は、メッセージに関連するOBX−3観察IDを識別する。ブロック1506では、方法1500は、OBX−3観察IDに関連する特定の検査室ベースタイプが定量的であるかどうかを判定する。検査室ベースタイプが定量的ではない場合には、制御はブロック1508に移り、方法1500は、通常処理を継続する。ブロック1510では、方法1500は、メッセージに関連する単位および/または他のデータをメモリ内に格納する。
しかし、特定の検査室ベースタイプが定量的である場合には、制御はブロック1512に移り、方法1500は、メッセージ内容から標準検査室観察定量的を生成する。ブロック1514では、方法1500は、標準検査室観察定量的をメモリ内に格納する。ブロック1516では、方法1500は、メッセージに関連するOBX−2値タイプを識別し、ブロック1518では、方法1500は、OBX−2値タイプがPQデータタイプと互換であるかどうかを判定する。OBX−2値タイプがPQデータタイプと互換である場合には、制御はブロック1508に移る。
OBX−2値タイプがPQデータタイプと互換ではない場合には、制御はブロック1520に移り、方法1500は、OBX−2値タイプがCE(coded exception)、CWE(coded with exception)、またはCO(coded ordinal)に関連するかどうかを判定する。OBX−2値タイプがCE、CWE、またはCOに関連しない場合には、制御はブロック1522に移り、方法1500は、代替データ処理を実行する。ブロック1524では、方法1500は、代替データにアペンドされた単位を格納する。
OBX−2値タイプがCE、CWE、またはCOに関連する場合には、制御はブロック1526に移り、方法1500は、メッセージに関連するOBX−5観察値を識別し、ブロック1528では、方法1500は、メッセージに関連するキャレットで区切られたデータを解析する。ブロック1530では、方法1500は、メッセージに関連する最初のフィールドおよび/またはフィールド1に関するマッピングされた概念コードを入手する。フィールド1に関するマッピングされた概念コードが存在しない場合には、制御はブロック1532に移り、方法1500は、エラーメッセージを生成し、ブロック1534では、方法1500は、OBX−5および単位を代替データとしてメモリ内に格納する。
方法1500が、フィールド1に関するマッピングされた概念コードを入手する場合には、制御はブロック1536に移り、方法1500は、マッピングされた概念コードが順序解釈(ordinal interpretation)値集合に含まれるかどうかを判定する。含まれない場合には、制御はブロック1532に移り、エラーメッセージを生成することができる。含まれる場合には、制御はブロック1538に移り、方法1500は、コードと順序解釈修飾子からのオリジナルテキストと単位とを代替データ内に格納する。ブロック1540では、方法1500は、ブロック1502に戻るべきか否かを判定する。そうでない場合には、例の方法1500を終了する。
図16に、着信メッセージのデータをマッピングし、動的にモデリングし、かつ/または構造化されたフォーマットで格納することを可能にする例の流れ図1600を示す。ブロック1602は、検査室インターフェースキューを表し、ブロック1604は、検査室HL7v2メッセージを表す。ブロック1606で、方法1600は、OBR−4ユニバーサルサービスコードを識別し、ブロック1608で、方法1600は、ORB−4コードがECIS名前空間へのマッピングを有するかどうかを判定することができる。そのようなマッピングが存在しない場合には、制御はブロック1610に移り、方法1600は、例外をキャッチし、警報を送ることができる。これおよび/または任意の他の警報および/またはエラーメッセージが本明細書で説明するように生成されることに応答して、そのようなメッセージを、手動ユーザレビューを可能にするユーザインターフェースを介してユーザに伝えることができる。その後、制御はブロック1612に移り、概念が、ECIS名前空間内で作成され、マッピングが、コード(たとえば、ORB−4コード)とECIS概念との間で作成される。ブロック1614では、方法1600は、メッセージをキューに再サブミットすることができる。その代わりに、ブロック1616で、メッセージをマッピングし、適当なパネルに格納することができる。この代替案は、ブロック1614に接続されたブロックのいずれにも適用することができる。いくつかの例では、ブロック1616で格納されるデータを、臨床データリポジトリ(CDR)とすることができる。
OBR−4コードがECIS名前空間内にマッピングを有する場合には、制御はブロック1618に移り、方法1600は、ORB−4コードが用語法の「OrderableLabTest」領域内にあるかどうかを判定する。OBR−4コードがそのような領域内にない場合には、制御はブロック1620に移り、方法1600は、例外をキャッチし、警報を送ることができる。ブロック1622では、コードを用語法内の正しい領域に追加することができる。
OBR−4コードが用語法の「OrderableLabTest」領域内にある場合には、制御はブロック1624に移り、方法1600は、CEType標準検査室パネルを使用し、ブロック1616で、そのパネルを格納することができる。
ブロック1626では、方法1600は、OBX−3観察IDを識別することができ、ブロック1628では、方法1600は、OBX−3コードがECIS名前空間内の概念へのマッピングを有するかどうかを判定することができる。マッピングが存在しない場合には、制御はブロック1630に移り、方法1600は、例外をキャッチし、警報を送ることができる。その後、制御はブロック1612に移り、ここで、概念が、ECIS名前空間内で作成され、マッピングが、コード(たとえば、OBX−3コード)とECIS概念との間で作成される。
マッピングが存在する場合には、制御はブロック1632に移り、方法1600は、OBX−3コードが用語法の「StandardLabObs」領域内にあるかどうかを判定する。OBX−3コードがそのような領域内にない場合には、制御はブロック1634に移り、方法1600は、例外をキャッチし、警報を送ることができる。ブロック1636では、方法1600は、適当なLab Obs領域にコードを追加することができ、特定のモデルを作成することができる。
OBX−3コードが用語法の「StandardLabObs」領域内にある場合には、制御はブロック1638に移り、方法1600は、識別されたOBX−3コードをキーとして使用する特定の検査室モデルがあるかどうかを判定する。どの特定の検査室モデルも識別されたOBX−3コードをキーとして使用していない場合には、制御はブロック1640に移り、方法1600は、OBX−3コードが検査室観察と考えられない概念であるかどうかを判定する。ブロック1642では、方法1600は、例外をキャッチし、警報を送ることができる。ブロック1644では、方法1600は、特定の検査室モデルを作成することができる。
方法1600が、OBX−3コードが検査室観察と考えられない概念コードではないと判定する場合には、制御はブロック1646に移り、方法1600は、どの包括的StandardLabObs CETypeを使用しなければならないのかを判定する。ブロック1648では、方法1600は、識別されたCETypeの特定のマッピング構成ファイルをルックアップする。
方法1600が、OBX−3コードが検査室観察と考えられない概念コードであると判定する場合には、制御はブロック1650および1652に移る。ブロック1650では、方法1600は、OBX−3コードがLabComment領域内の概念であるかどうかを判定し、OBX−3コードおよび/または任意の関連するデータをコメント修飾子として格納する。ブロック1652では、方法1600は、OBX−3コードが性別、年齢、または人種に関連するかどうかを判定し、用語法内のキーコードおよび関係によってCETypeをルックアップする。ブロック1654では、方法1600は、CEtypeの特定のマッピング構成ファイルをルックアップする。
方法1600が、識別されたOBX−3コードをキーとして使用する特定の検査室モデルがあると判定する場合に、制御はブロック1656に移り、方法1600は、用語法内のキーコードおよび関係によってCETypeをルックアップする。ブロック1658では、方法1600は、CETypeオブジェクト内の「ベース」属性によってCETypeをルックアップし、ブロック1660では、方法1600は、CETypeの特定のマッピング構成ファイルをルックアップする。
図17は、本明細書で説明されるシステムおよび方法を実施するために使用できる例のプロセッサシステム1700のブロック図である。図17に示されているように、プロセッサシステム1700は、相互接続バス1704に結合されたプロセッサ1702を含む。プロセッサ1702は、任意の適切なプロセッサ、処理ユニット、またはマイクロプロセッサとすることができる。図17には示されていないが、プロセッサシステム1700は、マルチプロセッサシステムとすることができ、したがって、プロセッサ1702と同一であるかこれに類似し、相互接続バス1704に通信的に結合された1つまたは複数の追加のプロセッサを含むことができる。
図17のプロセッサ1702は、チップセット1706に結合され、チップセット1706は、メモリコントローラ1708および入出力(I/O)コントローラ1710を含む。周知のように、チップセットは、通常、I/O管理機能およびメモリ管理機能ならびにチップセット1706に結合された1つまたは複数のプロセッサによってアクセス可能であるか使用される複数の汎用レジスタおよび/または特殊目的レジスタ、タイマなどを提供する。メモリコントローラ1708は、プロセッサ1702(または複数のプロセッサがある場合に複数のプロセッサ)がシステムメモリ1712およびマスストレージメモリ1714にアクセスすることを可能にする機能を実行する。
システムメモリ1712は、たとえばスタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、フラッシュメモリ、読取り専用メモリ(ROM)、その他などの任意の所望のタイプの揮発性メモリおよび/または不揮発性メモリを含むことができる。マスストレージメモリ1714は、ハードディスクドライブ、光ドライブ、テープストレージデバイスなどを含む任意の所望のタイプのマスストレージデバイスを含むことができる。
I/Oコントローラ1710は、プロセッサ1702がI/Oバス1722を介して周辺入出力(I/O)デバイス1716および1718ならびにネットワークインターフェース1720と通信することを可能にする機能を実行する。I/Oデバイス1716および1718は、たとえばキーボード、ビデオディスプレイすなわちモニタ、マウス、その他などの任意の所望のタイプのI/Oデバイスとすることができる。ネットワークインターフェース1720は、たとえば、プロセッサシステム1700が別のプロセッサシステムと通信することを可能にする、イーサネット(商標)デバイス、非同期転送モード(ATM)デバイス、802.11デバイス、DSLモデム、ケーブルモデム、セルラモデムなどとすることができる。
メモリコントローラ1708およびI/Oコントローラ1710が、図17ではチップセット1706内の別々のブロックとして図示されているが、これらのブロックによって実行される機能を、単一の半導体回路内で一体化することができ、あるいは、複数の別々の集積回路を使用して実施することができる。
ある種の実施形態は、上で説明した機能性を実施するために方法、システム、および任意の機械可読媒体上のコンピュータプログラム製品を企図する。ある種の実施形態を、たとえば、既存のコンピュータプロセッサを使用して、これまたは別の目的のために組み込まれた特殊目的コンピュータプロセッサによって、またはハードワイヤドシステムおよび/もしくはファームウェアシステムによって実施することができる。
ある種の実施形態は、コンピュータ実行可能命令またはデータ構造を担持するかその上に格納されたコンピュータ可読媒体を含む。そのようなコンピュータ可読媒体は、汎用のもしくは特殊目的のコンピュータまたはプロセッサを有する他の機械によってアクセスできる任意の使用可能な媒体とすることができる。たとえば、そのようなコンピュータ可読媒体は、RAM、ROM、PROM、EPROM、EEPROM、フラッシュ、CD−ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、またはコンピュータ実行可能命令もしくはデータ構造の形で所望のプログラムコードを担持しもしくは格納するのに使用でき、汎用のもしくは特殊目的のコンピュータもしくはプロセッサを有する他の機械によってアクセスできる任意の他の媒体を含むことができる。上記の組合せも、コンピュータ可読媒体の範囲に含まれる。コンピュータ実行可能命令は、たとえば、汎用コンピュータ、特殊目的コンピュータ、または特殊目的処理機械にある機能または機能のグループを実行させる命令およびデータを含む。
一般に、コンピュータ実行可能命令は、特定のタスクを実行するか特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。コンピュータ実行可能命令、関連するデータ構造、およびプログラムモジュールは、本明細書で開示されるある種の方法およびシステムのステップを実行するためのプログラムコードの例を表す。そのような実行可能命令または関連するデータ構造の特定のシーケンスは、そのようなステップで説明される機能を実施するための対応する行為の例を表す。
本発明の実施形態を、プロセッサを有する1つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク化された環境で実践することができる。論理接続は、限定ではなく例としてここで提示されるローカルエリアネットワーク(LAN)および広域ネットワーク(WAN)を含むことができる。そのようなネットワーキング環境は、オフィス全体または企業全体のコンピュータネットワーク、イントラネット、およびインターネットでありふれたものであり、さまざまな異なる通信プロトコルを使用することができる。当業者は、そのようなネットワークコンピューティング環境が、通常は、パーソナルコンピュータ、ハンドヘルドコンピュータ、マルチプロセッサシステム、マイクロプロセッサベースのまたはプログラム可能な消費者エレクトロニクス、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、および類似物を含む多数のタイプのコンピュータシステム構成を含むことを了解するであろう。本発明の実施形態を、通信ネットワークを介してリンクされた(ハードワイヤドリンク、無線リンク、またはハードワイヤドリンクもしくは無線リンクの組合せのいずれかによって)ローカル処理デバイスおよびリモート処理デバイスによってタスクが実行される分散コンピューティング環境で実践することもできる。分散コンピューティング環境では、プログラムモジュールを、ローカルメモリストレージデバイスとリモートメモリストレージデバイスとの両方に配置することができる。
ある種の方法、装置、および製造品を本明細書で説明したが、本特許の包含の範囲は、それに限定されない。逆に、本特許は、文字どおりまたは均等論の下でのいずれかで添付の特許請求の範囲の範囲に公正に含まれるすべての方法、装置、および製造品を包含する。