wiki:Support Information Model 5 Terminology Package

Terminology Package

5.1 Overview

This section describes the terminology package, which contains classes for accessing terminologies and code sets, including the openEHR Support Terminology, from within instances of classes defined in the reference model. The classes shown here would normally be inherited via the classes EXTERNAL_ENVIRONMENT_ACCESS and OPENEHR_DEFINITIONS, although the exact details of how this is done may vary depending on implementation language.

5.2 Service Interface

5.2.1 Code Sets

A simple terminology service interface is defined according to FIGURE 6, enabling openEHR code sets and terminology to be referenced formally from within the Reference Model. Two types of coded entities are distinguished in openEHR, and are accessible via the service interface. The first is codes from ‘code sets’, which are the kind of terminology where the code stands for itself, such as the ISO 639-1 language codes. The identifiers themselves of these code sets do not appear to be standardised, but names such as “ISO_639-1” are expected to be used (see below).

In any case, code sets needed within the openEHR models themselves (e.g. for attributes whose value is a language code) are not referred to directly by an external name such as “ISO_639-1”, but via an internal constant, in this case, the constant Code_set_id_languages, whose value is defined to be “languages”. These constants are defined in the class OPENEHR_CODE_SET_IDENTIFIERS in FIGURE

  1. The mapping between the internal identifiers and external names should be done in configuration files. The service function TERMINOLOGY_SERVICE.code_set_for_id() is used to retrieve code sets on the basis of a constant. The current mapping and external identifiers assumed in openEHR is defined in the openEHR Support Terminology document. This use of indirection is employed to ensure that the obsoleting and superseding of code-sets does not directly affect openEHR software.

For code sets not mapped to internally used constants, i.e. code sets not required in the openEHR model itself, but otherwise known in the terminology service, the function TERMINOLOGY_SERVICE.code_set() can be used to retrieve these code sets by their external identifier.

5.2.2 Terminologies

Terminologies, including the openEHR Support Terminology are accessed via the TERMINOLOGY_SERVICEfunctions terminology() and terminology_identifiers(), where the argument includes “openehr”, “centc251” (for CEN TC/251codes) and names from the US NLM terminologies list (see below). The openEHR Terminology supports groups, and the set of groups required by the reference model is defined in the class OPENEHR_TERMINOLOGY_GROUP_IDENTIFIERS. These groups correspond to coded attributes found in the openEHR Reference Model.

5.2.3 Terms and Codes in the openEHR Reference Model

True coded attributes in the Reference Model (i.e. attributes of type DV_CODED_TEXT), such as FEEDER_AUDIT.change_type are defined by an invariant in the enclosing class, such as the following:

Editors:{T Beale, S Heard}, {D Kalra, D Lloyd} Page 49 of 67 Date of Issue:08 Apr 2007

© 2003-2006 The openEHR Foundation email: info@… web: http://www.openEHR.org

terminology

OPENEHR_TERMINOLOGY_GROUP_IDENTIFIERS

const Terminology_id_openehr: String is “openehr” const Group_id_audit_change_type: String is “audit change type” const Group_id_attestation_reason: String is “attestation reason” const Group_id_composition_category: String is “composition category” const Group_id_event_math_function: String is “event math function” const Group_id_instruction_states: String is “instruction states” const Group_id_instruction_transitions: String is “instruction transitions” const Group_id_null_flavours: String is “null flavours” const Group_id_property: String is “property” const Group_id_participation_function: String is “participation function” const Group_id_participation_mode: String is “participation mode” const Group_id_setting: String is “setting” const Group_id_term_mapping_purpose: String is “term mapping purpose” const Group_id_subject_relationship: String is “subject relationship” const Group_id_version_lifecycle_state: String is “version lifecycle state”

valid_group_id(an_id: String): Boolean

TERMINOLOGY_SERVICE

OPENEHR_CODE_SET_IDENTIFIERS

const Code_set_id_character_sets: String is “character sets” const Code_set_id_compression_algorithms: String is “compression algorithms” const Code_set_id_countries: String is “countries” const Code_set_id_integrity_check_algorithms: String is “integrity check algorithms” const Code_set_id_languages: String is “languages” const Code_set_id_media_types: String is “media types” const Code_set_id_normal_statuses: String is “normal statuses”

valid_code_set_id(an_id: String): Boolean

CODE_SET_ACCESS <<interface>>

id: Stringall_codes: Set<CODE_PHRASE> has_lang (...): Boolean has_code (...): Boolean terminology (name: String): TERMINOLOGY_ACCESS code_set (name: String): CODE_SET_ACCESS code_set_for_id (id: String): CODE_SET_ACCESS has_terminology (name: String): Boolean has_code_set (name: String): Boolean terminology_identifiers: List<String>openehr_code_sets: Hash<String, String> code_set_identifiers: List<String>

TERMINOLOGY_ACCESS <<interface>>
id: Stringall_codes: Set<CODE_PHRASE> codes_for_group_id (...): Set<CODE_PHRASE> codes_for_group_name (...): Set<CODE_PHRASE> has_code_for_group_id (...): Boolean rubric_for_code (...): String

FIGURE 6 rm.support.terminology Package

Support Information Model Terminology Package Rev 1.6.0

Change_type_valid:terminology(Terminology_id_openehr).has_code_for_group_id (Group_id_audit_change_type, change_type.defining_code)

This is a formal way of saying that the attribute change_type must have a value such that its defining_code (its CODE_PHRASE) is in the set of CODE_PHRASEs in the openEHR Terminology which are in the group whose indentifier is Group_id_audit_change_type.

A similar invariant is used for attributes of type CODE_PHRASE, which come from a code_set. The following invariant appears in the class ENTRY (rm.composition.content.entry package):

Language_valid: media_type /= Void and then code_set(Code_set_languages).has_code(language)

5.3 Identifiers

In openEHR, the identifier of a terminology or code set is found in the terminology_id attribute of the class CODE_PHRASE (Data Types Information Model, text package).

5.3.1 Code Set Identifiers

Internal code set identifiers (such as “languages”) used in openEHR are defined in the class OPENEHR_CODE_SET_IDENTIFIERS; assumed external identifiers (such as “ISO_639-1”) for code sets used by the openEHR Reference Model are defined in the openEHR Support Terminology document.

5.3.2 Terminology Identifiers

Valid identifiers that can be used for this attribute for terminologies include but are not limited to the following:

  • “openehr”
  • “centc251”
  • an identifier value from the first column of the US National Library or Medicine (NLM) UMLS terminology identifiers table below, in either of two forms:

-as is, e.g. “ICD10AM_2000”, “ICPC93”; -with any trailing section starting with an underscore removed, e.g. “ICD10AM”.

Other identification schemes are used in some standards, such as ISO Oids. These are not specified for direct use in openEHR for various reasons:

  • they are not currently used by the NLM, and no definitive published list of terminology identifiers is available;
  • ISO Oids are long identifiers and may significantly increase the size of persisted information due to the ubiquity of coded terms;
  • determing the identity of the terminology in data always requires a request to a service containing the Oid / name mapping;
  • there is a safety factor in having human readable terminology identifiers in the data.

The use of Oid-based or other terminology identification schemes is not however incompatible with openEHR; all that is required is a terminology identifier / name mapping service or table.

Editors:{T Beale, S Heard}, {D Kalra, D Lloyd} Page 51 of 67 Date of Issue:08 Apr 2007

© 2003-2006 The openEHR Foundation email: info@… web: http://www.openEHR.org

Terminology Package Support Information Model Rev 1.6.0

The following table is a snapshot of the US National Library of Medicine UMLS terminology identifiers list. A definitive up-to-date list may be found on the NLM website at http://www.nlm.nih.gov/research/umls/metaa1.html .

© 2003-2006 The openEHR Foundation email: info@… web: http://www.openEHR.org

UMLS 2003 Terminology Identifiers
IdentifierDescription
AIR93AI/RHEUM,1993
ALT2000Alternative Billing Concepts, 2000
AOD2000Alcohol and Other Drug Thesaurus, 2000
BI98Beth Israel Vocabulary, 1.0
BRMP2002Portuguese translation of the Medical Subject Headings, 2002
BRMS2002Spanish translation of the Medical Subject Headings, 2002
CCPSS99Canonical Clinical Problem Statement System, 1999
CCS99Clinical Classifications Software, 1999
CDT4Current Dental Terminology(CDT), 4
COSTAR_89-95COSTAR, 1989-1995
CPM93Medical Entities Dictionary, 1993
CPT01SPPhysicians' Current Procedural Terminology, Spanish Translation, 2001
CPT2003Physicians' Current Procedural Terminology, 2003
CSP2002CRISP Thesaurus, 2002
CST95COSTART, 1995
DDB00Diseases Database, 2000
DMD2003German translation of the Medical Subject Headings, 2003
DMDICD10_1995German translation of ICD10, 1995
DMDUMD_1996German translation of UMDNS, 1996
DSM3R_1987DSM-III-R, 1987
DSM4_1994DSM-IV, 1994
DUT2001Dutch Translation of the Medical Subject Headings, 2001
DXP94DXplain, 1994
FIN2003Finnish translations of the Medical Subject Headings, 2003
HCDT4HCPCS Version of Current Dental Terminology(CDT), 4
HCPCS03Healthcare Common Procedure Coding System, 2003
HCPT03HCPCS Version of Current Procedural Terminology(CPT), 2003
HHC96Home Health Care Classification, 1996
HL7_1998-2002Health Level Seven Vocabulary, 1998-2002
HLREL_1998ICPC2E-ICD10 relationships from Dr. Henk Lamberts, 1998
HPC99Health Product Comparison System, 1999
ICD10AE_1998ICD10, American English Equivalents, 1998
ICD10AMAE_2000International Statistical Classification of Diseases and Related Health Problems, Australian Modification, Americanized English Equivalents, 2000
ICD10AM_2000International Statistical Classification of Diseases and Related Health Problems, 10th Revision, Australian Modification, January 2000 Release
ICD10_1998ICD10, 1998

Date of Issue:08 Apr 2007 Page 52 of 67 Editors:{T Beale, S Heard}, {D Kalra, D Lloyd}

Support Information Model Terminology Package Rev 1.6.0

© 2003-2006 The openEHR Foundation email: info@… web: http://www.openEHR.org

UMLS 2003 Terminology Identifiers
IdentifierDescription
ICD9CM_2003ICD-9-CM, 2003
ICPC2AE_1998International Classification of Primary Care, Americanized English Equivalents, 2E, 1998
ICPC2E_1998International Classification of Primary Care 2nd Edition, Electronic, 2E, 1998
ICPC2P_2000International Classification of Primary Care, Version2-Plus, 2000
ICPC93International Classification of Primary Care, 1993
ICPCBAQ_1993ICPC, Basque Translation, 1993
ICPCDAN_1993ICPC, Danish Translation, 1993
ICPCDUT_1993ICPC, Dutch Translation, 1993
ICPCFIN_1993ICPC, Finnish Translation, 1993
ICPCFRE_1993ICPC, French Translation, 1993
ICPCGER_1993ICPC, German Translation, 1993
ICPCHEB_1993ICPC, Hebrew Translation, 1993
ICPCHUN_1993ICPC, Hungarian Translation, 1993
ICPCITA_1993ICPC, Italian Translation, 1993
ICPCNOR_1993ICPC, Norwegian Translation, 1993
ICPCPAE_2000International Classification of Primary Care ,Version2-Plus, Americanized English Equivalents, 2000
ICPCPOR_1993ICPC, Portuguese Translation, 1993
ICPCSPA_1993ICPC, Spanish Translation, 1993
ICPCSWE_1993ICPC, Swedish Translation, 1993
INS2002French translation of the Medical Subject Headings, 2002
ITA2003Italian translation of Medical Subject Headings, 2003
JABL99Online Congenital Multiple Anomaly/ Mental Retardation Syndromes, 1999
LCH90Library of Congress Subject Headings, 1990
LNC205LOINC, 2.05
LOINCLOINC
MCM92McMaster University Epidemiology Terms, 1992
MDDB99MasterDrug DataBase, 1999
MDR51Medical Dictionary for Regulatory Activities Terminology (MedDRA), 5.1
MDRAE51Medical Dictionary for Regulatory Activities Terminology (MedDRA), American English Equivalents, 5.1
MDREA51Medical Dictionary for Regulatory Activities Terminology (MedDRA), American English, with expanded abbreviations, 5.1
MDREX51Medical Dictionary for Regulatory Activities Terminology (MedDRA), with expanded abbreviations, 5.1
MDRPOR51Medical Dictionary for Regulatory Activities Terminology (MedDRA), 5.1, Portuguese Edition

Editors:{T Beale, S Heard}, {D Kalra, D Lloyd} Page 53 of 67 Date of Issue:08 Apr 2007

Terminology Package Support Information Model Rev 1.6.0

© 2003-2006 The openEHR Foundation email: info@… web: http://www.openEHR.org

UMLS 2003 Terminology Identifiers
IdentifierDescription
MDRSPA51Medical Dictionary for Regulatory Activities Terminology (MedDRA), 5.1, Spanish Edition
MIM93Online Mendelian Inheritance in Man, 1993
MMSL01Multum MediSource Lexicon, 2001
MMX01Micromedex DRUGDEX, 2001-08
MSH2003_2002_10_24Medical Subject Headings, 2002_10_24
MTHUMLS Metathesaurus
MTHCH03Metathesaurus CPT Hierarchical Terms, 2003
MTHHH03Metathesaurus HCPCS Hierarchical Terms, 2003
MTHICD9_2003Metathesaurus additional entry terms for ICD-9-CM, 2003
MTHMST2001Metathesaurus Version of Minimal Standard Terminology Digestive Endoscopy, 2001
MTHMSTFRE_2001Metathesaurus Version of Minimal Standard Terminology Digestive Endoscopy, French Translation, 2001
MTHMSTITA_2001Metathesaurus Version of Minimal Standard Terminology Digestive Endoscopy, Italian Translation, 2001
NAN99Classification of Nursing Diagnoses, 1999
NCBI2001NCBI Taxonomy, 2001
NCI2001aNCI Thesaurus, 2001a
NCISEER_1999NCISEER ICD Neoplasm Code Mappings, 1999
NDDF01FirstDataBank National Drug DataFile, 2001-07
NEU99Neuronames Brain Hierarchy, 1999
NIC99Nursing Interventions Classification, 1999
NOC97Nursing Outcomes Classification, 1997
OMIM97OMIM, Online Mendelian Inheritance in Man, 1997
OMS94Omaha System, 1994
PCDS97Patient Care Data Set, 1997
PDQ2002Physician Data Query, 2002
PPAC98Pharmacy Practice Activity Classification , 1998
PSY2001Thesaurus of Psychological Index Terms, 2001
QMR96Quick Medical Reference (QMR), 1996
RAM99QMR clinically related terms from Randolph A. Miller, 1999
RCD99Clinical Terms Version 3 (CTV3) (Read Codes), 1999
RCDAE_1999Read thesaurus, American English Equivalents, 1999
RCDSA_1999Read thesaurus Americanized Synthesized Terms, 1999
RCDSY_1999Read thesaurus, Synthesized Terms, 1999
RUS2003Russian Translation of MeSH, 2003
RXNORM_03AARXNORM Project, META2003AA
SNM2SNOMED-2, 2
SNMI98SNOMED International, 1998

Date of Issue:08 Apr 2007 Page 54 of 67 Editors:{T Beale, S Heard}, {D Kalra, D Lloyd}

Support Information Model Terminology Package Rev 1.6.0

UMLS 2003 Terminology Identifiers
IdentifierDescription
SNOMED-CTSNOMED International Clinical Terms, 2002
SPN02Standard Product Nomenclature, 2002
SRCMetathesaurus Source Terminology Names
ULT93UltraSTAR, 1993
UMD2003UMDNS: product category thesaurus, 2003
UMLSUMLS: National Library of Medicine, USA
UWDA155University of Washington Digital Anatomist, 1.5.5
VANDF01Veterans Health Administration National Drug File, 2001
WHO97WHO Adverse Reaction Terminology, 1997
WHOFRE_1997WHOART, French Translation, 1997
WHOGER_1997WHOART, German Translation, 1997
WHOPOR_1997WHOART, Portuguese Translation, 1997
WHOSPA_1997WHOART, Spanish Translation, 1997

Editors:{T Beale, S Heard}, {D Kalra, D Lloyd} Page 55 of 67 Date of Issue:08 Apr 2007

© 2003-2006 The openEHR Foundation email: info@… web: http://www.openEHR.org

Terminology Package Support Information Model Rev 1.6.0

5.4 Class Definitions

5.4.1 TERMINOLOGY_SERVICE Class

© 2003-2006 The openEHR Foundation email: info@… web: http://www.openEHR.org

CLASSTERMINOLOGY_SERVICE
PurposeDefines an object providing proxy access to a terminology service.
InheritOPENEHR_CODE_SET_IDENTIFIERS, OPENEHR_TERMINOLOGY_GROUP_IDENTIFIERS
FunctionsSignatureMeaning
terminology (name: String):Return an interface to the terminology
TERMINOLOGY_ACCESSnamed name. Allowable names include
require• “openehr”
name /= Void and then has_terminology (name) ensure Result /= Void• “centc251” • any name from are taken from the US NLM UMLS meta-data list at http://www.nlm.nih.gov/research/umls/metaa1.html
code_set (name: String): CODE_SET_ACCESS require name /= Void and then has_code_set (name) ensure Result /= VoidReturn an interface to the code_set identified by the external identifier name (e.g. “ISO_639-1”).
code_set_for_id(id: String): CODE_SET_ACCESS require id /= Void and then valid_code_set_id (id) ensure Result /= Void has_terminology (name: String): Boolean require name /= Void and then not name.is_emptyReturn an interface to the code_set identified internally in openEHR by id. 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

Date of Issue:08 Apr 2007 Page 56 of 67 Editors:{T Beale, S Heard}, {D Kalra, D Lloyd}

Support Information Model Terminology Package Rev 1.6.0

CLASSTERMINOLOGY_SERVICE
has_code_set (name: String): Boolean require name /= Void and then not name.is_emptyTrue if code_set linked to internal name (e.g. “languages”) is available.
terminology_identifiers: List<String>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
code_set_identifiers: List<String>Set of all code set identifiers known in the terminology service.
openehr_code_sets: Hash<String, String>Set of all code sets identifiers for which there is an internal openEHR name; returned as a Hash of ids keyed by internal name.
Invariants

5.4.2 TERMINOLOGY_ACCESS Class

CLASSTERMINOLOGY_ACCESS
PurposeDefines an object providing proxy access to a terminology.
FunctionsSignatureMeaning
id: StringIdentification of this Terminology
all_codes: Set<CODE_PHRASE>Return all codes known in this terminology
codes_for_group_id (group_id: String): Set<CODE_PHRASE>Return all codes under grouper ‘group_id’ from this terminology
has_code_for_group_id (group_id: String; a_code: CODE_PHRASE): Boolean codes_for_group_name (name, lang: String): Set<CODE_PHRASE>True if ‘a_code’ is known in group ‘group_id’ in the openEHR terminology. Return all codes under grouper whose name in ‘lang’ is ‘name’ from this terminology
rubric_for_code (code, lang: String): StringReturn all rubric of code ‘code’ in language ‘lang’.
Invariantsid_exists: id /= Void and then not id.is_empty

Editors:{T Beale, S Heard}, {D Kalra, D Lloyd} Page 57 of 67 Date of Issue:08 Apr 2007

© 2003-2006 The openEHR Foundation email: info@… web: http://www.openEHR.org

Terminology Package Support Information Model Rev 1.6.0

5.4.3 CODE_SET_ACCESS Class

CLASSCODE_SET_ACCESS
PurposeDefines an object providing proxy access to a code_set.
FunctionsSignatureMeaning
id: StringExternal identifier of this code set
all_codes: Set<CODE_PHRASE>Return all codes known in this code set
has_lang (a_lang: CODE_PHRASE): BooleanTrue if code set knows about ‘a_lang’
has_code (a_code: CODE_PHRASE): BooleanTrue if code set knows about ‘a_code’
InvariantsId_valid: id /= Void and then not id.is_empty

5.4.4 OPENEHR_TERMINOLOGY_GROUP_IDENTIFIERS Class

© 2003-2006 The openEHR Foundation email: info@… web: http://www.openEHR.org

CLASSOPENEHR_TERMINOLOGY_GROUP_IDENTIFIERS
PurposeList of identifiers for groups in the openEHR terminology.
ConstantsSignatureMeaning
Terminology_id: Stringis “openehr”Name of openEHR’s own terminology
Group_id_audit_change_type: String is “audit change type”
Group_id_attestation_reason: String is “attestation reason”
Group_id_composition_category: Stringis “composition category”
Group_id_event_math_function: String is “event math function”
Group_id_instruction_states: Stringis “instruction states”
Group_id_instruction_transitions: String is “instruction transitions”
Group_id_null_flavours: String is “null flavours”

Date of Issue:08 Apr 2007 Page 58 of 67 Editors:{T Beale, S Heard}, {D Kalra, D Lloyd}

Support Information Model Terminology Package Rev 1.6.0

CLASSOPENEHR_TERMINOLOGY_GROUP_IDENTIFIERS
Group_id_property: Stringis “property”
Group_id_participation_function: Stringis “participation function”
Group_id_participation_mode: String is “participation mode”
Group_id_subject_relationship: String is “subject relationship”
Group_id_setting: String is “setting”
Group_id_term_mapping_purpose: String is “term mapping purpose”
Group_id_version_lifecycle_state: Stringis “version lifecycle state”
FunctionsSignatureMeaning
valid_terminology_group_id (an_id: String): BooleanValidity function to test if an identifier is in the set defined by this class.
Invariants

5.4.5 OPENEHR_CODE_SET_IDENTIFIERS Class

CLASSOPENEHR_CODE_SET_IDENTIFIERS
PurposeList of identifiers for code sets in the openEHR terminology.
ConstantsSignatureMeaning
Code_set_id_character_sets: String is “character sets”
Code_set_id_compression_algorithms: Stringis “compression algorithms”
Code_set_id_countries: String is “countries”
Code_set_id_integrity_check_algorithms: Stringis “integrity check algorithms”
Code_set_id_languages: String is “languages”

Editors:{T Beale, S Heard}, {D Kalra, D Lloyd} Page 59 of 67 Date of Issue:08 Apr 2007

© 2003-2006 The openEHR Foundation email: info@… web: http://www.openEHR.org

Terminology Package Support Information Model Rev 1.6.0

CLASSOPENEHR_CODE_SET_IDENTIFIERS
Code_set_id_media_types: String is “media types”
Code_set_id_normal_statuses: String is “normal statuses”
FunctionsSignatureMeaning
valid_code_set_id (an_id: String): BooleanValidity function to test if an identifier is in the set defined by this class.
Invariants

Date of Issue:08 Apr 2007 Page 60 of 67 Editors:{T Beale, S Heard}, {D Kalra, D Lloyd}

© 2003-2006 The openEHR Foundation email: info@… web: http://www.openEHR.org

Support Information Model Measurement Package Rev 1.6.0

Last modified 10 years ago Last modified on Aug 27, 2008, 8:33:05 PM