Skip to content

Terminology Service Feature: TERMINOLOGY_SERVICE Since 0.32

CAUTION

The terminology service is currently beta. Only the basic functionality, described here, is implemented.

NOTE

The terminology service is an optional feature that has to be enabled by setting ENABLE_TERMINOLOGY_SERVICE to true.

Supported Code Systems

FHIR Code Systems

FHIR CodeSystem resources stored in Blaze with content of either complete or fragment are supported.

External Code Systems

Currently the external code systems shown in the following table are supported.

NameVersion(s)Notes
LOINC2.78has to be enabled
SNOMED CTall versions providedrelease files have to be provided
UCUM2013.10.21enabled by default

Operations

Graph Cache

For stored FHIR code systems, a graph will be build before operations like $validate-code are executed. Building those graph is quite expensive. I order to prevent Blaze to build a graph each time an operation is executed, a graph cache is used. The environment variable TERMINOLOGY_SERVICE_GRAPH_CACHE_SIZE allows to set the number of concepts, the graph cache should hold. The default is 100,000.

Memory Requirements

Because both the LOINC and SNOMED CT data used for terminology operations is currently hold completely in memory, at least 8 GiB of Java Heap memory is required. The Java Heap memory can be set by setting JAVA_TOOL_OPTIONS to -Xmx8g.

Validation

The terminology service is designed to work together with the FHIR Validator. More on that in the Terminology Service – Validation section.

Performance

Performance data can be found in the Performance – Terminology Service section.

Example Deployment

The full deployment documentation is available here. In this section the configuration of a standalone backend only terminology service deployment configuration is shown. That configuration can be adapted into the full deployment scenario with frontend.

The SNOMED CT release file has to be uncompressed into a Docker mountable directory. In this example a local directory called sct-release. The Docker Compose file would look like this:

yaml
services:
  blaze:
    image: "samply/blaze:latest"
    environment:
      JAVA_TOOL_OPTIONS: "-Xmx8g"
      DB_BLOCK_CACHE_SIZE: "2048"
      ENABLE_TERMINOLOGY_SERVICE: true
      ENABLE_TERMINOLOGY_LOINC: true
      ENABLE_TERMINOLOGY_SNOMED_CT: true
      SNOMED_CT_RELEASE_PATH: "/app/sct-release"
    ports:
    - "8080:8080"
    volumes:
    - "blaze-data:/app/data"
    - "./sct-release:/app/sct-release"
volumes:
  blaze-data: