Netherlands - Generic Functions for data exchange Implementation Guide
0.2.0 - ci-build
Netherlands - Generic Functions for data exchange Implementation Guide, published by Stichting Nuts. This guide is not an authorized publication; it is the continuous build for version 0.2.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/nuts-foundation/nl-generic-functions-ig/ and changes regularly. See the Directory of published versions
This FHIR Implementation Guide specifies the Generic Function Data Localization (GFL), a national initiative led by the Dutch Ministry of Health, Welfare and Sport (VWS). GFL aims to establish a standardized, interoperable system that makes data concerning a specific patient and context findable to data users in a way that complies with the proportionality and subsidiarity principles of the GDPR, enabling reliable and efficient exchange of health data across systems.
Patient data is divided over muliple data holders. In today’s healthcare landscape organizations rely on several different types of indices to find data concerning a specific patient and context. However, none of these indices are complete and all of these indices have different requirements for usage, hindering interoperability and timely access to health information. GFL addresses this challenge by providing a unified framework that ensures a nation-wide index of all data holders concerning a specific patient and context is easily and securely accessible.
This guide outlines the technical requirements and architectural principles underlying GFL, with a focus on trust, authenticity, and data integrity. Key design principles include:
By adhering to these principles, this Implementation Guide supports consistent and secure data holder discovery, fostering improved interoperability within the healthcare ecosystem.
For implementing NVI (Network of Involved Care Providers - see detailed description), we have chosen to use a simple JSON-based REST API instead of FHIR resources. This decision was made to simplify the implementation and reduce complexity while still meeting the core requirements of tracking which organizations have data about a patient in specific care contexts.
The NVI API is defined using OpenAPI 3.0.2 specification (you may render this using swagger.editor.html). The API provides a straightforward interface for managing the network of involved care providers using standard REST operations.
The API manages resources that represent the relationship between:
The API supports the following care contexts (zorgContext), each represented by a SNOMED CT code:
http://snomed.info/sct|721912009
- Medication summary sectionhttp://snomed.info/sct|371530004
- Imaging reporthttp://snomed.info/sct|77465005
- Patient summary documenthttp://snomed.info/sct|721963009
- Immunization summary documenthttp://snomed.info/sct|782671000000103
- Multidisciplinary care managementFHIR Valueset Data localization context
The API supports the following organization types (OrganisatieType):
2.16.840.1.113883.2.4.15.1060|H1
- Huisartsinstelling (General Practitioner)2.16.840.1.113883.2.4.15.1060|V4
- Ziekenhuis (Hospital)2.16.840.1.113883.2.4.15.1060|A1
- Apotheekinstelling (Pharmacy)2.16.840.1.113883.2.4.15.1060|X3
- Verplegings- of verzorgingsinstelling (Nursing/Care Institution)2.16.840.1.113883.2.4.15.1060|L1
- Laboratorium (Laboratory)2.16.840.1.113883.2.4.15.1060|G5
- Geestelijke Gezondheidszorg (Mental Health Care)2.16.840.1.113883.5.1008|OTH
- Overige (Other)FHIR Valueset Organization types
Registers a new care provider relationship in the NVI network.
Request Body:
{
"pseudoBsn": "string",
"zorgContext": "SNOMED_CT_CODE",
"ura": "string",
"organizationType": "ORGANIZATION_TYPE_CODE"
}
Removes a care provider relationship from the NVI network.
Query Parameters:
pseudoBsn
(required): The pseudonymized patient identifierzorgContext
(required): The care context SNOMED CT codeura
(required): The organization identifierorganizationType
(required): The organization type codeReturns HTTP 204 (No Content) on successful deletion.
Queries the NVI network to find which organizations have data for a patient in a specific care context.
Query Parameters:
pseudoBsn
(required): The pseudonymized patient identifierzorgContext
(required): The care context SNOMED CT codeorganizationType
(required): The organization type codeResponse:
{
"datalocations": [
{
"created": "2024-01-01T10:00:00Z",
"pseudoBsn": "string",
"zorgContext": "SNOMED_CT_CODE",
"ura": "string",
"organizationType": "ORGANIZATION_TYPE_CODE"
}
]
}
Returns HTTP 200 (OK) with an array of matching data locations.
The initial implementation uses plain BSN (Burgerservicenummer) for simplicity. In a later stage, this will be replaced with pseudoBsn to enhance patient privacy. The pseudonymization layer will ensure that patient identities are protected while still allowing organizations to coordinate care.
Authentication and authorization follows the GF Authorization specification. The required attributes for NVI API access are:
For PUT operations (registering care provider relationships):
For GET operations (querying the network):
These attributes ensure proper access control and auditing while maintaining the security requirements outlined in the GF Authorization specification.
While this API uses a simple JSON format rather than FHIR, it can still integrate with FHIR-based systems through appropriate adapters or transformation layers. Organizations using FHIR internally can map between their FHIR resources and the NVI API as needed.
Potential future enhancements to the API include:
Scenario: Dr. Smith, a cardiologist at Hospital A, is treating a patient who was recently referred from another hospital. She needs to know what imaging data (X-rays, CT scans, MRIs) might be available from other healthcare providers to avoid unnecessary duplicate examinations and to get a complete picture of the patient's medical history.
Process:
Each registration requires the following authorization attributes:
2.16.840.1.113883.2.4.15.1060|V4
for Hospital, 2.16.840.1.113883.2.4.15.1060|L1
for Laboratory)2.16.840.1.113883.2.4.15.1060|V4
for Hospital)GET /api?pseudoBsn=<patient-id>&zorgContext=http://snomed.info/sct|371530004
Where:
pseudoBsn
: The patient's pseudonymized BSNzorgContext
: SNOMED code for "Imaging report" (371530004){
"datalocations": [
{
"created": "2024-02-20T09:15:00Z",
"pseudoBsn": "<patient-id>",
"zorgContext": "http://snomed.info/sct|371530004",
"ura": "URA-HOSPITAL",
"organizationType": "2.16.840.1.113883.2.4.15.1060|V4"
},
{
"created": "2024-02-25T11:30:00Z",
"pseudoBsn": "<patient-id>",
"zorgContext": "http://snomed.info/sct|371530004",
"ura": "URA-LABORATORY",
"organizationType": "2.16.840.1.113883.2.4.15.1060|L1"
}
]
}
Benefits: