Literature
首页医源资料库在线期刊中华现代医院管理杂志2008年第6卷第4期

指纹识别在无偿献血管理中的应用

来源:《中华现代医院管理杂志》
摘要:【摘要】为了杜绝献血员的频繁献血行为,笔者在无偿献血管理中采用了指纹识别技术,本文以献血员档案查询窗口为例,详细介绍了在PB9。0如何调用指纹识别ActiveX控件。【关键词】指纹识别无偿献血管理应用目前无偿献血采集过程中大部分是通过身份证进行识别献血员身份,但实际工作中,并不是每个......

点击显示 收起

【摘要】  为了杜绝献血员的频繁献血行为,笔者在无偿献血管理中采用了指纹识别技术,本文以献血员档案查询窗口为例,详细介绍了在PB9.0如何调用指纹识别ActiveX控件。

【关键词】  指纹识别 无偿献血管理 应用

   目前无偿献血采集过程中大部分是通过身份证进行识别献血员身份,但实际工作中,并不是每个献血人员都会携带身份证件在身边,因此工作人员无法判断该献血员是否存在频繁献血行为,从而有可能对无偿献血员身体健康造成损害,血液质量也无法保证,临床输血的安全也受到了威胁。

    每个人的指纹在图案、断点和交叉点上各不相同,也就是说,是唯一的,并且终生不变。依靠这种唯一性和稳定性,我们就可以把一个人同他的指纹对应起来。指纹图像属于个人隐私,因此不能直接处理指纹图像,但通过提取他的指纹特征值和预先保存的指纹特征值进行比较,就可以验证他的真实身份。笔者开发的“无偿献血指纹识别系统”可以通过在无偿献血过程中采集的献血员指纹特征值建立临时档案(有效期为无偿献血法律间隔期6个月),从根本上杜绝无偿献血员的频繁献血,使无偿献血员的身体健康不受损害,保证了血液的质量,确保了临床输血的安全[1]。

    1  系统配置

    1.1  系统硬件  工作站——配有P4 1.6 以上的处理器的PC或笔记本电脑,512 M以上内存,10 G以上硬盘,VGA以上显示器;服务器——为充分利用共享资源,我们采用了血站信息管理系统所用服务器;杭州中正FPR-620指纹识别器;东软VPN防火墙;CDMA移动上网卡。

    1.2  软件系统  Windows 2000操作系统;PowerBuilder 9.0及Sybase Adaptive Server Enterprise 12.0数据库管理系统[2,3];东软VPN客户端;CDMA拨号软件。

    2  信息处理

    站内工作站通过局域网连接中心数据库,外采笔记本通过CDMA拨号经VPN连接中心数据库服务器。从指纹识别器获取指纹特征代码,与数据库中数据进行比对检索,符合就提取相关血员信息,未找到就保存至临时数据表,保存期半年(献血间隔期)。

    3  系统实现

    3.1  注册系统控件  在工作站系统注册表里注册ActiveX控件OptFinger.ocx(在Windows“开始”菜单中运行“regsvr32 D:\ OptFinger.ocx”)[4]。

    3.2  程序的编制  以“献血者档案查询”(图1)为例介绍系统中指纹识别的调用[5]。注:通过点击“指纹检索”可以打开指纹识别控件,开始扫描指纹

    “指纹检索”(见图1)按钮clicked事件代码:

    //定义变量

    boolean zt,o_k,zt1

    any varImage,varFingerValue

    long zw_l,i,sl_don_id

    blob b_zw

    string l_don_id,l_dor_id,l_zw

    datetime l_djsj

    ole_1.visible=true

    zt=ole_1.Object.OpenHardware()    //打开指纹控件

    if zt=false then

    messagebox(“提示”,“初始化失败!”)

    return

    end if

    //献血员这时必须把手指按在指纹识别器上

    zt=ole_1.object.ScanFinger(varImage)    //扫描指纹

    tz1=string(ole_1.object.GetClientFinger())    //获得指纹特征代码

    if zt then

    if messagebox(“提示:”,“指纹是否清晰?”,question!,yesno!,1)<>2 then//判断指纹是否清晰

    else

    return    //不清晰,重新扫描

    end if

    //开始检索数据表don_zw

    declare c1 cursor for

    select don_id,djrq from don_zw ORDER BY djrq DESC;

    open c1;

    lab1:

    fetch c1 into :l_don_id,:l_djsj;

    if sqlca.sqlcode = 0 then

    //提取数据表中的指纹特征值

    selectblob zw into :b_zw from don_zw where don_id = :l_don_id;

    //

    l_zw = string(b_zw)

    if isnull(l_zw)or l_zw='' then l_zw = 'aaa'

    //比对新指纹特征值和数据表中的特征值

    zt1 = ole_1.object.MatchFingerByStr(tz1,l_zw,5)

    //

    if zt1 then

    //判断是否有献血登记记录(目前未献血的记录不登记)

    select count(don_id)into :sl_don_id from don_record_reg where don_id = :l_don_id;

    //

    if sl_don_id > 0 then

    zw_js(l_don_id,l_dor_id)//计算此献血员全部献血量

    else

    messagebox(“提示:”,“该献血员”+string(l_djsj,“yyyy.mm.dd”)+“登记过指纹信息,但未献血!”)

    end if

    else

    goto lab1 

    end if

    else

    messagebox(“提示:”,“未找到匹配指纹,请用其他方法检索档案!”)

    if messagebox(“提示:”,“是否保存指纹信息?”,question!,yesno!,1)<>2 then

    openwithparm(w_zw_bc,tz1)//调用子窗口(图2)保存指纹特征值

    end if

    end if

    close c1; 

    else

    messagebox(“提示:”,“读取指纹失败!”)

    return

    end if

    zt=ole_1.object.CloseHardware()  //关闭指纹识别控件

    if false then

    messagebox(“提示”,“释放失败!”)

    end if

    //以上程序在PB9.0中运行通过

    ActiveX控件的使用,极大地减少了程序员开发的工作量,使得各种多媒体技术能够自如地运用在管理系统中。

    图2  “指纹保存”窗口

    注:通过两次录入献血码,保存指纹特征值,并与献血码关联

    4  结论

    无偿献血事业是一项关系着全民健康的事业,血液的质量直接关系着病人的生死,有效地杜绝无偿献血员的频繁献血,既保证了血液的质量,又使无偿献血员的身体健康不受损害,指纹识别等多媒体技术的广泛应用为无偿献血事业带来了光辉的前景。

    (志谢:本文特别感谢唐山市现代工程技术有限公司和杭州中正生物认证技术有限公司提供技术支持!)

  

【参考文献】
  1 朱爱民,柯建勋.PowerBuilder 9.0与系统开发.北京:清华大学出版社,2003:41-62.

2 李志文,李国良,后平钦,等.DNA微卫星法临床应用信息管理系统的开发与应用.临床血液学杂志(输血与检验版),2004;1(2):86-87.

3 李志文,后平钦,彭继红,等.短信平台在无偿献血管理中的应用.中华现代医院管理杂志,2005;3(10):954-956.

4 柯建勋,张涛,邵亮,等.PowerBuilder 9.0进阶开发篇.北京:清华大学出版社,2003:483-537.


作者单位:江西省血液中心,江西南昌 330077

作者: 李志文
医学百科App—中西医基础知识学习工具
  • 相关内容
  • 近期更新
  • 热文榜
  • 医学百科App—健康测试工具