Anonymization and longitudinal studies

Regarding longitudinal studies where a patient might return for more than one exam, will subsequent anonymization of the DICOM apply the original anonymized ID or generate a new anonymous ID?

When anonymizing the second exam at a later date, will Orthanc see that it already associated the patient with an anonymized PatientID in the earlier study and reuse that? Or will it generate a new anonymous PatientID?



The anonymization system of the Orthanc core does not handle longitudinal studies. The result of previous anonymizations is not kept in the database, so new identifiers will be generated later on.

It is up to you to implement the management of longitudinal studies on the top of the Orthanc REST API, e.g. as a Python script that keeps a separate database of previous anonymizations (this database may be a simple file):

Implementing such a system is definitely possible: Actually, we have created one inside the University Hospital of Liège, through which most of our radiology studies go.


Thanks, I’ll look into implementing a system on the backend with python or maybe even explore some Lua scripting.

On a related note, if Orthanc were setup in “index only” mode, are the anonymization links maintained between original and anonymized entries?

At the moment, I have “index-only” turned OFF and am storing both original and anonymized images, but ultimately, we are only interested in pushing anonymized images to a remote server and have no need to store them locally. However, I didn’t see anything in the API that looked like an option to 'delete images, but keep anonymization database entries". Deleting images seems to erase all the associated information from the database.

Would switching on “index-only” be the solution in this scenario?


If you set “StoreDicom” to “false” (i.e. index-only mode) and you don’t destroy the DICOM resources, Orthanc will keep the anonymization links. If you delete the resources, the association information will indeed be gone.

However, I feel that storing all this information is an overkill for your use case.

According to your scenario, I would rather favor an approach where your Python/Lua script would store the anonymization links in a separate database.