Suite architecture¶
MedDeID is a language-extensible family of independently versioned repositories, not a runtime monorepo. Each package has one responsibility and declares every dependency it needs. Public model bundles and language packages support Dutch and English, while shared contracts and workflows allow additional languages.
Dependency direction¶
flowchart TD
CORE["meddeid-core\nschema · taxonomy · validation"]
LANG["language-profile packages\nDutch and English"]
INF["meddeid\ninference · CLI · service"]
DATA["meddeid-data\nimport · generation · splits"]
EVAL["meddeid-eval\nmetrics · stability"]
TRAIN["meddeid-training\nfit · refit · export"]
CORE --> LANG
CORE --> INF
LANG --> INF
CORE --> DATA
LANG --> DATA
CORE --> EVAL
LANG --> EVAL
CORE --> TRAIN
EVAL --> TRAIN
INF -. optional training extra .-> TRAIN
The three browser applications consume generated copies of the core taxonomy contract. They do not define an alternative schema.
flowchart LR
CORE["meddeid-core\nPython authority"] --> JSON["contracts/taxonomy.json"]
JSON --> ANN["meddeid-annotate"]
JSON --> CUR["meddeid-curate"]
JSON --> SUB["meddeid-subannotate"]
Layers¶
| Layer | Components | Owns |
|---|---|---|
| Contract | meddeid-core |
Record shape, taxonomy, offsets, normalization, validation |
| Language | meddeid-language-* packages |
Language rules, locale profiles, and versioned resources |
| Runtime | meddeid |
Model loading, tokenization, decoding, post-processing, local serving |
| Data | meddeid-data |
Source import, stable identities, splits, synthetic generation |
| Human review | meddeid-annotate, meddeid-curate, meddeid-subannotate |
Primary annotation, optional reconciliation, benchmark subannotation |
| Experiment | meddeid-training, meddeid-eval |
Training protocol, export, metrics, stability |
| Artifacts | Hugging Face and Zenodo repositories | Published model, datasets, guidelines, checksums |
How the separation helps you¶
The components are separated so you can use the part of MedDeID that matches your task without installing or operating the entire suite.
Install only what you need¶
For ordinary de-identification, install meddeid. Dataset preparation,
annotation, evaluation, and training are separate tools and are needed only for
those workflows. Add the optional server dependencies only when an application
needs to call MedDeID over HTTP.
This keeps a basic inference environment smaller and gives production and research workflows independent dependency and release boundaries.
Select language behavior explicitly¶
Every MedDeID tool uses the same record structure and label taxonomy. Dutch, English, and future languages add their own regional rules without changing that shared format.
Models declare which regional profiles they support. You select the model and,
when required, a profile such as nl-BE, en-GB, or en-US. The same
annotation, training, and evaluation workflow can therefore support another
language without creating a separate version of the suite.
Pass work between tools as files¶
The tools do not need to run together as one application. Dataset preparation, human review, training, and evaluation exchange validated files and manifests, so each step can run in the environment appropriate for it while retaining a record of what produced the result.
Optional stages stay optional. Use curation when a project has multiple independent reviewers. Add detailed subannotations only when building a benchmark that needs character-level evaluation.
Install released components, not the suite workspace¶
Most users install Python packages or run published container images. The
grouped meddeid-suite checkout is for maintainers who coordinate and verify
releases; it is not required at runtime.
Keep comparison systems independent¶
External systems such as Belgian DEDUCE run in their own environments. Convert
their predictions to the MedDeID result format before evaluating them with
meddeid-eval. This avoids mixing dependencies and licences while still
allowing results to be compared consistently.