-
Notifications
You must be signed in to change notification settings - Fork 0
/
MGETSTARS.sas
212 lines (174 loc) · 5.76 KB
/
MGETSTARS.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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
*--------------------------------------------------------------------------------------------------------------------;
**Macro MGETSTARS
**Macro within: getstarfall
**Date created:12/07/2017
**Last edited: 10/21/2018
**Last run: 10/21/2018
**Incorporate mds star ratings;
*Document Reference:NHC_LongitudinalFiles_2008-2011_Readme
*PROC FORMAT;
*VALUE $stars
* '10'='*'
* '20'='**'
* '30'='***'
* '40'='****'
* '50'='*****'
* '70' = 'Too New to Rate'
* '90' = 'Data Not available'
*;
*--------------------------------------------------------------------------------------------------------------------;
dm 'log;clear;output;clear;';
%MACRO MGETSTARS;
**Check provnum in star rating files;
**Results: All provnum are valid in star rating files;
/*%macro check_prvdrnum(star, star_invalid);
data &star_invalid(keep=provnum);
set &star.;
if verify(trim(left(provnum)), '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ')>0 or length(provnum) ne 6 then output &star._invalid;
run;
proc sql noprint;
select count (provnum) into: inv_provnum from &star._invalid;
quit;
%put There are &inv_provnum. invalid provnums in &star.;
%mend check_prvdrnum;
%check_prvdrnum(mdsstar.ratings_2014,ratings_2014_inv);
%check_prvdrnum(mdsstar.ratings_2015,ratings_2015_inv);
%check_prvdrnum(mdsstar.ratings_2009_2013,ratings_2009_2013_inv);
*/
*format star ratings files for year 2014-2015;
%macro rating(YYEAR);
data ratings_&YYEAR._long;
set mdsstar.ratings_&YYEAR.;
length
year 3.
quarter 3.;
year=year(FILEDATE);
quarter=qtr(FILEDATE);
run;
/*
proc contents data=ratings_&YYEAR._longvarnum;run;
proc print data=ratings_&YYEAR._long(keep=provnum filedate year quarter overall_rating overall_rating_fn QUALITY_RATING QUALITY_RATING_fn STAFFING_RATING SURVEY_RATING obs=100);run;
*/
proc sort data=ratings_&YYEAR._long nodupkey;
by provnum year quarter;
run;
proc transpose data=ratings_&YYEAR._long out=ratings_&YYEAR._wide prefix=quarter;
by provnum year;
id quarter;
var overall_rating QUALITY_RATING STAFFING_RATING SURVEY_RATING rn_staffing_rating;
run;
proc transpose data=ratings_&YYEAR._wide out=ratings_&YYEAR.;
by provnum year;
id _name_;
var quarter1 quarter2 quarter3 quarter4;
run;
data ratings_&YYEAR.(drop=_quarter _name_);
set ratings_&YYEAR.;
length _quarter $1.
quarter 3.;
_quarter=substr(_name_,8,1);
quarter=input(_quarter,3.);
run;
%mend rating;
%rating(2014)
%rating(2015)
*format star rating files for year 2009-2013;
*these star ratings are available monthly, change them to quarterly star ratings to match format in year 2014-2015;
proc contents data=mdsstar.ratings_2009_2013 varnum; run;
data fivestar_2009_2013_long;
set mdsstar.ratings_2009_2013;
length
year 3.
quarter 3.
_survey_rating 3.
_staffing_rating 3.
_overall_rating 3.
_quality_rating 3.
_rn_staffing_rating 3.;
_SURVEY_RATING=input(SURVEY_RATING,3.);
_QUALITY_RATING=input(QUALITY_RATING,3.);
_overall_rating=input(overall_rating,3.);
_STAFFING_RATING=input(staffing_rating,3.);
_RN_STAFFING_RATING=input(RN_STAFFING_RATING,3.);
drop overall_rating
survey_rating
quality_rating
staffing_rating
rn_staffing_rating;
_overall_rating=_overall_rating/10;
_SURVEY_RATING=_SURVEY_RATING/10;
_QUALITY_RATING=_QUALITY_RATING/10;
_STAFFING_RATING=_STAFFING_RATING/10;
_RN_STAFFING_RATING=_RN_STAFFING_RATING/10;
rename _overall_rating=overall_rating
_SURVEY_RATING=SURVEY_RATING
_QUALITY_RATING=QUALITY_RATING
_STAFFING_RATING=STAFFING_RATING
_RN_STAFFING_RATING=RN_STAFFING_RATING;
if month=1 or month=4 or month=7 or month=10 then do;
if month=1 then quarter=1;
else if month=4 then quarter=2;
else if month=7 then quarter=3;
else if month=10 then quarter=4;
output fivestar_2009_2013_long;
end;
run;
proc sort data=fivestar_2009_2013_long nodupkey;
by provnum year quarter;
run;
proc transpose data=fivestar_2009_2013_long out=fivestar_2009_2013_wide prefix=quarter;
by provnum year;
id quarter;
var overall_rating survey_rating quality_rating staffing_rating rn_staffing_rating;
run;
proc transpose data=fivestar_2009_2013_wide out=fivestar_2009_2013;
by provnum year;
id _name_;
var quarter1 quarter2 quarter3 quarter4;
run;
data fivestar_2009_2013(drop=_quarter _name_);
set fivestar_2009_2013;
length _quarter $1.
quarter 3.;
_quarter=substr(_name_,8,1);
quarter=input(_quarter,3.);
run;
/*
proc contents data=ratings_2014(obs=10);run;
proc contents data=ratings_2015(obs=10);run;
proc contents data=fivestar_2009_2013 (obs=10);run;
*/
data fivestar_2011_2015;
set ratings_2014
ratings_2015
fivestar_2009_2013;
if 2015>=year>=2011;
run;
data fivestar_2011_2015(rename=(year=trgtdt_year
quarter=trgtdt_quarter
provnum=m_prvdrnum));
set fivestar_2011_2015;
run;
proc sort data=fivestar_2011_2015 out=nhout.fivestar_2011_2015;
by m_prvdrnum trgtdt_year trgtdt_quarter;
run;
**Merge MDS assessments with quarterly star data from 2011 to 2015;
%Macro getstarfall(prepost,prepost_output);
data nhout.&prepost.;
set nhout.&prepost.;
trgtdt_year=year(m_trgt_dt);
trgtdt_quarter=qtr(m_trgt_dt);
run;
proc sort data=nhout.&prepost.;
by m_prvdrnum trgtdt_year trgtdt_quarter;
run;
data nhout.&prepost_output.;
merge nhout.&prepost.(in=inm)
nhout.fivestar_2011_2015;
by m_prvdrnum trgtdt_year trgtdt_quarter;
if inm;
run;
%mend getstarfall;
%getstarfall(mdspre_samenh_claim_com,mdspre_samenh_claim_star)
%getstarfall(mdspre_claim_com,mdspre_claim_star)
%MEND MGETSTARS;