Changes in eHealth Infrastructure
Describes changes in eHealth Infrastructure APIs, behavior and use of external systems possibly relevant for Telemedicine Solutions.
- 1 FUT-I Release 2026.2
- 1.1 Breaking Changes
- 1.1.1 Dead privileges
- 1.1.2 Migration of STS-ORG Identifiers
- 1.1.3 Support for patch operations are more strict according to specification (RFC6902)
- 1.1.4 Patch operations in FHIR transactions using FHIRPath syntax are not working for extensions with sub-extensions
- 1.1.5 Response from document-transformation is changed so that bundles are valid according to the FHIR specification
- 1.1 Breaking Changes
- 2 FUT-I Release 2025.3
- 3 FUT-I Release 2024.3
FUT-I Release 2026.2
Breaking Changes
Dead privileges
Among infrastructure service privileges mapped from eHealth Infrastructure system roles (see https://ehealth-dk.atlassian.net/wiki/x/QgBcnQ ), there are dead privileges not checked by any service.
The dead privileges have been removed as well as their mapping from system roles, and mentioning in the documentation on https://ehealth-dk.atlassian.net/wiki/x/QgBcnQ .
Migration of STS-ORG Identifiers
We will base ehealth-organization on the DkCoreOrganization profile, which has additional constraints on identifiers. In order to comply with these constraints, we have to migrate the identifiers for STS-ORG Organizations. The following changes are required:
Migration of identifier.system from
https://www.kombit.dk/sts/organisationtohttps://kombit.dk/sts/organisationMigration of identifier.value, prefix UUID with
urn:uuid:
Support for patch operations are more strict according to specification (RFC6902)
The use of replace operation is now only allowed if the element exists. Previously, it was leniently handled as an add operation. Now the use of add operation is required if the element does not exist.
Patch operations in FHIR transactions using FHIRPath syntax are not working for extensions with sub-extensions
The FHIRPath patch encodes PATCH operations using a Parameters resource. The hapi-fhir implementation in 8.6.5 does not work for patching extensions with sub-extensions. Use JSONPatch syntax instead. To use JSONPatch in a FHIR transaction, the JSONPatch body must be wrapped in a Binary resource. See JSONPatch - transaction.
Response from document-transformation is changed so that bundles are valid according to the FHIR specification
Previously some resources were returned as inline resources using the contained element, now they are returned as proper entries in the bundle. All bundle entries have a fullUrl, and references can be resolved within the bundle. This is a breaking change, if you rely on locating specific resources as contained. The same resources are to be found as entries in the bundle.
Breaking change to regional subcodes (dk.core 3.5.0 → 3.6.0):
The system URI for the dk-core-RegionalSubDivisionCodes extension changed from the Danish-specific HL7 code system http://hl7.dk/fhir/core/CodeSystem/dk-core-regional-subdivision-codes to the standard ISO 3166-2 URN urn:iso:std:iso:3166:-2. Implementations populating this extension must update the system value on the coded value accordingly.
FUT-I Release 2025.3
Change in handling of Patch operations on FHIR resources
A number of microservices in the eHealth Infrastructure have now been upgraded to use version 8.0.0 of HAPI FHIR. As a consequence, additional input validation of PATCH operations is performed. The previous input validation was lenient towards certain input constructs that are now rejected with a somewhat confusing error message. Overall, the PATCH operation input is now required to be in accordance with the FHIR specification on JSON Patch (JSON Patch - RFC-6902: https://datatracker.ietf.org/doc/html/rfc6902 ).
In the table below, [base] refers to the base of the path, for instance https://organization.exttest.sundhed.dk/fhir. The PATCH construct in body could be for a PATCH operation for a specific EpisodeOfCare, for instance PATCH [base]/EpisodeOfCare/2812.
The table provides some examples on how certain constructs are no longer accepted and suggestions to how they can be made acceptable.
Situation | Previously accepted PATCH construct in body | Accepted PATCH construct in body |
|---|---|---|
Adding a CareTeam to the | [ {"op":"add", "path":"/team/-", "value":[{"reference":[base]/CareTeam/87725}] }] This now leads to error HTTP 422 Unprocessable Entity: The property team must be an Array, not an Array (at EpisodeOfCare.team[1]). | [ {"op":"add", "path":"/team/-", "value":{"reference":[base]/CareTeam/87725} }] Note that the array for the value has been removed. |
Removing a CareTeam reference from the | Remove all (two) references to CareTeam(s): [{"op":"remove","path":"/team/1"}] [{"op":"remove","path":"/team/0"}] This now leads to HTTP 422 Unprocessable Entity: Array cannot be empty - the property should not be present if it has no values. | When removing the last CareTeam, the list element must be removed: [{"op":"remove","path":"/team/1"}] [{"op":"remove","path":"/team"}] |
Replacing a CareTeam reference with multiple new ones in the | [{ "op": "replace", "path": "/team/0", "value": [{ "reference": [base]/CareTeam/48924 }, { "reference": [base]/CareTeam/23064 }] }] This now leads to error HTTP 422 Unprocessable Entity: The property team must be an Array, not an Array (at EpisodeOfCare.team[0]). | [{ "op": "replace", "path": "/team/0", "value": { "reference": [base]/CareTeam/48924 } },{ "op": "add", "path": "/team/1", "value": { "reference": [base]/CareTeam/23064 } }] |
FUT-I Release 2024.3
Changes in the Administrative Domain:
Clinical Administrative Application (and plan service) now supports decision per activity in plan whether to offer activity as extra activity
Clinical Administrative Application now supports importing and exporting of plans (PlanDefinition and referenced resources)
FHIR Organization in the organization service now supports discerning between primary and non-primary specialties
Changes in the Clinical Domain:
$applyoperation: Decision on extra activity (see above) is inherited to ServiceRequest and can be adjusted as needed$get-patient-proceduresoperation: Whenextraargument is true, extra activity is included in output whenServiceRequest.includeAsExtrais true for ServiceRequest in scope$search-measurements-bundle-limitoperation: New operation which is a variant on$search-measurements. Returns at most input argumentcountnumber of time slots worth of measurements.
Changes in use of external systems:
Import of organizational data from the National Health Organization Registry (Danish: Sundhedsvæsenets Organisationsregister, SOR) observed primary specialty markup in SOR
Document registering to national XDS-based document sharing infrastructure now has a preference for primary organizational specialty