Java通过HAPI解析HL7消息

  • HL7([详情](https://baike.baidu.com/item/HL7))
  • 使用的HAPI([maven](https://mvnrepository.com/artifact/ca.uhn.hapi))
  • 解析
  • 解读Message
    • Message
    • names
    • required
    • repeating
    • structures(重点)
      • key:段落名
      • value:段落内容
        • fields:字段内容
        • types:字段类型
        • names:字段名
        • 剩下的字段大家自己消化

HL7(详情)

Health Level Seven组织成立於1987年,由SamSchultz博士在宾夕法尼亚州大学医院主持的一次会议促成了HL7组织和通信标准的诞生。随着许多用户、厂商、顾问组织的加入,HL7队伍在逐渐壮大,于是成立了HL7工作组。(官网)

使用的HAPI(maven)

<dependency><groupId>ca.uhn.hapi</groupId><artifactId>hapi-base</artifactId><version>${hapi.version}</version>
</dependency>
<dependency><groupId>ca.uhn.hapi</groupId><artifactId>hapi-structures-v24</artifactId><version>${hapi.version}</version>
</dependency>

解析

package com.dy.mms.util;import ca.uhn.hl7v2.HL7Exception;
import ca.uhn.hl7v2.model.Message;
import ca.uhn.hl7v2.model.v24.message.ACK;
import ca.uhn.hl7v2.parser.PipeParser;/*** HL7消息解析工具*/
public class HL7ParseUtil {/*** 解析* @param hl7Str* @return* @throws HL7Exception*/public static Message parse(String hl7Str) throws HL7Exception {// 解析器PipeParser parser = new PipeParser();// 解析Message message = parser.parse(hl7Str);if (message instanceof ACK) {// 如果确认是ACK消息可以直接返回ACKreturn (ACK) message;}return message;}public static void main(String[] args) throws Exception {// HL7消息String hl7Str = "MSH|^~\\&|foo|foo||foo|202103151718||ACK^A01^ACK|1|D|2.4|\rMSA|AA\r";// 解析为消息Message message = HL7ParseUtil.parse(hl7Str);// 输出原消息System.out.println(message.encode().replaceAll("\r", "\r\n"));}
}

解读Message

Message

names


表明这个消息中有三个段落,分别是什么。(虽然从原字符串中我们只看到了两个段落,但是由于这条消息是由HL7定义的ACK消息,所以解析完成后显示他有三个段落);

required


表明这三个段落那个是不能为空,这里解析之后我们发现ERR字段可以为空(false);

repeating


表明这三个段落可以有多个吗,这里全都不可以(false);

structures(重点)


structures(Map,kv结构)为这个消息的全部内容,以下我们对重点字段进行分析:

key:段落名

value:段落内容

fields:字段内容


可以看到MSH这个段落有21个字段,每个字段又是一个集合,表明字段里可以有多个值,每个字段(组件)中可能还包括子组件(不多说了,大家自己看);

types:字段类型


每个字段是什么类型的值;
HL7定义的类型:

类型编码 类型说明
ST 字符串
TX 文本数据
FT 格式化文本
NM 数字
SI 序列ID号
SN 结构化数据
ID HL7表的编码值
IS 用户定义表的编码
EI 实体标识符
DT 日期
TM 时间
CE 编码要素
CX 具有校验数位的扩展符合ID
XCN 扩展符合ID号和ID名
XAD 扩展地址
XPN 扩展姓名
XTN 扩展通讯号码

names:字段名


每个字段的名称,从字面意思就能够看出每个字段内容的含义;

剩下的字段大家自己消化

以上就是我总结的HL7解析过程,大家可以在解析过程中加入自定义代码以便使用。
原创不宜,请勿抄袭!

Java通过HAPI解析HL7消息相关推荐

  1. 基于`IRIS`,动态解析`HL7`消息

    文章目录 基于`IRIS`,动态解析`HL7`消息 什么是`HL7` `HL7` 版本 `HL7` 消息结构 段(`Segment`) 字段(`Field`) `HL7` 数据类型 在`IRIS`中查 ...

  2. Java解析HL7消息进阶(解析自定义HL7消息)

    上一篇文章博主笼统的讲了HL7解析,以及解析完成的Message结构,详情移步

  3. HL7消息解析----去掉校验

    最近接触医院系统使用的HL7消息,网上找解析的办法,大部分都是手工解析的,自己用符号拆分解析,像我这种懒人是不会用的,终于让我找到hapi框架,用起来不要太方便,建议使用.只要模板版本对应hl7消息的 ...

  4. android消息发送字符串,android - 从Android客户端通过HTTP在HL7消息中发送base64字符串时遇到错误 - 堆栈内存溢出...

    我正在android客户端(API 17)中使用HL7消息,并使用Hapi库生成和解析HL7消息.当我传输小的字符串值时,该消息工作正常. 但是我必须通过Http将图像发送到HL7服务器,为此,我正在 ...

  5. 「智慧医疗」HL7消息解析实战Demo

    1.什么是HL7? 「智慧医疗」1分钟学会解析HL7协议数据 2. 怎样解析HL7数据? 2.1.交互模型 2.2.数据样例 解析前数据样例 +---------------------------- ...

  6. Java 面试知识点解析(七)——Web篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  7. Java 面试知识点解析(五)——网络协议篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  8. Java 面试知识点解析(三)——JVM篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  9. Java 面试知识点解析(二)——高并发编程篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  10. Java 面试全解析:核心知识点与典型面试题

    课程背景 又逢"金九银十",年轻的毕业生们满怀希望与忐忑,去寻找.竞争一个工作机会.已经在职的开发同学,也想通过社会招聘或者内推的时机争取到更好的待遇.更大的平台. 然而,面试人群 ...

最新文章

  1. Transformer LambdaNetworks
  2. java判断时间为上午,中午,下午,晚上,凌晨
  3. 【老孙随笔】属相影响你的职业前途吗?
  4. 0X8009310B (ASN:276) win7安装证书时出现错误消息:找不到与此证书文件相关联的证书申请微软官方文档
  5. web自动化如何在不同浏览器运行_自动化决策环节的“心脏”将如何与众不同?...
  6. C/C++信息隐写术(四)之大程序藏入BMP文件
  7. 使用Cron和PHP检测网页是否被篡改
  8. php打印日期,php打印日期
  9. ETL开发工具KETTLE使用教程
  10. Qt Quick综合实例之文件查看器
  11. SPSS统计分析常用知识点
  12. os+rom+android+6.0+n9005,三星S8+官方韩版安卓9固件rom系统线刷升级包:G955NKSU3DSG5
  13. 智能合约安全漏洞检测技术研究综述——常见漏洞简述
  14. 干货 | 产品助理入门攻略(一枚入行3年的PM内心独白)
  15. webuploader直接上传文件到百度云BOS中
  16. Latex如何设置超链接的字体颜色?如何更改颜色?
  17. 格力除了被美的遏制,还面临离职员工的挑战
  18. pandas之时序数据
  19. Revit API、AddInManager、RevitLookup、SDK的用途
  20. 2K和XP的CMD命令教程(命令篇.要求置顶)

热门文章

  1. Stduino IDE stm32 最小系统 小蓝板 驱动继电器(五)
  2. 区块链教程Fabric1.0源代码分析Ledger(账本)二
  3. 数据可视化技术是指运用计算机,计算机图形技术在数据计算方面的应用
  4. 什么计算机网络成瘾,计算机网络与网络成瘾.pdf
  5. 七牛判断上传图片文件是否重复
  6. vue树形权限菜单_基于Vue的树形菜单之两种方式实现
  7. Java随笔记 - TCP通信的基本过程,三次握手,四次挥手
  8. 用C语言实现移位密码加密与解密
  9. 如何使用代码调用API接口发送短信?(以SendCloud为例)
  10. 白嫖画师原作训练Stable Diffusion引正主不满:未经同意,说用就用?