Lab:V1.0 FHIR Lab2Patient: verschil tussen versies

Uit informatiestandaarden
Ga naar: navigatie, zoeken
(eerste poging)
k (Examples of FHIR instances: link fix)
 
(21 tussenliggende versies door 2 gebruikers niet weergegeven)
Regel 1: Regel 1:
{{Vdraft/InformationBox|This IG is currently under development and can not be considered stable and ready for use.}}
+
<!--__NOINDEX__-->
  
 
{{DISPLAYTITLE:Technical Design Lab2patient V1.0.0-beta.1}}
 
{{DISPLAYTITLE:Technical Design Lab2patient V1.0.0-beta.1}}
Regel 36: Regel 36:
 
== Relationships ==
 
== Relationships ==
  
<div style="background-color:aliceblue;padding:5px;">
+
The diagram below shows the relationships between different FHIR profiles. The arrows indicate an “is referenced in” relationship.
'''Example:''' [https://informatiestandaarden.nictiz.nl/wiki/Gebz:V1.3_FHIR_IG#A_high_level_overview Geboortezorg Relationships chapter]
+
 
</div>
+
For example, Patient → Laboratory Test means that the Patient is referenced within the Laboratory Test resource.
 +
 
 +
[[Bestand:FHIR-model-overview-L2P.png]]
  
 
==Components==
 
==Components==
Regel 101: Regel 103:
  
 
==== Examples of FHIR instances ====
 
==== Examples of FHIR instances ====
You can find examples of FHIR-instances (filled-in FHIR profiles) in the Nictiz GitHub repository: [https://github.com/Nictiz/Nictiz-testscripts/blob/main/src/LaboratoryResults-3-0 <nowiki>Lab exchange Testscripts repository</nowiki>].
+
You can find examples of FHIR-instances (filled-in FHIR profiles) in the Nictiz GitHub repository: [https://github.com/Nictiz/HL7-mappings/tree/master/ada_2_fhir-r4/lab/l2p-1.0.0 <nowiki>Lab exchange HL7-mappings repository</nowiki>].
  
 
== Transactions ==
 
== Transactions ==
=== <Use case 1> ===
+
=== Patient retrieves laboratory results in their PGO ===
 
==== Involved actors ====
 
==== Involved actors ====
 
{| style="text-align: left;" cellpadding=5px;
 
{| style="text-align: left;" cellpadding=5px;
  
 
|- style="color: white; background-color: #e7844b;"
 
|- style="color: white; background-color: #e7844b;"
! Transaction group || Transaction || Actor || System role code || FHIR CapabilityStatement
+
! Transaction group || Transaction || Actor || System role code
  
 
|- style="background-color: #fcf0e9;"
 
|- style="background-color: #fcf0e9;"
| rowspan="2" | <Transaction group name>
+
| rowspan="2" | Retrieve laboratory results (PULL)
| <Transaction 1> || <Actor 1> || <SRC 1> || <FCSN link 1>
+
| Retrieve laboratory results request || Client || LAB-LRR-PGO
  
 
|- style="background-color: #fcf0e9;"
 
|- style="background-color: #fcf0e9;"
| <Transaction 2> || <Actor 2> || <SRC 2> || <FCSN link 2>
+
| Retrieve laboratory results response || Server || LAB-LRB-PGO
  
|+ style="align: bottom; caption-side: bottom; text-align: left;" | ''Abbreviations: SRC = system role code, FCSN = FHIR CapabilityStatement Name.''
+
|+ style="align: bottom; caption-side: bottom; text-align: left;" | ''Abbreviations: LAB = Laboratorium, LRR = Laboratoriumresultaat raadplegend (systeem), LRB = Laboratoriumresultaat beschikbaarstellend (systeem), PGO = Persoonlijke gezondheidsomgeving.''
 
|}
 
|}
  
Regel 127: Regel 129:
  
 
|- style="color: white; background-color: #eda778;"
 
|- style="color: white; background-color: #eda778;"
! colspan="4"  | <Functional building block 1>
+
! colspan="4"  | Retrieve laboratory results (Observation search)
  
 
|- style="background-color: #fcf0e9;"
 
|- style="background-color: #fcf0e9;"
| <FHIR Search Parameter 1> || <Description of FHIR Search Parameter 1> || <FHIR Resource 1> || <pre> <HTTP Method> [base]/<FHIR resource>?_include=<FHIR resource>:<Search parameters> </pre>
+
| category || Restrict search to laboratory observations || Observation || <pre>GET [base]/Observation?category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory</pre>
  
|- style="color: white; background-color: #eda778;"
+
|- style="background-color: #fcf0e9;"
! colspan="4" | <Functional building block 2>
+
| code || Filter by laboratory test code (LOINC/NHG) || Observation || <pre>GET [base]/Observation?category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory&code=http://loinc.org|14683-7</pre>
  
 
|- style="background-color: #fcf0e9;"
 
|- style="background-color: #fcf0e9;"
| <FHIR Search Parameter 2> || <Description of FHIR Search Parameter 2> || <FHIR Resource 2> || <pre> <HTTP Method> [base]/<FHIR resource>?_include=<FHIR resource>:<Search parameters> </pre>
+
| date || Filter results based on observation date || Observation || <pre>GET [base]/Observation?category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory&date=gt2022-03-12&date=lt2022-06-07</pre>
  
 
|- style="color: white; background-color: #eda778;"
 
|- style="color: white; background-color: #eda778;"
! colspan="4" | <Functional building block 3>
+
! colspan="4" | Retrieve latest laboratory results ($lastn operation)
  
 
|- style="background-color: #fcf0e9;"
 
|- style="background-color: #fcf0e9;"
| <FHIR Search Parameter 3> || <Description of FHIR Search Parameter 3> || <FHIR Resource 3> || <pre> <HTTP Method> [base]/<FHIR resource>?_include=<FHIR resource>:<Search parameters> </pre>
+
| $lastn || Retrieve most recent lab results using the $lastn operation || Observation || <pre>GET [base]/Observation/$lastn?max=5&category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory&code=http://loinc.org|14683-7</pre>
  
|+ style="align: bottom; caption-side: bottom; text-align: left;" | ''Use this caption for extra notes, abbreviations, etc.''
+
|- style="color: white; background-color: #eda778;"
|}
+
! colspan="4" | Retrieve related resources
  
=Actors involved=
+
|- style="background-color: #fcf0e9;"
{| class="wikitable"
+
| _include || Include linked resources (Specimen, Patient, Organization) in the response bundle || Observation || <pre>GET [base]/Observation?category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory&_include=Observation:specimen&_include=Observation:patient&_include=Observation:performer</pre>
! colspan="2" style="text-align:left;font-weight: bold;" | Actors
 
! colspan="2" style="text-align:left;font-weight: bold;" | Systems
 
! colspan="2" style="text-align:left;font-weight: bold;" | FHIR CapabilityStatements
 
|-
 
! style="text-align:left;" |Name
 
! style="text-align:left;" |Description
 
! style="text-align:left;" |Name
 
! style="text-align:left;" |Description
 
! style="text-align:left;" |Name
 
! style="text-align:left;" |Description
 
|-
 
| Patient
 
| The user of a personal healthcare environment.
 
| PHR
 
| Personal health record
 
| rowspan="2" | {{Simplifier|http://nictiz.nl/fhir/CapabilityStatement/Lab2Healthcare-Results-RetrieveServe|nictiz.fhir.nl.r4.labexchange|pkgVersion=3.0.0-beta.1|title=CapabilityStatement: Lab2Healthcare-Results-RetrieveServe}}
 
| rowspan="2" | Retrieve [LAB-LRR-PGO]/serve [LAB-LRB-PGO] lab results requirements.
 
|-
 
| Lab Professional
 
| The user of a LIS
 
| LIS
 
| Laboratory information system
 
|}
 
  
=Use cases=
+
|+ style="align: bottom; caption-side: bottom; text-align: left;" | ''All queries are executed in the authenticated patient context as per MedMij Afsprakenstelsel; no patient search parameters are used.''
 
 
==Patient retrieves laboratory results in their PGO==
 
===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 [https://www.medmij.nl/afsprakenstelsel/ '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.
 
 
 
===Actors===
 
{| class="wikitable"
 
! style="text-align:left;" | Transaction group
 
! style="text-align:left;" | Transaction
 
! style="text-align:left;" | Actor
 
! style="text-align:left;" | Role
 
|-
 
| rowspan="2" | 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
 
 
|}
 
|}
 
===Invocations===
 
====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).
 
 
=====Trigger events=====
 
When the PHR wants to obtain laboratory results, it issues a retrieve laboratory results request message.
 
 
=====Message semantics=====
 
The PHR (LAB-LRR-PGO) executes an HTTP GET conforming to the FHIR [http://hl7.org/fhir/r4/http.html RESTful] and [http://hl7.org/fhir/r4/search.html search] specification against the LIS's Observation endpoint. Laboratory results are all under the {{fhir|.category}} ''observation'', using query parameter {{fhir|category}} as token.
 
 
'''Basic query syntax'''
 
<pre>GET [base]/Observation?category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory</pre>
 
 
'''Examples'''
 
 
Parameter values have not been uri escaped in these examples for readability. This is likely necessary in practice.
 
 
{| class="wikitable mw-collapsible mw-collapsed" style="width:100%; table-layout:fixed;
 
! style="text-align: left;" | Get all lab results of type 14683-7 (LOINC)
 
|-
 
| <pre>
 
GET [base]/Observation?category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory&code=http://loinc.org|14683-7
 
</pre>
 
|}
 
 
{| class="wikitable mw-collapsible mw-collapsed" style="width:100%; table-layout:fixed;
 
! style="text-align: left;" | Get all lab results of type 14683-7 (LOINC) since March 12, 2022
 
|-
 
| <pre>
 
GET [base]/Observation?category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory&code=http://loinc.org|14683-7&date=gt2022-03-12
 
</pre>
 
|}
 
 
{| class="wikitable mw-collapsible mw-collapsed" style="width:100%; table-layout:fixed;
 
! style="text-align: left;" | Get all lab results of type 14683-7 (LOINC) since March 12, 2022 but before June 7, 2022
 
|-
 
| <pre>
 
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
 
</pre>
 
|}
 
 
{| class="wikitable mw-collapsible mw-collapsed" style="width:100%; table-layout:fixed;
 
! style="text-align: left;" | Get all lab results of type 14683-7 (LOINC) and/or 3583 (NHG)
 
|-
 
| <pre>
 
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
 
</pre>
 
|}
 
 
{| class="wikitable mw-collapsible mw-collapsed" style="width:100%; table-layout:fixed;
 
! style="text-align: left;" | Get latest lab result of type 14683-7 (LOINC)
 
|-
 
| <pre>
 
GET [base]/Observation/$lastn?category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory&code=http://loinc.org|14683-7
 
</pre>
 
|}
 
 
{| class="wikitable mw-collapsible mw-collapsed" style="width:100%; table-layout:fixed;
 
! style="text-align: left;" | Get latest 5 lab results of type 14683-7 (LOINC)
 
|-
 
| <pre>
 
GET [base]/Observation/$lastn?max=5&category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory&code=http://loinc.org|14683-7
 
</pre>
 
|}
 
 
{| class="wikitable mw-collapsible mw-collapsed" style="width:100%; table-layout:fixed;
 
! style="text-align: left;" | Get latest lab result of any type
 
|-
 
| <pre>
 
GET [base]/Observation/$lastn?category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory
 
</pre>
 
|}
 
 
======Expected actions======
 
The LIS (LAB-LRB-PGO) SHALL process the query to retrieve laboratory results.
 
 
====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:V1.0_FHIR_IG_R4|FHIR IG]] for more information on handling errors and status codes. Not finding a match based on stated parameters does not constitute an error.
 
 
=====Trigger events=====
 
The LIS (LAB-LRB-PGO) completed the processing of the retrieve laboratory results request message.
 
 
=====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 {{fhir|.entry.search.mode}}={{term|match}}. Each otherwise included resource SHALL be marked with {{fhir|.entry.search.mode}}={{term|include}}. If the searchset bundle contains less '''matching''' resources than the actual total set, then:
 
* the {{fhir|Bundle.link}} that holds the self link, SHOULD include the {{fhir|_count}} parameter to inform the client of what max was applied
 
* an OperationOutcome SHOULD be included marked with {{fhir|.entry.search.mode}}={{term|outcome}}.
 
 
The resources in the response Bundle SHALL be a valid instance of their stated [[#FHIR_Profile_Package|profile]]. All resources SHALL include their related profile canonical URL in the {{fhir|.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'''
 
 
{| class="wikitable mw-collapsible mw-collapsed" style="width:100%; table-layout:fixed;"
 
! style="text-align: left;" | XML contents for searchset Bundle
 
|-
 
| <syntaxhighlight lang="xml">
 
<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&amp;patient:identifier=http://fhir.nl/fhir/NamingSystem/bsn|111222333&amp;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>
 
</syntaxhighlight>
 
|}
 
 
'''Example OperationOutcome'''
 
 
{| class="wikitable mw-collapsible mw-collapsed" style="width:100%; table-layout:fixed;"
 
! style="text-align: left;" | XML contents for OperationOutcome
 
|-
 
| <syntaxhighlight lang="xml">
 
<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>
 
</syntaxhighlight>
 
|}
 
 
=====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.
 

Huidige versie van 11 feb 2026 om 10:03



AfsprakenstelselFunctionalTechnicalAfspraken-Functioneel-Technisch

For an overview of all current documentation see information standard lab exchange main page


1 Introduction

Go to functional design

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:

2 Relationships

The diagram below shows the relationships between different FHIR profiles. The arrows indicate an “is referenced in” relationship.

For example, Patient → Laboratory Test means that the Patient is referenced within the Laboratory Test resource.

FHIR-model-overview-L2P.png

3 Components

HL7 FHIR is used to accommodate the Dutch Clinical Information Models (zibs) used in the IS.

3.1 HL7 FHIR R4

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 HL7-mappings repository.

4 Transactions

4.1 Patient retrieves laboratory results in their PGO

4.1.1 Involved actors

Transaction group Transaction Actor System role code
Retrieve laboratory results (PULL) Retrieve laboratory results request Client LAB-LRR-PGO
Retrieve laboratory results response Server LAB-LRB-PGO
Abbreviations: LAB = Laboratorium, LRR = Laboratoriumresultaat raadplegend (systeem), LRB = Laboratoriumresultaat beschikbaarstellend (systeem), PGO = Persoonlijke gezondheidsomgeving.

4.1.2 Search parameters

FHIR Search Parameter Description FHIR Resource Example
Retrieve laboratory results (Observation search)
category Restrict search to laboratory observations Observation
GET [base]/Observation?category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory
code Filter by laboratory test code (LOINC/NHG) Observation
GET [base]/Observation?category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory&code=http://loinc.org|14683-7
date Filter results based on observation date Observation
GET [base]/Observation?category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory&date=gt2022-03-12&date=lt2022-06-07
Retrieve latest laboratory results ($lastn operation)
$lastn Retrieve most recent lab results using the $lastn operation Observation
GET [base]/Observation/$lastn?max=5&category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory&code=http://loinc.org|14683-7
Retrieve related resources
_include Include linked resources (Specimen, Patient, Organization) in the response bundle Observation
GET [base]/Observation?category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory&_include=Observation:specimen&_include=Observation:patient&_include=Observation:performer
All queries are executed in the authenticated patient context as per MedMij Afsprakenstelsel; no patient search parameters are used.