S2 logo

S2 EHR Model

Issuer: S2 Health

Release: CARE Release-0.8.6

Status: STABLE

Revision: [latest_issue]

Date: [latest_issue_date]

Keywords: EHR, EMR, reference model, S2

© 2023 - 2024 S2 Health

S2 Health is an independent, non-profit foundation.

Licence

image Creative Commons Attribution-NoDerivs 3.0 Unported. https://creativecommons.org/licenses/by-nd/3.0/

Support

Issues: Report an Issue
Web: https://specifications.s2health.org

Amendment Record

Issue Details Raiser Completed

BASE Release 0.8.5

0.8.5

SBASE-1. Add encounter ref to Event_context;
SBASE-23. Change Event_context.health_care_facility and author type to Entity_ref_node

J Coyle,
N Davis,
S Huff,
T Beale

23 Sep 2024

0.1.0

Initial Writing: based on openEHR EHR Information Model

T Beale

10 Apr 2023

Acknowledgements

Editor

  • Graphite Informatics group.

Contributors

This specification benefited from input from the wider health informatics community. The openEHR Foundation would like to recognise the following people for their contributions.

  • xxx

Support

The work reported in this paper has been funded in part by the following organisations:

  • xxx

Trademarks

  • 'openEHR' is a trademark of the openEHR Foundation

  • 'Java' is a registered trademark of Oracle Corporation

  • 'Microsoft' and '.Net' are trademarks of the Microsoft Corporation

1. Preface

1.1. Purpose

This document describes the S2 Canonical Model, which is a model of an interoperable EHR in the ISO RM/ODP information viewpoint. This model defines a logical EHR information architecture rather than just an architecture for communication of EHR extracts or documents between EHR systems. The openEHR definition of the EHR Extract is given in the openEHR EHR_EXTRACT Information Model.

The intended audience includes:

  • Standards bodies producing health informatics standards;

  • Academic groups using openEHR;

  • The open source healthcare community;

  • Solution vendors;

  • Medical informaticians and clinicians interested in health information.

Prerequisite documents for reading this document include:

Related documents include:

1.3. Status

This specification is in the STABLE state. The development version of this document can be found at https://specifications.s2health.org/releases/CARE/latest/ehr.html.

Known omissions or questions are indicated in the text with a 'to be determined' paragraph, as follows:

TBD: (example To Be Determined paragraph)

1.4. Feedback

Feedback may be provided on the S2 specifications forum.

Issues may be raised on the specifications Problem Report tracker.

To see changes made due to previously reported issues, see the CARE component Change Request tracker.

1.5. Conformance

Conformance of a data or software artifact to a S2 specification is determined by a formal test of that artifact against the relevant openEHR Implementation Technology Specification(s) (ITSs), such as an IDL interface or an XML-schema. Since ITSs are formal derivations from underlying models, ITS conformance indicates model conformance.

2. Background

This section describes the inputs to the modelling process that created the openEHR Information Model.

2.1. Requirements

Requirements informing this specification:

  • the life-long EHR;

  • priority: Clinician / Patient interaction;

  • medico-legal faithfulness, traceability, audit-trailing;

  • technology & data format independent;

  • facilitate sharing of EHRs;

  • suitable for both primary & acute care;

  • secondary uses: education, research, population medicine;

  • open standard & software deliverables;

3. The Clinical Information Model

3.1. Overview

The figure below illustrates the package structure of the S2 Clinical part of the Reference Model.

CARE 0 packages
Figure 1. EHR Packages

The packages are as follows:

  • ehr: this package contains the top level structure, the EHR, which consists of an Ehr_access object, an Ehr_status object, versioned data containers in the form of Versioned_Compositions, optionally indexed by one or more hierarchical FOLDER structures. A collection of CONTRIBUTIONs which document the changes to the EHR over time is also included.

  • composition: the Composition is the EHR’s top level "data container", and is described by the Composition class.

  • content: this package contains the Navigation and Entry packages, whose classes describe the structure and semantics of the contents of Compositions in the health record, including the following classes:

    • the Section class provides a navigational structure to the record, similar to "headings" in the paper record. Entries and other SECTIONs can appear under SECTIONs.

    • generic structures for recording clinical statements. Entry types include Admin_entry, Observation (for all observed phenomena, including mechanically or manually measured, and responses in interview), Assertion (for assessments, diagnoses, plans), Order (actionable statements such as medication orders, recalls, monitoring, reviews), and ACTION (information recorded as a result of performing Instructions).

The figure below illustrates an overview of the class structure of an EHR, along with the main concepts on which they rely, namely Data Types, Data Structures, Archetyped, and Identification.

CARE 1 overview
Figure 2. EHR Information Model Overview

4. EHR Package

4.1. Overview

The openEHR EHR is structured according to a relatively simple model. A central EHR object identified by an EHR id specifies references to a number of types of structured, versioned information, plus a list of Contribution objects that act as audits of change-sets made to the EHR. The high-level structure of the openEHR EHR is shown in below.

high level ehr structure
Figure 3. High-level EHR structure

In this figure, the parts of the EHR are as follows:

  • EHR: the root object, identified by a globally unique EHR identifier;

  • EHR_access (versioned): an object containing access control settings for the record;

  • EHR_status (versioned): an object containing various status and control information, optionally including the identifier of the subject (i.e. patient) currently associated with the record;

  • Folders (versioned): optional hierarchical folder structures that can be used to logically index Compositions;

  • Compositions (versioned): the containers of all clinical and administrative content of the record;

  • Contributions: the change-set records for every change made to the health record; each Contribution references a set of one or more Versions of any of the versioned items in the record that were committed or attested together by a user to an EHR system.

The ehr package is illustrated in Figure 4 below. The classes have a more or less one-to-one correspondence with the objects shown in Figure 3. Each versioned object of type X is defined by a class Versioned_X, which is a binding of the type X to the generic type paremeter T in the generic type Versioned_Composition (while such bindings do not strictly require classes of their own, they facilitate implementation in languages lacking genericity).

CARE ehr
Figure 4. rm.ehr package

4.2. The Parts of the EHR

4.2.1. Root EHR Object

The root EHR object records three pieces of information that are immutable after creation: the identifier of the system in which the EHR was created, the identifier of the EHR (distinct from any identifier for the subject of care), and the time of creation of the EHR. Otherwise, it simply acts as an access point for the component parts of the EHR.

The system_id attribute is used to record the identifier of the logical EHR repository to which the data containing the audit are committed. What constitutes a 'system' in this context is described in more detail in the Architecture Overview.

References rather than containment by value are used for the relationship between the EHR and Versioned_X objects, reflecting the vast majority of retrieval scenarios in which only selected (usually recent) items are needed. Containment by value would lead to systems which retrieved all Versioned_X objects every time the EHR object was accessed.

4.2.2. EHR Access

Access control settings for the whole EHR are specified in the Ehr_access object. This includes default privacy policy, lists of identified accessors (individuals and groups) and exceptions to the default policies, each one identifying a particular Composition in the EHR. All changes to the EHR Access object are versioned via the normal mechanism, ensuring that the visible view of the EHR at any previous point in time is reconstructable.

Because security models for health information are still in their infancy, the openEHR model adopts a completely flexible approach. Only two hard-wired attributes are defined in the Ehr_access class. The first is the name of the security scheme currently in use, while the second (settings attribute) is an object containing the access settings for the EHR according to that particular scheme. Each scheme is defined by an instance of a subclass of the abstract class ACCESS_CONTROL_SETTINGS, defined in the Security Information Model.

4.2.3. EHR Status

The Ehr_status object contains a small number of hard-wired attributes, and an archetyped other_details part. The former are used to indicate who is (currently understood to be) the subject of the record, and whether the EHR is actively in use, inactive, and whether it should be considered queryable. As for elsewhere in the openEHR EHR, the subject is represented by a Party_self object, enabling it to be made completely anonymous, or alternatively to include a patient identifier. The subject is included in the EHR Status object because it can change, due to errors being discovered in the allocation of records to patients. If the anonymous form is used, the change will be made elsewhere in a cross-reference table; otherwise the EHR Status object will be updated. Because it is versioned, all such changes are audit-trailed, and the change history can be reconstructed.

Other EHR-wide meta-data may be recorded in the archetyped part of this object, including runtime environment settings, software application names and version ids, identification and versions of data resources such as terminologies and possibly even actual software tools, configuration files, keys and so on. Such information is commonly versioned in software configuration management systems, in order to enable the reconstruction of earlier versions of software with the correct tools. One reason to store such information at all is that it adds to medico-legal support when clinicians have to justify a seemingly bad decision: if it can be shown that the version of software in use at the time was faulty, they are protected, but to do this requires that such information be recorded in the first place.

4.2.4. Compositions

The main data of the EHR is found in its Compositions, i.e. instances of the Composition class in the RM. Composition is based on the notion of a unit of information resulting from the interaction of a healthcare agent (subject or healthcare professional) with the EHR. It is designed to satisfy the following needs, which include the well-known ACID characteristics of transactions (Gray & Reuter, 1993).

  • durability: the need for a persistent unit of information committal in the record;

  • atomicity: the need for a minimal unit of integrity for clinical information, corresponding to a minimal unit for committal, transmission and security;

  • consistency: the need for contributions to the record to leave the record in a consistent state;

  • isolation: the need for contributions to the record by simultaneous users not to interfere with each other;

  • indelibility: the requirement that information committed to the record be indelible in order to support later investigations, for both medico-legal and process improvement purposes, and the consequent requirement to be able to access previous states of the record;

  • modification: the need for users to be able to modify EHR contents, in order to correct errors or update previously recorded information (e.g. current medications, family history); and

  • traceability: the need to record adequate auditing information at committal, in order to provide clinical and legal traceability.

The Composition concept originated from the 'Transaction' concept of the GEHR project (Lloyd, 1992), (Lloyd, 1993), (Heard, Kalra, & Ingram, 1994), (Beale, Lloyd, Heard, Kalra, & Ingram, 1995). In openEHR, it was renamed to 'Composition' (the name of the equivalent concept in ISO 13606-1), and it has been expanded and more formally defined in openEHR in two ways. Firstly, the idea of a unit of committal has been formalised by the openEHR model of change control (see the openEHR Common Information Model); how this applies to the EHR and Compositions is described below.

Secondly, the informational purpose of a Composition is not just to capture data from a passing clinical event such as a patient contact, but also to track longitudinal significant patient state, such as problems, allergies and medications. Accordingly, openEHR Compositions are temporally classified using a small number of broad categories recorded in the Composition.category attribute. Categories include event, episodic and persistent. From a scientific realist ontological point of view, the kind of information recorded in a persistent Composition approximates a description of some continuant aspect of the patient (see Arp Smith & Spear (2015), Sowa (2000)). This is in contrast with event Compositions, which record occurrents, i.e. events or states that occurred or were true at some moment in time. The episodic category corresponds to information that is relevant for the period of time of a care episode.

event persistent ehr
Figure 5. An EHR containing Persistent, Episodic and Event Compositions
4.2.4.1. Persistent Compositions

In an EHR, there is a need to record items that summarise the key aspects of patient state, which are of ongoing relevance in the record. These are often separated by clinicians into well-known categories, such as:

  • Problem list - list of current problems, issues or concerns;

  • Current medications - list of patient medications that are active or suspended;

  • Therapeutic precautions - list of allergies and interactions relevant to care;

  • Vaccination history - list of vaccinations; acts as a proxy for patient immunity state;

  • Patient preferences - list of proscribed and/or preferred types of treatment;

  • Lifestyle - e.g. substance use, profession-related information;

  • Family history - major problems in biological relatives; acts as a proxy for patient risk;

  • Social situation - picture of patient living situation relevant to care provision;

  • Care plan - Plan(s) produced by clinicians describing planned management of chronic problems.

Persistent Compositions can be thought of as proxies for the state or situation of the patient, which are maintained as a single source-of-truth over an entire patient lifetime. The intent is that any changes or updates are applied to the same logical composition instance as new versions. Together they provide a picture of the patient over time. The total number of Persistent Compositions is normally small for any given patient even with the possibility of more than one instance of some, e.g. multiple condition-specific problem lists. However the number of versions due to updating over time may be significant.

4.2.4.2. Event Compositions

Event Compositions record what happens during healthcare system activities performed with and/or for the patient, such as:

  • observations, assessments, orders and actions performed during a patient contact;

  • actions performed during an activity in which the patient is not a participant e.g. surgery;

  • actions performed during an activity in which the patient is not present e.g. pathology testing.

An important job of the event Composition is to record not only the data from the healthcare event, such as observations on the patient, but also to record the event context information, i.e. the who, when, where and why of the event.

Over time, the number of event Compositions is likely to far outstrip the number of persistent Compositions in a typical EHR, while the average number of versions per Composition (normally only due to corrections) will be far lower.

4.2.4.3. Episodic Compositions

Compositions may be classified as episodic if they contain information relevant to an ongoing care situation spanning sigificant time, such as pregnancy and birth, major surgery and recovery etc. During a specific episode of care, Event Compositions will still be used to record normal clinical events, particularly routine observations. However, assessments, summaries and care plans specific to the condition being treated may be committed in Compositions with category set to episodic to indicate that they should be treated as having a persistent-like quality i.e updated as as single instance source-of-truth, but only maintained as such for a defined period or set of conditions and not for the entire life of the patient. An example is a Problem list that is maintained as a continuously updated single instance during a hospital admission but only for the duration of that admission. If the patient is re-admitted, a new instance of an Episodic Composition is then created and continually updated for that admission.

Since episodic Compositions are typically regarded as no longer relevant once the episode of care is considered complete, it may be useful to mark them as such. This may be done for a Composition whose owning Version is in the lifecycle state completed by setting the owning Original_version.lifecycle_state to the inactive state. If the owning Version is in the incomplete state, it may be abandoned. Version lifecycle transitions are described in detail in the openEHR Common Information Model.

4.2.5. Folders

As Compositions accumulate over time in the EHR, they form a long-term patient history. The folders structures can be used in the EHR to index Compositions using one or more versioned hierarchies of FOLDER objects. In the openEHR model, Folder structures do not contain Compositions, only references to them. More than one Folder can therefore refer to the same Composition or other target object. If folders is not Void, the directory attribute always contains a reference to the first member, for backward compatibility with pre-Release 1.1.0 systems.

Structurally, each reference in folders points to a logical tree of FOLDER objects each potentially containing references to Compositions, or possibly just more FOLDERS. Each such tree is versioned, i.e. each version of one folder tree contains a modified version of the previous state of the tree. Folder trees consist of FOLDER objects, which inherit from the LOCATABALE, enabling archetypes to be used to define specific folder tree structures. Within a Folder archetype, the details attribute may be configured to contain meta-data specific to the purpose of the Folder (tree).

The directory reference may be considered by convention as referring to a folder hierarchy that is shared by all users of the EHR to which it is attached, e.g. all medical specialities, departments or settings. It might thus be used to represent episodes. In this case, the other Folder hierarchies referred to by folders might be created, maintained and used by different departments, specialities etc. However, completely different usage of the folder structures is possible. Use of Folder archetypes should be considered for communicating the intended usage in a particular system.

In any Folder hierarchy, regardless of specific use, Folders may be added or removed contemporaneously or subsequently to the committal of the referenced Compositions, including after substantial time has passed. Contemporaneous additions would normally be included in the same Contribution as the referenced Compositions. Similarly, at any time, an entirely new Folder hierarchy may be added, which will be referenced by a new member of the EHR.folders attribute.

Semantically, Folders may be used to manage a simple classification of Compositions, e.g into Event and Persistent, or they might be used to create categories based on episodes or other groupings of Compositions.

A Folder structure containing references to Compositions is shown below, in which the following Folders are used:

  • Persistent compositions: compositions containing information which is valid in the long term;

  • Diabetes: compositions relating to diabetic care, arranged in sub-folders;

    • GP Encounters: GP encounters relating to diabetes;

    • Episode 03-07-2003 - 05-07-2003: diabetes care episode;

    • Episode xxxx: other diabetes care episodes;

  • (other problem): Folders indexing Compositions relating to other problems

folders for indexing
Figure 6. Using Folders to index Compositions in the EHR

This structure separates out Compositions on the basis of likely access by applications. Persistent Compositions remain relevant, usually for the patient lifetime, consequently need to be quickly accessible by numerous applications views. Event Compositions contain information whose relevance may fade quickly (e.g. vital signs measurements) or which are effectively indexed by various persistent compositions (e.g. diagnoses). They are indexed in this example by a Folder structure that makes it easy to find Compositions on the basis of problem type (diabetes etc), and then by type of visit.

Neither the Folder names nor the Composition names illustrated above are part of the openEHR EHR reference model: all such details are provided by archetypes; hence, EHR structures based on completely different conceptions of division of information, or even different types of medicine are equally possible.

The Folder hierarchy in each member of the folders attribute is maintained in its own versioned object, ensuring that changes to the indexing structure are versioned over time in the same way as changes to the EHR content itself.

4.2.6. Tags

Items in the EHR may be tagged using openEHR tags, which are lightweight annotations that may be used to thematically classify previously committed data items for convenient subsequent retrieval. They are described in detail in the Common IM Tags section.

tags example
Figure 7. Tagging in the EHR

Tags are associated with an EHR via the EHR.tags attribute, but have no direct association with the objects they annotate. This has the following consequences:

  • they may be added at any time with respect to the commit time of the content they annotate, including much later;

  • they do not constitute part of the content they annotate;

  • accordingly, where they annotate versioned content, they do not cause re-versioning of the content;

  • a distinct tag instance is used to represent each use of the tag.

The last point implies that if there is a tag "clin-proj-27a" and it is used on 13 EHR content items, there will be 13 separate tag instances with key = "clin-proj-27a". If one is modified or deleted, it has no effect on the others.

According to the model, all tags reside within one logical list, i.e. EHR.tags. No grouping is used. In order to achieve efficient access of all tags with the same key, indexing would be required.

The primary use of tags post-creation is in querying, and their use is supported directly in the openEHR AQL query language such that a query mentioning a tag (either by key, or key/value pair if applicable) will return all items of any RM type annotated by the tag in question.

4.3. Change Control in the EHR

Given an EHR in which there is an EHR Access object, EHR Status object, Event and Persistent Compositions, and possibly hierarchical Folders structures, the general model of update of the EHR is that any of these might be created and/or modified during an update. The simplest, most common case is the creation of a single contact Composition. Another common case will be the creation of an Event Composition, and modification of one or more Persistent Compositions, e.g. due to facts learned in the consultation about family history, or due to prescription of new medications. Other types of updates include corrections to existing Compositions, and acquisition of Compositions from another site such as a hospital. Any of these updates might also include a change to the folder structure, or the moving of existing Compositions to other Folders. Naturally these scenarios depend on a structure of the record including event and persistent compositions, and a folder structure. In the extreme, an EHR consisting only of event Compositions and no Folders will experience only the creation of a single Composition for most updates, with acquisitions being the exception. Less often, updates will be made to the EHR Access and EHR Status objects, according to the management and access control needs of the patient and health care providers.

In general, the following requirements must always be met, regardless of the particular changes made at any one time:

  • the record should always be in a consistent informational state;

  • all changes to the record be audit-trailed;

  • all previous states of the record be available for the purposes of medico-legal investigation.

These requirements are satisfied in openEHR via the use of the change control and versioning facilities defined in the Common Information Model. A key facet of the approach is the use of change-sets, known as Contributions in openEHR. Applied to the EHR, they can be visualised as shown below:

ehr contributions
Figure 8. Contributions to the EHR
  • The first is due to a patient contact, and causes the creation of a new contact composition; it also causes changes to the problem list, current medications and care plan compositions (once again, in a differently designed record, all this information might have been contained in a single event Composition; likewise, it might be been distributed into even more Compositions).

  • The next Contribution is the acquisition of test results from a pathology laboratory.

  • The third is another contact in which both family history and the folder structure are modified.

  • This fourth is an error correction (e.g. a mispelled name, wrongly entered value), and shows that there can be a Contribution even when there is no healthcare event.

  • The last is an update to the EHR status information in the EHR, due to a software upgrade.

The list of Contributions made to a record is recorded along with changes to the data, so that not only are changes to top-level objects (EHR Acces, Composition etc) captured, but the list of changes forming a change set due to a user commit is always known as well.

4.3.1. Versioning of Compositions

Versioning of Compositions is achieved with the Versioned_object<T> type from the Common IM change_control package, which in the composition package is explicitly bound to the Composition class, via the class Versioned_Composition which inherits from the type VERSIONED<Composition>.

The effect of version control on Compositions is visualised in the figure below. The versions (each version being an Original_version<Composition>) shown here in a Versioned_Composition are the same versions shown along each vertical line in Figure 8, this time shown with their associated audit items. The set of versions are understood as a set of successive modifications of the same data in time.

versioned compositions
Figure 9. Versioned Compositions

The Versioned_Composition can be thought of as a smart repository: how it stores successive versions in time is an implementation concern (there are a number of intelligent algorithms available for this), but what is important is that its functional interface enables any version to be retrieved, whether it be the latest, the first, or any in between.

4.3.2. Versioning Scenarios

The following scenarios for creating new Composition versions have been identified as follows.

Case 0

information is authored locally, causing the creation of a new Original_version<Composition>. If this is the first version, a new Versioned_Composition will be created first.

Case 1

information is modified locally, such as for the correction of a wrongly entered datum in a composition. This causes the creation of a new Original_version<Composition> in an existing Versioned_Composition, in which the AUDIT_DETAILS.change_type is set to "correction".

Case 2

information received from a feeder system, e.g. a test result, which will be converted and used to create a new Imported_version<Composition> and Original_version<Composition> pair. This kind of acquisition could be done automatically. If the receiver system needs to store a copy of the original feeder system audit details, it writes it into the Composition.feeder_audit.

Case 3

an Original_version<Composition> (such as a family history) received as part of an EHR_EXTRACT from another openEHR system, which will be used by a local author to manually create a new Composition that includes some content chosen from the received item. Consequently, the new version is a locally authored one (i.e. an Original_version<Composition>). If it is the first version, a Versioned_Composition is first created. The AUDIT_DETAILS documents the committal of this content, and the clinician may choose to record some details about it in the audit description.

In summary, the AUDIT_DETAILS is always used to document the addition of information locally, regardless of where it has come from. If there is a need to record original audit details (via the Composition.feeder_audit), they become part of the content of the versioned object.

4.4. EHR Creation Semantics

4.4.1. EHR Identifier Allocation

openEHR EHRs are created due to two types of events. The first is a new patient presenting at the provider institution. An EHR may be created due to this event, without reference to any other openEHR EHRs that may exist in the broader community or jurisdiction. In this case, the EHR will be allocated a new, globally unique EHR id. This establishes the new EHR as an intentional clone of the source EHR (or more correctly, part of the family of EHRs making up the virtual EHR for that patient).

On the other hand, an openEHR EHR may be created in an organisation as a logical clone (probably partial) of an EHR for the patient that exists in some other system. This might happen as a normal part of the front-desk registration / admission process, i.e. the local EHR system is able to interrogate an EHR location service and discover if any other EHR exists for this patient, or it may occur due to purely electronic communications between two providers, i.e. the EHR is created because an Extract of an EHR has been sent from elsewhere as part of a referral or similar communication. In this second case, the EHR id should be a copy of the EHR id from the other institution. In all cases, the EHR.system_id value should be set to the value that would normally be used for locally created EHRs. In the case of creating a cloned EHR, the system_id is from the receiving (cloning) system.

In theory such a scheme could guarantee one EHR id per patient, but of course in reality, various factors conspire against this, and it can only approximate it. For one thing, it is known that providers routinely create new EHRs for a patient regardless of how many other EHRs already exist for that patient, simply because they have no easy way to find out about those EHRs. Ideally, this situation would be improved in the openEHR world, but due to reliance on such things as distributed services and reliable person identification, there are no guarantees. The best that can be said is that the EHR id allocation scheme can help support an ideal EHR id-per-patient situation if and when it becomes possible.

4.4.2. EHR Creation

When an EHR is created, the result should be a root EHR object, an EHR Status object, and an EHR Access object, plus any other house-keeping information the versioning implementation requires. In a normal implementation, the EHR Status and EHR Access objects would be created and committed in a Contribution, just as any Composition would be. The EHR Status object has a special status in the EHR, indicating whether the EHR should be included in querying, whether it is modifiable, and by implication, whether it is active. Flags might be set to indicate that it is test record, or for educational or training purposes. The initial creation operation has to supply sufficient parameters for creation of these two objects, including:

  • system_id - identifier of EHR repository of the system;

  • ehr_id - the unique identifier of this EHR;

  • subject_id - optional; the use of Party_self allows completely anonymous EHRs;

  • is_queryable flag;

  • is_modifiable flag - indicates whether the content of the EHR is allowed to be modified (the Ehr_status object itself is always modifiable);

  • any other flags required by the EHR Status object in the local implementation.

Note
is is strongly recommended that a UUID always be used for the ehr_id field. This is common practice among implementers.

The EHR id will either be a new globally unique identifier, in the case of first time EHR creation for this patient in the health system, or else the same identifier as an existing EHR for the same subject in another system, in the case of an EHR move or copy. The effect of EHR copying / synchronising between systems is that EHRs with the same identifier can be found within multiple systems. However if the same patient presented at multiple provider locations with no EHR sharing capability, a new EHR with a unique identifier will be created at each place. If a later request for copying occurs (e.g. due to a request for an EHR Extract) between two providers, the requesting institution will perform the merge of the received copy into the existing EHR for the same patient.

The main consequences in a distributed environment are as follows:

  • multiple EHR ids for a given patient indicate a mobile patient, but lack of systematic EHR sharing;

  • one EHR id everywhere for the patient indicates a seamlessly integrated distributed environment, most likely with a global identification service.

Note that the first situation is not a problem, and is not the same as the situation in which two EHRs are identified as being for different patients (i.e. subject id rather than EHR id is different) when in fact they are for the same person.

4.5. EHR Active Status

The Ehr_status.is_modifiable attribute is used to indicate whether the contents of an EHR are modifiable, and is set to True if the EHR is considered active. An EHR’s 'contents' consist of everything other than the Ehr_status object, i.e. its Compositions (Versioned objects referred to by the compositions attribute), its hierarchical Folders (Versioned objects referred to by the folders attribute) and any other content that may be added in later releases of this specification. An active EHR is used within a given EHR system as the primary patient record for a subject. An EHR may be deactivated in circumstances such as the following:

  • the patient has died, and no further updates (typically relating to the death) are required;

  • the EHR is discovered to be a duplicate or additional record for a patient already having a primary EHR;

  • the patient formally opts out of further data recording and/or sharing, with the effect that no further additions can be made by healthcare providers to this EHR;

  • the EHR is to be moved to another system (usually due to patient move), but the original copy will not or cannot be deleted for legal or other administrative reasons.

In any of these situations, the EHR can be deactivated by setting is_modifiable to False. An inactive EHR is still visible in the system, and will remain queryable, unless the is_queryable attribute is also set to False.

4.6. Time in the EHR

There are numerous times recorded in the EHR, at varying levels of granularity. Certain times are a guaranteed by-product of the scientific investigation process, including time of sampling or collection; time of measurement, time of a healthcare business event, time of data committal. The following figures illustrate the relationship between points on the timeline of real-world clinical activity, and the corresponding data elements in the openEHR EHR.

The first figure shows the relationships for a physical examination at a GP visit.

time in the ehr
Figure 10. Time in the EHR - GP encounter

In this scenario, an observation (say, of blood pressure) is instantaneous for all practical purposes. This may be contrasted with lab testing, shown below, where the sample time (moment of specimen collection) is usually different from the time of analysis and reporting of the sample. The time lag may be as long as the specimen is biochemically stable such that the analysis will still accurately reflect the clinical situation in the patient at the time of specimen-taking.

time in the ehr lab
Figure 11. Time in the EHR - Lab test

The following figure shows the relationships between real world time points and openEHR data for radiology.

time in the ehr radiology
Figure 12. Time in the EHR - Radiology

The last example shown below shows the relationship of time and EHR data for in-patient nursing observations, where the notion of 'encounter' is somewhat artificial.

time in the ehr nursing obs
Figure 13. Time in the EHR - Nursing observations

Other times to do with diagnoses (time of onset, time of resolution, time of last episode) and medication management (time started taking medication, time stopped, time suspended, etc) are specific to the particular type of information (e.g. diagnosis versus prognosis versus recommendation) and are generally represented as archetyped date/time values within Evaluation objects. Basic timing information is modelled concretely in the Instruction and Action Entry types, while archetyping is used to express timing information that is specific to particular content.

4.7. Historical Views of the Record

It is important to understand that the Composition versions at a previous point in time represent a previously available informational state of the EHR, at a particular EHR node. Such previous state include only those Compositions from other sources as have been acquired by that point in time, regardless of whether the acquired information pertains to clinical information recorded earlier. A previous historical state of the EHR thus corresponds to what users of a system could see at a particular moment of time. It is important to differentiate this from previous clinical states of the patient: previous informational states of the EHR might include acquired information which is significantly older than the point in time when merging occurred. A previous clinical state of the patient would be a derivable view of the EHRs in all locations for the patient - what is sometimes called the virtual EHR - at a given point in time, minus acquired Compositions, since these constitute (usually out-ofdate) copies of Compositions primarily available elsewhere.

It is previous informational states with which we are concerned for medico-legal purposes, since they represent the information actually available to clinicians at a health-care facility, at a point in time. But previous clinical views may be useful for reconstructing an actual sequence of events as experienced by the patient.

4.8. Class Descriptions

4.8.1. Ehr Class

Class

Ehr

Description

The EHR object is the root object and access point of an EHR for a subject of care.

Attributes

Signature

Meaning

1..1

ehr_id: Uuid

The unique identifier of this EHR.

Note
is is strongly recommended that a UUID always be used for this field.

1..1

system_id: Internet_id

The identifier of the logical EHR management system in which this EHR was created.

0..1

contributions: List<Object_ref>

List of contributions causing changes to this EHR. Each contribution contains a list of versions, which may include references to any number of VERSION instances, i.e. items of type VERSIONED_COMPOSITION and VERSIONED_FOLDER.

1..1

ehr_status: Object_ref

Reference to EHR_STATUS object for this EHR.

1..1

ehr_access: Object_ref

Reference to EHR_ACCESS object for this EHR.

0..1

state: List<Object_ref>

Master list of all Versioned Composition references in this EHR.

0..1

directory: Object_ref

Optional directory structure for this EHR. If present, this is a reference to the first member of folders.

1..1

time_created: Date_time

Time of creation of the EHR.

0..1

folders: List<Object_ref>

Optional additional Folder structures for this EHR. If set, the directory attribute refers to the first member.

0..1

tags: List<Object_ref>

Optional list of tags associated with this EHR. Tag target values can only be within the same EHR.

0..1

events: List<Object_ref>

Master list of all Versioned Composition references in this EHR.

0..1

plans: List<Object_ref>

Master list of all Versioned Composition references in this EHR.

Invariants

Contributions_valid: for_all c in contributions | c.type.is_equal("CONTRIBUTION")

Ehr_access_valid: ehr_access.type.is_equal ("VERSIONED_EHR_ACCESS")

Ehr_status_valid: ehr_status.type.is_equal("VERSIONED_EHR_STATUS")

Compositions_valid: for_all c in compositions | c.type.is_equal ("VERSIONED_COMPOSITION")

Directory_valid: directory /= Void implies directory.type.is_equal ("VERSIONED_FOLDER")

Folders_valid: folders /= Void implies for_all f in folders | f.type.is_equal("VERSIONED_FOLDER")

Directory_in_folders: folders /= Void implies folders.item(1) = directory

4.8.2. Versioned_ehr_access Class

Class

Versioned_ehr_access

Description

Version container for EHR_ACCESS instance.

Inherit

Versioned_object

4.8.3. Ehr_access Class

Class

Ehr_access

Description

EHR-wide access control object. All access decisions to data in the EHR must be made in accordance with the policies and rules in this object.

TODO: repurpose and rename for consent?

Note
It is strongly recommended that the inherited attribute uid be populated in EHR_ACCESS objects, using the UID copied from the object_id() of the uid field of the enclosing VERSION object.
For example, the ORIGINAL_VERSION.uid 87284370-2D4B-4e3d-A3F3-F303D2F4F34B::uk.nhs.ehr1::2 would be copied to the uid field of the EHR_ACCESS object.

Inherit

Locatable

Attributes

Signature

Meaning

0..1

settings: Access_control_settings

Access control settings for the EHR. Instance is a subtype of the type ACCESS_CONTROL_SETTINGS, allowing for the use of different access control schemes.

Functions

Signature

Meaning

1..1

scheme (): String

The name of the access control scheme in use; corresponds to the concrete instance of the settings attribute.

Invariants

Scheme_valid: not scheme.is_empty

Is_archetype_root: is_archetype_root

4.8.4. Access_control_settings Class

Class

Access_control_settings (abstract)

Description

Access Control Settings for the EHR and components. Intended to support multiple access control schemes. Currently implementation dependent.

4.8.5. Versioned_ehr_status Class

Class

Versioned_ehr_status

Description

Version container for EHR_STATUS instance.

Inherit

Versioned_object

4.8.6. Ehr_status Class

Class

Ehr_status

Description

Single object per EHR containing various EHR-wide status flags and settings, including whether this EHR can be queried, modified etc. This object is always modifiable, in order to change the status of the EHR as a whole.

Note
It is strongly recommended that the inherited attribute uid be populated in EHR_STATUS objects, using the UID copied from the object_id() of the uid field of the enclosing VERSION object.
For example, the ORIGINAL_VERSION.uid 87284370-2D4B-4e3d-A3F3-F303D2F4F34B::uk.nhs.ehr1::2 would be copied to the uid field of the EHR_STATUS object.

Inherit

Locatable

Attributes

Signature

Meaning

1..1

subject: Entity_ref_node

The subject of this EHR. The external_ref attribute can be used to contain a direct reference to the subject in a demographic or identity service. Alternatively, the association between patients and their records may be done elsewhere for security reasons.

1..1

is_queryable: Boolean

True if this EHR should be included in population queries, i.e. if this EHR is considered active in the population.

1..1

is_modifiable: Boolean

True if the EHR, other than the EHR_STATUS object, is allowed to be written to. The EHR_STATUS object itself can always be written to.

0..1

other_details: List<Node>

Any other details of the EHR summary object, in the form of an archetyped ITEM_STRUCTURE.

Invariants

Is_archetype_root: is_archetype_root

4.8.7. Versioned_composition Class

Class

Versioned_composition

Description

Version-controlled composition abstraction, defined by inheriting VERSIONED_OBJECT<COMPOSITION>.

Inherit

Versioned_object

Functions

Signature

Meaning

1..1

is_persistent (): Boolean

Indicates whether this composition set is persistent; derived from first version.

Invariants

Archetype_node_id_valid: for_all v in all_versions | v.archetype_node_id.is_equal (all_versions.first.archetype_node_id)

Persistent_validity: for_all v in all_versions | v.is_persistent = all_versions.first.data.is_persistent

5. Folders

5.1. Overview

The Folder-related classes provide a simple abstraction of a versioned folder structure and are illustrated below. The Versioned_folder class is the binding of Versioned_object<T> to the class FOLDER, i.e. it is a Versioned_object<FOLDER>. This means that each of its versions is a Folder structure rather than a single Folder. It provides a means of versioning FOLDER structures over time, which is useful in the EHR, Demographics service or anywhere else where Folders are used to group things. A FOLDER instance contains more FOLDERs and/or items, which are references to other (usually versioned) objects. A FOLDER structure is therefore like a directory containing references to objects. Since they are references, multiple references to the same object are possible, allowing the structure to be used to mutiply classify other objects. If it is used with Versioned_Compositions for example, the folders might be used to represent episodes and at the same time problem groups. Any individual Folder may contain meta-data in its details attribute (type Cluster), which may be archetyped in the same manner as similar attributes throughout the openEHR RM.

CARE ehr.directory
Figure 14. common.directory Package

FOLDER structures inside the Versioned_folder are archetypable structures, and FOLDER archetypes can be created in the same fashion as say Section archetypes for the EHR.

5.1.1. Paths

Directory paths are built using the name attribute values inherited from Locatable into each FOLDER object. In real data, these will usually be derived from the value of the archetype_node_id attribute, plus a uniqueness modifier if required. Example paths (e.g. within the EHR):

    /folders[hospital episodes]/items[1]
    /folders[patient entered data]/folders[diabetes monitoring]
    /folders[homeopathy contacts]

Uniqueness modifiers are appended in brackets, and are only needed to differentiate folders at the same node that would otherwise have the same names, e.g.

    [hospital episodes]
    [hospital episodes(car accident Aug 1998)]

5.2. Class Descriptions

5.2.1. Versioned_folder Class

Class

Versioned_folder

Description

A version-controlled hierarchy of FOLDERs giving the effect of a directory.

Inherit

Versioned_object

5.2.2. Folder Class

Class

Folder

Description

The concept of a named folder.

Note
It is strongly recommended that the inherited attribute uid be populated in top-level (i.e. tree-root) FOLDER objects, using the UID copied from the object_id() of the uid field of the enclosing VERSION object.
For example, the ORIGINAL_VERSION.uid 87284370-2D4B-4e3d-A3F3-F303D2F4F34B::uk.nhs.ehr1::2 would be copied to the uid field of the top FOLDER object.

Inherit

Locatable

Attributes

Signature

Meaning

0..1

items: List<Object_ref>

The list of references to other (usually) versioned objects logically in this folder.

0..1

folders: List<Folder>

Sub-folders of this FOLDER.

0..1

details: Node

Archetypable meta-data for FOLDER.

Invariants

Folders_valid: not folders.is_empty

6. Composition Package

6.1. Overview

The Composition is the primary 'data container' in the openEHR EHR and is the root point of clinical content. Instances of the Composition class can be considered as self-standing data aggregations, or documents in a document-oriented system. The key information in a Composition is found in its content, context, and author attributes. The UML diagram below illustrates the composition package.

CARE composition
Figure 15. rm.composition package

6.2. Composition Context

6.2.1. Overview

The openEHR EHR model takes account of a systematic analysis of "context". Contexts in the real world are mapped to particular levels of the information model in a clear way, according to the scheme shown in FIGURE 12. On the left hand side is depicted the context of a data-entry session in which the information generated by a "healthcare event", containing "clinical statements", is added to the EHR. A healthcare event is defined as any business activity of the health care system for the patient, including encounters, pathology tests, and interventions. A clinical statement is the minimal indivisible unit of information the clinician wants to record. Clinical statements are shown in the diagram has having temporal and spatial structure as well as data values. Each of these three contexts has its own audit information, consisting of who, when, where, why information.

ehr recording model
Figure 16. General Model of Recording

On the right-hand side of Figure 16, the EHR recording environment is represented. The EHR consists of distinct, coarse-grained items known as Compositions added over time and organised by Folders. Each Composition consists of Entries, organised by Sections within the Composition. The audit information for each context is recorded at the corresponding level of the EHR.

6.2.2. Composer

The author is the person who was responsible for the content of the Composition. This is the identifier that should appear on the screen. It could be a junior doctor who did all the work, even if not legally responsible, or it could be a nurse, even if later attested by a more senior clinician; it will be the patient in the case of patient-entered data. It may or may not be the person who entered and committed the data. it may also be a software agent. This attribute is mandatory, since all content must be been created by some person or agent.

Since in many cases Compositions will be composed and committed by the same person, it might seem that two identifiers Composition.author and Version.audit.committer (which are both of type Party_proxy) will be identical. In fact, this will probably not be the case, because the kind of identifier to represent the composer will be a demographic identifier, e.g. "RN Jane Williams", "RN 12345678", whereas the identifier in the audit details will usually be a computer system user identifier, e.g. "jane.williams@westmead.health.au". This difference highlights the different purposes of these attributes: the first exists to identify the clinical agent who created the information, while the second exists to identify the logged-in user who committed it to the system.

In the situation of patient-entered data, the special "self" Party_proxy instance (see Common IM generic package) is used for both Composition.author and Version.audit.committer.

6.2.3. Event Context

The optional event_context attribute in the Composition class is used to document the healthcare event causing new or changed content in the record. Here, 'healthcare event' means 'a (generally billable) business activity of the healthcare system with, for or on behalf of the patient'. Generally this will an encounter involving the subject of care and physician, but is variable in a hospital environment. In this sense, a visit to a GP is a single care event, but so is an episode in a hospital, which may encompass multiple encounters. The information recorded in Event context includes start and (optional) end time of the event, health care facility, setting (e.g. primary care, aged care, hospital), participating healthcare professionals, and optional further details defined by an archetype.

Healthcare events that require an Event_context instance in their recorded information include the following.

  • Scheduled or booked patient encounters leading to changes to the EHR, including with a GP, hospital consultant, or other clinical professional such as mobile nurse. In this case, the Event context documents the time and place of the encounter, and the identity of the clinical professional.

  • Case conferences about a patient, leading to modifications to the health record; here the Event context documents the case conference time, place and participants.

  • Pathology, imaging or other test process. In this case, the Event context documents the place and period during which testing and analysis was carried out, and by whom.

  • Data resulting from care in the home provided by health professional(s) (often allied health care workers). Situations in which Event context is optional include the following.

  • Nurse interactions with patients in hospital, including checking vital signs, adjusting medication or other aspects of bed situation for the patient. Each instance of a nurse’s observations are generally not considered to be a separate 'care event', rather they are seen as the continuation of the general activities of monitoring. In such situations, the overall context is given by Admin_entry instances in the record indicating date/time and place of admission and discharge.

Situations in which Event context is not used include:

  • Any modification to the EHR which corrects or updates existing content, including by administrative staff, and by clinical professionals adding or changing evaluations, summaries etc.

  • Patient-entered data where no interaction with health professionals took place; typically readings from devices in the home such as weighing scales, blood glucose measuring devices, wearable monitors etc.

Ultimately, the use of Event context will be controlled by Composition-level archetypes.

6.2.4. Occurrence in Data

For situations requiring an Event_context object to be recorded, it is worth clarifying which Compositions carry such objects. Consider the example shown in Figure 17. In this example, a Contribution is made to the EHR, consisting of one or more Compositions that were each created or modified due to some clinical activity. Within such a set, there will usually be one Composition relating directly to the event, such as the patient contact - this is the Composition containing the doctor’s observations, nurses' activities etc, during the visit, and is therefore the one which contains the Event_context instance. Other Compositions changed during the same event (e.g. updates to medication list, family history and so on) do not require an Event context, since they are part of the same Contribution, and the event context of the primary Composition can always be retrieved if desired. Contributions A, B and C in the figure illustrate this case.

event context
Figure 17. Use of Event context

In cases where Contributions are made to the record with no event context, the Event context of any Compositions from the original commit will remain intact and visible (unless the correction is to the event context itself of course), and will correctly reflect the fact that no new clinical interaction occurred. This is the case with Contribution D in the figure.

Note
Persistent Compositions may optionally have an Event context. In openEHR releases up to 1.0.3, Persistent Compositions had no Event context. This was relaxed in subsequent releases, to allow the inclusion of context information (e.g. encounter data) for changes to Persistent Compositions where no Event Composition was created.

6.2.5. Time

The times recorded in the Event context represent the time of an encounter or other activity undertaken by a health provider to/for/on behalf of the patient. The time is represented as a mandatory start time and optional end time. It is assumed that where there is a clinical session (i.e. an Event_context object does exist), the start time is known or can be reasonably approximated. It is quite common that the end time of a consultation or encounter is not recorded, but rather inferred from e.g. average consult times, or the start time of the next consult for the same physician.

Event context is used as described above even if the additions are made to the EHR long after the event took place, such as happens when a doctor writes his/her notes into the record system at night, after all patients have been seen. In such cases, the versioned Composition audit trail records the context of when the data were entered, as distinct from the context of when the clinical interaction took place.

6.2.6. Participations

Is part of the Event context, the participations attribute can be used to describe who participated, and how. Each participation object describes the "mode" of participation as well, such as direct presence, video-conference and so on. In many cases such information is of no interest, since the subject of any Entry is known (Entry.subject) and the clinician will be known (Composition.author), and the mode of communication is assumed to be a personal encounter. The participations attribute is therefore used when it is desired to record further details of how the patient and or physician interacted (e.g. over the internet), and/or other participants, such as family, nurses, specialists etc.

There are no general rules about who is included as a participant. For example, while there will be a patient participation during a GP visit, there will be no such participation recorded when the clinical event is a tissue test in a laboratory. Conversely, a patient might record some observations and drug self-administration in the record, in which case the author will be the patient, and there will be no clinician participation. Consequently, the use of participations will mostly be archetype-driven.

6.2.7. Healthcare Facility, Location and Setting

The health_care_facility (HCF) attribute is used to record the health care facility in whose care the event took place. This is the most specific identifiable (i.e. having a provider id within the health system) workgroup or care delivery unit within a care delivery enterprise which was involved in the care event. The identification of the HCF can be used to ensure medico-legal accountability. Often, the HCF is also where the encounter physically took place, but not in the case of patient home visits, internet contacts or emergency care; the HCF should not be thought of as a physical place, but as a care delivery management unit. The physical place of care can be separately recorded in Event_context.location. The health_care_facility attribute is optional to allow for cases where the clinical event did not involve any care delivery enterprise, e.g. self-care at home by the patient, emergency revival by a non-professional (e.g. CPR by lifeguard on a beach), care by a professional acting in an unofficial capacity (doctor on a plane asked to aid a passenger in difficulty). In all other cases, it is mandatory. Archetypes are used to control this.

Two other context attributes complete the predefined notion of event context in the model: location and setting. The location attribute records: the physical location where the care delivery took place, and should document a reasonably specific identifiable location. Examples include "bed 5, ward E", "home". This attribute is optional, since the location is not always known, particularly in legacy data.

The setting attribute is used to document the "setting" of the care event. In clinical record keeping, this has been found to be a useful coarse-grained classifier of information. The openEHR Terminology "setting" group is used to code this attribute. It is mandatory, on the basis that making it optional will reduce its utility for querying and classification.

6.3. Composition Content

The data in a Composition is stored in the content attribute. There are four kinds of data structuring possible in the content attribute:

  • it may be empty. Although for most situations, there should be content in a Compostion, there are at least two cases where an empty Composition makes sense:

    • the first is a Composition in 'draft' editing state (Version.lifecycle_state = 'incomplete')

    • the second is for systems that are only interested in the fact of an event having taken place, but want no details, such as so-called clinical 'event summary' systems, which might record the fact of visits to the doctor, but contain no further information. This can be achieved using Compositions with event context, and no further content.

  • it may contain one or more SECTIONs which are defined in the archetype of the Composition;

  • it may contain one or more Section trees, each of which is a separately archetyped structure;

  • it may contain one or more Entries directly, with no intermediate SECTIONs;

  • it may be any combination of the previous three possibilities.

The actual structures used in a Composition at runtime are controlled by a template, which in turn controls the particular combination of archetypes used.

6.3.1. Class Descriptions

6.3.1.1. Composition Class

Class

Composition

Description

Content of one version in a VERSIONED_COMPOSITION. A Composition is considered the unit of modification of the record, the unit of transmission in record Extracts, and the unit of attestation by authorising clinicians. In this latter sense, it may be considered equivalent to a signed document.

Note
It is strongly recommended that the inherited attribute uid be populated in Compositions, using the UID copied from the object_id() of the uid field of the enclosing VERSION object.
For example, the ORIGINAL_VERSION.uid 87284370-2D4B-4e3d-A3F3-F303D2F4F34B::uk.nhs.ehr1::2 would be copied to the uid field of the Composition.

Inherit

Info_item

Attributes

Signature

Meaning

1..1

language: Terminology_code

Mandatory indicator of the localised language in which this Composition is written. Coded from openEHR Code Set languages. The language of an Entry if different from the Composition is indicated in Entry.language.

1..1

territory: Terminology_code

Name of territory in which this Composition was written. Coded from openEHR countries code set, which is an expression of the ISO 3166 standard.

1..1

category: Coded_text

Temporal category of this Composition, i.e.

  • 431|persistent| - of potential life-time validity;

  • 451|episodic| - valid over the life of a care episode;

  • 433|event| - valid at the time of recording (long-term validity requires subsequent clinical assessment).

or any other code defined in the openEHR terminology group 'category'.

0..1

context: Event_context

The clinical session context of this Composition, i.e. the contextual attributes of the clinical session.

1..1

author: Entity_ref_node

The person primarily responsible for the content of the Composition (but not necessarily its committal into the EHR system). This is the identifier which should appear on the screen. It may or may not be the person who entered the data. When it is the patient, the special self instance of PARTY_PROXY will be used.

TODO: could be renamed to more clearly indicate 'person responsible for the content', usually the legally responsible clinician.

0..1

content: List<Content_item>

The content of this Composition.

Functions

Signature

Meaning

1..1

is_persistent (): Boolean

True if category is 431|persistent|, False otherwise. Useful for finding Compositions in an EHR which are guaranteed to be of interest to most users.

Invariants

Category_validity: terminology (Terminology_id_openehr).has_code_for_group_id (Group_id_composition_category, category.defining_code)

Territory_valid: code_set(Code_set_id_countries).has_code(territory)

Language_valid: code_set(Code_set_id_languages).has_code(language)

Content_valid: content /= Void implies not content.is_empty

Is_archetype_root: is_archetype_root

6.3.1.2. Event_context Class

Class

Event_context

Description

Documents the context information of a healthcare event involving the subject of care and the health system. The context information recorded here is independent of the attributes recorded in the version audit, which document the system interaction context, i.e. the context of a user interacting with the health record system. Healthcare events include patient contacts, and any other business activity, such as pathology investigations which take place on behalf of the patient.

Inherit

Locatable

Attributes

Signature

Meaning

1..1

start_time: Date_time

Start time of the clinical session or other kind of event during which a provider performs a service of any kind for the patient.

0..1

end_time: Date_time

Optional end time of the clinical session.

0..1

setting: Terminology_term

The setting in which the clinical session took place. Coded using the openEHR Terminology, setting group.

TODO: rarely used in Archetypes - needed in CEMs?

0..1

location: String

The actual location where the session occurred, e.g. 'microbiology lab 2', 'home', 'ward A3' and so on.

TODO: possibly rename? This only refers to a room.

0..1

encounter: Entity_ref_node

Reference to encounter for which this Composition was created.

0..1

health_care_facility: Entity_ref_node

The health care facility under whose care the event took place. This is the most specific workgroup or delivery unit within a care delivery enterprise that has an official identifier in the health system, and can be used to ensure medico-legal accountability.

0..1

participations: List<Participation>

Parties involved in the healthcare event. These would normally include the physician(s) and often the patient (but not the latter if the clinical session is a pathology test for example).

0..1

other_context: List<Node>

Other optional context which will be archetyped.

Invariants

Setting_valid: Terminology (Terminology_id_openehr).has_code_for_group_id (Group_id_setting, setting.defining_code)

Participations_validity: participations /= Void implies not participations.is_empty

location_valid: location /= Void implies not location.is_empty

6.3.1.3. Content_item Class

Class

Content_item (abstract)

Description

Abstract ancestor of all concrete content types.

Inherit

Info_item

6.4. Sections

The Section class enables a hierarchical heading structure, in which all individual headings are considered to belong to a "tree of headings". Each heading is an instance of the class Section, visible in the lower left side of Figure 15.

Sections provide both a logical structure for the author to arrange Entries, and a navigational structure for readers of the record, whether they be human or machine. Sections are archetyped in trees with each tree containing a root Section, one or more sub-sections, and any number of Entries at each node. Section trees that are separately archetyped, such as the SOAP headings, or the heading structure for a physical examination, can be combined at runtime by type to form one large heading structure, as shown in the figure below.

ehr with sections
Figure 18. Section View of a General Practice Contact Composition

In terms of understanding of clinical data, Section structures are not essential in a Composition - they can always be removed or ignored (typically in machine processing such as querying) without losing the meaning of the Entries in the Composition. While Sections are often used to group Entries according to status, e.g. 'family history', 'problems', 'observations', it is the Entries themselves that indicate the definitive category of information contained therein. This principle is explained in more detail in [Entry and its Subtypes].

Despite the above, Section structures do not have to be regarded as ad hoc or unreliable structures. On the contrary, as they are archetyped, their structures can be relied upon in the same way as any other structure in the record can be relied on to conform to its archetype. Accordingly, solid assumptions can be made about Sections, based on their archetypes, for the purposes of querying. In fact, the main benefit of Sections is that they may provide significant performance benefits to querying, whether by interactive application or by automated systems.

One potentially confusing aspect of any Section structure is that while the root Section in a tree is logically a Section, it does not appear in a display or printed form as a visible section. This is due to the fact that humans don’t usually write down top-level headings for anything, since there is always a containing structure acting as a top-level organising context (such as the piece of paper one is writing on). For example, consider the way a clinician writes down the problem/SOAP headings on paper. She writes the name of the first problem, then under that, the S/O/A/P headings, then repeats the process for further problems. But she doesn’t write down a heading above the level of the problems, even though there must be one from a data structure point of view.

6.4.1. Class Descriptions

6.4.1.1. Section Class

Class

Section

Description

Represents a heading in a heading structure, or section tree. Created according to archetyped structures for typical headings such as SOAP, physical examination, but also pathology result heading structures. Should not be used instead of Entry hierarchical structures.

Inherit

Content_item

Attributes

Signature

Meaning

0..1

items: List<Content_item>

Ordered list of content items under this section, which may include:

  • more SECTIONs;

  • Entrys.

Invariants

Items_valid: items /= Void implies not items.is_empty

6.4.2. Instance Structures

6.4.2.1. Problem/SOAP Headings

An example of an section tree representing the problem/SOAP heading structure is shown below.

Composition with sections
Figure 19. "problem/SOAP" Section Structure

References

Arp, R., Smith, B., & Spear, A. D. (2015). Building Ontologies with Basic Formal Ontology. The MIT Press. Retrieved from https://mitpress.mit.edu/books/building-ontologies-basic-formal-ontology

Beale, T., Lloyd, D., Heard, S., Kalra, D., & Ingram, D. (1995). Deliverable 19,20,24: GEHR Architecture. Brussels: European Commission AIM. Retrieved from https://www.openehr.org/resources/related_projects/gehr_deliverable-19_20_24.pdf

Gray, J., & Reuter, A. (1993). Transaction Processing Concepts and Techniques. Morgan Kaufmann.

Heard, S., Kalra, D., & Ingram, D. (1994). Deliverable 8: Ethical and legal Requirements of GEHR Architecture and Systems. Brussels: European Commission AIM. Retrieved from https://www.openehr.org/resources/related_projects/gehr_deliverable-8.pdf

Lloyd, D. (1992). Deliverable 4: GEHR Requirements for Clinical Comprehensiveness. Brussels: European Commission AIM. Retrieved from https://www.openehr.org/resources/related_projects/gehr_deliverable-4.pdf

Lloyd, D. (1993). Deliverable 7: Clinical Functional Specifications. Brussels: European Commission AIM.

Sowa, J. F. (2000). Knowledge Representation: Logical, philosophical and Computational Foundations. California: Brooks/Cole.