OPT Versioning on CDRs, esp. EHRbase

Somebody should use this forum’s MCP to count how many times Ian had to write, “This is solved in ADL2”.

@HHeiser @jbuch You are having problems because your CDR hasn’t migrated to ADL2 in the past 10 years since ADL2 became available.

I made that statement because for a while people would ask ‘why bother with ADL2’ , and for many implementers this kind of cross- language issue is not relevant.

I want to get us to ADL2 but we can’t blithely ignore the challenges of migrating from ADL1 to 2. There have been a whole number of ‘snags’ that have needed to be worked through, particularly if the vast majority do not have the luxury of implementing clean ADL2-only CDRs.

The CDR and tooling implementer community has engaged strongly in making sure that the burdens of transition are as low as possible because otherwise we will never, IMO, get there.

ADL2 was ‘ready’ 2 years ago but never 10, and we are still working through significant impacts on transition on existing queries.

Even the clean-room NEDAP implementation involved some assumptions and workarounds which have come to light and their insights have been invaluable.

We are not in a clean-room scenario - that is the price of success, and we have to manage the transition responsibly.

But let’s have that discussion somewhere else!

Not quite… the substantial changes were all worked out by 2012 and formally specified by 2014 (17 July 2014 to be exact).

All changes since then (other than the ‘constraint strength’ thing, and i think ‘RM visibility’ (both both non-breaking changes) are documentation changes, not syntax changes.

AOM2 changed a bit more slowly, but the hard parts were done by 2016, and the form available in 2014 worked (but it had a couple of edge case bugs). So that’s 10 years.

I have the entire source code history of ADL Workbench to show this history, but it is equally visible in the ADL2 and AOM2 specification revision histories. The code modifications since 2014 on AOM2 are all incremental.

The form of ADL2 available in 2014 solved nearly every problem on this page, including specialisation representation and templating. The ADL hierarchy in Confluence shows how old the discussions on all this were. The computational differences between ADL 1.x and ADL2 are like going from C to Java.

By 2011, I had the whole thing working in ADL Workbench, except for id-coding, for which we went through a lengthy consultation; that was agreed by 2014.

By 2015, Nedap had first implemented ADL2 in Archie, and it was in their EHR product by (I think) 2018 (that’s the product that didn’t even do ADL1.4).

Around 2017 (I think), Better had demonstrated ADL2 templates in their tool; they just were not exposed to normal users.

There were of course incremental improvements to many of the features, e.g. rules to do ADL1.4 to ADL2 code mapping and so on, but the main work was specified and demonstrated in tools more than a decade ago.