概述

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 引脚定义

引脚信号方向
2TXD (Transmit Data)DMS → Host
3RXD (Received Data)Host → DMS
4RTS (Ready To Send)DMS → Host
5CTS (Clear To Send)Host → DMS
6DSR (Data Set Ready)Host → DMS
7Signal Ground参考地
8CD (Carrier Detect)参考
20DTR (Data Terminal Ready)DMS → Host
22RI (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)

偏移字段字节数说明
1STX1块起始符
2-3BLK NBR2块号(MS Char + LS Char,ASCII 十六进制)
4-259 (131)DATA BYTES256 (128)数据内容,不足用空格填充
260-263 (132-135)CRC4校验和(MSB MS/LS + LSB MS/LS)
264 (136)ETX1块结束符

块大小可选 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 名称适用测试类型1G11G1+Retics1G1+Retics+Subsets
1General InformationC, CD, R, 4, 8✅✅✅
2CBC ParametersC, CD✅✅✅
3Diff Count ParametersCD✅✅✅
4Diff Percent ParametersCD✅✅✅
5CommentsC, CD, R, 4, 8✅✅✅
6FlagsC, CD, R, 4, 8✅✅✅
7DemographicsC, CD, R, 4, 8✅✅✅
8DF1 ScatterplotCD✅✅✅
9DF2 ScatterplotCD✅✅✅
10Diff (VCS) HistogramCD✅✅✅
11RBC HistogramC, CD✅✅✅
12PLT HistogramC, CD✅✅✅
13Retic ParametersR❌✅✅
14DF5 LS ScatterplotR❌✅✅
15DF6 OP ScatterplotR❌✅✅
16Retic (VCS) HistogramR❌✅✅
17CD4 Parameters4❌❌✅
18CD4 Scatterplot4❌❌✅
19CD4 (VCS) Histogram4❌❌✅
20CD8 Parameters8❌❌✅
21CD8 Scatterplot8❌❌✅
22CD8 (VCS) Histogram8❌❌✅

测试类型缩写:

  • 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 字段

字段内容结束符
SH2 字节 num fields(“00”到”FF”,ASCII 十六进制)CR LF

num fields = intro 字段 + 所有数据字段的总数

Intro 字段

字段内容结束符
Record Type2 字节,如 “WL” (Worklist)CR LF
Operation2 字节,如 “AD” (Add)CR LF

数据字段

字段内容结束符
ASCII Tag2 字节唯一标识CR LF
Data字段数据CR LF
  • Tag 每个记录类型内唯一,始终 2 字节
  • TS Tag 可重复,对应多个测试项目

工作清单字段(部分)

TAG字段名格式长度
CPCassette Number & PositionNNNNNN最多 6 字节
I1Identifier 1XXXX…最多 16 字节
I2Identifier 2XXXX…最多 16 字节
SNSequence Number——

⚠️ 重要:字段不能有前导或尾随空格,否则消息将被拒绝。

(文档后续还有更多 Host Worklist 字段定义)


五、与其他 LIS 协议的对比

特性Coulter STKS 1G1/3AASTM E1381/E1394HL7 v2.xSysmex 自定义
物理层RS-232RS-232TCP/IP + MLLPRS-232 + TCP/IP
帧校验CRC-16 (modified CCITT)Checksum mod 256——
块大小128/256 字节240+ 字符无块概念—
工作清单Host Worklist (ENQ)Q/R 记录QRY^Q02 / OML^O21各型号不同
结果格式Tag-Value + GroupH/P/O/R/C 记录OBX 段固定字段
图形数据散点图+直方图(VCS)通常无可选部分支持

关键技术点提炼

  1. Tag-Value 可变字段设计:不依赖固定偏移,用 TAG 识别字段,扩展性好
  2. Group 组织方式:按信息类型分组(CBC/Diff/Retic/CD4/CD8),每组独立 Field Count
  3. 双向对称设计:上下行链路层结构相似(SYN↔ENQ),降低学习成本
  4. CRC-16 校验:比简单校验和更可靠,适合医疗数据
  5. 多版本兼容:一台仪器支持 5 种高层协议(1G1/2A/3A/MAXM/Subsets),适配不同 LIS 系统
  6. 图形数据传输:支持散点图(DF1/DF2/DF5/DF6)和直方图(VCS),是早期血液分析仪中图形数据通信的代表

相关笔记