elixir-luxembourg / daisy

Data Information System (DAISY) is a data bookkeeping application designed to help Biomedical Research institutions with their GDPR compliance.
GNU Affero General Public License v3.0
12 stars 10 forks source link

Upon access approval in REMS, DAISY creates 4 access objects for given user #431

Closed vildead closed 11 months ago

vildead commented 11 months ago

This might be issue related to our current setup. But the API receiving request from REMS should be inspected.

marikapop commented 11 months ago

@vildead can you add a DAISY screenshot with multiple access objects? Or remind me which dataset it was (I checked PRECISESADS, it doe snot have multiple objects).

marikapop commented 11 months ago

It happened for Josie for PRECISESADS

neoflex commented 11 months ago

so, I was able to reproduce the issue and it seems that the following happens:

I propose to implement the following:

  1. daisy, when receiving the call from rems, should first check if an access with the exact same information exists, if it does, just return a 200 so that rems sees it as a success
  2. check if we can safely avoid a doing synchronisation when the call is received in daisy and instead set up a scheduled task to run the synchronisation
vildead commented 11 months ago

I agree.

  1. If an access exists, the fields can be updated (expiration date and REMS application ID in the comments).
neoflex commented 11 months ago

When checking if an access already exists, should we take into account only accesses that were automatically granted? For instance, if there is already an access, in active state, manually granted, and we receive a request from REMS to grant access to the same user and same dataset, what should we do? create a new access independently of the previous one, update the previously manually created access?

Another question that rose during implementation, what fields should we update exactly if identified that an access already exist and we don't want to create a new one (notes, granted_on, created_by, grant_expires_on)?

marikapop commented 11 months ago

If we found that access for the same user to the same dataset has been manually created, I would propose to

  1. terminate this manual access by date
  2. add note "terminated by REMS due to a new access request by date" This will give us a single valid access object per person at any time point and keep all information about previous accesses.

Do you grant access base on status of access object or expiration date? This will influence the necessity to change expiration date of manually created access.

Valentin, could you please specify your last question? Are you asking about the same situation: REMS found manual access already exist? Or the situation when REMS finds existing REMS records?

marikapop commented 11 months ago

@neoflex I cannot assign people. I hope you will get a notification due to @

neoflex commented 11 months ago

here is a summary of what we discussed with @marikapop. When a new request from REMS arrives: