浅谈LIS解码(1)-HL7

本文作者分享了在LIS行业中对HL7通讯协议的理解,主要聚焦于HL7解析。通过使用NHapi.Base.dll动态库进行解析,适用于多数HL7格式的仪器。文章概述了动态库的使用方法,并提到关键步骤如消息头的获取、版本信息处理以及OBX段(检查信息)的解析。对于不熟悉的内容,鼓励读者留言讨论。
摘要由CSDN通过智能技术生成

目前接触的LIS行业不到2年,浅谈一下对LIS通讯协议的理解。通讯协议解析主要的模式无非3中,HL7、ASTM、String 。通常标准的仪器厂家以前两种格式居多,String格式为字符串解析,常用于尿检仪,或格式不是很常见的数据处理。

大致先说一说HL7解析:

标准的HL7文档

直接上代码:

 

我缩减了部分项目,该仪器为优利特5260,为标准的HL7格式。至于每行代码的大致意思,在通讯协议里面是可以看到的。

HL7通讯协议以及格式大同小异,目前采用的是NHapi.Base.dll 动态库进行的解析,效率以及兼容上,能够满足大多数HL7仪器的需求。

动态库下载地址:动态库

下面讲下改动态库的大致用法:

  private void HL7(string messageString)
        {
            PipeParser parser = new PipeParser();
            IMessage message = parser.Parse(messageString);
            #region 测试结果上传
            if (message.GetStructureName() == "ORU_R01")//结果消息
            {
                var version = message.Version;
                NHapi.Model.V231.Message.ORU_R01 oru_r01 = message as NHapi.Model.V231.Message.ORU_R01;
                if (oru_r01 == null) return;
                if (oru_r01.MSH.ProcessingID.ProcessingID.Value != "P") return;//消息处理 ID。取值:“P”-样本、工作单查询信息; “Q”-质控计数结果信息;在 Ack 消息中,它与之前接收到的消息一致
                foreach (var patient_results in oru_r01.PATIENT_RESULTs)
                {
                    var pid = patient_results.PATIENT.PID != null ? patient_results.PATIENT.PID : null;
                    if (pid == null) continue;
                    foreach (var order in patient_results.ORDER_OBSERVATIONs)
                    {
                        GWLISMachineReport machineReport = new GWLISMachineReport();
                        #region 病人信息
                        var patientName = pid.GetPatientName(0);
                        if (patientName != null 
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

90e家

有C币的小伙伴可以贡献一点,哈

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值