basic fhir terminology services - home - fhir devdays · 2019-03-19 · terminology: why...
TRANSCRIPT
Basic FHIR Terminology Services
AUSTRALIAN E-HEALTH RESEARCH CENTRE HEALTH amp BIOSECURITY
Jim Steel PhD| Senior Software Engineer16 November 2017
FHIRreg 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
Terminology Basicsbull Why terminology Why a terminology servicebull Brief FHIR recap SCRUD Operationsbull Terminology Resources amp Operations
bull CodeSystem structure $lookup $expandbull ValueSet structure $expand $validate-codebull Standardised terminologies (brief overview)bull ConceptMap structure $translate
bull Tips amp Tricksbull Terminology in search
bull Codeabovebelow codeinnot-in
bull Use Cases
Basic Terminology Services | Jim Steel3 |
Terminology whybull Terminology is the basis of shared meaning between different
systemsbull StructureDefinitions are the bones but terminology defines what goes on
them
bull Terminology (especially ValueSets) is a very important part of defining FHIR profiles
bull Especially in a large integrated system having a single reference for terminology is very valuable for interoperability
bull Externalized terminology makes it much easier to update terminology when it is updatedchanges
Basic Terminology Services | Jim Steel4 |
FHIR Basicsbull SCRUD
bull Search GET ResourcesearchParams or POST Resource_searchbull Create POST Resourcebull Read GET Resourceid (or Resourceid_historyn for VRead)bull Update PUT Resourceidbull Delete DELETE Resourceid
bull Operationsbull GETPOST $operation or Resource$operation or Resourceid$operation
ndash Any parameters go in a lsquoParametersrsquo resource in the request bodybull GET only for idempotent (all can POST)
ndash Can be cached using HTTP cachingbull Servertypeinstance-level depending on the operation
Basic Terminology Services | Jim Steel5 |
CodeSystembull Collection of terms
bull Identified by a URI (and version)
bull Typically in some kind of hierarchy
bull Properties filters
bull Can be infinite
bull Standardised (SNOMED-CT LOINC RxNorm ICD etc) or custom
Basic Terminology Services | Jim Steel6 |
CodeSystem Structure
Basic Terminology Services | Jim Steel7 |
CodeSystem Structure (cont)
Basic Terminology Services | Jim Steel8 |
CodeSystem Structure (cont)
Basic Terminology Services | Jim Steel9 |
CodeSystem example
Basic Terminology Services | Jim Steel10 |
Basic Terminology Services | Jim Steel11 |
CodeSystem example (cont)
Basic Terminology Services | Jim Steel12 |
CodeSystem example (cont)
CodeSystem operations $lookupbull Type level only idempotent (GETPOST CodeSystem$lookup)
bull Retrieve details about a code (as codesystemversion or Coding)
bull Can be used to determine whether a code exists in the CodeSystem
bull Can be used to retrieve specificall propertiesdesignations
Basic Terminology Services | Jim Steel13 |
$lookup exampleGET httpsontoservercsiroaustu3-latestCodeSystem$lookupsystem=httpcsiroaucsau-jurisdictionsampcode=WAampproperty=displayampproperty=capital
Basic Terminology Services | Jim Steel14 |
CodeSystem operations $subsumesbull Type or instance level idempotent
bull GET CodeSystemid$subsumes
bull POST CodeSystem$subsumes (must have lsquosystemrsquo parameter)
bull Check what (if any) subsumption relationship exists between two codesbull codeA and codeB as codesystemversion or codingA and codingB
bull Result will be lsquoequivalentrsquo lsquosubsumesrsquo lsquosubsumed_byrsquo lsquonot_subsumedrsquo
bull Depends on the code systemrsquos lsquohierarchyMeaningrsquo
bull Can also use $closure see the advanced talk
Basic Terminology Services | Jim Steel15 |
$subsumes exampleGET httpsontoservercsiroaustu3-latestCodeSystem$subsumessystem=httpcsiroaucsau-jurisdictionsampcodeA=AUampcodeB=QLD
Basic Terminology Services | Jim Steel16 |
ValueSetbull A set of codes drawn from one or more CodeSystems
bull Can be used to define a set of codes (rsquocomposersquo)
bull Can be used to represent the result of an expansion of a ValueSet(lsquoexpansionrsquo)
Basic Terminology Services | Jim Steel17 |
ValueSet Structure
Basic Terminology Services | Jim Steel18 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel19 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel20 |
ValueSet example definition
Basic Terminology Services | Jim Steel21 |
Valueset operations $expandbull Type or instance level idempotent
bull GETPOST ValueSet$expand (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$expand
bull Retrieve the expansion of the ValueSet subject to a number of parametersbull Result is a ValueSet with an lsquoexpansionrsquo element
bull Parameters include filter count offset includeDesignations includeDefinition activeOnly excludeNested excludeNotForUI excludePostCoordinated displayLanguage limitedExpansion profile
bull This is the mainbest way to search for a code
Basic Terminology Services | Jim Steel22 |
$expand examplePOST httpsontoservercsiroaustu3-latestValueSet$expand (with the resource in the body)
Basic Terminology Services | Jim Steel23 |
ValueSet operations $validate-codebull Type or instance level idempotent
bull GETPOST ValueSet$validate-code (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$validate-code
bull Validate a code (and display text) against a ValueSetbull Determine whether the code is included in the ValueSet
bull (optionally) Determine whether the provided display text is the correct display text for the code
bull Code as codesystemversion or coding or CodeableConcept (multiple)
bull This is the main method for validating coded data
Basic Terminology Services | Jim Steel24 |
$validate-code examplePOST httpsontoservercsiroaustu3-latestValueSet$validate-code
Basic Terminology Services | Jim Steel25 |
Basic Terminology Services | Jim Steel26 |
$validate-code example (cont)
Well-known Terminologiesbull Terminologies such as SNOMED-CT LOINC RxNorm have specific
mappings into FHIR terminology resources with standardisedCodeSystemsbull Standard CodeSystem filtersproperties
bull Implicit ValueSets
bull Implicit ConceptMaps
Basic Terminology Services | Jim Steel27 |
Well-known Terminologies SNOMED-CTbull httpsnomedinfosct([edition](version[date]))bull Filters by subsumption by refset by ECL expressionbull Implicit ValueSets
bull All codes httpsnomedinfosctfhir_vs
bull By subsumption httpsnomedinfosctfhir_vs=isa404684003
bull List of refsets httpsnomedinfosctfhir_vs=refset
bull All codes in a refset httpsnomedinfosctfhir_vs=refset734138000
bull Implicit ConceptMapsbull Historical associations httpsnomedinfosctfhir_cm=900000000000527005
bull For more detail see the advanced session
Basic Terminology Services | Jim Steel28 |
Well-known Terminologies LOINCbull httploincorg
bull Filters parts copyright status multi-axial hierarchy
bull Implicit ValueSetsbull All LOINC codes httploincorgvs
bull Answer Lists httploincorgvsLL715-4
bull Hierarchy httploincorgvsLP29693-6
Basic Terminology Services | Jim Steel29 |
ConceptMapbull Represents a code-to-code mapping typically from a source
ValueSet to a target ValueSet
Basic Terminology Services | Jim Steel30 |
ConceptMap Structure
Basic Terminology Services | Jim Steel31 |
ConceptMap Structure (cont)
Basic Terminology Services | Jim Steel32 |
ConceptMap example
Basic Terminology Services | Jim Steel33 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
Terminology Basicsbull Why terminology Why a terminology servicebull Brief FHIR recap SCRUD Operationsbull Terminology Resources amp Operations
bull CodeSystem structure $lookup $expandbull ValueSet structure $expand $validate-codebull Standardised terminologies (brief overview)bull ConceptMap structure $translate
bull Tips amp Tricksbull Terminology in search
bull Codeabovebelow codeinnot-in
bull Use Cases
Basic Terminology Services | Jim Steel3 |
Terminology whybull Terminology is the basis of shared meaning between different
systemsbull StructureDefinitions are the bones but terminology defines what goes on
them
bull Terminology (especially ValueSets) is a very important part of defining FHIR profiles
bull Especially in a large integrated system having a single reference for terminology is very valuable for interoperability
bull Externalized terminology makes it much easier to update terminology when it is updatedchanges
Basic Terminology Services | Jim Steel4 |
FHIR Basicsbull SCRUD
bull Search GET ResourcesearchParams or POST Resource_searchbull Create POST Resourcebull Read GET Resourceid (or Resourceid_historyn for VRead)bull Update PUT Resourceidbull Delete DELETE Resourceid
bull Operationsbull GETPOST $operation or Resource$operation or Resourceid$operation
ndash Any parameters go in a lsquoParametersrsquo resource in the request bodybull GET only for idempotent (all can POST)
ndash Can be cached using HTTP cachingbull Servertypeinstance-level depending on the operation
Basic Terminology Services | Jim Steel5 |
CodeSystembull Collection of terms
bull Identified by a URI (and version)
bull Typically in some kind of hierarchy
bull Properties filters
bull Can be infinite
bull Standardised (SNOMED-CT LOINC RxNorm ICD etc) or custom
Basic Terminology Services | Jim Steel6 |
CodeSystem Structure
Basic Terminology Services | Jim Steel7 |
CodeSystem Structure (cont)
Basic Terminology Services | Jim Steel8 |
CodeSystem Structure (cont)
Basic Terminology Services | Jim Steel9 |
CodeSystem example
Basic Terminology Services | Jim Steel10 |
Basic Terminology Services | Jim Steel11 |
CodeSystem example (cont)
Basic Terminology Services | Jim Steel12 |
CodeSystem example (cont)
CodeSystem operations $lookupbull Type level only idempotent (GETPOST CodeSystem$lookup)
bull Retrieve details about a code (as codesystemversion or Coding)
bull Can be used to determine whether a code exists in the CodeSystem
bull Can be used to retrieve specificall propertiesdesignations
Basic Terminology Services | Jim Steel13 |
$lookup exampleGET httpsontoservercsiroaustu3-latestCodeSystem$lookupsystem=httpcsiroaucsau-jurisdictionsampcode=WAampproperty=displayampproperty=capital
Basic Terminology Services | Jim Steel14 |
CodeSystem operations $subsumesbull Type or instance level idempotent
bull GET CodeSystemid$subsumes
bull POST CodeSystem$subsumes (must have lsquosystemrsquo parameter)
bull Check what (if any) subsumption relationship exists between two codesbull codeA and codeB as codesystemversion or codingA and codingB
bull Result will be lsquoequivalentrsquo lsquosubsumesrsquo lsquosubsumed_byrsquo lsquonot_subsumedrsquo
bull Depends on the code systemrsquos lsquohierarchyMeaningrsquo
bull Can also use $closure see the advanced talk
Basic Terminology Services | Jim Steel15 |
$subsumes exampleGET httpsontoservercsiroaustu3-latestCodeSystem$subsumessystem=httpcsiroaucsau-jurisdictionsampcodeA=AUampcodeB=QLD
Basic Terminology Services | Jim Steel16 |
ValueSetbull A set of codes drawn from one or more CodeSystems
bull Can be used to define a set of codes (rsquocomposersquo)
bull Can be used to represent the result of an expansion of a ValueSet(lsquoexpansionrsquo)
Basic Terminology Services | Jim Steel17 |
ValueSet Structure
Basic Terminology Services | Jim Steel18 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel19 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel20 |
ValueSet example definition
Basic Terminology Services | Jim Steel21 |
Valueset operations $expandbull Type or instance level idempotent
bull GETPOST ValueSet$expand (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$expand
bull Retrieve the expansion of the ValueSet subject to a number of parametersbull Result is a ValueSet with an lsquoexpansionrsquo element
bull Parameters include filter count offset includeDesignations includeDefinition activeOnly excludeNested excludeNotForUI excludePostCoordinated displayLanguage limitedExpansion profile
bull This is the mainbest way to search for a code
Basic Terminology Services | Jim Steel22 |
$expand examplePOST httpsontoservercsiroaustu3-latestValueSet$expand (with the resource in the body)
Basic Terminology Services | Jim Steel23 |
ValueSet operations $validate-codebull Type or instance level idempotent
bull GETPOST ValueSet$validate-code (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$validate-code
bull Validate a code (and display text) against a ValueSetbull Determine whether the code is included in the ValueSet
bull (optionally) Determine whether the provided display text is the correct display text for the code
bull Code as codesystemversion or coding or CodeableConcept (multiple)
bull This is the main method for validating coded data
Basic Terminology Services | Jim Steel24 |
$validate-code examplePOST httpsontoservercsiroaustu3-latestValueSet$validate-code
Basic Terminology Services | Jim Steel25 |
Basic Terminology Services | Jim Steel26 |
$validate-code example (cont)
Well-known Terminologiesbull Terminologies such as SNOMED-CT LOINC RxNorm have specific
mappings into FHIR terminology resources with standardisedCodeSystemsbull Standard CodeSystem filtersproperties
bull Implicit ValueSets
bull Implicit ConceptMaps
Basic Terminology Services | Jim Steel27 |
Well-known Terminologies SNOMED-CTbull httpsnomedinfosct([edition](version[date]))bull Filters by subsumption by refset by ECL expressionbull Implicit ValueSets
bull All codes httpsnomedinfosctfhir_vs
bull By subsumption httpsnomedinfosctfhir_vs=isa404684003
bull List of refsets httpsnomedinfosctfhir_vs=refset
bull All codes in a refset httpsnomedinfosctfhir_vs=refset734138000
bull Implicit ConceptMapsbull Historical associations httpsnomedinfosctfhir_cm=900000000000527005
bull For more detail see the advanced session
Basic Terminology Services | Jim Steel28 |
Well-known Terminologies LOINCbull httploincorg
bull Filters parts copyright status multi-axial hierarchy
bull Implicit ValueSetsbull All LOINC codes httploincorgvs
bull Answer Lists httploincorgvsLL715-4
bull Hierarchy httploincorgvsLP29693-6
Basic Terminology Services | Jim Steel29 |
ConceptMapbull Represents a code-to-code mapping typically from a source
ValueSet to a target ValueSet
Basic Terminology Services | Jim Steel30 |
ConceptMap Structure
Basic Terminology Services | Jim Steel31 |
ConceptMap Structure (cont)
Basic Terminology Services | Jim Steel32 |
ConceptMap example
Basic Terminology Services | Jim Steel33 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
Terminology whybull Terminology is the basis of shared meaning between different
systemsbull StructureDefinitions are the bones but terminology defines what goes on
them
bull Terminology (especially ValueSets) is a very important part of defining FHIR profiles
bull Especially in a large integrated system having a single reference for terminology is very valuable for interoperability
bull Externalized terminology makes it much easier to update terminology when it is updatedchanges
Basic Terminology Services | Jim Steel4 |
FHIR Basicsbull SCRUD
bull Search GET ResourcesearchParams or POST Resource_searchbull Create POST Resourcebull Read GET Resourceid (or Resourceid_historyn for VRead)bull Update PUT Resourceidbull Delete DELETE Resourceid
bull Operationsbull GETPOST $operation or Resource$operation or Resourceid$operation
ndash Any parameters go in a lsquoParametersrsquo resource in the request bodybull GET only for idempotent (all can POST)
ndash Can be cached using HTTP cachingbull Servertypeinstance-level depending on the operation
Basic Terminology Services | Jim Steel5 |
CodeSystembull Collection of terms
bull Identified by a URI (and version)
bull Typically in some kind of hierarchy
bull Properties filters
bull Can be infinite
bull Standardised (SNOMED-CT LOINC RxNorm ICD etc) or custom
Basic Terminology Services | Jim Steel6 |
CodeSystem Structure
Basic Terminology Services | Jim Steel7 |
CodeSystem Structure (cont)
Basic Terminology Services | Jim Steel8 |
CodeSystem Structure (cont)
Basic Terminology Services | Jim Steel9 |
CodeSystem example
Basic Terminology Services | Jim Steel10 |
Basic Terminology Services | Jim Steel11 |
CodeSystem example (cont)
Basic Terminology Services | Jim Steel12 |
CodeSystem example (cont)
CodeSystem operations $lookupbull Type level only idempotent (GETPOST CodeSystem$lookup)
bull Retrieve details about a code (as codesystemversion or Coding)
bull Can be used to determine whether a code exists in the CodeSystem
bull Can be used to retrieve specificall propertiesdesignations
Basic Terminology Services | Jim Steel13 |
$lookup exampleGET httpsontoservercsiroaustu3-latestCodeSystem$lookupsystem=httpcsiroaucsau-jurisdictionsampcode=WAampproperty=displayampproperty=capital
Basic Terminology Services | Jim Steel14 |
CodeSystem operations $subsumesbull Type or instance level idempotent
bull GET CodeSystemid$subsumes
bull POST CodeSystem$subsumes (must have lsquosystemrsquo parameter)
bull Check what (if any) subsumption relationship exists between two codesbull codeA and codeB as codesystemversion or codingA and codingB
bull Result will be lsquoequivalentrsquo lsquosubsumesrsquo lsquosubsumed_byrsquo lsquonot_subsumedrsquo
bull Depends on the code systemrsquos lsquohierarchyMeaningrsquo
bull Can also use $closure see the advanced talk
Basic Terminology Services | Jim Steel15 |
$subsumes exampleGET httpsontoservercsiroaustu3-latestCodeSystem$subsumessystem=httpcsiroaucsau-jurisdictionsampcodeA=AUampcodeB=QLD
Basic Terminology Services | Jim Steel16 |
ValueSetbull A set of codes drawn from one or more CodeSystems
bull Can be used to define a set of codes (rsquocomposersquo)
bull Can be used to represent the result of an expansion of a ValueSet(lsquoexpansionrsquo)
Basic Terminology Services | Jim Steel17 |
ValueSet Structure
Basic Terminology Services | Jim Steel18 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel19 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel20 |
ValueSet example definition
Basic Terminology Services | Jim Steel21 |
Valueset operations $expandbull Type or instance level idempotent
bull GETPOST ValueSet$expand (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$expand
bull Retrieve the expansion of the ValueSet subject to a number of parametersbull Result is a ValueSet with an lsquoexpansionrsquo element
bull Parameters include filter count offset includeDesignations includeDefinition activeOnly excludeNested excludeNotForUI excludePostCoordinated displayLanguage limitedExpansion profile
bull This is the mainbest way to search for a code
Basic Terminology Services | Jim Steel22 |
$expand examplePOST httpsontoservercsiroaustu3-latestValueSet$expand (with the resource in the body)
Basic Terminology Services | Jim Steel23 |
ValueSet operations $validate-codebull Type or instance level idempotent
bull GETPOST ValueSet$validate-code (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$validate-code
bull Validate a code (and display text) against a ValueSetbull Determine whether the code is included in the ValueSet
bull (optionally) Determine whether the provided display text is the correct display text for the code
bull Code as codesystemversion or coding or CodeableConcept (multiple)
bull This is the main method for validating coded data
Basic Terminology Services | Jim Steel24 |
$validate-code examplePOST httpsontoservercsiroaustu3-latestValueSet$validate-code
Basic Terminology Services | Jim Steel25 |
Basic Terminology Services | Jim Steel26 |
$validate-code example (cont)
Well-known Terminologiesbull Terminologies such as SNOMED-CT LOINC RxNorm have specific
mappings into FHIR terminology resources with standardisedCodeSystemsbull Standard CodeSystem filtersproperties
bull Implicit ValueSets
bull Implicit ConceptMaps
Basic Terminology Services | Jim Steel27 |
Well-known Terminologies SNOMED-CTbull httpsnomedinfosct([edition](version[date]))bull Filters by subsumption by refset by ECL expressionbull Implicit ValueSets
bull All codes httpsnomedinfosctfhir_vs
bull By subsumption httpsnomedinfosctfhir_vs=isa404684003
bull List of refsets httpsnomedinfosctfhir_vs=refset
bull All codes in a refset httpsnomedinfosctfhir_vs=refset734138000
bull Implicit ConceptMapsbull Historical associations httpsnomedinfosctfhir_cm=900000000000527005
bull For more detail see the advanced session
Basic Terminology Services | Jim Steel28 |
Well-known Terminologies LOINCbull httploincorg
bull Filters parts copyright status multi-axial hierarchy
bull Implicit ValueSetsbull All LOINC codes httploincorgvs
bull Answer Lists httploincorgvsLL715-4
bull Hierarchy httploincorgvsLP29693-6
Basic Terminology Services | Jim Steel29 |
ConceptMapbull Represents a code-to-code mapping typically from a source
ValueSet to a target ValueSet
Basic Terminology Services | Jim Steel30 |
ConceptMap Structure
Basic Terminology Services | Jim Steel31 |
ConceptMap Structure (cont)
Basic Terminology Services | Jim Steel32 |
ConceptMap example
Basic Terminology Services | Jim Steel33 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
FHIR Basicsbull SCRUD
bull Search GET ResourcesearchParams or POST Resource_searchbull Create POST Resourcebull Read GET Resourceid (or Resourceid_historyn for VRead)bull Update PUT Resourceidbull Delete DELETE Resourceid
bull Operationsbull GETPOST $operation or Resource$operation or Resourceid$operation
ndash Any parameters go in a lsquoParametersrsquo resource in the request bodybull GET only for idempotent (all can POST)
ndash Can be cached using HTTP cachingbull Servertypeinstance-level depending on the operation
Basic Terminology Services | Jim Steel5 |
CodeSystembull Collection of terms
bull Identified by a URI (and version)
bull Typically in some kind of hierarchy
bull Properties filters
bull Can be infinite
bull Standardised (SNOMED-CT LOINC RxNorm ICD etc) or custom
Basic Terminology Services | Jim Steel6 |
CodeSystem Structure
Basic Terminology Services | Jim Steel7 |
CodeSystem Structure (cont)
Basic Terminology Services | Jim Steel8 |
CodeSystem Structure (cont)
Basic Terminology Services | Jim Steel9 |
CodeSystem example
Basic Terminology Services | Jim Steel10 |
Basic Terminology Services | Jim Steel11 |
CodeSystem example (cont)
Basic Terminology Services | Jim Steel12 |
CodeSystem example (cont)
CodeSystem operations $lookupbull Type level only idempotent (GETPOST CodeSystem$lookup)
bull Retrieve details about a code (as codesystemversion or Coding)
bull Can be used to determine whether a code exists in the CodeSystem
bull Can be used to retrieve specificall propertiesdesignations
Basic Terminology Services | Jim Steel13 |
$lookup exampleGET httpsontoservercsiroaustu3-latestCodeSystem$lookupsystem=httpcsiroaucsau-jurisdictionsampcode=WAampproperty=displayampproperty=capital
Basic Terminology Services | Jim Steel14 |
CodeSystem operations $subsumesbull Type or instance level idempotent
bull GET CodeSystemid$subsumes
bull POST CodeSystem$subsumes (must have lsquosystemrsquo parameter)
bull Check what (if any) subsumption relationship exists between two codesbull codeA and codeB as codesystemversion or codingA and codingB
bull Result will be lsquoequivalentrsquo lsquosubsumesrsquo lsquosubsumed_byrsquo lsquonot_subsumedrsquo
bull Depends on the code systemrsquos lsquohierarchyMeaningrsquo
bull Can also use $closure see the advanced talk
Basic Terminology Services | Jim Steel15 |
$subsumes exampleGET httpsontoservercsiroaustu3-latestCodeSystem$subsumessystem=httpcsiroaucsau-jurisdictionsampcodeA=AUampcodeB=QLD
Basic Terminology Services | Jim Steel16 |
ValueSetbull A set of codes drawn from one or more CodeSystems
bull Can be used to define a set of codes (rsquocomposersquo)
bull Can be used to represent the result of an expansion of a ValueSet(lsquoexpansionrsquo)
Basic Terminology Services | Jim Steel17 |
ValueSet Structure
Basic Terminology Services | Jim Steel18 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel19 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel20 |
ValueSet example definition
Basic Terminology Services | Jim Steel21 |
Valueset operations $expandbull Type or instance level idempotent
bull GETPOST ValueSet$expand (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$expand
bull Retrieve the expansion of the ValueSet subject to a number of parametersbull Result is a ValueSet with an lsquoexpansionrsquo element
bull Parameters include filter count offset includeDesignations includeDefinition activeOnly excludeNested excludeNotForUI excludePostCoordinated displayLanguage limitedExpansion profile
bull This is the mainbest way to search for a code
Basic Terminology Services | Jim Steel22 |
$expand examplePOST httpsontoservercsiroaustu3-latestValueSet$expand (with the resource in the body)
Basic Terminology Services | Jim Steel23 |
ValueSet operations $validate-codebull Type or instance level idempotent
bull GETPOST ValueSet$validate-code (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$validate-code
bull Validate a code (and display text) against a ValueSetbull Determine whether the code is included in the ValueSet
bull (optionally) Determine whether the provided display text is the correct display text for the code
bull Code as codesystemversion or coding or CodeableConcept (multiple)
bull This is the main method for validating coded data
Basic Terminology Services | Jim Steel24 |
$validate-code examplePOST httpsontoservercsiroaustu3-latestValueSet$validate-code
Basic Terminology Services | Jim Steel25 |
Basic Terminology Services | Jim Steel26 |
$validate-code example (cont)
Well-known Terminologiesbull Terminologies such as SNOMED-CT LOINC RxNorm have specific
mappings into FHIR terminology resources with standardisedCodeSystemsbull Standard CodeSystem filtersproperties
bull Implicit ValueSets
bull Implicit ConceptMaps
Basic Terminology Services | Jim Steel27 |
Well-known Terminologies SNOMED-CTbull httpsnomedinfosct([edition](version[date]))bull Filters by subsumption by refset by ECL expressionbull Implicit ValueSets
bull All codes httpsnomedinfosctfhir_vs
bull By subsumption httpsnomedinfosctfhir_vs=isa404684003
bull List of refsets httpsnomedinfosctfhir_vs=refset
bull All codes in a refset httpsnomedinfosctfhir_vs=refset734138000
bull Implicit ConceptMapsbull Historical associations httpsnomedinfosctfhir_cm=900000000000527005
bull For more detail see the advanced session
Basic Terminology Services | Jim Steel28 |
Well-known Terminologies LOINCbull httploincorg
bull Filters parts copyright status multi-axial hierarchy
bull Implicit ValueSetsbull All LOINC codes httploincorgvs
bull Answer Lists httploincorgvsLL715-4
bull Hierarchy httploincorgvsLP29693-6
Basic Terminology Services | Jim Steel29 |
ConceptMapbull Represents a code-to-code mapping typically from a source
ValueSet to a target ValueSet
Basic Terminology Services | Jim Steel30 |
ConceptMap Structure
Basic Terminology Services | Jim Steel31 |
ConceptMap Structure (cont)
Basic Terminology Services | Jim Steel32 |
ConceptMap example
Basic Terminology Services | Jim Steel33 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
CodeSystembull Collection of terms
bull Identified by a URI (and version)
bull Typically in some kind of hierarchy
bull Properties filters
bull Can be infinite
bull Standardised (SNOMED-CT LOINC RxNorm ICD etc) or custom
Basic Terminology Services | Jim Steel6 |
CodeSystem Structure
Basic Terminology Services | Jim Steel7 |
CodeSystem Structure (cont)
Basic Terminology Services | Jim Steel8 |
CodeSystem Structure (cont)
Basic Terminology Services | Jim Steel9 |
CodeSystem example
Basic Terminology Services | Jim Steel10 |
Basic Terminology Services | Jim Steel11 |
CodeSystem example (cont)
Basic Terminology Services | Jim Steel12 |
CodeSystem example (cont)
CodeSystem operations $lookupbull Type level only idempotent (GETPOST CodeSystem$lookup)
bull Retrieve details about a code (as codesystemversion or Coding)
bull Can be used to determine whether a code exists in the CodeSystem
bull Can be used to retrieve specificall propertiesdesignations
Basic Terminology Services | Jim Steel13 |
$lookup exampleGET httpsontoservercsiroaustu3-latestCodeSystem$lookupsystem=httpcsiroaucsau-jurisdictionsampcode=WAampproperty=displayampproperty=capital
Basic Terminology Services | Jim Steel14 |
CodeSystem operations $subsumesbull Type or instance level idempotent
bull GET CodeSystemid$subsumes
bull POST CodeSystem$subsumes (must have lsquosystemrsquo parameter)
bull Check what (if any) subsumption relationship exists between two codesbull codeA and codeB as codesystemversion or codingA and codingB
bull Result will be lsquoequivalentrsquo lsquosubsumesrsquo lsquosubsumed_byrsquo lsquonot_subsumedrsquo
bull Depends on the code systemrsquos lsquohierarchyMeaningrsquo
bull Can also use $closure see the advanced talk
Basic Terminology Services | Jim Steel15 |
$subsumes exampleGET httpsontoservercsiroaustu3-latestCodeSystem$subsumessystem=httpcsiroaucsau-jurisdictionsampcodeA=AUampcodeB=QLD
Basic Terminology Services | Jim Steel16 |
ValueSetbull A set of codes drawn from one or more CodeSystems
bull Can be used to define a set of codes (rsquocomposersquo)
bull Can be used to represent the result of an expansion of a ValueSet(lsquoexpansionrsquo)
Basic Terminology Services | Jim Steel17 |
ValueSet Structure
Basic Terminology Services | Jim Steel18 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel19 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel20 |
ValueSet example definition
Basic Terminology Services | Jim Steel21 |
Valueset operations $expandbull Type or instance level idempotent
bull GETPOST ValueSet$expand (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$expand
bull Retrieve the expansion of the ValueSet subject to a number of parametersbull Result is a ValueSet with an lsquoexpansionrsquo element
bull Parameters include filter count offset includeDesignations includeDefinition activeOnly excludeNested excludeNotForUI excludePostCoordinated displayLanguage limitedExpansion profile
bull This is the mainbest way to search for a code
Basic Terminology Services | Jim Steel22 |
$expand examplePOST httpsontoservercsiroaustu3-latestValueSet$expand (with the resource in the body)
Basic Terminology Services | Jim Steel23 |
ValueSet operations $validate-codebull Type or instance level idempotent
bull GETPOST ValueSet$validate-code (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$validate-code
bull Validate a code (and display text) against a ValueSetbull Determine whether the code is included in the ValueSet
bull (optionally) Determine whether the provided display text is the correct display text for the code
bull Code as codesystemversion or coding or CodeableConcept (multiple)
bull This is the main method for validating coded data
Basic Terminology Services | Jim Steel24 |
$validate-code examplePOST httpsontoservercsiroaustu3-latestValueSet$validate-code
Basic Terminology Services | Jim Steel25 |
Basic Terminology Services | Jim Steel26 |
$validate-code example (cont)
Well-known Terminologiesbull Terminologies such as SNOMED-CT LOINC RxNorm have specific
mappings into FHIR terminology resources with standardisedCodeSystemsbull Standard CodeSystem filtersproperties
bull Implicit ValueSets
bull Implicit ConceptMaps
Basic Terminology Services | Jim Steel27 |
Well-known Terminologies SNOMED-CTbull httpsnomedinfosct([edition](version[date]))bull Filters by subsumption by refset by ECL expressionbull Implicit ValueSets
bull All codes httpsnomedinfosctfhir_vs
bull By subsumption httpsnomedinfosctfhir_vs=isa404684003
bull List of refsets httpsnomedinfosctfhir_vs=refset
bull All codes in a refset httpsnomedinfosctfhir_vs=refset734138000
bull Implicit ConceptMapsbull Historical associations httpsnomedinfosctfhir_cm=900000000000527005
bull For more detail see the advanced session
Basic Terminology Services | Jim Steel28 |
Well-known Terminologies LOINCbull httploincorg
bull Filters parts copyright status multi-axial hierarchy
bull Implicit ValueSetsbull All LOINC codes httploincorgvs
bull Answer Lists httploincorgvsLL715-4
bull Hierarchy httploincorgvsLP29693-6
Basic Terminology Services | Jim Steel29 |
ConceptMapbull Represents a code-to-code mapping typically from a source
ValueSet to a target ValueSet
Basic Terminology Services | Jim Steel30 |
ConceptMap Structure
Basic Terminology Services | Jim Steel31 |
ConceptMap Structure (cont)
Basic Terminology Services | Jim Steel32 |
ConceptMap example
Basic Terminology Services | Jim Steel33 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
CodeSystem Structure
Basic Terminology Services | Jim Steel7 |
CodeSystem Structure (cont)
Basic Terminology Services | Jim Steel8 |
CodeSystem Structure (cont)
Basic Terminology Services | Jim Steel9 |
CodeSystem example
Basic Terminology Services | Jim Steel10 |
Basic Terminology Services | Jim Steel11 |
CodeSystem example (cont)
Basic Terminology Services | Jim Steel12 |
CodeSystem example (cont)
CodeSystem operations $lookupbull Type level only idempotent (GETPOST CodeSystem$lookup)
bull Retrieve details about a code (as codesystemversion or Coding)
bull Can be used to determine whether a code exists in the CodeSystem
bull Can be used to retrieve specificall propertiesdesignations
Basic Terminology Services | Jim Steel13 |
$lookup exampleGET httpsontoservercsiroaustu3-latestCodeSystem$lookupsystem=httpcsiroaucsau-jurisdictionsampcode=WAampproperty=displayampproperty=capital
Basic Terminology Services | Jim Steel14 |
CodeSystem operations $subsumesbull Type or instance level idempotent
bull GET CodeSystemid$subsumes
bull POST CodeSystem$subsumes (must have lsquosystemrsquo parameter)
bull Check what (if any) subsumption relationship exists between two codesbull codeA and codeB as codesystemversion or codingA and codingB
bull Result will be lsquoequivalentrsquo lsquosubsumesrsquo lsquosubsumed_byrsquo lsquonot_subsumedrsquo
bull Depends on the code systemrsquos lsquohierarchyMeaningrsquo
bull Can also use $closure see the advanced talk
Basic Terminology Services | Jim Steel15 |
$subsumes exampleGET httpsontoservercsiroaustu3-latestCodeSystem$subsumessystem=httpcsiroaucsau-jurisdictionsampcodeA=AUampcodeB=QLD
Basic Terminology Services | Jim Steel16 |
ValueSetbull A set of codes drawn from one or more CodeSystems
bull Can be used to define a set of codes (rsquocomposersquo)
bull Can be used to represent the result of an expansion of a ValueSet(lsquoexpansionrsquo)
Basic Terminology Services | Jim Steel17 |
ValueSet Structure
Basic Terminology Services | Jim Steel18 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel19 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel20 |
ValueSet example definition
Basic Terminology Services | Jim Steel21 |
Valueset operations $expandbull Type or instance level idempotent
bull GETPOST ValueSet$expand (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$expand
bull Retrieve the expansion of the ValueSet subject to a number of parametersbull Result is a ValueSet with an lsquoexpansionrsquo element
bull Parameters include filter count offset includeDesignations includeDefinition activeOnly excludeNested excludeNotForUI excludePostCoordinated displayLanguage limitedExpansion profile
bull This is the mainbest way to search for a code
Basic Terminology Services | Jim Steel22 |
$expand examplePOST httpsontoservercsiroaustu3-latestValueSet$expand (with the resource in the body)
Basic Terminology Services | Jim Steel23 |
ValueSet operations $validate-codebull Type or instance level idempotent
bull GETPOST ValueSet$validate-code (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$validate-code
bull Validate a code (and display text) against a ValueSetbull Determine whether the code is included in the ValueSet
bull (optionally) Determine whether the provided display text is the correct display text for the code
bull Code as codesystemversion or coding or CodeableConcept (multiple)
bull This is the main method for validating coded data
Basic Terminology Services | Jim Steel24 |
$validate-code examplePOST httpsontoservercsiroaustu3-latestValueSet$validate-code
Basic Terminology Services | Jim Steel25 |
Basic Terminology Services | Jim Steel26 |
$validate-code example (cont)
Well-known Terminologiesbull Terminologies such as SNOMED-CT LOINC RxNorm have specific
mappings into FHIR terminology resources with standardisedCodeSystemsbull Standard CodeSystem filtersproperties
bull Implicit ValueSets
bull Implicit ConceptMaps
Basic Terminology Services | Jim Steel27 |
Well-known Terminologies SNOMED-CTbull httpsnomedinfosct([edition](version[date]))bull Filters by subsumption by refset by ECL expressionbull Implicit ValueSets
bull All codes httpsnomedinfosctfhir_vs
bull By subsumption httpsnomedinfosctfhir_vs=isa404684003
bull List of refsets httpsnomedinfosctfhir_vs=refset
bull All codes in a refset httpsnomedinfosctfhir_vs=refset734138000
bull Implicit ConceptMapsbull Historical associations httpsnomedinfosctfhir_cm=900000000000527005
bull For more detail see the advanced session
Basic Terminology Services | Jim Steel28 |
Well-known Terminologies LOINCbull httploincorg
bull Filters parts copyright status multi-axial hierarchy
bull Implicit ValueSetsbull All LOINC codes httploincorgvs
bull Answer Lists httploincorgvsLL715-4
bull Hierarchy httploincorgvsLP29693-6
Basic Terminology Services | Jim Steel29 |
ConceptMapbull Represents a code-to-code mapping typically from a source
ValueSet to a target ValueSet
Basic Terminology Services | Jim Steel30 |
ConceptMap Structure
Basic Terminology Services | Jim Steel31 |
ConceptMap Structure (cont)
Basic Terminology Services | Jim Steel32 |
ConceptMap example
Basic Terminology Services | Jim Steel33 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
CodeSystem Structure (cont)
Basic Terminology Services | Jim Steel8 |
CodeSystem Structure (cont)
Basic Terminology Services | Jim Steel9 |
CodeSystem example
Basic Terminology Services | Jim Steel10 |
Basic Terminology Services | Jim Steel11 |
CodeSystem example (cont)
Basic Terminology Services | Jim Steel12 |
CodeSystem example (cont)
CodeSystem operations $lookupbull Type level only idempotent (GETPOST CodeSystem$lookup)
bull Retrieve details about a code (as codesystemversion or Coding)
bull Can be used to determine whether a code exists in the CodeSystem
bull Can be used to retrieve specificall propertiesdesignations
Basic Terminology Services | Jim Steel13 |
$lookup exampleGET httpsontoservercsiroaustu3-latestCodeSystem$lookupsystem=httpcsiroaucsau-jurisdictionsampcode=WAampproperty=displayampproperty=capital
Basic Terminology Services | Jim Steel14 |
CodeSystem operations $subsumesbull Type or instance level idempotent
bull GET CodeSystemid$subsumes
bull POST CodeSystem$subsumes (must have lsquosystemrsquo parameter)
bull Check what (if any) subsumption relationship exists between two codesbull codeA and codeB as codesystemversion or codingA and codingB
bull Result will be lsquoequivalentrsquo lsquosubsumesrsquo lsquosubsumed_byrsquo lsquonot_subsumedrsquo
bull Depends on the code systemrsquos lsquohierarchyMeaningrsquo
bull Can also use $closure see the advanced talk
Basic Terminology Services | Jim Steel15 |
$subsumes exampleGET httpsontoservercsiroaustu3-latestCodeSystem$subsumessystem=httpcsiroaucsau-jurisdictionsampcodeA=AUampcodeB=QLD
Basic Terminology Services | Jim Steel16 |
ValueSetbull A set of codes drawn from one or more CodeSystems
bull Can be used to define a set of codes (rsquocomposersquo)
bull Can be used to represent the result of an expansion of a ValueSet(lsquoexpansionrsquo)
Basic Terminology Services | Jim Steel17 |
ValueSet Structure
Basic Terminology Services | Jim Steel18 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel19 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel20 |
ValueSet example definition
Basic Terminology Services | Jim Steel21 |
Valueset operations $expandbull Type or instance level idempotent
bull GETPOST ValueSet$expand (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$expand
bull Retrieve the expansion of the ValueSet subject to a number of parametersbull Result is a ValueSet with an lsquoexpansionrsquo element
bull Parameters include filter count offset includeDesignations includeDefinition activeOnly excludeNested excludeNotForUI excludePostCoordinated displayLanguage limitedExpansion profile
bull This is the mainbest way to search for a code
Basic Terminology Services | Jim Steel22 |
$expand examplePOST httpsontoservercsiroaustu3-latestValueSet$expand (with the resource in the body)
Basic Terminology Services | Jim Steel23 |
ValueSet operations $validate-codebull Type or instance level idempotent
bull GETPOST ValueSet$validate-code (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$validate-code
bull Validate a code (and display text) against a ValueSetbull Determine whether the code is included in the ValueSet
bull (optionally) Determine whether the provided display text is the correct display text for the code
bull Code as codesystemversion or coding or CodeableConcept (multiple)
bull This is the main method for validating coded data
Basic Terminology Services | Jim Steel24 |
$validate-code examplePOST httpsontoservercsiroaustu3-latestValueSet$validate-code
Basic Terminology Services | Jim Steel25 |
Basic Terminology Services | Jim Steel26 |
$validate-code example (cont)
Well-known Terminologiesbull Terminologies such as SNOMED-CT LOINC RxNorm have specific
mappings into FHIR terminology resources with standardisedCodeSystemsbull Standard CodeSystem filtersproperties
bull Implicit ValueSets
bull Implicit ConceptMaps
Basic Terminology Services | Jim Steel27 |
Well-known Terminologies SNOMED-CTbull httpsnomedinfosct([edition](version[date]))bull Filters by subsumption by refset by ECL expressionbull Implicit ValueSets
bull All codes httpsnomedinfosctfhir_vs
bull By subsumption httpsnomedinfosctfhir_vs=isa404684003
bull List of refsets httpsnomedinfosctfhir_vs=refset
bull All codes in a refset httpsnomedinfosctfhir_vs=refset734138000
bull Implicit ConceptMapsbull Historical associations httpsnomedinfosctfhir_cm=900000000000527005
bull For more detail see the advanced session
Basic Terminology Services | Jim Steel28 |
Well-known Terminologies LOINCbull httploincorg
bull Filters parts copyright status multi-axial hierarchy
bull Implicit ValueSetsbull All LOINC codes httploincorgvs
bull Answer Lists httploincorgvsLL715-4
bull Hierarchy httploincorgvsLP29693-6
Basic Terminology Services | Jim Steel29 |
ConceptMapbull Represents a code-to-code mapping typically from a source
ValueSet to a target ValueSet
Basic Terminology Services | Jim Steel30 |
ConceptMap Structure
Basic Terminology Services | Jim Steel31 |
ConceptMap Structure (cont)
Basic Terminology Services | Jim Steel32 |
ConceptMap example
Basic Terminology Services | Jim Steel33 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
CodeSystem Structure (cont)
Basic Terminology Services | Jim Steel9 |
CodeSystem example
Basic Terminology Services | Jim Steel10 |
Basic Terminology Services | Jim Steel11 |
CodeSystem example (cont)
Basic Terminology Services | Jim Steel12 |
CodeSystem example (cont)
CodeSystem operations $lookupbull Type level only idempotent (GETPOST CodeSystem$lookup)
bull Retrieve details about a code (as codesystemversion or Coding)
bull Can be used to determine whether a code exists in the CodeSystem
bull Can be used to retrieve specificall propertiesdesignations
Basic Terminology Services | Jim Steel13 |
$lookup exampleGET httpsontoservercsiroaustu3-latestCodeSystem$lookupsystem=httpcsiroaucsau-jurisdictionsampcode=WAampproperty=displayampproperty=capital
Basic Terminology Services | Jim Steel14 |
CodeSystem operations $subsumesbull Type or instance level idempotent
bull GET CodeSystemid$subsumes
bull POST CodeSystem$subsumes (must have lsquosystemrsquo parameter)
bull Check what (if any) subsumption relationship exists between two codesbull codeA and codeB as codesystemversion or codingA and codingB
bull Result will be lsquoequivalentrsquo lsquosubsumesrsquo lsquosubsumed_byrsquo lsquonot_subsumedrsquo
bull Depends on the code systemrsquos lsquohierarchyMeaningrsquo
bull Can also use $closure see the advanced talk
Basic Terminology Services | Jim Steel15 |
$subsumes exampleGET httpsontoservercsiroaustu3-latestCodeSystem$subsumessystem=httpcsiroaucsau-jurisdictionsampcodeA=AUampcodeB=QLD
Basic Terminology Services | Jim Steel16 |
ValueSetbull A set of codes drawn from one or more CodeSystems
bull Can be used to define a set of codes (rsquocomposersquo)
bull Can be used to represent the result of an expansion of a ValueSet(lsquoexpansionrsquo)
Basic Terminology Services | Jim Steel17 |
ValueSet Structure
Basic Terminology Services | Jim Steel18 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel19 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel20 |
ValueSet example definition
Basic Terminology Services | Jim Steel21 |
Valueset operations $expandbull Type or instance level idempotent
bull GETPOST ValueSet$expand (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$expand
bull Retrieve the expansion of the ValueSet subject to a number of parametersbull Result is a ValueSet with an lsquoexpansionrsquo element
bull Parameters include filter count offset includeDesignations includeDefinition activeOnly excludeNested excludeNotForUI excludePostCoordinated displayLanguage limitedExpansion profile
bull This is the mainbest way to search for a code
Basic Terminology Services | Jim Steel22 |
$expand examplePOST httpsontoservercsiroaustu3-latestValueSet$expand (with the resource in the body)
Basic Terminology Services | Jim Steel23 |
ValueSet operations $validate-codebull Type or instance level idempotent
bull GETPOST ValueSet$validate-code (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$validate-code
bull Validate a code (and display text) against a ValueSetbull Determine whether the code is included in the ValueSet
bull (optionally) Determine whether the provided display text is the correct display text for the code
bull Code as codesystemversion or coding or CodeableConcept (multiple)
bull This is the main method for validating coded data
Basic Terminology Services | Jim Steel24 |
$validate-code examplePOST httpsontoservercsiroaustu3-latestValueSet$validate-code
Basic Terminology Services | Jim Steel25 |
Basic Terminology Services | Jim Steel26 |
$validate-code example (cont)
Well-known Terminologiesbull Terminologies such as SNOMED-CT LOINC RxNorm have specific
mappings into FHIR terminology resources with standardisedCodeSystemsbull Standard CodeSystem filtersproperties
bull Implicit ValueSets
bull Implicit ConceptMaps
Basic Terminology Services | Jim Steel27 |
Well-known Terminologies SNOMED-CTbull httpsnomedinfosct([edition](version[date]))bull Filters by subsumption by refset by ECL expressionbull Implicit ValueSets
bull All codes httpsnomedinfosctfhir_vs
bull By subsumption httpsnomedinfosctfhir_vs=isa404684003
bull List of refsets httpsnomedinfosctfhir_vs=refset
bull All codes in a refset httpsnomedinfosctfhir_vs=refset734138000
bull Implicit ConceptMapsbull Historical associations httpsnomedinfosctfhir_cm=900000000000527005
bull For more detail see the advanced session
Basic Terminology Services | Jim Steel28 |
Well-known Terminologies LOINCbull httploincorg
bull Filters parts copyright status multi-axial hierarchy
bull Implicit ValueSetsbull All LOINC codes httploincorgvs
bull Answer Lists httploincorgvsLL715-4
bull Hierarchy httploincorgvsLP29693-6
Basic Terminology Services | Jim Steel29 |
ConceptMapbull Represents a code-to-code mapping typically from a source
ValueSet to a target ValueSet
Basic Terminology Services | Jim Steel30 |
ConceptMap Structure
Basic Terminology Services | Jim Steel31 |
ConceptMap Structure (cont)
Basic Terminology Services | Jim Steel32 |
ConceptMap example
Basic Terminology Services | Jim Steel33 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
CodeSystem example
Basic Terminology Services | Jim Steel10 |
Basic Terminology Services | Jim Steel11 |
CodeSystem example (cont)
Basic Terminology Services | Jim Steel12 |
CodeSystem example (cont)
CodeSystem operations $lookupbull Type level only idempotent (GETPOST CodeSystem$lookup)
bull Retrieve details about a code (as codesystemversion or Coding)
bull Can be used to determine whether a code exists in the CodeSystem
bull Can be used to retrieve specificall propertiesdesignations
Basic Terminology Services | Jim Steel13 |
$lookup exampleGET httpsontoservercsiroaustu3-latestCodeSystem$lookupsystem=httpcsiroaucsau-jurisdictionsampcode=WAampproperty=displayampproperty=capital
Basic Terminology Services | Jim Steel14 |
CodeSystem operations $subsumesbull Type or instance level idempotent
bull GET CodeSystemid$subsumes
bull POST CodeSystem$subsumes (must have lsquosystemrsquo parameter)
bull Check what (if any) subsumption relationship exists between two codesbull codeA and codeB as codesystemversion or codingA and codingB
bull Result will be lsquoequivalentrsquo lsquosubsumesrsquo lsquosubsumed_byrsquo lsquonot_subsumedrsquo
bull Depends on the code systemrsquos lsquohierarchyMeaningrsquo
bull Can also use $closure see the advanced talk
Basic Terminology Services | Jim Steel15 |
$subsumes exampleGET httpsontoservercsiroaustu3-latestCodeSystem$subsumessystem=httpcsiroaucsau-jurisdictionsampcodeA=AUampcodeB=QLD
Basic Terminology Services | Jim Steel16 |
ValueSetbull A set of codes drawn from one or more CodeSystems
bull Can be used to define a set of codes (rsquocomposersquo)
bull Can be used to represent the result of an expansion of a ValueSet(lsquoexpansionrsquo)
Basic Terminology Services | Jim Steel17 |
ValueSet Structure
Basic Terminology Services | Jim Steel18 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel19 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel20 |
ValueSet example definition
Basic Terminology Services | Jim Steel21 |
Valueset operations $expandbull Type or instance level idempotent
bull GETPOST ValueSet$expand (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$expand
bull Retrieve the expansion of the ValueSet subject to a number of parametersbull Result is a ValueSet with an lsquoexpansionrsquo element
bull Parameters include filter count offset includeDesignations includeDefinition activeOnly excludeNested excludeNotForUI excludePostCoordinated displayLanguage limitedExpansion profile
bull This is the mainbest way to search for a code
Basic Terminology Services | Jim Steel22 |
$expand examplePOST httpsontoservercsiroaustu3-latestValueSet$expand (with the resource in the body)
Basic Terminology Services | Jim Steel23 |
ValueSet operations $validate-codebull Type or instance level idempotent
bull GETPOST ValueSet$validate-code (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$validate-code
bull Validate a code (and display text) against a ValueSetbull Determine whether the code is included in the ValueSet
bull (optionally) Determine whether the provided display text is the correct display text for the code
bull Code as codesystemversion or coding or CodeableConcept (multiple)
bull This is the main method for validating coded data
Basic Terminology Services | Jim Steel24 |
$validate-code examplePOST httpsontoservercsiroaustu3-latestValueSet$validate-code
Basic Terminology Services | Jim Steel25 |
Basic Terminology Services | Jim Steel26 |
$validate-code example (cont)
Well-known Terminologiesbull Terminologies such as SNOMED-CT LOINC RxNorm have specific
mappings into FHIR terminology resources with standardisedCodeSystemsbull Standard CodeSystem filtersproperties
bull Implicit ValueSets
bull Implicit ConceptMaps
Basic Terminology Services | Jim Steel27 |
Well-known Terminologies SNOMED-CTbull httpsnomedinfosct([edition](version[date]))bull Filters by subsumption by refset by ECL expressionbull Implicit ValueSets
bull All codes httpsnomedinfosctfhir_vs
bull By subsumption httpsnomedinfosctfhir_vs=isa404684003
bull List of refsets httpsnomedinfosctfhir_vs=refset
bull All codes in a refset httpsnomedinfosctfhir_vs=refset734138000
bull Implicit ConceptMapsbull Historical associations httpsnomedinfosctfhir_cm=900000000000527005
bull For more detail see the advanced session
Basic Terminology Services | Jim Steel28 |
Well-known Terminologies LOINCbull httploincorg
bull Filters parts copyright status multi-axial hierarchy
bull Implicit ValueSetsbull All LOINC codes httploincorgvs
bull Answer Lists httploincorgvsLL715-4
bull Hierarchy httploincorgvsLP29693-6
Basic Terminology Services | Jim Steel29 |
ConceptMapbull Represents a code-to-code mapping typically from a source
ValueSet to a target ValueSet
Basic Terminology Services | Jim Steel30 |
ConceptMap Structure
Basic Terminology Services | Jim Steel31 |
ConceptMap Structure (cont)
Basic Terminology Services | Jim Steel32 |
ConceptMap example
Basic Terminology Services | Jim Steel33 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
Basic Terminology Services | Jim Steel11 |
CodeSystem example (cont)
Basic Terminology Services | Jim Steel12 |
CodeSystem example (cont)
CodeSystem operations $lookupbull Type level only idempotent (GETPOST CodeSystem$lookup)
bull Retrieve details about a code (as codesystemversion or Coding)
bull Can be used to determine whether a code exists in the CodeSystem
bull Can be used to retrieve specificall propertiesdesignations
Basic Terminology Services | Jim Steel13 |
$lookup exampleGET httpsontoservercsiroaustu3-latestCodeSystem$lookupsystem=httpcsiroaucsau-jurisdictionsampcode=WAampproperty=displayampproperty=capital
Basic Terminology Services | Jim Steel14 |
CodeSystem operations $subsumesbull Type or instance level idempotent
bull GET CodeSystemid$subsumes
bull POST CodeSystem$subsumes (must have lsquosystemrsquo parameter)
bull Check what (if any) subsumption relationship exists between two codesbull codeA and codeB as codesystemversion or codingA and codingB
bull Result will be lsquoequivalentrsquo lsquosubsumesrsquo lsquosubsumed_byrsquo lsquonot_subsumedrsquo
bull Depends on the code systemrsquos lsquohierarchyMeaningrsquo
bull Can also use $closure see the advanced talk
Basic Terminology Services | Jim Steel15 |
$subsumes exampleGET httpsontoservercsiroaustu3-latestCodeSystem$subsumessystem=httpcsiroaucsau-jurisdictionsampcodeA=AUampcodeB=QLD
Basic Terminology Services | Jim Steel16 |
ValueSetbull A set of codes drawn from one or more CodeSystems
bull Can be used to define a set of codes (rsquocomposersquo)
bull Can be used to represent the result of an expansion of a ValueSet(lsquoexpansionrsquo)
Basic Terminology Services | Jim Steel17 |
ValueSet Structure
Basic Terminology Services | Jim Steel18 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel19 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel20 |
ValueSet example definition
Basic Terminology Services | Jim Steel21 |
Valueset operations $expandbull Type or instance level idempotent
bull GETPOST ValueSet$expand (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$expand
bull Retrieve the expansion of the ValueSet subject to a number of parametersbull Result is a ValueSet with an lsquoexpansionrsquo element
bull Parameters include filter count offset includeDesignations includeDefinition activeOnly excludeNested excludeNotForUI excludePostCoordinated displayLanguage limitedExpansion profile
bull This is the mainbest way to search for a code
Basic Terminology Services | Jim Steel22 |
$expand examplePOST httpsontoservercsiroaustu3-latestValueSet$expand (with the resource in the body)
Basic Terminology Services | Jim Steel23 |
ValueSet operations $validate-codebull Type or instance level idempotent
bull GETPOST ValueSet$validate-code (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$validate-code
bull Validate a code (and display text) against a ValueSetbull Determine whether the code is included in the ValueSet
bull (optionally) Determine whether the provided display text is the correct display text for the code
bull Code as codesystemversion or coding or CodeableConcept (multiple)
bull This is the main method for validating coded data
Basic Terminology Services | Jim Steel24 |
$validate-code examplePOST httpsontoservercsiroaustu3-latestValueSet$validate-code
Basic Terminology Services | Jim Steel25 |
Basic Terminology Services | Jim Steel26 |
$validate-code example (cont)
Well-known Terminologiesbull Terminologies such as SNOMED-CT LOINC RxNorm have specific
mappings into FHIR terminology resources with standardisedCodeSystemsbull Standard CodeSystem filtersproperties
bull Implicit ValueSets
bull Implicit ConceptMaps
Basic Terminology Services | Jim Steel27 |
Well-known Terminologies SNOMED-CTbull httpsnomedinfosct([edition](version[date]))bull Filters by subsumption by refset by ECL expressionbull Implicit ValueSets
bull All codes httpsnomedinfosctfhir_vs
bull By subsumption httpsnomedinfosctfhir_vs=isa404684003
bull List of refsets httpsnomedinfosctfhir_vs=refset
bull All codes in a refset httpsnomedinfosctfhir_vs=refset734138000
bull Implicit ConceptMapsbull Historical associations httpsnomedinfosctfhir_cm=900000000000527005
bull For more detail see the advanced session
Basic Terminology Services | Jim Steel28 |
Well-known Terminologies LOINCbull httploincorg
bull Filters parts copyright status multi-axial hierarchy
bull Implicit ValueSetsbull All LOINC codes httploincorgvs
bull Answer Lists httploincorgvsLL715-4
bull Hierarchy httploincorgvsLP29693-6
Basic Terminology Services | Jim Steel29 |
ConceptMapbull Represents a code-to-code mapping typically from a source
ValueSet to a target ValueSet
Basic Terminology Services | Jim Steel30 |
ConceptMap Structure
Basic Terminology Services | Jim Steel31 |
ConceptMap Structure (cont)
Basic Terminology Services | Jim Steel32 |
ConceptMap example
Basic Terminology Services | Jim Steel33 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
Basic Terminology Services | Jim Steel12 |
CodeSystem example (cont)
CodeSystem operations $lookupbull Type level only idempotent (GETPOST CodeSystem$lookup)
bull Retrieve details about a code (as codesystemversion or Coding)
bull Can be used to determine whether a code exists in the CodeSystem
bull Can be used to retrieve specificall propertiesdesignations
Basic Terminology Services | Jim Steel13 |
$lookup exampleGET httpsontoservercsiroaustu3-latestCodeSystem$lookupsystem=httpcsiroaucsau-jurisdictionsampcode=WAampproperty=displayampproperty=capital
Basic Terminology Services | Jim Steel14 |
CodeSystem operations $subsumesbull Type or instance level idempotent
bull GET CodeSystemid$subsumes
bull POST CodeSystem$subsumes (must have lsquosystemrsquo parameter)
bull Check what (if any) subsumption relationship exists between two codesbull codeA and codeB as codesystemversion or codingA and codingB
bull Result will be lsquoequivalentrsquo lsquosubsumesrsquo lsquosubsumed_byrsquo lsquonot_subsumedrsquo
bull Depends on the code systemrsquos lsquohierarchyMeaningrsquo
bull Can also use $closure see the advanced talk
Basic Terminology Services | Jim Steel15 |
$subsumes exampleGET httpsontoservercsiroaustu3-latestCodeSystem$subsumessystem=httpcsiroaucsau-jurisdictionsampcodeA=AUampcodeB=QLD
Basic Terminology Services | Jim Steel16 |
ValueSetbull A set of codes drawn from one or more CodeSystems
bull Can be used to define a set of codes (rsquocomposersquo)
bull Can be used to represent the result of an expansion of a ValueSet(lsquoexpansionrsquo)
Basic Terminology Services | Jim Steel17 |
ValueSet Structure
Basic Terminology Services | Jim Steel18 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel19 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel20 |
ValueSet example definition
Basic Terminology Services | Jim Steel21 |
Valueset operations $expandbull Type or instance level idempotent
bull GETPOST ValueSet$expand (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$expand
bull Retrieve the expansion of the ValueSet subject to a number of parametersbull Result is a ValueSet with an lsquoexpansionrsquo element
bull Parameters include filter count offset includeDesignations includeDefinition activeOnly excludeNested excludeNotForUI excludePostCoordinated displayLanguage limitedExpansion profile
bull This is the mainbest way to search for a code
Basic Terminology Services | Jim Steel22 |
$expand examplePOST httpsontoservercsiroaustu3-latestValueSet$expand (with the resource in the body)
Basic Terminology Services | Jim Steel23 |
ValueSet operations $validate-codebull Type or instance level idempotent
bull GETPOST ValueSet$validate-code (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$validate-code
bull Validate a code (and display text) against a ValueSetbull Determine whether the code is included in the ValueSet
bull (optionally) Determine whether the provided display text is the correct display text for the code
bull Code as codesystemversion or coding or CodeableConcept (multiple)
bull This is the main method for validating coded data
Basic Terminology Services | Jim Steel24 |
$validate-code examplePOST httpsontoservercsiroaustu3-latestValueSet$validate-code
Basic Terminology Services | Jim Steel25 |
Basic Terminology Services | Jim Steel26 |
$validate-code example (cont)
Well-known Terminologiesbull Terminologies such as SNOMED-CT LOINC RxNorm have specific
mappings into FHIR terminology resources with standardisedCodeSystemsbull Standard CodeSystem filtersproperties
bull Implicit ValueSets
bull Implicit ConceptMaps
Basic Terminology Services | Jim Steel27 |
Well-known Terminologies SNOMED-CTbull httpsnomedinfosct([edition](version[date]))bull Filters by subsumption by refset by ECL expressionbull Implicit ValueSets
bull All codes httpsnomedinfosctfhir_vs
bull By subsumption httpsnomedinfosctfhir_vs=isa404684003
bull List of refsets httpsnomedinfosctfhir_vs=refset
bull All codes in a refset httpsnomedinfosctfhir_vs=refset734138000
bull Implicit ConceptMapsbull Historical associations httpsnomedinfosctfhir_cm=900000000000527005
bull For more detail see the advanced session
Basic Terminology Services | Jim Steel28 |
Well-known Terminologies LOINCbull httploincorg
bull Filters parts copyright status multi-axial hierarchy
bull Implicit ValueSetsbull All LOINC codes httploincorgvs
bull Answer Lists httploincorgvsLL715-4
bull Hierarchy httploincorgvsLP29693-6
Basic Terminology Services | Jim Steel29 |
ConceptMapbull Represents a code-to-code mapping typically from a source
ValueSet to a target ValueSet
Basic Terminology Services | Jim Steel30 |
ConceptMap Structure
Basic Terminology Services | Jim Steel31 |
ConceptMap Structure (cont)
Basic Terminology Services | Jim Steel32 |
ConceptMap example
Basic Terminology Services | Jim Steel33 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
CodeSystem operations $lookupbull Type level only idempotent (GETPOST CodeSystem$lookup)
bull Retrieve details about a code (as codesystemversion or Coding)
bull Can be used to determine whether a code exists in the CodeSystem
bull Can be used to retrieve specificall propertiesdesignations
Basic Terminology Services | Jim Steel13 |
$lookup exampleGET httpsontoservercsiroaustu3-latestCodeSystem$lookupsystem=httpcsiroaucsau-jurisdictionsampcode=WAampproperty=displayampproperty=capital
Basic Terminology Services | Jim Steel14 |
CodeSystem operations $subsumesbull Type or instance level idempotent
bull GET CodeSystemid$subsumes
bull POST CodeSystem$subsumes (must have lsquosystemrsquo parameter)
bull Check what (if any) subsumption relationship exists between two codesbull codeA and codeB as codesystemversion or codingA and codingB
bull Result will be lsquoequivalentrsquo lsquosubsumesrsquo lsquosubsumed_byrsquo lsquonot_subsumedrsquo
bull Depends on the code systemrsquos lsquohierarchyMeaningrsquo
bull Can also use $closure see the advanced talk
Basic Terminology Services | Jim Steel15 |
$subsumes exampleGET httpsontoservercsiroaustu3-latestCodeSystem$subsumessystem=httpcsiroaucsau-jurisdictionsampcodeA=AUampcodeB=QLD
Basic Terminology Services | Jim Steel16 |
ValueSetbull A set of codes drawn from one or more CodeSystems
bull Can be used to define a set of codes (rsquocomposersquo)
bull Can be used to represent the result of an expansion of a ValueSet(lsquoexpansionrsquo)
Basic Terminology Services | Jim Steel17 |
ValueSet Structure
Basic Terminology Services | Jim Steel18 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel19 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel20 |
ValueSet example definition
Basic Terminology Services | Jim Steel21 |
Valueset operations $expandbull Type or instance level idempotent
bull GETPOST ValueSet$expand (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$expand
bull Retrieve the expansion of the ValueSet subject to a number of parametersbull Result is a ValueSet with an lsquoexpansionrsquo element
bull Parameters include filter count offset includeDesignations includeDefinition activeOnly excludeNested excludeNotForUI excludePostCoordinated displayLanguage limitedExpansion profile
bull This is the mainbest way to search for a code
Basic Terminology Services | Jim Steel22 |
$expand examplePOST httpsontoservercsiroaustu3-latestValueSet$expand (with the resource in the body)
Basic Terminology Services | Jim Steel23 |
ValueSet operations $validate-codebull Type or instance level idempotent
bull GETPOST ValueSet$validate-code (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$validate-code
bull Validate a code (and display text) against a ValueSetbull Determine whether the code is included in the ValueSet
bull (optionally) Determine whether the provided display text is the correct display text for the code
bull Code as codesystemversion or coding or CodeableConcept (multiple)
bull This is the main method for validating coded data
Basic Terminology Services | Jim Steel24 |
$validate-code examplePOST httpsontoservercsiroaustu3-latestValueSet$validate-code
Basic Terminology Services | Jim Steel25 |
Basic Terminology Services | Jim Steel26 |
$validate-code example (cont)
Well-known Terminologiesbull Terminologies such as SNOMED-CT LOINC RxNorm have specific
mappings into FHIR terminology resources with standardisedCodeSystemsbull Standard CodeSystem filtersproperties
bull Implicit ValueSets
bull Implicit ConceptMaps
Basic Terminology Services | Jim Steel27 |
Well-known Terminologies SNOMED-CTbull httpsnomedinfosct([edition](version[date]))bull Filters by subsumption by refset by ECL expressionbull Implicit ValueSets
bull All codes httpsnomedinfosctfhir_vs
bull By subsumption httpsnomedinfosctfhir_vs=isa404684003
bull List of refsets httpsnomedinfosctfhir_vs=refset
bull All codes in a refset httpsnomedinfosctfhir_vs=refset734138000
bull Implicit ConceptMapsbull Historical associations httpsnomedinfosctfhir_cm=900000000000527005
bull For more detail see the advanced session
Basic Terminology Services | Jim Steel28 |
Well-known Terminologies LOINCbull httploincorg
bull Filters parts copyright status multi-axial hierarchy
bull Implicit ValueSetsbull All LOINC codes httploincorgvs
bull Answer Lists httploincorgvsLL715-4
bull Hierarchy httploincorgvsLP29693-6
Basic Terminology Services | Jim Steel29 |
ConceptMapbull Represents a code-to-code mapping typically from a source
ValueSet to a target ValueSet
Basic Terminology Services | Jim Steel30 |
ConceptMap Structure
Basic Terminology Services | Jim Steel31 |
ConceptMap Structure (cont)
Basic Terminology Services | Jim Steel32 |
ConceptMap example
Basic Terminology Services | Jim Steel33 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
$lookup exampleGET httpsontoservercsiroaustu3-latestCodeSystem$lookupsystem=httpcsiroaucsau-jurisdictionsampcode=WAampproperty=displayampproperty=capital
Basic Terminology Services | Jim Steel14 |
CodeSystem operations $subsumesbull Type or instance level idempotent
bull GET CodeSystemid$subsumes
bull POST CodeSystem$subsumes (must have lsquosystemrsquo parameter)
bull Check what (if any) subsumption relationship exists between two codesbull codeA and codeB as codesystemversion or codingA and codingB
bull Result will be lsquoequivalentrsquo lsquosubsumesrsquo lsquosubsumed_byrsquo lsquonot_subsumedrsquo
bull Depends on the code systemrsquos lsquohierarchyMeaningrsquo
bull Can also use $closure see the advanced talk
Basic Terminology Services | Jim Steel15 |
$subsumes exampleGET httpsontoservercsiroaustu3-latestCodeSystem$subsumessystem=httpcsiroaucsau-jurisdictionsampcodeA=AUampcodeB=QLD
Basic Terminology Services | Jim Steel16 |
ValueSetbull A set of codes drawn from one or more CodeSystems
bull Can be used to define a set of codes (rsquocomposersquo)
bull Can be used to represent the result of an expansion of a ValueSet(lsquoexpansionrsquo)
Basic Terminology Services | Jim Steel17 |
ValueSet Structure
Basic Terminology Services | Jim Steel18 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel19 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel20 |
ValueSet example definition
Basic Terminology Services | Jim Steel21 |
Valueset operations $expandbull Type or instance level idempotent
bull GETPOST ValueSet$expand (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$expand
bull Retrieve the expansion of the ValueSet subject to a number of parametersbull Result is a ValueSet with an lsquoexpansionrsquo element
bull Parameters include filter count offset includeDesignations includeDefinition activeOnly excludeNested excludeNotForUI excludePostCoordinated displayLanguage limitedExpansion profile
bull This is the mainbest way to search for a code
Basic Terminology Services | Jim Steel22 |
$expand examplePOST httpsontoservercsiroaustu3-latestValueSet$expand (with the resource in the body)
Basic Terminology Services | Jim Steel23 |
ValueSet operations $validate-codebull Type or instance level idempotent
bull GETPOST ValueSet$validate-code (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$validate-code
bull Validate a code (and display text) against a ValueSetbull Determine whether the code is included in the ValueSet
bull (optionally) Determine whether the provided display text is the correct display text for the code
bull Code as codesystemversion or coding or CodeableConcept (multiple)
bull This is the main method for validating coded data
Basic Terminology Services | Jim Steel24 |
$validate-code examplePOST httpsontoservercsiroaustu3-latestValueSet$validate-code
Basic Terminology Services | Jim Steel25 |
Basic Terminology Services | Jim Steel26 |
$validate-code example (cont)
Well-known Terminologiesbull Terminologies such as SNOMED-CT LOINC RxNorm have specific
mappings into FHIR terminology resources with standardisedCodeSystemsbull Standard CodeSystem filtersproperties
bull Implicit ValueSets
bull Implicit ConceptMaps
Basic Terminology Services | Jim Steel27 |
Well-known Terminologies SNOMED-CTbull httpsnomedinfosct([edition](version[date]))bull Filters by subsumption by refset by ECL expressionbull Implicit ValueSets
bull All codes httpsnomedinfosctfhir_vs
bull By subsumption httpsnomedinfosctfhir_vs=isa404684003
bull List of refsets httpsnomedinfosctfhir_vs=refset
bull All codes in a refset httpsnomedinfosctfhir_vs=refset734138000
bull Implicit ConceptMapsbull Historical associations httpsnomedinfosctfhir_cm=900000000000527005
bull For more detail see the advanced session
Basic Terminology Services | Jim Steel28 |
Well-known Terminologies LOINCbull httploincorg
bull Filters parts copyright status multi-axial hierarchy
bull Implicit ValueSetsbull All LOINC codes httploincorgvs
bull Answer Lists httploincorgvsLL715-4
bull Hierarchy httploincorgvsLP29693-6
Basic Terminology Services | Jim Steel29 |
ConceptMapbull Represents a code-to-code mapping typically from a source
ValueSet to a target ValueSet
Basic Terminology Services | Jim Steel30 |
ConceptMap Structure
Basic Terminology Services | Jim Steel31 |
ConceptMap Structure (cont)
Basic Terminology Services | Jim Steel32 |
ConceptMap example
Basic Terminology Services | Jim Steel33 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
CodeSystem operations $subsumesbull Type or instance level idempotent
bull GET CodeSystemid$subsumes
bull POST CodeSystem$subsumes (must have lsquosystemrsquo parameter)
bull Check what (if any) subsumption relationship exists between two codesbull codeA and codeB as codesystemversion or codingA and codingB
bull Result will be lsquoequivalentrsquo lsquosubsumesrsquo lsquosubsumed_byrsquo lsquonot_subsumedrsquo
bull Depends on the code systemrsquos lsquohierarchyMeaningrsquo
bull Can also use $closure see the advanced talk
Basic Terminology Services | Jim Steel15 |
$subsumes exampleGET httpsontoservercsiroaustu3-latestCodeSystem$subsumessystem=httpcsiroaucsau-jurisdictionsampcodeA=AUampcodeB=QLD
Basic Terminology Services | Jim Steel16 |
ValueSetbull A set of codes drawn from one or more CodeSystems
bull Can be used to define a set of codes (rsquocomposersquo)
bull Can be used to represent the result of an expansion of a ValueSet(lsquoexpansionrsquo)
Basic Terminology Services | Jim Steel17 |
ValueSet Structure
Basic Terminology Services | Jim Steel18 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel19 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel20 |
ValueSet example definition
Basic Terminology Services | Jim Steel21 |
Valueset operations $expandbull Type or instance level idempotent
bull GETPOST ValueSet$expand (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$expand
bull Retrieve the expansion of the ValueSet subject to a number of parametersbull Result is a ValueSet with an lsquoexpansionrsquo element
bull Parameters include filter count offset includeDesignations includeDefinition activeOnly excludeNested excludeNotForUI excludePostCoordinated displayLanguage limitedExpansion profile
bull This is the mainbest way to search for a code
Basic Terminology Services | Jim Steel22 |
$expand examplePOST httpsontoservercsiroaustu3-latestValueSet$expand (with the resource in the body)
Basic Terminology Services | Jim Steel23 |
ValueSet operations $validate-codebull Type or instance level idempotent
bull GETPOST ValueSet$validate-code (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$validate-code
bull Validate a code (and display text) against a ValueSetbull Determine whether the code is included in the ValueSet
bull (optionally) Determine whether the provided display text is the correct display text for the code
bull Code as codesystemversion or coding or CodeableConcept (multiple)
bull This is the main method for validating coded data
Basic Terminology Services | Jim Steel24 |
$validate-code examplePOST httpsontoservercsiroaustu3-latestValueSet$validate-code
Basic Terminology Services | Jim Steel25 |
Basic Terminology Services | Jim Steel26 |
$validate-code example (cont)
Well-known Terminologiesbull Terminologies such as SNOMED-CT LOINC RxNorm have specific
mappings into FHIR terminology resources with standardisedCodeSystemsbull Standard CodeSystem filtersproperties
bull Implicit ValueSets
bull Implicit ConceptMaps
Basic Terminology Services | Jim Steel27 |
Well-known Terminologies SNOMED-CTbull httpsnomedinfosct([edition](version[date]))bull Filters by subsumption by refset by ECL expressionbull Implicit ValueSets
bull All codes httpsnomedinfosctfhir_vs
bull By subsumption httpsnomedinfosctfhir_vs=isa404684003
bull List of refsets httpsnomedinfosctfhir_vs=refset
bull All codes in a refset httpsnomedinfosctfhir_vs=refset734138000
bull Implicit ConceptMapsbull Historical associations httpsnomedinfosctfhir_cm=900000000000527005
bull For more detail see the advanced session
Basic Terminology Services | Jim Steel28 |
Well-known Terminologies LOINCbull httploincorg
bull Filters parts copyright status multi-axial hierarchy
bull Implicit ValueSetsbull All LOINC codes httploincorgvs
bull Answer Lists httploincorgvsLL715-4
bull Hierarchy httploincorgvsLP29693-6
Basic Terminology Services | Jim Steel29 |
ConceptMapbull Represents a code-to-code mapping typically from a source
ValueSet to a target ValueSet
Basic Terminology Services | Jim Steel30 |
ConceptMap Structure
Basic Terminology Services | Jim Steel31 |
ConceptMap Structure (cont)
Basic Terminology Services | Jim Steel32 |
ConceptMap example
Basic Terminology Services | Jim Steel33 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
$subsumes exampleGET httpsontoservercsiroaustu3-latestCodeSystem$subsumessystem=httpcsiroaucsau-jurisdictionsampcodeA=AUampcodeB=QLD
Basic Terminology Services | Jim Steel16 |
ValueSetbull A set of codes drawn from one or more CodeSystems
bull Can be used to define a set of codes (rsquocomposersquo)
bull Can be used to represent the result of an expansion of a ValueSet(lsquoexpansionrsquo)
Basic Terminology Services | Jim Steel17 |
ValueSet Structure
Basic Terminology Services | Jim Steel18 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel19 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel20 |
ValueSet example definition
Basic Terminology Services | Jim Steel21 |
Valueset operations $expandbull Type or instance level idempotent
bull GETPOST ValueSet$expand (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$expand
bull Retrieve the expansion of the ValueSet subject to a number of parametersbull Result is a ValueSet with an lsquoexpansionrsquo element
bull Parameters include filter count offset includeDesignations includeDefinition activeOnly excludeNested excludeNotForUI excludePostCoordinated displayLanguage limitedExpansion profile
bull This is the mainbest way to search for a code
Basic Terminology Services | Jim Steel22 |
$expand examplePOST httpsontoservercsiroaustu3-latestValueSet$expand (with the resource in the body)
Basic Terminology Services | Jim Steel23 |
ValueSet operations $validate-codebull Type or instance level idempotent
bull GETPOST ValueSet$validate-code (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$validate-code
bull Validate a code (and display text) against a ValueSetbull Determine whether the code is included in the ValueSet
bull (optionally) Determine whether the provided display text is the correct display text for the code
bull Code as codesystemversion or coding or CodeableConcept (multiple)
bull This is the main method for validating coded data
Basic Terminology Services | Jim Steel24 |
$validate-code examplePOST httpsontoservercsiroaustu3-latestValueSet$validate-code
Basic Terminology Services | Jim Steel25 |
Basic Terminology Services | Jim Steel26 |
$validate-code example (cont)
Well-known Terminologiesbull Terminologies such as SNOMED-CT LOINC RxNorm have specific
mappings into FHIR terminology resources with standardisedCodeSystemsbull Standard CodeSystem filtersproperties
bull Implicit ValueSets
bull Implicit ConceptMaps
Basic Terminology Services | Jim Steel27 |
Well-known Terminologies SNOMED-CTbull httpsnomedinfosct([edition](version[date]))bull Filters by subsumption by refset by ECL expressionbull Implicit ValueSets
bull All codes httpsnomedinfosctfhir_vs
bull By subsumption httpsnomedinfosctfhir_vs=isa404684003
bull List of refsets httpsnomedinfosctfhir_vs=refset
bull All codes in a refset httpsnomedinfosctfhir_vs=refset734138000
bull Implicit ConceptMapsbull Historical associations httpsnomedinfosctfhir_cm=900000000000527005
bull For more detail see the advanced session
Basic Terminology Services | Jim Steel28 |
Well-known Terminologies LOINCbull httploincorg
bull Filters parts copyright status multi-axial hierarchy
bull Implicit ValueSetsbull All LOINC codes httploincorgvs
bull Answer Lists httploincorgvsLL715-4
bull Hierarchy httploincorgvsLP29693-6
Basic Terminology Services | Jim Steel29 |
ConceptMapbull Represents a code-to-code mapping typically from a source
ValueSet to a target ValueSet
Basic Terminology Services | Jim Steel30 |
ConceptMap Structure
Basic Terminology Services | Jim Steel31 |
ConceptMap Structure (cont)
Basic Terminology Services | Jim Steel32 |
ConceptMap example
Basic Terminology Services | Jim Steel33 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
ValueSetbull A set of codes drawn from one or more CodeSystems
bull Can be used to define a set of codes (rsquocomposersquo)
bull Can be used to represent the result of an expansion of a ValueSet(lsquoexpansionrsquo)
Basic Terminology Services | Jim Steel17 |
ValueSet Structure
Basic Terminology Services | Jim Steel18 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel19 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel20 |
ValueSet example definition
Basic Terminology Services | Jim Steel21 |
Valueset operations $expandbull Type or instance level idempotent
bull GETPOST ValueSet$expand (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$expand
bull Retrieve the expansion of the ValueSet subject to a number of parametersbull Result is a ValueSet with an lsquoexpansionrsquo element
bull Parameters include filter count offset includeDesignations includeDefinition activeOnly excludeNested excludeNotForUI excludePostCoordinated displayLanguage limitedExpansion profile
bull This is the mainbest way to search for a code
Basic Terminology Services | Jim Steel22 |
$expand examplePOST httpsontoservercsiroaustu3-latestValueSet$expand (with the resource in the body)
Basic Terminology Services | Jim Steel23 |
ValueSet operations $validate-codebull Type or instance level idempotent
bull GETPOST ValueSet$validate-code (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$validate-code
bull Validate a code (and display text) against a ValueSetbull Determine whether the code is included in the ValueSet
bull (optionally) Determine whether the provided display text is the correct display text for the code
bull Code as codesystemversion or coding or CodeableConcept (multiple)
bull This is the main method for validating coded data
Basic Terminology Services | Jim Steel24 |
$validate-code examplePOST httpsontoservercsiroaustu3-latestValueSet$validate-code
Basic Terminology Services | Jim Steel25 |
Basic Terminology Services | Jim Steel26 |
$validate-code example (cont)
Well-known Terminologiesbull Terminologies such as SNOMED-CT LOINC RxNorm have specific
mappings into FHIR terminology resources with standardisedCodeSystemsbull Standard CodeSystem filtersproperties
bull Implicit ValueSets
bull Implicit ConceptMaps
Basic Terminology Services | Jim Steel27 |
Well-known Terminologies SNOMED-CTbull httpsnomedinfosct([edition](version[date]))bull Filters by subsumption by refset by ECL expressionbull Implicit ValueSets
bull All codes httpsnomedinfosctfhir_vs
bull By subsumption httpsnomedinfosctfhir_vs=isa404684003
bull List of refsets httpsnomedinfosctfhir_vs=refset
bull All codes in a refset httpsnomedinfosctfhir_vs=refset734138000
bull Implicit ConceptMapsbull Historical associations httpsnomedinfosctfhir_cm=900000000000527005
bull For more detail see the advanced session
Basic Terminology Services | Jim Steel28 |
Well-known Terminologies LOINCbull httploincorg
bull Filters parts copyright status multi-axial hierarchy
bull Implicit ValueSetsbull All LOINC codes httploincorgvs
bull Answer Lists httploincorgvsLL715-4
bull Hierarchy httploincorgvsLP29693-6
Basic Terminology Services | Jim Steel29 |
ConceptMapbull Represents a code-to-code mapping typically from a source
ValueSet to a target ValueSet
Basic Terminology Services | Jim Steel30 |
ConceptMap Structure
Basic Terminology Services | Jim Steel31 |
ConceptMap Structure (cont)
Basic Terminology Services | Jim Steel32 |
ConceptMap example
Basic Terminology Services | Jim Steel33 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
ValueSet Structure
Basic Terminology Services | Jim Steel18 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel19 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel20 |
ValueSet example definition
Basic Terminology Services | Jim Steel21 |
Valueset operations $expandbull Type or instance level idempotent
bull GETPOST ValueSet$expand (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$expand
bull Retrieve the expansion of the ValueSet subject to a number of parametersbull Result is a ValueSet with an lsquoexpansionrsquo element
bull Parameters include filter count offset includeDesignations includeDefinition activeOnly excludeNested excludeNotForUI excludePostCoordinated displayLanguage limitedExpansion profile
bull This is the mainbest way to search for a code
Basic Terminology Services | Jim Steel22 |
$expand examplePOST httpsontoservercsiroaustu3-latestValueSet$expand (with the resource in the body)
Basic Terminology Services | Jim Steel23 |
ValueSet operations $validate-codebull Type or instance level idempotent
bull GETPOST ValueSet$validate-code (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$validate-code
bull Validate a code (and display text) against a ValueSetbull Determine whether the code is included in the ValueSet
bull (optionally) Determine whether the provided display text is the correct display text for the code
bull Code as codesystemversion or coding or CodeableConcept (multiple)
bull This is the main method for validating coded data
Basic Terminology Services | Jim Steel24 |
$validate-code examplePOST httpsontoservercsiroaustu3-latestValueSet$validate-code
Basic Terminology Services | Jim Steel25 |
Basic Terminology Services | Jim Steel26 |
$validate-code example (cont)
Well-known Terminologiesbull Terminologies such as SNOMED-CT LOINC RxNorm have specific
mappings into FHIR terminology resources with standardisedCodeSystemsbull Standard CodeSystem filtersproperties
bull Implicit ValueSets
bull Implicit ConceptMaps
Basic Terminology Services | Jim Steel27 |
Well-known Terminologies SNOMED-CTbull httpsnomedinfosct([edition](version[date]))bull Filters by subsumption by refset by ECL expressionbull Implicit ValueSets
bull All codes httpsnomedinfosctfhir_vs
bull By subsumption httpsnomedinfosctfhir_vs=isa404684003
bull List of refsets httpsnomedinfosctfhir_vs=refset
bull All codes in a refset httpsnomedinfosctfhir_vs=refset734138000
bull Implicit ConceptMapsbull Historical associations httpsnomedinfosctfhir_cm=900000000000527005
bull For more detail see the advanced session
Basic Terminology Services | Jim Steel28 |
Well-known Terminologies LOINCbull httploincorg
bull Filters parts copyright status multi-axial hierarchy
bull Implicit ValueSetsbull All LOINC codes httploincorgvs
bull Answer Lists httploincorgvsLL715-4
bull Hierarchy httploincorgvsLP29693-6
Basic Terminology Services | Jim Steel29 |
ConceptMapbull Represents a code-to-code mapping typically from a source
ValueSet to a target ValueSet
Basic Terminology Services | Jim Steel30 |
ConceptMap Structure
Basic Terminology Services | Jim Steel31 |
ConceptMap Structure (cont)
Basic Terminology Services | Jim Steel32 |
ConceptMap example
Basic Terminology Services | Jim Steel33 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel19 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel20 |
ValueSet example definition
Basic Terminology Services | Jim Steel21 |
Valueset operations $expandbull Type or instance level idempotent
bull GETPOST ValueSet$expand (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$expand
bull Retrieve the expansion of the ValueSet subject to a number of parametersbull Result is a ValueSet with an lsquoexpansionrsquo element
bull Parameters include filter count offset includeDesignations includeDefinition activeOnly excludeNested excludeNotForUI excludePostCoordinated displayLanguage limitedExpansion profile
bull This is the mainbest way to search for a code
Basic Terminology Services | Jim Steel22 |
$expand examplePOST httpsontoservercsiroaustu3-latestValueSet$expand (with the resource in the body)
Basic Terminology Services | Jim Steel23 |
ValueSet operations $validate-codebull Type or instance level idempotent
bull GETPOST ValueSet$validate-code (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$validate-code
bull Validate a code (and display text) against a ValueSetbull Determine whether the code is included in the ValueSet
bull (optionally) Determine whether the provided display text is the correct display text for the code
bull Code as codesystemversion or coding or CodeableConcept (multiple)
bull This is the main method for validating coded data
Basic Terminology Services | Jim Steel24 |
$validate-code examplePOST httpsontoservercsiroaustu3-latestValueSet$validate-code
Basic Terminology Services | Jim Steel25 |
Basic Terminology Services | Jim Steel26 |
$validate-code example (cont)
Well-known Terminologiesbull Terminologies such as SNOMED-CT LOINC RxNorm have specific
mappings into FHIR terminology resources with standardisedCodeSystemsbull Standard CodeSystem filtersproperties
bull Implicit ValueSets
bull Implicit ConceptMaps
Basic Terminology Services | Jim Steel27 |
Well-known Terminologies SNOMED-CTbull httpsnomedinfosct([edition](version[date]))bull Filters by subsumption by refset by ECL expressionbull Implicit ValueSets
bull All codes httpsnomedinfosctfhir_vs
bull By subsumption httpsnomedinfosctfhir_vs=isa404684003
bull List of refsets httpsnomedinfosctfhir_vs=refset
bull All codes in a refset httpsnomedinfosctfhir_vs=refset734138000
bull Implicit ConceptMapsbull Historical associations httpsnomedinfosctfhir_cm=900000000000527005
bull For more detail see the advanced session
Basic Terminology Services | Jim Steel28 |
Well-known Terminologies LOINCbull httploincorg
bull Filters parts copyright status multi-axial hierarchy
bull Implicit ValueSetsbull All LOINC codes httploincorgvs
bull Answer Lists httploincorgvsLL715-4
bull Hierarchy httploincorgvsLP29693-6
Basic Terminology Services | Jim Steel29 |
ConceptMapbull Represents a code-to-code mapping typically from a source
ValueSet to a target ValueSet
Basic Terminology Services | Jim Steel30 |
ConceptMap Structure
Basic Terminology Services | Jim Steel31 |
ConceptMap Structure (cont)
Basic Terminology Services | Jim Steel32 |
ConceptMap example
Basic Terminology Services | Jim Steel33 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
ValueSet Structure (cont)
Basic Terminology Services | Jim Steel20 |
ValueSet example definition
Basic Terminology Services | Jim Steel21 |
Valueset operations $expandbull Type or instance level idempotent
bull GETPOST ValueSet$expand (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$expand
bull Retrieve the expansion of the ValueSet subject to a number of parametersbull Result is a ValueSet with an lsquoexpansionrsquo element
bull Parameters include filter count offset includeDesignations includeDefinition activeOnly excludeNested excludeNotForUI excludePostCoordinated displayLanguage limitedExpansion profile
bull This is the mainbest way to search for a code
Basic Terminology Services | Jim Steel22 |
$expand examplePOST httpsontoservercsiroaustu3-latestValueSet$expand (with the resource in the body)
Basic Terminology Services | Jim Steel23 |
ValueSet operations $validate-codebull Type or instance level idempotent
bull GETPOST ValueSet$validate-code (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$validate-code
bull Validate a code (and display text) against a ValueSetbull Determine whether the code is included in the ValueSet
bull (optionally) Determine whether the provided display text is the correct display text for the code
bull Code as codesystemversion or coding or CodeableConcept (multiple)
bull This is the main method for validating coded data
Basic Terminology Services | Jim Steel24 |
$validate-code examplePOST httpsontoservercsiroaustu3-latestValueSet$validate-code
Basic Terminology Services | Jim Steel25 |
Basic Terminology Services | Jim Steel26 |
$validate-code example (cont)
Well-known Terminologiesbull Terminologies such as SNOMED-CT LOINC RxNorm have specific
mappings into FHIR terminology resources with standardisedCodeSystemsbull Standard CodeSystem filtersproperties
bull Implicit ValueSets
bull Implicit ConceptMaps
Basic Terminology Services | Jim Steel27 |
Well-known Terminologies SNOMED-CTbull httpsnomedinfosct([edition](version[date]))bull Filters by subsumption by refset by ECL expressionbull Implicit ValueSets
bull All codes httpsnomedinfosctfhir_vs
bull By subsumption httpsnomedinfosctfhir_vs=isa404684003
bull List of refsets httpsnomedinfosctfhir_vs=refset
bull All codes in a refset httpsnomedinfosctfhir_vs=refset734138000
bull Implicit ConceptMapsbull Historical associations httpsnomedinfosctfhir_cm=900000000000527005
bull For more detail see the advanced session
Basic Terminology Services | Jim Steel28 |
Well-known Terminologies LOINCbull httploincorg
bull Filters parts copyright status multi-axial hierarchy
bull Implicit ValueSetsbull All LOINC codes httploincorgvs
bull Answer Lists httploincorgvsLL715-4
bull Hierarchy httploincorgvsLP29693-6
Basic Terminology Services | Jim Steel29 |
ConceptMapbull Represents a code-to-code mapping typically from a source
ValueSet to a target ValueSet
Basic Terminology Services | Jim Steel30 |
ConceptMap Structure
Basic Terminology Services | Jim Steel31 |
ConceptMap Structure (cont)
Basic Terminology Services | Jim Steel32 |
ConceptMap example
Basic Terminology Services | Jim Steel33 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
ValueSet example definition
Basic Terminology Services | Jim Steel21 |
Valueset operations $expandbull Type or instance level idempotent
bull GETPOST ValueSet$expand (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$expand
bull Retrieve the expansion of the ValueSet subject to a number of parametersbull Result is a ValueSet with an lsquoexpansionrsquo element
bull Parameters include filter count offset includeDesignations includeDefinition activeOnly excludeNested excludeNotForUI excludePostCoordinated displayLanguage limitedExpansion profile
bull This is the mainbest way to search for a code
Basic Terminology Services | Jim Steel22 |
$expand examplePOST httpsontoservercsiroaustu3-latestValueSet$expand (with the resource in the body)
Basic Terminology Services | Jim Steel23 |
ValueSet operations $validate-codebull Type or instance level idempotent
bull GETPOST ValueSet$validate-code (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$validate-code
bull Validate a code (and display text) against a ValueSetbull Determine whether the code is included in the ValueSet
bull (optionally) Determine whether the provided display text is the correct display text for the code
bull Code as codesystemversion or coding or CodeableConcept (multiple)
bull This is the main method for validating coded data
Basic Terminology Services | Jim Steel24 |
$validate-code examplePOST httpsontoservercsiroaustu3-latestValueSet$validate-code
Basic Terminology Services | Jim Steel25 |
Basic Terminology Services | Jim Steel26 |
$validate-code example (cont)
Well-known Terminologiesbull Terminologies such as SNOMED-CT LOINC RxNorm have specific
mappings into FHIR terminology resources with standardisedCodeSystemsbull Standard CodeSystem filtersproperties
bull Implicit ValueSets
bull Implicit ConceptMaps
Basic Terminology Services | Jim Steel27 |
Well-known Terminologies SNOMED-CTbull httpsnomedinfosct([edition](version[date]))bull Filters by subsumption by refset by ECL expressionbull Implicit ValueSets
bull All codes httpsnomedinfosctfhir_vs
bull By subsumption httpsnomedinfosctfhir_vs=isa404684003
bull List of refsets httpsnomedinfosctfhir_vs=refset
bull All codes in a refset httpsnomedinfosctfhir_vs=refset734138000
bull Implicit ConceptMapsbull Historical associations httpsnomedinfosctfhir_cm=900000000000527005
bull For more detail see the advanced session
Basic Terminology Services | Jim Steel28 |
Well-known Terminologies LOINCbull httploincorg
bull Filters parts copyright status multi-axial hierarchy
bull Implicit ValueSetsbull All LOINC codes httploincorgvs
bull Answer Lists httploincorgvsLL715-4
bull Hierarchy httploincorgvsLP29693-6
Basic Terminology Services | Jim Steel29 |
ConceptMapbull Represents a code-to-code mapping typically from a source
ValueSet to a target ValueSet
Basic Terminology Services | Jim Steel30 |
ConceptMap Structure
Basic Terminology Services | Jim Steel31 |
ConceptMap Structure (cont)
Basic Terminology Services | Jim Steel32 |
ConceptMap example
Basic Terminology Services | Jim Steel33 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
Valueset operations $expandbull Type or instance level idempotent
bull GETPOST ValueSet$expand (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$expand
bull Retrieve the expansion of the ValueSet subject to a number of parametersbull Result is a ValueSet with an lsquoexpansionrsquo element
bull Parameters include filter count offset includeDesignations includeDefinition activeOnly excludeNested excludeNotForUI excludePostCoordinated displayLanguage limitedExpansion profile
bull This is the mainbest way to search for a code
Basic Terminology Services | Jim Steel22 |
$expand examplePOST httpsontoservercsiroaustu3-latestValueSet$expand (with the resource in the body)
Basic Terminology Services | Jim Steel23 |
ValueSet operations $validate-codebull Type or instance level idempotent
bull GETPOST ValueSet$validate-code (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$validate-code
bull Validate a code (and display text) against a ValueSetbull Determine whether the code is included in the ValueSet
bull (optionally) Determine whether the provided display text is the correct display text for the code
bull Code as codesystemversion or coding or CodeableConcept (multiple)
bull This is the main method for validating coded data
Basic Terminology Services | Jim Steel24 |
$validate-code examplePOST httpsontoservercsiroaustu3-latestValueSet$validate-code
Basic Terminology Services | Jim Steel25 |
Basic Terminology Services | Jim Steel26 |
$validate-code example (cont)
Well-known Terminologiesbull Terminologies such as SNOMED-CT LOINC RxNorm have specific
mappings into FHIR terminology resources with standardisedCodeSystemsbull Standard CodeSystem filtersproperties
bull Implicit ValueSets
bull Implicit ConceptMaps
Basic Terminology Services | Jim Steel27 |
Well-known Terminologies SNOMED-CTbull httpsnomedinfosct([edition](version[date]))bull Filters by subsumption by refset by ECL expressionbull Implicit ValueSets
bull All codes httpsnomedinfosctfhir_vs
bull By subsumption httpsnomedinfosctfhir_vs=isa404684003
bull List of refsets httpsnomedinfosctfhir_vs=refset
bull All codes in a refset httpsnomedinfosctfhir_vs=refset734138000
bull Implicit ConceptMapsbull Historical associations httpsnomedinfosctfhir_cm=900000000000527005
bull For more detail see the advanced session
Basic Terminology Services | Jim Steel28 |
Well-known Terminologies LOINCbull httploincorg
bull Filters parts copyright status multi-axial hierarchy
bull Implicit ValueSetsbull All LOINC codes httploincorgvs
bull Answer Lists httploincorgvsLL715-4
bull Hierarchy httploincorgvsLP29693-6
Basic Terminology Services | Jim Steel29 |
ConceptMapbull Represents a code-to-code mapping typically from a source
ValueSet to a target ValueSet
Basic Terminology Services | Jim Steel30 |
ConceptMap Structure
Basic Terminology Services | Jim Steel31 |
ConceptMap Structure (cont)
Basic Terminology Services | Jim Steel32 |
ConceptMap example
Basic Terminology Services | Jim Steel33 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
$expand examplePOST httpsontoservercsiroaustu3-latestValueSet$expand (with the resource in the body)
Basic Terminology Services | Jim Steel23 |
ValueSet operations $validate-codebull Type or instance level idempotent
bull GETPOST ValueSet$validate-code (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$validate-code
bull Validate a code (and display text) against a ValueSetbull Determine whether the code is included in the ValueSet
bull (optionally) Determine whether the provided display text is the correct display text for the code
bull Code as codesystemversion or coding or CodeableConcept (multiple)
bull This is the main method for validating coded data
Basic Terminology Services | Jim Steel24 |
$validate-code examplePOST httpsontoservercsiroaustu3-latestValueSet$validate-code
Basic Terminology Services | Jim Steel25 |
Basic Terminology Services | Jim Steel26 |
$validate-code example (cont)
Well-known Terminologiesbull Terminologies such as SNOMED-CT LOINC RxNorm have specific
mappings into FHIR terminology resources with standardisedCodeSystemsbull Standard CodeSystem filtersproperties
bull Implicit ValueSets
bull Implicit ConceptMaps
Basic Terminology Services | Jim Steel27 |
Well-known Terminologies SNOMED-CTbull httpsnomedinfosct([edition](version[date]))bull Filters by subsumption by refset by ECL expressionbull Implicit ValueSets
bull All codes httpsnomedinfosctfhir_vs
bull By subsumption httpsnomedinfosctfhir_vs=isa404684003
bull List of refsets httpsnomedinfosctfhir_vs=refset
bull All codes in a refset httpsnomedinfosctfhir_vs=refset734138000
bull Implicit ConceptMapsbull Historical associations httpsnomedinfosctfhir_cm=900000000000527005
bull For more detail see the advanced session
Basic Terminology Services | Jim Steel28 |
Well-known Terminologies LOINCbull httploincorg
bull Filters parts copyright status multi-axial hierarchy
bull Implicit ValueSetsbull All LOINC codes httploincorgvs
bull Answer Lists httploincorgvsLL715-4
bull Hierarchy httploincorgvsLP29693-6
Basic Terminology Services | Jim Steel29 |
ConceptMapbull Represents a code-to-code mapping typically from a source
ValueSet to a target ValueSet
Basic Terminology Services | Jim Steel30 |
ConceptMap Structure
Basic Terminology Services | Jim Steel31 |
ConceptMap Structure (cont)
Basic Terminology Services | Jim Steel32 |
ConceptMap example
Basic Terminology Services | Jim Steel33 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
ValueSet operations $validate-codebull Type or instance level idempotent
bull GETPOST ValueSet$validate-code (must have rsquourlrsquo or lsquovalueSetrsquo)
bull GETPOST ValueSetid$validate-code
bull Validate a code (and display text) against a ValueSetbull Determine whether the code is included in the ValueSet
bull (optionally) Determine whether the provided display text is the correct display text for the code
bull Code as codesystemversion or coding or CodeableConcept (multiple)
bull This is the main method for validating coded data
Basic Terminology Services | Jim Steel24 |
$validate-code examplePOST httpsontoservercsiroaustu3-latestValueSet$validate-code
Basic Terminology Services | Jim Steel25 |
Basic Terminology Services | Jim Steel26 |
$validate-code example (cont)
Well-known Terminologiesbull Terminologies such as SNOMED-CT LOINC RxNorm have specific
mappings into FHIR terminology resources with standardisedCodeSystemsbull Standard CodeSystem filtersproperties
bull Implicit ValueSets
bull Implicit ConceptMaps
Basic Terminology Services | Jim Steel27 |
Well-known Terminologies SNOMED-CTbull httpsnomedinfosct([edition](version[date]))bull Filters by subsumption by refset by ECL expressionbull Implicit ValueSets
bull All codes httpsnomedinfosctfhir_vs
bull By subsumption httpsnomedinfosctfhir_vs=isa404684003
bull List of refsets httpsnomedinfosctfhir_vs=refset
bull All codes in a refset httpsnomedinfosctfhir_vs=refset734138000
bull Implicit ConceptMapsbull Historical associations httpsnomedinfosctfhir_cm=900000000000527005
bull For more detail see the advanced session
Basic Terminology Services | Jim Steel28 |
Well-known Terminologies LOINCbull httploincorg
bull Filters parts copyright status multi-axial hierarchy
bull Implicit ValueSetsbull All LOINC codes httploincorgvs
bull Answer Lists httploincorgvsLL715-4
bull Hierarchy httploincorgvsLP29693-6
Basic Terminology Services | Jim Steel29 |
ConceptMapbull Represents a code-to-code mapping typically from a source
ValueSet to a target ValueSet
Basic Terminology Services | Jim Steel30 |
ConceptMap Structure
Basic Terminology Services | Jim Steel31 |
ConceptMap Structure (cont)
Basic Terminology Services | Jim Steel32 |
ConceptMap example
Basic Terminology Services | Jim Steel33 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
$validate-code examplePOST httpsontoservercsiroaustu3-latestValueSet$validate-code
Basic Terminology Services | Jim Steel25 |
Basic Terminology Services | Jim Steel26 |
$validate-code example (cont)
Well-known Terminologiesbull Terminologies such as SNOMED-CT LOINC RxNorm have specific
mappings into FHIR terminology resources with standardisedCodeSystemsbull Standard CodeSystem filtersproperties
bull Implicit ValueSets
bull Implicit ConceptMaps
Basic Terminology Services | Jim Steel27 |
Well-known Terminologies SNOMED-CTbull httpsnomedinfosct([edition](version[date]))bull Filters by subsumption by refset by ECL expressionbull Implicit ValueSets
bull All codes httpsnomedinfosctfhir_vs
bull By subsumption httpsnomedinfosctfhir_vs=isa404684003
bull List of refsets httpsnomedinfosctfhir_vs=refset
bull All codes in a refset httpsnomedinfosctfhir_vs=refset734138000
bull Implicit ConceptMapsbull Historical associations httpsnomedinfosctfhir_cm=900000000000527005
bull For more detail see the advanced session
Basic Terminology Services | Jim Steel28 |
Well-known Terminologies LOINCbull httploincorg
bull Filters parts copyright status multi-axial hierarchy
bull Implicit ValueSetsbull All LOINC codes httploincorgvs
bull Answer Lists httploincorgvsLL715-4
bull Hierarchy httploincorgvsLP29693-6
Basic Terminology Services | Jim Steel29 |
ConceptMapbull Represents a code-to-code mapping typically from a source
ValueSet to a target ValueSet
Basic Terminology Services | Jim Steel30 |
ConceptMap Structure
Basic Terminology Services | Jim Steel31 |
ConceptMap Structure (cont)
Basic Terminology Services | Jim Steel32 |
ConceptMap example
Basic Terminology Services | Jim Steel33 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
Basic Terminology Services | Jim Steel26 |
$validate-code example (cont)
Well-known Terminologiesbull Terminologies such as SNOMED-CT LOINC RxNorm have specific
mappings into FHIR terminology resources with standardisedCodeSystemsbull Standard CodeSystem filtersproperties
bull Implicit ValueSets
bull Implicit ConceptMaps
Basic Terminology Services | Jim Steel27 |
Well-known Terminologies SNOMED-CTbull httpsnomedinfosct([edition](version[date]))bull Filters by subsumption by refset by ECL expressionbull Implicit ValueSets
bull All codes httpsnomedinfosctfhir_vs
bull By subsumption httpsnomedinfosctfhir_vs=isa404684003
bull List of refsets httpsnomedinfosctfhir_vs=refset
bull All codes in a refset httpsnomedinfosctfhir_vs=refset734138000
bull Implicit ConceptMapsbull Historical associations httpsnomedinfosctfhir_cm=900000000000527005
bull For more detail see the advanced session
Basic Terminology Services | Jim Steel28 |
Well-known Terminologies LOINCbull httploincorg
bull Filters parts copyright status multi-axial hierarchy
bull Implicit ValueSetsbull All LOINC codes httploincorgvs
bull Answer Lists httploincorgvsLL715-4
bull Hierarchy httploincorgvsLP29693-6
Basic Terminology Services | Jim Steel29 |
ConceptMapbull Represents a code-to-code mapping typically from a source
ValueSet to a target ValueSet
Basic Terminology Services | Jim Steel30 |
ConceptMap Structure
Basic Terminology Services | Jim Steel31 |
ConceptMap Structure (cont)
Basic Terminology Services | Jim Steel32 |
ConceptMap example
Basic Terminology Services | Jim Steel33 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
Well-known Terminologiesbull Terminologies such as SNOMED-CT LOINC RxNorm have specific
mappings into FHIR terminology resources with standardisedCodeSystemsbull Standard CodeSystem filtersproperties
bull Implicit ValueSets
bull Implicit ConceptMaps
Basic Terminology Services | Jim Steel27 |
Well-known Terminologies SNOMED-CTbull httpsnomedinfosct([edition](version[date]))bull Filters by subsumption by refset by ECL expressionbull Implicit ValueSets
bull All codes httpsnomedinfosctfhir_vs
bull By subsumption httpsnomedinfosctfhir_vs=isa404684003
bull List of refsets httpsnomedinfosctfhir_vs=refset
bull All codes in a refset httpsnomedinfosctfhir_vs=refset734138000
bull Implicit ConceptMapsbull Historical associations httpsnomedinfosctfhir_cm=900000000000527005
bull For more detail see the advanced session
Basic Terminology Services | Jim Steel28 |
Well-known Terminologies LOINCbull httploincorg
bull Filters parts copyright status multi-axial hierarchy
bull Implicit ValueSetsbull All LOINC codes httploincorgvs
bull Answer Lists httploincorgvsLL715-4
bull Hierarchy httploincorgvsLP29693-6
Basic Terminology Services | Jim Steel29 |
ConceptMapbull Represents a code-to-code mapping typically from a source
ValueSet to a target ValueSet
Basic Terminology Services | Jim Steel30 |
ConceptMap Structure
Basic Terminology Services | Jim Steel31 |
ConceptMap Structure (cont)
Basic Terminology Services | Jim Steel32 |
ConceptMap example
Basic Terminology Services | Jim Steel33 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
Well-known Terminologies SNOMED-CTbull httpsnomedinfosct([edition](version[date]))bull Filters by subsumption by refset by ECL expressionbull Implicit ValueSets
bull All codes httpsnomedinfosctfhir_vs
bull By subsumption httpsnomedinfosctfhir_vs=isa404684003
bull List of refsets httpsnomedinfosctfhir_vs=refset
bull All codes in a refset httpsnomedinfosctfhir_vs=refset734138000
bull Implicit ConceptMapsbull Historical associations httpsnomedinfosctfhir_cm=900000000000527005
bull For more detail see the advanced session
Basic Terminology Services | Jim Steel28 |
Well-known Terminologies LOINCbull httploincorg
bull Filters parts copyright status multi-axial hierarchy
bull Implicit ValueSetsbull All LOINC codes httploincorgvs
bull Answer Lists httploincorgvsLL715-4
bull Hierarchy httploincorgvsLP29693-6
Basic Terminology Services | Jim Steel29 |
ConceptMapbull Represents a code-to-code mapping typically from a source
ValueSet to a target ValueSet
Basic Terminology Services | Jim Steel30 |
ConceptMap Structure
Basic Terminology Services | Jim Steel31 |
ConceptMap Structure (cont)
Basic Terminology Services | Jim Steel32 |
ConceptMap example
Basic Terminology Services | Jim Steel33 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
Well-known Terminologies LOINCbull httploincorg
bull Filters parts copyright status multi-axial hierarchy
bull Implicit ValueSetsbull All LOINC codes httploincorgvs
bull Answer Lists httploincorgvsLL715-4
bull Hierarchy httploincorgvsLP29693-6
Basic Terminology Services | Jim Steel29 |
ConceptMapbull Represents a code-to-code mapping typically from a source
ValueSet to a target ValueSet
Basic Terminology Services | Jim Steel30 |
ConceptMap Structure
Basic Terminology Services | Jim Steel31 |
ConceptMap Structure (cont)
Basic Terminology Services | Jim Steel32 |
ConceptMap example
Basic Terminology Services | Jim Steel33 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
ConceptMapbull Represents a code-to-code mapping typically from a source
ValueSet to a target ValueSet
Basic Terminology Services | Jim Steel30 |
ConceptMap Structure
Basic Terminology Services | Jim Steel31 |
ConceptMap Structure (cont)
Basic Terminology Services | Jim Steel32 |
ConceptMap example
Basic Terminology Services | Jim Steel33 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
ConceptMap Structure
Basic Terminology Services | Jim Steel31 |
ConceptMap Structure (cont)
Basic Terminology Services | Jim Steel32 |
ConceptMap example
Basic Terminology Services | Jim Steel33 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
ConceptMap Structure (cont)
Basic Terminology Services | Jim Steel32 |
ConceptMap example
Basic Terminology Services | Jim Steel33 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
ConceptMap example
Basic Terminology Services | Jim Steel33 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
ConceptMap operations $translatebull Translate a code from one ValueSet to another according to the
serverrsquos resources andor other knowledge available to the server
bull Typically this means look up a ConceptMap resource and show the corresponding map entries (but not always)
bull Code as codesystemversion or coding or CodeableConcept
bull Specify source ValueSet and target ValueSet (or targetSystem)
bull Can be run in reverse (given target show source)
bull Results come back as Parameters with lsquomatchrsquo elements
Basic Terminology Services | Jim Steel34 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
$translate exampleGET httpsontoservercsiroaustu3-latestConceptMapau-jurisdictions$translatecode=QLDampsystem=httpcsiroaucsau-jurisdictionsamptarget=httpsnomedinfosctfhir_vs
Basic Terminology Services | Jim Steel35 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
Terminology Servicebull A server that implements all these can claim to be a terminology
server by instantiating httphl7orgfhirCapabilityStatementterminology-server in its CapabilityStatementbull CodeSystem ValueSet ConceptMap readsearch
bull $expand $validate-code $lookup $translate $closure
Basic Terminology Services | Jim Steel36 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
Terminology in FHIR Searchbull A lot of search parameters in FHIR are of type lsquotokenrsquo
bull These can leverage terminology services
bull abovebelowbull Eg Conditionbody-sitebelow=httpsnomedinfosct|272673000 (all
Conditions where the finding site is a descendent of Bone Structure
bull innot-inbull Eg
ProcedureRequestcodein=httpsnomedinfosctfhir_vs=refset32570361000036108 (all ProcedureRequests in the Imagine Procedure refset
Basic Terminology Services | Jim Steel37 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
Tips and tricksbull Paging
bull Search results can be paged (httphl7orgfhirsearchhtml see _count parameter)
bull $expand results have a separate paging mechanism (count offset)
bull Can reduce bandwidthresponse times by requesting the specific elements you wantbull includeDefinition includeDesignations on $expand
bull property on $lookup
bull _elements on searchreadoperation results
Basic Terminology Services | Jim Steel38 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
Tips and Tricks (cont)bull Batch
bull A lot of terminology operations are small ndash it can often be more efficient to send them as a batch (httphl7orgfhirhttphtmltransaction) then deal with the result when it comes back
bull Manage content types (Content-Type Accept _format)bull JSON XML
bull Accept-Encoding gzipbull More tips in the advanced session
Warning A lot of these can be server-dependent Theyrsquore not proprietary but you should check support for them by your terminology server
Basic Terminology Services | Jim Steel39 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
What if I am hellipbull Designing interfaces for data entry
bull Choose your CodeSystems (ideally standardized ones)
bull Choose or define your ValueSets
bull If your ValueSet is small a picklist can be populated using $expand
bull If your ValueSet is large a typeahead widget can use $expandfilter=xxx
Basic Terminology Services | Jim Steel40 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
bull Making a profilebull Choosedefine which code systems you want to allow
bull Make ValueSets with lists of codes you want to allow
ndash Make sure you respect the binding strength
bull Set up some processes for maintainingupdating them
ndash Concepts can become deprecated over time you can sometimes use ConceptMaps to find which concepts have changed
Basic Terminology Services | Jim Steel41 |
What if I amhellip
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
What if I am hellipbull Analyzingvalidating coded data
bull Choose your CodeSystemValueSets
bull Use $validate-code to check whether the codes are valid in the context in which yoursquore using them and whether the display text is correct (many clinical systems allow users to override the display text for the term)
bull Use $translate to map lsquoforeignrsquo coded data into a normalized CodeSystemValueSet for analysis
bull Use $subsumes $closure or $validate-code with an inline ValueSet to categorize data
Basic Terminology Services | Jim Steel42 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
What if I am hellipbull Exploring a set of concepts and how they relate to one another
bull Use $lookup to retrieve their properties and display them in a table
bull Use the lsquochildrsquo and lsquoparentrsquo properties or $subsumes$closure to explore the hierarchy that exists between concepts
Basic Terminology Services | Jim Steel43 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |
Obligatory plugs
Terminology server httpsontoservercsiroau
Terminology browser httpsontoservercsiroaushrimp
Terminology resource editorhttpsontoservercsiroausnapper2-dev
Basic Terminology Services | Jim Steel44 |