从病理系统中批量获取Gleason评分并填入Excel

理论上来讲,可以用Python爬虫从医院信息系统(HIS)中批量获取各种想要的数据,并进行数据处理和数据分析(这实际上是信息科应该干的事情)。这些数据可以是患者的病理Gleason评分、结石的大小、肿瘤的大小、某个抽血指标、主诉时长、手术时长、出血量等等。数据较少、廉价劳动力充足时,爬虫技术并不具有优势。

本文用一个从病理系统中批量获取患者Gleason评分的Python脚本,测试一下可行性。

脚本功能

根据Excel中的患者信息列表,从病理系统中查询Gleason评分,并填入Excel中。

需要用到的工具

这是一个Python 3 脚本,在如下环境调试完成。

使用流程

一、从电子病历系统中导出患者信息列表

这是健讯电子病历系统一个难得的好功能。捕获

然而导出的Excel文件后缀是错误的,文件实际为xlsx格式,文件名却是xls。导出之后用M$ Excel 2010(或更高版本)打开,点击文件→转换,转换成xlsx文件

2017-12-02_223850

然后再把它保存为xls格式,因为我Python脚本中用的是xls的读写模块。

打开这个文件可以看到,只有一个名为“ds”的sheet,共有14列,第2列是住院号,第1行为标题

2017-12-02_224323

二、配置python脚本

把上述xls文件与Hospital_information_system_crawler_for_Gleason_Score.py脚本放同一个文件夹,用PyCharm 打开py脚本,把xls文件名填入到脚本中

1
xls_file = 'Prostate_Cancer_Jan_Nov.xls'

三、自动获取Gleason 评分

关闭M$ Excel,运行脚本,等脚本运行结束。没有配置计时功能,但对于678例患者貌似5分钟不到的感觉。

代码说明

源代码Hospital_information_system_crawler_for_Gleason_Score.py已上传到GitHub。此处应该有个流程图。代码感觉不够优雅。

Python_Gleason

编程感想

从有了想法到代码完成,大概两天多时间吧。部署环境就花了至少4至6小时,包括下载和安全软件。医院的网速还算可以,就是win7系统安装新版的PyCharm专业版会提示缺少Java SDK,XP安装2017版 PyCharm社区版则一般显示安装包不全,XP一次安装Anaconda中途退出后再也安装不上。

真正写代码和调试的时间估计有10小时。PyCharm的各种辅助功能,跟多年前记事本学JavaScript相对,真是高科技了。第一次从服务器获得数据、第一次成功写入Excel时非常兴奋。写到凌晨效率和思考能力真是非常低,但又欲罢不能,想要快点完成,然而睡前折腾几个小时,真不如早上清醒时的效率。

代码的总体构思是参考《一个小爬虫爬取限定条件的国自然项目》和FOOFISH-PYTHON之禅爬虫入门系列,后者提供了最基础的知识和思路,让人忍不住动手写一个爬虫的样子。朗珈病理查询系统 的网页结构实际上非常简单,就是三个框架,cookies随便用,没有反爬虫机制,从晚上到第二天上午编程的过程中,我请求了无数次,貌似都没什么警报之类的。

​由于没用梯子不能上Google,遇到问题是通过Bing和搜狗解决,搜索结果质量较差,影响效率。在正则表达式的构建和Excel的读写上纠结最多时间。基本没有数据结构和数据库知识,所以感觉代码还是比较乱。使用的是模块化编程的思路,但是在模块代码的几个文件之间手动copy来copy去,没用到import功能,效率不高。

Chalkit wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
坚持原创技术分享,您的支持将鼓励我继续创作!