各製品の資料を入手。
詳細はこちら →Apache Spark でFHIR のデータをSQL で操作する方法
CData JDBC ドライバーを使用して、Apache Spark でFHIR にデータ連携。
最終更新日:2023-09-04
この記事で実現できるFHIR 連携のシナリオ
こんにちは!リードエンジニアの杉本です。
Apache Spark は大規模データ処理のための高速エンジンです。CData JDBC Driver for FHIR と組み合わせると、Spark はリアルタイムでFHIR のデータに連携して処理ができます。本記事では、Spark シェルに接続してFHIR をクエリする方法について解説します。
CData JDBC Driver は、最適化されたデータ処理がドライバーに組み込まれているため、リアルタイムFHIR と対話するための高いパフォーマンスを提供します。FHIR に複雑なSQL クエリを発行すると、ドライバーはフィルタや集計など、サポートされているSQL操作を直接FHIR にプッシュし、組込みSQL エンジンを使用してサポートされていない操作(SQL 関数やJOIN 操作)をクライアント側で処理します。組み込みの動的メタデータクエリを使用すると、ネイティブデータ型を使用してFHIR を操作して分析できます。
CData JDBC Driver for FHIR をインストール
まずは、本記事右側のサイドバーからFHIR JDBC Driver の無償トライアルをダウンロード・インストールしてください。30日間無償で、製品版の全機能が使用できます。
Spark Shell を起動してFHIR のデータに接続
- ターミナルを開き、Spark shell でCData JDBC Driver for FHIR JAR file をjars パラメータに設定します:
$ spark-shell --jars /CData/CData JDBC Driver for FHIR/lib/cdata.jdbc.fhir.jar
- Shell でJDBC URL を使ってFHIR に接続し、SQL Context load() function でテーブルを読み込みます。
URL をFHIR サーバーのService Base URL に設定します。これは接続したいFHIR サーバーでリソースが定義されているアドレスです。ConnectionType をサポートされている接続タイプに設定します。ContentType をドキュメントのフォーマットに設定します。AuthScheme をFHIR サーバーの認証要件に基づいて設定します。
汎用、Azure ベース、AWS ベース、およびGoogle ベースのFHIR サーバー実装がサポートされます。
Service Base URL のサンプル
- 汎用:http://my_fhir_server/r4b/
- Azure:https://MY_AZURE_FHIR.azurehealthcareapis.com/
- AWS:https://healthlake.REGION.amazonaws.com/datastore/DATASTORE_ID/r4/
- Google:https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/
汎用FHIR インスタンス
CData 製品はFHIR のカスタムインスタンスへの接続をサポートします。カスタムFHIR サーバーへの認証はOAuth で行います(OAuth の詳細はヘルプドキュメントを参照してください)。カスタムFHIR インスタンスに接続する前に、ConnectionType をGenericに設定する必要があります。
組み込みの接続文字列デザイナー
JDBC 接続文字列URL の作成には、FHIR JDBC Driver にビルトインされたデザイナを使用できます。JAR ファイルをダブルクリックするか、コマンドラインでJAR ファイルを実行するとデザイナが開きます。
java -jar cdata.jdbc.fhir.jar
接続プロパティを入力し、接続文字列をクリップボードにコピーします。
scala> val fhir_df = spark.sqlContext.read.format("jdbc").option("url", "jdbc:fhir:URL=http://test.fhir.org/r4b/;ConnectionType=Generic;ContentType=JSON;AuthScheme=None;").option("dbtable","Patient").option("driver","cdata.jdbc.fhir.FHIRDriver").load()
- 接続が完了し、データがロードされたら、テーブルスキーマが表示されます。
FHIR をテンポラリーテーブルとして登録します:
scala> fhir_df.registerTable("patient")
-
データに対して、次のようなカスタムSQL クエリを実行します。
scala> fhir_df.sqlContext.sql("SELECT Id, [name-use] FROM Patient WHERE [address-city] = New York").collect.foreach(println)
コンソールで、次のようなFHIR のデータを取得できました!これでFHIR との連携は完了です。
CData JDBC Driver for FHIR をApache Spark で使って、FHIR に対して、複雑かつハイパフォーマンスなクエリを実行できます。30日の無償評価版 をダウンロードしてぜひお試しください。