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

Resource Profile: NCPI Study Data Dictionary Data Table

Official URL: https://nih-ncpi.github.io/ncpi-fhir-ig/StructureDefinition/study-data-dictionary-table Version: 0.2.0
Draft as of 2023-08-08 Computable Name: StudyDataDictionaryTable

Aggregates Variable Details associated with a single dataset table that are represented in FHIR as as list of references to StudyDataDictionaryVariables in the observationResultRequirement property.

The Study Table is primarily a collection of references to the StudyDataDictionaryVariable resources describing it’s contents but it is advisable for those responsible for resource production to set appropriate name and description properties, as well as any others that would help researches better understand the content of data associated with this table.

Added Profile Restrictions

In order to tie the table resource to the appropriate study, the resource’s code property SHALL be set to the corresponding table code in the dataset’s code system.

Usage:

Formal Views of Profile Content

Description of Profiles, Differentials, Snapshots and how the different presentations work.

This structure is derived from ActivityDefinition

NameFlagsCard.TypeDescription & Constraintsdoco
.. ActivityDefinition 0..*ActivityDefinitionThe definition of a specific activity to be taken, independent of any particular patient or context
... code 1..1CodeableConceptDetail type of activity

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. ActivityDefinition C0..*ActivityDefinitionThe definition of a specific activity to be taken, independent of any particular patient or context
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... status ?!Σ1..1codedraft | active | retired | unknown
Binding: PublicationStatus (required): The lifecycle status of an artifact.

... doNotPerform ?!Σ0..1booleanTrue if the activity should not be performed

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet
ActivityDefinition.statusrequiredPublicationStatus
ActivityDefinition.codeexampleProcedureCodes(SNOMEDCT)

Constraints

IdGradePath(s)DetailsRequirements
adf-0warningActivityDefinitionName should be usable as an identifier for the module by machine processing applications such as code generation
: name.matches('[A-Z]([A-Za-z0-9_]){0,254}')
dom-2errorActivityDefinitionIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorActivityDefinitionIf 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-4errorActivityDefinitionIf 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-5errorActivityDefinitionIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceActivityDefinitionA resource should have narrative for robust management
: text.`div`.exists()
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()
NameFlagsCard.TypeDescription & Constraintsdoco
.. ActivityDefinition C0..*ActivityDefinitionThe definition of a specific activity to be taken, independent of any particular patient or context
... id Σ0..1idLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... language 0..1codeLanguage of the resource content
Binding: CommonLanguages (preferred): A human language.

Additional BindingsPurpose
AllLanguagesMax Binding
... text 0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension 0..*ExtensionAdditional content defined by implementations
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... url Σ0..1uriCanonical identifier for this activity definition, represented as a URI (globally unique)
... identifier Σ0..*IdentifierAdditional identifier for the activity definition
... version Σ0..1stringBusiness version of the activity definition
... name ΣC0..1stringName for this activity definition (computer friendly)
... title Σ0..1stringName for this activity definition (human friendly)
... subtitle 0..1stringSubordinate title of the activity definition
... status ?!Σ1..1codedraft | active | retired | unknown
Binding: PublicationStatus (required): The lifecycle status of an artifact.

... experimental Σ0..1booleanFor testing purposes, not real usage
... subject[x] 0..1Type of individual the activity definition is intended for
Binding: SubjectType (extensible): The possible types of subjects for an activity (E.g. Patient, Practitioner, Organization, Location, etc.).

.... subjectCodeableConceptCodeableConcept
.... subjectReferenceReference(Group)
... date Σ0..1dateTimeDate last changed
... publisher Σ0..1stringName of the publisher (organization or individual)
... contact Σ0..*ContactDetailContact details for the publisher
... description Σ0..1markdownNatural language description of the activity definition
... useContext Σ0..*UsageContextThe context that the content is intended to support
... jurisdiction Σ0..*CodeableConceptIntended jurisdiction for activity definition (if applicable)
Binding: Jurisdiction ValueSet (extensible): Countries and regions within which this artifact is targeted for use.


... purpose 0..1markdownWhy this activity definition is defined
... usage 0..1stringDescribes the clinical usage of the activity definition
... copyright 0..1markdownUse and/or publishing restrictions
... approvalDate 0..1dateWhen the activity definition was approved by publisher
... lastReviewDate 0..1dateWhen the activity definition was last reviewed
... effectivePeriod Σ0..1PeriodWhen the activity definition is expected to be used
... topic 0..*CodeableConceptE.g. Education, Treatment, Assessment, etc.
Binding: DefinitionTopic (example): High-level categorization of the definition, used for searching, sorting, and filtering.


... author 0..*ContactDetailWho authored the content
... editor 0..*ContactDetailWho edited the content
... reviewer 0..*ContactDetailWho reviewed the content
... endorser 0..*ContactDetailWho endorsed the content
... relatedArtifact 0..*RelatedArtifactAdditional documentation, citations, etc.
... library 0..*canonical(Library)Logic used by the activity definition
... kind Σ0..1codeKind of resource
Binding: RequestResourceType (required): The kind of activity the definition is describing.

... profile 0..1canonical(StructureDefinition)What profile the resource needs to conform to
... code Σ1..1CodeableConceptDetail type of activity
Binding: ProcedureCodes(SNOMEDCT) (example): Detailed type of the activity; e.g. CBC.

... intent 0..1codeproposal | plan | directive | order | original-order | reflex-order | filler-order | instance-order | option
Binding: RequestIntent (required): Codes indicating the degree of authority/intentionality associated with a request.

... priority 0..1coderoutine | urgent | asap | stat
Binding: RequestPriority (required): Identifies the level of importance to be assigned to actioning the request.

... doNotPerform ?!Σ0..1booleanTrue if the activity should not be performed
... timing[x] 0..1When activity is to occur
.... timingTimingTiming
.... timingDateTimedateTime
.... timingAgeAge
.... timingPeriodPeriod
.... timingRangeRange
.... timingDurationDuration
... location 0..1Reference(Location)Where it should happen
... participant 0..*BackboneElementWho should participate in the action
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... type 1..1codepatient | practitioner | related-person | device
Binding: ActionParticipantType (required): The type of participant in the activity.

.... role 0..1CodeableConceptE.g. Nurse, Surgeon, Parent, etc.
Binding: ActionParticipantRole (example): Defines roles played by participants for the action.

... product[x] 0..1What's administered/supplied
Binding: SNOMEDCTMedicationCodes (example): Code describing the type of substance or medication.

.... productReferenceReference(Medication | Substance)
.... productCodeableConceptCodeableConcept
... quantity 0..1SimpleQuantityHow much is administered/consumed/supplied
... dosage 0..*DosageDetailed dosage instructions
... bodySite 0..*CodeableConceptWhat part of body to perform on
Binding: SNOMEDCTBodyStructures (example): A code that identifies the anatomical location.


... specimenRequirement 0..*Reference(SpecimenDefinition)What specimens are required to perform this action
... observationRequirement 0..*Reference(ObservationDefinition)What observations are required to perform this action
... observationResultRequirement 0..*Reference(ObservationDefinition)What observations must be produced by this action
... transform 0..1canonical(StructureMap)Transform to apply the template
... dynamicValue 0..*BackboneElementDynamic aspects of the definition
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... path 1..1stringThe path to the element to be set dynamically
.... expression 1..1ExpressionAn expression that provides the dynamic value for the customization

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet
ActivityDefinition.languagepreferredCommonLanguages
Additional Bindings Purpose
AllLanguages Max Binding
ActivityDefinition.statusrequiredPublicationStatus
ActivityDefinition.subject[x]extensibleSubjectType
ActivityDefinition.jurisdictionextensibleJurisdiction ValueSet
ActivityDefinition.topicexampleDefinitionTopic
ActivityDefinition.kindrequiredRequestResourceType
ActivityDefinition.codeexampleProcedureCodes(SNOMEDCT)
ActivityDefinition.intentrequiredRequestIntent
ActivityDefinition.priorityrequiredRequestPriority
ActivityDefinition.participant.typerequiredActionParticipantType
ActivityDefinition.participant.roleexampleActionParticipantRole
ActivityDefinition.product[x]exampleSNOMEDCTMedicationCodes
ActivityDefinition.bodySiteexampleSNOMEDCTBodyStructures

Constraints

IdGradePath(s)DetailsRequirements
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()

This structure is derived from ActivityDefinition

Summary

Mandatory: 1 element

Differential View

This structure is derived from ActivityDefinition

NameFlagsCard.TypeDescription & Constraintsdoco
.. ActivityDefinition 0..*ActivityDefinitionThe definition of a specific activity to be taken, independent of any particular patient or context
... code 1..1CodeableConceptDetail type of activity

doco Documentation for this format

Key Elements View

NameFlagsCard.TypeDescription & Constraintsdoco
.. ActivityDefinition C0..*ActivityDefinitionThe definition of a specific activity to be taken, independent of any particular patient or context
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... status ?!Σ1..1codedraft | active | retired | unknown
Binding: PublicationStatus (required): The lifecycle status of an artifact.

... doNotPerform ?!Σ0..1booleanTrue if the activity should not be performed

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet
ActivityDefinition.statusrequiredPublicationStatus
ActivityDefinition.codeexampleProcedureCodes(SNOMEDCT)

Constraints

IdGradePath(s)DetailsRequirements
adf-0warningActivityDefinitionName should be usable as an identifier for the module by machine processing applications such as code generation
: name.matches('[A-Z]([A-Za-z0-9_]){0,254}')
dom-2errorActivityDefinitionIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorActivityDefinitionIf 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-4errorActivityDefinitionIf 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-5errorActivityDefinitionIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceActivityDefinitionA resource should have narrative for robust management
: text.`div`.exists()
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. ActivityDefinition C0..*ActivityDefinitionThe definition of a specific activity to be taken, independent of any particular patient or context
... id Σ0..1idLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... language 0..1codeLanguage of the resource content
Binding: CommonLanguages (preferred): A human language.

Additional BindingsPurpose
AllLanguagesMax Binding
... text 0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension 0..*ExtensionAdditional content defined by implementations
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... url Σ0..1uriCanonical identifier for this activity definition, represented as a URI (globally unique)
... identifier Σ0..*IdentifierAdditional identifier for the activity definition
... version Σ0..1stringBusiness version of the activity definition
... name ΣC0..1stringName for this activity definition (computer friendly)
... title Σ0..1stringName for this activity definition (human friendly)
... subtitle 0..1stringSubordinate title of the activity definition
... status ?!Σ1..1codedraft | active | retired | unknown
Binding: PublicationStatus (required): The lifecycle status of an artifact.

... experimental Σ0..1booleanFor testing purposes, not real usage
... subject[x] 0..1Type of individual the activity definition is intended for
Binding: SubjectType (extensible): The possible types of subjects for an activity (E.g. Patient, Practitioner, Organization, Location, etc.).

.... subjectCodeableConceptCodeableConcept
.... subjectReferenceReference(Group)
... date Σ0..1dateTimeDate last changed
... publisher Σ0..1stringName of the publisher (organization or individual)
... contact Σ0..*ContactDetailContact details for the publisher
... description Σ0..1markdownNatural language description of the activity definition
... useContext Σ0..*UsageContextThe context that the content is intended to support
... jurisdiction Σ0..*CodeableConceptIntended jurisdiction for activity definition (if applicable)
Binding: Jurisdiction ValueSet (extensible): Countries and regions within which this artifact is targeted for use.


... purpose 0..1markdownWhy this activity definition is defined
... usage 0..1stringDescribes the clinical usage of the activity definition
... copyright 0..1markdownUse and/or publishing restrictions
... approvalDate 0..1dateWhen the activity definition was approved by publisher
... lastReviewDate 0..1dateWhen the activity definition was last reviewed
... effectivePeriod Σ0..1PeriodWhen the activity definition is expected to be used
... topic 0..*CodeableConceptE.g. Education, Treatment, Assessment, etc.
Binding: DefinitionTopic (example): High-level categorization of the definition, used for searching, sorting, and filtering.


... author 0..*ContactDetailWho authored the content
... editor 0..*ContactDetailWho edited the content
... reviewer 0..*ContactDetailWho reviewed the content
... endorser 0..*ContactDetailWho endorsed the content
... relatedArtifact 0..*RelatedArtifactAdditional documentation, citations, etc.
... library 0..*canonical(Library)Logic used by the activity definition
... kind Σ0..1codeKind of resource
Binding: RequestResourceType (required): The kind of activity the definition is describing.

... profile 0..1canonical(StructureDefinition)What profile the resource needs to conform to
... code Σ1..1CodeableConceptDetail type of activity
Binding: ProcedureCodes(SNOMEDCT) (example): Detailed type of the activity; e.g. CBC.

... intent 0..1codeproposal | plan | directive | order | original-order | reflex-order | filler-order | instance-order | option
Binding: RequestIntent (required): Codes indicating the degree of authority/intentionality associated with a request.

... priority 0..1coderoutine | urgent | asap | stat
Binding: RequestPriority (required): Identifies the level of importance to be assigned to actioning the request.

... doNotPerform ?!Σ0..1booleanTrue if the activity should not be performed
... timing[x] 0..1When activity is to occur
.... timingTimingTiming
.... timingDateTimedateTime
.... timingAgeAge
.... timingPeriodPeriod
.... timingRangeRange
.... timingDurationDuration
... location 0..1Reference(Location)Where it should happen
... participant 0..*BackboneElementWho should participate in the action
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... type 1..1codepatient | practitioner | related-person | device
Binding: ActionParticipantType (required): The type of participant in the activity.

.... role 0..1CodeableConceptE.g. Nurse, Surgeon, Parent, etc.
Binding: ActionParticipantRole (example): Defines roles played by participants for the action.

... product[x] 0..1What's administered/supplied
Binding: SNOMEDCTMedicationCodes (example): Code describing the type of substance or medication.

.... productReferenceReference(Medication | Substance)
.... productCodeableConceptCodeableConcept
... quantity 0..1SimpleQuantityHow much is administered/consumed/supplied
... dosage 0..*DosageDetailed dosage instructions
... bodySite 0..*CodeableConceptWhat part of body to perform on
Binding: SNOMEDCTBodyStructures (example): A code that identifies the anatomical location.


... specimenRequirement 0..*Reference(SpecimenDefinition)What specimens are required to perform this action
... observationRequirement 0..*Reference(ObservationDefinition)What observations are required to perform this action
... observationResultRequirement 0..*Reference(ObservationDefinition)What observations must be produced by this action
... transform 0..1canonical(StructureMap)Transform to apply the template
... dynamicValue 0..*BackboneElementDynamic aspects of the definition
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... path 1..1stringThe path to the element to be set dynamically
.... expression 1..1ExpressionAn expression that provides the dynamic value for the customization

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet
ActivityDefinition.languagepreferredCommonLanguages
Additional Bindings Purpose
AllLanguages Max Binding
ActivityDefinition.statusrequiredPublicationStatus
ActivityDefinition.subject[x]extensibleSubjectType
ActivityDefinition.jurisdictionextensibleJurisdiction ValueSet
ActivityDefinition.topicexampleDefinitionTopic
ActivityDefinition.kindrequiredRequestResourceType
ActivityDefinition.codeexampleProcedureCodes(SNOMEDCT)
ActivityDefinition.intentrequiredRequestIntent
ActivityDefinition.priorityrequiredRequestPriority
ActivityDefinition.participant.typerequiredActionParticipantType
ActivityDefinition.participant.roleexampleActionParticipantRole
ActivityDefinition.product[x]exampleSNOMEDCTMedicationCodes
ActivityDefinition.bodySiteexampleSNOMEDCTBodyStructures

Constraints

IdGradePath(s)DetailsRequirements
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()

This structure is derived from ActivityDefinition

Summary

Mandatory: 1 element

 

Other representations of profile: CSV, Excel, Schematron

Notes:

There is no clear way to connect an ActivityDefinition to a study, so the best way to aggregate multiple “tables” together will be using codes from a common CodeSystem.