Goal Profile¶
| Canonical | ../StructureDefinition/nexus-emr-core-goal |
|---|---|
| Status | draft (experimental) · 1.26.0 |
| Base | Goal (constraint) |
| Source | FSH · 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 aQuantityor aRange.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.