04-ADCMCST数据集生成规则文档¶
功能概述¶
gen_adcmcst函数的主要功能是根据原始EDC数据和规范(spec)生成ADCM_CST(Analysis Data Concomitant Medication for Cancer Specific Therapy,分析用途的肿瘤特异性治疗伴随用药数据集)数据集。这个数据集包含临床试验中各受试者的肿瘤特异性治疗信息,如治疗名称、分类、治疗时间、治疗线数、治疗效果等。
函数参数¶
data: 原始数据列表,包含多个数据框adsl: ADSL数据集,用于获取受试者相关信息(如RFICDT、TRTSDT、TRTEDT、DTHDT等)spec: ADCM_CST相关的JSON规范列表cutoffdate: 主要的数据截止日期
输入和输出¶
- 输入: 原始EDC数据、ADSL数据集和JSON规范
- 输出: 包含规范中要求的所有变量的ADCM_CST数据框
处理流程¶
该函数的处理流程分为以下几个主要步骤:
- 提取依赖关系信息: 从规范中提取相关的数据依赖关系
- 基础数据集生成: 使用simple_adam_gen函数从原始数据中生成基础数据集
- 治疗线数处理: 对CMTLN(治疗线数)变量进行特殊处理,生成CMTLNMAX(最大治疗线数)
- 日期填补处理: 根据SAP规则对CMSTDT和CMENDT进行日期填补
- 最后治疗结果标记: 为每个受试者标记最后一条治疗记录的治疗结果
- 数据截止处理: 根据截止日期过滤和处理数据
- 返回最终数据集: 返回包含所有要求变量的ADCMCST数据集
变量生成规则¶
基本信息变量¶
| 变量名 | 描述 | 生成规则 |
|---|---|---|
| STUDYID | 研究标识符 | 从CMCST.STUDYCODE或CMCST.STUDYID获取 |
| SUBJID | 研究中的受试者标识符 | 从CMCST.SUBJID获取 |
治疗信息变量¶
| 变量名 | 描述 | 生成规则 |
|---|---|---|
| CMTRT | 报告的药物、药品或治疗名称 | 从CMCST.CMTRT获取 |
| CMCAT | 药物分类 | 从CMCST.TNAME获取 |
| CMSCAT | 药物子分类 | 从CMCST.CMCAT获取 |
| CMSCATO | 其他药物子分类,请具体说明 | 从CMCST.CMCATO获取 |
日期变量¶
| 变量名 | 描述 | 生成规则 |
|---|---|---|
| CMSTDTC | 观察开始日期/时间 | 从CMCST.CMSTDAT获取 |
| CMENDTC | 观察结束日期/时间 | 从CMCST.CMENDAT获取 |
| CMSTDT | 填补后的观察开始日期/时间 | 根据SAP规则进行日期填补 |
| CMENDT | 填补后的观察结束日期/时间 | 根据SAP规则进行日期填补 |
| CMPDDTC | 疾病进展日期 | 从CMCST.CMPDDAT获取 |
用药信息变量¶
| 变量名 | 描述 | 生成规则 |
|---|---|---|
| CMINDC | 适应症 | 从CMCST.CMTYP获取 |
| CMTLN | 治疗线数 | 从CMCST.CMTLN获取 |
| CMTLNMAX | 最大治疗线数 | 根据受试者的所有记录中CMTLN的最大值计算: 1. 将文本格式的治疗线数转换为数值(如"一线"→1,"二线"→2,">1"→2等) 2. 对每个受试者,取所有记录中转换后的最大值 |
| CMGRPID | 方案 | 从CMCST.CMRGMTRT获取 |
| CMCOUR | 治疗周期数 | 从CMCST.CMCOUR获取 |
| CMOUT | 治疗结果 | 从CMCST.CMOUT获取 |
| CMOUTLS | 最后治疗结果 | 按SUBJID、CMENDT(降序)、CMSTDT(降序)、CMTLN(降序)进行排序后,每个受试者的第一条记录的治疗结果 |
| CMOUTO | 其他结果,请具体说明 | 从CMCST.CMOUTO获取 |
剂量信息变量¶
| 变量名 | 描述 | 生成规则 |
|---|---|---|
| CMDOSTXT | 每次给药剂量 | 从CMCST.CMDOSE获取 |
| CMDOSU | 剂量单位 | 从CMCST.CMDOSU获取 |
| CMDOSUO | 其他剂量单位 | 从CMCST.CMDOSUO获取 |
| CMDOSFRQ | 每个间隔的给药频率 | 从CMCST.CMDOSFRQ获取 |
| CMDSFQO | 其他每个间隔的给药频率 | 从CMCST.CMDSFQO获取 |
特殊处理规则¶
治疗线数转换规则¶
CMTLN变量支持以下格式的转换:
| 原始值 | 转换后数值 |
|---|---|
| "一线", "1", 1 | 1 |
| "二线", "2", 2, "大于一线", ">1", "≥2" | 2 |
| "三线", "3", 3, "大于二线", ">2", "≥3" | 3 |
| "四线", "4", 4, "大于三线", ">3", "≥4" | 4 |
| "五线", "5", 5, "大于四线", ">4", "≥5" | 5 |
| "六线", "6", 6, "大于五线", ">5", "≥6" | 6 |
| "七线", "7", 7, "大于六线", ">6", "≥7" | 7 |
| "八线", "8", 8, "大于七线", ">7", "≥8" | 8 |
| "九线", "9", 9, "大于八线", ">8", "≥9" | 9 |
| "十线", "10", 10, "大于九线", ">9", "≥10" | 10 |
| "大于十线", ">10" | 11 |
特别注意:若收集线数原始值超过以上列出,将无法支持识别和分析。
日期填补规则(SAP规则)¶
CMSTDT(开始日期)填补规则:¶
- 如果开始日期完全缺失且结束日期 ≤ TRTSDT,则填补为当年1月1日
- 如果开始日期完全缺失,则填补为TRTSDT
- 如果年份等于TRTSDT年份且月份缺失,则填补为TRTSDT
- 如果年份等于TRTSDT年份且月份等于TRTSDT月份且日期缺失,则填补为TRTSDT
- 其他情况:缺失月份填补为1月1日,缺失日期填补为1日
CMENDT(结束日期)填补规则:¶
- 如果结束日期完全缺失,则填补为当年12月31日
- 如果缺失日期,则填补为当月最后一天
日期逻辑校验:¶
- 如果填补后的开始日期晚于结束日期,则不进行填补
- 如果填补后的结束日期早于开始日期,则令结束日期等于开始日期
数据截取处理¶
根据传入的cutoffdate参数,对ADCMCST数据进行如下处理:
- 过滤掉CMSTDT > cutoffdate的记录
- 当CMENDTC > cutoffdate时,将CMENDTC设置为空值(NA)
代码限制和注意事项¶
- 函数依赖: 函数依赖于特定的数据结构和变量命名规则,需要ADSL数据集作为输入
- 治疗线数处理: 治疗线数(CMTLN)的处理有特定的转换规则,可以识别中文、数字和特殊格式(如">1"、"≥2"等)
- 辅助函数依赖: 函数使用simple_adam_gen辅助函数来生成基础数据集
- 最大值计算: 治疗线数的最大值计算使用了max函数和na.rm=T参数,需要注意当所有值都为NA时会返回-Inf,代码中已加以处理
- 排序规则: CMOUTLS的生成按照SUBJID、CMENDT(降序)、CMSTDT(降序)、CMTLN(降序)进行排序