Data step code could certainly construct the frequencies which you need.
proc sort data=mydata;
by facilityID SSN;
run;
data freqs;
set mydata;
by facilityID ssn;
if first.facilityID then do;
NRestr1=0; /* Number of times restraint 1 used */
NPatRestr1=0; /*Number of patients for whom restraint 1 was used */
NRestr2=0; /* Number of times restraint 2 used */
NPatRestr2=0; /*Number of patients for whom restraint 2 was used */
...
end;
if first.SSN then do;
PatRestr1=0; /* Restraint 1 ever used on patient */
PatRestr2=0; /* Restraint 2 ever used on patient */
...
end;
NRestr1 + Restr1; /* Increment total use of restraint 1 */
NRestr2 + Restr2; /* Increment total use of restraint 2 */
...
PatRestr1 = max(PatRestr1, Restr1); /* Update indicator of patient ever using restraint 1 */
PatRestr2 = max(PatRestr2, Restr2); /* Update indicator of patient ever using restraint 2 */
...
if last.SSN then do;
NPatRestr1 + PatRestr1; /* Increment count of patients using restraint 1 */
NPatRestr2 + PatRestr2; /* Increment count of patients using restraint 2 */
...
end;
if last.FacilityID then output;
keep facilityID NRestr1 NpatRestr1 NRestr2 NpatRestr2;
run;
proc print data=freqs;
run;
... View more