1 / 14

Statistical Process Control Charts Barbara Williams

Statistical Process Control Charts Barbara Williams. Stata Conference Columbus, OH July 31, 2015. Introduction.

vienna
Download Presentation

Statistical Process Control Charts Barbara Williams

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Statistical Process Control ChartsBarbara Williams Stata Conference Columbus, OH July 31, 2015

  2. Introduction Statistical Process Control (SPC) Charts are used to assess outcomes measured over time, usually with the purpose of detecting improvement or maintaining a high level of performance. Traditionally used in industrial engineering for quality control.

  3. Introduction SPC Charts are now the standard for quality improvement work in healthcare Stata options for creating reader-friendly SPC charts are limited Objective: • generate useful and easy-to-read SPC charts in Stata. • build on existing Stata cchart (count) and pchart (proportion) commands Replace current SPC chart generators in Excel and stand-alone programs I am using Stata MP12

  4. Our Research Acute respiratory infection is a common reason for medical care Most are self-limited viral illnesses not responsive to antibiotics Antibiotic prescription is common (up to 46%) adding high cost and contributing to antibiotic resistant bacteria New respiratory infection care pathway of nurse telephone care coupled with provider education instead of a doctor office visit Determine the impact of this new pathway on the number of visits with a prescription for antibiotics

  5. Our Data . list, clean noobs VisitIDMonthYearAbxYes 1 2013m5 0 2 2013m11 1 3 2010m8 1 4 2012m8 0 5 2011m2 0 6 2011m5 0 7 2012m5 0 8 2012m9 0 9 2013m2 1 10 2013m5 0 11 2010m7 1 12 2012m3 0 13 2012m2 0 14 2012m11 0 15 2013m2 0 16 2013m5 0

  6. P-Charts Default Stata P-Chart (Proportion of visits with a prescription) . collapse (sum) AbxSum= AbxYes (count) VisitSum = AbxYes, by(ServiceMonthYear) . pchartAbxSum ServiceMonthYear VisitSum

  7. P-Charts * intervention to reduce antibiotic prescriptions was carried out in March 2012 generate InterveneMonthYear = tm(2012m3) * Before Intervention preserve collapse (sum) AbxSum= AbxYes (count) VisitSum= AbxYes (first) InterveneMonthYear /// if ServiceMonthYear < InterveneMonthYear, by(ServiceMonthYear) pchartAbxSumServiceMonthYearVisitSum, /// generate(Average LCL UCL) /// nograph save "P:\My Documents\temp1.dta", replace restore * After Intervention preserve collapse (sum) AbxSum= AbxYes (count) VisitSum= AbxYes (first) InterveneMonthYear /// if ServiceMonthYear>= InterveneMonthYear, by(ServiceMonthYear) pchartAbxSumServiceMonthYearVisitSum, /// generate(Average LCL UCL) /// nograph save "P:\My Documents\temp2.dta", replace * Merge append using "P:\My Documents\temp1.dta"

  8. P-Charts

  9. P-Charts sort ServiceMonthYear egenbeforemean = mean(Average) if ServiceMonthYear < InterveneMonthYear egenaftermean = mean(Average) if ServiceMonthYear >=InterveneMonthYear twoway (line beforemeanServiceMonthYear if ServiceMonthYear < InterveneMonthYear, lcolor(gray)) || /// (line aftermeanServiceMonthYear if ServiceMonthYear >= InterveneMonthYear, lcolor(gray)) || /// (line LCL ServiceMonthYear if ServiceMonthYear < InterveneMonthYear, lcolor(gray) lpattern(dash) connect(stairstep)) || /// (line UCL ServiceMonthYear if ServiceMonthYear < InterveneMonthYear, lcolor(gray) lpattern(dash) connect(stairstep)) || /// (line LCL ServiceMonthYear if ServiceMonthYear>=InterveneMonthYear, lcolor(gray) lpattern(dash) connect(stairstep)) || /// (line UCL ServiceMonthYear if ServiceMonthYear>=InterveneMonthYear, lcolor(gray) lpattern(dash) connect(stairstep)) || /// (connected Average ServiceMonthYear if ServiceMonthYear<=InterveneMonthYear, lcolor(black) mcolor(black) mfcolor(white)) || /// (connected Average ServiceMonthYear if ServiceMonthYear >= InterveneMonthYear, lcolor(black) mcolor(black)), /// text(.57 630 "Mean = .57" ,size(medium)) text(.365 620 "Mean = .36" ,size(medium)) /// text(.64 602 "UCL" ,size(small)) text(.51 602 "LCL" ,size(small)) /// ytitle(Proportion of Encounters with Antibiotics) ylabel(.0(.1)1.0, angle(horizontal) format(%5.1f)) /// xtitle(Encounter Month Year) xlabel(#5, format(%tm_m_Y)) xmtick(##12) legend(off) xsc(titlegap(1)) restore

  10. C-Charts Default Stata C-Chart (Count of antibiotic prescriptions in first 100 visits by month) . cchartAbxSumServiceMonthYear

  11. C-Charts * Before Intervention preserve collapse (sum) AbxSum= AbxYes (first) InterveneMonthYear if /// ServiceMonthYear< InterveneMonthYear, by(ServiceMonthYear) egen Average = mean(AbxSum) generate LCL = Average - 3*(sqrt(Average)) generate UCL = Average + 3*(sqrt(Average)) twoway (connected AbxSumServiceMonthYear) || /// (line LCL ServiceMonthYear) || /// (line UCL ServiceMonthYear) save "P:\My Documents\temp1.dta", replace restore * After Intervention preserve collapse (sum) AbxSum= AbxYes (first) InterveneMonthYear if /// ServiceMonthYear>= InterveneMonthYear, by(ServiceMonthYear) egen Average = mean(AbxSum) generate LCL = Average - 3*(sqrt(Average)) generate UCL = Average + 3*(sqrt(Average)) twoway (connected AbxSumServiceMonthYear) || /// (line LCL ServiceMonthYear) || /// (line UCL ServiceMonthYear) save "P:\My Documents\temp2.dta", replace * Merge append using "P:\My Documents\temp1.dta"

  12. C-Charts

  13. C-Charts sort ServiceMonthYear egenbeforemean = mean(Average) if ServiceMonthYear < InterveneMonthYear egenaftermean= mean(Average) if ServiceMonthYear >=InterveneMonthYear twoway (line beforemeanServiceMonthYear if ServiceMonthYear < InterveneMonthYear, lcolor(gray)) || /// (line aftermeanServiceMonthYear if ServiceMonthYear >=InterveneMonthYear, lcolor(gray)) || /// (line LCL ServiceMonthYear if ServiceMonthYear < InterveneMonthYear, lcolor(gray) lpattern(dash) connect(stairstep)) || /// (line UCL ServiceMonthYear if ServiceMonthYear < InterveneMonthYear, lcolor(gray) lpattern(dash) connect(stairstep)) || /// (line LCL ServiceMonthYear if ServiceMonthYear >=InterveneMonthYear, lcolor(gray) lpattern(dash) connect(stairstep)) || /// (line UCL ServiceMonthYear if ServiceMonthYear >=InterveneMonthYear, lcolor(gray) lpattern(dash) connect(stairstep)) || /// (connected AbxSumServiceMonthYear if ServiceMonthYear < InterveneMonthYear, lcolor(black) mcolor(black) mfcolor(white)) || /// (connected AbxSumServiceMonthYear if ServiceMonthYear >=InterveneMonthYear, lcolor(black) mcolor(black)), /// text(68 618 "Mean = 57" ,size(medium)) text(47 640 "Mean = 37" ,size(medium)) /// text(76 602 "UCL" ,size(small)) text(40 602 "LCL" ,size(small)) /// ytitle(Number of Antibiotic Prescriptions) ylabel(0(10)100, angle(horizontal) format(%5.0f)) /// xtitle(Encounter Month Year) xlabel(#5, format(%tm_m_Y)) xmtick(##12) legend(off) xsc(titlegap(1)) restore

  14. Summary

More Related