/*-------------------------------------------------------------------------------------*\ | PROGRAM NAME: | | scdm_data_qa_review-vitalsigns.sas | | | |---------------------------------------------------------------------------------------| | PURPOSE: | | The purpose of this program is to perform data quality checks on the Vitals | | table. | |---------------------------------------------------------------------------------------| | PROGRAM INPUT: | | see 00.0_scdm_data_qa_review_master_file.sas | | | | PROGRAM OUTPUT: | | see Workplan PDF | |---------------------------------------------------------------------------------------| | CONTACT: | | Sentinel Coordinating Center | | info@sentinelsystem.org | \*-------------------------------------------------------------------------------------*/ *-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-; * PLEASE DO NOT EDIT BELOW WITHOUT CONTACTING THE SENTINEL OPERATIONS CENTER ; *-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-; %let qa_table= ; %macro get_qa_table ; %if &do_partitions and not %eval(&module in &tabid_exc) %then %do ; data t_view /view=t_view ; set qadata.&&&module.table.: (keep=measure_date ht wt diastolic systolic BP_Type Position Tobacco Tobacco_Type) ; run; %let qa_table = t_view ; %end ; %else %do; %let qa_table = qadata.&&&module.table (keep=measure_date ht wt diastolic systolic BP_Type Position Tobacco Tobacco_Type); %end; %mend; %get_qa_table ; proc sql noprint; create table dplocal.&module._temp as select measure_date , ht , wt , diastolic , systolic , BP_Type , Position , Tobacco , Tobacco_Type , count(*) as n from &qa_table group by 1,2,3,4,5,6,7,8,9 ; quit; %remove_labels(dplocal, &module._temp); /*-------------------------------------------------------------------------------------*/ /* START Level 2 Data */ /*-------------------------------------------------------------------------------------*/ %let level=2; proc sql noprint; create table msoc.&module._l2_bp_catvar_ym as select put(measure_date,yymmd.) as YearMonth , BP_Type , Position , sum(n) as count format=comma15. from dplocal.&module._temp (keep=measure_date BP_type Position n) group by 1,2,3 ; create table msoc.&module._l2_tobacco_ym as select put(measure_date,yymmd.) as YearMonth , Tobacco , Tobacco_Type , sum(n) as count format=comma15. from dplocal.&module._temp (keep=measure_date Tobacco Tobacco_Type n) group by 1,2,3 ; quit; /*-------------------------------------------------------------------------------------*/ /* START Level 2 Flags */ /*-------------------------------------------------------------------------------------*/ %level2; /*-------------------------------------------------------------------------------------*/ /* START Level 3 Data */ /*-------------------------------------------------------------------------------------*/ %let level=3; proc sql noprint; create table dplocal.&module._temp_date as select measure_date , sum(n) as n from dplocal.&module._temp (keep=measure_date n) group by 1 ; drop table dplocal.&module._temp ; quit; %date_percentiles (libin=dplocal, dsin=&module._temp_date , libout=dplocal, dsout=date_dist_&module., vars=measure_date); proc sql noprint; drop table dplocal.&module._temp_date ; create table msoc.&module._l3_measure_date_ym as select YearMonth , sum(count) as count format=comma15. from msoc.&module._l2_bp_catvar_ym (keep=yearmonth count) group by 1 ; quit; /* add msoc table for patid and encounterid stats */ %macro get_qa_table ; %if &do_partitions and not %eval(&module in &tabid_exc) %then %do ; data t_view /view=t_view ; set qadata.&&&module.table.: (keep=patid measure_date) ; run; %let qa_table = t_view ; %end ; %else %do; %let qa_table = qadata.&&&module.table (keep=patid measure_date) ; %end; %mend; %get_qa_table ; proc sql noprint; create table dplocal.&module._pat_ym as select patid , put(measure_date,yymmd.) as YearMonth , count(*) as n from &qa_table group by patid, yearmonth ; quit; %remove_labels(dplocal, &module._pat_ym); /*level 3 <number of encounters per member by year-month (mean, median, min, max)*/ %l2_procmeans_sum (libin=dplocal, dsin=&module._pat_ym, libout=msoc, dsout=&module._l3_pt_ym_stats, keepvars=, vars=n, classvars=yearmonth, names= n=n_patid sum=records mean=mean std=std min=min p1=p1 p5=p5 p25=p25 median=median p75=p75 p95=p95 p99=p99 max=max, numobs=max); proc datasets library=msoc nolist nodetails nowarn; modify &module._l3_pt_ym_stats; format n_patid records comma15. mean std 10.2 median 10.1; informat mean std 10.2 median 10.1; run; quit; proc datasets lib=dplocal nowarn nolist nodetails; delete &module._pat_ym; quit; *-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-; * END scdm_data_qa_review-vitalsigns.sas ; *-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-;