吵吵   2013-04-15  阅读:2,139

每次在窗口接收检验标本的时候就被病人的问题问的不胜其烦,尤其是询问检验报告有没有出来的,但是很多时候你也只能对这些问题表示深深的无奈。我曾很多次想实现检验报告的在线查询,但是受限于这台不堪重负的LIS服务器,也只好作罢。但是这段时间通过我的仔细思考,我想出来了一个限制查询的次数的在线检验报告查询系统的设计方案,解决了对服务器造成过重负载的问题。

在线查询的意义

涉及到病人的隐私问题,我们无法直接在互联网上使得用户可以查询到他的检验报告单内容,因此,似乎,建立在线查询系统没有多大的必要。如果非要实行的话,那么我们就需要在病人入院的时候随机生成一个密码,并告知病人应该及时修改,这样子病人就可以通过使用ID号和初始密码登陆检验系统,查看自己的报告单了。

然而,目前我们还做不到上面的所说的程度。

我们经常网购,而且经常登陆快递的网站查询我们快递的进展状况。由此,我们可以想到,在线检验系统也可以这么做,我们只让病人通过他的ID号查询检验报告的进行状态,而不告知内容,就不会涉及到隐私的问题。这样做的意义有:

1、病人可以在家直接查看报告有没有出来,避免跑到医院报告没出来的情况。

2、减少工作人员接听查询报告电话的负担,减少窗口工作人员回复病人问题的负担。

3、病人可以通过手机,方便的了解到报告的进展状态,。

4、为后期的直接在线查询和打印报告铺垫基础,为检验结果互认的信息化奠定基础。

架构设计

LIS主服务器:LIS主服务器是位于医院内网的一台IBM M6的服务器,使用sql server 2008存储检验的所有数据。日常检验工作是由power builder写的检验系统完成的,这种方式是直接读取和写入数据库的,没有任何中间件。

查询服务器:在线查询服务器拥有两张网卡,一张是连接院内局域网的,php通过使用sqlsrv可以连接到检验系统数据库。另外一张网卡是直接连接外网的,提供检验报告查询服务。该服务器使用IIS+php5.3+mysql5.0搭建,mysql用于存储基本的信息数据。

检验报告在线查询

限制查询

为了减轻对LIS住服务器的压力,我们只得做出一些牺牲,那就是限制用户的查询,我们将使用以下三种方式来限制查询:

1、cookies限制。这个比较简单而且使用,对于每执行查询成功的用户,我们设定一个10分钟的cookies,在这十分钟内再次查询则告知:“您已经查询过一次,请十分钟后再试”。

2、查询频率限制。我们用mysql数据库存储了查询成功的记录,当有用进入查询的时候,我们查看mysql数据库中前十分钟内的查询次数,如果查询的次数大于我们设定的次数,则告知用户:”当前查询人数较多,请稍后再试!“。否则我们将收到的病人ID号通过sqlsrv进行查询,返回结果,同时添加cookies限制和mysql中的查询记录。

我们根据不同的时间,对查询频率的限制使用了不同参数,如上午服务器忙的时候,查询频率的限制就比较小;下午和晚上服务器不忙的时候,查询频率限制就加大。

3、IP限制。在如上所说的mysql查询记录中,我们还记录了用户查询的ip地址,用户的ip地址在前十分钟内有过查询的话,我们告知:“您已经查询过一次,请十分钟后再试”。

总结

通过以上的方式,我们一方面实现了检验报告的实时在线查询,另一方面也充分的利用的LIS主服务器的剩余性能。在既要考虑性能瓶颈,又要实现功能的情况下,这不失为一种好办法。

这些天又在研究MongoDB,考虑用MongDB来缓存检验报告,这样子就有望真正突破传统数据库的性能瓶颈了。

吵吵微信朋友圈,请付款实名加入:

吵吵 吵吵

一条回应:“一种限制查询的在线检验报告查询系统”

  1. 小鬼哥说道:

    吵吵把论文发到博客了?

发表评论

电子邮件地址不会被公开。 必填项已用*标注