Skip to end of banner
Go to start of banner

TOP-KT-003 - Logische ID, bedrijfsidentifier, referenties en referentie integriteit - [review]

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 41 Next »

Beschrijving

Elke resource moet uniek identificeerbaar zijn door de business en technische systemen. Hypermedia/links kunnen hierbij gebruikt worden om referenties of verwijzingen naar resources te gebruiken.

Voor correct gebruik van Identifiers wordt verwezen naar: Links naar gerelateerde onderwerpen

In deze topic wordt onderscheid gemaakt in Logische ID, Bedrijfsidentifier, Referenties en Referentie integriteit.

Logische ID

Overwegingen

Elke resource heeft een ID-element dat de "logische ID" (logical ID) bevat. De Logische ID dient uniek te zijn zodat de resource eenduidig terug te vinden is of naar verwezen kan worden. Verder is moet de logische ID een identifier zijn die met voorkeur slecht te raden is en geen probleem vormt bij toekomstige migratie en integraties tussen systemen. Om deze reden stelt koppeltaal dat de logische id een UUID versie 4 (rfc4122) moet zijn.

Toepassing en restricties

Volgens de FHIR standaard:

  • Wanneer een nieuwe resource wordt aangemeld bij de FHIR Resource Provider, geeft de FHIR Resource Provider een nieuwe uniek logische id af binnen het domein van alle resources op dezelfde FHIR Resource Provider.
  • Eenmaal toegewezen door de FHIR Resource Provider, wordt de "logische id" NOOIT gewijzigd. Een nieuwe logische ID betekent namelijk een nieuwe resource-instantie.
  • De locatie van een resource-instantie is een absolute (locatie) URL die is samengesteld uit het basisadres waarop de instantie is gevonden, het resourcetype en de logische ID, zoals: https:/vzvz.fhir.nl/Patient/4497 (waarbij 4497 de logische id van een patiënt is).
  • Wanneer een resource wordt gekopieerd van de ene provider naar een andere provider, kan de kopie al dan niet dezelfde logische id op de nieuwe server behouden. Dit is afhankelijk van replicatie en beleid.

Specifiek voor Koppeltaal:

  • De applicaties mogen zelf geen Logische ID's toekennen.
  • De logische ID is een UUID (rfc4122), versie 4.

Voorbeelden

Patient.id

{
  "resourceType":"Patient",
  "id": "8474394b-243c-4935-b403-ccc414090bc8",
  ...
}

Opvragen a.d.h.v een Patient.id

GET [base]/Patient/8474394b-243c-4935-b403-ccc414090bc8

Bedrijfsidentifier

Overwegingen

Een "bedrijfsidentifier" wordt gebruikt om resources uniek te kunnen identificeren met (andere) systemen, die in andere omgevingen/domeinen aanwezig zijn.
Een patiënt kan bijvoorbeeld geidentificeerd worden aan de hand van een e-mail adres of een patientnummer. Een zorgverlener kan men identificeren via zijn AGB code. Een taak kan men identificeren aan een Taaknummer.
Met de hulp van de "bedrijfsidentifier" kan je altijd achterhalen of de resource instantie al aanwezig en bekend is. Hiermee kan men vervolgens ook de "logische ID" achterhalen, waaronder deze resource instantie bij de FHIR Resource Provider is aangemeld. Daarnaast kan de bedrijfsidentifier gebruikt worden om de relatie tussen de eigen entitetiten en de server weer op te bouwen als deze verloren is geraakt.

Koppeltaal stelt geen eisen aan welke identifiers gebruikt worden, zolang het bronsysteem de resource eenduidig kan relateren.

Toepassing en restricties

Volgens de FHIR standaard:

  • Naast de "logische ID" (logical ID) kan bij de resource ook één tot meerdere "bedrijf identifier" (business identifier) element(en) gebruikt worden.

Specifiek voor Koppeltaal:

  • De applicatie die een nieuwe resource instantie creëert en publiceert MOET het bedrijfsidentifier element (Identifier type) specificeren, als het identifier element in de resource instantie verplicht is.  
  • Optioneel mogen andere applicaties ook bedrijfsidentifiers toekennen.

Voorbeelden


Patient.identifier

{
  "resourceType":"Patient",
  "id": "8474394b-243c-4935-b403-ccc414090bc8",
  "identifier":[
   {
      "use":"usual",
      "system":"https://irma.app/email",
      "value":"bard.klein@vzvz.nl"
   },
   {
      "use": "official",
      "system": "urn:oid:2.16.840.1.113883.2.4.6.3",
      "value": "123456789"
   }
  ]
}


Opvragen a.d.h.v een Patient.identifier

GET [base]/Patient?identifier=urn:oid:2.16.840.1.113883.2.4.6.3|123456789

Referenties

Overwegingen

De "logische ID" (logical ID) kan in combinatie met de resource type gebruikt worden als referentie in resources. Dit wordt dan een zogeheten "literal" reference. Zie ook: https://www.hl7.org/fhir/references.html#literal

Toepassing en restricties

Specifiek voor Koppeltaal:

  • De Logische referentie (op basis van bedrijfsidentifier) wordt in Koppeltaal niet gebruikt.

Voorbeelden

"Literal" referentie

{
  "resourceType": "Task",
  "for":
  {   
    "reference": "Patient/8474394b-243c-4935-b403-ccc414090bc8",
    "type": "Patient"
  }
}

Referentie integriteit

De FHIR resource service MOET referentiële integratie afdwingen. Dit houdt in dat er enkel naar resources gerefereerd kan worden indien deze ook daadwerkelijk bestaan in de FHIR resource service. Deze integriteit MOET op zowel “write” als “delete” interacties gewaarborgd worden. 

Write integriteit

Aangezien gerefereerde resources altijd moeten bestaan, is de volgorde van resources aanmaken van belang. Bijvoorbeeld bij het aanmaken van een Task , kan dit de volgorde zijn van resources aanmaken:

Patient   → Practitioner  → Endpoint  → ActivityDefinition  → Task 

Delete integriteit

Koppeltaal raadt het gebruik van deletes af [TODO: Link Lifecycle]. Indien dit toch gebruikt wordt, moet de referentiële integriteit bewaakt worden. De regel is: een referentie MOET refereren naar een bestaand, non-deleted, object. Zo is het verwijderen van een Task  vaak simpel, omdat hier nauwelijks naar gerefereerd wordt. In het geval van een Patient  delete is de kans op integriteitsproblemen veel groter. Een Task  of een Practitioner  verwijzen bijvoorbeeld vaak naar een Patient  resource. Indien een delete niet voldoet aan de referentiële integriteit MOET de server de request afkeuren middels met een HTTP 409 Conflict .

Eisen

IDR - Eisen (en aanbevelingen) voor identifiers en referenties


Links naar gerelateerde onderwerpen

Logische ID: https://www.hl7.org/fhir/resource.html#id

UUID: https://datatracker.ietf.org/doc/html/rfc4122

Bedrijfsidentifier http://hl7.org/fhir/R4/datatypes.html#identifier

Referentie: https://www.hl7.org/fhir/references.html


  • No labels