bmm_version = <"2.4"> rm_publisher = <"openehr"> schema_name = <"rm"> rm_release = <"1.0.4"> schema_revision = <"1.0.4.2"> schema_lifecycle_state = <"stable"> schema_description = <"openEHR Reference Model"> schema_author = <"Thomas Beale , code-generator"> includes = < ["openehr_base_1.1.0"] = < id = <"openehr_base_1.1.0"> > > packages = < ["org.openehr.rm.common"] = < name = <"org.openehr.rm.common"> packages = < ["archetyped"] = < name = <"archetyped"> classes = <"PATHABLE", "LINK", "LOCATABLE", "ARCHETYPED", "FEEDER_AUDIT", "FEEDER_AUDIT_DETAILS"> > ["change_control"] = < name = <"change_control"> classes = <"VERSIONED_OBJECT", "CONTRIBUTION", "VERSION", "IMPORTED_VERSION", "ORIGINAL_VERSION"> > ["generic"] = < name = <"generic"> classes = <"REVISION_HISTORY_ITEM", "AUDIT_DETAILS", "ATTESTATION", "PARTICIPATION", "PARTY_PROXY", "PARTY_IDENTIFIED", "PARTY_SELF", "PARTY_RELATED", "REVISION_HISTORY"> > ["directory"] = < name = <"directory"> classes = <"VERSIONED_FOLDER", "FOLDER"> > ["resource"] = < name = <"resource"> classes = <"AUTHORED_RESOURCE", "RESOURCE_DESCRIPTION", "TRANSLATION_DETAILS", "RESOURCE_DESCRIPTION_ITEM"> > > > ["org.openehr.rm.data_structures"] = < name = <"org.openehr.rm.data_structures"> classes = <"DATA_STRUCTURE", ...> packages = < ["item_structure"] = < name = <"item_structure"> classes = <"ITEM_STRUCTURE", "ITEM_TREE", "ITEM_SINGLE", "ITEM_TABLE", "ITEM_LIST"> > ["history"] = < name = <"history"> classes = <"EVENT", "POINT_EVENT", "INTERVAL_EVENT", "HISTORY"> > ["representation"] = < name = <"representation"> classes = <"ITEM", "CLUSTER", "ELEMENT"> > > > ["org.openehr.rm.data_types"] = < name = <"org.openehr.rm.data_types"> packages = < ["basic"] = < name = <"basic"> classes = <"DATA_VALUE", "DV_BOOLEAN", "DV_STATE", "DV_IDENTIFIER"> > ["encapsulated"] = < name = <"encapsulated"> classes = <"DV_ENCAPSULATED", "DV_MULTIMEDIA", "DV_PARSABLE"> > ["text"] = < name = <"text"> classes = <"DV_PARAGRAPH", "DV_TEXT", "DV_CODED_TEXT", "TERM_MAPPING", "CODE_PHRASE"> > ["quantity"] = < name = <"quantity"> classes = <"DV_ORDERED", "DV_INTERVAL", "REFERENCE_RANGE", "DV_QUANTIFIED", "DV_PROPORTION", "PROPORTION_KIND", "DV_AMOUNT", "DV_QUANTITY", "DV_COUNT", "DV_ABSOLUTE_QUANTITY", "DV_ORDINAL"> packages = < ["date_time"] = < name = <"date_time"> classes = <"DV_DURATION", "DV_TEMPORAL", "DV_DATE", "DV_TIME", "DV_DATE_TIME"> > > > ["time_specification"] = < name = <"time_specification"> classes = <"DV_TIME_SPECIFICATION", "DV_PERIODIC_TIME_SPECIFICATION", "DV_GENERAL_TIME_SPECIFICATION"> > ["uri"] = < name = <"uri"> classes = <"DV_URI", "DV_EHR_URI"> > > > ["org.openehr.rm.support"] = < name = <"org.openehr.rm.support"> classes = <"EXTERNAL_ENVIRONMENT_ACCESS", ...> packages = < ["definition"] = < name = <"definition"> classes = <"OPENEHR_DEFINITIONS", "BASIC_DEFINITIONS"> > ["measurement"] = < name = <"measurement"> classes = <"MEASUREMENT_SERVICE", ...> > ["terminology"] = < name = <"terminology"> classes = <"OPENEHR_TERMINOLOGY_GROUP_IDENTIFIERS", "OPENEHR_CODE_SET_IDENTIFIERS", "TERMINOLOGY_SERVICE", "CODE_SET_ACCESS", "TERMINOLOGY_ACCESS"> > > > ["org.openehr.rm.security"] = < name = <"org.openehr.rm.security"> packages = < ["access_control"] = < name = <"access_control"> classes = <"ACCESS_CONTROL_SETTINGS", ...> > > > ["org.openehr.rm.ehr"] = < name = <"org.openehr.rm.ehr"> classes = <"EHR", "VERSIONED_EHR_ACCESS", "VERSIONED_EHR_STATUS", "VERSIONED_COMPOSITION", "EHR_ACCESS", "EHR_STATUS"> > ["org.openehr.rm.ehr_extract"] = < name = <"org.openehr.rm.ehr_extract"> packages = < ["common"] = < name = <"common"> classes = <"EXTRACT", "EXTRACT_ACTION_REQUEST", "EXTRACT_CHAPTER", "EXTRACT_CONTENT_ITEM", "EXTRACT_ENTITY_CHAPTER", "EXTRACT_ENTITY_MANIFEST", "EXTRACT_ERROR", "EXTRACT_FOLDER", "EXTRACT_ITEM", "EXTRACT_MANIFEST", "EXTRACT_PARTICIPATION", "EXTRACT_REQUEST", "EXTRACT_SPEC", "EXTRACT_UPDATE_SPEC", "EXTRACT_VERSION_SPEC"> > ["openehr_extract"] = < name = <"openehr_extract"> classes = <"OPENEHR_CONTENT_ITEM", "X_VERSIONED_OBJECT", "X_VERSIONED_EHR_ACCESS", "X_VERSIONED_EHR_STATUS", "X_VERSIONED_COMPOSITION", "X_VERSIONED_FOLDER", "X_VERSIONED_PARTY"> > ["generic_extract"] = < name = <"generic_extract"> classes = <"GENERIC_CONTENT_ITEM", ...> > ["sync_extract"] = < name = <"sync_extract"> classes = <"SYNC_EXTRACT_REQUEST", "SYNC_EXTRACT", "X_CONTRIBUTION", "SYNC_EXTRACT_SPEC"> > ["message"] = < name = <"message"> classes = <"MESSAGE", "ADDRESSED_MESSAGE", "MESSAGE_CONTENT"> > > > ["org.openehr.rm.demographic"] = < name = <"org.openehr.rm.demographic"> classes = <"PARTY", "CONTACT", "ADDRESS", "PARTY_IDENTITY", "ROLE", "ACTOR", "CAPABILITY", "AGENT", "ORGANISATION", "GROUP", "PERSON", "PARTY_RELATIONSHIP", "VERSIONED_PARTY"> > ["org.openehr.rm.integration"] = < name = <"org.openehr.rm.integration"> classes = <"GENERIC_ENTRY", ...> > ["org.openehr.rm.composition"] = < name = <"org.openehr.rm.composition"> classes = <"COMPOSITION", "EVENT_CONTEXT"> packages = < ["content"] = < name = <"content"> classes = <"CONTENT_ITEM", ...> packages = < ["navigation"] = < name = <"navigation"> classes = <"SECTION", ...> > ["entry"] = < name = <"entry"> classes = <"ADMIN_ENTRY", "CARE_ENTRY", "OBSERVATION", "EVALUATION", "ACTION", "ACTIVITY", "ISM_TRANSITION", "INSTRUCTION_DETAILS", "ENTRY", "INSTRUCTION"> > > > > > > class_definitions = < ["PATHABLE"] = < name = <"PATHABLE"> documentation = <"The PATHABLE class defines the pathing capabilities used by nearly all classes in the openEHR reference model, mostly via inheritance of LOCATABLE. The defining characteristics of PATHABLE objects are that they can locate child objects using paths, and they know their parent object in a compositional hierarchy. The parent feature is defined as abstract in the model, and may be implemented in any way convenient."> ancestors = <"Any", ...> is_abstract = functions = < ["parent"] = < name = <"parent"> documentation = <"Parent of this node in a compositional hierarchy. "> result = (P_BMM_SIMPLE_TYPE) < type = <"PATHABLE"> > > ["item_at_path"] = < name = <"item_at_path"> documentation = <"The item at a path (relative to this item); only valid for unique paths, i.e. paths that resolve to a single item. "> result = (P_BMM_SIMPLE_TYPE) < type = <"Any"> > parameters = < ["a_path"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_path"> type = <"String"> > > pre_conditions = < ["Pre"] = <"path_unique (a_path)"> > > ["items_at_path"] = < name = <"items_at_path"> documentation = <"List of items corresponding to a non-unique path."> result = (P_BMM_CONTAINER_TYPE) < container_type = <"List"> type = <"Any"> > parameters = < ["a_path"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_path"> type = <"String"> > > is_nullable = > ["path_exists"] = < name = <"path_exists"> documentation = <"True if the path exists in the data with respect to the current item. "> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["a_path"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_path"> type = <"String"> > > pre_conditions = < ["Pre"] = <"not a_path.is_empty"> > > ["path_unique"] = < name = <"path_unique"> documentation = <"True if the path corresponds to a single item in the data. "> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["a_path"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_path"> type = <"String"> > > pre_conditions = < ["Pre"] = <"path_exists (a_path)"> > > ["path_of_item"] = < name = <"path_of_item"> documentation = <"The path to an item relative to the root of this archetyped structure."> result = (P_BMM_SIMPLE_TYPE) < type = <"String"> > parameters = < ["a_loc"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_loc"> type = <"PATHABLE"> > > > > > ["LINK"] = < name = <"LINK"> documentation = <"The `LINK` type defines a logical relationship between two items, such as two `ENTRYs` or an `ENTRY` and a `COMPOSITION`. Links can be used across compositions, and across EHRs. Links can potentially be used between interior (i.e. non archetype root) nodes, although this probably should be prevented in archetypes. Multiple `LINKs` can be attached to the root object of any archetyped structure to give the effect of a 1->N link. 1:1 and 1:N relationships between archetyped content elements (e.g. `ENTRYs`) can be expressed by using one, or more than one, respectively, `LINKs`. Chains of links can be used to see problem threads or other logical groupings of items. Links should be between archetyped structures only, i.e. between objects representing complete domain concepts because relationships between sub-elements of whole concepts are not necessarily meaningful, and may be downright confusing. Sensible links only exist between whole `ENTRYs`, `SECTIONs`, `COMPOSITIONs` and so on. "> properties = < ["meaning"] = (P_BMM_SINGLE_PROPERTY) < name = <"meaning"> documentation = <"Used to describe the relationship, usually in clinical terms, such as in response to (the relationship between test results and an order), follow-up to and so on. Such relationships can represent any clinically meaningful connection between pieces of information. Values for meaning include those described in Annex C, ENV 13606 pt 2 under the categories of generic , documenting and reporting , organisational , clinical , circumstancial , and view management ."> is_mandatory = type = <"DV_TEXT"> > ["type"] = (P_BMM_SINGLE_PROPERTY) < name = <"type"> documentation = <"The type attribute is used to indicate a clinical or domain-level meaning for the kind of link, for example problem or issue . If type values are designed appropriately, they can be used by the requestor of EHR extracts to categorise links which must be followed and which can be broken when the extract is created. "> is_mandatory = type = <"DV_TEXT"> > ["target"] = (P_BMM_SINGLE_PROPERTY) < name = <"target"> documentation = <"The logical to object in the link relation, as per the linguistic sense of the meaning attribute."> is_mandatory = type = <"DV_EHR_URI"> > > > ["LOCATABLE"] = < name = <"LOCATABLE"> documentation = <"Root class of all information model classes that can be archetyped. Most classes in the openEHR reference model inherit from the `LOCATABLE` class, which defines the idea of locatability in an archetyped structure. `LOCATABLE` defines a runtime name and an `_archetype_node_id_`. "> ancestors = <"PATHABLE", ...> is_abstract = properties = < ["name"] = (P_BMM_SINGLE_PROPERTY) < name = <"name"> documentation = <"Runtime name of this fragment, used to build runtime paths. This is the term provided via a clinical application or batch process to name this EHR construct: its retention in the EHR faithfully preserves the original label by which this entry was known to end users. "> is_mandatory = type = <"DV_TEXT"> > ["archetype_node_id"] = (P_BMM_SINGLE_PROPERTY) < name = <"archetype_node_id"> documentation = <"Design-time archetype id of this node taken from its generating archetype; used to build archetype paths. Always in the form of an at code, e.g. at0005 . This value enables a \"standardised\" name for this node to be generated, by referring to the generating archetype local ontology. At an archetype root point, the value of this attribute is always the stringified form of the archetype_id found in the archetype_details object. "> is_mandatory = type = <"String"> > ["uid"] = (P_BMM_SINGLE_PROPERTY) < name = <"uid"> documentation = <"Optional globally unique object identifier for root points of archetyped structures. "> type = <"UID_BASED_ID"> > ["links"] = (P_BMM_CONTAINER_PROPERTY) < name = <"links"> documentation = <"Links to other archetyped structures (data whose root object inherits from ARCHETYPED, such as ENTRY, SECTION and so on). Links may be to structures in other compositions. "> type_def = < container_type = <"List"> type = <"LINK"> > cardinality = <|>=0|> > ["archetype_details"] = (P_BMM_SINGLE_PROPERTY) < name = <"archetype_details"> documentation = <"Details of archetyping used on this node."> type = <"ARCHETYPED"> > ["feeder_audit"] = (P_BMM_SINGLE_PROPERTY) < name = <"feeder_audit"> documentation = <"Audit trail from non-openEHR system of original commit of information forming the content of this node, or from a conversion gateway which has synthesised this node. "> type = <"FEEDER_AUDIT"> > > functions = < ["concept"] = < name = <"concept"> documentation = <"Clinical concept of the archetype as a whole (= derived from the archetype_node_id' of the root node) "> result = (P_BMM_SIMPLE_TYPE) < type = <"DV_TEXT"> > > ["is_archetype_root"] = < name = <"is_archetype_root"> documentation = <"True if this node is the root of an archetyped structure."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > > > invariants = < ["Links_valid"] = <"links /= Void implies not links.is_empty"> ["Archetyped_valid"] = <"is_archetype_root xor archetype_details = Void"> ["Archetype_node_id_valid"] = <"not archetype_node_id.is_empty"> > > ["ARCHETYPED"] = < name = <"ARCHETYPED"> documentation = <"Archetypes act as the configuration basis for the particular structures of instances defined by the reference model. To enable archetypes to be used to create valid data, key classes in the reference model act as root points for archetyping; accordingly, these classes have the archetype_details attribute set. An instance of the class ARCHETYPED contains the relevant archetype identification information, allowing generating archetypes to be matched up with data instances."> properties = < ["archetype_id"] = (P_BMM_SINGLE_PROPERTY) < name = <"archetype_id"> documentation = <"Globally unique archetype identifier. "> is_mandatory = type = <"ARCHETYPE_ID"> > ["template_id"] = (P_BMM_SINGLE_PROPERTY) < name = <"template_id"> documentation = <"Globally unique template identifier, if a template was active at this point in the structure. Normally, a template would only be used at the top of a top-level structure, but the possibility exists for templates at lower levels. "> type = <"TEMPLATE_ID"> > ["rm_version"] = (P_BMM_SINGLE_PROPERTY) < name = <"rm_version"> documentation = <"Version of the openEHR reference model used to create this object. Expressed in terms of the release version string, e.g. 1.0 , 1.2.4 ."> is_mandatory = type = <"String"> > > invariants = < ["Rm_version_valid"] = <"not rm_version.is_empty"> > > ["FEEDER_AUDIT"] = < name = <"FEEDER_AUDIT"> documentation = <"The `FEEDER_AUDIT` class defines the semantics of an audit trail which is constructed to describe the origin of data that have been transformed into openEHR form and committed to the system. "> properties = < ["originating_system_item_ids"] = (P_BMM_CONTAINER_PROPERTY) < name = <"originating_system_item_ids"> documentation = <"Identifiers used for the item in the originating system, e.g. filler and placer ids. "> type_def = < container_type = <"List"> type = <"DV_IDENTIFIER"> > cardinality = <|>=0|> > ["feeder_system_item_ids"] = (P_BMM_CONTAINER_PROPERTY) < name = <"feeder_system_item_ids"> documentation = <"Identifiers used for the item in the feeder system, where the feeder system is distinct from the originating system. "> type_def = < container_type = <"List"> type = <"DV_IDENTIFIER"> > cardinality = <|>=0|> > ["original_content"] = (P_BMM_SINGLE_PROPERTY) < name = <"original_content"> documentation = <"Optional inline inclusion of or reference to original content corresponding to the openEHR content at this node. Typically a URI reference to a document or message in a persistent store associated with the EHR. "> type = <"DV_ENCAPSULATED"> > ["originating_system_audit"] = (P_BMM_SINGLE_PROPERTY) < name = <"originating_system_audit"> documentation = <"Any audit information for the information item from the originating system. "> is_mandatory = type = <"FEEDER_AUDIT_DETAILS"> > ["feeder_system_audit"] = (P_BMM_SINGLE_PROPERTY) < name = <"feeder_system_audit"> documentation = <"Any audit information for the information item from the feeder system, if different from the originating system."> type = <"FEEDER_AUDIT_DETAILS"> > > > ["FEEDER_AUDIT_DETAILS"] = < name = <"FEEDER_AUDIT_DETAILS"> documentation = <"Audit details for any system in a feeder system chain. Audit details here means the general notion of who/where/when the information item to which the audit is attached was created. None of the attributes is defined as mandatory, however, in different scenarios, various combinations of attributes will usually be mandatory. This can be controlled by specifying feeder audit details in legacy archetypes. "> properties = < ["system_id"] = (P_BMM_SINGLE_PROPERTY) < name = <"system_id"> documentation = <"Identifier of the system which handled the information item. This is the IT system owned by the organisation legally responsible for handling the data, and at which the data were previously created or passed by an earlier system. "> is_mandatory = type = <"String"> > ["location"] = (P_BMM_SINGLE_PROPERTY) < name = <"location"> documentation = <"Identifier of the particular site/facility within an organisation which handled the item. For computability, this identifier needs to be e.g. a PKI identifier which can be included in the identifier list of the `PARTY_IDENTIFIED` object. "> type = <"PARTY_IDENTIFIED"> > ["subject"] = (P_BMM_SINGLE_PROPERTY) < name = <"subject"> documentation = <"Identifiers for subject of the received information item. "> type = <"PARTY_PROXY"> > ["provider"] = (P_BMM_SINGLE_PROPERTY) < name = <"provider"> documentation = <"Optional provider(s) who created, committed, forwarded or otherwise handled the item. "> type = <"PARTY_IDENTIFIED"> > ["time"] = (P_BMM_SINGLE_PROPERTY) < name = <"time"> documentation = <"Time of handling the item. For an originating system, this will be time of creation, for an intermediate feeder system, this will be a time of accession or other time of handling, where available."> type = <"DV_DATE_TIME"> > ["version_id"] = (P_BMM_SINGLE_PROPERTY) < name = <"version_id"> documentation = <"Any identifier used in the system such as \"interim\" , \"final\" , or numeric versions if available. "> type = <"String"> > > invariants = < ["System_id_valid"] = <"not system_id.is_empty"> > > ["VERSIONED_OBJECT"] = < name = <"VERSIONED_OBJECT"> documentation = <"Version control abstraction, defining semantics for versioning one complex object."> generic_parameter_defs = < ["T"] = < name = <"T"> > > properties = < ["uid"] = (P_BMM_SINGLE_PROPERTY) < name = <"uid"> documentation = <"Unique identifier of this version container in the form of a UID with no extension. This id will be the same in all instances of the same container in a distributed environment, meaning that it can be understood as the uid of the virtual version tree. "> is_mandatory = type = <"HIER_OBJECT_ID"> > ["owner_id"] = (P_BMM_SINGLE_PROPERTY) < name = <"owner_id"> documentation = <"Reference to object to which this version container belongs, e.g. the id of the containing EHR or other relevant owning entity. "> is_mandatory = type = <"OBJECT_REF"> > ["time_created"] = (P_BMM_SINGLE_PROPERTY) < name = <"time_created"> documentation = <"Time of initial creation of this versioned object. "> is_mandatory = type = <"DV_DATE_TIME"> > > functions = < ["version_count"] = < name = <"version_count"> documentation = <"Return the total number of versions in this object."> result = (P_BMM_SIMPLE_TYPE) < type = <"Integer"> > > ["all_version_ids"] = < name = <"all_version_ids"> documentation = <"Return a list of ids of all versions in this object. "> result = (P_BMM_CONTAINER_TYPE) < container_type = <"List"> type = <"OBJECT_VERSION_ID"> > > ["all_versions"] = < name = <"all_versions"> documentation = <"Return a list of all versions in this object. "> result = (P_BMM_CONTAINER_TYPE) < container_type = <"List"> type_def = (P_BMM_GENERIC_TYPE) < generic_parameters = <"T", ...> root_type = <"VERSION"> > > > ["has_version_at_time"] = < name = <"has_version_at_time"> documentation = <"True if a version for time `_a_time_` exists. "> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["a_ver_id"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_ver_id"> type = <"OBJECT_VERSION_ID"> > > > ["has_version_id"] = < name = <"has_version_id"> documentation = <"True if a version with `_an_id_` exists. "> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["a_ver_id"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_ver_id"> type = <"OBJECT_VERSION_ID"> > > > ["version_with_id"] = < name = <"version_with_id"> documentation = <"Return the version with `_uid_` = `_a_ver_id_`. "> result = (P_BMM_SIMPLE_TYPE) < type = <"VERSION"> > parameters = < ["a_ver_id"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_ver_id"> type = <"OBJECT_VERSION_ID"> > > pre_conditions = < ["Pre"] = <"has_version_id (a_ver_id)"> > > ["is_original_version"] = < name = <"is_original_version"> documentation = <"True if version with `_an_id_` is an `ORIGINAL_VERSION`. "> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["a_ver_id"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_ver_id"> type = <"OBJECT_VERSION_ID"> > > pre_conditions = < ["Pre"] = <"has_version_id(a_ver_id)"> > > ["version_at_time"] = < name = <"version_at_time"> documentation = <"Return the version for time `_a_time_`. "> result = (P_BMM_SIMPLE_TYPE) < type = <"VERSION"> > parameters = < ["a_time"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_time"> type = <"DV_DATE_TIME"> > > pre_conditions = < ["Pre"] = <"has_version_at_time (a_time)"> > > ["revision_history"] = < name = <"revision_history"> documentation = <"History of all audits and attestations in this versioned repository."> result = (P_BMM_SIMPLE_TYPE) < type = <"REVISION_HISTORY"> > > ["latest_version"] = < name = <"latest_version"> documentation = <"Return the most recently added version (i.e. on trunk or any branch). "> result = (P_BMM_SIMPLE_TYPE) < type = <"VERSION"> > > ["latest_trunk_version"] = < name = <"latest_trunk_version"> documentation = <"Return the most recently added trunk version. "> result = (P_BMM_SIMPLE_TYPE) < type = <"VERSION"> > > ["trunk_lifecycle_state"] = < name = <"trunk_lifecycle_state"> documentation = <"Return the lifecycle state from the latest trunk version. Useful for determining if the version container is logically deleted. "> result = (P_BMM_SIMPLE_TYPE) < type = <"DV_CODED_TEXT"> > post_conditions = < ["Post"] = <"Result = latest_trunk_version.lifecycle_state"> > > ["commit_original_version"] = < name = <"commit_original_version"> documentation = <"Add a new original version. "> result = (P_BMM_SIMPLE_TYPE) < type = <"void"> > parameters = < ["a_contribution"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_contribution"> type = <"OBJECT_REF"> > ["a_new_version_uid"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_new_version_uid"> type = <"OBJECT_VERSION_ID"> > ["a_preceding_version_id"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_preceding_version_id"> type = <"OBJECT_VERSION_ID"> > ["an_audit"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"an_audit"> type = <"AUDIT_DETAILS"> > ["a_lifecycle_state"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_lifecycle_state"> type = <"DV_CODED_TEXT"> > ["a_data"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_data"> type = <"T"> > ["signing_key"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"signing_key"> type = <"String"> > > pre_conditions = < ["Pre"] = <"all_version_ids.has (a_preceding_version_uid) or else version_count = 0"> > > ["commit_original_merged_version"] = < name = <"commit_original_merged_version"> documentation = <"Add a new original merged version. This commit function adds a parameter containing the ids of other versions merged into the current one. "> result = (P_BMM_SIMPLE_TYPE) < type = <"void"> > parameters = < ["a_contribution"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_contribution"> type = <"OBJECT_REF"> > ["a_new_version_uid"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_new_version_uid"> type = <"OBJECT_VERSION_ID"> > ["a_preceding_version_id"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_preceding_version_id"> type = <"OBJECT_VERSION_ID"> > ["an_audit"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"an_audit"> type = <"AUDIT_DETAILS"> > ["a_lifecycle_state"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_lifecycle_state"> type = <"DV_CODED_TEXT"> > ["a_data"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_data"> type = <"T"> > ["an_other_input_uids"] = (P_BMM_CONTAINER_FUNCTION_PARAMETER) < name = <"an_other_input_uids"> type_def = < container_type = <"List"> type = <"OBJECT_VERSION_ID"> > cardinality = <|>=1|> > ["signing_key"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"signing_key"> type = <"String"> > > pre_conditions = < ["Pre"] = <"all_version_ids.has (a_preceding_version_uid) or else version_count = 0"> > > ["commit_imported_version"] = < name = <"commit_imported_version"> documentation = <"Add a new imported version. Details of version id etc come from the `ORIGINAL_VERSION` being committed. "> result = (P_BMM_SIMPLE_TYPE) < type = <"void"> > parameters = < ["a_contribution"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_contribution"> type = <"OBJECT_REF"> > ["an_audit"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"an_audit"> type = <"AUDIT_DETAILS"> > ["a_version"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_version"> type = <"ORIGINAL_VERSION"> > > > ["commit_attestation"] = < name = <"commit_attestation"> documentation = <"Add a new attestation to a specified original version. Attestations can only be added to Original versions. "> result = (P_BMM_SIMPLE_TYPE) < type = <"void"> > parameters = < ["an_attestation"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"an_attestation"> type = <"ATTESTATION"> > ["a_ver_id"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_ver_id"> type = <"OBJECT_VERSION_ID"> > ["signing_key"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"signing_key"> type = <"String"> > > pre_conditions = < ["Pre"] = <"has_version_id(a_ver_id) and is_original_version(a_ver_id)"> > > > invariants = < ["Version_count_valid"] = <"version_count >= 0"> ["All_version_ids_valid"] = <"all_version_ids.count = version_count"> ["All_versions_valid"] = <"all_versions.count = version_count"> ["Latest_version_valid"] = <"version_count > 0 implies latest_version /= Void"> ["Uid_validity"] = <"extension.is_empty"> > > ["CONTRIBUTION"] = < name = <"CONTRIBUTION"> documentation = <"Documents a Contribution (change set) of one or more versions added to a change-controlled repository. "> properties = < ["uid"] = (P_BMM_SINGLE_PROPERTY) < name = <"uid"> documentation = <"Unique identifier for this Contribution. "> is_mandatory = type = <"HIER_OBJECT_ID"> > ["versions"] = (P_BMM_CONTAINER_PROPERTY) < name = <"versions"> documentation = <"Set of references to Versions causing changes to this EHR. Each contribution contains a list of versions, which may include paths pointing to any number of versionable items, i.e. items of types such as `COMPOSITION` and `FOLDER`. "> is_mandatory = type_def = < container_type = <"List"> type = <"OBJECT_REF"> > cardinality = <|>=1|> > ["audit"] = (P_BMM_SINGLE_PROPERTY) < name = <"audit"> documentation = <"Audit trail corresponding to the committal of this Contribution. "> is_mandatory = type = <"AUDIT_DETAILS"> > > > ["VERSION"] = < name = <"VERSION"> documentation = <"Abstract model of one Version within a Version container, containing data, commit audit trail, and the identifier of its Contribution."> is_abstract = generic_parameter_defs = < ["T"] = < name = <"T"> > > properties = < ["contribution"] = (P_BMM_SINGLE_PROPERTY) < name = <"contribution"> documentation = <"Contribution in which this version was added. "> is_mandatory = type = <"OBJECT_REF"> > ["signature"] = (P_BMM_SINGLE_PROPERTY) < name = <"signature"> documentation = <"OpenPGP digital signature or digest of content committed in this Version. "> type = <"String"> > ["commit_audit"] = (P_BMM_SINGLE_PROPERTY) < name = <"commit_audit"> documentation = <"Audit trail corresponding to the committal of this version to the `VERSIONED_OBJECT`."> is_mandatory = type = <"AUDIT_DETAILS"> > > functions = < ["uid"] = < name = <"uid"> documentation = <"Unique identifier of this `VERSION`, in the form of an `{object_id, a version_tree_id, creating_system_id}` triple, where the `_object_id_` has the same value as the containing `VERSIONED_OBJECT _uid_`."> is_abstract = result = (P_BMM_SIMPLE_TYPE) < type = <"OBJECT_VERSION_ID"> > > ["preceding_version_uid"] = < name = <"preceding_version_uid"> documentation = <"Unique identifier of the version of which this version is a modification; Void if this is the first version."> is_abstract = result = (P_BMM_SIMPLE_TYPE) < type = <"OBJECT_VERSION_ID"> > > ["data"] = < name = <"data"> documentation = <"The data of this Version."> is_abstract = result = (P_BMM_SIMPLE_TYPE) < type = <"T"> > > ["lifecycle_state"] = < name = <"lifecycle_state"> documentation = <"Lifecycle state of this version; coded by openEHR vocabulary 'version lifecycle state'. "> is_abstract = result = (P_BMM_SIMPLE_TYPE) < type = <"DV_CODED_TEXT"> > > ["canonical_form"] = < name = <"canonical_form"> documentation = <"A canonical serial form of this Version, created by serialising all attributes except signature, suitable for generating reliable hashes and signatures."> result = (P_BMM_SIMPLE_TYPE) < type = <"String"> > > ["owner_id"] = < name = <"owner_id"> documentation = <"Copy of the owning `VERSIONED_OBJECT._uid_` value; extracted from the local `_uid_` property's `_object_id_`."> result = (P_BMM_SIMPLE_TYPE) < type = <"HIER_OBJECT_ID"> > post_conditions = < ["Post"] = <"Result.value.is_equal (uid.object_id.value)"> > > ["is_branch"] = < name = <"is_branch"> documentation = <"True if this Version represents a branch. Derived from `_uid_` attribute. "> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > > > invariants = < ["Owner_id_valid"] = <"owner_id.value.is_equal (uid.object_id.value)"> ["Preceding_version_uid_validity"] = <"uid.version_tree_id.is_first xor preceding_version_uid /= Void"> ["Lifecycle_state_ valid"] = <"lifecycle_state /= Void and then terminology (Term_id_openehr).has_code_for_group_id (Group_id_version_lifecycle_state, lifecycle_state.defining_code)"> > > ["IMPORTED_VERSION"] = < name = <"IMPORTED_VERSION"> documentation = <"Versions whose content is an ORIGINAL_VERSION copied from another location; this class inherits commit_audit and contribution from VERSION, providing imported versions with their own audit trail and Contribution, distinct from those of the imported ORIGINAL_VERSION. "> ancestors = <"VERSION", ...> generic_parameter_defs = < ["T"] = < name = <"T"> > > properties = < ["item"] = (P_BMM_SINGLE_PROPERTY) < name = <"item"> documentation = <"The ORIGINAL_VERSION object that was imported. "> is_mandatory = type = <"ORIGINAL_VERSION"> > > functions = < ["uid"] = < name = <"uid"> documentation = <"Computed version of inheritance precursor, derived as `_item.uid_`. "> result = (P_BMM_SIMPLE_TYPE) < type = <"OBJECT_VERSION_ID"> > post_conditions = < ["Post"] = <"Result = item.uid"> > > ["preceding_version_uid"] = < name = <"preceding_version_uid"> documentation = <"Computed version of inheritance precursor, derived as `_item.preceding_version_uid_`. "> result = (P_BMM_SIMPLE_TYPE) < type = <"OBJECT_VERSION_ID"> > post_conditions = < ["Post"] = <"Result = item.preceding_version_uid"> > > ["lifecycle_state"] = < name = <"lifecycle_state"> documentation = <"Lifecycle state of the content item in wrapped `ORIGINAL_VERSION`, derived as `_item.lifecycle_state_`; coded by openEHR vocabulary 'version lifecycle state'. "> result = (P_BMM_SIMPLE_TYPE) < type = <"DV_CODED_TEXT"> > > ["data"] = < name = <"data"> documentation = <"Original content of this Version. "> result = (P_BMM_SIMPLE_TYPE) < type = <"T"> > > > > ["ORIGINAL_VERSION"] = < name = <"ORIGINAL_VERSION"> documentation = <"A Version containing locally created content and optional attestations. "> ancestors = <"VERSION", ...> generic_parameter_defs = < ["T"] = < name = <"T"> > > properties = < ["uid"] = (P_BMM_SINGLE_PROPERTY) < name = <"uid"> documentation = <"Stored version of inheritance precursor. "> is_mandatory = type = <"OBJECT_VERSION_ID"> > ["preceding_version_uid"] = (P_BMM_SINGLE_PROPERTY) < name = <"preceding_version_uid"> documentation = <"Stored version of inheritance precursor. "> type = <"OBJECT_VERSION_ID"> > ["other_input_version_uids"] = (P_BMM_CONTAINER_PROPERTY) < name = <"other_input_version_uids"> documentation = <"Identifiers of other versions whose content was merged into this version, if any. "> type_def = < container_type = <"List"> type = <"OBJECT_VERSION_ID"> > cardinality = <|>=0|> > ["lifecycle_state"] = (P_BMM_SINGLE_PROPERTY) < name = <"lifecycle_state"> documentation = <"Lifecycle state of the content item in this version; coded by openEHR vocabulary 'version lifecycle state'. "> is_mandatory = type = <"DV_CODED_TEXT"> > ["attestations"] = (P_BMM_CONTAINER_PROPERTY) < name = <"attestations"> documentation = <"Set of attestations relating to this version. "> type_def = < container_type = <"List"> type = <"ATTESTATION"> > cardinality = <|>=0|> > ["data"] = (P_BMM_SINGLE_PROPERTY) < name = <"data"> documentation = <"Data content of this Version."> type = <"T"> > > functions = < ["is_merged"] = < name = <"is_merged"> documentation = <"True if this Version was created from more than just the preceding (checked out) version."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > > > invariants = < ["Attestations_valid"] = <"attestations /= Void implies not attestations.is_empty"> ["Is_merged_validity"] = <"other_input_version_ids = Void xor is_merged"> ["Other_input_version_uids_valid"] = <"other_input_version_uids /= Void implies not other_input_version_uids.is_empty"> > > ["REVISION_HISTORY_ITEM"] = < name = <"REVISION_HISTORY_ITEM"> documentation = <"An entry in a revision history, corresponding to a version from a versioned container. Consists of AUDIT_DETAILS instances with revision identifier of the revision to which the AUDIT_DETAILS intance belongs. "> properties = < ["version_id"] = (P_BMM_SINGLE_PROPERTY) < name = <"version_id"> documentation = <"Version identifier for this revision. "> is_mandatory = type = <"OBJECT_VERSION_ID"> > ["audits"] = (P_BMM_CONTAINER_PROPERTY) < name = <"audits"> documentation = <"The audits for this revision; there will always be at least one commit audit (which may itself be an ATTESTATION), there may also be further attestations. "> is_mandatory = type_def = < container_type = <"List"> type = <"AUDIT_DETAILS"> > cardinality = <|>=1|> > > invariants = < ["Audit_valid"] = <"not audits.is_empty"> > > ["AUDIT_DETAILS"] = < name = <"AUDIT_DETAILS"> documentation = <"The set of attributes required to document the committal of an information item to a repository. "> properties = < ["system_id"] = (P_BMM_SINGLE_PROPERTY) < name = <"system_id"> documentation = <"Identifier of the logical EHR system where the change was committed. This is almost always owned by the organisation legally responsible for the EHR, and is distinct from any application, or any hosting infrastructure."> is_mandatory = type = <"String"> > ["time_committed"] = (P_BMM_SINGLE_PROPERTY) < name = <"time_committed"> documentation = <"Time of committal of the item. "> is_mandatory = type = <"DV_DATE_TIME"> > ["change_type"] = (P_BMM_SINGLE_PROPERTY) < name = <"change_type"> documentation = <"Type of change. Coded using the openEHR Terminology audit change type group."> is_mandatory = type = <"DV_CODED_TEXT"> > ["description"] = (P_BMM_SINGLE_PROPERTY) < name = <"description"> documentation = <"Reason for committal. This may be used to qualify the value in the `_change_type_` field. For example, if the change affects only the EHR directory, this field might be used to indicate 'Folder \"episode 2018-02-16\" added' or similar."> type = <"DV_TEXT"> > ["committer"] = (P_BMM_SINGLE_PROPERTY) < name = <"committer"> documentation = <"Identity and optional reference into identity management service, of user who committed the item. "> is_mandatory = type = <"PARTY_PROXY"> > > invariants = < ["System_id_valid"] = <"not system_id.is_empty"> ["Change_type_valid"] = <"terminology (Terminology_id_openehr).has_code_for_group_id (Group_id_audit_change_type, change_type.defining_code)"> > > ["ATTESTATION"] = < name = <"ATTESTATION"> documentation = <"Record an attestation of a party (the committer) to item(s) of record content. An attestation is an explicit signing by one healthcare agent of particular content for various particular purposes, including: * for authorisation of a controlled substance or procedure (e.g. sectioning of patient under mental health act); * witnessing of content by senior clinical professional; * indicating acknowledgement of content by intended recipient, e.g. GP who ordered a test result. "> ancestors = <"AUDIT_DETAILS", ...> properties = < ["attested_view"] = (P_BMM_SINGLE_PROPERTY) < name = <"attested_view"> documentation = <"Optional visual representation of content attested e.g. screen image. "> type = <"DV_MULTIMEDIA"> > ["proof"] = (P_BMM_SINGLE_PROPERTY) < name = <"proof"> documentation = <"Proof of attestation. "> type = <"String"> > ["items"] = (P_BMM_CONTAINER_PROPERTY) < name = <"items"> documentation = <"Items attested, expressed as fully qualified runtime paths to the items in question. Although not recommended, these may include fine-grained items which have been attested in some other system. Otherwise it is assumed to be for the entire VERSION with which it is associated. "> type_def = < container_type = <"List"> type = <"DV_EHR_URI"> > cardinality = <|>=0|> > ["reason"] = (P_BMM_SINGLE_PROPERTY) < name = <"reason"> documentation = <"Reason of this attestation. Optionally coded by the openEHR Terminology group attestation reason ; includes values like authorisation , witness etc. "> is_mandatory = type = <"DV_TEXT"> > ["is_pending"] = (P_BMM_SINGLE_PROPERTY) < name = <"is_pending"> documentation = <"True if this attestation is outstanding; False means it has been completed."> is_mandatory = type = <"Boolean"> > > invariants = < ["Items_valid"] = <"items /= Void implies not items.is_empty"> ["Reason_valid"] = <"(reason.generating_type.is_equal (“DV_CODED_TEXT”) implies terminology (Terminology_id_openehr).has_code_for_group_id (Group_id_attestation_reason, reason.defining_code))"> > > ["PARTICIPATION"] = < name = <"PARTICIPATION"> documentation = <"Model of a participation of a Party (any Actor or Role) in an activity. Used to represent any participation of a Party in some activity, which is not explicitly in the model, e.g. assisting nurse. Can be used to record past or future participations. Should not be used in place of more permanent relationships between demographic entities. "> properties = < ["function"] = (P_BMM_SINGLE_PROPERTY) < name = <"function"> documentation = <"The function of the Party in this participation (note that a given party might participate in more than one way in a particular activity). This attribute should be coded, but cannot be limited to the HL7v3:ParticipationFunction vocabulary, since it is too limited and hospital-oriented. "> is_mandatory = type = <"DV_TEXT"> > ["mode"] = (P_BMM_SINGLE_PROPERTY) < name = <"mode"> documentation = <"Optional field for recording the 'mode' of the performer / activity interaction, e.g. present, by telephone, by email etc. "> type = <"DV_CODED_TEXT"> > ["performer"] = (P_BMM_SINGLE_PROPERTY) < name = <"performer"> documentation = <"The id and possibly demographic system link of the party participating in the activity. "> is_mandatory = type = <"PARTY_PROXY"> > ["time"] = (P_BMM_GENERIC_PROPERTY) < name = <"time"> documentation = <"The time interval during which the participation took place, if it is used in an observational context (i.e. recording facts about the past); or the intended time interval of the participation when used in future contexts, such as EHR Instructions. "> type_def = < generic_parameters = <"DV_DATE_TIME", ...> root_type = <"DV_INTERVAL"> > > > invariants = < ["Function_valid"] = <"function.generating_type.is_equal (\"DV_CODED_TEXT\") implies terminology (Terminology_id_openehr).has_code_for_group_id (Group_id_participation_function, function.defining_code)"> ["Mode_valid"] = <"mode /= Void implies terminology (Terminology_id_openehr).has_code_for_group_id (Group_id_participation_mode, mode.defining_code)"> > > ["PARTY_PROXY"] = < name = <"PARTY_PROXY"> documentation = <"Abstract concept of a proxy description of a party, including an optional link to data for this party in a demographic or other identity management system. Sub- typed into `PARTY_IDENTIFIED` and `PARTY_SELF`. "> is_abstract = properties = < ["external_ref"] = (P_BMM_SINGLE_PROPERTY) < name = <"external_ref"> documentation = <"Optional reference to more detailed demographic or identification information for this party, in an external system. "> type = <"PARTY_REF"> > > > ["PARTY_IDENTIFIED"] = < name = <"PARTY_IDENTIFIED"> documentation = <"Proxy data for an identified party other than the subject of the record, minimally consisting of human-readable identifier(s), such as name, formal (and possibly computable) identifiers such as NHS number, and an optional link to external data. There must be at least one of name, identifier or external_ref present. Used to describe parties where only identifiers may be known, and there is no entry at all in the demographic system (or even no demographic system). Typically for health care providers, e.g. name and provider number of an institution. Should not be used to include patient identifying information. "> ancestors = <"PARTY_PROXY", ...> properties = < ["name"] = (P_BMM_SINGLE_PROPERTY) < name = <"name"> documentation = <"Optional human-readable name (in String form)."> type = <"String"> > ["identifiers"] = (P_BMM_CONTAINER_PROPERTY) < name = <"identifiers"> documentation = <"One or more formal identifiers (possibly computable). "> type_def = < container_type = <"List"> type = <"DV_IDENTIFIER"> > cardinality = <|>=0|> > > invariants = < ["Basic_validity"] = <"name /= Void or identifiers /= Void or external_ref /= Void"> ["Name_valid"] = <"name /= Void implies not name.is_empty"> ["Identifiers_valid"] = <"identifiers /= Void implies not identifiers.is_empty"> > > ["PARTY_SELF"] = < name = <"PARTY_SELF"> documentation = <"Party proxy representing the subject of the record. Used to indicate that the party is the owner of the record. May or may not have `_external_ref_` set. "> ancestors = <"PARTY_PROXY", ...> > ["PARTY_RELATED"] = < name = <"PARTY_RELATED"> documentation = <"Proxy type for identifying a party and its relationship to the subject of the record. Use where the relationship between the party and the subject of the record must be known. "> ancestors = <"PARTY_IDENTIFIED", ...> properties = < ["relationship"] = (P_BMM_SINGLE_PROPERTY) < name = <"relationship"> documentation = <"Relationship of subject of this ENTRY to the subject of the record. May be coded. If it is the patient, coded as self. "> is_mandatory = type = <"DV_CODED_TEXT"> > > invariants = < ["Relationship_valid"] = <"terminology (Terminology_id_openehr).has_code_for_group_id (Group_id_subject_relationship, relationship.defining_code)"> > > ["REVISION_HISTORY"] = < name = <"REVISION_HISTORY"> documentation = <"Purpose Defines the notion of a revision history of audit items, each associated with the version for which that audit was committed. The list is in most-recent-first order. "> properties = < ["items"] = (P_BMM_CONTAINER_PROPERTY) < name = <"items"> documentation = <"The items in this history in most-recent-last order. "> is_mandatory = type_def = < container_type = <"List"> type = <"REVISION_HISTORY_ITEM"> > cardinality = <|>=1|> > > functions = < ["most_recent_version"] = < name = <"most_recent_version"> documentation = <"The version id of the most recent item, as a String."> result = (P_BMM_SIMPLE_TYPE) < type = <"String"> > post_conditions = < ["Post"] = <"Result.is_equal (items.last.version_id.value)"> > > ["most_recent_version_time_committed"] = < name = <"most_recent_version_time_committed"> documentation = <"The commit date/time of the most recent item, as a String. "> result = (P_BMM_SIMPLE_TYPE) < type = <"String"> > post_conditions = < ["Post"] = <"Result.is_equal (items.last.audits.first. time_committed.value)"> > > > > ["VERSIONED_FOLDER"] = < name = <"VERSIONED_FOLDER"> documentation = <"A version-controlled hierarchy of `FOLDERs` giving the effect of a directory. "> ancestors = <"VERSIONED_OBJECT", ...> > ["FOLDER"] = < name = <"FOLDER"> documentation = <"The concept of a named folder."> ancestors = <"LOCATABLE", ...> properties = < ["items"] = (P_BMM_CONTAINER_PROPERTY) < name = <"items"> documentation = <"The list of references to other (usually) versioned objects logically in this folder. "> type_def = < container_type = <"List"> type = <"OBJECT_REF"> > cardinality = <|>=0|> > ["folders"] = (P_BMM_CONTAINER_PROPERTY) < name = <"folders"> documentation = <"Sub-folders of this FOLDER. "> type_def = < container_type = <"List"> type = <"FOLDER"> > cardinality = <|>=0|> > ["details"] = (P_BMM_SINGLE_PROPERTY) < name = <"details"> documentation = <"Archetypable extra meta-data for `FOLDER`."> type = <"ITEM_STRUCTURE"> > > > ["AUTHORED_RESOURCE"] = < name = <"AUTHORED_RESOURCE"> documentation = <"Abstract idea of an online resource created by a human author. "> is_abstract = properties = < ["original_language"] = (P_BMM_SINGLE_PROPERTY) < name = <"original_language"> documentation = <"Language in which this resource was initially authored. Although there is no language primacy of resources overall, the language of original authoring is required to ensure natural language translations can preserve quality. Language is relevant in both the description and ontology sections. "> is_mandatory = type = <"CODE_PHRASE"> > ["is_controlled"] = (P_BMM_SINGLE_PROPERTY) < name = <"is_controlled"> documentation = <"True if this resource is under any kind of change control (even file copying), in which case revision history is created. "> type = <"Boolean"> > ["translations"] = (P_BMM_GENERIC_PROPERTY) < name = <"translations"> documentation = <"List of details for each natural translation made of this resource, keyed by language. For each translation listed here, there must be corresponding sections in all language-dependent parts of the resource. The original_language does not appear in this list."> type_def = < generic_parameters = <"String", "TRANSLATION_DETAILS"> root_type = <"Hash"> > > ["description"] = (P_BMM_SINGLE_PROPERTY) < name = <"description"> documentation = <"Description and lifecycle information of the resource."> type = <"RESOURCE_DESCRIPTION"> > ["revision_history"] = (P_BMM_SINGLE_PROPERTY) < name = <"revision_history"> documentation = <"The revision history of the resource. Only required if is_controlled = True (avoids large revision histories for informal or private editing situations). "> type = <"REVISION_HISTORY"> > > functions = < ["current_revision"] = < name = <"current_revision"> documentation = <"Most recent revision in revision_history if is_controlled else (uncontrolled) . "> result = (P_BMM_SIMPLE_TYPE) < type = <"String"> > post_conditions = < ["Post"] = <"Result = revision_history.most_recent_version"> > > ["languages_available"] = < name = <"languages_available"> documentation = <"Total list of languages available in this resource, derived from original_language and translations. "> result = (P_BMM_CONTAINER_TYPE) < container_type = <"List"> type = <"String"> > > > invariants = < ["Original_language_valid"] = <"code_set (Code_set_id_languages).has_code (original_language.as_string)"> ["Languages_available_valid"] = <"languages_available.has (original_language)"> ["Revision_history_valid"] = <"is_controlled xor revision_history = Void"> ["Current_revision_valid"] = <"(current_revision /= Void and not is_controlled) implies current_revision.is_equal (“(uncontrolled)”)"> ["Translations_valid"] = <"translations /= Void implies (not translations.is_empty and not translations.has (orginal_language.code_string))"> ["Description_valid"] = <"translations /= Void implies (description.details.for_all (d | translations.has_key (d.language.code_string)))"> > > ["RESOURCE_DESCRIPTION"] = < name = <"RESOURCE_DESCRIPTION"> documentation = <"Defines the descriptive meta-data of a resource."> properties = < ["original_author"] = (P_BMM_GENERIC_PROPERTY) < name = <"original_author"> documentation = <"Original author of this resource, with all relevant details, including organisation."> is_mandatory = type_def = < generic_parameters = <"String", "String"> root_type = <"Hash"> > > ["other_contributors"] = (P_BMM_CONTAINER_PROPERTY) < name = <"other_contributors"> documentation = <"Other contributors to the resource, probably listed in name form. "> type_def = < container_type = <"List"> type = <"String"> > cardinality = <|>=0|> > ["lifecycle_state"] = (P_BMM_SINGLE_PROPERTY) < name = <"lifecycle_state"> documentation = <"Lifecycle state of the resource, typically including states such as: initial, submitted, experimental, awaiting_approval, approved, superseded, obsolete. "> is_mandatory = type = <"String"> > ["resource_package_uri"] = (P_BMM_SINGLE_PROPERTY) < name = <"resource_package_uri"> documentation = <"URI of package to which this resource belongs."> type = <"String"> > ["other_details"] = (P_BMM_GENERIC_PROPERTY) < name = <"other_details"> documentation = <"Additional non language-sensitive resource meta-data, as a list of name/value pairs. "> type_def = < generic_parameters = <"String", "String"> root_type = <"Hash"> > > ["parent_resource"] = (P_BMM_SINGLE_PROPERTY) < name = <"parent_resource"> documentation = <"Reference to owning resource. "> is_mandatory = type = <"AUTHORED_RESOURCE"> default = <"0..1"> > ["details"] = (P_BMM_GENERIC_PROPERTY) < name = <"details"> documentation = <"Details of all parts of resource description that are natural language-dependent, keyed by language code. "> is_mandatory = type_def = < generic_parameters = <"String", "RESOURCE_DESCRIPTION_ITEM"> root_type = <"Hash"> > > > invariants = < ["Original_author_valid"] = <"not original_author.is_empty"> ["Lifecycle_state_valid"] = <"not lifecycle_state.is_empty"> ["Details_valid"] = <"not details.is_empty"> ["Language_valid"] = <"parent_resource /= Void implies details.for_all (d | parent_resource.languages_available.has (d.language.code_string))"> ["Parent_resource_valid"] = <"parent_resource /= Void implies parent_resource.description = self"> > > ["TRANSLATION_DETAILS"] = < name = <"TRANSLATION_DETAILS"> documentation = <"Class providing details of a natural language translation. "> properties = < ["language"] = (P_BMM_SINGLE_PROPERTY) < name = <"language"> documentation = <"Language of the translation."> is_mandatory = type = <"CODE_PHRASE"> > ["author"] = (P_BMM_GENERIC_PROPERTY) < name = <"author"> documentation = <"Translator name and other demographic details."> is_mandatory = type_def = < generic_parameters = <"String", "String"> root_type = <"Hash"> > > ["accreditaton"] = (P_BMM_SINGLE_PROPERTY) < name = <"accreditaton"> documentation = <"Accreditation of translator, usually a national translator's registration or association membership id."> type = <"String"> > ["other_details"] = (P_BMM_GENERIC_PROPERTY) < name = <"other_details"> documentation = <"Any other meta-data."> type_def = < generic_parameters = <"String", "String"> root_type = <"Hash"> > > > invariants = < ["Language_valid"] = <"code_set (Code_set_id_languages).has_code (language)"> > > ["RESOURCE_DESCRIPTION_ITEM"] = < name = <"RESOURCE_DESCRIPTION_ITEM"> documentation = <"Language-specific detail of resource description. When a resource is translated for use in another language environment, each `RESOURCE_DESCRIPTION_ITEM` needs to be copied and translated into the new language."> properties = < ["language"] = (P_BMM_SINGLE_PROPERTY) < name = <"language"> documentation = <"The localised language in which the items in this description item are written. Coded from openEHR Code Set languages ."> is_mandatory = type = <"CODE_PHRASE"> > ["purpose"] = (P_BMM_SINGLE_PROPERTY) < name = <"purpose"> documentation = <"Purpose of the resource."> is_mandatory = type = <"String"> > ["keywords"] = (P_BMM_CONTAINER_PROPERTY) < name = <"keywords"> documentation = <"Keywords which characterise this resource, used e.g. for indexing and searching. "> type_def = < container_type = <"List"> type = <"String"> > cardinality = <|>=0|> > ["use"] = (P_BMM_SINGLE_PROPERTY) < name = <"use"> documentation = <"Description of the uses of the resource, i.e. contexts in which it could be used. "> type = <"String"> > ["misuse"] = (P_BMM_SINGLE_PROPERTY) < name = <"misuse"> documentation = <"Description of any misuses of the resource, i.e. contexts in which it should not be used."> type = <"String"> > ["copyright"] = (P_BMM_SINGLE_PROPERTY) < name = <"copyright"> documentation = <"Optional copyright statement for the resource as a knowledge resource. "> type = <"String"> > ["original_resource_uri"] = (P_BMM_GENERIC_PROPERTY) < name = <"original_resource_uri"> documentation = <"URIs of original clinical document(s) or description of which resource is a formalisation, in the language of this description item; keyed by meaning. "> type_def = < generic_parameters = <"String", "String"> root_type = <"Hash"> > > ["other_details"] = (P_BMM_GENERIC_PROPERTY) < name = <"other_details"> documentation = <"Additional language-sensitive resource metadata, as a list of name/value pairs. "> type_def = < generic_parameters = <"String", "String"> root_type = <"Hash"> > > > invariants = < ["Language_valid"] = <"code_set (Code_set_id_languages).has_code (language)"> ["Purpose_valid"] = <"not purpose.is_empty"> ["Use_valid"] = <"use /= Void implies not use.is_empty"> ["misuse_valid"] = <"misuse /= Void implies not misuse.is_empty"> ["copyright_valid"] = <"copyright /= Void implies not copyright.is_empty"> > > ["DATA_STRUCTURE"] = < name = <"DATA_STRUCTURE"> documentation = <"Abstract parent class of all data structure types. Includes the `_as_hierarchy_` function which can generate the equivalent CEN EN13606 single hierarchy for each subtype's physical representation. For example, the physical representation of an `ITEM_LIST` is `List`; its implementation of `_as_hierarchy_` will generate a `CLUSTER` containing the set of `ELEMENT` nodes from the list. "> ancestors = <"LOCATABLE", ...> is_abstract = functions = < ["as_hierarchy"] = < name = <"as_hierarchy"> documentation = <"Hierarchical equivalent of the physical representation of each subtype, compatible with CEN EN 13606 structures. "> result = (P_BMM_SIMPLE_TYPE) < type = <"ITEM"> > > > > ["ITEM_STRUCTURE"] = < name = <"ITEM_STRUCTURE"> documentation = <"Abstract parent class of all spatial data types. "> ancestors = <"DATA_STRUCTURE", ...> is_abstract = > ["ITEM_TREE"] = < name = <"ITEM_TREE"> documentation = <"Logical tree data structure. The tree may be empty. Used for representing data which are logically a tree such as audiology results, microbiology results, biochemistry results."> ancestors = <"ITEM_STRUCTURE", ...> properties = < ["items"] = (P_BMM_CONTAINER_PROPERTY) < name = <"items"> documentation = <"The items comprising the `ITEM_TREE`. Can include 0 or more `CLUSTERs` and/or 0 or more individual `ELEMENTs`."> type_def = < container_type = <"List"> type = <"ITEM"> > cardinality = <|>=0|> > > functions = < ["has_element_path"] = < name = <"has_element_path"> documentation = <"True if path a_path' is a valid leaf path. "> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["a_path"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_path"> type = <"String"> > > > ["element_at_path"] = < name = <"element_at_path"> documentation = <"Return the leaf element at the path a_path'."> result = (P_BMM_SIMPLE_TYPE) < type = <"ELEMENT"> > parameters = < ["a_path"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_path"> type = <"String"> > > > ["as_hierarchy"] = < name = <"as_hierarchy"> documentation = <"Generate a CEN EN13606-compatible hierarchy, which is the same as the tree's physical representation."> result = (P_BMM_SIMPLE_TYPE) < type = <"CLUSTER"> > > > > ["ITEM_SINGLE"] = < name = <"ITEM_SINGLE"> documentation = <"Logical single value data structure. Used to represent any data which is logically a single value, such as a person's height or weight."> ancestors = <"ITEM_STRUCTURE", ...> properties = < ["item"] = (P_BMM_SINGLE_PROPERTY) < name = <"item"> is_mandatory = type = <"ELEMENT"> > > functions = < ["as_hierarchy"] = < name = <"as_hierarchy"> documentation = <"Generate a CEN EN13606-compatible hierarchy consisting of a single `ELEMENT`."> result = (P_BMM_SIMPLE_TYPE) < type = <"ELEMENT"> > > > > ["ITEM_TABLE"] = < name = <"ITEM_TABLE"> documentation = <"Logical relational database style table data structure, in which columns are named and ordered with respect to each other. Implemented using Cluster-per-row encoding. Each row Cluster must have an identical number of Elements, each of which in turn must have identical names and value types in the corresponding positions in each row. Some columns may be designated key' columns, containing key data for each row, in the manner of relational tables. This allows row-naming, where each row represents a body site, a blood antigen etc. All values in a column have the same data type. Used for representing any data which is logically a table of values, such as blood pressure, most protocols, many blood tests etc. Misuse: Not to be used for time-based data, which should be represented with the temporal class `HISTORY`. The table may be empty. "> ancestors = <"ITEM_STRUCTURE", ...> properties = < ["rows"] = (P_BMM_CONTAINER_PROPERTY) < name = <"rows"> documentation = <"Physical representation of the table as a list of `CLUSTERs`, each containing the data of one row of the table. "> type_def = < container_type = <"List"> type = <"CLUSTER"> > cardinality = <|>=0|> > > functions = < ["row_count"] = < name = <"row_count"> documentation = <"Number of rows in the table."> result = (P_BMM_SIMPLE_TYPE) < type = <"Integer"> > > ["column_count"] = < name = <"column_count"> documentation = <"Return number of columns in the table."> result = (P_BMM_SIMPLE_TYPE) < type = <"Integer"> > > ["row_names"] = < name = <"row_names"> documentation = <"Return set of row names."> result = (P_BMM_CONTAINER_TYPE) < container_type = <"List"> type = <"DV_TEXT"> > is_nullable = > ["column_names"] = < name = <"column_names"> documentation = <"Return set of column names."> result = (P_BMM_CONTAINER_TYPE) < container_type = <"List"> type = <"DV_TEXT"> > is_nullable = > ["ith_row"] = < name = <"ith_row"> documentation = <"Return i-th row."> result = (P_BMM_SIMPLE_TYPE) < type = <"CLUSTER"> > parameters = < ["i"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"i"> type = <"Integer"> > > > ["has_row_with_name"] = < name = <"has_row_with_name"> documentation = <"Return `True` if there is a column with name = `_a_key_`."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["a_key"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_key"> type = <"String"> > > > ["has_column_with_name"] = < name = <"has_column_with_name"> documentation = <"Return `True` if there is a column with name = `_a_key_`."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["a_key"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_key"> type = <"String"> > > > ["named_row"] = < name = <"named_row"> documentation = <"Return row with name = `_a_key_`."> result = (P_BMM_SIMPLE_TYPE) < type = <"CLUSTER"> > parameters = < ["a_key"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_key"> type = <"String"> > > > ["has_row_with_key"] = < name = <"has_row_with_key"> documentation = <"Return `True` if there is a row with key `_keys_`."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["keys"] = (P_BMM_CONTAINER_FUNCTION_PARAMETER) < name = <"keys"> type_def = < container_type = <"List"> type = <"String"> > cardinality = <|>=0|> is_nullable = > > > ["row_with_key"] = < name = <"row_with_key"> documentation = <"Return rows with particular keys."> result = (P_BMM_SIMPLE_TYPE) < type = <"CLUSTER"> > parameters = < ["keys"] = (P_BMM_CONTAINER_FUNCTION_PARAMETER) < name = <"keys"> type_def = < container_type = <"List"> type = <"String"> > cardinality = <|>=0|> is_nullable = > > > ["element_at_cell_ij"] = < name = <"element_at_cell_ij"> documentation = <"Return cell at a particular location."> result = (P_BMM_SIMPLE_TYPE) < type = <"ELEMENT"> > parameters = < ["i"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"i"> type = <"Any"> > ["j"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"j"> type = <"Integer"> > > > ["as_hierarchy"] = < name = <"as_hierarchy"> documentation = <"Generate a CEN EN13606-compatible hierarchy consisting of a single `CLUSTER` containing the `CLUSTERs` representing the columns of this table. "> result = (P_BMM_SIMPLE_TYPE) < type = <"CLUSTER"> > > > invariants = < ["Valid_structure"] = <"rows.for_all (items.for_all (instance_of (\"ELEMENT\")))"> > > ["ITEM_LIST"] = < name = <"ITEM_LIST"> documentation = <"Logical list data structure, where each item has a value and can be referred to by a name and a positional index in the list. The list may be empty. Use Used to represent any data which is logically a list of values, such as blood pressure, most protocols, many blood tests etc. Misuse: Not to be used for time-based lists, which should be represented with the proper temporal class, i.e. `HISTORY`."> ancestors = <"ITEM_STRUCTURE", ...> properties = < ["items"] = (P_BMM_CONTAINER_PROPERTY) < name = <"items"> documentation = <"Physical representation of the list. "> type_def = < container_type = <"List"> type = <"ELEMENT"> > cardinality = <|>=0|> > > functions = < ["item_count"] = < name = <"item_count"> documentation = <"Count of all items."> result = (P_BMM_SIMPLE_TYPE) < type = <"Integer"> > > ["names"] = < name = <"names"> documentation = <"Retrieve the names of all items."> result = (P_BMM_CONTAINER_TYPE) < container_type = <"List"> type = <"DV_TEXT"> > is_nullable = > ["named_item"] = < name = <"named_item"> documentation = <"Retrieve the item with name ‘a_name’."> result = (P_BMM_SIMPLE_TYPE) < type = <"ELEMENT"> > parameters = < ["a_name"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_name"> type = <"String"> > > > ["ith_item"] = < name = <"ith_item"> documentation = <"Retrieve the i-th item with name."> result = (P_BMM_SIMPLE_TYPE) < type = <"ELEMENT"> > parameters = < ["i"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"i"> type = <"Integer"> > > > ["as_hierarchy"] = < name = <"as_hierarchy"> documentation = <"Generate a CEN EN13606-compatible hierarchy consisting of a single `CLUSTER` containing the `ELEMENTs` of this list."> result = (P_BMM_SIMPLE_TYPE) < type = <"CLUSTER"> > > > invariants = < ["Valid_structure"] = <" items.forall (i:ITEM | i.type = \"ELEMENT\")"> > > ["EVENT"] = < name = <"EVENT"> documentation = <"Defines the abstract notion of a single event in a series. This class is generic, allowing types to be generated which are locked to particular spatial types, such as `EVENT`. Subtypes express point or intveral data. "> ancestors = <"LOCATABLE", ...> is_abstract = generic_parameter_defs = < ["T"] = < name = <"T"> conforms_to_type = <"ITEM_STRUCTURE"> > > properties = < ["time"] = (P_BMM_SINGLE_PROPERTY) < name = <"time"> documentation = <"Time of this event. If the width is non-zero, it is the time point of the trailing edge of the event. "> is_mandatory = type = <"DV_DATE_TIME"> > ["state"] = (P_BMM_SINGLE_PROPERTY) < name = <"state"> documentation = <"Optional state data for this event."> type = <"ITEM_STRUCTURE"> > ["data"] = (P_BMM_SINGLE_PROPERTY_OPEN) < name = <"data"> documentation = <"The data of this event."> is_mandatory = type = <"T"> > > functions = < ["offset"] = < name = <"offset"> documentation = <"Offset of this event from origin, computed as time.diff(parent.origin)."> result = (P_BMM_SIMPLE_TYPE) < type = <"DV_DURATION"> > post_conditions = < ["Post_condition"] = <"Result = time.diff(parent.origin)"> > > > invariants = < ["Offset_validity1"] = <"offset /= Void and then offset = time.diff (parent.origin)"> > > ["POINT_EVENT"] = < name = <"POINT_EVENT"> documentation = <"Defines a single point event in a series."> ancestors = <"EVENT", ...> generic_parameter_defs = < ["T"] = < name = <"T"> > > > ["INTERVAL_EVENT"] = < name = <"INTERVAL_EVENT"> documentation = <"Defines a single interval event in a series. "> ancestors = <"EVENT", ...> generic_parameter_defs = < ["T"] = < name = <"T"> > > properties = < ["width"] = (P_BMM_SINGLE_PROPERTY) < name = <"width"> documentation = <"Duration of the time interval during which the values recorded under `data` are true and, if set, the values recorded under `state` are true. Void if an instantaneous event."> is_mandatory = type = <"DV_DURATION"> > ["sample_count"] = (P_BMM_SINGLE_PROPERTY) < name = <"sample_count"> documentation = <"Optional count of original samples to which this event corresponds."> type = <"Integer"> > ["math_function"] = (P_BMM_SINGLE_PROPERTY) < name = <"math_function"> documentation = <"Mathematical function of the data of this event, e.g. maximum, mean etc. Coded using https://github.com/openEHR/terminology/blob/master/openEHR_RM/en/openehr_terminology.xml[openEHR vocabulary `event math function`]. Default value `640|actual|`, meaning 'actual value'."> is_mandatory = type = <"DV_CODED_TEXT"> > > functions = < ["interval_start_time"] = < name = <"interval_start_time"> documentation = <"Start time of the interval of this event."> result = (P_BMM_SIMPLE_TYPE) < type = <"DV_DATE_TIME"> > > > invariants = < ["Math_function_validity"] = <"terminology (Terminology_id_openehr).has_code_for_group_id (Group_id_event_math_function, math_function.defining_code)"> ["Interval_start_time_valid"] = <"interval_start_time = time - width"> > > ["HISTORY"] = < name = <"HISTORY"> documentation = <"Root object of a linear history, i.e. time series structure. This is a generic class whose type parameter must be a descendant of `ITEM_STRUCTURE`, ensuring that each Event in the `_events_` of a given instance is of the same structural type, i.e. `ITEM_TREE`, `ITEM_LIST` etc. For a periodic series of events, period will be set, and the time of each Event in the History must correspond; i.e. the `EVENT._offset_` must be a multiple of period for each Event. Missing events in a period History are however allowed. "> ancestors = <"DATA_STRUCTURE", ...> generic_parameter_defs = < ["T"] = < name = <"T"> conforms_to_type = <"ITEM_STRUCTURE"> > > properties = < ["origin"] = (P_BMM_SINGLE_PROPERTY) < name = <"origin"> documentation = <"Time origin of this event history. The first event is not necessarily at the origin point. "> is_mandatory = type = <"DV_DATE_TIME"> > ["period"] = (P_BMM_SINGLE_PROPERTY) < name = <"period"> documentation = <"Period between samples in this segment if periodic."> type = <"DV_DURATION"> > ["duration"] = (P_BMM_SINGLE_PROPERTY) < name = <"duration"> documentation = <"Duration of the entire History; either corresponds to the duration of all the events, and/or the duration represented by the summary, if it exists. "> type = <"DV_DURATION"> > ["summary"] = (P_BMM_SINGLE_PROPERTY) < name = <"summary"> documentation = <"Optional summary data that aggregates, organizes, reduces and transforms the event series. This may be a text or image that presents a graphical presentation, or some data that assists with the interpretation of the data."> type = <"ITEM_STRUCTURE"> > ["events"] = (P_BMM_CONTAINER_PROPERTY) < name = <"events"> documentation = <"The events in the series. This attribute is of a generic type whose parameter must be a descendant of `ITEM_SUTRUCTURE`."> type_def = < container_type = <"List"> type_def = (P_BMM_GENERIC_TYPE) < generic_parameters = <"T", ...> root_type = <"EVENT"> > > cardinality = <|>=0|> > > functions = < ["is_periodic"] = < name = <"is_periodic"> documentation = <"Indicates whether history is periodic. "> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > > > invariants = < ["Events_valid"] = <"(events /= Void and then not events.is_empty) or summary /= Void"> ["Periodic_validity"] = <"is_periodic xor period = Void"> ["Period_consistency"] = <"is_periodic implies events.for_all (e: EVENT | e.offset. to_seconds.mod(period.to_seconds) = 0)"> > > ["ITEM"] = < name = <"ITEM"> documentation = <"The abstract parent of `CLUSTER` and `ELEMENT` representation classes. "> ancestors = <"LOCATABLE", ...> is_abstract = > ["CLUSTER"] = < name = <"CLUSTER"> documentation = <"The grouping variant of `ITEM`, which may contain further instances of `ITEM`, in an ordered list. "> ancestors = <"ITEM", ...> properties = < ["items"] = (P_BMM_CONTAINER_PROPERTY) < name = <"items"> documentation = <"Ordered list of items - `CLUSTER` or `ELEMENT` objects - under this `CLUSTER`. "> is_mandatory = type_def = < container_type = <"List"> type = <"ITEM"> > cardinality = <|>=1|> > > > ["ELEMENT"] = < name = <"ELEMENT"> documentation = <"The leaf variant of `ITEM`, to which a `DATA_VALUE` instance is attached. "> ancestors = <"ITEM", ...> properties = < ["null_flavour"] = (P_BMM_SINGLE_PROPERTY) < name = <"null_flavour"> documentation = <"Flavour of null value, e.g. indeterminate, not asked etc."> type = <"DV_CODED_TEXT"> > ["value"] = (P_BMM_SINGLE_PROPERTY) < name = <"value"> documentation = <"Property representing leaf value object of `ELEMENT`. In real data, any concrete subtype of `DATA_VALUE` can be used."> type = <"DATA_VALUE"> > > functions = < ["is_null"] = < name = <"is_null"> documentation = <"True if value logically not known, e.g. if indeterminate, not asked etc. "> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > > > invariants = < ["Is_null_valid"] = <"is_null = (value = Void)"> ["Null_flavour_indicated"] = <"is_null xor null_flavour = Void"> ["Null_flavour_valid"] = <"is_null implies terminology (Terminology_id_openehr).has_code_for_group_id (Group_id_null_flavour, null_flavour.defining_code)"> > > ["DATA_VALUE"] = < name = <"DATA_VALUE"> documentation = <"Abstract parent of all `DV_` data value types."> ancestors = <"OPENEHR_DEFINITIONS", ...> is_abstract = > ["DV_BOOLEAN"] = < name = <"DV_BOOLEAN"> documentation = <"Items which are truly boolean data, such as true/false or yes/no answers. For such data, it is important to devise the meanings (usually questions in subjective data) carefully, so that the only allowed results are in fact true or false. Misuse: The DV_BOOLEAN class should not be used as a replacement for naively modelled enumerated types such as male/female etc. Such values should be coded, and in any case the enumeration often has more than two values. "> ancestors = <"DATA_VALUE", ...> properties = < ["value"] = (P_BMM_SINGLE_PROPERTY) < name = <"value"> documentation = <"Boolean value of this item. Actual values may be language or implementation dependent."> is_mandatory = type = <"Boolean"> > > > ["DV_STATE"] = < name = <"DV_STATE"> documentation = <"For representing state values which obey a defined state machine, such as a variable representing the states of an instruction or care process. DV_STATE is expressed as a String but its values are driven by archetype-defined state machines. This provides a powerful way of capturing stateful complex processes in simple data. "> ancestors = <"DATA_VALUE", ...> properties = < ["value"] = (P_BMM_SINGLE_PROPERTY) < name = <"value"> documentation = <"The state name. State names are determined by a state/event table defined in archetypes, and coded using openEHR Terminology or local archetype terms, as specified by the archetype. "> is_mandatory = type = <"DV_CODED_TEXT"> > ["is_terminal"] = (P_BMM_SINGLE_PROPERTY) < name = <"is_terminal"> documentation = <"Indicates whether this state is a terminal state, such as \"aborted\", \"completed\" etc. from which no further transitions are possible."> is_mandatory = type = <"Boolean"> > > > ["DV_IDENTIFIER"] = < name = <"DV_IDENTIFIER"> documentation = <"Type for representing identifiers of real-world entities. Typical identifiers include drivers licence number, social security number, veterans affairs number, prescription id, order id, and so on. DV_IDENTIFIER is used to represent any identifier of a real thing, issued by some authority or agency. Misuse: DV_IDENTIFIER is not used to express identifiers generated by the infrastructure to refer to information items; the types OBJECT_ID and OBJECT_REF and subtypes are defined for this purpose."> ancestors = <"DATA_VALUE", ...> properties = < ["issuer"] = (P_BMM_SINGLE_PROPERTY) < name = <"issuer"> documentation = <"Optional authority which issues the kind of id used in the id field of this object. "> type = <"String"> > ["assigner"] = (P_BMM_SINGLE_PROPERTY) < name = <"assigner"> documentation = <"Optional organisation that assigned the id to the item being identified."> type = <"String"> > ["id"] = (P_BMM_SINGLE_PROPERTY) < name = <"id"> documentation = <"The identifier value. Often structured, according to the definition of the issuing authority's rules. "> is_mandatory = type = <"String"> > ["type"] = (P_BMM_SINGLE_PROPERTY) < name = <"type"> documentation = <"Optional identifier type, such as prescription , or Social Security Number . One day a controlled vocabulary might be possible for this."> type = <"String"> > > invariants = < ["Id_valid"] = <"not id.is_empty"> > > ["DV_ENCAPSULATED"] = < name = <"DV_ENCAPSULATED"> documentation = <"Abstract class defining the common meta-data of all types of encapsulated data."> ancestors = <"DATA_VALUE", ...> is_abstract = properties = < ["charset"] = (P_BMM_SINGLE_PROPERTY) < name = <"charset"> documentation = <"Name of character encoding scheme in which this value is encoded. Coded from openEHR Code Set character sets . Unicode is the default assumption in openEHR, with UTF-8 being the assumed encoding. This attribute allows for variations from these assumptions. "> type = <"CODE_PHRASE"> > ["language"] = (P_BMM_SINGLE_PROPERTY) < name = <"language"> documentation = <"Optional indicator of the localised language in which the data is written, if relevant. Coded from openEHR Code Set `languages`."> type = <"CODE_PHRASE"> > > invariants = < ["Language_valid"] = <"language /= Void implies code_set (Code_set_id_languages).has_code (language)"> ["Charset_valid"] = <"charset /= Void implies code_set (Code_set_id_character_sets).has_code (charset)"> > > ["DV_MULTIMEDIA"] = < name = <"DV_MULTIMEDIA"> documentation = <"A specialisation of `DV_ENCAPSULATED` for audiovisual and bio-signal types. Includes further metadata relating to multimedia types which are not applicable to other subtypes of `DV_ENCAPSULATED`."> ancestors = <"DV_ENCAPSULATED", ...> properties = < ["alternate_text"] = (P_BMM_SINGLE_PROPERTY) < name = <"alternate_text"> documentation = <"Text to display in lieu of multimedia display/replay."> type = <"String"> > ["uri"] = (P_BMM_SINGLE_PROPERTY) < name = <"uri"> documentation = <"URI reference to electronic information stored outside the record as a file, database entry etc, if supplied as a reference. "> type = <"DV_URI"> > ["data"] = (P_BMM_CONTAINER_PROPERTY) < name = <"data"> documentation = <"The actual data found at `_uri_`, if supplied inline."> type_def = < container_type = <"Array"> type = <"Octet"> > cardinality = <|>=0|> > ["media_type"] = (P_BMM_SINGLE_PROPERTY) < name = <"media_type"> documentation = <"Data media type coded from openEHR code set media types (interface for the IANA MIME types code set). "> is_mandatory = type = <"CODE_PHRASE"> > ["compression_algorithm"] = (P_BMM_SINGLE_PROPERTY) < name = <"compression_algorithm"> documentation = <"Compression type, a coded value from the openEHR Integrity check code set. Void means no compression. "> type = <"CODE_PHRASE"> > ["integrity_check"] = (P_BMM_CONTAINER_PROPERTY) < name = <"integrity_check"> documentation = <"Binary cryptographic integrity checksum."> type_def = < container_type = <"Array"> type = <"Octet"> > cardinality = <|>=0|> > ["integrity_check_algorithm"] = (P_BMM_SINGLE_PROPERTY) < name = <"integrity_check_algorithm"> documentation = <"Type of integrity check, a coded value from the openEHR `Integrity check` code set. "> type = <"CODE_PHRASE"> > ["thumbnail"] = (P_BMM_SINGLE_PROPERTY) < name = <"thumbnail"> documentation = <"The thumbnail for this item, if one exists; mainly for graphics formats."> type = <"DV_MULTIMEDIA"> > ["size"] = (P_BMM_SINGLE_PROPERTY) < name = <"size"> documentation = <"Original size in bytes of unencoded encapsulated data. I.e. encodings such as base64, hexadecimal etc do not change the value of this attribute."> is_mandatory = type = <"Integer"> > > functions = < ["is_external"] = < name = <"is_external"> documentation = <"Computed from the value of the `_uri_` attribute: True if the data is stored externally to the record, as indicated by `_uri_`. A copy may also be stored internally, in which case `_is_expanded_` is also true."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > > ["is_inline"] = < name = <"is_inline"> documentation = <"Computed from the value of the data attribute. True if the data is stored in expanded form, ie within the EHR itself. "> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > > ["is_compressed"] = < name = <"is_compressed"> documentation = <"Computed from the value of the `_compression_algorithm_` attribute: True if the data is stored in compressed form. "> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > > ["has_integrity_check"] = < name = <"has_integrity_check"> documentation = <"Computed from the value of the `_integrity_check_algorithm_` attribute: True if an integrity check has been computed. "> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > > > invariants = < ["Not_empty"] = <"is_inline or is_external"> ["Media_type_valid"] = <"media_type /= Void and then code_set (Code_set_id_media_types).has_code (media_type)"> ["Compression_algorithm_validity"] = <"compression_algorithm /= Void implies code_set (Code_set_id_compression_algorithms).has_code (compression_algorithm)"> ["Integrity_check_validity"] = <"integrity_check /= Void implies integrity_check_algorithm /= Void"> ["Integrity_check_algorithm_validity"] = <"integrity_check_algorithm /= Void implies code_set (Code_set_id_integrity_check_algorithms).has_code (integrity_check_algorithm)"> ["Size_valid"] = <"size >= 0"> > > ["DV_PARSABLE"] = < name = <"DV_PARSABLE"> documentation = <"Encapsulated data expressed as a parsable String. The internal model of the data item is not described in the openEHR model in common with other encapsulated types, but in this case, the form of the data is assumed to be plaintext, rather than compressed or other types of large binary data. "> ancestors = <"DV_ENCAPSULATED", ...> properties = < ["value"] = (P_BMM_SINGLE_PROPERTY) < name = <"value"> documentation = <"The string, which may validly be empty in some syntaxes."> is_mandatory = type = <"String"> > ["formalism"] = (P_BMM_SINGLE_PROPERTY) < name = <"formalism"> documentation = <"Name of the formalism, e.g. GLIF 1.0 , Proforma etc."> is_mandatory = type = <"String"> > > functions = < ["size"] = < name = <"size"> documentation = <"Size in bytes of value."> result = (P_BMM_SIMPLE_TYPE) < type = <"Integer"> > > > invariants = < ["Formalism_valid"] = <"not formalism.is_empty"> ["Size_valid"] = <"size >= 0"> > > ["DV_PARAGRAPH"] = < name = <"DV_PARAGRAPH"> documentation = <"DEPRECATED: use markdown formatted `DV_TEXT` instead. Original definition: A logical composite text value consisting of a series of `DV_TEXTs`, i.e. plain text (optionally coded) potentially with simple formatting, to form a larger tract of prose, which may be interpreted for display purposes as a paragraph. `DV_PARAGRAPH` is the standard way for constructing longer text items in summaries, reports and so on. "> ancestors = <"DATA_VALUE", ...> properties = < ["items"] = (P_BMM_CONTAINER_PROPERTY) < name = <"items"> documentation = <"Items making up the paragraph, each of which is a text item (which may have its own formatting, and/or have hyperlinks). "> is_mandatory = type_def = < container_type = <"List"> type = <"DV_TEXT"> > cardinality = <|>=1|> > > invariants = < ["Items_valid"] = <"not items.is_empty"> > > ["DV_TEXT"] = < name = <"DV_TEXT"> documentation = <"A text item, which may contain any amount of legal characters arranged as e.g. words, sentences etc (i.e. one `DV_TEXT` may be more than one word). Visual formatting and hyperlinks may be included via markdown. If the `_formatting_` field is set, the `_value_` field is affected as follows: * `_formatting_ = \"plain\"`: plain text, may contain newlines; * `_formatting_ = \"plain_no_newlines\"`: plain text with no newlines; * `_formatting_ = \"markdown\"`: text in markdown format; use of CommonMark strongly recommended. A `DV_TEXT` can be coded by adding mappings to it."> ancestors = <"DATA_VALUE", ...> properties = < ["value"] = (P_BMM_SINGLE_PROPERTY) < name = <"value"> documentation = <"Displayable rendition of the item, regardless of its underlying structure. For `DV_CODED_TEXT`, this is the rubric of the complete term as provided by the terminology service. "> is_mandatory = type = <"String"> > ["hyperlink"] = (P_BMM_SINGLE_PROPERTY) < name = <"hyperlink"> documentation = <"DEPRECATED: this field is deprecated; use markdown link/text in the `_value_` attribute, and `\"markdown\"` as the value of the `_formatting_` field. Original usage, prior to RM Release 1.0.4: Optional link sitting behind a section of plain text or coded term item."> type = <"DV_URI"> > ["formatting"] = (P_BMM_SINGLE_PROPERTY) < name = <"formatting"> documentation = <"If set, contains one of the following values: * `\"plain\"`: use for plain text, possibly containing newlines, but otherwise unformatted (same as Void); * `\"plain_no_newlines\"`: use for text containing no newlines or other formatting; * `\"markdown\"`: use for markdown formatted text, strongly recommended in the format of the CommonMark specification. DEPRECATED usage: contains a string of the form `\"name:value; name:value...\"` , e.g. `\"font-weight : bold; font-family : Arial; font-size : 12pt;\"`. Values taken from W3C CSS2 properties lists for background and font . "> type = <"String"> > ["mappings"] = (P_BMM_CONTAINER_PROPERTY) < name = <"mappings"> documentation = <"Terms from other terminologies most closely matching this term, typically used where the originator (e.g. pathology lab) of information uses a local terminology but also supplies one or more equivalents from well known terminologies (e.g. LOINC). "> type_def = < container_type = <"List"> type = <"TERM_MAPPING"> > cardinality = <|>=0|> > ["language"] = (P_BMM_SINGLE_PROPERTY) < name = <"language"> documentation = <"Optional indicator of the localised language in which the value is written. Coded from openEHR Code Set languages . Only used when either the text object is in a different language from the enclosing `ENTRY`, or else the text object is being used outside of an `ENTRY` or other enclosing structure which indicates the language. "> type = <"CODE_PHRASE"> > ["encoding"] = (P_BMM_SINGLE_PROPERTY) < name = <"encoding"> documentation = <"Name of character encoding scheme in which this value is encoded. Coded from openEHR Code Set character sets . Unicode is the default assumption in openEHR, with UTF-8 being the assumed encoding. This attribute allows for variations from these assumptions. "> type = <"CODE_PHRASE"> > > invariants = < ["Valid_value"] = <"not value.is_empty"> ["Language_valid"] = <"language /= Void implies code_set (Code_set_id_languages).has_code (language)"> ["Encoding_valid"] = <"encoding /= Void implies code_set (Code_set_id_character_sets).has_code (encoding)"> ["Mappings_valid"] = <"mappings /= void implies not mappings.is_empty"> ["Formatting_valid"] = <"formatting /= void implies not formatting.is_empty"> > > ["DV_CODED_TEXT"] = < name = <"DV_CODED_TEXT"> documentation = <"A text item whose value must be the rubric from a controlled terminology, the key (i.e. the 'code') of which is the `_defining_code_` attribute. In other words: a `DV_CODED_TEXT` is a combination of a `CODE_PHRASE` (effectively a code) and the rubric of that term, from a terminology service, in the language in which the data were authored. Since `DV_CODED_TEXT` is a subtype of `DV_TEXT`, it can be used in place of it, effectively allowing the type `DV_TEXT` to mean a text item, which may optionally be coded. Misuse: If the intention is to represent a term code attached in some way to a fragment of plain text, `DV_CODED_TEXT` should not be used; instead use a `DV_TEXT` and a `TERM_MAPPING` to a `CODE_PHRASE`. "> ancestors = <"DV_TEXT", ...> properties = < ["defining_code"] = (P_BMM_SINGLE_PROPERTY) < name = <"defining_code"> documentation = <"The term of which the `_value_` attribute is the textual rendition (i.e. rubric). "> is_mandatory = type = <"CODE_PHRASE"> > > > ["TERM_MAPPING"] = < name = <"TERM_MAPPING"> documentation = <"Represents a coded term mapped to a `DV_TEXT`, and the relative match of the target term with respect to the mapped item. Plain or coded text items may appear in the EHR for which one or mappings in alternative terminologies are required. Mappings are only used to enable computer processing, so they can only be instances of `DV_CODED_TEXT`. Used for adding classification terms (e.g. adding ICD classifiers to SNOMED descriptive terms), or mapping into equivalents in other terminologies (e.g. across nursing vocabularies). "> properties = < ["match"] = (P_BMM_SINGLE_PROPERTY) < name = <"match"> documentation = <"The relative match of the target term with respect to the mapped text item. Result meanings: * `'>'`: the mapping is to a broader term e.g. orginal text = arbovirus infection , target = viral infection * `'='`: the mapping is to a (supposedly) equivalent to the original item * `'<'`: the mapping is to a narrower term. e.g. original text = diabetes , mapping = diabetes mellitus . * `'?'`: the kind of mapping is unknown. The first three values are taken from the ISO standards 2788 ( Guide to Establishment and development of monolingual thesauri) and 5964 (Guide to Establishment and development of multilingual thesauri). "> is_mandatory = type = <"Character"> > ["purpose"] = (P_BMM_SINGLE_PROPERTY) < name = <"purpose"> documentation = <"Purpose of the mapping e.g. 'automated data mining', 'billing', 'interoperability'."> type = <"DV_CODED_TEXT"> > ["target"] = (P_BMM_SINGLE_PROPERTY) < name = <"target"> documentation = <"The target term of the mapping. "> is_mandatory = type = <"CODE_PHRASE"> > > functions = < ["narrower"] = < name = <"narrower"> documentation = <"The mapping is to a narrower term."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > post_conditions = < ["Post"] = <"match = ‘<’ implies Result"> > > ["broader"] = < name = <"broader"> documentation = <"The mapping is to a broader term."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > post_conditions = < ["Post"] = <"match = ‘>’ implies Result"> > > ["equivalent"] = < name = <"equivalent"> documentation = <"The mapping is to an equivalent term."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > > ["unknown"] = < name = <"unknown"> documentation = <"The kind of mapping is unknown."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > post_conditions = < ["Post"] = <"match = ‘?’ implies Result"> > > ["is_valid_match_code"] = < name = <"is_valid_match_code"> documentation = <"True if match valid."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["c"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"c"> type = <"Character"> > > post_conditions = < ["Post"] = <"Result := c = ‘>’ or c = ‘=’ or c = ‘<’ or c = ‘?’"> > > > invariants = < ["Purpose_valid"] = <"purpose /= Void implies terminology (Terminology_id_openehr).has_code_for_group_id (Group_id_term_mapping_purpose, purpose.defining_code)"> ["Match_valid"] = <"is_valid_match_code (match)"> > > ["CODE_PHRASE"] = < name = <"CODE_PHRASE"> documentation = <"A fully coordinated (i.e. all coordination has been performed) term from a terminology service (as distinct from a particular terminology). "> properties = < ["terminology_id"] = (P_BMM_SINGLE_PROPERTY) < name = <"terminology_id"> documentation = <"Identifier of the distinct terminology from which the code_string (or its elements) was extracted."> is_mandatory = type = <"TERMINOLOGY_ID"> > ["code_string"] = (P_BMM_SINGLE_PROPERTY) < name = <"code_string"> documentation = <"The key used by the terminology service to identify a concept or coordination of concepts. This string is most likely parsable inside the terminology service, but nothing can be assumed about its syntax outside that context. "> is_mandatory = type = <"String"> > > invariants = < ["Code_string_valid"] = <"not code_string.is_empty"> > > ["DV_ORDERED"] = < name = <"DV_ORDERED"> documentation = <"Abstract class defining the concept of ordered values, which includes ordinals as well as true quantities. It defines the functions `<` and is_strictly_comparable_to, the latter of which must evaluate to `True` for instances being compared with the `<` function, or used as limits in the `DV_INTERVAL` class. Data value types which are to be used as limits in the `DV_INTERVAL` class must inherit from this class, and implement the function `_is_strictly_comparable_to_` to ensure that instances compare meaningfully. For example, instances of `DV_QUANTITY` can only be compared if they measure the same kind of physical quantity. "> ancestors = <"DATA_VALUE", "Ordered"> is_abstract = properties = < ["normal_status"] = (P_BMM_SINGLE_PROPERTY) < name = <"normal_status"> documentation = <"Optional normal status indicator of value with respect to normal range for this value. Often included by lab, even if the normal range itself is not included. Coded by ordinals in series HHH, HH, H, (nothing), L, LL, LLL; see openEHR terminology group `normal_status`. "> type = <"CODE_PHRASE"> > ["normal_range"] = (P_BMM_SINGLE_PROPERTY) < name = <"normal_range"> documentation = <"Optional normal range. "> type = <"DV_INTERVAL"> > ["other_reference_ranges"] = (P_BMM_CONTAINER_PROPERTY) < name = <"other_reference_ranges"> documentation = <"Optional tagged other reference ranges for this value in its particular measurement context."> type_def = < container_type = <"List"> type_def = (P_BMM_GENERIC_TYPE) < generic_parameters = <"DV_ORDERED", ...> root_type = <"REFERENCE_RANGE"> > > cardinality = <|>=0|> > > functions = < ["is_strictly_comparable_to"] = < name = <"is_strictly_comparable_to"> documentation = <"Test if two instances are strictly comparable."> is_abstract = result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["other"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"other"> type = <"DV_ORDERED"> > > > ["is_simple"] = < name = <"is_simple"> documentation = <"True if this quantity has no reference ranges."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > > ["is_normal"] = < name = <"is_normal"> documentation = <"Value is in the normal range, determined by comparison of the value to the normal_range if present, or by the normal_status marker if present. "> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > pre_conditions = < ["Pre"] = <"normal_range /= Void or normal_status /= Void"> > post_conditions = < ["Post_range"] = <"normal_range /= Void implies Result = normal_range.has (self)"> ["Post_status"] = <"normal_status /= Void implies normal_status.code_string.is_equal (“N”)"> > > ["infix <"] = < name = <"infix <"> is_abstract = result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["other"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"other"> type = <"Ordered"> > > > > invariants = < ["Other_reference_ranges_validity"] = <"other_reference_ranges /= Void implies not other_reference_ranges.is_empty"> ["Is_simple_validity"] = <"(normal_range = Void and other_reference_ranges = Void) implies is_simple"> ["Normal_status_validity"] = <"normal_status /= Void implies code_set (Code_set_id_normal_statuses).has_code (normal_status)"> ["Normal_range_and_status_consistency"] = <"(normal_range /= Void and normal_status /= Void) implies (normal_status.code_string.is_equal (“N”) xor not normal_range.has (self))"> > > ["DV_INTERVAL"] = < name = <"DV_INTERVAL"> documentation = <"Generic class defining an interval (i.e. range) of a comparable type. An interval is a contiguous subrange of a comparable base type. Used to define intervals of dates, times, quantities (whose units match) and so on. The type parameter, `T`, must be a descendant of the type `DV_ORDERED`, which is necessary (but not sufficient) for instances to be compared (`_strictly_comparable_` is also needed). Without the `DV_INTERVAL` class, quite a few more `DV_` classes would be needed to express logical intervals, namely interval versions of all the date/time classes, and of quantity classes. Further, it allows the semantics of intervals to be stated in one place unequivocally, including the conditions for strict comparison. The basic semantics are derived from the class `Interval`, described in the support RM. "> ancestors = <"DATA_VALUE", "Interval"> generic_parameter_defs = < ["T"] = < name = <"T"> conforms_to_type = <"DV_ORDERED"> > > invariants = < ["Limits_consistent"] = <"(not upper_unbounded and not lower_unbounded) implies (lower.is_strictly_comparable_to(upper) and lower <= upper)"> > > ["REFERENCE_RANGE"] = < name = <"REFERENCE_RANGE"> documentation = <"Defines a named range to be associated with any `DV_ORDERED` datum. Each such range is particular to the patient and context, e.g. sex, age, and any other factor which affects ranges. May be used to represent normal, therapeutic, dangerous, critical etc ranges."> generic_parameter_defs = < ["T"] = < name = <"T"> conforms_to_type = <"DV_ORDERED"> > > properties = < ["meaning"] = (P_BMM_SINGLE_PROPERTY) < name = <"meaning"> documentation = <"Term whose value indicates the meaning of this range, e.g. normal, critical, therapeutic etc."> is_mandatory = type = <"DV_TEXT"> > ["range"] = (P_BMM_SINGLE_PROPERTY) < name = <"range"> documentation = <"The data range for this meaning, e.g. critical etc."> is_mandatory = type = <"DV_INTERVAL"> > > functions = < ["is_in_range"] = < name = <"is_in_range"> documentation = <"Indicates if the value val' is inside the range. "> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["v"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"v"> type = <"DV_ORDERED"> > > > > invariants = < ["Range_is_simple"] = <"(range.lower_unbounded or else range.lower.is_simple) and (range.upper_unbounded or else range.upper.is_simple)"> > > ["DV_QUANTIFIED"] = < name = <"DV_QUANTIFIED"> documentation = <"Abstract class defining the concept of true quantified values, i.e. values which are not only ordered, but which have a precise magnitude."> ancestors = <"DV_ORDERED", ...> is_abstract = properties = < ["magnitude_status"] = (P_BMM_SINGLE_PROPERTY) < name = <"magnitude_status"> documentation = <"Optional status of magnitude with values: * `\"=\"` : magnitude is a point value * `\"<\"` : value is < magnitude * `\">\"` : value is > magnitude * `\"<=\"` : value is <= magnitude * `\">=\"` : value is >= magnitude * `\"~\"` : value is approximately magnitude If not present, assumed meaning is `\"=\"` . "> type = <"String"> > ["accuracy"] = (P_BMM_SINGLE_PROPERTY) < name = <"accuracy"> documentation = <"Accuracy of measurement. Exact form of expression determined in descendants."> type = <"Any"> > > functions = < ["valid_magnitude_status"] = < name = <"valid_magnitude_status"> documentation = <"Test whether a string value is one of the valid values for the magnitude_status attribute. "> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > post_conditions = < ["Post"] = <"Result = s.is_equal (“=”) or s.is_equal (“<”) or s.is_equal (“>”) or s.is_equal (“<=”) or s.is_equal (“>=”) or s.is_equal (“~”)"> > > ["magnitude"] = < name = <"magnitude"> is_abstract = result = (P_BMM_SIMPLE_TYPE) < type = <"Ordered_Numeric"> > > ["accuracy_unknown"] = < name = <"accuracy_unknown"> documentation = <"True if accuracy is not known, e.g. due to not being recorded or discernable."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > > > invariants = < ["Magnitude_status_valid"] = <"magnitude_status /= Void implies valid_magnitude_status (magnitude_status)"> > > ["DV_PROPORTION"] = < name = <"DV_PROPORTION"> documentation = <"Models a ratio of values, i.e. where the numerator and denominator are both pure numbers. The `_valid_proportion_kind_` property of the `PROPORTION_KIND` class is used to control the type attribute to be one of a defined set. Used for recording titers (e.g. 1:128), concentration ratios, e.g. Na:K (unitary denominator), albumin:creatinine ratio, and percentages, e.g. red cell distirbution width (RDW). Misuse: Should not be used to represent things like blood pressure which are often written using a '/' character, giving the misleading impression that the item is a ratio, when in fact it is a structured value. Similarly, visual acuity, often written as (e.g.) \"6/24\" in clinical notes is not a ratio but an ordinal (which includes non-numeric symbols like CF = count fingers etc). Should not be used for formulations. "> ancestors = <"PROPORTION_KIND", "DV_AMOUNT"> properties = < ["numerator"] = (P_BMM_SINGLE_PROPERTY) < name = <"numerator"> documentation = <"Numerator of ratio"> is_mandatory = type = <"Real"> > ["denominator"] = (P_BMM_SINGLE_PROPERTY) < name = <"denominator"> documentation = <"Denominator of ratio."> is_mandatory = type = <"Real"> > ["type"] = (P_BMM_SINGLE_PROPERTY) < name = <"type"> documentation = <"Indicates semantic type of proportion, including percent, unitary etc."> is_mandatory = type = <"Integer"> > ["precision"] = (P_BMM_SINGLE_PROPERTY) < name = <"precision"> documentation = <"Precision to which the numerator and denominator values of the proportion are expressed, in terms of number of decimal places. The value 0 implies an integral quantity. The value -1 implies no limit, i.e. any number of decimal places. "> type = <"Integer"> > ["normal_range"] = (P_BMM_GENERIC_PROPERTY) < name = <"normal_range"> documentation = <"Optional normal range. "> type_def = < generic_parameters = <"DV_PROPORTION", ...> root_type = <"DV_INTERVAL"> > > ["other_reference_ranges"] = (P_BMM_CONTAINER_PROPERTY) < name = <"other_reference_ranges"> documentation = <"Optional tagged other reference ranges for this value in its particular measurement context."> type_def = < container_type = <"List"> type_def = (P_BMM_GENERIC_TYPE) < generic_parameters = <"DV_PROPORTION", ...> root_type = <"REFERENCE_RANGE"> > > cardinality = <|>=0|> > > functions = < ["magnitude"] = < name = <"magnitude"> documentation = <"Effective magnitude represented by ratio."> result = (P_BMM_SIMPLE_TYPE) < type = <"Real"> > > ["is_integral"] = < name = <"is_integral"> documentation = <"True if the numerator and denominator values are integers, i.e. if the precision is 0."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > > ["infix ="] = < name = <"infix ="> documentation = <"Assignment operator"> result = (P_BMM_SIMPLE_TYPE) < type = <"DV_PROPORTION"> > parameters = < ["source"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"source"> type = <"DV_PROPORTION"> > > > > invariants = < ["Type_validity"] = <"valid_proportion_kind (type)"> ["Precision_validity"] = <"precision = 0 implies is_integral"> ["Is_integral_validity"] = <"is_integral implies (numerator.floor = numerator and denominator.floor = denominator)"> ["Fraction_validity"] = <"(type = pk_fraction or type = pk_integer_fraction) implies is_integral"> ["Unitary_validity"] = <"type = pk_unitary implies denominator = 1"> ["Percent_validity"] = <"type = pk_percent implies denominator = 100"> ["Valid_denominator"] = <"denominator /= 0.0"> > > ["PROPORTION_KIND"] = (P_BMM_ENUMERATION_INTEGER) < name = <"PROPORTION_KIND"> documentation = <"Class of enumeration constants defining types of proportion for the `DV_PROPORTION` class. "> ancestors = <"Integer", ...> item_names = <"pk_ratio", "pk_unitary", "pk_percent", "pk_fraction", "pk_integer_fraction"> item_values = <0, 1, 2, 3, 4> item_documentations = <"Ratio type. Numerator and denominator may be any value. ", "Denominator must be 1.", "Denominator is 100, numerator is understood as a percentage value.", "Numerator and denominator are integral, and the presentation method uses a slash, e.g. 1/2 . ", "Numerator and denominator are integral, and the presentation method uses a slash, e.g. 1/2 ; if the numerator is greater than the denominator, e.g. n=3, d=2, the presentation is 1 1/2 ."> functions = < ["valid_proportion_kind"] = < name = <"valid_proportion_kind"> documentation = <"True if n is one of the defined types. "> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["nq"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"nq"> type = <"Integer"> > > > > > ["DV_AMOUNT"] = < name = <"DV_AMOUNT"> documentation = <"Abstract class defining the concept of relative quantified 'amounts'. For relative quantities, the `+` and `-` operators are defined (unlike descendants of `DV_ABSOLUTE_QUANTITY`, such as the date/time types). "> ancestors = <"DV_QUANTIFIED", ...> is_abstract = properties = < ["accuracy_is_percent"] = (P_BMM_SINGLE_PROPERTY) < name = <"accuracy_is_percent"> documentation = <"If `True`, indicates that when this object was created, accuracy was recorded as a percent value; if `False`, as an absolute quantity value."> type = <"Boolean"> > ["accuracy"] = (P_BMM_SINGLE_PROPERTY) < name = <"accuracy"> documentation = <"Accuracy of measurement, expressed either as a half-range percent value (`_accuracy_is_percent_` = `True`) or a half-range quantity. A value of `0` means that accuracy is 100%, i.e. no error. A value of `_unknown_accuracy_value_` means that accuracy was not recorded."> type = <"Real"> > > functions = < ["valid_percentage"] = < name = <"valid_percentage"> documentation = <"Test whether a number is a valid percentage, i.e. between 0 and 100. "> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["number"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"number"> type = <"Ordered_Numeric"> > > > ["infix ="] = < name = <"infix ="> result = (P_BMM_SIMPLE_TYPE) < type = <"DV_AMOUNT"> > parameters = < ["source"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"source"> type = <"DV_AMOUNT"> > > > ["infix +"] = < name = <"infix +"> documentation = <"Sum of this quantity and another whose formal type must be the difference type of this quantity. The value of accuracy in the result is either: * the sum of the accuracies of the operands, if both present, or; * both operand accuracies are unknown_accuracy_value. If the accuracy value is a percentage in one operand and not in the other, the form in the result is that of the larger operand."> result = (P_BMM_SIMPLE_TYPE) < type = <"DV_AMOUNT"> > parameters = < ["other"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"other"> type = <"DV_AMOUNT"> > > > ["infix -"] = < name = <"infix -"> documentation = <"Negated version of current object, such as used for representing a difference, e.g. a weight loss. The value of accuracy in the result is either: * the sum of the accuracies of the operands, if both present, or; * unknown, if either or both operand accuracies are unknown. If the accuracy value is a percentage in one operand and not in the other, the form in the result is that of the larger operand."> result = (P_BMM_SIMPLE_TYPE) < type = <"DV_AMOUNT"> > parameters = < ["other"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"other"> type = <"DV_AMOUNT"> > > > ["prefix -"] = < name = <"prefix -"> documentation = <"Negated version of current object, such as used for representing a difference, e.g. a weight loss."> result = (P_BMM_SIMPLE_TYPE) < type = <"DV_AMOUNT"> > > > invariants = < ["Accuracy_is_percent_validity"] = <"accuracy = 0 implies not accuracy_is_percent"> ["Accuracy_validity"] = <"accuracy_is_percent implies valid_percentage (accuracy)"> > > ["DV_QUANTITY"] = < name = <"DV_QUANTITY"> documentation = <"Quantitified type representing scientific quantities, i.e. quantities expressed as a magnitude and units. Units were inspired by the http://unitsofmeasure.org/ucum.html[Unified Code for Units of Measure (UCUM)], developed by Gunther Schadow and Clement J. McDonald of The Regenstrief Institute. Can also be used for time durations, where it is more convenient to treat these as simply a number of seconds rather than days, months, years. "> ancestors = <"DV_AMOUNT", ...> properties = < ["magnitude"] = (P_BMM_SINGLE_PROPERTY) < name = <"magnitude"> documentation = <"Numeric magnitude of the quantity."> is_mandatory = type = <"Real"> > ["precision"] = (P_BMM_SINGLE_PROPERTY) < name = <"precision"> documentation = <"Precision to which the value of the quantity is expressed, in terms of number of decimal places. The value 0 implies an integral quantity. The value -1 implies no limit, i.e. any number of decimal places."> type = <"Integer"> > ["units"] = (P_BMM_SINGLE_PROPERTY) < name = <"units"> documentation = <"Stringified units, expressed in UCUM unit syntax, e.g. \"kg/m2\", “mm[Hg]\", \"ms-1\", \"km/h\". Implemented accordingly in subtypes."> is_mandatory = type = <"String"> > ["normal_range"] = (P_BMM_GENERIC_PROPERTY) < name = <"normal_range"> documentation = <"Optional normal range. "> type_def = < generic_parameters = <"DV_QUANTITY", ...> root_type = <"DV_INTERVAL"> > > ["other_reference_ranges"] = (P_BMM_CONTAINER_PROPERTY) < name = <"other_reference_ranges"> documentation = <"Optional tagged other reference ranges for this value in its particular measurement context."> type_def = < container_type = <"List"> type_def = (P_BMM_GENERIC_TYPE) < generic_parameters = <"DV_QUANTITY", ...> root_type = <"REFERENCE_RANGE"> > > cardinality = <|>=0|> > > functions = < ["is_integral"] = < name = <"is_integral"> documentation = <"True if precision = 0, meaning that the magnitude is a whole number."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > > > > ["DV_COUNT"] = < name = <"DV_COUNT"> documentation = <"Countable quantities. Used for countable types such as pregnancies and steps (taken by a physiotherapy patient), number of cigarettes smoked in a day. Misuse: Not to be used for amounts of physical entities (which all have units)."> ancestors = <"DV_AMOUNT", ...> properties = < ["magnitude"] = (P_BMM_SINGLE_PROPERTY) < name = <"magnitude"> is_mandatory = type = <"Integer64"> > ["normal_range"] = (P_BMM_GENERIC_PROPERTY) < name = <"normal_range"> documentation = <"Optional normal range. "> type_def = < generic_parameters = <"DV_COUNT", ...> root_type = <"DV_INTERVAL"> > > ["other_reference_ranges"] = (P_BMM_CONTAINER_PROPERTY) < name = <"other_reference_ranges"> documentation = <"Optional tagged other reference ranges for this value in its particular measurement context."> type_def = < container_type = <"List"> type_def = (P_BMM_GENERIC_TYPE) < generic_parameters = <"DV_COUNT", ...> root_type = <"REFERENCE_RANGE"> > > cardinality = <|>=0|> > > > ["DV_ABSOLUTE_QUANTITY"] = < name = <"DV_ABSOLUTE_QUANTITY"> documentation = <"Abstract class defining the concept of quantified entities whose values are absolute with respect to an origin. Dates and Times are the main example."> ancestors = <"DV_QUANTIFIED", ...> is_abstract = properties = < ["accuracy"] = (P_BMM_SINGLE_PROPERTY) < name = <"accuracy"> type = <"DV_AMOUNT"> > > functions = < ["diff"] = < name = <"diff"> documentation = <"Difference of two quantities. The value of accuracy in the result is either: * the sum of the accuracies of the operands, if both present, or; * unknown, if either or both operand accuracies are unknown."> is_abstract = result = (P_BMM_SIMPLE_TYPE) < type = <"DV_AMOUNT"> > parameters = < ["other"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"other"> type = <"DV_ABSOLUTE_QUANTITY"> > > > ["add"] = < name = <"add"> documentation = <"Addition of a differential amount to this quantity. The value of accuracy in the result is either: * the sum of the accuracies of the operands, if both present, or; * unknown, if either or both operand accuracies are unknown."> is_abstract = result = (P_BMM_SIMPLE_TYPE) < type = <"DV_ABSOLUTE_QUANTITY"> > parameters = < ["a_diff"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_diff"> type = <"DV_AMOUNT"> > > > ["subtract"] = < name = <"subtract"> documentation = <"Result of subtracting a differential amount from this quantity. The value of accuracy in the result is either: * the sum of the accuracies of the operands, if both present, or; * unknown, if either or both operand accuracies are unknown."> is_abstract = result = (P_BMM_SIMPLE_TYPE) < type = <"DV_ABSOLUTE_QUANTITY"> > parameters = < ["a_diif"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_diif"> type = <"DV_AMOUNT"> > > > > > ["DV_ORDINAL"] = < name = <"DV_ORDINAL"> documentation = <"Models rankings and scores, e.g. pain, Apgar values, etc, where there is a) implied ordering, b) no implication that the distance between each value is constant, and c) the total number of values is finite. Note that although the term ordinal' in mathematics means natural numbers only, here any integer is allowed, since negative and zero values are often used by medical professionals for values around a neutral point. Examples of sets of ordinal values: * -3, -2, -1, 0, 1, 2, 3 -- reflex response values * 0, 1, 2 -- Apgar values This class is used for recording any clinical datum which is customarily recorded using symbolic values. Example: the results on a urinalysis strip, e.g. `{neg, trace, +, ++, +++}` are used for leucocytes, protein, nitrites etc; for non-haemolysed blood `{neg, trace, moderate}`; for haemolysed blood `{small, moderate, large}`. "> ancestors = <"DV_ORDERED", ...> properties = < ["symbol"] = (P_BMM_SINGLE_PROPERTY) < name = <"symbol"> documentation = <"Coded textual representation of this value in the enumeration, which may be strings made from + symbols, or other enumerations of terms such as mild , moderate , severe , or even the same number series as the values, e.g. 1 , 2 , 3 . Codes come from archetype. "> is_mandatory = type = <"DV_CODED_TEXT"> > ["value"] = (P_BMM_SINGLE_PROPERTY) < name = <"value"> documentation = <"Value in ordered enumeration of values. Any integer value can be used. "> is_mandatory = type = <"Integer"> > > functions = < ["limits"] = < name = <"limits"> documentation = <" Limits of the ordinal enumeration, to allow comparison of an ordinal value to its limits. "> result = (P_BMM_SIMPLE_TYPE) < type = <"DV_ORDINAL"> > > ["is_strictly_comparable_to"] = < name = <"is_strictly_comparable_to"> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["other"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"other"> type = <"DV_ORDERED"> > > post_conditions = < ["Post"] = <"symbol.is_comparable (other.symbol) implies Result"> > > ["<"] = < name = <"<"> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["other"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"other"> type = <"Ordered"> > > post_conditions = < ["Post"] = <"Result = value < other.value"> > > > > ["DV_DURATION"] = < name = <"DV_DURATION"> documentation = <"Represents a period of time with respect to a notional point in time, which is not specified. A sign may be used to indicate the duration is backwards in time rather than forwards. NOTE: a deviation from ISO8601 is supported, allowing the W' designator to be mixed with other designators. See assumed types section in the Support IM. Used for recording the duration of something in the real world, particularly when there is a need a) to represent the duration in customary format, i.e. days, hours, minutes etc, and b) if it will be used in computational operations with date/time quantities, i.e. additions, subtractions etc. Misuse: Durations cannot be used to represent points in time, or intervals of time. "> ancestors = <"DV_AMOUNT", "Iso8601_duration"> properties = < ["value"] = (P_BMM_SINGLE_PROPERTY) < name = <"value"> documentation = <"ISO8601 duration string."> is_mandatory = type = <"String"> > > functions = < ["is_strictly_comparable_to"] = < name = <"is_strictly_comparable_to"> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["other"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"other"> type = <"DV_ORDERED"> > > > > invariants = < ["Value_valid"] = <"valid_iso8601_duration (value)"> > > ["DV_TEMPORAL"] = < name = <"DV_TEMPORAL"> documentation = <"Specialised temporal variant of `DV_ABSOLUTE_QUANTITY` whose diff type is `DV_DURATION`. "> ancestors = <"DV_ABSOLUTE_QUANTITY", ...> is_abstract = properties = < ["accuracy"] = (P_BMM_SINGLE_PROPERTY) < name = <"accuracy"> documentation = <"Time accuracy, expressed as a duration."> type = <"DV_DURATION"> > > functions = < ["diff"] = < name = <"diff"> documentation = <"Difference of two quantities."> result = (P_BMM_SIMPLE_TYPE) < type = <"DV_DURATION"> > parameters = < ["other"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"other"> type = <"DV_TEMPORAL"> > > > > > ["DV_DATE"] = < name = <"DV_DATE"> documentation = <"Represents an absolute point in time, as measured on the Gregorian calendar, and specified only to the day. Semantics defined by ISO 8601. Used for recording dates in real world time. The partial form is used for approximate birth dates, dates of death, etc. "> ancestors = <"DV_TEMPORAL", "Iso8601_date"> properties = < ["value"] = (P_BMM_SINGLE_PROPERTY) < name = <"value"> documentation = <"ISO8601 date string."> is_mandatory = type = <"String"> > > functions = < ["magnitude"] = < name = <"magnitude"> documentation = <"Numeric value of the date as days since the calendar origin date `0001-01-01`."> result = (P_BMM_SIMPLE_TYPE) < type = <"Integer"> > > ["is_strictly_comparable_to"] = < name = <"is_strictly_comparable_to"> documentation = <"Test if two instances are strictly comparable."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["other"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"other"> type = <"DV_ORDERED"> > > > ["infix <"] = < name = <"infix <"> documentation = <"Tests if this date is earlier than the cited date."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["other_quantity"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"other_quantity"> type = <"DV_ORDERED"> > > > ["add"] = < name = <"add"> documentation = <"Add a time period to this date."> result = (P_BMM_SIMPLE_TYPE) < type = <"DV_ABSOLUTE_QUANTITY"> > parameters = < ["a_diff"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_diff"> type = <"DV_AMOUNT"> > > > ["subtract"] = < name = <"subtract"> documentation = <"Subtract a time period from this date."> result = (P_BMM_SIMPLE_TYPE) < type = <"DV_ABSOLUTE_QUANTITY"> > parameters = < ["a_diif"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_diif"> type = <"DV_AMOUNT"> > > > ["diff"] = < name = <"diff"> documentation = <"Difference of two quantities."> result = (P_BMM_SIMPLE_TYPE) < type = <"DV_DURATION"> > parameters = < ["other"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"other"> type = <"DV_DATE"> > > > > invariants = < ["Value_valid"] = <"valid_iso8601_date(value)"> > > ["DV_TIME"] = < name = <"DV_TIME"> documentation = <"Represents an absolute point in time from an origin usually interpreted as meaning the start of the current day, specified to a fraction of a second. Semantics defined by ISO 8601. Used for recording real world times, rather than scientifically measured fine amounts of time. The partial form is used for approximate times of events and substance administrations. "> ancestors = <"DV_TEMPORAL", "Iso8601_time"> properties = < ["value"] = (P_BMM_SINGLE_PROPERTY) < name = <"value"> documentation = <"ISO8601 time string"> is_mandatory = type = <"String"> > > functions = < ["magnitude"] = < name = <"magnitude"> documentation = <"Numeric value of the time as seconds since the start of day, i.e. `00:00:00`. "> result = (P_BMM_SIMPLE_TYPE) < type = <"Real"> > > ["is_strictly_comparable_to"] = < name = <"is_strictly_comparable_to"> documentation = <"Test if two instances are strictly comparable."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["other"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"other"> type = <"DV_ORDERED"> > > > ["add"] = < name = <"add"> documentation = <"Add a time period to this time."> result = (P_BMM_SIMPLE_TYPE) < type = <"DV_ABSOLUTE_QUANTITY"> > parameters = < ["a_diff"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_diff"> type = <"DV_AMOUNT"> > > > ["subtract"] = < name = <"subtract"> documentation = <"Subtract a duration from this time."> result = (P_BMM_SIMPLE_TYPE) < type = <"DV_ABSOLUTE_QUANTITY"> > parameters = < ["a_diif"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_diif"> type = <"DV_AMOUNT"> > > > ["operator="] = < name = <"operator="> result = (P_BMM_SIMPLE_TYPE) < type = <"DV_TIME"> > parameters = < ["source"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"source"> type = <"DV_TIME"> > > > ["diff"] = < name = <"diff"> documentation = <"Difference of two quantities."> result = (P_BMM_SIMPLE_TYPE) < type = <"DV_DURATION"> > parameters = < ["other"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"other"> type = <"DV_TIME"> > > > > invariants = < ["Value_valid"] = <"valid_iso8601_time (value)"> > > ["DV_DATE_TIME"] = < name = <"DV_DATE_TIME"> documentation = <"Represents an absolute point in time, specified to the second. Semantics defined by ISO 8601. Used for recording a precise point in real world time, and for approximate time stamps, e.g. the origin of a `HISTORY` in an `OBSERVATION` which is only partially known. "> ancestors = <"DV_TEMPORAL", "Iso8601_date_time"> properties = < ["value"] = (P_BMM_SINGLE_PROPERTY) < name = <"value"> documentation = <"ISO8601 date/time string."> is_mandatory = type = <"String"> > > functions = < ["magnitude"] = < name = <"magnitude"> documentation = <"Numeric value of the date/time as seconds since the calendar origin date/time `0001-01-01T00:00:00Z`. "> result = (P_BMM_SIMPLE_TYPE) < type = <"Double"> > > ["is_strictly_comparable_to"] = < name = <"is_strictly_comparable_to"> documentation = <"Test if two instances are strictly comparable."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["other"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"other"> type = <"DV_ORDERED"> > > > ["add"] = < name = <"add"> documentation = <"Add a time period to this date_time."> result = (P_BMM_SIMPLE_TYPE) < type = <"DV_ABSOLUTE_QUANTITY"> > parameters = < ["a_diff"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_diff"> type = <"DV_AMOUNT"> > > > ["subtract"] = < name = <"subtract"> documentation = <"Subtract a time period from this date_time."> result = (P_BMM_SIMPLE_TYPE) < type = <"DV_ABSOLUTE_QUANTITY"> > parameters = < ["a_diif"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_diif"> type = <"DV_AMOUNT"> > > > ["diff"] = < name = <"diff"> documentation = <"Difference of two quantities."> result = (P_BMM_SIMPLE_TYPE) < type = <"DV_AMOUNT"> > parameters = < ["other"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"other"> type = <"DV_ABSOLUTE_QUANTITY"> > > > ["operator="] = < name = <"operator="> result = (P_BMM_SIMPLE_TYPE) < type = <"DV_DATE_TIME"> > parameters = < ["source"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"source"> type = <"DV_DATE_TIME"> > > > ["as_string"] = < name = <"as_string"> result = (P_BMM_SIMPLE_TYPE) < type = <"String"> > > > invariants = < ["Value_valid"] = <"valid_iso8601_date_time (value)"> > > ["DV_TIME_SPECIFICATION"] = < name = <"DV_TIME_SPECIFICATION"> documentation = <"This is an abstract class of which all timing specifications are specialisations. Specifies points in time, possibly linked to the calendar, or a real world repeating event, such as breakfast. "> ancestors = <"DATA_VALUE", ...> is_abstract = properties = < ["value"] = (P_BMM_SINGLE_PROPERTY) < name = <"value"> documentation = <"The specification, in the HL7v3 syntax for `PIVL` or `EIVL` types."> is_mandatory = type = <"DV_PARSABLE"> > > functions = < ["calendar_alignment"] = < name = <"calendar_alignment"> documentation = <"Indicates what prototypical point in the calendar the specification is aligned to, e.g. 5th of the month . Empty if not aligned. Extracted from the value' attribute."> is_abstract = result = (P_BMM_SIMPLE_TYPE) < type = <"String"> > > ["event_alignment"] = < name = <"event_alignment"> documentation = <"Indicates what real-world event the specification is aligned to if any. Extracted from the value' attribute. "> is_abstract = result = (P_BMM_SIMPLE_TYPE) < type = <"String"> > > ["institution_specified"] = < name = <"institution_specified"> documentation = <"Indicates if the specification is aligned with institution schedules, e.g. a hospital nursing changeover or meal serving times. Extracted from the value' attribute."> is_abstract = result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > > > > ["DV_PERIODIC_TIME_SPECIFICATION"] = < name = <"DV_PERIODIC_TIME_SPECIFICATION"> documentation = <"Specifies periodic points in time, linked to the calendar (phase-linked), or a real world repeating event, such as breakfast (event-linked). Based on the HL7v3 data types `PIVL` and `EIVL`. Used in therapeutic prescriptions, expressed as `INSTRUCTIONs` in the openEHR model. "> ancestors = <"DV_TIME_SPECIFICATION", ...> functions = < ["period"] = < name = <"period"> documentation = <"The period of the repetition, computationally derived from the syntax representation. Extracted from the value' attribute."> result = (P_BMM_SIMPLE_TYPE) < type = <"DV_DURATION"> > > ["calendar_alignment"] = < name = <"calendar_alignment"> documentation = <"Calendar alignment extracted from value. "> result = (P_BMM_SIMPLE_TYPE) < type = <"String"> > > ["event_alignment"] = < name = <"event_alignment"> documentation = <"Event alignment extracted from value. "> result = (P_BMM_SIMPLE_TYPE) < type = <"String"> > > ["institution_specified"] = < name = <"institution_specified"> documentation = <"Extracted from value."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > > > invariants = < ["Value_valid"] = <"value.formalism.is_equal (“HL7:PIVL”) or value.formalism. is_equal (“HL7:EIVL”)"> > > ["DV_GENERAL_TIME_SPECIFICATION"] = < name = <"DV_GENERAL_TIME_SPECIFICATION"> documentation = <"Specifies points in time in a general syntax. Based on the HL7v3 GTS data type."> ancestors = <"DV_TIME_SPECIFICATION", ...> functions = < ["calendar_alignment"] = < name = <"calendar_alignment"> documentation = <"Calendar alignment extracted from value."> result = (P_BMM_SIMPLE_TYPE) < type = <"String"> > > ["event_alignment"] = < name = <"event_alignment"> documentation = <"Event alignment extracted from value. "> result = (P_BMM_SIMPLE_TYPE) < type = <"String"> > > ["institution_specified"] = < name = <"institution_specified"> documentation = <"Extracted from value."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > > > > ["DV_URI"] = < name = <"DV_URI"> documentation = <"A reference to an object which structurally conforms to the Universal Resource Identifier (URI) RFC-3986 standard. The reference is contained in the `_value_` attribute, which is a `String`. So-called 'plain-text URIs' that contain RFC-3986 forbidden characters such as spaces etc, are allowed on the basis that they need to be RFC-3986 encoded prior to use in e.g. REST APIs or other contexts relying on machine-level conformance."> ancestors = <"DATA_VALUE", ...> properties = < ["value"] = (P_BMM_SINGLE_PROPERTY) < name = <"value"> documentation = <"Value of URI as a String. 'Plain-text' URIs are allowed, enabling better readability, but must be RFC-3986 encoded in use."> is_mandatory = type = <"String"> > > functions = < ["scheme"] = < name = <"scheme"> documentation = <"A distributed information 'space' in which information objects exist. The scheme simultaneously specifies an information space and a mechanism for accessing objects in that space. For example if scheme = \"ftp\", it identifies the information space in which all ftp-able objects exist, and also the application - ftp - which can be used to access them. Values may include: \"ftp\", \"telnet\", \"mailto\", etc. Refer to RFC-3986 for a full list. "> result = (P_BMM_SIMPLE_TYPE) < type = <"String"> > > ["path"] = < name = <"path"> documentation = <"A string whose format is a function of the scheme. Identifies the location in -space of an information entity. Typical values include hierarchical directory paths for any machine. For example, with scheme = \"ftp\", path might be `\"/pub/images/image_01\"`. The strings \".\" and \"..\" are reserved for use in the path. Paths may include internet/intranet location identifiers of the form: `sub_domain...domain`, e.g. `\"info.cern.ch\"`. "> result = (P_BMM_SIMPLE_TYPE) < type = <"String"> > > ["fragment_id"] = < name = <"fragment_id"> documentation = <"A part of, a fragment or a sub-function within an object. Allows references to sub-parts of objects, such as a certain line and character position in a text object. The syntax and semantics are defined by the application responsible for the object. "> result = (P_BMM_SIMPLE_TYPE) < type = <"String"> > > ["query"] = < name = <"query"> documentation = <"Query string to send to application implied by scheme and path. Enables queries to applications, including databases to be included in the URI. Supports any query meaningful to the server, including SQL. "> result = (P_BMM_SIMPLE_TYPE) < type = <"String"> > > > invariants = < ["Value_valid"] = <"not value.is_empty"> > > ["DV_EHR_URI"] = < name = <"DV_EHR_URI"> documentation = <"A `DV_EHR_URI` is a `DV_URI` which has the scheme name 'ehr', and which can only reference items in EHRs. Used to reference items in an EHR, which may be the same as the current EHR (containing this link), or another."> ancestors = <"DV_URI", ...> invariants = < ["Scheme_valid"] = <"scheme.is_equal (Ehr_scheme)"> > > ["EXTERNAL_ENVIRONMENT_ACCESS"] = < name = <"EXTERNAL_ENVIRONMENT_ACCESS"> documentation = <"A mixin class providing access to services in the external environment."> ancestors = <"TERMINOLOGY_SERVICE", "MEASUREMENT_SERVICE"> is_abstract = > ["OPENEHR_DEFINITIONS"] = < name = <"OPENEHR_DEFINITIONS"> documentation = <"Inheritance class to provide access to constants defined in other packages."> ancestors = <"BASIC_DEFINITIONS", ...> > ["BASIC_DEFINITIONS"] = < name = <"BASIC_DEFINITIONS"> documentation = <"Defines globally used constant values."> constants = < ["CR"] = < name = <"CR"> documentation = <"Carriage return character."> type = <"Character"> value = <"'\\015'"> > ["LF"] = < name = <"LF"> documentation = <"Line feed character."> type = <"Character"> value = <"'\\012'"> > > > ["MEASUREMENT_SERVICE"] = < name = <"MEASUREMENT_SERVICE"> documentation = <"Defines an object providing proxy access to a measurement information service."> functions = < ["is_valid_units_string"] = < name = <"is_valid_units_string"> documentation = <"True if the units string units' is a valid string according to the HL7 UCUM specification."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["units"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"units"> type = <"String"> > > > ["units_equivalent"] = < name = <"units_equivalent"> documentation = <"True if two units strings correspond to the same measured property."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["units1"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"units1"> type = <"String"> > ["units2"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"units2"> type = <"String"> > > > > > ["OPENEHR_TERMINOLOGY_GROUP_IDENTIFIERS"] = < name = <"OPENEHR_TERMINOLOGY_GROUP_IDENTIFIERS"> documentation = <"List of identifiers for groups in the openEHR terminology. "> constants = < ["Terminology_id_openehr"] = < name = <"Terminology_id_openehr"> documentation = <"Name of openEHR's own terminology."> type = <"String"> value = <"\"openehr\""> > ["Group_id_audit_change_type"] = < name = <"Group_id_audit_change_type"> type = <"String"> value = <"\"audit change type\""> > ["Group_id_attestation_reason"] = < name = <"Group_id_attestation_reason"> type = <"String"> value = <"\"attestation reason\""> > ["Group_id_composition_category"] = < name = <"Group_id_composition_category"> type = <"String"> value = <"\"composition category\""> > ["Group_id_event_math_function"] = < name = <"Group_id_event_math_function"> type = <"String"> value = <"\"event math function\""> > ["Group_id_instruction_states"] = < name = <"Group_id_instruction_states"> type = <"String"> value = <"\"instruction states\""> > ["Group_id_instruction_transitions"] = < name = <"Group_id_instruction_transitions"> type = <"String"> value = <"\"instruction transitions\""> > ["Group_id_null_flavours"] = < name = <"Group_id_null_flavours"> type = <"String"> value = <"\"null flavours\""> > ["Group_id_property"] = < name = <"Group_id_property"> type = <"String"> value = <"\"property\""> > ["Group_id_participation_function"] = < name = <"Group_id_participation_function"> type = <"String"> value = <"\"participation function\""> > ["Group_id_participation_mode"] = < name = <"Group_id_participation_mode"> type = <"String"> value = <"\"participation mode\""> > ["Group_id_setting"] = < name = <"Group_id_setting"> type = <"String"> value = <"\"setting\""> > ["Group_id_term_mapping_purpose"] = < name = <"Group_id_term_mapping_purpose"> type = <"String"> value = <"\"term mapping purpose\""> > ["Group_id_subject_relationship"] = < name = <"Group_id_subject_relationship"> type = <"String"> value = <"\"subject relationship\""> > ["Group_id_version_life_cycle_state"] = < name = <"Group_id_version_life_cycle_state"> type = <"String"> value = <"\"version lifecycle state\""> > > functions = < ["valid_terminology_group_id"] = < name = <"valid_terminology_group_id"> documentation = <"Validity function to test if an identifier is in the set defined by this class. "> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["an_id"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"an_id"> type = <"Boolean"> > > > > > ["OPENEHR_CODE_SET_IDENTIFIERS"] = < name = <"OPENEHR_CODE_SET_IDENTIFIERS"> documentation = <"List of identifiers for code sets in the openEHR terminology. "> constants = < ["Code_set_id_character_sets"] = < name = <"Code_set_id_character_sets"> type = <"String"> value = <"\"character sets\""> > ["Code_set_id_compression_algorithms"] = < name = <"Code_set_id_compression_algorithms"> type = <"String"> value = <"\"compression algorithms\""> > ["Code_set_id_countries"] = < name = <"Code_set_id_countries"> type = <"String"> value = <"\"countries\""> > ["Code_set_integrity_check_algorithms"] = < name = <"Code_set_integrity_check_algorithms"> type = <"String"> value = <"\"integrity check algorithms\""> > ["Code_set_id_languages"] = < name = <"Code_set_id_languages"> type = <"String"> value = <"\"languages\""> > ["Code_set_id_media_types"] = < name = <"Code_set_id_media_types"> type = <"String"> value = <"\"media types\""> > ["Code_set_id_normal_statuses"] = < name = <"Code_set_id_normal_statuses"> type = <"String"> value = <"\"normal statuses\""> > > functions = < ["valid_code_set_id"] = < name = <"valid_code_set_id"> documentation = <"Validity function to test if an identifier is in the set defined by this class."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["an_id"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"an_id"> type = <"String"> > > > > > ["TERMINOLOGY_SERVICE"] = < name = <"TERMINOLOGY_SERVICE"> documentation = <"Defines an object providing proxy access to a terminology service. "> ancestors = <"OPENEHR_TERMINOLOGY_GROUP_IDENTIFIERS", "OPENEHR_CODE_SET_IDENTIFIERS"> functions = < ["terminology"] = < name = <"terminology"> documentation = <"Return an interface to the terminology named name. Allowable names include:- * openehr, * centc251, * any name from are taken from the US NLM UMLS meta-data list at http://www.nlm.nih.gov/research/umls/metaa1.html "> result = (P_BMM_SIMPLE_TYPE) < type = <"TERMINOLOGY_ACCESS"> > parameters = < ["name"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"name"> type = <"String"> > > > ["code_set"] = < name = <"code_set"> documentation = <"Return an interface to the code_set identified by the external identifier name (e.g. ISO_639-1). "> result = (P_BMM_SIMPLE_TYPE) < type = <"CODE_SET_ACCESS"> > parameters = < ["name"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"name"> type = <"String"> > > pre_conditions = < ["Pre"] = <"has_code_set (name)"> > > ["code_set_for_id"] = < name = <"code_set_for_id"> documentation = <"Return an interface to the code_set identified internally in openEHR by id. "> result = (P_BMM_SIMPLE_TYPE) < type = <"CODE_SET_ACCESS"> > parameters = < ["id"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"id"> type = <"String"> > > pre_conditions = < ["Pre"] = <"valid_code_set_id (id)"> > > ["has_terminology"] = < name = <"has_terminology"> documentation = <"True if terminology named name known by this service. Allowable names include:- * openehr * centc251 * any name from are taken from the US NLM UMLS meta-data list at http://www.nlm.nih.gov/research/umls/metaa1.html"> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["name"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"name"> type = <"String"> > > > ["has_code_set"] = < name = <"has_code_set"> documentation = <"True if code_set linked to internal name (e.g. languages ) is available. "> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["name"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"name"> type = <"String"> > > > ["terminology_identifiers"] = < name = <"terminology_identifiers"> documentation = <"Set of all terminology identifiers known in the terminology service. Values from the US NLM UMLS meta-data list at:- http://www.nlm.nih.gov/research/umls/metaa1.html "> result = (P_BMM_CONTAINER_TYPE) < container_type = <"List"> type = <"String"> > is_nullable = > ["openehr_code_sets"] = < name = <"openehr_code_sets"> documentation = <"Set of all code set identifiers known in the terminology service. "> result = (P_BMM_GENERIC_TYPE) < generic_parameters = <"String", "String"> root_type = <"Hash"> > > ["code_set_identifiers"] = < name = <"code_set_identifiers"> documentation = <"Set of all code sets identifiers for which there is an internal openEHR name; returned as a Map of ids keyed by internal name. "> result = (P_BMM_CONTAINER_TYPE) < container_type = <"List"> type = <"String"> > is_nullable = > > > ["CODE_SET_ACCESS"] = (P_BMM_INTERFACE) < name = <"CODE_SET_ACCESS"> documentation = <"Defines an object providing proxy access to a code_set."> functions = < ["id"] = < name = <"id"> documentation = <"External identifier of this code set."> result = (P_BMM_SIMPLE_TYPE) < type = <"String"> > > ["all_codes"] = < name = <"all_codes"> documentation = <"Return all codes known in this code set."> result = (P_BMM_CONTAINER_TYPE) < container_type = <"List"> type = <"CODE_PHRASE"> > is_nullable = > ["has_lang"] = < name = <"has_lang"> documentation = <"True if code set knows about 'a_lang' ."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["a_lang"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_lang"> type = <"String"> > > > ["has_code"] = < name = <"has_code"> documentation = <"True if code set knows about 'a_code'."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["a_code"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_code"> type = <"String"> > > > > > ["TERMINOLOGY_ACCESS"] = (P_BMM_INTERFACE) < name = <"TERMINOLOGY_ACCESS"> documentation = <"Defines an object providing proxy access to a terminology. "> functions = < ["id"] = < name = <"id"> documentation = <"Identification of this Terminology."> result = (P_BMM_SIMPLE_TYPE) < type = <"String"> > > ["all_codes"] = < name = <"all_codes"> documentation = <"Return all codes known in this terminology."> result = (P_BMM_SIMPLE_TYPE) < type = <"CODE_PHRASE"> > > ["codes_for_group_id"] = < name = <"codes_for_group_id"> documentation = <"Return all codes under grouper 'a_group_id' from this terminology."> result = (P_BMM_CONTAINER_TYPE) < container_type = <"List"> type = <"CODE_PHRASE"> > parameters = < ["a_group_id"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_group_id"> type = <"String"> > > is_nullable = > ["codes_for_group_name"] = < name = <"codes_for_group_name"> documentation = <"Return all codes under grouper whose name in 'a_lang' is 'a_name' from this terminology."> result = (P_BMM_CONTAINER_TYPE) < container_type = <"List"> type = <"CODE_PHRASE"> > parameters = < ["a_lang"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_lang"> type = <"String"> > ["a_name"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_name"> type = <"String"> > > is_nullable = > ["has_code_for_group_id"] = < name = <"has_code_for_group_id"> documentation = <"True if a_code' is known in group group_id' in the openEHR terminology."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > > ["rubric_for_code"] = < name = <"rubric_for_code"> documentation = <"Return all rubric of code code' in language lang'."> result = (P_BMM_SIMPLE_TYPE) < type = <"String"> > parameters = < ["a_code"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_code"> type = <"String"> > > > > > ["ACCESS_CONTROL_SETTINGS"] = < name = <"ACCESS_CONTROL_SETTINGS"> documentation = <"Access Control Settings for the EHR and components. Intended to support multiple access control schemes. Currently implementation dependent."> is_abstract = > ["EHR"] = < name = <"EHR"> documentation = <"The EHR object is the root object and access point of an EHR for a subject of care. "> properties = < ["system_id"] = (P_BMM_SINGLE_PROPERTY) < name = <"system_id"> documentation = <"The identifier of the logical EHR management system in which this EHR was created. "> is_mandatory = type = <"HIER_OBJECT_ID"> > ["ehr_id"] = (P_BMM_SINGLE_PROPERTY) < name = <"ehr_id"> documentation = <"The unique identifier of this EHR. NOTE: is is strongly recommended that a UUID always be used for this field."> is_mandatory = type = <"HIER_OBJECT_ID"> > ["contributions"] = (P_BMM_CONTAINER_PROPERTY) < name = <"contributions"> documentation = <"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`. "> type_def = < container_type = <"List"> type = <"OBJECT_REF"> > cardinality = <|>=0|> > ["ehr_status"] = (P_BMM_SINGLE_PROPERTY) < name = <"ehr_status"> documentation = <"Reference to `EHR_STATUS` object for this EHR."> is_mandatory = type = <"OBJECT_REF"> > ["ehr_access"] = (P_BMM_SINGLE_PROPERTY) < name = <"ehr_access"> documentation = <"Reference to `EHR_ACCESS` object for this EHR."> is_mandatory = type = <"OBJECT_REF"> > ["compositions"] = (P_BMM_CONTAINER_PROPERTY) < name = <"compositions"> documentation = <"Master list of all Versioned Composition references in this EHR."> type_def = < container_type = <"List"> type = <"OBJECT_REF"> > cardinality = <|>=0|> > ["directory"] = (P_BMM_SINGLE_PROPERTY) < name = <"directory"> documentation = <"Optional directory structure for this EHR. "> type = <"OBJECT_REF"> > ["time_created"] = (P_BMM_SINGLE_PROPERTY) < name = <"time_created"> documentation = <"Time of creation of the EHR."> is_mandatory = type = <"DV_DATE_TIME"> > > invariants = < ["Contributions_valid"] = <"contributions.for_all (c | 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"] = <"compositions.for_all (c | c.type.is_equal (“VERSIONED_COMPOSITION”))"> ["Directory_valid"] = <"directory /= Void implies directory.type.is_equal (“VERSIONED_FOLDER”)"> > > ["VERSIONED_EHR_ACCESS"] = < name = <"VERSIONED_EHR_ACCESS"> documentation = <"Version container for EHR_ACCESS instance."> ancestors = <"VERSIONED_OBJECT", ...> > ["VERSIONED_EHR_STATUS"] = < name = <"VERSIONED_EHR_STATUS"> documentation = <"Version container for EHR_STATUS instance."> ancestors = <"VERSIONED_OBJECT", ...> > ["VERSIONED_COMPOSITION"] = < name = <"VERSIONED_COMPOSITION"> documentation = <"Version-controlled composition abstraction, defined by inheriting `VERSIONED_OBJECT`. "> ancestors = <"VERSIONED_OBJECT", ...> functions = < ["is_persistent"] = < name = <"is_persistent"> documentation = <"Indicates whether this composition set is persistent; derived from first version."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > > > invariants = < ["Archetype_node_id_valid"] = <"all_versions.for_all (v | v.archetype_node_id.is_equal (all_versions.first.archetype_node_id))"> ["Persistent_validity"] = <"all_versions.for_all (v | v.is_persistent = all_versions.first.data.is_persistent)"> > > ["EHR_ACCESS"] = < name = <"EHR_ACCESS"> documentation = <"EHR-wide access contol object. All access decisions to data in the EHR must be made in accordance with the policies and rules in this object. "> ancestors = <"LOCATABLE", ...> properties = < ["settings"] = (P_BMM_SINGLE_PROPERTY) < name = <"settings"> documentation = <"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. "> type = <"ACCESS_CONTROL_SETTINGS"> > > functions = < ["scheme"] = < name = <"scheme"> documentation = <"The name of the access control scheme in use; corresponds to the concrete instance of the settings attribute. "> result = (P_BMM_SIMPLE_TYPE) < type = <"String"> > > > invariants = < ["Scheme_valid"] = <"not scheme.is_empty"> ["Is_archetype_root"] = <"is_archetype_root"> > > ["EHR_STATUS"] = < name = <"EHR_STATUS"> documentation = <"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."> ancestors = <"LOCATABLE", ...> properties = < ["subject"] = (P_BMM_SINGLE_PROPERTY) < name = <"subject"> documentation = <"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. "> is_mandatory = type = <"PARTY_SELF"> > ["is_queryable"] = (P_BMM_SINGLE_PROPERTY) < name = <"is_queryable"> documentation = <"True if this EHR should be included in population queries, i.e. if this EHR is considered active in the population."> is_mandatory = type = <"Boolean"> > ["is_modifiable"] = (P_BMM_SINGLE_PROPERTY) < name = <"is_modifiable"> documentation = <"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."> is_mandatory = type = <"Boolean"> > ["other_details"] = (P_BMM_SINGLE_PROPERTY) < name = <"other_details"> documentation = <"Any other details of the EHR summary object, in the form of an archetyped `ITEM_STRUCTURE`."> type = <"ITEM_STRUCTURE"> > > invariants = < ["Is_archetype_root"] = <"is_archetype_root"> > > ["EXTRACT"] = < name = <"EXTRACT"> documentation = <"Generic model of an Extract of some information from a repository."> ancestors = <"LOCATABLE", ...> properties = < ["chapters"] = (P_BMM_CONTAINER_PROPERTY) < name = <"chapters"> documentation = <"The content extracted and serialised from the source repository for this Extract."> type_def = < container_type = <"List"> type = <"EXTRACT_CHAPTER"> > cardinality = <|>=0|> > ["specification"] = (P_BMM_SINGLE_PROPERTY) < name = <"specification"> documentation = <"The specification that this Extract actually conforms to; might not be identical with the specification of the corresponding request."> type = <"EXTRACT_SPEC"> > ["request_id"] = (P_BMM_SINGLE_PROPERTY) < name = <"request_id"> documentation = <"Reference to causing Request, if any."> type = <"HIER_OBJECT_ID"> > ["time_created"] = (P_BMM_SINGLE_PROPERTY) < name = <"time_created"> documentation = <"Creation time of this Extract"> is_mandatory = type = <"DV_DATE_TIME"> > ["system_id"] = (P_BMM_SINGLE_PROPERTY) < name = <"system_id"> documentation = <"Identifier of creating system."> is_mandatory = type = <"HIER_OBJECT_ID"> > ["sequence_nr"] = (P_BMM_SINGLE_PROPERTY) < name = <"sequence_nr"> documentation = <"Number of this Extract response in sequence of responses to Extract request identified by request_id. If this is the sole response, or there was no request, value is 1."> is_mandatory = type = <"Integer"> > ["participations"] = (P_BMM_CONTAINER_PROPERTY) < name = <"participations"> documentation = <"Participations relevant to the creation of this Extract."> type_def = < container_type = <"List"> type = <"EXTRACT_PARTICIPATION"> > cardinality = <|>=0|> > > invariants = < ["Sequence_nr_valid"] = <"sequence_nr >= 1"> > > ["EXTRACT_ACTION_REQUEST"] = < name = <"EXTRACT_ACTION_REQUEST"> documentation = <"Generic model of a Request for an Extract, containing an Extract specification."> ancestors = <"LOCATABLE", ...> properties = < ["request_id"] = (P_BMM_SINGLE_PROPERTY) < name = <"request_id"> documentation = <"Identifier of previous EXTRACT_REQUEST."> is_mandatory = type = <"OBJECT_REF"> > ["uid"] = (P_BMM_SINGLE_PROPERTY) < name = <"uid"> is_mandatory = type = <"HIER_OBJECT_ID"> > ["action"] = (P_BMM_SINGLE_PROPERTY) < name = <"action"> documentation = <"Requested action: cancel | resend | send new. Coded by openEHR Terminology group \"extract action type\"."> is_mandatory = type = <"DV_CODED_TEXT"> > > > ["EXTRACT_CHAPTER"] = < name = <"EXTRACT_CHAPTER"> documentation = <"One content chapter of an Extract; contains information relating to only one entity."> ancestors = <"LOCATABLE", ...> properties = < ["items"] = (P_BMM_CONTAINER_PROPERTY) < name = <"items"> documentation = <"The information content of this chapter."> type_def = < container_type = <"List"> type = <"EXTRACT_ITEM"> > cardinality = <|>=0|> > > > ["EXTRACT_CONTENT_ITEM"] = < name = <"EXTRACT_CONTENT_ITEM"> documentation = <"Abstract model of a wrapper for one content item in an Extract, containing various meta-data. Indicates whether it was part of the primary set and what its original path was. Intended to be subtyped for wrappers of specific types of content."> ancestors = <"EXTRACT_ITEM", ...> is_abstract = properties = < ["is_primary"] = (P_BMM_SINGLE_PROPERTY) < name = <"is_primary"> documentation = <"True if the content item carried in this container was part of the primary set for the Extract, i.e. not added due to link-following."> is_mandatory = type = <"Boolean"> > ["is_changed"] = (P_BMM_SINGLE_PROPERTY) < name = <"is_changed"> documentation = <"True if the content item carried in this container is any kind of change since last send, in repeat sending situations."> type = <"Boolean"> > ["is_masked"] = (P_BMM_SINGLE_PROPERTY) < name = <"is_masked"> documentation = <"True if the content of this item has not been included due to insufficient access rights of requestor."> type = <"Boolean"> > ["item"] = (P_BMM_SINGLE_PROPERTY) < name = <"item"> documentation = <"Content object."> type = <"Any"> > > invariants = < ["Item_validity"] = <"is_masked xor item /= Void"> > > ["EXTRACT_ENTITY_CHAPTER"] = < name = <"EXTRACT_ENTITY_CHAPTER"> documentation = <"Type of chapter that contains information relating to a single demographic entity."> ancestors = <"EXTRACT_CHAPTER", ...> properties = < ["extract_id_key"] = (P_BMM_SINGLE_PROPERTY) < name = <"extract_id_key"> documentation = <"Reference to entity, usually a demographic entity such as a patient that the content of this chapter relates to."> is_mandatory = type = <"String"> > > > ["EXTRACT_ENTITY_MANIFEST"] = < name = <"EXTRACT_ENTITY_MANIFEST"> documentation = <"The manifest for one entity (e.g. EHR subject), identifying the entity and optionally specifying top-level items to be included in the Extract. The list actually included may be modified by the `_version_spec_` part of the specification, and also by the link_depth attribute. In repeat (standing order) requests, the final inclusion may be modified by the send_changes_only value for `EXTRACT_UPDATE_SPEC._update_method_`. Various identifiers may be provided for the entity; these are to be used by the receiver system to locate the entity. The `_extract_id_key_` attribute is used to record the identifier that will be used throughout the Extract for this entity, including in instances of `EXTRACT_ENTITY_IDENTIFIER`."> properties = < ["extract_id_key"] = (P_BMM_SINGLE_PROPERTY) < name = <"extract_id_key"> documentation = <"Identifier by which this entity is known in the Extract. May be one of the other identifiers, e.g. ehr_id or subject_id, or it may be something else, including a simple integer."> is_mandatory = type = <"String"> > ["ehr_id"] = (P_BMM_SINGLE_PROPERTY) < name = <"ehr_id"> documentation = <"EHR / EMR identifier for the entity at the target system."> type = <"String"> > ["subject_id"] = (P_BMM_SINGLE_PROPERTY) < name = <"subject_id"> documentation = <"Subject (i.e. patient or similar) identifier for the entity at the target system."> type = <"String"> > ["other_ids"] = (P_BMM_CONTAINER_PROPERTY) < name = <"other_ids"> documentation = <"Other identifiers that may be used to find the entity at the target system, keyed by type. May include medicare numbers, drivers license number, tax number etc."> type_def = < container_type = <"List"> type = <"String"> > cardinality = <|>=0|> > ["item_list"] = (P_BMM_CONTAINER_PROPERTY) < name = <"item_list"> documentation = <"List of uids of items to be included in the Extract, in cases where individual items are being requested by id. More typically, this attribute is not used, and the EXTRACT_SPEC.criteria query defines the Extract contents. If set, for openEHR data, these are uids identifying the version containers."> type_def = < container_type = <"List"> type = <"OBJECT_REF"> > cardinality = <|>=0|> > > > ["EXTRACT_ERROR"] = < name = <"EXTRACT_ERROR"> properties = < ["request_id"] = (P_BMM_SINGLE_PROPERTY) < name = <"request_id"> type = <"OBJECT_REF"> > ["reason"] = (P_BMM_SINGLE_PROPERTY) < name = <"reason"> is_mandatory = type = <"DV_TEXT"> > > > ["EXTRACT_FOLDER"] = < name = <"EXTRACT_FOLDER"> documentation = <"Folder in local Folder structure in an Extract. Empty Folders are allowed."> ancestors = <"EXTRACT_ITEM", ...> properties = < ["items"] = (P_BMM_CONTAINER_PROPERTY) < name = <"items"> documentation = <"List of Folders and content items in this Folder."> type_def = < container_type = <"List"> type = <"EXTRACT_ITEM"> > cardinality = <|>=0|> > > > ["EXTRACT_ITEM"] = < name = <"EXTRACT_ITEM"> documentation = <"Abstract parent of Extract Folder and Content types."> ancestors = <"LOCATABLE", ...> is_abstract = > ["EXTRACT_MANIFEST"] = < name = <"EXTRACT_MANIFEST"> documentation = <"Specification of the candidate entities and optionally top-level items (e.g. Compositions) to be included in the Extract."> properties = < ["entities"] = (P_BMM_CONTAINER_PROPERTY) < name = <"entities"> documentation = <"List of entity manifests uids of items included in the Extract; for openEHR data, these are uids identifying the version containers."> is_mandatory = type_def = < container_type = <"List"> type = <"EXTRACT_ENTITY_MANIFEST"> > cardinality = <|>=1|> > > > ["EXTRACT_PARTICIPATION"] = < name = <"EXTRACT_PARTICIPATION"> documentation = <"Model of a participation of a Party (any Actor or Role) in an activity. Used to represent any participation of a Party in some activity, which is not explicitly in the model, e.g. assisting nurse. Can be used to record past or future participations. Should not be used in place of more permanent relationships between demographic entities. "> properties = < ["time"] = (P_BMM_GENERIC_PROPERTY) < name = <"time"> documentation = <"The time interval during which the participation took place, if it is used in an observational context (i.e. recording facts about the past); or the intended time interval of the participation when used in future contexts, such as EHR Instructions. "> type_def = < generic_parameters = <"DV_DATE_TIME", ...> root_type = <"DV_INTERVAL"> > > ["function"] = (P_BMM_SINGLE_PROPERTY) < name = <"function"> documentation = <"The function of the Party in this participation (note that a given party might participate in more than one way in a particular activity). This attribute should be coded, but cannot be limited to the HL7v3:ParticipationFunction vocabulary, since it is too limited and hospital-oriented. "> is_mandatory = type = <"DV_TEXT"> > ["mode"] = (P_BMM_SINGLE_PROPERTY) < name = <"mode"> documentation = <"The mode of the performer / activity interaction, e.g. present, by telephone, by email etc. "> type = <"DV_CODED_TEXT"> > ["performer"] = (P_BMM_SINGLE_PROPERTY) < name = <"performer"> documentation = <"Uid of demographic entity within Extract who performed this participation."> is_mandatory = type = <"String"> > > invariants = < ["Function_valid"] = <"function /= Void and then function.generating_type.is_equal (“DV_CODED_TEXT”) implies terminology (Terminology_id_openehr).has_code_for_group_id (Group_id_participation_function, function.defining_code)"> ["Mode_valid"] = <"mode /= Void and terminology (Terminology_id_openehr).has_code_for_group_id (Group_id_participation_mode, mode.defining_code)"> > > ["EXTRACT_REQUEST"] = < name = <"EXTRACT_REQUEST"> documentation = <"Generic model of a Request for an Extract, containing an Extract specification."> ancestors = <"LOCATABLE", ...> properties = < ["extract_spec"] = (P_BMM_SINGLE_PROPERTY) < name = <"extract_spec"> documentation = <"Specification details of the request."> is_mandatory = type = <"EXTRACT_SPEC"> > ["update_spec"] = (P_BMM_SINGLE_PROPERTY) < name = <"update_spec"> documentation = <"Update details of the request."> type = <"EXTRACT_UPDATE_SPEC"> > ["uid"] = (P_BMM_SINGLE_PROPERTY) < name = <"uid"> documentation = <"Identifier of this Request, generated by requestor."> is_mandatory = type = <"HIER_OBJECT_ID"> > > > ["EXTRACT_SPEC"] = < name = <"EXTRACT_SPEC"> documentation = <"Specification of an Extract's contents. Subtypes can be used to add details specific to the type of Extract. The specification consists of attributes specifying the directory, and two further groups of attributes in their own classes, namely a version specfication (which versions of information items are to be included) and a manifest (which entities are to be included in the extract). Use: Used in a request to specify an Extract, as well as to describe what is contained in an Extract."> properties = < ["version_spec"] = (P_BMM_SINGLE_PROPERTY) < name = <"version_spec"> documentation = <"Specification of which versions of information items to include in the Extract. If Void, the default is latest versions only (which is reasonable for non-versioning systems as well)."> type = <"EXTRACT_VERSION_SPEC"> > ["manifest"] = (P_BMM_SINGLE_PROPERTY) < name = <"manifest"> documentation = <"Specification of entities (e.g. records) to include in the Extract."> is_mandatory = type = <"EXTRACT_MANIFEST"> > ["extract_type"] = (P_BMM_SINGLE_PROPERTY) < name = <"extract_type"> documentation = <"Coded term indicating the type of content required, e.g. * openehr-ehr * openehr-demographic * generic-emr * other Coded by openEHR Terminology group \"extract content type\"."> is_mandatory = type = <"DV_CODED_TEXT"> > ["include_multimedia"] = (P_BMM_SINGLE_PROPERTY) < name = <"include_multimedia"> documentation = <"Indicates whether inline instances of DV_MULTIMEDIA in the source data are included or not."> is_mandatory = type = <"Boolean"> > ["priority"] = (P_BMM_SINGLE_PROPERTY) < name = <"priority"> documentation = <"Requested priority of this request to be handled by server. Priority schemes are likely to be local, and use values agreed by both ends. TBD: alternative is standard coded terms"> is_mandatory = type = <"Integer"> > ["link_depth"] = (P_BMM_SINGLE_PROPERTY) < name = <"link_depth"> documentation = <"Degree of links to follow emanating from content items specified for inclusion. The kind of links to follow is dependent on the type of Extract. All items at the target end of followed links at the given depth are also included in the extract; EXTRACT_CONTENT_ITEM.is_primary is used to differentiate. - 0 = don't follow; - 1 = follow first degree links; - 2 = follow 2nd degree links; - .... - n = follow nth degree links"> is_mandatory = type = <"Integer"> > ["criteria"] = (P_BMM_CONTAINER_PROPERTY) < name = <"criteria"> documentation = <"Queries specifying the contents of this Extract."> type_def = < container_type = <"List"> type = <"DV_PARSABLE"> > cardinality = <|>=0|> > ["other_details"] = (P_BMM_SINGLE_PROPERTY) < name = <"other_details"> documentation = <"Other specification items. Archetypable."> type = <"ITEM_STRUCTURE"> > > > ["EXTRACT_UPDATE_SPEC"] = < name = <"EXTRACT_UPDATE_SPEC"> documentation = <"Specification of the how the request should be processed by server. The request can be persisted in the server, meaning that a) it can be re-activated by the requesting system simply by indicating Request id, and b) that a changes-only pattern of Extract updates can be set up. To achieve this, the server has to remember what was sent in the previous response. The update mode may be event-driven and periodic update or a mixture of both. The candidate items to be sent each time are the result of re-evaluating the content and versioning parts of the specification; what is actually sent is determined by the send_changes_only flag."> properties = < ["persist_in_server"] = (P_BMM_SINGLE_PROPERTY) < name = <"persist_in_server"> documentation = <"If True, this Request is persisted in the server until further notice."> is_mandatory = type = <"Boolean"> > ["repeat_period"] = (P_BMM_SINGLE_PROPERTY) < name = <"repeat_period"> documentation = <"Period for resending update Extracts in response to original Request."> type = <"DV_DURATION"> > ["trigger_events"] = (P_BMM_CONTAINER_PROPERTY) < name = <"trigger_events"> documentation = <"Set of Event names that will cause sending of update Extracts. Event types include: * any_change - any change in content items matched by content specification, e.g. new versions of persistent compositions. If the content list allows matching of any, or a wide range of archetypes, this event type will match any additions to the record. * correction - match error corrections only, including deletions. * update - match updates (i.e. new versions) of included content items. Coded by openEHR Terminology group \"extract update trigger event type\"."> type_def = < container_type = <"List"> type = <"DV_CODED_TEXT"> > cardinality = <|>=0|> > ["update_method"] = (P_BMM_SINGLE_PROPERTY) < name = <"update_method"> documentation = <"Indicate mode of update. Can be: send only items that are changed (including logical deletions) or new since last send. For persist_in_server Requests only."> is_mandatory = type = <"CODE_PHRASE"> > > invariants = < ["Overall_validity"] = <"repeat_period /= Void or trigger_events /= Void"> ["Trigger_events_validity"] = <"trigger_events /= Void implies not trigger_events.is_empty"> ["Send_changes_only_validity"] = <"send_changes_only implies persist_in_server"> > > ["EXTRACT_VERSION_SPEC"] = < name = <"EXTRACT_VERSION_SPEC"> documentation = <"Specification of what versions should be included in an Extract. By default, only latest versions are included in the Extract, in which case this part of the Extract specification is not needed at all. The attributes include_all_versions and commit_time_interval are used to modify this; the former forces all versions to be included; the latter limits the versions to be those latest versions committed in the time interval, or if include_all_versions is True, all versions committed in the time interval."> properties = < ["include_all_versions"] = (P_BMM_SINGLE_PROPERTY) < name = <"include_all_versions"> documentation = <"True if all versions of each item in the Extract are included."> is_mandatory = type = <"Boolean"> > ["commit_time_interval"] = (P_BMM_GENERIC_PROPERTY) < name = <"commit_time_interval"> documentation = <"Specifies commit time interval of items to source repository to include in Extract. By default, only latest versions whose commit times fall in the range are included. If include_all_versions is True, then the range includes all versions committed within the interval."> type_def = < generic_parameters = <"DV_DATE_TIME", ...> root_type = <"DV_INTERVAL"> > > ["include_revision_history"] = (P_BMM_SINGLE_PROPERTY) < name = <"include_revision_history"> documentation = <"True if revision histories of the items in the Extract are included. If included, it is always the full revision history."> is_mandatory = type = <"Boolean"> > ["include_data"] = (P_BMM_SINGLE_PROPERTY) < name = <"include_data"> documentation = <"True if the data of items matched by the content spec should be included. This is the default. If False, only revision history is included in serialised versions. Turning this option on in openEHR systems causes X_VERSIONED_OBJECTs to have revision_history set, but versions Void. Useful for interrogating a server without having to look at any content data. In other systems it may or may not have a sensible meaning."> is_mandatory = type = <"Boolean"> > > invariants = < ["Includes_revision_history_valid"] = <"not include_data implies include_revision_history"> > > ["OPENEHR_CONTENT_ITEM"] = < name = <"OPENEHR_CONTENT_ITEM"> documentation = <"Form of `EHR EXTRACT_ITEM` containing openEHR serialised `VERSIONED_OBJECTs`."> ancestors = <"EXTRACT_CONTENT_ITEM", ...> properties = < ["item"] = (P_BMM_SINGLE_PROPERTY) < name = <"item"> documentation = <"Content object."> type = <"X_VERSIONED_OBJECT"> > > > ["X_VERSIONED_OBJECT"] = < name = <"X_VERSIONED_OBJECT"> documentation = <"Variety of Extract content that consists is a sharable data-oriented version of `VERSIONED_OBJECT`."> generic_parameter_defs = < ["T"] = < name = <"T"> > > properties = < ["uid"] = (P_BMM_SINGLE_PROPERTY) < name = <"uid"> documentation = <"Uid of original `VERSIONED_OBJECT`."> is_mandatory = type = <"HIER_OBJECT_ID"> > ["owner_id"] = (P_BMM_SINGLE_PROPERTY) < name = <"owner_id"> documentation = <"Owner_id from original VERSIONED_OBJECT, which identifies source EHR."> is_mandatory = type = <"OBJECT_REF"> > ["time_created"] = (P_BMM_SINGLE_PROPERTY) < name = <"time_created"> documentation = <"Creation time of original `VERSIONED_OBJECT`."> is_mandatory = type = <"DV_DATE_TIME"> > ["total_version_count"] = (P_BMM_SINGLE_PROPERTY) < name = <"total_version_count"> documentation = <"Total number of versions in original `VERSIONED_OBJECT` at time of creation of this `X_VERSIONED_OBJECT`."> is_mandatory = type = <"Integer"> > ["extract_version_count"] = (P_BMM_SINGLE_PROPERTY) < name = <"extract_version_count"> documentation = <"The number of Versions in this extract for this Versioned object, i.e. the count of items in the versions attribute. May be 0 if only revision history is requested."> is_mandatory = type = <"Integer"> > ["revision_history"] = (P_BMM_SINGLE_PROPERTY) < name = <"revision_history"> documentation = <"Optional revision history of the original `VERSIONED_OBJECT`. If included, it is the complete revision history."> type = <"REVISION_HISTORY"> > ["versions"] = (P_BMM_CONTAINER_PROPERTY) < name = <"versions"> documentation = <"0 or more Versions from the original `VERSIONED_OBJECT`, according to the Extract specification."> type_def = < container_type = <"List"> type_def = (P_BMM_GENERIC_TYPE) < generic_parameters = <"T", ...> root_type = <"ORIGINAL_VERSION"> > > cardinality = <|>=0|> > > > ["X_VERSIONED_EHR_ACCESS"] = < name = <"X_VERSIONED_EHR_ACCESS"> documentation = <"Form of `X_VERSIONED_OBJECT` for `EHR_ACCESS` EHR object."> ancestors = <"X_VERSIONED_OBJECT", ...> > ["X_VERSIONED_EHR_STATUS"] = < name = <"X_VERSIONED_EHR_STATUS"> documentation = <"Form of `X_VERSIONED_OBJECT` for `EHR_STATUS` EHR object."> ancestors = <"X_VERSIONED_OBJECT", ...> > ["X_VERSIONED_COMPOSITION"] = < name = <"X_VERSIONED_COMPOSITION"> documentation = <"Form of `X_VERSIONED_OBJECT` for `COMPOSITION` EHR object."> ancestors = <"X_VERSIONED_OBJECT", ...> > ["X_VERSIONED_FOLDER"] = < name = <"X_VERSIONED_FOLDER"> documentation = <"Form of `X_VERSIONED_OBJECT` for `FOLDER` EHR object."> ancestors = <"X_VERSIONED_OBJECT", ...> > ["X_VERSIONED_PARTY"] = < name = <"X_VERSIONED_PARTY"> documentation = <"Form of `X_VERSIONED_OBJECT` for `PARTY` demographic object."> ancestors = <"X_VERSIONED_OBJECT", ...> > ["GENERIC_CONTENT_ITEM"] = < name = <"GENERIC_CONTENT_ITEM"> documentation = <"Single item in generic extract, designed for 13606 and CDA data."> ancestors = <"EXTRACT_CONTENT_ITEM", ...> properties = < ["item_type"] = (P_BMM_SINGLE_PROPERTY) < name = <"item_type"> documentation = <"Identifier of model or schema used to create the content."> type = <"DV_CODED_TEXT"> > ["item_type_version"] = (P_BMM_SINGLE_PROPERTY) < name = <"item_type_version"> documentation = <"Version of model or schema used to create the content item."> type = <"String"> > ["author"] = (P_BMM_SINGLE_PROPERTY) < name = <"author"> documentation = <"Reference to a demographic entity elsewhere in this Extract representing the author of the item version. The reference should be a UID corresponding to the UID of a GENERIC_CONTENT_ITEM containing the demographic information."> type = <"String"> > ["creation_time"] = (P_BMM_SINGLE_PROPERTY) < name = <"creation_time"> documentation = <"Time of creation of this item version on the original system. This may be an earlier commit time, or it may be the time at which the item was created during the Extract generation process."> type = <"Iso8601_date_time"> > ["authoriser"] = (P_BMM_SINGLE_PROPERTY) < name = <"authoriser"> documentation = <"Reference to a demographic entity elsewhere in this Extract representing an authoriser of the item version, if relevant. The reference should be a UID corresponding to the UID of a GENERIC_CONTENT_ITEM containing the demographic information."> type = <"String"> > ["authorisation_time"] = (P_BMM_SINGLE_PROPERTY) < name = <"authorisation_time"> documentation = <"Time of authorisation of this item version on the original system where relevant."> type = <"Iso8601_date_time"> > ["item_status"] = (P_BMM_SINGLE_PROPERTY) < name = <"item_status"> documentation = <"Coded lifecycle status of the item."> type = <"DV_CODED_TEXT"> > ["version_id"] = (P_BMM_SINGLE_PROPERTY) < name = <"version_id"> documentation = <"Version id of this item in original system."> type = <"String"> > ["version_set_id"] = (P_BMM_SINGLE_PROPERTY) < name = <"version_set_id"> documentation = <"Version set id of this item in original system, where applicable."> type = <"String"> > ["system_id"] = (P_BMM_SINGLE_PROPERTY) < name = <"system_id"> documentation = <"Identifier of EMR or other system from which the item was created / extracted. Typically in the form of a domain name."> type = <"String"> > ["other_details"] = (P_BMM_GENERIC_PROPERTY) < name = <"other_details"> documentation = <"Other details about the content item."> type_def = < generic_parameters = <"String", "String"> root_type = <"Hash"> > > ["item"] = (P_BMM_SINGLE_PROPERTY) < name = <"item"> documentation = <"Content object."> type = <"LOCATABLE"> > > > ["SYNC_EXTRACT_REQUEST"] = < name = <"SYNC_EXTRACT_REQUEST"> documentation = <"Type of request designed for synchronisation of Contributions between openEHR servers."> ancestors = <"MESSAGE_CONTENT", ...> properties = < ["specification"] = (P_BMM_SINGLE_PROPERTY) < name = <"specification"> documentation = <"Details of specification of synchronisation request."> is_mandatory = type = <"SYNC_EXTRACT_SPEC"> > > > ["SYNC_EXTRACT"] = < name = <"SYNC_EXTRACT"> ancestors = <"MESSAGE_CONTENT", ...> properties = < ["specification"] = (P_BMM_SINGLE_PROPERTY) < name = <"specification"> documentation = <"Details of specification of this Extract."> is_mandatory = type = <"SYNC_EXTRACT_SPEC"> > ["items"] = (P_BMM_CONTAINER_PROPERTY) < name = <"items"> documentation = <"Content, in the form of a serialised Contributions."> type_def = < container_type = <"List"> type = <"X_CONTRIBUTION"> > cardinality = <|>=0|> > > > ["X_CONTRIBUTION"] = < name = <"X_CONTRIBUTION"> documentation = <"Serialised form of Contribution for an Extract."> properties = < ["uid"] = (P_BMM_SINGLE_PROPERTY) < name = <"uid"> documentation = <"Uid of Contribution in source system."> is_mandatory = type = <"HIER_OBJECT_ID"> > ["audit"] = (P_BMM_SINGLE_PROPERTY) < name = <"audit"> documentation = <"Audit of Contribution in source system."> is_mandatory = type = <"AUDIT_DETAILS"> > ["versions"] = (P_BMM_CONTAINER_PROPERTY) < name = <"versions"> documentation = <"Serialised Versions from Contribution in source system."> type_def = < container_type = <"List"> type_def = (P_BMM_GENERIC_TYPE) < generic_parameters = <"X_CONTRIBUTION", ...> root_type = <"VERSION"> > > cardinality = <|>=0|> > > > ["SYNC_EXTRACT_SPEC"] = < name = <"SYNC_EXTRACT_SPEC"> documentation = <"Details of specification of Extract, used in a request to specify an Extract, or in a response, to describe what is actually in the Extract."> properties = < ["includes_versions"] = (P_BMM_SINGLE_PROPERTY) < name = <"includes_versions"> documentation = <"True if the Versions from the Contribution are included; False if just the Contribution and its Audit are included."> is_mandatory = type = <"Boolean"> > ["contribution_list"] = (P_BMM_CONTAINER_PROPERTY) < name = <"contribution_list"> documentation = <"List of Contributions to include / that are included in the Extract."> type_def = < container_type = <"List"> type = <"HIER_OBJECT_ID"> > cardinality = <|>=0|> > ["contributions_since"] = (P_BMM_SINGLE_PROPERTY) < name = <"contributions_since"> documentation = <"Specify Contributions included in Extract by threshold date."> type = <"DV_DATE_TIME"> > ["all_contributions"] = (P_BMM_SINGLE_PROPERTY) < name = <"all_contributions"> documentation = <"True if all Contributions in the record are included."> type = <"Boolean"> > > > ["MESSAGE"] = < name = <"MESSAGE"> documentation = <"A “message” is an authored, possibly signed, piece of content intended for one or more recipients. Since the recipient may or may not be known directly, recipients are specified in the `ADDRESSED_MESSAGE` class."> properties = < ["audit"] = (P_BMM_SINGLE_PROPERTY) < name = <"audit"> documentation = <"Details of who actually created the message and when. This is the person who entered the data or otherwise caused the message to be created, or might be a piece of software."> is_mandatory = type = <"AUDIT_DETAILS"> > ["author"] = (P_BMM_SINGLE_PROPERTY) < name = <"author"> documentation = <"Party responsible for the message content, who may or may not be technically responsible for its creation (e.g. by data entry etc)."> is_mandatory = type = <"PARTY_PROXY"> > ["content"] = (P_BMM_SINGLE_PROPERTY) < name = <"content"> documentation = <"Content of the message."> is_mandatory = type = <"MESSAGE_CONTENT"> > ["signature"] = (P_BMM_SINGLE_PROPERTY) < name = <"signature"> documentation = <"Optional signature by the author of message content in openPGP format. The signature is created as a Hash and optional signing of the serialisation of this message object with this signature field Void."> type = <"String"> > > > ["ADDRESSED_MESSAGE"] = < name = <"ADDRESSED_MESSAGE"> documentation = <"The concept of a message addressed to nominated recipients."> properties = < ["sender"] = (P_BMM_SINGLE_PROPERTY) < name = <"sender"> documentation = <"Party sending the message."> is_mandatory = type = <"String"> > ["sender_reference"] = (P_BMM_SINGLE_PROPERTY) < name = <"sender_reference"> documentation = <"Identification of message used by sender. This will be the same no matter how many times this message is sent to these recipients."> is_mandatory = type = <"String"> > ["addressees"] = (P_BMM_CONTAINER_PROPERTY) < name = <"addressees"> documentation = <"Intended recipients, in the form of internet addresses."> is_mandatory = type_def = < container_type = <"List"> type = <"String"> > cardinality = <|>=1|> > ["urgency"] = (P_BMM_SINGLE_PROPERTY) < name = <"urgency"> documentation = <"Urgency with which destination should deal with message: * -1 - low * 0 - normal * 1 - high"> type = <"Integer"> > ["message"] = (P_BMM_SINGLE_PROPERTY) < name = <"message"> documentation = <"The content of the message."> is_mandatory = type = <"MESSAGE"> > > > ["MESSAGE_CONTENT"] = < name = <"MESSAGE_CONTENT"> documentation = <"Abstract parent of message payload types."> is_abstract = > ["PARTY"] = < name = <"PARTY"> documentation = <"Ancestor of all Party types, including real world entities and their roles. A Party is any entity which can participate in an activity. The `_name_` attribute inherited from `LOCATABLE` is used to indicate the actual type of party (note that the actual names, i.e. identities of parties are indicated in the `_identities_` attribute, not the `_name_` attribute)."> ancestors = <"LOCATABLE", ...> is_abstract = properties = < ["identities"] = (P_BMM_CONTAINER_PROPERTY) < name = <"identities"> documentation = <"Identities used by the party to identify itself, such as legal name, stage names, aliases, nicknames and so on."> is_mandatory = type_def = < container_type = <"List"> type = <"PARTY_IDENTITY"> > cardinality = <|>=1|> > ["contacts"] = (P_BMM_CONTAINER_PROPERTY) < name = <"contacts"> documentation = <"Contacts for this party."> type_def = < container_type = <"List"> type = <"CONTACT"> > cardinality = <|>=0|> > ["details"] = (P_BMM_SINGLE_PROPERTY) < name = <"details"> documentation = <"All other details for this Party."> type = <"ITEM_STRUCTURE"> > ["reverse_relationships"] = (P_BMM_CONTAINER_PROPERTY) < name = <"reverse_relationships"> documentation = <"References to relationships in which this Party takes part as target."> type_def = < container_type = <"List"> type = <"LOCATABLE_REF"> > cardinality = <|>=0|> > ["relationships"] = (P_BMM_CONTAINER_PROPERTY) < name = <"relationships"> documentation = <"Relationships in which this Party takes part as source."> type_def = < container_type = <"List"> type = <"PARTY_RELATIONSHIP"> > cardinality = <|>=0|> > > functions = < ["type"] = < name = <"type"> documentation = <"Type of party, such as `PERSON`, `ORGANISATION`, etc. Role name, e.g. general practitioner , nurse , private citizen . Taken from inherited `_name_` attribute."> result = (P_BMM_SIMPLE_TYPE) < type = <"DV_TEXT"> > > > invariants = < ["Type_valid"] = <"type = name"> ["Identities_valid"] = <"not identities.is_empty"> ["Contacts_valid"] = <"contacts /= Void implies not contacts.is_empty"> ["Relationships_validity"] = <"relationships /= Void implies (not relationships.is_empty and then relationships.for_all (r | r.source = self)"> ["Reverse_relationships_validity"] = <"reverse_relationships /= Void implies (not reverse_relationships.empty and then reverse_relationships.for_all (item | repository (\"demographics\").all_party_relationships.has_object (item) and then repository(\"demographics\").all_party_relationships.object (item).target = self))"> ["Is_archetype_root"] = <"is_archetype_root"> ["Uid_mandatory"] = <"uid /= Void"> > > ["CONTACT"] = < name = <"CONTACT"> documentation = <"Description of a means of contact of a Party. Actual structure is archetyped."> ancestors = <"LOCATABLE", ...> properties = < ["addresses"] = (P_BMM_CONTAINER_PROPERTY) < name = <"addresses"> documentation = <"A set of address alternatives for this contact purpose and time validity combination."> is_mandatory = type_def = < container_type = <"List"> type = <"ADDRESS"> > cardinality = <|>=1|> > ["time_validity"] = (P_BMM_GENERIC_PROPERTY) < name = <"time_validity"> documentation = <"Valid time interval for this contact descriptor."> type_def = < generic_parameters = <"DV_DATE", ...> root_type = <"DV_INTERVAL"> > > > functions = < ["purpose"] = < name = <"purpose"> documentation = <"Purpose for which this contact is used, e.g. mail, daytime phone, etc. Taken from value of inherited `_name_` attribute."> result = (P_BMM_SIMPLE_TYPE) < type = <"DV_TEXT"> > > > invariants = < ["Purpose_valid"] = <"purpose = name"> > > ["ADDRESS"] = < name = <"ADDRESS"> documentation = <"Address of contact, which may be electronic or geographic."> ancestors = <"LOCATABLE", ...> properties = < ["details"] = (P_BMM_SINGLE_PROPERTY) < name = <"details"> documentation = <"Archetypable structured address."> is_mandatory = type = <"ITEM_STRUCTURE"> > > functions = < ["type"] = < name = <"type"> documentation = <"Type of address, e.g. electronic, locality. Taken from value of inherited `_name_` attribute."> result = (P_BMM_SIMPLE_TYPE) < type = <"DV_TEXT"> > > > invariants = < ["Type_valid"] = <"type = name"> > > ["PARTY_IDENTITY"] = < name = <"PARTY_IDENTITY"> documentation = <"An identity owned by a Party, such as a person name or company name, and which is used by the Party to identify itself. Actual structure is archetyped."> ancestors = <"LOCATABLE", ...> properties = < ["details"] = (P_BMM_SINGLE_PROPERTY) < name = <"details"> documentation = <"The value of the identity. This will often taken the form of a parseable string or a small structure of strings."> is_mandatory = type = <"ITEM_STRUCTURE"> > > functions = < ["purpose"] = < name = <"purpose"> documentation = <"Purpose of identity, e.g. legal , stagename, nickname, tribal name, trading name. Taken from value of inherited `_name_` attribute."> result = (P_BMM_SIMPLE_TYPE) < type = <"DV_TEXT"> > > > invariants = < ["Purpose_valid"] = <"purpose = name"> > > ["ROLE"] = < name = <"ROLE"> documentation = <"Generic description of a role performed by an Actor. The role corresponds to a competency of the Party. Roles are used to define the responsibilities undertaken by a Party for a purpose. Roles should have credentials qualifying the performer to perform the role."> ancestors = <"PARTY", ...> properties = < ["time_validity"] = (P_BMM_GENERIC_PROPERTY) < name = <"time_validity"> documentation = <"Valid time interval for this role."> type_def = < generic_parameters = <"DV_DATE", ...> root_type = <"DV_INTERVAL"> > > ["performer"] = (P_BMM_SINGLE_PROPERTY) < name = <"performer"> documentation = <"Reference to Version container of Actor playing the role."> is_mandatory = type = <"PARTY_REF"> > ["capabilities"] = (P_BMM_CONTAINER_PROPERTY) < name = <"capabilities"> documentation = <"The capabilities of this role."> type_def = < container_type = <"List"> type = <"CAPABILITY"> > cardinality = <|>=0|> > > invariants = < ["Capabilities_valid"] = <"capabilities /= Void implies not capabilities.empty"> > > ["ACTOR"] = < name = <"ACTOR"> documentation = <"Ancestor of all real-world types, including people and organisations. An actor is any real-world entity capable of taking on a role."> ancestors = <"PARTY", ...> is_abstract = properties = < ["languages"] = (P_BMM_CONTAINER_PROPERTY) < name = <"languages"> documentation = <"Languages which can be used to communicate with this actor, in preferred order of use (if known, else order irrelevant)."> type_def = < container_type = <"List"> type = <"DV_TEXT"> > cardinality = <|>=0|> > ["roles"] = (P_BMM_CONTAINER_PROPERTY) < name = <"roles"> documentation = <"Identifiers of the Version container for each Role played by this Party."> type_def = < container_type = <"List"> type = <"PARTY_REF"> > cardinality = <|>=0|> > > invariants = < ["Roles_valid"] = <"roles /= Void implies not roles.is_empty"> > > ["CAPABILITY"] = < name = <"CAPABILITY"> documentation = <"Capability of a role, such as ehr modifier , health care provider . Capability should be backed up by credentials."> ancestors = <"LOCATABLE", ...> properties = < ["credentials"] = (P_BMM_SINGLE_PROPERTY) < name = <"credentials"> documentation = <"The qualifications of the performer of the role for this capability. This might include professional qualifications and official identifications such as provider numbers etc."> is_mandatory = type = <"ITEM_STRUCTURE"> > ["time_validity"] = (P_BMM_GENERIC_PROPERTY) < name = <"time_validity"> documentation = <"Valid time interval for the credentials of this capability."> type_def = < generic_parameters = <"DV_DATE", ...> root_type = <"DV_INTERVAL"> > > > > ["AGENT"] = < name = <"AGENT"> documentation = <"Generic concept of any kind of agent, including devices, software systems, but not humans or organisations."> ancestors = <"ACTOR", ...> > ["ORGANISATION"] = < name = <"ORGANISATION"> documentation = <"Generic description of organisations. An organisation is a legally constituted body whose existence (in general) outlives the existence of parties considered to be part of it."> ancestors = <"ACTOR", ...> > ["GROUP"] = < name = <"GROUP"> documentation = <"A group is a real world group of parties which is created by another party, usually an organisation, for some specific purpose. A typical clinical example is that of the specialist care team, e.g. cardiology team . The members of the group usually work together."> ancestors = <"ACTOR", ...> > ["PERSON"] = < name = <"PERSON"> documentation = <"Generic description of persons. Provides a dedicated type to which Person archetypes can be targeted."> ancestors = <"ACTOR", ...> > ["PARTY_RELATIONSHIP"] = < name = <"PARTY_RELATIONSHIP"> documentation = <"Generic description of a relationship between parties."> ancestors = <"LOCATABLE", ...> properties = < ["details"] = (P_BMM_SINGLE_PROPERTY) < name = <"details"> documentation = <"The detailed description of the relationship."> type = <"ITEM_STRUCTURE"> > ["target"] = (P_BMM_SINGLE_PROPERTY) < name = <"target"> documentation = <"Target of relationship."> is_mandatory = type = <"PARTY_REF"> > ["time_validity"] = (P_BMM_GENERIC_PROPERTY) < name = <"time_validity"> documentation = <"Valid time interval for this relationship."> type_def = < generic_parameters = <"DV_DATE", ...> root_type = <"DV_INTERVAL"> > > ["source"] = (P_BMM_SINGLE_PROPERTY) < name = <"source"> documentation = <"Source of relationship."> is_mandatory = type = <"PARTY_REF"> > > functions = < ["type"] = < name = <"type"> documentation = <"Type of relationship, such as employment, authority, health provision "> result = (P_BMM_SIMPLE_TYPE) < type = <"DV_TEXT"> > > > invariants = < ["Source_valid"] = <"source /= Void and then source.relationships.has (self)"> ["Target_valid"] = <"target /= Void and then not target.reverse_relationships.has (self)"> ["Type_validity"] = <"type = name"> > > ["VERSIONED_PARTY"] = < name = <"VERSIONED_PARTY"> documentation = <"Static type formed by binding generic parameter of `VERSIONED_OBJECT` to `PARTY`. "> ancestors = <"VERSIONED_OBJECT", ...> > ["GENERIC_ENTRY"] = < name = <"GENERIC_ENTRY"> documentation = <"This class is used to create intermediate representations of data from sources not otherwise conforming to openEHR classes, such as HL7 messages, relational databases and so on."> ancestors = <"CONTENT_ITEM", ...> properties = < ["data"] = (P_BMM_SINGLE_PROPERTY) < name = <"data"> documentation = <"The ‘data’ from the source message or record."> is_mandatory = type = <"ITEM_TREE"> > > > ["COMPOSITION"] = < name = <"COMPOSITION"> documentation = <"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 a UUID."> ancestors = <"LOCATABLE", ...> properties = < ["language"] = (P_BMM_SINGLE_PROPERTY) < name = <"language"> documentation = <"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_`. "> is_mandatory = type = <"CODE_PHRASE"> > ["territory"] = (P_BMM_SINGLE_PROPERTY) < name = <"territory"> documentation = <"Name of territory in which this Composition was written. Coded from openEHR countries code set, which is an expression of the ISO 3166 standard."> is_mandatory = type = <"CODE_PHRASE"> > ["category"] = (P_BMM_SINGLE_PROPERTY) < name = <"category"> documentation = <"Indicates what broad category this Composition is belogs to, e.g. persistent - of longitudinal validity, event , process etc. "> is_mandatory = type = <"DV_CODED_TEXT"> > ["context"] = (P_BMM_SINGLE_PROPERTY) < name = <"context"> documentation = <"The clinical session context of this Composition, i.e. the contextual attributes of the clinical session. "> type = <"EVENT_CONTEXT"> > ["composer"] = (P_BMM_SINGLE_PROPERTY) < name = <"composer"> documentation = <"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."> is_mandatory = type = <"PARTY_PROXY"> > ["content"] = (P_BMM_CONTAINER_PROPERTY) < name = <"content"> documentation = <"The content of this Composition. "> type_def = < container_type = <"List"> type = <"CONTENT_ITEM"> > cardinality = <|>=0|> > > functions = < ["is_persistent"] = < name = <"is_persistent"> documentation = <"True if category is a persistent type, False otherwise. Useful for finding Compositions in an EHR which are guaranteed to be of interest to most users. "> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > > > 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"> > > ["EVENT_CONTEXT"] = < name = <"EVENT_CONTEXT"> documentation = <"Documents the context information of a healthcare event involving the subject of care and the health system. The context information recorded here are 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. "> ancestors = <"PATHABLE", ...> properties = < ["start_time"] = (P_BMM_SINGLE_PROPERTY) < name = <"start_time"> documentation = <"Start time of the clinical session or other kind of event during which a provider performs a service of any kind for the patient. "> is_mandatory = type = <"DV_DATE_TIME"> > ["end_time"] = (P_BMM_SINGLE_PROPERTY) < name = <"end_time"> documentation = <"Optional end time of the clinical session. "> type = <"DV_DATE_TIME"> > ["location"] = (P_BMM_SINGLE_PROPERTY) < name = <"location"> documentation = <"The actual location where the session occurred, e.g. 'microbiology lab 2', 'home', 'ward A3' and so on."> type = <"String"> > ["setting"] = (P_BMM_SINGLE_PROPERTY) < name = <"setting"> documentation = <"The setting in which the clinical session took place. Coded using the openEHR Terminology, setting group. "> is_mandatory = type = <"DV_CODED_TEXT"> > ["other_context"] = (P_BMM_SINGLE_PROPERTY) < name = <"other_context"> documentation = <"Other optional context which will be archetyped."> type = <"ITEM_STRUCTURE"> > ["health_care_facility"] = (P_BMM_SINGLE_PROPERTY) < name = <"health_care_facility"> documentation = <"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. "> type = <"PARTY_IDENTIFIED"> > ["participations"] = (P_BMM_CONTAINER_PROPERTY) < name = <"participations"> documentation = <"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). "> type_def = < container_type = <"List"> type = <"PARTICIPATION"> > cardinality = <|>=0|> > > 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"> > > ["CONTENT_ITEM"] = < name = <"CONTENT_ITEM"> documentation = <"Abstract ancestor of all concrete content types."> ancestors = <"LOCATABLE", ...> is_abstract = > ["SECTION"] = < name = <"SECTION"> documentation = <"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. "> ancestors = <"CONTENT_ITEM", ...> properties = < ["items"] = (P_BMM_CONTAINER_PROPERTY) < name = <"items"> documentation = <"Ordered list of content items under this section, which may include: * more SECTIONs * ENTRYs "> type_def = < container_type = <"List"> type = <"CONTENT_ITEM"> > cardinality = <|>=0|> > > invariants = < ["Items_valid"] = <"items /= Void implies not items.is_empty"> > > ["ADMIN_ENTRY"] = < name = <"ADMIN_ENTRY"> documentation = <"Entry subtype for administrative information, i.e. information about setting up the clinical process, but not itself clinically relevant. Archetypes will define contained information. Used for admistrative details of admission, episode, ward location, discharge, appointment (if not stored in a practice management or appointments system). Not to be used for any clinically significant information."> ancestors = <"ENTRY", ...> properties = < ["data"] = (P_BMM_SINGLE_PROPERTY) < name = <"data"> documentation = <"Content of the Admin Entry."> is_mandatory = type = <"ITEM_STRUCTURE"> > > > ["CARE_ENTRY"] = < name = <"CARE_ENTRY"> documentation = <"The abstract parent of all clinical `ENTRY` subtypes. A `CARE_ENTRY` defines protocol and guideline attributes for all clinical Entry subtypes. "> ancestors = <"ENTRY", ...> is_abstract = properties = < ["protocol"] = (P_BMM_SINGLE_PROPERTY) < name = <"protocol"> documentation = <"Description of the method (i.e. how) the information in this entry was arrived at. For `OBSERVATIONs`, this is a description of the method or instrument used. For `EVALUATIONs`, how the evaluation was arrived at. For `INSTRUCTIONs`, how to execute the Instruction. This may take the form of references to guidelines, including manually followed and executable; knowledge references such as a paper in Medline; clinical reasons within a larger care process. "> type = <"ITEM_STRUCTURE"> > ["guideline_id"] = (P_BMM_SINGLE_PROPERTY) < name = <"guideline_id"> documentation = <"Optional external identifier of guideline creating this Entry if relevant."> type = <"OBJECT_REF"> > > > ["OBSERVATION"] = < name = <"OBSERVATION"> documentation = <"Entry subtype for all clinical data in the past or present, i.e. which (by the time it is recorded) has already occurred. `OBSERVATION` data is expressed using the class `HISTORY`, which guarantees that it is situated in time. `OBSERVATION` is used for all notionally objective (i.e. measured in some way) observations of phenomena, and patient-reported phenomena, e.g. pain. Not to be used for recording opinion or future statements of any kind, including instructions, intentions, plans etc."> ancestors = <"CARE_ENTRY", ...> properties = < ["data"] = (P_BMM_GENERIC_PROPERTY) < name = <"data"> documentation = <"The data of this observation, in the form of a history of values which may be of any complexity."> is_mandatory = type_def = < generic_parameters = <"ITEM_STRUCTURE", ...> root_type = <"HISTORY"> > > ["state"] = (P_BMM_GENERIC_PROPERTY) < name = <"state"> documentation = <"Optional recording of the state of subject of this observation during the observation process, in the form of a separate history of values which may be of any complexity. State may also be recorded within the History of the data attribute. "> type_def = < generic_parameters = <"ITEM_STRUCTURE", ...> root_type = <"HISTORY"> > > > > ["EVALUATION"] = < name = <"EVALUATION"> documentation = <"Entry type for evaluation statements. Used for all kinds of statements which evaluate other information, such as interpretations of observations, diagnoses, differential diagnoses, hypotheses, risk assessments, goals and plans. Should not be used for actionable statements such as medication orders - these are represented using the `INSTRUCTION` type. "> ancestors = <"CARE_ENTRY", ...> properties = < ["data"] = (P_BMM_SINGLE_PROPERTY) < name = <"data"> documentation = <"The data of this evaluation, in the form of a spatial data structure."> is_mandatory = type = <"ITEM_STRUCTURE"> > > > ["ACTION"] = < name = <"ACTION"> documentation = <"Used to record a clinical action that has been performed, which may have been ad hoc, or due to the execution of an Activity in an Instruction workflow. Every Action corresponds to a careflow step of some kind or another. "> ancestors = <"CARE_ENTRY", ...> properties = < ["time"] = (P_BMM_SINGLE_PROPERTY) < name = <"time"> documentation = <"Point in time at which this action completed. "> is_mandatory = type = <"DV_DATE_TIME"> > ["ism_transition"] = (P_BMM_SINGLE_PROPERTY) < name = <"ism_transition"> documentation = <"Details of transition in the Instruction state machine caused by this Action."> is_mandatory = type = <"ISM_TRANSITION"> > ["instruction_details"] = (P_BMM_SINGLE_PROPERTY) < name = <"instruction_details"> documentation = <"Details to of the Instruction that caused this Action to be performed, if there was one."> type = <"INSTRUCTION_DETAILS"> > ["description"] = (P_BMM_SINGLE_PROPERTY) < name = <"description"> documentation = <"Description of the action that has been performed, in the form of an archetyped structure."> is_mandatory = type = <"ITEM_STRUCTURE"> > > > ["ACTIVITY"] = < name = <"ACTIVITY"> documentation = <"Defines a single activity within an Instruction, such as a medication administration. "> ancestors = <"LOCATABLE", ...> properties = < ["timing"] = (P_BMM_SINGLE_PROPERTY) < name = <"timing"> documentation = <"Timing of the activity, in the form of a parsable string. If used, the preferred syntax is ISO8601 'R' format, but other formats may be used including HL7 GTS. May be omitted if: * timing is represented structurally in the `_description_` attribute (e.g. via archetyped elements), or * unavailable, e.g. imported legacy data; in such cases, the `INSTRUCTION._narrative_` should carry text that indicates the timing of its `_activities_`."> type = <"DV_PARSABLE"> > ["action_archetype_id"] = (P_BMM_SINGLE_PROPERTY) < name = <"action_archetype_id"> documentation = <"Perl-compliant regular expression pattern, enclosed in '//' delimiters, indicating the valid identifiers of archetypes for Actions corresponding to this Activity specification. Defaults to `/.*/`, meaning any archetype."> is_mandatory = type = <"String"> > ["description"] = (P_BMM_SINGLE_PROPERTY) < name = <"description"> documentation = <"Description of the activity, in the form of an archetyped structure."> is_mandatory = type = <"ITEM_STRUCTURE"> > > invariants = < ["Action_archetype_id_valid"] = <"not action_archetype_id.is_empty"> > > ["ISM_TRANSITION"] = < name = <"ISM_TRANSITION"> documentation = <"Model of a transition in the Instruction State Machine, caused by a careflow step. The attributes document the careflow step as well as the ISM transition. "> ancestors = <"PATHABLE", ...> properties = < ["current_state"] = (P_BMM_SINGLE_PROPERTY) < name = <"current_state"> documentation = <"The ISM current state. Coded by openEHR terminology group Instruction states."> is_mandatory = type = <"DV_CODED_TEXT"> > ["transition"] = (P_BMM_SINGLE_PROPERTY) < name = <"transition"> documentation = <"The ISM transition which occurred to arrive in the current_state. Coded by openEHR terminology group Instruction transitions."> type = <"DV_CODED_TEXT"> > ["careflow_step"] = (P_BMM_SINGLE_PROPERTY) < name = <"careflow_step"> documentation = <"The step in the careflow process which occurred as part of generating this action, e.g. dispense , start_administration. This attribute represents the clinical label for the activity, as opposed to current_state which represents the state machine (ISM) computable form. Defined in archetype."> type = <"DV_CODED_TEXT"> > ["reason"] = (P_BMM_CONTAINER_PROPERTY) < name = <"reason"> documentation = <"Optional possibility of adding one or more reasons for this careflow step having been taken. Multiple reasons may occur in medication management for example."> type_def = < container_type = <"List"> type = <"DV_TEXT"> > cardinality = <|>=0|> > > invariants = < ["Current_state_valid"] = <"terminology (Terminology_id_openehr).has_code_for_group_id (Group_id_instruction_states, current_state.defining_code)"> ["Transition_valid"] = <"transition /= Void implies terminology (Terminology_id_openehr). has_code_for_group_id (Group_id_instruction_transitions, transition.defining_code)"> > > ["INSTRUCTION_DETAILS"] = < name = <"INSTRUCTION_DETAILS"> documentation = <"Used to record details of the Instruction causing an Action. "> ancestors = <"PATHABLE", ...> properties = < ["instruction_id"] = (P_BMM_SINGLE_PROPERTY) < name = <"instruction_id"> documentation = <"Reference to causing Instruction."> is_mandatory = type = <"LOCATABLE_REF"> > ["activity_id"] = (P_BMM_SINGLE_PROPERTY) < name = <"activity_id"> documentation = <"Identifier of Activity within Instruction, in the form of its archetype path. "> is_mandatory = type = <"String"> > ["wf_details"] = (P_BMM_SINGLE_PROPERTY) < name = <"wf_details"> documentation = <"Various workflow engine state details, potentially including such things as: * condition that fired to cause this Action to be done (with actual variables substituted); * list of notifications which actually occurred (with all variables substituted); * other workflow engine state. This specification does not currently define the actual structure or semantics of this field. "> type = <"ITEM_STRUCTURE"> > > invariants = < ["Activity_path_valid"] = <"not activity_id.is_empty"> > > ["ENTRY"] = < name = <"ENTRY"> documentation = <"The abstract parent of all `ENTRY` subtypes. An `ENTRY` is the root of a logical item of hard clinical information created in the clinical statement context, within a clinical session. There can be numerous such contexts in a clinical session. Observations and other Entry types only ever document information captured/created in the event documented by the enclosing Composition. An `ENTRY` is also the minimal unit of information any query should return, since a whole `ENTRY` (including subparts) records spatial structure, timing information, and contextual information, as well as the subject and generator of the information. "> ancestors = <"CONTENT_ITEM", ...> is_abstract = properties = < ["language"] = (P_BMM_SINGLE_PROPERTY) < name = <"language"> documentation = <"Mandatory indicator of the localised language in which this Entry is written. Coded from openEHR Code Set languages . "> is_mandatory = type = <"CODE_PHRASE"> > ["encoding"] = (P_BMM_SINGLE_PROPERTY) < name = <"encoding"> documentation = <"Name of character set in which text values in this Entry are encoded. Coded from openEHR Code Set character sets."> is_mandatory = type = <"CODE_PHRASE"> > ["other_participations"] = (P_BMM_CONTAINER_PROPERTY) < name = <"other_participations"> documentation = <"Other participations at ENTRY level. "> type_def = < container_type = <"List"> type = <"PARTICIPATION"> > cardinality = <|>=0|> > ["workflow_id"] = (P_BMM_SINGLE_PROPERTY) < name = <"workflow_id"> documentation = <"Identifier of externally held workflow engine data for this workflow execution, for this subject of care."> type = <"OBJECT_REF"> > ["subject"] = (P_BMM_SINGLE_PROPERTY) < name = <"subject"> documentation = <"Id of human subject of this ENTRY, e.g.: * organ donor * foetus * a family member * another clinically relevant person."> is_mandatory = type = <"PARTY_PROXY"> > ["provider"] = (P_BMM_SINGLE_PROPERTY) < name = <"provider"> documentation = <"Optional identification of provider of the information in this ENTRY, which might be: * the patient * a patient agent, e.g. parent, guardian * the clinician * a device or software Generally only used when the recorder needs to make it explicit. Otherwise, Composition composer and other participants are assumed. "> type = <"PARTY_PROXY"> > > functions = < ["subject_is_self"] = < name = <"subject_is_self"> documentation = <"Returns True if this Entry is about the subject of the EHR, in which case the subject attribute is of type PARTY_SELF."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > post_conditions = < ["Post_condition"] = <"Result implies subject.generating_type = “PARTY_SELF”"> > > > invariants = < ["Language_valid"] = <"code_set (Code_set_id_languages).has_code (language)"> ["Encoding_valid"] = <"code_set (Code_set_id_character_sets).has_code (encoding)"> ["Subject_validity"] = <"subject_is_self implies subject.generating_type = “PARTY_SELF”"> ["Other_participations_valid"] = <"other_participations /= Void implies not other_participations.is_empty"> ["Is_archetype_root"] = <"is_archetype_root"> > > ["INSTRUCTION"] = < name = <"INSTRUCTION"> documentation = <"Used to specify actions in the future. Enables simple and complex specifications to be expressed, including in a fully-computable workflow form. Used for any actionable statement such as medication and therapeutic orders, monitoring, recall and review. Enough details must be provided for the specification to be directly executed by an actor, either human or machine. Not to be used for plan items which are only specified in general terms. "> ancestors = <"CARE_ENTRY", ...> properties = < ["narrative"] = (P_BMM_SINGLE_PROPERTY) < name = <"narrative"> documentation = <"Mandatory human-readable version of what the Instruction is about. "> is_mandatory = type = <"DV_TEXT"> > ["expiry_time"] = (P_BMM_SINGLE_PROPERTY) < name = <"expiry_time"> documentation = <"Optional expiry date/time to assist determination of when an Instruction can be assumed to have expired. This helps prevent false listing of Instructions as Active when they clearly must have been terminated in some way or other. "> type = <"DV_DATE_TIME"> > ["wf_definition"] = (P_BMM_SINGLE_PROPERTY) < name = <"wf_definition"> documentation = <"Optional workflow engine executable expression of the Instruction. "> type = <"DV_PARSABLE"> > ["activities"] = (P_BMM_CONTAINER_PROPERTY) < name = <"activities"> documentation = <"List of all activities in Instruction. "> type_def = < container_type = <"List"> type = <"ACTIVITY"> > cardinality = <|>=0|> > > invariants = < ["Activities_valid"] = <"activities /= Void implies not activities.is_empty"> > > >