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

FHIR 服务中的 $convert-data

注意

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

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

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

使用 FHIR® 服务中的 $convert-data 操作可将运行状况数据从各种格式转换为 FHIR R4 数据。 $convert-data 操作使用 FHIR 转换器项目中的 Liquid 模板进行 FHIR 数据转换。 可根据需要自定义这些转换模板。

$convert-data 操作支持四种类型的数据转换:

  • HL7v2 转 FHIR R4
  • C-CDA 转 FHIR R4
  • JSON 转 FHIR R4(适用于自定义转换映射)
  • FHIR STU3 转 FHIR R4

使用 $convert-data 终结点

$convert-data 终结点用作 ETL(提取、转换和加载)管道中的组件,以将运行状况数据从各种格式(例如:HL7v2、CCDA、JSON 和 FHIR STU3)转换为 FHIR 格式。 在转换运行状况数据时,为完整的工作流创建 ETL 管道。 建议使用基于 Azure 逻辑应用Azure 数据工厂的 ETL 引擎。 例如,工作流可能包括数据引入、执行 $convert-data 操作、验证、数据预处理和后期处理、数据扩充、重复数据删除以及加载数据以在 FHIR 服务中暂留。

$convert-data 操作集成到 FHIR 服务中作为 REST API 操作。 可以按如下所示调用 $convert-data 终结点:

POST {{fhirurl}}/$convert-data

转换的运行状况数据将传送到 $convert-data 请求正文中的 FHIR 服务。 如果请求成功,FHIR 服务将返回 FHIR 捆绑包响应,并将数据转换为 FHIR R4。

参数

$convert-data 操作调用会打包运行状况数据,以便在请求正文中 JSON 格式化的参数内进行转换。 下表介绍了这些参数。

参数名称 说明 接受的值
inputData 要转换为 FHIR 的数据有效负载。 对于 Hl7v2:字符串
对于 Ccda:XML
对于 Json:JSON
对于 FHIR STU3:JSON
inputDataType 数据输入的类型。 Hl7v2CcdaJsonFhir
templateCollectionReference Azure 容器注册表中的 OCI 映像模板集合的引用。 引用的是包含要用于转换的 Liquid 模板的映像。 它可以引用默认模板或 FHIR 服务中注册的自定义模板映像。 以下部分介绍如何自定义模板、在 Azure 容器注册表上托管模板以及注册到 FHIR 服务。 对于默认/示例模板
HL7v2 模板
microsofthealth/fhirconverter:default
microsofthealth/hl7v2templates:default
C-CDA 模板
microsofthealth/ccdatemplates:default
JSON 模板
microsofthealth/jsontemplates:default
FHIR STU3 模板
microsofthealth/stu3tor4templates:default

对于自定义模板
<RegistryServer>/<imageName>@<imageDigest><RegistryServer>/<imageName>:<imageTag>
rootTemplate 转换数据时要使用的根模板。 对于 HL7v2
ADT_A01、ADT_A02、ADT_A03、ADT_A04、ADT_A05、ADT_A08、 ADT_A11、ADT_A13、ADT_A14、ADT_A15、ADT_A16、ADT_A25、ADT_A26、ADT_A27、ADT_A28、ADT_A29、ADT_A31、ADT_A47、ADT_A60、OML_O21、ORU_R01、ORM_O01、VXU_V04、SIU_S12、SIU_S13、SIU_S14、SIU_S15、SIU_S16、 SIU_S17、SIU_S26、MDM_T01、MDM_T02

对于 C-CDA
CCD、ConsultationNote、DischargeSummary、HistoryandPhysical、OperativeNote、ProcedureNote、ProgressNote、ReferralNote、TransferSummary

对于 JSON
ExamplePatient、Stu3ChargeItem

对于 FHIR STU3
FHIR STU3 资源名称(例如:患者、观察、组织)

注意事项

  • FHIR STU3 转 FHIR R4 模板是 Liquid 模板,该模板仅提供 FHIR R4 规范中 FHIR STU3 资源与其等效资源之间的字段差异映射。 部分 FHIR STU3 资源已重命名或已从 FHIR R4 中删除。 有关 FHIR STU3 转 FHIR R4 的资源差异和约束的详细信息,请参阅 FHIR STU3 转 FHIR R4 的资源差异和约束

  • JSON 模板是用于生成自己的转换映射的示例模板。 它们不是遵循任何预定义运行状况数据消息类型的默认模板。 与 HL7v2 或 C-CDA 不同,JSON 本身未指定为运行状况数据格式。 因此,我们不是提供默认 JSON 模板,而是提供一些示例 JSON 模板作为你自己的自定义映射的起点。

警告

默认模板是在 MIT 许可证下发布的,不受 Microsoft 的支持。

仅提供默认模板来帮助你开始使用数据转换工作流。 这些默认模板不适用于生产环境,在 Microsoft 发布 FHIR 服务的更新时可能会更改。 若要在不同版本的 FHIR 服务中具有一致的数据转换行为,必须执行以下操作:

  1. 在 Azure 容器注册表实例中托管自己的模板副本。
  2. 将模板注册到 FHIR 服务。
  3. 在 API 调用中使用已注册的模板。
  4. 验证转换行为是否符合要求。

有关托管自己的模板的详细信息,请参阅托管自己的模板

示例请求

{
    "resourceType": "Parameters",
    "parameter": [
        {
            "name": "inputData",
            "valueString": "MSH|^~\\&|SIMHOSP|SFAC|RAPP|RFAC|20200508131015||ADT^A01|517|T|2.3|||AL||44|ASCII\nEVN|A01|20200508131015|||C005^Whittingham^Sylvia^^^Dr^^^DRNBR^D^^^ORGDR|\nPID|1|3735064194^^^SIMULATOR MRN^MRN|3735064194^^^SIMULATOR MRN^MRN~2021051528^^^NHSNBR^NHSNMBR||Kinmonth^Joanna^Chelsea^^Ms^^D||19870624000000|F|||89 Transaction House^Handmaiden Street^Wembley^^FV75 4GJ^GBR^HOME||020 3614 5541^PRN|||||||||C^White - Other^^^||||||||\nPD1|||FAMILY PRACTICE^^12345|\nPV1|1|I|OtherWard^MainRoom^Bed 183^Simulated Hospital^^BED^Main Building^4|28b|||C005^Whittingham^Sylvia^^^Dr^^^DRNBR^D^^^ORGDR|||CAR|||||||||16094728916771313876^^^^visitid||||||||||||||||||||||ARRIVED|||20200508131015||"
        },
        {
            "name": "inputDataType",
            "valueString": "Hl7v2"
        },
        {
            "name": "templateCollectionReference",
            "valueString": "microsofthealth/fhirconverter:default"
        },
        {
            "name": "rootTemplate",
            "valueString": "ADT_A01"
        }
    ]
}

示例响应

{
    "resourceType": "Bundle",
    "type": "batch",
    "entry": [
        {
            "fullUrl": "urn:uuid:9d697ec3-48c3-3e17-db6a-29a1765e22c6",
            "resource": {
                "resourceType": "Patient",
                "id": "9d697ec3-48c3-3e17-db6a-29a1765e22c6",
          ...
          ...
            },
            "request": {
                "method": "PUT",
                "url": "Location/50becdb5-ff56-56c6-40a1-6d554dca80f0"
            }
        }
    ]
}

FHIR 转换的结果是一个批次的 FHIR 捆绑包。

  • FHIR 捆绑包应符合 FHIR R4 规范的预期 - 捆绑包 - FHIR v4.0.1
  • 如果尝试根据特定配置文件进行验证,则需要利用 FHIR $validate 操作执行一些后期处理。

后续步骤

使用 Azure 门户配置 $convert 数据的设置

排查 $convert-data 问题

$convert-data 常见问题解答

注意

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