HL7 needs a fresh look because V3 has failed
Aug 20, 2011A few months ago, I posted a call for input into the HL7 Fresh Look Taskforce. HL7 wouldn’t need to have a fresh look task force if it hadn’t lost it’s way, and it wouldn’t have lost it’s way if v3 hadn’t failed. But it has: HL7 v3 has failed.
Now a few readers are going to stop reading at this point and rush off and go quoting me saying “v3 is broken” or “you shouldn’t use v3” or “national program XXX shouldn’t have used v3”, but I haven’t said any of those things - v3 can be made to work if you provide enough skills and resources, and for some things, it’s the best solution (CDA, for instance). But overall, v3 has failed to achieve the goals that HL7 has (being the general best solution to everything), and is not a vehicle that can take the organization forward from here.
That’s a sad and painful admission for an organization that has invested so much work into an idea that seems to have so much promise. And HL7 really has worked hard on v3. But where we’ve ended up hasn’t been where we expected to end up.
I see it as if, back in the mid nineties, we stood on top of the mountain called v2, and said, “from here, we can see a great mountain over there, let’s climb that one.” And v3 was a monumental climb, much bigger than we expected (and I have a huge amount of respect for the people who pursued the climb with an awesome vigor and determination, most especially Woody Beeler). But we’re at the top now, standing on top of the mountain looking around. And to be honest, the view isn’t what we thought it was going to be.
Why?
- the V3 design process imposes consistency on our standards (it’s primary goal) but the inconsistency is mostly not of HL7’s making (example)
- the V3 design process is technology and platform agnostic - but that just makes implementation more costly
- the V3 design process depends on design by constraint -see my previous comments on this
- the v3 process really required all the possible modeling to be done up front - the price of change is too scary - and therefore produced models that weren’t implementable directly (too much! too big!) without support from a large program and highly skilled insiders
- the V3 models (RIM) created semantic interoperability but not clinical interoperability, and it was only once people tried v3 that we discovered what the difference was
- we tried to satisfy too many different implementer interests, and ended up satisfying none of them (see my comments oncontext of interoperability, theHL7 community, thexml consensus, andlack of real compromise)
- we just never got anything compelling in the space of specifying the behavioural aspects of interoperability
Now I’m not saying that you can’t make v3 work - in fact you can, quite well indeed, if you buy into the “sandbox”. If you’re prepared to adopt the entire specification stack and invest in making it work, then v3 works quite well. But the walls to the sandbox are quite high, and v3 is not an opt-in project where that makes sense (unlike openEHR). It’s a general interoperability standard, to be implemented in lots of ways by lots of different people, mostly by other people’s choice.
I’ve worked hard, with others, to try and lower the walls over the last few years. But we’ve by and large failed. Changing a specification is very difficult. The people inside the sandbox don’t like us diluting the purity of the original ideas, and for most users, the outcome hasn’t been much different - it was too little, too late.
It’s not that there hasn’t been good outcomes from HL7 v3. CDA is obviously a good outcome. But we have to be realistic - CDA isn’t magically successful because of the parts it gets from the v3 process, but almost in spite of them (I can’t tell you how many people have told me that they’d rather have v2 segments embedded inside an html like document).
So it’s time to look again (that’s what the fresh look taskforce is all about) - what are we doing? Where are we going now? I, for one, don’t think we can stand happily where we are. This is IT, and the only constant is change. So what are we going to do now?
p. s. I have my own ideas - check back tomorrow…
Update: please be to sure to read the counterpoint argument