用wxPython开发了一个用于对CRF做SDTM注释的工具
最近有些疏于更新博客,必须检讨。换了部门以后比以前忙了很多,做了一些我感兴趣的工作,比如下面这个软件工具。
需求分析
在临床试验的标准提交文档中,有一项是CRF的注释版本文件,叫做注释CRF(annotated CRF, aCRF)。传统做这个工作是比较耗时的,因为只能用pdf编辑软件,手动的插入一个一个的文本框,输入文字后,往往还有调整颜色位置,方框的大小等等。做一个项目评论需要3个工作日。还有一个痛点是,注释和CRF是耦合在一起的,一旦CRF更新,意味着要从头再做一遍aCRF。业界有一些实践,一般是使用SAS来编辑pdf的xml文件再合成。这次转入新部门后,统计编程团队的老大,看到我之前对这方面的自动化有一些探索,他对实现这项工作的自动化也很感兴趣,便希望我做一个能够投入实际应用的生产力版本,我很高兴的接受了这项挑战,这正是我的兴趣所在。
所用python包
- 我在前期对python操作pdf有一些探索,这次要把这些工具有机的整合到wxpython的可视化框架中还是一个不小的挑战,最终还是比较满意的完成了这个作品。本工具所用的包及在本软件中的用途如下:
- pdfrw: 用于对两个pdf进行重叠合并成一张pdf,并用于输出最终结果pdf
- reportlab: 用于绘制注释并输出pdf文件,注释基本上是一个具有文字和背景色的方框,并根据需要在方框上添加箭头连接
- pymupdf: 用于读取空白CRF的pdf文件,显示页码列表,显示crf内容的图片
- openpyxl: 读取spec的xlsx文件,加速注释CRF过程的关键
- wypython: 用来制作一个可交互的可视化软件界面
- pyinstaller: 用来打包一个可执行的程序
软件主要亮点
经过3周的开发,第一个可用版本终于开发完毕。参见以下截图。
-
通过解析spec文件,自动生成关键注释信息,使得CRF注释信息的插入无需再次手动输入文字,包括domain信息,变量名,和大多数的when条件限制
-
注释的方框长度,底色自动生成,随意插入鼠标点击位置
-
domain注释自动插入至合适位置,自动配置底色,同一个域的变量可以自动统一底色
-
方便插入箭头,箭头自动连接注释框
-
一键插入"不提交"注释 批量导入注释参数和导出注释参数功能。实现相通结构注释的批量生成。
-
可以将注释和空白CRF分离,可以将注释和任意CRF结合,实现注释信息的重复利用
结束
开发过程还是比较顺利,之前有一点点wxpython基础。对这个软件感兴趣的朋友可以email联系我,我可以发软件包供试用。