美文网首页
临床试验-肿瘤:从RECIST 1.1出发梳理肿瘤BOR的确认

临床试验-肿瘤:从RECIST 1.1出发梳理肿瘤BOR的确认

作者: 野藤_ | 来源:发表于2022-11-23 16:14 被阅读0次

    在疾病缓解 (CR+PR) 作为主要终点的非随机肿瘤试验中,是需要确认CR和PR的,这篇文章从RECIST 1.1出发梳理肿瘤BOR的确认。

    文章共有3部分,第1部分是RECIST 1.1中有关BOR确认的描述以及相关内容的补充,第2部分是肿瘤BOR确认练习的说明与演示,第3部分是BOR确认的SAS程序分享。

    希望文章的介绍以及配套练习,能够帮助读者进一步理解和掌握肿瘤BOR的确认。完成练习后,大家完全可以3秒内判定BOR_temp

    欢迎关注,SAS茶谈,后台回复:BOR,获取配套练习文件。配套练习说明,详见文章第2部分。如果练习过程中发现任何问题或有任何疑惑,欢迎留言、私信反馈。

    1. RECIST 1.1 简述

    RECIST 1.1,Response Evaluation Criteria in Solid Tumours (Version 1.1),实体瘤疗效评估标准 1.1版。

    实体瘤评估的具体过程是,在基线选定一定数量的靶病灶与非靶病灶,计算所有靶病灶的直径总和。在基线后的各时点,也会计算靶病灶的直径总和,并与基线相比较,研究人员评估该时点靶病灶的疗效;同时,研究人员也会定性评估非靶病灶的疗效,观察并记录是否有新病灶出现。

    结合基线后各时点的靶病灶、非靶病灶疗效以及是否出现新病灶,研究人员评估出受试者在该时点的总体疗效 (Time point response),综合所有时间点疗效进而评估出最佳总体疗效 (Best overall response, BOR)

    这就是RECIST 1.1的整体脉络,完整内容参考临床试验-肿瘤:RECIST 1.1 中文版 (v1.0)

    1.1 时间点疗效 (Time point response)

    在基线选定靶病灶与非靶病灶后,基线后各时点会基于靶病灶、非靶病灶以及新病灶的观察结果,评估肿瘤的时间点疗效,评估规则如下:

    时间点疗效通常由现场研究人员以及独立中心审查人员提供,不需要Sponsor单独衍生。这一部分内容通常会在SDTM RS中进行处理,具体参考临床试验-肿瘤:从RECIST 1.1出发梳理肿瘤相关SDTM数据集 (TU\TR\RS)

    1.2 最佳总体疗效:所有时间点 (Best overall response: all time points)

    一旦获取受试者所有时间点疗效,就可以综合确定最佳总体疗效。直观地讲,最佳总体疗效就是所有时点中疗效最好的评估。

    疗效比较的优先级如下:

    CR > PR > SD > PD > NE

    举个例子,如果基线后4个时点疗效为PR-SD-SD-PD,在疗效不需要确认的情况下,PR为最佳总体疗效。

    在一些试验中,我们并不能通过简单比较时间点疗效来获取BOR。RECIST 1.1将BOR的获取分为2类:一类是CR和PR不需要确认,另一类是CR和PR需要确认。(RECIST 1.1, 4.4.4节

    1. Confirmation of complete or partial response IS NOT required
    2. Confirmation of complete or partial response IS required

    如果疗效不需要确认,就可以直接选择基线后最好的那一个时点疗效作为BOR。如果需要确认,时点疗效并不能直接用于BOR的确定。

    一般情况下,现场研究人员只会提供受试者的时间点疗效,不会提供最佳总体疗效,BOR需要单独衍生。独立中心审查人员,除了提供时间点疗效外,可能会提供BOR,这种情况下,不需要单独衍生。通常,BOR的处理是在ADaM ADRS中进行。

    1.3 确认 (Confirmation)

    RECIST 1.1 的 4.6.1节,提到肿瘤疗效需要确认的考量:在疾病缓解 (CR+PR) 作为主要终点的非随机试验中,需要确认CR和PR,以确保疾病缓解不是测量误差的结果。除了CR和PR,原文中提及SD也需要确认。

    一些研究可能基于试验本身的考虑,PD也需要确认,具体情况须参考Protocol与SAP的要求。这种情况下,一般也会说明疗效评估是基于 “Modified RECIST 1.1”。在RECIST 1.1原文中,PD是不需要确认的,如果发生PD,结合实际情况,可能会暂停既定的疗效观察,为受试者采用新的疗法。

    在一些免疫疗法中,肿瘤可能会出现假性进展,直接按照RECIST 1.1标准判定为PD可能会错失后续比较好的疗效。这时会采用iRECIST标准,在满足一定条件下,会对PD进行跟踪确认。这篇文章的内容是基于RECIST 1.1的,iRECIST 标准后续再做介绍。

    1.4 如何确认?

    1.4.1 CR与PR的确认

    CR与PR的确认,需要后续时间点疗效满足一定的标准,具体是需要达到一定的疗效与时间要求。(RECIST 1.1,4.4.2节

    疗效要求,后续时间点需要达到一定疗效水平,即:CR只能被后续的CR确认;PR可以被后续的CR、PR确认。时间要求,前后两个时间点的间隔通常要4周及以上。

    1.4.2 SD的确认

    SD的确认,虽然RECIST 1.1中描述的并不明确,但它也需要满足疗效与时间的要求

    疗效要求,疗效必须是SD及以上,即SD、PR、CR;时间要求,自研究开始后,时间点疗效必须满足一个最小时限,即必须经过一定时间之后,疗效才能被确认为SD。这个时间通常不少于6-8周,不过具体还是要看试验本身分析的要求。(RECIST 1.1,4.6.1节

    1.4.3 “PD的确认”

    RECIST 1.1 并不要求对PD进行确认,可以这样理解,PD本身即可确认PD。如果试验要求PD需要确认,处理与CR、PR确认类似,这篇文章不再进行单独说明。

    1.4.4 无法确认,则为NE

    如果一个疗效不能被确认为CR、PR、SD、PD,那么其对应的BOR为NE。

    1.4.5 确认结果的选择

    CR和PR需要随后时点疗效进行确认,SD通过自身情况就可以进行确认,这就可能出现有两个确认疗效的情况。BOR的确认是寻找最优疗效的过程,如果时间点疗效同时可以确认为PR和SD,那么BOR会选择较优的那一个疗效——PR。

    1.5 BOR确认的分类

    在RECIST 1.1中,BOR的确认分为两类:

    • 第一类:相邻时点疗效的确认;
    • 第二类:非相邻时点疗效的确认。

    1.5.1 相邻时点疗效的确认

    原文提供了一张表格,用于描述相邻时间点疗效的确认(RECIST 1.1,4.4.3节)。这张表格比较简略,也有一些不足。表格默认两个相邻时间点疗效间隔是4周以上,并且也没有涵盖所有可能情况。

    RECIST 1.1原文中的表格只是粗略的参考,在实际项目中,SAP中一般会有比较全面的情况描述,实际编程需要参考项目的分析说明。

    以上表格描述了相邻两个时点疗效的确认情况,过程中可能会有多个确认结果,BOR会选取较优的那一个确认疗效

    对一个受试者来说,只会有一个最佳总体疗效,两时点疗效的确认结果可以称之为临时BOR (BOR_temp),最后会综合所有时点的确认疗效,选取最优的那一个作为BOR。当前时点的BOR_temp,是结合当前时点与上一时点的确认疗效,选取较优的那一个结果

    对于基线后第一个时点疗效,因其之前无相邻疗效,所以只能从自身确认BOR_temp,参考前面表格T2为"No further evaluations"的情况。换句话说,对于第一个时点疗效,BOR_temp只能为SD、PD与NE,因为之前没有CR、PR供第一时点进行确认。

    接下来,我会详细解说一遍RECIST原文表格中的所有确认情况,希望能够帮助读者更进一步理解相邻疗效BOR的确认。

    第1种情况,T1时点疗效为CR,在满足4周后的间隔条件下,T2时点的CR可以确认T1时点的CR,在这种情况下,T2时点的BOR为CR。

    第2种情况,T1时点为CR,4周后的T2时点为PR,这种情况可能是Data Issue,需要重新检查数据(受限于篇幅,具体缘由参考文末附录)。这一点脚注a描述得很详细:

    • 如果在第一个时间点确实达到了CR,那么在随后的时间点出现的任何病变,甚至是与基线相关的符合PR标准的病变,都将使该病变在那个时间点出现PD(由于病变已经在CR后再次出现)。
    • 最佳疗效取决于是否满足SD的最小时限。
    • 然而,当随后的扫描显示小病变可能仍然存在,并且实际上患者在第一个时间点是PR,而不是CR时,有时可能会声称“CR”。在这种情况下,应将原始CR更改为PR,最佳疗效是PR。

    具体解释:

    • T1时点实际上可能是PR,由于4周后的T2时点为PR,T2时点的PR可以确认T1时点的PR,BOR为PR
    • T2时点实际上可能是PD,PD本身可以确认为PD;T1时点为CR,如果T1时点满足SD的最小时限,CR可以确认为SD;CR又不能被随后的PD确认,BOR为SD(SD>PD)。
    • T2时点实际上可能是PD,PD本身可以确认为PD;T1时点为CR,如果T1时点不满足SD的最小时限,CR只能确认为NE;CR又不能被随后的PD确认,BOR为PD(PD>NE)。

    第3种情况,T1时点为CR,4周后的T2时点为SD。这种情况与第2种情况类似,可能是Data Issue,需要重新检查数据(受限于篇幅,具体缘由参考文末附录),原文描述不太严谨。

    具体解释:

    • T1时点实际上可能是PR,T2时点为SD。如果T1或T2时点满足SD的最小时限,BOR为SD
    • T1时点实际上可能是PR,T2时点为SD。如果T1或T2时点都满足SD的最小时限,BOR为NE
    • T2时点实际上可能是PD,PD本身可以确认为PD;T1时点为CR,如果T1时点不满足SD的最小时限,CR只能确认为NE;CR又不能被随后的PD确认,BOR为PD(PD>NE)。

    第4种情况,T1时点为CR,4周后的T2时点为PD,PD本身可以确认为PD。如果T1时点不满足SD的最小时限,CR只能确认为NE,则BOR为PD (PD>NE);如果T1时点满足SD的最小时限,CR能确认为SD,则BOR为SD (SD>PD)。

    第5种情况,T1时点为CR,4周后的T2时点为NE。如果T1时点不满足SD的最小时限,CR只能确认为NE,则BOR为NE;如果T1时点满足SD的最小时限,CR能确认为SD,则BOR为SD (SD>NE)

    第6种情况,T1时点为PR,4周后的T2时点为CR,CR可以确认为PR。如果T1或T2时点满足SD的最小时限,则可以确认为SD,最后BOR为PR (PR>SD);如果T1或T2时点不满足SD的最小时限,则可以确认为NE,最后BOR为PR (PR>NE)。

    第7种情况,T1时点为PR,4周后的T2时点为PR。同第6种情况

    第8种情况,T1时点为PR,4周后的T2时点为SD。原文描述不严谨。如果T1或T2时点满足SD的最小时限,BOR为SD;如果T1或T2时点不满足SD的最小时限,BOR为NE。

    第9种情况,T1时点为PR,4周后的T2时点为PD。参考第1种情况的第2个解释。

    第10种情况,T1时点为PR,4周后的T2时点为NE。如果T1时点满足SD的最小时限,则可以确认为SD,最后BOR为SD (SD>NE);如果T1时点不满足SD的最小时限,则可以确认为NE,最后BOR为NE。

    第11种情况,T1时点为NE,4周后的T2时点为NE,显然BOR为NE。

    1.5.2 非相邻时点疗效的确认

    关于非相邻时点疗效确认的描述,原文提及并不多,4.4.4节有这样的描述:

    在需要确认缓解的试验中,重复的“NE”时间点评估可能会使最佳疗效的确认复杂化。试验分析计划必须解决,在确定缓解和进展时,如何处理缺失的数据/评估。例如,在大多数试验中,将具有时间点疗效PR-NE-PR的患者视为确认缓解是合理的。

    一般情况下,中间夹杂的、不限数目的NE不影响CR和PR的确认。例如,以下情况,CR和PR都将得到确认:

    • CR-NE-CR
    • CR-NE-NE-CR
    • PR-NE-PR/CR
    • PR-NE-NE-PR/CR

    原文附录三常见问题中,提到了PR-SD-PR确认的情况:

    • Q:患者靶病灶直径总和在周期2减少 32% (PR),在周期4减少 28% (SD),在周期6减少 33% (PR)。PR的确认是否必须发生在接下来的时点,或者这种情况是否是PR确认?
    • A: 肿瘤缩小徘徊在30%左右的情况并不少见。在这种情况下,从整个案例来看,大多数人会认为,PR 已经得到确认。如果在两个PR疗效之间有两到三个非PR的观察结果,最保守的方法就是考虑这种情况为SD。

    虽然原文谈到PR-SD-PR这种情况可以确认PR,但最终还是以项目中明确的说明规定为准。

    关于非相邻时点疗效的确认,还有一种类型:

    • PR-PR-PR/CR
    • CR-CR-CR

    当连续两个PR,但第2个PR距第1个PR的间隔没有超过28天,这种情况下不能确认PR。但是如果第3个疗效为PR或CR,这时候一些项目会规定第一个PR会得到第3个PR的确认。

    CR的逻辑同理,具体情况以项目要求为准。

    2. 肿瘤BOR确认的练习

    我自己Dummy了十几个例子,可供读者进行BOR确认的练习。

    练习分为两块,第一个是只考虑相邻疗效时点情况下BOR的确认(ADRS_1),第二个是同时考虑相邻时点以及非相邻时点疗效的确认(ADRS_2)。练习的答案在ADRS_1_ANADRS_2_AN页中,如果对答案存疑可参考BOR_PER_RECIST_1.1的内容。

    在能够非常熟练地人工判定BOR后,读者可以自行将RawData RS导入SAS中,利用程序实现BOR的确认,并比较程序输出结果与人工判定结果是否一致。

    接下来,演示一下如何进行练习。

    2.1 相邻时点疗效的确认

    ADRS_1页的左上角有相关确认要求,其中最重要的两点是,1)SD的最小时限为35;2)CR与PR确认时,后续时点的时间间隔必须≥28天

    这里需要说明,关于与C1D1的间隔,练习使用的是ADY,也就是T1-RFSDTC+1的取值。不同项目要求可能不同,有的使用T1-RFSTDTC,有的使用基线最晚的TR检测值作为被减数,具体要看项目要求。两相邻时点确认的最小时间间隔,也要看具体项目要求。

    受试者001

    基线后T1时点为PR,ADY=38超过SD最小时限,可以确认BOR_temp为SD。由于T1时点无相邻时点疗效,BOR_temp为SD。

    T2时点为PR,ADY=85超过SD最小时限,可以确认BOR_temp为SD;T2-T1=47≥28, T2时点的PR可以确认T1时点的PR,BOR_temp为PR;最后BOR_temp取较优的疗效——PR。

    T3时点为SD,ADY=123超过SD最小时限,可以确认BOR_temp为SD;T2时点为PR,ADY=85超过SD最小时限,可以确认BOR_temp为SD;T3时点SD不能确认T2时点PR,最后BOR_temp为SD。

    T4时点为PD,直接确认BOR_temp为PD;T3时点为SD,ADY=123超过SD最小时限,可以确认BOR_temp为SD;最终,BOR_temp为SD。

    在获取到每个时点的BOR_temp值后,最优的那一个疗效就是受试者的BOR,即PR。对于受试者来讲,只会有一条最佳总体疗效记录。但是,不同公司对BOR的处理可能不同。我公司当前做法是会为每个时点做一条BOR记录,即截至当前时点的最佳总体疗效。

    以受试者001为例,截止到T1时点,BOR为SD;截止到T2时点,BOR为PR;截止到T3时点,BOR为PR;截止到T4时点,BOR为PR。

    受试者012

    基线后T1时点为CR,ADY=30没有超过SD最小时限,无法确认BOR_temp为SD,BOR_temp为NE。由于T1时点无相邻时点疗效,BOR_temp为NE。

    基线后T2时点为CR,ADY=56超过SD最小时限,可以确认BOR_temp为SD;由于T2-T1=26<28,T2时点的CR不能确认T1时点的CR;最后,BOR_temp为SD。

    基线后T3时点为CR,ADY=83超过SD最小时限,可以确认BOR_temp为SD;由于T3-T2=27<28,T3时点的CR不能确认T2时点的CR;最后,BOR_temp为SD。

    基线后T4时点为CR,ADY=110超过SD最小时限,可以确认BOR_temp为SD;由于T4-T3=27<28,T4时点的CR不能确认T3时点的CR;最后,BOR_temp为SD。

    最后,各时点BOR如下:

    2.2 相邻时点以及非相邻时点疗效的确认

    在考虑非相邻时点疗效确认的情况下,BOR的确认就会复杂一些。非相邻时点疗效的规则,在顶部右侧有说明。练习中,两PR疗效间出现不限量NE与SD,认为第一个PR得到确认。在3个连续CR的情况下,如果T2-T1<28,但T3-T1≥28,规定第3个CR可以确认第一个CR。PR情况,同理。

    练习2中的BOR_temp1列代表相邻时点疗效确认的情况,BOR_temp2列代表非相邻疗效确认为CR的情况,BOR_temp3列代表非相邻疗效确认为PR的情况。BOR_temp列会取前3列中最优的疗效。

    受试者006

    T4时点与T2时点相距39+31=70>28,所有T4时点PR可以确认T2时点PR,这时T4时点的BOR_temp3为PR、BOR_temp为PR。

    具体结果如下:

    受试者007

    T4时点与T1时点相距165-38=127>28,所有T4时点CR可以确认T1时点CR,这时T4时点的BOR_temp2为CR、BOR_temp为CR。

    具体结果如下:

    3. SAS程序实现

    这里提供一下我SAS处理BOR确认的程序,程序基于相邻时点疗效与非相邻时点疗效的确认分为两部分。非相邻时点疗效的确认,包含CR与PR的确认。

    相邻时点疗效的确认,需要遍历项目中所有可能的情况组合,如1.5.1节图2。非相邻时点疗效的确认,主要考虑首次CR或PR的时点如何Retain以及时间连续性的判断。

    程序输出结果可以与人工判定结果相互验证。

    程序细节不再介绍,若有疑问,欢迎留言讨论:

    ***1. Get Data from RS;
    proc import datafile = "E:\999_test\Examples_BOR_Confirmation v1.1.xlsx"
        out = rs dbms = xlsx replace;
        sheet = "RS";
        getnames = yes;
    run;
    
    
    
    ***2. Derive BOR_temp;
    
    **2.1 Create format for response;
    proc format;
        value resp
            1 = "CR"
            2 = "PR"
            3 = "SD"
            4 = "PD"
            5 = "NE"
            . = " "
        ;
    
        invalue respn
            "CR" = 1
            "PR" = 2
            "SD" = 3
            "PD" = 4
            "NE" = 5
        ;
    run;
    
    
    **2.2 Variables for analysis;
    data adrs1;
        set rs;
        length paramcd $8;
        paramcd = rstestcd;
        visitnum = time_point;
        ady = rsdy;
        avalc = rsstresc;
        aval = input (avalc, respn.);
    
        proc sort;
            by usubjid ady;
    run;
    
    
    **2.3 Neighboring & Non-neighboring response confirmation;
    data adrs;
        set adrs1;
        by usubjid;
    
        *Pre RESP;
        avalc_lag = lag(avalc);
        aval_lag = lag(aval);
        ady_lag = lag(ady);
    
        retain ady_cr ord_cr ady_pr ord_pr born;
    
        *For first record;
        if first.usubjid then do;
    
            *No lag record for first record;
            call missing(avalc_lag, aval_lag, ady_lag);
    
            *First bor_temp;
            if avalc in ("CR" "PR" "SD") then do;
                if ady>=35 then born_temp1=3;
                else born_temp1 = 5;
            end;
            else if avalc = "PD" then born_temp1 = 4;
            else if avalc = "NE" then born_temp1= 5;
    
            *Get bor for first record;
            born = born_temp1;
    
            *First CR ady and ord for comfirmation continuity ;
            if aval = 1 then do;
                ady_cr = ady;
                ord_cr = 1;
            end;
            else do;
                ady_cr = .;
                ord_cr = .;
            end;
    
            *First PR ady and ord for comfirmation continuity ;
            if aval = 2 then do;
                ady_pr = ady;
                ord_pr = 1;
            end;
            else do;
                ady_pr = .;
                ord_pr = .;
            end;
        end;
    
        *For non-first records;
        else do;
    
            *For Non-neighboring CR confirmation (ignore NE, CR);
            if avalc not in ("NE" "CR") then do;
                ady_cr = .;
                ord_cr = .;
            end;
            else if ady_cr ne . then ord_cr = ord_cr + 1;
    
            if avalc = "CR"  and ady_cr = . then do;
                ady_cr = ady;
                ord_cr = 1;
            end;
    
            if avalc = "CR" and ady_cr ne . then do;
                if ady -ady_cr >=28 and ord_cr >2 then born_temp2 = 1;  /*ord_cr >2 --> Non-neighboring*/
            end;
    
            *For Non-neighboring  PR confirmation (ignore NE, SD, PR, CR);
            if avalc not in ("SD" "NE" "PR" "CR") then do;
                ady_pr = .;
                ord_pr = .;
            end;
            else if ady_pr ne . then ord_pr = ord_pr + 1;
    
            if avalc = "PR" and ady_pr = . then do;
                ady_pr = ady;
                ord_pr = 1;
            end;
    
            if avalc in ("CR" "PR") and ady_pr ne . then do;
                if ady - ady_pr >=28 and ord_pr >2 then born_temp3 = 2; /*ord_pr >2 --> Non-neighboring*/
            end;
    
            *avalc_lag="CR";
            if avalc_lag="CR" and ady_lag>=35 then do;
    
                if avalc="CR" then do;
                    if ady-ady_lag>=28 then born_temp1 = 1;
                    else born_temp1 = 3;
                end;
    
                else if avalc in ("PR" "SD") then do;
                    born_temp1 = 0;
                    put "War" "ning: need to query data";
                end;
    
                else if avalc in ("PD" "NE" "") then born_temp1 = 3;
            end;
    
            else if avalc_lag="CR" and ady_lag<35 then do;
    
                if avalc="CR" then do;
                    if ady-ady_lag>=28 then born_temp1=1;
                    else if ady-ady_lag<28 and ady>=35 then born_temp1=3;
                    else if ady-ady_lag<28 and ady<35 then born_temp1=5; 
                end;
    
                else if avalc in ("PR" "SD") then do;
                    born_temp1 = 0;
                    put "War" "ning: need to query data";
                end;
    
                else if avalc = "PD" then born_temp1=4;
    
                else if avalc in ("NE" "") then born_temp1=5;
            end;
    
            *avalc_lag="PR";
            if avalc_lag="PR" and ady_lag>=35 then do;
                if avalc in ("CR" "PR") then do;
                    if ady-ady_lag>=28 then born_temp1 = 2;
                    else born_temp1 = 3;
                end;
    
                else if avalc in ("SD" "PD" "NE" "") then born_temp1 = 3;
            end;
    
            if avalc_lag="PR" and ady_lag<35 then do;
                if avalc in ("CR" "PR") then do;
                    if ady-ady_lag>=28 then born_temp1=2;
                    else if ady-ady_lag<28 and ady>=35 then born_temp1=3;
                    else if ady-ady_lag<28 and ady<35 then born_temp1=5; 
                end;
    
                else if avalc="SD" then do;
                    if ady>=35 then born_temp1=3;
                    else born_temp1 = 5;
                end;
    
                else if avalc = "PD" then born_temp1=4;
    
                else if avalc in ("NE" "") then born_temp1=5;
            end;
    
            *avalc_lag="SD";
            if avalc_lag="SD" and ady_lag>=35 then born_temp1=3;
    
            if avalc_lag="SD" and ady_lag<35 then do;
                if avalc in ("CR" "PR" "SD") then do;
                    if ady>=35 then born_temp1 = 3;
                    else born_temp1 = 5;
                end;
    
                else if avalc = "PD" then born_temp1=4;
    
                else if avalc in ("NE" "") then born_temp1=5;
            end;
    
            *avalc_lag="PD";
            if avalc_lag="PD" then born_temp1 = 4;
    
            *avalc_lag="NE";
            if avalc_lag = "NE" then do;
                if avalc in ("CR" "PR" "SD") then do;
                    if ady>=35 then born_temp1 = 3;
                    else born_temp1 = 5;
                end;
    
                else if avalc = "PD" then born_temp1=4;
    
                else if avalc in ("NE" "") then born_temp1=5;
            end;
        end;
    
        *born for or non-first records;
        if born > min(born_temp1, born_temp2, born_temp3) then born = min(born_temp1, born_temp2, born_temp3);
    
        bor_temp1 = put(born_temp1, resp.);
        bor_temp2 = put(born_temp2, resp.);
        bor_temp3 = put(born_temp3, resp.);
        bor = put(born, resp.);
    
        keep usubjid paramcd visitnum born_temp1 bor_temp1 born_temp2 bor_temp2 born_temp3 bor_temp3 born bor aval avalc ady ord_cr ord_pr;
    run;
    

    附录

    关于T1时间点疗效为CR,T2时间点疗效为PR或SD时,Data Issue情况说明。RECIST 1.1原文中,对于T1时点为CR、T2时点为PR的情况,有脚注进行说明。不止CR-PR情况需要说明,CR-SD情况也是需要解释说明,这里我结合时间点疗效的判定详细解释一下Data Issue的缘由。

    脚注a

    • 如果在第一个时间点确实达到了CR,那么在随后的时间点出现的任何病变,甚至是与基线相关的符合PR标准的病变,都将使该病变在那个时间点出现PD(由于病变已经在CR后再次出现)。
    • 最佳疗效取决于是否满足SD的最小时限。
    • 然而,当随后的扫描显示小病变可能仍然存在,并且实际上患者在第一个时间点是PR,而不是CR时,有时可能会声称“CR”。在这种情况下,应将原始CR更改为PR,最佳疗效是PR。

    脚注a的理解需要结合RECIST原文中时间点疗效的判定:

    CR-PR情况

    如果T1时间点疗效为CR,那么只能是靶病灶评估为CR、非靶病灶评估为CR、没有新病灶的出现,即病灶全部消失。而T2时间点为PR,对应3种可能的情况。

    • 第一种情况,靶病灶评估为CR,非靶病灶评估为Non-CR/non-PD,无新病灶出现。但是,T1时点非靶病灶评估为CR,说明非靶病灶全部消失;T2时点非靶病灶评估为Non-CR/non-PD,即非靶病灶没有全部消失。于是,T2与T1相比,出现了新病灶。评估出现矛盾。
    • 第二种情况,靶病灶评估为CR,非靶病灶评估为Not evaluated,无新病灶出现。这种情况可能出现。
    • 第三种情况,靶病灶评估为PR,非靶病灶评估为Non-PD or not all evaluated,无新病灶出现。同第一种情况,T1时点靶病灶评估为CR,说明靶病灶全部消失;T2时点靶病灶评估为PR,说明靶病灶没有全部消失。于是,T2与T1相比,出现了新病灶。评估出现矛盾。

    CR-SD情况

    如果T1时间点疗效为CR,那么只能是靶病灶评估为CR、非靶病灶评估为CR、没有新病灶的出现,即病灶全部消失。而T2时间点为SD,对应1种可能的情况。

    • 靶病灶评估为SD,非靶病灶为Non-PD or not all evaluated,无新病灶出现。T1时点被病灶评估为CR,T2时点靶病灶评估为SD,T2与T1相比,出现了新病灶。评估出现矛盾。

    这就是通常CR-PR/SD出现后,需要Query Data的原因。

    感谢阅读, 欢迎关注:SAS茶谈!
    若有疑问,欢迎评论交流!

    梳理不易,转载请注明出处 (by Jihai / SAS茶谈)

    相关文章

      网友评论

          本文标题:临床试验-肿瘤:从RECIST 1.1出发梳理肿瘤BOR的确认

          本文链接:https://www.haomeiwen.com/subject/yfplzrtx.html