APP下载

按键精灵链接数据库自动打印免疫组化玻片标签

2019-03-29刘盛均刘丹陈杨通讯作者

医药前沿 2019年5期
关键词:玻片中心医院绵阳市

刘盛均 刘丹 陈杨(通讯作者)

(四川省绵阳市中心医院病理科 四川 绵阳 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余张,玻片信息丰富,标志清晰,适用于手工及自动免疫组化机染色。该程序经有限改动,可适配于各型自动免疫组化染色机及玻片书写仪,进行玻片或防水标签的自动打印。

猜你喜欢

玻片中心医院绵阳市
对照组织玻片装置架的设计及使用
绵阳市多措并举推进蚕桑产业高质量发展
宁城县中心医院:改善服务,把患者放在心上
可移动染色和废液处理装置的制作
沈阳医学院附属中心医院
绵阳市青少年宫作品
绵阳市网络作家协会成立
沈阳医学院附属中心医院
绵阳市图书馆孙桐生自藏《绣像石头记红楼梦》初探
采用插板法测试沥青表面自由能的误差分析*