...
Purpose
The
Concept |
---|
ShowParts | term |
---|
t | 900000000000534007|Module dependency reference set| |
---|
|
represents dependencies between different
release
. In each case, the dependency indicates which
Specref |
---|
RefType | (field) |
---|
t | targetEffectiveTime |
---|
|
of each particular
a given
Specref |
---|
RefType | (field) |
---|
t | sourceEffectiveTime |
---|
|
of the dependent
requires.
...
Data structure
The
...
The
Gloss |
---|
t | Module dependency reference set| |
---|
|
is is a
Specref |
---|
RefType | (data type) |
---|
t | String |
---|
|
-
Specref |
---|
RefType | (data type) |
---|
t | String |
---|
|
Gloss |
---|
PreSpace | false |
---|
t | reference set |
---|
|
which is used to represent dependencies between
, taking account of
versioning. Its structure is shown in the following table.
...
Field
...
Data type
...
Purpose
Refset spec table |
---|
Size | fs7 |
---|
RefsetType | Module Dependency Reference Set |
---|
|
|
Rules and Guidance
Introduction to Modules
...
Each row in the release files for components and reference set members has a
...
...
. This refers to the ...
...
...
...
that the component is maintained in. Each module is either part of the Gloss |
---|
PreSpace | false |
---|
t | SNOMED International Release |
---|
|
or part of a single Gloss |
---|
PreSpace | false |
---|
t | SNOMED CT Extension |
---|
|
. The ...
...
has a
Gloss |
---|
PreSpace | false |
---|
t | partition-id |
---|
|
which indicates whether it is part of the Gloss |
---|
PreSpace | false |
---|
t | SNOMED International Release |
---|
|
and, if not, its Gloss |
---|
PreSpace | false |
---|
t | namespace identifier |
---|
|
indicates the Gloss |
---|
PreSpace | false |
---|
t | SNOMED CT Extension |
---|
|
that it belongs to.A module is simply a collection of
Gloss |
---|
PreSpace | false |
---|
t | SNOMED CT components |
---|
|
maintained as a unit by a single organization. It is the organization 's responsibility to organize the components in each that it is responsible for into one or more modules, in a way that best fits its business needs.A module is represented by a
of Concept |
---|
t | 900000000000443000|Module| |
---|
|
in the metadata . The immediate subtype descendants of Concept |
---|
t | 900000000000443000|Module| |
---|
|
represent groups of modules maintained by an organization and subtypes of these can be used to arrange that organizations modules into a number of groups. For example, all modules maintained by Gloss |
---|
PreSpace | false |
---|
t | SNOMED International |
---|
|
will be of Concept |
---|
t | 900000000000445007|SNOMED International maintained module| |
---|
|
....
Specref |
---|
RefType | (field) |
---|
t | effectiveTime |
---|
|
...
...
The inclusive date or time at which this version of the identified
became the current version. The current version of this
at time T is the version with the most recent Specref |
---|
RefType | (field) |
---|
t | effectiveTime |
---|
|
prior to or equal to time T . ...
...
Specref |
---|
RefType | (data type) |
---|
t | Boolean |
---|
|
...
The state of the identified
as at the specified Specref |
---|
RefType | (field) |
---|
t | effectiveTime |
---|
|
. If
= 1 (true) the is part of the current version of the set, if = 0 (false) the is not part of the current version of the set. ...
...
...
...
...
At any point in time a
must be in one, and only one module. It is possible for components and reference set members to be moved between modules (subject to constraints explained elsewhere). In this case, a new row is added to the release file with the same but with a new Specref |
---|
RefType | (field) |
---|
t | effectiveTime |
---|
|
...
The value must be a
of Concept |
---|
t | 900000000000443000|Module (core metadata concept)| |
---|
|
within the metadata . and a new
. Introduction to Module Dependencies
Each
must include one or more modules. Each module must be part of either the Gloss |
---|
PreSpace | false |
---|
t | SNOMED International Release |
---|
|
or one and only one . A module may not move from one to another over time. If components or reference set members in a module are to be moved from an to the Gloss |
---|
PreSpace | false |
---|
t | SNOMED International Release |
---|
|
or to another , they must either be added to an existing or newly created module maintained by the destination organization.In this
, also refers to the dependent source . Thus each contains the rows of the Concept |
---|
t | 900000000000534007|Module dependency reference set| |
---|
|
that represent its dependencies on other . ...
...
Identifies the
to which this belongs. ...
The
Concept |
---|
t | 900000000000443000|Module| |
---|
ShowFormat | inline |
---|
|
Gloss |
---|
PreSpace | false |
---|
t | sub-hierarchy |
---|
|
does NOT represent dependencies between module. Instead, module dependencies are modeled using the Concept |
---|
t | 900000000000534007|Module dependency reference set| |
---|
|
...
Specref |
---|
RefType | (field) |
---|
t | referencedComponentId |
---|
|
...
...
...
...
.
...
At the point of release, if any
within a module has changed, then a new row must be added to the Concept |
---|
ShowParts | term |
---|
t | 900000000000534007|Module dependency reference set| |
---|
|
for each dependency of that module. The ...
...
Concept |
---|
t | 900000000000443000|Module (core metadata concept)| |
---|
|
...
Specref |
---|
RefType | (field) |
---|
t | sourceEffectiveTime |
---|
|
...
...
The effective time of the dependent source
(identified by ). This specifies a version of that , consisting of all that have the same as this in their states as at the specified Specref |
---|
RefType | (field) |
---|
t | targetEffectiveTime |
---|
|
. ...
Specref |
---|
RefType | (field) |
---|
t | targetEffectiveTime |
---|
|
...
...
The effective time of the target
required to satisfy the dependency (identified by Specref |
---|
RefType | (field) |
---|
t | referencedComponentId |
---|
|
). This specifies a version of that , consisting of all with the specified by Specref |
---|
RefType | (field) |
---|
t | referencedComponentId |
---|
|
in their states as at the specified Specref |
---|
RefType | (field) |
---|
t | targetEffectiveTime |
---|
|
. ...
Module version dependencies are represented using a single
Concept |
---|
t | 900000000000534007|Module dependency reference set| |
---|
|
. Thus all module dependency rows have the same refsetId ( Concept |
---|
t | 900000000000534007|Module dependency reference set (foundation metadata concept)| |
---|
|
). It is the responsibility of the organization owning and maintaining a dependent module to identify all modules on which it depends. They do this by adding rows to the
Concept |
---|
t | 900000000000534007|Module dependency reference set| |
---|
|
within the dependent module. Because these added member must be in the dependent module, the of the member record is also the identifier of the dependent (source) module. The target module on which the source module depends is identified by the Specref |
---|
RefType | (field) |
---|
t | referencedComponentId |
---|
|
. A module version may depend on one or more other module versions, and many module versions may have a dependency on a single module version. Cyclic module version dependencies are not allowed. If module-A depends on module-B, then module-B cannot depend on module-A.
Dependencies are not transitive and this means that dependencies cannot be inferred from a chain of dependencies. If module-A depends on module-B and module-B depends on module-C, the dependency of module-A on module-C must still be stated explicitly.
Any release should consist of a set of module versions that are certified as being compatible. Each release should also identify other module versions that it is dependent on even when these are outside the scope of the release. For example, the dependencies of modules in an Extension on the International Release must be stated.
Dependencies are specified between module versions, not just dependencies between modules. Therefore, it is possible to specify a dependency from a module released on one date to an earlier version of another module. The version of the dependent module is specified by the
Specref |
---|
RefType | (field) |
---|
t | sourceEffectiveTime |
---|
|
and the version of the module on which it depends is specified by the Specref |
---|
RefType | (field) |
---|
t | targetEffectiveTime |
---|
|
. Note: Current practice assumes the refset.id column contains the same identifier for all versions of the dependencies between the same pair of modules. This approach means that at any given time only one version of each module has effective dependencies. Therefore, to review the dependencies of an earlier version, a snapshot for an earlier time must be checked. An alternative approach has been suggested by some people in which a new identifier is allocated to each dependency of each module. This would then mean that all past dependencies would be visible in a snapshot view. It would also mean that it would be possible release updated dependencies for an existing module version while also releasing more up-to-date versions of the same module with different dependencies. This added flexibility comes at the price of additional complexity and for the time-being the
continues to use the simpler approach in which each new version of a dependency supersedes the dependency between earlier versions of the same pair of modules. ...
The following metadata in the "Foundation metadata
" supports this : ...
Concept |
---|
t | 900000000000454005|Foundation metadata concept| |
---|
|
of the added rows must set to the date of the new release. The updated Concept |
---|
ShowParts | term |
---|
t | 900000000000534007|Module dependency reference set| |
---|
|
records indicate that some components within the module have been updated in this release. If there have been no additions, updates or inactivations of components or reference set members within a module, then a new Concept |
---|
ShowParts | term |
---|
t | 900000000000534007|Module dependency reference set| |
---|
|
records need not be added unless there is a requirement to declare that the unchanged module is compatible with a later release of the module(s) on which it dependents.Identifying and Versioning Module Dependencies
id
The recommended practice is for the refset.id column to contain the same identifier for all versions of the dependencies between the same pair of modules. This approach means that at any given time only one version of each module has effective dependencies. The dependencies of earlier versions can be reviewed by reviewing a snapshot for the effectiveTime of the earlier release.
Info |
---|
title | Value of the id column |
---|
|
An alternative approach has been suggested by some people in which a new identifier is allocated to each dependency of each module. This would then mean that all past dependencies would be visible in a snapshot view. It would also mean that it would be possible release updated dependencies for an existing module version while also releasing more up-to-date versions of the same module with different dependencies. This added flexibility comes at the price of additional complexity and for the time-being the International Release modules continue to use the simpler approach in which each new version of a dependency supersedes the dependency between earlier versions of the same pair of modules. |
effectiveTime
The effectiveTime of at least one row for each pair of modules should be the same as the sourceEffectiveTime. Otherwise, there will be a period of time when a snapshot view will not show the dependencies. However, it is theoretically possible for an additional row to be added with a later effectiveTime in cases where an otherwise unchanged release of an extension, declares itself to be compatible with an updated release of the target module (in this case the effectiveTime and targetEffectiveTime are changed but the sourceEffectiveTime remains unchanged.
active
A module dependency only needs to be inactivated if the dependency is found to be erroneous. This is because, the module dependency is specific to a particular version of the source and target module. Therefore, if that dependency was valid at the outset it remains valid indefinitely in respect of those specified module versions, even if the dependencies between subsequent versions differ.
refsetId
...
Concept |
---|
t | 900000000000455006|Reference set| |
---|
|
...
Module version dependencies are represented using a single
Concept |
---|
t | 900000000000534007|Module dependency |
---|
|
...
Each component within a
references a . This is the that the component is currently mastered in (from the Specref |
---|
RefType | (field) |
---|
t | effectiveTime |
---|
|
held on the component record). A module is simply a collection of that are maintained as a unit by a single organization. It is the organization 's responsibility to organize the components in each that it is responsible for into one or more modules, in a way that best fits its business needs. A module is modeled by a
of Concept |
---|
t | 900000000000443000|Module| |
---|
|
in the metadata . The Concept |
---|
t | 900000000000443000|Module| |
---|
|
sub - is organized by a maintaining organization into a number of groups. For example, all modules maintained by will be of Concept |
---|
t | 900000000000445007|SNOMED International maintained module| |
---|
|
. The Concept |
---|
t | 900000000000443000|Module| |
---|
ShowFormat | inline |
---|
|
models modules maintained by each organization and does NOT model module dependencies. Instead, module dependencies are modeled using the Concept |
---|
t | 900000000000534007|Module dependency reference set| |
---|
|
. At the point of release, if any
within a module has changed, then a new row will be added to Concept |
---|
t | 900000000000534007|Module dependency reference set| |
---|
|
for the module's , with the Specref |
---|
RefType | (field) |
---|
t | effectiveTime |
---|
|
set to the date of the new release, irrespective of whether the other fields in the module record itself have changed. The updated |Module| record identifies that some components within the module have been updated in this release. Where no components within a module have been updated, then a new module record will not be added and the module's Specref |
---|
RefType | (field) |
---|
t | effectiveTime |
---|
|
field will not change from the previous release. Each
will be in one, and only one . The module that a component is mastered in may change over time, and when this happens, the component's field will be updated (in the usual way by appending a row for the component). Each module will be in one and only one
. Modules will not straddle . The that a module resides in is defined by the of the module. A module may not move from one to another over time. If the components within a module are to be moved to another , then a new module must be created within the destination to host the components that are to be transferred. There may be more than one module in an
. ...
. Thus all module dependency rows have the same refsetId ( Concept |
---|
t | 900000000000534007|Module dependency reference set (foundation metadata concept)| |
---|
|
).It is the responsibility of the organization owning and maintaining a dependent module to identify all modules on which it depends. They do this by adding rows to the
Concept |
---|
t | 900000000000534007|Module dependency reference set| |
---|
|
within the dependent module. Because these added member must be in the dependent module, the of the Gloss |
---|
PreSpace | false |
---|
t | reference set |
---|
|
member record is also the identifier of the dependent (source) module.Module Identification
Source Module (moduleId)
The
column not only indicates that this reference set member is in the specified module, it also indicates that this is the module that is the source of the dependency. As a result, in this reference set the column is immutable (i.e Mutable=NO). This is an exception to the usual rule and implies that a member of this reference set cannot move from one module to another.Target Module (referencedComponentId)
The target module on which the source module depends is identified by the
Specref |
---|
RefType | (field) |
---|
t | referencedComponentId |
---|
|
. Like the source module this is also immutable and this implies that if a module ceases to be dependent on another module, a new row inactivating the dependency can be added but the same member cannot be used to represent a different dependency (even if that dependency is a direct replacement of the inactivated dependency). However as noted above, A module version may depend on one or more other module versions, and many module versions may have a dependency on a single module version. Cyclic module version dependencies are not allowed. If module-A depends on module-B, then module-B cannot depend on module-A.
Dependencies are not transitive and this means that dependencies cannot be inferred from a chain of dependencies. If module-A depends on module-B and module-B depends on module-C, the dependency of module-A on module-C must still be stated explicitly.
Any release should consist of a set of module versions that are certified as being compatible. Each release should also identify other module versions that it is dependent on even when these are outside the scope of the release. For example, the dependencies of modules in an Extension on the International Release must be stated.
Dependencies are specified between module versions, not just dependencies between modules. Therefore, it is possible to specify a dependency from a module released on one date to an earlier version of another module. The version of the dependent module is specified by the
Specref |
---|
RefType | (field) |
---|
t | sourceEffectiveTime |
---|
|
and the version of the module on which it depends is specified by the Specref |
---|
RefType | (field) |
---|
t | targetEffectiveTime |
---|
|
.Metadata
The following metadata in the "Foundation metadata
" supports this Gloss |
---|
PreSpace | false |
---|
t | reference set |
---|
|
: Scg expression |
---|
|
900000000000454005 |Foundation metadata concept|
900000000000455006|Reference set|
900000000000534007 |Module dependency|
|
Excerpt Include |
---|
| REUSE:Notes on Reference Set Example Tables |
---|
| REUSE:Notes on Reference Set Example Tables |
---|
nopanel | true |
---|
|
...
Descriptor
The table below shows the descriptor that defines the structure of the
Concept |
---|
t | 900000000000534007|Module dependency reference set| |
---|
|
.
refsetId | referencedComponentId (Referenced component) | attributeDescription (Attribute description) | attributeType (Attribute type) | attributeOrder (Attribute order) |
---|
|
|
---|
Concept |
---|
t | 900000000000456007|Reference set descriptor| |
---|
|
| Concept |
---|
t | 900000000000534007|Module dependency| |
---|
|
| Concept |
---|
t | 900000000000535008|Dependency target| |
---|
|
| Concept |
---|
t | 900000000000461009|Concept type component| |
---|
|
| 0 |
|
|
Concept |
---|
t | 900000000000456007|Reference set descriptor| |
---|
|
| Concept |
---|
t | 900000000000534007|Module dependency| |
---|
|
| Concept |
---|
t | 900000000000536009|Source effective time| |
---|
|
| Concept |
---|
t | 900000000000475002|Time| |
---|
|
| 1 |
|
|
Concept |
---|
t | 900000000000456007|Reference set descriptor| |
---|
|
| Concept |
---|
t | 900000000000534007|Module dependency| |
---|
|
| Concept |
---|
t | 900000000000537000|Target effective time| |
---|
|
| Concept |
---|
t | 900000000000475002|Time| |
---|
|
| 2 |
Note: The table above omits the initial four columns of data present in the release file. These follow the standards versioning pattern
,
Specref |
---|
RefType | (field) |
---|
t | effectiveTime |
---|
|
,
,
. Additionally, to aid understanding, the table above also shows the
from one of the
Gloss |
---|
PreSpace | false |
---|
t | descriptions |
---|
|
associated with each of the identified
. The release file only contains the
.
...
Example Data
Example
...
The table below holds example entries for the
Concept |
---|
t | 900000000000534007|Module dependency reference set| |
---|
|
in a Gloss |
---|
PreSpace | false |
---|
t | snapshot view |
---|
|
of the January 2014 Gloss |
---|
t | SNOMED CT International Release |
---|
|
. This
Gloss |
---|
t | SNOMED CT International Release |
---|
|
contains three modules: ...
|
---|
PreSpace | false |
---|
t | SNOMED CT International Release |
---|
|
.This
Gloss |
---|
PreSpace | false |
---|
t | SNOMED CT International Release |
---|
|
contains three modules:...
Concept |
---|
t | 900000000000012004|SNOMED CT model component| |
---|
|
...
Concept |
---|
t | 900000000000207008|SNOMED CT core| |
---|
|
...
Concept |
---|
t | 900000000000012004|SNOMED CT model component| |
---|
|
which has no dependencies; and Concept |
---|
t | 449080006900000000000207008|SNOMED CT to ICD-10 rule-based mapping modulecore| |
---|
|
which depends on both the other modules.
...
...
...
Concept |
---|
t | 900000000000012004|SNOMED CT |
---|
|
...
...
...
Concept |
---|
t | 900000000000207008|SNOMED CT core| |
---|
|
...
Concept |
---|
t | 900000000000012004|SNOMED CT model component| |
---|
|
...
CT to ICD-10 rule-based mapping module| |
|
which depends on both the other modules.
In this case all the 2014-01-31 modules depend on 2014-01-31 versions of the other modules. However, in some case a module may depend on an earlier version of another model (e.g. an extension module may be releases after the
Gloss |
---|
PreSpace | false |
---|
t | SNOMED CT International Release |
---|
|
to which it applies)....
moduleId
...
refsetId
...
referencedComponentId (Dependency target)
...
sourceEffectiveTime (Source effective time)
...
targetEffectiveTime (Target effective time)
...
Concept |
---|
t | 900000000000207008|SNOMED CT core| |
---|
|
...
Concept |
---|
t | 900000000000534007|Module dependency| |
---|
|
...
Concept |
---|
t | 900000000000012004|SNOMED CT model component| |
---|
|
...
20140131
...
Dependencies are not transitive. The fact that
...
Concept |
---|
t | 449080006|SNOMED CT to ICD-10 rule-based mapping module| |
---|
|
is dependent on ...
| 900000000000207008|SNOMED CT core| |
---|
|
may seem to imply a dependency on Concept |
---|
t | 900000000000012004|SNOMED CT model component| |
---|
|
. However, in practice all dependencies must be explicitly specified, not just immediate dependencies.
moduleId | refsetId | referencedComponentId (Dependency target) | sourceEffectiveTime (Source effective time) | targetEffectiveTime (Target effective time) |
---|
20140131 | 20140131449080006900000000000207008|SNOMED CT |
|
|
to ICD-10 rule-based mapping module | Concept |
---|
t | 900000000000534007|Module dependency| |
---|
|
| |
900000000000207008900000000000012004|SNOMED CT |
|
|
core20140131 | ...
...
Specref |
---|
RefType | (field) |
---|
t | effectiveTime |
---|
|
...
...
...
...
...
...
| 20140131 |
Concept |
---|
t | 449080006|SNOMED CT to ICD-10 rule-based mapping module| |
---|
|
| Concept |
---|
t | 900000000000534007|Module dependency| |
---|
|
| Concept |
---|
t | 900000000000012004|SNOMED CT model component| |
---|
|
| 20140131 | 20140131 |
Concept |
---|
t | 449080006|SNOMED CT to ICD-10 rule-based mapping module| |
---|
|
| Concept |
---|
t | 900000000000534007|Module dependency| |
---|
|
| Concept |
---|
t | 900000000000207008|SNOMED CT core| |
---|
|
| 20140131 | 20140131 |