分享一个去年做的迈瑞血球分析仪BC-5120的串口开发,如果感兴趣可以留言或者私信,我再继续写其他检验设备的接口开发。
设备BC-5000和BC-5150应该都是通用的协议。详细内容请看传输协议。协议使用HL7,内容超复杂自行百度学习,不懂也没关系。
下载:数据传输协议、采集的数据、报告单的照片以及说明书上对项目的定义
2020年7月29日在文末新增完整解析源代码。
先看看报告单:

看一下用AccessPort串口工具接收的数据:

在程序中获取串口数据byte[] data,删除前后多余的02后,首先判断开始标记:0B,结束标记:1C 0D。然后将数据流转化成字符串,消息段用0D分隔,转换成数组。
data = TrimByte(data, 0x02);//消除前后多余的02字节
if (IsBegin(data, 0x0B) && IsEnd(dataBuffer[id].Data, new byte[] { 0x1C, 0x0D })
{
string txt = Encoding.Default.GetString(data);//数据流转成字符串
txt = txt.SubString(1,txt.Length-3);//消除前后标记
string[] Segment = txt.Split((char)0x0D);//用分隔符0D对消息段分组
}
消息段:段内的字段之间用“|”分隔。
string[] Field = Segment[i].Split('|');
MSH消息段,需要的内容:字段[10]消息控制ID=13(用于发送成功消息),字段[14]类型=P样本,Q质控
MSH|^~\&|||||20191123121334||ORU^R01|13|P|2.3.1||||||UNICODE PID|1||^^^^MR PV1|1 OBR|1||12|00001^Automated Count^99MRC|||
messageID = Field[9];//消息控制ID
type = Field[10];//P样本,Q质控
OBR消息段,字段[4]样本号=12,字段[8]日期=20191123115806
OBR|1||12|00001^Automated Count^99MRC|||20191123115806|||||||||||||||||HM||||||||1
SampleNo = Field[3];//样本号
DateTime = Field[7];//日期yyyyMMddHHmmss
OBX消息段,检验结果保存在这里,字段[4]项目名称,字段[6]结果。其他结果依次获取。
OBX|5|NM|6690-2^WBC^LN||12.36|10*9/L|4.00-10.00|H~N|||F
string itemName = Field[3].Split('^')[1];//只需要名称缩写
string itemValue = Field[5];//检验结果
获取WBC白细胞直方图数据:从“Base64^”开始是以字符串保存的图像Base64数据,需要转换成图像。红细胞和血小板直方图以及散点图类似。
OBX|31|ED|15008^WBC Histogram. BMP^99MRC||^Image^BMP^Base64^Qk1ObgAAAAAAAAYCAAAoAAAApQAAAKUAAAABAAgAAAAAAEh
bmp = Base64ToImage(itemValue.Substring("^Image^BMP^Base64^".Length));//获取直方图
完成后需要向仪器发送成功消息:
string ack = string.Format(@"MSH|^~\&|LIS||||{0}||ACK^R01|{1}|P|2.3.1||||||UNICODE
MSA|AA|{2}", Cvt.Date14(DateTime.Now), messageID, messageID);//messageID是前面获取的消息控制ID
args.SendData = Encoding.UTF8.GetBytes(ack);//发送串口数据
下面是完整的解析代码,因为是LIS系统的一部分,代码并不简洁,其中分类线等数据并没用上:
/// <summary>
/// 迈瑞BC-5000,5120,5150血球分析仪数据解析
/// </summary>
/// <param name="id">检验设备名称或者ID,用于缓冲区</param>
/// <param name="data">串口数据</param>
/// <returns>检验结果类</returns>
public static DataArgs MindrayBC5000(string id, byte[] data)
{
if (data.Length == 1 && data[0] == 2)//过滤0x02
{

本文分享了迈瑞血球分析仪BC-5120的串口开发经验,详细介绍了如何使用HL7协议解析设备传输的数据,包括样本信息、检验结果和直方图数据,并提供了完整的解析代码。
最低0.47元/天 解锁文章





