首先,我这里解析HL7协议数据选择用的是Java语言,框架是SpringBoot。
1.引入Jar包(v26指的我们使用的监护仪传输的数据是2.6版本的,选择版本视情况而定。)
<!--HL7监护仪包-->
<dependency>
<groupId>ca.uhn.hapi</groupId>
<artifactId>hapi-base</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>ca.uhn.hapi</groupId>
<artifactId>hapi-structures-v26</artifactId>
<version>2.3</version>
</dependency>
2.重写 ca.uhn.hl7v2.protocol下的processMessage方法。
public MonitorServer() {
int port = 19191;
boolean useTls = false;
HapiContext context = new DefaultHapiContext();
context.setValidationRuleBuilder(new NoValidationBuilder());
HL7Service server = context.newServer(port, useTls);
ReceivingApplication handler = new ReceivingApplication() {
@Override
public Message processMessage(String message, Map map) throws HL7Exception {
log.info("HL7消息数据:{}", message);
Parser parser = new PipeParser(context);
Message hl7Message = parser.parse(message);
ORU_R01 oruMessage = (ORU_R01) hl7Message;
// 解析每项需要的字段
}
3. 为了观察方便,我们可以使用7edit来更加直观的解析数据。
(将监护仪发送的真实数据贴在这里,并配置上自己设置的ip+端口,便可以模拟发送数据。)
4. 最后,我们就可以解析出来监护仪原文数据对应的生理参数与波形数据。
RR:呼吸率,PR:脉搏,SPO2:血氧,NIBP_S:收缩压,NIBP_D:舒张压
NIBP_M:血压平均值,HR:心率,OBR_TIME:参数报告时间,Pleth:波形数据。
等众多信息。。。
5.后续,我们可以通过websocket实时传输数据,并且绘制波形图。