I've written code that will allow me to create quality control charts for each of 10 categories for my entire institution, then again for each of those 10 categories broken down by department (this ends up being a few hundred graphs each time the report is run. I'd like somehow combine these graphs into one Word document as they group logically (each category for the institution, then one for each department), but have hit a wall when I try to code this in Mata. Is anyone aware of a way to automate this process? I have the loops of code posted below for your reference, excluding the attempts to port these into Word. I realize the code might be messy...but it does work as intended.
Thank you!
Sam
--
foreach c in `category' {
local catlab : label category `c'
sum yvar if category==`c' & monthyear<`intdate'
gen preaverage=r(mean)
gen presd=preaverage+r(sd)
gen pretwosd=preaverage+(2*r(sd))
gen preminsd=preaverage+(-1*r(sd))
gen premintwosd=preaverage+(-2*r(sd))
sum yvar if category==`c' & monthyear>=`intdate'
gen postaverage=r(mean)
gen postsd=postaverage+r(sd)
gen posttwosd=postaverage+(2*r(sd))
gen postminsd=postaverage+(-1*r(sd))
gen postmintwosd=postaverage+(-2*r(sd))
twoway (scatter yvar monthyear if category==`c'), ///
title("`catlab' utilization") ///
ytitle("YVar") ///
xtitle("Month / Year") ///
subtitle("`reportperiod'") ///
xlabel(#6, angle(forty_five)) ///
xmtick(##6) ///
legend(off) || ///
(line preaverage monthyear if monthyear<`intdate') || ///
(line presd monthyear if monthyear<`intdate', lcolor(black) lpattern(dash)) || ///
(line pretwosd monthyear if monthyear<`intdate', lcolor(black)) || ///
(line preminsd monthyear if monthyear<`intdate', lcolor(black) lpattern(dash)) || ///
(line premintwosd monthyear if monthyear<`intdate', lcolor(black)) ///
(line postaverage monthyear if monthyear>=`intdate') || ///
(line postsd monthyear if monthyear>=`intdate', lcolor(black) lpattern(dash)) || ///
(line posttwosd monthyear if monthyear>=`intdate', lcolor(black)) || ///
(line postminsd monthyear if monthyear>=`intdate', lcolor(black) lpattern(dash)) || ///
(line postmintwosd monthyear if monthyear>=`intdate', lcolor(black))
drop preaverage presd pretwosd preminsd premintwosd postaverage postsd posttwosd postminsd postmintwosd
graph save Graph
}
foreach s in `dept' {
local deptlab : label service `s'
foreach c in `category' {
local catlab : label category `c'
local catlab : label category `c'
sum yvar if category==`c' & service==`s' & monthyear<`intdate'
gen preaverage=r(mean)
gen presd=preaverage+r(sd)
gen pretwosd=preaverage+(2*r(sd))
gen preminsd=preaverage+(-1*r(sd))
gen premintwosd=preaverage+(-2*r(sd))
sum yvar if category==`c' & service==`s' & monthyear>=`intdate'
gen postaverage=r(mean)
gen postsd=postaverage+r(sd)
gen posttwosd=postaverage+(2*r(sd))
gen postminsd=postaverage+(-1*r(sd))
gen postmintwosd=postaverage+(-2*r(sd))
twoway (scatter yvar monthyear if category==`c' & service==`s'), ///
title("`deptlab' `catlab' utilization") ///
ytitle("YVar Patient Days") ///
xtitle("Month / Year") ///
subtitle("`reportperiod'") ///
xlabel(#6, angle(forty_five)) ///
xmtick(##6) ///
legend(off) || ///
(line preaverage monthyear if monthyear<`intdate') || ///
(line presd monthyear if monthyear<`intdate', lcolor(black) lpattern(dash)) || ///
(line pretwosd monthyear if monthyear<`intdate', lcolor(black)) || ///
(line preminsd monthyear if monthyear<`intdate', lcolor(black) lpattern(dash)) || ///
(line premintwosd monthyear if monthyear<`intdate', lcolor(black)) ///
(line postaverage monthyear if monthyear>=`intdate') || ///
(line postsd monthyear if monthyear>=`intdate', lcolor(black) lpattern(dash)) || ///
(line posttwosd monthyear if monthyear>=`intdate', lcolor(black)) || ///
(line postminsd monthyear if monthyear>=`intdate', lcolor(black) lpattern(dash)) || ///
(line postmintwosd monthyear if monthyear>=`intdate', lcolor(black))
drop preaverage presd pretwosd preminsd premintwosd postaverage postsd posttwosd postminsd postmintwosd
graph save Graph
}
}
Thank you!
Sam
--
foreach c in `category' {
local catlab : label category `c'
sum yvar if category==`c' & monthyear<`intdate'
gen preaverage=r(mean)
gen presd=preaverage+r(sd)
gen pretwosd=preaverage+(2*r(sd))
gen preminsd=preaverage+(-1*r(sd))
gen premintwosd=preaverage+(-2*r(sd))
sum yvar if category==`c' & monthyear>=`intdate'
gen postaverage=r(mean)
gen postsd=postaverage+r(sd)
gen posttwosd=postaverage+(2*r(sd))
gen postminsd=postaverage+(-1*r(sd))
gen postmintwosd=postaverage+(-2*r(sd))
twoway (scatter yvar monthyear if category==`c'), ///
title("`catlab' utilization") ///
ytitle("YVar") ///
xtitle("Month / Year") ///
subtitle("`reportperiod'") ///
xlabel(#6, angle(forty_five)) ///
xmtick(##6) ///
legend(off) || ///
(line preaverage monthyear if monthyear<`intdate') || ///
(line presd monthyear if monthyear<`intdate', lcolor(black) lpattern(dash)) || ///
(line pretwosd monthyear if monthyear<`intdate', lcolor(black)) || ///
(line preminsd monthyear if monthyear<`intdate', lcolor(black) lpattern(dash)) || ///
(line premintwosd monthyear if monthyear<`intdate', lcolor(black)) ///
(line postaverage monthyear if monthyear>=`intdate') || ///
(line postsd monthyear if monthyear>=`intdate', lcolor(black) lpattern(dash)) || ///
(line posttwosd monthyear if monthyear>=`intdate', lcolor(black)) || ///
(line postminsd monthyear if monthyear>=`intdate', lcolor(black) lpattern(dash)) || ///
(line postmintwosd monthyear if monthyear>=`intdate', lcolor(black))
drop preaverage presd pretwosd preminsd premintwosd postaverage postsd posttwosd postminsd postmintwosd
graph save Graph
}
foreach s in `dept' {
local deptlab : label service `s'
foreach c in `category' {
local catlab : label category `c'
local catlab : label category `c'
sum yvar if category==`c' & service==`s' & monthyear<`intdate'
gen preaverage=r(mean)
gen presd=preaverage+r(sd)
gen pretwosd=preaverage+(2*r(sd))
gen preminsd=preaverage+(-1*r(sd))
gen premintwosd=preaverage+(-2*r(sd))
sum yvar if category==`c' & service==`s' & monthyear>=`intdate'
gen postaverage=r(mean)
gen postsd=postaverage+r(sd)
gen posttwosd=postaverage+(2*r(sd))
gen postminsd=postaverage+(-1*r(sd))
gen postmintwosd=postaverage+(-2*r(sd))
twoway (scatter yvar monthyear if category==`c' & service==`s'), ///
title("`deptlab' `catlab' utilization") ///
ytitle("YVar Patient Days") ///
xtitle("Month / Year") ///
subtitle("`reportperiod'") ///
xlabel(#6, angle(forty_five)) ///
xmtick(##6) ///
legend(off) || ///
(line preaverage monthyear if monthyear<`intdate') || ///
(line presd monthyear if monthyear<`intdate', lcolor(black) lpattern(dash)) || ///
(line pretwosd monthyear if monthyear<`intdate', lcolor(black)) || ///
(line preminsd monthyear if monthyear<`intdate', lcolor(black) lpattern(dash)) || ///
(line premintwosd monthyear if monthyear<`intdate', lcolor(black)) ///
(line postaverage monthyear if monthyear>=`intdate') || ///
(line postsd monthyear if monthyear>=`intdate', lcolor(black) lpattern(dash)) || ///
(line posttwosd monthyear if monthyear>=`intdate', lcolor(black)) || ///
(line postminsd monthyear if monthyear>=`intdate', lcolor(black) lpattern(dash)) || ///
(line postmintwosd monthyear if monthyear>=`intdate', lcolor(black))
drop preaverage presd pretwosd preminsd premintwosd postaverage postsd posttwosd postminsd postmintwosd
graph save Graph
}
}
Comment