感觉上海解封有望了,现在迫不及待地想出去跑一圈,看看花花草草,还有广阔的天地。还要买一只白切鸡,买两罐啤酒,买汉堡炸鸡,买烧烤,大吃特吃,吃饱喝足后继续自己的跑步计划,两个月没跑步了。
---------------------------------------------
SV,记录的是受试者的实际访视,我记得我好像写过两次关于SV的东西,就不多讲了,这次就讲讲我了解的关于SV的两种做法。
第一种:按照从小到大的顺序设置VISITNUM,VISIT。
比如一个肿瘤试验设计是如下流程:
筛选期-周期1-周期2-周期3-周期4.......治疗结束-安全性随访-生存随访
SV(TV)的VISIT可以直接设置成上面的访视,然后对应的VISITNUM是1,2,3,4,5........(按照排序升序)
注意:VISITNUM不是方案定义的,也不是IG上定义的,我的意思是它的取值不是一定要取多少,这个就看你自己设置的样式,但是有一点,就是VISITNUM一定要正确反映试验的流程。
你不能说治疗结束的VISITNUM是1,然后筛选期的VISITNUM是100,这明显不符合逻辑的。
当我们按照升序从小到大写完TV的时候(一般先写TV),获取所有RAW数据集(有些数据集不需要)的访视(同时根据方案确定访视有哪些),DM在设计CRF的时候,访视的名称一般是InstanceName或者FOLDERNAME或者就是VISIT。(下面以InstanceName举例)
写好TV之后,VISIT和VISITNUM都有了,然后我们就要写SV了,同理也是获取所有raw数据集(一般是Finding类的数据集,有些数据集不需要)的InstanceName,然后获取每个InstanceName的最大最小日期分别做成SVENDTC和SVSTDTC,做法跟RFPENDTC有些类似。
所以大家在写的时候,把所有数据集set在一起,然后利用proc sql 和group by usubjid,InstanceName获取SVENDTC和SVSTDTC。
但是今天我写的时候,发现这种做法有个缺陷,就是比如某个人某个访视所有检查项目都没做,那么这个人这个访视的VISIT和VISITNUM在SV中是缺失的。那么我们后面写PE,VS,LB这些domain的时候,根据日期去SV中匹配VISIT和VISITNUM就是空的。
即使你说我根据InstanceName,同样也匹配不到SV中的信息,因为SV中根本就没有,所以你还得再去匹配TV,这样明显太繁琐了。
所以一开始我说的SV的两种写法,同时也是讲后面我们写Finding类的数据集如何获取VISIT和VISITNUM。这也是一个面试题,会问你平时公司是怎么处理VISIT和VISITNUM,我了解之后,不同公司做法确实不太一样。
第二种写法:
一般RAW数据集都有InstanceName,比如周期1-周期2-周期3-周期4,那我就不按从小到大的顺序,比如筛选期我设为1,然后其他周期我设置一种算法,比如周期1的VISITNUM设为10*1,周期2的VISITNUM设为10*2......然后治疗结束访视的VISITNUM我设为999,安全性随访的VISITNUM我设为999,生存随访的VISITNUM我设为9999。
这样相当于将方案中定义的每个访视的VISITNUM固定下来了。不像上面那个从小到大设置VISITNUM的方法,假设周期28的VISITNUM是34,然后你发现你漏写了一个访视,把周期28一挤,VISITNUM又变成了35了,就是变来变去很麻烦,像随风飘动的蒲公英,没有自己的位置。
同时这样固定VISITNUM也有一个好处,就是你在后面写Finding类的数据集,可以直接根据InstanceName算出VISITNUM,也就是说你用这种方法求VISIT和VISITNUM,不再受TV的VISITNUM影响(但是要保持一致),而是受InstanceName影响。同时对于某个访视未做的情况,我们可以直接根据InstanceName求出VISITNUM,而不是像第一种方法那样可能得连接SV甚至到TV。
总结一下,第一种从小到大安排VISITNUM的方法,TV,SV和其他数据集的VISIT和VISITNUM都是联动的,TV变了,其他也跟着变了。
第二种方法:TV一开始就根据方案和我们设置好的算法固定好了VISIT和VISITNUM了,后面求VISITNUM和VISIT就受日期和InstanceName影响。
按理说标准的做法是根据日期匹配SV里面的VISITNUM和VISIT,当然具体怎么做,还是根据你们公司的通用做法。
对于某个人某个访视所有检查未做的情况,可能有人好奇既然这个这个人这个访视所有检查未做,那VISITNUM和VISIT可不就是为空吗?讲起来好像确实没错,但是我看IG上对于未做的情况,依然赋予了VISITNUM。
而且在后面写listing的时候,有时候如果只根据XXdtc排序,输出的报表并不是按时间顺序排序!莫名其妙的就给你顺序颠倒了,即使你数据集里面看起来是正常的,可输出的时候就是顺序不对,这时候一般加上VISITNUM就可以解决这个问题。
如果你未做的VISITNUM是空的,一排序,顺序更乱了,所以最好还是给他们赋上VISITNUM和VISIT