Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >深入解剖SDTM-Define.XML

深入解剖SDTM-Define.XML

作者头像
Setup
发布于 2020-06-02 03:19:48
发布于 2020-06-02 03:19:48
4.9K0
举报

本文小编将为大家分享并讲解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

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

小编正文

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

第一部分

第一部分

对应的Code

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

第二部分

第二部分

对应的Code

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

第三部分

第三部分

对应的Code

图1

图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来获取相应内容。

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

第四部分

第四部分

对应的Code

图1

图2

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

第五部分

第五部分

对应的Code

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

Dataset列

参数

说明

SASDatasetName="xxx"

控制数据集名称

def:StandardOID="xxx"

def:StandardOID=对应前面的Standard内的OID,获取对应的标准及版本

def:IsNonStandard="Yes"

非标准数据集需要def:IsNonStandard="Yes",标准数据集则不需要此参数

def:HasNoData="Yes"

数据集是否有数据,没有数据则def:HasNoData="Yes",该数据集不用提交

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

Description-Purpose列

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

keys列

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

Documentation列

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

Location

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

文档ItemGroupDef介绍

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

第六部分

第六部分

对应的Code

图1

图2

图3(Method)

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

Type列

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

Controlled Terms or ISO Format

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

图1

图2

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

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

Origin / Source / Method / Comment

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

Orgin参数可填项

Origin对应Source

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

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

第七部分

第七部分

对应的Code

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

结束语

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SAS程序分享号号号 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
Adam-Define.XML的自动化生成
关于SDTM-Define.XML内构造及参数(深入解剖SDTM-Define.XML),以及关于如何实现SDTM-Define.XML的自动化生成(SDTM-Define.XML自动化生成工具)。今天小编将对Adam-Define.XML内部构造进行讲解,以及介绍小编写的自动生成Adam-Define.XML的程序及原理。
Setup
2020/06/06
1.9K0
Python数据分析(中英对照)·Random Walks 随机游走
This is a good point to introduce random walks. 这是引入随机游动的一个很好的观点。 Random walks have many uses. 随机游动有许多用途。 They can be used to model random movements of molecules, 它们可以用来模拟分子的随机运动, but they can also be used to model spatial trajectories of people, 但它们也可以用来模拟人的空间轨迹, the kind we might be able to measure using GPS or similar technologies. 我们可以用GPS或类似的技术来测量。 There are many different kinds of random walks, and properties of random walks 有许多不同种类的随机游动,以及随机游动的性质 are central to many areas in physics and mathematics. 是物理学和数学许多领域的核心。 Let’s look at a very basic type of random walk on the white board. 让我们看看白板上一种非常基本的随机行走。 We’re first going to set up a coordinate system. 我们首先要建立一个坐标系。 Let’s call this axis "y" and this "x". 我们把这个轴叫做“y”,这个叫做“x”。 We’d like to have the random walk start from the origin. 我们想让随机游动从原点开始。 So this is position 1 for the random walk. 这是随机游动的位置1。 To get the position of the random walker at time 1, we can pick a step size. 为了得到时间1时随机行走者的位置,我们可以选择一个步长。 In this case, I’m just going to randomly draw an arrow. 在这种情况下,我将随机画一个箭头。 And this gives us the location of the random walker at time 1. 这给了我们时间1的随机游走者的位置。 So this point here is time is equal to 0. 这里的时间等于0。 And this point here corresponds to time equal to 1. 这一点对应于等于1的时间。 We can take another step. 我们可以再走一步。 Perhaps in this case, we go down, say over here. 也许在这种情况下,我们下去,比如说在这里。 And this is our location for the random walker at time t is equal to 2. 这是时间t等于2时,随机游走者的位置。 This is the basic idea behind all random walks. 这是所有随机游动背后的基本思想。 You have some location at time t, and from that location 你在时间t有一个位置,从这个位置开始 you take a step in a random direction and that generates your location 你在一个随机的方向上迈出一步,这就产生了你的位置 at time t plus 1. 在时间t加1时。 Let’s look at these a little bit more mathematically. 让我们从数学的角度来看这些。 First, we’re going to start with the location of the random walk at time t 首先,我们从时间t的随机游动的位置开始 is equal to 0. 等于0。 So position x at time t is equal to 0 is whatever 所以时间t处的位置x等于0是什么 the location of the random walke
数媒派
2022/12/01
5160
带你玩转 3D 检测和分割(二):核心组件分析之坐标系和 Box
我们在前文玩转 MMDetection3D (一)中介绍了整个框架的大致流程,从这篇文章开始我们将会带来 MMDetection3D 中各种核心组件的解析,而在 3D 检测中最重要的核心组件之一就是坐标系和 Box 。
OpenMMLab 官方账号
2022/04/08
2.5K0
带你玩转 3D 检测和分割(二):核心组件分析之坐标系和 Box
我用低代码结合ChatGPT开发,每天多出1小时摸鱼
GPT 出现之后,很多人推测大量的软件都会因为其出现而重写。本文主要是低代码平台与 ChatGPT 结合的一些思考以及实践。期望与各位读者一起搭上 AI 这列快车,为开发提提速~
腾讯云开发者
2023/06/05
2.5K0
我用低代码结合ChatGPT开发,每天多出1小时摸鱼
解剖 Python 类
最近想为 SQLAlchemy 封装一套类似 Django ORM 的 Model Manager,于是捡起了「流畅的 Python」开始看被我遗留的「元编程」部分。在阅读的过程中,我慢慢发现自己并没有像想象的那样对 Python 类了如指掌,在很多概念的划分上我都是模棱两可的。因此特地总结这样一篇文章,希望能够由浅至深对 Python 类进行一次全面解剖手术。
Ryoma
2022/04/02
4100
解剖 Python 类
一文掌握GSEA,超详细教程
生信宝典之前总结了一篇关于GSEA富集分析的推文——《GSEA富集分析 - 界面操作》,介绍了GSEA的定义、GSEA原理、GSEA分析、Leading-edge分析等,是全网最流行的原理+操作兼备教程,不太了解的朋友可以点击阅读先理解下概念 (为了完整性,下面也会摘录一部分)。
生信宝典
2019/05/15
54.2K1
一文掌握GSEA,超详细教程
基于XML描述的可编程函数式ETL实现
传统 ETL 主要以 SQL 为主要技术手段,把数据经抽取、清洗转换之后加载到数据仓库。但是在如今移动互联网大力发展的场景下,产生大量碎片化和不规则的数据。政府,公安等行业,传统数据库已经远远无法满足需求。数据原始文件通过文件导入到基础库,再通过大数据 HQL等技术手段提取出二级库,这中间的数据导入和 SQL ETL 的提取的过程,大量消耗 IO 性能和计算资源,在很多场景下已经是数据处理的瓶颈所在。
yuanyi928
2019/07/09
7270
基于XML描述的可编程函数式ETL实现
「Python爬虫系列讲解」十四、基于开发者工具 Network 的数据抓包技术
前文回顾: 「Python爬虫系列讲解」一、网络数据爬取概述 「Python爬虫系列讲解」二、Python知识初学 「Python爬虫系列讲解」三、正则表达式爬虫之牛刀小试 「Python爬虫系列讲解」四、BeautifulSoup 技术 「Python爬虫系列讲解」五、用 BeautifulSoup 爬取电影信息 「Python爬虫系列讲解」六、Python 数据库知识 「Python爬虫系列讲解」七、基于数据库存储的 BeautifulSoup 招聘爬取 「Python爬虫系列讲解」八、Selenium 技术 「Python爬虫系列讲解」九、用 Selenium 爬取在线百科知识 「Python爬虫系列讲解」十、基于数据库存储的 Selenium 博客爬虫 「Python爬虫系列讲解」十一、基于登录分析的 Selenium 微博爬虫 「Python爬虫系列讲解」十二、基于图片爬取的 Selenium 爬虫 「Python爬虫系列讲解」十三、用 Scrapy 技术爬取网络数据
荣仔_最靓的仔
2021/02/02
2.3K0
「Python爬虫系列讲解」十四、基于开发者工具 Network 的数据抓包技术
学懂 ONNX,PyTorch 模型部署再也不怕!
知道你们在催更,这不,模型部署入门系列教程来啦~在前二期的教程中,我们带领大家成功部署了第一个模型,解决了一些在模型部署中可能会碰到的困难。今天开始,我们将由浅入深地介绍 ONNX 相关的知识。ONNX 是目前模型部署中最重要的中间表示之一。学懂了 ONNX 的技术细节,就能规避大量的模型部署问题。
OpenMMLab 官方账号
2022/05/25
14.2K0
学懂 ONNX,PyTorch 模型部署再也不怕!
【动手学深度学习笔记】之实现softmax回归模型
设置小批量数目为256。这一部分与之前的线性回归的读取数据大同小异,都是转换类型-->生成迭代器。
树枝990
2020/08/20
8810
【css基础】如何理解transform的matrix()用法
实现炫酷的网页动画效果,自然少不了css3中transform的属性,此属性功能丰富且强大,比如实现元素的位移translate(x,y),缩放scale(x,y),2d旋转rotate(angle),倾斜变换skew(x-angle,y-angle)等,利用这些属性可以实现基本的动画效果,如果你要实现自定义和像素级别控制的高级动画效果,我们还需要深入了解它的另外一个属性——matrix,matrix就是矩阵的意思,听起来是不是很高级,你没听错实现更高级的效果,你需要了解“矩阵”,听到“矩阵”,是不是很惊慌,当初笔者学习线性代数时也甚是无聊,真不知道这门课有啥用,没想到这门课在计算机领域应用十分广泛,比如本文说的动画效果,还有现在火爆的人工智能,真是悔不当初,当时没有好好学习这么课程。
前端达人
2019/06/24
2.6K0
【Python可视化6】Seaborn之heatmap热力图
Seaborn是基于matplotlib的Python可视化库。它提供了一个高级界面来绘制有吸引力的统计图形。Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,不需要经过大量的调整就能使你的图变得精致。
1480
2020/01/23
5.3K0
salesforce零基础学习(九十九)Git 在salesforce项目中的应用(vs code篇)
https://code.visualstudio.com/docs/editor/versioncontrol
Zero-Zhang
2020/08/12
1.1K0
salesforce零基础学习(九十九)Git 在salesforce项目中的应用(vs code篇)
snmp trap日志「建议收藏」
SNMP是网络管理领域中事实上的工业标准,并被广泛支持和应用,大多数网络管理系统和平台都是基于SNMP的。SNMP采用UDP协议在管理端和agent之间传输信息, SNMP采用UDP 161端口接收和发送请求,162端口接收trap。
全栈程序员站长
2022/09/24
5.1K0
snmp trap日志「建议收藏」
TensorFlow初学者指南:如何为机器学习项目创建合适的文件架构
选自MetaFlow 作者:Morgan 机器之心编译 参与:李亚洲、蒋思源 在这篇文章中,作者根据自己的经验为 TensorFlow 初学者给出了设计文件、文件夹架构的建议。在管理自己的项目时,这会是非常有帮助的。 在机器学习中,设计正确的文件架构并不简单。我自己在几个项目上纠结过此问题之后,我开始寻找简单的模式,并希望其能覆盖大部分在读代码或自己编代码时遇到的使用案例。 在此文章中,我会分享我自己的发现。 声明:该文章更像是建议,而非明确的指导,但我感觉挺成功的。该文章意在为初学者提供起点,可能会引发一
机器之心
2018/05/07
7360
TensorFlow初学者指南:如何为机器学习项目创建合适的文件架构
XML进阶:Level 1 - XML简介
By Rob Sheldon, 2014/03/26 (首次发表于: 2012/09/20) 关于系列 本文属于进阶系列:XML进阶 自2003年以来,XML一直是SQL标准的一部分,许多动态管理视图也返回XML数据,所以,对于每一个数据库管理员而言,同样是至关重要的。现在,这个行业更多地用于由文档标记定义的数据,数据库开发人员和数据库管理员比以往任何时候都更了解XML技术和使用它的方式。 在这一系列文章中,罗伯特·谢尔顿(Robert Sheldon)将尽力把复杂的东西简单化。 注意:这一系列的文章已经可
Woodson
2018/07/18
1.6K0
利用ArcGIS_Python制作考虑路况的交通等时圈
平移和缩放地图以选择感兴趣的区域。使用绘图工具在地图上绘制多边形研究区域,然后在地图绘制点用来标记研究区域的起点,如果没绘制点则选取研究区域的中心点作为起点。
renhai
2023/11/24
5900
利用ArcGIS_Python制作考虑路况的交通等时圈
数据传输技术之XML概览
XML概览 本章将向读者介绍XML的基本知识以及概略地解释什么是XML以及如何使用XML。还要向读者说明如何将各种不同的XML表达式组合在一起,XML文档是如何创建的并如何向人们发送这种文档。 本章的主要内容包括: 什么是XML 为什么开发人员对XML感到激动 XML文档的“生命” 相关的技术 1.1 什么是XML XML代表Extensible Markup Language(eXtensible Markup Language的缩写,意为可扩展的标记语言)。XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。它也是元标记语言,即定义了用于定义其他与特定领域有关的、语义的、结构化的标记语言的句法语言。 1.1.1 XML是元标记语言 关于XML要理解的第一件事是,它不只是像超文本标记语言(Hypertext Markup Language,HTML)或是格式化的程序。这些语言定义了一套固定的标记,用来描述一定数目的元素。如果标记语言中没有所需的标记,用户也就没有办法了。这时只好等待标记语言的下一个版本,希望在新版本中能够包括所需的标记,但是这样一来就得依赖于软件开发商的选择了。 但是XML是一种元标记语言。用户可以定义自己需要的标记。这些标记必须根据某些通用的原理来创建,但是在标记的意义上,也具有相当的灵活性。例如,假如用户正在处理与家谱有关的事情,需要描述人的出生、死亡、埋葬地、家庭、结婚、离婚等,这就必须创建用于每项的标记。新创建的标记可在文档类型定义(Document Type Definition,在以后的篇幅中常简称为DTD)中加以描述。在本书的第二部分中将会学到有关DTD的更多的知识。现在,只需把DTD看作是一本词汇表和某类文档的句法。例如,在Peter Murray-Rust的Chemical Markup Language (化学标记语言,简写为CML)中的MOL.DTD文件中描述了词汇表和分子科学的句法:其中包括chemistry(化学)、crystallography(结晶学)、solid state physics(固体物理)等词汇。它包括用于atoms(原子)、molecules(分子)、bonds(化学键)、spectra(光谱)等的标记。这个DTD可与分子科学领域中的许多不同的人共享。对于其他领域也有其他的DTD,用户还可以创建自己的DTD。 XML定义了一套元句法,与特定领域有关的标记语言(如MusicML、MathML和CML)都必须遵守。如果一个应用程序可以理解这一元句法,那么它也就自动地能够理解所有的由此元语言建立起来的语言。浏览器不必事先了解多种不同的标记语言使用的每个标记。事实是,浏览器在读入文档或是它的DTD时才了解了给定文档使用的标记。关于如何显示这些标记的内容的详细指令是附加在文档上的另外的样式单提供的。例如,考虑薛定格(Schrodinger)方程:
张哥编程
2024/12/21
3330
ConstraintLayout优势在哪
ConstraintLayout是Google IO 2016引入的一个全新布局Layout,隶属于Jetpack项目(即包含在androidx包里),目前release最新版本是1.1.3,在build.gradle里添加依赖即可,如下:
allanlin
2020/08/21
3.3K0
十分钟掌握数据可视化基本操作(下)
和之前学习Pandas一样,我们继续以宝可梦数据集作为学习可视化的例子,进而梳理Python绘图的基本操作,主要涉及seaborn以及matplotlib两个可视化库。
老肥码码码
2020/05/13
7330
相关推荐
Adam-Define.XML的自动化生成
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档