Keeping a some private tags during anonymization

First off I want to say how happy I am to see this project. I’ve already had success integrating Orthanc with my various little research projects, the API is a joy to use.

I do have one request – it would be great if KeepPrivateTags could accept an array of private tags to keep. I am writing a DICOM router for anonymizing studies, but our PACS does keep some useful information in a couple private tags that I would like to keep. It seems as if it’s currently all-or-nothing?

Dear Joe,

Thanks for your feedback! Keeping some private tags would indeed be an interesting feature. I have just added it to our roadmap:
https://trello.com/c/2KT02Cdt

This feature should be implemented soon.

Sébastien-

Sounds great. I also noticed using the /modify API creates a new study instead of modifying an existing study. Is there a way to modify a study without making a copy? I need to keep the study UID’s the same.

This way of doing things is a feature to ensure that whenever a study is modified, its UID changes too. This prevents DICOM software from confusing between the original and the modified study.

To keep the same study UID, you must modify each of its series. When modifying a series, its study UID is kept identical (i.e. the modified series is considered as belonging to the same study as the original series).

Thanks Sébastien, that makes sense, however I am not seeing that behavior. When I modify a series ( eg. curl http://localhost:8042/series/uidhere/modify -X POST -d ‘{“Replace”:{“SeriesDate”:“19990101”}}’ ) the modified series is added to a new Study, instead of the existing Study.

Joe

Dear Joe,

I have just released Orthanc 0.7.5 that should fix the problem you reported:
http://www.orthanc-server.com/download.php

Please could you give a try?

Cheers,
Sébastien-

Reviving an old thread, what is the approach now for keeping some private tags but deleting others?

Method 1: Whitelist allowed private tags, but otherwise remove

Does one set KeepPrivateTags=False while explicitly listing in Keep the tags that should be kept? In other words, Keep acts as a whitelist and takes precedence over KeepPrivateTags? All non-explicitly whitelisted private tags are deleted?

Method 2: KeepPrivateTags=True, explicit designation of Keep/Remove

Or will I need to be more explicit and construct separate Keep/Remove lists to make sure the private tags I don’t want are removed while the ones I want to keep are kept?

I’d prefer Method 1, white listing allowed private tags, but I couldn’t find any documentation of precedence between the KeepPrivateTags and Keep/Remove options.

Thanks,
John.

Yes, “KeepPrivateTags” is an official feature that won’t be removed in the future.

Sébastien-

Thanks, Sebastien. I deleted my second post yesterday when I realized I didn’t actually run the test I was describing.

I’m still unclear as to the order of precedence between Keep, Remove, KeepPrivateTags and RemovePrivateTags. How does the Keep parameter interact with the KeepPrivateTags parameter?

I’d like to white list some private tags, but otherwise remove all other private tags.

Method 1: whitelist
If KeepPrivateTags=False treats Keep like a white list, then I need only add the tags I want to keep to the Keep field and KeepPrivateTags=False will remove any other tags implicitly.

Method 2: explicit lists of keep/remove

If KeepPrivateTags=False always removes all private tags, whether or not they also appear in Keep, then I suspect I will need to code explicitly every set of tags I want to keep or remove.

I’d prefer Method 1, but I can adapt to Method 2. I didn’t find enough documentation to decide. That’s what I’d like to clarify.

Thanks,
John.

The answer lies within the source code of Orthanc:
https://bitbucket.org/sjodogne/orthanc/src/56d7f3d50c89c6c66c9932621a1ae05403e34ee1/Core/DicomParsing/DicomModification.cpp#lines-980

Thanks, Sebastien. That helped. I see that the Keep tags take precedence over the RemovePrivateTags.