Archive for category Health Care
Listening to Ezekiel Emanuel try – on Obama’s behalf – to weasel out of the president’s infamous promise about our being able to keep our insurance and keep our doctors brought to mind this thumbnail sketch from Witness, Whittaker Chambers’s autobiography and exploration of the mentality of the Left:
…if that person fell from grace in the Communist Party, Harry Freeman changed his opinion about him instantly. That was not strange; that was a commonplace of Communist behavior. What was strange was that Harry seemed to change without any effort or embarrassment. There seemed to vanish from his mind any recollection that he had ever held any opinion other than the approved one. If you taxed him with his former views, he would show surprise, and that surprise would be authentic. He would then demonstrate to you, in a series of mental acrobatics so flexible that the shifts were all but untraceable, that he had never thought anything else. More adroitly and more completely than any other Communist I knew, Harry Freeman possessed the conviction that the party line is always right.
To some extent, all party loyalists are at risk of falling into the trap of defending something they had attacked before, or vice-versa. It is well that very few possess the ability to do so with full awareness of what they’re doing, and an utter lack of shame in doing it.
The Washington Post reports this morning that 10 Democratic Senators – including both Colorado Senators – have asked the Obama Administration to extend the open enrollment period for new insurance under Obamacare. Their request stems from the well-publicized problems with the rollout of the insurance exchange websites, the primary mechanism for enrolling in Obamacare and purchasing new insurance, as required by the individual mandate. The letter reads, in part:
Given the existing problems with healthcare.gov and other state-run marketplace websites that depend on the federally-administered website, we urge you to consider extending open enrollment beyond the current end date of March 31, 2014. Extending this period will give consumers critical time in which to become familiar with the website and choose a plan that is best for them. Individuals should not be penalized for lack of coverage if they are unable to purchase health insurance due to technical problems.
While this may sound like a good idea, it likely won’t work without a delay in the individual mandate (See Solution #7), and is almost certainly illegal under Section 1311 of the law:
The three-month open-enrollment period isn’t statutory; instead, the ACA directs the Secretary to establish an “initial open enrollment” period. Normally she’d have the discretion to tinker with that as necessary. But the statute also requires her to establish that initial period by “not later than July 1, 2012.” Well, she’s blown through that already — and the provision appears to preclude her from rethinking the determination now. For years after 2014, the statute’s quite clear that she’s got discretion to set annual enrollment periods. But that broad discretion exists only “for calendar years after the initial enrollment period.” That reinforces the suggestion that she can’t rethink the open-enrollment period now.
Apparently, a 2700-page law that’s generated 11000 pages of regulations, includes almost unlimited waiver capacity for the President’s friends, excludes all manner of people responsible for passing and implementing it, and even permits the executive to ignore whole sections of it, still didn’t provide enough flexibility after the election. Now, Democratic Senators who are staring political mortality in the face are encouraging the HHS Secretary – and by extension, the President – to just ignore the law altogether to help get them out of this mess.
Either Senators Udall and Bennet knew this was illegal when they signed the letter, or they didn’t. Either way, this amounts to an abdication of responsibility of elected representatives.
If they did know, they’re encouraging not merely this Administration’s habit of arbitrary rule and lawlessness within the law, but actual black-letter lawlessness. If they didn’t know, it’s a testament to the dangers of voting on bills you couldn’t have read, much less understood, that hand over wholesale lawmaking authority to another branch of government. The problem with the latter is that it becomes a habit, and little by little, and then all at once, you find yourself running for an office that doesn’t matter at all, while the real power has coalesced into a single executive and an unelected civil service.
How about this. Since Senators Udall and Bennet don’t seem interested in governing, how about elect someone who is?
This morning, Colorado Speaker of the House Mark Ferrandino retweeted this from the White House:
Nice. Here’s what you get:
I had the pleasure of being a guest on the John Batchelor Show yesterday, to discuss the ongoing launchpad explosion that are the Obamacare online exchanges. Since the show was podcast for rebroadcast later in the evening, we chatted a little before and after the segment about the exchanges, and I found Batchelor to be well-read on his subject, serious about it, not given at all to hyperbole or theatrics. In other words, just as he sounds on the air.
As the launchpad explosion of the Obamacare Healthcare exchanges continues to play out, the risk builds of putting the blame on the programmers. This would be a mistake, and I don’t say this out of some sense of fraternal protectiveness for the developers.
The blame here lies squarely on leadership.
Notice that I don’t say management. I say leadership, in particular, the political leadership.
They were so committed to the October 1 launch date for the entire system that they didn’t leave enough time for proper development and testing.
It’s quite clear that the development team simply wasn’t given the time it needed to do the job. By some reports, top-level decision-makers were so slow in approving requests that certain key functionality had about ten months in development. That’s simply not enough time for a large, complex system that involves a lot of cross-communication with other systems.
What’s also not clear unless you’ve worked in software development for a while is that such large systems are developed with a lot of back-and-forth between the pieces. Data that needed may not be available at a certain point in the process; you may find out later on that you want to keep users from entering certain kinds of data in combination, and so forth. A lot of this only becomes clear once development is well underway, and UI developers – the guys who create and program the User Interface that you see – are usually at the tail end of the process. This often gives them the least amount of time to do their work. Since it’s clear from the sorts of error messages we’re seeing that even the underlying middle-tier and database code still isn’t ready, it’s clear why the user interface keeps breaking.
As mentioned above, the political leadership, evidently fearing political fallout from any delay whatsoever, has decided to act like Soviet leadership facing a poor harvest. (Was there every any other kind?) Instead of facing reality, and preparing people for that reality, they resorted to a number of strategies.
In such situations, it’s almost impossible to make up for that by throwing more people and resources at it. Design and development can only bear so many chefs; the complexity isn’t in the small pieces of the code that need to be written, but in the overall picture of how the various systems fit together, and the business rules that need to be enforced at each step. Adding more people to the design process isn’t going to get the work done any more quickly. And just adding more developers to the coding process doesn’t solve that problem at all. In fact, it can make it worse, as different coding styles begin to conflict with each other.
And yet, that’s just what the administration seems to have done, with an initial price tag of $100 million ballooning to over $630 million as of this writing. When they asked how things were coming, they were told, “not well.” And when they asked if more resources would help, and were told, “yes,” they wrote a bigger check. They may not even have asked the second question, and the contractors may have said yes in order to get a bigger check. And no doubt the contractors will be hauled in front of a Congressional committee to tell this story. The point is, that it’s possible to imagine a scenario where Washington reacted as Washington always has – write a bigger check – and such a reaction was doomed to complicate the failure, not ameliorate it.
Their public reaction to the failure has be equally Soviet. They first blame circumstances beyond their control – for the Russians, it was the weather; for this crew, it was server load. In neither case was that factor beyond normal. And yet they stuck with it for days after it became clear.
And now, we’re being told that “it’s getting better every day.”
Here’s the secret: it’s not. What’s happening is that the developers and designers are now rushing to meet another hard deadline – December 31, when people will, by law, have to have signed up for health insurance, or risk fines from the IRS. The scenario they’re desperate to avoid is one where someone can’t sign up, files his taxes, has his refund garnished by the IRS to enforce the penalty, and files a class-action lawsuit in the middle of election season to remind everyone of last year’s Hindenburg.
The development team still isn’t getting the time it needs to do this right, and in continuing to rush to rebuild a system that already exists, it’s only going to make things worse. It may succeed in hiding some of the more public failures, but the back-system stuff is going to be held together with chewing gum and baling wire, and is going to be ripe for hackers and routine breakages.
As I said before, just be glad that nobody’s actual care is depending on this thing. Yet.
This post originally appeared at PJ Media Lifestyle, (“No Good Excuses Exist for the Failure of Obamacare’s Expensive Website“).
By now, it’s hard to decide if the launch failure of the Obamacare exchange websites isn’t funny anymore, or just keeps getting funnier.
Sites went down — including the individual state sites for states that are running their own exchanges. When people weren’t getting “due to an extraordinarily high volume of calls” errors, they were getting 404 Not Found messages, and pages were finding new and creative ways of erroring out. Even Wednesday afternoon, I was getting server errors just trying to finish the account creation process on the California site.
Almost as quickly as the train wreck itself unfolded, so did the explanations for it evolve. First, both President Obama and then Press Secretary Jay Carney claimed with straight faces that the failures were a result of the massive interest in the exchanges. Then, others claimed that these were normal rollout errors that occur with all large, complex systems. Finally, as the engineers rolled the platform back to the hangar for retooling, there was no hiding the fact that this was indeed a software failure, not just a set of normal launch “glitches” (to use the press’s word du jour).
The exchanges’ bad day brought to mind a number of other high-profile website failures, including the Romney campaign’s spectacular white elephant of a killer whale, Orca.
I’ve been in web development for most of my professional career. I’ve participated in successful launches, and launches that needed to be rolled back and fixed. I’ve spent very long days dealing with one error after another, and equally long, uneventful days waiting for the deluge that mercifully never came.
It’s always easy to criticize someone else’s failures, and with my luck, tomorrow the QA guys will rain down trouble tickets on my head like nobody’s business. Nevertheless, it remains inescapably true that while there were reasons this happened, they weren’t good reasons, and could have been avoided. Given three years and hundreds of millions of dollars for development, they should have.
Here’s why, and how.
How Web Systems Work
First, a very simplified description of how large, commercial websites are put together nowadays. They basically have three layers of servers – 1) the web layer, which talks to you, the user; 2) the database layer, where the data is stored; and 3) middle-tier layers, which figure out what questions they need to ask the database, and what they need to tell the database, in order for the front-end that you see to work properly.
Each layer consists of many servers. You may be talking to Web Server 1 for a little bit, and then switch over to talk to Web Server 2. And Web Server 1 may send your first request to Middle Tier 1, and your next request to Middle Tier 5. This lets them answer many more questions at once, and talk to many users at once. It’s how Google is able to get results back to literally millions of simultaneous requests almost instantaneously.
These layers have traffic cops (called “routers”) to make sure that no one computer is trying to handle too many questions at once. Other traffic managers keep track of who you are and where you are on the site, so you don’t have to keep starting over.
There are even multiple databases. Data that change a lot (this is called “volatile”), like information about you, or your orders, or billing information, may only be stored once (and backed up regularly). But information that doesn’t change very often, like plan pricing and terms, may be stored in more than one database, to make it faster and easier to get to.
Web systems have used this basic architecture for over a decade now, and launching large, complex sites is now less art and more science.
What Can Go Wrong
Of course, no technology is foolproof, and large, complex websites do fail.
First, users are unpredictable. There’s a saying that you can make something foolproof, but you can’t make it damn-foolproof. People are ingenious in the ways they will misuse something that you put in front of them, and programmers are always complaining about users “doing it wrong.” Of course, it’s not the users who are “doing it wrong,” it’s the programmers who didn’t anticipate their doing it that way.
Second, servers will fail, network connections will fail, routers will fail. Sometimes this just happens, and there’s not much you can do about it, except hope that whatever’s left can handle the load, while you work to get the servers back up.
Sometimes, the load really is too large for the servers’ performance limits and number of servers. Web servers can only handle so many questions per second; the same is true for middle-tier and database servers. This is what happened to the Colorado Rockies in 2007, when seemingly all of Colorado tried to buy World Series tickets at once. The traffic jam brought the website to its knees, and people had to wait a day for the engineers to rework it so that wouldn’t happen again.
And sometimes, programmers just mess up. The database isn’t designed right, and it either loses information or takes too long to answer questions. The middle tier doesn’t ask the database the right questions, or fails to store what the customer needs stored. The web server can ask for information that isn’t there, not keep track of the where you are in the site, show you stuff you didn’t ask for, or let you choose things that don’t make sense in combination.
And the layers can send the wrong information to each other, or misread the information that gets sent to them by other layers.
How You Keep Things From Going Wrong
Of course, programmers are responsible for testing their own code as far as possible. But programmers are usually the worst people to test their own code. They know where all the bodies are buried, and only the most disciplined are likely to test things they know are likely to break. After all, they’ve fixed it before, and are heartily sick of making sure that the date field doesn’t bomb when someone enters 11//1994, instead of 1/1/1994.
There are QA testers, who make sure that things work as advertised. They’re given a list of expected behaviors, and run through the site, making sure that the it does the things the programmers say it will do. More importantly, they run through the site, deliberately making mistakes, to be sure that the site doesn’t break.
There’s beta testing, which basically is a larger group of people who aren’t given any specific instruction. They’re the ones most likely to imitate actual users, since ideally, they have no preconceptions of how the site is supposed to behave, and where it might break.
There’s load testing, which simulates a huge number of hits, all at once, to make sure that the servers don’t buckle and fold like a cheap suit when everyone tries to buy that cool toy all at the same time.
What Went Wrong
From the evidence, it’s clear that the Obamacare exchange servers saw errors of all different kinds. They weren’t prepared for the load, even though this was never very heavy. California reported about 600,000 unique visitors, and Colorado reported about 55,000 unique visitors.
There were screen captures of database errors, not because the data was bad, but because the structure that holds the data was misdesigned.
There were 404 errors, which are totally design errors, meaning that the web sever was trying to get to a page that didn’t exist. (This led to the best hashtag of the day, #404care.)
There were non-descript server errors like the one I got from the California server.
There were user-interface errors. At about 10:00 AM, Colorado suspended new accounts on its site (it’s one of the ones using its own site, not the main exchange site), and didn’t get around to allowing new accounts again until 3:00 PM. At that point, the “New Account” button sent you to the login page for existing accounts. If you chose to enter your childhood phone number for a secret question, it wouldn’t take it, no matter what format (certainly not the format it used when asking for your current phone number).
This is why I say it was clear that this wasn’t just one of those things. The volume of inquiries wasn’t high by large-system standards, and the rest of the errors were in the control of the programmers.
These were design and execution errors, pure and simple. They were all catchable, with proper beta and load testing.
What Could Have Been Done
Test. Test. Test.
If you’re going to have a big, splashy rollout of a controversial government service that half the country is rooting against anyway, you need to test it until it’s bulletproof.
Because failures are often ambiguous from the user side, it’s hard to tell exactly where a lot of these errors originated from. It’s certainly true that the data — involving as it does multiple insurance companies, with multiple plans, for different pricings based on location and number of people covered — is incredibly complicated, and that some states didn’t have final price and deductible information available.
As a programmer, I can tell you with certainty that simply logging into a system shouldn’t produce an error.
And with three years and tens of millions per site at the ready, this was inexcusable.
It didn’t have to be that way. Instead of announcing October 1 as the date that Obamacare would save the world, they could have had a series of smaller rollouts, opening up various portions of the registration process at, say, monthly intervals.
In effect, ask the public to act as your beta testers. They would have lost some of the sizzle in return for a robust system that wasn’t freighted with unrealistic expectations, but right now, I think that’s a trade they would happily have made.
It’s true that it’s hard to get a real feeling for how much of the problem was data-driven, since many times we couldn’t get far enough into the site to find out. But again, it could have been rolled out in pieces, letting people browse before the law said they could buy.
All of the code would still have needed merciless QA testing and beta testing, but each section would have been solid before the next one was rolled out, and where that wasn’t possible, the potential weaknesses would have been known beforehand, making it easier to locate the launch-day failures that remained.
In the cases cited earlier, the damage was either limited, or over. People’s irritation at not being able to score World Series tickets was tempered somewhat by the fact that they were seeing their team in the World Series at all. The Romney campaign had one day to make Orca work. Once it didn’t it was game over, and there was no payoff at all for getting it working Wednesday.
Obamacare exchanges are different. Not only are they supposed to be the tool by which tens of millions of Americans will — forever — select their health insurance, they’re a precursor to the systems that will store actual medical information for patients, insurers, hospitals, doctors, regulators.
In the end, the only good thing about these websites is that nobody’s actual health depended on their working.
To celebrate the rollout of Obamacare’s Health Insurance Exchanges, State Representative Crisanta Duran (D-Denver) tweeted the following:
Only problem was, about 90 minutes earlier, Connect for Health Colorado, the state’s implementation of the exchange, had suspended new accounts because of technical difficulties:
Colorado’s 2011 decision to implement the health care exchanges was controversial; it was passed only with the support of a few state House Republicans, who had regained that chamber largely on the strength of public anger over Obamacare’s passage. The decision to implement the Exchanges was defended on grounds that the alternative would have been to throw Coloradoans into the federally-run exchanges, and to sacrifice state control.
Given that Colorado boasts a robust tech entrepreneurial sector, you would think that over two years would have been enough for them to get these things working.
The Wall Street Journal reports that some businesses may be moving towards plans that meet Obamacare’s minimum requirements, and little else:
Benefits advisers and insurance brokers—bucking a commonly held expectation that the law would broadly enrich benefits—are pitching these low-benefit plans around the country. They cover minimal requirements such as preventive services, but often little more. Some of the plans wouldn’t cover surgery, X-rays or prenatal care at all. Others will be paired with limited packages to cover additional services, for instance, $100 a day for a hospital visit.
Experts worried that plans lacking hospital or other major benefits could leave workers vulnerable to major accidents and illnesses. “A plan that just covers some doctor visits and preventive care, I wouldn’t say that’s real health-insurance protection,” said Karen Pollitz, a senior fellow at the Kaiser Family Foundation and former federal health official.
This, of course, is precisely the opposite of what we should be encouraging. These plans pay for routine and predictable expenses, which means you’re paying for 100% of those costs, in addition to the administrative expenses for such plans. As Ms. Pollitz notes, they leave you just as vulnerable to financial catastrophe. In the meantime, the young and relatively healthy, who benefit most financially from catastrophic insurance, and the least physically from these base-bones plans, will be increasingly priced out of such coverage.
And while paying for as many expenses out of pocket as possible is the best way to control prices (assuming it’s accompanied by posted prices and performance comparisons), that manifestly isn’t true for ruinous expenses like emergency hospitalization, where the difference between 2X bankruptcy and 3X bankruptcy is meaningless.
In this case, Obamacare’s effects are useless on one hand, and worse-than-useless on the other.
One of the arguments for Obamacare has been the claim that increased access to primary care will result in long-term cost savings, but studies show conflicting results. The theory in favor of this is that early detection will allow treatment in earlier stages. The theory opposed to it is that keeping people alive costs money, as well.
Still, before we commit to a government takeover of health care, isn’t there a pretty simple experiment that we could run to find out? If access to primary care really does save money in the long run, why aren’t insurance companies providing incentives to the insured to make more and better use of their PCPs? There are some experiments in the works to incentivize doctors to be more accessible, and Anthem is even cutting them in on the presumed savings.
But the problem may be on the demand side as well – people just don’t like going to doctors, and not only because of the wait times. Presumably the problem isn’t just putting off going to the doctor when you’re sick, it’s also putting off the routine physical or the annual checkup that could catch trouble early, before there are any symptoms at all. So why not cut the co-pays? Or why not mimic the safe-driver discounts and rebate an increasing portion of the co-pay for every year you go for your physical? The latter would also help create the habit of going to the doctor regularly.
Insurance companies live and die on the sort of actuarial math that would let them detect any positive results from these experiments pretty quickly. And if anyone is culturally geared not to fall for the fallacy of the seen and the unseen, it’s insurance companies. (The fallacy states that people fall for redistributionist schemes because the beneficiaries are immediately identifiable, while the costs are distributed among the many. In this case, presumably, the beneficiaries are largely unseen, while everyone sees the hit to the bottom line.)
So, is there are good reason that insurance companies don’t do this? Is it just that they haven’t thought of it, or is there actual evidence that it doesn’t work? Is anyone aware of any results from the Anthem experiment that show one way or the other?
We are Orthodox Jews.
We keep kosher.
And as we all know, kosher meat is expensive. A typical cut of kosher meat is something like twice the price of a comparable non-kosher cut. Ground beef is at $2.49 a pound? Kosher ground beef runs about $4.99 a pound. I just check the price of ribeye. Treif at $6.99, it’ll run you $14.89 a pound at the East Side Kosher Deli. (They’re not necessarily gouging here in Denver; it’s that way everywhere.)
Now, Susie just got a mailer from the Colorado Democrats stating that Mitt Romney would “[take] away vital health services for women,” by, “[signing] laws allowing your employer and your insurance company to make your birth control decisions.” Presumably, they mean he’d repeal the HHS Mandate requiring employers and insurers to pay for employees’, without co-pay.
They’re arguing that, now that such coverage is the law, going back to making someone pay for it themselves is the same thing as “restricting” it (their word), or allowing someone else decide whether or not you use it.
So what this means is that you, every one of you now reading this piece (unless you also keep kosher), are deliberately restricting Susie and me from our Constitutional right to keep kosher. You are in fact making our food choices for us. Unless, of course, you take out your checkbook right now and send Susie and me a check to cover the difference in cost between kosher and non-kosher meat. And you wouldn’t want that on your conscience, would you?
This is the reductio ad absurdum of the liberal line that not having someone else pay for something legal that you want is the same thing as restricting it. So ultimately, everything is either free or illegal.