FHIR プロファイルの有効化

このページでは、FHIR ストア内の FHIR 実装ガイドとプロファイルをインポートして有効にする方法について説明します。

概要

FHIR プロファイルは、さまざまな医療システムがリソースを処理する方法を扱う基本 FHIR 仕様を基に定義された一連の追加ルールです。FHIR プロファイルを FHIR ストアにインポートして有効化すると、FHIR ストア内のすべてのリソースが確実にリソース構造と取得した情報の特定条件を満たすようにすることができます。

1 つ以上の実装ガイドにグループ化された 1 つ以上の構造定義を挿入することで、FHIR ストアの FHIR プロファイルをインポートできます。構造定義は、FHIR リソース内のフィールドの制約を定義します。構造定義は、コードシステムと FHIR リソースをリンクする値セットも参照します。実装ガイドでは、これらの構造定義を使用してリソースを検証し、サードパーティ ソフトウェアのユースケースに合致するようにします。

たとえば、サードパーティ ソフトウェアは、CARIN プロファイル に準拠した患者アクセス API を提供することにより、米国のメディケア メディケイド サービス センター(CMS)の相互運用性と患者アクセスの最終ルールを遵守する必要があります。FHIR ストアに CARIN 実装ガイドをインポートして有効化し、CARIN プロファイルに照らしてリソースを検証できます。実装ガイドのインポートと有効化については、このページの後続のセクションで説明します。

実装ガイドをインポートしたら、FHIR ストアでこれを有効にしてリソースを検証できます。リソースが更新またはストアに追加されたら、実装ガイドの構造と一致しているかどうかが確認されます。一致している場合、リソースはストアに追加されます。リソースが実装ガイドの構造定義に対応していない場合、エラー メッセージが表示され、リソースが拒否されます。

データの検証は、次のメソッドを使用した場合に実施されます。

には適用されません。

プロファイル検証のワークフロー

次の図は、FHIR リソースを追加または更新するための検証ワークフローを示しています。

fhir プロファイル

FHIR プロファイルを定義する

次のセクションでは、サードパーティ ソフトウェアから構造定義をダウンロードして、実装ガイドを構成する方法について説明します。

構造定義をダウンロードする

構造定義が信頼できるソースと一致するようにするには、サードパーティ ソフトウェア プロバイダから構造定義、実装ガイド、値セットをダウンロードします。

たとえば、システムが Blue Button の患者プロファイルを使用している場合は、Blue Button で使用する構造定義と実装ガイドをダウンロードできます。

Cloud Healthcare API では、次の構造定義ルールを検証できます。

  • スライス(value 型または pattern 型)
  • 最小値、最大値
  • type
  • fixed
  • パターン
  • 最小値
  • 最大値
  • 最大長
  • バインディング

実装ガイドを構成する

構造定義、実装ガイド、値のセットをダウンロードしたら、実装ガイドが検証するプロファイルを追加する必要があります。

FHIR ストアで使用するように実装ガイドを構成するには、次の手順を行います。

  1. サードパーティ ソフトウェア プロバイダからダウンロードした実装ガイドファイルを開きます。

  2. 次のセクションを追加して、実装ガイドで検証される構造定義を含めます。

    {
        "resourceType": "ImplementationGuide",
        ...
        "global": [
            {
            "type": "RESOURCE_TYPE",
            "profile": "STRUCTURE_DEFINITION_URL"
            }
        ]
        ...
    }
    

    この例では、次のように定義します。

    • type はリソースタイプを定義します。
    • profile は、プロファイルのソース構造の定義にリンクします。
  3. 実装ガイドファイルを保存します。

Cloud Storage に実装ガイドをアップロードする

実装ガイドを編集したら、実装ガイド、構造定義、値のセットを Cloud Storage に追加することで、FHIR ストア内のリソースの検証に使用できます。実装ガイド、構造定義、値のセットを Cloud Storage に追加するには、次のコマンドを実行します。

gsutil cp -r \
   PATH_TO_IMPLEMENTATION_GUIDE \
   gs://BUCKET/IMPLEMENTATION_GUIDE

実装ガイドのインポート

実装ガイドを使用して FHIR ストア内のプロファイルを検証するには、リソースとしてストアにインポートする必要があります。

次のサンプルは、実装ガイドを FHIR ストアにインポートする方法を示しています。

gcloud

実装ガイドをリソースとして FHIR ストアに追加するには、gcloud healthcare fhir-stores import gcs コマンドを実行します。

次のサンプルは、実装ガイドをリソースとして FHIR ストアに追加する方法を示しています。

gcloud healthcare fhir-stores import gcs FHIR_STORE_ID \
  --dataset=DATASET_ID \
  --gcs-uri=gs://BUCKET/DIRECTORY/*

API

curl

実装ガイドをリソースとして FHIR ストアに追加するには、POST リクエストを行い、次の情報を指定します。

  • 親データセットの名前と場所
  • FHIR ストアの名前
  • Cloud Storage バケット内の実装ガイドの場所

次のサンプルは、curl を使用した POST リクエストを示しています。

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    --data '{
      "contentStructure": "RESOURCE_PRETTY",
      "gcsSource": {
        "uri": "gs://BUCKET/DIRECTORY/*"
      }
    }' "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:import"

リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
}

PowerShell

実装ガイドをリソースとして FHIR ストアに追加するには、POST リクエストを行い、次の情報を指定します。

  • 親データセットの名前と場所
  • FHIR ストアの名前
  • Cloud Storage バケット内の実装ガイドの場所

次のサンプルは、Windows PowerShell を使用した POST リクエストを示しています。

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
  -Method Post `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body '{
    "contentStructure": "RESOURCE_PRETTY",
    "gcsSource": {
      "uri": "gs://BUCKET/DIRECTORY/*"
    }
  }' `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:import" | Select-Object -Expand Content

リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
}

実装ガイドの有効化

実装ガイドのリソースを使用してプロファイルを検証するには、検証のための実装ガイドを有効にする必要があります。複数の実装ガイドを有効にした場合、これらのガイドはまとめて適用されます。リソースは、有効化された実装ガイドにある 1 つのプロファイルのみに一致する必要があります。

次のサンプルは、プロファイル検証の実装ガイドを有効にする方法を示しています。

curl

実装ガイドを有効にするには、PATCH リクエストを行い、次の情報を指定します。

  • 親データセットの名前と場所
  • FHIR ストアの名前
  • 実装ガイドリソースへのパスに設定された enabledImplementationGuides フィールド

次のサンプルは、curl を使用した PATCH リクエストを示しています。


curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/fhir+json;charset=utf-8" \
    --data '{
      "validationConfig": {
          "enabledImplementationGuides": ["IMPLEMENTATION_GUIDE_URL"]
      }
    }' "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID?updateMask=validationConfig"

リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID",
  "validationConfig": {
    "enabledImplementationGuides": ["IMPLEMENTATION_GUIDE_URL"],
    "disableProfileValidation": false
  }
}

PowerShell

実装ガイドを有効にするには、PATCH リクエストを行い、次の情報を指定します。

  • 親データセットの名前と場所
  • FHIR ストアの名前
  • 実装ガイドリソースへのパスに設定された enabledImplementationGuides フィールド

次のサンプルは、Windows PowerShell を使用した PATCH リクエストを示しています。

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
  -Method Patch `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body '{
      "validationConfig": {
          "enabledImplementationGuides": ["IMPLEMENTATION_GUIDE_URL"],
          "disableProfileValidation": false
      }
  }' `
  -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID?updateMask=validationConfig" | Select-Object -Expand Content

リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID",
  "validationConfig": {
    "enabledImplementationGuides": ["IMPLEMENTATION_GUIDE_URL"]
    "disableProfileValidation": false
  },
}