This subsection explains features that apply to all SNOMED CT release files.
The following rules apply to all SNOMED CT Release Files.
SNOMED CT Release Files are UTF-8 encoded, tab delimited text files.
Each line, including the final line, ends with a carriage return character (hex 0D) followed by a line feed character (hex 0A).
The first line of each file, contains the names of each column (also know more generally as a field).
Field names are represented using lower-camel-case
First letter of name is lower case
First letter of each words apart from the first word in the name is upper case
All other letters are lower case.
For example:
id
term
typeId
relationshipGroup
The name, datatype and usage of the fields in each file are specified in the following sections of this guide
Each component has an associated active field, which can take values of true (1) or false (0). The meaning of this flag is described by component type in the following table:
Behavior of Active and Inactive Components
Component Type
Active value
Component behavior when the most recent row representing a component has the specified active value
Concept
True
The concept is intended for active use.
All active descriptions for which the conceptId refers to this concept are valid. Visibility of these active descriptions depends on information contained in applicable refset members (for example, whether the description is in a language dialect reference set that is currently enabled in the vendor's system).
All active relationships of which it is the sourceId or destinationId are applicable.
Concept
False
The concept is not intended for active use. However, it remains a valid concept for historical purposes as part of the SNOMED CT commitment to the principle of ' concept permanence'.
Valid descriptions of the concept remain active allowing it to be appropriately viewed in human-readable form.
An inactive concept cannot be the sourceId, destinationId or typeId of an active relationship.
Description
True
The description contains a term that is a valid description of the concept referred to by the conceptId.
An active description may refer to an inactive concept, in which case the term provides a valid description of that inactive concept. Text based searches should (by default) include only active descriptions that refer to active concepts.
Description
False
The description is not a valid and the associated term should no longer be regarded as being associated with the concept referred to by conceptId.
Relationship
True
The relationship represents a valid association of the type specified by the typeId, between two concepts referred to by the sourceId and destinationId ;
An inactive concept cannot be the sourceId, destinationId or typeId of an active relationship.
Relationship
False
The relationship is not valid. An inactive relationship should be ignored as it does not apply.
This does not necessarily mean that the association indicated by the relationship does not apply. The relationship may be inactive because it is redundant and inferable based on other active relationships.
An inactive relationship may refer to either active or inactive components.
Refset member
True
The refset member contains valid information applicable to the component referred to by the referencedComponentId .
The component referred to by the referencedComponentId may be active or inactive. An active refset member cannot make an inactive component active but may provide related information that continues to be relevant (e.g. the reason for inactivation).
Refset member
False
The refset member is not valid. An inactive refset member should be ignored. The information it contains is not applicable to the component referred to by referencedComponentId.
The following data types are used in the release files:
Data Types Used in Release Files
Data Type
Description
SCTID
A SNOMED CT identifier, between 6 and 18 digits long, as described in .
This data type is used to identify SNOMED components, to refer to a component from another component or from a reference set, and also to represent the values for concept enumerations.
Concept enumeration is the a set of SNOMED CT concept identifiers used to represent values for a property of a SNOMED CT component or reference set member.
Notes
Concept enumeration serves the same purpose as more general approaches to providing enumerated lists of values (i.e. assigning a number to a value). However, the use of SNOMED CT concept identifier allows access to the human readable meaning of each enumeration using descriptions in the same way for other concepts.
The SNOMED CT concepts used to represent concept enumerations are usually subtype children (or descendants) of concepts in the SNOMED CT metadata hierarchy. Each possible value is represented by a single child concept. This allows updates to the permitted values to be tracked using the component history mechanism.
Example
Concept enumerations for description.typeId:
900000000000446008 |Description type (core metadata concept)|
900000000000003001 |Fully specified name (core metadata concept)|
900000000000013009 |Synonym (core metadata concept)|
Concept enumeration values (subtypes of 900000000000442005 |Core metadata concept|
900000000000550004 |Definition (core metadata concept)|
900000000000449001
|Characteristic type (core metadata concept)|
Each subtype of this concept represents a value that can be applied to the Description. caseSignificanceId field. This is used to indicate whether the text of the term can be modified to by switching characters from upper to lower case (or vice-versa).
900000000000449001 |Characteristic type (core metadata concept)|
Each subtype of this concept represents a value that can be applied to the Relationship. characteristicTypeId field. This is used to indicate whether a Relationship forms part of the definition of the source concept.
900000000000450001
|Modifier (core metadata concept)|
Each subtype of this concept represents a value that can be applied to the Relationship. modifierId field. This is used to indicate the type of Description Logic (DL) restriction (some, all, etc.) that applies to the Relationship.
900000000000453004 |Identifier scheme (core metadata concept)|
Each subtype of this concept represents a value that can be applied to the Identifier. identifierSchemeId field. This is used to indicate the scheme to which the Identifier value belongs.
UUID
A Universally Unique Identifier is a 128-bit unsigned generated using a standard algorithm.
UUIDs are represented as strings of hexadecimal characters split by - characters as points specified by the UUID standard.
Integer
A 32-bit signed integer.
String
UTF-8 text of a specified length.
Boolean
A Boolean value, represented as one of two possible integer values (1 = true, 0 = false).
Time
A date and time format expressed as a text string in line the basic representation specified in the ISO 8601 standard.
Where only date is required the format is YYYYMMDD (e.g. 20180125 refers to 25th January 2018)
Where a time is also required the YYYYMMDDThhmmssZ (e.g. 20180125T123000Z refers to 12:30 UTC on 25th January 2018)
The time should be expressed as UTC, as indicated by the trailing "Z".
Concept
Comment
900000000000443000
|Module (core metadata concept)|
Each subtype of this concept represents a development module. These concepts provide values to the moduleId field that is present in all SNOMED CT component file. The value indicates the module within which a component was created and is being maintained.
900000000000444006
|Definition status (core metadata concept)|
Each subtype of this concept represents a value that can be applied to the concept. definitionStatusId field. This is used to indicate whether the current set of defining Relationships applied to a concept are sufficient to fully-define it relative to its supertypes.
900000000000446008 |Description type (core metadata concept)|
Each subtype of this concept represents a value that can be applied to the Description. typeId field. This is used to indicate whether the Description represents a Fully Specified Name, a synonymous term, a definition or some other symbolic or textual representation of the associated concept.
The first four columns in all release files are shown in Table 3.1.3-1. The next three sections of the specification explain the ways in which these fields are used to support identification, versioning and modularization.
Fields present in all release files
Field
Data type
Purpose
Mutable
The effectiveTime and active fields in the release file enable the use of a "log style" append-only data model to track all changes to each component, providing full traceability. Once released, a row in any of these files will always remain unchanged. Historic data is supplied in the RF2 release files, dating back to the first release in RF1 format in 2002.
In order to change the properties of a current component a new version of that component is created with the same identifier. This done by adding a new row to the relevant release file, with the column values updated to represent the changes. The active field must be set to true and the timestamp in the effectiveTime field indicating the nominal date on which the new version was released. Note that the existing row is not changed in any way.
To inactivate a component, a new row is added, containing the same data as the final valid version of the component, but with the active field set to false and the timestamp in the effectiveTime fi eld indicating the nominal date of the release in which the final version ceased being valid. Note again that the existing row is not changed in any way.
Where editorial policy does not allow a particular property of a component to be changed whilst keeping the same Identifier, the component as a whole is inactivated (as described above), and a new row added with a new id, the effectiveTime set to the nominal date of the release in which this version of the component became valid, and the active field set to true.
It is thus possible to see both the current values and any historical values of a component at any point in time.
New content, changes and inactivations must have the effectiveTime for the release that it appears in. Pre-releases for testing may set the effectiveTime as the date of the future scheduled release but in general the effectiveTime must not be later that the scheduled release data, Where there is a business requirement for specifying a future activation date for some components, this may be represented using reference sets.
Part of Primary Key
id
SCTID
Uniquely identifies a component.
NO
YES (Full/Snapshot)
id
UUID
Uniquely identifies a reference set member.
NO
YES (Full/Snapshot)
effectiveTime
Time
Specifies the inclusive date at which this rows state became the then current valid state of the identified component or reference set member.
YES
YES (Full) Optional (Snapshot)
active
Boolean
Specifies whether the state of the component or reference set member was active or inactive from the nominal release date specified by the effectiveTime.
YES
NO
moduleId
SCTID
Identifies the module this component or reference set member is currently maintained in. Set to a child of 900000000000443000
|Module| within the metadata hierarchy.
YES
NO
The following example demonstrates how the history mechanism works on the Concept, but the same rules apply equally well to the Description, Relationship and Reference set member files. In this example, the descriptions associated with the moduleId and definitionStatusId have been shown in place of their SCTID values.
A new concept (101291009) is added on the 1st July 2007:
History Example - Concept Added
Id
effectiveTime
active
moduleId
definitionStatusId
101291009
20070701
1
In the following release (on 1st January 2008), the concept is moved from |Module 1| to |Module 2|. Because the moduleId field is not immutable, the concept may be updated simply by adding a new record with the same Id.
History Example - Module Change
Id
effectiveTime
active
moduleId
definitionStatusId
101291009
20070701
1
In the following release (on 1st July 2008), the concept is changed from being Primitive to being Fully defined.
History Example - Definition Status Changed
Id
effectiveTime
active
moduleId
definitionStatusId
101291009
20070701
1
In the following release (on 1st January 2009), the concept is inactivated:
History Example - Concept Made Inactive
Id
effectiveTime
active
moduleId
definitionStatusId
101291009
20070701
1
Each SNOMED CT component is managed and maintained in a module identified by its moduleId field.
A SNOMED CT module is defined as a group of SNOMED CT components and/or reference set members managed, maintained, and distributed as a unit.
Components and reference set members that are part of the same module share the same moduleId value.
All modules , except the 900000000000012004 | SNOMED CT model component module| , have dependencies on other modules specified by the Module Dependency Reference Set.
components and reference set members, that are part of the same module, share the same moduleId value.
components and reference set members are part of only one module , at any given time.
The organization responsible for maintaining an extension must:
create and maintain at least one module identified by a moduleId that it has created;
apply a moduleId that it has created to all components and reference set members in its extension ;
The organization responsible for maintaining an extension may:
create and maintain multiple modules ;
organize its components and reference set members within the modules it manages in a way that best meets its business needs;
move a component or reference set member between its modules by creating a revised version of that component or reference set member with a different
Components and reference set members may be moved between modules maintained by different organizations. However, such moves must only be made:
with the consent of the organizations responsible for both the source and target modules; and
in accordance with rules specified by SNOMED International.
In the last example, as well as inactivating the concept (active=0), the definitionStatusId is changed from 900000000000073002 |Defined| to 900000000000074008 |Primitive|. In practice this change is not essential since the value of data columns is ignored when a component is inactive. Although the change is unnecessary and insignificant, it typically occurs since all the relationships of an inactive concept must also be inactive, and as a result, from the perspective of the authoring environment the concept cannot be regarded as 900000000000073002 |Defined|.
|Module 1|
900000000000074008 |Primitive|
|Module 1|
900000000000074008 |Primitive|
101291009
20080101
1
|Module 2|
900000000000074008 |Primitive|
|Module 1|
900000000000074008 |Primitive|
101291009
20080101
1
|Module 2|
900000000000074008 |Primitive|
101291009
20080701
1
|Module 2|
900000000000073002 |Defined|
|Module 1|
900000000000074008 |Primitive|
101291009
20080101
1
|Module 2|
900000000000074008 |Primitive|
101291009
20080701
1
|Module 2|
900000000000073002 |Defined|
101291009
20090101
0
|Module 2|
900000000000074008 |Primitive|