define系列参考资料主要:
来自CDSIC官网define模块
书籍《Implementing CDISC Using SAS An End-to-End Guide》
P21导出的空白的define EXCEL文档
网上的一些论文。
生成define可以通过多种途径,但是主要还是先通过P21生成空白模板(下面叫做define_temp_spec),然后把相关内容填到这个EXCEL空白模板里,最后再导入到P21生成define.xml,后面会专门开一个文章介绍做法。所以这个系列也是这样生成。现在DEFINE-XML的版本已经发展到2.1,但是我应该会2.0和2.1混合介绍。
define大家可以看做一系列数据和元数据的集合(注意,元数据就是元数据,跟源数据是不一样的!),然后上一篇文章讲到我们常用的SDTM/ADaM SPEC类似不完善的define,我们为什么用EXCEL来存放元数据,其实大多数数据库都能用来存放元数据,比如Oracle,但是用EXCEL是我们最常用的、最方便的一种途径。
今天介绍define.xml里面一个组成部分:TOC_Metadata(Table of Contents Metadata)
想不到自己在21年写过一篇文章,当时应该连define是什么都不知道
大家可以自己去看一下你们的公司spec模板,应该有一个专门的sheet存放你创建的各个数据集的介绍,可能叫做“TOC_Metadata”,也可能叫做“Datasets”,如下面这张图:
对应到define.xml就是长下面这样
P21导出的define SPEC长这样,sheet name叫做“datasets”,但是文章还是用“TOC_Metadata”代替
下面详细介绍一下EXCEL TOC_Metadata sheet每一个header(注意EXCEL里的每一个hedaer并没有输出到define.xml里面)
①:OID:SDTM 独一无二的OID(ODM element identifier)是variable level metadata的merge key 。可以跟后面的“name”列取一样的名字但不一样定要这样做。OID允许define.xml元素相互引用。
②:NAME: 放置在define.xml文件中域的domian的名称。
③:REPEATING:一人一条记录的就设置为"NO",比如说DM,一个人有多条记录的域就设置为“YES”。
④:isreferencedata: 有subject-level的数据设置为“NO”,对于reference data设置为"YES"比如说trial design模型数据集。
不知道是不是有人不理解什么是subject-level data?说实话,我当初也不是很理解,所以我在这里再次补充一下,subject-level data你可以理解为一个人只有一条记录的数据,像DM,ADSL里面记录的都是subject-level data。
⑤:purpose: 对于SDTM数据集应该设置成Tabulation
⑥:label:域名的标签,比如说AE就是Adverse Events.
⑦:structure: 域数据集的结构,比如每个受试者一条记录;每个受试者每次诊疗操作一条记录。
⑧:Class: domain的分类,比如Events,Interventions
⑨:archivelocationid: 域数据集存在的位置。
上面介绍了组成TOC_Metadata的元素,大家这时候再去看你们公司的SPEC,应该对里面的内容会有一个新的理解。
这边建议大家去下载一下define.xml,自己打开看一下define.xml是什么样的,然后结合我的介绍,即使你现在不需要写define,但是多看几次,每一次都会有不一样的理解。
就像我21年写的那篇文章,当时可能很多概念都不理解;但是那本书的第二章应该也看了3遍了,然后这次写文章看这些内容的时候,感觉概念都很清晰了,知道什么是什么,这可能就叫做温故而知新吧。