(四川省绵阳市中心医院病理科 四川 绵阳 621000)
【摘要】 运用按键精灵编程,链接病理数据库,自动录入免疫组化切片各类信息,并以玻片打号机打印免疫组化玻片,适用于手工及自动免疫组化染色机进行免疫组化及特殊染色。
【关键词】 免疫组化;数据库;按键精灵;标签;玻片书写仪
【中图分类号】R197.3 【文献标识码】A 【文章编号】2095-1752(2019)05-0052-03
Key sprite link database to automatic print the of immunohistochemical slide label
Liu Shengjun, Liu Dan, Chen Yang.
Department of Pathology Mianyang Central Hospital,Mianyang,Sicuan 621000,China
【Abstract】key Sprite programming was used to link the pathological database, automatically input all kinds of information of immunohistochemistry sections, and print immunohistochemistry slides by a glass plate marking machine, which is suitable for manual and automatic immunohistochemistry staining machine for immunohistochemistry and special staining.
【Key words】Immunohistochemistry; Database; Key Sprite;label; Slide Printer
病理科的免疫组化染色,通过手工或自动免疫组化染色机进行[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余张,玻片信息丰富,标志清晰,适用于手工及自动免疫组化机染色。该程序经有限改动,可适配于各型自动免疫组化染色机及玻片书写仪,进行玻片或防水标签的自动打印。
【参考文献】
[1]陈志忠,陈小岩,陈冰.免疫组化染色流程四阶段分法及其要点简介[J].诊断病理学杂志,2015,22(11):26.
[2]周建云,何松,刘玉山.全自动免疫组化染色仪染色失败的常见原因及改进措施[J].临床与实验病理学杂志,2013,(29)3:345-346.
论文作者:刘盛均,刘丹,陈杨(通讯作者)
论文发表刊物:《医药前沿》2019年5期
论文发表时间:2019/4/17
标签:免疫论文; 绵阳市论文; 数据论文; 数据库论文; 模块论文; 中心医院论文; 手工论文; 《医药前沿》2019年5期论文;