Beep. Boop. Beep-boop. We're back with Part 2 of how to transform machine-readable price transparency in coverage (TIC) files into human-readable, actionable information. You can catch yourself up to speed by reading Part 1 here. Now that everyone's caught up let's dive in.
The links to all of our in-network negotiated rate files are in the file we generated at the end of Part 1. Now that we have that, the next step is to click each link to begin downloading each file onto your computer. That process is super manual, it can take a while, and, frankly, I don't recommend it, especially if you're running low on storage on your machine. Putting aside the manual effort involved in downloading each file, there's still a bunch of work to do to get the information contained in each of the newly downloaded files into human comprehendable info. Did you think the insurance carriers would make it easy on you?
If you're adventurous or just accidentally click on a link to an in-network file, you'll quickly find yourself at what seems to be square one. The files come in a zipped up .gz file format (ie. 2023-06-19_000008010_in-network-rates_01_of_15.json.gz). Once you double click to unzip them you'll see they are JSON, like our last Highmark file with the countless EINs. Like before, these files aren't necessarily straight forward to understand for the average joe. For the adventurous, CMS's Github repository and technical specifications are here.
For everyone else, the tl;dr is that the files, when deconstructed, give consumers perfect visibility into the inter-workings of their health plan(s) and how procedures and services are billed. So that everyone can take advantage of this information, our team has made the Google Colab notebook that we use to deconstruct the JSON files available for everyone to use. You can access it here. To use the workbook, simply upload the file we generated in Part 1, replace the filename variable with the name of your file, and click run (play looking button to the left of "import requests"). After the script finishes and you click refresh, you'll see a new file for each of your networks (ie. human_readable_file_378000000106.csv, human_readable_file_378000000328.csv, human_readable_file_378000008010.csv, etc.). Download those files and continue reading.
Whether you're parsing through the JSON files individually or using our shortcut above, you'll find a few key elements that are needed to make sense of it all. Here are those elements and a brief description of each one.
'billing_code': The code used by a plan or issuer or its in-network providers to identify health care items or services for purposes of billing, adjudicating, and paying claims for a covered item or service
'billing_code_type': Common billing code types. Please see a list of the currently allowed codes for more information.
'negotiation_arrangement': An indication as to whether a reimbursement arrangement other than a standard fee-for-service model applies. Allowed values: "ffs", "bundle", or "capitation"
'negotiated_type': There are a few ways in which negotiated rates can happen. Allowed values: "negotiated", "derived", "fee schedule", "percentage", and "per diem". See additional notes.
'negotiated_rate': The dollar or percentage amount based on the negotiation_type
'expiration_date': The date in which the agreement for the negotiated_price
based on the negotiated_type
ends.
'billing_class': Allowed values: "professional" (physician), "institutional" (facility)
'service_code': The CMS-maintained two-digit code that is placed on a professional claim to indicate the setting in which a service was provided. When attribute of billing_class
has the value of "professional", service_code
is required.
'billing_code_modifier': An array of strings. There are certain billing code types that allow for modifiers (e.g. The CPT coding type allows for modifiers). If a negotiated rate for a billing code type is dependent on a modifier for the reported item or service, then an additional negotiated price object should be included to represent the difference. You can find more information on specific modifiers here.
'tin': Either the unique identification number issued by the Internal Revenue Service (IRS) for type "ein" or the provider's npi for type "npi".
'tin_type': Allowed values: "ein" and "npi".
'npi': if billing_class is professional, this is the npi of the provider the negotiated rate is associated to.
Now, I know what you're thinking. Yes, the files are massive and at times, okay maybe all of the time, unwieldy. As they say, "you gotta break a few eggs to make an omelet".
Okay, so how can we now use this data? Well, let's say you want to price shop a knee replacement. With some searching, you find that CPT 27446 is for "Repair of knee joint". Perfect, let's see what we're dealing with.
Woah! The highest costing facility (billing_class == institution) is nearly 2x the lowest costing facility? Yes. Yes, really. This is the power of healthcare shopping. By enabling consumers with this information and the right incentives, we can literally prevent claims for shoppable services from being double what they might otherwise be.
For anyone interested, NPI 1750658092 is the Advanced Center For Surgery, LLC (3280 Pleasant Valley BLVD. Altoona, PA) and NPI 1801897038 is Conemaugh Memorial Medical Center LLC (1086 Franklin ST Johnstown, PA). They are 48 min (45.7 mi) apart via US-22 W and US-219 S. Would you or anyone you know drive 45 miles to save $14k?
Follow along for Part 3 where we'll dive into how we'll use NPIs to layer physician and facility information into our excel based healthcare shopping tool!
P.S. If this seems like a lot of work, it's because it is, and we haven't even scratched the surface. If you or your clients are looking for an best-in-class, easy-to-use, healthcare shopping tool that will save them money schedule a meeting with us today to see how we can help.