(57)【特許請求の範囲】
【請求項１】
一つまたは複数のプロセッサによって、ユーザー入力を受領する段階と；
前記一つまたは複数のプロセッサによって、前記ユーザー入力に基づいてアプリケーションの型を識別する段階と；
前記一つまたは複数のプロセッサによって、前記アプリケーションについての作業フローを決定する段階と；
前記一つまたは複数のプロセッサによって、前記アプリケーションについての前記作業フローを実行するための複数のコア機能を識別する段階であって、前記複数のコア機能は基盤コンポーネント、ドメイン・コンポーネントおよびビュー・コンポーネントを含む、段階と；
前記アプリケーションについての前記作業フローの実行のために、前記一つまたは複数のプロセッサによって、前記コア機能をクライアントに送信する段階と；
前記一つまたは複数のプロセッサによって前記クライアントから、前記作業フローの結果を受信する段階とを含む、
コンピュータ実装される方法。
【請求項２】
前記ユーザー入力に基づいてユーザー役割を決定する段階と；
前記アプリケーションの使用におけるユーザー・コンテキストを決定する段階とをさらに含み、
前記アプリケーションについての作業フローを決定することは、前記アプリケーションの前記型、前記ユーザー役割および前記ユーザー・コンテキストに基づく、
請求項１記載のコンピュータ実装される方法。
【請求項３】
前記アプリケーションのためのテンプレートがあるかどうかを判定する段階と；
前記アプリケーションのためのテンプレートが存在しないと判定することに応答して、前記アプリケーションのためのテンプレートを生成する段階であって、該テンプレートは、前記アプリケーションの前記型、前記ユーザー役割および前記ユーザー・コンテキストに基づいて前記複数のコア機能を含む、段階とをさらに含む、
請求項２記載のコンピュータ実装される方法。
【請求項４】
前記クライアントでの前記作業フローの実行のために使われるデータを取得する段階と；
前記クライアントでの前記作業フローの実行のために前記データをパースする段階とをさらに含む、
請求項１記載のコンピュータ実装される方法。
【請求項５】
前記作業フローを、前記クライアントで実行される前記作業フローの第一の部分と前記一つまたは複数のプロセッサによって実行される前記作業フローの第二の部分とに分割する段階をさらに含む、
請求項１記載のコンピュータ実装される方法。
【請求項６】
前記作業フローの変化に基づいて前記作業フローの分割を更新する段階をさらに含む、請求項５記載のコンピュータ実装される方法。
【請求項７】
前記クライアントでの前記作業フローの前記第一の部分の実行の失敗、復元およびロールバックのうちの少なくとも一つに応答して前記作業フローを修正することをさらに含む、請求項５記載のコンピュータ実装される方法。
【請求項８】
一つまたは複数のプロセッサと；命令を記憶しているメモリとを有するシステムであって、前記命令は、実行されたとき、前記一つまたは複数のプロセッサに：
ユーザー入力を受領する段階と；
前記ユーザー入力に基づいてアプリケーションの型を識別する段階と；
前記アプリケーションについての作業フローを決定する段階と；
前記アプリケーションについての前記作業フローを実行するための複数のコア機能を識別する段階であって、前記複数のコア機能は基盤コンポーネント、ドメイン・コンポーネントおよびビュー・コンポーネントを含む、段階と；
前記アプリケーションについての前記作業フローの実行のために、前記コア機能をクライアントに送信する段階と；
前記クライアントから、前記作業フローの結果を受信する段階とを実行させるものである、
システム。
【請求項９】
前記アプリケーションについての前記作業フローを決定するために、前記命令は、前記一つまたは複数のプロセッサに：
前記ユーザー入力に基づいてユーザー役割を決定する段階と；
前記アプリケーションの使用におけるユーザー・コンテキストを決定する段階とを実行させるものである、
請求項８記載のシステム。
【請求項１０】
前記命令は、前記一つまたは複数のプロセッサに：
前記アプリケーションのためのテンプレートがあるかどうかを判定する段階と；
前記アプリケーションのためのテンプレートが存在しないと判定することに応答して、前記アプリケーションのためのテンプレートを生成する段階であって、該テンプレートは、前記アプリケーションの前記型、前記ユーザー役割および前記ユーザー・コンテキストに基づいて前記複数のコア機能を含む、段階とを実行させるものである、
請求項９記載のシステム。
【請求項１１】
前記命令は、前記一つまたは複数のプロセッサに：
前記クライアントでの前記作業フローの実行のために使われるデータを取得する段階と；
前記クライアントでの前記作業フローの実行のために前記データをパースする段階とを実行させるものである、
請求項８記載のシステム。
【請求項１２】
前記命令は、前記一つまたは複数のプロセッサに：
前記作業フローを、前記クライアントで実行される前記作業フローの第一の部分と前記一つまたは複数のプロセッサによって実行される前記作業フローの第二の部分とに分割する段階を実行させる、
請求項８記載のシステム。
【請求項１３】
前記命令は、前記一つまたは複数のプロセッサに、前記作業フローの変化に基づいて前記作業フローの分割を更新させるものである、請求項１２記載のシステム。
【請求項１４】
前記命令は、前記一つまたは複数のプロセッサに、前記クライアントでの前記作業フローの前記第一の部分の実行の失敗、復元およびロールバックのうちの少なくとも一つに応答して前記作業フローを修正させる、請求項１２記載のシステム。
【請求項１５】
コンピュータ可読プログラムを記憶している非一時的なコンピュータ可読媒体であって、前記コンピュータ可読プログラムは、実行されたとき、コンピュータに：
ユーザー入力を受領する段階と；
前記ユーザー入力に基づいてアプリケーションの型を識別する段階と；
前記アプリケーションについての作業フローを決定する段階と；
前記アプリケーションについての前記作業フローを実行するための複数のコア機能を識別する段階であって、前記複数のコア機能は基盤コンポーネント、ドメイン・コンポーネントおよびビュー・コンポーネントを含む、段階と；
前記アプリケーションについての前記作業フローの実行のために、前記コア機能をクライアントに送信する段階と；
前記クライアントから、前記作業フローの結果を受信する段階とを実行させるものである、
コンピュータ可読媒体。
【請求項１６】
前記アプリケーションについての前記作業フローを決定するために、前記コンピュータ可読プログラムは、前記コンピュータに：
前記ユーザー入力に基づいてユーザー役割を決定する段階と；
前記アプリケーションの使用におけるユーザー・コンテキストを決定する段階とを実行させるものであり、
前記アプリケーションについての作業フローを決定することは、前記アプリケーションの前記型、前記ユーザー役割および前記ユーザー・コンテキストに基づく、
請求項１５記載のコンピュータ可読媒体。
【請求項１７】
前記コンピュータ可読プログラムは、前記コンピュータに：
前記アプリケーションのためのテンプレートがあるかどうかを判定する段階と；
前記アプリケーションのためのテンプレートが存在しないと判定することに応答して、前記アプリケーションのためのテンプレートを生成する段階であって、該テンプレートは、前記アプリケーションの前記型、前記ユーザー役割および前記ユーザー・コンテキストに基づいて前記複数のコア機能を含む、段階とを実行させるものである、
請求項１６記載のコンピュータ可読媒体。
【請求項１８】
前記作業フローを、前記クライアントで実行される前記作業フローの第一の部分と前記コンピュータによって実行される前記作業フローの第二の部分とに分割する段階を実行させる、
請求項１７記載のコンピュータ可読媒体。
【請求項１９】
前記コンピュータ可読プログラムは、前記コンピュータに、前記作業フローの変化に基づいて前記作業フローの分割を更新させる、請求項１８記載のコンピュータ可読媒体。
【請求項２０】
前記コンピュータ可読プログラムは、前記コンピュータに、前記クライアントでの前記作業フローの前記第一の部分の実行の失敗、復元およびロールバックのうちの少なくとも一つに応答して前記作業フローを修正させる、請求項１８記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は概括的には、クライアント‐サーバー環境におけるユーザー・アプリケーションの展開および運用に関する。特に、本明細書は、アプリケーションの使用によって決定されるユーザー・コンテキストに基づいてサーバーとクライアントの間でアプリケーションの作業フローを割り振り、作業フローの実行に基づいてユーザー・ビューをカスタマイズするためのシステムおよび方法に関する。
【背景技術】
【０００２】
遠隔医療は、ケア担当者から地理的に離れている患者のためのヘルスケア解決策を提供する。  ヘルスケア空間が急速に成長するにつれて、遠隔医療システムは多くの課題に直面している。複数の監督当局があり、ヘルスケア空間に構築される解決策について必須とされる地理的に適用可能な複数のガイドラインがあるので、遠隔医療システムの技術的アーキテクチャーはこれらのガイドについて統一されたサポートを提供する必要がある。また、遠隔医療アーキテクチャーは、エンドユーザー・クライアント装置の成長する計算パワーおよび生起する革新を活用できるよう進化するべきである。遠隔医療システム・アーキテクチャーを実装することの他の課題は、アプリケーションまたはサービスの作業フローの多様性および急速な変化に適応すること、シームレスにアプリケーションまたはサービスをまとめるためのエンドユーザーにとって使いやすい機能特徴を構築すること、幅広い医療機器を統合することおよび保守の容易さを含む。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本稿で導入される技法は、少なくとも部分的には、アプリケーションの使用によって決定されるユーザー・コンテキストに基づいてサーバーとクライアントの間でアプリケーションの作業フローを割り振り、作業フローの実行に基づいてユーザー・ビューをカスタマイズするためのシステムおよび方法に関して、従来技術の欠点および限界を克服する。
【課題を解決するための手段】
【０００４】
本システムは、ユーザー入力を受領し、ユーザー入力に基づいてアプリケーションの型を識別するよう構成されている。本システムはさらに、アプリケーションについて作業フローを決定するよう構成されている。本システムはさらに、アプリケーションについて作業フローを実行するための複数のコア機能を識別するよう構成されており、前記複数のコア機能は基盤コンポーネント、ドメイン・コンポーネントおよびビュー・コンポーネントを含む。本システムはさらに、アプリケーションのための作業フローを実行するためにクライアントに前記コア機能を送信し、作業フローの結果を該クライアントから受信するよう構成されている。
【０００５】
他の側面は、これらおよび他の革新的な側面についての対応する方法、システム、装置およびコンピュータ・プログラム・プロダクトを含む。
【０００６】
本稿に記載される特徴および利点は網羅的ではなく、図面および記述に鑑みて当業者には多くの追加的な特徴および利点が明白となるであろう。さらに、本明細書において使われる言辞は、記載される技術の範囲を限定するためではなく、主として読みやすさおよび教育目的ののために選ばれていることを注意しておくべきである。
【図面の簡単な説明】
【０００７】
本稿で導入される技法は、限定ではなく例として、付属の図面において示される。図面において、同様の参照符号は同様の要素を指すために使われる。
【図１】サーバーとクライアントの間でアプリケーションについての作業フローを割り振り、作業フローの実行に基づいてユーザー・ビューをカスタマイズするためのシステムのある実施形態を示す高レベルのブロック図である。
【図２】カスタマイズ・モジュールを含むコンピューティング装置のある実施形態を示すブロック図である。
【図３】クライアント側アーキテクチャー・ビューのある実施形態を示すブロック図である。
【図４】アプリケーションの使用によって決定されるユーザー・コンテキストに基づいてサーバーとクライアントの間でアプリケーションについての作業フローを割り振り、作業フローの実行に基づいてユーザー・ビューをカスタマイズするための方法のある実施形態を示す流れ図である。
【図５Ａ】ユーザーを登録する方法のある実施形態を示す流れ図である。
【図５Ｂ】サーバーとクライアントの間でユーザーを登録するための作業フローを割り振る方法のある実施形態を示す流れ図である。
【図６Ａ】アプリケーションの使用におけるユーザー・コンテキストに基づいてサーバーとクライアントの間でアプリケーションについての作業フローを割り振り、作業フローの実行に基づいてユーザー・ビューをカスタマイズするための方法のある実施形態を示す流れ図の前半である。
【図６Ｂ】アプリケーションの使用におけるユーザー・コンテキストに基づいてサーバーとクライアントの間でアプリケーションについての作業フローを割り振り、作業フローの実行に基づいてユーザー・ビューをカスタマイズするための方法のある実施形態を示す流れ図の後半である。
【図７Ａ】モバイル装置を使ってアポイントメントをスケジュールするためのユーザー・インターフェースのある実施形態のグラフィック表現である。
【図７Ｂ】コンピュータ装置を使ってアポイントメントをスケジュールするためのユーザー・インターフェースのある実施形態のグラフィック表現である。
【発明を実施するための形態】
【０００８】
図１は、アプリケーションの使用によって決定されるユーザー・コンテキストに基づいてサーバーとクライアントの間でアプリケーションについての作業フローを割り振り、作業フローの実行に基づいてユーザー・ビューをカスタマイズするためのシステム１００のある実施形態を示す高レベルのブロック図を描いている。図示したシステム１００は、一つまたは複数のノード１０９と、電子医療記録（EMR:  electronic  medical  record）サーバー１０１と、一つまたは複数のハブ１１１とを含む。図示した実施形態では、システム１００のこれらのエンティティはネットワーク１２５を介して通信上結合される。
【０００９】
図１および対応するテキストは、クラウド・ベースの遠隔医療システム１００を記述しているが、他の実施形態では本願で図示されるコンポーネントおよび記載される技法は、遠隔教育のような他のクラウド・ベースのシステムに適用されてもよい。
【００１０】
ネットワーク１２５は、有線または無線の通常の型であってもよく、スター構成、トークンリング構成または他の構成を含む数多くの異なる構成をもちうる。さらに、ネットワーク１２５は、ローカル・エリア・ネットワーク（LAN）、広域ネットワーク（WAN）（たとえばインターネット）および／またはそれを通じて複数の装置が通信しうる他の相互接続されたデータ経路を含んでいてもよい。いくつかの実施形態では、ネットワーク１２５はピアツーピア・ネットワークであってもよい。ネットワーク１２５は、多様な異なる通信プロトコルにおいてデータを送るための遠隔通信ネットワークに結合されていてもよく、あるいはその諸部分を含んでいてもよい。いくつかの実施形態では、ネットワーク１２５は、ショート・メッセージング・サービス（SMS）、マルチメディア・メッセージング・サービス（MMS）、ハイパーテキスト転送プロトコル（HTTP）、直接データ接続、WAP、電子メールなどを介することを含め、データを送受信するためのブルートゥース（登録商標）通信ネットワークまたはセルラー通信ネットワークを含んでいてもよい。図１はノード１０９、EMRサーバー１０１およびハブ１１１に結合された一つのネットワーク１２５を示しているが、実際上は、一つまたは複数のネットワーク１２５がこれらのエンティティに接続されることができる。
【００１１】
ノード１０９は、患者がシステム１００と対話する、たとえばシステムに登録したり、アポイントをスケジュールしたり、診察を受けたりなどする場所である。いくつかの実施形態では、ノード１０９はハブ１１１からリモートに位置している。たとえば、ノード１０９は物理的に田舎地域に位置している施設であってもよく、一方、ハブ１１１は物理的に都市に位置していてもよい。別の例では、ノード１０９は患者の家庭であってもよく、ハブ１１１は近くのまたは遠方の病院であってもよい。他の実施形態では、ノード１０９は移動体、たとえば乗り物であってもよい。
【００１２】
ノード１０９は、医療訪問の間に患者を支援するよう訓練された人員（医療補助員）をスタッフとしている。いくつかの実施形態では、ノード１０９はコンピューティング装置１１５ａおよび医療機器１１３を含む。ノード１０９にいる医療補助員（たとえば登録された看護師、検査技師）はコンピューティング装置１１５ａおよび医療機器１１３を操作する。たとえば、医療補助員は医療機器１１３を使って患者の医療情報を取得し、コンピューティング装置１１５ａを使って患者を診察のために登録するおよびまたはハブもしくはハブ人員と通信するよう訓練されている。
【００１３】
いくつかの実施形態では、コンピューティング装置１１５ａはラップトップ・コンピュータ、デスクトップ・コンピュータ、タブレット・コンピュータ、携帯電話、携帯情報端末（PDA）、携帯電子メール装置、一つまたは複数のプロセッサが埋め込まれたもしくは結合されたテレビジョンまたはネットワーク１２５にアクセスできる他の任意の電子装置であることができる。ノード人員はコンピューティング装置１１５ａを使ってEMRサーバー１０１のEMR記憶に記憶されている患者のデータにアクセスし、ハブ１１１における医療サービス提供者から患者についての診察を得るなどする。図１および残りの図において、参照符号の後の文字、たとえば「１１５ａ」は、その特定の参照符号をもつ要素への言及を表わす。テキスト中の後続文字なしの参照符号、たとえば「１１５」は、その参照符号をもつ要素の諸事例への一般的な言及を表わす。
【００１４】
いくつかの実施形態では、医療機器１１３は、聴診器、血圧計、脈波型酸素飽和度計、体温計、検眼鏡、体重身長計、耳鏡、カメラ、遠隔心臓病医学装置（たとえばECG機械）、遠隔病理学装置（たとえば顕微鏡）、遠隔皮膚科学装置（たとえば高解像度カメラ）、遠隔放射線学（たとえば超音波機械）などを含むがそれに限定されない。医療機器１１３は、ノード人員がシステム１００の他のエンティティと通信できるようにするために、コンピューティング装置１１５ａと協働する。たとえば、コンピューティング装置１１５ａは、医療機器１１３からの患者測定を捕捉し、該測定をハブ１１１におけるヘルスケア提供者に処理のために、あるいはEMRサーバーに蓄積のために、送る。これは、有益なことに、ノード人員が医療機器１１３を読み誤ることからの誤りおよび医療人員が医療機器１１３の測定を誤って記録することからの転記ミスを低減する。
【００１５】
ハブ１１１は、ヘルスケア提供者（たとえば医師）がシステム１００と対話する場所である。ある実施形態では、ハブ１１１は、ノード１０９と接続し、ヘルスケア提供者がコンピューティング装置１１５ｂを使って必要に応じてノード１０９における患者と遠隔に相談したり患者を診断したりできるようにする中央集中化された物理的な施設であってもよい。
【００１６】
ハブ１１１は、EMRサーバー１０１およびノード１０９と通信するためにヘルスケア提供者によって使用される少なくとも一つのコンピューティング装置１１５ｂを含んでいる。コンピューティング装置１１５ｂは上記のコンピューティング装置１１５ａと同様であり、その記述はここでは繰り返さない。ハブ１１１にいるヘルスケア提供者はコンピューティング装置１１５ｂを使ってシステムにログインし、患者を検索し、患者をスケジュールし、処方をオーダーし、メモを取り、ビデオ会議を実行し、レポートを生成し、解析を実行するなどする。遠隔医療システム１００においてハブ１１１にいるヘルスケア提供者によるノード１０９にいる患者のリモートな診察を許容することによって、ヘルスケア提供者が効果的に使用され、患者が高品質の医療ケアを受けることができる。
【００１７】
いくつかの実施形態では、ノード１０９およびハブ１１１は本稿ではクラウド・ベースの遠隔医療システム１００と称される。クライアントは、さまざまな機能（たとえば患者を登録する、患者をチェックインする、患者をスケジュールする、処方をオーダーする）を実装するために、クラウド・ベースの遠隔医療システム１００のサーバー側のクラウド・サーバー（単数または複数）と通信する。図示した実施形態では、サーバー側はEMRサーバー１０１を含む。
【００１８】
いくつかの実施形態では、EMRサーバー１０１はハードウェア・サーバー、ソフトウェア・サーバーまたはソフトウェアとハードウェアの組み合わせのいずれかでありうる。EMRサーバー１０１は、プロセッサ、メモリ、アプリケーション、データベースおよびネットワーク通信機能を含むコンピューティング装置であってもよく、かかるコンピューティング装置によって実装されてもよい。クライアント（たとえばノード１０９、ハブ１１１）がクライアントとサーバーの間のアプリケーションのための作業フローの割り振りを決定するのに応答して、EMRサーバー１０１は、サーバー側での作業フローのサーバー部分を実行し、クライアントと協働して、クライアントにおけるユーザーのための一つまたは複数のユーザー・ビューをカスタマイズおよび表示する。
【００１９】
いくつかの実施形態では、EMRサーバー１０１はEMR記憶部１０３およびカスタマイズ・モジュール１１７ｃを含む。いくつかの実施形態では、EMR記憶部１０３は、遠隔医療システム１００の患者についての電子医療記録を含むデータベースである。ノード１０９またはハブ１１１が患者についての情報を送信するたびに、EMRサーバー１０１はEMR記憶部１０３上の患者の電子医療記録を更新する。
【００２０】
カスタマイズ・モジュール１１７は、作業フローおよび該作業フローを実行するためのコア機能を識別するためのソフトウェアおよび／または論理を含んでいてもよい。EMRサーバー１０１のカスタマイズ・モジュール１１７ｃは、前記アプリケーションについての前記作業フローを実行するために、コア機能をクライアントに送信できる。コア機能は、本稿の他所でより詳細に論じるように、基盤層コンポーネント、ドメイン層コンポーネントおよびビュー層コンポーネントを含んでいてもよい。いくつかの実施形態では、カスタマイズ・モジュール１１７は、サーバーとクライアントの間でアプリケーションについての作業フローを割り振り、作業フローの実行に基づいてユーザー・ビューをカスタマイズするなどしてもよい。いくつかの実施形態では、カスタマイズ・モジュール１１７はプログラム可能なまたは特化されたハードウェアを使って実装できる。いくつかの実施形態では、カスタマイズ・モジュール１１７はハードウェアとソフトウェアの組み合わせを使って実装できる。他の実施形態では、カスタマイズ・モジュール１１７は、クライアント（たとえばノード１０９またはハブ１１１）とEMRサーバー１０１との組み合わせで記憶され、実行されてもよい。
【００２１】
いくつかの実施形態では、クライアントが、アプリケーションのための作業フローを決定し、クライアントとサーバーの間でアプリケーションのための作業フローを割り振り、作業フローの実行に基づいて一つまたは複数のユーザー・インターフェースをカスタマイズするためのカスタマイズ・モジュール１１７およびブラウザー１０７を含んでいる。たとえば、図示した実施形態では、ノード１０９上のコンピューティング装置１１５ａがブラウザー１０７ａおよびカスタマイズ・モジュール１１７ａを含み、ハブ１１１上のコンピューティング装置１１５ｂがブラウザー１０７ｂおよびカスタマイズ・モジュール１１７ｂを含む。
【００２２】
いくつかの実施形態では、ブラウザー１０７は、情報を閲覧し、送信するためにクライアント（たとえばノード１０９またはハブ１１１）にアクセスするユーザーによって使用される。たとえば、ユーザーは、EMRサーバー１０１に記憶されているデータへのアクセスを要求するためにブラウザー１０７を使ってログイン要求を送る。ユーザーが認証される必要がある場合には、EMRサーバー１０１はブラウザー１０７を介してユーザーと通信して、ユーザーを認証することに関係した情報を得てもよい。認証が成功か否かに依存して、ブラウザー１０７は、ユーザーが要求したコンテンツか、あるいは要求されたコンテンツへのアクセスの拒否を示すエラー・メッセージをユーザーのために表示する。
【００２３】
いくつかの実施形態では、クライアントにあるカスタマイズ・モジュール１１７は、ブラウザー１０７を介してユーザー入力を受領し、ユーザー入力に基づいて実行すべきアプリケーションを識別する。たとえば、カスタマイズ・モジュール１１７は、ノード１０９に患者を登録するための要求を受領することに基づいて、登録アプリケーションを実行することを決定する。カスタマイズ・モジュール１１７は次いで、アプリケーションのための作業フローを決定する。たとえば、カスタマイズ・モジュール１１７は、登録アプリケーションのための作業フローが、ユーザー情報を受領し、ユーザー情報を検証し、登録結果を示すユーザー・インターフェースを生成することを含むことを決定してもよい。登録アプリケーションのための作業フローは、異なるユーザーに関連付けられた異なる役割、あるいは、アプリケーションの使用によって決定される異なるユーザー・コンテキストに依存して、異なってもよい。カスタマイズ・モジュール１１７は作業フローをクライアントで実行される作業フローの第一の部分と、サーバーで実行される作業フローの第二の部分に分割する。たとえば、カスタマイズ・モジュール１１７は、サーバーのみがユーザー情報を検証できる一方、クライアントは作業フローの残りのステップ、すなわちユーザー情報の受領およびユーザー・インターフェースの生成を実行できると決定してもよい。カスタマイズ・モジュール１１７は、作業フローの第一の部分の実行に対応する一つまたは複数のユーザー・インターフェースを生成する。たとえば、登録が成功した場合、カスタマイズ・モジュール１１７は、ウェルカム・メッセージを含むユーザー・インターフェースを生成する。そうでない場合、カスタマイズ・モジュール１１７は、登録失敗を示すエラー・メッセージをもつユーザー・インターフェースを生成する。ユーザーに対して表示されるユーザー・インターフェースは、具体的なユーザーについてのユーザー・コンテキストに依存して異なってもよい。たとえば、成功裏の登録を示すすべてのユーザー・インターフェースは個人の名前を含んでいてもよい。しかしながら、ユーザー・コンテキストに基づき、第一のユーザー・インターフェースのみが第一のユーザーについて登録アプリケーションがどのくらい長くかかったかを示し、第二のユーザー・インターフェースは登録されたユーザーが何をすることができるかを示す、などでもよい。カスタマイズ・モジュール１１７の動作および上記に挙げた機能は、図３〜図７Ｂを参照して下記でより詳細に述べる。
【００２４】
いくつかの実施形態では、カスタマイズ・モジュール１１７は、クライアントのマルチレイヤー・アーキテクチャー上に構築される。たとえば、クライアントは基盤層、ドメイン層およびビュー層を有する。各層は、カスタマイズ・モジュール１１７の機能の部分的な実装をサポートするよう構成されている。いくつかの実施形態では、クライアントの基盤層（foundation  layer）は、さまざまなアプリケーションまたはサービスへの一次ゲートウェイとしてはたらく。たとえば、ノード１０９上のカスタマイズ・モジュール１１７は、アプリケーションを、アポイントメントをスケジュールすることとして識別し、クライアントの基盤層において利用可能なスケジューラー・サービス・ゲートウェイを通じてこのアプリケーションを扱うようEMRサーバー１０１と通信する。いくつかの実施形態では、クライアントのドメイン層（domain  layer）は、解決策固有のゲートウェイとして作用する。たとえば、カスタマイズ・モジュール１１７は、ドメイン層に基づいて、新たな相談アプリケーションのために登録作業フローおよび相談作業フローが必要とされていることを決定する。いくつかの実施形態では、カスタマイズ・モジュール１１７は、クライアントのビュー層（view  layer）に基づいてクライアントに表示されているユーザー・インターフェース・コンポーネントを決定する。
【００２５】
本稿に記載される技法は有利なことに、本稿に記載されるマルチレイヤー・アーキテクチャーおよびコンピューティング装置の増大する計算パワーを活用して、ドメイン・クリティカルな（domain-critical）計算上の複雑さをクラウド・サーバーからクライアントにオフロードし、したがってクラウド・サーバーでの過負荷な計算に起因するパフォーマンスの劣化を避ける。さらに、ユーザー・コンテキストおよびユーザー役割を区別する作業フローを生成し、ユーザーにビューのために与えられるデータを制御することによって、本稿に記載される技法は、各ユーザーについてユーザー・ビューをカスタマイズし、よってエンドユーザーの経験を向上させる。
【００２６】
図２は、カスタマイズ・モジュール１１７を含むコンピューティング装置２００のある実施形態を示すブロック図である。コンピューティング装置２００は、いくつかの例によれば、プロセッサ２３５、メモリ２３７、通信ユニット２４１およびデータ記憶部２４３も含んでいてもよい。システム２００のコンポーネントは、互いとの通信のために、バスまたはソフトウェア通信機構２２０に通信上結合される。いくつかの実施形態では、コンピューティング装置２００はノード１０９、ハブ１１１またはノード１０９とハブ１１１の組み合わせであってもよい。
【００２７】
プロセッサ２３５は、さまざまな入出力、論理および／または数学的演算を実行することによってソフトウェア命令を実行してもよい。プロセッサ２３５は、たとえば複雑命令セット・コンピュータ（CISC）アーキテクチャー、縮小命令セット・コンピュータ（RISC）アーキテクチャーおよび／または命令セットの組み合わせを実装するアーキテクチャーを含む、データ信号を処理するためのさまざまなコンピューティング・アーキテクチャーを有していてもよい。プロセッサ２３５は物理的および／または仮想であってもよく、単一の処理ユニットまたは複数の処理ユニットおよび／またはコアを含んでいてもよい。いくつかの実装では、プロセッサ２３５は、表示装置への電子的な表示信号を生成および提供し、アプリケーションの作業フローの実行に対応するユーザー・インターフェースの表示をサポートし、コンテキスト識別、作業フロー分割などを含む複雑なタスクを実行することができてもよい。いくつかの実装では、プロセッサ２３５は、メモリ２３７からのデータおよび命令にアクセスし、メモリ２３７にデータを記憶するために、バス２２０を介してメモリ２３７に結合されてもよい。バス２２０は、プロセッサ２３５を、たとえばメモリ２３７、通信ユニット２４１、カスタマイズ・モジュール１１７およびデータ記憶部２４３を含むコンピューティング装置２００の他のコンポーネントに結合してもよい。他のプロセッサ、オペレーティング・システムおよび物理的構成が可能であることは当業者には明白であろう。
【００２８】
メモリ２３７は、コンピューティング装置２００の他のコンポーネントのためのデータを記憶するとともに該データへのアクセスを提供してもよい。いくつかの実装では、メモリ２３７は、プロセッサ２３５によって実行されうる命令および／またはデータを記憶してもよい。該命令および／またはデータは、本稿に記載される技法を実行するためのコードを含んでいてもよい。たとえば、ある実施形態では、メモリ２３７はカスタマイズ・モジュール１１７を記憶していてもよい。メモリ２３７は、たとえばオペレーティング・システム、ハードウェア・ドライバ、他のソフトウェア・アプリケーション、データベースなどを含む他の命令およびデータを記憶することもできる。メモリ２３７は、プロセッサ２３５およびコンピューティング装置２００の他のコンポーネントとの通信のためにバス２２０に結合されてもよい。
【００２９】
メモリ２３７は、一つまたは複数の非一時的なコンピュータ使用可能（たとえば、読み取り可能、書き込み可能）なデバイス、動的ランダム・アクセス・メモリ（DRAM）デバイス、静的ランダム・アクセス・メモリ（SRAM）デバイス、埋め込みメモリ・デバイス、離散的メモリ・デバイス（たとえばPROM、FPROM、ROM）、ハードディスクドライブ、光ディスクドライブ（CD、DVD、ブルーレイ（商標）など）媒体を含んでいてもよく、これはプロセッサ２３５によるまたはプロセッサ２３５との関連での処理のための命令、データ、コンピュータ・プログラム、ソフトウェア、コード、ルーチンなどを含む、記憶する、通信するまたは転送することができるいかなる有体の装置またはデバイスであってもよい。いくつかの実装では、メモリ２３７は、揮発性メモリおよび不揮発性メモリの一つまたは複数を含んでいてもよい。メモリ２３７は単一のデバイスであってもよく、あるいは複数の型のデバイスおよび構成を含んでいてもよいことは理解しておくべきである。
【００３０】
通信ユニット２４１は、プロセッサ２３５をネットワーク１２５および他の処理システムにリンクすることによってデータを受信および送信するためのハードウェアである。通信ユニット２４１はクライアント（たとえばノード１０９、ハブ１１１）からアプリケーションについての要求のようなデータを受領し、それらの要求をコントローラ２０１に送信する。通信ユニット２４１はまた、クライアントが表示するためのアプリケーションに関係した情報、たとえばアポイントメント・スケジューリング・アプリケーションに応答してのスケジュールされた時間を受領する。通信ユニット２４１はバス２２０に結合される。ある実施形態では、通信ユニット２４１は直接物理接続のためのポートを含んでいてもよい。別の実施形態では、通信ユニット２４１は、クライアント装置１１５とデータを交換するための無線トランシーバー（図示せず）またはIEEE802.11、IEEE802.16、ブルートゥース（登録商標）、セルラー通信または他の好適な無線通信方法といった一つまたは複数の無線通信方法を使う他の任意の通信チャネルを含んでいてもよい。
【００３１】
データ記憶部２４３は、本稿に記載される機能を提供するためのデータを記憶する非一時的なメモリである。たとえば、データ記憶部２４３はさまざまな型のアプリケーション、アプリケーションの使用におけるユーザー・コンテキスト、アプリケーションの作業フロー、アプリケーションのための作業フローの分割を含むアプリケーションのためのテンプレートなどを記憶していてもよい。データ記憶部２４３に記憶されるデータは、下記でより詳細に記述される。データ記憶部２４３は、動的ランダム・アクセス・メモリ（DRAM）デバイス、静的ランダム・アクセス・メモリ（SRAM）デバイス、フラッシュメモリまたは他の何らかのメモリ・デバイスであってもよい。いくつかの実施形態では、データ記憶部２４３は、不揮発性メモリまたは同様の恒久的記憶デバイスおよびメディア、たとえばハードディスクドライブ、フロッピーディスクドライブ、CD-ROMデバイス、DVD-ROMデバイス、DVD-RAMデバイス、DVD-RWデバイス、フラッシュメモリ・デバイスまたはより恒久的に情報を記憶するための他の何らかの大容量記憶デバイスを含んでいてもよい。
【００３２】
いくつかの実施形態では、カスタマイズ・モジュール１１７は、コントローラ２０１、アプリケーション識別器２０３、コンテキスト・モジュール２０５、作業フロー・モジュール２０７、分割モジュール２０９、テンプレート・モジュール２１１およびユーザー・インターフェース・エンジン２１３を含んでいてもよい。カスタマイズ・モジュール１１７の諸コンポーネントは、バス２２０を介して通信上結合される。カスタマイズ・モジュール１１７の諸コンポーネントは、それらが実行する機能を提供するためのソフトウェアおよび／または論理を含んでいてもよい。いくつかの実施形態では、それらのコンポーネントは、フィールドプログラマブルゲートアレイ（FPGA）または特定用途向け集積回路（ASIC）を含むプログラム可能なまたは特化されたハードウェアを使って実装できる。いくつかの実施形態では、それらのコンポーネントは、ハードウェアとプロセッサ２３５によって実行可能なソフトウェアとの組み合わせを使って実装できる。いくつかの実施形態では、それらのコンポーネントはプロセッサ２３５によって実行可能な命令である。いくつかの実装では、それらのコンポーネントはメモリ２３７に記憶され、プロセッサ２３５によってアクセス可能であり実行可能である。
【００３３】
コントローラ２０１は、カスタマイズ・モジュール１１７の他のコンポーネントの動作を制御するためのソフトウェアおよび／または論理を含んでいてもよい。コントローラ２０１は、カスタマイズ・モジュール１１７の他のコンポーネントを制御して、図３〜図７Ｂを参照して後述する方法を実行させる。他の実装では、プロセッサ２３５、メモリ２３７およびカスタマイズ・モジュール１１７の他のコンポーネントは、コントローラ２０１なしで協働し、通信することができる。
【００３４】
いくつかの実施形態では、コントローラ２０１は通信ユニット２４１を介してノード１０９、ハブ１１１およびEMRサーバー１０１の一つまたは複数との間でデータを送受信する。たとえば、コントローラ２０１はEMRサーバー１０１から、ユーザーにグラフィカル・ユーザー・インターフェースを提供するためのデータを受領し、ノード１０９上のユーザー・インターフェース・エンジン２１３に、ブラウザー１０７ａを使ってコンピューティング装置１１５ａ上でユーザーに対してユーザー・インターフェースを呈示させる。
【００３５】
いくつかの実施形態では、コントローラ２０１はカスタマイズ・モジュール１１７の他のコンポーネントからデータを受領し、該データをデータ記憶部２４３に記憶する。たとえば、コントローラ２０１は作業フロー・モジュール２０７からアプリケーションのための作業フローを受領して、該作業フローをデータ記憶部２４３に記憶してもよい。他の実施形態では、コントローラ２０１はデータ記憶部２４３からデータを取り出し、該データをカスタマイズ・モジュール１１７の他のコンポーネントに送る。たとえば、コントローラ２０１は、データ記憶部２４３からアプリケーションのためのテンプレートを受領し、該テンプレートを分割モジュール２０９に送信してもよい。アプリケーションのための作業フローを、前記テンプレートに含まれる前記作業フローの前記分割に基づいて実行するためである。
【００３６】
アプリケーション識別器２０３は、アプリケーションの型を識別するためのユーザー入力を受領するための機能を提供するソフトウェアおよび／または論理を含んでいてもよい。いくつかの実施形態では、アプリケーション識別器２０３は、クライアントのコンピューティング装置１１５上のブラウザー１０７によって表示されるユーザー・インターフェースを介してユーザー入力を受領する。クライアントは、ノード１０９またはハブ１１１であることができる。たとえば、アプリケーション識別器２０３は、ノード１０９上のコンピューティング装置１１５ａのブラウザー１０７ａを通じてユーザーによって入力されるURLに基づいてユーザーが料金を支払いたがっていることを判別する。もう一つの例では、アプリケーション識別器２０３は、ハブ１１１のコンピューティング装置１１５ｂ上に表示されたウェブ・ページ上での選択を受領し、アプリケーションは、患者を登録チェックインすることであると識別する。他の実施形態では、アプリケーション識別器２０３は医療機器の出力を捕捉し、それをアプリケーションの型を識別するためのユーザー入力として使う。たとえば、アプリケーション識別器２０３はビデオ会議カメラがオンであることを判別し、該アプリケーションを、ビデオ会議を実行することとして識別する。あるいは、アプリケーション識別器２０３はX線機械によってX線が撮られることに基づいてレポートを生成するというアプリケーションを識別する。さまざまな型のアプリケーションは、ユーザーを登録すること、ユーザーを認証すること、患者を検索すること、患者をスケジューリングすること、患者をチェックインすること、料金を支払うこと、保険情報を処理すること、処方をオーダーすること、検査室結果を処理すること、メモを取ること、ビデオ会議を実行すること、レポートを生成することなどを含むが、それに限られない。
【００３７】
いくつかの実施形態では、クラウド・ベースの独自の遠隔医療システム１００におけるクライアント、たとえばノード１０９またはハブ１１１はマルチレイヤー・アーキテクチャーを含む。図３は、クライアント側アーキテクチャー３００のある実施形態を描いている。クライアントのアーキテクチャー３００は基盤層３０２、ドメイン層３０４およびビュー層３０６を含む。いくつかの実施形態では、クライアントの基盤層（foundation  layer）は、さまざまなアプリケーションまたはサービスへの一次ゲートウェイとしてはたらく。たとえば、図３に示されるように、基盤層３０２は、出会いスケジューラー・サービス・ゲートウェイ、システム・インターフェース・サービス・ゲートウェイ、データベース・ゲートウェイなどを含む。ひとたびアプリケーションが識別されたら、アプリケーション識別器２０３は該アプリケーションに基づいて基盤層３０２からゲートウェイを決定し、該アプリケーションの作業フローを実行するときにクライアントが、決定されたゲートウェイを通じてシステム１００の他のエンティティとの通信を確立できるようにする。たとえば、患者とヘルスケア提供者の間の出会い（encounter）をスケジューリングするために、アプリケーション識別器２０３はEMRサーバーと通信するため、たとえばヘルスケア提供者のカレンダーを受領するためのスケジュール・サービス・ゲートウェイを識別する。そのカレンダーに基づいて、出会いのために適切な時間がスケジューリングされることができる。マルチレイヤー・アーキテクチャーの層３０２〜３０６については下記でより詳細に述べる。
【００３８】
コンテキスト・モジュール２０５は、アプリケーションの使用によって決定されるユーザー・コンテキストを決定するための機能を提供するためのソフトウェアおよび／または論理を含んでいてもよい。いくつかの実施形態では、コンテキスト・モジュール２０５は、ユーザー入力と、該ユーザー入力に基づいてアプリケーション識別器２０３によって識別されたアプリケーションとを受領し、該ユーザー入力に基づいて該アプリケーションのためのユーザー・コンテキストを決定する。
【００３９】
いくつかの実施形態では、コンテキスト・モジュール２０５は、ユーザー入力を入力するために使われたユーザー装置の型を決定する。たとえば、コンテキスト・モジュール２０５は、ユーザー入力を送るために使われた媒体アクセス制御（MAC）アドレスを受領し、該MACアドレスのルックアップからユーザー入力が携帯電話で入力されたかデスクトップ・コンピュータで入力されたかを判別してもよい。同様に、コンテキスト・モジュール２０５は、アプリケーション要求フォームを入力するために携帯電話が使われたことを、そのフォームにおける要求が携帯電話に固有であることから判別してもよい。
【００４０】
いくつかの実施形態では、コンテキスト・モジュール２０５は、ユーザー入力の起源を識別することに基づいて、ユーザー入力をもって該アプリケーションを開始したユーザーの位置情報を判別する。たとえば、コンテキスト・モジュール２０５は、ユーザー入力に関連付けられたインターネット・プロトコル（IP）アドレスを受領してもよく、ユーザー入力の送付元の位置を判別する。全地球測位システム（GPS）、信号三角測量などのような他の技法も、ユーザー入力の起源を判別するために使われることができる。
【００４１】
ここで図３を参照するに、クライアント側アーキテクチャー３００はドメイン層３０４を含む。ドメイン層（domain  layer）３０４は、遠隔医療環境において使われる諸ドメイン（本稿では「内部ドメイン」とも称される）を含む。たとえば、図３では、内部ドメインは、企業健全性ドメイン（corporate  wellness  domain）および従業員福利ドメイン（employee  wellbeing  domain）を含む。いくつかの実施形態では、コンテキスト・モジュール２０５は、ユーザー入力がどのドメインから発したかを識別し、ドメイン層３０４に含まれるドメイン情報との比較に基づいて、ユーザー入力が内部ドメインからであったかどうかを判定する。ユーザー入力が内部ドメインからであるかどうかを判定することは、ユーザー役割を判別し、ユーザー入力から識別されるアプリケーションについての作業フローを決定することを助ける。
【００４２】
いくつかの実施形態では、コンテキスト・モジュール２０５は、アプリケーションに関連付けられた帯域幅情報を判別する。たとえば、コンテキスト・モジュール２０５は、該アプリケーションにおいて携帯電話が使われることから該アプリケーションについて限られた帯域幅を判別してもよい。あるいは、コンテキスト・モジュール２０５は、アプリケーションによる通信が内部ドメイン内である場合にはネットワーク帯域幅の推定を有しうる。
【００４３】
いくつかの実施形態では、コンテキスト・モジュール２０５は、前記ユーザー入力によりアプリケーションを開始したユーザーについてのユーザー役割を識別する。ユーザー役割は、ユーザーが患者、医療補助員、ヘルスケア提供者、保険提供者などのいずれであるかを識別する。ユーザー役割はレベルを含んでいてもよい。たとえば、コンテキスト・モジュール２０５は、下級看護師役割、上級看護師役割および主任看護師役割を判別してもよい。レベルに関連付けられたユーザー役割は、クライアントおよび／またはサーバー上のどのデータにユーザーがアクセスしうるかを反映する。いくつかの実施形態では、コンテキスト・モジュール２０５は、ユーザー入力において指定された情報に基づいてユーザー役割を判別する。たとえば、コンテキスト・モジュール２０５は、ユーザーがユーザー入力において「患者」役割を選択したことからユーザーが患者であると判別する。もう一つの例では、コンテキスト・モジュール２０５は、ユーザー入力における識別番号が登録された看護師のものであることから看護師役割を識別する。他の実施形態では、コンテキスト・モジュール２０５はユーザー入力から導出された情報に基づいてユーザー役割を決定する。たとえば、コンテキスト・モジュール２０５は、アプリケーション要求が医療キオスクのIPアドレスから送られたことから、患者がチェックイン・アプリケーションを開始したことを判別する。
【００４４】
コンテキスト・モジュール２０５は、他のユーザー・コンテキストをも判別する。たとえば、コンテキスト・モジュール２０５は、ユーザー選好がビデオまたはオーディオ通信を含むかどうか、ユーザーがテキストまたはグラフィック・メッセージをより好むかどうか、などといったユーザー選好を前記ユーザー入力から識別する。これらの選好は、ユーザーに対してどんな種類のデータが呈示されるかに影響するのみならず、作業フローの決定および作業フローの分割にも寄与する。当業者は、コンテキスト・モジュール２０５によって他のユーザー・コンテキストが決定されてもよいことを認識するであろう。
【００４５】
いくつかの実施形態では、コンテキスト・モジュール２０５はアプリケーションについてのユーザー・コンテキストを作業フロー・モジュール２０７に送信する。他の実施形態では、コンテキスト・モジュール２０５はユーザー・コンテキストをデータ記憶部２４３に記憶もする。
【００４６】
作業フロー・モジュール２０７は、アプリケーションについて作業フローを決定するための機能を提供するためのソフトウェアおよび／または論理を含んでいてもよい。いくつかの実施形態では、作業フロー・モジュール２０７は、アプリケーション識別器２０３からアプリケーションの型を受領し、コンテキスト・モジュール２０５からユーザー役割およびユーザー・コンテキストを受領し、アプリケーションの型、ユーザー役割およびユーザー・コンテキストに基づいてアプリケーションについての作業フローを決定する。
【００４７】
いくつかの実施形態では、作業フロー・モジュール２０７は、アプリケーションの型に基づいてアプリケーションについての作業フローを決定する。たとえば、作業フロー・モジュール２０７は、スケジューリング・アプリケーションについての作業フロー・ステップが認証アプリケーションについての作業フロー・ステップとは異なることを決定する。
【００４８】
いくつかの実施形態では、作業フロー・モジュール２０７は、ユーザー役割に基づいてアプリケーションについての作業フローを決定する。たとえば、アプリケーション識別器２０３は、患者とヘルスケア提供者との間の出会いをスケジューリングするアプリケーションを識別する。コンテキスト・モジュール２０５が、医療補助員の役割をもつユーザーがそのアプリケーションを開始したことを判別する場合、作業フロー・モジュール２０７は、スケジューリング作業フローおよび対応する諸作業フロー・ステップを決定する。しかしながら、コンテキスト・モジュール２０５が、患者役割をもつユーザーがアプリケーションを開始したと判別する場合には、作業フロー・モジュール２０７は、アポイントメントをスケジューリングする前に患者が登録される必要があることを判別する。結果として、作業フロー・モジュール２０７は、このアプリケーションのために、登録作業フローおよびスケジューリング作業フローを決定する。もう一つの例では、臨床上のメモを取るアプリケーションのために、作業フロー・モジュール２０７は、ユーザーの役割が主任看護師役割であるか下級看護師役割であるかに基づいて作業フローの複雑さを変えてもよい。
【００４９】
いくつかの実施形態では、作業フロー・モジュール２０７は、ユーザー・コンテキストに基づいて、アプリケーションについての作業フローを決定する。ユーザー・コンテキストはユーザー装置の型、位置情報、ネットワーク帯域幅、ユーザー選好およびアプリケーションに関係した他の情報を含む。いくつかの実施形態では、それぞれ第一の位置および第二の位置にいるユーザーによって開始されたあるアプリケーションについて、作業フロー・モジュール２０７は、遠隔医療解決策のために必須とされる地理的に適用可能なガイドラインの相違に基づいて、それらのユーザーのために異なる作業フローを決定してもよい。たとえば、専門医とのスケジューリング・アプリケーションについて、作業フロー・モジュール２０７は、第一の位置におけるユーザーのための作業フローは、専門医とのスケジューリングの前に一般医からの紹介を得ることを含んでいてもよく、一方、作業フロー・モジュール２０７は、第二の位置におけるユーザーについては、該第二の位置における異なるガイドラインに基づき、一般医からの紹介状を得るこのステップをスキップしてもよい。いくつかの実施形態では、作業フロー・モジュール２０７は、アプリケーションが内部ドメインから開始されたか外部ドメインから開始されたかに依存してアプリケーションのために異なる作業フローを決定してもよい。たとえば、看護師が内部ドメインのコンピュータからメモを取る場合、作業フロー・モジュール２０７は看護師の認証が任意的でありうることを決定する。しかしながら、看護師が外部ドメインからメモを取る場合、作業フロー・モジュール２０７は作業フローにおいて看護師の認証が要求されることを決定してもよい。いくつかの実施形態において、作業フロー・モジュール２０７は、ネットワーク帯域幅に基づいてアプリケーションのための作業フローを決定する。作業フロー・モジュール２０７は、貧弱な帯域幅の場合、アプリケーションの作業フローから一つまたは複数のステップを除去してもよく、あるいはネットワーク・トラフィックが改善するときに（たとえばネットワークを使う人が少ない夜間に）実行されるよういくつかのステップを延期するよう、作業フロー・ステップの順序を変えてもよい。いくつかの実施形態では、作業フロー・モジュール２０７は、アプリケーションのための作業フローを決定するとき、ユーザー選好をも考慮に入れてもよい。たとえば、診察を受けるアプリケーションについて、作業フロー・モジュール２０７は、患者の選好に基づいて、作業フロー・ステップとしてビデオ会議を開始しなくてもよい。
【００５０】
作業フロー・モジュール２０７は、アプリケーションに関係した変化に適応するようアプリケーションの作業フローを更新してもよい。たとえば、作業フロー・モジュール２０７は、特定の地域または政府の法律または規則の変化に基づいて作業フロー・ステップを編集、追加または除去してもよい。もう一つの例では、作業フロー・モジュール２０７は、クライアントに追加された新たな機能に基づいて作業フローを単純化してもよい。いくつかの実施形態では、作業フロー・モジュール２０７は、作業フローの実行中に受領される情報に基づいてアプリケーションの作業フローを更新するよう分割モジュール２０９と通信してもよい。たとえば、作業フロー・モジュール２０７は、分割モジュール２０９によって決定された前の作業フローの実行において発生した失敗の頻度に基づいて作業フローの変形を立ち上げてもよい。いくつかの実施形態では、作業フロー・モジュール２０７はアプリケーションのための作業フローを分割モジュール２０９およびテンプレート・モジュール２１１に送信してもよい。他の実施形態では、作業フロー・モジュール２０７はアプリケーションについての作業フローをデータ記憶部２４３にも送信してもよい。
【００５１】
分割モジュール２０９は、アプリケーションの作業フローを作業フロー・モジュール２０７から受領し、該作業フローをクライアントで実行される該作業フローの第一の部分およびサーバーで実行される該作業フローの第二の部分に分割する機能を提供するためのソフトウェアおよび／または論理を含んでいてもよい。異なるサーバーおよびクライアントに機能を分散させることは、負荷均衡化の助けとなる。ある実施形態では、クライアントがより多くのタスクを実行する一方、クラウド・サーバー（たとえばEMRサーバー１０１）は、各アプリケーションについて実行すべきタスクが少なくなり、軽量システムになり、より多くのセッションを扱うことができる。
【００５２】
いくつかの実施形態では、分割モジュール２０９は、アプリケーションの型に基づいて作業フローの分割を決定する。たとえば、分割モジュール２０９は、ユーザー・インターフェースを生成するアプリケーションに関係した作業フロー・ステップを、EMRサーバー１０１からクライアントに移すことを決定する。
【００５３】
いくつかの実施形態では、分割モジュール２０９は、ユーザー役割に基づいて作業フローの分割を決定する。いくつかの実施形態では、分割モジュール２０９は、ユーザー・コンテキストに基づいて作業フローの分割を決定する。たとえば、分割モジュール２０９は、クライアント側のコンピューティング装置１１５がその作業負荷を扱うことができる場合、クライアント側で実行されるよう作業の大半を割り当てる。別の例では、分割モジュール２０９は、地理的相違に基づいて決定される作業フローの部分を、その特定の地理的位置におけるクライアントで実行されるよう残してもよい。
【００５４】
カスタマイズ・モジュール１１７は、クライアントのマルチレイヤー・アーキテクチャー、たとえば図３に描かれるような基盤層３０２、ドメイン層３０４およびビュー層３０６を含むアーキテクチャー上に構築される。これらの層は、遠隔医療における有意で効果的な解決策を構築するコア機能を提供する。いくつかの実施形態では、分割モジュール２０９は、特定のユーザー・コンテキストにおいてどのデータが特定のユーザーに対して表示されることができるかおよびどのデータがすべてのユーザーに対して表示されることができるかを、ドメイン層３０４に基づいて決定する。たとえば、分割モジュール２０９は、第一の組の部局（department）からの医療補助員が第一のドメインにおけるデータにアクセスでき、第二の組の部局からの医療補助員が第二のドメインにおけるデータの第一の部分にアクセスできる、などと決定してもよい。
【００５５】
データは基盤層３０２の諸ゲートウェイを通じて流れるので、基盤層３０２は本来的な監査機能をもつ。すなわち、基盤層３０２は、監査可能イベントの一部としてすべての原子的なトランザクションおよびトランザクション状態を捕捉することによって、監査および監査証跡を扱うことができる。結果として、分割モジュール２０９は、アプリケーションの作業フローのチェーンおよび該アプリケーションの作業フローの実行におけるすべてのトランザクションを、基盤層３０２を通じて追跡することができる。たとえば、分割モジュール２０９は、作業フローの実行中に失敗が発生したことを検出し、作業フローの実行を復元するまたはロールバックすることによって該失敗に応答することができる。いくつかの実施形態では、分割モジュール２０９は、ユーザー・インターフェース・エンジン２１１にクライアントのユーザーに対して表示するためのユーザー・インターフェースを生成または修正するよう命令するために、ユーザー・インターフェース・エンジン２１１にその失敗、復元およびロールバックを通知する。いくつかの実施形態では、分割モジュール２０９は失敗、復元およびロールバックに基づいてアプリケーションの作業フローを更新するために作業フロー・モジュール２０７にも通知してもよい。たとえば、分割モジュール２０９は、失敗に基づく復元の数が閾値回数を超えることを判別し、作業フロー・モジュール２０７に作業フローを変更するよう通知する。そのような場合、分割モジュール２０９は、作業フローの変更に基づいて作業フローの分割を更新してもよい。
【００５６】
テンプレート・モジュール２１１は、アプリケーションのためのテンプレートの生成および取得のための機能を提供するソフトウェアおよび／または論理を含んでいてもよい。いくつかの実施形態では、テンプレート・モジュール２１１は、データ記憶部２４３に記憶されているテンプレートの探索に基づいてアプリケーションのためのテンプレートがあるかどうかを判定する。いくつかの実施形態では、テンプレート・モジュール２１１は、図３に示されるように基盤層３０２のデータベース・ゲートウェイを使って、記憶されているテンプレートにアクセスし、記憶されているテンプレートから、そのアプリケーションのためのテンプレートがあるかどうかを識別する。そのアプリケーションのためのテンプレートが存在すると判定することに応答して、テンプレート・モジュール２１１は、そのテンプレートを分割モジュール２０９に送信する。テンプレートに含まれる作業フローの分割に基づいてアプリケーションの作業フローを実行するためである。そのアプリケーションのためのテンプレートが存在しないと判定することに応答して、テンプレート・モジュール２１１は、そのアプリケーションのためのテンプレートを生成するよう、分割モジュール２０９と通信する。テンプレートは、そのアプリケーションの型、ユーザー役割およびユーザー・コンテキストに基づいてそのアプリケーションについて決定されている作業フローの分割を含む。いくつかの実施形態では、テンプレート・モジュール２１１は、データ記憶部２４３に該テンプレートを記憶する。いくつかの実施形態では、テンプレート・モジュール２１１は分割モジュール２０９から受領された更新された分割に基づいて該テンプレートを更新もする。アプリケーションのためのテンプレートを生成することは、さまざまな機能がコンパイル時に事前構成されることおよびランタイム活動であることを可能にする。これは、さまざまな顧客のために備えをするアプリケーションおよび解決策の迅速な展開を許容する。
【００５７】
ユーザー・インターフェース・エンジン２１３は、ユーザーに対してユーザー・インターフェースを提供するためのソフトウェアおよび／または論理を含んでいてもよい。いくつかの実施形態では、ユーザー・インターフェース・エンジン２１３は図３に描かれるようなビュー層３０６においてユーザー・インターフェースを生成する。いくつかの実施形態では、ユーザー・インターフェース・エンジン２１３は、アプリケーション識別器２０３がユーザー入力からアプリケーションの型を識別できるよう、ユーザー入力を受領するためのユーザー・インターフェースを生成する。たとえば、ユーザー・インターフェース・エンジン２１３は、ユーザーが記入するための、グラフィカル・ユーザー・インターフェースにおけるアプリケーション要求フォームを表示してもよく、あるいはアプリケーションを開始する当該ユーザー・インターフェースの部分の選択を受領してもよい。
【００５８】
いくつかの実施形態では、ユーザー・インターフェース・エンジン２１３は、分割モジュール２０９から命令を受領し、グラフィカル・ユーザー・インターフェース・データをクライアント（たとえばノード１０９またはハブ１１１）内のブラウザー１０７に、通信ユニット２４１を介して送り、ブラウザー１０７に該データをユーザー・インターフェースにおいて表示させる。ユーザー・インターフェース・エンジン２１３は、アプリケーションの作業フローの実行に対応する、ユーザーのためのカスタマイズされたユーザー・ビューを生成する。たとえば、ユーザー・インターフェース・エンジン２１３は、アプリケーションの第一の部分の作業フローの実行に応答して三人のユーザーのための三つの異なるユーザー・インターフェースを生成してもよい。三人のユーザーのユーザー役割およびユーザー・コンテキストに依存して、第一のユーザーは自分のビューから支払い情報および保険情報を見てもよく、第二のユーザーは自分のビューから保険情報のみを見てもよく、一方、第三のユーザーは自分のビューから保険情報または支払い情報のいずれかを見なくてもよい。
【００５９】
いくつかの実施形態では、ユーザー・インターフェース・エンジン２１３は、クライアントでのアプリケーションの作業フローの前記第一の部分の実行において分割モジュール２０９によって検出される障害、復元およびロールバックのうちの少なくとも一つに応答して、ユーザーに対して表示されるユーザー・インターフェースを生成または更新してもよい。ユーザーのためのユーザー・インターフェースは、アプリケーションの型、そのユーザーのユーザー役割およびユーザー・コンテキストに基づいてカスタマイズされてもよい。たとえば、ユーザー・インターフェース・エンジン２１３は、作業フローの実行の失敗についてユーザーに通知するためのユーザー・インターフェースを生成してもよい。しかしながら、ユーザー・インターフェース・エンジン２１３は、あるユーザーのためのユーザー・インターフェースでは失敗の原因を含め、別のユーザーのためのユーザー・インターフェースには含めなくてもよい。
【００６０】
再び図３の例示的なクライアント側アーキテクチャー３００を参照して、このアーキテクチャーに基づいて実装されるスケジューリング・アプリケーションが記述される。アプリケーションについての作業フローを割り当て、作業フローの実行に対応するカスタマイズされたユーザー・ビューを提供することにおけるシステム１００のエンティティ間の通信は、アプリケーションの型に基づく基盤層３０２から出会いスケジューラー・サーバー・ゲートウェイを通じてであってもよい。基盤層３０２の他のゲートウェイや他の層が使われてもよい。たとえば、コンテキスト・モジュール２０５は、基盤層３０２のシステム・インターフェース・サーバー・ゲートウェイを使った通信に基づいてユーザー・コンテキスト（たとえば、ユーザー装置の型）を決定してもよい。テンプレート・モジュール２１１は、基盤層３０２のデータベース・ゲートウェイを使った通信に基づいてアプリケーションのためにテンプレートが存在しているかどうかを判定してもよい。作業フロー・モジュール２０７は、ドメイン層３０４に基づいてステップごとの作業フローを決定してもよい（たとえば、ドメイン層３０４は医療記録へのアクセスに関係し、診察アプリケーションのための作業フローは医療記録へのアクセスに基づく）。分割モジュール２０９は、ドメイン層３０４に基づいてどのデータがユーザーに対して表示されるべきかを決定してもよい。ユーザー・インターフェース・エンジン２１３はビュー層３０６においてユーザーに対してカスタマイズされたユーザー・インターフェースを提供してもよい。図３のマルチレイヤー・アーキテクチャーは、さまざまなインターフェースを介してシームレスにさまざまなアプリケーションを総合する、幅広い一連の医療機器を統合するなどのためにも有益である。
【００６１】
図４は、アプリケーションのための作業フローを該アプリケーションの使用におけるユーザー・コンテキストに基づいてサーバーとクライアントの間で割り振り、作業フローの実行に基づいてユーザー・ビューをカスタマイズする方法のある実施形態を示す流れ図である。上記のように、カスタマイズ・モジュール１１７はアプリケーション識別器２０３、作業フロー・モジュール２０７、分割モジュール２０９およびユーザー・インターフェース・エンジン２１３を含んでいてもよい。アプリケーション識別器２０３はユーザー入力を受領４０２し、ユーザー入力に基づいてアプリケーションの型を識別４０４する。４０６では、作業フロー・モジュール２０７がアプリケーションのための作業フローを決定する。４０８では、作業フロー・モジュール２０７は、アプリケーションのためのその作業フローを実行するための複数のコア機能を識別する。ここで、該複数のコア機能は基盤コンポーネント、ドメイン・コンポーネントおよびビュー・コンポーネントを含む。４１０では、該アプリケーションのための該作業フローを実行するために、作業フロー・モジュール２０７はコア機能をクライアントに送信する。４１２では、作業フロー・モジュール２０７はクライアントから作業フローの結果を受領する。
【００６２】
図４の例は、サーバーのカスタマイズ・モジュール１１７（たとえば、EMRサーバー１０１のカスタマイズ・モジュール１１７ｃ）から送信されるコア機能に基づいてクライアント（たとえばノード１０９）によって実行される作業フローを記述する。しかしながら、本稿の他所で述べているように、作業フローの実行は、クライアントとサーバーとの間で分割されてもよく、作業フローを実行するためのコア機能も同様にクライアントとサーバーとの間で分割されてもよいことは理解しておくべきである。コア機能が本開示によって考えられている多くの変形において分割できることは明白なはずである。
【００６３】
図５Ａは、ユーザーを登録する方法のある実施形態を示す流れ図  ５００である。登録手順は、クライアント側で登録要求を受領することから始まる。クライアントはノード１０９またはハブ１１１を含んでいてもよい。５０２では、クライアントは登録要求を受領する。クライアントは登録要求をサーバー側に送る。サーバーはEMRサーバー１０１を含んでいてもよい。５０４では、サーバーは、登録要求に応答してユーザー情報を受領するための第一のユーザー・インターフェースを生成する。サーバーは第一のユーザー・インターフェースをクライアントに送る。５０６では、クライアントは、ユーザー情報を受領するために、第一のユーザー・インターフェースをブラウザーを使って表示する。５０８では、クライアントは、第一のユーザー・インターフェースを介してユーザー情報を受領する。５１０では、サーバーはユーザー情報を検証する。５１２では、サーバーは、ユーザー情報が検証されるかどうかを判定する。ユーザー情報が検証されることに応答して、サーバーはウェルカム・メッセージをもつ第二のユーザー・インターフェースを生成５１４する。サーバーは第二のユーザー・インターフェースをクライアントに送る。５１６では、クライアントは第二のユーザー・インターフェースを前記ブラウザーを使って表示する。ユーザー情報が検証され損なうことに応答して、サーバーは問題のある情報を識別５１８する。５２０では、サーバーはエラー・カウントを増す。たとえば、もとのエラー・カウントは0である。問題のある情報が一度識別されると、エラー・カウントは1に増大させられる。問題のある情報が二度識別されると、エラー・カウントは2に増大させられる、などとなる。５２２では、サーバーは、エラー・カウントが閾値を超えているかどうかを判定する。エラー・カウントが閾値を超えていなければ、サーバーは、問題のあるユーザー情報をハイライトすることによって第一のユーザー・インターフェースを更新５２８する。サーバーは更新された第一のユーザー・インターフェースをクライアントに送る。５３０では、クライアントは、問題のあるユーザー情報をハイライトして、前記第一のユーザー・インターフェースを再表示する。方法５００はステップ５０８に戻り、そこで新たなユーザー情報が、更新された第一のユーザー・インターフェースを介して受領されて、問題のある情報を置き換える。エラー・カウントが閾値を超えていれば、サーバーは、登録失敗を示すエラー・メッセージをもつ第三のユーザー・インターフェースを生成５２４し、該第三のユーザー・インターフェースをクライアントに送る。５２６では、クライアントは前記ブラウザーを使って第三のユーザー・インターフェースを表示する。
【００６４】
図５Ｂは、サーバーとクライアントの間でユーザーを登録するための作業フローを割り振る方法のある実施形態を示す流れ図  ５５０である。サーバーはEMRサーバー１０１であってもよい。クライアントはノード１０９またはハブ１１１であってもよい。登録手順は図５Ａと同様であってもよく、より少数のタスクがサーバー側で実装され、より多くのタスクがクライアント側で実装される。５５２では、クライアントは登録要求を受領する。５５４では、クライアントは、ユーザー情報を受領するための第一のユーザー・インターフェースを生成する。５５６では、クライアントは、第一のユーザー・インターフェースを介してユーザー情報を受領する。クライアントは、ユーザー情報をサーバーに送る。５５８では、サーバーはユーザー情報を検証する。５６０では、サーバーは、ユーザー情報が検証されるかどうかを判定する。ユーザー情報が検証されることに応答して、サーバーは成功裏の登録を示すメッセージをクライアントに送る５６２。ユーザー情報が検証され損なうことに応答して、サーバーは問題のある情報を識別５６４し、問題のあるユーザー情報を含むメッセージをクライアントに送る５６６。
【００６５】
５６８では、クライアントはサーバーから上記メッセージを受領する。５７０では、クライアントは、登録が成功かどうかを該メッセージに基づいて判定する。登録が成功であれば、５７２において、クライアントはウェルカム・メッセージをもつ第二のユーザー・インターフェースを生成し、表示する。登録失敗であれば、クライアントはエラー・カウントを増大させる５７４。５７６において、クライアントは、エラー・カウントが閾値を超えるかどうかを判定する。エラー・カウントが閾値を超えない場合、５８０において、クライアントは問題のあるユーザー情報をハイライトして第一のユーザー・インターフェースを更新し、表示する。方法５５０はステップ５５６に戻り、そこで更新された第一のユーザー・インターフェースを介してユーザー情報が刷新される。エラー・カウントが閾値を超えている場合には、クライアントは、登録失敗を示すエラー・メッセージをもつ第三のユーザー・インターフェースを生成５７８する。
【００６６】
比較により、図５Ｂでは、クライアントのマルチレイヤー・アーキテクチャーおよびクライアントの計算パワーを活用し、サーバーにおけるコンピューティング資源消費およびクライアントからサーバーへのネットワーク伝送を減らすために、多くのステップがクライアントに移されていることがわかる。たとえば、図５Ａでは、サーバーがすべてのユーザー・インターフェースを生成し、それらのユーザー・インターフェースを表示のためにクライアントに送る。一方、図５Ｂでは、クライアントがユーザー・インターフェースの生成を引き受けている。図５の例は作業ステップの具体的な分割を描いているが、他の変形が可能であり、本開示の範囲内であることは認識されるべきである。たとえば、図４を参照して上記したように、作業フローの全部がクライアント装置によって実行されてもよく、サーバーは単に作業フローを実行するためのコア機能を識別してクライアントに送信するのでもよい。
【００６７】
図６Ａおよび６Ｂは、アプリケーションの使用によって決定されるユーザー・コンテキストに基づいてサーバーとクライアントの間でアプリケーションについての作業フローを割り振り、作業フローの実行に基づいてユーザー・ビューをカスタマイズするための方法のある実施形態を示す流れ図  ６００である。上記のように、カスタマイズ・モジュール１１７は、アプリケーション識別器２０３、コンテキスト・モジュール２０５、作業フロー・モジュール２０７、分割モジュール２０９およびユーザー・インターフェース・エンジン２１３を含んでいてもよい。図６Ａでは、アプリケーション識別器２０３はユーザー入力を受領６０２し、ユーザー入力に基づいてアプリケーションの型を識別６０４する。６０６では、コンテキスト・モジュール２０５がユーザー入力に基づいてユーザー役割を決定する。６０８では、コンテキスト・モジュール２０５がアプリケーションの使用に基づいてユーザー・コンテキストを決定する。６１０では、テンプレート・モジュール２１１が、前記ユーザー役割および前記ユーザー・コンテキストをもつ前記アプリケーションのためのテンプレートがあるかどうかを判定する。テンプレート・モジュール２１１が前記アプリケーションのためのテンプレートを識別する場合、方法は後述する６２０において継続する。前記アプリケーションのためのテンプレートが存在しない場合、６１４において、テンプレート・モジュール２１１は、作業フロー・モジュール２０７と通信して、前記アプリケーションの型、ユーザー役割およびユーザー・コンテキストに基づいて前記アプリケーションのための作業フローを決定する。６１６では、テンプレート・モジュール２１１は分割モジュール２０９と通信して、前記アプリケーションの型、ユーザー役割およびユーザー・コンテキストに基づいて前記作業フローの分割を決定する。６１８では、テンプレート・モジュール２１１は、前記作業フローの前記分割を含む前記アプリケーションのためのテンプレートを生成する。
【００６８】
ここで図６Ｂを参照すると、分割モジュール２０９は、前記テンプレートに基づいて、前記作業フローを、クライアントで実行される前記作業フローの第一の部分と、サーバーで実行される前記作業フローの第二の部分に分割６２０する。６２２では、分割モジュール２０９は、クライアントでの前記作業フローの前記第一の部分の実行のために使われるデータを取得する。６２４では、分割モジュール２０９は、すべてのユーザーに表示されるべきデータを決定する。６２６では、分割モジュール２０９は、前記ユーザー・コンテキストにおいて前記ユーザー役割をもつユーザーに表示されるべきデータを決定する。６２８では、分割モジュールはデータをパースする。６３０では、ユーザー・インターフェース・エンジン２１３が、パースされたデータに基づいて、前記作業フローの前記第一の部分の実行に対応する一つまたは複数のユーザー・インターフェースを生成する。ここで、クライアントでの前記作業フローの前記第一の部分の実行は、サーバーでの前記作業フローの前記第二の部分の実行に基づく。
【００６９】
図７Ａは、モバイル装置を使ってアポイントメントをスケジュールするための例示的なユーザー・インターフェース７００のグラフィック表現である。Tom.Lがライアン医師とのアポイントメントをスケジュールするために、Tom.Lの携帯電話のユーザー・インターフェース上にリストされる情報は、Tom.Lという患者名に加えて、「訪問理由」７０２、「一次診療医師」７０４および「好ましい時間」の三つだけである。
【００７０】
図７Ｂは、コンピュータ装置を使ってアポイントメントをスケジュールするための例示的なユーザー・インターフェース７５０のグラフィック表現である。図７Ａのユーザー・インターフェースと比較して、ライアン医師とのアポイントメントをスケジュールするためにこのコンピューティング装置を使うときは、Tom.Lはより多くの情報を示される。たとえば、ユーザー・インターフェース７５０は「空いていない時間」７５４およびライアン医師のオフィスへのリンク７５６を含んでいる。これは、Tomが都合の悪い時間スロットを受け取る可能性を減らし、よってユーザー・インターフェースをカスタマイズすることによってTomの経験を向上させる。
【００７１】
アプリケーションの使用におけるユーザー・コンテキストに基づいてサーバーとクライアントの間でアプリケーションの作業フローを割り振り、作業フローの実行に基づいてユーザー・ビューをカスタマイズするためのシステムおよび方法が記述された。上記の記述において、上記で紹介した技法の十全な理解を提供するため、説明の目的で数多くの個別的詳細が記述されている。しかしながら、これらの技法がこうした個別的詳細なしでも実施できることは当業者には明白であろう。他の事例では、構造および装置が本記述をぼかすのを避け、理解の簡単のためにブロック図で示されている。たとえば、上記の技法は、ある実施形態において、上記では主としてソフトウェアおよび特定のハードウェアを参照して記述されている。しかしながら、本発明は、データおよびコマンドを受領し、サービスを提供する任意の周辺装置の一部として情報を呈示することのできる任意の型のコンピューティング・システムに適用される。
【００７２】
本明細書における「一つの実施形態」または「ある実施形態」への言及は、その実施形態との関連で記述される特定の特徴、構造または特性が少なくとも一つの実施形態に含まれることを意味する。本明細書における随所で「ある実施形態では」といった句が出現することは、必ずしもみなが同じ実施形態を指しているわけではない。
【００７３】
上記の詳細な記述の一部は、コンピュータ・メモリ内のデータ・ビットに対する動作のアルゴリズムおよび記号的表現を用いて呈示されている。これらのアルゴリズム的な記述および表現は、いくつかの状況において、自分の仕事の実質を他の当業者に伝えるためにデータ処理技術の当業者によって使われる。ここで、アルゴリズムとは、一般に、所望される結果に導くステップの自己整合的なシーケンスであると考えられる。ステップは、物理量の物理的な操作を要求するものである。必ずではないが通例、これらの量は、記憶、転送、組み合わせ、比較およびその他の操作をされることができる電気信号または磁気信号の形を取る。時として、主として慣用のため、これらの信号をビット、値、要素、シンボル、キャラクター、項、数などとして言及することが便利であることが立証されている。
【００７４】
しかしながら、これらおよび同様の用語が適切な物理量と関連付けられるものであり、そうした量に適用される便利なラベルに過ぎないことは念頭に置いておくべきである。以下の議論から明白なようにそうでないことがはっきり述べられるのでない限り、本記述を通じて、「処理」「コンピューティング」「計算」「決定」「表示」などといった用語を利用した議論はコンピュータ・システムまたは同様の電子計算装置のアクションおよびプロセスであって、コンピュータ・システムのレジスタおよびメモリ内の物理的な（電子的な）量として表現されているデータを操作して、コンピュータ・システムのメモリもしくはレジスタまたは他のそのような情報記憶、伝送もしくは表示装置内の物理的な量として同様に表現された他のデータに変換するものを指す。
【００７５】
本技法は、本稿の動作を実行するための装置にも関する。この装置は、要求される目的のために特に構築されていてもよいし、あるいはコンピュータに記憶されたコンピュータ・プログラムによって選択的にアクティブ化または再構成される汎用コンピュータを含んでいてもよい。そのようなコンピュータ・プログラムは、これに限られないが、フロッピーディスク、光ディスク、CD-ROMおよび磁気ディスクを含む任意の型のディスク、読み出し専用メモリ（ROM）、ランダム・アクセス・メモリ（RAM）、EPROM、EEPROM、磁気もしくは光カード、不揮発性メモリをもつUSBキーを含むフラッシュメモリまたは電子的な命令を記憶するために好適な他の任意の媒体であってそれぞれコンピュータ・システム・バスに結合されたもののような、非一時的なコンピュータ可読記憶媒体に記憶されてもよい。
【００７６】
いくつかの実施形態は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態またはハードウェアおよびソフトウェアの両方を含む実施形態の形を取ることができる。ある実施形態は、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むがそれに限られないソフトウェアにおいて実装される。
【００７７】
さらに、いくつかの実施形態は、コンピュータまたは任意の命令実行システムによってまたはそれとの関連で使うためのプログラム・コードを提供する非一時的なコンピュータ使用可能なまたはコンピュータ読み取り可能な媒体からアクセス可能なコンピュータ・プログラム・プロダクトの形を取ることができる。本稿の目的のためには、コンピュータ使用可能またはコンピュータ読み取り可能な媒体は、命令実行システム、装置またはデバイスによってまたはそれとの関連で使うためのプログラムを含む、記憶する、通信する、伝搬させるまたは転送することのできる任意の装置であることができる。
【００７８】
プログラム・コードを記憶するおよび／または実行するのに好適なデータ処理システムは、システム・バスを通じてメモリ要素に直接的または間接的に結合された少なくとも一つのプロセッサを含むことができる。メモリ要素は、プログラム・コードの実際の実行の間に用いられるローカル・メモリ、大容量記憶および実行中にコードが大容量記憶から取得されなければならない回数を減らすために少なくとも一部のプログラム・コードの一時的な記憶を提供するキャッシュ・メモリを含むことができる。
【００７９】
入出力またはI/O装置（キーボード、ディスプレイ、ポインティングデバイスを含むがそれに限られない）がシステムに、直接または介在するI/Oコントローラを介して結合されることができる。
【００８０】
ネットワーク・アダプターは、データ処理システムが他のデータ処理システムまたはリモートのプリンターもしくは記憶装置に介在する私設または公共ネットワークを通じて結合されることができるようにするために、本システムに結合されてもよい。モデム、ケーブル・モデムおよびイーサネット（登録商標）カードは、現在利用可能な型のネットワーク・アダプターのほんの数例である。
【００８１】
最後に、本稿に呈示されたアルゴリズムおよび表示は、いかなる特定のコンピュータまたは他の装置にも本来的に関係してはいない。さまざまな汎用システムが本稿の教示に基づくプログラムとともに利用されうる。あるいは、要求される方法ステップを実行するために、より特化した装置を構築することが便利であると判明することもありうる。多様なこれらのシステムのための要求される構造は以下の記述から明白となろう。さらに、本技法はいかなる特定のプログラミング言語を参照して記述されもしない。多様なプログラミング言語は、本稿に記載されるさまざまな実施形態の教示を実装するために使用されうる。
【００８２】
実施形態の上記の記述は、例解および説明のために呈示されたものである。網羅的であることも、本明細書を開示される厳密な形に限定することも意図されていない。上記の教示に照らして多くの修正および変形が可能である。実施形態の範囲は、この詳細な説明によってではなく、本願の請求項によって限定されることが意図されている。当業者によって理解されるように、例は、その精神または本質的な特徴から外れることなく、他の具体的な形で具現されてもよい。同様に、モジュール、ルーチン、特徴、属性、方法論および他の側面の具体的な名称および分割は、必須でも重要でもない。本記述またはその特徴を実装する機構は異なる名称、分割および／またはフォーマットを有していてもよい。さらに、当業者には明白であろうが、本明細書のモジュール、ルーチン、特徴、属性、方法論および他の側面は、ソフトウェア、ハードウェア、ファームウェアまたはこれら三つの任意の組み合わせとして実装されることができる。また、本明細書のコンポーネント（その一例はモジュール）がソフトウェアとして実装されるときは常に、該コンポーネントはスタンドアローンのプログラムとして、より大きなプログラムの一部として、複数の別個のプログラムとして、静的または動的にリンクされたライブラリとして、カーネル・ロード可能モジュールとして、デバイス・ドライバとしておよび／または現在または将来、コンピュータ・プログラミングの当業者に既知の他のあらゆる任意の仕方で実装される。さらに、本明細書は、決して、いかなる特定のプログラミング言語での実施形態にも、いかなる特定のオペレーティング・システムまたは環境のための実施形態にも、限定されない。よって、本開示は、本明細書の範囲を限定するのではなく例解することが意図されている。本明細書の範囲は付属の請求項において記載される。
【符号の説明】
【００８３】
１０１  EMRサーバー
１０３  EMR記憶部
１０７  ブラウザー
１０９  ノード
１１１  ハブ
１１３  医療機器
１１５  コンピューティング装置
１１７  カスタマイズ・モジュール
１２５  ネットワーク
２０１  コントローラ
２０３  アプリケーション識別器
２０５  コンテキスト・モジュール
２０７  作業フロー・モジュール
２０９  分割モジュール
２１１  テンプレート・モジュール
２１３  ユーザー・インターフェース・エンジン
２３５  プロセッサ
２３７  メモリ
２４１  通信ユニット
２４３  データ記憶部
４０２  ユーザー入力を受領
４０４  ユーザー入力に基づいてアプリケーションの型を識別
４０６  アプリケーションのための作業フローを決定
４０８  アプリケーションのためのその作業フローを実行するための複数のコア機能を識別。該複数のコア機能は基盤コンポーネント、ドメイン・コンポーネントおよびビュー・コンポーネントを含む
４１０  アプリケーションのための作業フローを実行するために、コア機能をクライアントに送信
４１２  クライアントから作業フローの結果を受領
５０２  登録要求を受領
５０４  登録要求に応答してユーザー情報を受領するための第一のユーザー・インターフェースを生成
５０６  ユーザー情報を受領するために、第一のユーザー・インターフェースをブラウザーを使って表示
５０８  第一のユーザー・インターフェースを介してユーザー情報を受領
５１０  ユーザー情報を検証
５１２  検証された？
５１４  ウェルカム・メッセージをもつ第二のユーザー・インターフェースを生成
５１６  第二のユーザー・インターフェースを前記ブラウザーを使って表示
５１８  問題のある情報を識別
５２０  エラー・カウントを増す
５２２  エラー・カウントが閾値を超えているか？
５２４  エラー・メッセージをもつ第三のユーザー・インターフェースを生成
５２６  前記ブラウザーを使って第三のユーザー・インターフェースを表示
５２８  問題のあるユーザー情報をハイライトすることによって第一のユーザー・インターフェースを更新
５３０  問題のあるユーザー情報をハイライトして、前記第一のユーザー・インターフェースを再表示
５５２  登録要求を受領
５５４  ユーザー情報を受領するための第一のユーザー・インターフェースを生成
５５６  第一のユーザー・インターフェースを介してユーザー情報を受領
５５８  ユーザー情報を検証
５６０  検証された？
５６２  成功裏の登録を示すメッセージを送る
５６４  問題のある情報を識別
５６６  問題のあるユーザー情報を含むメッセージを送る
５６８  サーバーから前記メッセージを受領
５７０  登録成功？
５７２  ウェルカム・メッセージをもつ第二のユーザー・インターフェースを生成し、表示
５７４  エラー・カウントを増す
５７６  エラー・カウントが閾値を超えるか？
５７８  エラー・メッセージをもつ第三のユーザー・インターフェースを生成して表示
５８０  問題のあるユーザー情報をハイライトして第一のユーザー・インターフェースを更新し、表示
６０２  ユーザー入力を受領
６０４  ユーザー入力に基づいてアプリケーションの型を識別
６０６  ユーザー入力に基づいてユーザー役割を決定
６０８  アプリケーションの使用に基づいてユーザー・コンテキストを決定
６１０  前記ユーザー役割および前記ユーザー・コンテキストをもつ前記アプリケーションのためのテンプレートがあるか？
６１２  アプリケーションのためのテンプレートを同定
６１４  アプリケーションの型、ユーザー役割およびユーザー・コンテキストに基づいてアプリケーションのための作業フローを決定
６１６  アプリケーションの型、ユーザー役割およびユーザー・コンテキストに基づいて作業フローの分割を決定
６１８  前記分割を含む前記アプリケーションのためのテンプレートを生成
６２０  テンプレートに基づいて、作業フローを、クライアントで実行される作業フローの第一の部分と、サーバーで実行される作業フローの第二の部分に分割
６２２  クライアントでの作業フローの前記第一の部分の実行のために使われるデータを取得
６２４  全ユーザーに表示されるべきデータを決定
６２６  前記ユーザー・コンテキストにおいて前記ユーザー役割をもつユーザーに表示されるべきデータを決定
６２８  データをパース
６３０  パースされたデータに基づいて、作業フローの第一の部分が実行されることに対応する一つまたは複数のユーザー・インターフェースを生成。クライアントでの作業フローの第一の部分の実行は、サーバーでの作業フローの第二の部分の実行に基づく
【図１】
0006332494.tif 000002
【図２】
0006332494.tif 000003
【図３】
0006332494.tif 000004
【図４】
0006332494.tif 000005
【図５Ａ】
0006332494.tif 000006
【図５Ｂ】
0006332494.tif 000007
【図６Ａ】
0006332494.tif 000008
【図６Ｂ】
0006332494.tif 000009
【図７Ａ】
0006332494.tif 000010
【図７Ｂ】
0006332494.tif 000011