Identifier
Identifiers
Om resources, zoals een bundle volgens FHIR uniek te kunnen identificeren zijn er twee mogelijkheden:
- ID: Dit is een unieke sleutel voor de resource op het systeem waar het is opgeslagen. Voor de aangeleverde bundles zal NICE een ID toekennen en in de response terug sturen zodat dit ID gebruikt kan worden voor updates en/of delete acties.
- Identifier: Dit is een systeem onafhankelijk ID. Hiermee kan een resource worden geidentificeerd onafhankelijk van het systeem. Met een identifier kan een resource gezocht worden. Een voorbeeld van een identifier is een BSN.
NICE Business Rules
FHIR zelf zegt niet veel over het handelen met id’s en identifiers. Er wordt gesteld dat dat business rules zijn (en dus geen regels die de FHIR-standaard dicteert). Daarom hieronder de manier waarop NICE met identifiers omgaat:
- Elke bundle heeft een identifier met een toegewezen systeem URL. Zonder deze identifier wordt de bundle geweigerd.
- Wanneer een bundle zonder ID en met de verplichte identifier wordt aangeleverd, zal NICE controleren of de identifier al bekend is. Indien het een onbekende identifier is, dan is het de eerste aanlevering en wordt er door NICE een ID toegewezen.
- Wanneer een bundle wordt geüpdatet met een ID, dan zal NICE controleren of het ID was toegewezen aan de identifier. Wanneer er aan de identifier al een andere ID is toegekend, zal het worden geweigerd.
Verschillende Identifiers voor een ziekenhuis
We hebben verschillende identifiers nodig om onderscheid te kunnen maken tussen verschillende niveau’s van informatie. De meeste informatie is gerelateerd aan een IC opname, maar we hebben ook informatie over personele bezetting en operationele bedden per dienst of informatie over de organisatie. Daarom zullen we meerdere identifier-systemen onderscheiden voor de verschillende types. Dit kan d.m.v. het onderstaand patroon:
https://fhir.stichting-nice.nl/fhir/identifier/[hospno]/[icno]/[type]
Note: De identifier URL zal ter identificatie gebruikt worden, maar zal niet de door de server worden geresolved.
Identifier: IC Opname
De IC opname is de basis voor de NICE registratie. Elk ziekenhuis heeft van NICE een uniek ziekenhuisnummer toegewezen gekregen. Elke deelnemer heeft tenminste één ic, welke icno 1 krijgt. Mochten er meerdere IC’s zijn, telt dit door. De opname zelf krijgt een uniek nummer (admno). Voorbeeld:
<identifier>
<system value="https://fhir.stichting-nice.nl/fhir/identifier/88/1/admission"/>
<value value="123455"/>
</identifier>
Identifier: Dienst
In de module KIIC zit de bezetting. Hierin moet het aantal operationele bedden en het aantal fte aan verpleegkundigen per dienst worden opgegeven.
Nog uitzoeken: Hoe zou een identifier voor een dienst er uit zien?
Gebruik van ID en/of identifier
Hieronder wordt onderscheid gemaakt tussen een Create en Update met een ID en de conditionele update. De Create/Update is de standaard methode die FHIR (in de vorm van een RESTFUL service)voorschrijft. De conditionele update is een tweede manier, maar heeft een kanttekening gekregen, nl. dat deze in “trail”" zit en dat het nog onduidelijk is of deze mogelijk moet blijven bestaan. Bij het bedenken van de aanlevering was deze laatste mogelijkheid het meest interessant. Bij het versturen van een resource wordt er gekeken naar de identifier. Kan deze gevonden worden, dan betreft het een update. Zo niet dan wordt deze gecreeërd.
Kan een EDP een door NICE toegewezen ID aan een resource, bewaren opdat deze ID bij een volgende update kan worden gebruikt?
Optie 1: Create en Update
Create: Wanneer er een nieuwe resource naar een FHIR server wordt gestuurd, dan krijgt deze een door die server toegewezen ID. Hier heeft de verstuurder van de resource geen invloed op. Een FHIR server zal in de response de toegewezen ID en locatie (inclusief ID en version) terug sturen. Voorbeeld voor het versturen van een nieuwe Bundle:
POST https://stichting-nice.nl/fhir/R4/Bundle
Update: Wanneer een resource moet worden geüpdatet, moet dit worden gedaan door een HTTP post op de URL inclusief het ID wat was toegewezen bij de Create. In ons vorige voorbeeld id 5005.
PUT https://stichting-nice.nl/fhir/R4/Bundle/5005
Optie 2: Conditionele update
In plaast van een update met een ID, wordt er een search parameter meegestuurd. Wanneer er dan één match wordt gevonden dan wordt deze geüpdatet anders wordt deze gecreeërd. Omdat de identifier uniek dient te zijn, zal dit nooit meer dan één mogen zijn.
<identifier>
<system value="https://fhir.stichting-nice.nl/fhir/identifier/88/1/admission"/>
<value value="123455"/>
</identifier>
Wanneer we de bovenstaande identifier zouden sturen in de resource die we willen creeëren of updaten, dan dient er een HTTP PUT opdracht naar de volgende URL te worden gestuurd:
PUT https://stichting-nice.nl/fhir/R4/Bundle?identifier=https://stichting-nice/fhir/identifier/88/1/admission|123455
Het pipe (|
) teken wordt gebruikt om het systeem en value te scheiden van elkaar. Wanneer de HTTP response 201 terug wordt gegeven, dan is de resource aangemaakt, terwijl 200 zegt dat een bestaande resource is geüpdatet. Let op dat het pipe teken geen geldige teken is voor een URL. Deze kan je escapen door het ASCII code hiervan te gebruiken: |
Dus:
PUT https://stichting-nice.nl/fhir/R4/Bundle?identifier=https://stichting-nice/fhir/identifier/88/1/admission|123455