# Terminology Services Requirements

Expression Repository Users

<table data-card-size="large" data-view="cards"><thead><tr><th align="center"></th><th></th><th></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td align="center"><strong>Information Manager</strong></td><td>This user represents the people involved with the implementation of SNOMED CT-enabled systems and the maintenance of postcoordinated expression repositories</td><td>This user group interacts with an Expression Management System, designed to support key tasks required to create and maintain postcoordinated expressions in an expression repository</td><td><a href="https://2240938627-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FusjN9isxKh4cLDTFopLg%2Fuploads%2FbjyYqDD9j9VsJ03yhnZn%2Finformation%20manager.png?alt=media&#x26;token=1b26fcf9-f0a2-4e35-ad38-15ca39135729">information manager.png</a></td></tr><tr><td align="center"><strong>Clinical user</strong></td><td>This user represents the people involved with the entry of clinical data in an EHR system (or another type of clinical information system)</td><td>This user represents the people involved with the entry of clinical data in an EHR system (or another type of clinical information system)</td><td><a href="https://2240938627-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FusjN9isxKh4cLDTFopLg%2Fuploads%2FQEnz9cSlx3Cd2bgnbuGj%2Fclinicaluser.png?alt=media&#x26;token=98e62510-7572-40e3-baf0-23bce7012a1d">clinicaluser.png</a></td></tr></tbody></table>

## Functional Requirements

The tables below shows the set of services will enable users interacting with an expression repository to perform required tasks.

### **Requirements for Information Managers**

<table><thead><tr><th width="543.12109375">Functional Requirement</th><th>Service Requirements</th></tr></thead><tbody><tr><td>Should be able to set up the expression repository when preparing for an implementation</td><td>Create expression repository</td></tr><tr><td>Should be able to retrieve details about the expression repository to enable referencing the content of this specific expression repository, e.g. for adding and updating content in the expression repository.</td><td>Get repository details</td></tr><tr><td>Should be able to add expressions to the repository when these are created prior to the implementation within an EHR</td><td>Add expression</td></tr><tr><td>Should be able to check if an expression constraint conforms to the concept model rules</td><td>Validate expression</td></tr><tr><td>Should be able to check if expressions exists in the repository, e.g. as part of exploring if new expressions should be created</td><td>Lookup expression</td></tr><tr><td>Should be able to view the details of each expression in the expression repository</td><td>Lookup expression</td></tr><tr><td>Should be able to search for expressions using term search</td><td>Search for expression</td></tr><tr><td>Should be able to retrieve expressions matching specific search criteria, e.g. as part of bulk edit features, expression reviews, etc.</td><td>Query expressions</td></tr><tr><td>Should be able to update expressions in an expression repository to enable correction of errors or to support updates to a new substrate</td><td>Update expression</td></tr><tr><td>Should be able to disable or inactivate expressions that are no longer recommended for use</td><td>Inactivate expression</td></tr></tbody></table>

### **Requirements for Clinical Users**

<table><thead><tr><th width="543.18359375">Functional Requirement</th><th>Service Requirements</th></tr></thead><tbody><tr><td>Should be able to add expressions to the expression repository, e.g.when the EHR supports runtime creation of expressions using form-based data entry</td><td>Add expression</td></tr><tr><td>Should be able to see a term for an expression, e.g. when this is rendered as an option in a clinical user interface</td><td>Get display term</td></tr><tr><td>Should be able to search for expressions using text-based search, e.g. when expressions are included in a value set bound to a search field</td><td>Search for expression</td></tr><tr><td>Should be able to store expressions in the EHR data store</td><td>Add expression</td></tr><tr><td>Should be able to share details about an expression, e.g. to support communication and exchange</td><td>Lookup expression</td></tr><tr><td>Should be able to query expressions in the same way as pre-coordinated concepts to support tasks such as reporting, clinical data analysis and decision support</td><td>Query expressions</td></tr></tbody></table>

## Service Requirements

### Create expression repository

Services should be available to support the creation of an expression repository, involving the creation of the structures required to hold the data of the expression repository, as described in [Expression Repository Requirements](https://github.com/SNOMED-Documents/snomed-postcoordination-guide/blob/main/expressions-in-a-terminology-server/requirements/5.1.1-expression-repository-requirements.md). These services are required to provide an 'empty' expression repository.

### Get repository details

Services should be available for getting details about a generated expression repository. The details can be used when accessing content of this specific expression repository, e.g. when adding, updating or querying expressions.

### Add expression

Services should be provided to support the addition of new expressions to the expression repository. These services should ensure that all data required to represent and process expressions are available.

Services for adding expressions will often include the services for *validating* the expression, *transforming* the expression and *generating the necessary normal form*.

### *Transform expression*

Services should be provided to support transformation of the close-to-user form expression to a classifiable form which is required to generate the necessary normal form.

Considerations and approaches to transformation are described in [Implementation](https://github.com/SNOMED-Documents/snomed-postcoordination-guide/blob/main/expressions-in-a-terminology-server/5.3%20implementation).

### Validate expression

Services should be available to check if the close-to-user form of the expression is syntactically valid and conforms to the concept model rules, or any allowed rules for postcoordination.

### *Generate Necessary Normal form*

Services should be provided to support the generation of the necessary normal form of the expression, which is a prerequisite for supporting expressions to be queried in the same way as pre-coordinated content.

Considerations and approaches to the generation of the necessary normal form are described in [Implementation](https://github.com/SNOMED-Documents/snomed-postcoordination-guide/blob/main/expressions-in-a-terminology-server/5.3%20implementation).

### Update expression

Services should be provided to support the updating of expressions while retaining full traceability of previous versions of the expression (similarly to the principles of updating precoordinated SNOMED CT content).

### Inactivate expression

Services should be provided to support the indication that an expression is no longer recommended for use. Although inactivated, the expression should be retained in the repository and full traceability of previous versions (similarly to the principles of inactivating precoordinated SNOMED CT content).

### Lookup expression

Services should be provided to support access to details about the individual expressions in the repository.

### Search for expression

Services should be provided to support searches for expressions in the repository. Lexical searches should be supported based on the terms associated with the concepts included in the expression.

### Get display term

Services should be provided to support a human-readable representation of the expression. This service is required to enable the display of expressions in user interfaces, or to support term searching.

### Subsumption testing

Services should be provided to test the subsumption relationship between a pair of expressions given the semantics of subsumption

### Query expressions

Services should be available to enable subsumption testing between expressions and enable the selective retrieval of postcoordinated expressions satisfying stated criteria. Query services should enable queries to be performed over the content of a specific expression repository plus the content of the versioned edition of SNOMED CT that the repository depends on.

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


---

# 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-postcoordination-guide/expressions-in-a-terminology-server/requirements/terminology-services-requirements.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.
