# Terminology Data Storage and Access

SNOMED CT terminology data is distributed in release packages containing tab-delimited release files that conform to the [SNOMED CT Release Files Specification](https://app.gitbook.com/o/h8Z6qGxuQrzM9vbx5bPT/s/irKbJsZG57nSWZA4GT0M/). All *release files* follow a consistent design pattern with the following key features:

* A versioning mechanism, which tracks additions, changes, and inactivations made in each release. This versioning mechanism enables terminology services to access the full history of every SNOMED CT component and reference set member.
* A limited range of data types, all of which are rendered as text in release files.
* Use of the Unicode UTF-8 character set for the string data type, to support the inclusion of the full range of Unicode characters.

Data from the files in SNOMED CT release packages needs to be loaded into a datastore that can be accessed by terminology services. The design of this datastore is a key design decision for developers of terminology services since it will determine the capabilities and performance characteristics of those services.

General requirements for the datastore design include:

* It must enable the representation of all the information contained in all release files types in the SNOMED CT release package(s) imported
* It must support the terminology services that are marked as *Required* in the subsections of [4-terminology-service-types](https://docs.snomed.org/snomed-ct-practical-guides/snomed-ct-terminology-services-guide/4-terminology-service-types "mention")
* It must deliver scalable optimization of terminology services required by the use cases in [3-terminology-service-use-cases](https://docs.snomed.org/snomed-ct-practical-guides/snomed-ct-terminology-services-guide/3-terminology-service-use-cases "mention") that the server is designed to support1.

Different technical options are available for implementing terminology services, for example, using a relational database, other database options (such as [Graph databases](#user-content-fn-1)[^1]), or using predefined services accessible via an API (for example SNOMED International's Snowstorm[^2]).

<a href="https://docs.google.com/forms/d/e/1FAIpQLScTmbZIf0UEQwYDkY27EEWBkaiYkHSbR0_9DmFrMLXoQLyL7Q/viewform?usp=pp_url&#x26;entry.1767247133=SNOMED+Terminology+Services+Guide&#x26;entry.670899847=Terminology%20Data%20Storage%20and%20Access" class="button primary">Provide Feedback</a>

[^1]: * Neo4j®, is a registered trademark of Neo4j Inc (see <https://neo4j.com/>).
    * A Neo4j upload script for SNOMED CT release files is available on GitHub (see <https://github.com/IHTSDO/snomed-database-loader/tree/master/NEO4J>). This script was kindly provided by Scott Campbell and his team from the University of Nebraska Medical Center, Omaha
    * Papers related to the use of Neo4j with SNOMED CT include: *An alternative database approach for management of SNOMED CT and improved patient data queries,* Scott Campbell et al, Journal of Biomedical Informatics [https://www.researchgate.net/publication/281015927](https://www.researchgate.net/publication/281015927_An_alternative_database_approach_for_management_of_SNOMED_CT_and_improved_patient_data_queries) and *Implementation of a Terminology Server with SNOMED CT in Graph Databases,* Elizabeth Silva Layes et al, MedInfo 2019 (see <http://ebooks.iospress.nl/publication/52311>).

[^2]: Snowstorm is a scalable SNOMED CT terminology server. It can be downloaded and installed from SNOMED International's GitHub site <https://github.com/IHTSDO/snowstorm>.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.snomed.org/snomed-ct-practical-guides/snomed-ct-terminology-services-guide/5-service-implementation-considerations/5.1-terminology-data-storage-and-access.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
