We're updating the issue view to help you get more done.Learn more

Support distributed versioning

Currently the openEHR Common model supports Contributions whose
contents may be Compositions from other systems. However, it does
not cleanly support the synchronisation of Contributions from one
system to another, such that the source systems and Contributions
can be identified (there no problem in applying the content of a
remote Contribution to a target system, just in identifying the
originating Contribution).

In a distributed, caching EHR computing environment, these semantics
would be needed, in a similar way to synchronisation of change-sets
between instances of software configuration management software such
as Subversion or BitKeeper.

A version identification system is also needed to support globally
unique identification of versions in such a way that clashes are
avoided when copies, moves and merges are made.

Various anomalies in the existing models can be fixed by a proper
version identification scheme:
- demographic model - PARTY.reverse_relationships cannot just be
  a uid
- referencing of CONTRIBUTION from VERSION and vice-versa
- how a DV_EHR_URI relates to the various identifiers






Change Description

The following changes are made: - new classes OBJECT_VERSION_ID and VERSION_TREE_ID is added to support.identification - used to support distributed version identification - New class LOCTABLE_REF is added to support.identification to the common.change_control package - this type is the logical correspondent to DV_EHR_URI - the attribute VERSION.version_id is renamed to version_tree_id and its type changed to VERSION_TREE_ID - a new creating_system_id attribute is added to the VERSION class, of type OBJECT_ID - the function VERSION.uid is changed so that it returns an OBJECT_VERSION_ID. - the explanation is improved to describe the new semantics of version identification, copying and moving. - in the class REVISION_HISTORY_ITEM, rename the attribute revision to "version" for consistency and change its type to OBJECT_VERSION_ID - move the "version" function defined on the class OBJECT_ID in the support IM to only the subtypes that want it; currently it is incompatible with versioning as defined in this CR, and is actually incorrect. The reason is that a single OBJECT_ID (e.g a GUID or ISO Oid always identifies a particular instance; if the instance in question happens to be a version of something that is changing in time, then the OBJECT_ID is an identifier for a single version. What this CR provides is a more structured and computable way of identifying versions. - rename the attributes of HIER_OBJECT_ID to be the same as the HL7 II class - there is no point being different. - add another descendant class of UID, called INTERNET_ID, defined as a reverse internet domain id, to support system identification - in the demographic model, correct PARTY.reverse_relationships to be a Set of LOCTABLE_REF - also in the demographic model, correct ACTOR.roles to be a Set of HIER_OBJECT_ID and ROLE.performer to be a HIER_OBJECT_ID - in the EHR IM, correct EHR.ehr_id and system_id to both be of type HIER_OBJECT_ID

Approved By


Fix versions