SDOH Clinical Care
0.1.0 - STU 1

This page is part of the SDOH Clinical Care for Multiple Domains (v0.1.0: STU 1 Ballot 1) based on FHIR R4. The current version which supercedes this version is 2.0.0. For a full list of available versions, see the Directory of published versions

Resource Profile: SDOHCC Goal Base 1

Defining URL:http://hl7.org/fhir/us/sdoh-clinicalcare/StructureDefinition/SDOHCC-Goal-Base-1
Version:0.1.0
Name:SDOHCC_Goal_Base_1
Title:SDOHCC Goal Base 1
Status:Draft as of 2020-12-16T20:13:36+00:00
Definition:

This profile constrains Goals that address Social Determinants of Health.

Publisher:HL7 International - Patient Care WG
Source Resource:XML / JSON / Turtle

The official URL for this profile is:

http://hl7.org/fhir/us/sdoh-clinicalcare/StructureDefinition/SDOHCC-Goal-Base-1

Additional Guidance

The SDOHCC_Goal_Base_1 profile allows the representation of Goals that address SDOH Conditions.

Many of the resources/profiles used for SDOH reference one another. The current flow is that QuestionnaireResponses result in Observations that are used as evidence for Conditions that are addressed by Goals that lead to ServiceRequests and Procedures.

The diagram below shows a simple example of a relationship between Observation, Condition and Goal. An initial Observation (1) is evidence for a Condition (2) that is addressed by a Goal (3) that may have an outcome of a later Observation (4).

The sections that follow provide additional guidance on some elements in the SDOHCC_Goal_Base_1 profile.

Goal.category

Goal.category is optional and bound to the FHIR "Goal category" value set with binding strength: Example.

Additionally, an optional Goal.category slice bound to the "SDOHCC ValueSet SDOHDomain 1" value set allows the categorization of a Goal into one or more of the SDOH domains (e.g., food-insecurity-domain, inadequate-housing-domain, etc.). It is recommended that this optional slice be used in order to facilitate searching for SDOH goals.

Goal.description

Goal.description is currently bound to codes from the FHIR "LOINC Codes" value set with binding strength: Extensible. As the Gravity Project continues to refine content for the SDOH domains (e.g., food, housing, transportation, etc.), Gravity intends to work with LOINC to include Goal.description codes that pertain to SDOH domains.

Goal.subject

Since this profile is based on the US Core Goal Profile, Goal.subject is restricted to referencing US Core Patient Profile.

Goal.target

Goal.target can be used to "Indicate what should be done by when."

Exactly how Goal.target.will be used for SDOH goals is evolving. The following is general guidance for Goal.target.

Goal.target.measure

Goal.target.measure is currently bound to codes from the FHIR "LOINC Codes" value set with binding strength: Extensible. Gravity intends to work with LOINC to include Goal.target.measure codes that pertain to SDOH domains.

For SDOH goals that have only one target measure that aligns exactly with the goal description, current guidance is to use the same code for Goal.target.measure as for Goal.description. This approach allows the use of Goal.target.due[x] to specify the date the goal should be achieved by. This approach is proposed because it is not possible to assign a due date to a Goal.description without using Goal.target.

Goal.statusDate

The Goal Resource does not clearly specify whether Goal.statusDate applies to Goal.achievementStatus or to Goal.lifecycleStatus. It is recommended that Goal.statusDate be synchronized with Goal.achievementStatus.

Goal.addresses

Goal.addresses is sliced to allow the preferred option of referencing the SDOHCC_Condition_Base_1 Profile and/or SDOHCC_Observation_ScreeningResponseBase_1 Profile.

Goal.addresses should reference the SDOHCC_Condition_Base_1 Profile and/or SDOHCC_Observation_ScreeningResponseBase_1 Profile if they exist.

Additionally, Goal.addresses may reference Condition, Observation and/or RiskAssessment.

Goal.outcomeCode

Goal.outcome.Code can be used identify a goal's outcome when Goal.status is assessed. Goal.outcomeCode is currently bound to the FHIR "LOINC Codes" value set with binding strength: Example. Gravity intends to work with LOINC to include Goal.outcome codes that pertain to SDOH domains.

Of note, information represented by Goal.outcomeCode overlaps significantly with information represented by Goal.outcomeReference. Multiple approaches to representing the same information may negatively impact interoperability. Therefore, where there is overlap in information provided by Goal.outcomeCode and Goal.outcomeReference, it is recommended that Goal.outcomeReference should be used to identify/provide details of goal outcomes.

Goal.outcomeReference

Goal.outcomeReference can be used to provide details of the Goal outcome (presumably when Goal.status is assessed). Goal.achievementStatus may be supported by an update to Goal.outcomeReference. The base FHIR Resource restricts Goal.outcomeReference to referencing only Observations.

Goal.outcomeReference may reference any Observation that supports the Goal status.

Additionally, Goal.outcomeReference is sliced to allow referencing the Observation_ScreeningResponseBase_1 Profile if it exists and is applicable.

Where there is significant overlap in information provided by Goal.outcomeCode and Goal.outcomeReference, it is recommended that Goal.outcomeReference be used to identify/provide details of goal outcomes.

Formal Views of Profile Content

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

This structure is derived from USCoreGoalProfile

Summary

Mandatory: 1 element
Must-Support: 4 elements

Structures

This structure refers to these other structures:

Slices

This structure defines the following Slices:

  • The element Goal.category is sliced based on the value of value:$this
  • The element Goal.addresses is sliced based on the value of profile:resolve()
  • The element Goal.outcomeReference is sliced based on the value of profile:resolve()

This structure is derived from USCoreGoalProfile

NameFlagsCard.TypeDescription & Constraintsdoco
.. Goal 0..*USCoreGoalProfileDescribes the intended objective(s) for a patient, group or organization
... achievementStatus S1..1CodeableConceptin-progress | improving | worsening | no-change | achieved | sustaining | not-achieved | no-progress | not-attainable
... category 0..*(Slice Definition)E.g. Treatment, dietary, behavioral, etc.
Slice: Unordered, Open by value:$this
.... category:SDOHDomain S0..*CodeableConcepte.g., food-insecurity-domain | transportation-insecurity-domain
Binding: SDOHCC ValueSet SDOHDomain 1 (required)
... description 1..1CodeableConceptCode or text describing goal
Binding: LOINCCodes (extensible)
.... measure 0..1CodeableConceptThe parameter whose value is being tracked
Binding: LOINCCodes (extensible)
... addresses 0..*(Slice Definition)Issues addressed by this goal
Slice: Unordered, Open by profile:resolve()
.... addresses:SupportedAddresses S0..*Reference(SDOHCC Condition Base 1 | SDOHCC Observation ScreeningResponseBase 1)Issues addressed by this goal
... outcomeCode 0..*CodeableConceptWhat result was achieved regarding the goal?
Binding: LOINCCodes (example)
... outcomeReference 0..*(Slice Definition)Observation that resulted from goal
Slice: Unordered, Open by profile:resolve()
.... outcomeReference:SupportedOutcomeReference S0..*Reference(SDOHCC Observation ScreeningResponseBase 1)Observation that resulted from goal

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. Goal 0..*USCoreGoalProfileDescribes the intended objective(s) for a patient, group or organization
... id Σ0..1stringLogical 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 goal
... lifecycleStatus ?!SΣ1..1codeproposed | planned | accepted | active | on-hold | completed | cancelled | entered-in-error | rejected
Binding: GoalLifecycleStatus (required)
... achievementStatus SΣ1..1CodeableConceptin-progress | improving | worsening | no-change | achieved | sustaining | not-achieved | no-progress | not-attainable
Binding: GoalAchievementStatus (preferred): Indicates the progression, or lack thereof, towards the goal against the target.

... category Σ0..*(Slice Definition)E.g. Treatment, dietary, behavioral, etc.
Slice: Unordered, Open by value:$this
Binding: GoalCategory (example): Codes for grouping and sorting goals.


.... category:SDOHDomain SΣ0..*CodeableConcepte.g., food-insecurity-domain | transportation-insecurity-domain
Binding: SDOHCC ValueSet SDOHDomain 1 (required)
... priority Σ0..1CodeableConcepthigh-priority | medium-priority | low-priority
Binding: GoalPriority (preferred): The level of importance associated with a goal.

... description SΣ1..1CodeableConceptCode or text describing goal
Binding: LOINCCodes (extensible)
... subject SΣ1..1Reference(US Core Patient Profile)Who this goal is intended for
... start[x] Σ0..1When goal pursuit begins
Binding: GoalStartEvent (example): Codes describing events that can trigger the initiation of a goal.

.... startDatedate
.... startCodeableConceptCodeableConcept
... target SI0..*BackboneElementTarget outcome for the goal
.... 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
.... measure ΣI0..1CodeableConceptThe parameter whose value is being tracked
Binding: LOINCCodes (extensible)
.... detail[x] ΣI0..1The target value to be achieved
Binding: (unbound) (example): Codes to identify the target value of the focus to be achieved to signify the fulfillment of the goal.

..... detailQuantityQuantity
..... detailRangeRange
..... detailCodeableConceptCodeableConcept
..... detailStringstring
..... detailBooleanboolean
..... detailIntegerinteger
..... detailRatioRatio
.... due[x] Σ0..1(Slice Definition)Reach goal on or before
Slice: Unordered, Closed by type:$this
..... due[x]:dueDate SΣ0..1dateReach goal on or before
... statusDate Σ0..1dateWhen goal status took effect
... statusReason 0..1stringReason for current status
... expressedBy Σ0..1Reference(Patient | Practitioner | PractitionerRole | RelatedPerson)Who's responsible for creating Goal?
... addresses 0..*(Slice Definition)Issues addressed by this goal
Slice: Unordered, Open by profile:resolve()
.... addresses:SupportedAddresses S0..*Reference(SDOHCC Condition Base 1 | SDOHCC Observation ScreeningResponseBase 1)Issues addressed by this goal
... note 0..*AnnotationComments about the goal
... outcomeCode 0..*CodeableConceptWhat result was achieved regarding the goal?
Binding: LOINCCodes (example)
... outcomeReference 0..*(Slice Definition)Observation that resulted from goal
Slice: Unordered, Open by profile:resolve()
.... outcomeReference:SupportedOutcomeReference S0..*Reference(SDOHCC Observation ScreeningResponseBase 1)Observation that resulted from goal

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. Goal 0..*USCoreGoalProfileDescribes the intended objective(s) for a patient, group or organization
... lifecycleStatus ?!Σ1..1codeproposed | planned | accepted | active | on-hold | completed | cancelled | entered-in-error | rejected
Binding: GoalLifecycleStatus (required)
... achievementStatus Σ1..1CodeableConceptin-progress | improving | worsening | no-change | achieved | sustaining | not-achieved | no-progress | not-attainable
Binding: GoalAchievementStatus (preferred): Indicates the progression, or lack thereof, towards the goal against the target.

... category:SDOHDomain Σ0..*CodeableConcepte.g., food-insecurity-domain | transportation-insecurity-domain
Binding: SDOHCC ValueSet SDOHDomain 1 (required)
... subject Σ1..1Reference(US Core Patient Profile)Who this goal is intended for
... target I0..*BackboneElementTarget outcome for the goal
.... due[x]:dueDate Σ0..1dateReach goal on or before
... addresses:SupportedAddresses 0..*Reference(SDOHCC Condition Base 1 | SDOHCC Observation ScreeningResponseBase 1)Issues addressed by this goal
... outcomeReference:SupportedOutcomeReference 0..*Reference(SDOHCC Observation ScreeningResponseBase 1)Observation that resulted from goal

doco Documentation for this format

This structure is derived from USCoreGoalProfile

Summary

Mandatory: 1 element
Must-Support: 4 elements

Structures

This structure refers to these other structures:

Slices

This structure defines the following Slices:

  • The element Goal.category is sliced based on the value of value:$this
  • The element Goal.addresses is sliced based on the value of profile:resolve()
  • The element Goal.outcomeReference is sliced based on the value of profile:resolve()

Differential View

This structure is derived from USCoreGoalProfile

NameFlagsCard.TypeDescription & Constraintsdoco
.. Goal 0..*USCoreGoalProfileDescribes the intended objective(s) for a patient, group or organization
... achievementStatus S1..1CodeableConceptin-progress | improving | worsening | no-change | achieved | sustaining | not-achieved | no-progress | not-attainable
... category 0..*(Slice Definition)E.g. Treatment, dietary, behavioral, etc.
Slice: Unordered, Open by value:$this
.... category:SDOHDomain S0..*CodeableConcepte.g., food-insecurity-domain | transportation-insecurity-domain
Binding: SDOHCC ValueSet SDOHDomain 1 (required)
... description 1..1CodeableConceptCode or text describing goal
Binding: LOINCCodes (extensible)
.... measure 0..1CodeableConceptThe parameter whose value is being tracked
Binding: LOINCCodes (extensible)
... addresses 0..*(Slice Definition)Issues addressed by this goal
Slice: Unordered, Open by profile:resolve()
.... addresses:SupportedAddresses S0..*Reference(SDOHCC Condition Base 1 | SDOHCC Observation ScreeningResponseBase 1)Issues addressed by this goal
... outcomeCode 0..*CodeableConceptWhat result was achieved regarding the goal?
Binding: LOINCCodes (example)
... outcomeReference 0..*(Slice Definition)Observation that resulted from goal
Slice: Unordered, Open by profile:resolve()
.... outcomeReference:SupportedOutcomeReference S0..*Reference(SDOHCC Observation ScreeningResponseBase 1)Observation that resulted from goal

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Goal 0..*USCoreGoalProfileDescribes the intended objective(s) for a patient, group or organization
... id Σ0..1stringLogical 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 goal
... lifecycleStatus ?!SΣ1..1codeproposed | planned | accepted | active | on-hold | completed | cancelled | entered-in-error | rejected
Binding: GoalLifecycleStatus (required)
... achievementStatus SΣ1..1CodeableConceptin-progress | improving | worsening | no-change | achieved | sustaining | not-achieved | no-progress | not-attainable
Binding: GoalAchievementStatus (preferred): Indicates the progression, or lack thereof, towards the goal against the target.

... category Σ0..*(Slice Definition)E.g. Treatment, dietary, behavioral, etc.
Slice: Unordered, Open by value:$this
Binding: GoalCategory (example): Codes for grouping and sorting goals.


.... category:SDOHDomain SΣ0..*CodeableConcepte.g., food-insecurity-domain | transportation-insecurity-domain
Binding: SDOHCC ValueSet SDOHDomain 1 (required)
... priority Σ0..1CodeableConcepthigh-priority | medium-priority | low-priority
Binding: GoalPriority (preferred): The level of importance associated with a goal.

... description SΣ1..1CodeableConceptCode or text describing goal
Binding: LOINCCodes (extensible)
... subject SΣ1..1Reference(US Core Patient Profile)Who this goal is intended for
... start[x] Σ0..1When goal pursuit begins
Binding: GoalStartEvent (example): Codes describing events that can trigger the initiation of a goal.

.... startDatedate
.... startCodeableConceptCodeableConcept
... target SI0..*BackboneElementTarget outcome for the goal
.... 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
.... measure ΣI0..1CodeableConceptThe parameter whose value is being tracked
Binding: LOINCCodes (extensible)
.... detail[x] ΣI0..1The target value to be achieved
Binding: (unbound) (example): Codes to identify the target value of the focus to be achieved to signify the fulfillment of the goal.

..... detailQuantityQuantity
..... detailRangeRange
..... detailCodeableConceptCodeableConcept
..... detailStringstring
..... detailBooleanboolean
..... detailIntegerinteger
..... detailRatioRatio
.... due[x] Σ0..1(Slice Definition)Reach goal on or before
Slice: Unordered, Closed by type:$this
..... due[x]:dueDate SΣ0..1dateReach goal on or before
... statusDate Σ0..1dateWhen goal status took effect
... statusReason 0..1stringReason for current status
... expressedBy Σ0..1Reference(Patient | Practitioner | PractitionerRole | RelatedPerson)Who's responsible for creating Goal?
... addresses 0..*(Slice Definition)Issues addressed by this goal
Slice: Unordered, Open by profile:resolve()
.... addresses:SupportedAddresses S0..*Reference(SDOHCC Condition Base 1 | SDOHCC Observation ScreeningResponseBase 1)Issues addressed by this goal
... note 0..*AnnotationComments about the goal
... outcomeCode 0..*CodeableConceptWhat result was achieved regarding the goal?
Binding: LOINCCodes (example)
... outcomeReference 0..*(Slice Definition)Observation that resulted from goal
Slice: Unordered, Open by profile:resolve()
.... outcomeReference:SupportedOutcomeReference S0..*Reference(SDOHCC Observation ScreeningResponseBase 1)Observation that resulted from goal

doco Documentation for this format

 

Other representations of profile: Schematron

Terminology Bindings

PathConformanceValueSet
Goal.languagepreferredCommonLanguages
Max Binding: AllLanguages
Goal.lifecycleStatusrequiredGoalLifecycleStatus
Goal.achievementStatuspreferredGoalAchievementStatus
Goal.categoryexampleGoalCategory
Goal.category:SDOHDomainrequiredSDOHCC_ValueSet_SDOHDomain_1
Goal.prioritypreferredGoalPriority
Goal.descriptionextensibleLOINCCodes
Goal.start[x]exampleGoalStartEvent
Goal.target.measureextensibleLOINCCodes
Goal.target.detail[x]example
Goal.outcomeCodeexampleLOINCCodes

Constraints

IdPathDetailsRequirements
dom-2GoalIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3GoalIf 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-4GoalIf 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-5GoalIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6GoalA resource should have narrative for robust management
: text.`div`.exists()
ele-1Goal.metaAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Goal.implicitRulesAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Goal.languageAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Goal.textAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Goal.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Goal.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Goal.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Goal.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Goal.identifierAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Goal.lifecycleStatusAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Goal.achievementStatusAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Goal.categoryAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Goal.category:SDOHDomainAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Goal.priorityAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Goal.descriptionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Goal.subjectAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Goal.start[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Goal.targetAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
gol-1Goal.targetGoal.target.measure is required if Goal.target.detail is populated
: (detail.exists() and measure.exists()) or detail.exists().not()
ele-1Goal.target.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Goal.target.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Goal.target.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Goal.target.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Goal.target.measureAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Goal.target.detail[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Goal.target.due[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Goal.target.due[x]:dueDateAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Goal.statusDateAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Goal.statusReasonAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Goal.expressedByAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Goal.addressesAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Goal.addresses:SupportedAddressesAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Goal.noteAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Goal.outcomeCodeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Goal.outcomeReferenceAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Goal.outcomeReference:SupportedOutcomeReferenceAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())