v2+ Vocabulary
0.3.0 - Working Draft to present the concept ideas (FO)
v2+ Vocabulary - Local Development build (v0.3.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
Originally, i.e. during the v2 Tables Project we have used an integer to denote the version of a table with regard to its content. That implies, that incompatible next versions need to have a different base name respectively OID. However, it is hard to further argue in this direction.
Formerly, the project decided to use positive integers to version tables. Consequently, a new version is expressed by increasing this number by 1. Unfortunately, a version change does not tell anything about the type of change, i.e. whether it is major or only minor, or compatible or incompatible. Incompatible changes are introduced by new OIDs and symbolic names. This ia hard to maintain correctly.
Versioning has to be independent from the base version of the standard. Therefore, semantic versioning semver.org seems to be reasonable, but it requires detailed inspection of all tables.
That implies changing the version information for tables from integer to major (integer) + minor (integer) + patch (string).
Standard translation from old to new:
| old (integer + base name) | new (semver) | explanation | |
|---|---|---|---|
| empty | -> | 0.0.0 | is applicable for concept domains and (foreign) value sets |
| y | -> | x.y-1.0 | original integer value is moved to minor numbers, starting with zero |
| x.y+1.0 | increasing minor number depending on changes | ||
| different base, restarting with 1 | x.0.0 | x has to be redetermined |
It is important to note that incompatible changes in a codesystem require a specific notation. Major changes in semver does that! TI/TSMG has to revise the policy to make that use clear. Otherwise we cannot trust in compatibility and have to reinvestigate all codes for updates on mappings.
A big question is about when to use a new major number (documenting incompatibilities) versus a completely new codesystem with a new OID and restarting with 1.0.0!?
The following master grid should provide an overview:
| information | explanation | major | minor | patch |
|---|---|---|---|---|
| symbolic name | a short symbolic name for usings that a specific concept domain, value set or codesystem | a change of the symbolic name implies the next higher major version | ||
| OID | a unique identifier introducing the origin | |||
| namespace | useful? | |||
| title | title of the "table" | |||
| name | name of the "table" - same as title? Upper/lower case changes are adjusted during this project | could impace the patch? | ||
| description | ||||
| concept code | ||||
| concept description | ||||
| concept usage | maintained as property | |||
| concept status | active/new/deprecated/.. | implies minor changes | ||
| concept property | implies a major change if it has an impact on the semantic of a concept | implies minor changes |
Some tables are tricky to convert to codesystems and tables: