本页面介绍了如何创建、更新、修补、查看、列出、检索和删除 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 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
创建 Encounter 资源后,创建与 Encounter 资源相关联的观察资源。Observation 资源用于测量患者的心率,以每分钟心跳次数 (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:您创建 Encounter 资源时服务器返回的响应中的 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 才会创建新资源。
服务器的响应取决于有多少资源与搜索查询匹配:
会匹配出的结果 | HTTP 响应代码 | 行为 |
---|---|---|
零 | 200 OK |
创建新资源。 |
一个 | 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 标头创建 Observation 资源。当且仅当没有任何现有观察资源与查询 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:观察资源 ID
- PATIENT_ID:患者资源 ID
- ENCOUNTER_ID:遇到资源 ID
- BPM_VALUE:已更新的观察资源中的每分钟心跳次数 (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
复制请求正文并打开方法参考页面。API 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:观察资源中的每分钟心跳次数 (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
复制请求正文并打开方法参考页面。API Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。将请求正文粘贴到此工具中,填写任何其他必填字段,然后点击执行。
您应该收到类似以下内容的 JSON 响应:
修补 FHIR 资源
以下示例展示了如何调用 projects.locations.datasets.fhirStores.fhir.patch
方法来修补 FHIR 资源。该方法实现 FHIR 标准修补交互(DSTU2、STU3 和 R4)。
修补资源时,通过应用JSON 补丁文档中指定的操作来更新资源的一部分。
请求必须包含 JSON 补丁文档,而请求标头必须包含 Content-Type: application/json-patch+json
。
以下示例展示了如何修补观察资源。对患者每分钟心跳 (BPM) 的观察通过 replace
修补操作进行更新。
以下 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:观察资源 ID
- BPM_VALUE:已修补的观察资源中的每分钟心跳次数 (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
以下示例展示了如何使用 curl
和 PowerShell 发送 PATCH
请求,以便在 my-code-system
中的观察的标识符为 ABC-12345
时修改观察资源。对患者每分钟心跳 (BPM) 的观察是使用 replace
补丁操作进行更新。
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的 Google Cloud 项目的 ID
- LOCATION:数据集位置
- DATASET_ID:FHIR 存储区的父数据集
- FHIR_STORE_ID:FHIR 存储区 ID
- BPM_VALUE:观察资源中的每分钟心跳次数 (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
复制请求正文并打开方法参考页面。API 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:观察资源 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
打开方法参考页面。API Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。填写所有必填字段,然后点击执行。
您应该收到类似以下内容的 JSON 响应:
Go
Java
Node.js
Python
获取所有患者隔离区资源
以下示例展示了如何获取与特定患者隔离区(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:观察资源 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
打开方法参考页面。API Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。填写所有必填字段,然后点击执行。
您应该收到类似以下内容的 JSON 响应:
Go
Java
Node.js
Python
有条件地删除 FHIR 资源
在 Cloud Healthcare API v1 中,条件操作仅使用 identifier
搜索参数(如果 FHIR 资源类型存在该参数)来确定哪些 FHIR 资源与条件搜索查询匹配。
当且仅当资源的 identifier.system
为 my-code-system
且其 identifier.value
为 ABC-12345
时,FHIR 资源才会与查询 ?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 application-default 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 application-default 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
打开方法参考页面。API Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。填写所有必填字段,然后点击执行 (Execute)。
您应该会收到一个成功的状态代码 (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 格式返回空响应正文:
{}