Send LaboratoryTestResults

WARNING This page should be considered draft and as a proposal for sending LaboratoryTestResults using FHIR conformant interactions. Implementer feedback is welcome on in the Simplifier issue tracker.

Introduction

This page holds the technical specification of the use case: Send LaboratoryTestResults.

Security considerations

This guide assumes that client and servers are able to make a secure connection. 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 authenticated/authorized patient, for whose context (token) has been established using authentication mechanisms described elsewhere. Each actor is required to perform filtering based on the patient associated with the context for the request, so only the records associated with the authenticated patient are returned.

Provider: LaboratoryTestResults request

Because LaboratoryTestResults data consists of several building blocks along with supporting resources, a Bundle resource is used for sending a set of resources in a single interaction. This allows to include referenced secondary resources too. The interaction is performed by an HTTP POST command as shown:

POST [fhir base url]/Bundle

The body of the POST submission is a Bundle that has Bundle.type = document and contains a globally unique Bundle.identifier for this instance of LaboratoryTestResult message and is never re-used. The first Bundle.entry is the LaboratoryTestResult-Composistion. At least the Patient and one or more LaboratoryTestResult resources are expected. The Provider SHALL guarantee consistency of all FHIR resource elements with the requirements specified in the #FHIR profiles.

FHIR profiles

Name Resource Cardinality Based on CBB
LaboratoryTestResult-Composition Composition 1..1 -
LaboratoryTestResult Observation 1..* LaboratoryTestResult
LaboratoryTestResult.Specimen Specimen 0..* ^
LaboratoryTestResult.Specimen.Source Device 0..* ^
LaboratoryTestResult.Requester ServiceRequest 0..* ^
Patient Patient 1..1 Patient
HealthProfessional-Practitioner Practitioner 0..* HealthProfessional
HealthProfessional-PractitionerRole PractitionerRole 0..* ^
HealthcareOrganization Location 0..* HealthcareOrganization
HealthcareOrganization-Organization Organization 0..* ^

Grouping of observations using Observation resources

The CBB LaboratoryTestResult captures both singular laboratory tests and panels/clusters of multiple related tests requested together (e.g., blood gases and EBV serology). The LaboratoryTestResult profile provides guidance on how to populate the Observation resource. All Observation resources of panels/clusters SHALL be included in the LaboratoryTestResult Bundle.

Resource references

The Provider system SHALL produce a complete Bundle containing not only the resources listed directly in the LaboratoryTestResult resources, but all the indirectly referenced resources as well. This should prevent the receiving system to resolve references at the sending system. The CBB implementation guide provides additional guidance on the use of reference datatype.

Identification

Resources SHALL have a stable identifier in the .identifier element for all resources if such an identifier exists in the underlying data. Not all data, like individual results, are currently known to have identifiers in all source systems, but when they exist they are essential and where they do not exist yet they SHOULD be considered. Having stable identification is essential in detection of duplicates. For more information on dealing with identifiers, see the CBB implementation guide.

Examples

Examples that contain a single LaboratoryTestResult. The second and third examples have the same information but demonstrate two different approaches of populating .fullUrl, resource.id and references.

Examples from HL7 BE Laboratory Implementation Guide that are adjusted to align with the CBBs profiles by, for example, removing not defined resources such as the DiagnosticReport. More information can be found in the Boundaries and Relationships page. Below are examples of:

Consumer: LaboratoryTestResults response

The Consumer response shall be sent when a success or error condition needs to be communicated. Success is only indicated once the Bundle and accompanying resources are received and completely processed and persisted as appropriate to the Consumer configuration. The Consumer returns an HTTP Status code appropriate to the processing outcome.

Capability Statements