LIS系统与仪器进行通信

本文主要介绍医疗检测仪器与LIS系统之间的通信,两者之间的通信还是比较简单的,两者通过通信方式连接成功后,对接收到的数据按照特定的协议进行解析,拿到我们需要的数据保存到LIS系统,或者将LIS中的数据传到仪器上即可。

下面介绍一下比较常用的通信方式及协议。详细的协议请查看仪器厂家给的文档,那才是最详细的文档。具体的通信方式和协议解析如何编码,这里先不介绍。

1. 通信方式

1.1. 网口

仪器或LIS主机一个作为Socket的服务端,一个作为客户端,两者以(TCP/IP Socket局域网内通信)的形式连接成功后进行数据交互。

1.2. 串口

仪器和LIS主机之间使用串口线进行连接,使用COM口进行数据传输。串口通信需要设置好波特率、数据位、停止位、奇偶校验。

1.3. 读取仪器的数据库

LIS主机直接连接仪器软件的数据库,读取数据库中的相关数据,同步到LIS系统中。目前仪器数据库使用比较多的是ACCESS数据库,连接数据库时可以使用ORM(如:SqlSugar)或者自己写DBHelper

1.4. 解析仪器导出来的文件

有的仪器可以将测试的结果数据导出为文件(如:TXT、CSV格式的文件),我们通过解析文件的内容从中获取到相关信息

2. 通信协议

  • HL7协议 (有不同的版本,使用比较多的是2.3.1、2.4版本,2.3.1版本使用更多一些)
  • ASTM协议
  • 仪器自定义协议

2.1. 注意事项:

  • 一个仪器可以以通信方式中的任意一种方式传输数据,数据的格式可以是通信协议中的任意一种格式,在开发时要结合仪器所支持的实际情况选择合适的通信方式和协议。
  • 不同仪器可能采用相同的协议和版本,但相同数据位置所代表的信息内容可能不一样
  • 使用网口通信时有的仪器端既可以作为服务端也可以作为客户端,有的仪器只能作为服务端或者只能作为客户端。具体要看仪器的支持情况。所以LIS端要可以作为服务端也要可以作为客户端。

3. 各协议数据示例

3.1. HL7

HL7 是一个为住院病人提供护理的电子数据交换标准。最初它由美国定义,现在已经被很多国家采用。
HL7 底层协议TCP/IP是一个字节流协议,它并不提供消息边界。HL7作为上层协议是基于消息的,但它也没有提供消息终止机制。为了确定消息边界,HL7使用最小的底层协议。 

3.1.1. 通讯层

消息被以下面的格式传送:
<SB>ddddd<EB><CR>
其中:
<SB>是ASCII <VT>, 即, <0x0B>。 不要和ASCII 中的字符SOH 或 STX 混淆
ddddd是HL7消息。只包括ISO8859-1字符(十六进制值20-FF)和,不包括其它控制和不能打印的字符。
<EB>是ASCII <FS>,即,<0x1C>
<CR>是回车换行, ASCII回车符,即,<0x0D>。

3.1.2. 示例

  一条完整的消息格式如下图:(注意:图中黑色突出的字符是不可见字符)

上图中的示例是博科全自动生化分析仪使用HL7 2.3.1版本的协议推送测试结果到LIS的数据,我们要做的就是从以上数据中解析出我们需要的信息,基本的信息包含样本的编号或流水号、检测项目、项目的结果。

HL7消息分为不同的消息段,消息开头的字母(MSH、PID、OBR、OBX)代表消息的类型。一个类型的消息里又使用 “|”分隔成不同的段,每段里存放不同含义的数据,我们在解析消息时要做的就是根据仪器厂家提供的文档,从对应的消息段里找到我们需要的数据

下面大致描述一下上图中各消息段表示的意思,意在帮助你理解HL7协议的消息:

MSH:HL7消息所有的消息都是以MSH段开头一般位于消息的最前面。该消息段用于定义消息的来源、消息类型、版本号、消息编码等信息

PID:消息表示病人的信息,里边会包含有病人的姓名、病历号、床号等病人的基本信息

OBR:消息表示的是一些医嘱的信息,里边包含有样本的编号或流水号等信息

OBX:消息表示的是检测项目的信息,里边会包含有检测项目(ALB、ALP、ALT等)、检测结果(1.86448165477651、2.68249424273179、0.1722214354275等)、结果单位(g/L、U/L、U/L等)、参考范围(35\~55、45\~135、0~41等)等信息

3.1.3. 解析结果

从上边的示例中我们可以解析到如下的数据:

3.2. ASTM

3.2.1. 通讯层

消息被以下面的格式传送:
<ENQ><STX>消息内容<ETX><EOT>

以上格式中尖括号内的内容表示控制代码,是不可见的字符,其表示的相关含义如下:

字符 含义 对应的ASCII(十六进制)
<ENQ> 请求 0x05
<ACK> 确认回应 0x06
<STX> 本文开始 0x02
<STX> 本文结束 0x03
<EOT> 传输结束 0x04

一般都是<ENQ>作为开始,从<STX>开始解析,<EOT>作为结束。具体信息代表的什么意思,可以参考ASTM通讯协议,基本都是一致的。

通信时整个流程大致是,仪器先发送<ENQ>给LIS端,LIS端接收到消息后回复<ACK>,仪器收到回复的<ACK>后开始发送后续的内容,一条完整的信息从<STX>开始,到<ETX>结束,LIS端接收到<EOT>时,表示一条完整的消息传输完成,我们需要解析接收的内容中<STX><ETX>之间的内容接口。可以使用字符串截取的方式来解析。

3.2.2. 示例:

一条完整的消息格式如下图:(注意:图中黑色突出的字符是不可见字符)

从以上示例中可以解析到如下消息:

3.3. 仪器自定义协议

有的仪器厂商会有自己定义的协议,这种的就没有标准的规范了,具体就得看厂家给的协议文档,按照文档进行解析就行。比如尿液分析仪,每个厂商个格式都不一样,有的相同的仪器,不同的型号之间也是不一样的。

下图是一个完整的尿液分析仪传输的数据(注意:图中黑色突出的字符是不可见字符)

上图中的数据中包含样本标识(NO0002)、检测时间(2023-05-19 13:59)、检测项目(LEU、NIT、URO...等)、项目检测结果、结果值单位等信息

下一篇展示使用协议实现的通信软件

posted @ 2024-11-06 00:09  childeQ  阅读(37)  评论(0编辑  收藏  举报