Back to top
PSPS File Contents and Organization

The Physician/Supplier Procedure Summary (PSPS) file is a summary of calendar year Medicare Part B carrier and durable medical equipment fee-for-service claims. The file includes carrier, pricing locality, Healthcare Common Procedure Coding System (HCPCS) code, HCPCS modifier, provider specialty, type of service, and place of service. The summarized fields are total submitted services and charges, total allowed services and charges, total denied services and charges, and total payment amounts.

The PSPS file is organized into 24 or 25 separate data files depending on the year of the data. Each file corresponds to a range of HCPCS/CPT procedure codes. The HCPCS ranges are described on the PSPS page on the CMS website.

The files can be opened in Microsoft Access or read into SAS, SPSS, or another database language. The files are too large to open in many versions of Excel.

Getting Started

First, unzip one of the data files. You may need to install software in order to unzip the files. One option is to use the pkreader unzip program, which is included with the data.

Second, you will need to make sure the file is saved as a text file. While later years of the PSPS are automatically sent to researchers as text files (e.g., .txt extension in the filename), for earlier years individuals will need to open the unzipped files individually and save them as .txt files. To do this, open the unzipped file with a program such as Notepad. Then save the opened file as a text file. Users can do this by renaming the file and adding a .txt extension to the filename or by going to “Save As” and then selecting “Text Documents” under “Save as Type.” Users should select a permanent and easy to remember location for the text file. This location will need to be specified in following steps and the text file cannot be moved once the Access database is created.

Instructions for opening the PSPS file in Access
Step-by-step instructions for opening the PSPS file in Access.
Opening PSPS File Using Access

Note that the instructions may vary slightly depending on the version of Access that is being used.

Using Access 2010, users should open Access, select “File”, and then select “Create” at the right bottom corner for a new blank Access Database.

From the toolbar at the top of the database, select “External Data” and then “Text File.” At this point, you can choose either to “Import”, “Append” or “Link Tables.”

Linked Tables will take less space. It is possible that if tables are imported, they will not fit in one Access database. However, Linked Tables will not be indexed and may take a little longer to process. Important: If using Linked Tables, Access will always look for the source table in the path you designate on creation, so it is important not to move the source text tables.

Next, browse and select the text file you just saved.  Either the Link or Import Text Wizard will appear. Below is a screenshot of the Import Text Wizard.

Users should choose “Fixed Width” and then select “Advanced.”  A specification window will appear. Here is a screenshot of the Import Specification window.

Under “Field Name”, enter the variable name.  Using the record layout supplied with the PSPS file, choose the “Data Type”, “Start” position, and “Width” for all of the variables. Under “Data Type”, “text” can be chosen for character variables and “Long Integer” can be chosen for the numeric fields. Payment and Charges amounts in this database are to the nearest dollar, so “Long Integer” is a workable option for these fields. 

The specification you type in can be saved by clicking on the “Save As” button in this window. For subsequent tables, this specification can be retrieved and applied by clicking on the “Specs” button in this window. Alternatively, you can continue with the Wizard and click to enter breaks between variables and later set the type of variable. Finish the Wizard to have either a Linked or Imported table.

IMPORTANT: This Access screenshot reflects reading in the 2014 PSPS file. Please note that the layout of the data may differ across years. The layout of the PSPS file changed beginning with the 2009 file and several fields were removed.  These fields include the Region, Total Services Count, Miles/Times/Units (MTUS) fields. Before 2009, the layout could be slightly different across years, such as different lengths for the same variable.

Screenshot of the Import Specification window
Opening a PSPS File Using SAS

Each year’s PSPS file comes with a File Description and Layout document. You can use the information in this document to write SAS codes to import the data into SAS. The layout may change across years, so you may need to have slightly different codes for different years.

The layout document usually has five columns, NAME, LENGTH, BEG, END and CONTENTS that you will need to write SAS codes.

A sample SAS program for reading in a PSPS file is included as an additional resource. Please see the download below.

In this document, the “@” is a column pointer, and the number following it instructs SAS to begin reading data from that column. For example, in the 2014 PSPS layout file, the beginning value for the Provider Specialty Code is in column 8, so you will put “@8” in your SAS code to begin reading values for this variable at that point in the data. Next, you need to create a SAS name for the variable, PRVRD_SP_CD. Finally, specify the length and type for this variable. In this case, you know from the documentation that the LENGTH is 2 and it is a categorical variable, so you will specify “$2.”. If the variable is a numeric variable, you will not need the dollar sign. You can repeat this procedure for all variables in the File Description and Layout document.

IMPORTANT: The SAS program shown is for reading in the 2014 PSPS data. Please note that the layout of the data may differ across years. The layout of the PSPS file changed beginning with the 2009 file and several fields were removed.  These fields include the Region, Total Services Count, Miles/Times/Units (MTUS) fields. Before 2009, the layout could be slightly different across years, such as different lengths for the same variable.