JAVA解析HL7报文数据V24

1、HL7测试工具

测试工具用到了7Edit,使用可参考7Edit解析工具的使用(二)_hl7格式工具_WW大魔王的博客-CSDN博客

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数据类型。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值