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.