核心数据定义
核心数据定义(CDD)是完整研究设计的一个子集。具体而言,其目的是描述影响从 Vault EDC 生成并用于研究数据分析的关键数据导出的字段。
无论是否使用 CDD,组织都可以选择从上游系统(例如 MDR)自动启动研究设计。在该模型中,使用以下 EDC API:
- 创建研究主程序
- 创建事件组
- 创建事件
- 从库或其他研究复制(多个)表单
- 对这些事件组/事件/表单的计划进行排序
为了补充此自动化,源设计系统还可以将 CDD 上传到新创建的研究/病例手册版本 1。然后,CDD 就可以在研究设计的正常生命周期中,对研究意图(CDD)与实际研究设计进行比较。每次运行“工作室验证”作业时,都会进行 CDD 与研究设计的比较。
此定义采用 JSON 格式,并作为文件附加到研究设计的病例手册版本。CDD 是病例手册设计导出(CDE)的一个子集,同样采用 JSON 格式。该子集包含各种 EDC 设计结构(事件组、事件、表单、条目组、条目、编码列表、单位)的关键属性,并且仅在有序的研究计划上下文中有效。有关该完整结构的更多信息,请参阅 EDC API 参考。
CDD 支持版本控制:核心数据定义文件根据需要附加到每个病例手册版本。创建新的病例手册版本不会继承该文件。应将更新的 CDD 上传到新的病例手册版本,并进行适当的更改,以便在后续版本中继续进行比较。
先决条件
默认情况下,具有 CDMS Study Designer(CDMS 研究设计者)和 CDMS Librarian(CDMS 库管员)标准研究角色的用户可以执行下述操作。如果贵组织使用自定义研究角色,则你的角色必须授予以下权限:
| 类型 | 权限标签 | 控制 |
|---|---|---|
| “标准”选项卡 | Studio 选项卡 | 能够访问 Studio 选项卡 |
| “标准”选项卡 | “库”选项卡 | 能够访问库(Library)选项卡 |
| 功能权限 | 查看研究设计 | 仅查看研究设计 |
| 功能权限 | 设计研究 | 能够通过工作室创建研究设计定义和研究计划 |
| 功能权限 | 查看数据库 | 能够通过“工作室(Studio)”>“库(Library)”查看库集合 及其设计 |
| 功能权限 | 设计库 | 能够通过“工作室”>“库”为集合 创建研究设计定义和研究计划 |
| 功能权限 | API 访问 | 能够访问和使用 Vault EDC API。(使用 CDB 也需要此权限。) |
了解有关“研究角色”的更多信息。
管理核心数据定义(工作室)
尽管组织可能会使用 EDC API 自动化管理 CDD,但也可以从工作室用户界面、研究或库集合中管理该文件。
访问核心数据定义
要访问某个病例手册版本的核心数据定义,请执行以下操作:
- 在工作室(Studio)中导航到研究。
- 如有必要,导航到设计的相应病例手册版本(如果不是最新版本)
- 从操作菜单()中,选择管理核心数据定义(JSON)(Manage Core Data Definition (JSON))。
- 将出现一个模态对话框,显示两种情况:
- 如果现有病例手册版本有关联的 CDD 文件,请单击文件名进行下载。
上传核心数据定义文件(工作室)
要为病例手册版本添加 CDD 文件,请执行以下操作:
- 在工作室(Studio)中导航到研究。仅在最新的病例手册版本上允许添加或删除 CDD。
- 从操作菜单()中,选择管理核心数据定义(JSON)(Manage Core Data Definition (JSON))。
- 如果已有文件与该病例手册版本关联,必须先将其删除。请参阅下一节“删除核心数据定义文件”,然后返回这些步骤。
- 将显示没有关联任何 CDD 文件的对话框:
- 单击选择文件(Select File)并浏览到该文件,然后选中它。所选文件将显示出来。如果选择的文件不是预期的文件,请单击文件名旁边的 X,然后选择另一个文件。如果文件不是 JSON 格式,对话框将显示错误并阻止保存。
- 单击保存(Save)将该文件关联到病例手册版本。
删除核心数据定义文件(工作室)
- 在工作室(Studio)中导航到研究。仅在最新的病例手册版本上允许添加或删除 CDD。
- 从操作菜单()中,选择管理核心数据定义(JSON)(Manage Core Data Definition (JSON))。
- 现有的 CDD 将显示为文件名。单击文件名旁边的垃圾桶选项:
- 该操作将表明文件将被删除,但只有单击保存才会真正删除。单击保存。
- 此时,重新访问管理核心数据定义(Manage Core Data Definition)选项以上传更新的版本
核心数据定义文件根据需要附加到每个病例手册版本。Veeva EDC 不存储此文件的先前版本,仅关联最后上传的版本。
运行核心数据定义验证
CDD 与系统中研究设计的比较是作为“工作室验证”作业的一部分完成的。
要从工作室运行验证作业,请执行以下操作:
- 在工作室(Studio)中导航到研究。
- 从操作菜单()中,选择验证(Validate)。如果你的研究最近已经运行过验证作业且没有更改,你将不会看到该选项。
- 如果病例手册版本关联了 CDD,将出现运行作业的选项。当没有关联 CDD 时,这些选项不会出现。
- 默认情况下,还会将 CDD 与研究进行比较,即另外将核心数据定义与研究设计进行比较(Additionally Compare Core Data Definitions to Study Design)。如果选择否(No),则第二个选项将不适用
- 使用找到核心数据定义错误时阻止已验证状态(Prevent Validated Status when Core Data Definition Errors are Found)选项来指示比较 CDD 和研究时发现的重大差异是否应阻止病例手册版本进入“已验证”状态。
通常应执行运行比较和阻止进入验证状态的默认操作。请与组织一起考虑何时以及谁应该能够使用这些绕过选项。所选的选项会被存储并显示在 EDC Tools(EDC 工具)> Job History(作业历史)区域
关于实际比较的内容以及警告与错误类型的判定标准,请参阅下面的“核心数据定义验证”部分。
此作业运行的结果是一个 ZIP 文件,包含两个 CSV 文件,一个用于特定于 CDD 比较的错误/警告,另一个用于工作室验证检查的其余部分。
相关 EDC API 端点
执行上一节中描述的操作的 EDC API 如下:
| EDC API / 操作 | 工作室等效步骤 | 备注 |
|---|---|---|
| 上传核心数据定义文件 | 上传核心数据定义验证(工作室) | 此 API 的参数可用于替换(即,通过一次 API 调用删除并上传新文件) |
| 删除上传核心数据定义文件 | 删除核心数据定义文件(工作室) | |
| 检索上传核心数据定义文件 | 访问核心数据定义 | 此 API 将流式传输通过 API 附加的 JSON 文件。目前,此端点是检测“病例手册版本是否有关联的 CDD?”的唯一方法 |
| 启动作业(工作室验证) | 运行核心数据定义验证 | 启动作业的适用类型是 design_validations__v。从作业中检索结果遵循与任何其他作业类型相同的方法。 |
有关每个端点的完整详细信息(包括示例),请参阅 EDC API 参考。
核心数据定义验证
方法
将附加到病例手册版本的 CDD 与 Veeva EDC 研究中的实际研究设计进行比较的关键点如下:
- CDD 中存在但工作室研究设计中不存在的主要组件(事件组、表单、编码列表选项等) → 错误
- 工作室研究设计中存在但 CDD 中不存在的主要组件(事件组、表单、编码列表选项等) → 警告
- 取决于具体属性
- 在任何设计级别的匹配都是通过设计名称进行的。(例如,不良事件表单的“AE”)。一般来说,表单设计名称成为导出表/文件的名称,而条目的名称成为导出表/文件中列的名称。
- 正如所有其他工作室验证检查一样:
- 警告不会阻止病例手册版本进入已验证状态
- 错误会阻止病例手册版本进入已验证状态
- CDD 的一般结构是完整研究设计(CDE)的一个子集。为了进行比较,可以上传完整的 CDE,但仅比较下面列出的字段。
CDD 结构摘要
CDD 结构涉及高级研究属性和 4 个主要部分:
eventgroup_def:研究的有序计划。即事件组、每个事件组中包含的事件以及这些事件中包含的表单。form_def:包括研究计划中某处使用的每个表单的条目(eventgroup_def部分)。包括表单上的条目组、这些条目组中的条目,以及条目使用已分配的编码列表或单位定义的情况。unit_def:包括研究设计中至少一个条目使用的每个单位定义的条目。在该条目中,进一步定义了单位的选择。codelist_def:包括研究设计中至少一个条目使用的每个编码列表的条目。在该条目中,进一步定义了编码列表的选择。
逐字段比较
CDD 的比较在“工作室验证”作业期间进行。这些比较被分类为错误或警告(见下表)。Vault 还会在“引发的问题 ID(Issue ID Raised)”值中指明类型(“E”表示错误,“W”表示警告)。
| JSON 位置 | 备注 |
|---|---|
study_name_production |
研究中在生产环境中的当前(或预期)标签 |
version |
旨在匹配研究设计中正在比较的病例手册版本。如果不同,会引发警告,但比较会继续进行 |
| (研究的有序计划:包含的事件组) | |
eventgroup_def/name |
这是匹配的依据,即“双方都有” |
eventgroup_def/label |
不同时发出警告 |
eventgroup_def/repeat_maximum |
不同时发出错误。如果事件组不重复,则为“1” |
eventgroup_def/external_id |
不同时发出警告 |
eventgroup_def/event_def |
对于此事件组,它包含的事件 |
| (研究的有序计划:每个事件组的事件) | |
eventgroup_def/event_def/name |
这是匹配的依据,即“双方都有” |
eventgroup_def/event_def/label |
不同时发出警告 |
eventgroup_def/event_def/external_id |
不同时发出警告 |
eventgroup_def/event_def/ |
对于此事件,它包含的表单 |
| (研究的有序计划:每个事件中的表单) | |
eventgroup_def/event_def/form_def/name |
这是匹配的依据,即“双方都有” |
eventgroup_def/event_def/form_def/label |
不同时发出警告 |
eventgroup_def/event_def/form_def/repeat_maximum |
不同时发出错误。如果表单不重复,则为“1” |
eventgroup_def/event_def/form_def/external_id |
不同时发出警告 |
| (表单定义:主要属性) | |
form_def/name |
这是匹配的依据,即“双方都有” |
form_def/label |
不同时发出警告 |
form_def/repeat_maximum |
不同时发出错误。如果表单不重复,则为“1” |
form_def/external_id |
不同时发出警告 |
form_def/itemgroup_def/ |
对于此表单,它包含的条目组 |
| (表单定义:表单中的条目组,有序) | |
form_def/itemgroup_def/name |
这是匹配的依据,即“双方都有” |
form_def/itemgroup_def/label |
不同时发出警告 |
form_def/itemgroup_def/repeat_maximum |
不同时发出错误。如果表单不重复,则为“1” |
form_def/itemgroup_def/external_id |
不同时发出警告 |
form_def/itemgroup_def/item_def/ |
对于此条目组,它包含的条目 |
| (表单定义:表单条目组中的条目,有序) | |
form_def/itemgroup_def/item_def/name |
这是匹配的依据,即“双方都有” |
form_def/itemgroup_def/item_def/external_id |
不同时发出警告 |
form_def/itemgroup_def/item_def/label |
不同时发出警告 |
form_def/itemgroup_def/item_def/data_type |
不同时发出错误。例如:text__v、integer__v、float__v 等 |
form_def/itemgroup_def/item_def/precision |
不同时发出错误。对于定义为浮点数的条目,允许的“小数位数” |
form_def/itemgroup_def/item_def/length |
不同时发出错误 |
form_def/itemgroup_def/item_def/codelist_def |
不同时发出错误。如果条目是编码列表类型,则为其使用的编码列表定义(在后面的部分中定义选择) |
form_def/itemgroup_def/item_def/unit_def |
不同时发出错误。如果条目是单位类型,则为其使用的单位定义(在后面的部分中定义单位选择) |
form_def/itemgroup_def/item_def/allow_unknown_day |
不同时发出错误 |
form_def/itemgroup_def/item_def/allow_unknown_month |
不同时发出错误 |
form_def/itemgroup_def/item_def/allow_unknown_time |
不同时发出错误 |
| (单位定义) | |
unit_def/name |
这是匹配的依据,即“双方都有” |
unit_def/external_id |
不同时发出警告 |
unit_def/choice/ |
对于此单位定义,允许的单位选择 |
unit_def/choice/name |
这是匹配的依据(对于某个选择),即“双方都有” |
unit_def/choice/label |
不同时发出警告 |
unit_def/choice/external_id |
不同时发出警告 |
| (编码列表定义) | |
codelist_def/name |
这是匹配的依据,即“双方都有” |
codelist_def/external_id |
不同时发出警告 |
codelist_def/choice/ |
对于此单位定义,允许的单位选择 |
codelist_def/choice/code |
这是匹配的依据(对于某个选择),即“双方都有” |
codelist_def/choice/label |
不同时发出警告 |
codelist_def/choice/external_id |
不同时发出警告 |
问题 ID
以下是可能的问题 ID 及其发生情况。输出的摘要(Summary)和描述(Description)列进一步描述了问题,并指出了涉及的设计实体/属性
| 引发的问题 ID | 时间/备注 |
|---|---|
| DDE-001 | 文件结构无效,不符合上一节中描述的领域 |
| DDW-002 | CDD 没有研究计划,只有表单、编码列表和单元定义可供比较 |
| DDE-003 | 研究中在生产环境中的预期名称 |
| DDW-004 | 与研究设计关联的文件的病例手册版本(嵌入)似乎与正在比较的版本(研究设计)不同。所有其他比较继续进行,这仅作为警告记录。 |
| DDE-099 | 尝试运行这些验证时出现一般错误。可能需要联系支持人员进行更多调查 |
| DDE-101 | CDD 中存在但研究设计中不存在的实体(事件组、事件、表单等) |
| DDW-102 | 研究设计中存在但 CDD 中不存在的实体(事件组、事件、表单等) |
| DDE-103 | 实体(事件组、事件、表单等)在两者中都存在,但某个关键属性不同。 |
| DDW-104 | 实体(事件组、事件、表单等)在两者中都存在,但某个不太关键的属性不同。 |