IS1200 控制台软件与 LIS 系统通信协议
概述
IS1200 控制台软件采用 RS232 串口通信 方式实现与 LIS 系统通信,遵循 ASTM 国际通用协议(E1381-91 低层协议 + E1394-91 高层协议)。
文档由 Microsoft Word 2010 生成,共 17 页,完整定义了从物理帧格式到应用层记录的全栈协议规范。
一、协议分层架构
通信处理分为三层:
| 层级 | 标准 | 说明 |
|---|---|---|
| 物理/数据链路层 | ASTM E1381-91 | 低层协议,帧传输规范 |
| 表示层 | ASTM E1394-91 | 高层协议,记录与字段规范 |
| 应用层 | 本文档定义 | 业务报文与操作方法 |
二、低层协议(E1381-91)
2.1 帧格式
中间帧(续帧):
<STX> FN text <ETB> C1 C2 <CR><LF>
末帧(终帧):
<STX> FN text <ETX> C1 C2 <CR><LF>
2.2 帧组成字段说明
| 字段 | 长度 | 说明 |
|---|---|---|
<STX> | 1B | 帧开始,ASCII 0x02 |
FN | 1B | 帧序号,与 8 求模,取值 0-7(1~7, 0, 1…),ASCII 码表示 |
text | ≤240B | 帧数据内容,记录被分割为 240 字符的帧 |
<ETB> | 1B | 中间帧结束,ASCII 0x17 |
<ETX> | 1B | 末帧结束,ASCII 0x03 |
C1 C2 | 2B | 校验和,从 FN 到 ETB/ETX 的 ASCII 码值累加,两位十六进制(高字节 C1,低字节 C0) |
<CR><LF> | 2B | 帧尾,回车换行 |
帧最大长度:247 字符(240 文本 + 7 控制字符)
- 报文 ≤240 字符 → 单帧传输(用 ETX)
- 报文 >240 字符 → 分多帧,中间帧用 ETB,最后一帧用 ETX
2.3 控制字符速查
| 控制符 | 十六进制 | 说明 |
|---|---|---|
<SOH> | 0x01 | 标题开始 |
<STX> | 0x02 | 正文开始 |
<ETX> | 0x03 | 正文结束 |
<EOT> | 0x04 | 传输结束 |
<ENQ> | 0x05 | 询问 |
<ACK> | 0x06 | 确认 |
<DLE> | 0x10 | 数据链路转义 |
<NAK> | 0x15 | 否认 |
<SYN> | 0x16 | 同步 |
<ETB> | 0x17 | 传输块结束 |
<CR> | 0x0D | 回车(记录结束) |
<LF> | 0x0A | 换行 |
<DC1>~<DC4> | 0x11~0x14 | 设备控制 |
2.4 校验和计算示例
传输帧:[STX]1Test[ETX]D4[CR][LF]
校验和 D4 = 字符 ‘1’+‘T’+‘e’+‘s’+‘t’ + ETX 的 ASCII 值之和
2.5 三阶段传输
- 建立阶段:ENQ / ACK 握手
- 传输阶段:所有记录分组为长帧,记录间用 CR 分隔
- 结束阶段:EOT 结束
接收方收到 EOT 后,将所有帧连接起来,再按 CR 分隔为各条记录。
三、高层协议语法(E1394-91)
3.1 报文结构
报文(Message)→ 多条记录(Record)→ 多个字段(Field)
- 报文:以 H 记录开头,以 L 记录结尾
- 记录:首字符标识记录类型,字段用分隔符分开
- 字段:最小信息单元
3.2 分隔符定义
| 分隔符 | 默认字符 | 名称 | 说明 |
|---|---|---|---|
| 字段分隔符 | |(竖线) | Field Separator | 分隔相邻字段,也分隔记录ID与第一字段 |
| 重复分隔符 | \(反斜线) | Repeat Separator | 同一字段内重复项分隔 |
| 组件分隔符 | ^(插入符/脱字符) | Component Separator | 字段内多元素分隔 |
| 转义字符 | &(与符号) | Escape Character | 文本字段中的分隔符转义 |
以上四种字符在消息头记录(H记录)第2字段中定义,顺序为:
|\^&
3.3 转义序列
以 & 开始并以 & 结束:
| 转义序列 | 含义 |
|---|---|
&F& | 字段分隔符 |
&S& | 组件分隔符 |
&R& | 重复分隔符 |
&E& | 转义字符本身 |
3.4 标准记录类型与层级
| 层级 | 记录名称 | 标识符 | 说明 |
|---|---|---|---|
| 0 | 报文头记录 | H | 报文开始 |
| 1 | 病人信息记录 | P | 病人信息 |
| 2 | 测试订单记录 | O | 测试申请 |
| 3 | 结果记录 | R | 测试结果 |
| 1…3 | 备注记录 | C | 附加备注 |
| 1…3 | 制造商信息记录 | M | 厂商自定义 |
| 0 | 报文结束记录 | L | 报文结束 |
| 1 | 请求信息记录 | Q | 查询/请求 |
四、传输报文类型
4.1 分析仪 → LIS 主机
| 报文类型 | H记录备注字段 | 触发条件 |
|---|---|---|
| 测试样本请求 | TSREQ^REAL | 条码阅读器扫描到样本条码后,请求测试项目 |
| 结果报告 | RSUPL^REAL | 样本检测完成后,上传分析结果 |
4.2 LIS 主机 → 分析仪
| 报文类型 | H记录备注字段 | 触发条件 |
|---|---|---|
| 测试订单回复 | TSDWN^REPLY | 响应分析仪的测试样本请求,下发测试项目 |
4.3 报文结构对比
测试样本请求(分析仪→主机):
H → Q → L
仅含 H(头)+ Q(请求信息)+ L(尾)
测试订单回复(主机→分析仪):
H → P → O → C → L
含 H(头)+ P(病人信息)+ O(测试订单)+ C(备注)+ L(尾)
结果报告(分析仪→主机):
H → P → O → C → {R → C}n → L
含 H + P + O + C + 多条 R(结果)+ C + L,n = 0~160 个测试项目
五、各记录字段详解
5.1 字段格式类型
| 代码 | 类型 | 说明 |
|---|---|---|
| ST | String | 字符串 |
| TX | Text | 可显示文本串(含转义序列) |
| NM | Numeric | 数值(+/- 号,可选小数点) |
| DT | Date | 日期,格式 YYYYMMDD |
| TM | Time | 时间,格式 HHMMSS |
| TS | Time Stamp | 时间戳,格式 YYYYMMDDHHMMSS |
| CM | Combination | 组件组合字段(用 ^ 分隔) |
5.2 报文头记录(H)
示例:
H|\^&|||IS1200^1|||||host|RSUPL^REAL|P|1
| 字段 | 格式 | 长度 | 说明 |
|---|---|---|---|
| 记录类型ID | ST | 1 | 固定 ‘H’ |
| 分隔符定义 | ST | 4 | 固定 |\^&(4个字符:字段/重复/组件/转义) |
| 报文控制ID | — | — | 无数据 |
| 访问密码 | — | — | 无数据 |
| 发送方名字/ID | CM | 36 | 仪器名^版本号,如 IS1200^1 |
| 发送方地址 | — | — | 无数据 |
| 保留字段 | — | — | 无数据 |
| 发送方电话 | — | — | 无数据 |
| 发送方特征 | — | — | 无数据 |
| 接收方ID | ST | 30 | 接收方名称(如 host) |
| 备注或特殊指令 | CM | 11 | 报文类型标识,见下表 |
| 处理ID | ST | 1 | 固定 ‘P’ |
| 版本号 | NM | 1 | 固定 ‘1’ |
| 报文日期时间 | — | — | 无数据 |
H记录”备注或特殊指令”字段的报文类型编码:
| 方向 | 编码 | 含义 |
|---|---|---|
| 分析仪→主机 | TSREQ^REAL | 测试样本请求(TSREQ=请求测试,REAL=分析仪自动产生) |
| 分析仪→主机 | RSUPL^REAL | 结果报告(RSUPL=结果上报) |
| 主机→分析仪 | TSDWN^REPLY | 测试订单回复(TSDWN=下发测试,REPLY=响应请求) |
5.3 报文结束记录(L)
示例:
L|1|N
| 字段 | 格式 | 长度 | 说明 |
|---|---|---|---|
| 记录类型ID | ST | 1 | 固定 ‘L’ |
| 序列号 | NM | 1 | 固定 ‘1’ |
| 结束代码 | ST | 1 | N=正常 / T=发送方强制结束 / R=接收方强制结束 / E=系统错误 / Q=请求错误 / I=无信息 / F=已处理 |
5.4 病人信息记录(P)
示例:
P|1|||||||M||||||35^Y
| 字段 | 格式 | 长度 | 说明 |
|---|---|---|---|
| 记录类型ID | ST | 1 | 固定 ‘P’ |
| 序列号 | NM | 6 | 从 1 开始 |
| 实际病人ID | — | — | 分析仪→主机时无数据;主机→分析仪时为病历号 |
| 病人姓名等 | — | — | 大部分字段无数据 |
| 病人性别 | ST | 1 | M=男 / F=女 / U=未知 |
| 特殊字段1 | CM | — | 年龄^年龄单位,如 35^Y(年龄1-200,单位 Y年/M月/D日) |
P记录大部分字段为空,仅传输性别和年龄两项。
5.5 测试订单记录(O)
示例:
O|1|000003...|3^5238^3^^S1^R|^^^2^1|R||20000529125556||||N||||1|||||||20000529125645|||F
| 字段 | 格式 | 长度 | 说明 |
|---|---|---|---|
| 记录类型ID | ST | 1 | 固定 ‘O’ |
| 序列号 | NM | 6 | 新P记录后从1开始编号 |
| 样本ID | ST | 22 | 样本管条码,条码阅读器扫描获得 |
| 仪器样本ID | ST | — | 样本号^盘号^位置号^^样本类型^容器类型(50样本/盘,盘号0-9) |
| 通用测试ID | CM | 10 | 重复字段,格式 ^^^项目通道号^稀释倍数,最多 160 项,用 \ 分隔 |
| 优先级 | ST | 1 | R=常规 / S=急诊 |
| 样本采集日期时间 | TS | 14 | YYYYMMDDHHMMSS |
| 质控/病人样本 | ST | 1 | Q=质控品 / N=病人样本 |
| 样本类型 | NM | 1 | 1=血清/血浆 / 2=尿液 / 5=其它 |
| 结果报告日期时间 | TS | 14 | 分析仪填入,主机不设置 |
| 报告类型 | ST | 1 | O=主机下发的请求 / F=分析仪上传的结果 |
测试ID重复字段示例(多测试):
^^^2^1\^^^3^1\^^^7^1
表示请求通道号 2、3、7 三个项目,稀释倍数均为 1。
5.6 备注记录(C)
跟随O记录的C记录示例:
C|1|I|^^^^|G
| 字段 | 格式 | 长度 | 说明 |
|---|---|---|---|
| 记录类型ID | ST | 1 | 固定 ‘C’ |
| 序列号 | NM | 6 | 新O记录后从1开始 |
| 备注源 | ST | 1 | I=分析仪发送 / L=主机发送 |
| 备注文本 | CM | 104 | 备注1^备注2^…^备注5(分析仪上传时无备注) |
| 备注类型 | ST | 1 | 固定 ‘G’ |
跟随R记录的C记录示例:
C|1|I|43|I
- 备注源:总是 ‘I’(仪器发送)
- 备注文本:当前设置为 ‘0’(NM类型,3位)
- 备注类型:总是 ‘I’
5.7 结果记录(R)
示例:
R|1|^^^2/1/not|8.60|nmol/L||N||F||BMSERV|||E11
| 字段 | 格式 | 长度 | 说明 |
|---|---|---|---|
| 记录类型ID | ST | 1 | 固定 ‘R’ |
| 序列号 | NM | 6 | 新O记录后从1开始 |
| 通用测试ID | CM | 22 | 格式 ^^^项目通道号/稀释倍数/预稀释,如 ^^^2/1/not(预稀释固定为 ‘not’) |
| 数据/测量值 | ST | 12 | 带小数点的结果;超出范围前缀 > 或 < |
| 单位 | ST | 6 | 结果单位 |
| 参考范围 | — | — | 无数据 |
| 结果异常标志 | ST | 2 | LL=低于重测下限 / HH=高于重测上限 / L=低于正常 / H=高于正常 / A=异常 / N=正常 |
| 结果状态 | ST | 1 | F=首次测试 / C=重测数据 |
| 仪器标识等 | — | — | 大部分无数据 |
| 异常/错误码 | ST | — | 如 E11(未明确字段位置,示例中最后一个字段) |
5.8 请求信息记录(Q)
示例:
Q|1|^^1234er^1^0^1^^S1^R||ALL||||||||O
| 字段 | 格式 | 长度 | 说明 |
|---|---|---|---|
| 记录类型ID | ST | 1 | 固定 ‘Q’ |
| 序列号 | NM | 6 | 新O记录后从1开始 |
| 起始范围编号 | CM | 39 | 格式:^^样本ID^样本号^盘号^位置号^^样本类型^优先级 |
| 结束范围编号 | — | — | 无数据 |
| 通用测试ID | — | — | 固定 ‘ALL’(请求所有测试) |
| 请求信息状态代码 | ST | — | 固定 ‘O’(仪器发往主机) |
起始范围编号各元素:
| 元素 | 长度 | 格式 | 说明 |
|---|---|---|---|
| 样本ID | 22 | ST | 样本管条码 |
| 样本号 | 5 | NM | 1-10000 |
| 盘号 | 1 | NM | 0-9(每50样本一盘) |
| 位置号 | 2 | NM | 1-50 |
| 样本类型 | 2 | ST | S1=血清/血浆, S2=尿液, S5=其它 |
| 样本优先级 | 1 | ST | R=常规, S=急诊 |
六、完整通信流程
6.1 测试请求流程(条码触发)
分析仪 LIS主机
| |
|---- 扫描条码,发送请求 ------>|
| H|\^&|||IS1200^1|||||host| |
| TSREQ^REAL|P|1 |
| Q|1|^^条码^号^盘^位^^S1^R|| |
| ALL||||||||O |
| L|1|N |
| |
|<---- 返回测试订单 -------------|
| H|\^&|||host|||||IS1200^1| |
| TSDWN^REPLY|P|1 |
| P|1|||||||M||||||35^Y |
| O|1|样本条码||^^^2^1\^^^3^1| |
| R||采集时间||||N||||1||... |
| C|1|L|^^^^|G |
| L|1|N |
| |
6.2 结果上传流程
分析仪 LIS主机
| |
|---- 检测完成,上传结果 ------>|
| H|\^&|||IS1200^1|||||host| |
| RSUPL^REAL|P|1 |
| P|1|||||||M||||||35^Y |
| O|1|样本条码|...|^^^2^1|F|| |
| 报告时间||||N||||1||... |
| C|1|I|^^^^|G |
| R|1|^^^2/1/not|8.60|nmol/L| |
| |N||F||BMSERV|||E11 |
| C|1|I|0|I |
| ...(更多R记录,最多160条) |
| L|1|N |
| |
七、关键设计要点
7.1 样本编号体系
IS1200 采用 盘号 + 位置号 双层样本管理:
- 每盘 50 个样本位
- 盘号 0-9 循环(共 10 盘)
- 样本号 1-10000 全局流水号
- 同时支持样本条码(22位)作为外部标识
7.2 测试项目编码
- 使用 项目通道号(3位数字)标识测试项目
- 分析仪与主机需统一编号对应关系
- 支持 稀释倍数 编码(1=未稀释,5/10/20/100等)
- 一条 O 记录最多请求 160 个测试项目(用重复字段)
7.3 质量控制
- 样本类型字段区分 病人样本(N) 和 质控品(Q)
- 结果异常标志支持 6 级判定(LL/L/N/H/HH/A)
- 结果状态区分 首次测试(F) 和 重测(C)
7.4 与同系列LIS协议对比
| 仪器/协议 | 物理层 | 标准 | 特点 |
|---|---|---|---|
| IS1200(本文档) | RS-232 | ASTM E1381-91 / E1394-91 | 中文文档,支持 Q 记录查询模式,最多160项测试 |
| BS-400 迈瑞生化 | TCP/IP + MLLP | HL7 v2.3.1 | 网络接口,HL7 协议栈 |
| CS-6400 迪瑞生化 | RS-232 + TCP/IP | ASTM + HL7 | 双协议,HL7 v2.3.1 |
| 雅培 ARCHITECT | RS-232 | CLSI LIS1-A + LIS2-A2 | 四层架构,UTF-8 支持 |
| 西门子 ADVIA Centaur | RS-232 | ASTM 1394 + 多种 | 多协议支持,24种操作模式 |
关联笔记
- 迈瑞BS-400-BS-420全自动生化分析仪HL7接口使用说明书 — 迈瑞生化 HL7 接口
- CS系列生化分析仪HL7-LIS网络接口使用说明书 — 迪瑞 CS 系列 HL7 接口
- 雅培ARCHITECT系统RS-232标准接口手册 — 雅培发光免疫 ASTM 接口
- Sysmex XE-5000血液分析仪ASTM协议主机接口规范 — 希森美康血球仪 ASTM 接口
- Beckman Coulter Access 2 / UniCel DxI 800 LIS 接口规范 — 贝克曼库尔特免疫仪