Bad Software

By James Kwak

Planet Money did a story this week on the problems with medical billing. This is something I’ve been vaguely interested in for a long time; nine years ago, we seriously thought about it as a business opportunity for our company.

The Planet Money team said that there is $7 billion in waste in the medical billing process per year, which sounds like a lot until you realize that it isn’t. (Total healthcare costs in the United States are on the order of $2 trillion, I believe.) But the story had a great example of the problems with enterprise software that I’ve written about before.

The story comes from Jonathan Bush, CEO of a medical billing outsourcer (they bill insurance companies on behalf of doctors and keep a percentage of the proceeds). It has to do with the codes that one of the Blue Cross/Blue Shield companies requires doctors to use to request reimbursement for a certain injection. The doctors used to submit eight-character codes for the procedure. However, the insurer decided that they wanted to negotiate lower prices for the drug itself from drug manufacturers. To do that, they need data on which manufacturer’s drug is used each time a doctor injects it–and that information isn’t contained in the eight-character code. So the insurer decided to switch to a different, eleven-character code for the procedure, since the longer code carries information about the drug manufacturer. (Note: this is what we want insurers to do, because it enables them to reduce costs.)

This is already a pain for doctors. But the kicker is that the insurer’s computer system only has space for eight characters for this particular code. So the insurer sent all of the doctors it works with a memo explaining how to compress the eleven-character code into an eight-character code.* This involved rules like “drop the first digit if it’s a zero, otherwise drop the sixth digit if it’s a zero . . .” that are not only a pain but that are sure to spawn enormous numbers of errors.

The underlying problem is a combination of: (a) the way data is stored in mainframe computers; (b) lack of foresight when designing software programs; and (c) difficulty in modifying said programs. (The better solution would have been for the insurer to write a program that did the eleven-to-eight compression automatically–but presumably it batch-loads the data it receives into its mainframe, and there is no staging area where it can do that kind of pre-processing. Or they were just lazy.)

Multiply this problem by a million and you have the state of enterprise software today.

24 responses to “Bad Software

  1. There’s no incentive for the insurers to scrap their old mainframes for newer, more efficient systems. The difficulty in reimbursing doctors likely is good for the insurers since they can make more interest from the money that goes towards payments. So, any delay, accidental or artificial is likely beneficial for the insurer and not the doctor or patient. Your argument shows though, that private insurers may not be as efficient a system as people like to believe.

  2. I reckon the problem is closed, proprietary nature of that software combined with vendor lockdown.

  3. “So the insurer decided to switch to a different, eleven-character code for the procedure, since the longer code carries information about the drug manufacturer. (Note: this is what we want insurers to do, because it enables them to reduce costs.)

    This is already a pain for doctors. But the kicker is that the insurer’s computer system only has space for eight characters for this particular code. So the insurer sent all of the doctors it works with a memo explaining how to compress the eleven-character code into an eight-character code.* This involved rules like “drop the first digit if it’s a zero, otherwise drop the sixth digit if it’s a zero . . .” that are not only a pain but that are sure to spawn enormous numbers of errors.

    “The underlying problem is a combination of: (a) the way data is stored in mainframe computers; (b) lack of foresight when designing software programs; and (c) difficulty in modifying said programs. ”

    It’s Y2L! (Y2K all over again. ;))

  4. > “Or they were just lazy.”
    Close, but I think they are actually energetically cheap. They ought to widen the field to 11 and have the doctors use the new codes. This would require paying the price to upgrade their systems, rather than dirty up the incoming data.

  5. this is one reason why we need innovation for its own sake — at least it gets us new computer systems without fixed field lengths.

  6. it’s very modern finance: the client’s time is free, so take a little more. Only of course it isn’t free at all, and the costs appear in medical bills and, ultimately, insurance bills. Hmmm. Don’t the insurance companies get a cut of that? Maybe there’s actually an incentive to make the procedures more complex.

  7. There’s a reason medical bills are written in such a way as to confuse 99% of the people who read them, the same way the terms on your credit card are written in complicated fashion.
    You can read this interview with Andrew Kahr and ask yourself if they want people to understand those credit card terms.
    http://www.pbs.org/wgbh/pages/frontline/shows/credit/interviews/kahr.html

    The insurance companies intentionally write these forms like a highly complex sudoku puzzle from hell, so you become frustrated, throw them down and choose not to fight the overbilling/overcharging because the time and frustration involved.

    I wrote about how insurance companies intentionally hide their supposed costs on my blog, largely swiping from the journalistic work of Bobby Caina Calvin of the Sacramento Bee Newspaper. The story is a little dated, but still the information is still pertinent and accurately depicts the situation as it stands today.
    http://grahambrokethemold.blogspot.com/2010/03/if-insurance-companies-raise-rates.html

    http://www.sacbee.com/2010/03/05/2584092/obama-presses-health-insurers.html

    Then there is this story which was in the Los Angeles Times newspaper just yesterday.
    http://www.latimes.com/business/la-fi-blue-shield-20100708,0,3415807.story

  8. I’m the executor of an estate. Four years after the hospitalization at issue, 1+ years after the decedent’s passing, the hospital sent a bill for a co-pay with Medicare involved. I called the hospital and asked if I could pay in four years. The billing agent was not amused. More importantly, she had no solution to the possibility that a bill would show up years after I close the estate.

  9. I vote for lazy.

  10. CBS from the West

    “Don’t the insurance companies get a cut of that? Maybe there’s actually an incentive to make the procedures more complex.”

    That’s an EXTREMELY important point. The free-market-fantasy version of health care is that insurers try to hold costs down. But that’s based on a complete misunderstanding of their business model. The insurers take a cut off the top of the handle–it’s that simple. Their incentive is to do what they can to make health care more expensive. The only counter-incentive they face on this is if the costs get to the point where employers push back against the pass-through of those cost increases.

    But employers are pretty unsophisticated about health care and are reluctant to be seen as trying to limit health care for their employees: they prefer to let the insurers carry that water.

    So the costs just keep on spiraling up. And, needless to say, our recent health care “reform” contains nothing that has any reasonable chance of doing anything about that. A little window dressing with some tried-and-failed measures from the past, but nothing with teeth.

  11. My wife gave birth to our lovely baby boy in January. As a small business owner in Texas with individual insurance, maternity benefits are excluded, so we negotiated fees with the OB-GYN, Hospital, and Anesthesiologist, and Pediatrician (for post delivery). To be clear we PREPAID in advance with no complications or additional services required.

    Result? We got a bill from every single provider! That’s right. Every single provider sent us an invoice even though we had paid up front. The Anesthesiologist bill was for double the agreed amount. After several letters with copies of the receipts and prepaid invoices we’ve heard nothing further. However, we never received a return statement showing the account was paid in full as we requested.

    The cost was pretty reasonable, less than $7000 for everything; excellent prenatal care (monthly, bi-weekly, then weekly visits) top tier hospital, imaging, tests, etc., it’s just frustrating.

    There were several very small invoices from the hospital, less than $100, so we just paid them even though it should have been included in the “package” price we prepaid.

    Jim B.

  12. The insurance companies intentionally write these forms like a highly complex sudoku puzzle from hell, so you become frustrated, throw them down and choose not to fight the overbilling/overcharging because the time and frustration involved.

    yes.

    Original HIPAA II regs, developed under Clinton & completed just prior to Bush’s 1st inauguration, deliberately addressed this in a number of ways.

    Among those ways was standardizing the coding so this type of stuff (proprietary codes) could not be re-instituted.

    Writing software for HIPAA II was my business for some years, through ’05. Bush Admin watered down all kinds of stuff in biz friendly ways almost immediately after he entered office. This particular incident or similar ones, I never saw. But I would hazard a guess this is remnant of changes Bushies made somewhere along the line… if this coding request is even legal.

  13. Received my notice in the mail and what fun it is to gather up the paperwork – but because the sum owed is a certain % of weekly salary, it’s worth it.

    Check out United States District Court, Southern District of New York, Notice of Proposed Settlement of Class Action and Final Settlement Hearing of The American Medical Association et al., against United HealthCare Corporation. (Master File No. 00 Civ. 2800 (LMM) (GWG)

    HealthCare Corporation was using “flawed databases (the Ingenix Databases)”.

    New age “health care” after the “bill” was passed will consist of nothing more than health insurance companies collecting data from people. Meaning that the collection of data will replace actually going to see a doctor. If you want to see a doctor, that cost won’t be covered. I’m not joking.

  14. This is a simple “make the other guy do the work but keep all the money” situation.

    In years past, my Flexible Spending account worked automatically. I received service from the doctor or dentist, the insurance company was billed, the insurance company paid the negotiated rate, I was billed for the co-payment and any uncovered amount outstanding, and then the the FSA (run by the insurance company) sent me a check for any amounts I paid out of pocket.

    Now we have a debit card for copayments, prescriptions, etc. We have ONE card. Whoever is going to the doctor, dentist or pharmacy has to make sure they have the card. We have to keep all our receipts in case we’re audited. And (I haven’t even figured out how to do this yet) for some services like the dentist where we normally pay in full and then are reimbursed directly by the insurance company, we have to submit a claim for the portion of the bill not covered by insurance.

    So now they still get paid, but I’m doing all the work. I won’t be doing the Flexible Spending thing again next year – it’s not worth the hassle.

  15. I would think to have the cost of the drug the manufacturer info was already known. Changing the code was unnecessary, costly, and fundamentally stupid. This is the kind of stuff that happens when users make decisions without talking to a programmer – common problem with outsourcing.

  16. David Petraitis

    Of course the insurer’s enterprise software could have been changed but that would have cost the insurer more money, rather than giving the users more pain, and driving up errors.

    If the front end was separate from the back end, then the front end could compress the 11 digit code however it would like (but that is getting too much into the technological discussion of two or three level client-server architectures … and we don’t want to go there ;)

  17. The magic of the private sector at work. Not like those inefficient gummint bureaucracies, nosiree.

  18. Bayard Waterbury

    You know, James, sorry, but this is very sad. Both of my brothers are base code writers. Both preach the need for all computer code to be open source. If it is, then one gets the best solutions from the best minds. But, this is mind boggling. This is a need for a “patch” which is done by all code writers at every software writer. Simple. You find a solution, you write a “patch” (small piece of code, usually), and you send that patch to all users to install. The patches must be beta tested, but in this kind of large user community, that should be a few day process, and then you’re done and go on to the next problem.

  19. Actually management confuses programming with coding and therein lies the problem. So instead of specifying the requirements, they specify the design which leads to the messes discribed above. I can recall sitting in on “design” meetings and having a manager’s design to solve the client’s problem only requesting a estimate to implement the change. Often the estimate was 6 to 8 months plus 1 week. The former to completely redesign the program to fit the manager’s design and the later to implement the client’s request. This problem seems to be endemic.

  20. something is fishy in this day and age if even on mainframe computers they can’t change a code. my vote is they just decided to pass the problem on to the customers because they got a quote from whoever handles their proprietary software that they didn’t want to pay or their systems are so old an creaky that they are actually hard to fix. After y2k you would have thought they learned something. Even mainframes can run relational databases.

  21. SAS was the only collection of real-time data that made sense to me because it allowed HUMAN enterprise intelligence (manufacturing for scale-up, statisticians for efficacy, and operations for human safety) to access confirmed data, find temporally related cause and effects, and recognize with certainty what was not working in real time.

    To a large extent, “programming and design” have succeeded in cherry-picking data collection in real time in order to eliminate crucial data that does not fit in with a THEORETICAL “conclusion”. This is the very definition of a “flawed database”, or as I call it – “crap” :-)

    And, of course, it was DESIGNED to inflict the most pain on human intelligence – try riding in a cart using square circles.

  22. This is the very definition of a “flawed database”, or as I call it – “crap” :-)

    Yep, sometimes u got’a call ‘em like you smell ‘em!!!

    I’ve been there, smelled that one as well. I observed over the years this malodorous work product most often resulted from an alchemy of 2 opposing forces:
    * competent code designers/coders
    &
    * upper management (way up… like so far up you could never see ‘em) requirments incorporating sufficient obfuscation so make final product could not possibly fullfil it’s intended purpose.

  23. healthcarethinktank

    These processes are so hopelessly complicated that even those of us who understand it barely understand it.

    Just the CPT and ICD coding is complicated, let alone all of the technical gibberish to get the billings filed.

    And then there is the followup.

  24. I stopped reading when I got to the word, “outsourcer”. Nobody listened to us old fart software developers when complained that our jobs were thrown over the wall to India. All I can say is that I hope the firmware in your radiation treatment machine wasn’t outsourced, too.