...
Numberedheadings | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
VersionDeze sectie bevat informatie over het document zelf. Zoals versie informatie en een change log Deze sectie bevat informatie over het document zelf. Zoals versie informatie en een change log
ChangelogBeschrijf globaal in het Engels wat er in deze versie is veranderd t.o.v. de vorige versie. Hanteer de volgende indeling:
Beschrijf globaal in het Engels wat er in deze versie is veranderd t.o.v. de vorige versie. Hanteer de volgende indeling:
Version 0.0.1First draft Product OverviewIntroductionKorte beschrijving van de scope van dit document. Korte beschrijving van de scope van dit document. This document is intended for developers who want to implement the MedicatieOverdracht Healthcare application on the AORTA infrastructure ReferencesGlossaryHier komt een tabel met Nederlandse en Engelse termen met uitleg. Onderstaande tabel kan gebruikt en aangevuld worden met specifieke termen die in deze Developer Guide gebruikt worden. Hier komt een tabel met Nederlandse en Engelse termen met uitleg. Onderstaande tabel kan gebruikt en aangevuld worden met specifieke termen die in deze Developer Guide gebruikt worden.
Requirements (Programma van eisen)The list of requirements for the healthcare application addressed in this Developer Guide can be found here:
Use cases (functional use cases)
The use cases were assembled in cooperation with Nictiz. For the Healthcare Application Medicatieoverdracht the following use cases are relevant and can be found on the Nictiz website or in the PSA which is developed internally.
Purpose of the documentPlatte tekst, dus geen verwijzing. Platte tekst, dus geen verwijzing. The purpose of this document is to support developers, product owners and architects in the implementation to of the Healthcare Application Medicatieoverdracht. This document contains
Intended audienceThe intended audience of this document are developers, product owners and architects of the vendors of EHR and related systems that want to implement connection to the Healthcare Application described in this Developer Guide. Platte tekst, dus geen verwijzing. Formuleer hier in de template een standaard tekst, omdat de doelgroep voor een dev guide bijna altijd hetzelfde is. Zie voorstel hierboven. Platte tekst, dus geen verwijzing. Formuleer hier in de template een standaard tekst, omdat de doelgroep voor een dev guide bijna altijd hetzelfde is. Zie voorstel hierboven. Related documentsHier een opsomming van relevante documenten, met onderstaande voorkeuren in prio:
Lijst met links moet een beschrijving bevatten zodat duidelijk is waar de link over gaat. NB. Afspraak is dat alle links zoals in dit document hier bij elkaar gezet worden en aangevuld worden met andere relevante documenten. Hier een opsomming van relevante documenten, met onderstaande voorkeuren in prio:
Lijst met links moet een beschrijving bevatten zodat duidelijk is waar de link over gaat. NB. Afspraak is dat alle links zoals in dit document hier bij elkaar gezet worden en aangevuld worden met andere relevante documenten. This section contains a list of all the links from other sections of this document as well as links to other relevant documents.
Product Documentation VersioningDit is een verwijzing naar de versie van de documentatie waarnaar verwezen wordt. Geef alleen de Major-Minor versie van het gerefereerde document UPDATE 2024-11-12: mogelijk is deze sectie niet van belang. Dit is een verwijzing naar de versie van de documentatie waarnaar verwezen wordt. Geef alleen de Major-Minor versie van het gerefereerde document UPDATE 2024-11-12: mogelijk is deze sectie niet van belang. | Document | Document
Document | Document Version |
---|---|
vb: AoF specificaties | 2024.1 |
AORTA |
|
Nictiz FO |
Architecture
Context
repo = Confluence space nodig waarvandaan wordt gerefereerd.
Voor de diagrammen wordt er gerefereerd vanuit een eerdere uitwerkingen vanuit een repository. Aan de hand van de uitwerkingen in de PvE dienen afspraken gemaakt te worden over de uitwerkingen conform de uitwerkingen in de repo.
Bij de diagrammen ook toelichting bij de platen
repo = Confluence space nodig waarvandaan wordt gerefereerd.
Voor de diagrammen wordt er gerefereerd vanuit een eerdere uitwerkingen vanuit een repository. Aan de hand van de uitwerkingen in de PvE dienen afspraken gemaakt te worden over de uitwerkingen conform de uitwerkingen in de repo.
Bij de diagrammen ook toelichting bij de platen
Korte uitleg
Korte uitleg
It should be possible to exchange information regarding medication between healthcare providers and between healthcare providers and consumers.
The Healthcare Application Medicatieoverdracht consists of three parts:
content-related specifications as defined by the Nictiz project team
updates to these specifications as defined by the VZVZ project team to allow the exchange to happen on the AORTA infrastructure
infrastructural specifications as defined by the VZVZ AORTA team to allow conformance to the AORTA infrastructure
Context diagram
Verplicht
Plaat met daaronder de beschrijving.
Context diagram (UML/businesslaag van Archimate) → relatie met de buitenwereld moet helder zijn. Relatie met de andere actoren.
Verplicht
Plaat met daaronder de beschrijving.
Context diagram (UML/businesslaag van Archimate) → relatie met de buitenwereld moet helder zijn. Relatie met de andere actoren.
Flow chart
Verplicht
business niveau
Verplicht
business niveau
Terminologie overgang in AORTA 8
Abonneren Notificeren is de nieuwe naamgeving.
In AORTA v3 architectuur is soms de oude naamgeving nog van kracht. Registreren Abonnement en Signaal bij Gebeurtenis.
Flow chart
Verplicht
business niveau
Verplicht
business niveau
Use cases
This section covers all available use cases as defined by Nictiz and the changes to the specfications as required by this Healthcare Application.
Verplicht
korte omschrijving, referentie naar de technische use cases
bij voorkeur embedden, indien niet mogelijk dan extern linken of bijlagen toevoegen (zip). Dit laatste alleen in uiterste nood.
Verplicht
korte omschrijving, referentie naar de technische use cases
bij voorkeur embedden, indien niet mogelijk dan extern linken of bijlagen toevoegen (zip). Dit laatste alleen in uiterste nood.
Which use cases should I support
The Healthcare Application Medicatieoverdracht is very large and covers all use cases for every type of EHR system that participates. The list below indicates which use cases should be supported by each type of system. This allows vendors to drill down to only support the relevant use cases.
Neem hier de kruisjestabel van Tjerk op of geef een link naar de locatie waar die staat
Neem hier de kruisjestabel van Tjerk op of geef een link naar de locatie waar die staat
Individual use cases
Individual use cases
Voeg hier algemene afwijkingen toe t.o.v. de Nictiz use cases
Zet hieronder een overzicht van de beschikbare use cases, een link naar de Nictiz versie en eventueel een aanvulling van de afwijkingen die specifiek zijn voor die use case. Verwijs zo nodig naar andere lokaties. Voorkom dubbel opschrijven.
Voeg hier algemene afwijkingen toe t.o.v. de Nictiz use cases
Zet hieronder een overzicht van de beschikbare use cases, een link naar de Nictiz versie en eventueel een aanvulling van de afwijkingen die specifiek zijn voor die use case. Verwijs zo nodig naar andere lokaties. Voorkom dubbel opschrijvenopschrijven.
MP-MGR MP-MGB proxy-facade
AORTA acts as proxy-facade towards the source systems. The calls from a MP-MGR are distributed towards MP-MGB servers and the responses are aggregated as bundled response.
We hanteren een generieke query (in FHIR in de vorm van een $get-aorta-data operation) voor vragende systemen, die door AORTA wordt omgezet naar FHIR searches (minus BSN) naar bronsystemen.
MP-MGR MP-MGB FHIR includes
AORTA ensures that all relevant data is requested in a minimum number of requests. This avoids unnecessary round-trips, and ensures sufficient data retrieval to allow for the BTD to transform data between exchange formats.
These includes result in explicitely broadend FHIR searches with _include and _include:iterate parameters towards MP-MGB.
Patient identifier not part of argument but part of context
Patient identifier is not intended to be mentioned in the query parameters. This would impose a security risk.
Om security redenen nemen wij het BSN niet op in de URL van FHIR searches. Het is onderdeel van het token dat wordt meegestuurd (dat dus niet alleen autorisatiehulpmiddel is maar ook gegevensdrager).
The patient indentifier needs to be communicated via the access-token.
This design-pattern is used for incoming as well as outgoing traffic on AORTA-LSP.
AORTA-LSP does NOT support patient identification with the use of search parameters.
As mentioned in FHIR Implementation Guide Medication Process 9 version 3.0.0-beta.3 - informatiestandaarden - Patient_identification
Within AORTA, each transaction is performed in the context of a specific patient, whose context might has been established using the authentication mechanisms. Patient is part of the token exchange.
Het BSN van de betreffende patient is opgenomen in het access_token.
HTTP argument patient.identifier is NOT supported like
GET [base]/MedicationRequest?
patient.identifier=http://fhir.nl/fhir/NamingSystem/bsn%7C111222333
MP-VOS + LAB-LRS
Sturen verzoek tot medicatieverstrekking van medicatie of verwerking van wijziging in medicatieafspraak.
VZVZ implementeert lab Observations als open-world extension boven op mp-MedicationPrescription-Bundle.
Security
Wij hebben een security requirement en daarom is het nodig om een access token te verkrijgen dat meegestuurd wordt naar bronsystemen. Dit verandert niets aan de FHIR-search, maar wel de HTTP call.
HTTP-Headers
Daarnaast zijn er nog een aantal HTTP-headers die we gebruiken, zoals Content-Type (formaat FHIR-content), AORTA-ID (tracing/logging van interacties/ketens) en AORTA-Version (versie infrastructuur).
Zoals request-id, initial-request-id, etc.
AoF FHIR Search parameter support for generic query using get-aorta-data
MP9 search parameter | Description | FHIR search parameter | Nictiz | VZVA (AoF) |
---|---|---|---|---|
PatientIdentificationNumber | Search on patient. |
| NOT supported on argument line is part of context | |
Identification | Search on identifier. |
| GET [base]/MedicationRequest?identifier=http://example.nl/fhir/NamingSystem/MedicationRequest|999922448 | Supported via GET [base] $get-aorta-data? &instance-identifier=<http://example.nl/fhir/NamingSystem/MedicationRequest|<id> |
Identification | Search on the pharmaceutical treatment identifier. Note: retrieval of all medication resources belonging to one pharmaceutical treatment requires to search on all medication resource types. |
| GET [base]/MedicationRequest?pharmaceutical-treatment-identifier=http://example.nl/fhir/NamingSystem/pharmaceuticaltreatment|1247848 | Supported via GET [base] $get-aorta-data? &therapy-identifier=<http://example.nl/fhir/NamingSystem/pharmaceuticaltreatment|<id> |
Type | Search on type of medication building block. |
| Retrieves all MedicationRequest resources that represent the building block MedicationAgreement. Retrieves all MedicationRequest resources that represent the building block DispenseRequest. Retrieves all MedicationRequest resources that represent the building block VariableDosingRegimen. | Supported via GET [base] as &category=http://snomed.info/sct|<category> |
Retrieves all MedicationDispense resources that represent the building block MedicationDispense. Retrieves all MedicationDispense resources that represent the building block AdministrationAgreement. | Supported | |||
Retrieves all MedicationStatement resources that represent the building block MedicationUse2. | Supported | |||
Retrieves all MedicationAdministration resources that represent the building block MedicationAdministration2. | Supported | |||
MedicationCode | Search on medication code. |
| NOT SUPPORTED? | |
PeriodOfUse | Search on the MedicationAgreement, VariableDosingRegimen, AdministrationAgreement and MedicationUse2 building blocks that are related to medication that was used, is used or will be used during the indicated period. Whenever a search is done on the MedicationAgreement, VariableDosingRegimen or AdministrationAgreement building blocks it is required to also include the latest stopped building blocks of that kind within each pharmaceutical treatment, even if these have a period of use outside the PeriodOfUse that is being searched on. |
| Supported via effective-time as GebruiksPeriode GET [base] | |
DispensePeriod | Returns all medication dispenses within the specified time period. |
| Supported via effective-time as VerstrekkingsPeriode GET [base] | |
AdministrationPeriod | Returns all medication administrations within the specified time period. |
| Supported via effective-time as ToedieningsPeriode GET [base] | |
- | The client may request that the server returns resources related to the search results, in order to reduce the overall network delay of repeated retrievals of related resources. Supporting the include of the Patient and Medication resources referenced by building blocks is required. Others (Organization, Location, PractitionerRole, Practitioner, RelatedPerson, Observation) are optional. However: all resources referenced per literal reference SHALL be resolvable per the Nictiz IG. |
| Not Supported via arguments! Includes arec implicit and automatically added by VZVZ based on agreements with Nictiz. |
Sequence diagrams
Verplicht
technische niveau
Niet alleen de happy flows, maar ook de unhappy alternatieve flows.
Eventueel links naar de diagrammen → m.n. die van Ron van Holland m.b.t. de diverse workflows
Verplicht
technische niveau
Niet alleen de happy flows, maar ook de unhappy alternatieve flows.
Eventueel links naar de diagrammen → m.n. die van Ron van Holland m.b.t. de diverse workflows
Class diagrams
UML
embedded vanuit de repository
Opnemen indien relevant
UML
embedded vanuit de repository
Opnemen indien relevant
Voorbeeld:
Available APIs
V3 messages and packages
FHIR profiles and packages
Lijst met links naar de relevante FHIR profielen op Simplifier. Zowel de Nictiz profielen als de VZVZ profielen.
Benoem de FHIR packages die nodig zijn voor deze profielen. Indien het belangrijk is dat een specifieke versie van een bepaald package gebruikt wordt, vermeld dat dan.
Het wordt afgeraden om naar een specifieke versie te verwijzen. Doe dat dus alleen als het echt niet anders kan.
Lijst met links naar de relevante FHIR profielen op Simplifier. Zowel de Nictiz profielen als de VZVZ profielen.
Benoem de FHIR packages die nodig zijn voor deze profielen. Indien het belangrijk is dat een specifieke versie van een bepaald package gebruikt wordt, vermeld dat dan.
Het wordt afgeraden om naar een specifieke versie te verwijzen. Doe dat dus alleen als het echt niet anders kan.
The FHIR profiles used in this Healthcare Application can be found on Simplifier.
Project/package | Description |
---|---|
The profiles and examples related to MO | |
AoF | link naar de scrollhelp pagina met alle AORTA-profielen |
The Healthcare Application Medicatieoverdracht spans a hybrid situation in which messages can be exchanged in both HL7 v3 and HL7 FHIR. The AORTA infrastructure uses a Transformation Service to transform one type into another so systems only supporting a specific format can still exchange information.
To make this transformation possible without losing valuable information some restrictions to the FHIR implementation are required:
ALWAYS make sure the resource instance has a valid business identifier
do NOT use absolute FHIR references, they cannot be converted to an HL7 v3 reference
ALWAYS add the necessary resources in a bundle, the LSP gateway cannot fetch the additional resources and incomplete bundles (i.e. with referenced resources that are not present in the bundle) can not be transformed.
TODO onderstaande tekst moet gecontroleerd worden (klopt alles en hoe is dit uitgewerkt in de PvE’s e.d.) en zo nodig hierboven herschreven/aangevuld worden.
Omschrijving: Hoe kunnen we tussen medicatiebouwstenen refereren in FHIR in een ecosysteem waarin ook geconverteerd moet worden van en naar HL7v3?
In HL7v3 kunnen absolute FHIR referenties niet overgebracht worden en bestaat een referentie uit een business identifier.
Bij het converteren van FHIR naar HL7v3 moet de business identifier dus achterhaald kunnen worden, anders verlies je de relatie.
Het verliezen van de relatie is niet acceptabel in verband met de afleidingsregels.
Op het LSP worden géén REST-calls gedaan om (FHIR-)referenties te kunnen resolven en dus een business identifier te achterhalen bij een absolute of relatieve FHIR URL.
Referenties kunnen ook gaan naar een bouwsteen die ‘van’ iemand anders is (een andere zorgaanbieder).
Bij een LSP-query mogen andermans bouwstenen niet opgeleverd worden. Hoe kan je dan (bij het antwoord op een query) een referentie resolven die in een FHIR bouwsteen een relatieve URL heeft naar je eigen server zonder een extra REST-call te doen naar die FHIR server?
Is het eventueel gewenst om URL’s naar ándere FHIR servers (bij andere zorgaanbieders) in jouw FHIR-bericht op te nemen?
Hoe weet je of een andere zorgaanbieder een échte FHIR-server heeft waar deze URL’s resolvable zijn, of wellicht alleen een façade?
In gesprek met Lauri R en Jelmer vd M kwamen we tot de voorzichtige conclusie dat - zo lang we te maken hebben met conversies van/naar HL7v3 - referenties tussen medicatiebouwstenen ook in FHIR altijd via business identifier zouden moeten gaan. Klopt die conclusie?
src: https://nictiz.atlassian.net/browse/MP-1596
Examples
Neem hier een lijst op van embedded links naar voorbeeldberichten, bijv. op Simplifier en/of code voorbeelden in GitHub.
NB. de voorbeeldberichten voor AORTA staan per profiel genoemd op de pagina met AORTA-profielen en die van MO staan in Simplifier, volgens mij zonder overzicht
Neem hier een lijst op van embedded links naar voorbeeldberichten, bijv. op Simplifier en/of code voorbeelden in GitHub.
NB. de voorbeeldberichten voor AORTA staan per profiel genoemd op de pagina met AORTA-profielen en die van MO staan in Simplifier, volgens mij zonder overzicht
API specification
API specificaties van de toepassing
beschrijving/visualisatie van de API, volgens industry standard methode → referentie d.m.v. OpenAPI (voorheen Swagger)
Swagger werkt met Viewport
Swagger is compatible met API’s en SOAP’s
API specificaties van de toepassing
beschrijving/visualisatie van de API, volgens industry standard methode → referentie d.m.v. OpenAPI (voorheen Swagger)
Swagger werkt met Viewport
Swagger is compatible met API’s en SOAP’s
AORTA specifications: see all the links combined in the AORTA 2024.1 release
Naamgeving Nictiz
Sturend
Ontvangend
Beschikbaarstellend
Raadplegend
Voorstel
AntwoordVoorstel
Naamgeving AoF
ZA Verzendend Systeem
ZA Ontvangend Systeem
Naamgeving AORTA v3
Webservice
Versturen
Opvragen
Transactierollen
xxZ - verzendendsysteem
xxD - ontvangendsysteem
Vxx - voorstel…
Axx - antwoord…
xxO - … opvragend systeem
xxV - …bronsysteem | …opleverend systeem
Security
voor de onderstaande onderdelen een acceptable means of compliance beschrijven.
Verwijs naar de tokens, VGU, etc.
voor de onderstaande onderdelen een acceptable means of compliance beschrijven.
Verwijs naar de tokens, VGU, etc.
Identification and Authorization Management
ref naar IAM eisen in PvE, embedded
verklaring op de eisen en een howto--> uitvragen: op welke manier wil een developer dit
ref naar IAM eisen in PvE, embedded
verklaring op de eisen en een howto--> uitvragen: op welke manier wil een developer dit
Encryption
ref naar encryptie eisen in PvE, in embedded
verklaring op de eisen en een howto --> uitvragen: op welke manier wil een developer dit
ref naar encryptie eisen in PvE, in embedded
verklaring op de eisen en een howto --> uitvragen: op welke manier wil een developer dit
Voorbeelden:
Authentication
ref naar authentication eisen in PvE, embedded
verklaring op de eisen en een howto--> uitvragen: op welke manier wil een developer dit
Ref naar authenticatie flow, embedded
ref naar authentication eisen in PvE, embedded
verklaring op de eisen en een howto--> uitvragen: op welke manier wil een developer dit
Ref naar authenticatie flow, embedded
Voorbeeld:
Configuration
Benodigde configurations, waarbij elke bullet point bij voorkeur embedded wordt opgenomen:
Aansluiten op testomgevingen (referentie aansluitformulier)
Endpoints (test)omgevingen POC - PTO2 - XTO1 (meer?)
Autorisatie omgevingen (UZI middelen)
Testdata
Certificaten x.509
Voeg hier ook informatie m.b.t. de validatietools toe. Zie ook https://vzvz.atlassian.net/browse/MEDVEILIG-177 voor links
Benodigde configurations, waarbij elke bullet point bij voorkeur embedded wordt opgenomen:
Aansluiten op testomgevingen (referentie aansluitformulier)
Endpoints (test)omgevingen POC - PTO2 - XTO1 (meer?)
Autorisatie omgevingen (UZI middelen)
Testdata
Certificaten x.509
Voeg hier ook informatie m.b.t. de validatietools toe. Zie ook https://vzvz.atlassian.net/browse/MEDVEILIG-177 voor links
Common Issues/Known Issues
Known issues is een overzicht waarin de issues zijn opgenomen van veel voorkomende problemen in de praktijk, met daarbij een advies hoe hier mee om te gaan.
Externe inline link naar common- / known issues (bijvoorbeeld in supportal)
Known issues is een overzicht waarin de issues zijn opgenomen van veel voorkomende problemen in de praktijk, met daarbij een advies hoe hier mee om te gaan.
Externe inline link naar common- / known issues (bijvoorbeeld in supportal)
Contact information
Contactgegevens
Single point of contact (bijvoorbeeld: Product Manager), die verwijst bijvoorbeeld door naar:
VZVZ Testteam (vragen over: aansluiting, omgevingsproblemen, acceptatie, testscript)
Architectuurteam (vragen over: PvE)
Contactgegevens
Single point of contact (bijvoorbeeld: Product Manager), die verwijst bijvoorbeeld door naar:
VZVZ Testteam (vragen over: aansluiting, omgevingsproblemen, acceptatie, testscript)
Architectuurteam (vragen over: PvE)
Person | Role/Type of questions | Contact | |
---|---|---|---|
Bart Molenaar | Product Manager | <email> | |
VZVZ Testteam | Questions re connections, acceptations, testscripts | <email> | |
VZVZ Architects | Questions re PvE…..<email> |
Vul hier een link in naar bijv. een service desk of een andere manier om in contact te komen met iemand die geraadpleegd kan worden.
Vermijd namen, email adressen en telefoonnummers omdat een Developer Guide publiekelijk beschikbaar komt op het internet. Voeg alleen links toe naar een omgeving waarop eerst ingelogd moet worden voordat de vragen gesteld kunnen worden. Anders kun je wachten op spam-registraties.
Update 2024-11-12: er is nog geen generieke servicedesk applicatie beschikbaar, dus we ontkomen niet aan email adressen. Misschien moet er dan besloten worden dat alle vragen via het testteam gaan en dat zij ze intern routeren naar de juiste persoon.
Vul hier een link in naar bijv. een service desk of een andere manier om in contact te komen met iemand die geraadpleegd kan worden.
Vermijd namen, email adressen en telefoonnummers omdat een Developer Guide publiekelijk beschikbaar komt op het internet. Voeg alleen links toe naar een omgeving waarop eerst ingelogd moet worden voordat de vragen gesteld kunnen worden. Anders kun je wachten op spam-registraties.
Update 2024-11-12: er is nog geen generieke servicedesk applicatie beschikbaar, dus we ontkomen niet aan email adressen. Misschien moet er dan besloten worden dat alle vragen via het testteam gaan en dat zij ze intern routeren naar de juiste persoon.
...