Skip to content

Add pre scan dpia #40

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

Merged
merged 3 commits into from
Apr 14, 2025
Merged

Add pre scan dpia #40

merged 3 commits into from
Apr 14, 2025

Conversation

ravimeijerrig
Copy link
Contributor

@ravimeijerrig ravimeijerrig commented Apr 8, 2025

Description

1. DIA-verplichting:

Er is een DPIA-verplichting indien een of meer van onderstaande 3 criteria:

  1. risicoscore hoger dan 4

De totale risicoscore is de som van de individuele risicoscores van verschillende categorieën:

  • risicoscore_gewone_persoonsgegeven (0 or 1)
  • risicoscore_bijzonder_persoonsgegeven (0, 1, or 2)
  • risicoscore_gevoelig_persoonsgegeven (0, 1, or 2)
  • risicoscore_betrokkenen (0, 1, or 2)
  • risicoscore_aantal_betrokkenen (0 or 1)
  • risicoscore_frequentie_verwerking (0 or 1)
  • risicoscore_bewaartermijn (0 or 1)
  • risicoscore_international_doorgifte (0, 1, or 2)
  • risicoscore_basisregistratie (0 or 1)
  • risicoscore_digitaledienst_minderjarig (0, 1, or 2)
calculation:
      risicoscore_tag: gewone_persoonsgegeven
      type: count
      thresholds:
        - condition: gewone_persoonsgegeven < 6
          risicoscore_gewone_persoonsgegeven: 0
        - condition: gewone_persoonsgegeven >= 6
          risicoscore_gewone_persoonsgegeven: 1

calculation:
      risicoscore_tag: bijzonder_persoonsgegeven
      type: count
      thresholds:
        - condition: bijzonder_persoonsgegeven == 0
          risicoscore_bijzonder_persoonsgegeven: 0
        - condition: bijzonder_persoonsgegeven >= 1 && bijzonder_persoonsgegeven <= 6
          risicoscore_bijzonder_persoonsgegeven: 1
        - condition: bijzonder_persoonsgegeven > 6
          risicoscore_bijzonder_persoonsgegeven: 2

calculation:
      risicoscore_tag: gevoelig_persoonsgegeven
      type: count
      thresholds:
        - condition: gevoelig_persoonsgegeven == 0
          risicoscore_gevoelig_persoonsgegeven: 0
        - condition: gevoelig_persoonsgegeven >= 1 && gevoelig_persoonsgegeven <= 6
          risicoscore_gevoelig_persoonsgegeven: 1
        - condition: gevoelig_persoonsgegeven > 6
          risicoscore_gevoelig_persoonsgegeven: 2

calculation:
      risicoscore_tag: betrokkenen
      type: weighted_count
      thresholds:
        - condition: betrokkenen <=2
          risicoscore_betrokkenen: 0
        - condition: betrokkenen == 3
          risicoscore_betrokkenen: 1
        - condition: betrokkenen >= 4
          risicoscore_betrokkenen: 2

calculation:
        risicoscore_tag: aantal_betrokkenen
        type: sum
        thresholds:
          - condition: aantal_betrokkenen < 10000
            risicoscore_aantal_betrokkenen: 0
          - condition: aantal_betrokkenen >= 10000
            risicoscore_aantal_betrokkenen: 1

calculation:
        risicoscore_tag: frequentie_verwerking
        type: value
        thresholds:
          - condition: (frequentie_verwerking == "Eenmalig") || (frequentie_verwerking == "Onregelmatig") || (frequentie_verwerking == "Minstens jaarlijks")
            risicoscore_frequentie_verwerking: 0
          - condition: (frequentie_verwerking == "Minstens manadelijks") || (frequentie_verwerking == "Vaker dan maandelijks") || (frequentie_verwerking == "Continu")
            risicoscore_frequentie_verwerking: 1

calculation:
        risicoscore_tag: bewaartermijn
        type: value
        thresholds:
          - condition: (bewaartermijn == "Minder dan 24 uur") || (bewaartermijn == "Mindern dan 1 week") || (bewaartermijn == "Minder dan 1 maand")
            risicoscore_bewaartermijn: 0
          - condition: (bewaartermijn == "Jaar") || (bewaartermijn == "Aantal jaren")
            risicoscore_bewaartermijn: 1

calculation:
        risico_tag: [internationale_doorgifte, locatie_gegevensopslag, bijzondere_persoonsgegevens_doorgifte, cloudgebruik]
        type: value
        thresholds:
          - condition: (internationale_doorgifte == false) && 
                      (
                        (cloudgebruik == false) || 
                        (cloudgebruik == true && locatie_gegevensopslag != "Buiten EER")
                      )
            risicoscore_internationale_doorgifte: 0
          - condition: ((internationale_doorgifte == true && bijzondere_persoonsgegevens_doorgifte == false && 
                        (cloudgebruik == false || (cloudgebruik == true && locatie_gegevensopslag != "Buiten EER")))) || 
                        ((internationale_doorgifte == false && cloudgebruik == true && locatie_gegevensopslag == "Buiten EER"))
            risicoscore_internationale_doorgifte: 1
          - condition: internationale_doorgifte == true && 
                        ((cloudgebruik == true && locatie_gegevensopslag == "Buiten EER") || bijzondere_persoonsgegevens_doorgifte == true )
            risicoscore_internationale_doorgifte: 2

calculation:
        risicoscore_tag: basisregistratie
        type: weighted_count
        thresholds:
          - condition: basisregistratie == 0
            risicoscore_basisregistratie: 0
          - condition: basisregistratie >= 1
            risicoscore_basisregistratie: 1

calculation: 
      risicoscore_tag: [digitaledienst_minderjarig, digitaledienst_gebruik_minderjarig]
      type: value
      thresholds:
      - condition: digitaledienst_minderjarig == false && digitaledienst_gebruik_minderjarig != "Nee"
        risicoscore_digitaledienst_minderjarig: 0
      - condition: digitaledienst_minderjarig == false && digitaledienst_gebruik_minderjarig == "Nee"
        risicoscore_digitaledienst_minderjarig: 1
      - condition: digitaledienst_minderjarig == true
        risicoscore_digitaledienst_minderjarig: 2
  1. 1+ van de PA-lijst
calculation: 
      AP_tag: AP
      type: count
      thresholds:
        - condition: AP => 1
          AP_score: 2
  1. 2+ van de EDPB-lijst
calculation: 
      EPDB_tag: EPDB
      type: count
      thresholds:
        - condition: EPDB == 1
          EPDB_score: 1
        - condition: EPDB > 1
          EPDB_score: 2

Risicoscore in de praktijk:

2. DTIA-verplichting:

Een DTIA-verplichting geldt wanneer een partij verplicht is een DTIA op te stellen voor een internationale doorgifte.
Toelichting: Een partij is verplicht een DTIA op te stellen als er een internationale doorgifte plaats vindt zonder adequaatheidsbesluit voor het derde land.

In de praktijk:

redirect: 
    - if: 
        ("C.1" == "JA") &&
        (("C.1.1" == "Buiten EER") || ("C.1.2" == "Buiten EER")) &&
        (("C.1.3" == "Standaard contractsbepaling (SCC)") || ("C.1.3" == "Geen van bovenstaande"))
      result: "DTIA"

3. KIA-verplichting:

Een KIA-verplichting geldt wanneer een partij verplicht is een Kinderrechten Impact Assessment op te stellen voor een digitale dienst.
Toelichting: Een partij is in ieder geval verplicht een KIA op te stellen als een digitale dienst wordt aangeboden die primair bedoeld is voor gebruik door personen jonger dan 18 jaar.

In de praktijk:

redirect: 
      - if: 
          ("H.2" == 'Ja')
        result: 'KIA'
      - if: 
          ("H.3" == "Nee")
        result: 'Zorg voor goede leeftijdsverificatie om te voorkomen dat minderjarigen gebruik maken van de digitale dienst' #RM: voorstel om dit eruit te laten en in de vraag op te nemen. 


4. IAMA-verplichting:

Een IAMA-verplichting geldt wanneer een partij verplicht is een IAMA op te stellen voor een algoritme.
Toelichting: Een partij is in ieder geval verplicht een IAMA op te stellen als gebruik wordt gemaakt van een algoritme dat kwalificeert als een AI-systeem.

In de praktijk:

redirect:
  redirect: 
    - if:
        ("G.2" == true) || ("G.3" == true) 
      result: "IAMA"

Resolves #

Checklist

Please check all the boxes that apply to this pull request using "x":

  • I have tested the changes locally and verified that they work as expected.
  • I have followed the project's coding conventions and style guidelines.
  • I have rebased my branch onto the latest commit of the main branch.
  • I have squashed or reorganized my commits into logical units.
  • I have read, understood and agree to the Developer Certificate of Origin, which this project utilizes.

@ravimeijerrig ravimeijerrig marked this pull request as ready for review April 11, 2025 15:27
@ravimeijerrig ravimeijerrig merged commit 79098cf into main Apr 14, 2025
@ravimeijerrig ravimeijerrig deleted the add_pre_scan_DPIA branch April 14, 2025 13:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants