Cypress Versioning Strategy

andrequina edited this page Dec 7, 2012 · 1 revision
Clone this wiki locally

Versioning is an important consideration for the Cypress application and for Clinical Quality measures in general. There are a number of components that may be updated independently of each other. These components are the Cypress source code that provides the logic for calculating the measures, the underlying measure definitions, and the value set definitions.

Cypress Application Version

The Cypress test and certification tool and its underlying dependencies are versioned based on the Semantic Versioning Specification. Under this scheme, version numbers and the way they change convey meaning about the underlying code and what has been modified from one version to the next.

The version numbers take the form X.Y.Z where X, Y, and Z are non-negative integers. X is the major version, Y is the minor version, and Z is the patch version. For a complete description of how the major, minor, and patch version numbers are assigned see http://semver.org.

Cypress Dependency Versions

In addition to the Cypress version the dependencies of the Cypress application are also versioned. The dependencies of Cypress are core libraries, third party libraries, and application data bundles.

Core and 3rd Party Libraries

Core libraries are software packages developed as part of the Cypress application, but serve a specific function separate from the core Cypress application, for example the Health Data Standards library is a dependency used for importing and exporting health data XML standards. The Core libraries used by Cypress are versioned using the same semantic versioning scheme used by Cypress, but they each maintain their own independent versions. Third party libraries are versioned based on the versioning scheme used by the library maintainer. Core and third party dependencies of Cypress can be found listed in the files Gemfile and Gemfile.lock which can be found at the root of the Cypress source code. The Gemfile lists the dependencies and any associated version restrictions. The Gemfile.lock identifies the appropriate version for all direct and transitive dependencies of the Cypress application.

Application Data and Measure Definitions

The final category of dependency are application data bundles. These bundles contain measure specifications and test patients. These bundles are versioned using semantic versioning and have an associated date stamp that represents the date the bundle was created. The current application data bundle for Cypress can be found in the config/cypress.yml file. The application data bundle contains all of the measure metadata, execution logic, and patient test decks required to initialize a specific version of a Cypress installation. Measure bundles can either be loaded via the Cypress application UI, or using the command line. The only other dependency of Cypress are the Value Sets. The current value sets can be loaded via the Cypress application UI or the command line. Specific versions of Cypress can be found at https://github.com/projectcypress/cypress/tags. Each tagged version of Cypress is tied to the library dependencies though the Gemfiles and to the associated data bundle via the config/cypress.yml.