Vinicius Almeida

AATM — Any-to-Any Terminology Mapping

ongoing

– present

An open-source Python framework for health terminology mapping. It leverages the OMOP vocabularies to translate, retrieve, and select standard concepts for unmapped expressions — breaking down interoperability barriers in healthcare.

  • Open source
  • Healthcare interoperability
  • Terminology mapping
  • OMOP
  • Python
  • NLP

I am the creator and maintainer of AATM (Any-to-Any Terminology Mapping), an open-source project developed with the support of Precision Data.

What it does

Mapping a new expression to a specific medical terminology usually means considering many possible phrasings, retrieving the best candidate target terms, and selecting them by hand — an effortful and time-consuming process. AATM is a modular, extensible Python framework designed to make that task easier and to keep incorporating new techniques as they emerge.

It leverages the OMOP vocabularies, which reflect large, community-driven efforts that connect many different health-related terminologies and classifications worldwide, organized around standard terminologies that act as the central connecting nodes. Once a new expression is linked to a standard concept, every link already associated with that concept becomes immediately available — enabling mapping to the many other terminologies and classifications connected to it, and effectively breaking down barriers to interoperability in healthcare.

How it works

AATM organizes the mapping process into a simple, composable pipeline:

  • Translation (optional) — normalize or translate the source expression before searching.
  • Retrieval — explore what prior mapping efforts already offer, retrieving the best candidate target terms (e.g. via embedding-based vector search).
  • Selection — connect a standard concept to the new expression being mapped.

Each stage is pluggable — translators, retrievers, rerankers, and selectors are chosen by id — so different strategies (local embedding models, LLM-based translators, BM25 rerankers, and more) can be combined to fit a given use case.

Using it

AATM ships as a package on PyPI with a command-line interface:

pip install aatm

A single init command sets everything up — it builds a local OMOP SQLite database, lets you choose an embedding model and the standard vocabularies, builds the mapping datasets, and creates a local vector database. From there, aatm map runs a terminology mapping task over an OMOP-style SOURCE_TO_CONCEPT_MAP CSV, either from explicit CLI options or a task config file:

aatm map \
  --input-file data/source_to_concept_map.csv \
  --output-dir output \
  --translator-id empty-translator \
  --retriever-id embeddinggemma-300M \
  --reranker-id bm25-reranker \
  --selector-id first-result-selector \
  --batch-size 100

Project

AATM is MIT-licensed and written in Python (3.10–3.12). The full documentation is at precisiondata.github.io/aatm, and contributions are welcome through the GitHub repository.

← Back to all projects