Azure Health Data Services のプロファイルに対して FHIR リソースを検証する

FHIR サービスの記事のストア プロファイルでは、FHIR プロファイルの基本と格納について説明しました。 Azure Health Data Services の FHIR サービス (ここでは FHIR サービスと呼ばれます) を使用すると、プロファイルに対してリソースを検証して、リソースがプロファイルに準拠しているかどうかを確認できます。 この記事では、プロファイルに対してリソースを検証するために を使用 $validate する方法について説明します。

$validate は、FHIR リソースが基本リソース要件または指定されたプロファイルに準拠していることを確認できる Fast Healthcare 相互運用性リソース (FHIR®) の操作です。 この操作により、FHIR サービスのデータに予期される属性と値が確実に含まれます。 検証操作の詳細については、「 HL7 FHIR 仕様」を参照してください。 仕様に従って、作成や更新など、 で $validateMode を指定できます。

  • create: Azure API for FHIR は、プロファイル コンテンツが既存のリソースから一意であり、新しいリソースとして作成することが許容されることを確認します。
  • update: プロファイルが、指定された既存のリソースに対する更新であることを確認します (変更できないフィールドに対する変更は行われません)。

リソースを検証するには、さまざまな方法が用意されています。

  • オプション 1: 検証操作を使用して既存のリソースを検証します。
  • オプション 2: 検証操作を使用して新しいリソースを検証します。
  • オプション 3: ヘッダーを使用してリソース CREATE/UPDATE を検証します。

検証操作を使用して既存または新しいリソースが正常に検証された場合、リソースは FHIR サービスに永続化されません。 オプション 3: ヘッダーを使用してリソース CREATE/UPDATE を検証し、正常に検証されたリソースを FHIR サービスに保持します。

FHIR サービスは常に、$validate操作の検証結果として を返 OperationOutcome します。 FHIR サービスは、リソースがエンドポイントに渡されると、2 つのステップの検証$validate行います。最初の手順は、リソースを解析できるようにするための基本的な検証です。 リソースの解析中に、次の手順に進む前に、個々のエラーを修正する必要があります。 リソースが正常に解析されると、完全な検証が 2 番目の手順として実行されます。

注意

検証に使用する値セットは、FHIR サーバーにアップロードする必要があります。 これには、FHIR 仕様に含まれるすべての値セットと、実装ガイドで定義されている ValueSet が含まれます。 すべてのコードの完全な一覧を含む完全に展開された値セットのみがサポートされます。 外部ソースを参照する ValueSet 定義はサポートされていません。

オプション 1: 既存のリソースを検証する

既存のリソースを検証するには、GET 要求で $validate を使用します。

GET http://<your FHIR service base URL>/{resource}/{resource ID}/$validate

次に例を示します。

GET https://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/Patient/a6e11662-def8-4dde-9ebc-4429e68d130e/$validate

この例では、ベースの Patient リソースに対して既存の Patient リソース a6e11662-def8-4dde-9ebc-4429e68d130e を検証しています。 有効な場合は、次のコード例のような を取得 OperationOutcome します。

{
    "resourceType": "OperationOutcome",
    "issue": [
        {
            "severity": "information",
            "code": "informational",
            "diagnostics": "All OK"
        }
    ]
}

リソースが有効でない場合は、エラー コードと、リソースが無効な理由の詳細を示すエラー メッセージが表示されます。 エラー メッセージを含む例 OperationOutcome が返され、次のコード例のようになります。

{
    "resourceType": "OperationOutcome",
    "issue": [
        {
            "severity": "error",
            "code": "invalid",
            "details": {
                "coding": [
                    {
                        "system": "http://hl7.org/fhir/dotnet-api-operation-outcome",
                        "code": "1028"
                    }
                ],
                "text": "Instance count for 'Patient.identifier.value' is 0, which is not within the specified cardinality of 1..1"
            },
            "location": [
                "Patient.identifier[1]"
            ]
        },
        {
            "severity": "error",
            "code": "invalid",
            "details": {
                "coding": [
                    {
                        "system": "http://hl7.org/fhir/dotnet-api-operation-outcome",
                        "code": "1028"
                    }
                ],
                "text": "Instance count for 'Patient.gender' is 0, which is not within the specified cardinality of 1..1"
            },
            "location": [
                "Patient"
            ]
        }
    ]
}

この例では、リソースが提供された Patient プロファイルに準拠していません。これには、患者識別子の値と性別が必要でした。

プロファイルをパラメーターとして指定する場合は、 の HL7 基本プロファイルの次の例のように、検証対象のプロファイル heartrateの正規 URL を指定できます。

GET https://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/Observation/12345678/$validate?profile=http://hl7.org/fhir/StructureDefinition/heartrate

オプション 2: 新しいリソースの検証

サーバーにアップロードする新しいリソースを検証する場合は、要求を POST 実行できます。

POST http://<your FHIR service base URL>/{Resource}/$validate

次に例を示します。

POST https://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/Patient/$validate

この要求は、最初にリソースを検証します。 要求で指定する新しいリソースは、検証後に作成されます。 サーバーは常に 結果として を OperationOutcome 返します。

オプション 3: ヘッダーを使用してリソース CREATE/UPDATE を検証する

リソース CREATE 上や UPDATEなど、リソースを検証するタイミングを選択できます。 既定では、FHIR サービスはリソース Create/Updateの検証をオプトアウトするように構成されています。 この機能を使用すると、 ヘッダーを使用して x-ms-profile-validationCreate/Update検証できます。 検証の場合は、'x-ms-profile-validation' を true に設定します。

注意

オープンソースの FHIR サービスでは、CoreFeatures でサーバー構成設定を変更できます。

{
   "FhirServer": {
      "CoreFeatures": {
            "ProfileValidationOnCreate": true,
            "ProfileValidationOnUpdate": false
        }
}

厳密な検証を有効にするには、値 strict の 'Prefer: handling' ヘッダーを使用します。 このヘッダーを設定すると、検証警告がエラーとして報告されます。

次のステップ

この記事では、 を使用して $validateプロファイルに対してリソースを検証する方法について説明しました。 FHIR サービスでサポートされているその他の機能については、以下を参照してください。

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