医療機器の統合
共有情報による患者の安全性の向上
はじめに
RTI Connext DDSは、医療機器を統合してより安全な病院を作り、患者の安全を向上させるピアツーピア ミドルウェアです。
今日病院で使用されている患者モニタリング用医療機器は非常に洗練されていますが、相互に連携して動作するようには設計されていません。個々の機器は、特定の患者の健康問題を検出し、警告を示すことができます。しかし、「アラーム疲労」につながる誤認警告を生むことがあるため、間違った措置につながるだけでなく、残念ながら致命的な問題となることも少なくありません。
同じ医療機器をネットワーク化し、集約された情報を表示するスマートなアルゴリズムと組み合せると、真のアラーム状態をはるかに迅速かつ正確に検出し、誤認警告を回避し、望ましくない結果を防ぐことができます。
このCase+Codeアプリケーションは、複数の医療機器を接続してリアルタイムで患者の読み取り値を収集し、その結果を相関させ、解釈するのに役立ちます。この使用例は、以下を含むさまざまな医療機器に適用されます。
- 患者モニタリング
- アラームデータ
- ポイントオブケア デバイス
- 在宅患者のモニタリング
次のセクションでは、ECGおよびパルスオキシメーター データを送信するアプリケーションでConnext DDSを使用する方法、2台のデバイスからのデータを相関させてより正確な患者アラームを生成するアプリケーション、およびHMIアプリケーションのコーディング例を示します。
医療機器の統合
病院では、さまざまな医療機器を患者に装着し、心拍数、血中酸素飽和度、血圧などのバイタルサインをモニタリングします。これらの医療機器はそれぞれ、誤ったアラームまたは誤った読み取りにつながる可能性のある既知の障害モードを抱えており、これらの障害モードの一部は通常の状況でも発生する可能性があります。あまりにも多くの誤報アラームが発生すると、それは「アラーム疲労」と呼ばれる状態を引き起こし、看護師が、重大なアラームを意図的に無視する状態をもたらしかねません。このことは患者の死を招くおそれがありますが、アラームの誤報を減らすことで防止することが可能です。誤ったアラームの数を減らすための比較的簡単な方法の1つは、複数のデバイスの情報に基づいてアラームを生成することです。1台の装置が誤ったアラームを発生させることはよくありますが、複数のデバイスからのデータを相関させると、患者のバイタルサインのより正確な状況が構築でき、問題を予測することさえできます。これにより、誤ったアラームの数を大幅に減らし、アラーム疲労を軽減し、患者の安全性を高めることができます。
RTI Connext DDSは、医療機器を簡単に接続し、
リアルタイムおよび非リアルタイムのデータを共有できるようにする分散型システム プラットフォームを提供します。Connextプラットフォームには、この相互運用性を簡単に実現する複数の機能が備わっています。
- デバイスとアプリケーションの自動検出による、デバイスのネットワークへの常時接続
- 多くのデバイスからのデータをアプリケーションが解釈できる、明確なデータモデル
- 低遅延、高スループットのパフォーマンスにより、患者のデータをリアルタイムで監視
- QoS(Quality of Service)調整により、アプリケーションまたはネットワークの要件に従ってデータを送信
最終的に、このプラットフォームにより、デバイスとアプリケーションがデータを共有して患者のケアを改善し、患者の安全性を高めることができます。
このサンプルで説明すること
このサンプルは、シミュレートされたECGおよびパルスオキシメーターから事前に記録されたデータを示します。データは、2つのデバイスからのデータを相関させ、有効なアラーム状態が存在する条件を決定するアプリケーションに送信されます。このアプリケーションは、ECGおよびパルスオキシメーター データの両方が患者のアラームを示しているときにアラームデータを送信します。HMIアプリケーションは、生成されたアラームを表示します。
アプリケーションは次のとおりです。
デバイスデーターの再生(RTI再生サービス):
デバイスデーターの再生(RTI再生サービス):
- ICE MDPnPデバイスシミュレーターから事前に記録されたECGデータを再生
- ICE MDPnPデバイスシミュレーターから事前に記録されたパルスオキシメーターのデータを再生
- 単一の実行可能ファイルまたは複数の実行可能ファイルとして実行
- アラーム条件を強制できるよう変更されるデータ
デバイス-患者マッピング(PatientDeviceApp):
- 患者IDを伴ったデバイスIDを関連付けるデータを送信
病床スーパーバイザー (BedsideSupervisor):
- ECGおよびパルスオキシメ−ターのデータを受信
- ECGおよびパルスオキシメーターの両方の値が範囲外の場合にアラームデータを送信します。
ヒューマン-マシン インターフェイス(HMI):
サンプルの実行
サンプルをダウンロード
サンプルファイルをダウンロードし、[ Linux | Windows ]選択した場所に解凍します。このドキュメントの場所を
EXAMPLE_HOMEとして参照します。
あらかじめビルドされた実行可能ファイルなしにサンプルのソースコードを表示してダウンロードするには、
RTI Community DDS使用例リポジトリGitHubをご利用ください。
このダウンロードには以下が含まれます:
- 再構築せずに構成および実行できる事前構築済みのサンプル アプリケーション
- WindowsおよびLinuxシステム用のソースファイルとプロジェクト ファイルのサンプル
RTI Connext DDS Professionalのダウンロード
RTI Connext DDS Professionalをまだインストールしていない場合は、ダウンロードしてインストールしてください。30日間の試用ライセンスで、製品を試すことができます。ダウンロードには、サンプルを実行するために必要なライブラリと、分散システムの可視化およびデバッグに使用できるツールが含まれています。
サンプルの実行
サンプルを実行する前に、REPLAY_HOMEという環境変数を設定する必要があります。これは、RTI Connextインストール ディレクトリのRTI Recording Serviceの場所に設定する必要があります。たとえば、RTI Connextをデフォルトの場所にインストールした場合は、REPLAY_HOMEをc:¥program files¥rti¥RTI Recording Service 5.1.0に設定する必要があります。
Windowsシステムでは、EXAMPLE_HOME\ExampleCode\scriptsディレクトリに移動します。このディレクトリには、アプリケーションを開始するためのバッチファイルが4つあります。これらは以下のとおりです:
- DeviceData.bat
- PatientDeviceApp.bat
- BedsideSupervisor.bat
- HMI.bat
Linuxシステムでは、EXAMPLE_HOME/ExampleCode/scriptsディレクトリに移動します。このディレクトリには、
アプリケーションを開始するためのスクリプトファイルが4つあります。
- DeviceData.sh
- PatientDeviceApp.sh
- BedsideSupervisor.sh
- HMI.sh
これらのスクリプトまたはバッチファイルは、同じマシンで実行することも、このサンプルをコピーして複数のマシンで実行することもできます。同じマシンで実行すると、共有メモリーtransportを介して通信します。複数のマシンで実行すると、UDPを介して通信します。
これらのアプリケーションをすべて実行すると、患者アラームがアクティブでない場合、最初はデータが表示されません。デバイスが患者をしばらくモニタリングした後、患者のアラームが表示され、デバイス値の更新が行われます。
同じネットワークの複数のマシンにアクセスできる場合は、これらのアプリケーションを別々のマシンで実行してください。注意:ネットワークにマルチキャストがない場合、マルチキャストなしで実行するように設定変更する方法の詳細については、マルチキャストなしでサンプルを実行するを参照してください。
Windowsシステムで医療機器接続のサンプルを実行する方法[ビデオファイルのダウンロード]
マルチキャストなしでサンプルを実行する
ネットワークがマルチキャストをサポートしていない場合、ユニキャストデータのみを使用してこのサンプルを実行できます。ユニキャストのみで実行するには、次の2つの手順を実行する必要があります。
- xmlファイルを編集して、通信するマシンのアドレスを追加します。これらのアドレスは、
有効なUDPv4またはUDPv6アドレスです。 - 4つのアプリケーションすべてをno-multicastパラメータで実行します。これにより、アプリケーションはネットワークのマルチキャストに依存しない.xmlファイルをロードします。
<discovery> <initial_peers> <!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> <!-- Insert addresses here of machines you want --> <!-- to contact --> <!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> <element>127.0.0.1</element> <!-- <element>192.168.1.2</element> --> </initial_peers> </discovery>
サンプルのビルド
ディレクトリの概要
EXAMPLE_HOME |-- Docs `-- ExampleCode |-- make |-- win32 |-- replay |-- scripts `-- src |-- CommonInfrastructure |-- Config |-- Generated |-- Idl `-- . . .
ソースコードは次のように分かれています:
- make - Linux makefile
- win32 - Windowsプロジェクトとソリューションファイル
- replay - 記録済みのデバイスデータと再生スクリプト
- scripts - アプリケーションを実行するスクリプト
- src - ソースコード
- CommonInfrastructure - すべてのアプリケーションがRTI Connext DDSを使用してデータの送受信を開始するために使用するコード
- Config - XML QoS設定ファイル
- Generated - Idlから生成されたソースファイル
- Idl - ネットワーク経由で送信されるデータ型の説明
- その他のディレクトリ - 特定のアプリケーションのソースコード。RTI Connext DDSパブリッシュおよびサブスクライブ コードは、h、FooInterface.cxxまたはFooInterface.javaにあります。
サンプルのビルド
すべてのプラットフォームで、まず、NDDSHOMEという環境変数を設定する必要があります。この環境変数は、RTI Connext DDSインストール内のndds.5.xxディレクトリを指している必要があります。環境変数の設定方法の詳細については、RTIコアライブラリとユーティリティ入門ガイドを参照してください。
Windowsシステム
WindowsシステムのC++アプリケーションの場合は、まずwin32\MedicalDeviceIntegrationExample- <compilerver> .slnファイルを開くことで開始します。
このコードは、アプリケーションへのインターフェイスを表すライブラリ、ソース、およびIDLファイルの組み合わせで構成されています。Visual Studioのソリューションファイルは、必要なコードと必要なライブラリとのリンクを自動的に生成するように設定されています。
Javaデベロッパーの場合、Eclipseプロジェクトは、src\HMIディレクトリにあります。Eclipseでビルドするには、
次の手順を実行する必要があります。
- パスにC++プリプロセッサがあることを確認してください。これには、コマンドプロンプトからVisual Studioアプリケーションbatを実行し、同じコマンドプロンプトからEclipseを開きます。
- NDDSHOME環境変数が、RTI Connext DDSインストール内の5.xxディレクトリを指していることを確認してください。
- EclipseにHMIプロジェクトをインポートする
- xmlファイルを右クリックし、[実行] - [Antビルド]を選択します。これにより、.idlファイルからコードを生成するコードジェネレーターが呼び出されます。
- srcディレクトリを右クリックします。[ビルドパスを選択] - [ビルドパスの設定..]を選択します。[ライブラリ]タブに移動し、[外部JARの追加...]を選択します。%NDDSHOME%\classディレクトリに移動し、jarを選択します。たとえば、RTI Connext DDSを:¥program files¥rtiにインストールした場合は、c:¥program files¥rti¥ndds.5.xx¥class¥に移動し、nddsjava.jarを選択します。
- 実行構成を編集して、PATH環境変数に次のディレクトリが含まれていることを確認します。NDDSHOME\lib\i86Win32jdk
Linuxシステム
Linuxシステムでアプリケーションをビルドするには、ディレクトリをExampleCodeディレクトリに変更し、次のコマンドを使用します。
gmake –f make/Makefile.<platform>
選択するアーキテクチャは、プロセッサ、OS、およびコンパイラ バージョンの組み合わせになります。この例では、x86Linux3.xgcc4.6.3とi86Linux2.6gcc4.5.5という2つのアーキテクチャのみがサポートされています。
Javaデベロッパーの場合、Eclipseプロジェクトは、src\HMIディレクトリにあります。Eclipseでビルドするには、次の手順を実行する必要があります。
- パスにC++プリプロセッサがあることを確認してください。
- NDDSHOME環境変数が、RTI Connext DDSインストール内の5.xxディレクトリを指していることを確認してください。
- EclipseにHMIプロジェクトをインポートする
- xmlファイルを右クリックし、[実行] - [Antビルド]を選択します。これにより、.idlファイルからコードを生成するコードジェネレーターが呼び出されます。
- srcディレクトリを右クリックします。[ビルドパスを選択] - [ビルドパスの設定..]を選択します。[ライブラリ]タブに移動し、[外部JARの追加...]を選択します。%NDDSHOME%/classディレクトリに移動し、jarを選択します。たとえば、RTI Connext DDSを~/rtiにインストールした場合は、~/rti/ndds.5.x.x/class/に移動し、nddsjava.jarを選択します。
- 実行構成を編集して、LD_LIBRARY_PATH環境変数に次のディレクトリが含まれていることを確認します。NDDSHOME/lib/<architecture>jdk
その他の重要点
データモデルの考慮事項
このアプリケーションのデータモデルには、大きく3つの要素があります。
- デバイスデータ(idl):これらのアプリケーションは、MDPnPプロジェクトの一部として開発されたIntegrated Clinical Environment(ICE)データモデルを使用します。
- デバイス - 患者マッピング(idl):このデータには、各デバイスからモニタリングする患者へのマッピングが含まれています。これは、各デバイスをユニークなインスタンスとしてモデル化します。このデータは、状態データのQoSで構成されます。これは、どのデバイスがどの患者を監視しているかを判断するアプリケーションが起動するとすぐに確実に通知されることを意味します。
- アラーム(idl):これは、患者のアラームを表す非常に単純な構造です。これには、患者キー、アラームの種類、およびアラームを示す一連のデバイスアップデートが含まれています。これは、各患者を一意のインスタンスとしてモデル化します。
詳細設定:デバイスのXML設定
qos_profiles.xmlファイルには、このアプリケーションのさまざまなタイプのデータについての設定が含まれています。このファイルのQoSは、組み込みのQoSプロファイルを継承します。このサンプルで使用されるビルドイン プロファイルは、次のとおりです。
- 信頼できるストリーミング:DataWriterとDataReaders間において、高速で信頼性の高い転送を可能にするデータを構成します。
- ステータスとアラームステータス:既存および遅延結合アプリケーションに確実に配信されるようにデータを構成します。各患者の最新アラームアップデートのみが送信されます。
Bedside Supervisor (C++)
このアプリケーションは、どのデバイスがどの患者をモニタリングしているかについての更新情報を受信します。また、デバイスからストリーミングの患者データを受信します。これは、パルスオキシメ−ターと、高すぎる脈拍データを提供するECGを探します。患者の脈拍が高すぎる場合は、アラームを送信します。
この例のRTI Connext DDSコードは、これらのファイルに集中しています。
- DDSCommunicator.hおよびDDSCommunicator.cxx:このクラスは、DDS DomainParticipantおよびDDSトピックの作成に使用されます。DDS DomainParticipantは、他のDDSオブジェクトの検出を行うDDSオブジェクトです。DDSトピックは、DataWriterおよびDataReadersに関連付けられ、データの意味を説明する文字列を含みます。
- DDSTypeWrapper.h:このクラスは、DDSデータ型のテンプレートラッパーで、コンストラクタ、代入演算子、
およびデストラクタを提供します。 - DDSNetworkInterface.hおよびDDSNetworkInterface.cxx:これらのファイルには、Device Numeric DataReader、Device-Patient Mapping DataReader、およびAlarm DataWriterの作成など、このアプリケーション固有のすべてのDDSコードが含まれています。
HMI (Java)
このアプリケーションは、アラームの更新を受け取り、GUIで表示します。アクティブなアラームがない場合、データは表示されません。
このサンプルのRTI Connext DDSコードは、以下の3つのファイルに集中しています。
- DDSCommunicator:このクラスには、DDS DomainParticipantオブジェクトを作成するコードが含まれています。このオブジェクトは、検出プロセスを開始します。
- GenericDataReader:このクラスには、ネットワーク経由でデータを受け取る、型固有のDDS DataReaderを作成するコードが含まれています。このクラスは、アプリケーションのメインスレッドに送信されるデータを通知するためにDDS WaitSetsを使用します。
- DDSNetworkInterface:このクラスは、DDSCommunicatorとアラームデータを受け取るDataReaderをインスタンス化します。これは、データの受信に使用されるDDSトピックとQoSを指定します。
次のステップ
余分なクレジット
MDPnPプロジェクトが、複数のシミュレートされたデバイス、より詳細なデータの視覚化、さらに複雑なシナリオを含むデモアプリケーションを作成しました。 このアプリケーションは、このサンプルコードと互換性があり、次のことが可能です。
- このサンプルから記録された医療データを視覚化する
- 追加のシミュレートされたデバイスを実行する
- 他のアラームシナリオを強制するよう、シミュレーション パラメータを変更する
このサンプルのデータをICE PnPユーザーインターフェイスで表示するには、サンプル アプリケーションを実行し、ICEスーパーバイザー アプリケーションを選択して、データの視覚化を選択します。 これにより、このサンプルのデータを表示できます。
Case + Code:医療機器の例:MDPnPとの統合[ビデオファイルをダウンロードする]
ICEデータモデルとMDPnPプロジェクトの詳細については、MDPnPウェブサイトを参照してください。
コミュニティに参加する
RTIコミュニティフォーラムに、質問を投稿してください。
これらの指示を使用して、RTIコミュニティGitHubでCase + Codeのサンプルに貢献してください。