深入解剖SDTM-Define.XML

Posted SAS程序分享号号号

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入解剖SDTM-Define.XML相关的知识,希望对你有一定的参考价值。


本文小编将为大家分享并讲解SDTM标准define.xml的内部构造及参数介绍。以便大家制作SDTM的define.xml或参照define.xml制作适合自己的“ 数据说明文件”。


前情


日前,小编阅读了《药物临床试验数据递交指导原则(征求意见稿)》正文第 99 “数据说明文件一般为可扩展标记语言” 。于是小编就去 CDISC 官网下载了SDTM与Adam的最新的 define V2.1 的示例及 define2-1.xsl ,并对SDTM的define.xml进行了研究。于日前开发并完成了一套生成SDTM的define.xml的工具(SAS宏),本文将结合官方提供的《CDISC Define-XML Specification》进行讲解。


官方define.xml示例



define.xml背后的Code


深入解剖SDTM-Define.XML


CDISC官方提供了define.xml,并同时也提供了define2-1.xsl,define2-1.xsl作为stylesheets是一个必不可少的文件。XML的展现及内部取值规则均在stylesheets中。本文介绍define.xml参数一切均是基于官方提供的define2-1.xsl(此文件不做任何更改)。



小编正文


小编将官方提供的define.xml打算分为七部分进行拆分讲解。


第一部分


第一部分


深入解剖SDTM-Define.XML



对应的Code


深入解剖SDTM-Define.XML


如上,第一部分的四个参数分别对应的位置,如需要修改这部分信息则在相应的位置进行修改,小编个人认为,一般只需要修改创建的XML的时间 (CreationDateTime)



第二部分


第二部分



深入解剖SDTM-Define.XML


对应的Code


深入解剖SDTM-Define.XML



第二部分,主要内容是对项目进行描述,填入项目的基本信息。相应参数的位置如上图,箭头位置一一对应。



第三部分


第三部分


深入解剖SDTM-Define.XML


对应的Code


深入解剖SDTM-Define.XML

图1


深入解剖SDTM-Define.XML

图2


值的来源
Standard 由Name+PublishingSet+Version组成
Type 取Type
Status 取Status
Documentation 对应def:CommentOID指定名称节点下的内容


此部分引入数据标准,譬如:采用SDTM版本,受控术语版本等。如上,XML中四列值的来源及取值如上表。在define.xml编码中,备注内容往往储存在“COM.”节点下。譬如 Documentation 列下的值是通过def:CommentOID指定的位置,会在文件内检索指定OID的位置,并提取相应的值。在上图1中,每个<def:Standard OID=“”>都有指定一个OID,譬如,在后面引用前面标准时,会通过此OID来获取相应内容。

深入解剖SDTM-Define.XML


如上,为CDISC官方对此部分参数及参数填写的一个说明及要求。关于官方对 def:Standard Element 的描述及介绍参见文档第 66、67 页。(文档下载方式见文章底部)



第四部分


第四部分


深入解剖SDTM-Define.XML



对应的Code


深入解剖SDTM-Define.XML

图1

深入解剖SDTM-Define.XML

图2

此部分为XML引用外部文档,其中aCRF(Annotated CRF)是必须存在,补充文档的陈列并显示是在<def:SupplementalDoc>节点下进行控制的。其中leafID=“xxx”会在XML中检索指向的ID,进而获取<def:title></def:title>内的文件名,xlink:href=“xxx”指定文档PDF的位置和文件名。观察上图1、图2的每个文档的引用及写法都很用规律。这里不做过多的介绍。



第五部分


第五部分


深入解剖SDTM-Define.XML

对应的Code


深入解剖SDTM-Define.XML


此部分为数据集部分,针对项目中的数据集做了一个说明与介绍。如上图Code部分,每一个数据集都是在一组 <ItemGroupDef></ItemGroupDef> 之间。下面小编就来介绍一下这部分主要参数。此部分小编将从XML展现的列的角度进行讲解。




Dataset列


深入解剖SDTM-Define.XML


参数 说明
SASDatasetName="xxx" 控制数据集名称
def:StandardOID="xxx" def:StandardOID=对应前面的Standard内的OID,获取对应的标准及版本
def:IsNonStandard="Yes" 非标准数据集需要def:IsNonStandard="Yes",标准数据集则不需要此参数
def:HasNoData="Yes" 数据集是否有数据,没有数据则def:HasNoData="Yes",该数据集不用提交


针对Dataset列,如上图标记处,有多种显示,控制相关显示参数如上表。



Description-Purpose列


深入解剖SDTM-Define.XML

此部分相对来说是很简单的,取值和参数位置都十分固定。如上图,各列所对应的取值位置是十分直观的。


keys列


深入解剖SDTM-Define.XML


Keys列的取值则是通过<ItemRef KeySequence='xx'> 参数控制的,会按照填写的顺序依次抓取对应的变量,填充至Keys列中。



Documentation列


深入解剖SDTM-Define.XML


深入解剖SDTM-Define.XML


Documentation列的取值,和前面Standard中的Documentation取值方式一样,都是通过def:CommentDef对应的OID进行值的获取。


Location


深入解剖SDTM-Define.XML


此部分由如上截图圈起来部分控制。参数说明见上截图。



文档ItemGroupDef介绍

深入解剖SDTM-Define.XML

深入解剖SDTM-Define.XML

深入解剖SDTM-Define.XML


如上,是官网文档中针对<ItemGroupDef></ItemGroupDef>的介绍。在此元素下还有元素<ItemRef>。详情见下图

深入解剖SDTM-Define.XML

深入解剖SDTM-Define.XML


第六部分


第六部分

深入解剖SDTM-Define.XML


对应的Code


深入解剖SDTM-Define.XML

图1

深入解剖SDTM-Define.XML

图2


深入解剖SDTM-Define.XML

图3(Method)

这部分涉及到的参数也是挺多的,如上各列对应的取值及取值位置。



Type列


深入解剖SDTM-Define.XML

深入解剖SDTM-Define.XML


Type列,相对来说类型就更加丰富了。Define XML中变量的类型进行了细分,在SAS数据集中类型只有数值型和字符型俩种,而这里就不止了。



Controlled Terms or ISO Format


深入解剖SDTM-Define.XML

深入解剖SDTM-Define.XML


深入解剖SDTM-Define.XML


关于受控术语,也是通过指定的OID进行关联与值。在XML中 <CodeList></CodeList> 是用来存储受控术语。关于这部分内容的结构也是比较固定的。打开XML观察一下几种类型受控术语的写法,很容易掌握。


深入解剖SDTM-Define.XML

图1


深入解剖SDTM-Define.XML

深入解剖SDTM-Define.XML

图2


如上图,三种类型的受控术语的展现及对应的Code。下面开看看官方文档对这部分的描述。

深入解剖SDTM-Define.XML

深入解剖SDTM-Define.XML

深入解剖SDTM-Define.XML

深入解剖SDTM-Define.XML

深入解剖SDTM-Define.XML

最后一张图为外部词典的引用。参数大多同CodeList一样。



Origin / Source / Method / Comment



Origin / Source / Method / Comment可以分为四个参数,四块内容整合在一列中。下面先来看看Origin与Source。这俩项的填写比较固定


深入解剖SDTM-Define.XML

Orgin参数可填项


深入解剖SDTM-Define.XML

Origin对应Source

深入解剖SDTM-Define.XML


这俩项的内容是存储在<def:origin>元素内。如果需要标注来源于aCrf多少页,同时可以超链接点击进入并自动跳转到指定页面,需要<def:DocumentRef>中控制,譬如上图。关于Method,则是变量衍生计算的规则或公式等,在XML中也会将这块内容单独列出。

深入解剖SDTM-Define.XML


深入解剖SDTM-Define.XML


Method的写法结构很简单,不做过多的介绍了(通过MethodOID去定位获取)。最后就是Comment,这部分存放备注等内容,通过def:CommentOID去定位与获取。



第七部分


第七部分


深入解剖SDTM-Define.XML



对应的Code


深入解剖SDTM-Define.XML


深入解剖SDTM-Define.XML


Define2.1的新结构:VLM结构;这部分内容大家可以看参考文档。语法结构如上。都是通过OID进行获取。几处关键变量参数如下图。

深入解剖SDTM-Define.XML

深入解剖SDTM-Define.XML

深入解剖SDTM-Define.XML


结束语


关于SDTM-Define.XML的基础知识及参数说明今天就介绍到这里,不难发现,如果我们不借助其他工具其实也能通过XML的语法来写Define,但是这个工作量是巨大的。那么如何能够高效快捷的生成Define.XML呢,或者只用在原有的SDTM Spec文件的基础上改一改,运行一下程序自动生成Define呢,理论上是可以的,实践上问题不大。基于此点,小编利用SAS宏借助设定的Excel模版开发并完成了一套自动化生成SDTM Define的工具。如有兴趣,可以返回文章顶部或顶部原文阅读,查看Define.XML专辑。




文件下载




深入解剖SDTM-Define.XML
深入解剖SDTM-Define.XML
深入解剖SDTM-Define.XML



SAS编程有那么多技巧,你却还在等灵感乍现?!


以上是关于深入解剖SDTM-Define.XML的主要内容,如果未能解决你的问题,请参考以下文章

JVM 解剖公园(18): 标量替换

JVM 解剖公园(15): 即时常量

JVM 解剖公园:JNI 临界区与 GC Locker

SWF文件结构大解剖

想学好C语言这些关键字不能少(深度解剖)

超详细的C进阶教程!深度解剖C语言自定义类型