Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Client side pseudonymization #27

Open
2 of 3 tasks
mdebic opened this issue Mar 7, 2023 · 3 comments
Open
2 of 3 tasks

Client side pseudonymization #27

mdebic opened this issue Mar 7, 2023 · 3 comments
Assignees
Labels
enhancement New feature or request

Comments

@mdebic
Copy link
Collaborator

mdebic commented Mar 7, 2023

Related to issue #19

A java script class which handles the complete process of client side pseudonymization need to be implemented. Build a class with general properties for managing the pseudonymization. Probably just a pseudonymization method needed.

General workflow:

  • Users logs in, goes to Upload tab
  • Users uploads images
  • Users has a text input field where he can provide a pseudonym
  • The uploaded images are handled by client side upload code from issue Upload with websockets and integrated client side pseudonymization #19
  • The incoming data in the browser, is passed to an pseudonymization function which handles everything
  • The function should return a Dicom Object (see JS Dicom Implemntation dcmjs), which is pseudonymized

Start implementation as follow:

  • Set up a working environment, where you can mimic incoming images to the browser, basically copy the relevant stuff from Upload with websockets and integrated client side pseudonymization #19

  • You should be able to start an run everything without the overhead of adit, only with node.js

  • Look into how the files are handled by client, probably an array containing some blob objects or similar

  • Create the pseudonymization object and pass on each blob object separetly to the pseudonymization method

  • Most important thing for the pseudonymization object creation will be, to initilaize this object correctly, so every image in that session is pseudonymized the same way

  • Create Dicom Objects (dcmjs) out of these blobs

  • Pseudonymize Dicom object

  • Return the Dicom Object

  • Set up mini working envirionment which accepts/loads files like a browser would do with node.js

  • Search for pseudonymization solutions in JS, does dcm.js have one?

  • If not, implement one, for that look into the Python Implementation Dicognito (same pseudonymization needed), but for now ignore the pseudonymization of UIDs

@mdebic mdebic added the enhancement New feature or request label Mar 7, 2023
@lmdulz
Copy link
Collaborator

lmdulz commented Mar 7, 2023

To replace certain DicomTags like street names we need fake data, cant be empty - therefore JS Fakers need to be checked and choosen

@medihack
Copy link
Member

medihack commented Mar 7, 2023

It also can't depend on node js stuff as this would be backend. But that's OK as dcmjs works fully browser based. I guess there won't be a ready to use anonymization lib for dcmjs, but I think it's not to hard to create one. maybe we can open source it on its own, too (I can help with that). Makes sense as it should best be completely independent from adit. A good guideline what to anonymize is https://dicom.nema.org/medical/dicom/current/output/chtml/part15/chapter_E.html

@medihack
Copy link
Member

medihack commented Mar 7, 2023

And yes, fakerjs is super solid now (after it's cumbersome history https://javascript.plainenglish.io/open-source-a-horror-story-c14caba386a8 it was adopted by a large maintainer group)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants