NCPI FHIR Implementation Guide
0.1.0 - ci-build
NCPI FHIR Implementation Guide - Local Development build (v0.1.0). See the Directory of published versions
Official URL: https://ncpi-fhir.github.io/ncpi-fhir-ig/StructureDefinition/study-dd-variable | Version: 0.1.0 | |||
Draft as of 2022-08-16 | Computable Name: StudyDdVariable |
Describes a single variable from the dataset
A study variable should describe, as completely as possible, the content associated with the data in it’s original form, including details about units, ranges, etc.
It is important to associate each variable with an entry from the table’s CodeSystem so that data that is related to variable be traceable regardless of it’s final form (i.e. you can’t point back to an ObservationDefinition from a Condition resource, however, you can append the ObservationDefinition’s code to the Condition’s code.)
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
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 | |||||
id | Σ | 0..1 | string | 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 |
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
ObservationDefinition | 0..* | ObservationDefinition | Definition of an observation | |
Documentation for this format |
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 |
Snapshot View
Name | Flags | Card. | Type | Description & Constraints | ||||
---|---|---|---|---|---|---|---|---|
ObservationDefinition | 0..* | ObservationDefinition | Definition of an observation | |||||
id | Σ | 0..1 | string | 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 |
Other representations of profile: CSV, Excel, Schematron
Path | Conformance | ValueSet |
ObservationDefinition.language | preferred | CommonLanguages Max Binding: AllLanguages |
ObservationDefinition.category | example | ObservationCategoryCodes |
ObservationDefinition.code | example | LOINCCodes |
ObservationDefinition.permittedDataType | required | ObservationDataType |
ObservationDefinition.method | example | ObservationMethods |
ObservationDefinition.quantitativeDetails.customaryUnit | extensible | UCUMCodes |
ObservationDefinition.quantitativeDetails.unit | extensible | UCUMCodes |
ObservationDefinition.qualifiedInterval.category | required | ObservationRangeCategory |
ObservationDefinition.qualifiedInterval.context | extensible | ObservationReferenceRangeMeaningCodes |
ObservationDefinition.qualifiedInterval.appliesTo | example | ObservationReferenceRangeAppliesToCodes |
ObservationDefinition.qualifiedInterval.gender | required | AdministrativeGender |
Id | Grade | Path | 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 | ObservationDefinition.meta | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | error | ObservationDefinition.implicitRules | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | error | ObservationDefinition.language | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | error | ObservationDefinition.text | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | error | ObservationDefinition.extension | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | error | ObservationDefinition.extension | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
ele-1 | error | ObservationDefinition.modifierExtension | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | error | ObservationDefinition.modifierExtension | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
ele-1 | error | ObservationDefinition.category | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | error | ObservationDefinition.code | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | error | ObservationDefinition.identifier | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | error | ObservationDefinition.permittedDataType | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | error | ObservationDefinition.multipleResultsAllowed | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | error | ObservationDefinition.method | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | error | ObservationDefinition.preferredReportName | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | error | ObservationDefinition.quantitativeDetails | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | error | ObservationDefinition.quantitativeDetails.extension | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | error | ObservationDefinition.quantitativeDetails.extension | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
ele-1 | error | ObservationDefinition.quantitativeDetails.modifierExtension | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | error | ObservationDefinition.quantitativeDetails.modifierExtension | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
ele-1 | error | ObservationDefinition.quantitativeDetails.customaryUnit | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | error | ObservationDefinition.quantitativeDetails.unit | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | error | ObservationDefinition.quantitativeDetails.conversionFactor | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | error | ObservationDefinition.quantitativeDetails.decimalPrecision | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | error | ObservationDefinition.qualifiedInterval | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | error | ObservationDefinition.qualifiedInterval.extension | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | error | ObservationDefinition.qualifiedInterval.extension | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
ele-1 | error | ObservationDefinition.qualifiedInterval.modifierExtension | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | error | ObservationDefinition.qualifiedInterval.modifierExtension | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
ele-1 | error | ObservationDefinition.qualifiedInterval.category | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | error | ObservationDefinition.qualifiedInterval.range | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | error | ObservationDefinition.qualifiedInterval.context | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | error | ObservationDefinition.qualifiedInterval.appliesTo | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | error | ObservationDefinition.qualifiedInterval.gender | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | error | ObservationDefinition.qualifiedInterval.age | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | error | ObservationDefinition.qualifiedInterval.gestationalAge | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | error | ObservationDefinition.qualifiedInterval.condition | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | error | ObservationDefinition.validCodedValueSet | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | error | ObservationDefinition.normalCodedValueSet | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | error | ObservationDefinition.abnormalCodedValueSet | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ele-1 | error | ObservationDefinition.criticalCodedValueSet | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |