Progressive Digital Consent
Feature Detail
Description
Provides a structured in-app workflow for peer mentors to digitally consent to handling sensitive personal data contained in encrypted assignments. Consent is captured progressively - prompted at first encounter with a new sensitive assignment type - and stored as an immutable, timestamped record. A manual fallback is supported for situations where digital consent cannot be obtained, ensuring operational continuity during the phased transition to full digital consent management.
Sources & reasoning
Line 101 calls for gradual digitalization of powers of attorney and medical records with manual fallback - the consent layer required for encrypted sensitive data handling. Combined with the dispatch requirement (line 94), this fulfills GDPR obligations for peer mentors receiving sensitive assignments. Part of the Phase 2 encrypted-assignments area, mapped to target_release v1.0.
-
docs/source/likeperson.md · line 101- Gradvis digitalisering av fullmakter og epikriser med manuelt fallback.
-
docs/source/likeperson.md · line 94- **Kryptert oppdragshåndtering:** Sende sensitive personopplysninger (navn, adresse, epikrise) til likepersoner med leveringsbekreftelse og lesebekreftelse.
Analysis
Handling sensitive personal data such as medical records and personal addresses requires explicit, documented consent from the peer mentor who will receive and act on that data. Blindeforbundet currently manages this through paper-based processes (powers of attorney, manual records) that are difficult to audit and impossible to scale. Progressive digital consent replaces these with an in-app, time-stamped audit record linked directly to each assignment, creating a defensible GDPR-compliant trail. The progressive model minimizes friction by prompting only when needed, while the manual fallback supports the phased digitalization strategy explicitly agreed across all organizations.
Consent records are stored server-side as immutable audit entries capturing peer_mentor_id, assignment_type, timestamp, scope, and method (digital or manual). The Flutter UI presents a bottom sheet at first encounter with a new sensitive assignment type, written in plain language. Once granted, subsequent assignments of the same type proceed without re-prompting unless scope changes. Coordinators can set a manual fallback flag in the admin portal, which generates a paper reference number linked to the digital record. Consent withdrawal must immediately block further dispatch of that assignment type and propagate without requiring a new app session.
Quality Assurance
Peer Mentor (primary)Peer Mentor
Quick UAT
- Logg inn i Meander-appen som Likeperson. Naviger til Oppdrag-innboksen via bunn-navigasjonen.
- Trykk på et nytt oppdrag med en sensitiv datatype du ikke har samtykket til tidligere. Bekreft at samtykkeskjermen vises automatisk med forklaring av hvilke personopplysninger som behandles.
- Les gjennom samtykketeksten og trykk «Gi samtykke». Bekreft at en tidsstemplet bekreftelse vises.
- Bekreft at oppdraget nå er tilgjengelig og at du kan åpne innholdet.
- Åpne et oppdrag av samme sensitive datatype på nytt. Bekreft at samtykkeskjermen IKKE vises igjen (progressiv logikk).
Quick UAT — Accessibility
-
Logg inn i Meander-appen som Likeperson. Naviger til Oppdrag-innboksen via bunn-navigasjonen.
- Screen reader Bunntabs annonseres med rolle og posisjon, f.eks. 'Oppdrag, fane 4 av 5'.
- Keyboard / focus Alle bunntabs nås med Tab; Enter aktiverer valgt tab.
- Focus visibility Synlig fokusring på aktiv bunn-tab.
-
Trykk på et nytt oppdrag med en sensitiv datatype du ikke har samtykket til tidligere. Bekreft at samtykkeskjermen vises automatisk med forklaring av hvilke personopplysninger som behandles.
- Screen reader Samtykkedialog annonseres som modal ved åpning, f.eks. 'Samtykke påkrevd. Dialog.' Overskrift og forklaringstekst leses i tab-rekkefølge.
- Keyboard / focus Fokus flyttes automatisk inn i dialogen ved åpning; Tab syklerer mellom lenker og knapper inni dialogen.
- Focus visibility Fokusring synlig på første interaktive element i dialogen.
- Touch target Samtykke-knapp ≥ 24×24 CSS px.
- Zoom Samtykketekst og knapper forblir lesbare og ikke avklipt ved 200 %.
- Contrast 4.5:1 for all tekst; sensitiv datatype ikke formidlet kun via farge.
-
Les gjennom samtykketeksten og trykk «Gi samtykke». Bekreft at en tidsstemplet bekreftelse vises.
- Screen reader 'Gi samtykke, knapp' annonseres. Etter trykk: 'Samtykke registrert [dato og tid]' via live region.
- Focus visibility Fokus returneres til oppdraget etter at dialogen lukkes.
- Touch target «Gi samtykke»-knapp ≥ 24×24 CSS px.
- Live region 'Samtykke registrert. [Dato og tid]' annonsert via polite live region.
-
Bekreft at oppdraget nå er tilgjengelig og at du kan åpne innholdet.
- Screen reader Oppdragsdetaljer leses i logisk rekkefølge: tittel, type, innhold.
- Keyboard / focus Tilbake-knapp nås med Tab; ingen sveipebasert navigasjon uten tastaturalternativ.
- Focus visibility Synlig fokusring på tilbake-knapp og innholdslenker.
-
Åpne et oppdrag av samme sensitive datatype på nytt. Bekreft at samtykkeskjermen IKKE vises igjen (progressiv logikk).
- Screen reader Ingen samtykke-dialog annonseres; bruker tas direkte til oppdragsinnhold.
- Live region Ingen uønsket live region-avbrudd ved gjenåpning.
Role Boundaries
4 role(s) must NOT access this feature-
Coordinator
Samtykkeskjerm finnes ikke i koordinatorens navigasjon; konsentflyten er ikke tilgjengelig fra koordinator-hjemskjermen.
-
Organization Administrator
Funksjon ikke eksponert i Admin Web Portal; forespørsel til samtykkendepunktet returnerer 403.
-
Global Administrator
Funksjon ikke eksponert i Admin Web Portal; forespørsel til samtykkendepunktet returnerer 403.
-
Prospective Organization Representative
Rolle har ingen tilgang til mobilappen eller samtykkeflyten.
Expected End State
Samtykket er lagret som en uforanderlig, tidsstemplet post i databasen knyttet til likepersonen og den sensitive oppdragstypen. Påfølgende oppdrag av samme type åpnes uten ny samtykkeforespørsel.
Components (21)
Shared Components
These components are reused across multiple features
User Stories
No user stories have been generated for this feature yet.