medium complexity extracted Expense & Reimbursement Confidence: 100%
3
Components
18
Shared
0
User Stories
Yes
Analyzed

Description

Collects digital confidentiality declarations from peer mentors acting as drivers or in sensitive roles, as required by Blindeforbundet for driver honoraria and engagements involving access to sensitive personal contact information. A declaration screen appears within the expense registration flow when a qualifying expense type is detected, blocking submission until the peer mentor explicitly accepts the declaration terms. Accepted declarations are stored with a timestamp, user reference, organization, and declaration type for audit and compliance review. The backend enforces the presence of a valid declaration before persisting driver-type expense items, providing server-side compliance assurance independent of client flow.

Sources & reasoning

Line 71 explicitly lists driver honoraria and confidentiality declarations as a Blindeforbundet requirement within the expense registration flow. The parent area is Fase 2 in the priority matrix at line 148, mapping to v1.0. The feature is compliance-driven, not optional UX.

Analysis

Business Value

Blindeforbundet requires formal confidentiality declarations from peer mentors who act as drivers or handle sensitive personal information about contacts, as part of their duty-of-care and GDPR-adjacent data protection obligations. Currently these declarations are collected on paper and stored manually, creating compliance risk if declarations are missing during an audit and adding administrative overhead for coordinators maintaining paper records alongside digital activity logs. Digitizing the declaration within the same app flow that captures the associated expense eliminates the risk of missed declarations, creates an immutable digital audit trail, and removes paper storage overhead entirely. The pattern is reusable by other organizations with similar duty-of-care requirements, and the conditional trigger means peer mentors who never perform driver roles are never shown an irrelevant screen.

Implementation Notes

ConfidentialityDeclarationScreen is triggered conditionally: when an expense item with a driver honorarium type is added, ConsentService checks whether a valid declaration exists for the current user and period. If not, the declaration screen is presented modally before submission proceeds, following the same acceptance state machine pattern established by the progressive-digital-consent feature in the encrypted-assignments area. Declarations are stored in the confidentiality_declarations table with user_id, organization_id, declaration_type, and accepted_at columns. The backend validates declaration existence before persisting driver-type expense items and returns an error if none is found. ConfidentialityRepository handles Drift persistence for offline declaration acceptance, allowing a peer mentor to accept the declaration while offline and sync the acceptance record before the expense submission is processed.

Quality Assurance

Peer Mentor (primary) — Coordinator excluded (cannot sign on behalf of another person)
1
Scenarios
5
UAT Steps
19
A11y Annotations
4
Role Boundaries
Peer Mentor

Peer Mentor

Quick UAT

  1. Logg inn i appen som Likeperson. Trykk på legg-til-knappen og velg Registrer utlegg.
  2. Velg en utgiftstype som krever taushetsplikt, f.eks. Sjåførhonorar eller tilsvarende sjåfør-/sensitiv rolle-type. Bekreft at taushetsplikt-skjermen vises som et blokkerende overlay før du kan fortsette.
  3. Les erklæringsteksten og bekreft at Godta-knappen er deaktivert eller utilgjengelig frem til du har scrollet til bunnen av teksten.
  4. Trykk Godta erklæringen og bekreft at overlaytet lukkes og at utleggsregistreringen fortsetter til neste steg.
  5. Fullfør og send inn utlegget. Bekreft at innsendingen lykkes og at en bekreftelsesmelding vises med tidsstempel.

Quick UAT — Accessibility

  1. Logg inn i appen som Likeperson. Trykk på legg-til-knappen og velg Registrer utlegg.
    • Screen reader Nedre navigasjonsfane annonseres som 'Hjem, fane 1 av 5'; legg-til-knapp annonseres som 'Legg til, knapp'.
    • Keyboard / focus Tab-rekkefølge: nedre nav → legg-til → menyvalg. Enter åpner utleggsregistrering.
    • Touch target Legg-til-knapp ≥ 24×24 CSS px.
  2. Velg en utgiftstype som krever taushetsplikt, f.eks. Sjåførhonorar eller tilsvarende sjåfør-/sensitiv rolle-type. Bekreft at taushetsplikt-skjermen vises som et blokkerende overlay før du kan fortsette.
    • Screen reader Utgiftstypeliste annonseres som listeboks; valgt element bekreftes. Overlaytet annonseres som 'Taushetserklæring, dialog' og fokus flyttes automatisk inn i dialogen.
    • Keyboard / focus Piltaster navigerer utgiftstyper; Enter velger. Fokus fanges i overlay (modal focus trap).
    • Focus visibility Synlig fokusring på aktiv utgiftstype og på overlay-dialogen.
    • Zoom Utgiftstypeliste og overlay brukbare ved 200% zoom uten horisontal scroll.
  3. Les erklæringsteksten og bekreft at Godta-knappen er deaktivert eller utilgjengelig frem til du har scrollet til bunnen av teksten.
    • Screen reader Erklæringstekst annonseres løpende ved scroll; Godta-knapp annonseres som 'utilgjengelig' eller 'deaktivert' til betingelsen er oppfylt.
    • Keyboard / focus Tab og piltaster scroller innholdsregionen; Godta-knapp er ikke fokuserbar mens den er deaktivert.
    • Focus visibility Tydelig fokusring rundt scrollbart innholdsområde.
    • Contrast Erklæringstekst 4.5:1 mot bakgrunn; deaktivert Godta-knapp kommuniserer tilstand via label, ikke kun gråfarge.
  4. Trykk Godta erklæringen og bekreft at overlaytet lukkes og at utleggsregistreringen fortsetter til neste steg.
    • Screen reader Godta-knapp annonseres som 'Godta erklæringen, knapp'; etter trykk annonseres 'Erklæring akseptert' via live-region og fokus returneres til utleggsregistreringsflyten.
    • Focus visibility Fokus flyttes til første interaktive element i utleggsregistreringen etter at overlaytet lukkes.
    • Touch target Godta-knapp ≥ 24×24 CSS px med tilstrekkelig avstand til eventuelle nærliggende elementer.
    • Live region 'Taushetserklæring akseptert. Du kan nå fortsette registreringen.'
  5. Fullfør og send inn utlegget. Bekreft at innsendingen lykkes og at en bekreftelsesmelding vises med tidsstempel.
    • Screen reader Send inn-knapp annonseres som 'Send inn utlegg, knapp'; bekreftelsesmelding annonseres automatisk via live-region.
    • Focus visibility Fokus flyttes til bekreftelsessiden etter vellykket innsending.
    • Live region 'Utlegg sendt inn. Taushetserklæring registrert [dato og klokkeslett].'
    • Zoom Bekreftelsesmelding med tidsstempel lesbar ved 200% zoom.

Role Boundaries

4 role(s) must NOT access this feature
  • Coordinator

    Taushetsplikt-overlay vises ikke ved proxy-registrering; koordinator kan ikke akseptere en erklæring på vegne av en likeperson. Utgiftstyper som utløser erklæring er ikke tilgjengelige i proxy-registreringsflyten.

  • Organization Administrator

    Organisasjonsadministrator logger kun inn i Admin Web Portal, ikke i mobilappen. Taushetsplikt-skjermen finnes ikke i admin-portalen.

  • Global Administrator

    Global administrator har ikke tilgang til mobilappens utleggsflyt. Skjermen er utilgjengelig fra admin-portalen.

  • Prospective Organization Representative

    Har ingen brukerkonto i plattformen. All tilgang avvises.

Expected End State

Taushetserklæringen er lagret med tidsstempel, brukerreferanse, organisasjon og erklæringstype. Utleggsposten er persistert i databasen. Erklæringen er sporbar i revisjonsloggen.

User Stories

No user stories have been generated for this feature yet.