ValueSet
The ValueSet resource official FHIR documentation can be found here: https://www.hl7.org/fhir/valueset.html.
All examples below can be executed in the REST Console of your Box in Aidbox.Cloud. Just copy/paste a sample into the REST Console and click the EXECUTE button or press Ctrl+Enter.
CRUD is fully supported for the ValueSet resource in Aidbox.
Create
Response
Update
Response
Read
Response
Delete
POST /ValueSet
content-type: text/yaml
description: The gender of a person used for administrative purposes. 2
compose:
include:
- system: http://hl7.org/fhir/administrative-gender
exclude:
- system: http://hl7.org/fhir/administrative-gender
concept:
- code: other
- code: unknown
name: AdministrativeGender2
experimental: true
resourceType: ValueSet
status: draft
id: administrative-gender2
url: http://hl7.org/fhir/ValueSet/administrative-gender2
immutable: true
description: The gender of a person used for administrative purposes. 2
compose:
exclude:
- system: http://hl7.org/fhir/administrative-gender
concept:
- code: other
- code: unknown
include:
- system: http://hl7.org/fhir/administrative-gender
name: AdministrativeGender2
experimental: true
resourceType: ValueSet
status: draft
id: administrative-gender2
url: http://hl7.org/fhir/ValueSet/administrative-gender2
immutable: true
PUT /ValueSet/administrative-gender2
description: The gender of a person used for administrative purposes. 2
compose:
include:
- system: http://hl7.org/fhir/administrative-gender
exclude:
- system: http://hl7.org/fhir/administrative-gender
concept:
- code: other
- code: unknown
name: AdministrativeGender2
experimental: true
resourceType: ValueSet
status: draft
id: administrative-gender2
url: http://hl7.org/fhir/ValueSet/administrative-gender2
immutable: true
version: 3.3.2
description: The gender of a person used for administrative purposes. 2
compose:
exclude:
- system: http://hl7.org/fhir/administrative-gender
concept:
- code: other
- code: unknown
include:
- system: http://hl7.org/fhir/administrative-gender
name: AdministrativeGender2
experimental: true
resourceType: ValueSet
status: draft
id: administrative-gender2
url: http://hl7.org/fhir/ValueSet/administrative-gender2
immutable: true
version: 3.3.2
GET /ValueSet/administrative-gender2
description: The gender of a person used for administrative purposes. 2
compose:
exclude:
- system: http://hl7.org/fhir/administrative-gender
concept:
- code: other
- code: unknown
include:
- system: http://hl7.org/fhir/administrative-gender
name: AdministrativeGender2
experimental: true
resourceType: ValueSet
status: draft
id: administrative-gender2
url: http://hl7.org/fhir/ValueSet/administrative-gender2
immutable: true
version: 3.3.2
DELETE /ValueSet/administrative-gender2
We will show examples of using the compose element by expanding different value sets.
Create a ValueSet using the
include.concept
element. The result will include only listed concepts: kg
and m
.Request
Response
POST /ValueSet/$expand
content-type: text/yaml
resourceType: Parameters
parameter:
- name: valueSet
resource:
resourceType: ValueSet
id: sample-valueset-include-concept
status: draft
compose:
include:
- system: http://unitsofmeasure.org
concept:
- code: kg
display: kilogram
- code: m
display: meter
resourceType: ValueSet
id: sample-valueset-include-concept
status: draft
compose:
include:
- system: http://unitsofmeasure.org
concept:
- code: kg
display: kilogram
- code: m
display: meter
expansion:
timestamp: '2018-10-25T14:40:09Z'
identifier:
contains:
- code: kg
system: http://unitsofmeasure.org
display: kilogram
- code: m
system: http://unitsofmeasure.org
display: meter
Create a ValueSet using the
include.filter
element.Include all concepts from the http://hl7.org/fhir/contact-point-system system where
display = "SMS"
.Request
Response
POST {{base}}/ValueSet/$expand
content-type: text/yaml
resourceType: Parameters
parameter:
- name: valueSet
resource:
resourceType: ValueSet
id: sample-valueset-include-filter
url: http://hl7.org/fhir/ValueSet/sample-valueset-include-filter
status: draft
compose:
include:
- system: http://hl7.org/fhir/contact-point-system
filter:
- {property: display, op: =, value: SMS}
expansion:
timestamp: '2018-10-05T11:56:22Z'
identifier: http://hl7.org/fhir/ValueSet/sample-valueset-include-filter
contains:
- {code: sms, module: fhir-3.3.0, system: 'http://hl7.org/fhir/contact-point-system', display: SMS, definition: 'A contact that can be used for sending an sms message (e.g. mobile phones, some landlines)'}
...
Create a ValueSet using the
exclude.concept
element.Include all concepts from the http://hl7.org/fhir/contact-point-system system and exclude concepts pager, url, and other. Now the value set should include only values phone, fax, email, and sms.
Request
Response
POST {{base}}/ValueSet/$expand
content-type: text/yaml
resourceType: Parameters
parameter:
- name: valueSet
resource:
resourceType: ValueSet
id: sample-valueset-exclude-concept
url: http://hl7.org/fhir/ValueSet/sample-valueset-exclude-concept
status: draft
compose:
include:
- {system: 'http://hl7.org/fhir/contact-point-system'}
exclude:
- concept:
- {code: pager}
- {code: other}
- {code: url}
system: http://hl7.org/fhir/contact-point-system
expansion:
timestamp: '2018-10-05T12:13:23Z'
identifier: http://hl7.org/fhir/ValueSet/sample-valueset-exclude-concept
contains:
- {code: phone, module: fhir-3.3.0, system: 'http://hl7.org/fhir/contact-point-system', display: Phone, definition: The value is a telephone number used for voice calls. Use of full international numbers starting with + is recommended to enable automatic dialing support but not required.}
- {code: fax, module: fhir-3.3.0, system: 'http://hl7.org/fhir/contact-point-system', display: Fax, definition: The value is a fax machine. Use of full international numbers starting with + is recommended to enable automatic dialing support but not required.}
- {code: email, module: fhir-3.3.0, system: 'http://hl7.org/fhir/contact-point-system', display: Email, definition: The value is an email address.}
- {code: sms, module: fhir-3.3.0, system: 'http://hl7.org/fhir/contact-point-system', display: SMS, definition: 'A contact that can be used for sending an sms message (e.g. mobile phones, some landlines)'}
...
Create a ValueSet using the
exclude.filter
element.Include all concepts from the http://hl7.org/fhir/contact-point-system code system and exclude concepts by the filter: exclude all concepts with the length of code = 3 (sms, fax, url). So the value set should include only values: phone, email, pager, and other.
Request
Response
POST {{base}}/ValueSet/$expand
content-type: text/yaml
resourceType: Parameters
parameter:
- name: valueSet
resource:
resourceType: ValueSet
id: sample-valueset-exclude-filter
url: http://hl7.org/fhir/ValueSet/sample-valueset-exclude-filter
status: draft
compose:
include:
- {system: 'http://hl7.org/fhir/contact-point-system'}
exclude:
- system: http://hl7.org/fhir/contact-point-system
filter:
- {property: code, op: =, value: '\w{3}'}
expansion:
timestamp: '2018-10-05T14:59:15Z'
identifier: http://hl7.org/fhir/ValueSet/sample-valueset-exclude-filter
contains:
- {code: phone, module: fhir-3.3.0, system: 'http://hl7.org/fhir/contact-point-system', display: Phone, definition: The value is a telephone number used for voice calls. Use of full international numbers starting with + is recommended to enable automatic dialing support but not required.}
- {code: email, module: fhir-3.3.0, system: 'http://hl7.org/fhir/contact-point-system', display: Email, definition: The value is an email address.}
- {code: pager, module: fhir-3.3.0, system: 'http://hl7.org/fhir/contact-point-system', display: Pager, definition: The value is a pager number. These may be local pager numbers that are only usable on a particular pager system.}
- {code: other, module: fhir-3.3.0, system: 'http://hl7.org/fhir/contact-point-system', display: Other, definition: 'A contact that is not a phone, fax, page or email address and is not expressible as a URL. E.g. Internal mail address. This SHOULD NOT be used for contacts that are expressible as a URL (e.g. Skype, Twitter, Facebook, etc.) Extensions may be used to distinguish "other" contact types.'}
...
Selects concepts found in this value set. This is an absolute URI that is a reference to
ValueSet.url
.concept
and filter
don't apply to valueSet
.N/B:
ValueSet.compose.include.valueSet
**** should be an array not a string.Let's include the
administrative-gender
value set. There will be 4 concepts: male
, female
, unknown
, and other
.Request
Response
POST {{base}}/ValueSet/$expand
content-type: text/yaml
resourceType: Parameters
parameter:
- name: valueSet
resource:
resourceType: ValueSet
id: valueset-from-valueset
url: http://hl7.org/fhir/ValueSet/valueset-from-valueset
status: draft
compose:
include:
- valueSet: ['http://hl7.org/fhir/ValueSet/administrative-gender']
expansion:
timestamp: '2018-10-09T11:34:26Z'
identifier: http://hl7.org/fhir/ValueSet/valueset-from-valueset
contains:
- {code: male, module: fhir-3.3.0, system: 'http://hl7.org/fhir/administrative-gender', display: Male, definition: Male}
- {code: female, module: fhir-3.3.0, system: 'http://hl7.org/fhir/administrative-gender', display: Female, definition: Female}
- {code: other, module: fhir-3.3.0, system: 'http://hl7.org/fhir/administrative-gender', display: Other, definition: Other}
- {code: unknown, module: fhir-3.3.0, system: 'http://hl7.org/fhir/administrative-gender', display: Unknown, definition: Unknown}
...
Let's exclude administrative-gender2 which consists of
male
and female
from administrative-gender code system. The result will be 2 values: other
and unknown
.Request
Untitled
POST {{base}}/ValueSet/$expand
content-type: text/yaml
resourceType: Parameters
parameter:
- name: valueSet
resource:
resourceType: ValueSet
id: valueset-exclude-valueset
url: http://hl7.org/fhir/ValueSet/valueset-exclude-valueset
status: draft
compose:
include:
- {system: 'http://hl7.org/fhir/administrative-gender'}
exclude:
- valueSet: ['{{base}}/ValueSet/administrative-gender2']
expansion:
timestamp: '2018-10-09T13:20:38Z'
identifier: http://hl7.org/fhir/ValueSet/valueset-exclude-valueset
contains:
- {code: other, module: fhir-3.3.0, system: 'http://hl7.org/fhir/administrative-gender', display: Other, definition: Other}
- {code: unknown, module: fhir-3.3.0, system: 'http://hl7.org/fhir/administrative-gender', display: Unknown, definition: Unknown}
...
The
filter.op
element defines the kind of operation to perform as a part of the filter criteria. It can take one of the following values:Code | Display | Support |
---|---|---|
= | Equals | Supported |
is-a | Is A (by subsumption) | Supported |
descendent-of | Descendent Of (by subsumption) | Supported |
is-not-a | Not (Is A) (by subsumption) | Supported |
regex | Regular Expression | Supported |
in | In Set | Supported |
not-in | Not in Set | Supported |
generalizes | Generalizes (by Subsumption) | Not supported |
exists | Exists | Supported |
Code | Parent codes |
---|---|
accepted | - |
achieved | ["accepted"] |
ahead-of-target | ["accepted", "in-progress"] |
behind-target | ["accepted", "in-progress"] |
cancelled | - |
entered-in-error | - |
in-progress | ["accepted"] |
on-hold | ["accepted"] |
on-target | ["accepted", "in-progress"] |
planned | ["accepted"] |
proposed | - |
rejected | - |
sustaining | ["accepted", "in-progress"] |
Let's include only concepts with the specified property
code
equals the provided value cancelled
. The result will include only one concept: cancelled
.Request
Response
POST {{base}}/ValueSet/$expand
content-type: text/yaml
resourceType: Parameters
parameter:
- name: valueSet
resource:
resourceType: ValueSet
id: valueset-filter-equals
url: http://hl7.org/fhir/ValueSet/valueset-filter-equals
status: draft
compose:
include:
- system: http://hl7.org/fhir/goal-status
filter:
- {property: code, op: =, value: cancelled}
expansion:
timestamp: '2018-10-08T12:26:56Z'
identifier: http://hl7.org/fhir/ValueSet/valueset-filter-equals
contains:
- {code: cancelled, module: fhir-3.3.0, system: 'http://hl7.org/fhir/goal-status', display: Cancelled, definition: The previously accepted goal is no longer being sought}
...
Let's include all concepts that have a transitive is-a relationship with the concept code
in-progress
provided as the value including the provided concept itself (i.e. include self and child codes). The result will include 5 values: in-progress
, on-target
, ahead-of-target
, behind-target
, and sustaining
.Request
Response
POST {{base}}/ValueSet/$expand
content-type: text/yaml
resourceType: Parameters
parameter:
- name: valueSet
resource:
resourceType: ValueSet
id: valueset-filter-is-a
url: http://hl7.org/fhir/ValueSet/valueset-filter-is-a
status: draft
compose:
include:
- system: http://hl7.org/fhir/goal-status
filter:
- {property: code, op: is-a, value: in-progress}
expansion:
timestamp: '2018-10-08T12:56:36Z'
identifier: http://hl7.org/fhir/ValueSet/valueset-filter-is-a
contains:
- code: in-progress
module: fhir-3.3.0
system: http://hl7.org/fhir/goal-status
display: In Progress
hierarchy: [accepted]
definition: The goal is being sought but has not yet been reached. (Also applies if goal was reached in the past but there has been regression and goal is being sought again)
- code: on-target
module: fhir-3.3.0
system: http://hl7.org/fhir/goal-status
display: On Target
hierarchy: [accepted, in-progress]
definition: The goal is on schedule for the planned timelines
- code: ahead-of-target
module: fhir-3.3.0
system: http://hl7.org/fhir/goal-status
display: Ahead of Target
hierarchy: [accepted, in-progress]
definition: The goal is ahead of the planned timelines
- code: behind-target
module: fhir-3.3.0
system: http://hl7.org/fhir/goal-status
display: Behind Target
hierarchy: [accepted, in-progress]
definition: The goal is behind the planned timelines
- code: sustaining
module: fhir-3.3.0
system: http://hl7.org/fhir/goal-status
display: Sustaining
hierarchy: [accepted, in-progress]
definition: The goal has been met, but ongoing activity is needed to sustain the goal objective
...
Let's include all concepts that have a transitive is-a relationship with the concept code
in-progress
provided as the value excluding the provided concept itself (i.e. include child codes). The result will include 4 values: on-target
, ahead-of-target
, behind-target
, and sustaining
.Request
Response
POST {{base}}/ValueSet/$expand
content-type: text/yaml
resourceType: Parameters
parameter:
- name: valueSet
resource:
resourceType: ValueSet
id: valueset-filter-descendent-of
url: http://hl7.org/fhir/ValueSet/valueset-filter-descendent-of
status: draft
compose:
include:
- system: http://hl7.org/fhir/goal-status
filter:
- {property: code, op: descendent-of, value: in-progress}
expansion:
timestamp: '2018-10-08T13:02:33Z'
identifier: http://hl7.org/fhir/ValueSet/valueset-filter-descendent-of
contains:
- code: on-target
module: fhir-3.3.0
system: http://hl7.org/fhir/goal-status
display: On Target
hierarchy: [accepted, in-progress]
definition: The goal is on schedule for the planned timelines
- code: ahead-of-target
module: fhir-3.3.0
system: http://hl7.org/fhir/goal-status
display: Ahead of Target
hierarchy: [accepted, in-progress]
definition: The goal is ahead of the planned timelines
- code: behind-target
module: fhir-3.3.0
system: http://hl7.org/fhir/goal-status
display: Behind Target
hierarchy: [accepted, in-progress]
definition: The goal is behind the planned timelines
- code: sustaining
module: fhir-3.3.0
system: http://hl7.org/fhir/goal-status
display: Sustaining
hierarchy: [accepted, in-progress]
definition: The goal has been met, but ongoing activity is needed to sustain the goal objective
...
Let's include all codes where the specified property of the code does not have an is-a relationship with the provided value
accepted
. The result will include 4 values whose parent is not accepted
: proposed
, cancelled
, rejected
, and entered-in-error
.Request
Response
POST {{base}}/ValueSet/$expand
content-type: text/yaml
resourceType: Parameters
parameter:
- name: valueSet
resource:
resourceType: ValueSet
id: valueset-filter-is-not-a
url: http://hl7.org/fhir/ValueSet/valueset-filter-is-not-a
status: draft
compose:
include:
- system: http://hl7.org/fhir/goal-status
filter:
- {property: code, op: is-not-a, value: accepted}
expansion:
timestamp: '2018-10-10T13:44:22Z'
identifier: http://localhost:8888/ValueSet/valueset-filter-is-not-a
contains:
- {code: proposed, module: fhir-3.3.0, system: 'http://hl7.org/fhir/goal-status', display: Proposed, definition: A goal is proposed for this patient}
- {code: cancelled, module: fhir-3.3.0, system: 'http://hl7.org/fhir/goal-status', display: Cancelled, definition: The previously accepted goal is no longer being sought}
- {code: entered-in-error, module: fhir-3.3.0, system: 'http://hl7.org/fhir/goal-status', display: Entered In Error, definition: The goal was entered in error and voided.}
- {code: rejected, module: fhir-3.3.0, system: 'http://hl7.org/fhir/goal-status', display: Rejected, definition: A proposed goal was rejected}
...
Aidbox supports filter operation
regex
and implements Postgresql regular expressions. See the documentation here: https://www.postgresql.org/docs/9.3/static/functions-matching.html#FUNCTIONS-SIMILARTO-REGEXP.Please notice that regular expressions require an additional character escaping in JSON.
Let's include codes where the specified property of the code matches the regex specified in the provided value
\\w{8}
. The result will include 4 values that have 8 symbols in length: proposed
, accepted
, achieved
, and rejected
.Request
Response
POST {{base}}/ValueSet/$expand
content-type: text/yaml
resourceType: Parameters
parameter:
- name: valueSet
resource:
resourceType: ValueSet
id: valueset-filter-equals
url: http://hl7.org/fhir/ValueSet/valueset-filter-equals
status: draft
compose:
include:
- system: http://hl7.org/fhir/goal-status
filter:
- {property: code, op: regex, value: '\w{8}'}
expansion:
timestamp: '2018-10-08T13:32:27Z'
identifier: http://hl7.org/fhir/ValueSet/valueset-filter-equals
contains:
- {code: proposed, module: fhir-3.3.0, system: 'http://hl7.org/fhir/goal-status', display: Proposed, definition: A goal is proposed for this patient}
- {code: accepted, module: fhir-3.3.0, system: 'http://hl7.org/fhir/goal-status', display: Accepted, definition: A proposed goal was accepted or acknowledged}
- code: achieved
module: fhir-3.3.0
system: http://hl7.org/fhir/goal-status
display: Achieved
hierarchy: [accepted]
definition: The goal has been met and no further action is needed
- {code: rejected, module: fhir-3.3.0, system: 'http://hl7.org/fhir/goal-status', display: Rejected, definition: A proposed goal was rejected}
...
Let's include concepts where the specified property of the code is in the set of codes specified in the provided value
on-target,ahead-of-target,behind-target
(comma separated list). The result will be 3 values: on-target
, ahead-of-target
, and behind-target
.Request
Response
POST {{base}}/ValueSet/$expand
content-type: text/yaml
resourceType: Parameters
parameter:
- name: valueSet
resource:
resourceType: ValueSet
id: valueset-filter-in
url: http://hl7.org/fhir/ValueSet/valueset-filter-in
status: draft
compose:
include:
- system: http://hl7.org/fhir/goal-status
filter:
- {property: code, op: in, value: 'on-target,ahead-of-target,behind-target'}
expansion:
timestamp: '2018-10-08T13:49:22Z'
identifier: http://hl7.org/fhir/ValueSet/valueset-filter-in
contains:
- code: on-target
module: fhir-3.3.0
system: http://hl7.org/fhir/goal-status
display: On Target
hierarchy: [accepted, in-progress]
definition: The goal is on schedule for the planned timelines
- code: ahead-of-target
module: fhir-3.3.0
system: http://hl7.org/fhir/goal-status
display: Ahead of Target
hierarchy: [accepted, in-progress]
definition: The goal is ahead of the planned timelines
- code: behind-target
module: fhir-3.3.0
system: http://hl7.org/fhir/goal-status
display: Behind Target
hierarchy: [accepted, in-progress]
definition: The goal is behind the planned timelines
...
Let's include concepts where the specified property of the code is not in the set of codes specified in the provided value
accepted,achieved,ahead-of-target,behind-target,cancelled,entered-in-error,in-progress,on-hold,on-target,planned
(comma separated list). The result will include 3 values: proposed
, rejected
, and sustaining
.Request
Response
POST {{base}}/ValueSet/$expand
content-type: text/yaml
resourceType: Parameters
parameter:
- name: valueSet
resource:
resourceType: ValueSet
id: valueset-filter-not-in