03.26.2026

Today’s release includes the following updates:

sdk

  • Today Canvas Medical is releasing the Custom Data SDK feature. Plugins now have two techniques available to store information within the Canvas EMR durably and securely with minimal setup.

    1. Fully normalized relational database schemas via CustomModels, with or without integration to core SDK models.
    2. Zero configuration key/value and document storage via AttributeHubs

    To start experimenting, see the Quick Start guide, and update the canvas CLI tool for latest functionality.

  • Various Note Application improvements: Read more.
    • Adds support for Note Applications to open automatically when a note is viewed, via the new open_by_default() method. Read more.
    • The handle() method is now deprecated in favor of on_open(), which can return a single Effect or a list[Effect]. Existing plugins using handle() will continue to work.
    • Tabs now support a PRIORITY class attribute to control tab ordering — lower values appear first. Read more.
    • The context now includes a note key containing the note’s external UUID.
    • The “Note” tab can now be relabeled via the NOTE_BODY_TAB_LABEL Constance Config setting in the UI to avoid duplication when a charting application is also named “Note”.
    • Tabs have moved from the note body into the sticky note header, keeping them visible while scrolling through long notes.
  • Expanded the plugin sandbox allowed imports to include re.findall, requests.Session, functools.wraps, typing.Callable, typing.ClassVar, typing.Pattern, and django.db.IntegrityError. Read more.

ui

  • The assessed/diagnosed conditions summary that previously appeared in the note header has been removed.
  • Fixed an issue where uploading fillable PDFs with invalid form field references caused a 500 error when previewing, printing, or faxing documents.