Introducing PlanCode, the First Standard for Machine Readable Insurance Information

Greg Dracoulis
Vytl
Published in
6 min readSep 19, 2017

Here at Vytl, we’re working hard on improving the check in experience for patients. That means taking a deep look at everything that slows you down when you’re sick and just trying to get care.

Everyone knows how frustrating it is to sit in an office filling out forms. But how can we do better? Turns out, we can pull a bunch of information from the stuff that’s already in your wallet.

The Driver License

For once, the DMV is good for something

Since the year 2000, the American Association of Motor Vehicle Administrators (yes, there’s an association for everything) has published standards for Driver Licenses and ID cards. Why did it take that long? No one really knows, but the important thing is that finally, one national body created a common way to lay out these important documents.

Pinky swear you’ll only mail me nice stuff. Or at least funny stuff.

One important part of this standard is buried a hundred pages in, part of Annex D: the bar code. This provides a standard way for machines to read the information represented on the front of the license. They can capture name, date of birth, address, and a host of other data in a fraction of a second.

We put that to good use when you register with Vytl. Letting patients import their personal details from an ID card is a great way to make the process a lot more painless. We think it should take no more than 30 seconds for someone to create their account, and that includes adding name, date of birth, address, and insurance information.

You have better ways to spend your time than typing or writing your name and address over and over. Think of how many times you’ve entered all those basic details into a form. Maybe it only took a few seconds each time, but all that adds up when you do it hundreds, or thousands, of times.

The Insurance Card

As you can see, we’ve got things pretty well in hand for the driver license. But we have no such luck with insurance cards. There are tons of different insurers, all with different card layouts. The formatting of dates, ID numbers, and plan information depends on which carrier you use and the state you’re in. Even worse, certain information isn’t there at all on some cards. This just doesn’t cut it in the digital age.

Prototype of Vytl insurance card scanning technology

At Vytl, we’ve made importing your insurance data easy too. But it wasn’t easy. With sophisticated machine learning technology, we can read the data off the card and make a good guess as to who the carrier is, and at identifying both the plan and the ID/group numbers.

During registration, users can take a picture of their insurance card. We highlight the numbers we were able to extract that seem like good candidates to be the ID or group number, and allow the patient to simply tap the appropriate box to select it. This is a good step in the right direction, but it still isn’t perfect.

When we looked into other ways to improve the process, we were stunned. We saw that doctor’s offices spend hundreds of dollars on insurance card scanners with dated software. We started wondering to ourselves “Why isn’t there any standardization for insurance cards? Why isn’t there a better way?”

Enter PlanCode

We set to work identifying the core information that insurance cards need to be able to convey. When you’re setting out to design a way to represent information on an already-crowded card, every data point matters. Carrier, plan name, the name of the insured, ID and group number, coverage type, and validity dates are the most important, so they’re represented first. When encoded, each data element is separated by a new line, like so:

Carrier
Plan Name
Name of Insured (Last,First,Middle)
ID Number,Group Number
Coverage Type (M=Medical, D=Dental, V=Vision, P=Prescription)
Effective Date,Termination Date (YYYY-MM-DD)

The Group Number isn’t always present, so it is added after the ID number separated by a comma, if needed. One insurance can have multiple coverage types, so these are concatenated on the coverage type line. Here’s an example of data that might be encoded with PlanCode:

Oscar Health
Oscar Classic Platinum
Dracoulis,Gregory,Philip
OSC12345678–90
MDP
2017–01–01,2017–12–31

In fact, that’s exactly what’s encoded in the PlanCode graphic you see above (yep, it’s scannable!). You should be able to fit this information into a space the size of your pinky nail, and have it still be scannable with an iPhone. We chose to use QR codes for PlanCode since they’re ubiquitous, and as you can see, carriers can even brand and color the code as they see fit.

But we can do more. We can always do more.

PlanCode XL: Adding Deductible, Copay, and Coinsurance Information

We thought about what else might be useful to have captured in a PlanCode. Obviously, the financial aspects of insurance plan sprang to mind. This would be useful for providers and patients alike to have encoded and easily referenceable. We found that the most common financial information worth recording was:

Deductible
Primary Care Fees
Specialist Fees
Urgent Care Fees
ER Fees

But this information is fairly complicated — there’s different values for in network, out of network, there’s copay vs. coinsurance, and whether the deductible applies— so how do you represent it all? And on top of that, not all plans cover out of network benefits, so how can we make this clear in a small space?

We came up with the following rules:

  • In-Network and Out-of-Network benefits for a care category appear in that order, separated by a semicolon
  • Out-of-Network benefits should not appear in the data if not covered (for EPOs, for example)
  • Copays are dollar amounts greater than 1. Coinsurance is a number between 0 and 1 prefixed by a decimal point (“.”). If both copay and coinsurance apply to a category, they are separated by a plus sign (“+”).
  • If the deductible does not apply to a category, the copay or coinsurance is followed by a capital D (“D”).

So, for example, if you wanted to represent that in-network primary care was a $15 copay and the deductible did not apply, and out of network care for the same category was subject to a 40% copay, that could be represented as:

15D;.4

So you might see a PlanCode that encoded this information:

1000;3000
15D;30
30;.4
75;.6
150;.8

Which would mean

$1000 In-Network (INN) Deductible; $3000 Out-of-Network (OON) Deductible
$15 INN Primary Care Copay, No Deductible; $30 OON Primary Care Copay
$30 INN Specialist Copay; 40% OON Specialist Coinsurance
$75 INN Urgent Care Copay; 60% OON Urgent Care Coinsurance
$150 INN ER Copay; 80% OON ER Coinsurance

Yep, that’s a real one too. Try it!

And this can all be encoded in a space not too much larger than your thumbnail, while still remaining scannable. It could be displayed in insurance apps, it’d still fit nicely on an insurance card, and would make everyone’s lives just a little bit easier as they move through the healthcare system.

That’s what we’re about here at Vytl. We’d love to hear questions, thoughts, and comments on our proposal, and we’re offering it up into the public domain — unencumbered by patents, royalties, trademarks, or any of that typical healthcare industry red tape. Use our format — even the logo — and help us spread PlanCode far and wide!

--

--

Greg Dracoulis
Vytl
Editor for

Creative, adventurous entrepreneur and builder