论文总字数:10421字
摘 要
:临床试验数据管理的核心是保证临床数据的质量,电子数据采集系统(EDC)凭借其能简化临床试验的流程、确保数据的真实准确等特点被应用于临床试验研究中。本研究以OpenClinica系统为例,介绍了使用EXCEL文件、XML文件、Rule Designer插件实现电子化逻辑核查规则的编辑,采用python语言编写程序实现批量生成核查规则,以阐述数据核查在电子数据采集系统中的应用。关键字:临床试验;电子化数据采集;数据核查
The realization of clinical trial data verification in electronic data capture system (EDC)
Abstract: The core of clinical trial data management is to ensure the quality of clinical data. The Electronic Data Capture System (EDC) is designed to simplify the clinical trial process and ensure that the true and accurate data are used in clinical trials. This study takes the OpenClinica system as an example, introduces the editing of the electronic logic checking rules using the EXCEL file, the XML file and the Rule Designer plug-in, and generates batch verification rules with the python language program to illustrate the application of data verification in the electronic data capture system.
Key words: clinical trials; electronic data capture; data verification
真实准确的临床试验数据是临床试验研究结果质量的先决条件,它直接关系到临床试验的安全性与有效性评价。电子数据采集系统(electronic data capture, EDC)是一种基于计算机网络的用于临床试验数据采集的技术[1],将临床数据以电子化的形式采集与传递,它能够提高临床数据管理的效率,提供标准化的临床试验数据,具备一定的风险管理控制,使其逐渐在临床试验中推广开来。据统计,EDC 系统可平均同步筛查81.3% 的数据疑问,使整个试验成本降低60%以上[2]。数据核查作为保证临床试验数据质量的重要环节,是EDC系统不可或缺的功能。本文以全球首款开源的EDC系统——OpenClinica系统为基础,探讨临床试验数据核查在EDC系统中的实现,并进一步优化核查规则的编辑以提高工作的效率。
1 临床试验数据管理中的数据核查
1.1 EDC中的临床试验数据管理
在EDC系统中,数据管理工作同样也贯穿于临床试验项目过程中的各个环节,多种角色共同参与。在项目的设计阶段,数据管理人员根据申办方提供的研究方案与CRF制定数据管理计划与数据核查计划,然后根据方案计划设计(e)CRF,编写注释CRF,建立数据库,编辑电子化逻辑核查规则[3]。设计完成之后进入数据测试阶段,进行系统测试与用户测试,完成测试报告。测试阶段应对电子化逻辑核查进行合理与不合理数据的测试,同时收集测试用户的反馈,在此基础上做出修改以满足方案需求,保证数据能够正常采集之后才能正式上线。在项目的实施阶段,数据录入人员完成数据录入工作,监查员对录入的数据进行注释和质疑,并发送给数据录入人员。在数据录入人员对数据进行解释质疑后,监查员才能关闭质疑。数据录入工作完成之后,项目的研究者和数据管理人员对数据进行确认后签字,锁定数据库。统计方导出数据后进行人工核查,对数据进行清理后完成统计分析。在项目的完成阶段需要对临床数据进行质量控制与归档管理。根据临床试验管理规范(Good Clinical Practice,GCP)的技术要求,为保证数据的质量,数据验证要求遵循数据的真实性、完整性、准确性、及时性、可溯源性、规范性、合法性、逻辑性[4],这也是EDC系统在设计阶段必须考虑的关键点。
1.2 电子化逻辑核查
在临床试验数据管理流程中,数据核查可分为电子化逻辑核查、人工核查、医学审查。前两者的工作由数据管理人员完成,后者由专业的医学人员完成。电子化逻辑核查主要是利用计算机程序针对一些逻辑关系比较简单的规则进行设定,适用范围广,简单快速,精准高效。电子化逻辑核查类型一般包括但不限于[5]:(1)字段核查,即核查字段的类型、长度、精度、范围,如姓名首字母缩写不超过4个字符,正确的日期格式(2)缺失值核查,如未填写受试者性别,是否符合入选排除标准(3)时间窗核查,如访视日期不能大于当前日期(4)正常值范围核查,如身高、体重不超过正常值范围,医学指标不得超过参考值范围(5)逻辑一致性核查,即数据在模块内与模块间的一致性与时间的逻辑性和连贯性核查,如男性受试者不得填写尿妊娠结果,签署知情同意书日期应早于访视日期。电子化逻辑核查是数据核查的关键环节,合理的核查规则应能能够及时发现、处理有问题的数据,节省数据录入人员的时间,同时保证临床数据的质量。对于电子化逻辑核查无法涉及到的数据点,则采用人工核查。人工核查纯粹依靠人力进行,按照数据审查进行进行。适用于复杂的逻辑,如外部系统数据库与内部系统数据的比对[6],便捷有效但是效率低下,易影响数据的质量。
2 数据核查在OpenClinica系统中的实现
OpenClinica系统是一款开源的EDC系统,采用了CDISC标准、MedDRA术语词典等数据规范,具备稽查轨迹的查询功能与逻辑核查功能,提供了丰富的临床试验角色与权限,清晰的项目创建流程,完善了临床试验数据的管理工作。系统不仅广泛得支持传统格式的临床数据,对于图像与生物信号数据等新的数据格式也在不断地扩展中[7,8]。由于开源,越来越多的研究者参与到项目的二次开发中,也有团队尝试整合随机化系统[9]到OpenClinica系统中。对于复杂数据的核查,OpenClinica系统提供了XML文件与Rule Designer插件两种方式用于编辑规则。
2.1 编辑EXCEL文件
OpenClinica系统中是通过EXCEL文件的方式编写eCRF。系统提供下载EXCEL模板,模板分为CRF、Sections、Groups、Items、Instructions五个部分,其中Instructions是对eCRF编写的指南。在eCRF中建立的核查与XML文件不同,属于“硬核查”,一般不涉及到复杂的逻辑,例如数据类型核查、字符长度与精度,缺失核查等。“硬核查”在录入与核查规则不相符合的数据时,就会触发错误的信息提示,并且无法保存录入数据。而XML文件中编辑的核查规则则属于“软核查”,触发错误提示后仍可以进行保存,但是系统仍会保留警示标识。eCRF中的核查应在Item表中进行编辑,缺失值的核查(Required)规定是否允许数值缺失,只接受1或0两个参数。数据类型(DATA_TYPE)提供多种数据类型,录入不同的数据类型数据则会触发提示。字符长度与精度(WIDTH_DECIMAL)规定允许接受不同精度的数值,与数据类型和有效性验证(VALIDATION)配合使用,只适用于ST、INT、REAL三种数据类型。采用“ w(d)”的形式,例如“REAL 3(1)”最多允许接受1位小数的3个字符,系统接受123,12.3,1.23,12.,但不接受1234,要限定接受类似12.3的数据,需要结合正则表达式完成数据验证。有效性验证JAVA风格的正则表达式来完成较为复杂的数据验证,适用于正常值范围核查,支持内置的运算符函数库与range函数[10],如表1所示。
表1 EXCEL当中的逻辑核查
参数 | 含义 | 数值类型 | 例子 | 核查类型 |
REQUIRED | 是否必须 | 1、0 | 1:必须填写,不允许缺失 | 缺失值核查 |
DATA_TYPE | 数据类型 | 字符型(ST)、整型(INT)、实数型(REAL)、日期型(DATE或PDATE)、文件类型(FILE) | INT:只支持整型数据 | 字段核查 |
WIDTH_DECIMAL | 长度、精度 | 采用“w(d)”形式 | REAL 3(1):最多允许接受1位小数的3个字符 | 字段核查 |
VALIDATION | 有效性验证 | 正则表达式 | regexp:/[0-9]{2}/ 只接受2位数 | 字段核查 |
内置函数 | Func:range(1,10) 数值范围在1-10之间 | 正常值范围核查 |
2.2 编辑XML文件
XML(Extensible Markup Language, 可扩展标记语言)由于格式的兼容性高、可读性强、规范化而常被用于简化数据的传输与存储。OpenClinica系统为核查规则的编辑定义了一套语法规范,固定的XML标签有Target、OID、RuleRef、RuleDef、ValueExpression、ActionType等,如图1所示。为了区分众多的实体对象,OpenClinica定义了OID(Object Identifiers ,对象标识符)来标识特定的对象,并且每一个OID都是唯一的。这些实体对象主要涵盖研究项目、研究中心、研究事件定义、CRF及其版本、条目组、条目、规则,对应的OID可以在创建研究项目的页面或者系统提供的元数据中查询获得。
“Target”标签用于指定规则触发时的条目对象,需要填写该条目的OID。在编辑规则的时候,一个完整的OID应该包含四个部分:研究定义的事件、CRF及其版本、条目组、条目,彼此之间有“.”连接。“RuleRef”标签的作用是定义规则的OID、规则触发的时机以及触发的行为类型。为了使得录入不符合规范的数据时候触发警示消息,需要将行为类型定义为“DiscrepancyNoteAction”。“RuleDef”标签则是用于定义规则表达式,即规则的触发条件。“Expression”标签则是为条目编写的规则,可进行缺失核查、时间窗核查、条件核查等复杂的电子化逻辑核查。OpenClinica系统同时也支持不同模块间的核查,但是“Target”标签必须是完整的,而不是局限于某一个模块。需要注意的是同一个条目的“Target”只能编写一次,但“RuleRef”与“RuleDef”可以多次编辑以实现同一个条目编写多条规则。编辑XML文件最大的优势可以实现批量书写核查规则,减少了时间成本,提高了人员编辑核查的效率。因为这是一种自定义的方式,所以能够应对临床试验数据核查中遇到的大多数情境。规则的编辑遵循一定的语法,在实际的项目应用中需要进行人员培训,也涉及XML的学习,学习成本高。除此之外,条目完整的OID查询过程繁琐,不支持可视化,难以获得条目的详细信息,上手难度大。
图1 OpenClinica系统中用XML文件编辑核查规则
2.3 使用Rule Designer插件
Rule Designer是OpenClinica系统提供的一款外部插件(图2),需要进行独立安装。这款插件支持核查规则的可视化编辑、测试与上传到系统内部。Rule Designer应用中的条目按事件类型、CRFs、OIDs进行分类,直接拖拽研究项目的条目即可实现OID的映射,免去了繁杂的查询过程。对于每一个条目提供了详细的信息,包括数据的类型、名称、编码。对于规则部分常见的语法也进行了可视化处理,降低了使用者的难度。编辑完规则后可以对其进行测试与保存,同时也也会生成对应的XML文件。Rule Designer不适合批量的规则编辑,存在着安装过程复杂,系统不稳定等问题,需要进一步改进以提高插件的可用性。
图2 Rule Designer插件的页面
3 python实现批量编辑核查规则
对于核查规则的编辑,编写XML文件与使用Rule Designer插件都存在着明显的不足,有必要设计程序实现批量编辑核查规则,降低使用者的难度。Python是一种面向对象的解释型计算机程序设计语言,由于语言的简洁性、易读性以及可扩展性,广泛应用于数据处理、web开发等多个方面。用python实现批量编辑核查规则的原理是按照OpenClinica系统中核查规则的语法设计EXCEL表,用pandas库读取EXCEL文件,XML库生成XML节点,最终生成符合语法规范的XML文件。
3.1 确定并填写EXCEL文件
OpenClinica系统中编写核查规则遵循一定的语法规则,XML的标签相对固定。将主要的固定标签定义为EXCEL文件的变量名称,如”lt;Messagegt;lt;/Messagegt;”定义为变量Message,以此确定了Message、Expression、Relate等多个变量,并将核查的类型分为缺失核查、逻辑一致性核查、时间窗核查、自定义核查。
图3 用于编写核查规则的EXCEL文件
3.2 Pandas库读取EXCEL文件
Pandas库基于BSD协议,支持开源,为Python编程语言提供了高性能的、易于使用的数据结构和数据分析工具。它提供了便于操作的Series和DataFrame(一种类似表格的数据结构,支持多维)数据结构对象,支持对不同格式的数据进行读取与写入,包括CSV和文本文件,Microsoft EXCEL,SQL数据库和HDF5等格式,广泛应用于各种学术与商业领域。本文主要使用pandas库进行EXCEL文件的读取,生成可供读取的列表对象。部分程序代码如下:
import pandas as pd
#引入pandas包
items = pd.read_EXCEL("DS.xlsx",encoding="gb2312")
#用gb2312编码读取DS.xlsx文件
for i in range(int(items['OID'].count())):
#遍历items对象
target = str(items['ALL_OID'][i] items['Var'][i])
#读取items对象中的ALL_OID与Var的值
preoid = str(items['OID'][i]).split("_")
preoid.insert(1,items['Var'][i])
oid = "_".join(preoid)
#拼接字符串,生成条目完整的OID
ifee = str(items['IFEE'][i])
#读取IFEE的值
message = (items['Message'][i]).encode('utf-8')
#读取Message的值
3.2 XML生成规则文件
XML库是python专门用于处理XML格式数据的工具,能够解析与创建XML文件,其中xml.dom模块能生成文档对象并写入EXCEL文件中。利用文档对象创建各种节点,并为其添加属性与数值。部分代码如下:
import xml.dom
剩余内容已隐藏,请支付后下载全文,论文总字数:10421字
课题毕业论文、开题报告、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。