lx-data-models
lx-dtypes validates research data against predefined study rules and versioned
medical terminology. Applications can collect structured validation findings
without interrupting data capture, while using strict typed contracts at storage
and exchange boundaries. The package also provides FHIR interoperability and
Django host integration.
Highlights
- Strict, reusable contracts for knowledge-base, ledger, reporting, and host integration boundaries.
- Version-aware YAML knowledge bases and deterministic loaders.
- Report-template graph, structure, coverage, and runtime validation.
- FHIR clinical and terminology conversion contracts.
- Typed package data with Pyright, pytest, and documentation checks in CI.
The package is currently in alpha. Public imports are kept stable where
possible, but releases before 1.0 may contain documented breaking changes.
Installation
lx-dtypes supports Python 3.12.
python -m pip install lx-dtypes
Quick start
Validate a study setup without raising for invalid input:
from lx_dtypes.models.contracts.study_setup import StudySetupDefinition
from lx_dtypes.validation import validate_contract
result = validate_contract(StudySetupDefinition, {"schema_version": "1.0"})
for issue in result.report.issues:
print(issue.code, issue.path, issue.message)
# result.value contains the typed model only when the contract is valid.
For ledger data, assess_examination(knowledge_base, payload, template_name="...") checks terminology provenance and applies the selected
template's study rules. Findings are advisory; the host decides when to require
correction. See the cross-layer validation guide
for error codes, evaluation status, and strict persistence boundaries.
Load a knowledge-base module shipped with the package:
from lx_dtypes import load_knowledge_base
knowledge_base = load_knowledge_base("report_template_examples")
print(knowledge_base.config.knowledge_base_identity)
print(sorted(knowledge_base.report_template))
Registry-backed deployments should supply the exact module version. See the knowledge-base authoring guide and graph API guide for the complete workflow.
Provision the packaged catalog before starting a registry-backed host:
export LX_DTYPES_KB_REGISTRY=/var/lib/my-host/terminology/registry.json
lx-dtypes-kb-registry bootstrap
This boundary is strict: invalid registry state or an unloadable packaged identity exits nonzero and must block host startup.
Documentation
Start with the documentation index. Key guides include:
- Package boundaries
- Data-model concept map
- Knowledge-base authoring
- Reproduce versioned classifications
- Report-template infrastructure
- FHIR to LXDM mapping
- Django host integration
Build the documentation locally with:
python -m pip install -e ".[docs]"
make -C docs html
Development
git clone https://github.com/wg-lux/lx-data-models.git
cd lx-data-models
uv sync --extra dev
uv run pyright
uv run pytest -q
uv run make -C docs html
Knowledge-base fixtures and tests must not contain patient data, credentials,
or machine-local paths. Generated output belongs in temp/generated_exports/
or a test-local temporary directory.
See CONTRIBUTING.md for the full contributor and release workflow, CHANGELOG.md for release notes, and SECURITY.md for responsible vulnerability reporting.
License and citation
Distributed under the MIT License. If you use lx-dtypes in
published work, cite the project using CITATION.cff.
Metadata
Release files for lx-dtypes 0.4.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| lx_dtypes-0.4.3.tar.gz | 2.9 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| lx_dtypes-0.4.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 4.0 MB
Release files / lx_dtypes-0.4.3.tar.gz
| Download URL | lx_dtypes-0.4.3.tar.gz |
|---|---|
| Size | 2.9 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c37d5132ea84707cb03d66645220eb65d3b0bf0f767c59e9ba6c422f90781c98
|
|
BLAKE2b-256 checksum How to use checksums |
367475370a6f5092fd1a5723b9c896e0a7a94c0da410fd9187af17ba47e4efd9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.13
|
Release files / lx_dtypes-0.4.3-py3-none-any.whl
| Download URL | lx_dtypes-0.4.3-py3-none-any.whl |
|---|---|
| Size | 1.2 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b86b71a27db4923707fd7f16801debc5cbd355af378aab7dd8da7a6f23d6a938
|
|
BLAKE2b-256 checksum How to use checksums |
96f2876949c66c81254159be7a7a9f2d287ade26b7ba355be56acc0696f47b6d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.13
|