Aanvullen FHIR IG met duiding voor gebruik van stabiele resource identifiers

Description

Wijzigingsverzoek ontstaan vanuit ,  en gesprekken met bijv. VZVZ.

Er is een behoefte aan stabiele identificaties om resources mee te duiden, om zo onder andere gedegen duplicaatdetectie mogelijk te maken. beschrijft de problemen die PGO's ondervinden bij het opvragen van Resources.

Relevante informatie vanuit over het gebruik van identificaties in FHIR:

FHIR heeft twee identificaties waar de meeste systemen er slechts één hebben. Verder deelt FHIR de wereld op in resources en hoeft die doorsnede niet noodzakelijk overeen te komen met hoe systemen werken.

De twee identificaties die FHIR onderscheidt zijn Resource.id en Resource.identifier (nagenoeg iedere resource). De eerste dient RESTful communicatie en wordt gebruikt in het datatype reference bij verwijzingen tussen resources. We komen in Nederland (en meer plekken in de wereld) van een hele lange traditie van messaging (berichtgebaseerde informatie-uitwisseling) waarbij er geen equivalent is voor Resource.id in de onderliggende systemen. Deze HL7v3 gebaseerde uitwisseling heeft wel een element id maar die verhoudt zich tot de Resource.identifier en is een "business identifier". Sommige daarvan zijn op zichzelf ook wel in te zetten als Resource.id (zoals een UZI of URA of zelfs bsn en dat doen de Nictiz-mappings dan ook), maar FHIR heeft een nogal belangrijke beperking in de Resource.id: je mag heel erg weinig vanwege URL compatibiliteit en heel veel Resource.identifiers kun je dan ook niet in een Resource.id stoppen (het formaat is[A-Za-z0-9\.-]
Unknown macro: {1,64}
). 

Lastiger is echter dat systemen normaal wel het object Practitioner kennen voor een zorgverlener, maar PractitionerRole die de zorgverlenerrelatie aan een rol in een organisatie dekt niet. Ook andere begrippen komen niet overeen met systeemwerkelijkheid: zo hebben huisartssystemen de grootste moeite met het begrip contact(moment), hebben ICPC-coderingen op een journaalregel niet noodzakelijk een eigen identificatie en meer.

Kortom: dat je in FHIR dingen uniek kunt identificeren wil niet zeggen dat dat praktisch gezien ook altijd gebeurt. Niet omdat men dat niet zou kunnen als men nu een systeem zou ontwerpen, maar omdat het vertrekpunt met de huidige systemen dat (nog) niet altijd kan. Ontvangende systemen zoals die van jullie kunnen daarmee dus niet zonder meer uitgaan van Resource.id en verwachten dat het daarmee werkt.

De huidige FHIR IG geeft veel duiding over het gebruik van Resource.id en fullURL en stelt het volgende over Resource.identifier in paragraaf 5.8.1:

The usage of the .identifier field, i.e. the business identifier, cannot be described in general terms and will be dictated one a use-case basis by the particular profiles.

De huidige gebruikte FHIR-profielen bevatten op veel plekken een mapping voor het zib-basiselement 'Identificatie'. Meer wordt hier vaak niet over gezegd, op een aantal informatiestandaarden na, zoals Medicatieproces en PDF/A.

 
Hierbij het verzoek om te onderzoeken of de FHIR IG kan worden aangevuld met een generiek verwachting voor het gebruik bij Resource.identifier. Hierbij zou gedacht kunnen worden aan:

  • Middels een SHOULD stellen dat systemen Resource.identifier vullen wanneer zij ook beschikken over een stabiele identifier voor het object.

  • Duiding/advies geven hoe de Resource.identifier.system gevuld kan worden.

  • Beschrijven waarom dit nodig is en hoe dit gebruikt kan worden (duplicaatdetectie).

  • Test- en kwalificatiematerialen aanvullen met Resource.identifier waar mogelijk middels 

 

Verduidelijking van Impact

Laag, gezien dit betere tekstuele uitleg betreft en verwachtingen beschrijft, geen verplichtingen.

Proposed solution (NL)

FHIR IG aanvullen met generieke verwachtingen omtrent Resource.identifier

  • Middels een should stellen dat systemen Resource.identifier vullen wanneer zij ook beschikken over een stabiele identifier voor het object.

  • Beschrijven waarom dit nodig is en hoe dit gebruikt kan worden (duplicaatdetectie).

  • Test- en kwalificatiematerialen worden met Resource.identifier aangevuld middels .

Proposed solution (EN)

None

Release notes (NL)

In the FHIR IG, the use of Resource.identifier is made "recommended".

Release notes (EN)

None

Attachments

1

Activity

Show:

Ardon Toonstra May 19, 2021 at 12:27 PM

 aangemaakt om de example en kwalificatieresources aan te passen.

Jari Maijenburg February 19, 2021 at 7:42 PM

Goed overzicht! Ik denk dat dit een heel goed vertrekpunt is. Probleem van vertrouwen op het .identifier veld is alleen dat deze niet altijd (met dezelfde system) ingevuld hoeft te worden op dit moment. Mijns inziens zullen we daar dus een identifier alsnog voor moeten verzinnen.

Alexander Henket February 10, 2021 at 2:03 AM
Edited

We hebben het over identiteit van een object/resource. Die heeft verschillende use cases, niet in volgorde van belang

  1. RESTful communicatie - Alleen Resource.id

  2. Duplicaatdetectie - FHIR stelt dat dat aan Resource.id hangt, onze werkelijkheid heeft ook alternatieven nodig

We gebruiken op dit moment de volgende resources bij huisartsgegevens. Hebben we hier iets aan als vertrekpunt? Merk op dat de tabelinhoud lichtelijk uit de losse pols is, dus mogelijkerwijs klopt niet iedere komma.

Edit by Ardon: .identifier kolom aangevuld. Alles behalve Medication heeft een .identifier.

Resource

.identifier

Potentiële identificerende kenmerken

AllergyIntolerance

x

 .code

Appointment

x

 

CarePlan

x

 

CareTeam

x

 

Composition

x

.date, .encounter (+ episode)

Condition

x

.code, .context  (+episode)

Consent

 

Coverage

 

Device

 

DeviceRequest

 

DeviceUseStatement

 

DiagnosticReport

 

DocumentManifest

 

DocumentReference

 

Encounter

x

.type, .period.start (moeilijk: mismatch met HIS die hier alleen een datum heeft en geen periode: is ander issue)

EpisodeOfCare

x

.diagnosis.condition, .extension.title, .extension.dateFirstEncounter

Flag

x

.extension.ConcernReference

Goal

 

Immunization

 

ImmunizationRecommendation

 

List

 

Location

 

Media

 

Medication

 

 

MedicationAdministration

 

MedicationDispense

 

MedicationRequest

x

niet nodig wegens betrouwbare identifier
.authoredOn, .extension.medicationTreatment (MP9), .medicationReference(Medication).code \

.ingredient

MedicationStatement

 

NutritionOrder

 

Observation

x

1. Algemene bepaling (normaal met identifier)
2. Laboratoriumbepaling (normaal met identifier)
3. Journaalregel (normaal geen identifier)
 
Voor Observation
    .code + .effective[x] (+ episode)
 
Ik zie dat onze mapping .effective[x] niet doorgeeft op journaalregels omdat systemen deze alleen op contactniveau doorgeven. Je mag echter aannemen dat dezelfde datum voor alle journaalregels geldt, dus dat kan een wijzigingsverzoek voor de mapping opleveren.

Organization

x

geen, en niet nodig. Normaal de huisartsenpraktijk/zorgaanbieder zelf maar zou ook een huisartsenpost kunnen zijn of (minder waarschijnlijk) een laboratorium

Patient

x

is gekoppeld met ingelogde patiënt in OAuth dus wat de huisarts levert heeft minder belang?
.name, .address, .birthDate, .multipleBirth (vgl. met SBV-Z zoekpaden)

Person

 

Practitioner

x

geen, en niet nodig 

PractitionerRole

x

.practitioner(Practitioner).identifier + .organization(Organization).identifier

Procedure

 

ProcedureRequest

 

Questionnaire

 

QuestionnaireResponse

 

RelatedPerson

 

Slot

 

Specimen

 

Task

x

 

Jari Maijenburg February 9, 2021 at 5:10 PM

Ik begrijp niet helemaal waarom we het nogsteeds hebben over Resource.id. Dat veld dient alleen een logische ID te bevatten die alleen uniek hoeft te zijn binnen de FHIR server (de RESTful ID in bevragingen als [base]/Observation/[id] inderdaad). Veel FHIR servers gebruiken hier simpelweg incrementele waardes voor, wat natuurlijk direct conflict met andere servers. RESTful reads op basis van de universele business identifier gaan nooit mogelijk zijn, aangezien deze identifier niet als logical ID in de FHIR server gebruikt wordt.

Is het daarom niet handig om Resource.id achterwege te laten en onze te focussen op business identifiers zoals Patient.identifier, Observation.identifier, etc. Niet elke resource ondersteunt dit veld, maar een groot gedeelte wel. Voor resources die het niet ondersteunen zou eventueel een extension gedefinieerd kunnen worden.

Alexander Henket February 9, 2021 at 4:42 PM
Edited

Als je stateless telkens tot dezelfde identificatie wilt komen dan moet de input die je daarvoor gebruikt stabiel blijven. Er zijn voorbeelden waar dat lukt:

  • UZI en AGB van zorgverlener

    • Maar ... als je eerst een zorgverlener op basis van AGB voorbij ziet komen en deze krijgt later een UZI-pas, dan wordt het virtueel toch ineens een andere zorgverlener.

  • URA en AGB van zorgaanbieder. Zie eerdere opmerking bij zorgverlener

  • HL7v3 Act.id, Role.id, Entity.id zijn van datatype Instance Identifier en hebben in FHIR termen een system en een value (V3: root en extension). Als het V3-object in 1 resource landt met dezelfde semantiek dan kun je de V3 id overnemen als FHIR Resource.identifier

    • Mappingvraagstuk: is een V3 author.assignedEntity.id de FHIR Practitioner.identifier of de PractitionerRole.identifier of beide? Wij hebben nu een mapping in Practitioner.identifier, en voor PractitionerRole heeft V3 geen specifieke data voorhanden.

  • Als de concatenatie van een V3 id niet te lang wordt (<= 64 tekens) dan kun je diezelfde V3 id ook nog als Resource.id gebruiken. Echter: II.root is een OID van max 128 tekens en II.extension is een string van max 64 tekens. De extension kan daarbij ook eens speciale tekens bevatten die Resource.id niet wil ondersteunen. Bron voor datatype II bij HL7 NL.

Als het al lastig was om identiteit van een resource stateless vast te stellen dan is er nog een factor: RESTful. We hebben het tot nu toe over duplicaatdetectie als voornaamste drijfveer achter Resource.id. De Resource.id heeft echter ook RESTful implicaties. Je verwacht van een Observation.id = abcdef dat je daar een read op kunt doen met [base]/Observation/abcdef.

Dat vraagt van een server echter dat hij behalve dat hij vanaf een stuk of wat inputvelden een Resource.id kan maken, hij dat andersom ook kan, dus vanaf een Resource.id 'weet' wat dat is. Ik denk dat als we compleet willen zijn, we ook daar rekening mee moeten houden. Stel dat ik als server GET [base]/Observation/1.2.3.4.5.abcdef13 ontvang, dan zou ik "1.2.3.4.5.abcdef13" weer moeten opsplitsen in de oorspronkelijke root+extension en moeten weten of dat een algemene meting, een labbepaling of een journaalregel is om een HIS succesvol te bevragen en het juiste antwoord op te leveren.

Resolved
Pinned fields
Click on the next to a field label to start pinning.

Details

Assignee

Reporter

Classification

Informatiestandaard onderdelen

Technisch ontwerp
FHIR-package
Kwalificatie- en testmaterialen

Information standard

Alle

Fix versions

Priority

Better Excel Exporter

Created February 9, 2021 at 2:10 PM
Updated January 12, 2024 at 12:53 PM
Resolved June 1, 2021 at 7:42 AM