cati-neuroimaging / deidentification

Tool to remove metadata allowing to identify a subject from DICOM images used in neuroimaging research
MIT License
3 stars 2 forks source link

Design the API of the project #14

Open sapetnioc opened 4 years ago

sapetnioc commented 4 years ago

We must discuss, define and document the expected behavior of the project. Both for the library part and for the script part.

sapetnioc commented 4 years ago

Is there someone that do not agree with some of the following statements ?

Hboni commented 4 years ago

These first ideas sound good for me. But I have some question/suggestion :

The goal of this project is to make it easy to propose a deidentification service that must be usable by non specialists.

  • So I'm wondering if you thinking about adding a user interface around the API?
  • I know that we can find header infos in nifti format, I didn't use much, but do you think that some deidentification can be necessary for this header too?

It is necessary to rename input files into deidentified path.

sapetnioc commented 4 years ago

These first ideas sound good for me. But I have some question/suggestion :

* Do we limit this project to neuroimaging data or medical images in general? I think that because of our data, we can limit to neuro, but the principle could be the same for other imaging?

Theoretically I would like to see a project that is dedicated to the reception of neuroimaging research data (with a broad meaning, for instance omics data coul be included). But I am afraid that we will only have the possibility to deidentifiy DICOM, NIFTI and eventually a few other format that may be sent tu us.

* So I'm wondering if you thinking about adding a user interface around the API?

* I know that we can find _header infos_ in nifti format, I didn't use much, but do you think that some deidentification can be necessary for this header too?

Yes, I do not know if it will be in the same project but I have in mind a very simple Web interface associated with a way to send files (for instance Web, WebDAV, sFTP).

* In case of filename without any specific information in it, can we have the possibility to deidentify and erase the old one?

I think the goal is to be confident that no identifying data is left in the output of the project. But how to be sure that the file name does not contain such information ? This is why I propose to always rename file names.

* I'm not sure if I understand all the API step, your idea is to first create a metadata file from the DICOM. This metadata could be modified before the deidentification step? So for the user, it would be 2 steps?

Yes, this is where having an GUI makes sense. On the API side, the metadata could be a sort of JSON object (whose exact content is still to be defined). There would be a function to build the metadata given the input files and another function to do the deidentification given the input files and the metadata. If it appears that, in some use cases, there is no need for user interaction, we will just have to chain the two functions.

Hboni commented 4 years ago

Yes, I do not know if it will be in the same project but I have in mind a very simple Web interface associated with a way to send files (for instance Web, WebDAV, sFTP).

A Web interface, connected to what? To be used in local !?

I think the goal is to be confident that no identifying data is left in the output of the project. But how to be sure that the file name does not contain such information? This is why I propose to always rename file names.

In our case, we don't want sensible data in the filename, but if this tool is going to be used by someone who just needs to deidentify before sending data (to the CATI for example), they maybe would keep the original file?