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.
FSH
The authored source of truth: resources/StructureDefinition-nexus-emr-core-goal.fsh (edit on GitHub). One FSH file may define several related artifacts.
// NexusEmrCoreGoal.fsh
// FIRST PASS (FHIR-29). Care goals -- the target half of CDM flowsheets and care gaps.
//
// CONSUMER: the SD-242/SD-118 demo dataset requires chronic-disease-management content (CDM
// flowsheets, care-gap seeding), and a flowsheet row is measurement-against-TARGET -- the
// target is a Goal. CarePlan (profiled in the same round) references it.
//
// FIRST-PASS SCOPE: lifecycle, description, measurable target (measure + detail + due),
// addresses. Deliberately NOT settled: achievementStatus vocabulary discipline (accepted
// as-is from base), outcome linkage richness, and goal-category taxonomy.
//
// SMART EXPOSURE: deliberately NOT declared -- closed to apps pending a decision (FHIR-28 policy).
Alias: $NexusEmrCoreGoal = ../StructureDefinition/nexus-emr-core-goal
Profile: NexusEmrCoreGoal
Parent: Goal
Id: nexus-emr-core-goal
Title: "Goal Profile"
Description: "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."
* ^url = $NexusEmrCoreGoal
* ^status = #draft
* insert NoResourceNoteExtension
* ^experimental = true
* insert EffectiveDate([[startDate | statusDate]])
* . ^short = "Nexus EMR Goal Core"
* lifecycleStatus 1..1 MS
* lifecycleStatus ^short = "proposed | planned | accepted | active | on-hold | completed | cancelled | entered-in-error | rejected"
* lifecycleStatus ^comment = "This is a modifier element. A `proposed` Goal that is being SUGGESTED rides in the transaction Bundle contained in its review Task, like every other suggested resource -- it does not sit first-class in the chart before someone accepts it. (This element's `proposed` code is Goal's own lifecycle vocabulary and is unrelated to `Task.intent`.)"
* description 1..1 MS
* description ^short = "The goal, human-readable ('HbA1c under 7%')"
* subject 1..1 MS
* subject only Reference(NexusEmrCorePatient)
* subject ^short = "The patient"
* startDate 0..1 MS
* startDate ^short = "When pursuit began -- the effective date"
* target 0..* MS
* target ^short = "The measurable target a flowsheet row checks against"
* target.measure 0..1 MS
* target.measure ^short = "What is measured (LOINC where the flowsheet's Observation uses one)"
* target.measure ^comment = "Using the SAME code the flowsheet Observations carry is what lets a care-gap query join target to measurement without a mapping table."
* target.detail[x] 0..1 MS
* target.detail[x] ^short = "The target value (Quantity or Range)"
* target.due[x] 0..1 MS
* target.due[x] ^short = "When it should be achieved / next checked"
* target.due[x] ^comment = """
Two arms, two different questions, and a consumer has to read the right one.
**`dueDate` is a one-off**: the single date this target should be achieved or checked by.
**`dueDuration` is a recurring interval**, expressed in days: how often the care element behind this
target should be rechecked. It is the individualised recheck interval -- set per patient, overriding
whatever the underlying guideline says -- and it is relative to the last measurement rather than to
any date on the Goal. A target that states one states no calendar date at all, so a reader looking
only at `dueDate` will conclude a goal has no due date when in fact it has a cadence.
**Consumer guidance on the units.** Existing data expresses the interval as `code = d` with no
`system`, so the Duration is not resolvable as UCUM even though `d` is the UCUM day. Expect the
system to be absent, treat `unit` (`days`) and `code` as the day unit they read as, and do not make
handling conditional on UCUM resolution succeeding.
"""
* addresses 0..* MS
* addresses only Reference(NexusEmrCoreCondition or NexusEmrCoreObservation or NexusEmrCoreMedicationStatement)
* addresses ^short = "The condition(s) this goal manages"