meddeid-dutch-synth
meddeid-dutch-synth is a Dutch clinical-text de-identification model trained
exclusively on synthetic notes. It predicts character-offset personally
identifiable information spans and is packaged with the tokenizer,
configuration and MedDeID bundle contract required for local and offline use.
No real patient notes were used to train this model.
Intended use
The model is a reproducible starting point for detecting identifiers in Dutch clinical text. It is designed for local deployment inside the user's own governance boundary. It does not make text anonymous by itself, does not guarantee removal of every identifier and requires validation for the target institution and use case.
Do not send clinical text to the public demonstration Space. Download the model and process sensitive text locally.
Out-of-scope uses include claiming that output is anonymous without a separate risk assessment, using the model as a clinical decision system, and applying it to unsupported languages without dedicated validation.
Limitations
- Training data is synthetic and does not represent every clinical specialty, institution, writing style, identifier format, or documentation error.
- The model can miss identifiers and can remove clinically meaningful text.
- Reported results are point estimates for specific datasets and do not establish performance at another institution.
- Metadata-assisted recovery depends on the accuracy and completeness of the caller-provided metadata.
Use with MedDeID
pip install meddeid
from meddeid import Deidentifier
engine = Deidentifier.from_pretrained(
"stighellemans/meddeid-dutch-synth",
device="cpu",
)
result = engine("Patiënt Jan Voorbeeld kwam op controle.")
print(result.spans)
print(result.deid_text)
The first normal MedDeID call downloads and caches this self-contained bundle automatically. For an air-gapped installation or TensorRT export, pre-stage the complete repository once:
hf download stighellemans/meddeid-dutch-synth \
--local-dir ./meddeid-dutch-synth
meddeid deidentify note.txt \
--model ./meddeid-dutch-synth --device cpu
The normal Hugging Face cache is reused automatically. --offline is optional
and only enforces that no network check may occur; it is unnecessary for an
existing local model directory.
The canonical prediction container is always spans.
Architecture and training
The model uses the RobBERT-2023 Dutch encoder with two classification heads:
three-way BIO span detection and 14-way entity classification. It processes
overlapping 512-token windows with a 64-token overlap. Epoch selection used a
user-created development partition; the final model was reinitialised and fit
for 17 epochs on all 6,493 published corpus documents. The self-contained
export pins RobBERT revision 1164b2df6d3ceb1735900c839da8de9bad1a99f9.
Evaluation
The accompanying manuscript reports the following metadata-enabled results:
| Evaluation set | Core PII recall | Non-PII redaction rate |
|---|---|---|
| Hospital benchmark, 300 real notes (not public) | 96.7% | 0.85% |
| Public synthetic benchmark, 300 notes | 99.8% | 0.28% |
| External primary-care set, 100 real notes (not public) | 90.3% | 1.37% |
These point estimates are specific to the study datasets and evaluation pipeline. Synthetic-benchmark performance must not be interpreted as an estimate of performance on real clinical text.
Metadata-assisted recovery
The versioned Dutch post-processing profile can use trusted patient_name,
caregiver_names, and caller-asserted known_values metadata. Metadata is not
fed to the transformer; it deterministically recovers matching names or values
after neural decoding. On the hospital benchmark, core-PII recall was 95.2%
without metadata and 96.7% with metadata, while non-PII redaction rose from
0.780% to 0.846%. On the synthetic benchmark the result was unchanged; on the
primary-care benchmark recall rose from 89.9% to 90.3%. Sites should therefore
validate both recall and specificity with their own metadata quality.
result = engine(
"Patiënt Jan Peeters belde 0470 12 34 56.",
metadata={
"lang": "nl-BE",
"patient_name": {"given_name": "Jan", "family_name": "Peeters"},
"known_values": [
{"value": "0470 12 34 56", "label": "Contactdetails"}
],
},
)
Files and reproducibility
model.safetensors: model weights;bundle.json: labels, windowing, language-profile and post-processing contract;config.jsonand tokenizer files: self-contained RobBERT configuration;CHECKSUMS.sha256: file integrity;LICENSE: MedDeID software licence.
The repository exposes only the current default model. Reproducible deployments should pin the immutable Hub commit SHA rather than relying on mutable tags.
Project and institutional context
Developed by Stig Hellemans, Tom Stroobants, Elyne Scheurwegs, Pieter Meysman, Philippe Jorens and Kris Laukens at the University of Antwerp and Antwerp University Hospital (UZA). This work is supported by a Research Foundation Flanders (FWO) SB Fellowship, grant 1SA3226N.
Author ORCIDs: Stig Hellemans, Tom Stroobants, Elyne Scheurwegs, Pieter Meysman, Philippe Jorens, and Kris Laukens.
Citation
@software{hellemans_2026_meddeid_dutch_synth,
author = {Hellemans, Stig and Stroobants, Tom and Scheurwegs, Elyne and Meysman, Pieter and Jorens, Philippe and Laukens, Kris},
title = {meddeid-dutch-synth},
year = {2026},
publisher = {Hugging Face},
url = {https://huggingface.co/stighellemans/meddeid-dutch-synth}
}
For reproducible reporting, include the immutable model revision, MedDeID package version, language-profile version, and evaluation configuration.
Licence
The model weights and bundled MedDeID software are licensed under AGPL-3.0-only. The RobBERT base model remains subject to its own licence and attribution terms.
- Downloads last month
- 35