/* / Program : RotaVax_GAE_check / Version : 1.0 / Author : Jessica M. Moore / Date : 10 September 2010 / Contact : icj2@cdc.gov / Purpose : Explore Egelston rotarix dataset with basic univariate stats and inital QC / SubMacros : none / Notes : / Usage : Can be modified for checks in any of the study hospitals - outputs error output to be sent to study hospitals; creates final analysis dataset. / /=============================================================================== / PARAMETERS: /-------name------- -------------------------description------------------------ HOSP Study hospital FirstDOB The earliest DOB for entry in study differs between states StartDate, EndDate The start and end dates for inclusion in the study year /=============================================================================== / AMENDMENT HISTORY: / init --date-- mod-id ----------------------description------------------------ /=============================================================================*/ *** Assign libname; %LET HOSP=CCMC; LIBNAME ROTAVAX "\\cdc.gov\private\L317\icj2\RotaVax\Data\&HOSP"; *** Import data from excel; %let ROTAVAX=%str(\\cdc.gov\private\L317\icj2\RotaVax\Data\&HOSP); /*change filename for imports from other hospitals*/ /*filename &HOSP "&ROTAVAX\HS_EIP.xls";*/ PROC IMPORT OUT= &HOSP DATATABLE= "1_Questionnaire to Specimen" DBMS=ACCESS REPLACE; DATABASE="&ROTAVAX\CCMC_EIP.mdb"; SCANMEMO=YES; USEDATE=YES; SCANTIME=YES; RUN; PROC CONTENTS DATA=&HOSP OUT=&HOSP._CONT NOPRINT;RUN; /*Data &HOSP; set &HOSP; array dates (4) dateill vomitstart diarrhstart feverstart; do i=1 to 4; if dates(i)='88/88/8888' then dates (i)=' '; end; run; /*Macro to fix date formats*/ /*%Macro Dates (table=,var= ); Data &table; set &table; day=substr(&var,3,2); mo=substr(&var,1,2) ; yr=substr(&var,5,4) ; &var._1=mdy(mo,day,yr); format &var._1 mmddyy10.; run; Data &table (Drop=mo day yr &var rename=(&var._1=&var)); set &table; run; %Mend Dates; %Dates(table=&HOSP,var=dateill) %Dates(table=&HOSP,var=diarrhstart) %Dates(table=&HOSP,var=vomitstart) %Dates(table=&HOSP,var=feverstart) */ *** Set raw dataset to folder; Data ROTAVAX.&HOSP._raw; set &HOSP; run; Data &HOSP; Set &HOSP; if caseid in("GAE1-034","GAH1019","GAH1020","GAH1042","GAH1069","GAS1022") then delete; *** For Egelston only; run; /* Assign macro variables to dates that will change each year of study*/ %let firstDOB = 01Aug08; /* Change dates for CT data 01Aug08, GA 03/01/2009*/ %let startdate = 01JAN10; %let enddate = 30JUN10; options mprint; /* data checks ----- Parent/Caretaker Questionnaire*/ options orientation=portrait; ods pdf FILE="&ROTAVAX\&HOSP._checks_&sysdate..PDF" base="&HOSP.._pdf" bookmarklist=SHOW SUBJECT="&HOSP Checks" style=printer fontscale=125; title1 "&HOSP Data Checks"; /*Check #1*/ /*Missing caseid, interview datE, initials, zip code*/ %let rr=1; proc sql; create table &HOSP&rr as select caseid,intvwdate,intvwini,zipcode from &HOSP where caseid=' ' or intvwdate=. or intvwini=' ' or zipcode=. order by caseid; %let check&rr=%str(Caseid and/or interview date/initials is missing); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; /*Check #2*/ /*Interview date out of range*/ %let rr=2; proc sql; create table &HOSP&rr as select caseid,intvwdate from &HOSP where intvwdate ne . and (intvwdate <"&startdate"d or intvwdate >"&enddate"d) order by caseid; %let check&rr=%str(Interview date is out of study range); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; /*Check #3*/ /*Date of birth out of range*/ %let rr=3; proc sql; create table &HOSP&rr as select caseid,DOB from &HOSP where DOB = . or DOB < "&firstDOB"d order by caseid; %let check&rr=%str(Invalid study date of birth); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; /*Check #4*/ /*Child is less than 56 days old*/ %let rr=4; proc sql; create table &HOSP&rr as select caseid,DOB,edvisitdate, ipadmdate from &HOSP where (edvisitdate ne . and (edvisitdate - DOB < 56)) or (ipadmdate ne . and (ipadmdate - DOB < 56)) order by caseid; %let check&rr=%str(Child is less than 56 days old); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; /*Check #5*/ /*Invalid gender*/ %let rr=5; proc sql; create table &HOSP&rr as select caseid,gender from &HOSP where gender = ' ' or gender ^in(' ', '1', '2') order by caseid; %let check&rr.a=%str(Invalid Gender); %let check&rr.b=%str(Gender Distribution); ods proclabel "&HOSP Check&rr:&check&rr.a"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; proc freq data=&HOSP; tables gender; title2 "&check&rr.b"; run; /*Check #6*/ /*Invalid relationship*/ %let rr=6; proc sql; create table &HOSP&rr as select caseid,relation,relationother from &HOSP where relation = ' ' or relation ^in('1','2','3','4','5','6','8','9') or (relation='8' and relationother=' ') order by caseid; %let check&rr=%str(Invalid Relationship); %let check&rr.b=%str(Relation Distribution); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; proc freq data=&HOSP; tables relation; title2 "&check&rr.b"; run; /*Check #7*/ /*Invalid date of illness*/ %let rr=7; proc sql; create table &HOSP&rr as select caseid,dateill,DOB,intvwdate from &HOSP where dateill = . or dateill < DOB or dateill > intvwdate order by caseid; %let check&rr=%str(Invalid Date of Illness); ods proclabel "&HOSP Check&rr:&check&rr"; quit; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; ***; /*Check #8*/ /*Invalid diarrh*/ %let rr=8; proc sql; create table &HOSP&rr as select caseid,diarrh,diarrhstart,diarrhdays,diarrhepiso from &HOSP where diarrh = . or diarrh ^=1 or (diarrh=1 and (diarrhstart=. or diarrhdays=. or diarrhepiso=.)) or (diarrhdays ^in(.,88,99) and diarrhdays >9) or (diarrhepiso ne . and diarrhepiso <3) order by caseid; %let check&rr=%str(Invalid Diarrh); %let check&rr.b=%str(Diarrh/diarrhdays/diarrhepiso Distribution); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; proc freq data=&HOSP; tables diarrh diarrhdays diarrhepiso; title2 "&check&rr.b"; run; /*Check #9*/ /*Invalid diarrhea start date*/ %let rr=9; proc sql; create table &HOSP&rr as select caseid,diarrhstart,edvisitdate,ipadmdate,diarrhdays from &HOSP where diarrhstart = . or ((ipadmdate or edvisitdate)-diarrhstart>10) or diarrhdays ^in(88,99) and ((ipadmdate or edvisitdate)-diarrhstart > diarrhdays) order by caseid; %let check&rr=%str(Invalid Diarrhea start date); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; /*Check #10*/ /*Invalid vomit*/ %let rr=10; proc sql; create table &HOSP&rr as select caseid,vomit,vomitstart,vomitdays,vomitepiso,edvisitdate,ipadmdate from &HOSP where vomit = . or vomit ^in(0,1,8,9,.) or vomit=1 and (vomitstart=. or vomitdays=. or vomitepiso=.) or vomitdays ^in(.,88,99) and vomitdays >9 or vomitdays ^in(88,99) and (ipadmdate or edvisitdate)-vomitstart > vomitdays or (ipadmdate or edvisitdate)-vomitstart > 10 order by caseid; %let check&rr=%str(Invalid Vomit/Vomit Dates); %let check&rr.b=%str(Vomit/Vomitdays/Vomitepiso Distribution); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; proc freq data=&HOSP; tables vomit vomitdays vomitepiso; title2 "&check&rr.b"; run; /*Check #11*/ /*Invalid fever*/ *** Needs work***; %let rr=11; proc sql; create table &HOSP&rr as select caseid,fever,feverstart,feverdays,feverhigh,measureby, measureother,edvisitdate,ipadmdate from &HOSP where fever = . or fever ^in(0,1,8,9) or fever=1 and (feverstart=. or feverdays=. or feverhigh=.) or feverdays ^in(.,88,99) and feverdays >9 or feverdays ^in(88,99) and (ipadmdate or edvisitdate)-feverstart > feverdays or (ipadmdate or edvisitdate)-feverstart>10 or feverhigh ^in(.,888,666) and measureby =' ' or measureby ='4' and measureother =' ' order by caseid; %let check&rr=%str(Invalid Fever/Fever Dates); %let check&rr.b=%str(Fever/Feverdays/Measureby Distribution); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; proc freq data=&HOSP; tables fever feverdays measureby; title2 "&check&rr.b"; run; proc means data=&HOSP min max; var feverhigh; run; /*Check #12*/ /*Invalid behavior*/ %let rr=12; Data &HOSP&rr; set &HOSP; array behave (6) behave1 behave2 behave3 behave4 behave8 behave9; Do i=1 to 6; If behave(i)=. then behave(i)=0; End; run; proc sql; create table &HOSP&rr.a as select caseid,behave1,behave2,behave2days,behave3,behave3days,behave4,behave4days,behave8,behave9,edvisitdate,ipadmdate, dateill from &HOSP&rr where behave2=1 and behave2days=. or behave3=1 and behave3days=. or behave4=1 and behave4days=. or (edvisitdate or ipadmdate)-dateill > (behave2days or behave3days or behave4days) order by caseid; %let check&rr=%str(Invalid behave/behave Dates); %let check&rr.b=%str(Behave/Behave dates Distribution); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; proc freq data=&HOSP&rr; tables behave1 behave2 behave3 behave4 behave8 behave9; title2 "&check&rr.b"; run; /*Check #13*/ /*Invalid therapies/medicines*/ %let rr=13; Data &HOSP&rr; set &HOSP; array therapy (6) oralrehydra--irtherapy; Do i=1 to 6; If therapy(i)=. or therapy(i) ^in(0,1,8,9)then invalid='Yes'; End; run; Proc sql; create table &HOSP&rr.a as select caseid, oralrehydra,antipyretic,antibiotic,antidiarrhetic, antivomiting,irtherapy,invalid from &HOSP&rr where invalid='Yes' order by caseid; %let check&rr=%str(Invalid therapy/medicine); %let check&rr.b=%str(Therapy/Medicine Distribution); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; proc freq data=&HOSP&rr; tables oralrehydra--irtherapy; title2 "&check&rr.b"; run; /*Check #14*/ /*Invalid seekcare*/ %let rr=14; proc sql; create table &HOSP&rr as select caseid,seekcare from &HOSP where seekcare = ' ' or seekcare ^in('1','2','3','4','5','6','7','8','9') order by caseid; %let check&rr=%str(Invalid seekcare); %let check&rr.b=%str(Seekcare Distribution); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; proc freq data=&HOSP; tables seekcare; title2 "&check&rr.b"; run; /*Check #15*/ /*Invalid race*/ *** This needs a bit of work***; %let rr=15; proc sql; create table &HOSP&rr as select caseid,hispanic,racewh,racebl,raceind,raceas,raceha,raceoth,raceno,raceun,raceref from &HOSP where hispanic = . or hispanic ^in(0,1,8,9) or (racewh or racebl or raceind or raceas or raceha or raceoth or raceno or raceun or raceref) ^in(.,0,1) order by caseid; %let check&rr=%str(Invalid race); %let check&rr.b=%str(Race Distribution); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; proc freq data=&HOSP; tables hispanic--raceref; title2 "&check&rr.b"; run; /*Check #16*/ /*Invalid bearly*/ %let rr=16; proc sql; create table &HOSP&rr as select caseid,bearly,bwks,bwtlbs,bwtoz,bwtgms from &HOSP where bearly=. or bearly ^in(0,1,8,9) or bearly=1 and bwks =. or (bwtlbs or bwtoz)=. or bwtoz ^in(88,99) and bwtoz >16 order by caseid; %let check&rr=%str(Invalid bearly/weight); %let check&rr.b=%str(Bearly Distribution); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; proc freq data=&HOSP; tables bearly; title2 "&check&rr.b"; run; Data &HOSP.wt; set &HOSP; if bwtlbs in(88,99) then bwtlbs=.; run; proc means mean min max ; var bwtlbs; run; /*Check #17*/ /*Invalid breastfeeding*/ %let rr=17; proc sql; create table &HOSP&rr as select caseid,breastf,breastfstill,breastfstop from &HOSP where breastf=. or breastf ^in(0,1,8,9) or breastf=1 and breastfstill =. or breastfstill ^in(.,0,1,8,9) or breastfstill=0 and breastfstop=. order by caseid; %let check&rr=%str(Invalid breastfeeding); %let check&rr.b=%str(Breastfeeding Distribution); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; proc freq data=&HOSP; tables breastf breastfstill; title2 "&check&rr.b"; run; Data &HOSP.bfeed; set &HOSP; if breastfstop in(77,88,99) then breastfstop=.; run; proc means mean min max ; var breastfstop; run; /*Check #18*/ /*Invalid daycare*/ %let rr=18; proc sql; create table &HOSP&rr as select caseid,daycare,dcnum from &HOSP where daycare=. or daycare ^in(0,1,8,9) or daycare=1 and dcnum=' ' order by caseid; %let check&rr=%str(Invalid daycare); %let check&rr.b=%str(daycare/dcnum Distribution); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; proc freq data=&HOSP; tables daycare dcnum; title2 "&check&rr.b"; run; /*Check #19*/ /*Invalid household members*/ %let rr=19; proc sql; create table &HOSP&rr as select caseid,totppl,totadult,tot13_17yr,tot5_12yr,tot2_4yr,tot6_23mo,totlt6mo from &HOSP where totppl =. or totppl ^= (totadult + tot13_17yr + tot5_12yr + tot2_4yr + tot6_23mo + totlt6mo) order by caseid; %let check&rr=%str(Invalid household members); %let check&rr.b=%str(Household member Distribution); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; proc means data=&HOSP mean min max; var totppl totadult tot13_17yr tot5_12yr tot2_4yr tot6_23mo totlt6mo; title2 "&check&rr.b"; run; /*Check #20*/ /*Invalid caregiver*/ %let rr=20; proc sql; create table &HOSP&rr as select caseid,maincare,careage,careeduc,caredeg from &HOSP where maincare=' ' or maincare ^in('1','2','3','4','5','6','8','9') or careage =. or careeduc=' ' or caredeg=' ' or caredeg ^in('0','1','2','3','4','8','9') order by caseid; %let check&rr=%str(Invalid caregiver); %let check&rr.b=%str(Caregiver Distribution); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; proc freq data=&HOSP; table maincare careeduc caredeg; title2 "&check&rr.b"; run; proc means data=&HOSP mean min max; var careage; title2 "&check&rr.b"; run; /* Data checks - Inpatient Form */ /*Check #21*/ /*Invalid abdate/abini*/ %let rr=21; proc sql; create table &HOSP&rr as select caseid,abdate,abini from &HOSP where abdate=. or abdate <"&startdate"d or abdate >"&enddate"d or abini = ' ' order by caseid; %let check&rr=%str(Invalid abdate/abini); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; /*Check #22*/ /*Invalid insurance*/ %let rr=22; proc sql; create table &HOSP&rr as select caseid,insur,insplan from &HOSP where insur =. or insur ^ in(0,1,8,9) or insur=1 and insplan=' ' or insplan ^in(' ','0','1','2','8') order by caseid; %let check&rr=%str(Invalid insurance); %let check&rr.b=%str(Insurance Distribution); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; proc freq data=&HOSP; tables insur insplan; title2 "&check&rr.b"; run; /*Check #23*/ /*Invalid ed/inpatient visit date*/ %let rr=23; proc sql; create table &HOSP&rr as select caseid,ipadmdate,edvisitdate, ipdisdate from &HOSP where (ipadmdate and edvisitdate)=. or ipadmdate ne . and edvisitdate ne . or ipadmdate ne . and (ipadmdate <"&startdate"d or ipadmdate >"&enddate"d) or (ipadmdate ne . and ipdisdate =.) or (ipdisdate ne . and (ipdisdate <"&startdate"d or ipdisdate >"&enddate"d )) order by caseid; %let check&rr=%str(Invalid ipadmdate); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; /*Check #24*/ /*Invalid ICU*/ %let rr=24; proc sql; create table &HOSP&rr as select caseid,iphicu,iphicudays,ivfluids,ipadmdate from &HOSP where ipadmdate ne . and (iphicu =. or ivfluids =.) or iphicu ^in(.,0,1,8,9) or ivfluids ^in(.,0,1,8,9)or iphicu=1 and iphicudays = . order by caseid; %let check&rr=%str(Invalid iphicu/ivfluids); %let check&rr.b=%str(Insurance Distribution); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; proc freq data=&HOSP; tables iphicu ivfluids; title2 "&check&rr.b"; run; /*Check #25*/ /*Invalid temp*/ %let rr=25; proc sql; create table &HOSP&rr as select caseid,maxtemp,measurebych,measureothch from &HOSP where maxtemp=. or maxtemp ^in(.,888) and measurebych =' ' or measurebych='4' and measureothch=' ' order by caseid; %let check&rr=%str(Invalid temp); %let check&rr.b=%str(Measureby Distribution); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; proc freq data=&HOSP; tables measurebych; title2 "&check&rr.b"; run; /*Check #26*/ /*Invalid ipoutcome*/ %let rr=26; proc sql; create table &HOSP&rr as select caseid,ipoutcome,ipadmdate,iptranshos,iptranout from &HOSP where ipadmdate ne . and ipoutcome = ' ' or ipoutcome ^in(' ','0','1','2','8') or ipoutcome='2' and (iptranshos =' ' or iptranout =' ') order by caseid; %let check&rr=%str(Invalid ipoutcome); %let check&rr.b=%str(Ip outcome Distribution); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; proc freq data=&HOSP; tables ipoutcome iptranout; title2 "&check&rr.b"; run; /*Check #27*/ /*Invalid ipdisdx*/ %let rr=27; proc sql; create table &HOSP&rr as select caseid,ipdisdx1,ipdisdx12,ipdisicd1, ipdisicd20, ipdisdxmore,ipadmdate from &HOSP where (ipadmdate ne . and ipdisdx1 = ' ') or (ipdisdx12 ne ' ' and ipdisdxmore = .) or (ipadmdate ne . and ipdisicd1=' ') or (ipdisicd20 ne ' ' and ipdisicdmore = .) order by caseid; %let check&rr=%str(Invalid discharge diagnosis); %let check&rr.b=%str(Discharge Distribution); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; proc freq data=&HOSP; tables ipdisdx1 ipdisicd1; title2 "&check&rr.b"; run; /*Check #28*/ /*Invalid ipshortstay*/ %let rr=28; proc sql; create table &HOSP&rr as select caseid,ipshortstay,ipadmdate from &HOSP where ipadmdate ne . and ipshortstay = ' ' order by caseid; %let check&rr=%str(Invalid shortstay); %let check&rr.b=%str(shortstay Distribution); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; proc freq data=&HOSP; tables ipshortstay; title2 "&check&rr.b"; run; /*Check #29*/ /*Invalid other visits*/ %let rr=29; proc sql; create table &HOSP&rr as select caseid,ipadmdate,othervisit,otherage,spechospres,spechospres2,tresult from &HOSP where (spechospres ='0' or spechospres2='0') and othervisit=. or (tresult='0' and othervisit=.) or othervisit=1 and otherage=. order by caseid; %let check&rr=%str(Invalid other visit); %let check&rr.b=%str(other visit Distribution); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; proc freq data=&HOSP; tables othervisit otherage tresult spechospres spechospres2; title2 "&check&rr.b"; run; /*Check #30*/ /*Invalid other specimen*/ %let rr=30; proc sql; create table &HOSP&rr as select caseid,ipadmdate,otherage,othereddate,otheripdate,otherstool,othercoldat,otherresult from &HOSP where otherage=1 and (othereddate and otheripdate) = . or otherage=1 and otherstool =. or otherstool=1 and othercoldat=. or otherstool=1 and otherresult= ' ' order by caseid; %let check&rr=%str(Invalid other specimen); %let check&rr.b=%str(other specimen Distribution); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; proc freq data=&HOSP; tables otherstool otherresult; title2 "&check&rr.b"; run; /*Check #31*/ /*Invalid other specimen*/ %let rr=31; proc sql; create table &HOSP&rr as select caseid,othereddate2,otheripdate2,otherstool2,othercoldat2,otherresult2,othermore from &HOSP where otheripdate2 ne . and otherstool2 =. or othereddate2 ne . and otherstool2 =. or otherstool2=1 and othercoldat2=. or otherstool2=1 and otherresult2=' ' or otherstool2 ne . and othermore=. order by caseid; %let check&rr=%str(Invalid other specimen); %let check&rr.b=%str(other specimen Distribution); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; proc freq data=&HOSP; tables otherstool otherresult; title2 "&check&rr.b"; run; /*Check #32*/ /*Invalid edvisitdate*/ %let rr=32; proc sql; create table &HOSP&rr as select caseid,edvisitdate,ipadmdate from &HOSP where edvisitdate ne . and ipadmdate ne . or (edvisitdate ne . and (edvisitdate <"&startdate"d or edvisitdate >"&enddate"d)) order by caseid; %let check&rr=%str(Invalid edvisitdate); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; /*Check #33*/ /*Invalid acuity*/ %let rr=33; proc sql; create table &HOSP&rr as select caseid,edvisitdate,edacuity from &HOSP where edvisitdate ne . and edacuity =. order by caseid; %let check&rr=%str(Invalid acuity); %let check&rr.b=%str(Acuity Distribution); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; proc freq data=&HOSP; tables edacuity; title2 "&check&rr.b"; run; /*Check #34*/ /*Invalid edoutcome*/ %let rr=34; proc sql; create table &HOSP&rr as select caseid,edoutcome,edtranshos, edvisitdate from &HOSP where edvisitdate ne . and edoutcome = ' ' or edoutcome ^in(' ','0','1','2','3','8') or edoutcome='3' and edtranshos=' ' order by caseid; %let check&rr=%str(Invalid edoutcome); %let check&rr.b=%str(Edoutcome Distribution); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; proc freq data=&HOSP; tables edoutcome; title2 "&check&rr.b"; run; /*Check #35*/ /*Invalid ed discharge diagnosis*/ %let rr=35; proc sql; create table &HOSP&rr as select caseid,eddisdx1,eddisicd1,edvisitdate from &HOSP where edvisitdate ne . and (eddisdx1=' ' or eddisicd1=' ') order by caseid; %let check&rr=%str(Invalid ED discharge diagnosis); %let check&rr.b=%str(Discharge Diagnosis Distribution); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; proc freq data=&HOSP; tables eddisdx1 eddisicd1; title2 "&check&rr.b"; run; /*Check #36*/ /*Invalid ed admitted*/ %let rr=36; proc sql; create table &HOSP&rr as select caseid,edvisitdate,edoutadm,edoutadmdt,edsurday,edinpelig,edinelig,edineligother from &HOSP where (edvisitdate ne . and edoutadm =.) or edoutadm =1 and (edoutadmdt =. or edsurday =.) or (edsurday=1 and edinpelig=.) or (edinpelig=0 and edinelig=' ') order by caseid; %let check&rr=%str(Invalid ED admission); %let check&rr.b=%str(ED admit Distribution); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; proc freq data=&HOSP; tables edoutadm edsurday edinpelig edinelig; title2 "&check&rr.b"; run; /*Check #37*/ /*Invalid lab testing*/ %let rr=37; proc sql; create table &HOSP&rr as select caseid,datadate,dataini,specimencol,coldat,spechosp,spechospdat,spechospres from &HOSP where datadate=. or dataini=' ' or specimencol=. or specimencol=1 and coldat=. or spechosp=. or spechosp=1 and (spechospdat=. or spechospres=' ') order by caseid; %let check&rr=%str(Invalid Lab Results); %let check&rr.b=%str(Lab results Distribution); ods proclabel "&HOSP Check&rr:&check&rr"; proc print noobs label; title2 "&HOSP Check&rr:&check&rr"; run; proc freq data=&HOSP; tables specimencol specimentest treason specimentype tresult; title2 "&check&rr.b"; run; ods pdf close;