1 / 31

Using SAS to Identify Aberrant Provider Practice Patterns

Learn how to use SAS programming language to identify outlier and static utilization patterns in provider practices, using statistical thresholds and percentile calculations.

jeffreyo
Download Presentation

Using SAS to Identify Aberrant Provider Practice Patterns

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. Using SAS to Identify Aberrant Provider Practice Patterns Mark Ireland, M.A.DME Statistician, SGS CMS SAS Day, October 31, 2007

  2. Introduction • The SAS programming language provides an excellent vehicle to create data analytic techniques. • SAS enables the user to have complete control over data manipulations and does not confine the analyst into sets of canned routines. • SAS offers many modules that can be used to perform a vast array of sophisticated statistical models. • The approaches presented here rely only upon the Base SAS module, illustrating its programming power.

  3. Some Simple Yet Effective Applications • Outlier models – identifying provider over-utilization. • Static models – utilization that does not change over time by Beneficiary: • Services • Code combinations • Modifier usage • Higher level procedure codes/HCPCS • Shifts in procedure code/HCPCS policy group utilization – a technique to identify a significant increase in the use of a procedure code or set of procedure codes.

  4. Outlier Models

  5. Outlier Metrics • In the DME world all of the providers that supply a given service are considered the “Peer Group.” • “Average” utilization practice patterns can be measured using the mean or the median utilization over all providers in a similar peer grouping. • Thresholds that identify aberrancies can be computed using measures of variability such as the standard deviation and the inter-quartile range (IQR). • At the provider and procedure code/HCPCS level the number of allowed services per beneficiary is chosen as the metric to identify aberrancy.

  6. Using Quartiles to Measure Over-Utilization One such model computes a threshold for services per bene by adding 1.5 times the IQR to the third quartile: (…) PROC SUMMARY DATA=UNIVERSE; CLASS HCPCS; VAR SERV_PER_BENE; OUTPUT OUT=SUMSTATS(RENAME(_FREQ_=NBENES)) P75(SERV_PER_BENE) = P75_SERV_PER_BENE QRANGE(SERV_PER_BENE)= IQR_SERV_PER_BENE; (…) DATA COMBINE; MERGE UNIVERSE(IN=A) SUMSTATS(IN=B); BY HCPCS; IF (A=1) AND (B=1) THEN OUTPUT; (…) DATA COMBINE; SET COMBINE; IF SERV_PER_BENE > P75_SERV_PER_BENE + 1.5* IQR_SERV_PER_BENE THEN OUTPUT;

  7. A Surgical Dressing Example Using Quartiles to Construct a Threshold

  8. Same Example Using the Mean and Two Standard Deviations to Construct a Threshold

  9. Discussion • Two standard methods of computing a statistical threshold can be used. • Many analysts commonly use the mean plus two standard deviations to compute a threshold or limit. • The third quartile plus 1.5 times the IQR is also a valid methodology. • The threshold using quartiles is less sensitive to extreme values and in some cases can identify more suppliers for drilldown analysis.

  10. Static Utilization

  11. Identifying Static Practice Patterns Using SAS • We can safely assume that not all patients are going to need the exact same and amount of medical service or supplies. • Surprisingly enough there are suppliers that give their beneficiaries: • the exact same number of services, • the same combinations of HCPCS, • use the same modifier for every service, • use one referring physician almost exclusively, • attach the same diagnosis for every beneficiary.

  12. Static Practice Patterns • The task is to develop SAS code that can identify these static patterns. • One example looks at the Surgical Dressing policy group to determine if suppliers are providing the same number of dressing for each beneficiary for each date of service. • A large universe of data is used by SAS to extract suppliers that provide the same number services to their beneficiaries. • The raw data is at the line level. We can use percentiles to identify static use.

  13. Static Use of Surgical Dressings The 95th and 5th percentiles of the number of allowed services are obtained by supplier and HCPCS. If these two statistics are equal then we know that 90% of the line items all have the same value: PROC SUMMARY DATA=UNIVERSE; CLASS PROVID HCPCS; VAR SERV_PER_LINE; OUTPUT OUT=SUMSTATS(RENAME(_FREQ_=NLINES)) P5(SERV_PER_BENE) = P5_SERV_PER_BENE P95(SERV_PER_BENE)= P95_SERV_PER_BENE; (…) DATA COMBINE; MERGE SUMSTATS(IN=A) UNIVERSE(IN=B); BY PROVID HCPCS; IF (A=1) AND (B=1) THEN OUTPUT; DATA STATIC; SET COMBINE; IF P5_SERV_PER_BENE = P95_SERV_PER_BENE THEN OUTPUT;

  14. Static Bi-lateral Orthotic Utilization and Static HCPCS Combinations • Another variant of static utilization looks at HCPCS “cocktails.” • There are some suppliers that exclusively provide the same set of orthotics for every beneficiary, and also supply bi-laterally for all patients. • In the case of bi-lateral orthotics we can compute the average number of services per beneficiary for each orthotic HCPCS. If this average is very nearly equal to 2.0 we know that the majority of patients received bi-lateral services. • HCPCS cocktails can be identified by ranking distinct code combinations and then using percentiles of these ranks to identify static behavior.

  15. Static Bi-lateral Orthotic Utilization Each Orthotic could be billed on separate line items, or even separate claims. To be on the safe side we need to aggregate items by supplier, HCPCS, and HICN: PROC SUMMARY DATA=UNIVERSE; CLASS PROVID HCPCS HICN; VAR SERV_PER_LINE; OUTPUT OUT=SUMSTATS(RENAME(_FREQ_=NLINES)) SUM(SERV_PER_BENE) = SUM_SERV_PER_BENE; PROC SUMMARY DATA=UNIVERSE; CLASS PROVID HCPCS; VAR SUM_SERV_PER_LINE; OUTPUT OUT=NEWSUM(RENAME(_FREQ_=NLINES)) MEAN(SUM_SERV_PER_BENE) = MEAN_SERV_PER_BENE; (…) DATA STATIC; SET COMBINE; IF (MEAN_SERV_PER_BENE > 1.95) AND (MEAN_SERV_PER_BENE < 2.05) THEN OUTPUT;

  16. Static Code Combinations • One can also use SAS to identify static HCPCS combinations. • A relatively common orthotic over-utilization problem occurs when a supplier unnecessarily provides orthotics for multiple parts of the body. • For example, a beneficiary might only need an ankle-foot orthotic (AFO) for the left ankle, but is also provided with an AFO for the right ankle as well as two knee orthotics as well as two elbow orthotics and hand orthotics. • Another example that has appeared involves the simultaneous utilization of E0277 – Air Mattress and E0260 – Hospital Bed with Mattress.

  17. Static HCPCS • We need to build an arrays of HCPCS and then assign unique ranks to each unique HCPCS array. • One way to form such arrays is to process the data by provider and HICN and build a text string for each HICN that consists of a concatenation of each unique HCPCS. • We can build these text strings using the FIRST DOT methodology. • Then we can assign unique numeric ranks to each unique text string. • Use the NODUPKEY option to remove duplicates and obtain uniqueness. • The methodology remains the same: if a provider has at least 90% of HICNs with the same rank, that corresponding HCPCS string has been used for at least 90% of the HICNs. • We use the same process that we used for static utilization of surgical dressings: take the 95th and 5th percentiles of these ranks and then check for equality.

  18. Static HCPCS Methodology (…) DATA SUMPOP; LENGTH CODESTRG $50.; SET POP; BY PROVID HICN; RETAIN CODESTRG; IF FIRST.HICN THEN DO; CODESTRG = HCPCS; /* Initialization */ END; ELSE IF ~LAST.HICN THEN DO; CODESTRG = HCPCS||CODESTRG; /* Concatenation */ END; ELSE IF LAST.HICN AND ~FIRST.HICN THEN DO; CODESTRG = HCPCS||CODESTRG; /* Concatenation */ OUTPUT; /* Output one record per HICN */ END; (…)

  19. Static HCPCS Methodology • This methodology will identify static patterns of HCPCS that “make sense” to provide together, such as A4253 – Glucose Test Strips and A4259 – Lancets. • It will also identify providers that routinely bill HCPCS that contradict each other as well, which makes for an even more interesting case. This was illustrated on slide 16 with the example of E0277 and E0260. • Sometimes a provider will have a static “core set” of HCPCS and also bill for additional miscellaneous HCPCS. • The method above will not capture this scenario since these miscellaneous HCPCS technically define separate text strings. • One work around would be to use the SUBSTR function to extract portions of the text string. Alternatively arrays might be employed.

  20. A Static Orthotic HCPCS Combination Example Below is an example of static orthotic usage:

  21. HCPCS Shifts

  22. Significant Shifts in HCPCS Utilization • A “shift” in HCPCS utilization can be described as a provider’s trend from one category of HCPCS to another. • While we can easily measure a provider’s relative proportion of utilization of one set of HCPCS to the remainder of HCPCS, it is more valuable to be able to detect statistically significant shifts. • As a way to illustrate this, suppose we want to measure the degree of increase of provider utilization of power wheelchairs.

  23. Significant Shifts in HCPCS Utilization • We create two buckets of provider specific utilization, one containing the power wheelchairs, the other containing all other utilization. • Obtain this division of provider utilization over two distinct time periods. For other examples these time periods might be divided according to an overall spike in utilization or the creation of new HCPCS. • SAS can accomplish these partitions using the DATA step and creating two variables, CODETYPE(ABUSED,NONABUSED) and PERIOD(TIME1,TIME2), following reading in the service dates and HCPCS.

  24. Significant Shifts in HCPCS Utilization • First we SORT the data by CODETYPE, PERIOD, and HICN, using the NODUP option to obtain unique HICNs for each category. • Then we use PROC SUMMARY again using CLASS variables CODETYPE and PERIOD to obtain counts of unique HICNs by CODETYP and PERIOD. • Using the DATA step we can obtain the relative proportion of HICNs in the ABUSED category by provider for PERIOD=TIME1. • This relative proportion can be thought of as a prior probability that a HICN will fall into the ABUSED category.

  25. Significant Shifts in HCPCS Utilization • Now let’s assume that the relative proportion for PERIOD=TIME2 will be “close enough” to that of PERIOD=TIME1. • We can use the Binomial probability distribution and the prior probability computed using PERIOD=TIME1 to compute the probability that we would in fact see the number of HICNs in the ABUSED category that were obtained in PERIOD=TIME2. • If this probability is small, say less than 0.05, then we have a reason to believe that it is statistically unlikely that we would see that many HICNs in PERIOD=TIME2.

  26. Significant Shifts in HCPCS Utilization • This probability can be thought of as a p-value. • This approach would enable us to analyze large universes of claims data and only output those providers whose p-value is quite small. • SAS can obtain this p-value using the CDF function (Cumulative Distribution Functions) which can compute cumulative Binomial probabilities. • The syntax is PROB=CDF(‘BINOM’,m,p,n), where m can be the number of HICNs in PERIOD=TIME2, p is the prior probability computed from PERIOD=TIME1, and n is the total number of HICNs in PERIOD=TIME2.

  27. Significant Shifts in HCPCS Utilization • The cumulative Binomial probability is the probability that we would see less than or equal to the number of HICNs in the ABUSED category for PERIOD=TIME2 given the prior probability in PERIOD=TIME1. • The p-value must be computed as the probability that we would see greater than or equal to the number of HICNs observed in PERIOD=TIME2. • 1-CDF(‘BINOM’,m,p,n) would give us the greater than portion of the p-value, so we also need to compute the equal to portion.

  28. Significant Shifts in HCPCS Utilization • The equal to portion of the p-value can be computed using the SAS function PDF(‘BINOM’,m,p,n). • So our p-value can be computed as 1-(CDF(‘BINOM’,m,p,n)+PDF(‘BINOM’,m,p,n)) • For example, suppose provider A has the following HICN categories where the abused category are power wheelchair codes:

  29. Significant Shifts in HCPCS Utilization • Just looking at the raw numbers in each category from TIME1 and TIME2, it’s hard to tell if the increase is significant. • This providers ABUSED category showed an increase, but there was an overall increase as well. • Our p-value is computed as 1-[CDF(‘BINOM’,23,0.203,83)+PDF(‘BINOM,23,0.203,83)] = 1-[0.9612 + 0.0265] = 0.0123. • Since this value is quite small (i.e. less than 0.05), we conclude that it is a significant shift and we should conduct drilldown analysis on this provider.

  30. Wrap Up • It must be emphasized that these tools are mechanisms to identify providers that might have utilization issues. • A provider identified using any of these methods might have legitimate reasons for a practice pattern and drill down analysis can help determine the source of the aberrancy. • SAS techniques illustrated here included: • PROC SUMMARY to obtain summary statistics, • MERGE – merging summary statistics to raw data, • BY group processing using FIRST and LAST DOT, • Specialized SAS functions, CDF and PDF.

  31. QUESTIONS? Mark Ireland, M.A., Statistician SafeGuard Services, LLC 9795 Crosspoint Blvd, Ste 100A Indianapolis, IN 46256 www.eds.com

More Related