Skip to content

Goal Profile

Canonical../StructureDefinition/nexus-emr-core-goal
Statusdraft (experimental) · 1.26.0
BaseGoal (constraint)
SourceFSH · JSON

Nexus EMR profile for Goal -- the measurable target behind CDM flowsheets and care gaps. First pass: lifecycle, description, target (measure/detail/due), addresses. Closed to SMART apps pending an exposure decision.

Overview

Overview

The Nexus EMR Core Goal profile carries the measurable target behind chronic-disease-management content. A flowsheet row is a measurement read against a target, and the target is a Goal: "HbA1c under 7.0% by October". Care-gap logic is the same comparison asked negatively. CarePlan.goal references this profile, so a Goal is normally reached through the plan that pursues it as well as directly.

This is a first pass covering lifecycle, description, the measurable target and what the goal addresses. achievementStatus is accepted as it stands in base FHIR with no added vocabulary discipline, outcome linkage is not developed, and there is no goal-category taxonomy yet -- do not treat any of those three as contracts. The profile is closed to SMART apps pending an exposure decision.

The description is required; the target is not

lifecycleStatus (1..1), description (1..1) and subject (1..1, only Reference(NexusEmrCorePatient)) are the required core. description is human-readable text and is the one thing every consumer can render.

target is 0..*, so a Goal can be purely narrative. Within a target:

  • target.measure (0..1) -- what is measured.
  • target.detail[x] (0..1) -- the target value, as a Quantity or a Range.
  • target.due[x] (0..1) -- when it should be achieved or next checked.

Every one of those is optional, so a flowsheet renderer must handle a target that names a measure with no value, or a due date with no measure, without treating it as an error.

startDate (0..1), with statusDate, supplies the declared effective date (startDate | statusDate).

Use the same code the measurement carries

target.measure should use the same code the corresponding Observations carry -- LOINC where the flowsheet's Observation uses LOINC. That is what lets a care-gap query join target to measurement directly instead of maintaining a mapping table between the two vocabularies. A Goal whose measure is coded differently from its measurements is conformant and useless.

addresses is wider than Condition

addresses (0..*) accepts Reference(NexusEmrCoreCondition | NexusEmrCoreObservation | NexusEmrCoreMedicationStatement). A goal can therefore hang off the condition being managed, the observation being driven, or a reported medication -- so a consumer must check the target resource type rather than assuming a Condition.

lifecycleStatus is a modifier element. A proposed Goal produced by an AI suggestion does not sit first-class in the chart pre-approval: it rides contained in its review Task, like every other suggested resource. A standalone Goal resource is one that exists in its own right.

See Goal/nexus-emr-goal-example for a worked instance.