Advertisement
Guest User

Untitled

a guest
Nov 28th, 2018
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SAS 2.73 KB | None | 0 0
  1. /* Création des bibliothèques source et decode */
  2. libname decode  "/folders/myfolders/Miniprojet/source/format";    /* endroit où se trouvent le catalogue de formats */
  3. libname source  "/folders/myfolders/Miniprojet/source ";    /* endroit où se trouvent tous les datasets sources */
  4. options fmtsearch=( decode   SOURCE  WORK);
  5. options ls=256;
  6.  
  7. /* 2.5 Evènements indésirables */
  8. DATA SOURCE.ADVERSE_EVENT;
  9. SET SOURCE.ADVERSE_EVENT;
  10.  
  11. /* 2.5.1 Création variables ae_start_date - ae_stop_date et restriction */
  12. ATTRIB ae_start_date FORMAT=DATE9.;
  13. ATTRIB ae_stop_date FORMAT=DATE9.;
  14. ATTRIB restriction length=3;
  15.  
  16. /* Création de la date de début en donnant comme jour 01 si il n'existe pas, et janvier si le mois n'existe pas */
  17. ATTRIB _aestdtmo FORMAT=$3.;
  18. IF(AESTDTYY^='') THEN
  19. DO;
  20.     IF (AESTDTDD='') THEN _aestdtdd = '01';
  21.         ELSE _aestdtdd = AESTDTDD;
  22.     IF (AESTDTMO='') THEN _aestdtmo = 'JAN';
  23.         ELSE _aestdtmo = AESTDTMO;
  24.     ae_start_date = input(catt(_aestdtdd, catt(_aestdtmo, AESTDTYY)), DATE9.);
  25. END;
  26.  
  27. /* Création de la date de fin en donnant le dernier jours du mois si il n'existe pas, et décembre si le mois n'existe pas */
  28. ATTRIB _aeeddtmo FORMAT=$3.;
  29. IF(AEENDTYY^='') THEN
  30. DO;
  31.     IF (AEENDTMO='') THEN _aeendtmo = 'DEC';
  32.         ELSE _aeendtmo = AEENDTMO;
  33.     IF (AEENDTDD='') THEN _aeendtdd = intnx('month',catt("01", catt(_aeendtmo, AEENDTYY)),1)-1;
  34.         ELSE _aeendtdd = AEENDTDD;
  35.        
  36.     ae_stop_date = input(catt(_aeendtdd, catt(_aeendtmo, AEENDTYY)), DATE9.);
  37. END;
  38.  
  39. RUN;
  40.  
  41. /* Ne prendre que les évènements où la date de début est supérieure à la première visite du patient*/
  42.     /* On fait une table des premières visites */
  43.     DATA FIRST_VISIT;
  44.     SET SOURCE.DATE_OF_VISIT (KEEP=USUBJID VISDT);
  45.     RUN;
  46.    
  47.     /* Dans cette table comme son nom l'indique on ne garde que la première visite par patient*/
  48.     PROC SORT DATA=FIRST_VISIT;
  49.     BY USUBJID VISDT;
  50.     RUN;
  51.     PROC SORT DATA=FIRST_VISIT NODUPKEY OUT=FIRST_VISIT_2;
  52.     BY USUBJID;
  53.     RUN;
  54.    
  55.     /* On rajoute une colonne avec la première visite */
  56.     PROC SORT DATA=SOURCE.ADVERSE_EVENT;
  57.     BY USUBJID;
  58.     RUN;
  59.    
  60.     PROC SORT DATA=FIRST_VISIT;
  61.     BY USUBJID;
  62.     RUN;
  63.    
  64.     DATA SOURCE.ADVERSE_EVENT;
  65.     MERGE SOURCE.ADVERSE_EVENT (IN=mark1) WORK.FIRST_VISIT_2;
  66.     by USUBJID ;
  67.     if mark1 then output;
  68.     RUN;
  69.  
  70.     DATA SOURCE.ADVERSE_EVENT;
  71.     SET SOURCE.ADVERSE_EVENT;
  72.     if(ae_start_date^='') THEN
  73.     DO;
  74.         if(ae_start_date>=VISDT) THEN restriction =1;
  75.     END;
  76.     RUN;
  77.  
  78. /* Restriction pour exclure les lignes non voulues*/
  79. /*DATA SOURCE.ADVERSE_EVENT;
  80. SET SOURCE.ADVERSE_EVENT(WHERE=(restriction=1));
  81. RUN;*/
  82.  
  83. /* 2° Fusion AE */
  84.  
  85. DATA AE ;
  86. MERGE  SOURCE.ADVERSE_EVENT ( IN=mark1 ) SOURCE.TREATMENT_ASSIGNMENT ( IN=mark2 KEEP= USUBJID TRTCD ASGNDTTM) ;
  87. by USUBJID ;
  88. if mark1 THEN output;
  89.  
  90. RUN;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement