VitalStream by Caretaker | Canvas Medical

aduane/vitalstream

VitalStream by Caretaker Medical

This plugin provides an integration for the VitalStream device by Caretaker Medical, enabling real-time vital signs monitoring within Canvas Medical.

Problem it solves

Continuous vitals from a monitoring device normally live outside the chart, so staff read them off the device and retype periodic values into the note by hand. That is slow and error-prone during a treatment session. This plugin streams the device readings straight into the chart and, on save, computes windowed averages at chosen time marks and records them as Observations, so the readings reach the patient record without manual transcription.

Who it's for

Clinical staff who run device-monitored treatment sessions - for example nurses and providers administering Spravato (esketamine) or other treatments that require timed blood pressure and vitals checks, where readings must land in the chart.

How to install

canvas install vitalstream

This plugin requires the AUTHORIZED_SERIAL_NUMBERS secret to function. Set it before use (see Configuration).

Features

Components

Configuration

The plugin uses the following secrets:

In the VitalStream app on the tablet:

Usage

Spravato workflow

The UI offers a Spravato "Treatment Intervals" workflow (pre-administration, 40-minute post, and pre-discharge BP intervals) in addition to the standard windowed-averaging summary. This workflow is enabled by inspecting the note's type name and title — if either contains spravato (case-insensitive), the Treatment Intervals panel is shown and the treatment-type dropdown defaults to Spravato.

This is intentionally name-based so customers can opt note types into the Spravato workflow without a code change. To enable it, name the note type (or set the note title) to include spravato — e.g. "Spravato Session", "Spravato Treatment". Note types that should not surface the Spravato workflow must avoid that substring in their display name.

When intervals are assigned and saved via "Save Intervals to Chart", the plugin writes spravato:vitals_data and spravato:bp_pre_admin / spravato:bp_40min_post / spravato:bp_pre_completion metadata on the note, which the Spravato charting app and REMS extractor consume.

Opportunities for enhancement

The UI implements optimistic creation of the averaged Observations. An enhancement to this would be to perform a lookup of the newly created observations to confirm persistence.

Testing

Run the test suite with:

uv run pytest tests/ -v

To run tests for a specific module:

uv run pytest tests/test_vitalstream_ui_api.py -v
uv run pytest tests/test_caretaker_portal_api.py -v
uv run pytest tests/test_vitalstream_ui_launcher.py -v
uv run pytest tests/test_live_observations.py -v
uv run pytest tests/test_util.py -v