前面的篇文章关于SDTM编程的一些想法(1) --Trial Design、DM开了个头,开始介绍SDTM数据集的编程思路,内容涉及了Trial Design、Special Purpose中的DM。这篇文章介绍Special Purpose中的CO数据集的编程注意点。
关于CO数据集的内容,临床试验CRF中Form介绍23:Comments(CO)数据集相关介绍了CO数据集收集的信息、信息来源以及一些变量。CO数据集的注释来源主要有两块:
- 在CRF中,与其他SDTM数据集信息一起收集的注释;
- 在CRF中,单独的页面,收集的注释。
COVAL
CO数据集中的Topic变量为COVAL,记录注释的信息,这个变量在记录中不能为空。当注释文本超过200 个字符时,注释的前200 个字符将位于COVAL 中,然后COVAL1 中,存储接下来的200 个字符,类似延伸到COVALn。对于COVA变量长度过长的情况,各公司一般都有相应的宏进行处理,也可以进行手动编程。这里有一个注意点,就是第200个字符处如果单词截断如何处理。一般完善的宏都会考虑这种情况,将截断的单词放到下一个COVALn变量中;手动编程处理时,两种处理方式的案例都遇到过。下面分享一下,手动编程处理的代码:
***考虑不考虑单词截断;
data co;
set co_;
length coval coval1-coval4 $200;
if length(coval_) >200 then do;
put "The length of COVAL is greater than 200!";
coval = substr(coval_,1,200);
coval1 = substr(coval_,201,200);
coval2 = substr(coval_,401,200);
coval3 = substr(coval_,601,200);
coval4 = substr(coval_,801,200);
end;
else coval = coval_;
run;
Rdomain
Rdomain,关联域名的缩写,对于与其他SDTM数据集信息一起收集的注释记录,填写对应的域名;对于单独的页面,收集的注释,Rdomain变量为空。
IDVAR 和 IDVARVAL
CO编程另一个需要注意的是IDVAR(标识变量) 和IDVARVAL(标识变量值)。对于CRF中单独页面收集的注释,与其他SDTM域没有关联,这两个变量值为空,没有什么需要注意的地方。
对于与其他SDTM数据集信息一起收集的注释,这两个是用来表示CO数据集记录与其他数据集记录之间的联系的,需要有值。通常IDVAR的值为“--SEQ”、“--GRPID”,IDVARVAL的值为与注释相关联的其他SDTM数据集记录的--SEQ的变量值。为获取IDVARVAL的值,需要让CO数据集与相关联的数据集进行拼接,而拼接需要考虑的是关键变量的选取。
拼接的关键变量我们通常选用USUBJID、COSPID(--SPID)。相关联的记录对应的受试者(USUBJID)肯定是一个人,所以USUBJID为关键变量。而注释信息与其他数据集相关联的信息是一起收集的,而--SPID通常由收集的Folder、Form信息生成,所以对于两个相关联的记录的--SPID变量值是相同的,--SPID可以作为关键变量。
除了这两个变量,拼接时可能需要新增关键变量。这是由于原始数据集一条记录会生成多条SDTM数据集记录,这些记录的--SPID变量值可能相同,所以需要新增关键变量进行区分,从而准确定位CO数据集记录与其他数据集记录的关联关系。下面我给出一个拼接代码的示例:
proc sql noprint;
create table co_ie as
select a.*, strip(put(ieseq,best.)) as idvarval length = 40
from co as a left join sdtm.ie as b
on a.usubjid = b.usubjid and a.cospid = b.iespid;
quit;
以上就是SDTM CO数据集编程的一些注意点,若有疑问,欢迎评论区讨论。接下来会持续介绍其他数据集。