Technical Design Lab2patient V1.0.0-beta.1
|
|
This IG is currently under development and can not be considered stable and ready for use. |
For an overview of all current documentation see information standard lab exchange main page
Inhoud
1 Introduction
This is the technical design (TO) for the information standard (IS) Lab2patient. This TO must be used together with the IS functional design, see functional design Lab2patient 1.0.0-beta.1. The data exchange format used in this version is: FHIR R4.
1.1 Support
For questions, feedback, or change requests, please contact our support team at Nictiz Servicemanagement.
1.2 Boundaries
This information standard may overlap with other standards related to identification, roles, and geographic classifications, requiring careful alignment to ensure consistency and avoid duplication. For more information, see functional design Lab2patient 1.0.0-beta.1.
1.3 Prerequisite knowledge
The following background information is required for understanding this TO:
- The functional design Lab2patient 1.0.0-beta.1 accompanying this TO.
- The data exchange format FHIR R4, which you can find here:
2 Relationships
Example: Geboortezorg Relationships chapter
3 Components
HL7 FHIR is used to accommodate the Dutch Clinical Information Models (zibs) used in the IS.
3.1 HL7 FHIR R4
|
Nictiz 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. |
3.1.1 Artifacts
The artifacts of the information standard are presented in the following table:
| zib | FHIR resource | FHIR profile |
|---|---|---|
| HealthcareProvider | Organization | nl-core-HealthcareProvider-Organization |
| HealthProfessional | Practitioner | nl-core-HealthProfessional-Practitioner |
| PractitionerRole | nl-core-HealthProfessional-PractitionerRole | |
| LaboratoryTestResult | Device | nl-core-LaboratoryTestResult.Specimen.Source |
| Observation | nl-core-LaboratoryTestResult | |
| Specimen | nl-core-LaboratoryTestResult.Specimen | |
| Patient | Patient | nl-core-Patient |
| DiagnosticReport | lu-LaboratoryTestResult-DiagnosticReport | |
| ServiceRequest | lu-OrderData |
3.1.2 Examples of FHIR instances
You can find examples of FHIR-instances (filled-in FHIR profiles) in the Nictiz GitHub repository: Lab exchange Testscripts repository.
4 Transactions
4.1 <Use case 1>
4.1.1 Involved actors
| Transaction group | Transaction | Actor | System role code | FHIR CapabilityStatement |
|---|---|---|---|---|
| <Transaction group name> | <Transaction 1> | <Actor 1> | <SRC 1> | <FCSN link 1> |
| <Transaction 2> | <Actor 2> | <SRC 2> | <FCSN link 2> |
4.1.2 Search parameters
| FHIR Search Parameter | Description | FHIR Resource | Example |
|---|---|---|---|
| <Functional building block 1> | |||
| <FHIR Search Parameter 1> | <Description of FHIR Search Parameter 1> | <FHIR Resource 1> | <HTTP Method> [base]/<FHIR resource>?_include=<FHIR resource>:<Search parameters> |
| <Functional building block 2> | |||
| <FHIR Search Parameter 2> | <Description of FHIR Search Parameter 2> | <FHIR Resource 2> | <HTTP Method> [base]/<FHIR resource>?_include=<FHIR resource>:<Search parameters> |
| <Functional building block 3> | |||
| <FHIR Search Parameter 3> | <Description of FHIR Search Parameter 3> | <FHIR Resource 3> | <HTTP Method> [base]/<FHIR resource>?_include=<FHIR resource>:<Search parameters> |
5 Actors involved
| Actors | Systems | FHIR CapabilityStatements | |||
|---|---|---|---|---|---|
| Name | Description | Name | Description | Name | Description |
| Patient | The user of a personal healthcare environment. | PHR | Personal health record | CapabilityStatement: Lab2Healthcare-Results-RetrieveServe | Retrieve [LAB-LRR-PGO]/serve [LAB-LRB-PGO] lab results requirements. |
| Lab Professional | The user of a LIS | LIS | Laboratory information system | ||
6 Use cases
6.1 Patient retrieves laboratory results in their PGO
6.1.1 Introduction
This FHIR Implementation Guide assumes that the PHR system is able to make a connection to the right LIS that contains the patient's information. It does not provide information on finding the right LIS nor does it provide information about security. Moreover, each transaction is performed in the context of a specific authenticated patient, for whose context (token) has been established using the authentication mechanisms described in the 'Afsprakenstelsel'. Each XIS Gateway 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. For this reason, search parameters should not be included for patient identification.
6.1.2 Actors
| Transaction group | Transaction | Actor | Role |
|---|---|---|---|
| Retrieve laboratory results (PULL) | Retrieve laboratory results request | LaboratoriumresultaatResultaatRaadplegend Systeem [LAB-LRR-PGO] | Send a query to the LAB-LRB-PGO to retrieve lab results |
| Retrieve laboratory results response | LaboratoriumresultaatResultaatBeschikbaarstellend Systeem [LAB-LRB-PGO] | Respond to a query from the LAB-LRR-PGO to retrieve lab results |
6.1.3 Invocations
6.1.3.1 LAB-LRR-PGO: request message
The request message represents an HTTP GET parameterized query from the PHR (LAB-LRR-PGO) to the LIS (LAB-LRB-PGO).
6.1.3.1.1 Trigger events
When the PHR wants to obtain laboratory results, it issues a retrieve laboratory results request message.
6.1.3.1.2 Message semantics
The PHR (LAB-LRR-PGO) executes an HTTP GET conforming to the FHIR RESTful and search specification against the LIS's Observation endpoint. Laboratory results are all under the .category observation, using query parameter category as token.
Basic query syntax
GET [base]/Observation?category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory
Examples
Parameter values have not been uri escaped in these examples for readability. This is likely necessary in practice.
| Get all lab results of type 14683-7 (LOINC) |
|---|
GET [base]/Observation?category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory&code=http://loinc.org|14683-7 |
| Get all lab results of type 14683-7 (LOINC) since March 12, 2022 |
|---|
GET [base]/Observation?category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory&code=http://loinc.org|14683-7&date=gt2022-03-12 |
| Get all lab results of type 14683-7 (LOINC) since March 12, 2022 but before June 7, 2022 |
|---|
GET [base]/Observation?category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory&code=http://loinc.org|14683-7&date=gt2022-03-12&date=lt2022-06-07 |
| Get all lab results of type 14683-7 (LOINC) and/or 3583 (NHG) |
|---|
GET [base]/Observation?category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory&code=http://loinc.org|14683-7,https://referentiemodel.nhg.org/tabellen/nhg-tabel-45-diagnostische-bepalingen|3583 |
| Get latest lab result of type 14683-7 (LOINC) |
|---|
GET [base]/Observation/$lastn?category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory&code=http://loinc.org|14683-7 |
| Get latest 5 lab results of type 14683-7 (LOINC) |
|---|
GET [base]/Observation/$lastn?max=5&category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory&code=http://loinc.org|14683-7 |
| Get latest lab result of any type |
|---|
GET [base]/Observation/$lastn?category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory |
6.1.3.1.2.1 Expected actions
The LIS (LAB-LRB-PGO) SHALL process the query to retrieve laboratory results.
6.1.3.2 LAB-LRB-PGO: response message
The LIS (LAB-LRB-PGO) returns an HTTP Status code appropriate to the processing as well as a FHIR Bundle including the matching information. Refer to the generic FHIR IG for more information on handling errors and status codes. Not finding a match based on stated parameters does not constitute an error.
6.1.3.2.1 Trigger events
The LIS (LAB-LRB-PGO) completed the processing of the retrieve laboratory results request message.
6.1.3.2.2 Message semantics
The LIS (LAB-LRB-PGO) SHALL process the request and, unless an error is found, respond with a Bundle resource of type searchset. Each Observation matching the request SHALL be marked with .entry.search.mode=match. Each otherwise included resource SHALL be marked with .entry.search.mode=include. If the searchset bundle contains less matching resources than the actual total set, then:
- the
Bundle.linkthat holds the self link, SHOULD include the_countparameter to inform the client of what max was applied - an OperationOutcome SHOULD be included marked with
.entry.search.mode=outcome.
The resources in the response Bundle SHALL be a valid instance of their stated profile. All resources SHALL include their related profile canonical URL in the .meta.profile element in order to show compliance. The exception is the OperationOutcome resource for which there is no profile in this specification.
Example searchset Bundle
| XML contents for searchset Bundle |
|---|
<Bundle xmlns="http://hl7.org/fhir">
<id value="1"/>
<type value="searchset"/>
<total value="3"/>
<link>
<relation value="self"/>
<url value="http://example.org/fhir?category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory&patient:identifier=http://fhir.nl/fhir/NamingSystem/bsn|111222333&code=http://loinc.org|14683-7"/>
</link>
<entry>
<fullUrl value="https://example.org/fhir/Observation/1"/>
<resource>
<Observation>
<!-- -->
</Observation>
</resource>
<search>
<mode value="match"/>
</search>
</entry>
<entry>
<fullUrl value="https://example.org/fhir/Observation/2"/>
<resource>
<Observation>
<!-- -->
</Observation>
</resource>
<search>
<mode value="match"/>
</search>
</entry>
<entry>
<fullUrl value="https://example.org/fhir/Observation/3"/>
<resource>
<resource>
<Observation>
<!-- -->
</Observation>
</resource>
</resource>
<search>
<mode value="match"/>
</search>
</entry>
<entry>
<fullUrl value="https://example.org/fhir/Specimen/1"/>
<resource>
<Specimen>
<!-- -->
</Specimen>
</resource>
<search>
<mode value="include"/>
</search>
</entry>
<entry>
<fullUrl value="https://example.org/fhir/Patient/1"/>
<resource>
<Patient>
<!-- -->
</Patient>
</resource>
<search>
<mode value="include"/>
</search>
</entry>
<entry>
<fullUrl value="https://example.org/fhir/Organization/1"/>
<resource>
<Organization>
<!-- -->
</Organization>
</resource>
<search>
<mode value="include"/>
</search>
</entry>
</Bundle>
|
Example OperationOutcome
| XML contents for OperationOutcome |
|---|
<OperationOutcome xmlns="http://hl7.org/fhir">
<id value="size-exceeded-1"/>
<issue>
<severity value="warning"/>
<code value="too-costly"/>
<details>
<text value="Resultaat was 3000, wat meer is dan het maximum van 1000"/>
</details>
</issue>
</OperationOutcome>
|
6.1.3.2.3 LAB-LRB-PGO: Expected actions
The LIS (LAB-LRB-PGO) SHALL process the response Bundle in accordance with the intentions of the trigger event that caused the retrieve. Actions may include discrete rendering on screen or in context with other information, triggering alerts on trends, ordering of (other) tests and more.