Interfaces Adressering Server
Routing Info Interface
Feature informatie
Feature | |
---|---|
Type | Service |
Versie | 1.2.2 |
Groep | Adressering |
Gepubliceerd |
|
Delta | Toetsing content type opgenomen via include van uittreksel met een use case extension. Inhoudelijk geen wijziging. |
Use case |
Feature | Versie | Dependency | Aanbieder | Afnemer |
---|---|---|---|---|
1.2.2 | * | * | ||
1.2.2 | AORTA-ID HTTP Header | * | * | |
1.2.2 | * | - | ||
1.2.2 | * | - |
Inhoud en formaat van een getRoutingInfoRequest
Een getRoutingInfoRequest wordt op de volgende wijze verzonden:
POST [base endpointadres]/getRoutingInfo/v1
Bij het verzenden van een getRoutingInfoRequest dienen de volgende HTTP headers te worden meegezonden:
Feature | AORTA-ID HTTP Header |
---|---|
Type | Subfeature |
Versie | 1.0.0 |
Groep | HTTP Headers |
Gepubliceerd |
|
Delta | Initiële versie van feature. |
AORTA-ID: initialRequestID=<UUID conform RFC4122>; requestID=<UUID conform RFC4122>
Het initialRequestID attribuut bevat het ID van het allereerste request in de hele keten en dient te worden opgenomen in de logbestanden van alle partijen in de keten, zodat bij foutopsporing de verschillende logbestanden aan elkaar kunnen worden gerelateerd.
Het requestID is voor iedere request message uniek. In requests wordt deze gegenereerd door de client. Ook het requestID dient te worden opgenomen in de verschillende logbestanden, zodat altijd duidelijk is op welk bericht een log entry van toepassing is.
Content-Type: application/json; charset=utf-8
Het technische formaat van de HTTP body van een getRoutingInfo request is:
{
"destination": {
"code": "",
"codeSystem": ""
},
"interaction": [{
"id": "",
"type": "",
"fhirProfile": "",
"fhirProfileVersion": ""
}],
"client ": {
"code": "",
"codeSystem": ""
}
}
Input parameters:
Name | Cardinality | Type | Toelichting |
destination | 0..1 | Object met attributen | Beoogde bestemming van de interactie. Vereist wanneer één van de ingestuurde interactions géén url attribuut bevat met daarin een appID. Wordt genegeerd wanneer alle ingestuurde interactions een url attribuut bevatten met daarin een appID. Wanneer één ingestuurde interaction een url attribuut bevat met een appID en een andere ingestuurde interaction wordt uitgedrukt middels een id attribuut, dan wordt de destination slechts gebruikt voor de interaction met het id attribuut. Voor de interaction met het url attribuut wordt dan de appID uit het url attribuut gebruikt. |
destination.code | 1..1 | String | Beoogde bestemming van de interactie. Mogelijke waarden:
|
destination.codeSystem | 1..1 | String | Het gehanteerde codesysteem. Mogelijke waarden:
|
interaction | 1..n | Object met attributen | Structuur waaruit het interactie-id van ieder te adresseren bericht kan worden bepaald. Een interactie dient op één van de volgende methoden te worden doorgegeven:
|
interaction.id | 0..1 | String | Interactie-id van het te adresseren bericht, of van de te adresseren berichten. Het versie-deel in het id attribuut wordt gespecificeerd a.d.h.v. aan major versienummer conform semver, dus bijvoorbeeld "1", "*" of "x". Hiermee is de compatibiliteit afdoende geborgd. |
interaction.type | 0.1 | String met waarde create | read | update | delete | search | batch | transaction | Het (restful FHIR) interactie type. |
interaction.fhirProfile | 0..1 | String | De canonical van het gehanteerde FHIR profiel, bijv. "http://nictiz.nl/fhir/StructureDefinition/zib-LivingSituation ". |
interaction.fhirProfileVersion | 0..1 | String | De versie van het gehanteerde FHIR profiel. Het attribuut wordt gespecificeerd conform semver, dus bijvoorbeeld "1.0.0" of "2.x". De Adressering Server houdt bij het zoeken naar applicaties slechts rekening met het major nummer, omdat compatibiliteit hierdoor afdoende is geborgd. |
client | 0..1 | Object met attributen | Beoogde client voor de interactie. |
client.code | 1..1 | String | Beoogde client voor de interactie. Mogelijke waarden:
|
client.codeSystem | 1..1 | String | Het gehanteerde codesysteem. Mogelijke waarden:
|
Inhoud en formaat van een getRoutingInfoResponse
Bij het verzenden van een getRoutingInfoResponse dienen de volgende HTTP headers te worden meegezonden:
Content-Type: application/json; charset=utf-8
Het technische formaat van de HTTP body van een getRoutingInfoResponse is:
[{
"interactionId": "",
"destinationInfo": [{
"destination": {
"code": "",
"codeSystem": ""
},
"fqdn": "",
"transformationId": "",
"aortaATversion": ""
}]
}]
Output bestaat uit 0..n JSON objecten die, voor elk van de ontvangen interactions, de volgende inhoud bevatten. Deze objecten worden geretourneerd in de volgorde waarin de betreffende interactions werden ontvangen in het getRoutingInfo request.
Name | Cardinality | Type | Toelichting |
interactionId | 1..1 | String | Interactie-id van het te adresseren bericht, of van de te adresseren berichten. Wordt gevuld met de interactie, indien mogelijk inclusief het exacte versienummer, waarmee de flow dient te worden vervolgd. Ook indien een transformatie is vereist. |
destinationInfo | 0..n | Object met attributen | Slechts aanwezig indien tenminste één geschikte GBx-applicatie is gevonden, en de interactie ook mag worden geïnitieerd. |
destinationInfo.destination | 1..1 | Object met attributen | Beoogde bestemming van de interactie. |
destination.code | 1..1 | String | Beoogde bestemming van de interactie. Mogelijke waarden:
|
destination.codeSystem | 1..1 | String | Het gehanteerde codesysteem. Mogelijke waarden:
|
destinationInfo.fqdn | 1..1 | String | FQDN van de GBx-applicatie. |
destinationInfo.transformationId | 0..1 | String | Het ID van het uit te voeren transformatie algoritme. Slechts aanwezig indien de applicatie die het request moet beantwoorden, vereist dat eerst een transformatie wordt uitgevoerd. Wordt nooit gevuld wanneer de interactie een FHIR-operation is. |
destinationInfo.aortaATversion | 0..1 | String | De hoogste versie van het AORTA access_token die wordt ondersteund door de beoogde bestemming van de interactie. Afwezig indien de bestemming geen AORTA access_tokens kan verwerken. |
HTTP statuscodes
HTTP statuscodes die kunnen worden geretourneerd zijn opgenomen in onderstaande tabel.
Omdat bepaalde Confluence macro’s nog niet worden ondersteund in de publicatie omgeving, bevat de tabel, in de publicatieomgeving, ook informatie over de wijze waarop de betreffende interface wordt geïmplementeerd in de server component. De statuscodes die kunnen worden geretourneerd zijn opgenomen in de kolom “Uitkomst”. De overige informatie mag worden genegeerd.
AOF.UCe.VAL.100.v1 - Toetsing type content | Uitkomst | |
---|---|---|
Stap | Omschrijving | |
i | Het systeem ontvangt een verzoek en start de verwerking. NB. wanneer het verzoek wordt ontvangen van een component van VZVZ, dan hoeft geen toets op type content te worden uitgevoerd. | Gevraagd type content niet ondersteund statuscode 406 Not Acceptable |
Gehanteerd type content niet ondersteund statuscode 415 Unsupported Media Type | ||
Het systeem genereert de vereiste foutresponse en gaat verder met de exit stap van de main flow. |
Stap | Omschrijving | Uitkomst |
---|---|---|
1 | Het systeem toetst of het verzoek voldoet aan de interface specificatie. | Ongeldig verzoek statuscode 400 Bad Request |
Het systeem genereert de vereiste foutresponse en gaat verder met de exit stap van de main flow. | ||
2 | Het systeem stelt vast voor welke interactie-id('s) routing info wordt gevraagd. | Interactie-id kan niet worden bepaald (of is onjuist) statuscode 400 Bad Request |
Het systeem genereert de vereiste foutresponse en gaat verder met de exit stap van de main flow. | ||
3 | Het systeem stelt, m.b.v. de transformatie server metadata, vast welk van de gevraagde interactie-id('s) eventueel m.b.t. transformatie kunnen worden uitgevoerd, en bepaalt naar welke interactie-id's dan zou worden getransformeerd. | |
4 | Het systeem stelt voor iedere gevraagde interactie-id vast, naar welke actieve GBx-applicatie(s) (appID) binnen de aangegeven destination, de betreffende interactie, zo nodig na transformatie, kan worden verzonden.
Ook Resource Broker GTK fungeert hierbij als een reguliere GBx-applicatie (Resource Server). RB GTK heeft één appID, en kan interacties opzetten met alle, op Twiin aangesloten, externe GTK’s. RB GTK wordt slechts betrokken in het routeringsalgoritme indien:
| Destination niet gevonden statuscode 404 Not Found |
Het systeem genereert de vereiste foutresponse en gaat verder met de exit stap van de main flow. | ||
Client niet gevonden statuscode 404 Not Found | ||
Het systeem genereert de vereiste foutresponse en gaat verder met de exit stap van de main flow. | ||
5 | Het systeem stelt voor iedere gevonden GBZ-applicatie, op basis van de systeemrollen in het APR, vast of de betreffende applicatie AORTA access_tokens kan verwerken, en zo ja wat de hoogste versie is die wordt ondersteund. | |
6 <exit> | Het systeem retourneert een response naar de primaire actor. | Verwerking succesvol statuscode 200 OK |
Voorbeelden van gebruik Routing Info Interface
Interactie vanuit MedMij
Het technische formaat van een getRoutingInfo request is:
POST [base endpointadres]/getRoutingInfo/v1
{
"destination": {
"code": "382",
"codeSystem": "urn:oid:2.16.528.1.1007.3.3"
},
"interaction": [{
"id": "create:zib-BloodPressure:3"
}]
}
Het technische formaat van een getRoutingInfo response is:
200 OK
[{
"interactionId": "create:zib-BloodPressure:3",
"destinationInfo": [{
"destination": {
"code": "5476",
"codeSystem": "urn:oid:2.16.840.1.113883.2.4.6.6"
},
"fqdn": "bron.zorgaanbieder.nl",
"transformationId": "1"
}]
}]
In bovenstaande situatie is transformatie #1 vereist om de gevraagde FHIR-interactie af te kunnen leveren bij GBZ-applicatie #5476.
Initiatie vanuit GBx-client
Het technische formaat van een getRoutingInfo request is:
POST [base endpointadres]/getRoutingInfo/v1
{
"destination": {
"code": "592",
"codeSystem": "urn:oid:2.16.528.1.1007.3.3"
},
"interaction": [{
"type": "read",
"fhirProfile": "http://nictiz.nl/fhir/StructureDefinition/mp-MedicationAgreement",
"fhirProfileVersion": "1.0"
}, {
"type": "read",
"fhirProfile": "http://nictiz.nl/fhir/StructureDefinition/mp-MedicationAgreement",
"fhirProfileVersion": "2.0"
}, {
"id": "search:eAfspraak-Appointment:2"
}]
}
Het technische formaat van een getRoutingInfo response is:
200 OK
[{
"interactionId": "read:mp-MedicationAgreement:1",
"destinationInfo": [{
"destination": {
"code": "3287",
"codeSystem": "urn:oid:2.16.840.1.113883.2.4.6.6"
},
"fqdn": "bron-1.zorgaanbieder.nl",
"aortaATversion": "2.0"
}]
}, {
"interactionId": "read:mp-MedicationAgreement:2"
}, {
"interactionId": "search:eAfspraak-Appointment:2",
"destinationInfo": [{
"destination": {
"code": "3288",
"codeSystem": "urn:oid:2.16.840.1.113883.2.4.6.6"
},
"fqdn": "bron-2.zorgaanbieder.nl",
"transformationId": "3"
}]
}]
In bovenstaande situatie is transformatie #3 vereist om de gevraagde Appointment interactie af te kunnen leveren bij GBZ-applicatie #3288. Er is géén transformatie vereist om de gevraagde MedicationRequest interactie af te kunnen leveren bij GBZ-applicatie #3287.
Aanroep vanuit Autorisatie Server ZA
Het technische formaat van een getRoutingInfo request is:
POST [base endpointadres]/getRoutingInfo/v1
{
"destination": {
"code": "3287",
"codeSystem": "urn:oid:2.16.840.1.113883.2.4.6.6"
},
"interaction": [{
"id": "search:mp-MedicationAgreement:1"
}, {
"id": "search:mp-MedicationAgreement:2"
}],
"client ": {
"code": "205",
"codeSystem": "urn:oid:2.16.840.1.113883.2.4.6.6"
}
}
Stel dat de client in deze situatie versie 1.1 van de gevraagde interactie ondersteunt, dan wordt, omdat eenzelfde major nummer voldoende is, het technische formaat van de bijbehorende getRoutingInfo response:
200 OK
[{
"interactionId": "search:mp-MedicationAgreement:1",
"destinationInfo": [{
"destination": {
"code": "3287",
"codeSystem": "urn:oid:2.16.840.1.113883.2.4.6.6"
},
"fqdn": "bron-1.zorgaanbieder.nl",
"aortaATversion": "1.0"
}]
}]
In bovenstaande situatie is géén transformatie vereist om de gevraagde MedicationRequest interactie af te kunnen leveren bij GBZ-applicatie #3287.