このページでは、FHIR 標準検索パラメータでカバーされていないフィールドと拡張機能のカスタム検索パラメータをサポートする FHIR ストアの設定法について説明します。
カスタム検索パラメータは次のような多くの状況で有用です。
- FHIR リソース内のフィールドを検索する必要がありますが、このフィールドに対してサポートされている検索パラメータは存在しません。
- FHIR データモデルに追加された拡張機能を検索する必要があります。
概要
デフォルトでは、FHIR 仕様で定義されている標準検索パラメータは、FHIR リソースの検索によってサポートされています。ただし、FHIR 機能ステートメントまたは FHIR 適合性宣言に記載されている検索パラメータは除きます。
1 つ以上のカスタム検索パラメータを作成し、作成したパラメータを search
メソッドを介してクエリでサポートするように FHIR ストアを構成できます。カスタム検索パラメータは、次のような状況で有用です。
- 標準の検索パラメータに含まれていないフィールドを検索する。
- FHIR データモデルの拡張機能を検索する。
FHIR 実装ガイドの多くには、検索で使用する検索パラメータが定義されています。
カスタム検索パラメータは、次のような標準の検索パラメータと高度な FHIR 検索機能を含む、同じ検索動作をサポートしています。
- 修飾キー
_include
と_revinclude
- チェーン検索
_sort
FHIR ストアのカスタム検索を有効にするには、まず、検索動作を定義する SearchParameter
リソースを 1 つ以上作成する必要があります。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/search
URI を有する検索パラメータ用のバージョン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
フィールドは次のいずれかのように定義する必要があります。
number
date
string
token
reference
quantity
uri
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" }