Documentation on identifier assignment. Throughout the application, this refers to the underlying "terminologyId" field in the domain objects.
Identifiers are assigned in a few places in the application
- For refsets - which need to have identifiers before they can be released
- For translations - which actually borrow identifiers from the refset they are connected to.
- The id of a translation (and therefore its refset) should be the language reference set the translation is being developed for.
- Thus, typically it will not make sense to have multiple translations for the same refset.
- The refset for a translation represents the "scope definition" for translation and isn't itself ever intended to be released in refset form (as such).
- Publication of a translation produces an RF2 language refset.
- For translation concepts
- Acuallly only concept ids already available in the terminology server endpoint can be translated.
- For translation descriptions
- When a new description is added to a concept for translation, it is assigned an identifier.
- For language refset members
- When a description is created, a corresponding language refset member is created and assigned an identifier.
Identifier assignment is implemented by a handler that implements IdentifierAssignmentHandler and is configured through the config.properties file. For example,
The handler supports the following types of identifier assignment:
- getTerminologyId(Refset refset)
- getTerminologyId(Translation translation)
- getTerminologyId(Concept concept)
- getTerminologyId(Description description)
- getTerminologyId(DescriptionType member)
- getTerminologyId(LanguageRefsetMember member)
- getTerminologyId(ConceptRefsetMember member)
Two implementations of the identifier handler are supported and are described below.
This handler is designed to interface with the IHTSDO Component Identifier Service and provide assignment services where real SCTIDs are needed.
- For basic refset member id assignment, random UUIDs are generated.
- For refsets, a TMP- identifier can be generated, or a new concept id for a genuinely new refset id can also be generated.
- However, as this tool is derivative to the authoring tool, best practice suggests authoring and assigning an identifier to a refset concept and simply using it here.
- For translations, identifiers are borrowed from refsets and not independently assigned.
- For concepts and descriptions, real SCTIDs are generated from the component ID service given the namespace supplied at the refset level.
Used for testing, this uses a transient counter-based id assignment algorithm that can be used for testing and does not require integration with any other REST APIs.