我正在尝试将 hl7 转换为 json ,但我无法找到任何解决方案。有没有办法实现这个目标?我发现 FHIR 能够转换为json,但我没有找到任何例子。
答案 0 :(得分:4)
关于HL7 2.x
HL7 2.x版本既不支持XML也不支持JSON,作为标准的一部分。
版本2 v2.xml HL7 2.5版及更早版本的XML模式由Sun Microsystems提供。提供这些表示是为了方便,因为XML模式是描述XML表示的紧凑而特定的方式。但是,架构本身并不是本规范的规范部分。
hl7.org
如您在上面看到的,“ v2.xml XML模式”不是规范的一部分。它们是额外的贡献。
此规范的目的是基于可扩展标记语言XML提出HL7版本2.3.1、2.4、2.5和将来的2.x消息的编码规则,这些规则可在发送者和接收者都理解XML的环境中使用。 v2.xml规范旨在充当v2.3.1,v.2.4和v2.5(以及HL7 v2.x标准的未来版本)的第二种规范编码。 hl7.org
以下是维基百科的引文:
HL7 v2.x消息使用基于段(行)和一个字符定界符的非XML编码语法
wikipedia
关于HL7 v3.x
HL7 v3.x版本支持XML作为标准的一部分。
几种XML编码方法可以用作HL7 V3消息的消息传递语法。本文档代表HL7推荐的方法,描述了基本规则和原则。数据类型XML ITS中描述了此规范所需的相应数据类型描述。
hl7.org
以下是《 HL7 V3指南》的引文:
HL7在抽象级别定义其消息。 HL7中的“ 7”代表ISO通信模型的应用程序级别-ISO级别7。该级别强调消息的语义内容,而不是消息的表示方式,也不是这些表示形式的编码以进行传输。
HL7在抽象级别定义其消息。 HL7中的“ 7”代表ISO通信模型的应用程序级别-ISO级别7。该级别强调消息的语义内容,而不是消息的表示方式,也不是这些表示形式的编码以进行传输。
HL7版本2抽象消息模型具有段和字段的概念。它定义了一种特定的编码方案来表示抽象消息的实例,即所谓的“垂直条编码”。来自Health域(语义级别7)的信息在版本2中表示为段和字段,并表示为带有大量竖线的ASCII字符。与这种方法一致,V2的新XML编码基本上可以直接替代垂直条形编码
第3版抽象消息模型基于RIM。 HL7版本3消息可被视为从发送者到接收者的RIM对象图的通信。 ITS可以通过对对象,属性和数据类型进行适当的表示来最好地处理这些消息。
hl7.ihelse.net
以下是维基百科的引文:
HL7 v3消息基于XML编码语法
wikipedia
您可以阅读有关兼容性here的更多信息。
他们都不支持JSON作为标准的一部分。
因此,从HL7到XML或从HL7到JSON的转换是不标准的。一个需要自己处理。
关于FHIR(快速医疗保健互操作性资源)
FHIR是HL7发布的医疗保健数据交换标准。
请参阅HL7和FHIR here之间的关系。
作为标准的一部分,FHIR支持XML和JSON格式。请参阅这些链接以获取更多详细信息。
将v2转换为FHIR:
广泛地有2种转换方法:
- 创建一个FHIR消息包,该消息包反映了v2消息的内容,并且旨在作为等效的表示形式,其行为与v2消息相同
- 使用v2消息的内容更新FHIR服务器-也许提取Encounter资源或创建旨在用作对FHIR服务器的“交易”捆绑包的捆绑包。我认为这将是一个更常见的用例。
请阅读该博客以获取有关转换的详细信息。社区正在努力转变;希望开箱即用的解决方案将很快可用。
v2和FHIR之间的转换是社区正在努力的工作–这里有一个聊天流:https://chat.fhir.org/#narrow/stream/179188-v2-to.20FHIR,您可以在其中进行互动。这两个标准之间的映射将需要定义一些工作,并且实现中会有差异,但是该项目的目标是定义一个“基础”映射作为起点。 v2与FHIR之间的关系相当接近,但是仍有很多问题需要解决……
没有唯一的方法可以真正执行转换-这取决于您必须掌握的技术。例如,在帖子中,我只是在NodeRED中使用简单的javascript-尽管只是作为概念证明。我想大多数集成引擎供应商都会在这个领域提供产品。
Comment
有关映射的详细信息,请参见HL7 site。
以下是一些工具:
https://github.com/rimiti/hl7-object-parser#hl7-object-parser(从HL7 v2.x到JSON)
https://github.com/nezt/hl72xml#hl72xml(将HL7 V2.x转换为XML)
https://github.com/KevinMayfield/ITKHL7v2-FHIR
Mirth提供了将HL7转换为XML / JSON的功能。
请参阅@Bryan的其他答案。
here和here中找不到几个样本。
答案 1 :(得分:3)
我只需处理将HL7消息转换为JSON以完成我正在做的一些工作,并决定在此处编写基础知识。它是围绕hl7apy python库的两个简单的辅助方法。
http://www.prschmid.com/2016/11/converting-adt-hl7-message-to-json.html
希望它有助于满足您的需求!
答案 2 :(得分:2)
这是一个建议:
// Modify the message variable below to pre process data
message = SerializerFactory.getSerializer('HL7V2').toXML(message);
return message;

答案 3 :(得分:1)
您可以使用Apache Camel将HL7转换为Java中的FHIR JSON。骆驼支持两种格式:
确切的实现取决于您如何接收和发送HL7和FHIR。但从广义上讲,您需要编写一个Camel route,它会使用HL7数据格式组件从HL7 取消编组,然后通过映射使用自定义类(您需要编写此代码,但请参阅下文,了解起点)将源字段转换为目标字段,然后使用FHIR数据格式将数据封送到JSON。例如:
from("file:/input/directory")
.unmarshal().hl7() // convert from HL7 text format to Java object
.process(new PatientProcessor()) // map source to target fields
.marshal().fhirJson() // serialise out to FHIR JSON format
.to("file:/output/directory");
位于中间的处理器是您的转换/映射类所在的位置。
Camel的单元测试中有一个完整的示例,展示了如何从HL7转换为FHIR。参见:
答案 4 :(得分:0)
例如,您可以使用jut手动将hl7转换为json JUT examples和js implementation
答案 5 :(得分:0)
在 Mirth 中,您可以在源转换器中使用以下代码
var jsonString = XmlUtil.toJson(msg)
var data = JSON.parse(data)