This project has moved. For the latest updates, please go here.

Concept Data Model

One of the central design principles in Open Immunize is that of customizable code and valuesets to be used within the OpenIZ system. The concept subset of tables within the datamodel are used to store the master dictionary of concepts used within the OpenIZ system.

There are four major facets of the concept system in OpenIZ:

  • Concept Classes: A concept class is a classification of what a concept represents. Concept classes are used for validation and organizing the concept dictionary. Examples of a concept class could be UnitOfMeasure for concept which are units of measure.
  • Concepts: A concept is a central idea of an object or attribute of an object within the OpenIZ database. A concept is, technically speaking, an abstract object which describes a real world thing. For example, the concept of an Arm, or the concept of OPV.
  • Reference Terms: A reference term is a wire level representation of a concept. A reference term represents a manner in which a concept can be represented to another system. For example, the concept of OPV in the HL7 CVX reference term set is ‘01’.
  • Concept Sets: A concept set represents a collection of concept that may be used for a particular purpose. Concept sets are used to restrict the complete set of concepts within the OpenIZ database to those applicable in a particular scope. For example, an entity classification concept must be selected from the EntityClass concept set.

The following diagram illustrates the relationship between the various concept tables in the OpenIZ data model.

image

 

By default, several concepts are included in the default installation of OpenIZ including language codes, vaccine codes, entity and act classifications, status codes, etc. Additional codes may be added by users and/or may be customized to their environment.

Table

Column

Type

Description

ConceptClass

(None)

N/A

The concept class table stores a complete list of concept classifications.

ConceptClassId

UUID

Represents a unique identifier for the concept classification.

Name

VARCHAR

Represents a human readable name for the concept classification. Example: Class Codes

Mnemonic

VARCHAR

Represents a system mnemonic for the concept class. The mnemonic does not change even if the human readable Name column does.

Concept

(None)

N/A

The Concept table stores the key data related to a concept. The Concept table represents immutable concept properties that cannot be changed once a concept is created.

ConceptId

UUID

A unique identifier for the concept.

IsSystemConcept

BIT

An indicator which identifies whether the concept is a system concept (i.e. no further versions can be created, cannot be obsoleted, etc.).

ConceptVersion

 

 

 

 

 

 

 

 

 

(None)

N/A

The concept version table is used to store mutable properties of a concept. All edits to a concept’s attributes result in a new version being created in the ConceptVersion table.

ConceptVersionId

UUID

A unique identifier for the concept version.

ConceptId

UUID

The concept to which the version applies.

CreationTime

DATETIME

The instant in time when the concept version became active (was created). Should default to the current database timestamp.

CreatedBy

UUID

The user who was responsible for the creation of the version, or the system user if the installation process created the concept version.

ObsoletionTime

DATETIME

When present, identifies the time when the concept version did become obsolete. This is used whenever a new version is created, the old version is obsoleted.

ObsoletedBy

UUID

Indicates the user who was responsible for the obsoletion of the record.

ReplacesVersionId

UUID

Identifies the concept version that the current version of the concept replaces.

ConceptClassId

UUID

Identifies the classification of the concept as of the version tuple.

SysMnemonic

VARCHAR

A unique mnemonic used by the system to lookup the concept. The system mnemonic is primarily used for validation purposes where a concept’s identifier does not represent a consistent identifier across deployments.

ConceptName

 

 

 

 

 

 

 

 

(None)

N/A

The concept name table represents a series of human readable names for the concept at a particular version. This facilitates searches as well as translation.

ConceptNameId

UUID

A unique identifier for the concept name

ConceptId

UUID

The concept to which the concept name applies.

EffectiveVersionId

UUID

The version of the concept when the name did become active.

ObsoleteVersionId

UUID

The version of the concept when the concept name was obsoleted.

Name

VARCHAR

The human readable display name for the concept.

LanguageCode

CHAR

The ISO639-2 language code for the concept display name.

PhoneticCode

VARCHAR

The phonetic code for the display name. This is used for phonetic “sounds-like” searches of concepts.

PhoneticAlgorithmId

UUID

The phonetic algorithm used to generate the phonetic code. This allows deployments to use METAPHONE, SOUNDEX or custom phonetic algorithms appropriate for the language used.

ConceptRelationship

 

 

 

 

 

 

(None)

N/A

The concept relationship table is used to link concepts to one another. Concept relationships can represent equivalency between concepts, parent/child relationships, etc.

ConceptRelationshipId

UUID

The unique identifier for the relationship.

SourceConceptId

UUID

The concept that represents the source of the relationship.

 

TargetConceptId

UUID

The concept which represents the target of the relationship

EffectiveVerisonId

UUID

Identifies the version of the source concept where the relationship did become active.

ObsoleteVersionId

UUID

Identifies the version of the source concept where the relationship is no longer active.

RelationshipTypeId

UUID

Identifies the type of relationship the concepts have.

ConceptRelationshipType

 

 

 

(None)

N/A

The concept relationship type represents allowed types of relationships that a concept can have.

ConceptRelationshipTypeId

UUID

The unique identifier for the concept relationship

Name

VARCHAR

The human readable name of the concept relationship type.

Mnemonic

VARCHAR

An invariant value that represents the type of relationship typically used by software components.

ReferenceTerm

 

 

 

(None)

N/A

A reference term represents a wire level code that can be used to represent the concept.

ReferenceTermId

UUID

A unique identifier for the reference term.

CodeSystemId

UUID

The code system in which the reference term belongs.

Mnemonic

VARCHAR

The wire level code mnemonic for the reference term.

ConceptReferenceTerm

 

 

 

 

 

 

(None)

N/A

An associative entity that links a concept to one or more reference terms and indicates the strength of the map.

ConceptReferenceTermId

UUID

A unique identifier for the concept reference term map

ConceptId

UUID

The concept to which the reference term is linked.

EffectiveVersionId

UUID

The version of the concept where the reference term map became effective.

ObsoleteVersionId

UUID

The version of the concept where the reference term map became obsolete.

ReferenceTermId

UUID

The reference term which is associated with the concept.

RelationshipTypeId

UUID

Identifies the relationship (or strength) that the reference term has with the concept. For example: SAME_AS, NARROWER_THAN, etc.

CodeSystem

 

 

 

 

 

 

 

 

 

 

 

(None)

N/A

The code system table represents a master list of all code systems from which a reference term can be drawn.

CodeSystemId

UUID

A unique identifier for the code system entry.

Name

VARCHAR

A human readable name for the code system. For example: ICD10

Oid

VARCHAR

The object identifier that identifies the code system in an interoperable manner.

Authority

VARCHAR

The organization name who has authority over the code system. Example: World Health Organization.

CreationTime

DATETIME

The time when the code system entry was created. Default to the current timestamp in the RDBMS.

CreatedBy

UUID

The user that was responsible for the creation of the code system.

ObsoletionTime

DATETIME

When populated, indicates the time when the code system record is obsolete.

ObsoletedBy

UUID

Identifies the user who was responsible for obsoleting the record.

ObsoletionReason

VARCHAR

The textual description as to why the record was obsoleted.

Url

VARCHAR

A URI that uniquely identifies the code system. This is primarily used when exposing the code system over REST interfaces.

Version

VARCHAR

A textual description of the version of the code system that this record represents.

ReferenceTermDisplayNames

(None)

N/A

Like the ConceptName table, the reference term display name table is used to identify human readable display names associated with the reference term.

ReferenceTermDisplayNameId

UUID

The unique identifier for the reference term.

ReferenceTermId

UUID

The reference term to which the display name applies.

LanguageCode

CHAR

The ISO639-2 language code that identifies the language in which the display name is represented.

DisplayName

VARCHAR

The human readable name for the reference term.

CreationTime

DATETIME

The time when the display name became active.

CreatedBy

UUID

Identifies the user that was responsible for the creation of the reference term display name.

ObsoletionTime

DATETIME

When present, identifies the time when the record should no longer be used.

ObsoletedBy

UUID

Identifies the user that was responsible for obsoleting the display name.

ObsoletionReason

VARCHAR

A textual description as to why the display name was obsoleted.

PhoneticCode

VARCHAR

Represents a phonetic code that can be used in “sounds-like” queries.

PhoneticAlgorithmId

UUID

Identifies the phonetic algorithm that was used to generate the phonetic code. This allows METAPHONE or SOUNDEX or some other custom language appropriate phonetic algorithm to be used.

Last edited Jan 13, 2016 at 7:47 PM by jf03cg, version 2