logo资料库

LIS解码程序开发手册.doc

第1页 / 共16页
第2页 / 共16页
第3页 / 共16页
第4页 / 共16页
第5页 / 共16页
第6页 / 共16页
第7页 / 共16页
第8页 / 共16页
资料共16页,剩余部分请下载后查看
LIS 解码程序开发手册 本手册对整个 LIS 都有所讲解,但重点还是放在 LISLiod 上面。从整个程序的框架的架 构,到每个配置文件的说明,每种解码算法的好处等,一一的让你学会 LISLiod。 完成一台仪器,一般是四个步镞,1。分析仪器,2。分析原始数据,3。编写 LIS 解码程 序,4。调试 一、分析仪器大概有以下几点 1. 会看仪器 2. 熟悉 LIS 系统的流程 3. 会做线 4. 一些基本的沟通 5. 注意卫生。 二、分析原始数据,这是总过流程中最困难,也是最关键的一个环节。原始数据不只是 TXT 文本,还有数据库等其他格式的文件。有四个步骤: 1.找出每个标本的起始符与结束符 2.找出每个标本的日期和样本号 3.找出每个项目数据或图象数据对应的位置 4.最后总结,得到规律。 三、所谓 LIS 解码程序(LISLoid),就是一段小的程序,自动的完成把仪器做完标本所产生 的有用数据(往往这些数据都比较复杂难以看懂,所以才叫解码)存入到 HIS 和 LIS 系统里面, 使 HIS 和 LIS 系统能够灵活的调用这些数据。做一个桥梁把仪器和 HIS 和 LIS 系统连在一 起。 LISLoid 是由舞个基本的部分组成: 1. 通信程序。 2. 解码算法程序。 3. 插入数据库的程序 4. 报告程序。 5. 历史备份 四、调试,除了完善 LISLiod,还有报表格式的调整,打印机等测试。
分析仪器 1. 会看仪器,不是要你学会怎样使用仪器,而是根据实际的情况把这台仪器定位到我们解 决它的四个位置中,哪四一个位置? 第一,仪器已经很旧,一些取数据的接口已经损坏,使用次数很少。象这类型的仪器迟 早会要淘汰去,做了意义也不大,所以对这些仪器我们采用“手工项目”,直接手工填 写数据,保存到 LIS 系统,解码程序也就省了。 第二,中小型的仪器,一般都是有 COM 接口的,标本的样本号由仪器本身输出。对这 种我们用通信程序直接截取数据进行解码。(如:电解质仪器,尿液分析仪。。。。) 第三,很先进的大仪器,这种一般都比较复杂,就算能用通信程序截取到数据,我们对 它进行完全解码也比较困难,而仪器一般都自带有一套操作软件,所以我们从它的软件 中做接口,大部分仪器在这方面都留有接口,可以找说明书,也可以直接打电话询问仪 器产家。(通常的接口有:本地数据库,result 文件。。。。) 最后,还有一些非常特需的仪器,旧,用的少,有复杂的图象,没有上面所说的接口。 这种就不能用常规的方法解决,如:利用钩子程序,直接截取它的结果,利用截屏的程 序获取图象。。。 、 2. 熟悉 LIS 系统的流程,这个非常重要,因为要使一台仪器能正常运行,需要对 LIS 系统 进行很多的配置,只有正确的配置好了,仪器里的数据才会准确无误的传入到 LIS 系统。 “lis 模块功能”,“LIS 软件流程”,“LIS 系统库表”,“LIS 项目实施文档”,“培训教材” 等这些都要认真阅读,最好还要能够掌握 LIS 数据库里的所有表结构。 3. 会做线,首先知道接线的规则,有 25 钟的接口,9 钟的,公母匹配。。。。。认真阅读 “RS-232-C 详解”文档,对通信程序的理解也很有帮助。学会这个可以节哟成本。 4. 沟通很重要,因为我们要做的仪器,现在都已经正在正常使用,你首先就要调查清楚每 台仪器的使用时间,然后调试仪器,这些都需要每台仪器的操作员配合的。所以沟通显 得有所必要。 5. 注意卫生,检验科,是医院所有地方最需要注意的地方。不过也没有那么可怕,多注意 一下,不要随便乱碰拿什么东西,进出一定洗手。一般就不会有什么问题。
原始数据分析 对 TXT 文本的数据分析就一定会用到“原始数据分析”这个工具,会把数据转化为 ASCII 码用网格定位的显示出来,还能颜色区分特需字符,精确定位字符。下面我们看具体的列子: 这是一台型号为 FA-150 的尿液分析仪取出的原始数据,用记事本打开。在用“原始数据分 析”打开看看。 (图一)
现在我们结合这两个工具找出我们需要的数据。 一般开始符和结束符都是一些特需的字符,会用红色表示出来,通过图二,我们就可以看得 出他们的 (图二) 开始符为 13,13,2,13,13,10 结束符 3 (用 ASCII 码表示) 日期的开始位为 6 结束位 25 标本号 49---51 60----74 GLU 82----96 BIL KET 104----118 126----140 SG 148----162 BLD 170----184 PH PRO 192----206 214----221 URO 236----250 NIT LEU 258----272 还有我们发现每个标本的长度相等都是 276 位 根据这些规律我们就可以写出算法来得到每个项目对应的数据 下面我们接着来分析一个数据库的数据. 数据库是哪来的了?有这个数据库当然就有和它匹配的软件,这套软件一般是由仪器产商提 供的一套软件和仪器一起买出,通常这套软件都是一个小型的 LIS 系统,也就是这台仪器的 通讯程序和解码程序都已经集合在这套软件里面了,所以我们就没必要自己再重新给这台仪 器安装一个通讯程序,然后再编写一个对应的解码程序。这样不但费力,更重要的是自己写 的肯定是没有产商的这套程序准确。我们就不能走这条路了,有条更简单快截的方法,就是 直接访问产商软件的数据库,把标本的结果取出来就可以了。和数据库做接口有几个前提条
件,1。了解它的数据库类型,是 ACESS 数据库了,还是其他类型的数据,并找到它通过 ADO 连接他的驱动程序。2。看它是否设了密码,如果有就的象产商获取。3。分析掌握它 的表结构,如果自己分析不出来,也要找产商要。 下面我们来看这台 ACESS 数据库的-----酶标仪 这是它的所有表名。 现在我们来分析它的表结构,找出对我们有用的表和他们之间的关系。
上图是我们需要的三个表的表结构,下图是三个表之间的关系。 Tb_method 项目表,本仪器所做的所有仪器的项目 Tb_plate 一次标本做了多少个项目 Tb_plate_data 一个项目做了多少个标本和他们结果值 通过上面的分析,可以用下面的方法来解决。 因为这种仪器做标本是成套成套的做的,一次至少就是几十个上百个,所以我们记录上次做 完后他的最后 ID 不能保存样本表的 ID,要保存板子表的 ID。我们记录 TB_PLATE 表的 PLATE_ID 字段,下次解码就只要解上次记录的后面的数据。 LISLiod 学习 LIS 解码程序(LISLoid),就是一段小的程序,自动的完成把仪器做完标本所产生的有 用数据(往往这些数据都比较复杂难以看懂,所以才叫解码)存入到 HIS 和 LIS 系统里面,使 HIS 和 LIS 系统能够灵活的调用这些数据。做一个桥梁把仪器和 HIS 和 LIS 系统连在一起。 即使是一段小程序,为了编写的方便和理解,把这段程序分开来解释。共四个部分,前 台界面操作显示,解码类,数据插入数据库类,配置文件操作类。 一,前台界面:
主 界 面 上 有 五 个 按 钮,分别是:HELP,SET,DECODE,DUG,STOP。HELP 就是显示帮助文档,SET 修改 配置文件和解码启动方式,DECODE 点击开始解码图标变蓝,STOP 停止解码,DUG 调试 显示单个样本解码结果。其中还有一个隐藏配置方式快捷键 F9,显示该解码程序是和哪台 仪器匹配,仪器的哪些项目。右键菜单》恢复。下面显示一个文本框,显示当前样本解码后 的结果。 二,解码类: 解码类又分为了一次解码和二次解码,一次解码主要是把原始数据里项目的值取出来存 入 DATAXML,二次解码就是把一次取出的项目结果再次进行分析,合并特定公式或特定 条件,最后得到的是最终需要的结果存如 DATAXML。 public class DataDeCode { public delegate void DataInsertEventHandler(object sender, EventArgs e); /// /// 数据插入数据库事件 /// public event DataInsertEventHandler DataInsert; /// /// 解码进度事件 /// public delegate void FrmTrayIconChangeEventHandler(int trye,int allcount,int nowcount); public static event FrmTrayIconChangeEventHandler FrmTrayIcon; /// /// 存放最后得到的数据 /// public string DataXML=null;
private string resultfilename=@"result\"+DateTime.Now.ToString("yyMMdd")+".txt"; /// /// 数据库连接 /// //private System.Data.OleDb.OleDbConnection conn=null; public DataDeCode() { } public void decode() { this.DataXML=null; DataXML=DataXML+""; DataXML=DataXML+""; this.loadXML(); DataDeCode.FrmTrayIcon(); DataXML=DataXML+""; PublicClass.outxml_Appendfile(resultfilename,DataXML); PublicClass.BindDataXML(DataXML); if(this.DataInsert!=null) this.DataInsert(this,EventArgs.Empty); PublicClass.updateNode(); } /// /// 得到的数据存入XML中 /// /// /// /// private void loadXML(string sd,string name,string codename,int num) { this.DataXML=DataXML+""+sd+""; } } 上面的 DataDeCode 类就是一次解码类, decode()为解码方法,界面上的 DECODE 按钮就是首先调用这个方法。 Decode方法中有些常用的功能方法, 1.this.loadXML();就是把取到的结果构建成XML文档形式。 2.DataDeCode.FrmTrayIcon();方法是在界面上显示解码的进度,按百分比这样显示。 3.PublicClass.outxml_Appendfile(resultfilename,DataXML);方法是备份这次解码的结果。以后还可以 本地查询结果。
分享到:
收藏