Extensions

Extensions

Avansert konfigurasjon ved hjelp av extensions og FHIR-standarden, som vises eksplisitt

Extensions brukes for å legge til eller spesifisere informasjon i FHIR-ressurser som ikke er dekket av basis spesifikasjon i FHIR-standarden.

Eksempel: Hvis en standard FHIR-ressurs (som Patient eller Observation) ikke har et felt for spesifikk informasjon som NHN trenger (f eks adresse, fødselssted, eller personnummer), så kan man bruke en extension for å legge det til.

Teknisk definisjon: FHIR Extension Element

Dette er definisjonen av datastrukturen som brukes for å utvide FHIR-ressurser (som Questionnaire). En extension er i praksis et nøkkel-verdi-par med klart definerte datatyper.

Mer om FHIR-standarden her.

Datastruktur

Extension-elementet består av tre mulige felter, hvorav url er obligatorisk.

  • url (1..1, uri)

    • Identifiserer betydningen av utvidelsen

    • Dette skal være en Canonical URL som peker til en StructureDefinition

    • I kode fungerer dette som nøkkelen for å slå opp verdien

  • value[x] (0..1, Open Type)

    • Selve dataverdien

    • Feltet er polymorfisk. I JSON vil nøkkelen alltid ha datatypen som suffix (f.eks. valueBoolean, valueString, valueCode, valueExpression)

    • Hvilken datatype som er tillatt, defineres av extension-definisjonen (url)

  • extension (0..*, Extension)

    • Extensions kan nøstes. En extension kan inneholde en liste med sub-extensions istedenfor en enkel verdi

Valideringsregler (Invariants)

Det finnes én kritisk regel for gyldig extension-data (Regel ext-1):

"Must have either extensions or value[x], not both"

Dette betyr:

  1. Hvis du har en value[x], skal listen over nøstede extension være tom

  2. Hvis du har nøstede extension, skal value[x] være tom

  3. En extension kan ikke være tom (må ha enten verdi eller underelementer)

JSON-representasjon

Slik ser elementet ut i praksis (pseudokode):

{ "extension": [ { "url": "[http://example.org/my-extension](http://example.org/my-extension)", "valueString": "Dette er en enkel verdi" }, { "url": "[http://example.org/my-complex-extension](http://example.org/my-complex-extension)", // Ingen value[x] her, fordi den har nøstede extensions (Complex Type) "extension": [ { "url": "part1", "valueBoolean": true }, { "url": "part2", "valueDate": "2024-01-01" } ] } ] }

 

Eksempel på bruk av extensions for videresending er beskrevet her: https://helsenorge.atlassian.net/wiki/x/IoCZuQ