このページでは、FHIR 標準検索パラメータでカバーされていないフィールドと拡張機能のカスタム検索パラメータをサポートする FHIR ストアの設定法について説明します。
カスタム検索パラメータは次のような多くの状況で有用です。
- FHIR リソース内のフィールドを検索する必要がありますが、このフィールドに対してサポートされている検索パラメータは存在しません。
- FHIR データモデルに追加された拡張機能を検索する必要があります。
概要
デフォルトでは、FHIR 仕様で定義されている標準検索パラメータは、FHIR リソースの検索によってサポートされています。ただし、FHIR 機能ステートメントまたは FHIR 適合性宣言に記載されている検索パラメータは除きます。
1 つ以上のカスタム検索パラメータを作成し、作成したパラメータを search メソッドを介してクエリでサポートするように FHIR ストアを構成できます。カスタム検索パラメータは、次のような状況で有用です。
- 標準の検索パラメータに含まれていないフィールドを検索する。
- FHIR データモデルの拡張機能を検索する。
多くの FHIR 実装ガイドでは、検索で使用できる検索パラメータが定義されています。
カスタム検索パラメータは、次のような標準の検索パラメータと高度な FHIR 検索機能を含む、同じ検索動作をサポートしています。
- 修飾キー
_includeと_revinclude- チェーン検索
_sort
FHIR ストアでカスタム検索を有効にするには、まず検索動作を定義する 1 つ以上の SearchParameter リソースを作成する必要があります。SearchParameter は、他のリソースタイプと同じ方法で作成、更新、削除できる標準の FHIR リソースタイプです。ストアに検索パラメータ リソースの作成をご覧ください。
FHIR ストア内の SearchParameter リソースは、configureSearchメソッドを使用して設定すると、有効になります。このメソッドを使用すると、カスタム検索パラメータのリストが有効になります。メソッドを呼び出すたびに、以前のパラメータ リストが置き換えられます。configureSearch に対して長時間実行オペレーションがトリガーされ、新しい検索設定に従って、ストア内の関連するすべてのリソースがインデックスに再登録されます。メソッド呼び出し後に新しく更新されたすべてのリソースは、新しい設定に従ってインデックスに登録されます。すでに設定にないカスタム検索パラメータのインデックス データはすべて削除されます。
configureSearch の使用方法の詳細については、FHIR ストアのカスタム検索パラメータを有効にするをご覧ください。
ストアの CapabilityStatement は fhir.capabilities メソッドを使用して取得され、標準検索パラメータとカスタム検索パラメータの両方を一覧表示します。リソースの検索パラメータは rest.resource.searchParam フィールドにあります。
カスタム FHIR 検索を作成する
FHIR ストアに SearchParameter リソースを作成します。
次のサンプルは、projects.locations.datasets.fhirStores.fhir.create メソッドを使用して、カスタム検索パラメータ リソースを作成する方法を示しています。projects.locations.datasets.fhirStores.import メソッドも使用できます。
検索パラメータの関連フィールドの説明については、SearchParameter のリソース フィールドをご覧ください。
curl
次のサンプルは、curlを使用した POST リクエストを示しています。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ \"resourceType\": \"SearchParameter\", \"url\": \"CANONICAL_URL\", \"base\": [\"RESOURCE_TYPE\"], \"code\": \"SEARCH_PARAMETER_CODE\", \"name\": \"SEARCH_PARAMETER_NAME\", \"type\": \"SEARCH_PARAMETER_TYPE\", \"expression\": \"SEARCH_PARAMETER_EXPRESSION\", \"status\": \"active\", \"description\": \"SEARCH_PARAMETER_DESCRIPTION\" }" \ "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/SearchParameter"
リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。
{
"resourceType": "SearchParameter",
"url": "CANONICAL_URL",
"base": ["RESOURCE_TYPE"],
"code": "SEARCH_PARAMETER_CODE",
"name": "SEARCH_PARAMETER_NAME",
"type": "SEARCH_PARAMETER_TYPE",
"expression": "SEARCH_PARAMETER_EXPRESSION",
"status": "active",
"description": "SEARCH_PARAMETER_DESCRIPTION",
"meta": {
"lastUpdated": "LAST_UPDATED",
"versionId": "VERSION_ID"
},
}
PowerShell
次のサンプルは、Windows PowerShell を使用した POST リクエストを示しています。
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } $SearchParameter = '{ "resourceType": "SearchParameter", "url": "CANONICAL_URL", "base": ["RESOURCE_TYPE"], "code": "SEARCH_PARAMETER_CODE", "name": "SEARCH_PARAMETER_NAME", "type": "SEARCH_PARAMETER_TYPE", "expression": "SEARCH_PARAMETER_EXPRESSION", "status": "active", "description": "SEARCH_PARAMETER_DESCRIPTION" }' Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $SearchParameter ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/SearchParameter" | ConvertTo-Json
リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。
{
"resourceType": "SearchParameter",
"url": "CANONICAL_URL",
"base": ["RESOURCE_TYPE"],
"code": "SEARCH_PARAMETER_CODE",
"name": "SEARCH_PARAMETER_NAME",
"type": "SEARCH_PARAMETER_TYPE",
"expression": "SEARCH_PARAMETER_EXPRESSION",
"status": "active",
"description": "SEARCH_PARAMETER_DESCRIPTION",
"meta": {
"lastUpdated": "LAST_UPDATED",
"versionId": "VERSION_ID"
},
}
FHIR ストアのカスタム検索パラメータを有効にする
FHIR ストアに対して 1 つ以上のカスタム検索パラメータを有効にするには、[store base URL]:configureSearchメソッドにPOSTリクエストを行い、有効にする各検索パラメータに対して正規 URL を指定します。
正規 URL は、次のいずれかの形式で指定できます。
uri: その URI のストアで使用可能な最大のversionを選択uri|version: 特定のバージョンを選択
たとえば、http://example.com/searchURI を有する検索パラメータ用のバージョン1.0.0と1.0.1がストアに含まれる場合、正規 URL http://example.com/search|1.0.0によって、1.0.0バージョンが選択されます。正規 URL http://example.com/search では 1.0.1 バージョンが選択されます。
このメソッドに提供された URL のリストによって、以前の設定は置き換えられ、以前に有効だったカスタム検索パラメータは削除されます。構成は、configureSearch が呼び出された時点で存在していた SearchParameter リソースの内容に基づいてキャッシュに保存されます。そして、configureSearch が再度呼び出されるまで、SearchParameter リソースが更新されても削除されても、構成は更新されません。
[store base URL]:configureSearch メソッドの呼び出しが成功すると、戻り値は長時間実行オペレーションの名前になり、新しい構成に従ってストア内のリソースを再インデックス登録します。operations.get メソッドを使用して、長時間実行オペレーションのステータスを表示できます。また、operations.cancel メソッドを使用して、そのオペレーションをキャンセルできます。ステータスには、正常に再インデックス化されたリソースの数を示すカウンターが含まれます。
ストア内の検索は通常、長時間実行されるオペレーションの実行中に引き続き機能します。例外として、このオペレーションによって追加または変更されたカスタム検索パラメータは、部分的な結果を返します。操作をキャンセルしても安全ですが、カスタム検索パラメータのインデックスが部分的に作成されます。新たに追加または変更されたパラメータを使用して検索する前に、インデックス登録オペレーション全体を正常に完了することが重要です。
エラーがある場合は、Cloud Logging に表示されます。
configureSearch メソッドをオプション "validate_only": true とともに使用して、ストア設定の変更やデータの再インデックス登録を行わずに、指定した検索パラメータを検証することもできます。
次のサンプルでは、projects.locations.datasets.fhirStores.configureSearch メソッドを使用して FHIR ストアの 1 つ以上のカスタム検索パラメータを有効にする方法が示されます。
curl
次のサンプルは、curlを使用した POST リクエストを示しています。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ \"canonicalUrls\": [\"CANONICAL_URL1\",\"CANONICAL_URL2\"], }" \ "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:configureSearch"
リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。
{
"name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
}
レスポンスにはオペレーション名が含まれています。オペレーションのステータスを追跡するには、オペレーションの get メソッドを使用します。
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
長時間実行オペレーションがまだ実行中の場合、サーバーは、インデックス再作成保留中の FHIR リソースの数を JSON 形式で返します。
{
"name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata",
"apiMethodName": "google.cloud.healthcare.v1beta1.fhir.FhirStoreService.ConfigureSearch",
"createTime": "CREATE_TIME",
"logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL",
"counter": {
"pending": "PENDING_COUNT"
}
}
}
LRO が終了すると、サーバーはオペレーションのステータスを含む JSON 形式のレスポンスを返します。
{
"name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
"apiMethodName": "google.cloud.healthcare.v1.fhir.FhirService.configureSearch",
"createTime": "CREATE_TIME",
"endTime": "END_TIME",
"logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL",
"counter": {
"success": "SUCCESS_COUNT"
}
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.protobuf.Empty",
}
}
LRO が成功した場合、レスポンスには、正常に再インデックス付けされた FHIR リソースの数と google.protobuf.Empty レスポンス タイプが含まれます。
PowerShell
次のサンプルは、Windows PowerShell を使用した POST リクエストを示しています。
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } $configureSearch = '{ "canonical_urls": [ "CANONICAL_URL1", "CANONICAL_URL2" ] }' Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $configureSearch ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:configureSearch"
リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。
{
"name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
}
レスポンスにはオペレーション名が含まれています。オペレーションのステータスを追跡するには、オペレーションの get メソッドを使用します。
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
長時間実行オペレーションがまだ実行中の場合、サーバーは、インデックス再作成保留中の FHIR リソースの数を JSON 形式で返します。
{
"name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata",
"apiMethodName": "google.cloud.healthcare.v1beta1.fhir.FhirStoreService.ConfigureSearch",
"createTime": "CREATE_TIME",
"logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL",
"counter": {
"pending": "PENDING_COUNT"
}
}
}
LRO が終了すると、サーバーはオペレーションのステータスを含む JSON 形式のレスポンスを返します。
{
"name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
"apiMethodName": "google.cloud.healthcare.v1.fhir.FhirService.configureSearch",
"createTime": "CREATE_TIME",
"endTime": "END_TIME",
"logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL",
"counter": {
"success": "SUCCESS_COUNT"
}
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.protobuf.Empty",
}
}
LRO が成功した場合、レスポンスには、正常に再インデックス付けされた FHIR リソースの数と google.protobuf.Empty レスポンス タイプが含まれます。
カスタム検索でリソースを検索する
他の検索と同じ方法で、カスタム SearchParameter を使用して検索できます。検索パラメータリソースの code 値を検索クエリの key として使用します。詳細については、FHIR リソースの検索をご覧ください。
SearchParameter のリソース フィールド
以降のセクションでは、カスタム検索に関連する SearchParameter リソースのフィールドについて説明します。これらのフィールドは、FHIR の STU3 バージョンと R4 バージョンの両方で使用できます。
uri と version
uri フィールド(必須)と version フィールド(省略可)は、SearchParameter リソースの正規 URL を定義します。uri と version の組み合わせは、FHIR ストア内で一意である必要があります。
正規 URL によって、configureSearch 呼び出しで使用される URL が定義されます。
name、description、status
name、description、status の各フィールドは必須ですが、機能的効果はありません。
base
base フィールドには、この検索が適用される FHIR リソースタイプが一覧表示されます。
複数のタイプがある場合、expression フィールドには各タイプの句が必要です。2 つのタイプに 1 つのパラメータを定義する場合でも、各タイプに 1 つのパラメータを定義する場合でも、違いはありません。複数のリソースタイプに 1 つのパラメータを定義すると、定義がよりコンパクトになります。
code
code フィールドでは、FHIR 検索クエリで使用するキーが定義されます。たとえば、code が payment-type として定義され、base が Claim として定義されている場合、このパラメータを使用する検索クエリは Claim?payment-type=ABC になります。
code フィールドには、同じリソースタイプで、他の標準またはカスタム検索パラメータと同じ値を指定することはできません。標準の検索パラメータでは、カスタム検索パラメータを使用して再定義または変更することはできません。configureSearch メソッドでは、重複する検索パラメータは拒否されます。
code フィールドの値は、次の要件を満たす必要があります。
- 先頭は英字にしてください
- 64 文字までにしてください。
- 次の構成要素のみを使用できます。
- 英数字
- ハイフン文字
- - アンダースコア文字
_
code フィールドの FHIR 標準規則では、小文字とダッシュが使用されます。
type
type フィールドでは、検索パラメータのタイプが定義されます。検索パラメータのタイプによって、FHIR 検索の仕様に定義されたとおりに、検索条件のセマンティクスが決まります。この値 type は、expression フィールドで指定されたフィールドのデータタイプとの互換性が必要です。そうでない場合、configureSearch ではカスタム検索パラメータが拒否されます。
type フィールドは次のいずれかのように定義する必要があります。
numberdatestringtokenreferencequantityuri
composite タイプと special タイプはサポートされていません。
expression
expression フィールドでは、検索パラメータによってクエリが実行されるフィールドまたは拡張機能が定義されます。このフィールドで使用できるのは、FHIRPath の構文と関数のセットに限定されています。
フィールドの構文
expression フィールドは、リソースタイプで始まり、Patient.contact.name.given などの . で区切られた 1 つ以上のフィールドが続くパスとして定義されます。FHIR データのフィールド構造に関しては、FHIR リソースと FHIR データタイプをご覧ください。
複数の句
expression フィールドには、| で区切られた複数の句を含めることができます。この場合、句のいずれかがリソースに一致すると、検索パラメータが一致します。たとえば、式 Patient.name.given | Patient.name.family を含む検索パラメータは、これらの 2 つのフィールドのいずれかに一致します。base で複数のリソースタイプが指定されている場合は、複数の句を使用します。たとえば、Patient と Practitioner の両方に適用される検索パラメータの場合は Patient.name.given | Practitioner.name.given。
.as([data type])
フィールドに潜在的な複数のデータタイプがある場合は、関数 .as([data type]) を使用します。たとえば、Observation.value フィールドには Quantity や String など、多くのさまざまなタイプを含めることができ、それらはさまざまな詮索タイプと連携します。Observation.value.as(Quantity) または Observation.value.as(String) を使用してこれらの検索タイプを選択できます。
拡張機能の選択
.extension([canonical url]) 関数を使用して拡張機能を選択できます。拡張機能には、任意のデータ型を含めることができる value フィールドが含まれているため、フルパスは .extension([canonical url]).value.as([data type]) として定義されます。複雑な拡張機能では、複数の .extension() コンポーネントを使用できます(例: Patient.extension('http://hl7.org/fhir/StructureDefinition/patient-citizenship').extension('code').value.as(CodeableConcept))。
.extension.where(url='[canonical url]') 関数を使用して拡張機能を選択することもできます。where() 関数が許可されるのは、このコンテキストのみです。
他の FHIRPath 関数はサポートされていません。
target
type フィールドが reference として定義されている場合、target フィールドには、この参照検索のターゲットにできるリソースタイプを定義する 1 つ以上の FHIR リソースタイプを含める必要があります。
たとえば、Patient.generalPractitioner フィールドで Practitioner、PractitionerRole、Organization への参照が許可されている場合、検索パラメータは Practitioner、PractitionerRole、または Organization への参照と一致させることができます。すべての参照のターゲット タイプと一致するように、target フィールドにすべてのタイプを含めます。
modifier、comparator、multipleOr、multipleAnd、chain
フィールド modifier、comparator、multipleOr、multipleAnd、chain は無視されます。カスタム検索パラメータで使用できるオプションと機能は、同じタイプの標準検索パラメータで FHIR ストアがサポートするオプションと機能と同じです。
実装ガイドの検索パラメータを使用する
FHIR 実装ガイドから取得した検索パラメータを実装する場合は、次のいずれかのメソッドを使用して、SearchParameter リソースを実装ガイドの JSON ファイルから FHIR ストアにインポートします。
場合によっては、Cloud Healthcare API の公開検索パラメータを変換してサポートする必要があります。検索パラメータが変換されない場合、configureSearch メソッドはそれらを拒否します。実装ガイドの検索パラメータには次の制約が適用されます。
検索パラメータが基本 FHIR 仕様のパラメータと同一である場合、
configureSearchメソッドによって、重複する検索パラメータは拒否されます。configureSearchを呼び出すときは、このような重複を省略します。詳細については、codeをご覧ください。検索パラメータに
xpath式のみが含まれる場合は、その式を同等の FHIRPath 式に変換し、expressionフィールドで使用します。詳細については、expressionをご覧ください。compositeとspecialの検索パラメータ タイプはサポートされていません。代替の型キャスト構文
([field] as [data type])はサポートされていません。サポートされている同等の[field].as([data type])に変換します。詳細については、.as([data type])をご覧ください。参照されるリソースのタイプを制限する
[reference field].where(resolve() is [resource type])規則はサポートされていません。where()句を削除し、参照されるリソースタイプをSearchParameter.targetフィールドに格納します。詳細については、targetをご覧ください。一部の実装ガイドでは、Cloud Healthcare API の FHIR ストアに必要なパス コンポーネントの一部を省略した拡張機能の式を使用しています。たとえば、
Patient.extension('url')はPatient.extension('url').value.as([data type])に変更し、Patient.extension('url').extension.valueはPatient.extension('url').extension('url2').value.as([data type])に変更する必要があります。
例
カスタム検索を使用して拡張機能フィールドを検索する
次の手順では、患者リソースの mothersMaidenName 拡張機能内でテキストを検索する例を説明します。
サンプルの患者リソースを作成する:
curl
次のサンプルは、
curlを使用してPOSTリクエストを実行し、患者リソースを作成する方法を示しています。この患者リソースでは、mothersMaidenName拡張子がMarcaに設定されています。curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ \"name\": [ { \"use\": \"official\", \"family\": \"Smith\", \"given\": [ \"Darcy\" ] } ], \"gender\": \"female\", \"birthDate\": \"1970-01-01\", \"resourceType\": \"Patient\", \"extension\": [ { \"url\": \"http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName\", \"valueString\": \"Marca\" } ] }" \ "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"
リクエストが成功すると、サーバーは JSON 形式の次のサンプルのようなレスポンスを返します。
{ "birthDate": "1970-01-01", "gender": "female", "id": "PATIENT_ID", "meta": { "lastUpdated": "2020-01-01T00:00:00+00:00", "versionId": "VERSION_ID" }, "name": [ { "family": "Smith", "given": [ "Darcy" ], "use": "official" } ], "resourceType": "Patient" "extension": [ { "url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName", "valueString": "Marca" } ] }PowerShell
次のサンプルは、Windows PowerShell を使用して
POSTリクエストを実行し、患者リソースを作成する方法を示しています。この患者リソースでは、mothersMaidenName拡張子がMarcaに設定されています。$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } $Patient = '{ "name": [ { "use": "official", "family": "Smith", "given": [ "Darcy" ] } ], "gender": "female", "birthDate": "1970-01-01", "resourceType": "Patient", "extension": [ { "url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName", "valueString": "Marca" } ] }' Invoke-RestMethod ` -Method Post ` -Headers $headers ` -ContentType: "application/fhir+json; charset=utf-8" ` -Body $Patient ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient" | ConvertTo-Json
リクエストが成功すると、サーバーは JSON 形式の次のサンプルのようなレスポンスを返します。
{ "birthDate": "1970-01-01", "gender": "female", "id": "PATIENT_ID", "meta": { "lastUpdated": "2020-01-01T00:00:00+00:00", "versionId": "VERSION_ID" }, "name": [ { "family": "Smith", "given": [ "Darcy" ], "use": "official" } ], "resourceType": "Patient" "extension": [ { "url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName", "valueString": "Marca" } ] }カスタム検索パラメータ リソースを作成する
curl
次の例は、
curlを使用してPOSTリクエストを実行し、mothersMaidenName拡張機能のカスタム検索パラメータ リソースを作成する方法を示しています。curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ \"resourceType\": \"SearchParameter\", \"url\": \"http://example.com/SearchParameter/patient-mothersMaidenName\", \"base\": [\"Patient\"], \"code\": \"mothers-maiden-name\", \"name\": \"mothers-maiden-name\", \"type\": \"string\", \"expression\": \"Patient.extension('http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName').value.as(String)\", \"status\": \"active\", \"description\": \"search on mother's maiden name\" }" \ "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/SearchParameter"
リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。
{
"resourceType": "SearchParameter",
"url": "http://example.com/SearchParameter/patient-mothersMaidenName",
"base": ["Patient"],
"code": "mothers-maiden-name",
"name": "mothers-maiden-name",
"type": "string",
"expression": "Patient.extension('http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName').value.as(String)",
"status": "active",
"description": "search on mother's maiden name",
"meta": {
"lastUpdated": "2020-01-01T00:00:00+00:00",
"versionId": "VERSION_ID"
},
}PowerShell
次の例は、Windows PowerShell を使用して `POST` リクエストを実行し、`mothersMaidenName` 拡張子のカスタム検索パラメータ リソースを作成する方法を示しています。$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } $SearchParameter = '{ "resourceType": "SearchParameter", "url": "http://example.com/SearchParameter/patient-mothersMaidenName", "base": ["Patient"], "code": "mothers-maiden-name", "name": "mothers-maiden-name", "type": "string", "expression": "Patient.extension(''http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName'').value.as(String)", "status": "active", "description": "search on mother''s maiden name" }' Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $SearchParameter ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/SearchParameter"
リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。
{
"resourceType": "SearchParameter",
"url": "http://example.com/SearchParameter/patient-mothersMaidenName",
"base": ["Patient"],
"code": "mothers-maiden-name",
"name": "mothers-maiden-name",
"type": "string",
"expression": "Patient.extension('http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName').value.as(String)",
"status": "active",
"description": "search on mother's maiden name",
"meta": {
"lastUpdated": "2020-01-01T00:00:00+00:00",
"versionId": "VERSION_ID"
},
}expressionフィールドで別のデータ型をターゲットにするには、関数.as([data type])を使用します。たとえば、ブール値の検索式を指定するには、.value.as(Boolean)を使用します。詳細については、.as([data type])をご覧ください。検索パラメータを有効にする:
curl
カスタム検索パラメータを有効にするには、
POSTリクエストを作成し、有効にする各検索パラメータの正規 URL を指定します。次のサンプルは、
curlを使用したPOSTリクエストを示しています。curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ \"canonicalUrls\": [\"http://example.com/SearchParameter/patient-mothersMaidenName\"], }" \ "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:configureSearch"
リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }PowerShell
カスタム検索パラメータを有効にするには、
POSTリクエストを作成し、有効にする各検索パラメータの正規 URL を指定します。次のサンプルは、Windows PowerShell を使用した
POSTリクエストを示しています。$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } $configureSearch = '{ "canonicalUrls": "http://example.com/SearchParameter/patient-mothersMaidenName" }' ` Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $configureSearch ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:configureSearch"
リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }カスタム検索パラメータを使用して検索する
curl
次のサンプルは、
curlを使用してGETリクエストを実行し、mothersMaidenName拡張子の文字列Marcaの患者リソースを検索する方法を示しています。curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?mothers-maiden-name:exact=Marca"
リクエストが成功すると、サーバーはレスポンスを JSON 形式の FHIR
Bundleとして返します。Bundle.typeはsearchsetで、検索結果はBundle.entry配列のエントリです。この例では、リクエストはそのリソース内のデータを含む単一の患者リソースを返します。{ "entry": [ { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID", "resource": { "birthDate": "1970-01-01", "gender": "female", "id": "PATIENT_ID", "meta": { "lastUpdated": "LAST_UPDATED", "versionId": "VERSION_ID" }, "name": [ { "family": "Smith", "given": [ "Darcy" ], "use": "official" } ], "resourceType": "Patient" "extension": [ { "url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName", "valueString": "Marca" } ] }, "search": { "mode": "match" } } ], "link": [ { "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?family%3Aexact=Smith" } ], "resourceType": "Bundle", "total": 1, "type": "searchset" }PowerShell
以下のサンプルは、Windows PowerShell を使用して `GET` リクエストを実行し、`mothersMaidenName` 拡張子の `Marca` という文字列の患者リソースを検索する方法を説明します。$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-RestMethod ` -Method Get ` -Headers $headers ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?mothers-maiden-name:exact=Marca" | ConvertTo-Json
リクエストが成功すると、サーバーはレスポンスを JSON 形式の FHIR
Bundleとして返します。Bundle.typeはsearchsetで、検索結果はBundle.entry配列のエントリです。この例では、リクエストはそのリソース内のデータを含む単一の患者リソースを返します。{ "entry": [ { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID", "resource": { "birthDate": "1970-01-01", "gender": "female", "id": "PATIENT_ID", "meta": { "lastUpdated": "LAST_UPDATED", "versionId": "VERSION_ID" }, "name": [ { "family": "Smith", "given": [ "Darcy" ], "use": "official" } ], "resourceType": "Patient" "extension": [ { "url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName", "valueString": "Marca" } ] }, "search": { "mode": "match" } } ], "link": [ { "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?family%3Aexact=Smith" } ], "resourceType": "Bundle", "total": 1, "type": "searchset" }
カスタム検索を使用して 2 段階の拡張機能フィールドを検索する
次の手順では、Patient リソースの us-core-ethnicity 拡張機能内でコードを検索する方法を示します。
サンプルの患者リソースを作成する:
curl
次のサンプルは、
curlを使用してPOSTリクエストを実行し、患者リソースを作成する方法を示しています。この患者リソースでは、us-core-ethnicity拡張子が設定されています。curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ \"name\": [ { \"use\": \"official\", \"family\": \"Smith\", \"given\": [ \"Darcy\" ] } ], \"gender\": \"female\", \"birthDate\": \"1970-01-01\", \"resourceType\": \"Patient\", \"extension\": [ { \"url\": \"http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity\", \"extension\": [ { \"url\" : \"ombCategory\", \"valueCoding\" : { \"system\" : \"urn:oid:2.16.840.1.113883.6.238\", \"code\" : \"2028-9\", \"display\" : \"Asian\" } } ] } ] }" \ "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"
リクエストが成功すると、サーバーは JSON 形式の次のサンプルのようなレスポンスを返します。
{ "birthDate": "1970-01-01", "gender": "female", "id": "PATIENT_ID", "meta": { "lastUpdated": "2020-01-01T00:00:00+00:00", "versionId": "VERSION_ID" }, "name": [ { "family": "Smith", "given": [ "Darcy" ], "use": "official" } ], "resourceType": "Patient" "extension": [ { "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity", "extension": [ { "url" : "ombCategory", "valueCoding" : { "system" : "urn:oid:2.16.840.1.113883.6.238", "code" : "2028-9", "display" : "Asian" } } ] } ] }PowerShell
次のサンプルは、Windows PowerShell を使用して
POSTリクエストを実行し、患者リソースを作成する方法を示しています。この患者リソースでは、us-core-ethnicity拡張子が設定されています。$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } $Patient = '{ "name": [ { "use": "official", "family": "Smith", "given": [ "Darcy" ] } ], "gender": "female", "birthDate": "1970-01-01", "resourceType": "Patient", "extension": [ { "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity", "extension": [ { "url" : "ombCategory", "valueCoding" : { "system" : "urn:oid:2.16.840.1.113883.6.238", "code" : "2028-9", "display" : "Asian" } } ] } ] }' Invoke-RestMethod ` -Method Post ` -Headers $headers ` -ContentType: "application/fhir+json; charset=utf-8" ` -Body $Patient ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient" | ConvertTo-Json
リクエストが成功すると、サーバーは JSON 形式の次のサンプルのようなレスポンスを返します。
{ "birthDate": "1970-01-01", "gender": "female", "id": "PATIENT_ID", "meta": { "lastUpdated": "2020-01-01T00:00:00+00:00", "versionId": "VERSION_ID" }, "name": [ { "family": "Smith", "given": [ "Darcy" ], "use": "official" } ], "resourceType": "Patient" "extension": [ { "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity", "extension": [ { "url" : "ombCategory", "valueCoding" : { "system" : "urn:oid:2.16.840.1.113883.6.238", "code" : "2028-9", "display" : "Asian" } } ] } ] }カスタム検索パラメータ リソースを作成する
curl
次の例は、curlを使用してPOSTリクエストを実行し、us-core-ethnicity拡張機能のカスタム検索パラメータ リソースを作成する方法を示しています。curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ \"resourceType\": \"SearchParameter\", \"url\": \"http://example.com/SearchParameter/patient-us-core-ethnicity\", \"base\": [\"Patient\"], \"code\": \"ethnicity\", \"name\": \"ethnicity\", \"type\": \"token\", \"expression\": \"Patient.extension('http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity').extension('ombCategory').value.as(Coding)\", \"status\": \"active\", \"description\": \"search on the ombCategory of a patient.\" }" \ "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/SearchParameter"
リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。
{ "resourceType": "SearchParameter", "url": "http://example.com/SearchParameter/patient-us-core-ethnicity", "base": ["Patient"], "code": "ethnicity", "name": "ethnicity", "type": "token", "expression": "Patient.extension('http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity').extension('ombCategory').value.as(Coding)", "status": "active", "description": "search on the ombCategory of a patient.", "meta": { "lastUpdated": "2020-01-01T00:00:00+00:00", "versionId": "VERSION_ID" }, }PowerShell
次の例は、Windows PowerShell を使用して `POST` リクエストを実行し、`mothersMaidenName` 拡張子のカスタム検索パラメータ リソースを作成する方法を示しています。$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } $SearchParameter = '{ "resourceType": "SearchParameter", "url": "http://example.com/SearchParameter/patient-us-core-ethnicity", "base": ["Patient"], "code": "ethnicity", "name": "ethnicity", "type": "token", "expression": "Patient.extension(''http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity'').extension(''ombCategory'').value.as(Coding)", "status": "active", "description": "search on the ombCategory of a patient." }' Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $SearchParameter ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/SearchParameter"
リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。
{ "resourceType": "SearchParameter", "url": "http://example.com/SearchParameter/patient-us-core-ethnicity", "base": ["Patient"], "code": "ethnicity", "name": "ethnicity", "type": "token", "expression": "Patient.extension('http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity').extension('ombCategory').value.as(Coding)", "status": "active", "description": "search on the ombCategory of a patient.", "meta": { "lastUpdated": "2020-01-01T00:00:00+00:00", "versionId": "VERSION_ID" }, }検索パラメータを有効にする:
curl
カスタム検索パラメータを有効にするには、
POSTリクエストを作成し、有効にする各検索パラメータの正規 URL を指定します。次のサンプルは、
curlを使用したPOSTリクエストを示しています。curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ \"canonicalUrls\": [\"http://example.com/SearchParameter/patient-us-core-ethnicity\"], }" \ "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:configureSearch"
リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }PowerShell
カスタム検索パラメータを有効にするには、
POSTリクエストを作成し、有効にする各検索パラメータの正規 URL を指定します。次のサンプルは、Windows PowerShell を使用した
POSTリクエストを示しています。$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } $configureSearch = '{ "canonicalUrls": "http://example.com/SearchParameter/patient-us-core-ethnicity" }' ` Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $configureSearch ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:configureSearch"
リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }カスタム検索パラメータを使用して検索する
curl
次のサンプルは、
curlを使用してGETリクエストを実行し、us-core-ethnicity拡張子のコードurn:oid:2.16.840.1.113883.6.238|2028-9の患者リソースを検索する方法を示しています。curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?ethnicity=urn:oid:2.16.840.1.113883.6.238|2028-9"
リクエストが成功すると、サーバーはレスポンスを JSON 形式の FHIR
Bundleとして返します。Bundle.typeはsearchsetで、検索結果はBundle.entry配列のエントリです。この例では、リクエストはそのリソース内のデータを含む単一の患者リソースを返します。{ "entry": [ { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID", "resource": { "birthDate": "1970-01-01", "gender": "female", "id": "PATIENT_ID", "meta": { "lastUpdated": "LAST_UPDATED", "versionId": "VERSION_ID" }, "name": [ { "family": "Smith", "given": [ "Darcy" ], "use": "official" } ], "resourceType": "Patient" "extension": [ { "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity", "extension": [ { "url" : "ombCategory", "valueCoding" : { "system" : "urn:oid:2.16.840.1.113883.6.238", "code" : "2028-9", "display" : "Asian" } } ] } ] }, "search": { "mode": "match" } } ], "link": [ { "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?ethnicity=urn:oid:2.16.840.1.113883.6.238|2028-9" } ], "resourceType": "Bundle", "total": 1, "type": "searchset" }PowerShell
次のサンプルは、Windows PowerShell を使用して `GET` リクエストを実行し、`us-core-ethnicity` 拡張子のコード `urn:oid:2.16.840.1.113883.6.238|2028-9` の患者リソースを検索する方法を示しています。$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-RestMethod ` -Method Get ` -Headers $headers ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?ethnicity=urn:oid:2.16.840.1.113883.6.238|2028-9 | ConvertTo-Json
リクエストが成功すると、サーバーはレスポンスを JSON 形式の FHIR
Bundleとして返します。Bundle.typeはsearchsetで、検索結果はBundle.entry配列のエントリです。この例では、リクエストはそのリソース内のデータを含む単一の患者リソースを返します。{ "entry": [ { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID", "resource": { "birthDate": "1970-01-01", "gender": "female", "id": "PATIENT_ID", "meta": { "lastUpdated": "LAST_UPDATED", "versionId": "VERSION_ID" }, "name": [ { "family": "Smith", "given": [ "Darcy" ], "use": "official" } ], "resourceType": "Patient" "extension": [ { "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity", "extension": [ { "url" : "ombCategory", "valueCoding" : { "system" : "urn:oid:2.16.840.1.113883.6.238", "code" : "2028-9", "display" : "Asian" } } ] } ] }, "search": { "mode": "match" } } ], "link": [ { "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?ethnicity=urn:oid:2.16.840.1.113883.6.238|2028-9" } ], "resourceType": "Bundle", "total": 1, "type": "searchset" }