> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.emtelligent.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.emtelligent.com/_mcp/server.

# Release notes for NLP API 2.34

## Contents

* [Brief Summary](#brief-summary)
* [New Features](#new-features)
* [Changes](#changes)
* [Python SDK updates](#python-sdk-updates)
* [Benchmarking](#benchmarking)

## Brief Summary

### Release versions

* NLP API version 2 Release 34.
* Python SDK and client v6.4.0.
* Java SDK and client v5.15.0.
* [NLP API specification v2.18.0](/nlp/api): added support for new processing features `anatomicsite-relations`.
* JSON result output schema v2.29.0 for [emtellipro-json-2](/nlp/reference/result-format): added support for new processing features `anatomicsite-relations`.
* [visualclient](https://visualclient.emtelligent.com) version `v2024.07.22-8d7966` added support for new processing features `anatomicsite-relations`.

### Highlights

* New anatomicsite relation.
* Updated SNOMED entity disambiguation model.

## New Features

### Anatomic Site Relation

An anatomic site relation is a relation between a SNOMED body structure entity and entities that about a disease or condition, typically disorders, findings and morphologic abnormalities. An anatomic site relation has two arguments:

* the site id associated with the body structure mention, and
* the situated entity id which is the associated observation.

Let’s consider this sentence.

```text
She does note a pruritic rash on her upper back.
```

For the above sentence, the NLP API extracts the subject and value entities that comprise the anatomic site relation as shown: Anatomic site relation required and optional arguments

The *site* of the relation is `upper back`, and the terms that indicate or describe a disease state is the *situated entity*. In this sentence, the *situated entity* is `pruritic rash`.

Anatomic site relations are one-to-one relations. If there are several situated entities per site, then each pair of site and situated entity will be represented by its own anatomic site relation in the output.

Here are a two more examples:

```text
The pain was well localized in her epigastric region.
```

In this sentence, the *site* entity is `epigastric region` which is the affected body structure. The *situated entity* is `pain`, a finding.

```text
CT raised the concern of possible stroke with new bleed in the R external capsule.
```

In the sentence above, the *site* entity is `external capsule`, and the *situated entity* is `bleed`, a morphologic abnormality.

For the following input processed as a `Clinical/generic` by the NLP API:

```text
The pain was well localized in her epigastric region.
```

The output JSON for the above sentence is shown below. The focus in the example below is on one relation, namely `anatomicsites`. The example output below is truncated to the relevant part of the output JSON.

```json
{
    "relations": {
            "anatomicsites": [
                {
                    "label": "RA0",
                    "attributes": {},
                    "args": {
                        "site": {
                            "ref": "E1",
                            "text": [

                                "epigastric region"
                            ]
                        },
                        "situated_entity": {
                            "ref": "E0",
                            "text": [
                                "pain"
                            ]
                        }
                    }
                }
            ]
        }
}
```

## Changes

### Ontology updates

* RxNorm ontology updated to 2024-05-06 release.
* UMLS ontologies updated to 2024AA release.
* SNOMED-CT ontology updated to US Edition May 2024 release.
* Added or changed 17852 SNOMED-CT synonyms.
* Added or changed 58032 annotations across all ontologies.

### Model Updates

* SNOMED-CT entity disambiguation now handles 90 additional ambiguous SNOMED-CT concepts.
* New anatomic site relation model.

## Python SDK updates

The latest NLP API Python SDK at the time of release is version `6.3.0`. Refer to the [changelog for the Python SDK](/nlp/python/changelog) for a full explanation of the updates made since the last release. You will need to use at least version `5.7.0` of the Python SDK or later to send requests to the NLP API v2.29 but if you want to use the new features explained above you will need to use at least version `6.3.0`. We recommend using the latest version of the Python SDK `6.4.0`.

> **Warning**
>
> To use existing NLP API databases with the new Python SDK you must do a data migration using the Python database client `migrate` subcommand:

```bash
emtellipro-db-client migrate --database postgresql://username:password@hostname:port/example_db
```

### Anatomic Site Relation

The anatomic site relation is covered in detail in the NLP API database tutorial page on on [Anatomic Site Relations](/nlp/database/schema/relations/anatomic-site).

## Benchmarking

* Processed 1744 CCDs.
* Total size: 34 MB; Average size: 19.5 KB.
* NLP API deployed with 6 GPU workers
* 32x CPU: Intel(R) Xeon(R) Silver 4310 CPU @ 2.10 - 3.30 GHz w/18 MB Cache; 189G RAM
* 1x GPU: Nvidia L4 w/24GB of RAM
* Processed 1744 reports in 20:19.36s for an average per report processing time of .699173s per report
* Saved 1744 documents to database in 1:34.28s (.054062s / document)
* Output JSON file size: 434MB
* NLP API database size using Python database client output to sqlite: 693MB