CDISC 标准(五)——ADaM 标准概述

总结

  • ADaM 标准实为了让临床试验统计分析人员梗快速、标准准确地进行统计分析和制作报表的标准;
  • ADaM 主要分为三类数据集:ADSL,BDS 和 OCCDS;
  • 详细梳理了三类数据集的特点以及对应的重点变量。

ADaM 数据集是做什么用的?

ADaM,Analysis Data Model,顾名思义,为了更加方便、标准且准确地进行统计分析,输出相关统计图表的标准模型。

临床实验的流程包括:实验设计,得到原始数据 → 经过 SDTM 标准化得到标准数据 → 将 SDTM 标准数据转化为 ADaM 标准数据 → 使用 ADaM 数据集生成统计图表 → 撰写药物上市申请文档。

在这个工作流程中:

  • SDTM 标准更偏向于数据标准化;
    • 不同实验的数据集,结构内容和变量基本大部分相同;
    • 如果直接从 SDTM 数据集创建统计图表,需要增加大量计算语句,非常冗杂并且容易出错;
  • ADaM 标准更偏向于数据的可分析性;
    • 数据集的变量可以根据实验的不同进行调整,更加灵活;
    • 更加方便快捷、标准、准确地编写统计图表生成的语句。

跟 SDTM IG 文件类似,ADaM 也有对应的 IG(Implementation Guide) 文件,在 CDISC 的官网就可以找到

ADaM 有五大基础原则

  • 清晰且无歧义,Clearly adn unambiguously,有标准则需要与标准一致,如果没有标准就需要描述清晰;
  • 可追溯性,Traceability,每个变量,每条记录的来源,都必须能从对应的 SDTM 数据集中找到;
  • 能够被常用的统计软件 SAS 使用;
  • 必须具备 metadata 元数据,即必须把 ADaM 中每个变量的意义放在一个元数据文件中;
  • 即分析性 analysis-ready,使用最少的编程工作就可以完成分析任务;ADaM 数据可以只包含分析所需要的数据,如果收集了一些原始数据并不会用于分析中,那么就不需要纳入 ADaM 数据集中。

可追溯性

可追溯性非常重要,它要求所有数据有依可查,而不是凭空产生。这样可以方便分析人员和审阅者查看数据的产生过程,排除可能存在的异常数据。可追溯性分为以下两点:

  • Metadata 层面:ADaM 中的变量,如果是在 ADaM 编程过程中创建出来的,必须通过说明文档,说明计算产生过程;
  • Datapoint 层面:ADaM 中的某条记录,可以知道是从 SDTM 中的哪条记录而来的。常用的方法就是保留 SDTM 中的 SEQ 变量。

变量的存在度

和 SDTM 相同,ADaM 数据集标准对变量也有存在度的要求。回忆一下,SDTM 中的三种分别是 REQ 必须存在, EXP 期望存在, PERM 允许存在;而 ADaM 中的三种分别是:

  • Required:必须存在
  • Conditionally Required:条件性必须,即在某些特定条件下这些变量的存在是必须的
  • Permissible:允许存在

重要的数据结构 ADSL、BDS 和 OCCDS

ADaM 标准中有以下这三种类型的数据结构,且这三种数据集是互斥关系的,也就是说每个 ADaM 数据集能且只能属于他们三个其中的一类。从实际情况来说,BDS 结构最多。

如果一个 SDTM 数据集中的数据需要用于统计分析,就需要创建对应的 ADaM 数据集,命名方法是字母 AD 加上所用的主要 SDTM 数据集的名称,举例:

  • LB → ADLB
  • VS → ADVS

ADSL,全称 Subject Level Analysis Dataset

  • 代表每个患者一条记录的记录结构(类似 SDTM 中的 DM 数据集)
  • 一般都将 DM 数据集先 set 进来,再增加其他变量;
  • ADSL 结构的数据集在一个实验中只有一个,名称就叫 ADSL。

OCCDS,全称 Occurrence Data

  • 发生数据,常常是指 SDTM 标准下的 Events 结构类的数据;
  • 把发生的事件按照事件的层级列举出来,比如副作用 AE 数据集中,需要 AELLT AEHLT AEHLGT 和 AESOC 来表示副作用所属的最高层级,而经过 ADaM 处理后依然需要保留;
  • OCCDS 的 IG 文件是在压缩包中单独列出来的;

BDS,全称 Basic Data Structure

  • 基础数据结构
  • 一般会将 SDTM 标准下的 Findings 和 Findings About 的数据生成 BDS 结构的数据集;
  • 基本要求:每个患者,每个参数,每个时间点,一条记录,举例:和 SDTM 下的 LB 数据集结构类似。

ADSL 的变量梳理

下面进行 ADSL 重点变量的梳理:

  • STUDYID, USUBJID, SUBJID, SITEID,都是之前很熟悉的变量了;
  • SITEGRy,SITEGRyN
    • IG 文件中,变量名后面所跟的小写字母代表实际中的数字,比如 SITEGR1, SITEGR2;
    • 多中心的临床实验,可能部分中心(SITE)可以分类到一个组中,就用 SITEGRy 作为分组变量,而 SITEGRyN 作为分组序号方便排序;
  • AGE, AGEU:年龄相关,不赘述;
  • AGEGRy,AGEGRyN:年龄分组
  • SEX,RACE:DM 提到的变量,不赘述;
  • FLAG 相关变量,用 Y 或者 N 来表示是否成立,最重要的是:
    • SAFFL:如果这名患者,至少吃过一次药,就叫做 safety population,这时 SAFFL 取值为 Y;
    • ITTFL:Inten-To-Treat Population,是否有意向参加这个实验
  • 和实验 TRAETMENT 相关的变量
    • ARM,ACTARM:DM 里的分组;
    • TRTxxP,TRTxxPN:计划中这名患者所参与的临床实验的分组;使用 xx 可以作为分时间段,来记录患者所参与的分组,常见于 crossover-design 的实验设计;
    • TRTxxA,TRTxxAN:实际中患者所参与的实验分组
  • 和实验时间 TREATMENT TIMING 相关的变量
    • TRTSDT:实验的开始日期,数值型
    • TRTSTM:实验的开始时间,数值型
    • TRTSDTM:实验开始的日期和时间,数值型
    • TRTSDTF, TRTSTMF:如果实验的开始日期和时间是填补补充的,需要标示出来;
    • TRTEDT, TRTETM, TRTEDTM:最后一次参与实验暴露的日期和时间;
    • TRxxSDT:第一段、第二段等多段实验的截止日期,如果只有一段,不需要这个变量;

整个研究的时间范围是从患者签署同意意向书到最后一次随访,而 TREATMENT 的全程是从第一次服药(暴露)到最后一次服药(暴露)的时间段。这个时间段要比前者短。

  • EOSSTT:表明一个患者在结束研究的时候是什么状态,包括 COMPLETED,DISCONTINUED,ONGOING
  • EOSDT:患者什么时候结束的研究;
  • DCSREAS:什么原因,不再参与这个实验;如果已完成实验,就标记为 Null;
  • EOTSTT:表明一个患者在结束 TREATMENT ,停止吃药是什么状态;
  • DCTREAS:这名患者为什么停止接受 TREATMENT(停止吃药)。
  • DTHDT:患者死亡的日期;

BDS 的变量梳理

BDS,Basic Data Structure,重要的变量比 ADSL 要少一些。

  • 通用变量:STUDYID, USUBJID, SUBJID, SITEID
  • ASEQ:相当于 SDTM 中的 SEQ 变量一样,做完 BDS 数据集后,在每一个患者 ID 之内,从 1 开始依次累加;
  • TRTP,TRTA:实验设计分组和实际分组;
  • ADT,ATM,ADTM,ADY:检测日期和时间;
  • ASTDT,ASTMM,ASTDTM,ASTDY:检测开始的日期和时间;
  • AENDT,AENDM,AENDTM,AENDY:检测结束的日期和时间;
  • AVISIT,AVISITN:就是 Findings 数据集的 VISIT 和 VISITNUM,表示这是患者的第几次来访;
  • ATPT,ATPTN:Analysis timepoint,如果一次来访需要做多次检测,那么 AVISIT 和 AVISITN 的数据是一样的,但是 Timepoint 不同;
  • PARAM,PARAMCD:参数,对应 TEST 变量,即检测的具体内容,形式往往是“测试名称(标准单位)”;
  • PARAMN:对 PARAM 进行标号,方便排序;
  • PARCATy,PARCATyN:类别,对应 LBCAT;
  • AVAL,AVALC:代表测量的结果,LBSTRESN 和 LBSTRESC;
    • 如果测量结果不是数字,而是一串字符,就可以只存储在 AVALC 中,AVAL 留空。
  • BASE 和 BASEC:代表基准线值,和 SDTM 储存方式不同(后者通过 flag 存储);
  • CHG:测量值减去基准值;
  • PCHG:percent change from baseline,和基准值相比的百分比变化;如果基准值是0,PCHG 设为缺失值;
  • SHIFTy,SHIFTyN:表示从基准线值到现在测量值的状态对比,比如 low to high 或者 normal to high,类似这种情况;这两个变量为一对一关系;
  • CRITy,CRITyFL:用用户自定义的某些标准和特点,如果符合这一特点,就把 CRITyFL 变量设置为 y,CRIT 变量则要写清楚是什么标准;
  • DTYPE:如果变量不在原来的变量中,而是新生成的,按照什么方法生成的,要用 DTYPE 简明地讲清楚;
  • ANRIND,BNRIND:分别是当前测量值和基准线测量值时,测量结果是高或者低,可以用这两个变量制作出 SHIFT 和 SHIFTN 变量;
  • ABLFL:Baseline Record Flag,如果纳入了 SDTM 数据集中没有的新纪录,就需要我们自己手动创建 ABLFL 标识基准线值;
  • ANLzzFL:分析数据集,如果这条记录符合某一个要求,就可以标记为 Y;
  • SRCDOM,SRCVAR,SRCSEQ 表示 datapoints 级别的可追溯性
    • SRCDOM:数据是从哪个 SDTM 数据集来的;
    • SRCVAR:从哪个变量来的;
    • SRCSEQ:从哪个记录来的。

OCCDS 的变量梳理

OCCDS 应用的场景并不多,一般只用在 AE 的副作用数据集中。

Snipaste_2023-05-03_19-12-08.png

学到这里,头已经有一点点晕了,容我稍微缓一缓……