Versions Compared

Key

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

Het is zeer onwaarschijnlijk dat een Koppeltaal interface ongewijzigd blijft. Als de Koppeltaal eisen in der loop ter tijd  veranderen, kunnen er nieuwe verzamelingen van FHIR resources, profielen en interacties worden toegevoegd, kunnen de relaties tussen de resources veranderen en kan de structuur van de gegevens in de resources worden gewijzigd.

...

Een aanvraag voor de URI moet bijvoorbeeld de details retourneren van Patient 61 met de velden "name" en "birthDate"

Code Block
languagejs
titlePatient 61
 GET https://koppeltaal.nl/fhir/Patient/61

...



{
    "resourceType": "Patient",   

...


    "id": "61",

...


    "identifier":  [
        {
            "use": "official",
            "system": "irma",
            "value": "berendbotje01@vzvz.nl"
        }
    ],
    "active": true,
    "name":  [
        {
            "text": "Berend Botje",
            "family": "Botje",
            "given":  [
                "Berend"
            ]
        }
    ],
    "birthDate": "1970-12-20" 

...

}

...


  

Als het optionele element "gender" wordt toegevoegd aan de resource instantie zouden bestaande toepassingen goed moeten blijven werken als ze in staat zijn om niet-herkende elementen te negeren, terwijl nieuwe toepassingen kunnen worden ontworpen voor het afhandelen van dit nieuwe element. Als echter ingrijpender (verplichte) wijzigingen in het schema van de resources optreden (zoals verwijderen of wijzigen van elementen) of de relaties tussen resources worden gewijzigd, kan dit bestaande toepassingen zodanig beïnvloeden dat deze niet meer correct werken. In deze (Major) situaties moet u één van de volgende benaderingen overwegen.

URI-versiebeheer

Telkens wanneer de een Koppeltaal interface wijzigt of het schema van de resources wordt aanpast, voegt men een uniek (major) versienummer toe aan de URI voor elke (FHIR) resource. De bestaande URI's moeten blijven functioneren als voorheen en resources retourneren die voldoen aan hun oorspronkelijke schema.

Als het vorige voorbeeld wordt uitgebreid, als het veld is geherstructureerd in subvelden met elk onderdeel van het adres (zoals , , en ), kan deze met een verplicht element zoals bijvoorbeeld "gender", kan deze nieuwe versie van de resource worden blootgesteld via een URI met eenversienummer, zoalshttps://koppeltaal.nl/fhir/v2/Patient/361 

Dit mechanisme voor versiebeheer is zeer eenvoudig, maar is afhankelijk van de server FHIR Resource Provider die de aanvraag naar het juiste eindpunt doorstuurt. Het kan echter moet doorsturen. Dit mechanisme kan onhandig worden als de Koppeltaal interface via verschillende iteraties groeit en de server FHIR Resource Provider een aantal verschillende versies moet ondersteunen. Vanuit het oogpunt van een purist halen de toepassingen in alle gevallen dezelfde gegevens op (Patient 361), dus de URI mag niet echt verschillen, afhankelijk van de versie. FHIR Referenties referenties wordt door dit schema mechanisme ook ingewikkelder, omdat alle koppelingen referenties het versienummer moeten opnemen in hun URI's.

Header-versiebeheer

In plaats van het versienummer in het URI toe te voegen, kan men een aangepaste (HTTP) header implementeren die de versie van de resource aangeeft. Deze aanpak vereist dat de toepassing de juiste header toevoegt aan alle aanvragen, hoewel de code voor het verwerken van de aanvraag een standaardwaarde (versie 1) kan gebruiken als de versie-header wordt weggelaten. In de het volgende voorbeelden wordt een aangepaste header met de naam Custom-Header gebruikt. De waarde van deze header geeft de versie van de Koppeltaal interface aan.

Code Block
languagejs
titleHTTP Header
GET https://koppeltaal.nl/fhir/Patient/

...

61 HTTP/1.1

Custom-Header: Koppeltaal-version=2


Net als bij de vorige benadering moet men voor het implementeren van FHIR referenties de juiste aangepaste header in koppelingen toevoegen.

Mediatype-versiebeheer

Wanneer een client cliënt toepassing een HTTP GET-aanvraag naar een webserver de FHIR Resource Provider verzendt, moet deze de indeling van de inhoud bepalen die ze het kan verwerken met behulp van een Accept-header. Vaak is het doel van de Accept-header ervoor te zorgen dat de client cliënt toepassing op kan geven of de inhoud van het antwoord XML, JSON of een andere algemene indeling moet zijn, die door de client cliënt kan worden geparseerdverwerkt. Het is echter mogelijk aangepaste mediatypen media typen te definiëren met informatie voor het inschakelen van de client cliënt toepassing, om aan te geven welke versie van een FHIR resource wordt verwacht.

In het volgende voorbeeld ziet u is een aanvraag die met een Accept-header opgeeft met de waarde application/vndkoppeltaal.adventure-works.v2+json. Het vndkoppeltaal.adventure-works.v1v2-element geeft bij de webserver FHIR Resource Provider aan dat versie 2 van de resource aan de cliënt toepassing moet worden geretourneerd, terwijl het json-element aangeeft dat de indeling van de inhoud JSON moet zijn:.

De code voor het verwerken van de aanvraag is verantwoordelijk voor de verwerking van de Accept-header en het zo veel mogelijk naleven ervan (de client toepassing cliënt toepassing kan verschillende indelingen opgeven in de Accept-header. In dat geval kan de webserver FHIR Resource Provider de meest geschikte indeling voor de inhoud kiezen). De webserver FHIR Resource Provider bevestigt de indeling van de gegevens in de inhoud met behulp van de Content-Type-header.

Als de Accept-header geen bekende mediatypen media typen opgeeft, kan de webserver FHIR Resource Provider een antwoordbericht HTTP 406 (Niet aanvaardbaar) genereren, of een bericht retourneren met een standaard-mediatype. Deze aanpak is weliswaar misschien de zuiverste van de mechanismen verschillende methoden voor versiebeheer en is van nature geschikt voor FHIR referenties, dat het MIME-type van gerelateerde gegevens in links naar resources kan opnemen.

...

Info
titleNotitie

Wanneer men een bepaalde strategie voor versiebeheer selecteert, moet men ook de gevolgen voor de prestaties overwegen, met name opslaan in caches op bij de webserverFHIR Resource Provider.

De schema's voor URI-versiebeheer is cache-vriendelijk, aangezien dezelfde combinatie van de URI-querytekenreeks telkens naar dezelfde gegevens verwijst.

De mechanismen voor Header-versiebeheer en Mediatype-versiebeheer vereisen extra logica voor het onderzoeken van de waarden in de aangepaste header of de Accept-header.

In een grootschalige omgeving kan het gebruik van verschillende versies van een web-API Koppeltaal interface door veel clients cliënten leiden tot een aanzienlijke hoeveelheid gedupliceerde gegevens in een cache aan serverzijde. Dit probleem kan acuut worden als een client cliënt toepassing met een webserver communiceert via een proxy die opslaan in cache implementeert en die alleen een aanvraag naar de webserver verzendt als deze niet op dit moment een kopie van de aangevraagde gegevens in de cache bevat.

Het Open API

...

Initiatief voor versiebeheer

Het Open API IniatatiefInitiatief is gemaakt door een brancheconsortium om (FHIR) REST-API-beschrijvingen bij leveranciers te standaardiseren. Als onderdeel van dit initiatief kreeg de Swagger 2.0-specificatie de nieuwe naam OpenAPI Specification (OAS) en werd deze onder het Open API Initiatief gebracht.

Wellicht kan men het OpenAPI overnemen voor de het beheer van de verschillende Koppeltaal interfaces. Enkele punten om in overweging te nemen:

...