Overzicht Notificatie Broker
Onderstaande figuur toont een overzicht van de interfaces, services en functies van de Notificatie Broker component. De Notificatie Broker ontvangt toestemming notificaties van Mitz, en stuurt deze (indien gewenst) door naar GBZ-applicaties.
De services zijn toegankelijk via een geboden interface en worden beschreven in de vorm van use cases. Een service wordt altijd vervult middels één of meerdere applicatiefuncties, bijvoorbeeld Mitz Notificatie Broker. De Notificatie Broker component maakt zelf ook gebruik van een aantal interfaces, bijvoorbeeld van de Toestemming Notificatie Interface.
Doorgeven Mitz Notificatie
|
Primaire actor |
Mitz |
|---|---|
|
Systeem |
Mitz Notificatie Broker |
|
Secundaire actor |
Resource Client (GBx-applicatie) |
|
Code |
|
|
Realiseert Feature |
Pre-condities
|
De primaire actor is aangesloten op het systeem. |
|
Het systeem is slechts benaderbaar voor
|
Trigger
De toestemming van een patiënt wijzigt in het Mitz toestemmingsregister.
Main flow
|
AOF.UCe.VAL.100.v1 - Toetsing type content |
Uitkomst |
|
|---|---|---|
|
Stap |
Omschrijving |
|
|
i |
Het systeem ontvangt een verzoek en start de verwerking. Het systeem toetst of het gevraagde type content (Accept header) en het gehanteerde type content (Content-Type header) worden ondersteund. 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 response en gaat verder met de exit stap van de main flow. |
||
|
AOF.UCe.VAL.160.v1 - Inhoudelijke toetsing request |
Uitkomst |
|
|---|---|---|
|
Stap |
Omschrijving |
|
|
i |
Het systeem toetst of het request geen malafide inhoud bevat (zie FHIR security, input validation). |
Ongeldig verzoek statuscode 400 Bad Request |
|
Het systeem genereert de vereiste response en gaat verder met de exit stap van de main flow. |
||
|
ii |
Het systeem toetst of het verzoek voldoet aan de interface specificatie. Hierbij moet ook worden voldaan aan de toelichting "Controle van batch en transaction requests". FHIR-requests dienen te worden getoetst tegen de core FHIR specificaties (RESTful API). Indien een Indien een specifieke FHIR-profiel van toepassing is voor het gevonden interactie-id, dan dient het FHIR-request hier ook tegen te worden getoetst. NB. toetsing tegen een volledig FHIR-profiel wordt nog niet gedaan - consequenties van deze toets worden eerst in kaart gebracht.
|
Ongeldig verzoek statuscode 400 Bad Request |
|
Het systeem genereert de vereiste response en gaat verder met de exit stap van de main flow. |
||
|
Stap |
Omschrijving |
Uitkomst |
|---|---|---|
|
1 <exit>
|
Het systeem retourneert een response naar de primaire actor. Zie ook de eisen die Mitz stelt aan de verwerking van notificaties. |
Verwerking succesvol statuscode 200 OK |
|
2 |
Het systeem haalt de status van het Lokaliseerbaar Systeem in het Applicatieregister op m.b.v. feature migratedToMitz. |
Mitz migratie status kan niet worden vastgesteld |
|
Het systeem beëindigt de flow. |
||
|
3 |
Indien de status van het Lokaliseerbaar Systeem niet gelijk is aan “Migrated“, dan beëindigt het systeem de flow. |
|
|
4 |
Het systeem rapporteert een event bij de Event Handler van de ZIM. |
|
|
5 |
Ter info: De Event Handler van de ZIM haalt alle gegevenssoorten en bouwstenen die geregistreerd staan voor de combinatie van BSN/AppID op uit het Actualiteitsregister. Alle gevonden records worden vervolgens behandeld als abonnement gebeurtenis. De gebeurtenis wordt afgehandeld door het Abonnementenregister m.b.v. feature subscriptionNotification. |
|
|
6 |
Het systeem verkrijgt, m.b.v. Feature getApplication(s), informatie over het Lokaliseerbaar Systeem. |
Bronhouder onbekend |
|
Het systeem beëindigt de flow. |
||
|
7 |
Indien uit de APR registratie van systeemrollen blijkt dat het Lokaliseerbaar Systeem Mitz Toestemming Notificaties wil en kan ontvangen:
De FQDN waarop een notificatie moet worden afgeleverd wordt eveneens verkregen uit het APR. |
Géén geschikte conformance gevonden |
|
Het systeem beëindigt de flow. |
||
|
8 |
Het systeem verstuurt de notificatie via het mechanisme voor guaranteed delivery, op de wijze zoals gespecificeerd in
Hierbij gaat de voorkeur uit naar NIET transformeren van een interactie, en wordt verder de voorkeur voor interacties gevolgd, zoals geconfigureerd in de AORTA interactietabel. |
|
Post-condities
|
Het systeem heeft ontvangen request en de geretourneerde response gelogd, zoals beschreven in de Toelichting Logging. |
|
Het systeem heeft eventueel opgetreden fouten die ertoe hebben geleid dat de notificatie niet kan worden doorgestuurd gelogd. De volgende attributen worden gelogd:
|
|
Het systeem heeft van het ontvangen request, de volgende attributen gelogd:
== Het systeem heeft voor ieder uitgaand request, dat bij het doorlopen van de use case werd verzonden, de volgende attributen gelogd:
|
|
Het systeem heeft van de geretourneerde response, de volgende attributen gelogd:
== Het systeem heeft voor iedere response, die bij het doorlopen van de use case werd ontvangen, de volgende attributen gelogd:
|
Toelichtingen
Eisen aan verwerking notificatie vanuit Mitz
Eisen aan verwerking notificatie vanuit Mitz
Voor notificaties die door Mitz verzonden worden geldt het principe van guaranteed delivery door de Mitz-connector. Dat betekent dat de aflevering van de notificaties naar bronsystemen asynchroon gebeurt.
De Mitz-connector geeft dus direct een HTTP response aan Mitz en gaat, indien de resource met succes is ontvangen en gebufferd, daarna proberen om deze af te leveren bij het bronsysteem. De methode waarmee dit gebeurt is afhankelijk van de Mitz-connector en valt buiten de scope van de implementatie van Mitz.
De response is een ontvangstbevestiging, geen bevestiging van succesvolle verwerking.
Werking guaranteed delivery
Mechanisme voor guaranteed delivery
Wanneer een bericht niet succesvol kan worden afgeleverd aan een ontvangend systeem, dan wordt het toegevoegd aan een Guaranteed Delivery Queue (GDQ). Wanneer de niet-succesvolle aflevering blijkens het response bericht het gevolg is van een fout van het verzendende systeem, dan wordt het bericht niet in de GDQ geplaatst.
Eens in een configureerbare periode wordt getracht om alle berichten die zich in de GDQ bevinden, opnieuw te verzenden. Bij succesvolle verzending wordt het betreffende bericht weer uit de GDQ verwijderd. Een nieuwe poging wordt slechts gedaan indien het ontvangend systeem in de APR op “actief” staat. Indien het ontvangend systeem niet “actief” is, dan wordt eerst een v3-ping of een FHIR-ping verzonden. Wanneer de ping wordt beantwoord, dan wordt direct getracht om alle berichten uit de GDQ, die bestemd zijn voor de betreffende applicatie, opnieuw te verzenden.
Na een configureerbare maximum aantal pogingen wordt een bericht uit de GDQ gehaald en in een Beheer Queue (of Drop-out) geplaatst. Een applicatiebeheerder kan dan besluiten om nogmaals een poging te doen, of om het betreffende bericht ook te verwijderen uit de Beheer Queue.
Activiteiten m.b.t. de queues worden gelogd.
De keuze tussen het verzenden van een v3-ping of een FHIR-ping wordt gemaakt o.b.v. de conformances van de ontvangende applicatie in het APR. Wanneer beide ping-varianten worden ondersteund, dan wordt de keuze gebaseerd op het protocol dat wordt gehanteerd voor de te verzenden notificatie.