> 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.19

## Contents

* [Summary](#summary)
* [JSON result schema](#json-result-schema)
* [Python SDK updates](#python-sdk-updates)

## Summary

### Added

* Option to enable or disable processing features per instance.
* Annotation updates for MEDCIN, RadLex, RxNorm, SNOMED-CT ontologies
* Added more informal measurement units such as mm2, cm2, etc.
* Support for new "generic" subcategory for Pathology reports.

### Changed

* MEDCIN measurement entity type changed to "measurement"
* Improved precision and recall for unitless measurements
* JSON result schema changed (see details below)

### Fixed

* Negation accuracy improvements
* Measurements accuracy improvements
* Measurement entity units are now reported as raw text
* MEDCIN measurement concepts no longer showing up with SNOMED concept identifiers
* Bug fix for multiple concept identifiers appears for same span and ontology
* Measurement relations are not identified any more for MEDCIN medications
* Measurements now identify body weight and BMI

### Compatibility

* API version 2 Release 19
* Python SDK and client v4.3.0 to v4.6.0
* Java SDK and client v3.0.2 to v3.1.0
* JSON result output schema v2.11 for [emtellipro-json-2](/nlp/reference/result-format).

The latest version of the SDK is required for the new features in this release. The JSON result output schemas are backward compatible for all `v2.x` versions of `emtellipro-json-2`.

## JSON result schema

This engine produces JSON output using the JSON output schema `v2.11.0`. Previously we used to include an explicit `enum` of all compatible version numbers in the schema for `version`. We now have made the change to expanding this enum to include all version numbers and we remove the constraint. As a result we have removed the enum so while technically this is a non-breaking change semantically speaking, it may still break your schema reader if you are explicitly looking for the `enum` that used to be in the `version` description. The new `version` schema looks like this:

```json
"version": {
  "description": "The version of the schema used for this result.",
  "type": "string"
},
```

## Measurement unit

If an entity is a measurement entity, e.g. `2.3 cm` then we extract the unit `cm` and provide it as a new attribute called `measurement-unit` associated with the entity. If the entity is not a measurement entity then the attribute is missing. If the attribute has value `null` then the measurement is unitless, e.g. `the pt temperature was 101`. Otherwise, the value of the attribute is a list of text string containing the unit, `['cm']`.

## Python SDK updates

You will need NLP API Python SDK 4.6.0 for the new measurement unit feature added to the engine. We have added a migrate command to allow you to upgrade your Output Database to the new version of engine and SDK.

### Measurement unit

For the new `measurement-unit` attribute for measurement entities, in the Output Database the value is stored in a new table called `foundentitymeasurementunit` with the following schema:

```text
 id | found_entity_id | text
----+-----------------+------
```

### Upgrading the database

If you have a previous version of the NLP API database, created using an older version of the database client (going back to v4.3.0), you can upgrade to the latest version using the migrate subcommand, as follows:

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

NOTE: Please ensure you’ve backed up the data before running this command. The migrate command will copy data over if columns change, and all changes will execute within a transaction (which should roll back if anything goes wrong), but it’s recommended to have a backup just in case.

### Other Python client updates

* Better progress bars.
* Switched to two progress bars: one bar for processing and one for storing to the DB.
* The `--fast-postgres` option does not show the storing progress bar because of the bulk insertion step into postgres.
* Added `--version` argument to db client
* Handle incorrect filetypes