吵吵   2015-03-29  阅读:1,250

一周的时间没有更新文章了,惊呼,干啥去了?是去写个程序去了,啥程序?危急值报告系统。

又一天,一个护士MM发狂的对我讲,为啥你们的那个破危急值报告系统老是跳出来,确认了之后还跳出来。我一查日志,这个bug估计是开发人员脑子里进去的水,已经确认的危急值,还拼命的发送警报。无奈之下,将它关了,否则我的电话将会被打爆了。

这当然只是其一了,还有两个原因才是促使我重新开始写的原因:

1、莫名其妙的断线。该系统采用的是CS架构,通俗来理解就是一个TCP传输的“飞鸽传书”。Socket的连接是采用的微软官方的示例,一个服务端收到一个连接后,建立一个线程,然后在线程内对sokcet进行操作,不知道是否是线程的问题,当有两百多客户端连接的时候,先是连接数可以达到200,然后莫名的降低到120,然后又慢慢的升回两百。

但是不管怎么说,用这么多线程毕竟不好,因此考虑重写,采用socket 异步通信。

2、对LIS服务器的巨大压力。当初开发这套系统的工程师估计当初是为了图个方便,服务端就只是起了一个发送消息的作用,当有危急值预警的时候,服务端将预警告诉客户端,客户端呢,从LIS数据库去获取危急值,确认危急值也是将确认结果直接写进LIS数据库,那么,事情就来了,两百多个危急值报告客户端,就是两百多个LIS数据库的连接啊,坑爹啊,多么消耗资源啊!

3、门诊病人的短信通知。关于这个问题是个比较棘手的问题,比如医生下班后,你的危急值报告给谁?但是不管怎么说,用短信先通知患者,至少做到了危急值报告率的百分之百。

最终我们修改后的流程是什么样的呢?

危急值报告系统

1、服务端连接LIS数据库,查找系统的危急值,如果没有确认,查看是否过了十五分钟,过了十五分钟,发送短信给科室的住院总,过了半个小时发送给科室主任;如果是门诊的病人,则短信告知尽快回医院就诊。

2、相应的客户端接收到了报警信息后,蜂鸣器开始报警,并弹出相关的信息出来。

3、医生选中要确认的危急值,输入HIS的账号密码,程序校验后,取得该医生的姓名,科室等相关信息,并发送回服务端。

4、服务端接受到消息后,将结果写回LIS数据库,并发送警报消除的消息给科室其它客户端。

这便完成了一个完整的危急值的确认流程,但是即便是这么小的系统,做起来也都是问题,也都可以不断改进。

从功能上来说,可以优化的有:

1、系统双确认的问题,有些科室要求既可以护士确认,也可以医生确认,有些科室要求双双都需要确认。

2、记录可以导出,可以填写处理措施,可以打印。

3、短信的发送可以纳入统一的短信发送平台中去。

4、检验系统这便宜有显示未确认危急值的功能,并进行提示。

那么关于程序上又有些什么内容呢:

1、多线程的同步问题,如果你不把同步做好,准备等着程序崩溃吧,关于多线程同步的问题,估计又可以讲一片文章了。

2、sokcet 的心跳机制的问题,这个也可以讲一下,下一篇文章继续。

3、多线程中对UI,或者其它线程控制的问题,其实也是线程访问权限的问题,用委托来解决。

… …

搞代码的人真心累!但是是最好的减肥方式,想减肥又不想蹉跎岁月的人可以试试。

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

吵吵 吵吵

发表评论

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