Generic_extract Package
Overview
The rm.extract.generic_extract package defines a kind of Extract designed to be used by
non-openEHR systems (including EHR/EMR systems) that want to send data to another system using
openEHR structures defined by archetypes and templates. Such systems typically do not natively contain
standardised data of any kind, and usually have quite variable and idiosyncratic support for versioning.
The following UML diagram illustrates the rm.extract.generic_extract package.
The figure below illustrates the instance structure of a typical GENERIC_EXTRACT. The containment structure
is shown in blue, and content item wrappers (meta-data) in yellow.
Design
Structure
The GENERIC_CONTENT_ITEM subtype of EXTRACT_CONTENT_ITEM defines meta-data more or
less of which can be populated by typical legacy systems, as well as document sources such as
IHE/XDS repositories. Various groups of meta-data are defined: document type / status information,
commit audit details and document lifecycle information.
The document meta-data items are as follows:
-
item_type: a coded term indicating the content 'model' or schema, which may be a published standard, and/or some kind of archetype, template or similar content control artefact; -
item_type_version: version of theitem_typemodel.
The next group of items defines details of creation of the original information. In some systems, this is the same as 'committal', i.e. the act of creating and committing the original data to the system. In other cases, the information in the extract is being assembled for the first time for the purposes of the extract, and the audit information therefore corresponds to this act. The audit details are as follows:
-
author: identity of the author of the original content - this is a UID reference to a demographic item in another part of the current extract; -
creation_time: date/time when the content was created; -
authoriser: identity of a professional who authorised this content, if relevant - this is a UID reference to a demographic item in another part of the current extract; -
authorisation_time: date/time when the content was authorised; -
item_status: lifecycle status of the content; -
version_id: version of this particular instance of the content item when it was created and/or committed, in environments where versioning is supported; -
version_set_id: 'version set' identifier, i.e. identifier of group of versions which together constitute a set of versions in time of a given logical content item; -
system_id: system where the content was created / committed to / extracted from; -
other_details: other meta-data, in the form of a keyed list of Strings.
All of these items are optional, reflecting their varying availability in different source systems. An archetype or template of the Extract may force some or all to be mandatory for specific kinds of Extract.
The item attribute carries content which may be any openEHR LOCATABLE structure, including
things like COMPOSITION, any kind of ENTRY including GENERIC_ENTRY, ITEM_TREE, or even
CLUSTER. This is assumed to have been converted by some data transformation process from data
within the original system.
Demographic Referencing
Within the content a generic Extract, expressed using openEHR COMPOSITIONs, participations are
expressed using intances of PARTICIPATION. This is clearly somewhat inefficient for the required
use here, since they will be constructed on the fly from simpler non-openEHR data, and a more flexible
variant may be required for the future.
To Be Determined: a more efficient participation reference mechanism, to support participations constructed on the fly for the purposes of the Extract.
Class Descriptions
Unresolved include directive in modules/ehr_extract/pages/generic_extract_package.adoc - include::../UML/classes/generic_content_item.adoc[]