MedMij:V2019.01 FHIR VitalSigns
{{#customtitle:MedMij FHIR Implementation Guide Vital Signs 1.2.0}}
Introduction
This use case is mainly based on the HL7 FHIR vital signs specification - http://hl7.org/fhir/STU3/observation-vitalsigns.html. The HL7 FHIR vital signs specification is extended with profiles of ZIB concepts that represent vital signs. These profiles are derived from the official HL7 Vital Signs profiles. The purpose of these profiles is to add additional concepts that are not in the vital sign profiles but are provided in the corresponding ZIB. Moreover, these derived profiles include ZIB to FHIR mappings.
Technical note:
Because the base vital signs profile constrains the .code
and the .component.code
to the datatype quantity it is not possible to add additional ZIB concepts. A GForge issue is created to address this problem. This issue will most likely be resolved with FHIR version STU4. However, to address this problem now the base vital signs panel is copied, the datatype constrains removed and published under a different canonical URL. The HL7 vital sign profiles bloodpressure, bodyweight, and oxygensaturation are copied, the StructureDefinition.baseDefinition adjusted and published under a different canonical URL because they are in the chain of derived profiles and the component.code needs to be used for these vital signs.
Use cases:
Actors involved
Persons | Systems | FHIR Capability Statements | |||
---|---|---|---|---|---|
Name | Description | Name | Description | Name | Description |
Patient | The user of a personal healthcare environment. | PHR | Personal health record | CapabilityStatement: Client | Vital Signs client requirements |
Healthcare professional | The user of a XIS | XIS | Healthcare information system | CapabilityStatement: Server | Vital Signs server requirements |
Use case: Retrieve Vital Signs
This FHIR implementation guide assumes that the PHR system is able to make a connection to the right XIS that contains the patient's information. It does not provide information on finding the right XIS 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.
Introduction
The retrieve vital signs transaction is used by the PHR to retrieve vital signs from the XIS.
Actors
Transaction group | Transaction | Actor | Role |
---|---|---|---|
Retrieve Vital Signs(PULL) | Retrieve vital signs request | Patient (using a PHR) | Request vital signs from the XIS |
Retrieve vital signs response | Healthcare professional (using a XIS) | Serves vital signs to the PHR |
Invocations
PHR: request message
The request message represents an HTTP GET parameterized query from the PHR to the XIS.
Trigger Events
When the patient(PHR) wants to obtain vital signs, it issues a retrieve vital signs request message.
Message Semantics
Search
The PHR executes an HTTP GET conform to the FHIR RESTfull and search specification against the XIS's Observation endpoint. This search query URL is configurable by the PHR and has the following format.
GET [base]/Observation?[parameters]{&_format=[mime-type]}
Search Parameters
The PHR may supply, and the XIS shall be capable of processing, all query parameters listed below. These search parameters are a selection of the defined search parameters by the HL7 FHIR specification search parameters of Observation.
Observation | ||
---|---|---|
Name | Type | Description |
category | token | The classification of the type of observation |
code | token | The code of the observation type |
date | date | Obtained date/time. If the obtained element is a period, a date that falls in the period |
Example searches
The PHR should be able to fetch all of a patient's vital signs by searching on:
- category (all vital signs),
- category and date,
- code (specific vital sign),
- code and date,
- code and Last N.
1. GET [base]/Observation?category=vital-signs 2. GET [base]/Observation?category=vital-signs&date=[date]{&date=[date]} 3. GET [base]/Observation?code[vital sign LOINC{,LOINC2,LOINC3,...}] 4. GET [base]/Observation?code=[vital sign LOINC{,LOINC2,LOINC3,...}]&date=[date]{&date=[date]} 5. GET [base]/Observation/$lastn?code[vital sign LOINC{,LOINC2,LOINC3,...}
The following table lists vital signs that have a corresponding ZIB. The column 'LOINC code' shows the LOINC code that can be used in the search query. Other possible codes, including the codes mentioned here, can be found here.
ZIB | LOINC code |
BloodPressure | 85354-9 |
BodyWeight | 29463-7 |
BodyHeight | 8302-2 |
BodyTemperature | 8310-5 |
Oxygenation, saturation, SpO2 | 59408-5 |
HeartRate | 8867-4 |
Glucose | 41604-0 (fasting) 14743-9 (general) 14760-3 (post-meal) |
Expected Actions
The XIS shall process the query to find and return the vital signs matching the provided query parameters.
XIS: response message
The XIS returns an HTTP Status code appropriate to the processing as well as a Bundle of matching vital signs Observation.
Trigger Events
The XIS completed processing of the retrieve vital signs request message.
Message Semantics
Based on the retrieve vital signs request message processing results, the XIS will either return an error or success. When the XIS needs to report an error, it shall use HTTP error response codes and shall include a FHIR OperationOutcome resource with more details on the failure. If the request message is processed successfully, whether or not vital signs are found or generated, the HTTP status code shall be 200.
Response Class:
- Status 200: successful operation
- Status 400: invalid parameter
- Status 401/4xx: unauthorized request
- Status 403: insufficient scope
If the XIS is sending warnings, the Bundle resource shall also contain a FHIR OperationOutcome resource that contains those warnings. The FHIR specification describes the relevant sections:
Message Resource content
The body of the response message shall be a Bundle of type 'searchset' containing all matching vital sign Observations as entries. If no Observations are found, a Bundle of type 'searchset' shall be returned without any Observation as entries.
In the table below, the vital sign ZIB's and their respective profiles are listed. Other vital signs profiles, without a corresponding ZIB, are can be found in the HL7 FHIR specification.
All returned resources to the PHR SHALL include their related profile canonical URL in the meta.profile element in order to show compliance. The Observation resources in the response message SHALL be a valid instance of these profiles.
MedMij uses the FHIR Packaging mechanism. This conveniently bundles all examples, profiles and other conformance resources you need into a single download. For more background information see the the FHIR implementation guide. This version of the information standard depends on Nictiz package 1.1.0. Please note that the direct links to the various conformance resources below will take you to the latest version, which might not match the package version. At time of writing, there is no way to render the conformance resource as found in the package. This is on the roadmap for Simplifier. |
ZIB name NL | ZIB name EN | FHIR Resource | FHIR profile |
Bloeddruk | BloodPressure | Observation | http://nictiz.nl/fhir/StructureDefinition/zib-BloodPressure |
LichaamsGewicht | BodyWeight | Observation | http://nictiz.nl/fhir/StructureDefinition/zib-BodyWeight |
LichaamsLengte | BodyHeight | Observation | http://nictiz.nl/fhir/StructureDefinition/zib-BodyHeight |
Lichaamstemperatuur | BodyTemperature | Observation | http://nictiz.nl/fhir/StructureDefinition/zib-BodyTemperature |
O2Saturatie | oxygenation, saturation, SpO2 | Observation | http://nictiz.nl/fhir/StructureDefinition/zib-OxygenSaturation |
Hartfrequentie | HeartRate | Observation | http://nictiz.nl/fhir/StructureDefinition/zib-HeartRate |
Polsfrequentie | PulseRate | Observation | http://nictiz.nl/fhir/StructureDefinition/zib-PulseRate |
- | - | Observation | http://nictiz.nl/fhir/StructureDefinition/bloodGlucoseSelfMeasurement |
Expected Actions
The PHR processes the results according to application-defined rules.
Interactions, operations, search parameters
Interactions
The following logical interactions are needed for the retrieve medication information transaction:
Operations
The following operation is needed for this use case.
The lastn query meets the common need for searching for the most recent or last n=number of observations for a subject. For example, retrieving the last 5 temperatures for a patient to view trends or fetching the most recent laboratory results or vital signs. The link will provide more detailed information and examples regarding this operation.
Search parameters
The following search parameter types and search result parameters need to be supported for this transaction.
Search parameter types:
Use case: Send Vital Signs
Introduction
The send vital signs transaction is used by the PHR to send vital signs to the XIS.
Actors
Transaction group | Transaction | Actor | Role |
---|---|---|---|
Send Vital Signs(PUSH) | Send vital signs request | Patient (using a PHR) | Sends vital signs to the XIS |
Send vital signs response | Healthcare professional (using a XIS) | Receives vital signs from the PHR |
Invocations
PHR: request message
The send vital sings request message uses the HTTP POST method on the target XIS's base.
Trigger Events
This message is invoked when the PHR needs to send one or more vital signs observations to the XIS.
Message Semantics
Because sending vital signs will most likely consist of multiple Observations, a batch/transaction transaction is used. This allows for creating a set of resources in a single interaction.
A batch interaction is performed by an HTTP POST command as shown:
POST [base] {?_format=[mime-type]}
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: the request is optional, but SHOULD be present). Every bundle.entry creates a resource using an HTTP POST method. The resource of this entry shall be the vital sign observation.
Links:
The vital signs data send to the XIS SHALL conform to the matching vital sign profile. The table below lists profiles that represent ZIBs that can be used for vital sign information exchange. If no matching vital sign ZIB profile is present, vital sign profiles listed in the FHIR specification can be used. Other vital sign concepts are currently out of scope for this use case.
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.
MedMij uses the FHIR Packaging mechanism. This conveniently bundles all examples, profiles and other conformance resources you need into a single download. For more background information see the the FHIR implementation guide. This version of the information standard depends on Nictiz package 1.1.0. Please note that the direct links to the various conformance resources below will take you to the latest version, which might not match the package version. At time of writing, there is no way to render the conformance resource as found in the package. This is on the roadmap for Simplifier. |
ZIB name NL | ZIB name EN | FHIR Resource | FHIR Profile |
Bloeddruk | BloodPressure | Observation | http://nictiz.nl/fhir/StructureDefinition/zib-BloodPressure |
LichaamsGewicht | BodyWeight | Observation | http://nictiz.nl/fhir/StructureDefinition/zib-BodyWeight |
LichaamsLengte | BodyHeight | Observation | http://nictiz.nl/fhir/StructureDefinition/zib-BodyHeight |
Lichaamstemperatuur | BodyTemperature | Observation | http://nictiz.nl/fhir/StructureDefinition/zib-BodyTemperature |
O2Saturatie | oxygenation, saturation, SpO2 | Observation | http://nictiz.nl/fhir/StructureDefinition/zib-OxygenSaturation |
Hartfrequentie | HeartRate | Observation | http://nictiz.nl/fhir/StructureDefinition/zib-HeartRate |
Glucose | Glucose | Observation | http://nictiz.nl/fhir/StructureDefinition/bloodGlucoseSelfMeasurement |
Expected Actions
On receipt of the submission, the XIS shall validate the resources and respond with an appropriate HTTP code. If the XIS encounters any errors or if validation fails, the XIS shall return an error as documented in the Message Semantics of the response message.
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.
Trigger Events
The XIS completed processing of the send vital signs request message.
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.
When the resource syntax or data is incorrect or invalid, and cannot be used to create a new resource, the server returns a 400 Bad Request HTTP status code. When the server rejects the content of the resource because of business rules, the server returns a 422 Unprocessable Entity error HTTP status code. In either case, the server SHOULD include a response body containing an OperationOutcome with detailed error messages describing the reason for the error.
Common HTTP Status codes returned on FHIR-related errors (in addition to normal HTTP errors related to security, header and content type negotiation issues):
- 400 Bad Request - resource could not be parsed or failed basic FHIR validation rules
- 404 Not Found - resource type not supported, or not a FHIR end-point
- 422 Unprocessable Entity - the proposed resource violated applicable FHIR profiles or server business rules. This should be accompanied by an OperationOutcome resource providing additional detail
Expected Actions
The PHR processes the results according to application-defined rules.
Interactions, operations, search parameters
Interactions
The following logical interactions are needed for the retrieve medication information transaction:
Operations
No operations are defined or needed for this transaction.
Search parameters
No search parameters are defined or needed for this transaction.
Terminology, NamingSystems, Mappings
Terminology
Relevant ValueSets can be found through the ValueSet bindings in the listed StructureDefinitions. All ValueSets can be found here here and can be downloaded as a .zip in XML or JSON format.
NamingSystems
Relevant NamingSystems can be found here.
Mappings
A FHIR ConceptMap resource is provided when a FHIR value set is used instead of a HCIM value set. A ConceptMap maps the values between the two value sets. These ConceptMaps can be found here.
All profiles include HCIM mappings. HCIM concepts are mapped to the corresponding FHIR elements using the HCIMs concept id. The top of the StructureDefinition contains meta information regarding the HCIM mapping, such as the name and uri of the HCIM. In the StructureDefinition elements, the corresponding HCIM ID is given including the mapping meta information id. This is illustrated in the following example.
<StructureDefinition> <id value="nl-core-patient" /> ..... <mapping> <identity value="hcim-patient-v3.1-2017EN"/> <uri value="https://zibs.nl/wiki/Patient-v3.1(2017EN)"/> <name value="HCIM Patient-v3.1(2017EN)"/> </mapping> ..... <element id="Patient.name"> <path value="Patient.name" /> <short value="NameInformation" /> <alias value="Naamgegevens" /> <type> <code value="HumanName" /> <profile value="http://fhir.nl/fhir/StructureDefinition/nl-core-humanname" /> </type> <mapping> <identity value="hcim-patient-v3.1-2017EN"/> <map value="NL-CM:0.1.6"/> </mapping> </element> ..... </StructureDefinition>
Annex: Document history
Release notes
Release notes can be found on the functional design page.
History
Release | Date | Description |
---|---|---|
2019.01 | 11-02-2019 | MM-95 Added LastN example search query |
2019.01 | 24-01-2019 |
|
2019.01 | 28-12-2018 | Moved release notes to the functional design main page. |
2018.06 | 14-01-2019 | Removed incorrect issuebox. |
2018.06 | 12-11-2018 | Added section "Terminology, NamingSystems, Mappings" |
2018.06 | 15-10-2018 | Added version in title, and document history |