cio:V2.0.0 FHIR CiO: verschil tussen versies

Uit informatiestandaarden
Ga naar: navigatie, zoeken
k (Search parameters)
(Added second transaction)
Regel 230: Regel 230:
  
 
The server returns an HTTP Status code appropriate to the processing outcome and returns a Bundle, with {{fhir|Bundle.type}} = {{term|searchset}}, including the resources matching the search query. The resources included in the Bundle SHALL conform to the profiles listed in the 'List of profiles' below.
 
The server returns an HTTP Status code appropriate to the processing outcome and returns a Bundle, with {{fhir|Bundle.type}} = {{term|searchset}}, including the resources matching the search query. The resources included in the Bundle SHALL conform to the profiles listed in the 'List of profiles' below.
 +
 +
=== List of profiles ===
 +
 +
The table below includes all profiles that are explicitly mentioned in the data set of this transaction, and thus need to be supported.
 +
 +
{| class="wikitable"
 +
! style="font-weight: bold;text-align:left;" | Building block (EN)
 +
! style="font-weight: bold;text-align:left;" | Building block (NL)
 +
! style="font-weight: bold;text-align:left;" | FHIR resource
 +
! style="font-weight: bold;text-align:left;" | FHIR profile
 +
|-
 +
| MedicationContraIndication
 +
| MedicatieContraIndicatie
 +
| Flag
 +
| {{Simplifier|http://nictiz.nl/fhir/StructureDefinition/cio-MedicationContraIndication|nictiz.fhir.nl.r4.cio|pkgVersion=2.0.0-beta.1}}
 +
|-
 +
| Patient
 +
| Patient
 +
| Patient
 +
| {{Simplifier|http://nictiz.nl/fhir/StructureDefinition/nl-core-Patient|nictiz.fhir.nl.r4.nl-core|pkgVersion=0.9.0-beta.1}}
 +
|-
 +
| rowspan="2" | HealthProfessional
 +
| rowspan="2" | Zorgverlener
 +
| PractitionerRole
 +
| {{Simplifier|http://nictiz.nl/fhir/StructureDefinition/nl-core-HealthProfessional-PractitionerRole|nictiz.fhir.nl.r4.nl-core|pkgVersion=0.9.0-beta.1}}
 +
|-
 +
| Practitioner
 +
| {{Simplifier|http://nictiz.nl/fhir/StructureDefinition/nl-core-HealthProfessional-Practitioner|nictiz.fhir.nl.r4.nl-core|pkgVersion=0.9.0-beta.1}}
 +
|-
 +
| HealthcareProvider
 +
| Zorgaanbieder
 +
| Organization
 +
| {{Simplifier|http://nictiz.nl/fhir/StructureDefinition/nl-core-HealthcareProvider-Organization|nictiz.fhir.nl.r4.nl-core|pkgVersion=0.9.0-beta.1}}
 +
|}
 +
 +
== Contraindication (Send/Receive) ==
 +
 +
The send contraindications transaction is used by the client to send contraindications to a server.
 +
 +
{| class="wikitable" "cellpadding="10"
 +
! style="text-align:left;"| '''Transaction group'''
 +
! style="text-align:left;"| '''Transaction'''
 +
! style="text-align:left;"| '''Actor'''
 +
! style="text-align:left;"| '''System role'''
 +
! style="text-align:left;"| '''FHIR CapabilityStatement'''
 +
|-
 +
|style="background-color: white;vertical-align:top;" rowspan="2"|[https://decor.nictiz.nl/pub/medicatieproces/mp-html-20230217T123829/sc-2.16.840.1.113883.2.4.3.11.60.20.77.3.139-2022-06-30T000000.html#_2.16.840.1.113883.2.4.3.11.60.20.77.4.375_20220630000000 Medication data (PUSH)]
 +
|style="background-color: white;vertical-align:top;"|[https://decor.nictiz.nl/pub/medicatieproces/mp-html-20230217T123829/tr-2.16.840.1.113883.2.4.3.11.60.20.77.4.376-2022-06-30T000000.html Sending contraindications]
 +
|style="background-color: white;vertical-align:top;"|Client
 +
|style="background-color: white;vertical-align:top;"|CIO-CIS
 +
|style="background-color: white;vertical-align:top;" rowspan="2"|{{Simplifier|http://nictiz.nl/fhir/CapabilityStatement/cio-ContraIndications.SendReceive|nictiz.fhir.nl.r4.cio|pkgVersion=2.0.0-beta.1|title=CapabilityStatement Send/receive contraindications}}
 +
|-
 +
|style="background-color: white;vertical-align:top;"|Receiving contraindications
 +
|style="background-color: white;vertical-align:top;"|Server
 +
|style="background-color: white;vertical-align:top;"|CIO-CIO
 +
|}
 +
 +
=== Send (request message) ===
 +
 +
Because the data sent in this transaction potentially consists of several building blocks along with supporting resources, a {{term|transaction}} interaction is used.
 +
 +
{{MpFhirSendTransaction}}
 +
 +
The resources included in the Bundle SHALL conform to the profiles listed in the 'List of profiles' below.
 +
 +
=== Receive (response message) ===
 +
 +
{{MpFhirReceiveTransaction}}
  
 
=== List of profiles ===
 
=== List of profiles ===

Versie van 18 apr 2023 om 18:02

Icoon Nictiz Cirkel Informatie Oranje.svg

This FHIR IG is currently under development and can not be considered stable and ready for use. For questions and change requests regarding this IG, please create a ticket in [ BITS].



CiO

1 Introduction

This is the implementation guide (IG) for the information standard CiO (Dutch: Contra-indicaties en overgevoeligheden, English: Contraindications and intolerances), version . The functional specification can be found here and is implemented using HL7 FHIR R4. This implementation guide assumes that the reader is familiar with both the functional specification and this version of FHIR.

Apart from this document, the guidelines as specified in the general FHIR Implementation Guide apply. In particular, the reader should take note of the Overarching principles and the use of FHIR packages. Where the general IG uses the term ‘use case’, this IG follows the functional specification in using the term ‘transaction’ for the various processes that are described. The functional specification uses the term ‘use case’ for more practical examples.

This IG first describes the boundaries and relationships in place, after which the implementation is described per transaction.

2 Boundaries and relationships

2.1 Building blocks and profiles

The exchange of data within the CiO standard version is partly based on the 2020 publication of the Dutch Health and Care Information Models (Dutch: ‘zorginformatiebouwstenen’ or ‘zibs’), and subsequent changes made that are present in the 2022 prepublication. In particular, the prepublication of 2021 saw the introduction of the Hypersensitivity and Reaction zibs which are based on and still have quite some overlap with the zib AllergyIntolerance that already existed. The functional data set of CiO has further built upon the former two zibs (renaming the first as HypersensitivityDisposition), next to the zib MedicationContraIndication. These objects (which are actually exchanged) are referred to as ‘building blocks’ in the data set, and can thus be seen as ‘extended zibs’ suitable for implementation.

Due to new insights, the building blocks HypersensitivityDisposition and Reaction in the functional data set have deviated quite a lot from the zib AllergyIntolerance present in the 2020 publication, making them incompatible in varying degrees from a technical point of view. Therefore it was not possible to implement the FHIR profiles for these building blocks by building on and extending the nl-core profiles based on zib publication 2020. Hence the profiles for these building blocks have been created ‘independently’ from the nl-core profiles, meaning that they are not derived from nl-core-AllergyIntolerance. For the building block MedicationContraIndication on the other hand, the changes made within CiO are quite minimal with respect to its zib 2020 counterpart, making it possible to derive from nl-core-MedicationContraIndication.

Lastly it is important to note that there is still extensive discussion about the exact scope, name and structure of the HypersensitivityDisposition and Reaction building blocks, meaning that the current profiles definitely cannot be considered to be stable and ready for use. To aid in the discussion, two sets of FHIR profiles have been made for these building blocks:

  • The cio-HypersensitivityDispositionReaction profile is created on the AllergyIntolerance resource and closely follows the nl-core-AllergyIntolerance profile corresponding to the zib AllergyIntolerance present in the 2020 publication. However due to incompatibilities (mainly on the level of terminology) it is not actually derived from that profile. The cio-HypersensitivityDispositionReaction profile contains both the HypersensitivityDisposition and Reaction building blocks, which makes sense as the Reaction building block is never exchanged on its own, but always in the context of a certain HypersensitivityDisposition. The main advantage in this profiling approach lies in the fact that it semantically makes the most sense, and the FHIR resource AllergyIntolerance already contains quite a lot of counterparts to the concepts in the functional data set (in particular on the level of the Reaction).
  • The cio-HypersensitivityDisposition and cio-Reaction are created on the Condition and Observation resources, respectively. Using this approach there are less custom extensions necessary to properly map the concepts from the functional data set, and it makes it easier to identify and handle Reactions. The main disadvantages are semantically of nature, for instance the mapping of the SubstanceToMonitor concept (which is a key concept in the HypersensitivityDisposition building block) is not as straightforward, and quite some concepts within the Reaction building block are mapped on Observation.components, while they have a direct counterpart in the other profiling approach.

2.1.1 Main building blocks

As described above, only the MedicationContraIndication building block has a dependency on its zib2020 counterpart. Nevertheless all building blocks have resulted in so-called ‘cio’ profiles.

Building block (EN) Building block (NL) FHIR resource FHIR profile
HypersensitivityDisposition Overgevoeligheid AllergyIntolerance http://nictiz.nl/fhir/StructureDefinition/cio-HypersensitivityDispositionReaction
Reaction Reactie
HypersensitivityDisposition Overgevoeligheid Condition http://nictiz.nl/fhir/StructureDefinition/cio-HypersensitivityDisposition
Reaction Reactie Observation http://nictiz.nl/fhir/StructureDefinition/cio-Reaction
MedicationContraIndication MedicatieContraIndicatie Flag http://nictiz.nl/fhir/StructureDefinition/cio-MedicationContraIndication

2.1.2 Supporting building blocks

Additionally, the standard uses several supporting building blocks referenced from the main building blocks. All supporting building blocks are part of either the ‘nl-core’ or ‘medicationprocess9’ package.

Building block (EN) Building block (NL) FHIR resource FHIR profile
Patient Patient Patient http://nictiz.nl/fhir/StructureDefinition/nl-core-Patient
HealthProfessional Zorgverlener PractitionerRole http://nictiz.nl/fhir/StructureDefinition/nl-core-HealthProfessional-PractitionerRole
Practitioner http://nictiz.nl/fhir/StructureDefinition/nl-core-HealthProfessional-Practitioner
HealthcareProvider Zorgaanbieder Location http://nictiz.nl/fhir/StructureDefinition/nl-core-HealthcareProvider
Organization http://nictiz.nl/fhir/StructureDefinition/nl-core-HealthcareProvider-Organization
MedicationAgreement Medicatieafspraak MedicationRequest http://nictiz.nl/fhir/StructureDefinition/mp-MedicationAgreement
AdministrationAgreement Toedieningsafspraak MedicationDispense http://nictiz.nl/fhir/StructureDefinition/mp-AdministrationAgreement
MedicationDispense Medicatieverstrekking MedicationDispense http://nictiz.nl/fhir/StructureDefinition/mp-MedicationDispense
MedicationUse2 Medicatiegebruik2 MedicationStatement http://nictiz.nl/fhir/StructureDefinition/mp-MedicationUse2

Note the following:

  • Each occurrence of the zib HealthProfessional is normally represented by two FHIR resources: an instance of nl-core-HealthProfessional-PractitionerRole and an instance of nl-core-HealthProfessional-Practitioner. Sending systems should only fill the reference to the PractitionerRole instance where relevant. Receiving systems can resolve the reference to the Practitioner resource from that PractitionerRole instance.
  • The zib HealthcareProvider is mapped to both a Location and Organization profile. In general the Location profile acts as the focal resource, because most references to this zib are concerned about the recording of the physical location where the care to patient/client takes place rather than the organizational information. However, within the main building blocks in CiO the HealthcareProvider is always present as an author, hence a reference to the Organization profile is sufficient in those cases. The Location profile, although not directly referenced from the main building blocks, is mentioned in the table above for completeness purposes (as it is referred to in supporting resources).

2.2 Mappings between profiles and data set

Each transaction starts with links to the functional definition in an ART-DECOR publication and references one or several FHIR profiles. The FHIR profiles contain mappings to all data elements that are present in the functional data set (prefixed with ‘cio-dataelement-20-’).

Each transaction contains a Patient building block with cardinality 1..1 M. This patient is the subject of all other building blocks in the transaction, although no explicit relation exists in the data set. Therefore, a reference to a Patient resource conforming to the nl-core-Patient profile is expected in .subject (or .patient in the case of the AllergyIntolerance resource) of each FHIR instance of each main building block.

Relations between different building blocks exist in transactions by means of concepts with a name starting with ‘Relation…’ (Dutch: ‘Relatie…’) and an underlying concept 'Identification' of data type Identification, for example RelationHypersensitivityDisposition (cio-dataelement-20-734) in building block HypersensitivityDisposition. These relations are mapped to the FHIR data type ‘Reference’. Implementers SHOULD use literal references (using .reference) instead of logical references (using .identifier) where possible, see the general FHIR IG on the Reference data type.

2.3 Patient identification

This implementation guide assumes that the client system is able to make a connection to the right server that contains the patient's information. It does not provide information on finding the right server nor does it provide information about security. Moreover, each transaction is performed in the context of a specific patient, whose context might have been established using the authentication mechanisms described in external specifications such as the MedMij ‘Afsprakenstelsel’ or through the usage of search parameters for patient identification.

Each server is required to perform filtering based on the patient associated with the context for the request or based on the patient identification search parameters, which is a chained search parameter for all resource types except Patient, so only the records associated with the authenticated patient are returned.

When patient identification requires the use of search parameters, the following search parameters SHALL be supported:

  • Patient: identifier
  • AllergyIntolerance: patient.identifier
  • Condition: patient.identifier and subject:Patient.identifier
  • Observation: patient.identifier and subject:Patient.identifier
  • Flag: patient.identifier and subject:Patient.identifier

An example of a request that retrieves all AllergyIntolerance resources of a patient with a fake BSN of 11122233:

GET [base]/AllergyIntolerance?patient.identifier=http://fhir.nl/fhir/NamingSystem/bsn|111222333

All request examples in this document do not include patient identification mechanisms. Requesters are assumed to include these if necessary.

3 Transactions

This section describes the FHIR implementation of all transactions listed in section 2 of the functional specification. Transactions are paired per transaction group. Each subsection below hyperlinks the names of the transaction groups and transactions to the functional definition in an ART-DECOR publication. The ART-DECOR publication details which data elements are expected to be supported (cardinality and conformance) for each transaction. Where the functional specification uses the terms ‘Query’ and ‘Making available’, this IG uses the terms ‘Retrieving’ and ‘Serving’.

3.1 Contraindication (Retrieve/Serve)

The retrieve contraindications transaction is used by the client to retrieve contraindications from a server.

Transaction group Transaction Actor System role FHIR CapabilityStatement
Contraindication (PULL) Retrieving contraindications Client CIO-CIR CapabilityStatement Retrieve/serve contraindications
Serving contraindications Server CIO-CIB

3.1.1 Retrieve (request message)

When a health professional or healthcare provider wants to obtain all contraindications or specific ones matching various parameters, they issue a retrieve contraindications request message. This message uses the HTTP GET method parameterized query against the server's FHIR Flag endpoint.

The search interaction is performed by an HTTP GET conform the FHIR search specification, as shown below. This URL is configurable by the client by configuring the search query.

GET [base]/Flag?category=http://snomed.info/sct|140401000146105{&[additional parameter(s)]}

3.1.1.1 Search parameters

All search parameters listed in the table below SHALL be supported for processing by servers and MAY be supported by clients, with the exception of the category parameter, which SHALL be supported by clients as well (as it is always part of the search query in this transaction).

CiO search parameter Description FHIR search parameter FHIR resource Example
- Search on MedicationContraIndication building blocks. category [1] Flag Retrieves all Flag resources representing a MedicationContraIndication.
GET [base]/Flag?category=http://snomed.info/sct|140401000146105
PatientIdentificationNumber Search on patient. patient.identifier [2] Flag Retrieves all MedicationContraIndication building blocks of a patient with a fake BSN of 11122233.
GET [base]/Flag?category=http://snomed.info/sct|140401000146105&patient.identifier=http://fhir.nl/fhir/NamingSystem/bsn|111222333
ReferenceDate Search on the MedicationContraIndication building blocks that have been registered on or after a certain date. registration-date[1] Flag Retrieves all MedicationContraIndication building blocks that were registered from 01-05-2023.
GET [base]/Flag?category=http://snomed.info/sct|140401000146105&registration-date=ge2023-05-01
- 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 resource referenced by building blocks is required. Others (Organization, PractitionerRole, Practitioner) are optional. However: all resources referenced per literal reference SHALL be resolvable per the Nictiz IG.

_include=[type]:patient Flag Retrieves all MedicationContraIndication building blocks of a patient with a fake BSN of 11122233 and includes the Patient resource in the search results.
GET [base]/Flag?category=http://snomed.info/sct|140401000146105&patient.identifier=http://fhir.nl/fhir/NamingSystem/bsn|111222333&_include=Flag:patient

The following custom search parameters are defined for this transaction:

3.1.2 Serve (response message)

The server returns an HTTP Status code appropriate to the processing outcome and returns a Bundle, with Bundle.type = searchset, including the resources matching the search query. The resources included in the Bundle SHALL conform to the profiles listed in the 'List of profiles' below.

3.1.3 List of profiles

The table below includes all profiles that are explicitly mentioned in the data set of this transaction, and thus need to be supported.

Building block (EN) Building block (NL) FHIR resource FHIR profile
MedicationContraIndication MedicatieContraIndicatie Flag http://nictiz.nl/fhir/StructureDefinition/cio-MedicationContraIndication
Patient Patient Patient http://nictiz.nl/fhir/StructureDefinition/nl-core-Patient
HealthProfessional Zorgverlener PractitionerRole http://nictiz.nl/fhir/StructureDefinition/nl-core-HealthProfessional-PractitionerRole
Practitioner http://nictiz.nl/fhir/StructureDefinition/nl-core-HealthProfessional-Practitioner
HealthcareProvider Zorgaanbieder Organization http://nictiz.nl/fhir/StructureDefinition/nl-core-HealthcareProvider-Organization

3.2 Contraindication (Send/Receive)

The send contraindications transaction is used by the client to send contraindications to a server.

Transaction group Transaction Actor System role FHIR CapabilityStatement
Medication data (PUSH) Sending contraindications Client CIO-CIS CapabilityStatement Send/receive contraindications
Receiving contraindications Server CIO-CIO

3.2.1 Send (request message)

Because the data sent in this transaction potentially consists of several building blocks along with supporting resources, a transaction interaction is used.

A transaction interaction allows for sending a Bundle with a set of resources in a single interaction and makes it possible to include referenced secondary resources. The interaction is performed by an HTTP POST command as shown:

POST [base]

The body of the POST submission is a Bundle with Bundle.type = transaction. Each entry carries request details (Bundle.entry.request) that provides the HTTP method of the action to be executed. Usually, this will be POST, even for informative 'secondary' resources.


The resources included in the Bundle SHALL conform to the profiles listed in the 'List of profiles' below.

3.2.2 Receive (response message)

The server returns an HTTP Status code appropriate to the processing outcome. If the transaction is successful, the server returns a Bundle with Bundle.type = transaction-response, that contains one entry for each entry in the request, in the same order, with the outcome of processing the entry. Included ‘secondary resources’ are handled following the Nictiz IG.

If the transaction fails, the server returns an OperationOutcome with one or multiple .issue elements filled with information, as detailed as possible, that describes why the transaction failed and which resource and/or request caused this.


3.2.3 List of profiles

The table below includes all profiles that are explicitly mentioned in the data set of this transaction, and thus need to be supported.

Building block (EN) Building block (NL) FHIR resource FHIR profile
MedicationContraIndication MedicatieContraIndicatie Flag http://nictiz.nl/fhir/StructureDefinition/cio-MedicationContraIndication
Patient Patient Patient http://nictiz.nl/fhir/StructureDefinition/nl-core-Patient
HealthProfessional Zorgverlener PractitionerRole http://nictiz.nl/fhir/StructureDefinition/nl-core-HealthProfessional-PractitionerRole
Practitioner http://nictiz.nl/fhir/StructureDefinition/nl-core-HealthProfessional-Practitioner
HealthcareProvider Zorgaanbieder Organization http://nictiz.nl/fhir/StructureDefinition/nl-core-HealthcareProvider-Organization

4 Release notes

Release notes can be found on the functional design page.

  1. 1,0 1,1 The search parameter consists of a custom FHIR search parameter not represented in the FHIR specification.
  2. This search parameter only needs to be supported when patient identification requires the use of search parameters, see section 2.3.