跳转至

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数据框

处理流程

该函数的处理流程分为以下几个主要步骤:

  1. 提取依赖关系信息: 从规范中提取相关的数据依赖关系
  2. 基础数据集生成: 使用simple_adam_gen函数从原始数据中生成基础数据集
  3. 治疗线数处理: 对CMTLN(治疗线数)变量进行特殊处理,生成CMTLNMAX(最大治疗线数)
  4. 日期填补处理: 根据SAP规则对CMSTDT和CMENDT进行日期填补
  5. 最后治疗结果标记: 为每个受试者标记最后一条治疗记录的治疗结果
  6. 数据截止处理: 根据截止日期过滤和处理数据
  7. 返回最终数据集: 返回包含所有要求变量的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(开始日期)填补规则:

  1. 如果开始日期完全缺失且结束日期 ≤ TRTSDT,则填补为当年1月1日
  2. 如果开始日期完全缺失,则填补为TRTSDT
  3. 如果年份等于TRTSDT年份且月份缺失,则填补为TRTSDT
  4. 如果年份等于TRTSDT年份且月份等于TRTSDT月份且日期缺失,则填补为TRTSDT
  5. 其他情况:缺失月份填补为1月1日,缺失日期填补为1日

CMENDT(结束日期)填补规则:

  1. 如果结束日期完全缺失,则填补为当年12月31日
  2. 如果缺失日期,则填补为当月最后一天

日期逻辑校验:

  1. 如果填补后的开始日期晚于结束日期,则不进行填补
  2. 如果填补后的结束日期早于开始日期,则令结束日期等于开始日期

数据截取处理

根据传入的cutoffdate参数,对ADCMCST数据进行如下处理:

  1. 过滤掉CMSTDT > cutoffdate的记录
  2. 当CMENDTC > cutoffdate时,将CMENDTC设置为空值(NA)

代码限制和注意事项

  1. 函数依赖: 函数依赖于特定的数据结构和变量命名规则,需要ADSL数据集作为输入
  2. 治疗线数处理: 治疗线数(CMTLN)的处理有特定的转换规则,可以识别中文、数字和特殊格式(如">1"、"≥2"等)
  3. 辅助函数依赖: 函数使用simple_adam_gen辅助函数来生成基础数据集
  4. 最大值计算: 治疗线数的最大值计算使用了max函数和na.rm=T参数,需要注意当所有值都为NA时会返回-Inf,代码中已加以处理
  5. 排序规则: CMOUTLS的生成按照SUBJID、CMENDT(降序)、CMSTDT(降序)、CMTLN(降序)进行排序