/* remerge-with-addresses-09jan01.sas directory: C:\Documents and Settings\John Bailer\ My Documents\baileraj\Grants\ODHS-oct98\SAS-programs modified: merge-mds-odh-31jan2000.sas */ /* data files -- MDS-Plus quarterly surveys -- one record per facility *** includes 2 separate fixes for invalid H20 entries in the ODH data (based on fix1-nomatch-31jan2000.sas and fix2-*.sas) */ Libname insas "d:\baileraj\grants\odhs-oct98\Datasets"; **** changed 5jul00; /* data mdsmar98; set insas.summar98; matcher = provider; * <-- no observations!!! ; */ data mdsdec97; set insas.sumdec97; matcher = provider; keep matcher provider casebar casemed caseq1 caseq3 agebar agemed ageq1 ageq3 rugrp1-rugrp45 quarter numres; data mdssep97; set insas.sumsep97; matcher = provider; keep matcher provider casebar casemed caseq1 caseq3 agebar agemed ageq1 ageq3 rugrp1-rugrp45 quarter numres; data mdsjun97; set insas.sumjun97; matcher = provider; keep matcher provider casebar casemed caseq1 caseq3 agebar agemed ageq1 ageq3 rugrp1-rugrp45 quarter numres; data mdsmar97; set insas.summar97; matcher = provider; keep matcher provider casebar casemed caseq1 caseq3 agebar agemed ageq1 ageq3 rugrp1-rugrp45 quarter numres; data mdsdec96; set insas.sumdec96; matcher = provider; keep matcher provider casebar casemed caseq1 caseq3 agebar agemed ageq1 ageq3 rugrp1-rugrp45 quarter numres; data mdssep96; set insas.sumsep96; matcher = provider; keep matcher provider casebar casemed caseq1 caseq3 agebar agemed ageq1 ageq3 rugrp1-rugrp45 quarter numres; data mdsjun96; set insas.sumjun96; matcher = provider; keep matcher provider casebar casemed caseq1 caseq3 agebar agemed ageq1 ageq3 rugrp1-rugrp45 quarter numres; data mdsmar96; set insas.summar96; matcher = provider; keep matcher provider casebar casemed caseq1 caseq3 agebar agemed ageq1 ageq3 rugrp1-rugrp45 quarter numres; data mdsdec95; set insas.sumdec95; matcher = provider; keep matcher provider casebar casemed caseq1 caseq3 agebar agemed ageq1 ageq3 rugrp1-rugrp45 quarter numres; data mdssep95; set insas.sumsep95; matcher = provider; keep matcher provider casebar casemed caseq1 caseq3 agebar agemed ageq1 ageq3 rugrp1-rugrp45 quarter numres; data mdsjun95; set insas.sumjun95; matcher = provider; keep matcher provider casebar casemed caseq1 caseq3 agebar agemed ageq1 ageq3 rugrp1-rugrp45 quarter numres; data mdsmar95; set insas.summar95; matcher = provider; keep matcher provider casebar casemed caseq1 caseq3 agebar agemed ageq1 ageq3 rugrp1-rugrp45 quarter numres; /* data files -- ODH annual surveys */ libname inodh "d:\baileraj\grants\odhs-oct98\ODHS-survey"; /* set up to include some text for fixing mismatched records */ filename job95 "d:\baileraj\grants\odhs-oct98\SAS-programs"; data odh95; set inodh.odh95all; %include job95(fix1-nomatch-31jan2000); * 1st set of fixes - ifix1 defined; %include job95(fix2-nomatch-31jan2000); * 2nd set of fixes - ifix2 defined; if ifix1=0 and ifix2=0 then matcher=substr(h20,1,7); * matcher = h20; if H19B>0 or H19C>0; * if H19B + H19C > 0; * restrict to Medicaid certified; facname = a1b; facadd = a1c; faccity = a1d; facstat = a1e; faczip = a1f; facphone = a1h; county = a1g; orgtype = b1; license = b2a; palzday = .; if e1b1 > 0 then palzday = b4c/e1b1; * proportion alzheimer days; adjbed = NF_BEDS; * adjusted bed capacity; * adjbed = h18; * adjusted bed capacity; pmcarebd = .; pmcaidbd = .; if h9 > 0 then do; pmcarebd = h19b/h9; * proportion medicare beds; pmcaidbd = h19c/h9; * proportion medicaid beds; end; ventil = ""; * ventilator data missing in 95 and 96; nurshrs = (c1d1 + c1e1)*36 + (c1d4 + c1e4)*18; * nurse hours; aidehrs = c1f1*36 + c1f4*18; * aide hours; therhrs = (c1j1 +c1k1 + c1l1 + c1m1 + c1p1)*36 + (c1j4 +c1k4 + c1l4 + c1m4 + c1p4)*18; * therapy hours; occpncy = .; admperbd = .; dthperbd=.; if h18 > 0 then do; occpncy = (e1b1-e1b7)/(NF_BEDS*365.25); * proportion of beds occupied in a year; admperbd = (e1c1-e1c7)/NF_BEDS; * admission per bed available; dthperbd = (e1e1-e1e7)/NF_BEDS; * dead per bed available; * modified to use NF_BEDS instead of h18 (24 July 00); * modified to remove rest home beds -- non-MDS stuff (19 July 00); end; pprivpay=.; pmcarepy=.; pmcaidpy=.; if e7i > 0 then do; pprivpay = (e7e1+e7e2+e7e3)/e7i; * proportion private pay; pmcarepy = e7a/e7i; * proportion medicare pay; pmcaidpy = e7c/e7i; * proportion medicaid pay; end; mcareavg = g1a; * avg. $ medicare per day; mcaidavg = g1b; * avg. $ medicaid per day; privavg = g1d3; * avg. $ private pay per day; rename provider=nprovidr; * defined as NUMERIC in conflict with MDS CHARACTER; keep h20 matcher--privavg ifix1 ifix2; /* intermediate printing of 1995 ODH data <--------------------------<< */ /* proc sort data=odh95; by ifix; proc print data=odh95; by ifix; title 1995 ODH data; var matcher H20; run; */ data odh96; set inodh.odh96all; %include job95(fix1-nomatch-31jan2000); * 1st set of fixes - ifix1 defined; %include job95(fix2-nomatch-31jan2000); * 2nd set of fixes - ifix2 defined; if ifix1=0 and ifix2=0 then matcher=substr(h20,1,7); * matcher = h20; if H19B>0 or H19C>0; * if H19B + H19C > 0; * restrict to Medicaid certified; facname = a1b; facadd = a1c; faccity = a1d; facstat = a1e; faczip = a1f; facphone = a1h; county = a1g; orgtype = b1; license = b2a; palzday = .; if e1b1 > 0 then palzday = b4c/e1b1; * proportion alzheimer days; adjbed = NF_BEDS; * adjusted bed capacity; * adjbed = h18; * adjusted bed capacity; pmcarebd = .; pmcaidbd = .; if h9 > 0 then do; pmcarebd = h19b/h9; * proportion medicare beds; pmcaidbd = h19c/h9; * proportion medicaid beds; end; ventil = ""; * ventilator data missing in 95 and 96; nurshrs = (c1d1 + c1e1)*36 + (c1d4 + c1e4)*18; * nurse hours; aidehrs = c1f1*36 + c1f4*18; * aide hours; therhrs = (c1j1 +c1k1 + c1l1 + c1m1 + c1p1)*36 + (c1j4 +c1k4 + c1l4 + c1m4 + c1p4)*18; * therapy hours; occpncy = .; admperbd = .; dthperbd=.; if h18 > 0 then do; occpncy = (e1b1-e1b7)/(NF_BEDS*365.25); * proportion of beds occupied in a year; admperbd = (e1c1-e1c7)/NF_BEDS; * admission per bed available; dthperbd = (e1e1-e1e7)/NF_BEDS; * dead per bed available; * modified to use NF_BEDS instead of h18 (24 July 00); * modified to remove rest home beds -- non-MDS stuff (19 July 00); end; pprivpay=.; pmcarepy=.; pmcaidpy=.; if e7i > 0 then do; pprivpay = (e7e1+e7e2+e7e3)/e7i; * proportion private pay; pmcarepy = e7a/e7i; * proportion medicare pay; pmcaidpy = e7c/e7i; * proportion medicaid pay; end; mcareavg = g1a; * avg. $ medicare per day; mcaidavg = g1b; * avg. $ medicaid per day; privavg = g1d3; * avg. $ private pay per day; a1anum = a1a*1.; * coerce a1a to numeric (currently character in odh96); rename provider=nprovidr; * defined as NUMERIC in conflict with MDS CHARACTER; keep a1anum h20 matcher--privavg ifix1 ifix2; /* intermediate printing of 1996 ODH data <-------------------------<< */ /* proc sort data=odh96; by ifix; proc print data=odh96; by ifix; title 1996 ODH data; var matcher H20; run; */ /* 1997 does not have H20 defined and organiz. type is also not defined! */ data odh97; set inodh.odh97all; data junk96a; set odh96; keep a1anum h20 orgtype matcher ifix1 ifix2; data junk96b; set junk96a; a1a = a1anum; drop a1anum; proc sort data=junk96b out=s96; by a1a; data s96; set s96; keep a1a h20 matcher ifix1 ifix2; proc sort data=odh97 out=s97; by a1a; data newodh97; merge s97 s96; by a1a; * matcher = h20; if H19B>0 or H19C>0; * if H19B + H19C > 0; * restrict to Medicaid certified; facname = a1b; facadd = a1c; faccity = a1d; facstat = a1e; faczip = a1f; facphone = a1h; county = a1g; palzday = .; if e1b1 > 0 then palzday = alz1c/e1b1; * proportion alzheimer days; adjbed = NF_BEDS; * adjusted bed capacity; * adjbed = h18; * adjusted bed capacity; pmcarebd = .; pmcaidbd = .; if h9 > 0 then do; pmcarebd = h19b/h9; * proportion medicare beds; pmcaidbd = h19c/h9; * proportion medicaid beds; end; ventil = vent2a; * ventilator data missing in 95 and 96; nurshrs = (c1d1 + c1e1)*36 + (c1d4 + c1e4)*18; * nurse hours; aidehrs = c1f1*36 + c1f4*18; * aide hours; therhrs = (c1j1 +c1k1 + c1l1 + c1m1 + c1p1)*36 + (c1j4 +c1k4 + c1l4 + c1m4 + c1p4)*18; * therapy hours; occpncy = .; admperbd = .; dthperbd=.; if h18 > 0 then do; occpncy = (e1b1-e1bR)/(NF_BEDS*365.25); * proportion of beds occupied in a year; admperbd = (e1c1-e1cR)/NF_BEDS; * admission per bed available; dthperbd = (e1e1-e1eR)/NF_BEDS; * dead per bed available; * modified to use NF_BEDS instead of h18 (24 July 00); * modified to remove rest home beds -- non-MDS stuff (19 July 00); end; pprivpay=.; pmcarepy=.; pmcaidpy=.; if e7i > 0 then do; pprivpay = (e7e1+e7e2+e7e3)/e7i; * proportion private pay; pmcarepy = e7a/e7i; * proportion medicare pay; pmcaidpy = e7c/e7i; * proportion medicaid pay; end; mcareavg = g1a; * avg. $ medicare per day; mcaidavg = g1b; * avg. $ medicaid per day; privavg = g1d3; * avg. $ private pay per day; keep h20 matcher--privavg ifix1 ifix2; run; /* try to merge */ /* SORT the ODH annual data */ proc sort data=odh95 out=sodh95; by matcher; proc sort data=odh96 out=sodh96; by matcher; proc sort data=newodh97 out=sodh97; by matcher; /* SORT all of the MDS quarterly data */ proc sort data=mdsmar95 out=smar95; by matcher; proc sort data=mdsmar96 out=smar96; by matcher; proc sort data=mdsmar97 out=smar97; by matcher; proc sort data=mdsjun95 out=sjun95; by matcher; proc sort data=mdsjun96 out=sjun96; by matcher; proc sort data=mdsjun97 out=sjun97; by matcher; proc sort data=mdssep95 out=ssep95; by matcher; proc sort data=mdssep96 out=ssep96; by matcher; proc sort data=mdssep97 out=ssep97; by matcher; proc sort data=mdsdec95 out=sdec95; by matcher; proc sort data=mdsdec96 out=sdec96; by matcher; proc sort data=mdsdec97 out=sdec97; by matcher; /* now merge each quarter's MDS with the annual ODH demographic data */ data mermar95; merge smar95 sodh95; by matcher; data mermar96; merge smar96 sodh96; by matcher; data mermar97; merge smar97 sodh97; by matcher; run; data merjun95; merge sjun95 sodh95; by matcher; data merjun96; merge sjun96 sodh96; by matcher; data merjun97; merge sjun97 sodh97; by matcher; run; data mersep95; merge ssep95 sodh95; by matcher; data mersep96; merge ssep96 sodh96; by matcher; data mersep97; merge ssep97 sodh97; by matcher; run; data merdec95; merge sdec95 sodh95; by matcher; data merdec96; merge sdec96 sodh96; by matcher; data merdec97; merge sdec97 sodh97; by matcher; run; /* now comes the fun ... combine all of the data sets ... */ data y95; set mermar95 merjun95 mersep95 merdec95; run; data y96; set mermar96 merjun96 mersep96 merdec96; run; data y97; set mermar97 merjun97 mersep97 merdec97; run; data y9596; set y95 y96; run; data y959697; set y9596 y97; if numres > 0; * delete facilities with zero residents reported (19jul00); run; data insas.ny959697; set y959697; if county="ASHT" or county="CUYA" or county="GEAU" or county="LAKE" or county="LORA" or county="MEDI" or county="PORT" or county="SUMM" then geopeer = "NECMSA"; else if county="BROW" or county="BUTL" or county="CLER" or county="HAMI" or county="WARR" then geopeer = "SWCMSA"; else if county="FULT" or county="LUCA" or county="WOOD" or county="ALLE" or county="AUGL" or county="MONT" or county="MIAM" or county="CLAR" or county="GREE" or county="CRAW" or county="RICH" or county="DELA" or county="LICK" or county="FRAN" or county="MADI" or county="PICK" or county="FAIR" or county="LAWR" or county="STAR" or county="CARR" or county="TRUM" or county="MAHO" or county="COLU" or county="JEFF" or county="BELM" or county="WASH" then geopeer = "MSA"; * spelled out OTHER geopeer counties ... 5 july 2000; else if county="WILL" or county="DEFI" or county="PAUL" or county="VANW" or county="MERC" or county="DARK" or county="PREB" or county="HENR" or county="PUTN" or county="SHEL" or county="HANC" or county="HARD" or county="LOGA" or county="CHAM" or county="CLIN" or county="HIGH" or county="ADAM" or county="FAYE" or county="UNIO" or county="MARI" or county="WYAN" or county="SENE" or county="SAND" or county="OTTA" or county="ERIE" or county="HURO" or county="UNIO" or county="MORR" or county="ROSS" or county="PIKE" or county="SCIO" or county="ASHL" or county="KNOX" or county="HOCK" or county="VINT" or county="JACK" or county="GALL" or county="MEIG" or county="ATHE" or county="PERR" or county="MUSK" or county="COSH" or county="HOLM" or county="WAYN" or county="TUSC" or county="GUER" or county="NOBL" or county="MORG" or county="MONR" then geopeer ="OTHER"; else geopeer=" "; if geopeer="NECMSA" or geopeer="SWCMSA" or geopeer="MSA" then urban=1; else if geopeer="OTHER " then urban=0; else urban=.; * defined per capita hours variables; pnurshrs = nurshrs/adjbed; * by # of beds 25 July 2000; paidehrs = aidehrs/adjbed; * hrs/bed/week; ptherhrs = therhrs/adjbed; if pnurshrs <=30 AND paidehrs <=30 and ptherhrs <=15; * eliminating impossible values; if orgtype <=3 then corgtype = "for profit"; else if orgtype <=6 then corgtype = "non profit"; * grouping orgtype; else if orgtype <=9 then corgtype = " public"; * 25 july 2000 ; if occpncy >=1 then occpncy=.; * set occupancy>=1 to missing 25july2000; run; data insas.ndec97; set insas.ny959697; if quarter="dec97"; run; /* proc sort; by quarter; proc means data=insas.ny959697; by quarter; var occpncy admperbd dthperbd pnurshrs paidehrs ptherhrs; run; */ /* proc freq data=insas.ny959697; table county*geopeer geopeer*urban; run; */ proc contents data=insas.ny959697; run; /* data testjunk; set insas.y959697; imatch = (matcher EQ provider); inomissn = (matcher NE " ") and (provider NE " "); * if quarter = "sep97"; proc freq data=testjunk; table ifix1 ifix2 ifix1*ifix2 imatch imatch*ifix1 imatch*ifix2; run; proc sort data=testjunk; by imatch inomissn matcher; proc print data=testjunk; var imatch inomissn matcher h20 facname provider quarter ifix1 ifix2 agebar casebar; run; data test2; set testjunk; if imatch=0 or inomissn=0; run; proc sort data=test2; by h20 facname; proc print data=test2; title PRINT of not matched or not missing; var imatch inomissn matcher h20 facname provider quarter ifix1 ifix2 agebar casebar; run; proc sort data=test2; by h20 facname provider; proc print data=test2; var facname h20 county provider casebar; run; data bigboy; set mermar95 merjun95 mersep95 merdec95 mermar96 merjun96 mersep96 merdec96 mermar97 merjun97 mersep97 merdec97; run; */ /* data mermar97; merge smar97 sodh97; by matcher; run; proc print data=mermar95; var matcher provider h20 a1b a1g b1 b2a h1 agebar casebar; run; proc print data=mermar97; var matcher provider id a1b a1g b1 b2a h1 agebar casebar; run; proc contents p data=smar95; run; proc contents p data=sodh95; run; proc contents p data=smar97; run; proc contents p data=sodh97; run; */