/
Developer Guide MO VZVZ

Developer Guide MO VZVZ

Table of Contents

Dit is een sjabloon voor de Developer Guide. Alle instructies staan in een Note panel (paars). Voorbeelden worden cursief weergegeven.

De instructies worden in het Nederlands gegeven, maar de uiteindelijke tekst van de Developer Guide is in het Engels. Engels is Amerikaans Engels.

Version

Deze sectie bevat informatie over het document zelf. Zoals versie informatie en een change log

Date

Status

Version

Remarks

Author(s)

Draft

0.0.1

First draft

VZVZ

Draft

0.0.1

Added essential information on VZVZ deviations from Nictiz specs

Added TODOs

Added reference links

Tjerk Drouen

v1

1.0

Aanpassingen nictiz URLs

Tjerk Drouen

Added paragraph 'Dataset constraints are transaction specific'

Tjerk Drouen

Changelog

Beschrijf globaal in het Engels wat er in deze versie is veranderd t.o.v. de vorige versie.

Hanteer de volgende indeling:

  • H3 kopje ‘Version’ gevolgd door het versienummer

  • H4 kopje ‘Fixed’ met daaronder als bullet list voor elke fix het Jira issue nummer dat geleid heeft tot deze fix en daar achter een korte omschrijving van de fix

  • H4 kopje ‘New’ met daaronder als bullet list voor elke nieuwe toevoeging het Jira issue nummer dat geleid heeft tot deze toevoeging en daar achter een korte omschrijving van de toevoeging

Version 0.0.1

First draft

Introduction

Purpose

Korte beschrijving van de scope van dit document.

The purpose of this document is to support the implementation of the Healthcare Application Medicatieoverdracht on the AORTA-LSP infrastructure.

Scope

Platte tekst, dus geen verwijzing.

This document gives a technical overview of the Healthcare Application with references to other documents with further information. It is intended as a landing page that refers to other locations with further information.

This document contains

  • the system architecture to indicate how this Healthcare Application relates to other products

  • information on the available APIs

  • relevant policies and governance that must be adhered to to be able to use this Healthcare Application

  • information regarding the configuration of the Healthcare Application, such as connection details for the test and acceptance environments

  • an overview of common and known issues

  • contact information

Intended audience

This document is intended for developers, product owners and architects of XIS-system development and integration.

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.

References

Glossary

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.

  • TODO de termen en de omschrijvingen moeten nog gecontroleerd worden op correctheid.
  • TODO termen en omschrijvingen aanvullen met MO-specifieke termen cq verwijzen naar beschrijvingen van die termen

/wiki/spaces/STND/pages/1024622927

Term (English)

(Dutch)

Definition

Term (English)

(Dutch)

Definition

Medication agreement

Medicatieafspraak

'Medicatieafspraak / Medication agreement/ is the prescriber’s proposal for medication use with which the patient agrees. An agreement to discontinue medication is also an MA.

Variable dosing regimen

Wisselend doseerschema

'Wisselend doseerschema / Variable dosing regimen' contains the dosing instruction as composed by an (external) prescriber. In the WDS the element 'instructions for use' from the MA is further specified. The WDS can be modified without changing the MA.

Dispense request

Verstrekkingsverzoek

'Verstrekkingsverzoek / Dispense request' is the request from a prescriber to a pharmacist to supply the patient with one or more medicinal products in support of the current MA(s)

Administration agreement

Toedieningsafspraak

'Toedieningsafspraak / Administration agreement' contains the instructions for medication use (or administration) from the pharmacist to the patient (or his representative or administrator), adding to the MA.

Medication dispense

Medicatieverstrekking

'Medicatieverstrekking / Medication dispense' is the provision of a supply of medicinal product to the patient or his administrator or representative.

Medication administration

Medicatietoediening

'Medicatietoediening / Medication administration' is the registration of individual administrations of the medicinal product to the patient by the person who administers them (such as a nurse or the patient himself) in relation to the agreements made.

Medication use

Medicatiegebruik

'Medicatiegebruik / Medication use' is a statement about historical, current or intended use of a medicinal product.

Proposal medication agreement

Voorstel medicatieafspraak

'Voorstel medicatieafspraak / Proposal medication agreement' is a recommendation or request from the pharmacist, prescriber or the administrator to the prescriber of the MA about the medication agreed upon. The recommendation request may include evaluating, discontinuing, starting or modifying medication.

Reply proposal medication agreement

Antwoord voorstel medicatieafspraak

'Antwoord voorstel medicatieafspraak / Reply proposal medication agreement' is a reply from the prescriber to the VMA.

Proposal dispense request

Voorstel verstrekkingsverzoek

'Voorstel verstrekkingsverzoek / Proposal dispense request' is a proposal from the pharmacist to the prescriber to approve one or more MVE(s) in support of the current MA(s). This is comparable with the current situation of submitting the authorisation form or combined prescription or submitting a repeat prescription for signing. The patient may also submit a VVV to the prescriber.

Reply proposal dispense request

Antwoord voorstel verstrekkingsverzoek

'Antwoord voorstel verstrekkingsverzoek / Reply proposal dispense request' is a reply from the prescriber to the VVV.

Clinical Information Model (CIM)

zorginformatiebouwsteen (ZIB)

See Clinical Building Block (CBB)

Clinical Building Block (CBB)

zorginformatiebouwsteen (ZIB)

Related data elements are grouped together in a Clinical Information Model (CIM)

Therapeutic and logistical building blocks

Therapeutische en logistieke bouwstenen

The model is designed in such a way that therapeutic building blocks and logistical building blocks are separated from each other.

Pharmaceutical treatment

Medicamenteuze behandeling

'Pharmaceutical treatment' is a technical concept in the information standard. Its purpose is:

  • To unambiguously identify the set of interdependent medication building blocks, and

  • To apply rules to it to unambiguously determine the present situation.

Product Overview

Requirements (Programma van eisen)

The list of requirements for the healthcare application addressed in this Developer Guide can be found here:

  • verwijzing naar de betreffende PvE → inline link

Programma van Eisen

Use cases (functional use cases)

The use cases were refined 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.

Related documents

This section contains a list of all the links from other sections of this document as well as links to other relevant documents.

See Documentatieoverzicht.

The overview lists:

  • Requirements

  • Functional Designs

  • Technical Designs

  • Standards and Regulations

Architecture

Context

Vision:

The Medication Transfer program works on good, complete electronic transfer of medication data. For an up-to-date and complete medication overview for every healthcare provider and every patient. A basic set of medication data has been agreed in the Guideline for Transfer of Medication Data in the Chain. These basic data must be available to every healthcare provider who prescribes, provides or administers. Three information standards enable the registration and exchange of this basic set. These are the information standards Medication Process, Lab values ​​for medication and CiO (Contraindications and hypersensitivities). The healthcare-wide implementation of the guideline and the associated information standards takes place within the Medication Transfer program. New agreements and procedures make network and chain care possible; the information standards included in software packages make digital data exchange possible.

Objectives:

The Medication process program aims first to take away existing obstacles in the medication process, while taking into account current legislation and the possibility of obtaining tangible results in the foreseeable future.

Architecture:

The Healthcare Application Medicatieoverdracht consists of various parts:

  • business layer architecture by Nictiz

    • Information standards

      • functional requirements

      • information models

  • application layer architecture by VZVZ

    • application requirements

    • information models for data exchange on AORTA-LSP infrastructure

    • infrastructure integration specifications with centralized application services

This application layer architecture is related to the higher business layer architecture as formulated in Architectuur.

 

Terminology:

AORTA 8 - Subscribe and notify

The terms; subscribe and notify need to be used instead of the legacy terms; signal, event and register.

In the AORTA v3 architecture the legacy terms are still present.

Context diagram

Zie Architectuur

This architecture is performed within a larger framework. See Nictiz page on Interoperabiliteit. This application mainly addresses Application and IT-infrastructure.

Flow chart

Algemene workflow uitwisseling

Onderstaande stappen zullen altijd uitgevoerd worden, ongeacht de inhoudelijke berichten. Voor het overzicht wordt de algemene workflow hier beschreven en wordt bij de inhoudelijke workflows alleen de stappen en berichten genoemd die aanvullend zijn op deze algemene workflow.

Opvragen medicatiegegevens

Workflow
  • vrager stelt generieke query / $get-aorta-data

  • LSP splitst in losse bouwsteen queries

  • zo nodig transformatie

  • antwoorden zo nodig getransformeerd

  • (getransformeerde) antwoorden worden gebundeld aangeleverd aan vrager

Interacties
  • lijst met interacties die bevraagd kunnen worden/ ontvangen kunnen worden

Berichten

Sturen en afhandelen medicatievoorschrift

Workflow
  • bron stuurt voorschrift-bericht naar ontvanger

  • ontvanger stuurt ontvangstbevestiging terug

  • ontvanger stuurt afhandeling-voorschrift-bericht naar bron

  • bron stuurt ontvangstbevestiging terug

Berichten

Sturen en afhandelen medicatiegegevens

Workflow
  • bron stuurt medicatiegegevens-bericht naar ontvanger

  • ontvanger stuurt ontvangstbevestiging terug

Berichten

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.

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.

The roles and use-cases are summarized by Nictiz and the Program in Verzamelbestand met functionele, technische en infrastructurele documentatie Medicatieproces 9 t.b.v. Kickstart - informatiestandaarden.

Usecases & Processen contains additional business analysis by VZVZ.

Verzamelbestand VZVZ applicatie interfaces richting AORTA

Hier volgt een uitgebreide toelichting op het Verzamelbestand informatiestandaarden.

Dit uitgebreide verzamelbestand bevat informatie over:

  • VZVZ AoF BGx-Systeemrol (platformgeneriek voor FHIR)

  • VZVZ AORTA FHIR Systeemrol (specifiek voor zorgtoepassingen binnen FHIR)

  • VZVZ AORTA v3 Applicatiesysteemrol (specifiek voor zorgtoepassingen binnen v3)

Deze uitleg biedt ondersteuning bij de implementatie van de vereisten voor elke benodigde rol.

Dataset constraints are transaction specific

The dataset needs to adhere to the constraints set by the transaction

Per transaction in the data model in ART DECOR, in the Condition column, refinements are found on attributes. The implementation needs to adhere to these.
These refinements are often the same for all transactions, but sometimes they differ per transaction.
For example, when sending a prescription, there are some fields that are not needed in the prescription and therefore we do not expect them in the prescription. However, when you request and provide medication data, those fields would be included. There are small discrepancies between what is transmitted in one transaction and another.

The advice is to build the building blocks in such a way that you can hide or include attributes in that building block depending on the interaction.
This is also future-proof if you need to move to a newer version of FHIR or other transport protocols.

As implementor, the differences will become apparent, when you Compare transactions side by side.
On big difference is between prescription and medication agreement.

  • The phone number is mandatory when sending a prescription, but it must not be included when making a medication agreement available (important - we also qualify on this).

  • The VV relationship to MA (1-) on (0-) depends on the migration.

The information per transaction can be found under: Dataset: mp- DECOR-samenvatting (Data Elements, Codes, OID's en Rules) in the ZorgView column!

Individual use cases

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.4 - informatiestandaarden

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 nictiz.fhir.nl.r4.medicationprocess9 | mp MedicationPrescription Bundle - SIMPLIFIER.NET.

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)

MP9 search parameter

Description

FHIR search parameter

Nictiz

VZVA (AoF)

PatientIdentificationNumber

Search on patient.

patient.identifier

subject:Patient.identifier

 

NOT supported on argument line

is part of context

Identification

Search on identifier.

identifier

GET [base]/MedicationRequest?identifier=http://example.nl/fhir/NamingSystem/MedicationRequest|999922448

Supported via

GET [base]
$get-aorta-data
?[context]
{&[destination]}
{&[effective-time]}
{&[therapy-identifier]}
{&[classifier]}
{&[instance-identifier]

https://aorta-on-fhir.scrollhelp.site/aorta-on-fhir-specificaties/latest/use-cases-resource-broker-v3-in#UseCasesResourceBrokerv3-in-Transformatiegeneriekeparametersnaarinteractie-specifiekeparameters

$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.

pharmaceutical-treatment-identifier

GET [base]/MedicationRequest?pharmaceutical-treatment-identifier=http://example.nl/fhir/NamingSystem/pharmaceuticaltreatment|1247848

Supported via

GET [base]
$get-aorta-data
?[context]
{&[destination]}
{&[effective-time]}
{&[therapy-identifier]}
{&[classifier]}
{&[instance-identifier]

https://aorta-on-fhir.scrollhelp.site/aorta-on-fhir-specificaties/latest/use-cases-resource-broker-v3-in#UseCasesResourceBrokerv3-in-Transformatiegeneriekeparametersnaarinteractie-specifiekeparameters

$get-aorta-data?

&therapy-identifier=<http://example.nl/fhir/NamingSystem/pharmaceuticaltreatment|<id>

Type

Search on type of medication building block.

category

Retrieves all MedicationRequest resources that represent the building block MedicationAgreement.

GET [base]/MedicationRequest?category=http://snomed.info/sct|33633005

Retrieves all MedicationRequest resources that represent the building block DispenseRequest.

Retrieves all MedicationRequest resources that represent the building block VariableDosingRegimen.

Supported via

GET [base]
$get-aorta-data
?[context]
{&[destination]}
{&[effective-time]}
{&[therapy-identifier]}
{&[classifier]}
{&[instance-identifier]

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.

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.

period-of-use

 

Supported via effective-time as GebruiksPeriode

GET [base]
$get-aorta-data
?[context]
{&[destination]}
{&[effective-time]}
{&[therapy-identifier]}
{&[classifier]}
{&[instance-identifier]

https://aorta-on-fhir.scrollhelp.site/aorta-on-fhir-specificaties/latest/use-cases-resource-broker-v3-in#UseCasesResourceBrokerv3-in-Transformatiegeneriekeparametersnaarinteractie-specifiekeparameters

DispensePeriod

Returns all medication dispenses within the specified time period.

whenhandedover

 

Supported via effective-time as VerstrekkingsPeriode

GET [base]
$get-aorta-data
?[context]
{&[destination]}
{&[effective-time]}
{&[therapy-identifier]}
{&[classifier]}
{&[instance-identifier]

https://aorta-on-fhir.scrollhelp.site/aorta-on-fhir-specificaties/latest/use-cases-resource-broker-v3-in#UseCasesResourceBrokerv3-in-Transformatiegeneriekeparametersnaarinteractie-specifiekeparameters

AdministrationPeriod

Returns all medication administrations within the specified time period.

effective-time

 

Supported via effective-time as ToedieningsPeriode

GET [base]
$get-aorta-data
?[context]
{&[destination]}
{&[effective-time]}
{&[therapy-identifier]}
{&[classifier]}
{&[instance-identifier]

https://aorta-on-fhir.scrollhelp.site/aorta-on-fhir-specificaties/latest/use-cases-resource-broker-v3-in#UseCasesResourceBrokerv3-in-Transformatiegeneriekeparametersnaarinteractie-specifiekeparameters

-

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.

_include=[type]:patient

_include=[type]:medication

 

Not Supported via arguments!

Includes are implicit and automatically added by VZVZ based on agreements with Nictiz.

 

Provenance Resources in FHIR response bundles

Also see Architectuur for the functional description of Provenance.

During pull and push exchange, the AORTA-LSP as exchange system adds FHIR Provenance Resources into the bundles to indicate the source systems.

 

Logic in AORTA:

Per bundle only one specific Provenance-object is added per source systeem

Per bundle one specific Provenance-object is shared between all resources of the source

In the Provenance object each resource in the searchset bundle is referenced:

  • fullUrl, if the fullUrl is a logical id (urn:uuid)

  • resource.id , if the fullUrl contains an absolute Url

  • Is the source returns a OperationOutcome, and it is not a part of the searchset, than a resource object is created with a logical id, which is referenced from the Provenance-Object

During aggregation of the sources, per source, a Provenance object is maintainted and expanded with the new target.reference(s).

After aggregation the Provenance object(en) are added to the consolidated bundle.

The Provenance objects are also included with regular FHIR search responses, not only during the get-aorta-data operation.

The same logic is being reused.

 

The Provenance contains the AORTA-app-id and URA to identify the source system.

Note: AORTA-LSP currently does not add user-friendly-name displaynames.

This element is NOT filled:

The current focus is on reliability and efficiency over additional functionality.
The receiving party may use the Zorg-AB to obtain a user-friendly-name displayname.

Sequence diagrams

See DECOR informatie voor project: Medicatieproces (mp-) for Business Layer scenarios

See DECOR informatie voor project: Medicatieproces op LSP (mp-vzvz-) Medicatieproces op het LSP versie 1.5 en is gebaseerd op MP9 3.0.0-beta.4 HTML for Application Layer scenarios

See https://aorta-on-fhir.scrollhelp.site/aorta-on-fhir-specificaties/latest/sequence-diagrammen for AORTA-on-FHIR platform integrations.

See https://vzvz.atlassian.net/wiki/spaces/ZM/pages/91984074

Class diagrams

Zie https://vzvz.atlassian.net/wiki/spaces/ZM/pages/1155367293

Zie ook Architectuur

Available APIs

See DECOR informatie voor project: Medicatieproces op LSP (mp-vzvz-) Medicatieproces op het LSP versie 1.5 en is gebaseerd op MP9 3.0.0-beta.4 XML for HL7 v3 SOAP interactions

See FHIR Implementation Guide Medication Process 9 version 3.0.0-beta.4 - informatiestandaarden for FHIR integration.

V3 messages and packages

FHIR profiles and packages

The FHIR profiles used in this Healthcare Application can be found on Simplifier.

Project/package

Description

Project/package

Description

Nictiz R4 MedicationProcess

The profiles and examples related to MO

AoF

link naar de scrollhelp pagina met alle AORTA-profielen

Examples

API specification

AORTA specifications: see all the links combined in the AoF Releases as ‘AoF Release’ with label “AoF.2024.1” (Functionaliteit die nodig is voor de kickstart MO).

The various calls on the various API’s adhere to naming conventions by Nictiz and VZVZ.

These are the naming conventions in Dutch:

Security

Identification and Authorization Management

See requirements in Programma van Eisen.

Encryption

See requirements in Programma van Eisen.

Authentication

Zie Autorisatierichtlijn Medicatieveiligheid | AORTA-LSP.

See requirements in Programma van Eisen.

See Architectuur; Actors

Configuration

Common Issues/Known Issues

Contact information

Person

Role/Type of questions

Contact

Person

Role/Type of questions

Contact

Bart Molenaar

Product Manager

-

VZVZ Testteam

 

validatie@medicatieoverdracht.nl

VZVZ Architects

 

solutionarchitecten@vzvz.nl

 

 

 

 

Related content