NCPI FHIR Implementation Guide
0.2.0 - ci-build
NCPI FHIR Implementation Guide - Local Development build (v0.2.0). See the Directory of published versions
Official URL: https://nih-ncpi.github.io/ncpi-fhir-ig/StructureDefinition/study-data-dictionary-variable | Version: 0.2.0 | |||
Draft as of 2023-08-08 | Computable Name: StudyDataDictionaryVariable |
FHIR profile used to describe single variable from the dataset. This resource should be as complete as possible including details such as description, data-type, permitted enumerations, quantity units, etc.
The StudyDataDictionaryVariable SHALL have the corresponding Code from the data-table associated with the specified variable as it’s Code. This provides a clear reference to the variable being described, and, when the code is properly used throughout transformed resources, it provides traceability to the origins of those transformed values.
Each variable SHALL describe, as completely as possible, everything a typical Data Dictionary entry might describe. The point of these is to aid researchers in knowing both what they should expect to find at any given column and how they may interpret the resulting information.
Usage:
Description of Profiles, Differentials, Snapshots and how the different presentations work.
This structure is derived from ObservationDefinition
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
ObservationDefinition | 0..* | ObservationDefinition | Definition of an observation | |
Documentation for this format |
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
ObservationDefinition | 0..* | ObservationDefinition | Definition of an observation | |
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created |
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored |
code | Σ | 1..1 | CodeableConcept | Type of observation (code / type) Binding: LOINCCodes (example): Codes identifying names of simple observations. |
Documentation for this format |
Path | Conformance | ValueSet |
ObservationDefinition.code | example | LOINCCodes (a valid code from LOINC) |
Id | Grade | Path(s) | Details | Requirements |
dom-2 | error | ObservationDefinition | If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty() | |
dom-3 | error | ObservationDefinition | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource : contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty() | |
dom-4 | error | ObservationDefinition | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated : contained.meta.versionId.empty() and contained.meta.lastUpdated.empty() | |
dom-5 | error | ObservationDefinition | If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty() | |
dom-6 | best practice | ObservationDefinition | A resource should have narrative for robust management : text.`div`.exists() | |
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both : extension.exists() != value.exists() |
Name | Flags | Card. | Type | Description & Constraints | ||||
---|---|---|---|---|---|---|---|---|
ObservationDefinition | 0..* | ObservationDefinition | Definition of an observation | |||||
id | Σ | 0..1 | id | Logical id of this artifact | ||||
meta | Σ | 0..1 | Meta | Metadata about the resource | ||||
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created | ||||
language | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
| |||||
text | 0..1 | Narrative | Text summary of the resource, for human interpretation | |||||
contained | 0..* | Resource | Contained, inline Resources | |||||
extension | 0..* | Extension | Additional content defined by implementations | |||||
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored | ||||
category | Σ | 0..* | CodeableConcept | Category of observation Binding: ObservationCategoryCodes (example): Codes for high level observation categories. | ||||
code | Σ | 1..1 | CodeableConcept | Type of observation (code / type) Binding: LOINCCodes (example): Codes identifying names of simple observations. | ||||
identifier | Σ | 0..* | Identifier | Business identifier for this ObservationDefinition instance | ||||
permittedDataType | 0..* | code | Quantity | CodeableConcept | string | boolean | integer | Range | Ratio | SampledData | time | dateTime | Period Binding: ObservationDataType (required): Permitted data type for observation value. Example General: CodeableConcept | |||||
multipleResultsAllowed | 0..1 | boolean | Multiple results allowed Example General: true | |||||
method | 0..1 | CodeableConcept | Method used to produce the observation Binding: ObservationMethods (example): Methods for simple observations. | |||||
preferredReportName | 0..1 | string | Preferred report name | |||||
quantitativeDetails | 0..1 | BackboneElement | Characteristics of quantitative results | |||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations | |||||
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ||||
customaryUnit | 0..1 | CodeableConcept | Customary unit for quantitative results Binding: UCUMCodes (extensible): Codes identifying units of measure. | |||||
unit | 0..1 | CodeableConcept | SI unit for quantitative results Binding: UCUMCodes (extensible): Codes identifying units of measure. | |||||
conversionFactor | 0..1 | decimal | SI to Customary unit conversion factor | |||||
decimalPrecision | 0..1 | integer | Decimal precision of observation quantitative results | |||||
qualifiedInterval | 0..* | BackboneElement | Qualified range for continuous and ordinal observation results | |||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations | |||||
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ||||
category | 0..1 | code | reference | critical | absolute Binding: ObservationRangeCategory (required): Codes identifying the category of observation range. Example General: critical | |||||
range | 0..1 | Range | The interval itself, for continuous or ordinal observations | |||||
context | 0..1 | CodeableConcept | Range context qualifier Binding: ObservationReferenceRangeMeaningCodes (extensible): Code identifying the health context of a range. | |||||
appliesTo | 0..* | CodeableConcept | Targetted population of the range Binding: ObservationReferenceRangeAppliesToCodes (example): Codes identifying the population the reference range applies to. | |||||
gender | 0..1 | code | male | female | other | unknown Binding: AdministrativeGender (required): The gender of a person used for administrative purposes. Example General: female | |||||
age | 0..1 | Range | Applicable age range, if relevant | |||||
gestationalAge | 0..1 | Range | Applicable gestational age range, if relevant | |||||
condition | 0..1 | string | Condition associated with the reference range | |||||
validCodedValueSet | 0..1 | Reference(ValueSet) | Value set of valid coded values for the observations conforming to this ObservationDefinition | |||||
normalCodedValueSet | 0..1 | Reference(ValueSet) | Value set of normal coded values for the observations conforming to this ObservationDefinition | |||||
abnormalCodedValueSet | 0..1 | Reference(ValueSet) | Value set of abnormal coded values for the observations conforming to this ObservationDefinition | |||||
criticalCodedValueSet | 0..1 | Reference(ValueSet) | Value set of critical coded values for the observations conforming to this ObservationDefinition | |||||
Documentation for this format |
Path | Conformance | ValueSet | ||||
ObservationDefinition.language | preferred | CommonLanguages
| ||||
ObservationDefinition.category | example | ObservationCategoryCodes | ||||
ObservationDefinition.code | example | LOINCCodes (a valid code from LOINC) | ||||
ObservationDefinition.permittedDataType | required | ObservationDataType | ||||
ObservationDefinition.method | example | ObservationMethods | ||||
ObservationDefinition.quantitativeDetails.customaryUnit | extensible | UCUMCodes (a valid code from UCUM) | ||||
ObservationDefinition.quantitativeDetails.unit | extensible | UCUMCodes (a valid code from UCUM) | ||||
ObservationDefinition.qualifiedInterval.category | required | ObservationRangeCategory | ||||
ObservationDefinition.qualifiedInterval.context | extensible | ObservationReferenceRangeMeaningCodes | ||||
ObservationDefinition.qualifiedInterval.appliesTo | example | ObservationReferenceRangeAppliesToCodes | ||||
ObservationDefinition.qualifiedInterval.gender | required | AdministrativeGender |
Id | Grade | Path(s) | Details | Requirements |
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both : extension.exists() != value.exists() |
This structure is derived from ObservationDefinition
Differential View
This structure is derived from ObservationDefinition
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
ObservationDefinition | 0..* | ObservationDefinition | Definition of an observation | |
Documentation for this format |
Key Elements View
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
ObservationDefinition | 0..* | ObservationDefinition | Definition of an observation | |
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created |
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored |
code | Σ | 1..1 | CodeableConcept | Type of observation (code / type) Binding: LOINCCodes (example): Codes identifying names of simple observations. |
Documentation for this format |
Path | Conformance | ValueSet |
ObservationDefinition.code | example | LOINCCodes (a valid code from LOINC) |
Id | Grade | Path(s) | Details | Requirements |
dom-2 | error | ObservationDefinition | If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty() | |
dom-3 | error | ObservationDefinition | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource : contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty() | |
dom-4 | error | ObservationDefinition | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated : contained.meta.versionId.empty() and contained.meta.lastUpdated.empty() | |
dom-5 | error | ObservationDefinition | If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty() | |
dom-6 | best practice | ObservationDefinition | A resource should have narrative for robust management : text.`div`.exists() | |
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both : extension.exists() != value.exists() |
Snapshot View
Name | Flags | Card. | Type | Description & Constraints | ||||
---|---|---|---|---|---|---|---|---|
ObservationDefinition | 0..* | ObservationDefinition | Definition of an observation | |||||
id | Σ | 0..1 | id | Logical id of this artifact | ||||
meta | Σ | 0..1 | Meta | Metadata about the resource | ||||
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created | ||||
language | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
| |||||
text | 0..1 | Narrative | Text summary of the resource, for human interpretation | |||||
contained | 0..* | Resource | Contained, inline Resources | |||||
extension | 0..* | Extension | Additional content defined by implementations | |||||
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored | ||||
category | Σ | 0..* | CodeableConcept | Category of observation Binding: ObservationCategoryCodes (example): Codes for high level observation categories. | ||||
code | Σ | 1..1 | CodeableConcept | Type of observation (code / type) Binding: LOINCCodes (example): Codes identifying names of simple observations. | ||||
identifier | Σ | 0..* | Identifier | Business identifier for this ObservationDefinition instance | ||||
permittedDataType | 0..* | code | Quantity | CodeableConcept | string | boolean | integer | Range | Ratio | SampledData | time | dateTime | Period Binding: ObservationDataType (required): Permitted data type for observation value. Example General: CodeableConcept | |||||
multipleResultsAllowed | 0..1 | boolean | Multiple results allowed Example General: true | |||||
method | 0..1 | CodeableConcept | Method used to produce the observation Binding: ObservationMethods (example): Methods for simple observations. | |||||
preferredReportName | 0..1 | string | Preferred report name | |||||
quantitativeDetails | 0..1 | BackboneElement | Characteristics of quantitative results | |||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations | |||||
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ||||
customaryUnit | 0..1 | CodeableConcept | Customary unit for quantitative results Binding: UCUMCodes (extensible): Codes identifying units of measure. | |||||
unit | 0..1 | CodeableConcept | SI unit for quantitative results Binding: UCUMCodes (extensible): Codes identifying units of measure. | |||||
conversionFactor | 0..1 | decimal | SI to Customary unit conversion factor | |||||
decimalPrecision | 0..1 | integer | Decimal precision of observation quantitative results | |||||
qualifiedInterval | 0..* | BackboneElement | Qualified range for continuous and ordinal observation results | |||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations | |||||
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ||||
category | 0..1 | code | reference | critical | absolute Binding: ObservationRangeCategory (required): Codes identifying the category of observation range. Example General: critical | |||||
range | 0..1 | Range | The interval itself, for continuous or ordinal observations | |||||
context | 0..1 | CodeableConcept | Range context qualifier Binding: ObservationReferenceRangeMeaningCodes (extensible): Code identifying the health context of a range. | |||||
appliesTo | 0..* | CodeableConcept | Targetted population of the range Binding: ObservationReferenceRangeAppliesToCodes (example): Codes identifying the population the reference range applies to. | |||||
gender | 0..1 | code | male | female | other | unknown Binding: AdministrativeGender (required): The gender of a person used for administrative purposes. Example General: female | |||||
age | 0..1 | Range | Applicable age range, if relevant | |||||
gestationalAge | 0..1 | Range | Applicable gestational age range, if relevant | |||||
condition | 0..1 | string | Condition associated with the reference range | |||||
validCodedValueSet | 0..1 | Reference(ValueSet) | Value set of valid coded values for the observations conforming to this ObservationDefinition | |||||
normalCodedValueSet | 0..1 | Reference(ValueSet) | Value set of normal coded values for the observations conforming to this ObservationDefinition | |||||
abnormalCodedValueSet | 0..1 | Reference(ValueSet) | Value set of abnormal coded values for the observations conforming to this ObservationDefinition | |||||
criticalCodedValueSet | 0..1 | Reference(ValueSet) | Value set of critical coded values for the observations conforming to this ObservationDefinition | |||||
Documentation for this format |
Path | Conformance | ValueSet | ||||
ObservationDefinition.language | preferred | CommonLanguages
| ||||
ObservationDefinition.category | example | ObservationCategoryCodes | ||||
ObservationDefinition.code | example | LOINCCodes (a valid code from LOINC) | ||||
ObservationDefinition.permittedDataType | required | ObservationDataType | ||||
ObservationDefinition.method | example | ObservationMethods | ||||
ObservationDefinition.quantitativeDetails.customaryUnit | extensible | UCUMCodes (a valid code from UCUM) | ||||
ObservationDefinition.quantitativeDetails.unit | extensible | UCUMCodes (a valid code from UCUM) | ||||
ObservationDefinition.qualifiedInterval.category | required | ObservationRangeCategory | ||||
ObservationDefinition.qualifiedInterval.context | extensible | ObservationReferenceRangeMeaningCodes | ||||
ObservationDefinition.qualifiedInterval.appliesTo | example | ObservationReferenceRangeAppliesToCodes | ||||
ObservationDefinition.qualifiedInterval.gender | required | AdministrativeGender |
Id | Grade | Path(s) | Details | Requirements |
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both : extension.exists() != value.exists() |
This structure is derived from ObservationDefinition
Other representations of profile: CSV, Excel, Schematron