本页面介绍了如何完成以下任务:
- 在向 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 审核日志中每个请求的审核日志的 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"] } ... } ... }