本页面介绍了如何使用通过 projects.locations.datasets.fhirStores.fhir.search 方法提供的更高级查询功能来搜索 FHIR 资源。本指南假定您已熟悉搜索 FHIR 资源的内容。
示例 FHIR 软件包
本页面上的示例使用提供的 JSON FHIR 软件包来展示高级 FHIR 搜索功能的结果。请将 r4_bundle.json 文件保存到您的机器,以用于示例。
执行示例 FHIR 软件包
要在 FHIR 存储区中执行示例 FHIR 软件包,请参阅执行软件包。FHIR 存储区必须具有以下设置:
- 将
enableUpdateCreate设置为true。 - 将
version设置为 R4。
字符串搜索修饰符
字符串搜索默认为不区分大小写和重音符号(通过折叠到标准 Unicode NFC 形式)的前缀匹配。忽略标点符号和多余的空格。
您可以使用以下修饰符:
:contains匹配字符串中任意位置具有指定值的资源,例如name:contains=eve匹配Evelyn和Severine。:exact匹配整个字符串(包括大小写和重音符号),例如name:exact=Eve不匹配eve或Evelyn。
展开以下部分查看使用搜索字符串修饰符的示例:
字符串搜索修饰符示例
REST
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的 Google Cloud 项目 ID
- LOCATION:父级数据集的位置
- DATASET_ID:FHIR 存储区的父数据集
- FHIR_STORE_ID:FHIR 存储区 ID
如需发送请求,请选择以下方式之一:
curl
以下示例使用
Patient?name:contains=eve 查询。
执行以下命令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?name:contains=eve"
PowerShell
以下示例使用
Patient?name:contains=eve 查询。
执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?name:contains=eve" | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
{
"entry": [
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient2",
"resource": {
"active": false,
"address": [
{
"city": "Mountain View",
"district": "KW",
"line": [
"1800 Amphibious Blvd"
],
"period": {
"start": "2000-01-01"
},
"text": "1800 Amphibious Blvd",
"type": "both",
"use": "home"
}
],
"birthDate": "1989-03-11",
"communication": [
{
"language": {
"coding": [
{
"code": "FR",
"display": "jkl",
"system": "123"
},
{
"code": "french",
"display": "mno",
"system": "456"
}
],
"text": "pqr"
}
}
],
"deceasedBoolean": false,
"gender": "female",
"id": "patient2",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"tag": [
{
"code": "tag2",
"display": "Tag Two",
"system": "tag-system"
},
{
"code": "tag|tag3",
"display": "Tag Three",
"system": "other"
}
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"name": [
{
"family": "Lee",
"given": [
"Jane",
"Evelyne"
],
"use": "usual"
}
],
"resourceType": "Patient",
"telecom": [
{
"rank": 1,
"system": "phone",
"use": "home",
"value": "0982344522"
},
{
"rank": 2,
"system": "email",
"use": "home",
"value": "jane@example.com"
}
]
},
"search": {
"mode": "match"
}
},
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient1",
"resource": {
"active": false,
"address": [
{
"city": "Mountain View",
"district": "KW",
"line": [
"1800 Amphibious Blvd"
],
"period": {
"start": "1974-12-25"
},
"text": "1800 Amphibious Blvd",
"type": "both",
"use": "home"
}
],
"birthDate": "1974-12-25",
"communication": [
{
"language": {
"coding": [
{
"code": "ENG",
"display": "def",
"system": "123"
},
{
"code": "english",
"display": "ghi",
"system": "456"
}
],
"text": "abc"
}
}
],
"deceasedBoolean": false,
"gender": "male",
"id": "patient1",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"tag": [
{
"code": "tag1",
"display": "Tag One",
"system": "tag-system"
},
{
"code": "tag2",
"display": "Tag Two",
"system": "other-system"
}
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"name": [
{
"family": "Lee",
"given": [
"Alex",
"Cleve"
],
"text": "Alex Lee",
"use": "usual"
},
{
"given": [
"Joe"
],
"use": "nickname"
}
],
"resourceType": "Patient",
"telecom": [
{
"rank": 1,
"system": "phone",
"use": "home",
"value": "0982344522"
},
{
"rank": 2,
"system": "email",
"use": "home",
"value": "alex@example.com"
}
]
},
"search": {
"mode": "match"
}
}
],
"link": [
{
"relation": "search",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?name%3Acontains=eve"
},
{
"relation": "first",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?name%3Acontains=eve"
},
{
"relation": "self",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?name%3Acontains=eve"
}
],
"resourceType": "Bundle",
"total": 2,
"type": "searchset"
}
数字、日期和数量的比较运算符和精度
数字或日期搜索中使用的值取决于参数值的精度。例如,数字 7.00 的隐式范围为 6.995(含)到 7.005(不含)。日期 2015-08-12 的范围为 2015-08-12T00:00:00(含)到 2015-08-13T00:00:00(不含)。
精度会影响返回进行相等性比较的结果。例如,资源中 7.03 的值与 value=7.0 的搜索匹配,但与 value=7.00 的搜索不匹配。
FHIR 中所有具有临床意义的浮点值都由记录存储值精度的小数和数量等类型表示。例外情况是,有一些字段使用简单整数,例如用来表示序列中的位置,对这些字段进行的搜索是数字完全匹配搜索。
以下前缀适用于数值与单例值的比较。如果未指定前缀,则默认值为 eq。
eq:等于,确切的存储值在参数值的精度定义的范围内ne:不等于,与eq相反gt:确切的存储值大于确切的参数值lt:确切的存储值小于确切的参数值ge:确切的存储值大于或等于确切的参数值le:确切的存储值小于或等于确切的参数值
日期值的隐含范围取决于该值的精细程度(一年、一个月、一天)。其他数据类型(如范围和期限)包含明确的上限和下限。以下前缀适用于范围比较。如果未指定前缀,则默认值为 eq。
eq:等于,参数值的范围完全包含目标的范围ne:不等于,与eq相反gt:大于,参数值上方的范围与目标的范围重叠lt:小于,参数值下方的范围与目标的范围重叠ge:大于或等于le:小于或等于sa:参数值的范围开始于目标范围之后eb:参数值的范围结束于目标范围之前
数字、日期和数量的比较运算符和精度示例
REST
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的 Google Cloud 项目 ID
- LOCATION:父级数据集的位置
- DATASET_ID:FHIR 存储区的父数据集
- FHIR_STORE_ID:FHIR 存储区 ID
如需发送请求,请选择以下方式之一:
curl
以下示例使用
_lastUpdated=gt2018-01-01 查询来搜索 _lastUpdated 值大于 (gt) 2018-01-01 的患者资源。
执行以下命令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?_lastUpdated=gt2018-01-01"
PowerShell
以下示例使用
_lastUpdated=gt2018-01-01 查询来搜索 _lastUpdated 值大于 (gt) 2018-01-01 的患者资源。
执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?_lastUpdated=gt2018-01-01" | Select-Object -Expand Content
查询 _lastUpdated=gt2018-01-01 会返回自 2018 年 1 月 1 日以来更新的患者资源。如果您的 FHIR 存储区中的所有资源都是在该日期之后创建,则服务器会返回所有资源。要查看一部分资源,请将日期更改为某些资源上次更新之后的某个时间。
{
"entry": [
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient3",
"resource": {
"active": false,
"address": [
{
"city": "Lisbon",
"district": "KW",
"line": [
"Avenida da Pastelaria, 1903"
],
"period": {
"start": "1980-01-01"
},
"text": "Avenida da Pastelaria, 1903",
"type": "both",
"use": "home"
}
],
"birthDate": "1980-01-01",
"deceasedBoolean": false,
"id": "patient3",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"tag": [
{
"code": "tag3",
"display": "Tag $3",
"system": "other|tag"
},
{
"code": "code,4",
"display": "Tag 4",
"system": "system"
}
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"name": [
{
"family": "Smith",
"given": [
"Mary"
],
"text": "Smith, Mary",
"use": "usual"
}
],
"resourceType": "Patient",
"telecom": [
{
"rank": 1,
"system": "phone",
"use": "home",
"value": "1110891111"
},
{
"rank": 2,
"system": "email",
"use": "home",
"value": "mary@example.com"
}
]
},
"search": {
"mode": "match"
}
},
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient2",
"resource": {
"active": false,
"address": [
{
"city": "Mountain View",
"district": "KW",
"line": [
"1800 Amphibious Blvd"
],
"period": {
"start": "2000-01-01"
},
"text": "1800 Amphibious Blvd",
"type": "both",
"use": "home"
}
],
"birthDate": "1989-03-11",
"communication": [
{
"language": {
"coding": [
{
"code": "FR",
"display": "jkl",
"system": "123"
},
{
"code": "french",
"display": "mno",
"system": "456"
}
],
"text": "pqr"
}
}
],
"deceasedBoolean": false,
"gender": "female",
"id": "patient2",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"tag": [
{
"code": "tag2",
"display": "Tag Two",
"system": "tag-system"
},
{
"code": "tag|tag3",
"display": "Tag Three",
"system": "other"
}
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"name": [
{
"family": "Lee",
"given": [
"Jane",
"Evelyne"
],
"use": "usual"
}
],
"resourceType": "Patient",
"telecom": [
{
"rank": 1,
"system": "phone",
"use": "home",
"value": "0982344522"
},
{
"rank": 2,
"system": "email",
"use": "home",
"value": "jane@example.com"
}
]
},
"search": {
"mode": "match"
}
},
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a",
"resource": {
"address": [
{
"country": "US",
"line": [
"907 Arlo Cliffs",
"Suite 984"
],
"postalCode": "XXXXX"
}
],
"birthDate": "1940-12-01",
"communication": [
{
"language": {
"coding": [
{
"code": "en-US",
"display": "English (United States)",
"system": "urn:ietf:bcp:47"
}
]
}
}
],
"deceasedDateTime": "2009-07-26T12:01:23-05:00",
"extension": [
{
"url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-race",
"valueCodeableConcept": {
"coding": [
{
"code": "2106-3",
"display": "White",
"system": "http://hl7.org/fhir/v3/Race"
}
],
"text": "race"
}
},
{
"url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity",
"valueCodeableConcept": {
"coding": [
{
"code": "2186-5",
"display": "Nonhispanic",
"system": "http://hl7.org/fhir/v3/Ethnicity"
}
],
"text": "ethnicity"
}
},
{
"url": "http://hl7.org/fhir/StructureDefinition/birthPlace",
"valueAddress": {
"city": "Tama",
"country": "US",
"postalCode": "52339",
"state": "Iowa"
}
},
{
"url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName",
"valueString": "Farrah Feeney"
},
{
"url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex",
"valueCode": "M"
},
{
"url": "http://hl7.org/fhir/StructureDefinition/patient-interpreterRequired",
"valueBoolean": false
},
{
"url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-actor-FictionalPerson-extension",
"valueBoolean": true
},
{
"url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-FathersName-extension",
"valueHumanName": {
"text": "Christopher Diaz"
}
},
{
"url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-SocialSecurityNumber-extension",
"valueString": "999-16-9041"
}
],
"gender": "male",
"generalPractitioner": [
{
"reference": "Organization/9fb51c89-1453-406c-8357-578311b43a91"
}
],
"id": "8ac08aa9-63d2-4e81-8647-3a138d7f9f5a",
"identifier": [
{
"system": "https://github.com/synthetichealth/synthea",
"value": "c1ee4b49-3194-4b39-91ed-4d1393a780c6"
},
{
"system": "http://hl7.org/fhir/sid/us-ssn",
"type": {
"coding": [
{
"code": "SB",
"system": "http://hl7.org/fhir/identifier-type"
}
]
},
"value": "999169041"
},
{
"system": "urn:oid:2.16.840.1.113883.4.3.25",
"type": {
"coding": [
{
"code": "DL",
"system": "http://hl7.org/fhir/v2/0203"
}
]
},
"value": "S99992205"
},
{
"system": "http://standardhealthrecord.org/fhir/StructureDefinition/passportNumber",
"type": {
"coding": [
{
"code": "PPN",
"system": "http://hl7.org/fhir/v2/0203"
}
]
},
"value": "X12551631X"
},
{
"system": "http://hospital.smarthealthit.org",
"type": {
"coding": [
{
"code": "MR",
"system": "http://hl7.org/fhir/v2/0203"
}
]
},
"value": "c1ee4b49-3194-4b39-91ed-4d1393a780c6"
}
],
"maritalStatus": {
"coding": [
{
"code": "S",
"system": "http://hl7.org/fhir/v3/MaritalStatus"
}
],
"text": "S"
},
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"profile": [
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-PersonOfRecord"
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"multipleBirthBoolean": false,
"name": [
{
"family": "Diaz",
"given": [
"Christopher"
],
"prefix": [
"Mr."
],
"use": "official"
}
],
"resourceType": "Patient",
"telecom": [
{
"system": "phone",
"use": "home",
"value": "434-100-2918 x800"
}
],
"text": {
"div": "Generated by Synthea. Version identifier: 2dd4c1c37e2743d14e5073c7b5e42899a3e51531",
"status": "generated"
}
},
"search": {
"mode": "match"
}
},
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient1",
"resource": {
"active": false,
"address": [
{
"city": "Mountain View",
"district": "KW",
"line": [
"1800 Amphibious Blvd"
],
"period": {
"start": "1974-12-25"
},
"text": "1800 Amphibious Blvd",
"type": "both",
"use": "home"
}
],
"birthDate": "1974-12-25",
"communication": [
{
"language": {
"coding": [
{
"code": "ENG",
"display": "def",
"system": "123"
},
{
"code": "english",
"display": "ghi",
"system": "456"
}
],
"text": "abc"
}
}
],
"deceasedBoolean": false,
"gender": "male",
"id": "patient1",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"tag": [
{
"code": "tag1",
"display": "Tag One",
"system": "tag-system"
},
{
"code": "tag2",
"display": "Tag Two",
"system": "other-system"
}
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"name": [
{
"family": "Lee",
"given": [
"Alex",
"Cleve"
],
"text": "Alex Lee",
"use": "usual"
},
{
"given": [
"Joe"
],
"use": "nickname"
}
],
"resourceType": "Patient",
"telecom": [
{
"rank": 1,
"system": "phone",
"use": "home",
"value": "0982344522"
},
{
"rank": 2,
"system": "email",
"use": "home",
"value": "alex@example.com"
}
]
},
"search": {
"mode": "match"
}
}
],
"link": [
{
"relation": "search",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_lastUpdated=gt2018-01-01"
},
{
"relation": "first",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_lastUpdated=gt2018-01-01"
},
{
"relation": "self",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_lastUpdated=gt2018-01-01"
}
],
"resourceType": "Bundle",
"total": 4,
"type": "searchset"
}
令牌搜索
令牌搜索参数适用于值不是任意字符串而是命名系统中的实体的情况。字符串与令牌参数完全匹配。
大多数令牌搜索都适用于包含 system(它是 一个 URI,用于指明提取 code 值的命名系统)的复杂数据类型。这些搜索支持以下值语法:
[parameter]=[code]匹配code值,而无论system如何[parameter]=[system]|[code]必须与指定的system和code都匹配- 当
system值为空时,[parameter]=|[code]匹配code [parameter]=[system]|匹配具有给定system值的任何code
您可以通过多个修饰符触发备用令牌搜索功能:
:not会排除令牌搜索的匹配条件:text针对与代码关联的text或display字段而非代码值本身进行字符串搜索(非完全匹配):above只采用[system]|[code]形式的参数,并与其中的代码包含查询参数的资源匹配。要使用此修饰符,指定的system必须作为CodeSystem资源存在于 FHIR 存储区中。:below类似于:above,匹配前提是资源中的代码由查询参数拥有。:in接受使用引用参数语法的单个参数,例如code:in=ValueSet/1234。引用必须引用同一 FHIR 存储区中的ValueSet资源。修饰符与引用的ValueSet中的任何代码匹配。:not-in否定:in的条件
令牌搜索还适用于布尔值和 URI 字段以及只允许完全匹配的特定字符串字段。在这些情况下,唯一的参数格式为 [parameter]=[value]。
令牌搜索示例
REST
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的 Google Cloud 项目 ID
- LOCATION:父级数据集的位置
- DATASET_ID:FHIR 存储区的父数据集
- FHIR_STORE_ID:FHIR 存储区 ID
如需发送请求,请选择以下方式之一:
curl
以下示例使用
Patient?_tag=tag-system|tag2 查询搜索具有指定 system 和 code 的患者资源。
执行以下命令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?_tag=tag-system|tag2"
PowerShell
以下示例使用
Patient?_tag=tag-system|tag2 查询搜索具有指定 system 和 code 的患者资源。
执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?_tag=tag-system|tag2" | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
{
"entry": [
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient2",
"resource": {
"active": false,
"address": [
{
"city": "Mountain View",
"district": "KW",
"line": [
"1800 Amphibious Blvd"
],
"period": {
"start": "2000-01-01"
},
"text": "1800 Amphibious Blvd",
"type": "both",
"use": "home"
}
],
"birthDate": "1989-03-11",
"communication": [
{
"language": {
"coding": [
{
"code": "FR",
"display": "jkl",
"system": "123"
},
{
"code": "french",
"display": "mno",
"system": "456"
}
],
"text": "pqr"
}
}
],
"deceasedBoolean": false,
"gender": "female",
"id": "patient2",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"tag": [
{
"code": "tag2",
"display": "Tag Two",
"system": "tag-system"
},
{
"code": "tag|tag3",
"display": "Tag Three",
"system": "other"
}
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"name": [
{
"family": "Lee",
"given": [
"Jane",
"Evelyne"
],
"use": "usual"
}
],
"resourceType": "Patient",
"telecom": [
{
"rank": 1,
"system": "phone",
"use": "home",
"value": "0982344522"
},
{
"rank": 2,
"system": "email",
"use": "home",
"value": "jane@example.com"
}
]
},
"search": {
"mode": "match"
}
}
],
"link": [
{
"relation": "search",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_tag=tag-system%7Ctag2"
},
{
"relation": "first",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_tag=tag-system%7Ctag2"
},
{
"relation": "self",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_tag=tag-system%7Ctag2"
}
],
"resourceType": "Bundle",
"total": 1,
"type": "searchset"
}
搜索缺失值
搜索修饰符 :missing 可用于任何搜索参数,以根据指定字段中是否存在任何值进行匹配。例如,Patient?gender=unknown 匹配的资源明确包含性别的 unknown 枚举值,但由于此字段不是必填字段,因此可能有其他资源完全不填写此字段。此类资源可以通过 Patient?gender:missing=true 进行匹配。相反的 Patient?gender:missing=false 会匹配明确填写此字段的任何资源。
缺失值示例
REST
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的 Google Cloud 项目 ID
- LOCATION:父级数据集的位置
- DATASET_ID:FHIR 存储区的父数据集
- FHIR_STORE_ID:FHIR 存储区 ID
如需发送请求,请选择以下方式之一:
curl
以下示例使用
gender:missing=false 查询:
执行以下命令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?gender:missing=false"
PowerShell
以下示例使用
gender:missing=false 查询:
执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?gender:missing=false" | Select-Object -Expand Content
patient3 的患者资源缺少 gender 值:
{
"entry": [
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/mydataset/fhirStores/FHIR_STORE_ID/fhir/Patient/patient3",
"resource": {
"active": false,
"address": [
{
"city": "Lisbon",
"district": "KW",
"line": [
"Avenida da Pastelaria, 1903"
],
"period": {
"start": "1980-01-01"
},
"text": "Avenida da Pastelaria, 1903",
"type": "both",
"use": "home"
}
],
"birthDate": "1980-01-01",
"deceasedBoolean": false,
"id": "patient3",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"tag": [
{
"code": "tag3",
"display": "Tag $3",
"system": "other|tag"
},
{
"code": "code,4",
"display": "Tag 4",
"system": "system"
}
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"name": [
{
"family": "Smith",
"given": [
"Mary"
],
"text": "Smith, Mary",
"use": "usual"
}
],
"resourceType": "Patient",
"telecom": [
{
"rank": 1,
"system": "phone",
"use": "home",
"value": "1110891111"
},
{
"rank": 2,
"system": "email",
"use": "home",
"value": "mary@example.com"
}
]
},
"search": {
"mode": "match"
}
}
],
"link": [
{
"relation": "search",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/mydataset/fhirStores/FHIR_STORE_ID/fhir/Patient/?gender%3Amissing=true"
},
{
"relation": "first",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/mydataset/fhirStores/FHIR_STORE_ID/fhir/Patient/?gender%3Amissing=true"
},
{
"relation": "self",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/mydataset/fhirStores/FHIR_STORE_ID/fhir/Patient/?gender%3Amissing=true"
}
],
"resourceType": "Bundle",
"total": 1,
"type": "searchset"
}
文字搜索
如果字段是资源的任何搜索参数的目标字段,则特殊搜索参数 _content 会对基于字符串的字段(不包括数字、日期或枚举字段)执行文本匹配。默认情况下,_content 匹配查询中包含所有字词的资源,并支持其他运算符:
|是 OR 运算符,例如abc | def | ghi xyz将匹配包含xyz和一个或多个abcdefghi的资源。-是 NOT 运算符,例如abc -def将匹配包含abc但不包含def的资源。
该匹配基于完整字词,与子字符串或非字母数字字符不匹配。字词的顺序无关紧要。匹配的字词可以分布在资源中的多个字段内。
参数 _text 只会对叙事字段执行同一类型的匹配,该字段旨在包含直观易懂的资源内容摘要。如果客户在创建或更新资源时填充了这些数据,则 Cloud Healthcare API 不会自动生成此摘要,但支持 _text 搜索参数。
文字搜索示例
REST
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的 Google Cloud 项目 ID
- LOCATION:父级数据集的位置
- DATASET_ID:FHIR 存储区的父数据集
- FHIR_STORE_ID:FHIR 存储区 ID
如需发送请求,请选择以下方式之一:
curl
以下示例使用
_content=Smith%20|%20Mountain%20View 查询:
执行以下命令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?_content=Smith%20|%20Mountain%20View"
PowerShell
以下示例使用
_content=Smith%20|%20Mountain%20View 查询:
执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?_content=Smith%20|%20Mountain%20View" | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
{
"entry": [
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient1",
"resource": {
"active": false,
"address": [
{
"city": "Mountain View",
"district": "KW",
"line": [
"1800 Amphibious Blvd"
],
"period": {
"start": "1974-12-25"
},
"text": "1800 Amphibious Blvd",
"type": "both",
"use": "home"
}
],
"birthDate": "1974-12-25",
"communication": [
{
"language": {
"coding": [
{
"code": "ENG",
"display": "def",
"system": "123"
},
{
"code": "english",
"display": "ghi",
"system": "456"
}
],
"text": "abc"
}
}
],
"deceasedBoolean": false,
"gender": "male",
"id": "patient1",
"meta": {
"lastUpdated": "2021-10-21T16:41:47.211939+00:00",
"tag": [
{
"code": "tag1",
"display": "Tag One",
"system": "tag-system"
},
{
"code": "tag2",
"display": "Tag Two",
"system": "other-system"
}
],
"versionId": "MTYzNDgzNDUwNzIxMTkzOTAwMA"
},
"name": [
{
"family": "Lee",
"given": [
"Alex",
"Cleve"
],
"text": "Alex Lee",
"use": "usual"
},
{
"given": [
"Joe"
],
"use": "nickname"
}
],
"resourceType": "Patient",
"telecom": [
{
"rank": 1,
"system": "phone",
"use": "home",
"value": "0982344522"
},
{
"rank": 2,
"system": "email",
"use": "home",
"value": "alex@example.com"
}
]
},
"search": {
"mode": "match"
}
},
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient2",
"resource": {
"active": false,
"address": [
{
"city": "Mountain View",
"district": "KW",
"line": [
"1800 Amphibious Blvd"
],
"period": {
"start": "2000-01-01"
},
"text": "1800 Amphibious Blvd",
"type": "both",
"use": "home"
}
],
"birthDate": "1989-03-11",
"communication": [
{
"language": {
"coding": [
{
"code": "FR",
"display": "jkl",
"system": "123"
},
{
"code": "french",
"display": "mno",
"system": "456"
}
],
"text": "pqr"
}
}
],
"deceasedBoolean": false,
"gender": "female",
"id": "patient2",
"meta": {
"lastUpdated": "2021-10-21T16:41:47.211939+00:00",
"tag": [
{
"code": "tag2",
"display": "Tag Two",
"system": "tag-system"
},
{
"code": "tag|tag3",
"display": "Tag Three",
"system": "other"
}
],
"versionId": "MTYzNDgzNDUwNzIxMTkzOTAwMA"
},
"name": [
{
"family": "Lee",
"given": [
"Jane",
"Evelyne"
],
"use": "usual"
}
],
"resourceType": "Patient",
"telecom": [
{
"rank": 1,
"system": "phone",
"use": "home",
"value": "0982344522"
},
{
"rank": 2,
"system": "email",
"use": "home",
"value": "jane@example.com"
}
]
},
"search": {
"mode": "match"
}
}
],
"link": [
{
"relation": "search",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_content=Smith%7CMountain+View"
},
{
"relation": "first",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_content=Smith%7CMountain+View"
},
{
"relation": "self",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_content=Smith%7CMountain+View"
}
],
"resourceType": "Bundle",
"total": 2,
"type": "searchset"
}
组合搜索参数
使用多个查询参数进行搜索时,在某些情况下,使用 AND 结合各个搜索参数将匹配意外结果。组合搜索参数是一种可解决此问题的特殊类型的搜索参数。
例如,Observation 资源可能在 component 字段中包含多个值,其中每个值都包含一对 code 和 value。搜索 Observation?component-code=8867-4&component-value-quantity=lt50 会匹配一个资源,该资源的一个组成部分包含的 code 为 8867-4,而另一个组成部分包含的 value 小于 50。您不能使用此搜索将匹配限为匹配同一组成部分中的这两个值。
复合搜索参数定义了一个新参数,该参数合并了其他两个搜索参数,并定义了这两个参数都必须匹配的嵌套级别。在查询中,这两个值通过 $ 联接。例如,Observation 的复合参数 component-code-value-quantity 可以通过搜索 Observation?component-code-value-quantity=8867-4$lt50 将上一个示例限制为单个组成部分。这些参数由 FHIR 规范定义,并非搜索参数的所有组合都存在这些参数。
组合搜索参数不允许使用修饰符。
与所有搜索参数一样,您可以在功能语句或 FHIR 合规性声明中找到 Cloud Healthcare API 支持的复合参数信息。
组合搜索示例
REST
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的 Google Cloud 项目 ID
- LOCATION:父级数据集的位置
- DATASET_ID:FHIR 存储区的父数据集
- FHIR_STORE_ID:FHIR 存储区 ID
如需发送请求,请选择以下方式之一:
curl
以下示例使用
Observation?component-code-value-quantity=8480-6$lt150 查询。
执行以下命令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation?component-code-value-quantity=8480-6\$lt150"
PowerShell
以下示例使用
Observation?component-code-value-quantity=8480-6$lt150 查询。
执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation?component-code-value-quantity=8480-6\$lt150" | Select-Object -Expand Content
component-code=8480-6 且 component-value-quantity 为 133 的观察,满足 lt150 的条件。
{
"entry": [
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/a35bf421-1f00-4897-a94d-4d47c3bb306b",
"resource": {
"category": [
{
"coding": [
{
"code": "vital-signs",
"system": "http://hl7.org/fhir/observation-category"
}
]
}
],
"code": {
"coding": [
{
"code": "55284-4",
"display": "Blood Pressure",
"system": "http://loinc.org"
}
]
},
"component": [
{
"code": {
"coding": [
{
"code": "8480-6",
"display": "Systolic Blood Pressure",
"system": "http://loinc.org"
}
],
"text": "Systolic Blood Pressure"
},
"valueQuantity": {
"code": "mmHg",
"system": "http://unitsofmeasure.org",
"unit": "mmHg",
"value": 133
}
},
{
"code": {
"coding": [
{
"code": "8462-4",
"display": "Diastolic Blood Pressure",
"system": "http://loinc.org"
}
],
"text": "Diastolic Blood Pressure"
},
"valueQuantity": {
"code": "mmHg",
"system": "http://unitsofmeasure.org",
"unit": "mmHg",
"value": 84
}
}
],
"effectiveDateTime": "2008-03-07T17:47:02-05:00",
"encounter": {
"reference": "Encounter/0e9d631c-4407-45e5-bfbe-689806caaf7b"
},
"id": "a35bf421-1f00-4897-a94d-4d47c3bb306b",
"issued": "2008-03-07T17:47:02-05:00",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"profile": [
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-observation-Observation",
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-BloodPressure"
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"resourceType": "Observation",
"status": "final",
"subject": {
"reference": "Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a"
}
},
"search": {
"mode": "match"
}
}
],
"link": [
{
"relation": "search",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/?component-code-value-quantity=8480-6%24lt150"
},
{
"relation": "first",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/?component-code-value-quantity=8480-6%24lt150"
},
{
"relation": "self",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/?component-code-value-quantity=8480-6%24lt150"
}
],
"resourceType": "Bundle",
"total": 1,
"type": "searchset"
}
链式搜索
链式搜索允许搜索在查询上下文中遍历引用。链式搜索的基本语法如下所示:
[reference parameter]:[resource type].[inner search parameter]=[inner value]
如果引用参数仅引用一种资源类型,则可以省略 :[resource
type],但会导致:
[reference parameter].[inner search parameter]=[inner value]
例如,Observation 的引用搜索参数 subject 可能指向 Group、Device、Patient 或 Location。要查找包含 subject(具有名字以“Joe”开头的 Patient)的 Observations,您可以搜索 Observation?subject:Patient.name=Joe。
如果查询具有多个链式参数,则系统将分别评估每个参数链。例如,Patient?general-practitioner.name=Joe&general-practitioner.address-country=Canada 将匹配具有两个 general-practitioner 引用(一个引用的名字为“Joe”,另一个引用的地址在加拿大)的 Patient。没有语法可用来将这些子句组合在一起,从而仅匹配来自加拿大的 Joe。
链式搜索可与其他链或反向链递归,例如,Observation?subject:Patient.organization.name=Acme 将匹配引用 subject 的 Observation,后者引用 name 为 Acme 的 organization。
链式搜索示例
REST
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的 Google Cloud 项目 ID
- LOCATION:父级数据集的位置
- DATASET_ID:FHIR 存储区的父数据集
- FHIR_STORE_ID:FHIR 存储区 ID
如需发送请求,请选择以下方式之一:
curl
以下示例使用
Observation?subject:Patient.name=Christopher 查询返回 subject 为名字以 Christopher 开头的 Patient 的所有观察。
执行以下命令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation?subject:Patient.name=Christopher"
PowerShell
以下示例使用
Observation?subject:Patient.name=Christopher 查询返回 subject 为名字以 Christopher 开头的 Patient 的所有观察。
执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation?subject:Patient.name=Christopher" | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
{
"entry": [
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/85652a63-09ba-4a5b-ac5b-b690c6972eb5",
"resource": {
"category": [
{
"coding": [
{
"code": "laboratory",
"system": "http://hl7.org/fhir/observation-category"
}
]
}
],
"code": {
"coding": [
{
"code": "2093-3",
"display": "Total Cholesterol",
"system": "http://loinc.org"
}
],
"text": "Total Cholesterol"
},
"effectiveDateTime": "2008-03-07T17:47:02-05:00",
"encounter": {
"reference": "Encounter/0e9d631c-4407-45e5-bfbe-689806caaf7b"
},
"id": "85652a63-09ba-4a5b-ac5b-b690c6972eb5",
"issued": "2008-03-07T17:47:02-05:00",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"profile": [
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-observation-Observation"
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"resourceType": "Observation",
"status": "final",
"subject": {
"reference": "Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a"
},
"valueQuantity": {
"code": "mg/dL",
"system": "http://unitsofmeasure.org",
"unit": "mg/dL",
"value": 191
}
},
"search": {
"mode": "match"
}
},
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/e7aea507-61af-4290-9323-0b3daed0b7a9",
"resource": {
"category": [
{
"coding": [
{
"code": "laboratory",
"system": "http://hl7.org/fhir/observation-category"
}
]
}
],
"code": {
"coding": [
{
"code": "2571-8",
"display": "Triglycerides",
"system": "http://loinc.org"
}
],
"text": "Triglycerides"
},
"effectiveDateTime": "2008-03-07T17:47:02-05:00",
"encounter": {
"reference": "Encounter/0e9d631c-4407-45e5-bfbe-689806caaf7b"
},
"id": "e7aea507-61af-4290-9323-0b3daed0b7a9",
"issued": "2008-03-07T17:47:02-05:00",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"profile": [
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-observation-Observation"
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"resourceType": "Observation",
"status": "final",
"subject": {
"reference": "Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a"
},
"valueQuantity": {
"code": "mg/dL",
"system": "http://unitsofmeasure.org",
"unit": "mg/dL",
"value": 143
}
},
"search": {
"mode": "match"
}
},
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/a35bf421-1f00-4897-a94d-4d47c3bb306b",
"resource": {
"category": [
{
"coding": [
{
"code": "vital-signs",
"system": "http://hl7.org/fhir/observation-category"
}
]
}
],
"code": {
"coding": [
{
"code": "55284-4",
"display": "Blood Pressure",
"system": "http://loinc.org"
}
]
},
"component": [
{
"code": {
"coding": [
{
"code": "8480-6",
"display": "Systolic Blood Pressure",
"system": "http://loinc.org"
}
],
"text": "Systolic Blood Pressure"
},
"valueQuantity": {
"code": "mmHg",
"system": "http://unitsofmeasure.org",
"unit": "mmHg",
"value": 133
}
},
{
"code": {
"coding": [
{
"code": "8462-4",
"display": "Diastolic Blood Pressure",
"system": "http://loinc.org"
}
],
"text": "Diastolic Blood Pressure"
},
"valueQuantity": {
"code": "mmHg",
"system": "http://unitsofmeasure.org",
"unit": "mmHg",
"value": 84
}
}
],
"effectiveDateTime": "2008-03-07T17:47:02-05:00",
"encounter": {
"reference": "Encounter/0e9d631c-4407-45e5-bfbe-689806caaf7b"
},
"id": "a35bf421-1f00-4897-a94d-4d47c3bb306b",
"issued": "2008-03-07T17:47:02-05:00",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"profile": [
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-observation-Observation",
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-BloodPressure"
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"resourceType": "Observation",
"status": "final",
"subject": {
"reference": "Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a"
}
},
"search": {
"mode": "match"
}
},
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/14df9701-2dd4-4538-8fac-776c40dec22d",
"resource": {
"category": [
{
"coding": [
{
"code": "vital-signs",
"system": "http://hl7.org/fhir/observation-category"
}
]
}
],
"code": {
"coding": [
{
"code": "8302-2",
"display": "Body Height",
"system": "http://loinc.org"
}
],
"text": "Body Height"
},
"effectiveDateTime": "2008-03-07T17:47:02-05:00",
"encounter": {
"reference": "Encounter/0e9d631c-4407-45e5-bfbe-689806caaf7b"
},
"id": "14df9701-2dd4-4538-8fac-776c40dec22d",
"issued": "2008-03-07T17:47:02-05:00",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"profile": [
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-observation-Observation",
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-VitalSign",
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-BodyHeight"
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"resourceType": "Observation",
"status": "final",
"subject": {
"reference": "Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a"
},
"valueQuantity": {
"code": "cm",
"system": "http://unitsofmeasure.org",
"unit": "centimeters",
"value": 177.72961711703704
}
},
"search": {
"mode": "match"
}
},
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/1e2fdce6-4c79-4ef8-a5a9-2326cddbc8b3",
"resource": {
"category": [
{
"coding": [
{
"code": "vital-signs",
"system": "http://hl7.org/fhir/observation-category"
}
]
}
],
"code": {
"coding": [
{
"code": "39156-5",
"display": "Body Mass Index",
"system": "http://loinc.org"
}
],
"text": "Body Mass Index"
},
"effectiveDateTime": "2008-03-07T17:47:02-05:00",
"encounter": {
"reference": "Encounter/0e9d631c-4407-45e5-bfbe-689806caaf7b"
},
"id": "1e2fdce6-4c79-4ef8-a5a9-2326cddbc8b3",
"issued": "2008-03-07T17:47:02-05:00",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"profile": [
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-observation-Observation",
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-VitalSign",
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-BodyMassIndex"
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"resourceType": "Observation",
"status": "final",
"subject": {
"reference": "Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a"
},
"valueQuantity": {
"code": "kg/m2",
"system": "http://unitsofmeasure.org",
"unit": "kg/m2",
"value": 38.34566163709526
}
},
"search": {
"mode": "match"
}
},
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/58357362-6f18-438a-8479-3289ebab1617",
"resource": {
"category": [
{
"coding": [
{
"code": "laboratory",
"system": "http://hl7.org/fhir/observation-category"
}
]
}
],
"code": {
"coding": [
{
"code": "18262-6",
"display": "Low Density Lipoprotein Cholesterol",
"system": "http://loinc.org"
}
],
"text": "Low Density Lipoprotein Cholesterol"
},
"effectiveDateTime": "2008-03-07T17:47:02-05:00",
"encounter": {
"reference": "Encounter/0e9d631c-4407-45e5-bfbe-689806caaf7b"
},
"id": "58357362-6f18-438a-8479-3289ebab1617",
"issued": "2008-03-07T17:47:02-05:00",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"profile": [
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-observation-Observation"
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"resourceType": "Observation",
"status": "final",
"subject": {
"reference": "Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a"
},
"valueQuantity": {
"code": "mg/dL",
"system": "http://unitsofmeasure.org",
"unit": "mg/dL",
"value": 102
}
},
"search": {
"mode": "match"
}
},
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/c6f1b042-a0fc-4bbc-9cd5-7a8a924c00e7",
"resource": {
"category": [
{
"coding": [
{
"code": "laboratory",
"system": "http://hl7.org/fhir/observation-category"
}
]
}
],
"code": {
"coding": [
{
"code": "2085-9",
"display": "High Density Lipoprotein Cholesterol",
"system": "http://loinc.org"
}
],
"text": "High Density Lipoprotein Cholesterol"
},
"effectiveDateTime": "2008-03-07T17:47:02-05:00",
"encounter": {
"reference": "Encounter/0e9d631c-4407-45e5-bfbe-689806caaf7b"
},
"id": "c6f1b042-a0fc-4bbc-9cd5-7a8a924c00e7",
"issued": "2008-03-07T17:47:02-05:00",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"profile": [
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-observation-Observation"
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"resourceType": "Observation",
"status": "final",
"subject": {
"reference": "Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a"
},
"valueQuantity": {
"code": "mg/dL",
"system": "http://unitsofmeasure.org",
"unit": "mg/dL",
"value": 60
}
},
"search": {
"mode": "match"
}
},
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/ac57b908-2804-4d67-a7ad-1e4a4c3225a1",
"resource": {
"category": [
{
"coding": [
{
"code": "vital-signs",
"system": "http://hl7.org/fhir/observation-category"
}
]
}
],
"code": {
"coding": [
{
"code": "29463-7",
"display": "Body Weight",
"system": "http://loinc.org"
}
],
"text": "Body Weight"
},
"effectiveDateTime": "2008-03-07T17:47:02-05:00",
"encounter": {
"reference": "Encounter/0e9d631c-4407-45e5-bfbe-689806caaf7b"
},
"id": "ac57b908-2804-4d67-a7ad-1e4a4c3225a1",
"issued": "2008-03-07T17:47:02-05:00",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"profile": [
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-observation-Observation",
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-VitalSign",
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-BodyWeight"
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"resourceType": "Observation",
"status": "final",
"subject": {
"reference": "Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a"
},
"valueQuantity": {
"code": "kg",
"system": "http://unitsofmeasure.org",
"unit": "kg",
"value": 121.12557348891558
}
},
"search": {
"mode": "match"
}
}
],
"link": [
{
"relation": "search",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/?subject%3APatient.name=Christopher"
},
{
"relation": "first",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/?subject%3APatient.name=Christopher"
},
{
"relation": "self",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/?subject%3APatient.name=Christopher"
}
],
"resourceType": "Bundle",
"total": 8,
"type": "searchset"
}
反向链式搜索
反向链式搜索会根据引用资源的其他资源上的条件来匹配资源。反向链搜索的语法如下:
_has:[resource type]:[reference parameter]:[search parameter]=[value]
例如,Appointment 资源具有一个引用 Patient 资源的搜索参数 patient。要查找日期为 2020-04-01 的 Appointment 资源引用的所有 Patient 资源,请使用 Patient?_has:Appointment:patient:date=eq2020-04-01。
反向链可以与其他链或反向链递归,例如,如果存在 Encounter E 和 Claim C,则 Practitioner?_has:Encounter:practitioner:_has:Claim:encounter:created=eq2020-04-01 将匹配 Practitioner P,这样 C 的创建日期为 2020-04-01,C 通过其 encounter 引用引用 E,而 E 通过其 practitioner 引用引用 P。
反向链式搜索示例
REST
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的 Google Cloud 项目 ID
- LOCATION:父级数据集的位置
- DATASET_ID:FHIR 存储区的父数据集
- FHIR_STORE_ID:FHIR 存储区 ID
如需发送请求,请选择以下方式之一:
curl
以下示例使用
Patient?_has:Procedure:patient:date=eq2008-03-07 查询。
执行以下命令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?_has:Procedure:patient:date=eq2008-03-07"
PowerShell
以下示例使用
Patient?_has:Procedure:patient:date=eq2008-03-07 查询。
执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?_has:Procedure:patient:date=eq2008-03-07" | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
{
"entry": [
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a",
"resource": {
"address": [
{
"country": "US",
"line": [
"907 Arlo Cliffs",
"Suite 984"
],
"postalCode": "XXXXX"
}
],
"birthDate": "1940-12-01",
"communication": [
{
"language": {
"coding": [
{
"code": "en-US",
"display": "English (United States)",
"system": "urn:ietf:bcp:47"
}
]
}
}
],
"deceasedDateTime": "2009-07-26T12:01:23-05:00",
"extension": [
{
"url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-race",
"valueCodeableConcept": {
"coding": [
{
"code": "2106-3",
"display": "White",
"system": "http://hl7.org/fhir/v3/Race"
}
],
"text": "race"
}
},
{
"url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity",
"valueCodeableConcept": {
"coding": [
{
"code": "2186-5",
"display": "Nonhispanic",
"system": "http://hl7.org/fhir/v3/Ethnicity"
}
],
"text": "ethnicity"
}
},
{
"url": "http://hl7.org/fhir/StructureDefinition/birthPlace",
"valueAddress": {
"city": "Tama",
"country": "US",
"postalCode": "52339",
"state": "Iowa"
}
},
{
"url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName",
"valueString": "Farrah Feeney"
},
{
"url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex",
"valueCode": "M"
},
{
"url": "http://hl7.org/fhir/StructureDefinition/patient-interpreterRequired",
"valueBoolean": false
},
{
"url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-actor-FictionalPerson-extension",
"valueBoolean": true
},
{
"url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-FathersName-extension",
"valueHumanName": {
"text": "Christopher Diaz"
}
},
{
"url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-SocialSecurityNumber-extension",
"valueString": "999-16-9041"
}
],
"gender": "male",
"generalPractitioner": [
{
"reference": "Organization/9fb51c89-1453-406c-8357-578311b43a91"
}
],
"id": "8ac08aa9-63d2-4e81-8647-3a138d7f9f5a",
"identifier": [
{
"system": "https://github.com/synthetichealth/synthea",
"value": "c1ee4b49-3194-4b39-91ed-4d1393a780c6"
},
{
"system": "http://hl7.org/fhir/sid/us-ssn",
"type": {
"coding": [
{
"code": "SB",
"system": "http://hl7.org/fhir/identifier-type"
}
]
},
"value": "999169041"
},
{
"system": "urn:oid:2.16.840.1.113883.4.3.25",
"type": {
"coding": [
{
"code": "DL",
"system": "http://hl7.org/fhir/v2/0203"
}
]
},
"value": "S99992205"
},
{
"system": "http://standardhealthrecord.org/fhir/StructureDefinition/passportNumber",
"type": {
"coding": [
{
"code": "PPN",
"system": "http://hl7.org/fhir/v2/0203"
}
]
},
"value": "X12551631X"
},
{
"system": "http://hospital.smarthealthit.org",
"type": {
"coding": [
{
"code": "MR",
"system": "http://hl7.org/fhir/v2/0203"
}
]
},
"value": "c1ee4b49-3194-4b39-91ed-4d1393a780c6"
}
],
"maritalStatus": {
"coding": [
{
"code": "S",
"system": "http://hl7.org/fhir/v3/MaritalStatus"
}
],
"text": "S"
},
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"profile": [
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-PersonOfRecord"
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"multipleBirthBoolean": false,
"name": [
{
"family": "Diaz",
"given": [
"Christopher"
],
"prefix": [
"Mr."
],
"use": "official"
}
],
"resourceType": "Patient",
"telecom": [
{
"system": "phone",
"use": "home",
"value": "434-100-2918 x800"
}
],
"text": {
"div": "Generated by Synthea. Version identifier: 2dd4c1c37e2743d14e5073c7b5e42899a3e51531",
"status": "generated"
}
},
"search": {
"mode": "match"
}
}
],
"link": [
{
"relation": "search",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_has%3AProcedure%3Apatient%3Adate=eq2008-03-07"
},
{
"relation": "first",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_has%3AProcedure%3Apatient%3Adate=eq2008-03-07"
},
{
"relation": "self",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_has%3AProcedure%3Apatient%3Adate=eq2008-03-07"
}
],
"resourceType": "Bundle",
"total": 1,
"type": "searchset"
}
在搜索结果中加入其他资源
_include 和 _revinclude 参数请求搜索结果包含与查询直接匹配的资源(“主要结果”)相关的其他资源(“包含的资源”)。与发出一系列请求来单独检索这些额外资源相比,使用这些参数更高效。在从搜索返回的 searchset 软件包中,这些参数添加的资源将被标记为 entry.search.mode = include,以便它们与将包含 entry.search.mode = match 的主要结果区分。
使用 _include 的正向包含可添加主要结果引用的资源和资源版本,而使用 _revinclude 的反向包含可添加引用主要结果的资源。要跟踪的引用由搜索参数的名称指定,并且只有作为搜索参数提供的引用字段才能这样使用。
_include 和 _revinclude 的参数格式相同,取用两个或三个值并以 : 分隔。第一个值是引用来源的资源类型,第二个值是搜索参数名称,如果引用可以指向多个类型,则可选的第三个值将资源类型限制为单个类型。
例如:
MedicationRequest?_include=MedicationRequest:subject会搜索MedicationRequest资源,对于返回的每个资源,系统还会返回subject引用的目标,它可能是 FHIR 规范中定义的Group或Patient。MedicationRequest?_include=MedicationRequest:subject:Patient与上述功能类似,但仅返回对Patient资源的subject引用。MedicationRequest?_revinclude=Provenance:target会搜索MedicationRequest资源,对于返回的每个资源,系统还会返回任何Provenance资源,其中Provenance上的target引用会引用匹配资源。
_include 搜索示例
REST
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的 Google Cloud 项目 ID
- LOCATION:父级数据集的位置
- DATASET_ID:FHIR 存储区的父数据集
- FHIR_STORE_ID:FHIR 存储区 ID
如需发送请求,请选择以下方式之一:
curl
以下示例使用
Observation?code=http://loinc.org|2571-8&_include=* 查询。
执行以下命令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation?code=http://loinc.org|2571-8&_include=*"
PowerShell
以下示例使用
Observation?code=http://loinc.org|2571-8&_include=* 查询。
执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation?code=http://loinc.org|2571-8&_include=*" | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
{
"entry": [
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a",
"resource": {
"address": [
{
"country": "US",
"line": [
"907 Arlo Cliffs",
"Suite 984"
],
"postalCode": "XXXXX"
}
],
"birthDate": "1940-12-01",
"communication": [
{
"language": {
"coding": [
{
"code": "en-US",
"display": "English (United States)",
"system": "urn:ietf:bcp:47"
}
]
}
}
],
"deceasedDateTime": "2009-07-26T12:01:23-05:00",
"extension": [
{
"url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-race",
"valueCodeableConcept": {
"coding": [
{
"code": "2106-3",
"display": "White",
"system": "http://hl7.org/fhir/v3/Race"
}
],
"text": "race"
}
},
{
"url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity",
"valueCodeableConcept": {
"coding": [
{
"code": "2186-5",
"display": "Nonhispanic",
"system": "http://hl7.org/fhir/v3/Ethnicity"
}
],
"text": "ethnicity"
}
},
{
"url": "http://hl7.org/fhir/StructureDefinition/birthPlace",
"valueAddress": {
"city": "Tama",
"country": "US",
"postalCode": "52339",
"state": "Iowa"
}
},
{
"url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName",
"valueString": "Farrah Feeney"
},
{
"url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex",
"valueCode": "M"
},
{
"url": "http://hl7.org/fhir/StructureDefinition/patient-interpreterRequired",
"valueBoolean": false
},
{
"url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-actor-FictionalPerson-extension",
"valueBoolean": true
},
{
"url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-FathersName-extension",
"valueHumanName": {
"text": "Christopher Diaz"
}
},
{
"url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-SocialSecurityNumber-extension",
"valueString": "999-16-9041"
}
],
"gender": "male",
"generalPractitioner": [
{
"reference": "Organization/9fb51c89-1453-406c-8357-578311b43a91"
}
],
"id": "8ac08aa9-63d2-4e81-8647-3a138d7f9f5a",
"identifier": [
{
"system": "https://github.com/synthetichealth/synthea",
"value": "c1ee4b49-3194-4b39-91ed-4d1393a780c6"
},
{
"system": "http://hl7.org/fhir/sid/us-ssn",
"type": {
"coding": [
{
"code": "SB",
"system": "http://hl7.org/fhir/identifier-type"
}
]
},
"value": "999169041"
},
{
"system": "urn:oid:2.16.840.1.113883.4.3.25",
"type": {
"coding": [
{
"code": "DL",
"system": "http://hl7.org/fhir/v2/0203"
}
]
},
"value": "S99992205"
},
{
"system": "http://standardhealthrecord.org/fhir/StructureDefinition/passportNumber",
"type": {
"coding": [
{
"code": "PPN",
"system": "http://hl7.org/fhir/v2/0203"
}
]
},
"value": "X12551631X"
},
{
"system": "http://hospital.smarthealthit.org",
"type": {
"coding": [
{
"code": "MR",
"system": "http://hl7.org/fhir/v2/0203"
}
]
},
"value": "c1ee4b49-3194-4b39-91ed-4d1393a780c6"
}
],
"maritalStatus": {
"coding": [
{
"code": "S",
"system": "http://hl7.org/fhir/v3/MaritalStatus"
}
],
"text": "S"
},
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"profile": [
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-PersonOfRecord"
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"multipleBirthBoolean": false,
"name": [
{
"family": "Diaz",
"given": [
"Christopher"
],
"prefix": [
"Mr."
],
"use": "official"
}
],
"resourceType": "Patient",
"telecom": [
{
"system": "phone",
"use": "home",
"value": "434-100-2918 x800"
}
],
"text": {
"div": "Generated by Synthea. Version identifier: 2dd4c1c37e2743d14e5073c7b5e42899a3e51531",
"status": "generated"
}
},
"search": {
"mode": "match"
}
}
],
"link": [
{
"relation": "search",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_has%3AProcedure%3Apatient%3Adate=eq2008-03-07"
},
{
"relation": "first",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_has%3AProcedure%3Apatient%3Adate=eq2008-03-07"
},
{
"relation": "self",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_has%3AProcedure%3Apatient%3Adate=eq2008-03-07"
}
],
"resourceType": "Bundle",
"total": 1,
"type": "searchset"
}
使用修饰符 :iterate 会以迭代方式计算 _include 的值。此修饰符后面可以有额外一层包含的结果参照,或后跟Observation:derived-from引用其他Observation之类的递归结构。
递归深度限制为两级:顶级和两个子级。例如,假设您有以下引用序列:
- 通过
Patient.generalPractitioner字段引用 PractitionerRole 资源的 Patient 资源。 - PractitionerRole 资源通过
PractitionerRole.practitioner字段引用 Practitioner 资源。 - 从业人员资源通过
Practitioner.qualification.issuer字段引用组织资源。
以下示例展示了引用序列。级别 3 的组织资源未包含在搜索结果中,因为它超出了两级上限。
Patient (Level 0)
- Patient.generalPractitioner -> PractitionerRole (Level 1)
- PractitionerRole.practitioner -> Practitioner (Level 2)
- Practitioner.organization -> Organization (Level 3)
以下其他示例描述了 :iterate 修饰符的行为:
Observation?_include:iterate=Observation:derived-from:Observation会搜索Observation资源,其后面以递归方式跟着匹配的Observation资源衍生引用、包含的资源引用。MedicationRequest?_revinclude=Provenance:target&_include:iterate=Provenance:agent将搜索MedicationRequest资源,并在此结果集中添加包含一个target的Provenance资源,然后还添加通过这些Provenance资源的agent参数引用的资源。
通配符 * 表示应包含所有可用作搜索参数的应用。您可以使用 * 通配符作为 _include 中的第一个参数和唯一参数,或者代替标准 _include 中的搜索参数名称,其中,第三个可选值将资源类型限制为与原始行为相同的单一类型。
例如:
Observation?_include=*搜索Observation资源,每项资源也会返回引用的所有资源。Observation?_include=Observation:*等同于之前的情况。MedicationRequest?_include=MedicationRequest:*:Patient为每个MedicationRequest资源返回对Patient资源的所有引用。
服务器会对资源进行去重处理,因此即使资源出现在多个引用中,每个结果页面也只会包含一个资源副本。如果主要结果与某个包含资源相关,则每个结果页上都会显示该包含资源。
管理包含的资源数量
请注意,使用 _include 和 _revinclude 参数添加的其他资源存在以下限制:
包含资源不计入页面大小。它们不会计入
Bundle.total,并且可能导致返回的资源数量大于指定的_count参数。由于包含资源不会计入页面大小,因此请谨慎使用可能产生很多结果的
_include和_revinclude参数。较大的结果大小可能会导致超时或错误。如果您希望包含大量结果,请考虑使用较小的_count值来限制主要结果的数量。避免遵循“一对多”关系,因为关系的“多”端没有边界。单个
_revinclude参数最多可添加 100 个额外资源。对于可能有超过 100 个资源引用主要结果的使用场景,请执行以下操作之一:- 使用单独的搜索查询请求,并使用页面大小和分页参数来检索更多结果。
从以下资源开始搜索:
假设 ID 为
1234的 Encounter 资源有数百个 Observation 资源。使用_revinclude(从就诊开始)搜索这些 Observation 资源会返回超出 100 个额外资源限制的响应:fhir/Encounter?_id=123&_revinclude=Observation:encounter请改为搜索 Observation 资源,并使用
_include包含相关的 Encounter:fhir/Observation?encounter=123&_include=Observation:encounter此方法会过滤 Observation 资源,仅保留与就诊相关的资源,并且仅检索一次就诊资源。
限制搜索结果中返回的字段
_elements 参数允许客户端请求仅为每个搜索结果返回一部分字段,以通过省略不必要的数据来减小响应大小。参数接受资源中以英文逗号分隔的基本元素名称列表,例如 Patient?_elements=identifier,contact,link。只有这些字段及其子字段才会包含在返回的资源中。响应中已被此参数更改的资源将包含 meta.tag 值 SUBSETTED,以指出它们不完整。
_elements 搜索示例
REST
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的 Google Cloud 项目 ID
- LOCATION:父级数据集的位置
- DATASET_ID:FHIR 存储区的父数据集
- FHIR_STORE_ID:FHIR 存储区 ID
如需发送请求,请选择以下方式之一:
curl
以下示例使用
Patient?_elements=identifier,contact,link 查询。
执行以下命令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?_elements=identifier,contact,link"
PowerShell
以下示例使用
Patient?_elements=identifier,contact,link 查询。
执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?_elements=identifier,contact,link" | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
{
"entry": [
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient3",
"resource": {
"id": "patient3",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"tag": [
{
"code": "SUBSETTED",
"system": "http://hl7.org/fhir/v3/ObservationValue"
}
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"resourceType": "Patient"
},
"search": {
"mode": "match"
}
},
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient2",
"resource": {
"id": "patient2",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"tag": [
{
"code": "SUBSETTED",
"system": "http://hl7.org/fhir/v3/ObservationValue"
}
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"resourceType": "Patient"
},
"search": {
"mode": "match"
}
},
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a",
"resource": {
"id": "8ac08aa9-63d2-4e81-8647-3a138d7f9f5a",
"identifier": [
{
"system": "https://github.com/synthetichealth/synthea",
"value": "c1ee4b49-3194-4b39-91ed-4d1393a780c6"
},
{
"system": "http://hl7.org/fhir/sid/us-ssn",
"type": {
"coding": [
{
"code": "SB",
"system": "http://hl7.org/fhir/identifier-type"
}
]
},
"value": "999169041"
},
{
"system": "urn:oid:2.16.840.1.113883.4.3.25",
"type": {
"coding": [
{
"code": "DL",
"system": "http://hl7.org/fhir/v2/0203"
}
]
},
"value": "S99992205"
},
{
"system": "http://standardhealthrecord.org/fhir/StructureDefinition/passportNumber",
"type": {
"coding": [
{
"code": "PPN",
"system": "http://hl7.org/fhir/v2/0203"
}
]
},
"value": "X12551631X"
},
{
"system": "http://hospital.smarthealthit.org",
"type": {
"coding": [
{
"code": "MR",
"system": "http://hl7.org/fhir/v2/0203"
}
]
},
"value": "c1ee4b49-3194-4b39-91ed-4d1393a780c6"
}
],
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"tag": [
{
"code": "SUBSETTED",
"system": "http://hl7.org/fhir/v3/ObservationValue"
}
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"resourceType": "Patient"
},
"search": {
"mode": "match"
}
},
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient1",
"resource": {
"id": "patient1",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"tag": [
{
"code": "SUBSETTED",
"system": "http://hl7.org/fhir/v3/ObservationValue"
}
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"resourceType": "Patient"
},
"search": {
"mode": "match"
}
}
],
"link": [
{
"relation": "search",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_elements=identifier%2Ccontact%2Clink"
},
{
"relation": "first",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_elements=identifier%2Ccontact%2Clink"
},
{
"relation": "self",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_elements=identifier%2Ccontact%2Clink"
}
],
"resourceType": "Bundle",
"total": 4,
"type": "searchset"
}
Cloud Healthcare API 对 _summary 参数提供有限支持,该参数提供一部分预定义的资源字段(类似于 _elements)。
_summary=text只会返回text、id和meta顶级字段_summary=data会移除text字段并返回所有其他字段