FHIR Lab2zorg V2.0.0
This article or section is in the middle of an expansion or major restructuring and is not yet ready for use. |
1 Introduction
This page describes the technical design of Lab2Zorg (Lab2Healthcare) as a subset of the Information standard lab exchange. This technical specification is implementer centric and complements the functional design. This page uses various terms as defined in the glossary (NL: Begrippenlijst). This page implements general principles applicable to FHIR as outlined by a central FHIR IG for R4. Please make sure you familiarize yourself with both the functional design and the FHIR IG for full appreciation of the context of this page.
Many laboratory results have important relationships to other observations and need to be grouped together. The FHIR specification defines several structures to do this:
Observation
and one or moreObservation.hasMember
elements.- Each
.hasMember
element references another Observation and the Observation with.hasMember
elements thus serves as grouper for all Observation it references. Each Observation can be accessed individually. This is useful for panels and/or batteries of tests. This is what NL-CM:13.1.3 LaboratoryTest maps into. - Note that while FHIR Observation also allows reference of resource types MolecularSequence | QuestionnaireResponse, there is no identified use case for that at time of writing.
- An Observation without
.hasMember
elements is expected to be an individual result and has a value when one can be/is determined.
- Each
Observation
and one or moreObservation.derivedFrom
elements.- Each
.derivedFrom
element references another Observation references related measurements the observation is made from. This is what NL-CM:13.1.33 RelatedResult::LaboratoryTestResult maps into. - Note that while FHIR Observation also allows reference of resource types DocumentReference | ImagingStudy | Media | QuestionnaireResponse | MolecularSequence, there is no identified use case for those at time of writing.
- Each
Observation
and one or moreObservation.component
elements.- components of an Observation are not accessible individually. Whenever you access the Observation, you also access all its components. This is mostly useful when certain context is provided around the result. For lab observations this is expected to be less common. An example outside of the lab realm could be BloodPressure where systolic, diastolic, and cuff size are all in 1 Observation with 3 components.
This FHIR implementation guide assumes that systems (XIS) are able to make a connection to the right systems. It does not provide information on finding the right XIS nor does it provide information about security including authentication and authorization. Finding the right system, and security aspects of the connection are dealt with by the infrastructure. Any relevant infrastructure is expected to have a framework in place to deal with this. The only assumption/requirement for an infrastructure is that this allows RESTful FHIR based exchange as specified here.
2 Actors involved
Persons | Systems | FHIR Capability Statements | |||
---|---|---|---|---|---|
Name | Description | Name | Description | Name | Description |
Lab Professional | The user of a LIS | LIS | Laboratory information system | CapabilityStatement: Lab Server | Lab2Healthcare LIS server requirements |
Healthcare professional | The user of a XIS | XIS | (Any) Healthcare information system | CapabilityStatement: XIS Client | Lab2Healthcare XIS client requirements |
CapabilityStatement: XIS Server | Lab2Healthcare XIS server requirements |
3 Use case: Health professional retrieves lab results
3.1 Introduction
Healthcare professionals need to be able to retrieve laboratory results directly from a LIS of XIS.
3.2 Actors
Transaction group | Transaction | Actor | Role |
---|---|---|---|
Retrieve laboratory results(PULL) | Retrieve laboratory results request | Labspecialist (using an LIS) | Send laboratory results to a XIS |
Healthcare professional (using an XIS) | Send laboratory results to another XIS | ||
Retrieve laboratory results response | Healthcare professional (using an XIS) | Receive laboratory results from a LIS or another XIS |
3.3 Invocations
3.3.1 XIS: request message
The request message represents an HTTP GET parameterized query from the XIS to the XIS/ LIS.
3.3.1.1 Trigger events
When the healthcare professional wants to obtain laboratory results, it issues a retrieve laboratory request message.
3.3.1.2 Message semantics
The XIS executes an HTTP GET conform to the FHIR RESTful and search specification against the XIS/LIS's Observation endpoint. This search query URL is configurable by the XIS and has the following format:
GET [base]/Observation?category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory{&include}&patient.identifier=[namespace]|[identifier]{&[parameters]}{&_include=[reference]
example
GET [base]/Observation?category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory&patient.identifier=http://fhir.nl/fhir/NamingSystem/bsn|111222333&code=http://loinc.org|14683-7
Query parameters
patient
, code
and date
3.3.1.2.1 Expected actions
The XIS/LIS SHALL process the query to retrieve patient's (Laboratory results / Observation resources) and the included referenced resources.
3.3.2 XIS/LIS: response message
The XIS/LIS returns an HTTP Status code appropriate to the processing as well as a FHIR Bundle including the matching information.
3.3.2.1 Trigger events
The XIS/LIS completed the processing of the retrieve vaccinations request message.
3.3.2.2 Message semantics
The returned data to the XIS should conform to the profiles listed in the table below. The resources in the response message SHALL be a valid instance of these profiles. All resources SHALL include their related profile canonical URL in the .meta.profile
element in order to show compliance.
FHIR Profiles | FHIR Resources | Based on zib (NL) | Based on zib (EN) |
nl-core-LaboratoryTestResult | Observation | LaboratoriumTest | LaboratoryTest |
LaboratoriumUitslag | TestResult | ||
nl-core-LaboratoryTestResult.Specimen | Specimen | Monster | Specimen |
nl-core-HealthProfessional-Practitioner | Practitioner | Zorgverlener | HealthProfessional |
nl-core-HealthProfessional-PractitionerRole | PractionerRole | ||
nl-core-HealthcareProvider-Organization | Organization | Zorgaanbieder | HealthcareProvider |
nl-core-HealthcareProvider | Location |
3.3.2.3 Expected actions
The XIS SHALL process the results. The XIS SHOULD contain all the resources that match the query and all the reference resources that are included in the Bundle.
4 Use case: Health professional sends lab results to other health professional
The functional design distinguishes two use cases where lab results may be sent with something else or separate. The process of 'sending' things in FHIR works by means of a RESTful 'create' action. You could create a single Observation on another system using POST Observation
and the appropriate Observation in the request body. When you have multiple Observations to create, you could do that for every single Observation, or by means of a Bundle with all resources. This same Bundle approach works for one Observation too.
The added benefit from a Bundle lies in having a solution for all other resources you may want to send, e.g. MedicationRequest, and referenced resources, e.g. Patient and PractitionerRole | Practitioner | Organization. Sending the Observation without the things it references would only work if the receiving server can resolve those. They should then already exist on that server, with references to them or they should be accessible on the source. Without access to the references in the Observation, the target server may not know which patient is involved or what lab this result came from.
4.1 Actors
Transaction group | Transaction | Actor | Role |
---|---|---|---|
Send Laboratory Results(PUSH) | Send laboratory results | Healthcare professional (using an XIS) | Send laboratory results to another XIS |
Send laboratory results | Healthcare professional (using an XIS) | Receive laboratory results from another XIS |
4.2 Invocations
4.2.1 XIS: request message
The send lab results request message uses the HTTP POST method on the target XIS's base. Note that lab results may or may not be sent in tandem with other resources like MedicationRequest. The same principles apply with or without these other resources. The server can only process the incoming request correctly if it understands what is being sent which includes being able to resolve references.
4.2.1.1 Trigger Events
This message is invoked when the XIS needs to send one or more lab results observations to another XIS.
4.2.1.2 Message Semantics
Because sending laboratory results will most likely consist of multiple Observations, a batch
operation is used. This allows for creating a set of resources in a single interaction and makes it possible to include referenced secondary resources if needed.
A batch interaction is performed by an HTTP POST command as shown:
POST [base]
The body of the post submission is a Bundle with Bundle.type
=batch. Each entry carries request details (Bundle.entry.request
) that provides the HTTP details of the action in order to inform the system processing the batch or what to do for the entry. (Note: .request
SHALL be present, even for the resources which aren't Observations. See the overarching principles for more information.)
Identification:
Sending systems SHALL have a stable identifier in the .identifier
element for all Observation resources. Having stable identification is essential in detection of duplicates and potential clinical decision making issues deriving from duplicates. For more information on dealing with identifiers, see the general FHIR IG.
Links:
The laboratory result data sent to the XIS SHALL conform to the matching LaboratoryResult based profile. The table below lists profiles that represent applicable zibs for laboratory result information exchange.
MedMij uses the FHIR Packaging mechanism. This conveniently bundles all profiles, terminology, example material and other conformance resources you need into a single archive, which can be downloaded or installed using the appropriate FHIR tooling. This version of the information standard uses the following packages:
Note: packages use Semantic Versioning. Other versions can be used at will as long as they have the same major.minor number or a minor number higher than the stated version. |
FHIR Profiles | FHIR Resources | Based on zib (NL) | Based on zib (EN) |
nl-core-Patient | Patiënt | Patient (M) | Patient |
nl-core-HealthProfessional-Practitioner nl-core-HealthProfessional-PractitionerRole |
Practitioner | Zorgverlener (M) | HealthProfessional |
nl-core-laboratorytest | Observation | LaboratoriumUitslag(M) | LaboratoryTestResult |
4.2.1.2.1 Expected Actions
On receipt of the submission, the XIS SHALL:
- process creation of all Observation resources successfully or process no Observation
- match Patient, Practitioner(Role), Organization to pre-existing resources on that server
- The server MAY update pre-existing information with the incoming information
- The server MAY keep its pre-existing matching resources as-is
- The server SHALL create new resources if no matching resource is found (unknown patient, new physician in otherwise known organization, etc.)
- decide if any available Specimen resources are relevant
- If the server decides to ignore Specimen information, it SHALL not keep the
Observation.specimen
reference
- If the server decides to ignore Specimen information, it SHALL not keep the
- respond using HTTP 200 and a Bundle with detail in case of success. See FHIR IG Handling Errors for response options in case of errors
- Note that the response Bundle with type batch-response SHALL be specific about how the server handled the request Bundle.
4.2.2 XIS: response message
The XIS returns an HTTP Status code appropriate to the processing outcome and returns a Bundle, of type batch-response, that contains one entry for each entry in the request, in the same order, with the outcome of processing the entry.
4.2.2.1 Trigger Events
The XIS completed processing of the send laboratory results request message.
4.2.2.2 Message Semantics
The XIS SHALL return a Bundle with type set to batch-response that contains one entry for each entry in the request, in the same order, with the outcome of processing the entry.
A client may use the returned Bundle to track the outcomes of processing the entry, and the identities assigned to the resources by the server. Each entry element SHALL contain a response element which details the outcome of processing the entry - the HTTP status code, and the location and ETag header values, which are used for identifying and versioning the resources. In addition, a resource may be included in the entry, as specified by the Prefer header.
4.2.2.3 Expected Actions
The XIS server processes the results according to application-defined rules.
4.2.2.4 Handling Errors
The server may be unable to accept a Bundle due to errors or because of business rules (e.g. because of an unsupported code value in an Observation resource). Refer to the [FHIR:Vdraft_FHIR_IG_R4#Handling_errors#Handling_errors Handling Errors section] in the FHIR IG for more information.
5 Use case: Health professional reports result leading into a notification "new lab results" for subscribed healthcare professional(s)
DO