Replikering fra PVK ved REST-kall til ekstern aktør
Bakgrunn
Dette er et alternativ til meldingsbasert replikering av informasjon når innbyggere setter eller endrer en personverninnstilling. Samme informasjonen som i dag utveksles med XML-meldinger og bruk av AMQP, "Postes" til et API hos ekstern aktør.
Det benyttes i dette grensesnittet JSON- struktur på dataene som replikeres. Dette er de samme objekter som benyttes i API’ene mot PVK., Se: Hente informasjon fra PVK om innbyggers personverninnstillinger | Felles objekter benyttet i respons fra tjenestene
En vellykket respons på POST av dataene til den eksterne parten medfører implisitt en kvittering for at dataene er forstått og lagret hos motpart (dvs. samme logiske funksjonalitet som APPREC).
Alle slike kall inneholder et JWT system token utstedt av Helsenorge STS. Se her: Helsenorge eller PVK som system- på vegne av innbygger
Tjenesteoversikt
Ekstern part må ha et API som implementerer dette endepunktet.
TjenesteNavn | HttpVerb | Beskrivelse |
---|---|---|
LagreInnbyggersPersonvernInnstilling | POST | Ekstern part må lagre/endre innbyggers personverninnstilling |
LagreInnbyggersPersonvernInnstilling
Input parametere
Navn | Type | Lovlige verdier | Kommentar |
---|---|---|---|
innbyggerFnr | string | fødselsnummer (11 siffer) | Dette er fødselsnummer til innbygger hvis personverninnstilling skal registreres eller endres |
definisjonGuid | string | GUID | GUID for den personverninnstilling definisjon det gjelder |
definisjonNavn | string | Navn på innstillingen | Beskrivende kortnavn på personverninnstilling definisjonen. |
partKode | string | Eier (datansvarlig) | Kode (kortnavn) for den aktør som "eier" den aktuelle personverninnstilling. |
typePi | string | Type personverninnstilling | Kan ha en av følgende verdier:
|
status | string | Status | Kan ha en av følgende kodeverdier (hentet fra Volven kodeverk 7609): Mulige verdier dersom typePI = reservasjon
Mulige verdier dersom typePI = samtykke
Mulige verdier dersom typePI = tilgangsbegrensning (sperring eller blokkering)
|
sekvensnummer | int | Hvilket sekvensnummer dette er for innbygger instans av denne personverninnstillingdefinisjonen. | Løpenummer som begynner på 1 for den aktuelle definsjon for den aktuelle innbygger. MERK! Mottagende system bør lagre siste mottatte sekvensnummer. Dersom det mottas en replikering med et sekvensnummer som er mindre (eller lik) et tidligere mottatt sekvensnummer, skal replikeringen overses. Dette kan skje dersom det er temporær nedetid i mottagende system, og Helsnorge/PVK retry-mekanisme gjør at replikeringensmeldingen blir “forsinket”, og innbygger i mellomtiden har satt ny innstilling. |
opprettetTidspunkt | time | Tidspunkt for når første instans av innbyggers personverninnstilling ble opprettet. | Tidspunkt for når sekvensnummer 1 ble opprettet, Merk! Man kan alternativt benytte tidspunktene i stedet for sekvensnummer, for å luke ut “gamle” replikeringer. |
sistEndretTidspunkt | time | Tidspunkt for nå innbygger satt personverninnstillingen som denne endringen representerer. | Tidspunkt for denne endringen. Merk! Man kan alternativt benytte tidspunktene i stedet for sekvensnummer, for å luke ut “gamle” replikeringer. |
Avhengig av typePi:
| JSON |
|
Eksempel - samtykke uten metadata på definisjonen
Innbygger har gitt et nytt samtykke (uten metadata på definisjonen):
{
"innbyggerFnr":"12048645510",
"definisjonGuid":"3FE2A80A-4200-42E2-817B-DA8A6236708A",
"definisjonNavn":"Samtykke til oppbevaring av biomateriale",
"partKode":"NFR",
"typePi":"samtykke",
"status":"SAM",
"sekvensnummer":1,
"opprettetTidspunkt":"2020-01-16T11:09:38.4871148+01:00",
"sistEndretTidspunkt":"2020-01-16T11:09:38.4871148+01:00"
}
Innbygger har trukket tidligere gitt samtykke (uten metadata på definisjonen):
{
"innbyggerFnr":"12048645510",
"definisjonGuid":"3FE2A80A-4200-42E2-817B-DA8A6236708A",
"definisjonNavn":"Samtykke til oppbevaring av biomateriale",
"partKode":"NFR",
"typePi":"samtykke",
"status":"ISAM",
"sekvensnummer":2,
"opprettetTidspunkt":"2020-01-16T11:09:38.4871148+01:00",
"sistEndretTidspunkt":"2020-03-12T11:09:38.4870056+01:00"
}
Eksempel - samtykke med metadata på definisjonen
Innbygger har gitt et nytt samtykke med metadata på definisjonen:
Her er det en fast tidsbegrensning for hvilken periode samtykket gjelder for. Videre er det i eksemplet to stk. omfangElement:
OF (oppføring)
IO (innhenting av helseopplysninger, med tilhørende presisering)
{
"innbyggerFnr":"12048645510",
"definisjonGuid":"0394a91f-89e7-4df3-b738-a07f0ee5e8d6",
"definisjonNavn":"Samtykke til å delta i Helseundersøkelsen i nord Trøndelag",
"partKode":"HUNT",
"typePi":"samtykke",
"status":"SAM",
"sekvensnummer":"1",
"opprettetTidspunkt":"2020-01-16T11:09:38.4871148+01:00",
"sistEndretTidspunkt":"2020-01-16T11:09:38.4871148+01:00",
"SaMetadata":
{
"SaFasteMetadata":
{
"tidsbegrensning":
{
"tidsbegrensetFra": "2022-01-01",
"tidsbegrensetTil": "2023-12-31"
},
"omfangElementer": [
{
"omfang": "OF"
},
{
"omfang": "IO",
"logiskOmfang": "Angitte",
"presisering": "Blodprøver"
}
]
}
}
}
Innbygger har trukket tidligere gitt samtykke med metadata på definisjonen:
(Samme definisjon som over)
{
"innbyggerFnr":"12048645510",
"definisjonGuid":"0394a91f-89e7-4df3-b738-a07f0ee5e8d6",
"definisjonNavn":"Samtykke til å delta i Helseundersøkelsen i nord Trøndelag",
"partKode":"HUNT",
"typePi":"samtykke",
"status":"ISAM",
"sekvensnummer":2,
"opprettetTidspunkt":"2020-01-16T11:09:38.4871148+01:00",
"sistEndretTidspunkt":"2020-03-12T10:06:31.3871148+01:00",
"SaMetadata":
{
"SaFasteMetadata":
{
"tidsbegrensning":
{
"tidsbegrensetFra": "2022-01-01",
"tidsbegrensetTil": "2023-12-31"
},
"omfangElementer": [
{
"omfang": "OF"
},
{
"omfang": "IO",
"logiskOmfang": "Angitte",
"presisering": "Blodprøver"
}
]
}
}
}
Eksempel - Blokkere helsepersonellstilgang
Sette ny tilgangsbegrensning. Enten registrerer ny instans eller oppdatere/overskrive eksisterende instans med flere/færre helsepersonell:
Her en definisjon der innbygger tillates å sette tidsbegrensninger.
{
"innbyggerFnr":"12048645510",
"definisjonGuid":"3F7457B8-821C-45A8-AE04-D3E4A0DAC0F0",
"definisjonNavn":"Blokkere helsepersonells tilgang til legemiddelliste",
"partKode":"RF",
"typePi":"tilgangsbegresning",
"status":"TBO",
"sekvensnummer":1,
"opprettetTidspunkt":"2020-01-16T11:09:38.4871148+01:00",
"sistEndretTidspunkt":"2020-01-16T11:09:38.4871148+01:00",
"TbMetadata":
{
"TbFasteMetadata":
{
"omfangElementer": [
{
"omfang": "BL",
"logiskOmfang": "Angitte",
"typeAngivelse": "Helsepersonell"
}
]
},
"TbInnbyggerMetadata":
{
"tidsbegrensning":
{
"perioder": [
{
"fraDato":"2022-01-01",
"tilDato":"2022-06-01"
}
]
},
"detaljertAngivelse":
{
"navngittHelseperson": [
{
"nummer": "4128168",
"navn": "Linda Ingrid Telle"
},
{
"nummer":"1234567",
"navn":"Per Olsen"
}
]
}
}
}
}
Slette tidligere satt tilgangsbegrensning. Enten slette instans (hvis alle fjernes) eller oppdatere eksisterende instans ved å slette noen av de tidligere registrerte helsepersonell:
Blokker for aalt Helsepersonell untatt fastlegen
Responsparametre (som ekstern part skal sette):
OK, replikering mottatt:
HTTP responskode: 200
og
Body: “returkode”: “ok”
Replikering ikke ok
Enten:
HTTP responskode 200
og
Body:
“returkode”: “ikkeOk”
“feilkode”: “Forklaring på hvorfor feil”
Eller:
HTTP responskode: Annet enn 200
Body:
Navn | Type | Lovlige verdier | Kommentar |
---|---|---|---|
returKode | string | ok ikkeOk | Dersom returKode er "ikkeOk" skal også m HTTP status være 200 |
feilKode | string | Utelates hvis returKode er "ok" | Verdi Forklaring ukjentInnbygger Innbyggers fødselsnummer er ikke kjent. ukjentDefinisjonsGuid DefinisjonsGuid som ble angitt er ikke kjent hos aktør.
|
Eks (ukjent fødselsnummer):
HTTP: 200
og følgende i Body:
{
"returKode":"ikkeOk",
"feilKode":"ukjentInnbygger",
}