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": "%" } ] } ] }