-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathadcvf_sh.sas
156 lines (108 loc) · 3.01 KB
/
adcvf_sh.sas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
%macro left_join(l=, r=, b=, o=);
proc sort data=&l;
by &b;
run;
proc sort data=&r;
by &b;
run;
data &o;
merge &l(in=x) &r(in=y);
by &b;
if x;
run;
%mend left_join;
************************************************************************************************;
*****macro for check*****;
%macro adcvf_check(v=);
data adcvf_check1(keep=usubjid &v);
set ad.adcvf;
run;
%mend;
***************;
**************************************************************************************************;
%macro pred_usubj1(meta_source=, dataset=, pull_from=, library=, output_name=);
proc import datafile= "&meta_source"
out=meta_file_sh dbms=xlsx;
sheet="Variables";
getnames=yes;
run;
data sh1;
set meta_file_sh;
where dataset eq "&dataset" and scan(source_var, 1, ".") eq upper("&pull_from");*prxmatch("m/^&pull_from/I", source_var);
run;
proc sql noprint;
select variable into:sh_names separated by " "
from sh1;
quit;
%put naam= &sh_names.;
%let sh3= .;
data &output_name(keep= &sh_names.);
set &library&sh3&pull_from;
run;
%mend;
/* extract pred from other files from where usubjid is not taken; */
%macro pred_other1(prev_file=, dataset=, pull_from=, library=, output_name=);
proc sort data=&prev_file;
by usubjid;
run;
%let sh4= .;
data sh4a;
set meta_file_sh;
where dataset eq "&dataset" and scan(source_var, 1, ".") eq upper("&pull_from");*prxmatch("m/^&pull_from/I", source_var);
run;
proc sql noprint;
select variable into:sh_naam separated by " "
from sh4a;
quit;
%put naam: &sh_naam.;
data sh5(keep=USUBJID &sh_naam.);
set &library&sh4&pull_from;
run;
proc sort data=sh5;
by usubjid;
run;
data &output_name;
merge &prev_file(in=x) sh5(in=y);
by usubjid;
if x;
run;
%mend;
/***************************************************************************************************; */
data ofc.adcvf_guide(keep= dataset variable var_order length derivation source_var origin);
set nm.adam_guide;
where dataset eq "adcvf";
run;
*************************************************************************************************;
*Included only records where
LB.LBSPEC='SERUM OR PLASMA' and LB.LBMETHOD='POLYMERASE CHAIN REACTION'
and LB.LBTESTCD in ('HIV1RNA' 'HIV1RNAL') from LB dataset.;
data ofc.lb;
set sd.lb;
where lbspec eq 'SERUM OR PLASMA' and
LBMETHOD eq 'POLYMERASE CHAIN REACTION' and LBTESTCD in ('HIV1RNA', 'HIV1RNAL');
run;
%pred_usubj1(meta_source=/folders/myfolders/team/adam/ADAM_Metadata_Reviewer_Aid_28APR2020.xlsm ,
dataset=adcvf, pull_from=lb, library=ofc, output_name=ofc.adcvf1_sh);
%pred_other1(prev_file=ofc.adcvf1_sh, dataset=adcvf, pull_from=adsl, library=ad, output_name=ofc.adcvf2_sh);
*not resolved:
parcat1
trtp
trtpn
trta
trtan
;
*resolving unresolved variables ;
data ofc.adcvf3_sh;
set ofc.adcvf2_sh;
TRTP= TRT01P;
TRTPN= TRT01PN;
TRTA= TRT01A;
TRTAN=TRT01AN;
RUN;
*PARCAT1
LB.LBCAT;
DATA PARCAT1(KEEP=USUBJID LBCAT);
SET OFC.LB;
RUN;
%left_join(l=ofc.adcvf3_sh, r=parcat1, b=usubjid, o=ofc.adcvf4_sh);
************************************************************************************************;