ICS 11.040.01
CCS C 30
深圳市医疗器械行业协会团体标准
T/SAMD 0013.3—2024
医用电子仪器自动测试通讯协议第3 部分:常用指令集
Medical devices automatic test communication protocol—Part 3:Common command sets
2024-11-14 发布2024-11-14 实施
深圳市医疗器械行业协会发布
目次
前言.................................................................................. II
1 范围................................................................................. 1
2 规范性引用文件....................................................................... 1
3 术语和定义........................................................................... 1
4 控制命令分类及数据结构............................................................... 1
5 常用控制命令......................................................................... 2
T/SAMD 0013.3—2024
II
前言
《医用电子仪器自动测试通讯协议》系列团体标准分为以下几个部分:
——第1部分:通用架构
——第2部分:数据结构和数据字典
——第3部分:常用指令集
——第4部分:符合性声明
——第5部分:符合性验证规则和方法
——第6部分:自动测试应用指南
——第7部分:设备接入和数字网关
——第8部分:网络安全应用指南
……
本部分为标准的第3部分,常用指令集。
本文件参照GB 1.1—2020 《标准化工作导则第1 部分:标准化文件的结构和起草规则》的规
定起草。
请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别专利的责任。
本文件由深圳市计量质量检测研究院提出。
本文件由深圳市医疗器械行业协会归口。
本标准起草单位:深圳市计量质量检测研究院、深圳市药品检验研究院(深圳市医疗器械检测中心)、
深圳市医疗器械行业协会、深圳市迈瑞生物医疗电子股份有限公司。
本标准主要起草人:张若圣、张亮、卢瑞祥、张晓华、袁秋、郑秀玉、马吉喆、邵凌云、王文丹、
陈成新、陈春芳、张珊珊、侯建勋、杨涵、徐涛。
T/SAMD 0013.3—2024
1
医用电子仪器自动测试通讯协议
第3 部分:常用指令集
1 范围
医用电子仪器自动测试通讯协议(简称MDAT协议)系列标准是以TCP/IP协议之上的OSI模型第七
层应用层报文传输协议为基础,专门针对医用电子仪器自动测试而规定的通讯协议。本部分为该系
列标准的第3部分,本部分规定了医用电子仪器自动测试通讯协议中的常用控制命令的定义、命令类
型及数据结构。
本部分适用于医用电子仪器与检测设备之间通信过程中的控制命令的定义,医用电子仪器之间
的控制命令的定义可参照执行。
2 规范性引用文件
下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅所注日期的版本适用于
本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。
GB 5271.1 信息技术词汇
GB/Z 41820-2022 公众电信网远程医疗系统技术要求
T/SAMD 0013.1-2024 医用电子仪器自动测试通讯协议第1部分:通用架构
T/SAMD 0013.2-2024 医用电子仪器自动测试通讯协议第2部分:数据结构与数据字典
3 术语和定义
GB 5271.1、GB/Z 41820-2022、T/SAMD 0013.1-2024、T/SAMD 0013.2-2024中界定的以及下
列术语和定义适用于本文件。
3.1
控制命令control command
控制命令是检测设备向医用电子仪器发送的一系列指令,实现对医用电子仪器的远程控制,触
发医用电子仪器执行特定的操作,如返回当前监测到的生理参数、设备状态和报警信息等信息,执
行自检程序或调整设备参数等。
3.2
控制命令包control command packet
控制命令包是通用数据包的一个特定类型,用于发送对医用电子仪器的控制命令。它支持请求、
应答和无法处理请求的应答类型,并通过TCP传输。
4 控制命令分类及数据结构
4.1 通用控制命令
通用控制命令用于初始化设备、建立连接、配置设备参数、获取设备状态信息以及停止操作等。
这些命令适用于各种设备的基本操作。
T/SAMD 0013.3—2024
2
4.2 测试控制命令
测试控制命令用于启动和管理特定的测试操作。这些命令主要用于触发设备执行特定的测试任
务,例如非侵入性血压测试、精度测试、漏气测试等。
4.3 部分控制命令与传输数据分类对应关系
具体内容参见本系列标准《第2部分:数据结构和数据字典》。
数据大类类型编码对应控制命令
字符串数据0X0000
用于在DataBlock 中标记此后数据为纯
字符串数据,纯字符串数据在使用控制
命令请求时一次只可请求一个
ECG 数据0X0001 StartECGTest
RESP 数据0X0002 StartRESPTest
SPO2 数据0X0003 StartSPO2Test
NIBP 数据0X0004 StartNIBPTest
IBP 数据0X0005 StartIBPTest
TEMP 数据0X0006 StartTempTest
CO 数据0X0007 StartCOTest
呼吸气体数据0X0008 StartGASTest
ANES 麻醉数据0X0009 StartAnesthesiaTest
VENT 呼吸机数据0X000A StartVentilationTest
NMT 数据0X000B StartNMTTest
…………
5 常用控制命令
5.1 通用控制命令
1)InitMD2Client命令:
控制命令ID:0X0000 0001
功能:初始化客户端函数
输入参数:无
注:本控制命令期待获得的传输数据:数据类型为布尔值,初始化成功返回true,失败返回false。
2)Quit命令:
控制命令ID:0X0000 0002
功能:停止所有测试恢复仅维持通信连接的状态
输入参数:无
注:本控制命令期待获得的传输数据:无。
3)BreakConnection命令:
控制命令ID:0X0000 0003
T/SAMD 0013.3—2024
3
功能:中断当前操作
输入参数:无
注:本控制命令期待获得的传输数据:无。
4)StartConnection命令:
控制命令ID:0X0000 0004
功能:通过控制命令在客户端和服务端之间建立连接。
输入参数:无
注:本控制命令期待获得的传输数据:
Status(必选)1:表示客户端是否成功建立连接,使用字符串状态消息,推荐使用“TRUE”、“FALSE”。
5.2 测试控制命令
1)StartECGTest命令:
控制命令ID:0X0001 0001
功能:启动心电图测试
输入参数2:
参数ID:0X0001
参数值数据类型:0X0C,DATATYPE_STRING,代表字符串类型参数3
参数值:3, 0X0001 0003, 0X0001 0004, 0X0001 0005
注:本控制命令期待获得的传输数据(可选择一条或多条):
ecg_hr (int)4:心率值,单位为bpm。
ecg_st_i (float):ST段I导联偏移,单位为mV。
ecg_st_ii (float):ST段II导联偏移,单位为mV。
ecg_st_iii (float):ST段III导联偏移,单位为mV。
ecg_st_avr (float):ST段aVR导联偏移,单位为mV。
ecg_st_avl (float):ST段aVL导联偏移,单位为mV。
ecg_st_avf (float):ST段aVF导联偏移,单位为mV。
ecg_st_v1 (float):ST段V1导联偏移,单位为mV。
ecg_st_v2 (float):ST段V2导联偏移,单位为mV。
ecg_st_v3 (float):ST段V3导联偏移,单位为mV。
ecg_st_v4 (float):ST段V4导联偏移,单位为mV。
ecg_st_v5 (float):ST段V5导联偏移,单位为mV。
ecg_st_v6 (float):ST段V6导联偏移,单位为mV。
数据包结构:
1 见本系列标准《第2 部分:数据结构和数据字典》附录B:对应Key 值为0X0000 0008
2 参数内容均可由用户自定义,本处仅为举例内容,下同
3 具体参数类别可见本系列标准《第2 部分:数据结构和数据字典》4.3,控制命令部分,下同
4 Ecg 数据均可见本系列标准《第2 部分:数据结构和数据字典》附录B:对应Key 值为0X0001 0001 至0X0001
000E
T/SAMD 0013.3—2024
4
data_format = '!4sBHHQ20sH12f20s20s20s'
real_time_data_packet = struct.pack( data_format, b'MATP', 1, 8, len(DEVICE_ID), timestamp,
DEVICE_ID.encode(), ecg_hr, ecg_st_i, ecg_st_ii, ecg_st_iii,
ecg_st_avr, ecg_st_avl, ecg_st_avf, ecg_st_v1, ecg_st_v2,
ecg_st_v3, ecg_st_v4, ecg_st_v5, ecg_st_v6,
DEVICE_DEPARTMENT.encode(),
DEVICE_ROOM.encode(), DEVICE_BED.encode() )
2)StartRESPTest 命令:
控制命令ID:0X0001 0002
功能:启动呼吸测试
输入参数:无
注:本控制命令期待获得的传输数据:
resp_imped_rr (int):阻抗呼吸率,单位为bpm。
3)StartSPO2Test命令:
控制命令ID:0X0001 0003
功能:启动血氧测试
输入参数:
参数ID:0XABCD
参数值数据类型:0X07,DATATYPE_UINT64,代表无符号64位整型参数
参数值: 单个或多个64 位无符号整型数: 0x0004000000030003 0x0004000100030004
0x0004000200030005 0x0004000300030006 0x0004000400030007
注:本控制命令期待获得的传输数据(可选择一条或多条):
spo2_spo2(int):血氧饱和度,单位为%。
spo2_pr (int):脉率,单位为bpm。
spo2_delta_spo2 (int):双血氧差值,单位为%。
spo2_pi (float):灌注指标,无单位。
spo2v_spo2(int):血氧饱和度,单位为%。
spo2b_pr (int):脉率,单位为bpm。
spo2b_pi(float):灌注指标,无单位。
4)StartNIBPTest命令:
控制命令ID:0X0001 0004
功能:启动非侵入性血压测试。
输入参数:
参数ID:AB(UTF-16)
参数值数据类型:0X0A,DATATYPE_CHAR,代表单字节字符类型参数
参数值:三个单字节字符,例如'A', 'B', 'H'
注:本控制命令期待获得的传输数据(可选择一条或多条):
T/SAMD 0013.3—2024
5
nibp_sys (int):收缩压值,单位为mmHg。
nibp_mean (int):平均压值,单位为mmHg。
nibp_dia (int):舒张压值,单位为mmHg。
nibp_cuff (int):袖带压值,单位为mmHg。
nibp_pr (int):脉搏率值,单位为bpm。
数据包结构:
data_format = '!4sBHHQ20s5H20s20s20s'
real_time_data_packet = struct.pack(data_format, b'MATP', 1, 1, len(DEVICE_ID), timestamp,
DEVICE_ID.encode(),
nibp_sys, nibp_mean, nibp_dia, nibp_cuff, nibp_pr,
DEVICE_DEPARTMENT.encode(),
DEVICE_ROOM.encode(), DEVICE_BED.encode())
5)StartIBPTest命令:
控制命令ID:0X0001 0005
功能:启动有创血压测试
输入参数:可自定义
注:本控制命令期待获得的传输数据(可选择一条或多条):
ibp_ibp1_sys (int):IBP未指定标名1 收缩压,单位为mmHg。
ibp_ibp1_mean (int):IBP未指定标名1 平均压,单位为mmHg。
ibp_ibp1_dia (int):IBP未指定标名1 舒张压,单位为mmHg。
ibp_ibp1_pr (int):IBP未指定标名1 脉率,单位为bpm。
6)StartTempTest命令:
控制命令ID:0X0001 0006
功能:启动体温测试
输入参数:可自定义
注:本控制命令期待获得的传输数据(可选择一条或多条):
temp_t1 (float):通道1 体温,单位为°F。
temp_t2 (float):通道2 体温,单位为°F。
temp_t3 (float):通道3 体温,单位为°F。
temp_td (float):两个通道体温的差值,单位为°F。
7)StartCOTest命令:
控制命令ID:0X0001 0007
功能:启动心输出量测试
输入参数:可自定义
注:本控制命令期待获得的传输数据(可选择一条或多条):
co_co (float):心排量,单位为L/min。
co_ti (float):注射液温度,单位为°F。
co_ci (float):心排指数,单位为L/min/m²。
T/SAMD 0013.3—2024
6
8)StartGASTest命令:
控制命令ID:0X0001 0008
功能:启动呼吸气体测试
输入参数:可自定义
注:本控制命令期待获得的传输数据(可选择一条或多条):
co2_rr (int):CO2 呼吸率,单位为bpm。
co2_et (float):呼气末CO2浓度,单位为%。
co2_fi (float):吸入CO2浓度,单位为%。
9)StartAnesthesiaTest命令:
控制命令ID:0X0001 0009
功能:启动麻醉测试
输入参数:可自定义
注:本控制命令期待获得的传输数据(可选择一条或多条):
anes_o2_percent (float):氧气浓度,单位为%。
anes_peep_m (float):呼气末正压,单位为cmH2O。
anes_ppeak (float):气道压峰值,单位为cmH2O。
anes_pmean (float):平均气道压,单位为cmH2O。
anes_vt (float):潮气量,单位为ml。
10)StartVentilationTest命令:
控制命令ID:0X0001 000A
功能:启动通气测试
输入参数:可自定义
注:本控制命令期待获得的传输数据(可选择一条或多条):
vent_o2_percent (float):氧气浓度,单位为%。
vent_peep_m (float):呼气末正压,单位为cmH2O。
vent_ppeak (float):气道压峰值,单位为cmH2O。
vent_pmean (float):平均气道压,单位为cmH2O。
vent_vt (float):潮气量,单位为ml。
11)StartNMTTest命令:
控制命令ID:0X0001 000B
功能:启动神经肌肉传导测试
输入参数:可自定义
注:本控制命令期待获得的传输数据(可选择一条或多条):
nmt_tof_ratio (float):TOF比值。
nmt_tof_count (int):TOF计数。
nmt_st_ratio (float):ST比值。
nmt_st_count (int):ST计数。
12)StartAccuracyTest命令:
控制命令ID:0X0001 000C
T/SAMD 0013.3—2024
7
功能:启动精度测试。
输入参数:可自定义
注:本控制命令期待获得的传输数据(可选择一条或多条):
vent_trise (float):上升时间,单位为秒。
vent_rise_time_percent (float):上升时间百分比,单位为%。
vent_phigh (float):高压值,单位为cmH2O。
vent_plow (float):低压值,单位为cmH2O。
vent_thigh (float):高压维持时间,单位为秒。
vent_tlow (float):低压维持时间,单位为秒。
数据包结构:
data_format = '!4sBHHQ20s6f20s20s20s'
real_time_data_packet = struct.pack(data_format, b'MATP', 1, 2, len(DEVICE_ID), timestamp,
DEVICE_ID.encode(),
vent_trise, vent_rise_time_percent, vent_phigh, vent_plow,
vent_thigh, vent_tlow,
DEVICE_DEPARTMENT.encode(),
DEVICE_ROOM.encode(), DEVICE_BED.encode())
13)StartLeakTest命令:
控制命令ID:0X0001 000D
功能:启动漏气测试。
输入参数:可自定义
注:本控制命令期待获得的传输数据(可选择一条或多条):
vent_mvleak (int):漏气量,单位为mL。
vent_mv (float):分分钟通气量,单位为L。
数据包结构:
data_format = '!4sBHHQ20s20s20s20sHf'
real_time_data_packet = struct.pack(data_format, b'MATP', 1, 3, len(DEVICE_ID), timestamp,
DEVICE_ID.encode(),
DEVICE_DEPARTMENT.encode(),
DEVICE_ROOM.encode(), DEVICE_BED.encode(),
vent_mvleak, vent_mv)
14)SetPatientSize命令:
控制命令ID:0X0002 0001
功能:设置监护仪的病人类型
输入参数:
T/SAMD 0013.3—2024
8
参数ID:PS(UTF-16)
参数值数据类型:0X0A,DATATYPE_UINT8,代表无符号8位整型参数
参数值:单个或多个无符号8位整数代表不同的病人类型(对应的枚举数:enum PatientSize),
以python为例:
from enum import Enum
class PatientSize(Enum):
SMALL = 1
MEDIUM = 2
LARGE = 3
EXTRA_LARGE = 4
# example
patient = PatientSize.LARGE
注:本控制命令期待获得的传输数据:布尔值设置成功返回true,失败返回false。
15)SetECGWaveGain命令:
控制命令ID:0X0002 0002
功能:设置监护仪的ECG 导联的波形增益
输入参数:
参数ID:EW(UTF-16)
参数值数据类型:0X0A,DATATYPE_UINT8,代表无符号8位整型参数
参数值:单个或多个无符号8位整数代表ECG导联和增益(分别对应的枚举数:enum
ECGLead, enum ECGGain),以python为例:
from enum import Enum
class ECGLead(Enum):
ECG_I = 1
ECG_II = 2
ECG_III = 3
ECG_V1 = 4
ECG_V2 = 5
ECG_V3 = 6
ECG_V4 = 7
ECG_V5 = 8
ECG_V6 = 9
class ECGGain(Enum):
T/SAMD 0013.3—2024
9
GAIN_LOW = 1
GAIN_MEDIUM = 2
GAIN_HIGH = 3
注:本控制命令期待获得的传输数据:布尔值设置成功返回true,失败返回false。
16)GetPatientSize命令:
控制命令ID:0X0003 0001
功能:获取监护仪的病人类型
输入参数:
参数ID:PS(UTF-16)
参数值数据类型:0X0A,DATATYPE_UINT8,代表无符号8位整型参数
参数值:单个或多个无符号8位整数代表不同的病人类型(对应的枚举数:enum PatientSize)
注:本控制命令期待获得的传输数据:bool 获取成功返回true,失败返回false。
17)GetECGWaveGain命令:
控制命令ID:0X0003 0002
功能:获取监护仪的ECG 导联的波形增益
输入参数:
参数ID:EW(UTF-16)
参数值数据类型:0X0A,DATATYPE_UINT8,代表无符号8位整型参数
参数值:单个或多个无符号8位整数代表ECG导联和增益(分别对应的枚举数:enum
ECGLead, enum ECGGain)
注:本控制命令期待获得的传输数据:bool 获取成功返回true,失败返回false。
18)GetHRParamValue命令:
控制命令ID:0X0003 0003
功能:获取监护仪的心率参数
输入参数:
参数ID:HV(UTF-16)
参数值数据类型:0X0A,DATATYPE_UINT8,代表无符号8位整型参数
参数值:单个或多个无符号8位整数代表不同的心率参数
注:本控制命令期待获得的传输数据:bool 获取成功返回true,失败返回-100。
19)GetNIBPValue命令:
控制命令ID:0X0003 0004
功能:获取监护仪的无创血压参数,包括收缩压、平均压、舒张压
输入参数:
参数ID:NV(UTF-16)
T/SAMD 0013.3—2024
10
参数值数据类型:0X0A,DATATYPE_UINT8,代表无符号8位整型参数
参数值:单个或多个无符号8位整数代表不同的无创血压参数
注:本控制命令期待获得的传输数据:bool 获取成功返回true,失败返回-100。
20)GetSaO2Value命令:
控制命令ID:0X0003 0005
功能:获取监护仪的血氧饱和度参数、血氧测量模式下的心率参数
输入参数:可自定义
注:本控制命令期待获得的传输数据:bool 获取成功返回true,失败返回-100。
21)GetETCO2Value命令:
控制命令ID:0X0003 0006
功能:获取监护仪的呼末二氧化碳参数、二氧化碳呼吸率参数
输入参数:可自定义
注:本控制命令期待获得的传输数据:bool 获取成功返回true,失败返回-100。
22)GetCuffPressureValue命令:
控制命令ID:0X0003 0007
功能:获取监护仪袖带压参数
输入参数:可自定义
注:本控制命令期待获得的传输数据:bool 获取成功返回true,失败返回-100。
23)StartMeasurementCalibration命令:
控制命令ID:0X0001 000E
功能:启动测量校准。
输入参数:无
注:本控制命令期待获得的传输数据:bool 获取成功返回true,失败返回-100。
5.3 控制命令及控制命令类型字典
本节的表格中仅包含此协议本部分目前已列举的控制命令,如选取这些命令需要严格遵循控制
命令ID和控制命令的对应关系。省略号部分用户可根据规则自定义,但是需要遵循本协议的控制命
令及控制命令ID的编写规范(32位无符号16进制数,前4位表示控制命令类型,0X0000到0X0003已
被本协议占用,不可用于其他控制命令类型。后4位用于表示具体的某条控制命令,其中本协议已给
出的部分不可以被占用)。
表1 控制命令类型字典
控制命令类型控制命令ID
通用控制命令0X0000
Start 类型测试命令0X0001
Set 类型测试命令0X0002
Get 类型测试命令0X0003
……(可自定义)……(可自定义)
T/SAMD 0013.3—2024
11
表2 控制命令字典
控制命令控制命令ID
InitMD2Client 0X0000 0001
StartConnection 0X0000 0002
Quit 0X0000 0003
Break 0X0000 0004
StartECGTest 0X0001 0001
StartRESPTest 0X0001 0002
StartSPO2Test 0X0001 0003
StartNIBPTest 0X0001 0004
StartIBPTest 0X0001 0005
StartTempTest 0X0001 0006
StartCOTest 0X0001 0007
StartGASTest 0X0001 0008
StartAnesthesiaTest 0X0001 0009
StartVentilationTest 0X0001 000A
StartNMTTest 0X0001 000B
StartAccuracyTest 0X0001 000C
StartLeakTest 0X0001 000D
StartMeasurementCalibration 0X0001 000E
…………
SetPatientSize 0X0002 0001
SetECGWaveGain 0X0002 0002
…………
GetPatientSize 0X0003 0001
GetECGWaveGain 0X0003 0002
GetHRParamValue 0X0003 0003
GetNIBPValue 0X0003 0004
GetSaO2Value 0X0003 0005
GetETCO2Value 0X0003 0006
GetCuffPressureValue 0X0003 0007
……(可自定义)……(可自定义)