Interactions with the Terminology Service
Determining the proper code, system and unit for Quantity
Given an observation code
and corresponding system
from the ValueSet ehealth-observation-codes, how does one then determine how to specify an observed quantity or reference range? The following describes how to obtain values to set inQuantity.code
, .system
and .unit
.
To get values forQuantity.code
andQuantity.system
use the ConceptMap conceptmap-obs-code-to-ucum as follows:
Call
$translate
on the givencode
andsystem
:GET <base-url>/fhir/ConceptMap/$translate?system=<system>&code=<code>
On match found, the values to use in
Quantity.code
andQuantity.system
are the matching concept’scode
andsystem
, respectively, where the source ConceptMap is “http://ehealth.sundhed.dk/ConceptMap/conceptmap-obs-code-to-ucum” (see example response below):
Example request and response on $translate on conceptmap-obs-code-to-ucum
Request:
GET <base-url>/fhir/ConceptMap/$translate?system=urn:oid:1.2.208.176.2.1&code=NPU03804
Response:
{ "resourceType": "Parameters", "parameter": [ { "name": "result", "valueBoolean": true }, { "name": "message", "valueString": "Matches found!" }, { "name": "match", "part": [ { "name": "equivalence", "valueCode": "specializes" }, { "name": "concept", "valueCoding": { "system": "http://unitsofmeasure.org", "code": "kg", "display": "kilogram" } }, { "name": "source", "valueUri": "http://ehealth.sundhed.dk/ConceptMap/conceptmap-obs-code-to-ucum" } ] } ] }
To get the corresponding and printable value for Quantity.unit
, use the ConceptMap conceptmap-ucum-to-printsymbol as follows:
Call
$translate
on the givensystem
andcode
determined in the response above:GET <base-url>/fhir/ConceptMap/$translate?target=http://ehealth.sundhed.dk/vs/ehealth-ucum-printsymbol-supplement&code=<code>&system=<system>
On match found, extract the matching concept (see example response below).
Call
$lookup
on the matching (CodeSystem)system
andcode
:GET <base-url>/fhir/CodeSystem/$lookup?system=http://ehealth.sundhed.dk/cs/ehealth-ucum-printsymbol-supplement&code=<code>
On match found, the value to use in
Quantity.unit
is the matching concept’sdesignation.value
where thedesignation.language=da
(see example response below). If there is no such designation, the printable value inQuantity.unit
shall be left empty.
The $lookup does not return designation on eHealth Infrastructure Release 4 and other releases prior to Release 5.
Example request and response on $translate on conceptmap-ucum-to-printsymbol
Request (Note that URL-encoding of percent as code is used):
GET <base-url>/fhir/ConceptMap/$translate?target=http://ehealth.sundhed.dk/vs/ehealth-ucum-printsymbol-supplement&code=%25&system=http://unitsofmeasure.org
Response:
{ "resourceType": "Parameters", "parameter": [ { "name": "result", "valueBoolean": true }, { "name": "message", "valueString": "Matches found!" }, { "name": "match", "part": [ { "name": "equivalence", "valueCode": "specializes" }, { "name": "concept", "valueCoding": { "system": "http://ehealth.sundhed.dk/cs/ehealth-ucum-printsymbol-supplement", "code": "%", "display": "percent" } }, { "name": "source", "valueUri": "http://ehealth.sundhed.dk/ConceptMap/conceptmap-ucum-to-printsymbol" } ] } ] }
Example request and response on $lookup on ehealth-ucum-printsymbol-supplement
Request (Note that URL-encoding of percent as code is used):
GET <base-url>/fhir/CodeSystem/$lookup?system=http://ehealth.sundhed.dk/cs/ehealth-ucum-printsymbol-supplement&code=%25
Response:
{ "resourceType": "Parameters", "parameter": [ { "name": "name", "valueString": "UCUMPrintSymbolSupplement" }, { "name": "version", "valueString": "0.6.0" }, { "name": "display", "valueString": "percent" }, { "name": "abstract", "valueBoolean": false }, { "name": "designation", "part": [ { "name": "language", "valueCode": "da" }, { "name": "use" }, { "name": "value", "valueString": "%" } ] } ] }
Determining whether to provide measurement as integer or decimal
Given an observation code
and corresponding system
from the ValueSet ehealth-observation-codes, how does one determine whether an observed quantity or reference range shall be stated as an integer or decimal? While a particular device might produce a decimal with a given precision for a measure, it is up to the client/solution to convert to the form expected by the infrastructure. Whether integer or decimal, the value is set inQuantity.value
.
To determine whether to use integer or decimal, use the ConceptMap conceptmap-obs-code-to-value-type as follows:
Call
$translate
on the givencode
andsystem
:GET <base-url>/fhir/ConceptMap/$translate?system=<system>&code=<code>&target=http://hl7.org/fhir/ValueSet/data-types
On match found, indication of whether to use integer or decimal are the matching concept’s
code
andsystem
, respectively, where the source ConceptMap is “http://ehealth.sundhed.dk/ConceptMap/conceptmap-obs-code-to-value-type” (see example response below).The codes
integer
anddecimal
insystem http://hl7.org/fhir/data-types
signify that the observed value or reference range shall be given as integer and decimal, respectively.
Example request and response on $translate on conceptmap-obs-code-to-value-type
Request:
GET <base-url>/fhir/ConceptMap/$translate?system=urn:oid:1.2.208.176.2.1&code=NPU03804&target=http://hl7.org/fhir/ValueSet/data-types
Response:
{
"resourceType": "Parameters",
"parameter": [
{
"name": "result",
"valueBoolean": true
},
{
"name": "message",
"valueString": "Matches found!"
},
{
"name": "match",
"part": [
{
"name": "equivalence",
"valueCode": "specializes"
},
{
"name": "concept",
"valueCoding": {
"system": "http://hl7.org/fhir/data-types",
"code": "decimal",
"display": "decimal"
}
},
{
"name": "source",
"valueUri": "http://ehealth.sundhed.dk/ConceptMap/conceptmap-obs-code-to-value-type"
}
]
}
]
}