Share via


データを 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 つの手順が必要となります。

  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 インスタンスの [データ変換] の [成果物] ブレードを参照します。 現在登録されている 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 の許可を得て使用しています。