データを FHIR for Azure API for FHIR に変換する
$convert-data
FHIR サービスのカスタム エンドポイントは、さまざまなデータ型から FHIR へのデータ変換を目的とします。 既定のテンプレートとして FHIR Converter プロジェクトのテンプレートと Liquid テンプレート エンジンが使用されます。 これらの変換テンプレートは必要に応じてカスタマイズすることができます。
現在、カスタム エンドポイントでは $convert-data
、データ変換の種類がサポートされています four
。
配信元データの形式 | 変換先データの形式 |
---|---|
C-CDA | FHIR |
HL7v2 | FHIR |
JSON | FHIR |
FHIR STU3 | FHIR R4 |
注意
$convert-data
エンドポイントは、生の医療データをレガシ形式から FHIR 形式に変換するための ETL パイプライン内のコンポーネントとして使用できます。 ただし、それ自体は ETL パイプラインではありません。 FHIR サーバーに永続化する FHIR データを準備する際の完全なワークフローには、Logic Apps や Azure Data Factory などの ETL エンジンを使用することをお勧めします。 ワークフローには、データの読み取りと取り込み、データの検証、$convertデータ API 呼び出しの作成、データの前処理/後処理、データ エンリッチメント、データ重複除去などがあります。
$convert-data エンドポイントを使用する
操作は $convert-data
FHIR サービスに統合され、サービスの一部として実行されます。 サーバーでを $convert-data
有効にした後、サーバーへの API 呼び出しを行って、データを FHIR に変換できます。 https://<<FHIR service base URL>>/$convert-data
パラメーター リソース
$convert-data は、次の表に示すように、要求本文で Parameter リソースを受け取ります。 API 呼び出し要求本文には、次のパラメーターを含めます。
パラメーター名 | 説明 | 指定可能な値 |
---|---|---|
inputData | 変換の対象となるデータ。 | の場合 Hl7v2 : stringの場合 Ccda : XMLの場合 Json : JSONの場合 FHIR STU3 : JSON |
inputDataType | 入力のデータ型。 | HL7v2 , Ccda , Json , Fhir |
templateCollectionReference | Azure Container Registry (ACR) 上の OCI イメージ テンプレート コレクションへの参照。 これは、変換に使用する Liquid テンプレートを含む画像です。 既定のテンプレートへの参照、または FHIR サービス内に登録されているカスタム テンプレート イメージを指定できます。 テンプレートのカスタマイズ、ACR でのテンプレートのホスト、FHIR サービスへの登録については、以下を参照してください。 | 既定/サンプル テンプレートの場合: HL7v2 テンプレート: microsofthealth/fhirconverter:default microsofthealth/hl7v2templates:default C-CDA テンプレート: microsofthealth/ccdatemplates:default JSON テンプレート: microsofthealth/jsontemplates:default FHIR STU3 テンプレート: microsofthealth/stu3tor4templates:default カスタム テンプレートの場合: <RegistryServer>/<imageName>@<imageDigest>、 <RegistryServer>/<imageName>:<imageTag> |
rootTemplate | データの変換中に使用するルート テンプレート。 | HL7v2 の場合: "ADT_A01"、"ADT_A02"、"ADT_A03"、"ADT_A04"、"ADT_A05"、"ADT_A08"、"ADT_A11"、"ADT_A13"、"ADT_A14"、"ADT_A15"、"ADT_A16"、"ADT_A25"、"ADT_A26"、 "ADT_A27"、"ADT_A28"、"ADT_A29"、"ADT_A31"、"ADT_A47"、"ADT_A60"、"OML_O21"、"ORU_R01"、"ORM_O01"、"VXU_V04"、"SIU_S12"、"SIU_S13"、"SIU_S14"、"SIU_S15"、"SIU_S16"、 "SIU_S17"、"SIU_S26"、"MDM_T01"、"MDM_T02" C-CDA の場合: "CCD"、"ConsultationNote"、"DischargeSummary"、"HistoryandPhysical"、"OperativeNote"、"ProcedureNote"、"ProgressNote"、"ReferralNote"、"TransferSummary" JSON の場合: "ExamplePatient", "Stu3ChargeItem" FHIR STU3": STU3 リソース名 (例: "Patient"、"Observation"、"Organization")。 |
注意
FHIR STU3 から R4 テンプレートは、STU3 リソースと FHIR R4 標準の同等のリソースとの間でのみフィールドの違いのマッピングを提供する "diff" Liquid テンプレートです。STU3 リソースの一部の名前が変更されるか、R4 から削除されます。 STU3 から R4 への変換については、「リソースの相違点と制約」を参照してください。
注意
JSON テンプレートは、事前に定義された JSON メッセージの種類に準拠する "既定" テンプレートではなく、使用するためのサンプル テンプレートです。 JSON には、HL7v2 メッセージや C-CDA ドキュメントとは異なり、標準化されたメッセージの種類はありません。 そのため、既定のテンプレートの代わりに、独自のカスタマイズされたテンプレートの開始ガイドとして使用できるサンプル テンプレートがいくつか用意されています。
警告
既定のテンプレートは MIT ライセンスでリリースされ、Microsoft サポートではサポートされていません。
既定のテンプレートは、すぐに開始するためにのみ提供されます。 Azure API for FHIR のバージョンを更新すると、更新される場合があります。 そのため、変換動作を確認し、テンプレートの独自のコピーをAzure Container Registryでホストし、それらを Azure API for FHIR に登録し、API 呼び出しで使用して、さまざまなバージョンの Azure API for FHIR で一貫したデータ変換動作を行う必要があります。
要求のサンプル
{
"resourceType": "Parameters",
"parameter": [
{
"name": "inputData",
"valueString": "MSH|^~\\&|SIMHOSP|SFAC|RAPP|RFAC|20200508131015||ADT^A01|517|T|2.3|||AL||44|ASCII\nEVN|A01|20200508131015|||C005^Whittingham^Sylvia^^^Dr^^^DRNBR^D^^^ORGDR|\nPID|1|3735064194^^^SIMULATOR MRN^MRN|3735064194^^^SIMULATOR MRN^MRN~2021051528^^^NHSNBR^NHSNMBR||Kinmonth^Joanna^Chelsea^^Ms^^D||19870624000000|F|||89 Transaction House^Handmaiden Street^Wembley^^FV75 4GJ^GBR^HOME||020 3614 5541^PRN|||||||||C^White - Other^^^||||||||\nPD1|||FAMILY PRACTICE^^12345|\nPV1|1|I|OtherWard^MainRoom^Bed 183^Simulated Hospital^^BED^Main Building^4|28b|||C005^Whittingham^Sylvia^^^Dr^^^DRNBR^D^^^ORGDR|||CAR|||||||||16094728916771313876^^^^visitid||||||||||||||||||||||ARRIVED|||20200508131015||"
},
{
"name": "inputDataType",
"valueString": "Hl7v2"
},
{
"name": "templateCollectionReference",
"valueString": "microsofthealth/fhirconverter:default"
},
{
"name": "rootTemplate",
"valueString": "ADT_A01"
}
]
}
応答のサンプル
{
"resourceType": "Bundle",
"type": "transaction",
"entry": [
{
"fullUrl": "urn:uuid:9d697ec3-48c3-3e17-db6a-29a1765e22c6",
"resource": {
"resourceType": "Patient",
"id": "9d697ec3-48c3-3e17-db6a-29a1765e22c6",
...
...
"request": {
"method": "PUT",
"url": "Location/50becdb5-ff56-56c6-40a1-6d554dca80f0"
}
}
]
}
テンプレートをカスタマイズする
テンプレートは、Visual Studio Code 用の FHIR Converter 拡張機能を使用して、必要に応じてカスタマイズすることができます。 この拡張機能は、対話型の編集エクスペリエンスを提供するものであり、Microsoft が公開しているテンプレートやサンプル データを簡単にダウンロードできるようになっています。 詳細については、拡張機能のドキュメントを参照してください。
注意
Visual Studio Code 用の FHIR コンバーター拡張機能は、HL7v2、C-CDA、JSON Liquid テンプレートで使用できます。 FHIR STU3 から R4 Liquid テンプレートは現在サポートされていません。
テンプレートをホストして使用する
ACR でテンプレートの独自のコピーをホストすることをお勧めします。 独自のテンプレートのコピーをホストし、それらを $convert-data 操作で使用するためには、次の 4 つの手順が必要となります。
- Azure Container Registry にテンプレートをプッシュします。
- Azure API for FHIR インスタンスでマネージド ID を有効にします。
- Azure API for FHIR マネージド ID に ACR のアクセス権を付与します。
- Azure API for FHIR に ACR サーバーを登録します。
- 必要に応じて、セキュリティで保護されたアクセス用に ACR ファイアウォールを構成します。
Azure Container Registry にテンプレートをプッシュする
ACR インスタンスの作成後、FHIR Converter 拡張機能の FHIR Converter:Push Templates コマンドを使用して、カスタマイズしたテンプレートを ACR にプッシュします。 同じことは、Template Management CLI ツールを使用して行うこともできます。
Azure API for FHIR でマネージド ID を有効にする
Azure portalで Azure API for FHIR サービスのインスタンスを参照し、[ID] ブレードを選択します。 Azure API for FHIR でマネージド ID を有効にするには、状態を [オン] に変更します。
Azure API for FHIR に ACR のアクセス権を付与する
[ アクセス制御 (IAM)] ブレードに移動します。
[ 追加] を選択し、[ ロールの割り当ての追加 ] を選択して[ロールの割り当ての追加] ページを開きます。
AcrPull ロールを割り当てます。
Azure portal でロールに割り当てる方法の詳細については Azure 組み込みロールに関するページを参照してください。
Azure API for FHIR に ACR サーバーを登録する
ACR サーバーは、Azure portalまたは CLI を使用して登録できます。
Azure portalを使用した ACR サーバーの登録
Azure API for FHIR インスタンスの [データ変換] の [成果物] ブレードを参照します。 現在登録されている ACR サーバーの一覧が表示されます。 [ 追加] を選択し、ドロップダウン メニューからレジストリ サーバーを選択します。 登録を有効にするには、[ 保存] を選択する必要があります。 変更を適用してインスタンスを再起動するまでに数分かかる場合があります。
CLI を使用した ACR サーバーの登録
Azure API for FHIR には、最大 20 台の ACR サーバーを登録できます。
必要に応じて、Azure PowerShellから Azure Health Data Services CLI をインストールします。
az extension add -n healthcareapis
以下の例に従って、Azure API for FHIR に ACR サーバーを登録します。
1 台の ACR サーバーを登録する
az healthcareapis acr add --login-servers "fhiracr2021.azurecr.io" --resource-group fhir-test --resource-name fhirtest2021
複数台の ACR サーバーを登録する
az healthcareapis acr add --login-servers "fhiracr2021.azurecr.io fhiracr2020.azurecr.io" --resource-group fhir-test --resource-name fhirtest2021
ACR ファイアウォールを構成する
ポータルから Azure ストレージ アカウントの [ネットワーク] を選択します。
[選択されたネットワーク] を選択します。
[ ファイアウォール ] セクションで、[アドレス範囲] ボックスに IP アドレスを 指定します。 インターネットまたはオンプレミスのネットワークからのアクセスを許可する IP 範囲を追加します。
次の表に、Azure API for FHIR サービスがプロビジョニングされている Azure リージョンの IP アドレスを示します。
Azure リージョン | パブリック IP アドレス |
---|---|
オーストラリア東部 | 20.53.47.210 |
ブラジル南部 | 191.238.72.227 |
カナダ中部 | 20.48.197.161 |
インド中部 | 20.192.47.66 |
米国東部 | 20.62.134.242, 20.62.134.244, 20.62.134.245 |
米国東部 2 | 20.62.60.115, 20.62.60.116, 20.62.60.117 |
フランス中部 | 51.138.211.19 |
ドイツ北部 | 51.116.60.240 |
ドイツ中西部 | 20.52.88.224 |
東日本 | 20.191.167.146 |
西日本 | 20.189.228.225 |
韓国中部 | 20.194.75.193 |
米国中北部 | 52.162.111.130, 20.51.0.209 |
北ヨーロッパ | 52.146.137.179 |
カタール中部 | 20.21.36.225 |
南アフリカ北部 | 102.133.220.199 |
米国中南部 | 20.65.134.83 |
東南アジア | 20.195.67.208 |
スウェーデン中部 | 51.12.28.100 |
スイス北部 | 51.107.247.97 |
英国南部 | 51.143.213.211 |
英国西部 | 51.140.210.86 |
米国中西部 | 13.71.199.119 |
西ヨーロッパ | 20.61.103.243, 20.61.103.244 |
米国西部 2 | 20.51.13.80, 20.51.13.84, 20.51.13.85 |
米国西部 3 | 20.150.245.165 |
注意
上記の手順は、FHIR データをエクスポートする方法に関するドキュメントで説明されている構成手順に似ています。 詳細については、「Azure Storage へのセキュリティで保護されたエクスポート」を参照してください。
確認
templateCollectionReference パラメーターにテンプレート参照を指定して $convert-data API を呼び出します。
<RegistryServer>/<imageName>@<imageDigest>
次の手順
この記事では、Azure API for FHIR のデータ変換について説明しました。 関連する GitHub Projects for Azure API for FHIR の詳細については、以下を参照してください。
FHIR® は HL7 の登録商標であり、HL7 の許可を得て使用しています。