Validation of FHIR data - DevDays · Licensed under Creative Commons. HL7 & Health Level Seven are...
Transcript of Validation of FHIR data - DevDays · Licensed under Creative Commons. HL7 & Health Level Seven are...
![Page 1: Validation of FHIR data - DevDays · Licensed under Creative Commons. HL7 & Health Level Seven are registered t rademarks of Health Level Seven International. Reg. U.S. TM Office.](https://reader036.fdocuments.in/reader036/viewer/2022070222/613bd3e5f8f21c0c826937e5/html5/thumbnails/1.jpg)
HL7®, FHIR® and the flame Design mark are the registered trademarks of Health Level Seven International and are used with per mission.
Redmond, June 10 – 12 | @HL7 @FirelyTeam | #fhirdevdays | www.devdays.com/us
Validation of FHIR data
Ewout Kramer, Firely
![Page 2: Validation of FHIR data - DevDays · Licensed under Creative Commons. HL7 & Health Level Seven are registered t rademarks of Health Level Seven International. Reg. U.S. TM Office.](https://reader036.fdocuments.in/reader036/viewer/2022070222/613bd3e5f8f21c0c826937e5/html5/thumbnails/2.jpg)
© 2014 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Goal....
Take away some of the “black magic” of FHIR validation
We can use a tool to create profiles, but what happens under
the hood?
Will show StructureDefinition + validation tools
2
![Page 3: Validation of FHIR data - DevDays · Licensed under Creative Commons. HL7 & Health Level Seven are registered t rademarks of Health Level Seven International. Reg. U.S. TM Office.](https://reader036.fdocuments.in/reader036/viewer/2022070222/613bd3e5f8f21c0c826937e5/html5/thumbnails/3.jpg)
© 2014 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Validation inputs
3
Conformance
Resources
StructureDefinition
ValueSet
CodeSystem Validator
Packages
• HL7 International
(“core”)
• National
• Your own
Results
OperationOutcome
![Page 4: Validation of FHIR data - DevDays · Licensed under Creative Commons. HL7 & Health Level Seven are registered t rademarks of Health Level Seven International. Reg. U.S. TM Office.](https://reader036.fdocuments.in/reader036/viewer/2022070222/613bd3e5f8f21c0c826937e5/html5/thumbnails/4.jpg)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
ElementDefinition
Whever a tool reads or writes profiles, it reads
StructureDefinitions, itself collections of ElementDefinitions
Most important parts:
path (the dotted part expressing hierarchy: “Patient.identifier.use”) short/definition
min/max (cardinality)
fixed/pattern
typeRef (base data type of element)
binding
(fhirpath) invariants 4
![Page 5: Validation of FHIR data - DevDays · Licensed under Creative Commons. HL7 & Health Level Seven are registered t rademarks of Health Level Seven International. Reg. U.S. TM Office.](https://reader036.fdocuments.in/reader036/viewer/2022070222/613bd3e5f8f21c0c826937e5/html5/thumbnails/5.jpg)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Pet project for this session
5
DocumentBundle
SD on Bundle
DocumentComposition
SD on Composition
WeightHeightObservation
SD on Observation
SectionTitles
ValueSet
WeightQuantity
SD on Quantity
HeightQuantity
SD on Quantity
constrain document
sections (“slicing”)
constrain
Quantity.value[x]
![Page 6: Validation of FHIR data - DevDays · Licensed under Creative Commons. HL7 & Health Level Seven are registered t rademarks of Health Level Seven International. Reg. U.S. TM Office.](https://reader036.fdocuments.in/reader036/viewer/2022070222/613bd3e5f8f21c0c826937e5/html5/thumbnails/6.jpg)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
WeightQuantity
6
value: 1..1, between 0 and 200
comparator: 0..0
unit: unchanged
system: 1..1, fixed to ‘http://unitsofmeasure.org’ code: 1..1, fixed to ‘kg’
![Page 7: Validation of FHIR data - DevDays · Licensed under Creative Commons. HL7 & Health Level Seven are registered t rademarks of Health Level Seven International. Reg. U.S. TM Office.](https://reader036.fdocuments.in/reader036/viewer/2022070222/613bd3e5f8f21c0c826937e5/html5/thumbnails/7.jpg)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Forge XML
7
![Page 8: Validation of FHIR data - DevDays · Licensed under Creative Commons. HL7 & Health Level Seven are registered t rademarks of Health Level Seven International. Reg. U.S. TM Office.](https://reader036.fdocuments.in/reader036/viewer/2022070222/613bd3e5f8f21c0c826937e5/html5/thumbnails/8.jpg)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Pet project for this session
8
DocumentBundle
SD on Bundle
DocumentComposition
SD on Composition
WeightHeightObservation
SD on Observation
SectionTitles
ValueSet
WeightQuantity
SD on Quantity
HeightQuantity
SD on Quantity
constrain document
sections (“slicing”)
constrain
Quantity.value[x]
Determines
possible section
codes
√ √
![Page 9: Validation of FHIR data - DevDays · Licensed under Creative Commons. HL7 & Health Level Seven are registered t rademarks of Health Level Seven International. Reg. U.S. TM Office.](https://reader036.fdocuments.in/reader036/viewer/2022070222/613bd3e5f8f21c0c826937e5/html5/thumbnails/9.jpg)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
WeightHeightObservation
9
value: 1..1,
string OR Quantity
If Quantity, either:
WeightQuantity or HeightQuantity
Note: We are using a canonical reference to
point to WeightQuantity and HeightQuantity.
![Page 10: Validation of FHIR data - DevDays · Licensed under Creative Commons. HL7 & Health Level Seven are registered t rademarks of Health Level Seven International. Reg. U.S. TM Office.](https://reader036.fdocuments.in/reader036/viewer/2022070222/613bd3e5f8f21c0c826937e5/html5/thumbnails/10.jpg)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Forge XML
10
How is that canonical reference resolved?
?
![Page 11: Validation of FHIR data - DevDays · Licensed under Creative Commons. HL7 & Health Level Seven are registered t rademarks of Health Level Seven International. Reg. U.S. TM Office.](https://reader036.fdocuments.in/reader036/viewer/2022070222/613bd3e5f8f21c0c826937e5/html5/thumbnails/11.jpg)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Try it out in a validator!
Try remove ‘status’ (core: 1..1) Try valueBoolean
Change a unit (Quantity.code) to ‘kgs’ Why multiple errors? Try looking at the informational message!
11
![Page 12: Validation of FHIR data - DevDays · Licensed under Creative Commons. HL7 & Health Level Seven are registered t rademarks of Health Level Seven International. Reg. U.S. TM Office.](https://reader036.fdocuments.in/reader036/viewer/2022070222/613bd3e5f8f21c0c826937e5/html5/thumbnails/12.jpg)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Pet project for this session
12
DocumentBundle
SD on Bundle
DocumentComposition
SD on Composition
WeightHeightObservation
SD on Observation
SectionTitles
ValueSet
WeightQuantity
SD on Quantity
HeightQuantity
SD on Quantity
constrain document
sections (“slicing”)
constrain
Quantity.value[x]
Determines
possible section
codes
√ √
√
![Page 13: Validation of FHIR data - DevDays · Licensed under Creative Commons. HL7 & Health Level Seven are registered t rademarks of Health Level Seven International. Reg. U.S. TM Office.](https://reader036.fdocuments.in/reader036/viewer/2022070222/613bd3e5f8f21c0c826937e5/html5/thumbnails/13.jpg)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
DocumentComposition – Easy bits
13
type: a CodeableConcept with at least one
LOINC code 18842-5. May optionally
specify other elements like text,
version, display...
subject: limit to type Patient
author: limit to type Practitioner
![Page 14: Validation of FHIR data - DevDays · Licensed under Creative Commons. HL7 & Health Level Seven are registered t rademarks of Health Level Seven International. Reg. U.S. TM Office.](https://reader036.fdocuments.in/reader036/viewer/2022070222/613bd3e5f8f21c0c826937e5/html5/thumbnails/14.jpg)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Forge XML
14
![Page 15: Validation of FHIR data - DevDays · Licensed under Creative Commons. HL7 & Health Level Seven are registered t rademarks of Health Level Seven International. Reg. U.S. TM Office.](https://reader036.fdocuments.in/reader036/viewer/2022070222/613bd3e5f8f21c0c826937e5/html5/thumbnails/15.jpg)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Pattern...the unloved feature
15
Can even make this ‘*’!
![Page 16: Validation of FHIR data - DevDays · Licensed under Creative Commons. HL7 & Health Level Seven are registered t rademarks of Health Level Seven International. Reg. U.S. TM Office.](https://reader036.fdocuments.in/reader036/viewer/2022070222/613bd3e5f8f21c0c826937e5/html5/thumbnails/16.jpg)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Try it out in a validator!
Make a reference to another type for Composition.subject
Composition.type:
Add another coding. Add <display> element.
Take the first coding, add a <version> element.
Take the first coding, change the code.
16
![Page 17: Validation of FHIR data - DevDays · Licensed under Creative Commons. HL7 & Health Level Seven are registered t rademarks of Health Level Seven International. Reg. U.S. TM Office.](https://reader036.fdocuments.in/reader036/viewer/2022070222/613bd3e5f8f21c0c826937e5/html5/thumbnails/17.jpg)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
DocumentComposition - Slicing
17
For all sections (1..*)
title: 1..1, max. 20 characters long
code: 1..1, Must come from ValueSet
“SectionTitles” emptyReason: 0..0
entry: Must be Observations
section: 0..0 (no subsections)
For sections where code = 8716-3 (1..1)
vitalSigns
code: 1..1, 8716-3
entry: Must be a WeightHeightObservation
For sections where code = 10154-3 (0..1)
chiefComplaints
code: 1..1, 10154-3
Other sections are allowed, no additional rules apply.
![Page 18: Validation of FHIR data - DevDays · Licensed under Creative Commons. HL7 & Health Level Seven are registered t rademarks of Health Level Seven International. Reg. U.S. TM Office.](https://reader036.fdocuments.in/reader036/viewer/2022070222/613bd3e5f8f21c0c826937e5/html5/thumbnails/18.jpg)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Forge XML
18
![Page 19: Validation of FHIR data - DevDays · Licensed under Creative Commons. HL7 & Health Level Seven are registered t rademarks of Health Level Seven International. Reg. U.S. TM Office.](https://reader036.fdocuments.in/reader036/viewer/2022070222/613bd3e5f8f21c0c826937e5/html5/thumbnails/19.jpg)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Forge XML
19
![Page 20: Validation of FHIR data - DevDays · Licensed under Creative Commons. HL7 & Health Level Seven are registered t rademarks of Health Level Seven International. Reg. U.S. TM Office.](https://reader036.fdocuments.in/reader036/viewer/2022070222/613bd3e5f8f21c0c826937e5/html5/thumbnails/20.jpg)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Try it out in a validator!
Many any section.title > 20
Duplicate the vital signs section
give the first duplicate a section.code of
<system value="http://loinc.org"/>
<code value="8716-3"/>
Change the slice’s <ordered> to “true”
20
![Page 21: Validation of FHIR data - DevDays · Licensed under Creative Commons. HL7 & Health Level Seven are registered t rademarks of Health Level Seven International. Reg. U.S. TM Office.](https://reader036.fdocuments.in/reader036/viewer/2022070222/613bd3e5f8f21c0c826937e5/html5/thumbnails/21.jpg)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
FhirPath integration
In the slice intro add:
21
![Page 22: Validation of FHIR data - DevDays · Licensed under Creative Commons. HL7 & Health Level Seven are registered t rademarks of Health Level Seven International. Reg. U.S. TM Office.](https://reader036.fdocuments.in/reader036/viewer/2022070222/613bd3e5f8f21c0c826937e5/html5/thumbnails/22.jpg)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Pet project for this session
22
DocumentBundle
SD on Bundle
DocumentComposition
SD on Composition
WeightHeightObservation
SD on Observation
SectionTitles
ValueSet
WeightQuantity
SD on Quantity
HeightQuantity
SD on Quantity
constrain document
sections (“slicing”)
constrain
Quantity.value[x]
Determines
possible section
codes
√ √
√
√
![Page 23: Validation of FHIR data - DevDays · Licensed under Creative Commons. HL7 & Health Level Seven are registered t rademarks of Health Level Seven International. Reg. U.S. TM Office.](https://reader036.fdocuments.in/reader036/viewer/2022070222/613bd3e5f8f21c0c826937e5/html5/thumbnails/23.jpg)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Other validation tools
Java validator: https://www.hl7.org/fhir/validation.html
.NET Core cross-platform (“Torinox”): https://simplifier.net/downloads/torinox
In your Simplifier projects, integrated Validation:
https://simplifier.net/validate
23
![Page 24: Validation of FHIR data - DevDays · Licensed under Creative Commons. HL7 & Health Level Seven are registered t rademarks of Health Level Seven International. Reg. U.S. TM Office.](https://reader036.fdocuments.in/reader036/viewer/2022070222/613bd3e5f8f21c0c826937e5/html5/thumbnails/24.jpg)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Questions?
24
![Page 25: Validation of FHIR data - DevDays · Licensed under Creative Commons. HL7 & Health Level Seven are registered t rademarks of Health Level Seven International. Reg. U.S. TM Office.](https://reader036.fdocuments.in/reader036/viewer/2022070222/613bd3e5f8f21c0c826937e5/html5/thumbnails/25.jpg)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Play along...
Example data, StructureDefinitions & Validator (Windows) can
be found at:
https://github.com/ewoutkramer/Furore.Fhir.ValidationDemo/releases
Includes and executable + examples shown in this tutorial.
25
![Page 26: Validation of FHIR data - DevDays · Licensed under Creative Commons. HL7 & Health Level Seven are registered t rademarks of Health Level Seven International. Reg. U.S. TM Office.](https://reader036.fdocuments.in/reader036/viewer/2022070222/613bd3e5f8f21c0c826937e5/html5/thumbnails/26.jpg)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Extensions and StructureDefs
Extensions are defined using StructureDefinitions
In fact, they are constraints on the Extension datatype!
26
Fix this URL to the extension’s url
Limit to just “Boolean” [1..1]
Don’t allow nested extensions
![Page 27: Validation of FHIR data - DevDays · Licensed under Creative Commons. HL7 & Health Level Seven are registered t rademarks of Health Level Seven International. Reg. U.S. TM Office.](https://reader036.fdocuments.in/reader036/viewer/2022070222/613bd3e5f8f21c0c826937e5/html5/thumbnails/27.jpg)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
27
![Page 28: Validation of FHIR data - DevDays · Licensed under Creative Commons. HL7 & Health Level Seven are registered t rademarks of Health Level Seven International. Reg. U.S. TM Office.](https://reader036.fdocuments.in/reader036/viewer/2022070222/613bd3e5f8f21c0c826937e5/html5/thumbnails/28.jpg)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Validation inputs
28
Conformance
Resources
StructureDefinition
ValueSet
CodeSystem Validator
Validator-libraries
Java
• JAR
• Stand-alone cmdline • Integrated in HAPI
• Touchstone
Delphi
• Notepad++ • Grahame’s server
.NET
• NuGet package
• Torinox (cmdline) • Simplifier
• Windows-tool
Packages
• HL7 International
(“core”)
• National
• Your own
Results
OperationOutcome
![Page 29: Validation of FHIR data - DevDays · Licensed under Creative Commons. HL7 & Health Level Seven are registered t rademarks of Health Level Seven International. Reg. U.S. TM Office.](https://reader036.fdocuments.in/reader036/viewer/2022070222/613bd3e5f8f21c0c826937e5/html5/thumbnails/29.jpg)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Validation inputs
29
Conformance
Resources
StructureDefinition
ValueSet
CodeSystem Validator
Validator-libraries
Java
• JAR
• Stand-alone cmdline • Integrated in HAPI
• Touchstone
Delphi
• Notepad++ • Grahame’s server
.NET
• NuGet package
• Torinox (cmdline) • Simplifier
• Windows-tool
Packages
• HL7 International
(“core”)
• National
• Your own
Results
OperationOutcome