本页面介绍了如何创建、更新、修补、查看、列出、检索和删除 FHIR 资源。
FHIR 资源可以包含有关患者、设备、观察结果之类的数据。如需查看 FHIR 资源的完整列表,请参阅 FHIR 资源索引(DSTU2、STU3 或 R4)。
本页面中的 curl
和 PowerShell 示例可与 R4 FHIR 存储区搭配使用,但如果您使用的是 DSTU2 或 STU3 FHIR 存储区,则我们无法保证一定有效。如果您使用的是 DSTU2 或 STU3 FHIR 存储区,请参阅 官方 FHIR 文档,了解如何将示例转换为您所使用的 FHIR 版本。
Go、Java、Node.js 和 Python 示例可与 STU3 FHIR 存储区搭配使用。
创建 FHIR 资源
您必须先创建一个 FHIR 存储区,然后才能创建 FHIR 资源。
curl
、PowerShell 和 Python 示例展示了如何创建以下 FHIR 资源:
所有其他语言的示例展示了如何创建通用 FHIR 资源。
如需了解详情,请参阅 projects.locations.datasets.fhirStores.fhir.create
。
以下 curl
和 PowerShell 示例可与 R4 FHIR 存储区搭配使用。Go、Java、Node.js 和 Python 示例可与 STU3 FHIR 存储区搭配使用。
REST
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的 Google Cloud 项目的 ID
- LOCATION:数据集位置
- DATASET_ID:FHIR 存储区的父数据集
- FHIR_STORE_ID:FHIR 存储区 ID
请求 JSON 正文:
{ "name": [ { "use": "official", "family": "Smith", "given": [ "Darcy" ] } ], "gender": "female", "birthDate": "1970-01-01", "resourceType": "Patient" }
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:
cat > request.json << 'EOF' { "name": [ { "use": "official", "family": "Smith", "given": [ "Darcy" ] } ], "gender": "female", "birthDate": "1970-01-01", "resourceType": "Patient" } EOF
然后,执行以下命令以发送 REST 请求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/fhir+json" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"
PowerShell
将请求正文保存在名为 request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:
@' { "name": [ { "use": "official", "family": "Smith", "given": [ "Darcy" ] } ], "gender": "female", "birthDate": "1970-01-01", "resourceType": "Patient" } '@ | Out-File -FilePath request.json -Encoding utf8
然后,执行以下命令以发送 REST 请求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/fhir+json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient" | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
Go
Java
Node.js
Python
创建“患者”资源后,请创建“相遇”资源来说明患者与医生之间的交互。
在 PATIENT_ID 字段中,替换您在创建“患者”资源时服务器返回的响应中的 ID。
以下 curl
和 PowerShell 示例可与 R4 FHIR 存储区搭配使用。Python 示例可与 STU3 FHIR 存储区搭配使用。
REST
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的 Google Cloud 项目的 ID
- LOCATION:数据集位置
- DATASET_ID:FHIR 存储区的父数据集
- FHIR_STORE_ID:FHIR 存储区 ID
- PATIENT_ID:您在创建“患者”资源时服务器返回的响应
请求 JSON 正文:
{ "status": "finished", "class": { "system": "http://hl7.org/fhir/v3/ActCode", "code": "IMP", "display": "inpatient encounter" }, "reasonCode": [ { "text": "The patient had an abnormal heart rate. She was concerned about this." } ], "subject": { "reference": "Patient/PATIENT_ID" }, "resourceType": "Encounter" }
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:
cat > request.json << 'EOF' { "status": "finished", "class": { "system": "http://hl7.org/fhir/v3/ActCode", "code": "IMP", "display": "inpatient encounter" }, "reasonCode": [ { "text": "The patient had an abnormal heart rate. She was concerned about this." } ], "subject": { "reference": "Patient/PATIENT_ID" }, "resourceType": "Encounter" } EOF
然后,执行以下命令以发送 REST 请求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/fhir+json" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Encounter"
PowerShell
将请求正文保存在名为 request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:
@' { "status": "finished", "class": { "system": "http://hl7.org/fhir/v3/ActCode", "code": "IMP", "display": "inpatient encounter" }, "reasonCode": [ { "text": "The patient had an abnormal heart rate. She was concerned about this." } ], "subject": { "reference": "Patient/PATIENT_ID" }, "resourceType": "Encounter" } '@ | Out-File -FilePath request.json -Encoding utf8
然后,执行以下命令以发送 REST 请求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/fhir+json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Encounter" | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
Python
在试用此示例之前,请按照 Cloud Healthcare API 快速入门:使用客户端库中的 Python 设置说明进行操作。 如需了解详情,请参阅 Cloud Healthcare API Python API 参考文档。
如需向 Cloud Healthcare API 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
创建“相遇”资源后,请创建与“相遇”资源关联的“观察结果”资源。“观察结果”资源测量了患者的每分钟心跳数 (BPM)(bpm
中的 80
)。
以下 curl
和 PowerShell 示例可与 R4 FHIR 存储区搭配使用。Python 示例可与 STU3 FHIR 存储区搭配使用。
REST
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的 Google Cloud 项目的 ID
- LOCATION:数据集位置
- DATASET_ID:FHIR 存储区的父数据集
- FHIR_STORE_ID:FHIR 存储区 ID
- PATIENT_ID:您在创建“患者”资源时服务器返回的响应中的 ID
- ENCOUNTER_ID:您在创建相遇资源时服务器返回的响应中的 ID
请求 JSON 正文:
{ "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/PATIENT_ID" }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "identifier": [ { "system": "my-code-system", "value": "ABC-12345" } ], "code": { "coding": [ { "system": "http://loinc.org", "code": "8867-4", "display": "Heart rate" } ] }, "valueQuantity": { "value": 80, "unit": "bpm" }, "encounter": { "reference": "Encounter/ENCOUNTER_ID" } }
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:
cat > request.json << 'EOF' { "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/PATIENT_ID" }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "identifier": [ { "system": "my-code-system", "value": "ABC-12345" } ], "code": { "coding": [ { "system": "http://loinc.org", "code": "8867-4", "display": "Heart rate" } ] }, "valueQuantity": { "value": 80, "unit": "bpm" }, "encounter": { "reference": "Encounter/ENCOUNTER_ID" } } EOF
然后,执行以下命令以发送 REST 请求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/fhir+json" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation"
PowerShell
将请求正文保存在名为 request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:
@' { "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/PATIENT_ID" }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "identifier": [ { "system": "my-code-system", "value": "ABC-12345" } ], "code": { "coding": [ { "system": "http://loinc.org", "code": "8867-4", "display": "Heart rate" } ] }, "valueQuantity": { "value": 80, "unit": "bpm" }, "encounter": { "reference": "Encounter/ENCOUNTER_ID" } } '@ | Out-File -FilePath request.json -Encoding utf8
然后,执行以下命令以发送 REST 请求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/fhir+json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation" | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
Python
在试用此示例之前,请按照 Cloud Healthcare API 快速入门:使用客户端库中的 Python 设置说明进行操作。 如需了解详情,请参阅 Cloud Healthcare API Python API 参考文档。
如需向 Cloud Healthcare API 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
有条件地创建 FHIR 资源
以下 curl
示例展示了如何使用 projects.locations.datasets.fhirStores.fhir.create
方法有条件地创建 FHIR 资源。该方法实现 FHIR 有条件的 create
交互 (DSTU2、STU3、R4)。
您可以使用有条件创建来避免创建重复的 FHIR 资源。例如,FHIR 服务器中的每个患者资源通常都有一个唯一标识符,例如医疗记录编号 (MRN)。如需创建新的患者资源并确保不存在具有相同 MRN 的患者资源,请使用搜索查询有条件地创建新资源。只有在搜索查询没有匹配项时,Cloud Healthcare API 才会创建新资源。
服务器的响应取决于与搜索查询匹配的资源数量:
Matches | HTTP 响应代码 | 行为 |
---|---|---|
零 | 201 CREATED |
创建新资源。 |
1 | 200 OK |
不会创建新的资源。 |
不止一个 | 412 Precondition Failed |
不会创建新资源,并返回 "search criteria are not selective enough" 错误。 |
如需使用基于条件的 create
互动(而非 create
互动),请在请求中指定包含 FHIR 搜索查询的 If-None-Exist
HTTP 标头:
If-None-Exist: FHIR_SEARCH_QUERY
在 Cloud Healthcare API v1 中,条件运算会专门使用 identifier
搜索参数(如果 FHIR 资源类型存在该参数)来确定哪些 FHIR 资源与条件搜索查询匹配。
REST
以下示例展示了如何使用 If-None-Exist: identifier=my-code-system|ABC-12345
HTTP 标头创建“观察结果”资源。仅当没有现有观察结果资源与查询 identifier=my-code-system|ABC-12345
匹配时,Cloud Healthcare API 才会创建该资源。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/fhir+json" \ -H "If-None-Exist: identifier=my-code-system|ABC-12345" \ -d @request.json \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation"
以下示例输出有意显示了失败的请求。如需查看成功请求的响应,请参阅创建 FHIR 资源。
如果有多个观察结果资源与查询匹配,Cloud Healthcare API 会返回以下响应,并且基于条件的创建请求会失败:
{
"issue": [
{
"code": "conflict",
"details": {
"text": "ambiguous_query"
},
"diagnostics": "search criteria are not selective enough",
"severity": "error"
}
],
"resourceType": "OperationOutcome"
}
更新 FHIR 资源
以下示例展示了如何使用 projects.locations.datasets.fhirStores.fhir.update
方法更新 FHIR 资源。该方法实现 FHIR 标准更新交互(DSTU2、STU3 和 R4)。
当您更新资源时,该资源的全部内容都会更新。 这与修补资源不同,后者只会更新资源的一部分内容。
如果 FHIR 存储区设置了 enableUpdateCreate
,则请求将被视为 upsert 操作(更新或插入),该操作会更新资源(如果资源存在)或者使用该请求中指定的 ID 插入资源(如果资源不存在)。
请求正文必须包含 JSON 编码的 FHIR 资源,而请求标头必须包含 Content-Type: application/fhir+json
。该资源必须包含一个 id
元素,其值与请求的 REST 路径中的 ID 值相同。
以下 curl
和 PowerShell 示例可与 R4 FHIR 存储区搭配使用。Go、Java、Node.js 和 Python 示例可与 STU3 FHIR 存储区搭配使用。
REST
以下示例展示了如何更新“观察结果”资源中的每分钟心跳数 (BPM)。
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的 Google Cloud 项目的 ID
- LOCATION:数据集位置
- DATASET_ID:FHIR 存储区的父数据集
- FHIR_STORE_ID:FHIR 存储区 ID
- OBSERVATION_ID:Observation 资源 ID
- PATIENT_ID:患者资源 ID
- ENCOUNTER_ID:相遇资源 ID
- BPM_VALUE:更新后的 Observation 资源中的每分钟节拍数 (BPM) 值
请求 JSON 正文:
{ "resourceType": "Observation", "id": "OBSERVATION_ID", "status": "final", "subject": { "reference": "Patient/PATIENT_ID" }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "identifier": [ { "system": "my-code-system", "value": "ABC-12345" } ], "code": { "coding": [ { "system": "http://loinc.org", "code": "8867-4", "display": "Heart rate" } ] }, "valueQuantity": { "value": BPM_VALUE, "unit": "bpm" }, "encounter": { "reference": "Encounter/ENCOUNTER_ID" } }
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:
cat > request.json << 'EOF' { "resourceType": "Observation", "id": "OBSERVATION_ID", "status": "final", "subject": { "reference": "Patient/PATIENT_ID" }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "identifier": [ { "system": "my-code-system", "value": "ABC-12345" } ], "code": { "coding": [ { "system": "http://loinc.org", "code": "8867-4", "display": "Heart rate" } ] }, "valueQuantity": { "value": BPM_VALUE, "unit": "bpm" }, "encounter": { "reference": "Encounter/ENCOUNTER_ID" } } EOF
然后,执行以下命令以发送 REST 请求:
curl -X PUT \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/OBSERVATION_ID"
PowerShell
将请求正文保存在名为 request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:
@' { "resourceType": "Observation", "id": "OBSERVATION_ID", "status": "final", "subject": { "reference": "Patient/PATIENT_ID" }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "identifier": [ { "system": "my-code-system", "value": "ABC-12345" } ], "code": { "coding": [ { "system": "http://loinc.org", "code": "8867-4", "display": "Heart rate" } ] }, "valueQuantity": { "value": BPM_VALUE, "unit": "bpm" }, "encounter": { "reference": "Encounter/ENCOUNTER_ID" } } '@ | Out-File -FilePath request.json -Encoding utf8
然后,执行以下命令以发送 REST 请求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PUT `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/OBSERVATION_ID" | Select-Object -Expand Content
API Explorer
复制请求正文并打开方法参考页面。APIs Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。 将请求正文粘贴到此工具中,填写任何其他必填字段,然后点击执行。
您应该收到类似以下内容的 JSON 响应:
Go
Node.js
Python
有条件地更新 FHIR 资源
以下示例展示了如何调用 projects.locations.datasets.fhirStores.fhir.conditionalUpdate
方法来更新与搜索查询匹配的 FHIR 资源,而不是按资源 ID 来标识资源。该方法实现 FHIR 标准有条件地更新交互(DSTU2、STU3 和 R4)。
一次只能对一项 FHIR 资源应用有条件更新。
服务器返回的响应取决于与搜索条件的匹配项数量:
- 一个匹配项:资源已成功更新或返回错误。
- 多个匹配项:请求返回
412 Precondition Failed
错误。 - 具有
id
的零匹配:如果搜索条件识别零匹配,提供的请求正文包含id
,且 FHIR 存储区将enableUpdateCreate
设为了true
,则系统将使用请求正文中的id
创建 FHIR 资源。 - 没有
id
的零匹配:如果搜索条件识别零匹配,且提供的请求正文不包含id
,则系统将使用服务器分配的 ID 创建 FHIR 资源,过程类似于使用projects.locations.datasets.fhirStores.fhir.create
创建资源。
请求正文必须包含 JSON 编码的 FHIR 资源,而请求标头必须包含 Content-Type: application/fhir+json
。
在 Cloud Healthcare API v1 中,条件运算会专门使用 identifier
搜索参数(如果 FHIR 资源类型存在该参数)来确定哪些 FHIR 资源与条件搜索查询匹配。
REST
以下示例展示了如何使用 curl
和 PowerShell 发送 PUT
请求,以使用“观察结果”的标识符(my-code-system
中的 ABC-12345
)修改“观察结果”资源。“观察结果”测量了患者的每分钟心跳数 (BPM)。
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的 Google Cloud 项目的 ID
- LOCATION:数据集位置
- DATASET_ID:FHIR 存储区的父数据集
- FHIR_STORE_ID:FHIR 存储区 ID
- PATIENT_ID:患者资源 ID
- ENCOUNTER_ID:相遇资源 ID
- BPM_VALUE:Observation 资源中的每分钟节拍数 (BPM) 值
请求 JSON 正文:
{ "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/PATIENT_ID" }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "identifier": [ { "system": "my-code-system", "value": "ABC-12345" } ], "code": { "coding": [ { "system": "http://loinc.org", "code": "8867-4", "display": "Heart rate" } ] }, "valueQuantity": { "value": BPM_VALUE, "unit": "bpm" }, "encounter": { "reference": "Encounter/ENCOUNTER_ID" } }
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:
cat > request.json << 'EOF' { "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/PATIENT_ID" }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "identifier": [ { "system": "my-code-system", "value": "ABC-12345" } ], "code": { "coding": [ { "system": "http://loinc.org", "code": "8867-4", "display": "Heart rate" } ] }, "valueQuantity": { "value": BPM_VALUE, "unit": "bpm" }, "encounter": { "reference": "Encounter/ENCOUNTER_ID" } } EOF
然后,执行以下命令以发送 REST 请求:
curl -X PUT \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation?identifier=my-code-system|ABC-12345"
PowerShell
将请求正文保存在名为 request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:
@' { "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/PATIENT_ID" }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "identifier": [ { "system": "my-code-system", "value": "ABC-12345" } ], "code": { "coding": [ { "system": "http://loinc.org", "code": "8867-4", "display": "Heart rate" } ] }, "valueQuantity": { "value": BPM_VALUE, "unit": "bpm" }, "encounter": { "reference": "Encounter/ENCOUNTER_ID" } } '@ | Out-File -FilePath request.json -Encoding utf8
然后,执行以下命令以发送 REST 请求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PUT `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation?identifier=my-code-system|ABC-12345" | Select-Object -Expand Content
API Explorer
复制请求正文并打开方法参考页面。APIs Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。 将请求正文粘贴到此工具中,填写任何其他必填字段,然后点击执行。
您应该收到类似以下内容的 JSON 响应:
修补 FHIR 资源
以下示例展示了如何调用 projects.locations.datasets.fhirStores.fhir.patch
方法来修补 FHIR 资源。该方法实现 FHIR 标准修补交互(DSTU2、STU3 和 R4)。
修补资源时,通过应用 JSON 补丁文档中指定的操作来更新资源的一部分。
请求必须包含 JSON 补丁文档,而请求标头必须包含 Content-Type: application/json-patch+json
。
以下示例展示了如何修补“观察结果”资源。使用 replace
补丁操作更新“观察结果”:患者的每分钟心跳数 (BPM)。
以下 curl
和 PowerShell 示例可与 R4 FHIR 存储区搭配使用。Go、Java、Node.js 和 Python 示例可与 STU3 FHIR 存储区搭配使用。
REST
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的 Google Cloud 项目的 ID
- LOCATION:数据集位置
- DATASET_ID:FHIR 存储区的父数据集
- FHIR_STORE_ID:FHIR 存储区 ID
- OBSERVATION_ID:Observation 资源 ID
- BPM_VALUE:已修补的 Observation 资源中的每分钟心跳次数 (BPM) 值
请求 JSON 正文:
[ { "op": "replace", "path": "/valueQuantity/value", "value": BPM_VALUE } ]
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:
cat > request.json << 'EOF' [ { "op": "replace", "path": "/valueQuantity/value", "value": BPM_VALUE } ] EOF
然后,执行以下命令以发送 REST 请求:
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json-patch+json" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/OBSERVATION_ID"
PowerShell
将请求正文保存在名为 request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:
@' [ { "op": "replace", "path": "/valueQuantity/value", "value": BPM_VALUE } ] '@ | Out-File -FilePath request.json -Encoding utf8
然后,执行以下命令以发送 REST 请求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json-patch+json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/OBSERVATION_ID" | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
Go
Java
Node.js
Python
在 FHIR 软件包中执行 PATCH
请求
您可以在 FHIR 软件包中指定 PATCH
请求(仅限 FHIR R4)。在 FHIR 软件包中执行 PATCH
请求后,您可以一次修补多个 FHIR 资源,而无需针对每个 FHIR 资源单独发出修补请求。
如需在软件包中发出 PATCH
请求,请在请求的 resource
对象中指定以下信息:
- 设置为
Binary
的resourceType
字段 - 设置为
application/json-patch+json
的contentType
字段 - 使用 base64 编码的补丁正文
确保 resource
对象如下所示:
"resource": {
"resourceType": "Binary",
"contentType": "application/json-patch+json",
"data": "WyB7ICJvcCI6ICJyZXBsYWNlIiwgInBhdGgiOiAiL2JpcnRoRGF0ZSIsICJ2YWx1ZSI6ICIxOTkwLTAxLTAxIiB9IF0K"
}
以下是已在 data
字段中编码为 base64 的补丁正文:
[
{
"op": "replace",
"path": "/birthdate",
"value": "1990-01-01"
}
]
以下示例展示了如何在软件包中使用 PATCH
请求修补您在创建 FHIR 资源中创建的患者资源,使其 birthDate
值为 1990-01-01
:
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的 Google Cloud 项目 ID
- LOCATION:父级数据集的位置
- DATASET_ID:FHIR 存储区的父数据集
- FHIR_STORE_ID:FHIR 存储区 ID
- PATIENT_ID:现有患者资源的 ID
请求 JSON 正文:
{ "type": "transaction", "resourceType": "Bundle", "entry": [ { "request": { "method": "PATCH", "url": "Patient/PATIENT_ID" }, "resource": { "resourceType": "Binary", "contentType": "application/json-patch+json", "data": "WyB7ICJvcCI6ICJyZXBsYWNlIiwgInBhdGgiOiAiL2JpcnRoRGF0ZSIsICJ2YWx1ZSI6ICIxOTkwLTAxLTAxIiB9IF0K" } } ] }
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:
cat > request.json << 'EOF' { "type": "transaction", "resourceType": "Bundle", "entry": [ { "request": { "method": "PATCH", "url": "Patient/PATIENT_ID" }, "resource": { "resourceType": "Binary", "contentType": "application/json-patch+json", "data": "WyB7ICJvcCI6ICJyZXBsYWNlIiwgInBhdGgiOiAiL2JpcnRoRGF0ZSIsICJ2YWx1ZSI6ICIxOTkwLTAxLTAxIiB9IF0K" } } ] } EOF
然后,执行以下命令以发送 REST 请求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/fhir+json" \
-d @request.json \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir"
PowerShell
将请求正文保存在名为 request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:
@' { "type": "transaction", "resourceType": "Bundle", "entry": [ { "request": { "method": "PATCH", "url": "Patient/PATIENT_ID" }, "resource": { "resourceType": "Binary", "contentType": "application/json-patch+json", "data": "WyB7ICJvcCI6ICJyZXBsYWNlIiwgInBhdGgiOiAiL2JpcnRoRGF0ZSIsICJ2YWx1ZSI6ICIxOTkwLTAxLTAxIiB9IF0K" } } ] } '@ | Out-File -FilePath request.json -Encoding utf8
然后,执行以下命令以发送 REST 请求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/fhir+json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir" | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
有条件地修补 FHIR 资源
以下示例展示了如何调用 projects.locations.datasets.fhirStores.fhir.conditionalPatch
方法来修补与搜索查询匹配的 FHIR 资源,而不是按资源 ID 来标识资源。该方法实现 FHIR 标准有条件地修补交互(DSTU2、STU3 和 R4)。
一项资源一次只能应用一个有条件地修补。如果搜索条件识别多个匹配项,则请求会返回 412 Precondition Failed
错误。
在 Cloud Healthcare API v1 中,条件运算会专门使用 identifier
搜索参数(如果 FHIR 资源类型存在该参数)来确定哪些 FHIR 资源与条件搜索查询匹配。
REST
以下示例展示了在“观察结果”的标识符是位于 my-code-system
的 ABC-12345
的情况下如何使用 curl
和 PowerShell 发送修改“观察结果”资源的 PATCH
请求。
使用 replace
补丁操作更新“观察结果”:患者的每分钟心跳数 (BPM)。
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的 Google Cloud 项目的 ID
- LOCATION:数据集位置
- DATASET_ID:FHIR 存储区的父数据集
- FHIR_STORE_ID:FHIR 存储区 ID
- BPM_VALUE:Observation 资源中的每分钟节拍数 (BPM) 值
请求 JSON 正文:
[ { "op": "replace", "path": "/valueQuantity/value", "value": BPM_VALUE } ]
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:
cat > request.json << 'EOF' [ { "op": "replace", "path": "/valueQuantity/value", "value": BPM_VALUE } ] EOF
然后,执行以下命令以发送 REST 请求:
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json-patch+json" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation?identifier=my-code-system|ABC-12345"
PowerShell
将请求正文保存在名为 request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:
@' [ { "op": "replace", "path": "/valueQuantity/value", "value": BPM_VALUE } ] '@ | Out-File -FilePath request.json -Encoding utf8
然后,执行以下命令以发送 REST 请求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json-patch+json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation?identifier=my-code-system|ABC-12345" | Select-Object -Expand Content
API Explorer
复制请求正文并打开方法参考页面。APIs Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。 将请求正文粘贴到此工具中,填写任何其他必填字段,然后点击执行。
您应该收到类似以下内容的 JSON 响应:
获得 FHIR 资源
以下示例展示了如何使用 projects.locations.datasets.fhirStores.fhir.read
方法获取 FHIR 资源的内容。
以下 curl
和 PowerShell 示例可与 R4 FHIR 存储区搭配使用。Go、Java、Node.js 和 Python 示例可与 STU3 FHIR 存储区搭配使用。
控制台
如需获取 FHIR 资源的内容,请按照以下步骤操作:
在 Google Cloud 控制台中,进入 FHIR 查看器页面。
在 FHIR 存储区 (FHIR Store) 下拉列表中,选择一个数据集,然后在该数据集中选择 FHIR 存储区。
如需过滤资源类型列表,请搜索您要显示的资源类型。
点击资源类型字段。
在显示的属性下拉列表中,选择资源类型。
输入一种资源类型。
如需搜索其他资源类型,请从显示的运算符下拉列表中选择 OR,然后输入其他资源类型。
在资源类型列表中,选择您要获取其内容的资源的类型。
在显示的资源表中,选择或搜索资源。
REST
以下示例展示了如何获取上一部分中创建的“观察结果”资源的详细信息。
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的 Google Cloud 项目的 ID
- LOCATION:数据集位置
- DATASET_ID:FHIR 存储区的父数据集
- FHIR_STORE_ID:FHIR 存储区 ID
- OBSERVATION_ID:Observation 资源 ID
如需发送请求,请选择以下方式之一:
curl
执行以下命令:
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/OBSERVATION_ID"
PowerShell
执行以下命令:
$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/OBSERVATION_ID" | Select-Object -Expand Content
API Explorer
打开方法参考页面。APIs Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。 填写所有必填字段,然后点击执行。
您应该收到类似以下内容的 JSON 响应:
Go
Java
Node.js
Python
获取所有 Encounter 资源详细信息
以下示例展示了如何使用 projects.locations.datasets.fhirStores.fhir.Encounter-everything
方法查看“相遇”资源的详细信息以及与相遇相关的所有资源。
该方法实现了以下 FHIR 版本中定义的 FHIR 扩展操作 Encounter-everything
:
REST
使用 projects.locations.datasets.fhirStores.fhir.Encounter-everything
方法。
在使用任何请求数据之前,请先进行以下替换:
PROJECT_ID
:您的 Google Cloud 项目的 IDLOCATION
:数据集位置DATASET_ID
:数据集 IDFHIR_STORE_ID
:FHIR 存储区 IDENCOUNTER_ID
:相遇资源 ID
如需发送请求,请选择以下方式之一:
curl
执行以下命令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Encounter/ENCOUNTER_ID/\$everything"
PowerShell
执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Encounter/ENCOUNTER_ID/\$everything" | Select-Object -Expand Content
c427ce3e-7677-400e-bc06-33a8cecfdd77
的 Encounter 资源(gs://gcp-public-data--synthea-fhir-data-10-patients/fhir_r4_ndjson/
公共 Cloud Storage 存储分区中的合成资源)调用该方法时,系统会返回以下示例响应。
获取所有患者隔离区资源
以下示例展示了如何获取与特定患者隔离区(DSTU2、STU3 和 R4)关联的所有资源。如需了解详情,请参阅 projects.locations.datasets.fhirStores.fhir.Patient-everything
。
以下 curl
和 PowerShell 示例可与 R4 FHIR 存储区搭配使用。Go、Java、Node.js 和 Python 示例可与 STU3 FHIR 存储区搭配使用。
curl
要获取患者隔离区中的资源,请发出 GET
请求并指定以下信息:
- 父数据集的名称
- FHIR 存储区的名称
- 患者的 ID
- 访问令牌
以下示例展示了使用 curl
的 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/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID/\$everything"
如果请求成功,则服务器返回 JSON 格式的类似下列示例的响应:
{ "entry": [ { "resource": { "birthDate": "1970-01-01", "gender": "female", "id": "PATIENT_ID", "name": [ { "family": "Smith", "given": [ "Darcy" ], "use": "official" } ], "resourceType": "Patient" } }, { "resource": { "class": { "code": "IMP", "display": "inpatient encounter", "system": "http://hl7.org/fhir/v3/ActCode" }, "id": "ENCOUNTER_ID", "reasonCode": [ { "text": "The patient had an abnormal heart rate. She was concerned about this." } ], "resourceType": "Encounter", "status": "finished", "subject": { "reference": "Patient/PATIENT_ID" } } }, { "resource": { "encounter": { "reference": "Encounter/ENCOUNTER_ID" }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "id": "OBSERVATION_ID", "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/PATIENT_ID" }, "valueQuantity": { "unit": "bpm", "value": BPM_VALUE } } } ], "resourceType": "Bundle", "type": "searchset" }
PowerShell
要获取患者隔离区中的资源,请发出 GET
请求并指定以下信息:
- 父数据集的名称
- FHIR 存储区的名称
- 患者的 ID
- 访问令牌
以下示例展示了使用 PowerShell 的 GET
请求:
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-RestMethod ` -Method Get ` -Headers $headers ` -Uri 'https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/RESOURCE_ID/$everything' | ConvertTo-Json
如果请求成功,则服务器返回 JSON 格式的类似下列示例的响应:
{ "entry": [ { "resource": { "birthDate": "1970-01-01", "gender": "female", "id": "PATIENT_ID", "name": [ { "family": "Smith", "given": [ "Darcy" ], "use": "official" } ], "resourceType": "Patient" } }, { "resource": { "class": { "code": "IMP", "display": "inpatient encounter", "system": "http://hl7.org/fhir/v3/ActCode" }, "id": "ENCOUNTER_ID", "reasonCode": [ { "text": "The patient had an abnormal heart rate. She was concerned about this." } ], "resourceType": "Encounter", "status": "finished", "subject": { "reference": "Patient/PATIENT_ID" } } }, { "resource": { "encounter": { "reference": "Encounter/ENCOUNTER_ID" }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "id": "OBSERVATION_ID", "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/PATIENT_ID" }, "valueQuantity": { "unit": "bpm", "value": BPM_VALUE } } } ], "resourceType": "Bundle", "type": "searchset" }
Go
Java
Node.js
Python
获取按类型或日期过滤的患者隔离区资源
以下示例展示了如何获取与按一组类型过滤以及自指定日期和时间开始的特定患者隔离区 (R4) 关联的所有资源。如需了解详情,请参阅 projects.locations.datasets.fhirStores.fhir.Patient-everything
。
以下 curl
和 PowerShell 示例可与 R4 FHIR 存储区搭配使用。
curl
要获取指定类型以及自指定日期开始的患者隔离区中的资源,请发出 GET
请求并指定以下信息:
- 父数据集的名称
- FHIR 存储区的名称
- 患者的 ID
- 包含以逗号分隔的资源类型列表和开始日期的查询字符串
- 访问令牌
以下示例展示了使用 curl
的 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/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID/\$everything?_type=RESOURCE_TYPES&_since=DATE"
如果请求成功,服务器将以 JSON 格式返回符合指定条件的资源:
PowerShell
要获取指定类型以及自指定日期开始的患者隔离区中的资源,请发出 GET
请求并指定以下信息:
- 父数据集的名称
- FHIR 存储区的名称
- 患者的 ID
- 包含以逗号分隔的资源类型列表和开始日期的查询字符串
- 访问令牌
以下示例展示了使用 PowerShell 的 GET
请求:
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-RestMethod ` -Method Get ` -Headers $headers ` -Uri 'https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/RESOURCE_ID/$everything?_type=RESOURCE_TYPES&_since=DATE' | ConvertTo-Json
如果请求成功,服务器将以 JSON 格式返回符合指定条件的资源:
列出 FHIR 资源版本
以下示例展示了如何列出 FHIR 资源的所有历史版本。如需了解详情,请参阅 projects.locations.datasets.fhirStores.fhir.history
。
这些示例使用创建 FHIR 资源中创建的资源,并展示如何列出“观察结果”资源的版本。
以下 curl
和 PowerShell 示例可与 R4 FHIR 存储区搭配使用。Go、Java、Node.js 和 Python 示例可与 STU3 FHIR 存储区搭配使用。
curl
以下示例展示了如何列出“观察结果”资源的所有版本。观察结果在最初创建后更新了一次,以更改患者的每分钟心跳数 (BPM)。
要列出 FHIR 资源的所有版本(包括当前版本和所有已删除的版本),请发出 GET
请求并指定以下信息:
- 父数据集的名称
- FHIR 存储区的名称
- 资源类型和 ID
- 访问令牌
以下示例展示了使用 curl
的 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/fhirStores/FHIR_STORE_ID/fhir/RESOURCE_TYPE/RESOURCE_ID/_history"
如果请求成功,服务器将以 JSON 格式返回响应。在此示例中,它会返回两个版本的观察结果。在第一个版本中,患者的心率是 75 BPM。在第二个版本中,患者的心率是 85 BPM。
{ "entry": [ { "resource": { "effectiveDateTime": "2020-01-01T00:00:00+00:00", "id": "OBSERVATION_ID", "meta": { "lastUpdated": "2020-01-02T00:00:00+00:00", "versionId": "MTU0MTE5MDk5Mzk2ODcyODAwMA" }, "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/PATIENT_ID" }, "valueQuantity": { "unit": "bpm", "value": 85 } } }, { "resource": { "encounter": { "reference": "Encounter/ENCOUNTER_ID" }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "id": "OBSERVATION_ID", "meta": { "lastUpdated": "2020-01-01T00:00:00+00:00", "versionId": "MTU0MTE5MDg4MTY0MzQ3MjAwMA" }, "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/PATIENT_ID" }, "valueQuantity": { "unit": "bpm", "value": 75 } } } ], "resourceType": "Bundle", "type": "history" }
PowerShell
以下示例展示了如何列出“观察结果”资源的所有版本。观察结果在最初创建后更新了一次,以更改患者的每分钟心跳数 (BPM)。
要列出 FHIR 资源的所有版本(包括当前版本和所有已删除的版本),请发出 GET
请求并指定以下信息:
- 父数据集的名称
- FHIR 存储区的名称
- 资源类型和 ID
- 访问令牌
以下示例展示了使用 PowerShell 的 GET
请求。
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-RestMethod ` -Method Get ` -Headers $headers ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/RESOURCE_TYPE/RESOURCE_ID/_history" | Select-Object -Expand Content
如果请求成功,服务器将以 JSON 格式返回响应。在此示例中,它会返回两个版本的观察结果。在第一个版本中,患者的心率是 75 BPM。在第二个版本中,患者的心率是 85 BPM。
{ "entry": [ { "resource": { "effectiveDateTime": "2020-01-01T00:00:00+00:00", "id": "OBSERVATION_ID", "meta": { "lastUpdated": "2020-01-02T00:00:00+00:00", "versionId": "MTU0MTE5MDk5Mzk2ODcyODAwMA" }, "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/PATIENT_ID" }, "valueQuantity": { "unit": "bpm", "value": 85 } } }, { "resource": { "encounter": { "reference": "Encounter/ENCOUNTER_ID" }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "id": "OBSERVATION_ID", "meta": { "lastUpdated": "2020-01-01T00:00:00+00:00", "versionId": "MTU0MTE5MDg4MTY0MzQ3MjAwMA" }, "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/PATIENT_ID" }, "valueQuantity": { "unit": "bpm", "value": 75 } } } ], "resourceType": "Bundle", "type": "history" }
Go
Java
Node.js
Python
检索 FHIR 资源版本
以下示例展示了如何检索资源的特定版本。
如需了解详情,请参阅 projects.locations.datasets.fhirStores.fhir.vread
。
下面着重强调列出 FHIR 资源版本中的“观察结果”资源的版本 ID:
{ "entry": [ { "resource": { "effectiveDateTime": "2020-01-01T00:00:00+00:00", "id": "OBSERVATION_ID", "meta": { "lastUpdated": "2020-01-02T00:00:00+00:00", "versionId": "MTU0MTE5MDk5Mzk2ODcyODAwMA" }, ... { "resource": { "encounter": { "reference": "Encounter/ENCOUNTER_ID" }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "id": "OBSERVATION_ID", "meta": { "lastUpdated": "2020-01-01T00:00:00+00:00", "versionId": "MTU0MTE5MDg4MTY0MzQ3MjAwMA" }, ... }
以下示例使用创建 FHIR 资源中创建的资源,并展示如何查看“观察结果”资源。
以下 curl
和 PowerShell 示例可与 R4 FHIR 存储区搭配使用。Go、Node.js 和 Python 示例可与 STU3 FHIR 存储区搭配使用。
curl
要获取 FHIR 资源的特定版本,请发出 GET
请求并指定以下信息:
- 父数据集的名称
- FHIR 存储区的名称
- 资源类型和 ID
- 资源版本
- 访问令牌
以下示例展示了使用 curl
的 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/fhirStores/FHIR_STORE_ID/fhir/RESOURCE_TYPE/RESOURCE_ID/_history/RESOURCE_VERSION"
如果请求成功,服务器将以 JSON 格式返回响应。在此示例中,服务器会返回第一个版本的观察结果,其中患者的心率是 75 BPM。
{ "encounter": { "reference": "Encounter/ENCOUNTER_ID" }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "id": "OBSERVATION_ID", "meta": { "lastUpdated": "2020-01-01T00:00:00+00:00", "versionId": "MTU0MTE5MDg4MTY0MzQ3MjAwMA" }, "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/PATIENT_ID" }, "valueQuantity": { "unit": "bpm", "value": 75 } }
PowerShell
要获取 FHIR 资源的特定版本,请发出 GET
请求并指定以下信息:
- 父数据集的名称
- FHIR 存储区的名称
- 资源类型和 ID
- 资源版本
- 访问令牌
以下示例展示了使用 curl
的 GET
请求。
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-RestMethod ` -Method Get ` -Headers $headers ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/RESOURCE_TYPE/RESOURCE_ID/RESOURCE_VERSION/_history" | Select-Object -Expand Content
如果请求成功,服务器将以 JSON 格式返回响应。在此示例中,服务器会返回第一个版本的观察结果,其中患者的心率是 75 BPM。
{ "encounter": { "reference": "Encounter/ENCOUNTER_ID" }, "effectiveDateTime": "2020-01-01T00:00:00+00:00", "id": "OBSERVATION_ID", "meta": { "lastUpdated": "2020-01-01T00:00:00+00:00", "versionId": "MTU0MTE5MDg4MTY0MzQ3MjAwMA" }, "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/PATIENT_ID" }, "valueQuantity": { "unit": "bpm", "value": 75 } }
Go
Java
Node.js
Python
删除 FHIR 资源
以下示例展示了如何调用 projects.locations.datasets.fhirStores.fhir.delete
方法来删除“观察结果”FHIR 资源。
无论操作是否成功,服务器都会返回 200 OK
HTTP 状态代码。要检查是否已成功删除资源,请搜索或获取该资源并查看它是否存在。
以下 curl
和 PowerShell 示例可与 R4 FHIR 存储区搭配使用。Go、Java、Node.js 和 Python 示例可与 STU3 FHIR 存储区搭配使用。
REST
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的 Google Cloud 项目的 ID
- LOCATION:数据集位置
- DATASET_ID:FHIR 存储区的父数据集
- FHIR_STORE_ID:FHIR 存储区 ID
- OBSERVATION_ID:Observation 资源 ID
如需发送请求,请选择以下方式之一:
curl
执行以下命令:
curl -X DELETE \
-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/OBSERVATION_ID"
PowerShell
执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/OBSERVATION_ID" | Select-Object -Expand Content
API Explorer
打开方法参考页面。APIs Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。 填写所有必填字段,然后点击执行。
您应该收到类似以下内容的 JSON 响应:
Go
Java
Node.js
Python
有条件地删除 FHIR 资源
在 Cloud Healthcare API v1 中,条件操作会专门使用 identifier
搜索参数(如果 FHIR 资源类型存在该参数)来确定哪些 FHIR 资源与条件搜索查询匹配。
只有当 FHIR 资源的 identifier.system
为 my-code-system
且 identifier.value
为 ABC-12345
时,该资源才与查询 ?identifier=my-code-system|ABC-12345
匹配。如果有 FHIR 资源与查询匹配,Cloud Healthcare API 会删除该资源。
如果查询使用 identifier
搜索参数并与多个 FHIR 资源匹配,Cloud Healthcare API 会返回 "412 - Condition not selective enough"
错误。如需逐个删除资源,请按以下步骤操作:
以下示例展示了如何有条件地删除与搜索查询匹配的 FHIR 资源,而不是按资源 ID 来标识 FHIR 资源。搜索查询使用“观察结果”的标识符(my-code-system
中的 ABC-12345
)匹配并删除“观察结果”资源。
REST
使用 projects.locations.datasets.fhirStores.fhir.conditionalDelete
方法。
在使用任何请求数据之前,请先进行以下替换:
PROJECT_ID
:您的 Google Cloud 项目的 IDLOCATION
:数据集位置DATASET_ID
:FHIR 存储区的父数据集FHIR_STORE_ID
:FHIR 存储区 ID
如需发送请求,请选择以下方式之一:
curl
执行以下命令:
curl -X DELETE \
-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?identifier=my-code-system|ABC-12345"
PowerShell
执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation?identifier=my-code-system|ABC-12345" | Select-Object -Expand Content
API Explorer
打开方法参考页面。APIs Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。 填写所有必填字段,然后点击执行。
您应该会收到一个成功的状态代码 (2xx) 和一个空响应。
删除 FHIR 资源的历史版本
以下示例展示了如何删除 FHIR 资源的所有历史版本。如需了解详情,请参阅 projects.locations.datasets.fhirStores.fhir.Resource-purge
。
只有具有 roles/healthcare.fhirStoreAdmin
角色的用户(调用者)才能调用 projects.locations.datasets.fhirStores.fhir.Resource-purge
方法;具有 roles/healthcare.fhirResourceEditor
角色的用户无法调用该方法。要允许调用者删除 FHIR 资源的历史版本,请执行以下任一操作:
- 确保调用者具有
roles/healthcare.fhirStoreAdmin
角色。 - 创建具有
healthcare.fhirResources.purge
权限的自定义 IAM 角色,并将此角色分配给调用者。
这些示例使用创建 FHIR 资源中创建的资源,并展示如何删除“观察结果”资源的历史版本。
以下 curl
和 PowerShell 示例可与 R4 FHIR 存储区搭配使用。Go、Java、Node.js 和 Python 示例可与 STU3 FHIR 存储区搭配使用。
curl
要删除 FHIR 资源的所有历史版本,请发出 DELETE
请求并指定以下信息:
- 父数据集的名称
- FHIR 存储区的名称
- 资源类型和 ID
- 访问令牌
以下示例展示了使用 curl
的 DELETE
请求。
curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/fhir+json; charset=utf-8" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/RESOURCE_TYPE/RESOURCE_ID/\$purge"
如果请求成功,服务器将以 JSON 格式返回空响应正文:
{}
PowerShell
要删除 FHIR 资源的所有历史版本,请发出 DELETE
请求并指定以下信息:
- 父数据集的名称
- FHIR 存储区的名称
- 资源类型和 ID
- 访问令牌
以下示例展示了使用 PowerShell 的 DELETE
请求。
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-RestMethod ` -Method Delete ` -Headers $headers ` -ContentType: "application/fhir+json; charset=utf-8" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/RESOURCE_TYPE/RESOURCE_ID/$purge" | ConvertTo-Json
如果请求成功,服务器将以 JSON 格式返回空响应正文:
{}