ConceptFor engineers

Versions and releases

Why every care flow query needs the right release_id, and how a patient stays on the version they started on.

Care flow definitions are versioned, and a patient stays on the version their care flow started on. Queries that read data point definitions therefore need the right release_id.

A patient stays on the version they started on

Every patient is enrolled in the version of the care flow that was live at the moment their care flow started. Care flows evolve, so the version an old patient is on can have a materially different design from today's.

Version pinning is deliberate: changing a live care flow doesn't reshape the journey of someone already mid-flow.

The data dictionary differs by version

The oldest version of your care flow can have a different set of data points from the most recent one. Questions get added, removed and renamed.

So to retrieve the data point definitions for a care flow, you must specify which version you mean, using the release_id.

A wrong version returns no error

A query that assumes the latest version returns the latest version's dictionary, which:

  • omits data points that only older versions collected
  • includes data points that older patients never had

Neither case returns an error. The result is smaller or differently shaped, with no indication that it's incomplete, so an analysis can under-count a cohort.

Fetch the release_id from the care flow you're querying, rather than assuming.

version and release_id are not the same

Both exist on a care flow definition, and they mean different things. Check which one a query expects before filtering on it, because filtering on the wrong one changes which care flows match.

Next steps

On this page