按键精灵链接数据库自动打印免疫组化玻片标签
2019-03-29刘盛均刘丹陈杨通讯作者
刘盛均 刘丹 陈杨(通讯作者)
(四川省绵阳市中心医院病理科 四川 绵阳 621000)
病理科的免疫组化染色,通过手工或自动免疫组化染色机进行[1]。在切片准备阶段,均需对玻片进行编号及抗体标记物名称书写。现阶段,手工染色一般以铅笔书写,自动免疫组化机染色以手工录入电脑,标签打号机打印防水标签,再粘贴于玻片。均存在操作繁琐,易于出现差错遗漏,不易辨识等缺点[2]。我科运用按键精灵编程,链接病理数据库,实现免疫组化玻片自动打印,现介绍如下。
1.材料
办公电脑(WINDOWS XP),按键精灵(2014版),琅伽病理数据库(PATHQC1.0),玻片书写仪(PASSMARCH),防脱玻片(迈新SLI-20010601)。
2.方法
2.1 标签及打印界面设置(图1),并抓取相应屏幕点位(图2、图3、图4)。
2.2 按键精灵程序,设置启动键CTRL+F10,暂停CTRL+F11,终止CTRL+F12。
//主模块,定义变量并赋值屏幕点位,测试数据库链接。
Delay 1000
Dim ret,rets
Dim getdata, d_blh, groupdata
Dim p1,p2,p3,p4,p5,p6,p7,p8,p9,p10
p1 = array(339,705)
p2 = array(762,255)
p3 = array(1049,484)
p4 = array(1049,530)
p5 = array(1102,159)
p6 = array(1102,198)
p7 = array(1102,239)
p8 = array(1102,322)
p9 = array(1102,279)
p10 = array(1126,587)
ret = Plugin.SQLServer.connect("数据库网址,端口","用户名", "密码", "数据库名")
Delay 1000
If ret = false Then
MsgBox "数据库链接失败,请检查后再试!
",16+0+4096,"绵阳市中心医院-错误提示"
Else
Call startapp
End If
//启动模块,初始化打印界面。
Sub startapp
Delay 500
MoveTo p1(0),p1(1)
Delay 500
LeftClick 1
Delay 1000
MoveTo p2(0),p2(1)
Delay 500
LeftClick 1
Delay 3500
Call opendata
End Sub
//数据处理模块,链接数据库获取数据。
Sub opendata
d_blh = inputbox("1、检查打印机玻片、色带及状态。" & vbcrlf & "2、输入需要打印切片的免疫组化号,按ENTER开始搜索数据并自动打印。" & vbcrlf & "3、打印期间勿随意移动鼠标及点击键盘。" & vbcrlf & "4、运行中终止运行按CTRL+F12,暂停/继续按CTRL+F11。" & vbcrlf & "5、输入all搜索所有未打印数据并打印(慎用)。" & vbcrlf & "6、输入@+免疫组化号搜索已执行与未执行数据并打印。", "绵阳市中心医院-免疫组化玻片打印")
If d_blh = "" Then
ret = Plugin.SQLServer.Close()
MsgBox "切片标签录入完毕,即将退出程序!
",16+0+4096,"绵阳市中心医院-温馨提示!"
Else
If d_blh = "all" Then
getdata = Plugin.SQLServer.SelectData("T_TJYZ", "F_BLH,F_LKH,F_BJW,F_TJYZH,F_BZ", "F_YZLX = '特殊染色' and F_YZZT = ''")
Delay 1000
If getdata = "" Then
MsgBox "数据库内没有查询到任何未执行数据,请检查再试或手工录入打印。", 16+0+4096, "绵阳市中心医院-错误提示"
Else
Call printdata
End If
Else
If left(d_blh, 1) = "@" Then
d_blh = replace(d_blh, "@", "")
getdata = Plugin.SQLServer.SelectData("T_TJYZ", "F_BLH,F_LKH,F_BJW,F_TJYZH,F_BZ","F_YZLX = '特殊染色' and F_BLH = '" & d_blh & "'")
Delay 500
Else
getdata = Plugin.SQLServer.SelectData("T_TJYZ", "F_BLH,F_LKH,F_BJW,F_TJYZH,F_BZ","F_YZLX = '特殊染色' and F_BLH = '" & d_blh & "' and F_YZZT = ''")
Delay 500
End if
If getdata = "" Then
MsgBox "数据库内没有查询到 " & d_blh & " 相关未执行数据,请检查再试或手工录入打印。",16+0+4096, "绵阳市中心医院-错误提示"
Else
Call printdata
End If
End If
Call resetapp
End if
End Sub
Sub resetapp
Delay 500
Call opendata
End Sub
//打印模块,将获取的数据自动输出到文本框并打印玻片。
Sub printdata
Call clearall
Dim dataindex,last_blh,last_lkh
dataindex = 0
last_blh = 0
last_lkh = 0
getdata=Replace(getdata,"#","")
groupdata = split(getdata, "|")
For i = 0 To ubound(groupdata) - 1
dataindex = dataindex + 1
Select case dataindex
Case 1
If groupdata(i) = last_blh Then
Else
Delay 500
MoveTo p5(0),p5(1)
If last_blh = 0 Then
Delay 500
LeftClick 1
Delay 500
Else
Call cleartext
Call cleartext
End If
SayString lcase(groupdata(i))
Delay 1500
last_blh=groupdata(i)
End If
Case 2
If groupdata(i) = last_lkh Then
Else
Delay 500
MoveTo p6(0),p6(1)
If last_lkh = 0 Then
Delay 500
LeftClick 1
Delay 500
Else
Call cleartext
Call cleartext
End If
SayString groupdata(i)
Delay 1500
last_lkh=groupdata(i)
End If
Case 3
Delay 500
MoveTo p7(0),p7(1)
Call cleartext
SayString groupdata(i)
Delay 500
Case 4
Delay 500
MoveTo p9(0),p9(1)
Call cleartext
SayString Right(groupdata(i),2)
Delay 500
rets = Plugin.SQLServer.UpdateData("T_TJYZ", "F_YZZT = '已执行'", "F_YZLX = '特殊染色' and F_TJYZH = '" & groupdata(i) & "'")
Case 5
Delay 500
MoveTo P8(0), p8(1)
Call cleartext
SayString groupdata(i)
Delay 500
dataindex = 0
MoveTo p10(0),p10(1)
Delay 500
LeftClick 1
Delay 1000
Call checkerror
End select
Next
End Sub
//重置模块,清理所有文本框数据。
Sub clearall
Delay 500
MoveTo p3(0),p3(1)
Delay 500
LeftClick 1
Delay 500
MoveTo p4(0),p4(1)
Delay 500
LeftClick 1
Delay 1000
End Sub
//清理模块,清除文本框数据。
Sub cleartext
Delay 500
LeftClick 1
Delay 500
KeyPress "backspace", 10
Delay 500
End Sub
//错误检测模块,检测打印机错误并处理。
Sub checkerror
Hwnd = Plugin.Window.find(0, "FormError")
sWindow = Plugin.window.iswindow(Hwnd)
If sWindow = 1 Then
MsgBox "发生打印机错误,请排除错误,按ENTER继续", 16 + 0 + 4096, "绵阳市中心医院-错误提示"
Delay 2000
End If
End Sub
3.总结
我科应用此方法,打印免疫组化玻片50000余张,玻片信息丰富,标志清晰,适用于手工及自动免疫组化机染色。该程序经有限改动,可适配于各型自动免疫组化染色机及玻片书写仪,进行玻片或防水标签的自动打印。