Remove Voided Claims for Insurance Data Qiling Shi



Similar documents
Remove Orphan Claims and Third party Claims for Insurance Data Qiling Shi, NCI Information Systems, Inc., Nashville, Tennessee

One problem > Multiple solutions; various ways of removing duplicates from dataset using SAS Jaya Dhillon, Louisiana State University

Introduction to Criteria-based Deduplication of Records, continued SESUG 2012

Converting Electronic Medical Records Data into Practical Analysis Dataset

Paper Merges and Joins Timothy J Harrington, Trilogy Consulting Corporation

Preparing your data for analysis using SAS. Landon Sego 24 April 2003 Department of Statistics UW-Madison

An Approach to Creating Archives That Minimizes Storage Requirements

Post Processing Macro in Clinical Data Reporting Niraj J. Pandya

SSN validation Virtually at no cost Milorad Stojanovic RTI International Education Surveys Division RTP, North Carolina

Portfolio Construction with OPTMODEL

ABSTRACT INTRODUCTION %CODE MACRO DEFINITION

Overview. NT Event Log. CHAPTER 8 Enhancements for SAS Users under Windows NT

ABSTRACT INTRODUCTION HOW WE RANDOMIZE PATIENTS IN SOME OF THE CLINICAL TRIALS. allpt.txt

Colorado Medical Assistance Program Web Portal Dental Claims User Guide

Using SAS With a SQL Server Database. M. Rita Thissen, Yan Chen Tang, Elizabeth Heath RTI International, RTP, NC

How To Create An Audit Trail In Sas

Data Presentation. Paper Using SAS Macros to Create Automated Excel Reports Containing Tables, Charts and Graphs

ing Automated Notification of Errors in a Batch SAS Program Julie Kilburn, City of Hope, Duarte, CA Rebecca Ottesen, City of Hope, Duarte, CA

A Method for Cleaning Clinical Trial Analysis Data Sets

Paper An Introduction to SAS PROC SQL Timothy J Harrington, Venturi Partners Consulting, Waukegan, Illinois

SAS and Electronic Mail: Send faster, and DEFINITELY more efficiently

Statistics and Analysis. Quality Control: How to Analyze and Verify Financial Data

CDW DATA QUALITY INITIATIVE

SAS PROGRAM EFFICIENCY FOR BEGINNERS. Bruce Gilsen, Federal Reserve Board

Nine Steps to Get Started using SAS Macros

How to Reduce the Disk Space Required by a SAS Data Set

Effective Use of SQL in SAS Programming

Managing very large EXCEL files using the XLS engine John H. Adams, Boehringer Ingelheim Pharmaceutical, Inc., Ridgefield, CT

PharmaSUG Paper AD11

Managing Data Issues Identified During Programming

AN INTRODUCTION TO MACRO VARIABLES AND MACRO PROGRAMS Mike S. Zdeb, New York State Department of Health

Applications Development ABSTRACT PROGRAM DESIGN INTRODUCTION SAS FEATURES USED

SAS UNIX-Space Analyzer A handy tool for UNIX SAS Administrators Airaha Chelvakkanthan Manickam, Cognizant Technology Solutions, Teaneck, NJ

MCIS Aggregate Claim Editor User Guide. Core system users

MEDICAL BENEFITS REVIEWER

STATE OF NEW JERSEY DEPARTMENT OF EDUCATION DIVISION OF FINANCE OFFICE OF SCHOOL FUNDING INSTRUCTION MANUAL

SAS Comments How Straightforward Are They? Jacksen Lou, Merck & Co.,, Blue Bell, PA 19422

Centricity Business Eligibility - Training Manual

AN INTRODUCTION TO THE SQL PROCEDURE Chris Yindra, C. Y. Associates

Using Proc SQL and ODBC to Manage Data outside of SAS Jeff Magouirk, National Jewish Medical and Research Center, Denver, Colorado

MWSUG 2012 Paper PH14

We begin by defining a few user-supplied parameters, to make the code transferable between various projects.

Top 50 Billing Error Reason Codes With Common Resolutions (09-12)

Using Macros to Automate SAS Processing Kari Richardson, SAS Institute, Cary, NC Eric Rossland, SAS Institute, Dallas, TX

Topics. Database Essential Concepts. What s s a Good Database System? Using Database Software. Using Database Software. Types of Database Programs

Using SAS to Control and Automate a Multi SAS Program Process. Patrick Halpin November 2008

The Power of CALL SYMPUT DATA Step Interface by Examples Yunchao (Susan) Tian, Social & Scientific Systems, Inc., Silver Spring, MD

Simple Rules to Remember When Working with Indexes Kirk Paul Lafler, Software Intelligence Corporation, Spring Valley, California

An macro: Exploring metadata EG and user credentials in Linux to automate notifications Jason Baucom, Ateb Inc.

B) Mean Function: This function returns the arithmetic mean (average) and ignores the missing value. E.G: Var=MEAN (var1, var2, var3 varn);

SAS Macros as File Management Utility Programs

AN ANIMATED GUIDE: SENDING SAS FILE TO EXCEL

From Database to your Desktop: How to almost completely automate reports in SAS, with the power of Proc SQL

Medicaid. Important Contact Information. In This Issue

Internet/Intranet, the Web & SAS. II006 Building a Web Based EIS for Data Analysis Ed Confer, KGC Programming Solutions, Potomac Falls, VA

Dup, Dedup, DUPOUT - New in PROC SORT Heidi Markovitz, Federal Reserve Board of Governors, Washington, DC

REP200 Using Query Manager to Create Ad Hoc Queries

Query Management Facility

PharmaSUG 2014 Paper CC23. Need to Review or Deliver Outputs on a Rolling Basis? Just Apply the Filter! Tom Santopoli, Accenture, Berwyn, PA

A binary search tree or BST is a binary tree that is either empty or in which the data element of each node has a key, and:

You have got SASMAIL!

NT Event Log. CHAPTER 8 Enhancements for SAS Users under Windows NT

A Macro to Create Data Definition Documents

Using SAS to Create Graphs with Pop-up Functions Shiqun (Stan) Li, Minimax Information Services, NJ Wei Zhou, Lilly USA LLC, IN

Innovative Techniques and Tools to Detect Data Quality Problems

MEDICARE CROSSOVER PROCESS FREQUENTLY ASKED QUESTIONS

More Tales from the Help Desk: Solutions for Simple SAS Mistakes Bruce Gilsen, Federal Reserve Board

Automating SAS Macros: Run SAS Code when the Data is Available and a Target Date Reached.

The Essentials of Finding the Distinct, Unique, and Duplicate Values in Your Data

Building a Web Based EIS for Data Analysis Ed Confer, KGC Programming Solutions, Potomac Falls, VA

Unit 10: Microsoft Access Queries

HowHow to Choose a Good Stock Broker For 2010

Top Ten Reasons to Use PROC SQL

Calculating Changes and Differences Using PROC SQL With Clinical Data Examples

1. To start Installation: To install the reporting tool, copy the entire contents of the zip file to a directory of your choice. Run the exe.

Handling Missing Values in the SQL Procedure

Subsetting Observations from Large SAS Data Sets

Minnesota Comprehensive Health Association (MCHA) - Frequently Asked Questions & Answers about Eligibility/Application

Using Pharmacovigilance Reporting System to Generate Ad-hoc Reports

SUGI 29 Applications Development

SPC Data Visualization of Seasonal and Financial Data Using JMP WHITE PAPER

Identifying Invalid Social Security Numbers

Performing Queries Using PROC SQL (1)

ABSTRACT INTRODUCTION IMPORTING THE DATA SESUG Paper CT-23

Managing Tables in Microsoft SQL Server using SAS

Access Online. Transaction Approval Process User Guide. Approver. Version 1.4

Sales Territory and Target Visualization with SAS. Yu(Daniel) Wang, Experis

Predicting Customer Churn in the Telecommunications Industry An Application of Survival Analysis Modeling Using SAS

SUGI 29 Data Presentation

Foundations & Fundamentals. A PROC SQL Primer. Matt Taylor, Carolina Analytical Consulting, LLC, Charlotte, NC

Normalized EditChecks Automated Tracking (N.E.A.T.) A SAS solution to improve clinical data cleaning

Ad Hoc Advanced Table of Contents

The SET Statement and Beyond: Uses and Abuses of the SET Statement. S. David Riba, JADE Tech, Inc., Clearwater, FL

An Application of the Cox Proportional Hazards Model to the Construction of Objective Vintages for Credit in Financial Institutions, Using PROC PHREG

Oracle Database: SQL and PL/SQL Fundamentals

Return of the Codes: SAS, Windows, and Your s Mark Tabladillo, Ph.D., MarkTab Consulting, Atlanta, GA Associate Faculty, University of Phoenix

Introduction to SQL and SQL in R. LISA Short Courses Xinran Hu

Using the SQL Procedure

Merchant Interface Online Help Files

MWSUG Paper S111

Transcription:

Remove Voided Claims for Insurance Data Qiling Shi ABSTRACT The purpose of this study is to remove voided claims for insurance claim data using SAS. Suppose that for these voided claims, we don t have a flag to identify them at first. All we know is that they have the same absolute values with positive and negative amounts for the same insurance ID. A SAS macro with procedures such as PROC SQL and DATA STEPS is employed to do the data analysis. INTRODUCTION An insurance Claim is filed by a policyholder stating that an insured event has occurred and that the insurance company should provide coverage. An insurance adjuster could be set up with access to portions of the claim to just the right payment amount. Insurance adjustment may be very complicated. For example, claims that be rejected as duplicates may be adjusted, cancelled or resubmitted. Claims that rejected for eligibility or other billing errors may be adjusted when the eligibility or billing issue is resolved. At different times, billing transactions that have previously processed may be paid or repaid with a duplicate payment. The Division of Medicaid and the fiscal agent allow adjusting and voiding of claims. If a paid claim is being adjusted, the Provider Identification Number and the Recipient cannot be changed. The voided amount originally paid will appear as a negative amount and that amount will be deducted from payments until the overpayment is recovered. Usually we have a void claim identifier which can be used to as an edit in the system to exclude the voided claims. Sometimes since some database or data warehouse is not real time and has different updating time, the voided claims identifier will not be effective or even exist in the system. For the same insurance ID, we have positive or negative amount charged which can be offset eventually. For these claims, we will remove them as voided claims before calculating any overpayments. SAS CODES ****************************************************************************; * Remove Void Insurance Claims ; ****************************************************************************; %macro remove_void(indata, outdata); *clear data before deleting voids; set &indata.; if verify(id, '8') ~= ' ' and amount_charged not in (.,0); *create partial void claim IDs; set temp; length voidid $200; amc1=floor(abs(amount_charged)); amc=put(amc1, 20.); insert='int'; voidid=cats(id, insert, amc); 1

drop amc1 amc insert; *Sort dataset by void ID and amount_charged ascendingly; proc sort data=temp; by voidid amount_charged; set temp; by voidid amount_charged; retain s1 0; if first.amount_charged then s1=0; if amount_charged >0 then s1=s1+1; *Sort dataset by void ID and amount_charged descendingly; proc sort data=temp; by voidid descending amount_charged; set temp; by voidid descending amount_charged; retain s2 0; if first.amount_charged then s2=0; if amount_charged < 0 then s2=s2+1; *Get the void claim flags; proc sql; create table flag_temp as select *, max(s1) as max_s1, max(s2) as max_s2 from temp group by voidid; quit; data flag_temp; set flag_temp; if max_s1=max_s2 then void_flag='y'; else if max_s1 < max_s2 then do; if s2<=max_s1 then void_flag ='Y'; else void_flag='n'; end; else do; if s1<=max_s2 then void_flag ='Y'; else void_flag='n'; end; if max_s1=0 or max_s2 =0 then void_flag='n'; *Remove the void claims; data voids; set flag_temp; if void_flag='y'; data novoids; set flag_temp; 2

if void_flag='n'; data &outdata.; set novoids; drop voidid s1 s2 max_s1 max_s2 void_flag; %mend remove_void; *Read in the insurance data; data insurance; infile "C:\Documents and Settings\shiq\Desktop\New Folder\WUSS\void.txt"; input id $6. amount_charged tpl adjustment_indicator; *use the macro to Remove the void claims; options symbolgen mprint mlogic; %remove_void(insurance, insurance_novoids); RESULTS The demonstrated data set INSURANCE has 22 observations and 4 variables. One variable is called ID which represents the claim identifications. AMOUNT_CHARGED means the provider charged on the insurance agents or companies. TPL represents the other third party payment to this claim. ADJUSTMENT_INDICATOR provides codes for different adjustment activities. Here the code 0 represents the original claims. The other codes mean claims with different partial adjustments. Table 1: The Dataset INSURANCE used as an example. 3

For the same claim ID, there are different records with different adjustments and third party payments. We want to find out the voided claims remove them from the above table. The following is the intermediate table derived from INSURANCE containing the check results for voided claims for the same claim IDs. Table 2: Dataset TEMP used to check voided claims for the same claim IDs. The field VOIDID is a concatenation of the insurance claim ID and the amount charged. Between ID and AMOUNT_CHARGED, there are three characters INT to differentiate these two values in the field of VOIDID. The field S1 is created to count the number of positive charged amounts for the same VOIDID. First we sort the dataset by VOIDID and ascending AMOUNT_CHARGED. Then for the first value of VOIDID in the sorting of AMOUNT_CHARGED, initialize S1=0. For positive amount charged, S1=S1+1. Retain the value of S1 for the same VOIDID. Repeat these steps until we get all the S1 values. The field S2 is created to count the number of negative charged amounts for the same VOIDID. First we sort the dataset by VOIDID and descending AMOUNT_CHARGED. Then for the first value of VOIDID in the sorting of AMOUNT_CHARGED, initialize S2=0. For negative amount charged, S2=S2+1. Retain the value of S2 for the same VOIDID. Repeat these steps until we get all the S2 values. Table 3: Dataset FLAG_TEMP. 4

From table 3, we can get the voided claim flags for all the records. The field VOID_FLAG is created. If VOID_FLAG = Y then this claim record is voided. If VOID_FLAG = N then this claim record is not voided. The MAX_S1 is the total number of positive charged amounts for the insurance claim ID. The MAX_S2 is the total number of negative charged amounts for the insurance claim ID. If MAX_S1 = MAX_S2, then all the records related to this claim ID will be identified as voided. If MAX_S1 < MAX_S2, then for all the records with S2 <= MAX_S1 assign VOID_FLAG = Y, otherwise VOID_FLAG = N. If MAX_S1 > MAX_S2, then for all the records with S1 <= MAX_S2 assign VOID_FLAG = Y, otherwise VOID_FLAG = N. If the insurance ID only have positive or negative charged amounts which means MAX_S1 =0 or MAX_S2 =0, then let VOID_FLAG = N for all the records of this insurance ID. Table 4: Dataset VOIDS. From table 4, we know that there are 12 voided claims altogether with VOID_FLAG = Y. Table 5: Dataset NOVOIDS. 5

From table 5, we know that there are 10 valid claims with VOID_FLAG = N. To get the final output dataset, we can simply drop the fields like VOIDID, S1, S2, MAX_S1, MAX_S2 and VOID_FLAG. REFERENCES 1. Detecting Medicaid Data Anomalies Using Data Mining Techniques, Southeast SAS Users Group Conference, 2010. 2. Find Potential Fraud Leads Using Data Mining Techniques, Southeast SAS Users Group Conference, 2011. 3. Assign Overpayment to Insurance Data with Adjustments, Southeast SAS Users Group Conference, 2011. CONTACT INFORMATION Your comments and questions are valued and encouraged. Contact the author at: Qiling Shi, Mathematics PhD, Certified Fraud Examiner Email: shiqiling@gmail.com SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. indicates USA registration. Other brand and product names are trademarks of their respective companies. 6