SlideShare a Scribd company logo
Advanced FHIR Terminology Services,
incl. SNOMED CT
AUSTRALIAN E-HEALTH RESEARCH CENTRE, HEALTH & BIOSECURITY
Michael Lawley, PhD | Research Group Leader
16 November 2017
FHIR® is the registered trademark of HL7 and is used with the permission of HL7. The Flame Design mark is the registered trademark of HL7 and is used with the permission of HL7.
Who am I?
• Australian eHealth Research Centre, CSIRO
• SNOMED involvement since late 2000s
• Technical Committee 2010-2015
• Modelling Advisory Group 2015-present
• SNOMED Languages Project Group
• SNOMED Logic Profile Working Group
• SNOMED CT URI specification
• Expression Constraint Language
• Ontoserver, Shrimp, Snapper, Snorocket
• Australia’s National Clinical Terminology Service
Shrimp
- for browsing
http://ontoserver.csiro.au/shrimp
Snapper
:Author
(also :Map)
work-in-
progress
ValueSet
Explorer
- compare
performance
and behaviour
http://ontoserver.csiro.au/vstool/
Getting to know each other
• Jim’s Practical Terminology Services this morning?
• Used Terminology services?
• Implemented any part of the Terminology subsystem?
• SNOMED CT knowledge?
• Other code system knowledge?
FHIR Terminology - big picture
Concept Map
Defines a set of
concepts with a
coherent meaning
src rel tgt
Code System
Defines a set of
concepts with a
coherent meaning
url, version, name, …
Filters, Properties
Concepts
• Code
• Display
• Definition
Code System
Defines a set of
concepts with a
coherent meaning
url, version, name, …
Filters, Properties
Concepts
• Code
• Display
• Definition
Value Set
A selection of a
set of codes for
use in a
particular
context
Value Set
A selection of a
set of codes for
use in a
particular
context
Terminology in FHIR Search
• A lot of search parameters in FHIR are of type ‘token’
• These can leverage terminology services
• :above/:below
• E.g.: /Condition?body-site:below=http://snomed.info/sct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
• :in/:not-in
• E.g.:
/ProcedureRequest?code:in=http://snomed.info/sct?fhir_vs=refset/3257036
1000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel8 |
Externally defined code systems
SNOMED CT
• 19 hierarchies
• ~ 400K Concepts
• ~ 1M Descriptions
• 3 types
• Fully Specified Name
• Preferred term
• Synonyms
• ~ 65 Attributes
• Combined in triplets forming ~ 1.5M relationships
• ~ 125 relationship patterns
Demo - Shrimp
Practical tips
1. Beware out-of-order responses
2. Minimise latency
– Batch multiple operations for single round-trip
– Also avoids need for client-side synchronisation
3. Minimise bandwidth
– count for $expand
– includeDefinition, includeDesignations on $expand
– property for $lookup
– _count, _elements for search / read operations
– Accept-Encoding: gzip
4. GET can be cached (HTTP level), POST cannot
Warning: A lot of these can be server-dependent. They’re not proprietary, but you should
check support for them by your terminology server.
Implicit ValueSets
Defined for specific code systems
SNOMED CT, LOINC, …
http://snomed.info/sct?fhir_vs
http://snomed.info/sct?fhir_vs=isa/{sctid}
http://snomed.info/sct?fhir_vs=refset
http://snomed.info/sct?fhir_vs=refset/{sctid}
Typeahead controls
https://plnkr.co/edit/wOjWbt
<input
uib-typeahead="suggestion for suggestion in concepts($viewValue,
'http://snomed.info/sct?fhir_vs=isa/138875005')” />
$scope.concepts = function(term, valueSet) {
return $http.get(
‘https://ontoserver.csiro.au/stu3-latest/ValueSet/$expand', {
params: {
identifier: valueSet,
filter: term,
count: 15,
'_format': 'json’
},
responseType: 'json’
}).then(function(response) {
return response.data.expansion.contains || [{ display: term }];
});
Typeahead controls
https://plnkr.co/edit/wOjWbt
<input
uib-typeahead="suggestion for suggestion in concepts($viewValue,
'http://snomed.info/sct?fhir_vs=isa/73211009')” />
$scope.concepts = function(term, valueSet) {
return $http.get(
‘https://ontoserver.csiro.au/stu3-latest/ValueSet/$expand', {
params: {
identifier: valueSet,
filter: term,
count: 5,
'_format': 'json’
},
responseType: 'json’
}).then(function(response) {
return response.data.expansion.contains || [{ display: term }];
});
SNOMED CT Versioning
• International release (6 monthly)
• National releases (1-6 monthly)
• Other releases
Version is an Edition + Effective Time
http://snomed.info/sct/{module}/version/{date}
Branching version structure
No single “latest” version
INT
US
AU
X
Y
Z
time
dependency
Implicit ValueSets
Defined for specific code systems
SNOMED CT, LOINC, …
http://snomed.info/sct?fhir_vs
http://snomed.info/sct?fhir_vs=isa/{sctid}
http://snomed.info/sct?fhir_vs=refset
http://snomed.info/sct?fhir_vs=refset/{sctid}
Implicit ValueSets
Defined for specific code systems
SNOMED CT, LOINC, …
http://snomed.info/sct?fhir_vs
http://snomed.info/sct?fhir_vs=isa/{sctid}
http://snomed.info/sct?fhir_vs=refset
http://snomed.info/sct?fhir_vs=refset/{sctid}
http://snomed.info/sct/{module}
Implicit ValueSets
Defined for specific code systems
SNOMED CT, LOINC, …
http://snomed.info/sct?fhir_vs
http://snomed.info/sct?fhir_vs=isa/{sctid}
http://snomed.info/sct?fhir_vs=refset
http://snomed.info/sct?fhir_vs=refset/{sctid}
http://snomed.info/sct/{module}/version/{date}
ValueSets and CodeSystem versions
{
ValueSet cmpose details
{
{ }
ValueSet compose details
{
{
ValueSet compose details
{
“Complex” ValueSets
Cycles with ValueSet inclusion / exclusion
Mixing codes from multiple code systems (don’t)
Multiple versions of the same code system
“Complex” ValueSets
“compose”: {
“include”: [{
“valueSet”:
“http://snomed.info/sct/32506021000036107/version/
20171031?fhir_vs=isa/138875005”
}],
“exclude”: [{
“valueSet”:
“http://snomed.info/sct/32506021000036107/version/
20170930?fhir_vs=isa/138875005”
}],
Expression Constraint Language (ECL)
http://snomed.org/ecl
Based on post coordination syntax
Wildcard, descendants, ancestors, reference set members, cardinality
constraints
http://ontoserver.csiro.au/shrimp/ecl_help.html
filter:[{property:’constraint’, op:’=‘, value: ‘…’ }]
ECL brief summary
Category Syntax Example
Basic sctId, *, ^ sctId ^ 723264001 |lateralizable
body structure|
Hierarchy << sctId, < sctId, <! sctId,
>> sctId, > sctId, >! sctId
<< 404684003 |clinical finding|
Composition x AND y, x OR y, x MINUS y
Relationships a : b = c, a : { b = c, d = e},
a.b
<< 404684003 :
363698007 |finding site| =
^ 723264001
Cardinality a : [low..high] b = c << 404684003 :
[1..1] 363698007 = *
SNOMED CT Post coordination
http://snomed.org/scg
71620000|Fracture of femur|:
272741003|Laterality| = 7771000|Left|
74400008|Appendicitis|:
116676008|Associated morphology|= 4532008|Acute inflammation|
64572001|Disease|:
{
116676008|Associated morphology|= 4532008|Acute inflammation|,
363698007|Finding site| = 66754008|Appendix structure|
}
CodeSystem operations
$subsumes?codeA= &codeB=
• equivalent, subsumes, subsumed-by, and not-subsumed
• terminology server handles post coordination semantics
$compose
• “Given a set of properties, return one or more possible matching
codes”
Presentation title | Presenter name31 |
http://hl7.org/fhir/terminology-service.html#closure
Why? stateful??
Consider implementing search:
[base]/Condition?code:below=126851005
[base]/Condition?code:in=http://snomed.info/sct%3Ffhir_vs
%3Disa/126851005
join
ConceptMap$closure
TerminologyClinical Data
$closure – usage flow
• init
• add set of codes
• ConceptMap of hierarchy &
equivalence [transitively closed]
• add more codes
• ConceptMap of additional
hierarchy & equivalence
• …
• resynchronisation
• {}
• 0: {}
• {a, c}
• 1: {a subsumes c}
• {b, d}
• 2: {a subsumes b, b subsumes c,
a subsumes d}
code:below
• Use $closure to maintain local edge-table of parent-child
relationships
• code:below=123
SELECT C.*
FROM Condition C, Edges E
WHERE C.code = 123
OR (E.parent = 123 AND C.code = E.child);
Code Mnemonic Code Mnemonic
equivalent wider
equal subsumes
inexact narrower
unmatched specializes
disjoint relatedto
ConceptMap - equivalence relationships
TS
TS
S T
S T
TS
S
TS
TS
S=T
TS
• Shrimp
– search & browse SNOMED CT, LOINC, ...
– http://ontoserver.csiro.au/shrimp
• Ontoserver
– powerful features, simple to deploy & use
– ECL queries
– http://ontoserver.csiro.au/shrimp/ecl.html
e.g., concepts with finding site of appendix structure
• Snapper:Author
– Author (simple) FHIR Terminology Resources
• Snorocket
– Description Logic reasoning engine
Tooling summary

More Related Content

PPTX
Fhir dev days_basic_fhir_terminology_services
PPTX
Profiling with clin fhir
PPTX
Mohannad hussain dicom and imaging tools
PPTX
Dev days 2017 questionnaires (brian postlethwaite)
PPTX
2017 11-ccda-on-fhir
PPTX
Fhir foundation (grahame)
PPTX
Furore devdays 2017- rdf2(solbrig)
PPTX
Fhir dev days 2017 fhir profiling - overview and introduction v07
Fhir dev days_basic_fhir_terminology_services
Profiling with clin fhir
Mohannad hussain dicom and imaging tools
Dev days 2017 questionnaires (brian postlethwaite)
2017 11-ccda-on-fhir
Fhir foundation (grahame)
Furore devdays 2017- rdf2(solbrig)
Fhir dev days 2017 fhir profiling - overview and introduction v07

What's hot (20)

PPTX
Furore devdays 2017- continua implementing fhir
PPTX
fhir-documents
PPTX
Fire kit ios (r-baldwin)
PPTX
Beginners .net api dev days2017
PPTX
Devdays 2017 implementation guide authoring - ardon toonstra
PPTX
FHIR - as a new currency of exchange in New Zealand
PPTX
Building bridges devdays 2017- powerpoint template
PPTX
Furore devdays 2017- rdf1(solbrig)
PPTX
Advanced .net api (ewout)
PPTX
Furore devdays2017 general-introtofhir
PPTX
Furore devdays 2017- profiling academy - profiling guidelines v1
PPTX
Furore devdays 2017-sdc (lloyd)
PPTX
SNOMED Bound to (Information) Model | Putting terminology to work
PPTX
Furore devdays 2017 - workflow
PPTX
20171116 rene spronk_profiling_governance
PPTX
Security overview (grahame)
PDF
A simple web-based interface for advanced SNOMED CT queries
PPTX
Furore devdays2017 tdd-1-intro
PPTX
Furore devdays2017 tdd-2-advanced
PPTX
Building a Scenario using clinFHIR
Furore devdays 2017- continua implementing fhir
fhir-documents
Fire kit ios (r-baldwin)
Beginners .net api dev days2017
Devdays 2017 implementation guide authoring - ardon toonstra
FHIR - as a new currency of exchange in New Zealand
Building bridges devdays 2017- powerpoint template
Furore devdays 2017- rdf1(solbrig)
Advanced .net api (ewout)
Furore devdays2017 general-introtofhir
Furore devdays 2017- profiling academy - profiling guidelines v1
Furore devdays 2017-sdc (lloyd)
SNOMED Bound to (Information) Model | Putting terminology to work
Furore devdays 2017 - workflow
20171116 rene spronk_profiling_governance
Security overview (grahame)
A simple web-based interface for advanced SNOMED CT queries
Furore devdays2017 tdd-1-intro
Furore devdays2017 tdd-2-advanced
Building a Scenario using clinFHIR
Ad

Similar to Fhir dev days_advanced_fhir_terminology_services (20)

PPTX
Fire and Ice - SNOMED is bound to model - Koray Atalag
PDF
Fundamentals of snomed ct
PDF
Local and Global Learning Method for Question Answering Approach
PPTX
I know just what you mean - Ontologies and their uses
PPT
RoleOfTerminologies
PPTX
clear explnation about snomed ct , and different between snomed ct and icd 10
PDF
Zhe_2014JointSummits_v6
PPTX
Information Models & FHIR --- It’s all about content!
PDF
Snomed ct csets overview
PPTX
OpenMRS Concept Management Tutorial
PPTX
schema.org and biomedical ontologies
PPT
Simplifying semantics for biomedical applications
PDF
Segmenting & Merging Domain-specific Modules for Clinical Informatics
PPTX
Mi224 snomed santiago & herber 022715
PPTX
Introduction to Snow Owl - A tool for SNOMED CT
PDF
Semantic decomposition of ontologies for creation of flexible biomedical conc...
PPTX
Accessing SNOMED CT With FHIR Terminology Services
PDF
SNOMED Clinical Terms - Introduction
PDF
SNOMED CT in the clinical data standards landscape
 
PPTX
Interoperability, SNOMED, HL7 and FHIR
Fire and Ice - SNOMED is bound to model - Koray Atalag
Fundamentals of snomed ct
Local and Global Learning Method for Question Answering Approach
I know just what you mean - Ontologies and their uses
RoleOfTerminologies
clear explnation about snomed ct , and different between snomed ct and icd 10
Zhe_2014JointSummits_v6
Information Models & FHIR --- It’s all about content!
Snomed ct csets overview
OpenMRS Concept Management Tutorial
schema.org and biomedical ontologies
Simplifying semantics for biomedical applications
Segmenting & Merging Domain-specific Modules for Clinical Informatics
Mi224 snomed santiago & herber 022715
Introduction to Snow Owl - A tool for SNOMED CT
Semantic decomposition of ontologies for creation of flexible biomedical conc...
Accessing SNOMED CT With FHIR Terminology Services
SNOMED Clinical Terms - Introduction
SNOMED CT in the clinical data standards landscape
 
Interoperability, SNOMED, HL7 and FHIR
Ad

More from DevDays (17)

PPTX
Consent dev days
PDF
Integrating with the epic platform fhir dev days 17
PPTX
Mohannad hussain community track - siim dataset & dico mweb proxy
PPTX
final Keynote (grahame)
PPTX
Validation in net and java (ewout james)
PPTX
Transforming other content (grahame)
PPTX
Structure definition 101 (ewout)
PPTX
Quality improvement dev days-2017
PPTX
Furore devdays 2017- oai
PPTX
Furore devdays 2017 - implementation guides (lloyd)
PPTX
Dev days 2017 advanced directories (brian postlethwaite)
PPTX
Connectathon opening 2017
PPTX
20171127 rene spronk_messaging_the_unloved_paradigm
PPTX
Vonk fhir facade (christiaan)
PPTX
Opening student track
PPTX
Fhir tooling (grahame)
PPTX
Distributing cds dev days-2017
Consent dev days
Integrating with the epic platform fhir dev days 17
Mohannad hussain community track - siim dataset & dico mweb proxy
final Keynote (grahame)
Validation in net and java (ewout james)
Transforming other content (grahame)
Structure definition 101 (ewout)
Quality improvement dev days-2017
Furore devdays 2017- oai
Furore devdays 2017 - implementation guides (lloyd)
Dev days 2017 advanced directories (brian postlethwaite)
Connectathon opening 2017
20171127 rene spronk_messaging_the_unloved_paradigm
Vonk fhir facade (christiaan)
Opening student track
Fhir tooling (grahame)
Distributing cds dev days-2017

Recently uploaded (20)

PDF
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
PPTX
Cell Structure & Organelles in detailed.
PPTX
human mycosis Human fungal infections are called human mycosis..pptx
PDF
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
PDF
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
PDF
01-Introduction-to-Information-Management.pdf
PPTX
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
PDF
2.FourierTransform-ShortQuestionswithAnswers.pdf
PDF
O5-L3 Freight Transport Ops (International) V1.pdf
PPTX
Microbial diseases, their pathogenesis and prophylaxis
PDF
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
PPTX
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
PDF
Supply Chain Operations Speaking Notes -ICLT Program
PDF
FourierSeries-QuestionsWithAnswers(Part-A).pdf
PDF
Pre independence Education in Inndia.pdf
PDF
Complications of Minimal Access Surgery at WLH
PPTX
Introduction_to_Human_Anatomy_and_Physiology_for_B.Pharm.pptx
PPTX
PPH.pptx obstetrics and gynecology in nursing
PDF
Computing-Curriculum for Schools in Ghana
PPTX
Final Presentation General Medicine 03-08-2024.pptx
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
Cell Structure & Organelles in detailed.
human mycosis Human fungal infections are called human mycosis..pptx
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
01-Introduction-to-Information-Management.pdf
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
2.FourierTransform-ShortQuestionswithAnswers.pdf
O5-L3 Freight Transport Ops (International) V1.pdf
Microbial diseases, their pathogenesis and prophylaxis
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
Supply Chain Operations Speaking Notes -ICLT Program
FourierSeries-QuestionsWithAnswers(Part-A).pdf
Pre independence Education in Inndia.pdf
Complications of Minimal Access Surgery at WLH
Introduction_to_Human_Anatomy_and_Physiology_for_B.Pharm.pptx
PPH.pptx obstetrics and gynecology in nursing
Computing-Curriculum for Schools in Ghana
Final Presentation General Medicine 03-08-2024.pptx

Fhir dev days_advanced_fhir_terminology_services

  • 1. Advanced FHIR Terminology Services, incl. SNOMED CT AUSTRALIAN E-HEALTH RESEARCH CENTRE, HEALTH & BIOSECURITY Michael Lawley, PhD | Research Group Leader 16 November 2017 FHIR® is the registered trademark of HL7 and is used with the permission of HL7. The Flame Design mark is the registered trademark of HL7 and is used with the permission of HL7.
  • 2. Who am I? • Australian eHealth Research Centre, CSIRO • SNOMED involvement since late 2000s • Technical Committee 2010-2015 • Modelling Advisory Group 2015-present • SNOMED Languages Project Group • SNOMED Logic Profile Working Group • SNOMED CT URI specification • Expression Constraint Language • Ontoserver, Shrimp, Snapper, Snorocket • Australia’s National Clinical Terminology Service
  • 6. Getting to know each other • Jim’s Practical Terminology Services this morning? • Used Terminology services? • Implemented any part of the Terminology subsystem? • SNOMED CT knowledge? • Other code system knowledge?
  • 7. FHIR Terminology - big picture Concept Map Defines a set of concepts with a coherent meaning src rel tgt Code System Defines a set of concepts with a coherent meaning url, version, name, … Filters, Properties Concepts • Code • Display • Definition Code System Defines a set of concepts with a coherent meaning url, version, name, … Filters, Properties Concepts • Code • Display • Definition Value Set A selection of a set of codes for use in a particular context Value Set A selection of a set of codes for use in a particular context
  • 8. Terminology in FHIR Search • A lot of search parameters in FHIR are of type ‘token’ • These can leverage terminology services • :above/:below • E.g.: /Condition?body-site:below=http://snomed.info/sct|272673000 (all Conditions where the finding site is a descendent of Bone Structure • :in/:not-in • E.g.: /ProcedureRequest?code:in=http://snomed.info/sct?fhir_vs=refset/3257036 1000036108 (all ProcedureRequests in the Imagine Procedure refset Basic Terminology Services | Jim Steel8 |
  • 10. SNOMED CT • 19 hierarchies • ~ 400K Concepts • ~ 1M Descriptions • 3 types • Fully Specified Name • Preferred term • Synonyms • ~ 65 Attributes • Combined in triplets forming ~ 1.5M relationships • ~ 125 relationship patterns
  • 12. Practical tips 1. Beware out-of-order responses 2. Minimise latency – Batch multiple operations for single round-trip – Also avoids need for client-side synchronisation 3. Minimise bandwidth – count for $expand – includeDefinition, includeDesignations on $expand – property for $lookup – _count, _elements for search / read operations – Accept-Encoding: gzip 4. GET can be cached (HTTP level), POST cannot Warning: A lot of these can be server-dependent. They’re not proprietary, but you should check support for them by your terminology server.
  • 13. Implicit ValueSets Defined for specific code systems SNOMED CT, LOINC, … http://snomed.info/sct?fhir_vs http://snomed.info/sct?fhir_vs=isa/{sctid} http://snomed.info/sct?fhir_vs=refset http://snomed.info/sct?fhir_vs=refset/{sctid}
  • 14. Typeahead controls https://plnkr.co/edit/wOjWbt <input uib-typeahead="suggestion for suggestion in concepts($viewValue, 'http://snomed.info/sct?fhir_vs=isa/138875005')” /> $scope.concepts = function(term, valueSet) { return $http.get( ‘https://ontoserver.csiro.au/stu3-latest/ValueSet/$expand', { params: { identifier: valueSet, filter: term, count: 15, '_format': 'json’ }, responseType: 'json’ }).then(function(response) { return response.data.expansion.contains || [{ display: term }]; });
  • 15. Typeahead controls https://plnkr.co/edit/wOjWbt <input uib-typeahead="suggestion for suggestion in concepts($viewValue, 'http://snomed.info/sct?fhir_vs=isa/73211009')” /> $scope.concepts = function(term, valueSet) { return $http.get( ‘https://ontoserver.csiro.au/stu3-latest/ValueSet/$expand', { params: { identifier: valueSet, filter: term, count: 5, '_format': 'json’ }, responseType: 'json’ }).then(function(response) { return response.data.expansion.contains || [{ display: term }]; });
  • 16. SNOMED CT Versioning • International release (6 monthly) • National releases (1-6 monthly) • Other releases Version is an Edition + Effective Time http://snomed.info/sct/{module}/version/{date}
  • 17. Branching version structure No single “latest” version INT US AU X Y Z time dependency
  • 18. Implicit ValueSets Defined for specific code systems SNOMED CT, LOINC, … http://snomed.info/sct?fhir_vs http://snomed.info/sct?fhir_vs=isa/{sctid} http://snomed.info/sct?fhir_vs=refset http://snomed.info/sct?fhir_vs=refset/{sctid}
  • 19. Implicit ValueSets Defined for specific code systems SNOMED CT, LOINC, … http://snomed.info/sct?fhir_vs http://snomed.info/sct?fhir_vs=isa/{sctid} http://snomed.info/sct?fhir_vs=refset http://snomed.info/sct?fhir_vs=refset/{sctid} http://snomed.info/sct/{module}
  • 20. Implicit ValueSets Defined for specific code systems SNOMED CT, LOINC, … http://snomed.info/sct?fhir_vs http://snomed.info/sct?fhir_vs=isa/{sctid} http://snomed.info/sct?fhir_vs=refset http://snomed.info/sct?fhir_vs=refset/{sctid} http://snomed.info/sct/{module}/version/{date}
  • 25. “Complex” ValueSets Cycles with ValueSet inclusion / exclusion Mixing codes from multiple code systems (don’t) Multiple versions of the same code system
  • 26. “Complex” ValueSets “compose”: { “include”: [{ “valueSet”: “http://snomed.info/sct/32506021000036107/version/ 20171031?fhir_vs=isa/138875005” }], “exclude”: [{ “valueSet”: “http://snomed.info/sct/32506021000036107/version/ 20170930?fhir_vs=isa/138875005” }],
  • 27. Expression Constraint Language (ECL) http://snomed.org/ecl Based on post coordination syntax Wildcard, descendants, ancestors, reference set members, cardinality constraints http://ontoserver.csiro.au/shrimp/ecl_help.html filter:[{property:’constraint’, op:’=‘, value: ‘…’ }]
  • 28. ECL brief summary Category Syntax Example Basic sctId, *, ^ sctId ^ 723264001 |lateralizable body structure| Hierarchy << sctId, < sctId, <! sctId, >> sctId, > sctId, >! sctId << 404684003 |clinical finding| Composition x AND y, x OR y, x MINUS y Relationships a : b = c, a : { b = c, d = e}, a.b << 404684003 : 363698007 |finding site| = ^ 723264001 Cardinality a : [low..high] b = c << 404684003 : [1..1] 363698007 = *
  • 29. SNOMED CT Post coordination http://snomed.org/scg 71620000|Fracture of femur|: 272741003|Laterality| = 7771000|Left| 74400008|Appendicitis|: 116676008|Associated morphology|= 4532008|Acute inflammation| 64572001|Disease|: { 116676008|Associated morphology|= 4532008|Acute inflammation|, 363698007|Finding site| = 66754008|Appendix structure| }
  • 30. CodeSystem operations $subsumes?codeA= &codeB= • equivalent, subsumes, subsumed-by, and not-subsumed • terminology server handles post coordination semantics $compose • “Given a set of properties, return one or more possible matching codes” Presentation title | Presenter name31 |
  • 31. http://hl7.org/fhir/terminology-service.html#closure Why? stateful?? Consider implementing search: [base]/Condition?code:below=126851005 [base]/Condition?code:in=http://snomed.info/sct%3Ffhir_vs %3Disa/126851005 join ConceptMap$closure TerminologyClinical Data
  • 32. $closure – usage flow • init • add set of codes • ConceptMap of hierarchy & equivalence [transitively closed] • add more codes • ConceptMap of additional hierarchy & equivalence • … • resynchronisation • {} • 0: {} • {a, c} • 1: {a subsumes c} • {b, d} • 2: {a subsumes b, b subsumes c, a subsumes d}
  • 33. code:below • Use $closure to maintain local edge-table of parent-child relationships • code:below=123 SELECT C.* FROM Condition C, Edges E WHERE C.code = 123 OR (E.parent = 123 AND C.code = E.child);
  • 34. Code Mnemonic Code Mnemonic equivalent wider equal subsumes inexact narrower unmatched specializes disjoint relatedto ConceptMap - equivalence relationships TS TS S T S T TS S TS TS S=T TS
  • 35. • Shrimp – search & browse SNOMED CT, LOINC, ... – http://ontoserver.csiro.au/shrimp • Ontoserver – powerful features, simple to deploy & use – ECL queries – http://ontoserver.csiro.au/shrimp/ecl.html e.g., concepts with finding site of appendix structure • Snapper:Author – Author (simple) FHIR Terminology Resources • Snorocket – Description Logic reasoning engine Tooling summary

Editor's Notes

  • #2: This tutorial presents advanced use of clinical terminology services in FHIR including SNOMED CT-specific features. It covers implicit and explicit ValueSets and ConceptMaps, complex ValueSet definitions, and the use of SNOMED CT's Expression Constraint Language (ECL) in ValueSet definitions. We will also cover the use of $closure to support subsumption-based querying of patient data. 
  • #4: Free service, hosted by CSIRO
  • #5: Separately licensable
  • #6: Free service, hosted by CSIRO Issues with CORS
  • #12: All using FHIR APIs $expand + filter $expand $lookup $translate
  • #14: All codes (including inactives) Codes by subsumption (so no inactives) All reference sets Members of a reference set
  • #16: Descendants of diabetes
  • #18: Not problems with SCT in FHIR, but problems with SCT that are highlighted and brought to the fore by the success of FHIR
  • #19: All codes (including inactives) Codes by subsumption (so no inactives) All reference sets Members of a reference set
  • #22: Can specify CodeSystem version in ValueSet definition (normally don’t want to do this) lockedDate doesn’t work for code systems like SNOMED CT Also not easy for code systems with version formats that are not date-based
  • #23: Can specify alternate display text Observed support is patchy
  • #24: Multiple filters in an include – ALL must be true
  • #25: Multiple ValueSets – must be in all of them
  • #26: Excludes -
  • #27: Excludes -
  • #30: primitive & fully defined sufficient conditions
  • #31: SCG – SNOMED CT Compositional Grammar Focus concept Attribute name Attribute value “grouping” / “role grouping” subsumption
  • #33: Tumor of liver
  • #38: Snorocket, used by IHTSDO & NEHTA