Current Build

5.9 Resource DataElement - Content

Orders and Observations Work GroupMaturity Level: 0Compartments: Not linked to any defined compartments

The formal description of a single piece of information that can be gathered and reported.

DataElement is an infrastructure resource that supports the defining individual pieces of data that might be collected or stored. While these definitions might apply to elements found in FHIR resources and profiles, they can also apply to questionnaire questions, elements in data stores, and non-FHIR specification (HL7 v2 , CDA , CDISC, etc.) I.e. the definitions aren't FHIR-specific.

This resource covers two major use-cases:

  1. Definitions of types of measurements or observations that may be requested or performed. In HL7, these are sometimes referred to as service, test or observation "master files"
  2. Definitions of "data elements" (DEs) that may be used in questionnaires (survey instruments and data collection forms) and profiles and potentially mapped to elements in other resources and profiles

The purpose of the first use-case is to allow systems to identify what types of lab orders, diagnostic studies and other types of observations may be requested or performed within a particular organization or other context. An ordering practitioner can query for a list of data elements by category name or other criteria and identify which, within a set of similar tests, they wish to request to be performed.

The focus of the second use-case is standardizing data capture and reporting. By defining standard names, data capture constraints, questions and other characteristics, the data gathered within and across organizations via questionnaires, as part of clinical studies, etc. can be made more consistent. When designing clinical studies, constructing questionnaires, building profiles or performing other tasks that involve determining what data will be captured or exchanged and how, designers can query to find pre-defined data element definitions they can leverage or map to. By encouraging consistency around data element definitions, data types, value sets, string lengths and other constraints, data becomes more easily exchangeable and comparable across systems. This benefits interoperability and clinical research. (For more discussion, see the section on standardization below.)

The scope covers base capabilities of the ISO 11179 Metadata Registries specification which defines DEs. It also covers observation definitions by ontologies such as LOINC. The term "observation" is interpreted in its broadest sense as "any element that might be thought of as the 'value' in a name-value pair". So it includes such concepts as patient gender, practitioner address and other data elements that would not typically be captured using the Observation resource.

This resource has significant overlap with StructureDefinition and Questionnaire.

StructureDefinition also defines data elements. However, it does so only in the context of FHIR-specific artifacts (FHIR resources, data types and profiles). As well, StructureDefinition typically identifies a number of data elements together in context. DataElement defines only a single data element and it does so in a manner that is not directly tied to FHIR. Data elements might define the value of an Observation, constrain the allowed answer to a question in a Questionnaire (including providing a list of permitted answers), describe the permitted value captured of an element in some other resource (Patient, FamilyMemberHistory, etc.) or even used outside FHIR entirely in a CDA document or HL7 v2 specification.

Questionnaire is to both define forms, surveys and other structures that can be filled out. Questionnaire also defines data elements. However, it does so only in the context of a particular questionnaire design. In contrast, DataElement is focused on defining data elements independent of their use in questionnaires and other structures. A single DataElement might be referenced in numerous Questionnaires, or even potentially in multiple places within a single Questionnaire. This reference might either be implicit or may be explicit through an extension. (For implementability reasons, the data constraints should still be explicitly exposed within the Questionnaire rather than being included "by reference" to the DataElement.)

Note: Extensions on DataElement that define the characteristics of a data element will typically also be applicable to Profile's ElementDefinition and Questionnaire's Question data element as both are also used to define the characteristics of a data element.

DataElement differs from Observation in that it describes what kind of observations can occur, while Observation focuses on a specific observation of a specific subject at a particular time that has occurred.

ActivityDefinition defines actions that can occur. DataElement defines individual pieces of data that can be captured. An ActivityDefinition that is focused on capturing data might be linked to the DataElement that defines the data to be captured.

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. DataElement DomainResourceResource data element
Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension
... url Σ0..1uriLogical uri to reference this data element (globally unique)
... identifier Σ0..*IdentifierAdditional identifier for the data element
... version Σ0..1stringBusiness version of the data element
... status ?!Σ1..1codedraft | active | retired
PublicationStatus (Required)
... experimental ?!Σ0..1booleanIf for testing purposes, not real usage
... date Σ0..1dateTimeDate this was last changed
... publisher Σ0..1stringName of the publisher (Organization or individual)
... name Σ0..1stringName for this data element (Computer friendly)
... title Σ0..1stringName for this data element (Human friendly)
... contact Σ0..*ContactDetailContact details for the publisher
... useContext Σ0..*UsageContextContent intends to support these contexts
... jurisdiction Σ0..*CodeableConceptIntended jurisdiction for data element (if applicable)
Jurisdiction ValueSet (Extensible)
... copyright 0..1markdownUse and/or publishing restrictions
... stringency Σ0..1codecomparable | fully-specified | equivalent | convertable | scaleable | flexible
DataElementStringency (Required)
... mapping I0..*BackboneElementExternal specification mapped to
+ At least one of name or uri SHALL be present
.... identity 1..1idInternal id when this mapping is used
.... uri 0..1uriIdentifies what this mapping refers to
.... name 0..1stringNames what this mapping refers to
.... comment 0..1stringVersions, Issues, Scope limitations etc.
... element ΣI1..*ElementDefinitionDefinition of element
+ No base allowed
+ No slicing allowed

doco Documentation for this format

UML Diagram (Legend)

DataElement (DomainResource)An absolute URL that is used to identify this data element when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this data element is (or will be) published. The URL SHOULD include the major version of the data element. For more information see [Technical and Business Versions](resource.html#versions)url : uri [0..1]A formal identifier that is used to identify this data element when it is represented in other formats, or referenced in a specification, model, design or an instanceidentifier : Identifier [0..*]The identifier that is used to identify this version of the data element when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the data element author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions are orderableversion : string [0..1]The status of this data element. Enables tracking the life-cycle of the content (this element modifies the meaning of other elements)status : code [1..1] « The lifecycle status of a Value Set or Concept Map. (Strength=Required)PublicationStatus! »A flag to indicate that this data element is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage (this element modifies the meaning of other elements)experimental : boolean [0..1]The date (and optionally time) when the data element was published. The date must change when the business version changes, if it does, and it must change if the status code changes. In addition, it should change when the substantive content of the data element changesdate : dateTime [0..1]The name of the individual or organization that published the data elementpublisher : string [0..1]A natural language name identifying the data element. This name should be usable as an identifier for the module by machine processing applications such as code generationname : string [0..1]A short, descriptive, user-friendly title for the data elementtitle : string [0..1]Contact details to assist a user in finding and communicating with the publishercontact : ContactDetail [0..*]The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of code system definitionsuseContext : UsageContext [0..*]A jurisdiction in which the data element is intended to be usedjurisdiction : CodeableConcept [0..*] « Countries and regions within which this artifact is targeted for use (Strength=Extensible)Jurisdiction ValueSet+ »A copyright statement relating to the data element and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the data elementcopyright : markdown [0..1]Identifies how precise the data element is in its definitionstringency : code [0..1] « Indicates the degree of precision of the data element definition. (Strength=Required)DataElementStringency! »Defines the structure, type, allowed values and other constraining characteristics of the data elementelement : ElementDefinition [1..*]MappingAn internal id that is used to identify this mapping set when specific mappings are made on a per-element basisidentity : id [1..1]An absolute URI that identifies the specification that this mapping is expressed touri : uri [0..1]A name for the specification that is being mapped toname : string [0..1]Comments about this mapping, including version notes, issues, scope limitations, and other important notes for usagecomment : string [0..1]Identifies a specification (other than a terminology) that the elements which make up the DataElement have some correspondence withmapping[0..*]

XML Template

<DataElement xmlns="http://hl7.org/fhir"> doco
 <!-- from Resource: id, meta, implicitRules, and language -->
 <!-- from DomainResource: text, contained, extension, and modifierExtension -->
 <url value="[uri]"/><!-- 0..1 Logical uri to reference this data element (globally unique) -->
 <identifier><!-- 0..* Identifier Additional identifier for the data element --></identifier>
 <version value="[string]"/><!-- 0..1 Business version of the data element -->
 <status value="[code]"/><!-- 1..1 draft | active | retired -->
 <experimental value="[boolean]"/><!-- 0..1 If for testing purposes, not real usage -->
 <date value="[dateTime]"/><!-- 0..1 Date this was last changed -->
 <publisher value="[string]"/><!-- 0..1 Name of the publisher (Organization or individual) -->
 <name value="[string]"/><!-- 0..1 Name for this data element (Computer friendly) -->
 <title value="[string]"/><!-- 0..1 Name for this data element (Human friendly) -->
 <contact><!-- 0..* ContactDetail Contact details for the publisher --></contact>
 <useContext><!-- 0..* UsageContext Content intends to support these contexts --></useContext>
 <jurisdiction><!-- 0..* CodeableConcept Intended jurisdiction for data element (if applicable) --></jurisdiction>
 <copyright value="[markdown]"/><!-- 0..1 Use and/or publishing restrictions -->
 <stringency value="[code]"/><!-- 0..1 comparable | fully-specified | equivalent | convertable | scaleable | flexible -->
 <mapping>  <!-- ?? 0..* External specification mapped to -->
  <identity value="[id]"/><!-- 1..1 Internal id when this mapping is used -->
  <uri value="[uri]"/><!-- 0..1 Identifies what this mapping refers to -->
  <name value="[string]"/><!-- 0..1 Names what this mapping refers to -->
  <comment value="[string]"/><!-- 0..1 Versions, Issues, Scope limitations etc. -->
 </mapping>
 <element><!-- 1..* ElementDefinition Definition of element --></element>
</DataElement>

JSON Template

{doco
  "resourceType" : "DataElement",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "url" : "<uri>", // Logical uri to reference this data element (globally unique)
  "identifier" : [{ Identifier }], // Additional identifier for the data element
  "version" : "<string>", // Business version of the data element
  "status" : "<code>", // R!  draft | active | retired
  "experimental" : <boolean>, // If for testing purposes, not real usage
  "date" : "<dateTime>", // Date this was last changed
  "publisher" : "<string>", // Name of the publisher (Organization or individual)
  "name" : "<string>", // Name for this data element (Computer friendly)
  "title" : "<string>", // Name for this data element (Human friendly)
  "contact" : [{ ContactDetail }], // Contact details for the publisher
  "useContext" : [{ UsageContext }], // Content intends to support these contexts
  "jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for data element (if applicable)
  "copyright" : "<markdown>", // Use and/or publishing restrictions
  "stringency" : "<code>", // comparable | fully-specified | equivalent | convertable | scaleable | flexible
  "mapping" : [{ // C? External specification mapped to
    "identity" : "<id>", // R!  Internal id when this mapping is used
    "uri" : "<uri>", // Identifies what this mapping refers to
    "name" : "<string>", // Names what this mapping refers to
    "comment" : "<string>" // Versions, Issues, Scope limitations etc.
  }],
  "element" : [{ ElementDefinition }] // R!  Definition of element
}

Turtle Template

@prefix fhir: <http://hl7.org/fhir/> .doco


[ a fhir:DataElement;
  fhir:nodeRole fhir:treeRoot; # if this is the parser root

  # from Resource: .id, .meta, .implicitRules, and .language
  # from DomainResource: .text, .contained, .extension, and .modifierExtension
  fhir:DataElement.url [ uri ]; # 0..1 Logical uri to reference this data element (globally unique)
  fhir:DataElement.identifier [ Identifier ], ... ; # 0..* Additional identifier for the data element
  fhir:DataElement.version [ string ]; # 0..1 Business version of the data element
  fhir:DataElement.status [ code ]; # 1..1 draft | active | retired
  fhir:DataElement.experimental [ boolean ]; # 0..1 If for testing purposes, not real usage
  fhir:DataElement.date [ dateTime ]; # 0..1 Date this was last changed
  fhir:DataElement.publisher [ string ]; # 0..1 Name of the publisher (Organization or individual)
  fhir:DataElement.name [ string ]; # 0..1 Name for this data element (Computer friendly)
  fhir:DataElement.title [ string ]; # 0..1 Name for this data element (Human friendly)
  fhir:DataElement.contact [ ContactDetail ], ... ; # 0..* Contact details for the publisher
  fhir:DataElement.useContext [ UsageContext ], ... ; # 0..* Content intends to support these contexts
  fhir:DataElement.jurisdiction [ CodeableConcept ], ... ; # 0..* Intended jurisdiction for data element (if applicable)
  fhir:DataElement.copyright [ markdown ]; # 0..1 Use and/or publishing restrictions
  fhir:DataElement.stringency [ code ]; # 0..1 comparable | fully-specified | equivalent | convertable | scaleable | flexible
  fhir:DataElement.mapping [ # 0..* External specification mapped to
    fhir:DataElement.mapping.identity [ id ]; # 1..1 Internal id when this mapping is used
    fhir:DataElement.mapping.uri [ uri ]; # 0..1 Identifies what this mapping refers to
    fhir:DataElement.mapping.name [ string ]; # 0..1 Names what this mapping refers to
    fhir:DataElement.mapping.comment [ string ]; # 0..1 Versions, Issues, Scope limitations etc.
  ], ...;
  fhir:DataElement.element [ ElementDefinition ], ... ; # 1..* Definition of element
]

Changes since DSTU2

DataElement
DataElement.status Change value set from http://hl7.org/fhir/ValueSet/conformance-resource-status to http://hl7.org/fhir/ValueSet/publication-status
DataElement.experimental Now marked as Modifier
DataElement.title added Element
DataElement.contact Type changed from BackboneElement to ContactDetail
DataElement.useContext Type changed from CodeableConcept to UsageContext
Remove Binding http://hl7.org/fhir/ValueSet/use-context (extensible)
DataElement.jurisdiction added Element
DataElement.copyright Type changed from string to markdown
DataElement.mapping.comment Renamed from comments to comment
DataElement.contact.name deleted
DataElement.contact.telecom deleted

See the Full Difference for further information

See R2 <--> R3 Conversion Maps (status = 4 tests that all execute ok. 1 fail round-trip testing and 1 r3 resources are invalid (4 errors).).

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. DataElement DomainResourceResource data element
Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension
... url Σ0..1uriLogical uri to reference this data element (globally unique)
... identifier Σ0..*IdentifierAdditional identifier for the data element
... version Σ0..1stringBusiness version of the data element
... status ?!Σ1..1codedraft | active | retired
PublicationStatus (Required)
... experimental ?!Σ0..1booleanIf for testing purposes, not real usage
... date Σ0..1dateTimeDate this was last changed
... publisher Σ0..1stringName of the publisher (Organization or individual)
... name Σ0..1stringName for this data element (Computer friendly)
... title Σ0..1stringName for this data element (Human friendly)
... contact Σ0..*ContactDetailContact details for the publisher
... useContext Σ0..*UsageContextContent intends to support these contexts
... jurisdiction Σ0..*CodeableConceptIntended jurisdiction for data element (if applicable)
Jurisdiction ValueSet (Extensible)
... copyright 0..1markdownUse and/or publishing restrictions
... stringency Σ0..1codecomparable | fully-specified | equivalent | convertable | scaleable | flexible
DataElementStringency (Required)
... mapping I0..*BackboneElementExternal specification mapped to
+ At least one of name or uri SHALL be present
.... identity 1..1idInternal id when this mapping is used
.... uri 0..1uriIdentifies what this mapping refers to
.... name 0..1stringNames what this mapping refers to
.... comment 0..1stringVersions, Issues, Scope limitations etc.
... element ΣI1..*ElementDefinitionDefinition of element
+ No base allowed
+ No slicing allowed

doco Documentation for this format

UML Diagram (Legend)

DataElement (DomainResource)An absolute URL that is used to identify this data element when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this data element is (or will be) published. The URL SHOULD include the major version of the data element. For more information see [Technical and Business Versions](resource.html#versions)url : uri [0..1]A formal identifier that is used to identify this data element when it is represented in other formats, or referenced in a specification, model, design or an instanceidentifier : Identifier [0..*]The identifier that is used to identify this version of the data element when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the data element author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions are orderableversion : string [0..1]The status of this data element. Enables tracking the life-cycle of the content (this element modifies the meaning of other elements)status : code [1..1] « The lifecycle status of a Value Set or Concept Map. (Strength=Required)PublicationStatus! »A flag to indicate that this data element is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage (this element modifies the meaning of other elements)experimental : boolean [0..1]The date (and optionally time) when the data element was published. The date must change when the business version changes, if it does, and it must change if the status code changes. In addition, it should change when the substantive content of the data element changesdate : dateTime [0..1]The name of the individual or organization that published the data elementpublisher : string [0..1]A natural language name identifying the data element. This name should be usable as an identifier for the module by machine processing applications such as code generationname : string [0..1]A short, descriptive, user-friendly title for the data elementtitle : string [0..1]Contact details to assist a user in finding and communicating with the publishercontact : ContactDetail [0..*]The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of code system definitionsuseContext : UsageContext [0..*]A jurisdiction in which the data element is intended to be usedjurisdiction : CodeableConcept [0..*] « Countries and regions within which this artifact is targeted for use (Strength=Extensible)Jurisdiction ValueSet+ »A copyright statement relating to the data element and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the data elementcopyright : markdown [0..1]Identifies how precise the data element is in its definitionstringency : code [0..1] « Indicates the degree of precision of the data element definition. (Strength=Required)DataElementStringency! »Defines the structure, type, allowed values and other constraining characteristics of the data elementelement : ElementDefinition [1..*]MappingAn internal id that is used to identify this mapping set when specific mappings are made on a per-element basisidentity : id [1..1]An absolute URI that identifies the specification that this mapping is expressed touri : uri [0..1]A name for the specification that is being mapped toname : string [0..1]Comments about this mapping, including version notes, issues, scope limitations, and other important notes for usagecomment : string [0..1]Identifies a specification (other than a terminology) that the elements which make up the DataElement have some correspondence withmapping[0..*]

XML Template

<DataElement xmlns="http://hl7.org/fhir"> doco
 <!-- from Resource: id, meta, implicitRules, and language -->
 <!-- from DomainResource: text, contained, extension, and modifierExtension -->
 <url value="[uri]"/><!-- 0..1 Logical uri to reference this data element (globally unique) -->
 <identifier><!-- 0..* Identifier Additional identifier for the data element --></identifier>
 <version value="[string]"/><!-- 0..1 Business version of the data element -->
 <status value="[code]"/><!-- 1..1 draft | active | retired -->
 <experimental value="[boolean]"/><!-- 0..1 If for testing purposes, not real usage -->
 <date value="[dateTime]"/><!-- 0..1 Date this was last changed -->
 <publisher value="[string]"/><!-- 0..1 Name of the publisher (Organization or individual) -->
 <name value="[string]"/><!-- 0..1 Name for this data element (Computer friendly) -->
 <title value="[string]"/><!-- 0..1 Name for this data element (Human friendly) -->
 <contact><!-- 0..* ContactDetail Contact details for the publisher --></contact>
 <useContext><!-- 0..* UsageContext Content intends to support these contexts --></useContext>
 <jurisdiction><!-- 0..* CodeableConcept Intended jurisdiction for data element (if applicable) --></jurisdiction>
 <copyright value="[markdown]"/><!-- 0..1 Use and/or publishing restrictions -->
 <stringency value="[code]"/><!-- 0..1 comparable | fully-specified | equivalent | convertable | scaleable | flexible -->
 <mapping>  <!-- ?? 0..* External specification mapped to -->
  <identity value="[id]"/><!-- 1..1 Internal id when this mapping is used -->
  <uri value="[uri]"/><!-- 0..1 Identifies what this mapping refers to -->
  <name value="[string]"/><!-- 0..1 Names what this mapping refers to -->
  <comment value="[string]"/><!-- 0..1 Versions, Issues, Scope limitations etc. -->
 </mapping>
 <element><!-- 1..* ElementDefinition Definition of element --></element>
</DataElement>

JSON Template

{doco
  "resourceType" : "DataElement",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "url" : "<uri>", // Logical uri to reference this data element (globally unique)
  "identifier" : [{ Identifier }], // Additional identifier for the data element
  "version" : "<string>", // Business version of the data element
  "status" : "<code>", // R!  draft | active | retired
  "experimental" : <boolean>, // If for testing purposes, not real usage
  "date" : "<dateTime>", // Date this was last changed
  "publisher" : "<string>", // Name of the publisher (Organization or individual)
  "name" : "<string>", // Name for this data element (Computer friendly)
  "title" : "<string>", // Name for this data element (Human friendly)
  "contact" : [{ ContactDetail }], // Contact details for the publisher
  "useContext" : [{ UsageContext }], // Content intends to support these contexts
  "jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for data element (if applicable)
  "copyright" : "<markdown>", // Use and/or publishing restrictions
  "stringency" : "<code>", // comparable | fully-specified | equivalent | convertable | scaleable | flexible
  "mapping" : [{ // C? External specification mapped to
    "identity" : "<id>", // R!  Internal id when this mapping is used
    "uri" : "<uri>", // Identifies what this mapping refers to
    "name" : "<string>", // Names what this mapping refers to
    "comment" : "<string>" // Versions, Issues, Scope limitations etc.
  }],
  "element" : [{ ElementDefinition }] // R!  Definition of element
}

Turtle Template

@prefix fhir: <http://hl7.org/fhir/> .doco


[ a fhir:DataElement;
  fhir:nodeRole fhir:treeRoot; # if this is the parser root

  # from Resource: .id, .meta, .implicitRules, and .language
  # from DomainResource: .text, .contained, .extension, and .modifierExtension
  fhir:DataElement.url [ uri ]; # 0..1 Logical uri to reference this data element (globally unique)
  fhir:DataElement.identifier [ Identifier ], ... ; # 0..* Additional identifier for the data element
  fhir:DataElement.version [ string ]; # 0..1 Business version of the data element
  fhir:DataElement.status [ code ]; # 1..1 draft | active | retired
  fhir:DataElement.experimental [ boolean ]; # 0..1 If for testing purposes, not real usage
  fhir:DataElement.date [ dateTime ]; # 0..1 Date this was last changed
  fhir:DataElement.publisher [ string ]; # 0..1 Name of the publisher (Organization or individual)
  fhir:DataElement.name [ string ]; # 0..1 Name for this data element (Computer friendly)
  fhir:DataElement.title [ string ]; # 0..1 Name for this data element (Human friendly)
  fhir:DataElement.contact [ ContactDetail ], ... ; # 0..* Contact details for the publisher
  fhir:DataElement.useContext [ UsageContext ], ... ; # 0..* Content intends to support these contexts
  fhir:DataElement.jurisdiction [ CodeableConcept ], ... ; # 0..* Intended jurisdiction for data element (if applicable)
  fhir:DataElement.copyright [ markdown ]; # 0..1 Use and/or publishing restrictions
  fhir:DataElement.stringency [ code ]; # 0..1 comparable | fully-specified | equivalent | convertable | scaleable | flexible
  fhir:DataElement.mapping [ # 0..* External specification mapped to
    fhir:DataElement.mapping.identity [ id ]; # 1..1 Internal id when this mapping is used
    fhir:DataElement.mapping.uri [ uri ]; # 0..1 Identifies what this mapping refers to
    fhir:DataElement.mapping.name [ string ]; # 0..1 Names what this mapping refers to
    fhir:DataElement.mapping.comment [ string ]; # 0..1 Versions, Issues, Scope limitations etc.
  ], ...;
  fhir:DataElement.element [ ElementDefinition ], ... ; # 1..* Definition of element
]

Changes since DSTU2

DataElement
DataElement.status Change value set from http://hl7.org/fhir/ValueSet/conformance-resource-status to http://hl7.org/fhir/ValueSet/publication-status
DataElement.experimental Now marked as Modifier
DataElement.title added Element
DataElement.contact Type changed from BackboneElement to ContactDetail
DataElement.useContext Type changed from CodeableConcept to UsageContext
Remove Binding http://hl7.org/fhir/ValueSet/use-context (extensible)
DataElement.jurisdiction added Element
DataElement.copyright Type changed from string to markdown
DataElement.mapping.comment Renamed from comments to comment
DataElement.contact.name deleted
DataElement.contact.telecom deleted

See the Full Difference for further information

See R2 <--> R3 Conversion Maps (status = 4 tests that all execute ok. 1 fail round-trip testing and 1 r3 resources are invalid (4 errors).).

 

Alternate definitions: Master Definition (XML, JSON), XML Schema/Schematron (for ) + JSON Schema, ShEx (for Turtle)

PathDefinitionTypeReference
DataElement.status The lifecycle status of a Value Set or Concept Map.RequiredPublicationStatus
DataElement.jurisdiction Countries and regions within which this artifact is targeted for useExtensibleJurisdiction ValueSet
DataElement.stringency Indicates the degree of precision of the data element definition.RequiredDataElementStringency

  • dae-1: On DataElement.element: No base allowed (expression on DataElement.element: base.empty())
  • dae-2: On DataElement.element: No slicing allowed (expression on DataElement.element: slicing.empty())
  • dae-3: On DataElement.mapping: At least one of name or uri SHALL be present (expression on DataElement.mapping: uri.exists() or name.exists())

One of the sources of the DataElement resource definition was the ISO 11179 Metadata Registries specification. It defines a logical model for the classification, identification, naming and registration of Data Elements, Data Element Concepts and their associated Value and Conceptual Domains.

The DataElement resource can be used to represent both Data_Element and Data_Element_Concept in the ISO logical model. (The ValueSet resource provides the details for Value_Domain and Conceptual_Domain for enumerated elements.) The determination of whether a DataElement resource instance is an ISO 11179 Data_Element or Data_Element_Concept is determined by whether the type property is specified - which corresponds to the ISO property Data_Element.domain.datatype which is required for Data_Elements.

Unlike the 11179 logical specification, the DataElement resource does not require a linkage from data element to a distinct data element concept, though this linkage can be established through an extension if desired. The typical means of identification of the data element concept is expected to instead occur through the mapping of the data element to a particular code or reference model that formally defines the concept. It is possible this reference model could be based on ISO's Object_Class and Property mechanism. However, mappings to other reference models are also possible, for example:

In the event of multiple codes and/or mappings, the "authoritative" mapping (the one formally defining the concept) is identified by either setting the "primary" element on the code or by specifying the "primary mapping" ISO 11179 extension.

It is possible to create instances that are "conforming", or even "strictly conforming" to the 11179 specification. However, doing so will require the use of extensions to convey certain properties that are not part of the core resource and data types. An initial starter ISO 11179 profile is included in the FHIR specification. It defines extensions that are relevant to the SDC DataElement profile. If there is sufficient interest, the existing starter set may be enhanced to contain a complete set of extensions and a full 11179 in a future release of the specification.

Data elements (and their registries) and codes (and their code systems) serve different purposes. Data elements describe the characteristics of a piece of data - identifier, name, definition, data type, length, permitted value set, usage notes, etc. On the other hand, while codes describe a particular concept including a symbol for use when exchanging the concept, display names, definitions and relationships to other concepts. There is a subset of information that is common for both codes and data elements - identifier, name and definition. Because of this, a list of data elements might sometimes be seen as a list of codes.

One of the purposes of data elements is to define variables, observations, or questions that include information about how to collect a variable's value--including information about data types and guidance about the use of about answer lists and/or units of measure. This function is typically done by code systems such as LOINC and SNOMED CT . (Note that LOINC provides considerable detail about allowed answers, while most other code systems such as SNOMED CT only allow identifying the question.) It would be possible to treat a registry of data elements using a common identifier system/namespace as a code system. Similarly, data elements can be mapped to each other (and to codes) in the same manner as codes can be mapped by making use of the ConceptMap resource.

That said, FHIR treats code systems as simple structures that provide identity, names and definitions. Code systems that provide significant additional detail (recommended doses for drugs, data types for data elements, etc.) are treated as a mix of a code system together with a supplementary resource to provide the details. Refer to the Code systems with detailed metadata section of ValueSet resource for additional discussion of the relationship between DataElement and code systems.

As noted in the introduction, one of the main purposes for the use of data elements is 'standardization' - gaining consistent (and thus comparable) data capture of data in questionnaires, observations and within other resources. However, merely defining data elements is not, in itself, sufficient to improve standardization. To ensure consistency of data, there needs to be several additional things:

  • There must be a shared repository of data elements that will be consulted and used by the community where improved interoperability is targeted. Numerous groups will define and register data elements in a wide variety of repositories for a wide variety of purposes. To improve interoperability, everyone in the target community needs to be working from the same set.
  • There must be governance over the repository of data elements to ensure consistency of granularity and reference structures - those designing questionnaires, profiles, etc. need to be able to find the appropriate data element easily within the repository and there should ideally only be one data element for a given purpose. If a repository accepts 15 data elements defining different ways of capturing the same piece of information, there will be no improvement in interoperability.
  • There must be incentives or governance processes in place that encourage or require the use of data elements from the shared repository when defining forms, profiles and other structures where improved interoperability is desired.
  • There must be allowance for (and a transition path for) legacy systems that capture data or have existing data that is not in alignment with the approved data elements.

Data Elements are a tool through which improved standardization can be achieved but without adequate processes, they will not achieve significant benefit.

Data elements can be defined at a wide variety of granularities. For example:

  • Systolic Blood pressure
  • Systolic Blood pressure (sitting)
  • Systolic Blood pressure (sitting, pressure cuff)
  • Systolic Blood pressure (sitting, pressure cuff) mmHg

Coded data elements can be defined without value sets, with suggested value sets, with required but extensible value sets or with completely locked down value sets. Numeric values can be defined with or without allowed ranges. String data can be defined with or without patterns or lengths. All are valid data elements.

When defining data elements, it's important to decide what level of detail/granularity is appropriate for the intended purpose. The tighter the data element is defined, the greater interoperability of the data, however the smaller the set of systems that will be able to satisfy the constraints and the larger the number of data elements that will be required to cover a given domain. In some cases, multiple granularities may be appropriate, though this can introduce challenges in ensuring that the appropriate granularity is selected for a given use. As a rule, data elements should be defined as loosely as possible while still ensuring that all data captured using the data element will be sufficiently comparable to meet the needs of the group defining and using the data elements. A corollary to this is that data elements defined by one group will not always meet the needs of another group, even if they may be covering the same domain.

Two pieces of data don't necessarily need to be based on the same data element in order to be comparable or aggregatable. As noted above, it's possible for one data element to be a proper subset of another. In addition, it may be possible to convert data from being conformant with one data element to being conformant with another data element. This conversion could be lossless or may involve some loss of semantic precision. For example, a weight measurement captured in pounds can be seamlessly converted to kilograms. Similarly, coded data captured using one value set can be converted to another value set provided mappings are available. The nature of the mappings would determine whether any loss of semantics would occur.

The stringency element allows identifying the types of usages for which the data element is appropriate. Some uses (direct comparison of data, auto-population of data, etc.) are inappropriate with loose definitions of elements. On the other hand, overly-restrictive data elements can result in a large number of data elements and limited abilities to compare similar but not identical data. For now, the definition of what level of constraints are appropriate/necessary for a given level of stringency is left to implementers, though future versions this specification may assert at least some level of guidance in this area.

Data elements provide their value by clearly defining the meaning and content of a particular type of data to be exchanged. This value depends on the meaning associated with the element being clear for all potential implementers of the element. I.e. For a data element to be useful, it needs to have a good quality definition. Characteristics of good quality definitions include:

  • The definition does not use the name of the element as part of the definition - it should provide additional information above and beyond the name.
  • The definition should be more than one or two words.
  • Ideally, the definition should be phrased in a manner such that the definition could be substituted for the data element name in a sentence; e.g. "gender" might be defined as "the sexual identity of a person as used for administrative purposes"
  • If the data element does not have a value set and does not make use of a simple type such as date, integer or boolean, it should list several example values as part of the definition.
  • Information about the rationale for the element or additional usage notes should not be conveyed as part of the definition but should instead make use of the notes or rationale elements.

Because Data Elements define precise pieces of data that can be conveyed in a variety of places, they may form a useful mechanism for the definition of fine-grained data access controls. The base resource does not include mechanisms for linking access controls directly do data elements, however, an extension could allow a particular data element to be associated with particular Security Labels. Whether this level of control is appropriate may vary by implementation environment.

One of the primary purposes of the DataElement resource is to allow data conveyed in a variety of different forms to be "linked" to the data element and identified as being equivalent/comparable/semantically-aligned. There are a variety of different ways this can occur:

  • DataElement.element.code allows a data element to be linked as "semantically equivalent" to the specified code.
  • DataElement.element.mapping allows a data element to be linked to a particular data structure such as a FHIR resource, a CDA template, an OpenEHR archetype, etc.
  • The Questionnaire.item.definition allows a particular question in a questionnaire to be linked to a data element definition deemed to correspond to that question. This mechanism supports population of questionnaire instances on the basis of known data elements. The intent is that a server will populate anything it recognizes by data elements. However servers may not know all the data elements, and won't populate ones that they don't know.

Search parameters for this resource. The common parameters also apply. See Searching for more information about searching in REST, messaging, and services.

NameTypeDescriptionPathsIn Common
codetokenA code for the data element (server may choose to do subsumption)DataElement.element.code
datedateThe data element publication dateDataElement.date
descriptionstringText search in the description of the data element. This corresponds to the definition of the first DataElement.element.DataElement.element.definition
identifiertokenExternal identifiers for the data elementDataElement.identifier
jurisdictiontokenIntended jurisdiction for data elementDataElement.jurisdiction
namestringName of the data elementDataElement.name
publisherstringName of the publisher of the data elementDataElement.publisher
statustokenThe current status of the data elementDataElement.status
stringencytokenThe stringency of the data element definitionDataElement.stringency
titlestringText search against the title of the data elementDataElement.title
urluriThe uri that identifies the data elementDataElement.url
versiontokenThe business version of the data elementDataElement.version