概述
Coulter STKS 血液分析仪主机通信协议规范(DMS 3A 版),PN 4237290A,1996年4月发布。Beckman Coulter 官方文档,描述 STKS DMS 数据管理系统与 LIS 主机计算机之间的双向通信规格。
适用仪器:
- COULTER STKS Analyzer
- STKS + Reticulocyte Analysis(网织红细胞分析)
- STKS + CD4/CD8 淋巴细胞分析
软件版本:Software version 3A
一、协议层次架构
采用经典的两层协议栈设计:
| 层级 | 名称 | 职责 |
|---|---|---|
| 低层 | Data Link(数据链路层) | 传输数据字节,不关心内容含义 |
| 高层 | Presentation(表示层) | 定义实际信息及其格式 |
高层协议兼容性(通过 Host Computer Definition 屏幕的 Compatibility 选项切换):
- 1G1 — 基础 CBC/DIFF 格式
- 1G1 + Retics (MAXM) — 含网织红细胞
- 1G1 + Retics + Subsets — 含 CD4/CD8 亚群
- 2A — 中期版本格式
- 3A — 最新版本格式
⚠️ 关键注意:接收方必须解析所有数据,切勿假设固定偏移量(DO NOT ASSUME FIXED OFFSETS)。
二、物理层与硬件接口
2.1 接口规格
| 参数 | 值 |
|---|---|
| 标准 | EIA RS-232-C |
| 连接器 | 25-pin D-sub(DTE 配置) |
| 接口位置 | DMS 背面 AUX 连接器 |
2.2 引脚定义
| 引脚 | 信号 | 方向 |
|---|---|---|
| 2 | TXD (Transmit Data) | DMS → Host |
| 3 | RXD (Received Data) | Host → DMS |
| 4 | RTS (Ready To Send) | DMS → Host |
| 5 | CTS (Clear To Send) | Host → DMS |
| 6 | DSR (Data Set Ready) | Host → DMS |
| 7 | Signal Ground | 参考地 |
| 8 | CD (Carrier Detect) | 参考 |
| 20 | DTR (Data Terminal Ready) | DMS → Host |
| 22 | RI (Ring Indicator) | 参考 |
2.3 通信参数(2.5节)
需查看 2.5 节获取具体波特率等参数(文档标准配置通常为 9600/19200 bps,8N1)。
三、DMS → Host 通信(结果上传)
3.1 数据链路层(3.1节)
基本规则
- 所有传输字节为 ASCII 字符
- 所有数值为十六进制(如 FF 以两个 ASCII 字节 “FF” 表示)
- 前两字节为块计数(Block Count,最多 255 块)
- 最后一块用 ASCII 空格(20H)填充
- 支持 Full Handshake 和 No Handshake 两种模式
Full Handshake 流程
DMS (Sender) Host (Receiver)
SYN (ready) ────>
<──── SYN (go ahead)
Block Count ────>
<──── ACK (ready to receive)
或 NAK (receiver abort)
Data Block 1 ────>
<──── ACK (block ok) / NAK (retransmit) / SYN (retransmit all)
Data Block 2 ────>
<──── ACK / NAK / SYN
...
SYN (all done) ────>
<──── ACK (transmission accepted)
关键规则:
- 最多 255 块数据
- 主机 NAK → DMS 重传该块(重传次数由主机决定)
- 主机发送 SYN(非初始握手时)→ DMS 从第一块全部重传
- Enable Spooler 开启:DMS 持续重发同一条消息直到主机 ACK
- Enable Spooler 关闭:DMS 只尝试发送一次
No Handshake 模式
- 忽略所有硬件/软件响应
- 不发送 SYN 前导码
- 直接传输数据块
数据块结构(Data Block)
| 偏移 | 字段 | 字节数 | 说明 |
|---|---|---|---|
| 1 | STX | 1 | 块起始符 |
| 2-3 | BLK NBR | 2 | 块号(MS Char + LS Char,ASCII 十六进制) |
| 4-259 (131) | DATA BYTES | 256 (128) | 数据内容,不足用空格填充 |
| 260-263 (132-135) | CRC | 4 | 校验和(MSB MS/LS + LSB MS/LS) |
| 264 (136) | ETX | 1 | 块结束符 |
块大小可选 128 或 256 字节数据。
CRC 算法:改进型 CCITT CRC16,仅对数据字节计算。附录 B 提供 C 和汇编语言实现参考。
3.2 表示层 — 1G1/1G1+Retics/1G1+Retics+Subsets 格式(3.2节)
消息整体结构
PREAMBLE → GROUP X1 → GROUP X2 → ... → GROUP Xn → POSTAMBLE
Preamble(前导码)
标记消息开始,格式:
CR LF CR LF CR LF CR LF CR LF CR LF ... CR LF
(多组 CR/LF 对)
Postamble(后导码)
标记消息结束,格式同上。
Group(组)结构
DC1 FIELD_COUNT CR LF FIELD_1 CR LF FIELD_2 CR LF ... FIELD_N CR LF
- DC1 (11H):组起始标记
- Field Count:2 字节 ASCII 十六进制(00-FF,即 0-255 个字段)
- 无数据的组以 Field Count = 00 发送
- Graphics 选项设为 No 时,散点图/直方图组不发送
Field(字段)结构
TAG SEP DATA CR LF
- TAG:可变长度标识符
- SEP:一个或多个空格(20H)或制表符(09H)
- DATA:仅含 20H-7EH 可打印 ASCII
- 字段间用 CR/LF 分隔
⚠️ 重要:不要用字的位置来识别字段,应通过 CR/LF 找字段,用 TAG 识别字段。
字段数据类型标记
| 符号 | 含义 | ASCII 范围 |
|---|---|---|
| A | 字母字符(含空格) | 61H-7AH, 41H-5AH, 20H |
| N | 数字字符(0-9, +, -, .) | 30H-39H, 2BH, 2DH, 2EH |
| X | 可打印字符 | 20H-7EH |
| SEP | 分隔符(空格或制表符) | 20H 或 09H |
3.3 Group 定义与顺序(Table 3)
| 顺序 | Group 名称 | 适用测试类型 | 1G1 | 1G1+Retics | 1G1+Retics+Subsets |
|---|---|---|---|---|---|
| 1 | General Information | C, CD, R, 4, 8 | ✅ | ✅ | ✅ |
| 2 | CBC Parameters | C, CD | ✅ | ✅ | ✅ |
| 3 | Diff Count Parameters | CD | ✅ | ✅ | ✅ |
| 4 | Diff Percent Parameters | CD | ✅ | ✅ | ✅ |
| 5 | Comments | C, CD, R, 4, 8 | ✅ | ✅ | ✅ |
| 6 | Flags | C, CD, R, 4, 8 | ✅ | ✅ | ✅ |
| 7 | Demographics | C, CD, R, 4, 8 | ✅ | ✅ | ✅ |
| 8 | DF1 Scatterplot | CD | ✅ | ✅ | ✅ |
| 9 | DF2 Scatterplot | CD | ✅ | ✅ | ✅ |
| 10 | Diff (VCS) Histogram | CD | ✅ | ✅ | ✅ |
| 11 | RBC Histogram | C, CD | ✅ | ✅ | ✅ |
| 12 | PLT Histogram | C, CD | ✅ | ✅ | ✅ |
| 13 | Retic Parameters | R | ❌ | ✅ | ✅ |
| 14 | DF5 LS Scatterplot | R | ❌ | ✅ | ✅ |
| 15 | DF6 OP Scatterplot | R | ❌ | ✅ | ✅ |
| 16 | Retic (VCS) Histogram | R | ❌ | ✅ | ✅ |
| 17 | CD4 Parameters | 4 | ❌ | ❌ | ✅ |
| 18 | CD4 Scatterplot | 4 | ❌ | ❌ | ✅ |
| 19 | CD4 (VCS) Histogram | 4 | ❌ | ❌ | ✅ |
| 20 | CD8 Parameters | 8 | ❌ | ❌ | ✅ |
| 21 | CD8 Scatterplot | 8 | ❌ | ❌ | ✅ |
| 22 | CD8 (VCS) Histogram | 8 | ❌ | ❌ | ✅ |
测试类型缩写:
- C = CBC(全血细胞计数)
- CD = CBC/DIFF(全血细胞+分类)
- R = RETICS(网织红细胞)
- 4 = CD4
- 8 = CD8
3.4 General Information Group 示例
Date 字段
- TAG:
DATE - 格式:
NN/NN/NN(月/日/年) - 长度: 9 字节
(文档后续还有大量各字段详细定义,包括 CBC 参数、Diff 参数、Flags、人口统计学信息、直方图/散点图数据等)
四、Host → DMS 通信(工作清单下发)
4.1 数据链路层(4.1节)
基本规则
- DMS 接收数据要求完整握手
- 协议与 DMS→Host 类似,但 SYN 替换为 ENQ
- 数据块大小:128 或 256 字节(通常 256)
- 最多 255 块
握手流程
Host (Sender) DMS (Receiver)
ENQ ────>
<──── ENQ (go ahead) 或 SYN (busy)
Block Count ────>
<──── ACK (ready to receive) 或 NAK (abort)
Data Block 1 ────>
<──── ACK / NAK / ENQ
Data Block 2 ────>
<──── ACK / NAK / ENQ
...
ENQ (all done) ────>
<──── ACK / NAK / ENQ
<──── DLE + 'A'/'B'/'C'/'D' (表示层响应)
表示层响应码(DLE 后字符)
| 字符 | 含义 |
|---|---|
'A' | Transmission Accepted, Ready for next(接受,可继续发) |
'B' | Transmission Accepted, DO NOT send more(接受,别再发了) |
'C' | Transmission Rejected, Please retry(拒绝,请重试) |
'D' | Transmission Rejected, Please abandon(拒绝,请放弃) |
4.2 表示层 — Host Worklist(4.2节)
消息结构
PREAMBLE → INTRO → FIELD 1 → FIELD 2 → ... → FIELD N
数据为 ASCII 行序列,每行以 CR/LF 结尾,块边界无特殊意义。
Preamble 字段
| 字段 | 内容 | 结束符 |
|---|---|---|
| SH | 2 字节 num fields(“00”到”FF”,ASCII 十六进制) | CR LF |
num fields = intro 字段 + 所有数据字段的总数
Intro 字段
| 字段 | 内容 | 结束符 |
|---|---|---|
| Record Type | 2 字节,如 “WL” (Worklist) | CR LF |
| Operation | 2 字节,如 “AD” (Add) | CR LF |
数据字段
| 字段 | 内容 | 结束符 |
|---|---|---|
| ASCII Tag | 2 字节唯一标识 | CR LF |
| Data | 字段数据 | CR LF |
- Tag 每个记录类型内唯一,始终 2 字节
- TS Tag 可重复,对应多个测试项目
工作清单字段(部分)
| TAG | 字段名 | 格式 | 长度 |
|---|---|---|---|
| CP | Cassette Number & Position | NNNNNN | 最多 6 字节 |
| I1 | Identifier 1 | XXXX… | 最多 16 字节 |
| I2 | Identifier 2 | XXXX… | 最多 16 字节 |
| SN | Sequence Number | — | — |
⚠️ 重要:字段不能有前导或尾随空格,否则消息将被拒绝。
(文档后续还有更多 Host Worklist 字段定义)
五、与其他 LIS 协议的对比
| 特性 | Coulter STKS 1G1/3A | ASTM E1381/E1394 | HL7 v2.x | Sysmex 自定义 |
|---|---|---|---|---|
| 物理层 | RS-232 | RS-232 | TCP/IP + MLLP | RS-232 + TCP/IP |
| 帧校验 | CRC-16 (modified CCITT) | Checksum mod 256 | — | — |
| 块大小 | 128/256 字节 | 240+ 字符 | 无块概念 | — |
| 工作清单 | Host Worklist (ENQ) | Q/R 记录 | QRY^Q02 / OML^O21 | 各型号不同 |
| 结果格式 | Tag-Value + Group | H/P/O/R/C 记录 | OBX 段 | 固定字段 |
| 图形数据 | 散点图+直方图(VCS) | 通常无 | 可选 | 部分支持 |
关键技术点提炼
- Tag-Value 可变字段设计:不依赖固定偏移,用 TAG 识别字段,扩展性好
- Group 组织方式:按信息类型分组(CBC/Diff/Retic/CD4/CD8),每组独立 Field Count
- 双向对称设计:上下行链路层结构相似(SYN↔ENQ),降低学习成本
- CRC-16 校验:比简单校验和更可靠,适合医疗数据
- 多版本兼容:一台仪器支持 5 种高层协议(1G1/2A/3A/MAXM/Subsets),适配不同 LIS 系统
- 图形数据传输:支持散点图(DF1/DF2/DF5/DF6)和直方图(VCS),是早期血液分析仪中图形数据通信的代表
相关笔记
- Sysmex XE-5000血液分析仪数据通信规范 — Sysmex 血液分析仪 LIS 协议
- Sysmex XE-5000血液分析仪ASTM协议主机接口规范 — Sysmex ASTM 标准协议
- Beckman Coulter LH Series Workstation 主机传输规范 — 同品牌 LH 系列(更新一代)
- Beckman Coulter UniCel DxH 800 血液分析仪主机接口传输手册 — 同品牌 DxH 系列(最新一代)
- Beckman Coulter Access 2 / UniCel DxI 800 LIS 接口规范 — 同品牌免疫分析仪 ASTM 协议
- 迈瑞 BC-5300 系列通信协议 — 国产血液分析仪 LIS 协议对比