你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

排查 $convert-data 问题

注释

2024 年 5 月,我们发布了与 FHIR® 服务分离的独立 FHIR 转换器 API,并将其打包为容器 (Docker) 映像以供预览。 除了能够将数据从记录源转换为 FHIR R4 捆绑包之外,FHIR 转换器还提供许多净新功能,例如:

  • 从记录源到 FHIR R4 捆绑包的双向数据转换。 例如,FHIR 转换器可以将数据从 FHIR R4 格式转换回 HL7v2 格式。
  • 改进了自定义默认 Liquid 模板的体验。
  • 演示如何使用 Azure 数据工厂 (ADF) 创建 ETL(提取、转换、加载)管道的示例。

若要实现 FHIR 转换器容器映像,请参阅 FHIR 转换器 GitHub 项目

在本文中,学习如何对 $convert-data 进行排除故障。

性能

出现两个主要因素,用于确定 $convert-data 操作调用可能需要多长时间:

  • 消息的大小。
  • 模板的复杂性。

模板中的任何循环或迭代都可能会对性能产生重大影响。 $convert-data 操作具有应用模板后运行的后处理步骤。 具体而言,分工步骤可以屏蔽导致性能问题的模板问题。 更新模板以便不会生成重复项,可以提高性能。 有关后期处理步骤的详细信息和详细信息,请参阅后处理

后处理

$convert-data 操作在模板应用于输入后应用后处理逻辑。 与直接运行默认 Liquid 模板相比,此后处理逻辑可能会导致看起来不同的输出或意外错误。 后处理可确保输出有效 JSON,并根据为模板中的资源生成的 ID 属性删除任何重复项。 若要更详细地查看后期处理逻辑,请参阅 FHIR-Converter GitHub 存储库

消息大小

$convert-data 操作允许的消息大小没有硬性限制。 但是,对于请求大小大于 10 MB 的内容,可能会出现 500 服务器错误。 如果收到 500 服务器错误,请确保请求数低于 10 MB。

模板大小和复杂性

如果收到 504 Gateway Timeout 错误,可能是模板处理时间的结果。 更新模板以减少循环和迭代可以大大提高性能。 请考虑使用更小或更简单的模板重试请求。

转换 JSON 数据时为何转换日期?

JSON 数据中提供的日期可能采用与提供的日期不同的格式返回。 在 JSON 有效负载的反序列化过程中,标识为日期的字符串将转换为 .NET DateTime 对象。 然后,这些对象在通过 Liquid 模板引擎之前转换回字符串。 此转换可能导致日期值重新格式化,并表示为 FHIR 服务的本地时区。

可以使用布尔参数 jsonDeserializationTreatDatesAsStrings 禁用对 .NET DateTime 对象的字符串强制。 设置为 true 时,所提供的数据被视为字符串,在提供给 Liquid 引擎之前不会修改。

默认模板和自定义项

可以在 FHIR-Converter GitHub 存储库中找到许多常见方案的默认模板实现。 默认模板可用作自定义和创建自己的模板的指南和参考。 除了默认模板,$convert-data 操作还支持多个客户 Liquid 筛选器和标记,以帮助简化常见方案。

调试和测试

除了在服务实例上测试模板之外,Visual Studio Code 扩展也可用。 该扩展可用于修改模板,并使用示例数据有效负载对其进行测试。 FHIR 转换器 GitHub 存储库中还有几种现有的测试方案可用作参考。

排查 Azure 容器注册表问题

在对自定义模板存储使用 Azure 容器注册表 (ACR) 时,如果在读取模板时遇到“无法获取 Azure 容器注册表的访问令牌”错误,请检查以确保为托管标识配置正确的角色分配。 配置 $convert-data 的设置

后续步骤

$convert-data 概述

使用 Azure 门户配置 $convert-data 的设置

$convert-data 常见问题解答

注释

FHIR® 是 HL7 的注册商标,经 HL7 许可使用。