记得当初收到过CDISC发的一个邮件,说是2023/3/15开始FDA开始只接受define2.1版本的递交 , define2.0的版本就不接受了。
define2.1相比define2.0改动挺大的,今天开始尝试用程序从零生成一份跟CDISC官网上一致的define2.1文件。CDISC官网上的例子自己可以去对应的模块下载看看是什么样。同时CDISC官网上提供生成define的code,但是是2.0版本的,而我们要生成2.1版本的define,所以需要对程序进行一些改动。
同时生成define,很多公司可能借助P21,而我们这个系列某些部分可能也需要借助P21。用到的数据和文件来自《sdtm-adam-pilot-project-master》
第一部分:
我们首先要生成上面的这一部分内容,一块是右上角关于define-xml版本相关的东西,第二块是中间的关于方案的描述。可以看到两个版本的差距还是很大的。
我们先把XPT数据集导入到P21生成一份define spec,
下面是P21生成的,我们今天要输出的第一部分就来自Define这个sheet,同样的,我们填上自己的方案信息,同时sheet继续延用原本的“study”名称
那么关于第一部分的信息我们已经准备好了,那么如何通过程序输出呢?想法还是通过P21先生成一份define.xml,然后看源信息
打开生成的define.xml文件,红框部分有的为空,是因为我没对P21生成的define spec进行填写。我们需要的是define.xml文件后面的代码,然后复制到我们的程序里面去。
用记事本打开P21生成的define文件,这部分内容就是我们需要的东西,里面的项目名称、项目描述、用的IG版本,可以用宏变量代替,这样以后直接读取我们工作中的SPEC,就能生成对应项目的define这一部分的内容了。
复制到程序里面之后,直接运行这部分的内容,输出define,输出如图
可以看到跟官网上的那个例子差不多,就是本来应该在右上角的这部分内容跑到中间了,这是一个很奇怪的地方,了解的读者欢迎指教。
然后看到例子上加了很多标准,这个我们在<def:Standards>里面加上就可以了
输出如下:
同时我们也看到Documentation例子上有描述一些东西,这个我们可以在<def:Standards>里面加上comments
可以看到对应的comments成功添加
所以第一部分算是完成了,当然了里面的很多东西都可以替换成宏变量,比如用的标准,这个需要提前写在我们工作中用到的SPEC里面。
很多公司也是利用P21生成的define SPEC,然后将这个SPEC填上对应的元参数。
后面的内容可能会更加复杂,涉及到CRF 字段的定位,CT的mapping那些东西,所以这个系列可能很久才会更新。感兴趣的可以自己研究一下。