4. ADSL受试者水平分析数据集

ADSL(Subject-Level Analysis Dataset)是CDISC ADaM中唯一一个“每受试者一行”的结构化数据集,也是所有后续分析数据集(如ADAE、ADLB、ADTTE)的“主表”。它的核心价值在于:把分散在SDTM各域中的受试者属性、分组信息、关键日期、治疗暴露和人群标志,经过一次性的工程化整合,形成一份稳定、可追溯、可校验的分析基线。本节围绕ADSL的五大核心变量族——人口学(DM)、分组(TRT/ARM)、关键日期(RFSTDTC/RFENDTC等)、治疗变量(TRTSDT/TRTEDT/TRTDUR等)和人群标志(SAFFL/ITTFL/PPROTFL等)——展开工程化生成与一致性校验的讲解。

一、ADSL的定位与结构约定

ADSL的每一行代表一个受试者,唯一标识为USUBJID。它不承载纵向观测,而是承载“受试者是谁、被分到哪组、何时开始治疗、是否纳入某个人群”这类静态或半静态属性。因此,ADSL的生成本质上是“以DM为骨架,横向拼接各域汇总信息”的过程。工程上通常遵循三条约定:第一,ADSL必须覆盖所有随机化或入组的受试者,不能因缺失某域数据而丢行;第二,所有派生变量必须可追溯到SDTM源变量或明确的派生规则;第三,日期类变量统一使用ISO 8601格式(YYYY-MM-DD),部分场景可保留时间部分。

二、人口学与分组变量的工程化生成

人口学变量主要来自SDTM DM域,包括AGE、AGEU、SEX、RACE、ETHNIC等。工程化处理的关键点在于:AGE通常需要按方案定义计算为随机化时年龄或知情同意时年龄,而非直接取DM.AGE;RACE和ETHNIC需按CDISC受控术语映射,并保留原始文本变量(如RACEOTH)以便追溯。分组变量TRT01P(计划治疗)、TRT01A(实际治疗)、ARM和ACTARM则来自随机化系统和实际给药记录。一个常见的工程陷阱是:TRT01P与ARM可能因随机化编码差异而不一致,必须在ADSL中同时保留并增加一致性校验。

三、关键日期与治疗变量的派生

关键日期包括RFSTDTC(参考起始日期)、RFENDTC(参考结束日期)、RFXSTDTC(首次研究药物给药)、RFXENDTC(末次研究药物给药)等。RFSTDTC通常定义为首次研究药物给药日期,若未给药则取随机化日期。治疗变量TRTSDT、TRTEDT、TRTDUR则基于暴露域(EX)汇总:TRTSDT为首次给药日期,TRTEDT为末次给药日期,TRTDUR为两者之差加1(天)。工程实现时需注意:若EX存在多次给药记录,需按USUBJID分组取最小和最大日期;若存在剂量中断,TRTDUR仍按首末日期计算,不扣除中断天数,但可在派生变量中增加TRTDURD(实际给药天数)作为补充。

四、人群标志的派生逻辑

人群标志是ADSL中最具分析意义的变量族,常见包括SAFFL(安全性人群)、ITTFL(意向性治疗人群)、PPROTFL(符合方案人群)和COMPLFL(完成者人群)。SAFFL通常定义为“至少接受过一次研究药物”,即EX域存在给药记录;ITTFL通常定义为“随机化且至少接受一次给药”,部分方案定义为“随机化即纳入”;PPROTFL则需结合方案偏离(PD)域,排除重大偏离后确定。工程化生成时,建议为每个人群标志单独编写派生程序,并输出派生逻辑说明文档,确保可审计。

ADSL 工程化生成:源域 → 派生 → 一致性校验 DM 域 AGE / SEX / RACE ETHNIC / COUNTRY RFSTDTC / RFENDTC 人口学骨架 EX 域 EXSTDTC / EXENDTC EXDOSE / EXTRT 多次给药记录 治疗暴露来源 DS / PD 域 DSDECOD / DSTERM 方案偏离记录 完成/退出状态 人群判定依据 ADSL 核心变量族 人口学 AGE / SEX / RACE / ETHNIC 分组 TRT01P / TRT01A / ARM 关键日期 RFSTDTC / RFENDTC / RFXSTDTC 治疗变量 TRTSDT / TRTEDT / TRTDUR 人群标志 SAFFL / ITTFL / PPROTFL 一致性校验 日期逻辑校验 TRTSDT ≤ TRTEDT RFSTDTC ≤ RFENDTC 分组一致性 TRT01P vs ARM TRT01A vs ACTARM 人群标志互斥 SAFFL=Y → EX非空 ITTFL ⊆ SAFFL 缺失与唯一性 USUBJID 唯一 关键变量非空 输出校验报告 / 异常清单 工程原则:每行一受试者 · 变量可追溯 · 派生逻辑文档化 · 校验自动化 USUBJID 为唯一键 · 日期统一 ISO 8601 · 人群标志独立派生程序

五、一致性校验的工程实现

ADSL生成后,必须进行系统化的一致性校验。校验可分为四类:第一类是日期逻辑校验,例如TRTSDT不能晚于TRTEDT,RFSTDTC不能晚于RFENDTC,且所有日期应落在合理的研究时间窗内;第二类是分组一致性校验,例如TRT01P与ARM应一致(若不一致需记录原因),TRT01A与ACTARM应一致;第三类是人群标志互斥与包含关系校验,例如SAFFL=Y的受试者必须在EX域有给药记录,ITTFL=Y的受试者应同时满足SAFFL=Y(若方案如此定义),PPROTFL=Y的受试者不应存在重大方案偏离;第四类是缺失与唯一性校验,例如USUBJID不能重复,关键变量(如TRT01A、SAFFL)不能缺失。

工程实现上,建议使用SAS或R编写独立的校验程序,输出异常清单(Exception Listing),每条异常记录包含USUBJID、变量名、异常值、校验规则编号和严重程度。校验规则应版本化管理,与ADSL派生程序同步更新。以下是一个简化的校验规则示例表:

规则编号 校验对象 校验逻辑 严重程度
CHK-001 USUBJID 唯一性:COUNT(USUBJID) = COUNT(DISTINCT USUBJID) 高
CHK-002 TRTSDT / TRTEDT TRTSDT ≤ TRTEDT 高
CHK-003 TRT01P / ARM TRT01P = ARM(允许方案定义的映射差异) 中
CHK-004 SAFFL SAFFL=Y 时 EX域存在至少一条给药记录 高
CHK-005 ITTFL / SAFFL ITTFL=Y 时 SAFFL=Y(若方案定义ITT为给药人群) 中
CHK-006 PPROTFL PPROTFL=Y 时 PD域无重大偏离记录 中
实践提示:ADSL的派生程序应遵循“先骨架、后拼接、再校验”的顺序。骨架来自DM域,确保不丢受试者;拼接时按USUBJID左连接各域汇总结果;校验时先跑高严重程度规则,再跑中低规则。所有派生变量应在程序头部以注释形式写明派生逻辑和源变量,便于独立复核。

六、常见工程陷阱与规避策略

在实际项目中,ADSL生成最常见的陷阱包括:第一,日期缺失处理不当,例如RFSTDTC缺失时未按方案规则回退到随机化日期,导致后续TRTSDT计算错误;第二,分组变量映射错误,例如TRT01P使用了随机化编号而非计划治疗名称,导致与ARM不一致;第三,人群标志重复计数,例如SAFFL和ITTFL同时为Y但未检查包含关系,导致分析人群重叠;第四,多域拼接时产生笛卡尔积,例如EX域多次给药记录未先汇总就直接连接,导致ADSL行数膨胀。规避策略是:在拼接前对每个源域按USUBJID进行汇总(取最小/最大日期、计数等),确保每个受试者只有一行汇总结果;在派生人群标志时,先明确方案定义,再编写独立程序,最后通过校验规则验证互斥与包含关系。

综上所述,ADSL的工程化生成不是简单的变量搬运,而是以受试者为主键、以方案定义为规则、以可追溯为原则的系统性数据整合过程。人口学、分组、关键日期、治疗变量和人群标志五大变量族各有其派生逻辑和校验要点,只有将派生与校验同步设计、同步实现,才能保证ADSL作为分析基线的可靠性和可审计性。