将数据导入 Vertex AI Search Healthcare 后
数据存储区您可能在源代码中执行了以下任一更新
FHIR 存储区:
已添加新的 FHIR 资源
更新了现有 FHIR 资源
已删除的 FHIR 资源
在这种情况下,您可以将源 FHIR 存储区中的更改协调 到 Vertex AI Search 医疗保健数据存储区。
对账概览
关键术语 :Vertex AI Search 医疗保健数据存储区中的一个文档
对应于 FHIR 存储区中的 FHIR R4 资源。
您可以增量或完全对更改进行协调。下表比较了这两种模式。
对源 FHIR 存储区所做的更改
增量模式
完整模式
新的 FHIR 资源
向 Vertex AI Search 数据存储区添加新文档
向 Vertex AI Search 数据存储区添加新文档
已更新的 FHIR 资源
替换 Vertex AI Search 数据存储区中的现有文档,同时保留文档 ID
替换 Vertex AI Search 数据存储区中的现有文档,同时保留文档 ID
已删除的 FHIR 资源
不一致
从 Vertex AI Search 数据存储区中移除相应的文档
准备工作
查看您的 Google Cloud 项目的配额和限制 。
您的 Vertex AI Search 医疗保健数据存储区最多可包含
每个项目 100 万份文档。如果在导入过程中达到了此配额,
停止导入过程。
以下示例显示了如何导入
从 Cloud Healthcare API FHIR 存储区
documents.import
方法。
执行此任务所需的权限
授予以下权限
或 以下 Identity and Access Management (IAM)
分配给
service-PROJECT_NUMBER @gcp-sa-discoveryengine.iam.gserviceaccount.com
服务账号。
用于从 Cloud Healthcare API 中的 FHIR 存储区一次性导入 FHIR 数据。
权限
bigquery.jobs.create
bigquery.datasets.create
bigquery.tables.export
healthcare.datasets.get
healthcare.datasets.list
healthcare.fhirStores.get
healthcare.fhirStores.list
healthcare.fhirStores.export
角色
用于在 Cloud Healthcare API 中以流式方式导入 FHIR 存储区的 FHIR 数据(预览版)。
权限
healthcare.datasets.get
healthcare.datasets.list
healthcare.fhirStores.get
healthcare.fhirStores.update
healthcare.fhirStores.list
healthcare.fhirStores.export
healthcare.fhirResources.get
角色
如需在创建数据存储区(预览版)时自定义架构以配置索引功能,请执行以下操作:
FHIR 资源和元素的可搜索性和可检索性。
权限
storage.objects.create
storage.objects.delete
storage.objects.list
角色
导入引用 Google Cloud 中文件的 FHIR 数据。如果存在以下情况,系统会默认授予
引用的文件与 Vertex AI Search 应用位于同一 Google Cloud 项目中。
权限
storage.objects.get
storage.buckets.create
角色
REST
执行增量导入。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-H "X-Goog-User-Project: PROJECT_ID " \
"https://us-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID /locations/us/dataStores/DATA_STORE_ID /branches/0/documents:import" \
-d '{
"reconciliation_mode": "INCREMENTAL",
"fhir_store_source": {"fhir_store": "projects/PROJECT_ID /locations/CLOUD_HEALTHCARE_DATASET_LOCATION /datasets/CLOUD_HEALTHCARE_DATASET_ID /fhirStores/FHIR_STORE_ID "}
}'
替换以下内容:
PROJECT_ID
:您的 Google Cloud 项目的 ID。
DATA_STORE_ID
:Vertex AI Search 数据存储区的 ID。
CLOUD_HEALTHCARE_DATASET_ID
:包含源 FHIR 存储区的 Cloud Healthcare API 数据集的 ID。
CLOUD_HEALTHCARE_DATASET_LOCATION
:包含源 FHIR 存储区的 Cloud Healthcare API 数据集的位置。
FHIR_STORE_ID
:Cloud Healthcare API FHIR R4 存储区的 ID。
响应
您应该收到类似以下内容的 JSON 响应。响应
包含长时间运行的操作的标识符。长时间运行的操作
在方法调用可能需要大量时间时返回
。请记下 IMPORT_OPERATION_ID 的值。您需要使用此值
验证导入状态 。
{
"name": "projects/PROJECT_ID /locations/us/collections/default_collection/dataStores/DATA_STORE_ID /branches/0/operations/IMPORT_OPERATION_ID ",
"metadata": {
"@type": "type.googleapis.com/google.cloud.discoveryengine.v1alpha.ImportDocumentsMetadata"
}
}
验证 FHIR 数据导入操作是否已完成。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://us-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID /locations/us/collections/default_collection/dataStores/DATA_STORE_ID /branches/0/operations/IMPORT_OPERATION_ID "
替换以下内容:
PROJECT_ID
:您的 Google Cloud 项目的 ID。
DATA_STORE_ID
:Vertex AI Search 数据存储区的 ID。
IMPORT_OPERATION_ID
:调用 import
方法时返回的长时间运行的操作的操作 ID。
响应
您应该收到类似以下内容的 JSON 响应。导入操作是一项长时间运行的操作。操作运行期间,响应包含以下字段:
successCount
:表示到目前为止成功导入的 FHIR 资源的数量。
failureCount
:表示到目前为止未能导入的 FHIR 资源的数量。仅当有任何 FHIR 资源导入失败时,才会显示此字段。
操作完成后,响应包含以下字段:
successCount
:表示已成功导入的 FHIR 资源数量。
failureCount
:表示导入失败的 FHIR 资源的数量。仅当有任何 FHIR 资源导入失败时,才会显示此字段。
totalCount
:表示源 FHIR 存储区中存在的 FHIR 资源数量。仅当有任何 FHIR 资源导入失败时,才会显示此字段。
done
:值为 true
,表示导入操作已完成
errorSamples
:提供有关导入失败的资源的信息。仅当有任何 FHIR 资源导入失败时,才会显示此字段。
errorConfig
:提供包含错误摘要日志文件的 Cloud Storage 位置的路径。
{
"name": "projects/PROJECT_ID /locations/us/collections/default_collection/dataStores/DATA_STORE_ID /branches/0/operations/IMPORT_OPERATION_ID ",
"metadata": {
"@type": "type.googleapis.com/google.cloud.discoveryengine.v1alpha.ImportDocumentsMetadata",
"createTime": "START_TIMESTAMP ",
"updateTime": "END_TIMESTAMP ",
"successCount": "SUCCESS_COUNT ",
"failureCount": "FAILURE_COUNT ",
"totalCount": "TOTAL_COUNT ",
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.discoveryengine.v1alpha.ImportDocumentsResponse",
"errorSamples": [ERROR_SAMPLE ],
"errorConfig": {
"gcsPrefix": "LOG_FILE_LOCATION "
}
}
}