Java通过HAPI解析HL7消息
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(详情)
使用的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消息相关推荐
- 基于`IRIS`,动态解析`HL7`消息
文章目录 基于`IRIS`,动态解析`HL7`消息 什么是`HL7` `HL7` 版本 `HL7` 消息结构 段(`Segment`) 字段(`Field`) `HL7` 数据类型 在`IRIS`中查 ...
- Java解析HL7消息进阶(解析自定义HL7消息)
上一篇文章博主笼统的讲了HL7解析,以及解析完成的Message结构,详情移步
- HL7消息解析----去掉校验
最近接触医院系统使用的HL7消息,网上找解析的办法,大部分都是手工解析的,自己用符号拆分解析,像我这种懒人是不会用的,终于让我找到hapi框架,用起来不要太方便,建议使用.只要模板版本对应hl7消息的 ...
- android消息发送字符串,android - 从Android客户端通过HTTP在HL7消息中发送base64字符串时遇到错误 - 堆栈内存溢出...
我正在android客户端(API 17)中使用HL7消息,并使用Hapi库生成和解析HL7消息.当我传输小的字符串值时,该消息工作正常. 但是我必须通过Http将图像发送到HL7服务器,为此,我正在 ...
- 「智慧医疗」HL7消息解析实战Demo
1.什么是HL7? 「智慧医疗」1分钟学会解析HL7协议数据 2. 怎样解析HL7数据? 2.1.交互模型 2.2.数据样例 解析前数据样例 +---------------------------- ...
- Java 面试知识点解析(七)——Web篇
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...
- Java 面试知识点解析(五)——网络协议篇
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...
- Java 面试知识点解析(三)——JVM篇
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...
- Java 面试知识点解析(二)——高并发编程篇
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...
- Java 面试全解析:核心知识点与典型面试题
课程背景 又逢"金九银十",年轻的毕业生们满怀希望与忐忑,去寻找.竞争一个工作机会.已经在职的开发同学,也想通过社会招聘或者内推的时机争取到更好的待遇.更大的平台. 然而,面试人群 ...
最新文章
- Transformer LambdaNetworks
- java判断时间为上午,中午,下午,晚上,凌晨
- 【老孙随笔】属相影响你的职业前途吗?
- 0X8009310B (ASN:276) win7安装证书时出现错误消息:找不到与此证书文件相关联的证书申请微软官方文档
- web自动化如何在不同浏览器运行_自动化决策环节的“心脏”将如何与众不同?...
- C/C++信息隐写术(四)之大程序藏入BMP文件
- 使用Cron和PHP检测网页是否被篡改
- php打印日期,php打印日期
- ETL开发工具KETTLE使用教程
- Qt Quick综合实例之文件查看器
- SPSS统计分析常用知识点
- os+rom+android+6.0+n9005,三星S8+官方韩版安卓9固件rom系统线刷升级包:G955NKSU3DSG5
- 智能合约安全漏洞检测技术研究综述——常见漏洞简述
- 干货 | 产品助理入门攻略(一枚入行3年的PM内心独白)
- webuploader直接上传文件到百度云BOS中
- Latex如何设置超链接的字体颜色?如何更改颜色?
- 格力除了被美的遏制,还面临离职员工的挑战
- pandas之时序数据
- Revit API、AddInManager、RevitLookup、SDK的用途
- 2K和XP的CMD命令教程(命令篇.要求置顶)
热门文章
- Stduino IDE stm32 最小系统 小蓝板 驱动继电器(五)
- 区块链教程Fabric1.0源代码分析Ledger(账本)二
- 数据可视化技术是指运用计算机,计算机图形技术在数据计算方面的应用
- 什么计算机网络成瘾,计算机网络与网络成瘾.pdf
- 七牛判断上传图片文件是否重复
- vue树形权限菜单_基于Vue的树形菜单之两种方式实现
- Java随笔记 - TCP通信的基本过程,三次握手,四次挥手
- 用C语言实现移位密码加密与解密
- 如何使用代码调用API接口发送短信?(以SendCloud为例)
- 白嫖画师原作训练Stable Diffusion引正主不满:未经同意,说用就用?