Azure Health Data Services のプロファイルに対する FHIR リソースの検証
FHIR® サービスの ストア プロファイル 記事では、FHIR プロファイルの基本と格納について説明しました。 Azure Health Data Services の FHIR サービスを使用すると、プロファイルに対してリソースを検証して、リソースがプロファイルに準拠しているかどうかを確認できます。 この記事では、プロファイルに対してリソースを検証するために $validate
を使用する方法について説明します。
$validate
は、FHIR リソースが基本リソースの要件または指定されたプロファイルに準拠していることを確認できる、Fast Healthcare Interoperability Resources (FHIR) の操作です。 この操作により、FHIR サービス内のデータに予期される属性と値が確実に含まれます。 検証操作の詳細については、 HL7 FHIR 仕様を参照してください。
仕様に従って、モードは作成や更新などの $validate
で指定できます。
create
: FHIR サービスは、プロファイルコンテンツが既存のリソースから一意であり、新しいリソースとして作成可能であることを確認します。update
: プロファイルが、指定された既存のリソースに対する更新であることを確認します (つまり、変更できないフィールドに対する変更は行われません)。
リソースを検証するには、さまざまな方法が用意されています。
- オプション 1: 検証操作を使用して既存のリソースを検証します。
- オプション 2: 検証操作を使用して新しいリソースを検証します。
- オプション 3: ヘッダーを使用してリソース CREATE または UPDATE を検証します。
検証操作を使用して既存または新しいリソースが正常に検証された場合、リソースは FHIR サービスに保持されません。 オプション 3 を使用して、検証済みのリソースを FHIR サービスに正常に永続化します。
FHIR サービスは、$validate操作の検証結果として常に OperationOutcome
を返します。 リソースがエンドポイント$validate渡されると、FHIR サービスは 2 つの手順の検証を行います。 最初の手順は、リソースを解析できるようにするための基本的な検証です。 リソースの解析中に、次の手順に進む前に個々のエラーを修正する必要があります。 リソースが正常に解析されると、完全な検証が 2 番目の手順として実行されます。
Note
検証に使用する値セットは、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 プロファイルに準拠していません。これには、患者識別子の値と性別が必要でした。
プロファイルをパラメーターとして指定する場合は、検証対象のプロファイルの正規 URL を指定できます( heartrate
の HL7 基本プロファイルの例を次に示します)。
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-validation
ヘッダーを使用したCreate/Update
の検証が可能になります。 検証 x-ms-profile-validation
true に設定します。
Note
オープン ソースの FHIR サービスでは、CoreFeatures でサーバー構成設定を変更できます。
{
"FhirServer": {
"CoreFeatures": {
"ProfileValidationOnCreate": true,
"ProfileValidationOnUpdate": false
}
}
厳密な検証を有効にするには、値が strict の 'Prefer: handling' ヘッダーを使用します。 このヘッダーを設定すると、検証警告がエラーとして報告されます。
次のステップ
この記事では、 $validate
を使用してプロファイルに対してリソースを検証する方法について説明しました。 FHIR サービスでサポートされているその他の機能については、以下を参照してください。
Note
FHIR® は HL7 の登録商標であり、HL7 の許可を得て使用しています。