本页面介绍了如何完成以下任务:
- 在向 Cloud Healthcare API 发出的请求中配置自定义 HTTP 标头。
使用 Cloud Audit Logs 搜索请求及其匹配的自定义 HTTP 标头,以便执行以下操作:
- 查看谁发送了请求,以及何时发送了请求。
- 通过查找哪个请求导致了特定错误,简化了部署和调试。
如需详细了解如何在 Cloud Healthcare API 中使用 Cloud Audit Logs,请参阅查看 Cloud Audit Logs。
可配置的方法
您可以在以下 REST 资源中为 Cloud Healthcare API 方法配置自定义 HTTP 标头:
projects.locations
projects.locations.datasets
projects.locations.dicomStores
projects.locations.dicomStores.studies
projects.locations.dicomStores.studies.series
projects.locations.dicomStores.studies.series.instances
projects.locations.dicomStores.studies.series.instances.frames
projects.locations.datasets.fhirStores
projects.locations.datasets.fhirStores.fhir
projects.locations.datasets.hl7V2Stores
projects.locations.datasets.hl7V2Stores.messages
projects.locations.datasets.operations
配置自定义 HTTP 标头
Cloud Healthcare API 请求中可以指定两种类型的自定义 HTTP 标头并在审核日志中查看。您可以单独使用或组合使用每种类型。
自定义 ID 日志记录。您可以指定
X-Request-Id
自定义 HTTP 标头来为每个请求提供专属的自定义 ID,然后在审核日志中搜索包含该 ID 的请求。若要提供自定义 ID,请按以下格式指定自定义 HTTP 标头:X-Request-Id: REQUEST_ID
在每个请求中为 REQUEST_ID 指定唯一值。
大多数编程语言都有生成随机 ID 的方式,您可以使用这些 ID 创建请求 ID。例如,Python
uuid
模块包含一个uuid.uuid4()
函数,您可以使用该函数为每个请求自动生成 ID。Cloud Healthcare API 不会生成请求 ID。元数据日志记录。您可以使用
X-Goog-Healthcare-Audit-IDENTIFIER
标头在自定义 HTTP 标头中添加其他元数据信息。标题可唯一标识元数据信息的类型。元数据会存储在每个请求的审核日志中。如需提供元数据信息,请按以下格式指定一个或多个自定义 HTTP 标头:
X-Goog-Healthcare-Audit-IDENTIFIER: VALUE
将 IDENTIFIER 替换为简单易懂的标识符。 将 VALUE 替换为元数据的值。 您可以使用以下语法在逗号分隔列表中指定多个值:
X-Goog-Healthcare-Audit-IDENTIFIER: VALUE_1, VALUE_2, VALUE_n ...
例如:
X-Goog-Healthcare-Audit-MyIdentifier: Value1, Value2, Value3
您还可以指定多个具有自己的唯一值的自定义 HTTP 标头:
X-Goog-Healthcare-Audit-MyIdentifier1: Value1, Value2 X-Goog-Healthcare-Audit-MyIdentifier2: Value3
查看 Cloud Audit Logs 中的审核日志
请参阅查看日志。
示例
以下示例演示了在 fhir.create
请求中指定自定义 HTTP 标头的场景。
假设您正在运行一项研究,并且您有一个名为PatientApp
的患者移动应用。研究中的患者分为两个同类群组:Cohort1
和 Cohort2
。要使用唯一的 ID 和移动应用的名称来识别 Cohort1
中的每个请求,请在每个请求中指定以下自定义 HTTP 标头:
X-Request-Id: REQUEST_ID X-Goog-Healthcare-Audit-AppName: PatientApp X-Goog-Healthcare-Audit-CohortName: Cohort1
自定义 HTTP 标头显示在 Cloud Audit Logs 中每个请求的审核日志的 metadata
字段中。
以下示例展示了如何使用 curl
在 FHIR 存储区中创建新的患者资源。该请求包含以下自定义 HTTP 标头:
X-Request-Id: 123
X-Goog-Healthcare-Audit-AppName: PatientApp
X-Goog-Healthcare-Audit-CohortName: Cohort1
在发送请求之前,请替换以下内容:
- PROJECT_ID:您的 Google Cloud 项目的 ID
- LOCATION:数据集位置
- DATASET_ID:FHIR 存储区的父数据集
- FHIR_STORE_ID:FHIR 存储区 ID
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -H "X-Request-Id: 123" \ -H "X-Goog-Healthcare-Audit-AppName: PatientApp" \ -H "X-Goog-Healthcare-Audit-CohortName: Cohort1" \ --data '{ "name": [ { "use": "official", "family": "Smith", "given": [ "Darcy" ] } ], "gender": "female", "birthDate": "1970-01-01", "resourceType": "Patient" }' "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"
输出如下所示:
{ "birthDate": "1970-01-01", "gender": "female", "id": "PATIENT_ID", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ", "versionId": "VERSION_ID" }, "name": [ { "family": "Smith", "given": [ "Darcy" ], "use": "official" } ], "resourceType": "Patient" }
如果您在 Cloud Audit Logs 中搜索请求,审核日志将如下所示:
{ logName: "projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_write" protoPayload: { @type: "type.googleapis.com/google.cloud.audit.AuditLog" metadata: { X-Request-Id: [123] X-Goog-Healthcare-Audit-AppName: ["PatientApp"] X-Goog-Healthcare-Audit-CohortName: ["Cohort1"] } ... } ... }