BizTalk 中的 FHIR JSON 到 ORU HL7 映射
Posted
技术标签:
【中文标题】BizTalk 中的 FHIR JSON 到 ORU HL7 映射【英文标题】:FHIR JSON to ORU HL7 mapping in BizTalk 【发布时间】:2017-07-13 02:01:53 【问题描述】:我对 FHIR JSON 很陌生,我什至不确定我问的问题是否正确。但这是我的场景。
我有一个 BizTalk 解决方案,它接收 JSON 格式的 FHIR ImagingStudy 消息。使用这篇文章 (http://soapfault.com/blog/2016/08/hl7-fhir-json-decoding-in-biztalk/),我在接收位置成功地将 FHIR JSON 消息转换为 XML 消息。然后在我的发送端口中,此消息被映射到 ORU HL7 并通过直通发送管道转储到文件夹中。除了我的地图由于某种原因没有被执行。
如果我稍微玩一下我的管道,以通过 XML 接收管道接收 FHIR XML 消息,我会收到以下异常:
执行接收管道失败:“Microsoft.BizTalk.DefaultPipelines.XMLReceive, Microsoft.BizTalk.DefaultPipelines, Version=3.0.1.0, Culture=neutral, PublicKeyToken=#########”源:“XML 反汇编程序” 接收端口:“RP_MyProject_Test_FILE” URI:“D:\Projects\MyProject\In*.xml” 原因:由于多个模式与消息类型“http://hl7.org/fhir#ImagingStudy”匹配,因此无法找到文档规范。
我是怎么遇到这种情况的,我不知道。我从 hl7.org 下载了 fhir-all-xsd.zip,并将所有 .xsd 文件添加到 Visual Studio 中的可能项目中。我最终得到了 100 个模式,我尝试只添加 ImagingStudy 特定的模式,但直到我添加了所有模式才起作用。部署到 BizTalk 后,我可以在我的 BizTalk 管理控制台中看到更多架构,并且有几个具有上述消息类型。
我做错了什么?有没有办法在我的项目中只包含 ImagingStudy FHIR 模式?在我暂停的消息中,我看到 MessageType 没有被提升,我猜地图不知道何时执行,但是我在 BizTalk 中有几条具有相同 MessageType 的消息。
【问题讨论】:
【参考方案1】:要解决 与消息类型匹配的多个模式,您必须
-
确保每个架构都有唯一的命名空间 + 根名称。这是为了确保您不会多次部署相同的架构,如果您在多个项目中需要架构,则创建一个其他应用程序都可以引用的通用应用程序。
如果您无法实现上述目标,请确保使用 XML 反汇编器创建自定义接收管道,并在其中指定要使用的架构
要解决未执行的映射,您必须查看映射之前消息上的消息类型(通过 BizTalk 管理控制台),并将其与映射期望映射的消息类型进行比较。你会发现两者不匹配,这就是map没有执行的原因。
【讨论】:
【参考方案2】:您的根本问题是“因为多个模式与消息类型“http://hl7.org/fhir#ImagingStudy”匹配。
解决此问题的最佳方法以及我在几乎所有情况下的建议是创建自定义管道,并在 XmlDisassembler 和 XmlAssembler 组件中明确设置 Document Spec。
这篇 Wiki 文章描述了流程和好处:BizTalk: Improve Deployment and Tracking by Always Creating Custom Pipelines
【讨论】:
以上是关于BizTalk 中的 FHIR JSON 到 ORU HL7 映射的主要内容,如果未能解决你的问题,请参考以下文章