Relative Contact Registration
Feature Detail
Description
Relative Contact Registration allows peer mentors and coordinators to register family members and caregivers of primary contacts as independent contact subjects within the system. Designed for Barnekreftforeningen, where peer mentor support extends to entire families surrounding a child with cancer, each relative is stored as a first-class record with their own profile, contact details, and communication preferences. Records are kept in a dedicated relatives table separate from the main contacts table, preserving clean data boundaries while enabling holistic family-level case views. This separation ensures that relative records do not pollute the contacts namespace while remaining fully navigable from both sides of the relationship.
Sources & reasoning
Barnekreftforeningen explicitly requires registering relatives as independent contact subjects (line 121). Priority matrix confirms MUST with Phase 1 placement (line 161) and the note at line 438 reinforces the Fase 1 mandate. Blueprint marks this feature [MVP]. All downstream relatives-database features depend on this registration capability existing first.
-
docs/source/likeperson.md · line 121Barnekreftforeningen jobber primært med familier rundt barn med kreft, ikke kun med de berørte selv. Appen må støtte registrering av pårørende (foreldre, søsken, nærmeste omsorgsperson) som egne kontaktsubjekter
-
docs/source/likeperson.md · line 161Pårørende database | ✓ | - | - | - | ✓ | MUST (Barnekreft) | 1
-
docs/source/likeperson.md · line 438Pårørende-database er Fase 1 MUST for Barnekreftforeningen (se §4 matrisen).
Analysis
Barnekreftforeningen's peer mentors support entire family units around children with cancer - parents, siblings, and primary caregivers all need attention and follow-up. Without structured relative registration, these relationships exist only in unstructured notes, creating gaps in care delivery and making it impossible for coordinators to verify which family members have received support. This feature is explicitly a Phase 1 MUST-HAVE for Barnekreftforeningen, meaning the platform cannot serve this organization without it. It is foundational infrastructure for the entire Relatives Database module: case linking and role tagging both depend on relative records existing as proper first-class entities rather than free-text annotations on a contact record.
Relatives are stored in a dedicated relatives table sharing the same address and communication field schema as contacts. Riverpod providers manage relative state with Drift for offline-first persistence, following the same architecture as the contacts module. The RelativeRegistrationScreen presents a multi-field form with name, contact details, and a provisional relationship note. All form controls must meet WCAG 2.2 AA: semantic labels, 4.5:1 contrast ratio, and minimum 24px touch targets. The REST API validates organization membership before persisting a relative, enforcing tenant isolation. Offline mutations queue via the mutation outbox and sync with retry/backoff on reconnect. ID mapping handles offline-created relative IDs when the server assigns canonical IDs after sync.
Quality Assurance
Peer Mentor · Coordinator (same flow)Peer Mentor
Quick UAT
- Logg inn i Meander-appen og åpne Kontakter via bunnavigasjonen. Finn og velg ønsket kontakt fra listen.
- Trykk på «Pårørende»-fanen på kontaktdetaljsiden, deretter «Legg til pårørende»-knappen.
- Fyll inn pårørendes navn, relasjonstype (f.eks. forelder, søsken, omsorgsperson) og kontaktopplysninger (telefon og/eller e-post).
- Velg kommunikasjonsinnstillinger for pårørende (foretrukket kanal) og bekreft at alle obligatoriske felt er fylt ut.
- Trykk «Lagre» og bekreft at den nye pårørende vises i pårørende-listen på kontaktsiden med korrekt navn og relasjonstype.
Quick UAT — Accessibility
-
Logg inn i Meander-appen og åpne Kontakter via bunnavigasjonen. Finn og velg ønsket kontakt fra listen.
- Screen reader Bunnavigasjon annonseres med rolle 'navigasjonslinje'; aktiv fane leses som 'Kontakter, valgt'. Kontaktnavn og rolle leses per listeelement.
- Keyboard / focus Tab navigerer mellom bunnavigasjonsfaner; Enter ĂĄpner Kontakter. Piltaster navigerer kontaktlisten; Enter ĂĄpner valgt kontakt.
- Focus visibility Synlig fokusring pĂĄ aktiv fane og valgt listeelement.
- Touch target Fane-knapper og listeelementer ≥ 44×44 CSS px.
-
Trykk på «Pårørende»-fanen på kontaktdetaljsiden, deretter «Legg til pårørende»-knappen.
- Screen reader Faneavsnitt annonseres med antall faner; aktiv fane leses som 'Pårørende, valgt'. «Legg til pårørende»-knapp annonseres med rolle 'knapp'.
- Keyboard / focus Tab-rekkefølge: faneliste → fane-innhold → «Legg til pårørende»-knapp. Enter aktiverer knappen og åpner skjema.
- Focus visibility Fokus flyttes automatisk til skjemaets første felt etter aktivering.
- Touch target «Legg til pårørende»-knapp ≥ 44×44 CSS px.
-
Fyll inn pårørendes navn, relasjonstype (f.eks. forelder, søsken, omsorgsperson) og kontaktopplysninger (telefon og/eller e-post).
- Screen reader Hvert felt leses med label og gjeldende verdi. Nedtrekksliste for relasjonstype annonserer antall valg. Feilmeldinger leses umiddelbart via live region.
- Keyboard / focus Tab navigerer mellom felt i logisk rekkefølge. Piltaster navigerer nedtrekksliste for relasjonstype. Escape lukker nedtrekksliste uten valg.
- Focus visibility Synlig fokusring pĂĄ aktivt felt; obligatoriske felt merket 'obligatorisk' i label.
- Zoom Alle felt og labels synlige og brukbare ved 200 % zoom uten horisontal rulling.
- Contrast Feltlabels og plassholdertekst: minimum 4,5:1. Valideringsfeil vises ikke kun med rødfarge — ikon og tekstmelding supplerer.
-
Velg kommunikasjonsinnstillinger for pårørende (foretrukket kanal) og bekreft at alle obligatoriske felt er fylt ut.
- Screen reader Radioknapper eller avkrysningsbokser for kommunikasjonskanal annonseres med rolle, label og tilstand (valgt/ikke valgt).
- Keyboard / focus Piltaster navigerer mellom radioknapper. Space velger avkrysningsboks. Tab hopper til neste feltgruppe.
- Focus visibility Fokusring synlig pĂĄ aktiv radioknapp / avkrysningsboks.
- Touch target Interaktive kontroller ≥ 24×24 CSS px.
-
Trykk «Lagre» og bekreft at den nye pårørende vises i pårørende-listen på kontaktsiden med korrekt navn og relasjonstype.
- Screen reader 'Pårørende lagret' annonseres via polite live region. Fokus returnerer til pårørende-listen; nytt element leses med navn og relasjonstype.
- Keyboard / focus Tab navigerer til «Lagre»-knapp; Enter sender skjema. Fokus returnerer til pårørende-listen etter vellykket lagring.
- Focus visibility Fokus plasseres på det nylig opprettede pårørende-elementet i listen etter lagring.
- Live region 'Pårørende lagret. [Navn] er lagt til som [relasjonstype].'
Role Boundaries
2 role(s) must NOT access this feature-
Organization Administrator
Organisasjonsadministrator har kun tilgang til Admin Web Portal. Relatives Database-skjermen finnes ikke i admin-portalens navigasjon; forsøk på deep-link til mobilapp-rute returnerer 403.
-
Global Administrator
Global Administrator omdirigeres til Admin Web Portal ved innlogging på mobilappen; pårørende-registreringsskjermen er ikke tilgjengelig og deep-link returnerer 403.
Expected End State
Den nye pårørende er lagret som en selvstendig post i relatives-tabellen, koblet til primærkontakten via relatives_case_links, og vises umiddelbart i pårørende-listen på kontaktdetaljsiden med korrekt navn, relasjonstype og kommunikasjonsinnstillinger.
Components (21)
Shared Components
These components are reused across multiple features
User Stories
No user stories have been generated for this feature yet.