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 Disease

Official URL: https://nih-ncpi.github.io/ncpi-fhir-ig/StructureDefinition/disease Version: 0.2.0
Draft as of 2022-12-09 Computable Name: Disease

Representation for a disease under study for a given research dataset.

The disease

The disease profile is used to represent the disease under study for which the patient was enrolled. This means that the patient must have a status (affected/unaffected) for the given disease.

Usage:

Formal Views of Profile Content

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

This structure is derived from Condition

NameFlagsCard.TypeDescription & Constraintsdoco
.. Condition 0..*ConditionDetailed information about conditions, problems or diagnoses
... code 0..1CodeableConceptIdentification of the condition, problem or diagnosis
Binding: Disease Codes (extensible)

doco Documentation for this format

Terminology Bindings (Differential)

PathConformanceValueSet
Condition.codeextensibleDiseaseCodes
NameFlagsCard.TypeDescription & Constraintsdoco
.. Condition C0..*ConditionDetailed information about conditions, problems or diagnoses
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... clinicalStatus ?!ΣC0..1CodeableConceptactive | recurrence | relapse | inactive | remission | resolved
Binding: ConditionClinicalStatusCodes (required): The clinical status of the condition or diagnosis.

... code Σ0..1CodeableConceptIdentification of the condition, problem or diagnosis
Binding: Disease Codes (extensible)
... subject Σ1..1Reference(Patient | Group)Who has the condition?

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet
Condition.clinicalStatusrequiredConditionClinicalStatusCodes
Condition.verificationStatusrequiredConditionVerificationStatus
Condition.codeextensibleDiseaseCodes

Constraints

IdGradePath(s)DetailsRequirements
con-3best practiceConditionCondition.clinicalStatus SHALL be present if verificationStatus is not entered-in-error and category is problem-list-item
: clinicalStatus.exists() or verificationStatus.coding.where(system='http://terminology.hl7.org/CodeSystem/condition-ver-status' and code = 'entered-in-error').exists() or category.select($this='problem-list-item').empty()
con-4errorConditionIf condition is abated, then clinicalStatus must be either inactive, resolved, or remission
: abatement.empty() or clinicalStatus.coding.where(system='http://terminology.hl7.org/CodeSystem/condition-clinical' and (code='resolved' or code='remission' or code='inactive')).exists()
con-5errorConditionCondition.clinicalStatus SHALL NOT be present if verification Status is entered-in-error
: verificationStatus.coding.where(system='http://terminology.hl7.org/CodeSystem/condition-ver-status' and code='entered-in-error').empty() or clinicalStatus.empty()
dom-2errorConditionIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorConditionIf 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-4errorConditionIf 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-5errorConditionIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceConditionA 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
.. Condition C0..*ConditionDetailed information about conditions, problems or diagnoses
... 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
... 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
... identifier Σ0..*IdentifierExternal Ids for this condition
... clinicalStatus ?!ΣC0..1CodeableConceptactive | recurrence | relapse | inactive | remission | resolved
Binding: ConditionClinicalStatusCodes (required): The clinical status of the condition or diagnosis.

... verificationStatus ?!ΣC0..1CodeableConceptunconfirmed | provisional | differential | confirmed | refuted | entered-in-error
Binding: ConditionVerificationStatus (required): The verification status to support or decline the clinical status of the condition or diagnosis.

... category 0..*CodeableConceptproblem-list-item | encounter-diagnosis
Binding: ConditionCategoryCodes (extensible): A category assigned to the condition.


... severity 0..1CodeableConceptSubjective severity of condition
Binding: Condition/DiagnosisSeverity (preferred): A subjective assessment of the severity of the condition as evaluated by the clinician.

... code Σ0..1CodeableConceptIdentification of the condition, problem or diagnosis
Binding: Disease Codes (extensible)
... bodySite Σ0..*CodeableConceptAnatomical location, if relevant
Binding: SNOMEDCTBodyStructures (example): Codes describing anatomical locations. May include laterality.


... subject Σ1..1Reference(Patient | Group)Who has the condition?
... encounter Σ0..1Reference(Encounter)Encounter created as part of
... onset[x] Σ0..1Estimated or actual date, date-time, or age
.... onsetDateTimedateTime
.... onsetAgeAge
.... onsetPeriodPeriod
.... onsetRangeRange
.... onsetStringstring
... abatement[x] C0..1When in resolution/remission
.... abatementDateTimedateTime
.... abatementAgeAge
.... abatementPeriodPeriod
.... abatementRangeRange
.... abatementStringstring
... recordedDate Σ0..1dateTimeDate record was first recorded
... recorder Σ0..1Reference(Practitioner | PractitionerRole | Patient | RelatedPerson)Who recorded the condition
... asserter Σ0..1Reference(Practitioner | PractitionerRole | Patient | RelatedPerson)Person who asserts this condition
... stage C0..*BackboneElementStage/grade, usually assessed formally
.... 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
.... summary C0..1CodeableConceptSimple summary (disease specific)
Binding: ConditionStage (example): Codes describing condition stages (e.g. Cancer stages).

.... assessment C0..*Reference(ClinicalImpression | DiagnosticReport | Observation)Formal record of assessment
.... type 0..1CodeableConceptKind of staging
Binding: ConditionStageType (example): Codes describing the kind of condition staging (e.g. clinical or pathological).

... evidence C0..*BackboneElementSupporting evidence
.... 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
.... code ΣC0..*CodeableConceptManifestation/symptom
Binding: ManifestationAndSymptomCodes (example): Codes that describe the manifestation or symptoms of a condition.


.... detail ΣC0..*Reference(Resource)Supporting information found elsewhere
... note 0..*AnnotationAdditional information about the Condition

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet
Condition.languagepreferredCommonLanguages
Additional Bindings Purpose
AllLanguages Max Binding
Condition.clinicalStatusrequiredConditionClinicalStatusCodes
Condition.verificationStatusrequiredConditionVerificationStatus
Condition.categoryextensibleConditionCategoryCodes
Condition.severitypreferredCondition/DiagnosisSeverity
Condition.codeextensibleDiseaseCodes
Condition.bodySiteexampleSNOMEDCTBodyStructures
Condition.stage.summaryexampleConditionStage
Condition.stage.typeexampleConditionStageType
Condition.evidence.codeexampleManifestationAndSymptomCodes

Constraints

IdGradePath(s)DetailsRequirements
con-1errorCondition.stageStage SHALL have summary or assessment
: summary.exists() or assessment.exists()
con-2errorCondition.evidenceevidence SHALL have code or details
: code.exists() or detail.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()

This structure is derived from Condition

Summary

Differential View

This structure is derived from Condition

NameFlagsCard.TypeDescription & Constraintsdoco
.. Condition 0..*ConditionDetailed information about conditions, problems or diagnoses
... code 0..1CodeableConceptIdentification of the condition, problem or diagnosis
Binding: Disease Codes (extensible)

doco Documentation for this format

Terminology Bindings (Differential)

PathConformanceValueSet
Condition.codeextensibleDiseaseCodes

Key Elements View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Condition C0..*ConditionDetailed information about conditions, problems or diagnoses
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... clinicalStatus ?!ΣC0..1CodeableConceptactive | recurrence | relapse | inactive | remission | resolved
Binding: ConditionClinicalStatusCodes (required): The clinical status of the condition or diagnosis.

... code Σ0..1CodeableConceptIdentification of the condition, problem or diagnosis
Binding: Disease Codes (extensible)
... subject Σ1..1Reference(Patient | Group)Who has the condition?

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet
Condition.clinicalStatusrequiredConditionClinicalStatusCodes
Condition.verificationStatusrequiredConditionVerificationStatus
Condition.codeextensibleDiseaseCodes

Constraints

IdGradePath(s)DetailsRequirements
con-3best practiceConditionCondition.clinicalStatus SHALL be present if verificationStatus is not entered-in-error and category is problem-list-item
: clinicalStatus.exists() or verificationStatus.coding.where(system='http://terminology.hl7.org/CodeSystem/condition-ver-status' and code = 'entered-in-error').exists() or category.select($this='problem-list-item').empty()
con-4errorConditionIf condition is abated, then clinicalStatus must be either inactive, resolved, or remission
: abatement.empty() or clinicalStatus.coding.where(system='http://terminology.hl7.org/CodeSystem/condition-clinical' and (code='resolved' or code='remission' or code='inactive')).exists()
con-5errorConditionCondition.clinicalStatus SHALL NOT be present if verification Status is entered-in-error
: verificationStatus.coding.where(system='http://terminology.hl7.org/CodeSystem/condition-ver-status' and code='entered-in-error').empty() or clinicalStatus.empty()
dom-2errorConditionIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorConditionIf 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-4errorConditionIf 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-5errorConditionIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceConditionA 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
.. Condition C0..*ConditionDetailed information about conditions, problems or diagnoses
... 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
... 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
... identifier Σ0..*IdentifierExternal Ids for this condition
... clinicalStatus ?!ΣC0..1CodeableConceptactive | recurrence | relapse | inactive | remission | resolved
Binding: ConditionClinicalStatusCodes (required): The clinical status of the condition or diagnosis.

... verificationStatus ?!ΣC0..1CodeableConceptunconfirmed | provisional | differential | confirmed | refuted | entered-in-error
Binding: ConditionVerificationStatus (required): The verification status to support or decline the clinical status of the condition or diagnosis.

... category 0..*CodeableConceptproblem-list-item | encounter-diagnosis
Binding: ConditionCategoryCodes (extensible): A category assigned to the condition.


... severity 0..1CodeableConceptSubjective severity of condition
Binding: Condition/DiagnosisSeverity (preferred): A subjective assessment of the severity of the condition as evaluated by the clinician.

... code Σ0..1CodeableConceptIdentification of the condition, problem or diagnosis
Binding: Disease Codes (extensible)
... bodySite Σ0..*CodeableConceptAnatomical location, if relevant
Binding: SNOMEDCTBodyStructures (example): Codes describing anatomical locations. May include laterality.


... subject Σ1..1Reference(Patient | Group)Who has the condition?
... encounter Σ0..1Reference(Encounter)Encounter created as part of
... onset[x] Σ0..1Estimated or actual date, date-time, or age
.... onsetDateTimedateTime
.... onsetAgeAge
.... onsetPeriodPeriod
.... onsetRangeRange
.... onsetStringstring
... abatement[x] C0..1When in resolution/remission
.... abatementDateTimedateTime
.... abatementAgeAge
.... abatementPeriodPeriod
.... abatementRangeRange
.... abatementStringstring
... recordedDate Σ0..1dateTimeDate record was first recorded
... recorder Σ0..1Reference(Practitioner | PractitionerRole | Patient | RelatedPerson)Who recorded the condition
... asserter Σ0..1Reference(Practitioner | PractitionerRole | Patient | RelatedPerson)Person who asserts this condition
... stage C0..*BackboneElementStage/grade, usually assessed formally
.... 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
.... summary C0..1CodeableConceptSimple summary (disease specific)
Binding: ConditionStage (example): Codes describing condition stages (e.g. Cancer stages).

.... assessment C0..*Reference(ClinicalImpression | DiagnosticReport | Observation)Formal record of assessment
.... type 0..1CodeableConceptKind of staging
Binding: ConditionStageType (example): Codes describing the kind of condition staging (e.g. clinical or pathological).

... evidence C0..*BackboneElementSupporting evidence
.... 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
.... code ΣC0..*CodeableConceptManifestation/symptom
Binding: ManifestationAndSymptomCodes (example): Codes that describe the manifestation or symptoms of a condition.


.... detail ΣC0..*Reference(Resource)Supporting information found elsewhere
... note 0..*AnnotationAdditional information about the Condition

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet
Condition.languagepreferredCommonLanguages
Additional Bindings Purpose
AllLanguages Max Binding
Condition.clinicalStatusrequiredConditionClinicalStatusCodes
Condition.verificationStatusrequiredConditionVerificationStatus
Condition.categoryextensibleConditionCategoryCodes
Condition.severitypreferredCondition/DiagnosisSeverity
Condition.codeextensibleDiseaseCodes
Condition.bodySiteexampleSNOMEDCTBodyStructures
Condition.stage.summaryexampleConditionStage
Condition.stage.typeexampleConditionStageType
Condition.evidence.codeexampleManifestationAndSymptomCodes

Constraints

IdGradePath(s)DetailsRequirements
con-1errorCondition.stageStage SHALL have summary or assessment
: summary.exists() or assessment.exists()
con-2errorCondition.evidenceevidence SHALL have code or details
: code.exists() or detail.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()

This structure is derived from Condition

Summary

 

Other representations of profile: CSV, Excel, Schematron

Notes:

Disease Designation

Patients identified as affected or unaffected for a given disease will have a condition object linked to their patient record containing one or more Coding entries assigned to Condition.code. Condition.code.text will contain the textual description of the disease. The first Coding object present must be one of the disease codes

Affected Status

Affection status is mapped to the standard parameter, Condition.verificationStatus using the corresponding hl7 codes.

Status Verification Status
Affected Confirmed
Unaffected Refuted
Possibly Affected Provisional

recordedDate vs onset

Depending on the data available, data may be tagged with a date in either Condition.recordedDate or Condition.onset using the extension relativeDateTime where recordedDate is presumably the earliest date at which this disease was noted in the patient’s record. Onset would be specified only when the actual onset was established and recorded as such. The relative date targets the patient’s birth date.