Features

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.
  • Web-based and mobile-friendly user interface (e.g. responsive design)
  • Data model built around the NLM Unified Medical Language System (UMLS) data model
    • Natively handles RRF, some of the unusual and not-very-useful complexity of the UMLS is removed
    • Natively handles SNOMED RF2 format
    • Natively handles a simple code list with parent/child relationships file format
    • Natively handles loading from ClaML
    • Natively handles loading from OWL (given the DL semantic supported by SNOMED)
    • Capable of simultaneous representation of Metathesaurus data structures (e.g. CUI) and terminology-specific data structures (e.g SNOMEDCT_US concept and 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 terminologies of any level of complexit (e.g. MeSH, SNOMEDCT_US, ICD10CM, etc.)
    • Simple code lists
    • Taxonomies
    • Thesauri
    • Ontologies with DL features (supports EL++) and classification (via OwlAPI)
  • 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" via a syntax like the SNOMED expression constraint language (ECL)
    • Handles generalized Lucene+SQL queries against the underlying persistence model
  • 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.
  • Full auditing, logging, and tracability framework to support arbitrary levels of undo/redo, full accountability for all changes made to the persistence layer ("last modified" and "last modified by").
  • Supports flexible query-driven workflow engine to allow partitioning of all content into "bins" which can be divided into "worklists" which are assigned to users and follow a configured workflow.
  • Supports "notes" and "favorites" features to allow read-only users of a system to tag and annotate their own content to easily find important or commonly used content.

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
  • 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 (in unit or batch modes)
    • For example, prevent synonyms from being added to a concept that contain leading, trailing, or duplicate whitespace.
  • Supports a "processing" layer that allows users to define and configure "algorithms" into fully-fledged processes to support insertion of new data, maintenance activities during editing cycles, and a flexible release process.
    • This mechanism can also be used to support batch changes
  • Supports a flexible workflow framework allowing for simple authoring, authorign plus review, dual authoring with conflict resolution, or other modes.

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 export/release process for performing identifier assignment and generating releases in supported input formats.
  • Support for subset (e.g. refset/value set) maintenance.
  • Simple user interfaces for basic authoring tasks (adding synonyms, creating concepts, etc).
  • Basic messaging/alert system for users to inform users of upcoming deadlines or release and the need to progress on work in certain ways (driven by automated criteria, or driven by management messages).
  • Support for "simplified" editing, including insertion/maintenance/export processes for code systems including basic editing needs like adding/removing concepts, editing synonyms (or translations) and preferred names for concepts, and reconciling changes as underlying code systems are updated. 
  • Support attachments (at the project level).
  • Support downloadable copies of the release file.
  • Support simplified mappings between terminologies (either by relationship or by Mapping).
  • Support note "attachments".

Future Development

  • Support branch-and-merge "project" based editing to isolate, modularize, and package sets of work.
  • Support for “dynamic” refset definitions and data.
  • 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.
  • Support for post coordinated expression maintenance and resusability.
  • Support for template-based authoring.