Value Sets are used by many resources:
– Value sets use CodeSystem resources by referring to them via their canonical reference.
– Value sets are used in StructureDefinition, OperationDefinition, Questionnaire, and other resources to specify the allowable contents for coded elements, or business rules for data processing
– ConceptMap resources describe mappings between value sets
– Data Requirement data types to specify data processing conditions
A value set has three identifiers:
– ValueSet.id: the logical id on the system that holds the value set – this changes as it moves from server to server (this id, with the server address prepended, is called the ‘literal identity’ of the resource)
– ValueSet.url: the canonical Uniform Resource Locator (URL) that never changes for this value set – it is the same in every copy. The element is named url rather than uri for legacy reasons and to strongly encourage providing a resolvable URL as the identifier whenever possible. Ideally, it should be a literal URL that is the location of the master version of the value set, though this is not always possible
– ValueSet.identifier: A system/value pair that is used to identify the value set in other contexts
A value set may be described as intensional or extensional. The terms intensional and extensional come from the fields of mathematical logic and set theory.
An intensional value set is typically algorithmically defined. That is, the code group is defined as a rule e.g. all codes with the word diabetes in their description. The key benefit of intensional code groups is that they can be dynamically updated. Dynamic updating helps healthcare organizations keep current when new drugs (and their associated codes) become available or codes for diseases and other clinical concepts change. An intensional value set designed to contain all of the drugs in the beta blocker category can automatically receive a new beta blocker’s code as soon as it hits the market.
Extensional value sets, meanwhile, are enumerated lists of codes where each code is listed individually. This gives the author and user of the value set more control over the which codes are in the value set, but there is a greater maintenance burden to ensure that the value set is kept up to date.