openEHR logo

openEHR Simplified Information Model 'B' (SIM-B)

Issuer: openEHR Specification Program

Release: SM latest

Status: DEVELOPMENT

Revision: [latest_issue]

Date: [latest_issue_date]

Keywords: SIM-B, information model, openEHR

openEHR components
© 2019 - 2019 The openEHR Foundation

The openEHR Foundation is an independent, non-profit foundation, facilitating the sharing of health records by consumers and clinicians via open specifications, clinical models and open platform implementations.

Licence

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

Support

Issues: Problem Reports
Web: specifications.openEHR.org

Amendment Record

Issue Details Raiser Completed

SM Release 1.?.?

0.7.0

SPECSM-2. Add Simplified Information Model 'B' (SIM-B);
Initial writing, adapted from the Marand Better Platform 'Web Templates' specification.

openEHR SEC

17 Jul 2019

Acknowledgements

Primary Author

  • xxxx

Contributors

This specification has benefited from 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.

  • xxxx

Support

A significant part of the content of this specification was adapted from the Better (Marand) 'Web Templates' specification, kindly provided by Marand d.o.o. (Slovenia).

Trademarks

  • 'openEHR' is a registered trademark of the openEHR Foundation

  • 'OMG' and 'UML' are registered trademarks of the Object Management Group

1. Preface

1.1. Purpose

This document describes the Simplified Information Model 'B' (SIM-B) format, a simplified form of the openEHR RM, intended to be used to generate the simplified JSON Data Template (sJDT) format. The SIM-B model is designed to enable easier creation of openEHR content (i.e. Compositions etc).

1.2. Status

This specification is in the DEVELOPMENT state. The development version of this document can be found at https://specifications.openehr.org/releases/ITS-REST/latest/json_commit_formats.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.3. Feedback

Feedback may be provided on the technical mailing list.

Issues may be raised on the specifications Problem Report tracker.

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

1.4. Conformance

xxx

1.5. Tooling

xxx

2. Overview

The Simplified Information Model (SIM) is a version of the canonical Reference Model and Base Model (RM, BASE components respectively) that contains structurally simpler representations of many class attributes, enabling easier construction of string-oriented serialisations such as JSON, compared to the full canonical structures. The SIM is defined as a set of classes named after a sub-set of RM classes, with S_ prepended; for example, in the SIM, the RM class ELEMENT becomes S_ELEMENT.

Various kinds of simpilifications are used in the SIM classes, including:

  • String representation of some fields that are structured in the RM, e.g CODE_PHRASE.terminology_id is of type TERMINOLOGY_ID but in the SIM, it is a String;

  • replacing fully expressed DV_CODED_TEXT or CODE_PHRASE fields that represent codes from openEHR or other fixed (e.g. IANA media type) vocabularies which are determinable from the openEHR RM, with Strings;

  • compressing fields of some sub-part objects into a parent object in the simplified version, reducing the need for long paths, e.g. S_PARTY_PROXY includes fields from PARTY_PROXY.external_ref, of type PARTY_REF.

The cost of doing the above is that some work has to be done to convert an S_XXX instance into an XXX canonical instance, in some cases, requiring the use of a formal representation of the RM. In openEHR, this is available in the form of a BMM model, as described in the openEHR Basic-Meta Model specification. Additionally, some fields in data have to be parsed with various micro-parsers, e.g. for Date/Time.

The subset of RM classes for which SIM classes are defined is limited to the class COMPOSITION and classes reachable from it, or approximately 45 classes. Almost all simplifications are defined in near-leaf classes such as the S_DATA_VALUE descendants, PARTICIPATION and so on; classes such as S_ENTRY and S_COMPOSITION are largely structured the same way as in the canonical RM, except that sub-parts are of type S_XXX rather than XXX, where the latter is an original RM type. The exception to this is replacement of coded fields whose vocabulary is defined in the RM.

TODO: describe transformation rules representation. This could be formalised into the BMM as a new kind of structure, which would allow formal representation in BMM of transformation rules. At the moment, a few example rules are shown below interspersed within class definitions. In the final form, these rules would be removed to a separate section / source file in either BMM, or some formal language.

The specific transformations between SIM and RM instances are expressed in the tables in the Transformation Rules sub-sections below.

3. Simplified Information Model 'B'

3.1. Simplified IM Package

TODO: we may remove the to_rm() / from_from() approach and just stick with rules.

The following UML diagram shows the top-level simplified_im_b package defining the special interface type S_TYPE.

SM simplified im b
Figure 1. sm.simplified_im_b package

3.1.1. Class Definitions

3.1.1.1. S_TYPE Class

Class

S_TYPE (abstract)

Description

Interface defining routine signatures for Simplified RM classes defining how to convert to and from the corresponding RM class.

Specialised in descendants.

Functions

Signature

Meaning

(abstract)

to_rm (
rm: BMM_MODEL[1]
): Any

Abstract interface of function to convert data of concrete S_ type to an instance of its RM counterpart.

Implement in concrete descendants.

Parameters
rm

Computable representation of canonical RM, used for lookup of terminology ids, types etc changed from or abstracted out of the SRM.

(abstract)

from_rm (
a_val: Any[1]
)

Abstract procedure to create an S_ instance from a canonical RM instance.

Implement in concrete descendants.

3.2. Base Model Package

The following UML diagram shows the SIM base package defining S_XXX types corresponding to the Base base package types.

SM simplified im b.base
Figure 2. sm.simplified_im_b.base package

3.2.1. Class Definitions

3.2.1.1. S_OBJECT_REF Class

Class

S_OBJECT_REF

Description

Attributes

Signature

Meaning

0..1

id_namespace: String

Equivalent of OBJECT_REF.namespace.

0..1

id_type: String

Equivalent of OBJECT_REF.type.

1..1

id: S_OBJECT_ID

3.2.1.2. S_OBJECT_ID Class

Class

S_OBJECT_ID

Description

3.2.1.3. S_GENERIC_ID Class

Class

S_GENERIC_ID

Description

Inherit

S_OBJECT_ID

Attributes

Signature

Meaning

1..1

scheme: String

3.3. RM Data types Package

The following UML diagram shows the SIM rm.data_types package defining S_XXX types corresponding to the RM rm.data_types package types.

SM simplified im b.rm.data types
Figure 3. sm.simplified_im_b.rm.data_types package

3.3.1. Class Definitions

3.3.1.1. S_DATA_VALUE Class

Class

S_DATA_VALUE (abstract)

Description

Simplified RM form of DATA_VALUE RM class.

Inherit

S_TYPE

Functions

Signature

Meaning

(effected)

to_rm (
rm: BMM_MODEL[1]
): DATA_VALUE

(effected)

from_rm (
a_val: DATA_VALUE[1]
)

3.3.1.2. S_DV_IDENTIFIER Class

Class

S_DV_IDENTIFIER

Description

Simplified RM form of DV_IDENTIFIER RM class.

Inherit

DV_IDENTIFIER, S_DATA_VALUE

3.3.1.3. S_DV_TEXT Class

Class

S_DV_TEXT

Description

Simplified RM form of DV_TEXT RM class.

3.3.1.4. S_DV_CODED_TEXT Class

Class

S_DV_CODED_TEXT

Description

Simplified RM form of DV_CODED_TEXT RM class.

Inherit

S_DV_TEXT

Attributes

Signature

Meaning

1..1

code: String

Converted from DV_CODED_TEXT.defining_code.code_string.

1..1

terminology: String

Converted from DV_CODED_TEXT.defining_code.terminology_id.

3.3.1.5. S_CODE_PHRASE Class

Class

S_CODE_PHRASE

Description

Simplified RM form of CODE_PHRASE RM class.

Inherit

S_DATA_VALUE

Attributes

Signature

Meaning

1..1

code: String

Converted from CODE_PHRASE.code_string.

1..1

terminology: String

Converted from CODE_PHRASE.terminology_id.

3.3.1.6. S_DV_PARSABLE Class

Class

S_DV_PARSABLE

Description

Simplified RM form of DV_PARSABLE RM class.

Inherit

S_DATA_VALUE

Attributes

Signature

Meaning

1..1

value: String

Converted from DV_PARSABLE.value.

1..1

formalism: String

Converted from DV_PARSABLE.formalism.

3.3.1.7. S_DV_QUANTITY Class

Class

S_DV_QUANTITY

Description

Simplified RM form of DV_QUANTITY RM class.

TODO: define

Inherit

S_DATA_VALUE

3.3.1.8. S_DV_COUNT Class

Class

S_DV_COUNT

Description

Simplified RM form of DV_COUNT RM class.

TODO: define

Inherit

S_DATA_VALUE

3.3.1.9. S_DV_PROPORTION Class

Class

S_DV_PROPORTION

Description

Simplified RM form of DV_PROPORTION RM class.

TODO: define

Inherit

S_DATA_VALUE

3.3.1.10. S_DV_ORDINAL Class

Class

S_DV_ORDINAL

Description

Simplified RM form of DV_ORDINAL RM class.

TODO: define

Inherit

S_DATA_VALUE

3.4. Data Structures Package

The following UML diagram shows the SIM rm.data_structures package defining S_XXX types corresponding to the RM rm.data_structures package types.

SM simplified im b.rm.data structures
Figure 4. sm.simplified_im_b.rm.data_structures package

3.4.1. Class Definitions

3.4.1.1. S_HISTORY Class

Class

S_HISTORY

Description

Simplified RM form of HISTORY RM class.

Inherit

S_LOCATABLE

Attributes

Signature

Meaning

0..1

summary: S_CLUSTER

Converted from ITEM_STRUCTURE.

0..1

events: List<S_EVENT>

(unchanged from RM)

1..1

origin: String

Converted from DV_DATE_TIME.

1..1

period: String

Converted from DV_DURATION.

1..1

duration: String

Converted from DV_DURATION.

3.4.1.2. S_EVENT Class

Class

S_EVENT (abstract)

Description

Simplified RM form of EVENT RM class.

Inherit

S_LOCATABLE

Attributes

Signature

Meaning

1..1

time: String

Converted from DV_DATE_TIME.

0..1

state: S_CLUSTER

Converted from ITEM_TREE.

1..1

data: S_CLUSTER

Converted from ITEM_TREE.

3.4.1.3. S_POINT_EVENT Class

Class

S_POINT_EVENT

Description

Simplified RM form of POINT_EVENT RM class.

Inherit

S_EVENT

3.4.1.4. S_INTERVAL_EVENT Class

Class

S_INTERVAL_EVENT

Description

Simplified RM form of INTERVAL_EVENT RM class.

Inherit

S_EVENT

Attributes

Signature

Meaning

1..1

width: String

Converted from DV_DURATION.

0..1

sample_count: Integer

(unchanged from RM)

1..1

math_function: String

Converted from DV_CODED_TEXT.

3.4.1.5. S_ITEM Class

Class

S_ITEM (abstract)

Description

Simplified RM form of ITEM RM class.

Inherit

S_LOCATABLE

3.4.1.6. S_CLUSTER Class

Class

S_CLUSTER

Description

Simplified RM form of CLUSTER RM class.

Inherit

S_ITEM

Attributes

Signature

Meaning

0..1

items: List<S_ITEM>

(unchanged from RM)

3.4.1.7. S_ELEMENT Class

Class

S_ELEMENT

Description

Simplified RM form of ELEMENT RM class.

Inherit

S_ITEM

Attributes

Signature

Meaning

0..1

value: S_DATA_VALUE

Contains a converted form of original DATA_VALUE.

0..1

null_flavour: String

Converted from DV_CODED_TEXT.

3.5. Common Package

The following UML diagram shows the SIM rm.common package defining S_XXX types corresponding to the RM rm.common package types.

SM simplified im b.rm.common
Figure 5. sm.simplified_im_b.rm.common package

3.5.1. Class Definitions

3.5.1.1. S_LOCATABLE Class

Class

S_LOCATABLE (abstract)

Description

Simplified RM form of LOCATABLE RM class.

Inherit

S_TYPE

Attributes

Signature

Meaning

1..1

name: S_DV_TEXT

(unchanged from RM)

0..1

links: List<S_LINK>

(unchanged from RM)

0..1

feeder_audit: S_FEEDER_AUDIT

(unchanged from RM)

0..1

archetype_details: S_ARCHETYPED

3.5.1.2. S_ARCHETYPED Class

Class

S_ARCHETYPED

Description

Simplified RM form of ARCHETYPED RM class.

Attributes

Signature

Meaning

1..1

archetype_id: String

Converted from ARCHETYPE_ID.

0..1

template_id: String

Converted from TEMPLATE_ID.

0..1

rm_version: String

(unchanged from RM)

Class

S_LINK

Description

Simplified RM form of LINK RM class.

Inherit

S_TYPE

Attributes

Signature

Meaning

1..1

meaning: String

Converted from LINK.meaning.value.

TODO: what if original was coded?

1..1

type: String

Converted from LINK.type.value.

TODO: what if original was coded?

1..1

target: String

Converted from LINK.target.

3.5.1.4. S_FEEDER_AUDIT Class

Class

S_FEEDER_AUDIT

Description

Simplified RM form of FEEDER_AUDIT RM class.

Inherit

S_TYPE

Attributes

Signature

Meaning

1..1

originating_system_audit: S_FEEDER_AUDIT_DETAILS

Converted from originating_system_audit.

TODO: merge into S_FEEDER_AUDIT?

0..1

original_content: S_DV_PARSABLE

Converted from DV_ENCAPSULATED

TODO: what happens for scanned doc images etc, which are presumably DV_MULTIMEDIA?

0..1

feeder_system_item_id: List<S_DV_IDENTIFIER>

(unchanged from RM)

TODO: Web template attribute name is singular form of name in RM - probably going to be confusing.

0..1

originating_system_item_id: List<S_DV_IDENTIFIER>

(unchanged from RM)

TODO: Web template attribute name is singular form of name in RM - probably going to be confusing.

3.5.1.5. S_FEEDER_AUDIT_DETAILS Class

Class

S_FEEDER_AUDIT_DETAILS

Description

Simplified RM form of FEEDER_AUDIT_DETAILS RM class.

TODO: removes 4 attributes from original RM form - lossy copy?

Attributes

Signature

Meaning

1..1

system_id: String

Converted from FEEDER_AUDIT_DETAILS.system_id.

1..1

version_id: String

Converted from FEEDER_AUDIT_DETAILS.version_id.

3.5.1.6. S_PARTY_PROXY Class

Class

S_PARTY_PROXY

Description

Simplified RM form of PARTY_PROXY RM class.

Inherit

S_TYPE

Attributes

Signature

Meaning

0..1

id: String

Equivalent of PARTY_PROXY.external_ref.id.value

0..1

id_namespace: String

Equivalent of PARTY_PROXY.external_ref.namespace.

0..1

id_scheme: String

Equivalent of PARTY_PROXY.external_ref.id.scheme, if external_ref.id is a GENERIC_ID.

3.5.1.7. S_PARTY_IDENTIFIED Class

Class

S_PARTY_IDENTIFIED

Description

Simplified RM form of PARTY_IDENTIFIED RM class.

TODO: PARTY_IDENTIFIED.identifiers not included.

Inherit

S_PARTY_PROXY

Attributes

Signature

Meaning

1..1

name: String

(unchanged from RM)

3.5.1.8. S_PARTICIPATION Class

Class

S_PARTICIPATION

Description

Simplified RM form of PARTICIPATION RM class, for instances where performer is of type PARTY_SELF.

Inherit

S_TYPE

Attributes

Signature

Meaning

1..1

id: String

Converted from PARTICIPATION.performer.external_ref.id.value.

0..1

mode: String

Converted from PARTICIPATION.mode: DV_CODED_TEXT.

1..1

function: String

Converted from PARTICIPATION.function: DV_TEXT.

3.5.1.9. S_PARTICIPATION_IDENTIFIED Class

Class

S_PARTICIPATION_IDENTIFIED

Description

Simplified RM form of PARTICIPATION RM class, for instances where performer is of type PARTY_IDENTIFIED.

Inherit

S_PARTICIPATION

Attributes

Signature

Meaning

1..1

name: String

Converted from PARTICIPATION.performer.name.

3.6. Composition Package

The following UML diagram shows the top-level SIM rm.composition package defining S_COMPOSITION, S_SECTION and the S_ENTRY types.

SM simplified im b.rm.composition
Figure 6. sm.simplified_im_b.rm.composition package

3.6.1. Class Definitions

3.6.1.1. S_COMPOSITION Class

Class

S_COMPOSITION

Description

Simplified RM form of COMPOSITION RM class.

Inherit

S_LOCATABLE

Attributes

Signature

Meaning

1..1

content: S_CONTENT_ITEM

(unchanged from RM)

1..1

composer: S_PARTY_PROXY

Converted to S_PARTY_PROXY or S_PARTY_IDENTIFIED from PARTY_SELF, PARTY_IDENTIFIED or PARTY_RELATED.

1..1

language: String

Converted from DV_DATE_TIME.

1..1

territory: String

ISO3166-1 country code to be used for composition territory (e.g. "GB", "DE", …).

0..1

category: String

Value of Composition category in String form: "event" or "persistent".

0..1

context: S_EVENT_CONTEXT

3.6.1.2. S_EVENT_CONTEXT Class

Class

S_EVENT_CONTEXT

Description

Simplified RM form of EVENT_CONTEXT RM class.

Inherit

S_TYPE

Attributes

Signature

Meaning

1..1

time: String

Converted from DV_DATE_TIME.

0..1

end_time: String

Converted from DV_DATE_TIME.

0..1

location: String

(unchanged from RM)

0..1

participations: List<S_PARTICIPATION>

(unchanged from RM)

0..1

health_care_facility: S_PARTY_IDENTIFIED

(unchanged from RM)

0..1

setting: String

(unchanged from RM)

0..1

other_context: S_CLUSTER

Converted from ITEM_STRUCTURE.

3.6.1.3. S_CONTENT_ITEM Class

Class

S_CONTENT_ITEM (abstract)

Description

Simplified RM form of CONTENT_ITEM RM class.

Inherit

S_LOCATABLE

3.6.1.4. S_SECTION Class

Class

S_SECTION

Description

Simplified RM form of SECTION RM class.

Inherit

S_CONTENT_ITEM

Attributes

Signature

Meaning

0..1

items: List<S_CONTENT_ITEM>

(unchanged from RM)

3.6.1.5. S_ENTRY Class

Class

S_ENTRY (abstract)

Description

Simplified RM form of ENTRY RM class.

Inherit

S_CONTENT_ITEM

Attributes

Signature

Meaning

0..1

subject: S_PARTY_PROXY

Converted to S_PARTY_PROXY or S_PARTY_IDENTIFIED from PARTY_SELF, PARTY_IDENTIFIED or PARTY_RELATED.

0..1

provider: S_PARTY_PROXY

Converted to S_PARTY_PROXY or S_PARTY_IDENTIFIED from PARTY_SELF, PARTY_IDENTIFIED or PARTY_RELATED.

0..1

other_participations: List<S_PARTICIPATION>

(unchanged from RM)

3.6.1.6. S_ADMIN_ENTRY Class

Class

S_ADMIN_ENTRY

Description

Simplified RM form of ADMIN_ENTRY RM class.

Inherit

S_ENTRY

Attributes

Signature

Meaning

1..1

data: S_CLUSTER

Converted from ITEM_STRUCTURE.

3.6.1.7. S_CARE_ENTRY Class

Class

S_CARE_ENTRY (abstract)

Description

Simplified RM form of CARE_ENTRY RM class.

Inherit

S_ENTRY

Attributes

Signature

Meaning

0..1

protocol: S_CLUSTER

Converted from ITEM_STRUCTURE.

3.6.1.8. S_OBSERVATION Class

Class

S_OBSERVATION

Description

Variant of S_OBSERVATION to use for single sample Observations.

Inherit

S_CARE_ENTRY

Attributes

Signature

Meaning

0..1

data: List<S_EVENT>

Converted from OBSERVATION.data.events[1].

0..1

state: List<S_EVENT>

Converted from OBSERVATION.state.events[1].

0..1

history_origin: String

For multi-event series, converted from OBSERVATION.data.origin.

TODO: should be called data_origin.

0..1

history_period: String

For multi-event series, converted from OBSERVATION.data.period.

TODO: should be called data_period.

0..1

history_summary: S_ITEM

For multi-event series, converted from OBSERVATION.data.summary.

TODO: should be called data_summary.

0..1

history_duration: String

For multi-event series, converted from OBSERVATION.data.duration.

TODO: should be called data_duration.

0..1

state_origin: String

For multi-event series, converted from OBSERVATION.state.origin.

0..1

state_period: String

For multi-event series, converted from OBSERVATION.state.period.

0..1

state_summary: S_ITEM

For multi-event series, converted from OBSERVATION.state.summary.

0..1

state_duration: String

For multi-event series, converted from OBSERVATION.state.duration.

3.6.1.9. S_EVALUATION Class

Class

S_EVALUATION

Description

Simplified RM form of EVALUATION RM class.

Inherit

S_CARE_ENTRY

Attributes

Signature

Meaning

1..1

data: S_CLUSTER

Converted from ITEM_STRUCTURE.

3.6.1.10. S_INSTRUCTION Class

Class

S_INSTRUCTION

Description

Simplified RM form of INSTRUCTION RM class.

Inherit

S_CARE_ENTRY

Attributes

Signature

Meaning

0..1

narrative: String

Converted from DV_TEXT to String.

0..1

expiry_time: String

Converted from DV_DATE_TIME.

0..1

activities: List<S_ACTIVITY>

(unchanged from RM)

3.6.1.11. S_ACTIVITY Class

Class

S_ACTIVITY

Description

Simplified RM form of ACTIVITY RM class.

Attributes

Signature

Meaning

0..1

timing: String

Converted from DV_PARSABLE.

0..1

action_archetype_id: String

(unchanged from RM)

1..1

description: S_CLUSTER

Converted from ITEM_STRUCTURE.

3.6.1.12. S_ACTION Class

Class

S_ACTION

Description

Simplified RM form of ACTION RM class.

Inherit

S_CARE_ENTRY

Attributes

Signature

Meaning

1..1

time: String

Converted from DV_DATE_TIME.

1..1

description: S_CLUSTER

Converted to S_CLUSTER from ITEM_STRUCTURE.

1..1

current_state: String

Converted from ism_transition.current_state: DV_CODED_TEXT to String.

0..1

careflow_step: S_DV_CODED_TEXT

Converted from ism_transition.careflow_step.

0..1

transition: String

Converted from ism_transition.transition: DV_CODED_TEXT to String.

0..1

instruction_id: String

Converted from instruction_details.instruction_id.

0..1

activity_id: String

Converted from instruction_details.activity_id.

3.7. Application Context Model

This section defines an 'application context model' that formalises various defaults and other data settings that enable an openEHR client application to more conveniently create larger data sets (Composition structures) to commit to an openEHR EHR through the openEHR REST API.

SM simplified im b.app context
Figure 7. sm.app_context package

3.7.1. Class Definitions

3.7.2. APP_CONTEXT Class

Class

APP_CONTEXT

Description

Attributes

Signature

Meaning

1..1

language: String

ISO639-1 language code to be used for Composition language (e.g. "en", "de", …).

Equivalent of RM COMPOSITION.language.

To RM: match term text from vocabulary at https://github.com/openEHR/terminology/blob/master/openEHR_RM/openehr_external_terminologies.xml#L263; create CODE_PHRASE with terminology_id = "openEHR".

From RM: COMPOSITION.language.code_string.

1..1

territory: String

ISO3166-1 country code to be used for composition territory (e.g. "GB", "DE", …).

Equivalent of RM COMPOSITION.territory.

To RM: match term text from vocabulary at https://github.com/openEHR/terminology/blob/master/openEHR_RM/openehr_external_terminologies.xml#L2; create CODE_PHRASE with terminology_id = "openEHR".

From RM: COMPOSITION.territory.code_string.

1..1

composer_name: String

Name of the person who composed the Composition.

ISO3166-1 country code to be used for composition territory (e.g. "GB", "DE", …).

Equivalent of RM COMPOSITION.composer.name when composer is a PARTY_IDENTIFIED.

To RM: xxx.

From RM: if COMPOSITION.composer is an instance of PARTY_IDENTIFIED, extract composer.name.

0..1

composer_id: String

Equivalent of COMPOSITION.composer.external_ref.id if PARTY_PROXY.external_ref set.

1..1

time: String

Default value to be used for:

  • COMPOSITION_context.start time_;

  • OBSERVATION.history.origin;

  • OBSERVATION.history.events[i].time.

If not specified current time will be used.

Converted from DV_DATE_TIME.value.

0..1

end_time: String

Equivalent of COMPOSITION.context.end_time.

TODO: check: this is just a copy of /context/end_time?

From RM: copy of DV_DATE_TIME.value.

0..1

category: String

Value of Composition category : "event" or "persistent".

To RM: match term text from category vocabulary; create DV_CODED_TEXT with terminology_id = "openEHR".

From RM: COMPOSITION.setting.defining_code.code_string.

TODO: check: this is just a copy of /category; needed here?

0..1

setting: String

Equivalent to COMPOSITION.setting.

To RM: obtain code definition from openEHR setting vocabulary; create DV_CODED_TEXT.

From RM: COMPOSITION.setting.defining_code.code_string.

TODO: check: this is just a copy of /context/setting; needed here?

TODO: There are 2 new codes in EhrScape ?not in openEHR terminology:

  • 435: laboratory

  • 436: imaging

0..1

history_origin: String

Default value for HISTORY.origin within OBSERVATION.data and state` in the commit.

0..1

id_namespace: String

Default namespace for identifier references derived from OBJECT_REF instances.

0..1

id_scheme: String

Default scheme for all identifiers derived from GENERIC_ID instances.

0..1

provider_name: String

Equivalent of ENTRY.provider.name. where ENTRY.provider is a PARTY_IDENTIFIED.

Default for all ENTRY objects.

0..1

provider_id: String

Equivalent of ENTRY.provider.external_ref.id.

Default for all ENTRY objects.

0..1

participation_name: List<String>

Equivalent of COMPOSITION.context.participations[i].performer.name if PARTICIPATION.performer of type PARTY_IDENTIFIED.

0..1

participation_id: List<String>

Equivalent of COMPOSITION.context.participations[i].performer.external_ref.id if PARTICIPATION.performer.external_ref set.

0..1

participation_function: List<String>

Equivalent of COMPOSITION.context.participations[i].function.

0..1

participation_mode: List<String>

Equivalent of COMPOSITION.context.participations[i].mode.

0..1

participation_identifiers: List<String>

Equivalent of COMPOSITION.context.participations[i].performer.identifiers if PARTICIPATION.performer of type PARTY_IDENTIFIED.

0..1

action_time: String

Default value for all ACTION.time instances.

TODO: is this default really needed - having 2 ACTIONs in same commit probably uncommon. Easier to just include in compressed S_ACTION.

0..1

action_ism_transition_current_state: Integer

Default value for ACTION.ism_transition.current_state.

TODO: is this default really needed - having 2 ACTIONs in same commit probably uncommon. Easier to just include in compressed S_ACTION.

0..1

instruction_narrative: String

Default for all INSTRUCTION.narrative occurrences in commit.

0..1

healthcare_facility: S_PARTY_IDENTIFIED

Equivalent of COMPOSITION.context.health_care_facility.

0..1

activity_timing: String

Default for all INSTRUCTION.activities[i].timing occurrences in commit.

TODO: really needed, since multiple INSTRUCTIONs in commit with same timing would be unlilkely.

0..1

location: String

Equivalent of COMPOSITION.context.location.

0..1

workflow_id: S_OBJECT_REF

Default value for ENTRY.workflow_id.

3.7.3. APP_COMPOSITION Class

Class

APP_COMPOSITION

Description

Inherit

S_COMPOSITION

Attributes

Signature

Meaning

0..1

ctx: APP_CONTEXT

(unchanged from RM)

4. Transformation Rules

This section contains rules defining the formal relationship between the SIM-B and the openEHR RM and other models on which it is based.

4.1. Composition Package

RM class RM Path RM Type SIM class SIM Path SIMType Data
conversion
rule
Constraint
conversion
rule

EVENT_CONTEXT

start_time

DV_DATE_TIME

S_EVENT_CONTEXT

start_time

String

as_string()

create C_STRING from C_DATE_TIME

end_time

DV_DATE_TIME

end_time

String

as_string()

create C_STRING from C_DATE_TIME

OBSERVATION

data

HISTORY

S_OBSERVATION

collapse()

state

HISTORY

collapse()

data.events

List<EVENT>

data

List<S_EVENT>

convert()

state.events

List<EVENT>

state

List<S_EVENT>

convert()

data.origin

DV_DATE_TIME

history_origin

String

as_string()

create C_STRING from C_DATE_TIME

data.period

DV_DURATION

history_period

String

as_string()

create C_STRING from C_DURATION

data.duration

DV_DURATION

history_duration

String

as_string()

create C_STRING from C_DURATION

data.summary

ITEM_STRUCTURE

history_summary

S_ITEM

xxx()

see ITEM_STRUCTURE

state.origin

DV_DATE_TIME

state_origin

String

as_string()

create C_STRING from C_DATE_TIME

state.period

DV_DURATION

state_period

String

as_string()

create C_STRING from C_DURATION

state.duration

DV_DURATION

state_duration

String

as_string()

create C_STRING from C_DURATION

state.summary

ITEM_STRUCTURE

state_summary

S_ITEM

xxx()

see ITEM_STRUCTURE

INSTRUCTION

narrative

DV_TEXT

S_INSTRUCTION

narrative

String

xxx()

create C_STRING from C_TERMINOLOGY_CODE at DV_TEXT.value or DV_CODED_TEXT.defining_code

expiry_time

DV_DATE_TIME

expiry_time

String

as_string()

create C_STRING from C_DATE_TIME

ACTIVITY

timing

DV_PARSABLE

S_ACTIVITY

timing

String

as_string()

action_archetype_id

String

action_archetype_id

String

copy()

copy()

ACTION

time

DV_DATE_TIME

S_ACTION

time

String

as_string()

create C_STRING from C_DATE_TIME

ism_transition

ISM_TRANSITION

collapse()

ism_transition.current_state

DV_CODED_TEXT

current_state

String

cvt_openehr_term()

create C_STRING from C_TERMINOLOGY_CODE at defining_code

ism_transition.careflow_step

DV_CODED_TEXT

careflow_step

S_DV_CODED_TEXT

xxx()

ism_transition.transition

DV_CODED_TEXT

transition

String

cvt_openehr_term()

create C_STRING from C_TERMINOLOGY_CODE at defining_code

instruction_id

INSTRUCTION_DETAILS

collapse()

instruction_details.instruction_id

LOCATABLE_REF

instruction_id

String

as_string()

n/a

instruction_details.activity_id

String

activity_id

String

copy()

copy()

4.2. Common Package

RM class RM Path RM Type SIM class SIM Path SIMType Data
conversion
rule
Constraint
conversion
rule

LINK

meaning.value

String

S_LINK

meaning

String

copy()

LINK

type.value

String

S_LINK

type

String

copy()

copy()

PARTY_PROXY

external_ref.id.value

String

S_PARTY_PROXY

id

String

xxx()

copy()

PARTY_PROXY

external_ref.namespace

String

S_PARTY_PROXY

id_namespace

String

xxx()

copy()

PARTY_PROXY

external_ref.id.scheme

String

S_PARTY_PROXY

id_scheme

String

if external_ref.id instance_of(GENERIC_ID) then {xxx() }

4.3. Data Structures Package

RM class RM Path RM Type SIM class SIM Path SIMType Data
conversion
rule
Constraint
conversion
rule

EVENT

time

DV_DATE_TIME

S_EVENT

value

String

as_string()

create C_STRING from C_DATE_TIME

EVENT

data

ITEM_TREE

S_EVENT

data

S_CLUSTER

cvt_item_tree()

EVENT

state

ITEM_TREE

S_EVENT

state

S_CLUSTER

cvt_item_tree()

INTERVAL_EVENT

width

DV_DURATION

S_INTERVAL_EVENT

width

String

as_string()

INTERVAL_EVENT

sample_count

DV_DURATION

S_INTERVAL_EVENT

sample_count

String

copy()

INTERVAL_EVENT

math_function

DV_CODED_TEXT

S_INTERVAL_EVENT

math_function

String

cvt_openehr_term()

create C_STRING from C_TERMINOLOGY_CODE at defining_code

4.4. RM Data types Package

RM class RM Path RM Type SIM class SIM Path SIMType Data
conversion
rule
Constraint
conversion
rule

DV_TEXT

value

String

S_DV_TEXT

value

String

copy()

DV_CODED_TEXT

defining_code.code_string

String

S_DV_CODED_TEXT

code

String

copy()

DV_CODED_TEXT

defining_code.terminology_id

TERMINOLOGY_ID

S_DV_CODED_TEXT

terminology

String

as_string()

CODE_PHRASE

code_string

String

S_CODE_PHRASE

code

String

copy()

CODE_PHRASE

terminology_id

TERMINOLOGY_ID

S_CODE_PHRASE

terminology

String

as_string()

4.5. Simplified IM Package

RM class RM Path RM Type SIM class SIM Path SIMType Data
conversion
rule
Constraint
conversion
rule

OBJECT_REF

namespace

String

S_OBJECT_REF

id_namespace

String

copy()

OBJECT_REF

type

String

S_OBJECT_REF

id_type

String

copy()