用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周的开发,第一个可用版本终于开发完毕。参见以下截图。

2022-09-11-15-59-33.jpeg

image_1662972257505_0 (1).png

图片1.png

  • 通过解析spec文件,自动生成关键注释信息,使得CRF注释信息的插入无需再次手动输入文字,包括domain信息,变量名,和大多数的when条件限制

  • 注释的方框长度,底色自动生成,随意插入鼠标点击位置

  • domain注释自动插入至合适位置,自动配置底色,同一个域的变量可以自动统一底色

  • 方便插入箭头,箭头自动连接注释框

  • 一键插入"不提交"注释 批量导入注释参数和导出注释参数功能。实现相通结构注释的批量生成。

  • 可以将注释和空白CRF分离,可以将注释和任意CRF结合,实现注释信息的重复利用

结束

开发过程还是比较顺利,之前有一点点wxpython基础。对这个软件感兴趣的朋友可以email联系我,我可以发软件包供试用。