找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
yeec近年来原创帖合集 本站基础知识下载汇总 yeec网站学习币充值链接 学习中心正式上线

[原创]通过ABX PENTRA系列串口代码含义解释血球仪串口接收分析

[复制链接]
郑振寰 发表于 2007-12-13 16:29 | 显示全部楼层 |阅读模式

注册登录才能更好的浏览或提问。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

最早有把血球仪的数据传送到电脑里的概念是在98年,那个时候感觉直方图的含义要远远大于数字含义,曾尝试着用电脑接收数据,当接收过来之后,很明显的ASCII码,对照原来的结果直接就可以看出来,也就没有细研究。等到了99年,四军医的老师在交谈中,希望接收串口数据并解释成带有中文报告的数据库,不知道如何处理接收语句。当我询问他打算用什么语言来编写程序的时候,回答是BASIC,于是毫不犹豫地告诉他语句:OPEN COM1 9600,8,1 AS。。。。。。结果,不久就来电话,说用的是VB,不认这种老式的语言。呵呵,于是,打开自己安装的VB ,找到COMM控件,告诉他怎么用,等我再去医院的时候,已经看到了中文报告系统,但没有直方图数据,理由是不需要,报告单上也没有地方。到了2000年,这种串口接收有了一个堂而皇之名字:LIS。询问也就多了起来。整体来看,项目数据的解读好像都没有问题,FLAG旗标和提示就存在问题了,直方图和散点图 问题最大。遇到很多检验科的老师自行解读的时候,现场询问,一般都能给予正确的解答,因为有原机的输出结果和接收结果对照,但在网络上,我很少解答,原因以前的帖子已经说过了,纯商业行为也就没必要免费解答。再说,也不是什么难的事情。

国内的LIS软件对于图形的解释我没看好,跟原机输出的比对总是有差别,甚至差别很大,也就没有了参考价值。而对维修人员来说,图形说明一切,与原机输出存在差别,特别是关键地方存在差别是很误事的。主要问题在于旗标和提示没用,界标不准确,坐标乱画,图形长宽比例严重失调。

从这点上也反应了一个问题,编程人员知识的不全面,经验不足,有的根本不是程序员,而是简单的自学,难度自然增大。

下面从ABX的代码解释举例说明,要说明的是此帖可能需要几天完成,不要希望得到详细的内容,仅仅提供一个思路,不解答任何提问,如要讨论,请另外发新主题帖。

看贴要回是本分,有问必答是人才,解决问题回贴是公德.
医疗设备维修.维修咨询(请尽可能在论坛提问),协助维修,上门服务.
电话:13991827712

yeec维修网视频培训资料购买链接
BeckmanCoulter DXA系列培训资料
Ortho VITROS 系列培训资料
Ortho enGen_ThermoFisher TCA 实验室自动化系统培训资料
Roche Cobas 实验室自动化系统培训资料
Roche Cobas modular系列分析仪培训资料
Horiba-ABX Yumizen系列培训资料
DiaSorin Liaison系列培训资料
Advia2120培训资料
Inpeco-Aptio系列培训资料
Atellica Solution系列培训资料
Siemens Immunoassay系列培训资料 西门子化学发光系列
SIEMENS Advia系列培训资料 西门子生化系列
Toshiba/Abbott系列培训资料 东芝雅培生化系列
Abbott Architect 系列培训资料 雅培生化化学发光系列
ACL TOP 系列培训资料 沃芬TOP血凝系列
BeckmanCoulter Immunoassay系列培训资料 贝克曼化学发光系列
BeckmanCoulter DXH 系列培训资料 贝克曼DXH血球系列
BeckmanCoulter自动样品处理系统介绍性培训资料 贝克曼前后处理流水线系列
BeckmanCoulter AU系列培训资料 贝克曼AU生化系列
BeckmanCoulter DXC系列培训资料 贝克曼DXC生化系列
LaboSpect003/008/AS 7100/7180分析仪培训资料
Horiba-ABX系列培训资料 Horiba-ABX血球系列
Sysmex 血凝系列培训(CA/CS)
Sysmex 尿液分析系列培训(UF1000/5000/UC3500)
Sysmex 血球系列培训(KX21/POCH/XS/XT/XE)
Sysmex XN系列培训(XN-L/XN1000/XN2000/XN3000/XN9000)
Sysmex HISCL系列培训
可直接淘宝店铺购买https://yeec.taobao.com,或咨询手机/微信:13991827712,QQ:67708237
 

 楼主| 郑振寰 发表于 2007-12-13 21:53 | 显示全部楼层

所有的血球串口格式都遵循ASTM标准,ABX格式和SYSMEX格式都是根据这个标准演化来的,除了老的设备,现有的格式都是据此为原则的。

下面以ABX的举例说明:

这是一组ABX的串口接受数据,一串数字开始也就是序列号,以版本号加校验码结束。字符串长度根据数据量的多少会有长度的变化,比如空白测试的数据和标本测试的数据相差很多。

下图是ABX WBC直方图的示例。

这里有1、2、3、4、5一共5个界标,在COULTER当中,前三个是都采用的,而在ABX当中,前三个合并成一个点,4、5则是两个界标。这组数据以下面的形式存在于数据的倒数第5行

] 000 000 000 030 042加回车。这5组数据分别对应1、2、3、4、5这5个界标,从这组数据可以看出,1、2、3都是000,也就是一个点,L1区域在ABX中不使用。这个点就是白细胞直方图的起点,在没有调整的情况下是30FL,030是淋巴和中间细胞的界标,ABX当中是固定在100FL的,而042则是中间细胞与中性细胞的界标,这个位置是150FL,界标的数据确定下来了,那么如何在坐标上标注呢?血球上的直方图坐标,横坐标是体积用FL表示,横坐标是相对数量,一般采用128点阵表示,当然你也可以采用256,只有你能显示并打印出来,1024也未尝不可。长宽比列一般都采用2:1或者16:9,目的是方便观察者习惯。纵横坐标的交叉点就是0FL ,那么起点,外加两个坐标就可以清楚地标记出来了,界标线的画法一般以坐标区域的宽度为高度用虚线描绘,在编程当中这仅仅是一句话而已。而横坐标的标记则是每50FL为原则,标注则是第一个50FL和所有的100FL ,最后的标注在400--450FL停止,也就是说,座标区域最多显示450FL。

红细胞的两个界标线在串口数据中并不出现,但直接打印或者原厂的ASP01软件中却能够显示,原因很简单,这个界标线是通过PDW计算得来的,除非你利用厂家的公式进行曲线内百分比的取值,否则无法得出这两个界标线。没有这两个界标线并不影响使用,但在红细胞提示的时候,没有界标线很难直观的看出图形是否左右移动,从而方便的看出大小红细胞的问题。红细胞的直方图数据是256通道,从30Fl到300FL。

而在血小板中,就一个界标线,就是25FL这条,血小板的直方图数据是256通道,从2FL到无限,其实最大也就是30FL向外一点儿。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
看贴要回是本分,有问必答是人才,解决问题回贴是公德.
医疗设备维修.维修咨询(请尽可能在论坛提问),协助维修,上门服务.
电话:13991827712
 楼主| 郑振寰 发表于 2007-12-14 11:45 | 显示全部楼层


上一楼的TXT代码是MICROS的,这里的上传的是PENTRA的。这里明确给出了几个界标,看这组数据:

] 002 007 120 000 000    
^ 023 048
_ 098
` 017 062 120
a 015 018 048 026 118 022 075 078 002 002 002

每一行都是以回车结束的,这样便于区别,第一行是WBC的直方图界标,注意,PENTRA的WBC直方图并不是WBC/BASO的数据,而是鞘流电阻法检测的数据,从界标上看,1、2、3界标分别对应002,007,120,而4、5界标则是0,说明4、5并不使用。

第二行的^ 023 048则是红细胞的界标,这一点要比三分类好多了,给出了界标也有漂亮多了,观察方便多了。

第三行是血小板的界标,_ 098

第四行是:` 017 062 120这是WBC/BASO的三个界标,分别对应BAS1,BAS2,BAS3

第五行是:a 015 018 048 026 118 022 075 078 002 002 002这是散点图的界标。

下面解释一下WBC/BASO的界标。

 
这是WBC/BASO的直方图,三个界标BAS1,BAS2,BAS3。但这个界标经常被用户调整,但有个原则,BAS3很少有人去改动,因此,可以根据BAS3代表的240FL来确定坐标标注依次来确定整个坐标。

而散点图也就是LMNE图比较复杂些,它是由 2048个区域(4096个ASCII代码)组成,散点图规矩在127*127的矩阵里面,在双数据格式(网织红细胞散点图)中,给出的数据是127*256的,也就是PENTRA120的格式,但这种长方形的结构看起来很难看,厂家给出了一个修正,就是纵坐标为吸光度通道,为256个,横坐标为电阻体积通道,为127个,但这里需要你做的是以横坐标通道宽度为依据,纵坐标每2个通道为一个通道,这样,纵坐标也就是128个通道了。这就形成了127*127的矩阵,加上外框,就是128*128的矩阵图了。

散点图是一个位图,也就是2048位图,PENTRA120网织红细胞的位图特殊一些,是128*16位的。

至于散点图的位数,在代码中已经给出,

$64 $20 lha$20$20$20$20$20 $20od$20$20$20$20$20$20 $20 128Y256X $20 10772
$20 data $0D
$65 $20 compress $20 uuencode $20128X128Y $20 05386 $20 data $0D

上面是两行例子,第一行表示位图是128Y轴,256X轴,也就是网织红细胞的位图,第二行表示128X轴128Y轴,非常清晰明了。

坐标矩阵建立之后,就可以描点了,LMNE的4096ASCII码的描点顺序是,矩阵图的从左往右,从上往下。

如下图,你可能会更清晰的认识: 

上图清晰的告诉你,这2048个通道是如何排列的,很形象的说就是在128*128的方框内刻划出2048个小格。说白了,2048组HEX数据,以16个一组为一行,总共128行。但这样虽然用完2048个HEX数据,但真正的描点并不这样描。而是把每行的16个HEX码转换成二进制,这样每行就变为16*8=128,也就成为128*128的方形散点图了。由于二进制只有0和1,所以被当做描点开关,0不描点,1描点。

上图就是LMNE散点图的界标。

有12个电阻法界标,分别是:NoL, NoN, NoE, LN,RN, LL, AL, LMU, LMD, LMN, MN, RM.

三个吸光度法界标,分别是:NL,NE, RMN.

还有三个分布区域,分别是FNE, FMN, FLN,用虚线表示。

被界标线围起来的区域就是分类项目,从下到上依次是:噪音,左(小)淋巴,淋巴,异淋,单核,右(大)单核。

左(小)中性,中性,右(大)中性。大单核和大中性被规定为LIC,也就是巨大不成熟细胞。

嗜酸细胞。

网织红细胞的散点图界标则有八个,横坐标分别是R1, R2, R3, R4.纵坐标分别是F1, F2, F3, F4.

图框如下:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
看贴要回是本分,有问必答是人才,解决问题回贴是公德.
医疗设备维修.维修咨询(请尽可能在论坛提问),协助维修,上门服务.
电话:13991827712
 楼主| 郑振寰 发表于 2007-12-14 13:49 | 显示全部楼层

下面说一下ASCII代码中的划分,这里以 HEX代码为例。你看到的ASCII码在文本形式下以乱码形式显示,在HEX格式下却是很有规律的。

WBC的直方图从W标记开始一共是128位,以回车符结束。这样就成为HEX码为0A57,ASCII码为W的两位码开始,中间是128位数据,结束是一位回车OD。$57 W WBC Amplitude of each channel 2+128+1

这是HEX编辑器看到的情况。

下面依次类推:
$58 X RBC Amplitude of each channel 2+128+1 红细胞以0A58开始,128位后以0D结束。
$59 Y Plt Amplitude of each channel 2+128+1 血小板以0A59开始,128位后以0D结束。
$5A Z Basophils Amplitude of each channel 2+128+1 WBC/BASO以0A5A开始,128位后以0D结束。
$5B [ Lmne matrix Screen bitmap 2+4096+1 LMNE散点图以0A5B开始,4096位后以0D结束。

这是HEX的结果。
$5C \ Reticulocyte matrix Screen bitmap 2+4096+1 网织红细胞以0A5C开始,4096位后以0D结束。

这里不一一举例了,回去大家自己接受数据寻找就是。

各个界标在这里寻找:
$5D ] WBC thresholds 5 thresholds 1+20+1 WBC界标,以0A5D开始一共20位,以20空格结束。上面我所说的3位,实际上指的是ASCII码,空格是显示不出来的。例如.] 002 007 120 000 000 对应HEX为0A5D203030322030303720313230203030302030303020

$5E ^ RBC thresholds 2 thresholds 1+8+1 RBC界标,以0A5E开始一共8位,以20空格结束。

例如:.^ 023 048 对应HEX为:0A5E203032332030343820
$5F _ PLT thresholds 1 threshold 1+4+1 PLT界标以0A5F开始,一共4位,以0D回车结束。

例如:._ 098.对应HEX为:0A5F203039380D
$60 ‘ Basophil thresholds 3 thresholds 1+12+1 WBC/BASO界标,以0A60开始,一共12位,以0D回车结束,例如.` 017 062 120.对应HEX为:0A602030313720303632203132300D
$61 a Lmne matrix thresholds
12 RES thresholds, 6 ABS thresholds
(3 of them give the proximity
flags: FLN, FMN, FNE)
1+72+1

LMNE界标以0A61开始,一共72位,以0D回车结束,例如:.a 015 018 048 026 118 022 075 078 002 002 002..f..g..p .对应HEX为:0A6120303135203031382030343820303236203131382030323220303735203037382030303220303032203030320D0A660D0A670D0A702030310D
$62 b
Reticulocyte matrix
thresholds
4 CIS thresholds, 4 OFL thresholds 1+32+1这是网织红细胞
$63 c Double matrix Lmne screen bitmap 2+8192+1这是双散点位图
$64 d Lmne matrix extended format see description这是LMNE扩展格式,一下图形数据都是在传送RAW数据后才能得到的。
$65 e Reticulocyte matrix extended format see description网织红细胞扩展位图
$6C l WBC extended format see description WBC扩展位图
$6D m RBC extended format see description RBC扩展位图
$6E n PLT extended format see description PLT扩展位图
$6F o BASO extended format see description WBC/BASO扩展位图。


我个人认为,几乎所有的血球都提供RAW格式的数据传送,而图形的解析往往用RAW格式要比用直接传送过来的格式要容易的多,我不明白为什么大家拼命的去解释直接传送的数据,而不看看RAW数据呢?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
看贴要回是本分,有问必答是人才,解决问题回贴是公德.
医疗设备维修.维修咨询(请尽可能在论坛提问),协助维修,上门服务.
电话:13991827712
 楼主| 郑振寰 发表于 2007-12-14 15:31 | 显示全部楼层

下面的代码划分好像不用说都能看出来:

$70 p Analyzer number 01 2+2+1 Integers required 分析仪代码:2位
$75 u Id # or sample id. 1450302154275-42 2+16+1 String(16) required 样本编号16位
$76 v Id. or patient name SMITH Ronald 2+30+1 String(30) required 病人姓名30位
$77 w Birth date YYYYMMDD 2+8+1 nnnnnnnn optional 8 出生日期8位
$78 x Age 7d or 4w or 10m or 54y or 100 2+3+1 String(3) advised 9 年龄3位,支持d-天,w--周,y--年,m--月等表现形式
$79 y Sex 0, 1 or 2 2+1+1 String(1) advised 10 性别1位

例如1: Male, 2: Female
$7A z Origin x 2+1+1 String(1) optional 
$7B { Doctor Dr Jones 2+15+1 String(15) optional 医生15位
$7C | Department Cardiology 2+10+1 String(10) optional 科室10位
$7D } Collection date 06/08/99 13h15 2+14+1 nn/nn/nn nnhnn optional 11标本测试日期和时间,14位

$7E ~ Comments 2+32+1 String(32) optional 注释32位
$7F Blood type man 2+16+1 String(16) optional 12 标本形式16位对应正常值范围,例如,男人,女人,儿童,老人等等
$80 ç Analysis type A 2+1+1 String(1) advised 13 分析形式1位

例如:'A': CBC
'B': DIF (CBC+DIF)五分类
'C': RET网织红
'D': LMG (CBC+LMG)三分类
'E': CBR (CBC+RET)计数加网织红
'F': DIR (CBC+DIF+RET)计数加网织红加分类
'G': SPS Etalement lame sans analyse推片分析
'@': Resampling and reflex testing重做
$89 ë SPS smearing mode ECC 2+3+1 String(3) optional 14 SPS推片模式

例如E: Smearing 推片
S: Staining染色
C: Criteria标准
$8A è SPS smearing profile 65G4 2+4+1 String(4) optional 15SPS推片轮廓
$8B ïPatient identification200205125751 2+30+1 String(30) advised 16病人诊断

下面是报头显示的字符表示的含义:

RESULT Hematological result transmission on a routine mode正常结果
RES-RRHematological result transmission on automatic re-sampling mode重测结果
REASSESS Result transmission of a recalculated sample using the recalculation user function P80/XL80: Not transmitted 结果重传
QC-RES-H Result transmission of a high level control blood P80/XL80: Not transmitted高值质控
QC-RES-M Result transmission of a median level control blood P80/XL80: QC-L\M\H transmission中值质控
QC-RES-L Result transmission of a low level control blood P80/XL80: Not transmitted 低值质控
FILE Patient file request 病人文件请求
END Connection end 关闭连接
RES-BLK Blank cycle results P80 Only 空白测试结果。

下面的就不解释了,自己看吧

$70 p Analyzer number 01 2+2+1 Integers
$71 q Analysis date and time 03/01/05 13h15mn31s 2+19+1 String(19) 17
$72 r Analyzer run number 115 or 005CBC06 2+16+1 String(16) 18
$73 s Analyzer sequence number
$74 t Sampling mode M: manual (open tube)R: rack (close tube)2+1+1 String(1)
$75 u Id # or sample id. 1450302154275-42 2+16+1 String(16)
$76 v Id. or patient name SMITH Ronald 2+30+1 String(30)
$77 w Birth date 16/03/72 or 03161972 2+8+1 nn/nn/nn or nnnnnnnn 19
$78 x Age 7d or 4w or 10m or 54y or 100 2+3+1 String(3)
$79 y Sex 0, 1 or 2 2+1+1 String(1) 10
$7A z Origin x 2+1+1 String(1)
$7B { Doctor Dr Jones 2+15+1 String(15)
$7C | Department Cardiology 2+10+1 String(10)
$7D } Collection date 06/08/99 13h15 2+14+1 nn/nn/nn nnhnn 11
$7E ~ Comments 2+32+1 String(32)
$7F Blood type man 2+16+1 String(16) 12
$80 ç Analysis type A 2+1+1 String(1) 13
$81 ü Sample rack type 0: 10 positions 1: 15 positions 2: 32 positions 2+1+1 Integer
$82 é Number of runs 0, 1, ... 2+1+1 Integer
$83 â Operator code Bob 2+3+1 String(3)

 

R Parameter rejected for a counting default
B Incorrect balance between the counting methods P80: Not transmitted
S Suspicious parameter value
M Value input manually Pentra XL 80
D Value obtained by dilution Pentra XL 80
’space’ No anomaly observed

B (french)
or L (other languages)
Parameter < to the lower extreme value P80/XL80: Only «L»
b (french)
or l (other languages)
Parameter < to the low normal value P80/XL80: Only «l»
’space’ Parameter normal value
h Parameter > to the high normal value 高于正常范围,小写h
H Parameter > to the high extreme value高于危机值范围,大写H
C Platelet concentrate Pentra 80 V1.1 and above
O Parameter exceeding the capacity

这下面的就更不用说了:全是各个项目的值,好像不写出来也都能懂:

CBC模式下的数据

$21 ! WBC 07.40 2+String(7)+1 2+String(10)+1
$32 2 RBC 04.64 2+String(7)+1 2+String(10)+1
$33 3 Hgb 14.17 2+String(7)+1 2+String(10)+1
$34 4 Hct 43.95 2+String(7)+1 2+String(10)+1
$35 5 MCV 94.68 2+String(7)+1 2+String(10)+1
$36 6 MCH 30.53 2+String(7)+1 2+String(10)+1
$37 7 MCHC 32.24 2+String(7)+1 2+String(10)+1
$38 8 RDW 12.98 2+String(7)+1 2+String(10)+1
$40 @ PLT 00401 2+String(7)+1 2+String(10)+1
$41 A MPV 07.94 2+String(7)+1 2+String(10)+1
$42 B THT 0.318 2+String(7)+1 2+String(10)+1
$43 C PDW 13.50 2+String(7)+1 2+String(10)+1

DIFF模式下的数据
$21 ! WBC 07.40 2+String(7)+1 2+String(10)+1
$22 " Lymphocytes (#) 02.03 2+String(7)+1 2+String(10)+1
$23 # Lymphocytes (%) 27.40 2+String(7)+1 2+String(10)+1
$24 $ Monocytes (#) 00.70 2+String(7)+1 2+String(10)+1
$25 % Monocytes (%) 09.40 2+String(7)+1 2+String(10)+1
$28 ( Neutrophils (#) 04.51 2+String(7)+1 2+String(10)+1
$29 ) Neutrophils (%) 60.90 2+String(7)+1 2+String(10)+1
$2A * Eosinophils (#) 00.13 2+String(7)+1 2+String(10)+1
$2B + Eosinophils (%) 01.70 2+String(7)+1 2+String(10)+1
$2C , Basophils (#) 00.04 2+String(7)+1 2+String(10)+1
$2D - Basophils (%) 00.60 2+String(7)+1 2+String(10)+1
$2E . Atypical Lymphocytes (#) 00.11 2+String(7)+1 2+String(10)+1
$2F / Atypical Lymphocytes (%) 01.49 2+String(7)+1 2+String(10)+1
$30 0 Large Immature Cells (#) 00.03 2+String(7)+1 2+String(10)+1
$31 1 Large Immature Cells (%) 00.43 2+String(7)+1 2+String(10)+1
$32 2 RBC 04.64 2+String(7)+1 2+String(10)+1
$33 3 Hgb 14.17 2+String(7)+1 2+String(10)+1
$34 4 Hct 43.95 2+String(7)+1 2+String(10)+1
$35 5 MCV 94.68 2+String(7)+1 2+String(10)+1
$36 6 MCH 30.53 2+String(7)+1 2+String(10)+1
$37 7 MCHC 32.24 2+String(7)+1 2+String(10)+1
$38 8 RDW 12.98 2+String(7)+1 2+String(10)+1
$40 @ PLT 00401 2+String(7)+1 2+String(10)+1
$41 A MPV 07.94 2+String(7)+1 2+String(10)+1
$42 B THT 0.318 2+String(7)+1 2+String(10)+1
$43 C PDW 13.50 2+String(7)+1 2+String(10)+1

网织红细胞的数据

$32 2 RBC 04.64 2+String(7)+1 2+String(10)+1
$3B ; Reticulocytes (#) 0656 2+String(7)+1 2+String(10)+1
$3C < Reticulocytes (%) 01.41 2+String(7)+1 2+String(10)+1
$3D = Reticulocytes Low (%) 80.34 2+String(7)+1 2+String(10)+1
$3E > Reticulocytes Median (%) 14.96 2+String(7)+1 2+String(10)+1
$3F ? Reticulocytes High (%) 04.90 2+String(7)+1 2+String(10)+1
$47 G Retic Immatures 00.02 2+String(7)+1 2+String(10)+1
$48 H Mean fluorescent index (%) 17.97 2+String(7)+1 2+String(10)+1
$49 I Mean reticulocyte vol. 107.5 2+String(7)+1 2+String(10)+1
$4A J Corrected ret. count (%) 01.38 2+String(7)+1 2+String(10)+1
$4C L IRF .0500 2+String(7)+1 2+String(10)+1

三分类模式下的数据

$21 ! WBC 07.40 2+String(7)+1 2+String(10)+1
$22 " Lymphocytes (#) 02.03 2+String(7)+1 2+String(10)+1
$23 # Lymphocytes (%) 27.40 2+String(7)+1 2+String(10)+1
$24 $ Monocytes (#) 00.70 2+String(7)+1 2+String(10)+1
$25 % Monocytes (%) 09.40 2+String(7)+1 2+String(10)+1
$26 & Granulocytes (#) 04.67 2+String(7)+1 2+String(10)+1
$27 ' Granulocytes (%) 63.20 2+String(7)+1 2+String(10)+1
$32 2 RBC 04.64 2+String(7)+1 2+String(10)+1
$33 3 Hgb 14.17 2+String(7)+1 2+String(10)+1
$34 4 Hct 43.95 2+String(7)+1 2+String(10)+1
$35 5 MCV 94.68 2+String(7)+1 2+String(10)+1
$36 6 MCH 30.53 2+String(7)+1 2+String(10)+1
$37 7 MCHC 32.24 2+String(7)+1 2+String(10)+1
$38 8 RDW 12.98 2+String(7)+1 2+String(10)+1
$40 @ PLT 00401 2+String(7)+1 2+String(10)+1
$41 A MPV 07.94 2+String(7)+1 2+String(10)+1
$42 B THT 0.318 2+String(7)+1 2+String(10)+1
$43 C PDW 13.50 2+String(7)+1 2+String(10)+1

CBR模式下的数据

$21 ! WBC 07.40 2+String(7)+1 2+String(10)+1
$32 2 RBC 04.64 2+String(7)+1 2+String(10)+1
$33 3 Hgb 14.17 2+String(7)+1 2+String(10)+1
$34 4 Hct 43.95 2+String(7)+1 2+String(10)+1
$35 5 MCV 94.68 2+String(7)+1 2+String(10)+1
$36 6 MCH 30.53 2+String(7)+1 2+String(10)+1
$37 7 MCHC 32.24 2+String(7)+1 2+String(10)+1
$38 8 RDW 12.98 2+String(7)+1 2+String(10)+1
$3B ; Reticulocytes (#) .0656 2+String(7)+1 2+String(10)+1
$3C < Reticulocytes (%) 01.41 2+String(7)+1 2+String(10)+1
$3D = Reticulocytes Low (%) 80.34 2+String(7)+1 2+String(10)+1
$3E > Reticulocytes Median (%) 14.96 2+String(7)+1 2+String(10)+1
$3F ? Reticulocytes High (%) 04.90 2+String(7)+1 2+String(10)+1
$40 @ PLT 00401 2+String(7)+1 2+String(10)+1
$41 A MPV 07.94 2+String(7)+1 2+String(10)+1
$42 B THT 0.318 2+String(7)+1 2+String(10)+1
$43 C PDW 13.50 2+String(7)+1 2+String(10)+1
$47 G Retic Immatures 00.02 2+String(7)+1 2+String(10)+1
$48 H Mean fluorescent index (%) 17.97 2+String(7)+1 2+String(10)+1
$49 I Mean reticulocyte vol. 107.5 2+String(7)+1 2+String(10)+1
$4A J Corrected ret. count (%) 01.38 2+String(7)+1 2+String(10)+1
$4C L IRF .0500 2+String(7)+1 2+String(10)+1

CRP模式下增加的数据

$4B K C-Reactive protein .0600 2+String(7)+1 2+String(10)+1

DIR模式下的数据

$21 ! WBC 07.40 2+String(7)+1 2+String(10)+1
$22 " Lymphocytes (#) 02.03 2+String(7)+1 2+String(10)+1
$23 # Lymphocytes (%) 27.40 2+String(7)+1 2+String(10)+1
$24 $ Monocytes (#) 00.70 2+String(7)+1 2+String(10)+1
$25 % Monocytes (%) 09.40 2+String(7)+1 2+String(10)+1
$28 ( Neutrophils (#) 04.51 2+String(7)+1 2+String(10)+1
$29 ) Neutrophils (%) 60.90 2+String(7)+1 2+String(10)+1
$2A * Eosinophils (#) 00.13 2+String(7)+1 2+String(10)+1
$2B + Eosinophils (%) 01.70 2+String(7)+1 2+String(10)+1
$2C , Basophils (#) 00.04 2+String(7)+1 2+String(10)+1
$2D - Basophils (%) 00.60 2+String(7)+1 2+String(10)+1
$2E . Atypical Lymphocytes (#) 00.11 2+String(7)+1 2+String(10)+1
$2F /
Atypical Lymphocytes
(%)
01.49 2+String(7)+1 2+String(10)+1
$30 0 Large Immature Cells (#) 00.03 2+String(7)+1 2+String(10)+1
$31 1 Large Immature Cells (%) 00.43 2+String(7)+1 2+String(10)+1
$32 2 RBC 04.64 2+String(7)+1 2+String(10)+1
$33 3 Hgb 14.17 2+String(7)+1 2+String(10)+1
$34 4 Hct 43.95 2+String(7)+1 2+String(10)+1
$35 5 MCV 94.68 2+String(7)+1 2+String(10)+1
$36 6 MCH 30.53 2+String(7)+1 2+String(10)+1
$37 7 MCHC 32.24 2+String(7)+1 2+String(10)+1
$38 8 RDW 12.98 2+String(7)+1 2+String(10)+1
$3B ; Reticulocytes (#) 0656 2+String(7)+1 2+String(10)+1
$3C < Reticulocytes (%) 01.41 2+String(7)+1 2+String(10)+1
$3D = Reticulocytes Low (%) 80.34 2+String(7)+1 2+String(10)+1
$3E > Reticulocytes Median (%) 14.96 2+String(7)+1 2+String(10)+1
$3F ? Reticulocytes High (%) 04.90 2+String(7)+1 2+String(10)+1
$40 @ PLT 00401 2+String(7)+1 2+String(10)+1
$41 A MPV 07.94 2+String(7)+1 2+String(10)+1
$42 B THT 0.318 2+String(7)+1 2+String(10)+1
$43 C PDW 13.50 2+String(7)+1 2+String(10)+1
$47 G Retic Immatures 00.02 2+String(7)+1 2+String(10)+1
$48 H Mean fluorescent index (%)
17.97 2+String(7)+1 2+String(10)+1
$49 I Mean reticulocyte vol. 107.5 2+String(7)+1 2+String(10)+1
$4A J Corrected ret. count (%) 01.38 2+String(7)+1 2+String(10)+1
$4C L IRF .0500 2+String(7)+1 2+String(10)+1

从上述不难看出,不管什么系列的ABX血球,其相同项目的开始符相同,根据这个原则,可以开发出一个只有一套程序但可应付不同型号的LIS软件。

下面是更重要的旗标提示,也就是FLAG:

$50 P WBC or LMG L1 M1 M2 G1 G2 G3 2+12+1
$51 Q Differential CO MB LL NL MN LN RM RN NO NE LB Ll1 2+25+1
$52 R RBC MI MA 2+4+1
$53 S Plt Pc Sc Mc 2+6+1
$66 f WBC balance BASO or WBC1 or WBC2 and Lmne+ or Lmne - and BASO+ or BASO - 2+14+1
$67 g General Mp Xb Xr (Xb Xr not transmitted by Pentra 80/80XL)2+6+1
$68 h Reticulocytes Low Las Pit Fit Nrbc 2+16+1
$A2 I RUOs RUO message (20) 2+76+1

同样,ABX的病理学分析软件功能也很强大,同样通过串口传送,识别代码如下:

                                 P120使用                 非120使用
$54 T WBC String of characters 2+((12(max.)x(4+1))-1)+1 2+(12(max.)x4)+1
$55 U RBC String of characters 2+((7(max.)x(4+1))-1)+1 2+(7(max.)x4)+1
$56 V PLT String of characters 2+((4(max.)x(4+1))-1)+1 2+(4(max.)x4)+1
$69 i RET String of characters 2+((2(max.)x(4+1))-1)+1 2+(2(max.)x4)+1

这些都是标准文本字符,只要建立一个数据库翻译一下就可以在中文报告上显示出来。



例如,$54 T在上传的PENTRA数据中显示LEU+或者LEU-则对应病理学信息是Leukocytosis或Leukopenia。然后把英文病理学信息翻译成中文就可以了。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
看贴要回是本分,有问必答是人才,解决问题回贴是公德.
医疗设备维修.维修咨询(请尽可能在论坛提问),协助维修,上门服务.
电话:13991827712
 楼主| 郑振寰 发表于 2007-12-14 19:47 | 显示全部楼层

从上面可以轻易找到几个直方图和散点图的全部代码:都是HEX16进制。

WBC直方图代码:

三分类的如下:0A5720202020202020202344565C433A383E46515B62676B6B645B514B4239332F202020202020202020202020202020202020202020202020202020202020200D0A202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202014162C30363E4B5059616C797F7F716F6F75726B6320202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D0A554A40372D241C127C726D655C514B45413B36322F2F2C2B2A292727262423232323222222232323222120222336202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D

五分类的如下:
0A572020202A322D242B32406987D9FFDAF7D2B9B09C7A654834322E2423232024202020202020202020202020202020200D0AA0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A00D0A2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020222320202420202020202020202020202020202020202020202020202020204DA0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A00D

RBC直方图:

三分类如下:

0A5820202020202020202020202020202020232E24242524252322222323242326272830354550647C15274D557679767F777C5E51442A2E1D15120E04037C76686C5A6260595252494E494945433F3F3C20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D0A3F433D3F3B3A3A3A3933393234302F2D2F2A29302B2A2727262525252423222423222324222121222120222121212120215120202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D

五分类如下:

0A582020202020202020202020237CFFCF98576448413F494C67695037283527202020202020202020202020202020202020202020202020202020202020200D0A2020202020202020202020202020202020202020202020F8F2ECE0D3C1AEA2958F837C706A645D514B3E3838322C2C263030303031303030303030303030303030343930303030303030323830303030303030303030303130303030303030300D

WBC/BASO直方图:

0A5A202020202020202020202020202F292D2B2827292324232121212020202020202020202020202020202020202020202020202020200D0A5B20303030303033433036303031373031323835414146464245464645393432393330303030303030303030303030303032303030303020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D0A303030303030323030303032303030303030303130303030303030303030303030323030303030303032343230303030303030313030303030303030303030303030303030303130303031303030303020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D

LMNE散点图:

0A5B20303030303033433036303031373031323835414146464245464645393432393330303030303030303030303030303032303030303020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D0A303030303030323030303032303030303030303130303030303030303030303030323030303030303032343230303030303030313030303030303030303030303030303030303130303031303030303020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D0A303030303030303130303030303030303030303030303030303030383030313130313030303830313030303030303030303034303430303030303230303030383030303030303031303030303030303020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D0A303030303032303030303030303030323030303030303030303130303030303030303030303030303030303031303131323030303030303030313030303030303030303030303030303030303030303020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D0A303038323030303030303030313030303030303030303030343030303030303030313030323030303030303031303030303030303030303030303030303030303034303830303030303030303130303020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D0A303030303031303030303030303030303038303030303030303030303030303030303030303031343034303030303030303030303031303030303030303038303830383030303030303030343030303020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D0A303030303031303030303030303030303030303030303030303031303030303030303430303030303030303030313030303030303030303030303030303030303030383030303038303030303031303020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D0A303030303830303439303030303030303238303030303030303030303031303030353030303130303030303030303030303030303030303030303030303030303030303030313030303030303030303020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D0A303030303030303030303030303030303030303030313030303030303030303030303030303030303031313030303030303030303031303030303030303030343030303030303030303030303030323020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D0A303030303031303030303030303030303030303030303030383030303032303030303030303130303030303030313030303030303030303030303130303030323230303030303030303030303031303020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D0A303030303030313030303030303030303030303030303130303030303031303030303030343030303030303030323030303238303030303830303030303031303030313030303030303030303030303020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D0A303130303034323030303030303030303030393030303030303030303030303130313134303032303036303031323030303030303034313030303030313038313030313034303030313030303038303020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D0A303030303030313030303030303030303830303030303130303436303030303030303030303031303030313030303030303030303030303033313038303331343030303030303030303031303030303020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D0A303832303130303038313030303130343034303030303030303031303030303030383030383031433041333030343030313036364134303030303030303030303031303030303030303030303030303020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D0A323733433438323630303130303030303031303030303030303030303030303031373742413830323032303030303030303030303430303130303030303230343030303034333531464433313038303820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D0A303030313030303130303030303030303030303032433836373730324332343030343030303030313030303030303030303038303030344141364244454646303831303030303030303031303030303020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D0A303030303030383739464645423138453430303030323030303030323030303030303637444646464130373034303230303030303131303030303030343230303036314646464444344532413030303020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D0A303030303031303030303030453432303234334646464646374230303046464338353830303030303030303031303030303030383031303039424646464644393044303030303130303030303130303020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D0A303030344330303037444646464646383230323030303030303030303130303030343031303030303030303230303844354646464645363830303030303030303030303130303030303230343032314620202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D0A334646464646374138303030343031303030303130303030303438323830303346304346444646424644303030303030323030303030313030303030313130363432363346464646454338433230303020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D0A303030303030313030303030303730313144354646464643394643303030323030303030303031303030303030313030323546464646464645454438303030303030303030303130303030303134303420202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D0A343737464646464639313030303030303030303030303130303030303130303031354646464646463733343030303030303130343030313030303030303832313044464646464644423843303030303020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D0A303030303030313030303030313038303131464646464646433131303030303030323030303031303030303032343030303031303130313546464646464443443930303030303030303030303130303020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D0A303030343030303346464646463730383030303034303030303430303130303030303131343630464646464646343030303046433230303030303430303030303130313030303030313430323031464620202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D0A464645413234343030303830303030303030313030303030303032303533464646464435303130303431303030303238303030303130303030303731303136364246464438303031303030303030303020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D0A303030303130303030303036303030434633373638344330303032303030303131323032313030303030323130393438354445364244423032343030413030303030343030343130303030303036353020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D0A443137333835383130303032363130303030383030363130303030303030303033354137383546323434353833323031303230304130303431303030303030303532313433354444383330303837323120202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D0A3036303636383030313030303030303030353830424431463844303830324431303034433830303137303030303030303441343043313742423735323042353137393436333034303632343130303030202020200D

看贴要回是本分,有问必答是人才,解决问题回贴是公德.
医疗设备维修.维修咨询(请尽可能在论坛提问),协助维修,上门服务.
电话:13991827712
 楼主| 郑振寰 发表于 2007-12-15 00:55 | 显示全部楼层

下面举实例说明图形解析:


这是我刚做的一个标本,这个标本大概最少有一个星期了,WBC计数部分的电磁阀应该更换了,但还没有到货,于是就做成了这个样子。

我们先来看PLT直方图:

从0A57还是128位加0D回车结束,代码为0A592020202020202020202020253C597592AECBE83FFFFFF3E8D6C5BAB4AEA9A3988C81706459595359534D48423C363636363631312B2B2B252525252520202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200D0A0D

简单的办法就是把它导入到EXCEL表中,这是16进制的HEX数据,要转换成10进制才可识别,0A59和最后的0D不转换成10进制,EXCELL当中采用VB函数,16进制转10进制的函数是=HEX2DEC(),其余的语言有其不同的函数。导入并转换完成后形成下面的样子:

 
转换完成后,我们把B列绘图,形成下面的样子:

 
可以看出,有两个问题,第一是峰值区突然出现向下的曲线,第二是结束区突然有上升点。第一点有点儿莫名其妙,怀疑是传送的时候丢包所致,重新传送了5次,才明白是接收时误加了回车符OD 。下图是修正后的结果:

 
我们在来看第二个问题。很多LIS软件都出现这个问题,而我今天随便解析了一个居然也是这个问题。那么我们分析一下,这个位置是结束位,代码是0D0A。那么我们应该把这两位也去掉才是。实际上,不需要128位全读的,少读2-4个点无妨的,但前面不要少读了,否则起点位置就不对了。也就是说应该以0D0A结束才是,事实是否如此,我们还要继续证明,这是完全修正后的结果:

 
上图,不仅修正了结束位,还调整了长宽比,基本上与原图没有差异了。

坐标和界标前面已经说过了,这里就不再重复了。

其实,在真正编程当中,远没有这么复杂,一般直接读取HEX代码,将代码存入数据库字段,随用随取。这是最理想也是最少占空间的做法。但鉴于开发人员业务水平,各种方法都有,有直接写成位图保存成BMP格式的图片存在单独的目录里面,在数据库内仅仅挂接一个链接;也就直接存入数据库OLE字段中。目前编程语言很多,但大都有类似的过程或者方法,下面给出了一个在程序中显示位图的方法:首先调用FileToString方法将位图文件转化字符串,FileToString方法首先调用FileToBytes将位图转化为字节数组,然后调用HexEncoding将字节数组转化为字符串,然后再调用StringToBitmap方法将字符串转化为位图。各种语言方法和过程或者函数的名称用法语句各不相同,一般用什么语言看什么书吧。我们自然不用这么复杂,因为已经转换成字符串了。当然,也有自行编程的,很聪明的做法,识别非0字符,不为0,就描点,这在散点图运用上非常有用。

这是六楼的没有修正的三分类红细胞直方图:

下图是节选的三分类直方图的未修正示意图:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
看贴要回是本分,有问必答是人才,解决问题回贴是公德.
医疗设备维修.维修咨询(请尽可能在论坛提问),协助维修,上门服务.
电话:13991827712
 楼主| 郑振寰 发表于 2007-12-21 21:04 | 显示全部楼层

这是两个标本,不去管结果准确性如何,单从数据接收分析的角度分析


这里两个标本号分别为6和7

下面是接收到的带有RAW格式的全部文档:



下面开始分析,想学习的可以对照练习。

接收数据标本号为6的结果解释
HEXASCII含义位数实例ASCII实际报告备注
   ..15110. 头文件号
  .. RESULT. 数据类型,RESULT表示测试结果,还有重做结果,质控高中低结果,乳胶颗粒结果等等
0A21!WBC  2+String(7)+1.! 08.01.8.0.按照小数点后面两位入库,读取的时候小数点后读一位,第二位四舍五入
0A22"Lymphocytes (#)2+String(7)+1." 01.31.1.31 
0A23#Lymphocytes (%)2+String(7)+1.# 16.30 l.16.3 l带二位提示,第一位为空格,第二位为l
0A24$Monocytes (#) 2+String(7)+1.$ 00.01 l.0.1 L带二位提示,第一位为空格,第二位为L
0A25%Monocytes (%) 2+String(7)+1.% 00.10 L.0.01 l带二位提示,第一位为空格,第二位为L
0A28(Neutrophils (#)2+String(7)+1.( 02.73.2.73 
0A29)Neutrophils (%) 2+String(7)+1.) 34.10 L.34.1 L带二位提示,第一位为空格,第二位为L
0A2A*Eosinophils (#) 2+String(7)+1.* 00.31.0.31 
0A2B+Eosinophils (%)2+String(7)+1.+ 03.90.3.9 
0A2C,Basophils (#) 2+String(7)+1., 03.65 H.3.65 H带二位提示,第一位为空格,第二位为H
0A2D-Basophils (%) 2+String(7)+1.- 45.60 H.45.6 H带二位提示,第一位为空格,第二位为H
0A2E.Atypical Lymphocytes (#)2+String(7)+1.. 00.00.0.00. 
0A2F/Atypical Lymphocytes (%)2+String(7)+1./ 00.04.0.0.按照小数点后面两位入库,读取的时候小数点后读一位,第二位四舍五入
0A300Large Immature Cells (#) 2+String(7)+1.0 00.07.0.07 
0A311Large Immature Cells (%) 2+String(7)+1.1 00.94.0.9实数入库,读取小数点后1位,小数点后2位四舍五入,
0A322RBC 2+String(7)+1.2 04.60.4.60. 
0A333Hgb2+String(7)+1.3 14.52.145HGB结果乘10后入库,读取整数,小数点四舍五入
0A344Hct 2+String(7)+1.4 33.58 l.0.336 l除100后入库,读取小数点后三位,第四位以后四舍五入,带二位提示,第一位为空格,第二位为l
0A355MCV 2+String(7)+1.5 72.99 l.73 l实数入库,读取整数,小数点后四舍五入,带二位提示,第一位为空格,第二位为l
0A366MCH 2+String(7)+1.6 31.57.31.6实数入库,读取小数点后1位,小数点后2位四舍五入,
0A377MCHC 2+String(7)+1.7 43.25 H.433 H乘100入库,读取整数,小数点后四舍五入。带二位提示,第一位为空格,第二位为H
0A388RDW 2+String(7)+1.8 20.74 h.20.7 H实数入库,读取小数点后1位,小数点后2位四舍五入,带二位提示,第一位为空格,第二位为h
0A40@PLT 2+String(7)+1.@ 00250.250 
0A41AMPV2+String(7)+1.A 08.06.8.1实数入库,读取小数点后1位,小数点后2位四舍五入
0A42BTHT /PCT2+String(7)+1.B 0.201.0.201 
0A43CPDW2+String(7)+1.C 15.00.15.0.实数入库,读取小数点后1位,小数点后2位四舍五入
注:0A加21-43的字符为前两位,后面7位分别是空格一位也就是20,加5位数字,直接读取ASCII即可,这样如果没有提示符号的话就是2+6+回车也就是0D。如果有提示符号,就是空格加5位数字加两位提示再加回车。提示符号的对照看下表。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
看贴要回是本分,有问必答是人才,解决问题回贴是公德.
医疗设备维修.维修咨询(请尽可能在论坛提问),协助维修,上门服务.
电话:13991827712
 楼主| 郑振寰 发表于 2007-12-21 21:07 | 显示全部楼层

以上项目数据分析仅举例了6号标本,7号标本没有举例。

下面是提示的含义解释

提示符号对照(2位)
第一位
ASCIIHEX含义 
空格20不读,表示结果正常范围 
R52*号,表示结果不可信 
B42!号,表示结果有疑问 
 不读,表示正常范围值 
第二位
ASCIIHEX含义 
L4CL号,表示结果超过危机值下限或B
l6Cl号,表示结果超过正常值下限或b
H48H号,表示结果超过危机值上限 
h68h号,表示结果超过正常值上限 
 不读,表示正常范围值 

接下来就是旗标和病理信息的解释

旗标及病理信息代码
HEXASCII解释长度实例数据备注
0A50PWBC or LMG L1 M1 M2 G1 G2 G32+12+1.P.
0A51QDifferential CO MB LL NL MN LN RM RN NO NE LB Ll12+25+1.Q.
0A52RRBC MI MA2+4+1.R.
0A53SPlt Pc Sc Mc2+6+1.S.
0A66fWBC balance BASO or WBC1 or WBC2 and Lmne+ or Lmne - and BASO+ or BASO -      2+14+1
0A67gGeneral Mp Xb Xr (Xb Xr not transmitted by Pentra 80/80XL)2+6+1
0A68hReticulocytes Low Las Pit Fit Nrbc2+16+1
0AA2IRUOs RUO message (20)2+76+1
0A54TWBC String of characters2+(12(max.)x4)+1.T NEU- BAS+.对应Neutropenia和Basophilia病理信息
0A55URBC String of characters2+(7(max.)x4)+1.U CAGG.对应Cold agglutinin病理信息
0A56VPLT String of characters2+(4(max.)x4)+1.V.
0A69iRET String of characters2+(2(max.)x4)+1

看贴要回是本分,有问必答是人才,解决问题回贴是公德.
医疗设备维修.维修咨询(请尽可能在论坛提问),协助维修,上门服务.
电话:13991827712
 楼主| 郑振寰 发表于 2007-12-21 21:36 | 显示全部楼层

再往下就是直方图和散点图了,我做了6、7号标本的解释,做成PDF文件,看一下。

 

接下来就是界标线了。

6号标本界标提示

.] 002 007 120 000 000.

.^ 023 048.

._ 098.

.` 017 062 120.

.a 015 018 048 026 118 022 075 078 090 070 090 123 033 078 051 002 002 002.

7号标本界标提示


.] 002 007 120 000 000.

.^ 023 048.

._ 098.

.` 017 062 120.

.a 015 018 048 026 118 022 075 078 090 070 090 123 033 082 051 002 002 002.

可以看出6号和7号的界标几乎完全一样,唯一的区别就是LMNE的倒数第5个,也就是NE这条线,本身这条线在ABX设计上就是浮动界标,每次不一样也是正常的。

LMNE的界标前12个表示:NoL, NoN, NoE, LN,RN, LL, AL, LMU, LMD, LMN, MN, RM这12个横轴坐标,后三个表示NL,NE, RMN.三个纵轴坐标,最后三个表示FNE, FMN, FLN三个虚线坐标,总共18个界标提示。

先来看WBC的.] 002 007 120 000 000.界标,都是用偏移量表示的。画上界标后的结果如下:

 6号标本wBC界标
7号标本WBC界标

RBC界标:.^ 023 048.

6号标本RBC界标
7号标本RBC界标

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
看贴要回是本分,有问必答是人才,解决问题回贴是公德.
医疗设备维修.维修咨询(请尽可能在论坛提问),协助维修,上门服务.
电话:13991827712
 楼主| 郑振寰 发表于 2007-12-21 21:51 | 显示全部楼层

血小板界标:._ 098.

6号标本PLT界标
7号标本PLT界标

WBC/BASO界标:.` 017 062 120.

6号标本BASO界标
7号标本BASO界标

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
 楼主| 郑振寰 发表于 2007-12-21 22:50 | 显示全部楼层

6号标本LMNE界标.a 015 018 048 026 118 022 075 078 090 070 090 123 033 078 051 002 002 002.

这是根据6号LMNE界标描绘出来的界标框:


这是加上界标的6号标本散点图

7号标本LMNE界标.a 015 018 048 026 118 022 075 078 090 070 090 123 033 082 051 002 002 002.

这是根据7号LMNE界标描绘出来的界标框,差别不大。近差别4个偏移,根本看不出来。

 


这是加上界标的7号标本散点图。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
看贴要回是本分,有问必答是人才,解决问题回贴是公德.
医疗设备维修.维修咨询(请尽可能在论坛提问),协助维修,上门服务.
电话:13991827712
 楼主| 郑振寰 发表于 2007-12-22 14:42 | 显示全部楼层
接下是5个图形的RAW数据
$64 d Lmne matrix extended format see description这是LMNE扩展格式,一下图形数据都是在传送RAW数据后才能得到的。
$6C l WBC extended format see description WBC扩展位图
$6D m RBC extended format see description RBC扩展位图
$6E n PLT extended format see description PLT扩展位图
$6F o BASO extended format see description WBC/BASO扩展位图。
每组RAW数据是采用uuencode编码方式,这是原来UNIX的格式,现在使用很少了,不过EMAIL中还是有uuencode的解码的,也有这方面的软件。
uuencode编码总是以begin开始,以end结束,每行以M开头,60个字符为一行。最后一行以N 开头,N 为最后一行编码的输入字节数.编码以一个只含一个空格的一行和只含”end”的一行结束. 从前一部分看和base64没有什么区别不同的是base64由自己的base64码表,而uuencode是直接使用ascii码做码表.
uuencode的编码解码以及转换RAW图形请查找相关网站。
RAW数据结束后,就是相关的流水信息了,这里以7号标本为例:
.p 01 机器编号,默认为1,可以在RS232设置里面更改,如果有两台同样的机器,软件应该能够自动识别数据
.q 07/12/20 20h29mn24s.  日期和时间
.r.        机器运行数,这里为空
.s 007.测试序号,自上次清零后的总测试数,总是连续的。
.t M.       进样方式,M为人工,R为自动进样
.u 7.     标本号ID
.v.            病人姓名  P60为空
..(0A80) B.       测试形式,分为以下几种情况
'B': DIF (CBC+DIF)五分类
'C': RET网织红
'D': LMG (CBC+LMG)三分类
'E': CBR (CBC+RET)计数加网织红
'F': DIR (CBC+DIF+RET)计数加网织红加分类
'G': SPS Etalement lame sans analyse推片分析
'@': Resampling and reflex testing重做
$89 ë SPS smearing mode ECC 2+3+1 String(3) optional 14 SPS推片模式
下面是一组不需要解释的编码,如果需要对其解释,则对维修帮助很大,但医院方面是根本看不懂的,这些就是所谓的RAW维修数据,我另外有帖专门解释这个。否则不用理睬。
.?05182 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00626..00511.
.?03708 03844 03746 03714 03720 00000 03783 03876 03803 03824 03707 00000 18732..18993.
.?01619 01619 01625 00000 00000 00000 00000 00000 00000 00000 00000 00000 01621..03843.
.?0285180 0296054 0284268 0280147 0282513 0000000 0285447 0295358 0287417 028902..5 0274772 0000000 1428162 1432019.
.?02361 02430 02417 02382 02354 00000 02448 02458 02443 02453 02359 00000 00809..00829.
.?00139 00124 00101 00099 00087 00076 00098 00103 00080 00080 00074 00076 00626..00511.
.?04796 00098.
.?PEN60.
.?V3.0.
.?e824...
以机器型号+版本号+校验码结束。
以上就是一个完整的RAW数据接收文件的解释,整个文件大概为17K左右,如果采用9600速率,大概需要将近2秒钟,加上数据处理,图形换算和屏幕刷新,能在接收电脑上看到接收到的结果,延时10秒左右不算稀奇的,原厂的ASP01软件,延时大概也需要将近5秒,而且还是采用38400的速度。
下面对图形的绘制提出一点儿建议。
看贴要回是本分,有问必答是人才,解决问题回贴是公德.
医疗设备维修.维修咨询(请尽可能在论坛提问),协助维修,上门服务.
电话:13991827712
 楼主| 郑振寰 发表于 2007-12-22 16:45 | 显示全部楼层

对于代码的编程,运用的语言环境大多是Delphi,PB,VC,VB等,也有很少使用ACCESS或者VFP的,因为这些数据库程序如果要接收串口并处理数据绘图的话,会很麻烦的,执行效率也不是很好。数据库大多采用ACCESS和MSSQL,也有采用MYSQL和DB。也见过有人用ASP,JAVA,等编程的,虽然代码繁琐,但也设计的不错了。

至于大家熟悉什么语言,那就用什么吧,如果连用什么语言编程都要问的话,那就别编了,听着都可怕。

用什么语言不重要,重要的代码优化的好,执行效率高,响应速度快,BUG少。

对于编译好的程序运行时的接收问题,我不建议采用后台接收模式,虽然这种模式有很多优点,例如,前台主程序被关闭的情况下,依然可以接收数据,这对ABX这样不存储数据的机器来说非常好。但,这种结构在主程序关闭时,后台程序不能自动关闭,造成再启动时引发二次后台启动导致串口被占用,反而无法接收数据。还有很多类似的无法接收的问题。

在接收程序与主程序设计在一体确是很不错的。MSCOMM控件就是MICROSOFT的通用控件,在VC,VB,ACCESS,VFP以及后来的VC+,VC++,C#和.net中都有着广泛的支持。其它的语言都有类似的控件或者类或者函数。

很多熟悉编程的人,很少使用编程语言自带的控件或者类,一般都自定义,这样方便调用。

例如,在一家医院的计算机中心,专门一个大学毕业生负责全院的LIS系统,这家伙虽然年纪不大可谓是VB高手,几乎别的语言不用,专门用VB,真可谓如火纯情的地步。他自己设计了串口接收控件和数据显示窗体。串口控件在接收到数据后,随即将数据拆解成字段,项目数据直接刷在显示窗体上,而图形字段则是在自定义的picture box(自定义长宽比例及坐标,并读取拆解好的界标信息绘制界标线)上按照图形字段代码进行直方图的曲线绘制和散点图的描点,当项目数据和图形绘制完成后,还有一个校验程序,检验完成也就直接写入数据库了。当我去看的时候,发现他的绘图程序增加了延时,而且时间很长,每个点都要间隔500ms,并且增加了颜色标记,在下一个点描绘之前,前一个点是红色的,当绘制下一个点时,这个点就成为黑色,没描绘一幅图时间会很长,询问之后才知道,他是做了一个测试程序,当出现图形不正确的时候,可以看到哪一个点出了问题,经常发现3F和0D0A这些错误,于是在接收控件上拆解字段时,直接就删除这些代码了。

在图形绘制上,一般的做法是自定义pictureBox控件,一般一个项目一个控件,因为坐标不同。该控件被数据触发后,也就是拆解后的界标字段,根据界标数据描绘界标线。而图形数据直接在这个控件上以0为坐标进行逐位描点形成曲线。直方图数据不足128位的,后面不管,但坐标要画满,或者用0补齐。这样,做出来的图不需要修正。存储数据的时候,直接存储二进制代码。查询显示的时候,同样进行界标绘制和图形曲线的绘制程序,这样做速度上看不出变化,但对文件大小有着至关重要的作用,所有数据都存入数据库,整个文件体积不大,备份保存相当简单,我见到的这个大学生编制的程序,仅有1个exe文件,1个数据库文件和几个动态链接库,非常的精干。所有的报表格式也都保存到数据库中,设备传送格式和设置也都保存在数据库中。

我见到很多LIS软件设计者,不知道出于什么考虑,将图形文件保存在BMP文件里,这样,以P60为例,每个测试都有一共4个直方图(显示3个)1个散点图,每天上百测试,成年累月的下来,光BMP文件就有几万个甚至几十万个,根据日期进行子目录分类,根据日期和标本号还有项目缩写进行文件命名。相当的繁琐,给备份查询和重显都带来不便。

存储BMP格式有很多种方法,常见的有在pictureBox上描绘坐标,描绘界标,描绘曲线,然后把整个PictureBox上显示的图形写成BMP格式,要么利用命名和存储原则写入目录,并把文件目录指向写入数据库;要么直接把BMP文件写入数据库二进制字段;要么写入数据库OLE字段。

关于如何写入BMP和从数据库读取BMP的方法和代码请查询网络,有很多。

在绘图上还有很多种方法,其中有两种比较常见。

分层法:我昨天刚发完LMNE的图形解释,就有同行联络我,说我的图是否是坐标、界标、散点或者曲线分层套图的,我说是的,因为我没有编程,只是利用原来有的现成的代码分别进行读取然后叠加的。

充填法:这种方法属于懒人的办法,但发现不少人这个干,提前制作好一幅BMP,8位彩色。然后用读取的代码偏移量进行RGB填充,原数据为1个字节一个点,填充成为3个字节一个点,因为加上了色彩信息,然后填充到作好的bmp中,比较前后的区别,就知道那些地方被填充了。据此编制程序处理数据。这类代码网络上居然很多,不知道为什么非要这么干。

这里要说明的是,界标线的数据是要挤占图形数据的,并不是叠加在图形数据上的。例如7号标本的RBC界标为.^ 023 048.而7号标本的RBC直方图HEX数据为0A5820202021232020202020202020202020202020202123252B35435B7CA4CF3FF8E4C9A5876F5D4D453E3834312D2927252321210D0A0D

RBC1的界标为023,就是在图形数据起始点向后偏移23,插入界标线。同样RBC2的048也是如此,那么插入后数据如下:

0A582020202123202020202020202020202020202020212325232B35435B7CA4CF3FF8E4C9A5876F5D4D453E3834312D292725482321210D0A0D

红字就是插入的界标,但实际应用中不是这么简单的插图数据的,而是从起点描曲线描到第一个界标点终止然后插入界标线继续描下面的曲线,一次类推。如果叠加也不会看出来什么,毕竟只有一个点而已。

看贴要回是本分,有问必答是人才,解决问题回贴是公德.
医疗设备维修.维修咨询(请尽可能在论坛提问),协助维修,上门服务.
电话:13991827712
 楼主| 郑振寰 发表于 2007-12-23 02:00 | 显示全部楼层
对于散点图,对检验人员来说并不陌生,但对编程人员来说就有些糊涂。首先是个说法的问题,散点图的说法很形象,因为各个点是分散分布的。而对编程人员来说,这类图形只有两种,一种是矢量图,一种是矩阵图。我们检验产品中,有很少一部分采用矢量格式传送,绝大多数都是矩阵图。矢量图是给出一个原点,每组数据都是这个圆点的偏移量,。而矩阵图是由两位码组成的,分别是X轴和Y轴的坐标。矩阵又是一个固定阵列的格式,也就是说N*N个方格。例如10行*10列的矩阵方格,两位代码X轴代码为08Y轴代码为06,那么这个点就在第6行第8个位置上。矩阵的坐标0点在左上角上,也就是从左往右往上往下的一行一行来的。 ABX的散点图也是矩阵图,因为散点图是中国人的叫法,原文是Matrix,矩阵的意思。 前面我们说过,ABX的散点数据为ABX格式2048个点,每点对应2个字符。2048组HEX数据,以16个一组为一行,总共128行。但这样虽然用完2048个HEX数据,但真正的描点并不这样描。而是把每行的16个HEX码转换成二进制,这样每行就变为16*8=128,也就成为128*128的方形散点图了。由于二进制只有0和1,所以被当做描点开关,0不描点,1描点。 知道这个矩阵结构,就可以画图了。关于矩阵的画法有很多。图形编程一直是各个编程语言里面讨论最多的话题,什么办法都有,没有唯一的答案,只有更优化的方法,代码简练,执行效率高,速度相应快,内存堆栈占用少等。 下面用EXCEL和记事本做两个个示例,也就是上面660和661的数据。 660的散点图接收数据是: 这是2+2048+1,也就是说[ 是两个字节,最后面的1是一个字节,这些都不是散点数据,中间的2048个HEX码才是。我们把这2048个数据分为16个一行,一共128行: 每行转换为二进制,由16个HEX码转为128个二进制码: 0不显示,只显示1,就是下图: 注意长宽比例我没有做调整,因为是用EXCEL转换的二进制,用记事本做的去0显示。 下面再来看661的数据: 换成16位一行: 转换成二进制: 0不描点,形成下图: 把1换成.,图形就成了下面的情况: 以上就是ABX串口数据的全部解释,我想没有落下什么吧?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
看贴要回是本分,有问必答是人才,解决问题回贴是公德.
医疗设备维修.维修咨询(请尽可能在论坛提问),协助维修,上门服务.
电话:13991827712
许世宏1 发表于 2008-2-23 07:33 | 显示全部楼层

楼主太专业了,佩服佩服。

艾奇诺 发表于 2008-2-26 18:07 | 显示全部楼层
一定很多人要感谢你发这个帖的.
fowler 发表于 2008-4-3 15:25 | 显示全部楼层

顶!好贴!有哪位前辈知道beckman act diff2的直方图数据如何解析?

陈东 发表于 2008-4-14 11:11 | 显示全部楼层
不顶不行
桥段 发表于 2008-4-17 16:22 | 显示全部楼层

楼主我好想认识你哦,太强了。

 

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

第十九届检验仪器(西安)培训班通知

QQ|申请友链|手机版|小黑屋|加入QQ群|注销账号|体会网 ( 陕ICP备05007619号 )

GMT+8, 2024-3-29 05:23 , Processed in 0.324009 second(s), 40 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表