Overview
Details features of this terminology server.
License
This software is offered with a standard Apache 2 licence. Like other free software licenses, the license allows the user of the software the freedom to use the software for any purpose, to distribute it, to modify it, and to distribute modified versions of the software, under the terms of the license, without concern for royalties.[1]
Features
- Lightweight and easy to build, configure, and deploy.
- Mobile-friendly user interface (e.g. responsive design)
- Data model built around the UMLS data
- Natively handles RRF, some of the unusual and not-very-useful complexity of the UMLS is removed.
- Capable of simultaneous representation of Metathesaurus data structures (e.g. CUI) and terminology-specific data structures (e.g SNOMEDCT_US concpet or MSH descriptor)
- Capable of simultaneously supporting multple Metathesaurus views (e.g. UMLS, NCI-META, RXNORM, etc.)
- Fully authenticated REST APIs with Java client classes included.
- Examples also provided for commonly used/needed calls
- Supports multiple terminologies and versions.
- Capable of handling any UMLS-based terminology (e.g. MeSH, SNOMEDCT_US, ICD10CM, etc.)
- Supports transitive closure computation and maintenance.
- Ancestor/descendant (and parent/child) computations are simple lookups and do not require computationally expensive graph walking.
- Also supports individual tree-position representation of hierarchy (for terminologies that assign codes to individual tree positions).
- Supports both lexical and semantic querying
- Handles complex field-based Lucene queries
- Handles queries like "find all concepts with associated_morphology relationships to Kidney or any of its descendants"
- Handles generalized queries against the underlying persistence model (formulated as combination Lucene/JQL queries)
- Supports paging, filtering, and sorting at the API level.
- For example, a “find concepts” call can be combined with sorting and filtering and can also page results one page at a time with flexible page sizes.
- Includes administrative, technical, and user documentation, and a REST API documented online with sample parameters.
- Supports description logic constructs within the metadata model to allow interoperation with Owl and integration with classifiers.
- Farily comprehensive unit, functional, and integration testing across all layers of tech stack.
- Flexible back-end data store.
- Default support for MySQL and uses Hibernate to facilitate connections to a variety of other database environments, including document-based and graph databases.
Extensibility
- Supports customizeable "metadata" handlers to allow for both individual terminology and metathesaurus-specific views into the metadata model.
- Supports customizeable preferred name computation to support different algorithms for different terminologies.
- Can be used to allow different users to work with different preferred name algorithms for the same terminologies as well (useful for when editing a particular terminology within a Metathesaurus that is not highly ranked).
- Supports customizeable lexical normalization handler with default implementations based on NLM's LVG and the Lucene "standard analyzer"
- Supports a customizable authentication/authorization mechanism
- Default implementations for UTS (http://uts.nlm.nih.gov), and "default" security (for development mode).
- Supports a customizable “graph resolver” mechanism to define the depth into the graph that various read and write calls should support.
- Default implementation of this mechanism supports reading/writing a concept that includes descriptions, language refset members, and relationships.
- Other data types are read/written through API calls.
- Supports a customizable “workflow listener” mechanism to interface with an external or third party workflow management system.
- Workflow can be tracked at the concept, description, or relationship level but is not itself maintained by the system.
- Changes to model objects triggers a callback to a custom handler to integrate with an external workflow management system.
- Supports a customizable identifier management solution
- Allows various approaches to ID maintenance, including application managed identifiers, content hash-based UUID assignment, and SNOMED CT® identifier assignment based on sequences.
- Ability to assign UUID identifiers during development to core components followed by SNOMED CT® identifier assignment at release time.
- Supports a customizable validation framework that allows testing of data states prior to persistence.
- Default implementation includes a few basic checks to demonstrate use.
Upcoming Features
- Support multiple, simultaneous editing of the same concepts for dual independent review, conflict identification, and conflict resolution.
- REST API for batch changes.
- Default release process for performing identifier assignment and delta RRF generation.
- Additional loaders
- SNOMED RF2 loader
- ClaML loader
- Generalized OWL loader
- Export to Owl for "description logic" based terminologies.
Future Development
- Support branch-and-merge "project" based editing to isolate, modularize, and package sets of work.
- Support for "semantic search" based on an expression grammar.
- Support for “dynamic” refset definitions and data.
- Support for description logic classifier integration (Owl2 EL profile support).
- Support for sharding and a synchronization service (to support shadowing or distributed editing). Such a mechanism could also be used to synchronize IHTSDO editing changes with an extension-editing environment.
- Internationalization of error messages and labels. There’s a standard approach to this that will be undertaken once MVP is ready.
- Javascript client library for wrapping REST API calls and allowing application developers consistent access to the services.
- Support for post coordinated expression maintenance and resusability.
- Support for expression-based searching.
- Support for template-based authoring.