Architecture

en

Logical architecture

Component diagram

TermX consists of separate web and server applications.

Terminology web

Terminology web is implemented as an Angular application. The web application is a tool for convenient use of server functionality. The main task is to view, create and update terminology resources using user-friendly components. For most frequent requests a cache mechanism is used to increase web application efficiency.

One of the functions is exporting CodeSystem, ValueSet, and ConceptMap versions in FHIR format with json and xml files.

The web application provides the ability of component customization according to user privileges. Privileges can shorten the list of available resources for viewing or editing. Also, user actions shown in a web application like viewing, editing, submitting, and administrating can be configured by privileges.

Terminology server

The terminology server is implemented as a Java application. The server’s main function is to store, maintain and keep data up to date, enabling the transformation and import of specific custom terminologies.
The server has different APIs. One of them is the internal terminology server API used internally for administration, resource creation, and maintenance. Another is FHIR API which supports required terminology functionality for external use. For converting local structures into FHIR resources FHIR referenced library zmei was used. Other APIs present themselves as the adoption of different terminologies like WHO ICD10, EE RHK10, WHO ATC, and EE ATC. Web application integrates with all APIs, to provide full access to functionality.
For data storage, a PostgreSQL database is used. When starting the server default FHIR terminologies are created. Default terminologies are required for system work because the data model depends on them.

Proxy adapters

SNOMED CT

SNOMED ECL language is supported through the proxy adapter. KTS SNOMED proxy adapter integrated with Snowstorm server. It transforms SNOMED queries into Snowstorm API. Since complex requests also take time in Snowstorm, the cache mechanism was implemented in a terminology server that keeps the most frequently used requests in memory and returns answers without turning to a proxy.

Data model

The project conceptual design was inspired by the HL7 CTS2 standard and the specification of the FHIR terminology module. The main resources for composing terminology are: Concept, CodeSystem, ValueSet, MapSet, NamingSystem, and AssociationType. Connections between these resources add meaning and significance to the terminology data, allowing the creation of simple classifiers. FHIR describes the basics of versioning and the concept mapping structure. But for comprehensive versioning, language support, and more - complex structures are required, which can be done using CTS2.

Technical view

Frameworks and servers

  • Terminology server
    • Java 17+
    • Micronaut 3+
  • Web application
    • Angular 16+
    • Any web server (Ngnix or Apache) for SSL offload and reverse proxy
  • Database
    • PostgreSQL 14+
  • Security
    • OpenID Connect compatible authentication server
    • Keycloak recommended
  • External libraries and applications
    • Snowstorm server
    • Sushi, GoFSH
    • PlantUML
  • Orchestration
    • Any tool for Docker container orchestration (for example Kubernetos)

Page last modified: Mar 10 2024 at 02:48 PM.