このページでは、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/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" }