Data Explorer
The Data Explorer is available when modifying layouts on the Subject Viewer. This tool is helpful as a way to navigate FHIR JSON data in order to extract values for display.
The power behind the Data Explorer is JMESPath (JSON Matching Expression paths). JMESPath is a query language for searching JSON documents. It allows you to declaratively extract elements from a JSON document.
Example: Configure Birth Place
Prerequisites
- A user who has ABAC policy
named
layoutAdmin
. - A project with subjects (patients) who have birthPlace stored.
- In this example:
- Project:
Clinical T2D LifeExtend
- Subject:
Ms. Lavelle Vandervort
- Project:
- In this example:
1. "Not Available" for Birth Place
A layout is configured to display Birth Place in the header, however the value is showing as Not Available.
Not Available could mean this subject is missing data, however in this
example the header configuration for Patient JMESPath Query is incorrectly
using a query expression of extensions
.
2. Open Data Explorer
Open the Data Explorer using the icon next to Birth Place:
3. Modify the JMESPath Query Expression
Using the Input data as a guide, navigate the JSON structure to locate birthPlace inside of extension.
After reviewing the JSON structure for the birthPlace element, craft a
JMESPath query to extract the city
, state
, country
of birthPlace.
extension[?url == 'http://hl7.org/fhir/StructureDefinition/birthPlace'].valueAddress
| values([0])
| join(', ', @)
The example above, annotated below, shows off how helpful JMESPath query expressions can be:
// Find extension data element, if available, related to `birthPlace` FHIR patient extension.
// See: <http://hl7.org/fhir/extension-patient-birthplace.html>
extension[?url == 'http://hl7.org/fhir/StructureDefinition/birthPlace'].valueAddress
// The extension calls for the keys of: city, state, country for birthPlace.
// Extract the object key values from the birthPlace object into an array.
// See: <http://jmespath.org/specification.html#values>
| values([0])
// Join the array of key values with a comma
// See: <http://jmespath.org/specification.html#join>
| join(', ', @)
4. Apply change
Apply the change and immediately the value for birthPlace will populate if this data exists for this subject.
Save the layout to share this change with all users of this project.
5. Output Format Types and Data Display
Previously the above steps have shown off JMESPath's power and ability to extract and render data using the default Default Raw JMESPath Result output format type.
However the web console offers Output Format Type display utilities of:
- Address
- Annotation
- Codeable Concept
- Coding
- Contact Point
- DateTime
- Human Name
- Identifier
- Period
- Quantity
- Range
- Ratio
- Timing
We can simplify our JMESPath expression and use the Address output format type:
extension[?url == 'http://hl7.org/fhir/StructureDefinition/birthPlace'].valueAddress
When the queried data renders correctly, modify the Result Type in the layout configuration to use Address as the output format type.
Save the layout to share this change with all users of this project.