美文网首页大数据制药SAS进阶
从头开始写 ADaM- ADSL

从头开始写 ADaM- ADSL

作者: 不连续小姐 | 来源:发表于2019-04-02 02:05 被阅读0次

    ADaM Day 1

    In clinical trials, ADSL(Subject-Level Analysis Dataset) is the foundation of all ADaM analysis dataset, it is one record per subjects; it captures subjects' population flag 🚩, treatment-related info, vital sign info♂, baseline disease info, and other info respect to different study designs.

    [caption id="attachment_2024" align="alignnone" width="750"]

    realworkhard / Pixabay[/caption]

    General Steps:

    1. Import any Disease related document in excel or csv format,
      ex: Lines of Antilymphoma Therapy

      2. Demographic Dataset (raw.dm)
      Ex. studyid , subjid , siteid, age=(infcdt-birth+1)/365.25 , sex, race, agegrp

      3. Treatment Discontinuation from ECRF page & Study Discontinuation

    data ds;
    set ds;
    where pagename="Treatment Disposition";
    if statusn=1 then status1="Completed";
    if statusn=2 then status2="Discontinued";
    dsreas= strip(dsterm);
    keep pt dsdt dstreas dstreasn ;
    run;
    
    1. Death Info
    data death;
    set raw.dth;
    if dsdt>.;
    dthreas=strip(dscause);
    keep pt dthdt dthreas ptnm;
    run;
    
    5.Exposure of Study Treatment

    treatment start/end date, cycle length info, treatment group

    proc sql noprint;
    create table ex as select unique pt,
      min(exstdt) as trsdt format=date9\. label="First Dose Date", 
        max(exendt) as tredt format=date9\. label="Last Dos Date"
        from raw.ex where exdose > .
      group by pt order by pt;
    quit;
    
    6. Chemistry Lab test results.
    data chem;
    set raw.chem;
    run;
    
    baseline creatinine, LDH
    
    7. Disease Stage History: Initial Diagnosis, Enrollment
    xSTIN: stage at Initial Diagnosis
    Value : I, II, III, IV , unknown
    
    xSTEN: Stage at Enrollment 
    Value : I, II, III, IV, 
    *note: xSTEN there is no-unknown
    
    8. Prior Radiation
    data rad;
    set raw.prt;
    by pt prtstdtf repeatsn;
    if first.prtstdtf;
    run;
    
    9. Prior Systemic Therapy Lines
    data pline;
    set raw.psata;
    keep patstdt patendt patseqn(prior therapy/reginmen number);
    run;
    
    data nsys;
         retain nsystem 0;
         set pline;
         by pt patseqn;
         if first.pt then nsystem = 1;
         else nsystem+1;
         if last.pt;
         drop patseqn; 
    run;
    
    10. Other prior anti-cancer therapy
    proc sort data= raw.psata out=pr1(keep=pt genrnm repeatsn);
         by pt genrnm repeatsn;
      where pagename="Other Prior Anti-Cancer Therapies for this Disease";
    run;
    
    11. Baseline Chemo Lab Result
    *LDH example;
    data lab2;
         length bldhg $30 bldhgrp $30 ;
         set lab2;
       by pt lbdt;
       if last.pt;
       if 53 <= labval <= 234 then do;
            bldhg = "Normal";
         end; 
       else if labval > 234 then do;
            bldhg = "> Upper limit of normal (ULN)";
         end;
    run;
    
    12. Reproductive Status
    proc sort data=raw.pt out=pt2(keep= pt child);
         where CHILD ne '';
       by pt;
    run;
    
    data dm;
    merge dm(in=a) pt2(in=b);
    by pt;
    run;
    
    data dm;
    set dm;
    if sex="F" and child="Yes" then repro="Y";
    if sex="F" and child="No" then repro="N";
    drop child;
    run;
    
    13. VS: Height, Weight, BSA, BMI
    proc sort data=raw.vs1 out=vsn(keep=ht wt pt vsdt) nodupkey;
         by pt descending vsdt;
    run;
    
    data vs_new1;
         merge vsn(in=a) ex(keep=pt tr01sdt);
       by pt;
       if . < vtdt <= tr01sdt;
    run;
    
    data vs_new2;
         set vs_new1;
       by pt vtdt;
         if last.pt;
    bsa= sqrt((bheight*bweight)/3600);
    bmi= bweight/((bheight*0.01)**2);
    run;
    
    14. ECG, ECOG Performance Status at Enrollment (Screening)
    ECG.EGINTP where visit=1
    S_QS2.SQSRES2 where visit=1 (VISNAME='Screening (Day -28 to -1)')
    
    15.Refractory and Relapse

    Refractory: does not respond to treatment
    Relapse: despite the best care and significant progress made in treatment, cancer comes back

    16. Miscellaneous :

    Prior stem Cell Therapy, Other prior anti-cancer therapy, Bone Marrow, X-Symptom at Screening, Eligibility (raw.elig, eligyn="yes"), Follow up (raw.fugate, entfuv="yes")

    17. Population Flag.

    Safety Flag, ITT Population Flag, Efficacy Evaluable Flag note: each study has different rules of derivations.

    Final ADSL Dataset Wrap up:

    data adsl;
      format trtedt date9.;
      merge dm(in=dm) ex(in=ex death rand(in=rand)  nhl enroll vs nhlhis creat  
            ecog ecg elig(in=elig) crcl fu  spd  nprit ivr lab2 hema2 BSYMPT bc(in=bc) ;
      by pt;
      if dm;
    
      rename cycdrug1=ncyclen cycdrug2=ncycrit last1=LCYCLEN last2=LCYCRIT
          ;
          label
            SEXN = "Gender"
            agegrp1N = "Age group (N) <x vs >=x"
            RACEGR1N = "Race";
     run;
    

    Dummy ADSL Dataset with Label

    adsl.PNG adsl1.PNG

    Note: since every study design is different, there is no one-fits-all formula for creating ADSL dataset. I hope these descriptions provide a general idea of ADSL dataset ☺.
    Thanks Moe and Xueying explain the Refractory and Relapse concept to me!

    Happy Practicing! 😎

    相关文章

      网友评论

        本文标题:从头开始写 ADaM- ADSL

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