1、HL7测试工具

测试工具用到了7Edit,使用方法可参考其他博主

2、用到的Jar包

<!-- https://mvnrepository.com/artifact/ca.uhn.hapi/hapi-base -->
<dependency>
    <groupId>ca.uhn.hapi</groupId>
    <artifactId>hapi-base</artifactId>
    <version>2.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/ca.uhn.hapi/hapi-structures-v24 -->
<dependency>
    <groupId>ca.uhn.hapi</groupId>
    <artifactId>hapi-structures-v24</artifactId>
    <version>2.3</version>
</dependency>

3、JAVA解析Demo

3.1 简单的Demo

下面的demo中,需要注意几点:

1、换行要使用\r不能使用\n

2、每个段前面的第一个属性为段名,使用message.get()时,会自动匹配到对应段的实体类,如下面访问MFI段,没有对应实体类的段使用通用的类GenericSegment类进行解析如示例中的Z2B段。

import ca.uhn.hl7v2.HL7Exception;
import ca.uhn.hl7v2.model.GenericSegment;
import ca.uhn.hl7v2.model.Message;
import ca.uhn.hl7v2.model.v24.segment.MFI;
import ca.uhn.hl7v2.parser.PipeParser;

/**
 * @author 崔
 * @version 0.0.1
 * @Date 2023/7/26 18:45
 */
public class HL7ParserExample {
    public static void main(String[] args) throws HL7Exception {
        // 示例HL7 XML消息
        String hl7XML = "MSH|^~\\&|HIS^1|MediInfo|MediII^1|MediInfo|20180417152317||MFN^Z2B^MFN_Z2B|39a3d175f5034a2a9d41d35c911d0562|P|2.4\r" +
                "MFI|Z2B||UPD|||AL\r" +
                "MFE|MAD|9a3b31292e3a47e1b59f63ba15c47f94||0|ST\r" +
                "Z2B|10741|2|demo||||||||1|0|0|0|^MZYVIPMZQ~^QKAVIPUYY~^QKAVIPUYY|9999|20180417153203|21||0|11000000000000000000000000";

        // 创建一个新的PipeParser实例
        PipeParser parser = new PipeParser();

        // 解析HL7 XML消息
        Message message = parser.parse(hl7XML);

        // 访问MFI段
        MFI mfi = (MFI) message.get("MFI");
        // 获取MFI段的第一段中的第1个属性
        System.out.println(mfi.getMfi1_MasterFileIdentifier().getIdentifier());

        // 访问Z2B段(GenericSegment)
        GenericSegment genericSegment = (GenericSegment) message.get("Z2B");

        // 从Z2B段中提取并打印特定字段
        System.out.println("第15段第1个属性" + genericSegment.getField(15, 0).encode());
        System.out.println("第15段第2个属性" + genericSegment.getField(15, 1).encode());
    }
}

打印结果

Z2B
^MZYVIPMZQ
^QKAVIPUYY

3.2 如何获取想要的节点数据

如上面示例

 MFI mfi = (MFI) message.get("MFI");
 System.out.println(mfi.getMfi1_MasterFileIdentifier().getIdentifier());

怎么要获取MFI里面哪个数据,工具7Edit解析中,在每个标签后面都加了字段名称,直接get就可以获取指定的数据。

但是解析中数据类型和Java的数据类型并不匹配,字段有encode()方法,让解析的数据变成String数据类型。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐