データを Azure API for FHIR 用の FHIR に変換する

重要

Azure API for FHIR は、2026 年 9 月 30 日に廃止されます。 移行戦略 に従って、その日までに Azure Health Data Services FHIR サービス に移行します。 Azure API for FHIR が廃止されたため、2025 年 4 月 1 日以降、新しいデプロイは許可されません。 Azure Health Data Services FHIR サービス は、お客様が他の Azure サービスへの統合を使用して、FHIR、DICOM、および MedTech サービスを管理できるようにする、進化したバージョンの Azure API for FHIR です。

FHIR サービスの $convert-data カスタム エンドポイントは、さまざまなデータ型から FHIR へのデータ変換を目的としています。 既定のテンプレートとして FHIR Converter プロジェクトのテンプレートと Liquid テンプレート エンジンが使用されます。 これらの変換テンプレートは必要に応じてカスタマイズすることができます。

現在、$convert-data カスタム エンドポイントでは、次の four 種類のデータ変換がサポートされています。

元のデータ形式 変換先データ形式
C-CDA FHIR
HL7v2 FHIR
JSON FHIR
FHIR STU3 FHIR R4

Note

$convert-data エンドポイントは、未加工の医療データを従来の形式から FHIR 形式に変換するための ETL パイプライン内のコンポーネントとして使用できます。 ただし、それ自体は ETL パイプラインではありません。 FHIR データを FHIR サーバーに永続化する準備での完全なワークフローには、Logic Apps や Azure Data Factory などの ETL エンジンを使用することをお勧めします。 ワークフローには、データの読み取りとインジェスト、データ検証、$convert-data 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 入力のデータ型。 HL7v2CcdaJson, 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")。

Note

FHIR STU3 から R4 のテンプレートは、STU3 リソースと FHIR R4 標準の同等のリソースの間のフィールドの違いのみのマッピングを提供する "diff" Liquid テンプレートです。STU3 リソースの一部は、名前が変更されるか、R4 から削除されます。 STU3 から R4 への変換に関するリソースの違いと制約に関する記事を参照してください。

Note

JSON テンプレートは、使用するためのサンプル テンプレートであり、事前定義された JSON メッセージの種類に準拠する "既定の" テンプレートではありません。 HL7v2 メッセージや C-CDA ドキュメントとは異なり、JSON には標準化されたメッセージ型の種類はありません。 そのため、既定のテンプレートの代わりに、独自にカスタマイズしたテンプレートの開始ガイドとして使用できるサンプル テンプレートがいくつか用意されています。

警告

既定のテンプレートは MIT ライセンスに基づいてリリースされており、Microsoft サポートではサポートされていません

既定のテンプレートは、すぐに開始できるようにするためにのみ用意されています。 これらは、Azure API for FHIR のバージョンを更新するときに更新される可能性があります。 そのため、Azure API for FHIR のさまざまなバージョンにわたって一貫したデータ変換動作を持たせるには、変換動作を確認し、Azure Container Registry で独自のテンプレートのコピーをホストし、それらを Azure API for FHIR に登録して、API 呼び出しで使用する必要があります。

サンプル要求

{
    "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 が公開しているテンプレートやサンプル データを簡単にダウンロードできるようになっています。 詳細については、拡張機能のドキュメントを参照してください。

Note

Visual Studio Code の FHIR Converter 拡張機能は、HL7v2、C-CDA、JSON Liquid テンプレートで使用できます。 FHIR STU3 から R4 の Liquid テンプレートは現在サポートされていません。

テンプレートをホストして使用する

独自のテンプレートのコピーを ACR でホストすることをお勧めします。 独自のテンプレートのコピーをホストし、それらを $convert-data 操作で使用するためには、次の 4 つの手順が必要となります。

  1. Azure Container Registry にテンプレートをプッシュします。
  2. Azure API for FHIR インスタンスでマネージド ID を有効にします。
  3. Azure API for FHIR マネージド ID に ACR のアクセス権を付与します。
  4. Azure API for FHIR に ACR サーバーを登録します。
  5. 必要に応じて、セキュリティで保護されたアクセス用に 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 を有効にするには、状態を [オン] に変更します。

マネージド ID を有効にする画面の画像。

Azure API for FHIR に ACR のアクセス権を付与する

  1. [アクセス制御 (IAM)] ブレードを参照します。

  2. [追加] を選び、次に [ロールの割り当ての追加] を選び、[ロールの割り当ての追加] ページを開きます。

  3. AcrPull ロールを割り当てます。

    [ロールの割り当ての追加] ページの画面の画像。

Azure portal でロールに割り当てる方法の詳細については Azure 組み込みロールに関するページを参照してください。

Azure API for FHIR に ACR サーバーを登録する

ACR サーバーは、Azure portal または CLI を使用して登録できます。

Azure portal を使用した ACR サーバーの登録

Azure API for FHIR インスタンスの [データ変換] の下にある [Artifacts] ブレードを参照します。 現在登録されている 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

Note

上記の手順は、FHIR データをエクスポートする方法に関するドキュメントで説明されている構成手順に似ています。 詳細については、「Azure Storage へのセキュリティで保護されたエクスポート」を参照してください

確認

templateCollectionReference パラメーターにテンプレート参照を指定して $convert-data API を呼び出します。

<RegistryServer>/<imageName>@<imageDigest>

次のステップ

この記事では、Azure API for FHIR のデータ変換について説明しました。 Azure API for FHIR に関連する GitHub プロジェクトの詳細については、次を参照してください

FHIR® は HL7 の登録商標であり、HL7 の許可を得て使用しています。