Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Doel

(FHIR) Meta is een set metadata die technische content meegeeft aan elke type FHIR resource. De metadata elementen zijn in FHIR R4 allemaal optioneel, echter in de context van Koppeltaal 2.0 gaan we enkele elementen in de implementatie vereisen. Zie hiervoor de cardinaliteit.

Referentie

FHIR Specification (v4.0.1: R4 - Mixed Normative and STU). Dit is de huidige gepubliceerde versie. Zie ook: https://www.hl7.org/fhir/resource.html#Meta

Koppeltaal 2.0 (draft) profiel van Meta

Element

Omschrijving

Card.

Type

versionId

De waarde van versionId verandert elke keer als de inhoud van de resource verandert. Er kan naar worden verwezen in een resource referentie (voorbeeld: ResourceType/id/_history/versionId). De versionId wordt bij Koppeltaal gebruikt om ervoor te zorgen dat updates altijd zijn gebaseerd op de nieuwste versie (of meest recente content) van de resource. De versie kan globaal uniek zijn, of binnen het bereik van de logische id van de resource.

VersionId's zijn over het algemeen ofwel een serieel oplopende identificatie binnen het bereik van de logische ID, ofwel een uuid, hoewel geen van deze beschrijvingen vereist is. Er is geen vaste volgorde voor de versionId's. Cliënten of afnemers mogen er niet van uitgaan dat een versionId die na een andere komt, numeriek of alfabetisch een latere versie vertegenwoordigt. Dezelfde versionId mag nooit worden gebruikt voor meer dan één versie van dezelfde resource.
RESTful API:

  • De versionId wordt in de HTTP ETag header bij elk antwoord meegegeven.
  • Bij ontvangst van een schrijfbewerking MOET de server dit item bijwerken naar de huidige waarde of het verwijderen.
  • Twee resources zijn identiek als de versionId's identiek zijn.
  • Alle services die in de context van Koppeltaal werken MOETEN het versionid  element ondersteunen.
  • Bij het aanpassen/wijzigen van de content van de resources moet men gebruik maken de versionId in combinatie met de If-Match HTTP header, om zo wijzigingen gecontroleerd door een FHIR service uit te laten voeren. Deze techniek heet "Optimistic Locking" en wordt bij RESTful APIs gebruikt omdat deze "stateless" zijn, hierdoor onthoudt de  FHIR service geen locks.
0..1Id
lastUpdated

Dit element verandert de waarde als de content van de resource verandert. Gebruik hier de tijdzonecode van de server waarop de FHIR service functioneert.

RESTful API:

  • Bij ontvangst van een schrijfbewerking MOET de FHIR (Resource) Provider dit item bijwerken naar de huidige tijd op de server
0..1instant
source

Een uri die het resource systeem en interactie (bv create, update, etc) identificeert. In de context van Koppeltaal wordt voor het resource systeem het "domein uri" bedoeld. Per resource moet er één genomineerde domein ingevuld worden; voor aanvullende gegevens zullen eventueel andere resources gebruikt worden.

Er mogen geen relaties of referenties gelegd worden tussen resources, die verschillende domein uri's bevatten.

RESTful API:

  • Bij ontvangst van een schrijfbewerking MOET de FHIR (Resource) Provider de resource systeem uri en interactie id ongewijzigd laten.
  • Voor de source mogen de volgende HTTP Request Headers gebruikt worden:
    • X-Request-ID - levert de interactie id aan 
    • X-Request-System - levert de resource systeem (domein uri) aan

Kanttekening:

  • We zouden het 'source' ook voor 'Multitenancy'  kunnen gebruiken, zodat we kunnen achterhalen bij welke  tenant (container of huurder van een dienst) de resource behoort.
  • Het lijkt erop dat parameter X-Request-System niet geïmplementeerd is in een HAPI FHIR server

    Wordt niet gebruikt binnen Koppeltaal 2.0

    0..1string
    profileEen bewering of toekenning dat de inhoud van de resource overeenkomt met een resource profile (vastgelegd in een StructureDefinition). Zie FHIR Profiles voor verdere uitleg. Een profile wordt gewijzigd als de waardensets wijzigen of  het systeem de conformiteit opnieuw controleert. De profile kan worden gebruikt om aan te geven aan welke versie(s) de FHIR resource moet voldoen. Een FHIR server kan ongeldige interacties afwijzen en testen aan de hand van de profile(s). 0..1canonical
    tagLabels die aan een resource zijn toegewezen. Labels worden gebruikt om resources te kunnen identificeren en te relateren aan (security en werk) processen. Toepassingen hoeven de tags niet in beschouwing te nemen bij het interpreteren van een resource. 0..*coding

    User Stories

    1. Elke FHIR resource behoort bij één domein (Meta.source) dat uit een domein uri en een interactie id is samengesteld .
    2. FHIR resource met verschillende domeinen mogen niet aan elkaar gerelateerd worden. 
    3. Een FHIR resource voldoet aan een profile (Meta.profile) zoals vastgelegd is in de StructureDefinition resource. 

    Parameters voor zoekopdrachten (search) 

    ...

    HTTP Request

    ...

    Methode

    ...

    Actie

    ...

    Zoek parameters:

    ...

    Naam

    ...

    Type

    ...

    Omschrijving

    ...

    Creatie

    ...

    HTTP Request

    ...

    Methode

    ...

    Actie

    ...

    De volgende elementen zijn vereist:

    ...

    Naam

    ...

    Details

    ...

    Update

    ...

    Naam

    ...

    Methode

    ...

    Actie

    ...

    Aandachtspunten bij migratie vanuit Koppeltaal 1.x / DSTU1

    • TBD

    Voorbeelden

    Aannames en opmerkingen:

    ...

    • Als de X-Request-ID header afwezig is, wordt er een random id gegenereerd en opgeslagen
    • Als de meta.source afwezig is , wordt de domein uri niet gevuld
    Code Block
    languagexml
    titlePost Source information (XML) Location
    POST /Location
    X-Request-ID: vzvz_1234
    
    <Location xmlns='http://hl7.org/fhir'>
      <meta>
        <source value="vzvz.nl/fhir/R4"/>
      </meta>     
      <endpoint>
        <reference value="Endpoint/159"/>
        <type value="Endpoint"/>
      </endpoint>
    </Location>
    Code Block
    languagejs
    titleGet Source information (JSON) Location
    {
      "resourceType": "Location",
      "id": "1839404",
      "meta": {
        "versionId": "1",
        "lastUpdated": "2021-01-28T08:45:06.773+00:00",
        "source": "vzvz.nl/fhir/R4#vzvz_1234"
      },
      "endpoint": [     
        {
          "reference": "Endpoint/159",
          "type": "Endpoint"
        }   
      ]
    }

    Zie ook:

    https://smilecdr.com/docs/fhir_repository/fhir_endpoint_module.html#capturing-source-information

    ...