Archetype Object Model 2 (AOM2)

Acknowledgements

Primary Author

  • Thomas Beale, Ars Semantica, UK; openEHR International Board.

Contributors

This specification and its sibling Archetype Definition Language specification have benefited from wide formal and informal input from the openEHR and wider health informatics community. The openEHR Foundation would like to recognise the following people for their contributions.

  • Koray Atalag, MD, PhD, Sen. Researcher, National Institute for Health Innovation (NIHI), New Zealand

  • Silje Ljosland Bakke, RN, Nasjonal IKT HF, Norway

  • Linda Bird PhD, IHTSDO, Australia

  • Pieter Bos, Senior Software Engineer, Nedap, Netherlands

  • Diego Boscá, IBIME, Technical University Valencia, VeraTech for Health, Spain

  • Rong Chen MD, PhD, Cambio Healthcare Systems, Sweden

  • Joey Coyle MD, PhD, Intermountain Healthcare, New York

  • Borut Fabjan, Program Manager, Better d.o.o., Slovenia

  • Sebastian Garde PhD, Ocean Informatics, UK

  • Peter Gummer, Ocean Informatics, Australia

  • Sam Heard MD, Ocean Informatics, Australia

  • Stan Huff MD, Intermountain Healthcare, UT, USA

  • David Ingram PhD, Emeritus Professor of Health Informatics, UCL, UK

  • Dipak Kalra MD, PhD, Professor Health Informatics, CHIME, UCL, UK

  • Shinji Kobayashi PhD, Kyoto University EHR research unit, Japan

  • Bostjan Lah, Architect, Better d.o.o., Slovenia

  • Patrick Langford, NeuronSong LLC, Utah, USA

  • David Lloyd, CHIME, UCL (ret), UK

  • Chunlan Ma PhD, MD, Ocean Informatics, Australia

  • Ian McNicoll MD, FreshEHR, UK

  • David Moner, IBIME, Technical University Valencia, VeraTech for Health, Spain

  • Claude Nanjo MA African Studies., MPH, Cognitive Medical Systems Inc., California

  • Pablo Pazos Gutierrez, Tarmac IT, CaboLabs, Uruguay

  • Harold Solbrig, Mayo Clinic, Rochester, USA

  • Erik Sundvall PhD, Linkoping University, Sweden

  • Alessandro Torrisi, Code24, The Netherlands

  • Bert Verhees, ROSA Software, The Netherlands

  • Jelte Zeilstra, Software Engineer, Nedap, Netherlands

Supporters

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

  • the openEHR Industry Partners;

  • Ars Semantica, UK;

  • UCL (University College London) - Centre for Health Informatics and Multiprofessional Education (CHIME);

  • Ocean Informatics, Australia.

Special thanks to David Ingram, Emeritus Professor of Health Informatics at UCL, who provided a vision and collegial working environment ever since the days of GEHR (1992).

Trademarks

  • 'openEHR' is a trademark of the openEHR Foundation

  • 'Java' is a registered trademark of Oracle Corporation

  • 'Microsoft' is a trademark of the Microsoft Corporation

Purpose

This document contains the normative description of openEHR Archetype and Template semantics (originally described in [1] and [2]), in the form of an object model. The model presented here can be used as a basis for building software that represents archetypes and templates, independent of their persistent representation. Equally, it can be used to develop the output side of parsers that process archetypes in a linguistic format, such as the openEHR Archetype Definition Language (ADL) , XML and so on.

It is recommended in any case that the ADL specification be read in conjunction with this document, since it contains a detailed explanation of the semantics of archetypes, and many of the examples are more obvious in ADL, regardless of whether ADL is actually used with the object model presented here or not.

The release of AOM described in this specification corresponds to the 2.x version of the archetype formalism.

The intended audience includes:

  • Standards bodies producing health informatics standards;

  • Research groups using openEHR, ISO 13606, and other EHR or EHR exchange architectures;

  • The open source healthcare community;

  • EHR solution vendors;

  • Medical informaticians and clinicians interested in health information.

Nomenclature

In this document, the term 'attribute' denotes any stored property of a type defined in an object model, including primitive attributes and any kind of relationship such as an association or aggregation. XML 'attributes' are always referred to explicitly as 'XML attributes'.

We also use the word 'archetype' in a broad sense to designate what are commonly understood to be 'archetypes' (specifications of clinical data groups / data constraints) and 'templates' (data sets based on archetypes, since at a technical level, an ADL/AOM 2 template is in fact just an archetype. Accordingly, statements about 'archetypes' in this specification can be always understood to also apply to templates, unless otherwise indicated.

Status

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

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

TBD: (example To Be Determined paragraph)

Feedback

Feedback may be provided on the openEHR ADL forum.

Issues may be raised on the specifications Problem Report tracker.

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

Conformance

Conformance of a data or software artifact to an openEHR 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.

Tools

Various tools exist for creating and processing archetypes. The ADL Workbench is a reference compiler, visualiser and editor. The openEHR ADL/AOM tools can be downloaded from the website .

Source projects can be found at the openEHR Github project.

Changes from Previous Versions

Release 1.5 to 2.0 (Document version 2.1.2 - )

The changes in release 2 of the ADL/AOM formalism are designed to make the formalism more computable with respect to terminology, and enable more rigorous validation and flattening operations.

The changes are as follows.

  • Introduction of new internal coding scheme, consisting of id-codes, at-codes and ac-codes;

  • Replace string archetype identifier with multi-part, namespaced identifier;

  • Addition of explicit value-sets in terminology section, replacing in-line value sets in the definition section;

  • Renaming archetype ontology section to terminology;

  • Expression of all external term bindings as URIs following IHTSDO format;

  • Introduction of 'tuple' constraints to replace openEHR custom constrainer types for co-varying attributes within Quantity, Ordinal structures;

  • Re-engineering of all primitive constrainer types, i.e. C_STRING , C_DATE etc.;

  • Removal of the openEHR Archetype Profile specification.

Release 1.4 to 1.5 (Document version 2.0 to 2.1.1)

The changes in release 1.5 are made to better facilitate the representation of specialised archetypes. The key semantic capability for specialised archetypes is to be able to support a differential representation, i.e. to express a specialised archetype only in terms of the changed or new elements in its definition, rather than including a copy of unchanged elements. Doing the latter is clearly unsustainable in terms of change management.

The changes are as follows.

  • Full specialisation support: the addition of an attribute to the C_ATTRIBUTE class, allowing the inclusion of a path that enables specialised archetype redefinitions deep within a structure;

  • Addition of node-level annotations;

  • Structural simplification of archetype ontology section;

  • The name of the invariant section has been changed to rules, to better reflect its purpose.

  • A template is now just an archetype.

Release 0.6 to 1.4

Changes made from Release 1.3 to 1.4:

  • added a new attribute adl_version : String to the ARCHETYPE class;

  • changed name of ARCHETYPE . concept_code attribute to concept .

Amendment Record

Issue Details Raiser, Implementer Completed

AM Release 2.3.0

2.3.0

SPECAM-76. Correct [VSONCO] rule for redefinition of nodes with multiple occurrences; added collective_occurrences() conformance function (addresses problem SPECPR-374).

P Bos,
S Garde,
I McNicoll,
P Pazos,
J Holslag,
T Beale

09 Nov 2022

SPECAM-75. Improve specification of constraint patterns in C_TEMPORAL classes (addresses problem SPECPR-374). Added [date_time_constraints] and [duration_constraints].

P Pazos,
T Beale

12 Dec 2022

SPECAM-69. Support negative durations (see [_c_duration_class]) (see also SPECRM-96).

P Bos,
S Garde

09 Sep 2020

SPECAM-68. Add flexible constraint_status indicator to C_TERMINOLOGY_CODE.

B Fabjan,
I McNicoll,
S Garde,
P Bos,
T Beale

07 Sep 2020

SPECAM-67. Adjust package structure to be more regular:
rename am.aom2_profile to am.aom2.profile;
rename am.p_aom2 to am.aom2.persistence;
move am.aom2.primitive to am.aom2.constraint_model.primitive

T Beale

19 May 2020

SPECAM-65: Correct types of default_value and assumed_value in C_PRIMITIVE_OBJECT descendants.

P Bos,
I McNicoll,
T Beale

21 Apr 2020

SPECPUB-7. Convert citations to bibtex form.

T Beale

15 Dec 2019

SPECAM-64. Improve C_OBJECT.effective_occurrences algorithm.

P Bos,
J Zeilstra,
T Beale

09 Aug 2019

AM Release 2.2.0

2.2.0

SPECAM-63. Add rm_overlay top-level section with rm_visibility sub-section to state hide/show and RM attribute aliasing.

I McNicoll,
S L Bakke,
B Fabjan,
T Beale

21 May 2019

SPECPR-294. Fix minor typos and name errors in documentation of ARCHETYPE_HRID.

B Verhees

SPECAM-61. Remove revision_history from ADL2 specification.

D Bosca,
P Bos,
T Beale

19 May 2019

SPECAM-60. Improve documentation for constraints on lists and intervals.

B Fabjan,
M Pipan,
T Beale

21 Jan 2019

AM Release-2.1.0

2.1.0

SPECAM-51. Move RM adaptation attributes from BMM to AOM profile. Add to section 10 the new meta-attributes archetype_parent_class, archetype_data_value_parent_class, archetype_visualise_descendants_of.

T Beale

10 Apr 2018

SPECAM-48. Add VTPL validity rule for templates - consistency of languages for flattening.

T Beale

24 Jan 2018

SPECAM-49. Improve c_conforms_to() and c_congruent_to() algorithms; added c_value_conforms_to() and c_value_congruent_to() to C_PRIMITIVE_OBJECT.

T Beale

10 Jan 2018

SPECAM-46. c_conforms_to() should have lambda parameter for model checking.

P Bos,
T Beale

07 Jan 2018

SPECAM-47. Allow regularly structured primitive objects. Move any_allowed function to C_DEFINED_OBJECT.

J Coyle,
T Beale

07 Jan 2018

SPECPUB-6. Correct UML package nesting and paths in documents; rename aom package to aom2; aom_profile to aom2_profile and p_aom to p_aom2.

T Beale

27 Nov 2017

SPECAM-45. Correct specification details to do with sibling_order anchor node id. (Corrects SPECPR-245)

P Bos,
T Beale

21 Nov 2017

SPECAM-43. Correct C_TERMINOLOGY_CODE.c_conforms_to to handle no parent value-set (Corrects SPECPR-243)

P Bos

02 Nov 2017

SPECAM-42. Adjust references to BASE packages foundation_types, base_types and resource types.

T Beale

21 Sep 2017

AM Release-2.0.6

2.0.6

Adjust C_ATTRIBUTE.any_allowed to have the post-condition Result = children.is_empty and not is_prohibited.

T Beale

15 Jun 2016

Correct ambiguity between ADL and AOM specs concerning duration fractional seconds - remove C_DURATION.fractional_seconds_allowed (SPECPR-188).

B Verhees

10 Jun 2016

Add more precise specification of type matching under the 'Object Node Types' section, including for primitive types. Add rm_primitive_type_equivalences property to AOM_PROFILE to accommodate primitive type matching rules.

T Beale

08 Jun 2016

SPECAM-40. Correct VSONT validity rule to say that C_COMPLEX_OBJECT redefinition by C_PRIMITIVE_OBJECT is not valid.

T Beale

02 Jun 2016

Fix typo in section 6.2.1 to do with id-code redefinition in specialised archetype.

C Nanjo

30 May 2016

Rename ARCHETYPE_TERMINOLOGY.parent_archetype to owner_archetype. (reported in SPECPR-193).

B Verhees

18 May 2016

Remove references to openEHR RM. Add assumed_types package to make spec standalone;
Change reference to openEHR language codes to ISO 639 codes.

ISO TC215

Change Rules section to document re-use of new openEHR Expression Language and Model.
Change the types constrained by C_DATE etc to Date etc, instead of ISO8601_DATE.
Update occurrences inferencing rules in section 4.

T Beale

11 May 2016

SPECBASE-4. Change order of type parameters in Hash<V,K> type to Hash<K,V>.

D Boscá

13 Apr 2016

Correct ASSERTION.variables association to refer to VARIABLE_DECLARATION.
Add RULE_ELEMENT class table to specification (reported in SPECPR-160)
Correct CARDINALITY.is_set documentation (reported in SPECPR-147).
Add missing type of String to ARCHETYPE_TERM.code. (reported in SPECPR-162).

B Verhees

05 Apr 2016

2.0.5

Make AUTHORED_RESOURCE.uid and AUTHORED_ARCHETYPE.build_uid UUIDs rather than any kind of UID.

T Beale

18 Jan 2016

Add P_ serialisation model and template sections.

T Beale

31 Aug 2015

2.0.0

Refactor ARCHETYPE and ARCHETYPE_TERMINOLOGY models, in order to simplify: remove differential and flat forms of classes.
Split ARCHETYPE into two classes, with AUTHORED_ARCHETYPE as a new class that inherits from AUTHORED_RESOURCE .

T Beale

04 Jan 2015

Remove VDSSR , VSUNC ; add VDSSID , VARXID . Replace +u (unstable) version modifier with semver.org standard -alpha. Remove overview material to new Archetypes: Technical Overview specification.

T Beale,
I McNicoll,
S Garde

12 Nov 2014

Remove ARCHETYPE.provenance_id attribute.

H Solbrig,
T Beale

08 Oct 2014

Correct spelling of licence to international English; rename ARCHETYPE.urn to provenance_id.

S Garde,
I McNicoll

29 Sep 2014

Modified C_ARCHETYPE_ROOT to have an id-code in all cases.
Add error VSONPO , VSONPT: specialised archetype object node prohibited occurrences validity.
Added support for constraints on enumerated types.

CIMI,
P Langford,
T Beale

18 Jul 2014

Convert ARCHETYPE.uid to urn: URN.
Rename ARCHETYPE.commit_number to build_count .

I McNicoll,
S Garde,
T Beale

04 Jun 2014

Make VACMCL a warning WACMCL .

D Moner

07 Apr 2014

Renamed ARCHETYPE_INTERNAL_REF to C_OBJECT_PROXY .
SPECAM-9. Renamed ontology section to terminology and simplified.
Remove CONSTRAINT_REF, C_REFERENCE_OBJECT types;
SPECAM-2. Introduce new archetype structured identification system;
SPECAM-28. Add IHTSDO standard terminology URIs to ADL and AOM.

T Beale
H Solbrig

09 Mar 2014

Detailed Technical Review.

H Solbrig

21 Nov 2013

Remove C_DOMAIN_TYPE ;
SPECAM-27. Merge C_PRIMITIVE_OBJECT and C_PRIMITIVE;
Add support for tuple constraints, replacing ADL 1.4 special Ordinal and Quantity constrainer types;
Add new primitive type C_TERMINOLOGY_CODE .
Added VSONIF, removed VSONCI (dup of VSONI).

H Solbrig
T Beale

20 Aug 2013

SPECAM-22. Limit assumed_value to C_PRIMITIVE_OBJECT.

T Beale,
R Chen

14 Jan 2013

SPECAM-32. Remove C_SINGLE_ATTRIBUTE and C_MULTIPLE_ATTRIBUTE classes.

T Beale,
S Garde,
S Kobayashi,
D Moner,
T Beale

15 Dec 2011

SPECAM-26. Add any_allowed function to ARCHETYPE_SLOT.

T Beale

18 Aug 2010

SPECAM-8. Add specialisation semantics to ADL and AOM. Add various attributes and functions to ARCHETYPE_CONSTRAINT descendant classes.

  • move C_PRIMITIVE.assumed_value to attribute slot in UML

  • rename C_DEFINED_OBJECT.default_value function to prototype_value

  • correct assumed_value definition to be like prototype_value; remove its entry from all of the C_PRIMITIVE subtypes

  • convert BOOLEAN flag representation of patterns to functions and add a String data member for the pattern value, thus matching the XSDs and ADL

  • add ARCHETYPE.is_template attribute.

  • add ARCHETYPE.is_component attribute.

  • allow computed as well as stored attributes.

  • make ONTOLOGY.terminologies_available computed.

T Beale

10 Dec 2009

SPECAM-1. Change Date, Time etc classes in AOM to ISO8601_DATE , ISO8601_TIME etc from Support IM.

T Beale

20 Jul 2009

SPECAM-10. Convert Interval<Integer> to MULTIPLICITY_INTERVAL to simplify specification and implementation.

T Beale

SPECAM-5. Archetype slot regular expressions should cover whole identifier. Added C_STRING.is_pattern .

A Flinton

SPECAM-7. Make existence, occurrences and cardinality optional in AOM.

S Heard

SPECAM-16. Add validity rules to ARCHETYPE_TERMINOLOGY .
SPECAM-11. ARCHETYPE_CONSTRAINT adjustments.
SPECAM-17. Add template object model to AM.

  • Add is_exhaustive attribute to ARCHETYPE_SLOT .

  • Add is_template attribute to ARCHETYPE .

  • Add terminology_extracts to ARCHETYPE_TERMINOLOGY .

T Beale

Release 1.0.2

2.0.2

SPEC-257. Correct minor typos and clarify text. Correct reversed definitions of is_bag and is_set in CARDINALITY class.

C Ma,
R Chen,
T Cook

20 Nov 2008

SPEC-251. Allow both pattern and interval constraint on Duration in Archetypes. Add pattern attribute to C_DURATION class.

S Heard

Release 1.0.1

2.0.1

SPEC-200. Correct Release 1.0 typographical errors. Table for missed class ASSERTION_VARIABLE added. Assumed_value assertions corrected; standard_representation function corrected. Added missed adl_version , concept rename from SPEC-153.

D Lloyd,
P Pazos,
R Chen,
C Ma

20 Mar 2007

SPEC-216: Allow mixture of W, D etc in ISO8601 Duration (deviation from standard).

S Heard

SPEC-219: Use constants instead of literals to refer to terminology in RM.

R Chen

SPEC-232. Relax validity invariant on CONSTRAINT_REF .

R Chen

SPEC-233: Define semantics for occurrences on ARCHETYPE_INTERNAL_REF .

K Atalag

SPEC-234: Correct functional semantics of AOM constraint model package.

T Beale

SPEC-245: Allow term bindings to paths in archetypes.

S Heard

Release 1.0

2.0

SPEC-153. Synchronise ADL and AOM attribute naming. SPEC-178. Add Template Object Model to AM. Text changes only. SPEC-167. Add AUTHORED_RESOURCE class. Remove description package to resource package in Common IM.

T Beale

10 Nov 2005

Release 0.96

0.6

SPEC-134. Correct numerous documentation errors in AOM. Including cut and paste error in TRANSLATION_DETAILS class in Archetype package. Corrected hyperlinks in Section 2.3.

D Lloyd

20 Jun 2005

SPEC-142. Update ADL grammar to support assumed values. Changed C_PRIMITIVE and C_DOMAIN_TYPE .

S Heard,
T Beale

SPEC-146: Alterations to am.archetype.description from CEN MetaKnow

D Kalra

SPEC-138. Archetype-level assertions.

T Beale

SPEC-157. Fix names of OPERATOR_KIND class attributes

T Beale

Release 0.95

0.5.1

Corrected documentation error - return type of ARCHETYPE_CONSTRAINT . has_path
add optionality markers to Primitive types UML diagram.
Removed erroneous aggregation marker from ARCHETYPE_ONTOLOGY . parent_archetype and ARCHETYPE_DESCRIPTION . parent_archetype .

D Lloyd

20 Jan 2005

0.5

SPEC-110. Update ADL document and create AOM document.
Includes detailed input and review from:

  • DSTC

  • CHIME, Uuniversity College London

  • Ocean Informatics

Initial Writing. Taken from ADL document 1.2draft B.

T Beale
A Goodchild
Z Tun
T Austin
D Kalra
N Lea
D Lloyd
S Heard
T Beale

10 Nov 2004