ADL2 - SWOT
1. Making specialisation work - by differential specialisation + inheritance flattening
Benefits
Handling specialisation diffs is more logical in tooling and easier to manage changes to upstream artefacts
Ultimately ‘less code’
Specialisation by slot-filling is now a preferred pattern v.s simple inheritance. ADL2 supports this more cleanly
Challenges:
Issues of legacy conversion
Ultimately the correct flattened version needs to be created/recreated in tooling such as CKM - on the fly or cached??
Reviews need to be based on a specific flattened version -
Ongoing issues of version dependency management - need better semver use ? package.json or embedded semvers.
If semver is the answer, do we put the dependencies inside artefacts or outside e.g package.json
Is the natural primary artefact actually a bundle inside a zip container? with a minimum of a package.json manifest
Does this change AQL behaviour?
Do we differentiate compound, specialised archetypes (slot-fills) from templates (really constrained profiles)
2.Templates as archetypes and overlays, solving all the existing redefinition, template id, versioning and language problems
Benefits
Cleaner implementation (no .oet), archetypes and templates are almost identical
proper multi-language support
coded node name overrides
Proper support for
Enhanced design-time artefacts - e.g template-level descriptions, hide-on-form, RM attribute visbility etc mostly supported by 1.4 /1.5 but not well by .oet
Challenges:
Not clear how this affects querying - existing templates are profiles on composition not specialisation of composition - does the aQL path change?
CKM would need .oet->Adl2 convertor (as per AD) - still some conversion issues in AD. Needs to be a community effort
Issues for historical CKM reviews
Moving from MD5 hashes to semver
3. Tuples to replace irregular special constructs for C_DV_QUANTITY, C_DV_ORDINAL and C_CODE_PHRASE
TOOLING: minor benefit. Streamlining ? add to 1.5
4. ADL enhancements
default values on any node
node ordering - before and after keywords
direct archetype inclusion for re-use - supported by C_ARCHETYPE_ROOT and use_archetype
make cardinality and existence constraints optional: mandatory ‘existence’ was the #1 complaint for a long while!
plus a lot of properly defined semantics for node-level conformance, congruence, flattening
5. Regular internal code system / Greatly improved modelling of terminology constraint
Benefits
tidies up name vs. value codes but was that ever a real problem
more consistent numbering (“less code”)
approach is closer to FHIR Valuesets but lacks e.g nested values, multi- terminology valueset, mapping constraints
Challenges
complex and risky to convert atCodes to iDcodes
Terminology handling feels very messy to me. Argument for using FHIR Valuesets and Codesystem as baseline then enhance?
6. Name-spaced archetype ids: allowing archetypes from different institutions with the same concept name to be distinguished (e.g. NHS bp_measurement and Norway bp_measurement)
Benefits
Will become significant as complex systems evolve
Challenges
Current approach is tricky for CDRs as the full specialisation lineage has to be carried in the patient data
Examples
Single domain specialisation
org.openehr.uk ‘variant.v1’ specialisation of openehr.org blood_pressure.v2
org.openehr::OPENEHR-EHR-OBSERVATION.blood_pressure.v2-variant.v1
Mixed domain specialisation
org.openehr.uk ‘ukvariant.v1’ specialisation of openehr.org blood_pressure.v2
org.openehr.uk::OPENEHR-EHR-OBSERVATION.org.openehr::blood_pressure.v2-ukvariant.v1
Complex domain specialisation
org.openehr ‘int_variant.v1’ specialisation of openehr.org uk_variant.v1
org.openehr::OPENEHR-EHR-OBSERVATION.org.openehr.uk::blood_pressure.v2-ukvariant.v1