08.05.2026

Today’s release includes the following updates:

api

  • When a FHIR request is inserting a command into a specific note by passing that note’s ID in the extension, Canvas now checks that the note is not in a deleted or cancelled state. If the note has been deleted or canceled, you get a clear 422 telling you which note it was, instead of the 502 you would have seen before.

sdk

  • Plugins can now build and maintain your own directory of service providers — the external providers picked when referring a patient, ordering imaging, adding an external care team member, or sending a fax.
    • Three new effects create, update, and deactivate providers: Service Provider effects.
    • Four new events let you customize two contact searches that plugins could not reach before:
      • FAX__RECIPIENT__PRE_SEARCH and FAX__RECIPIENT__POST_SEARCH — the fax recipient list.
      • PATIENT_PROFILE__EXTERNAL_CARE_TEAM__PRE_SEARCH and PATIENT_PROFILE__EXTERNAL_CARE_TEAM__POST_SEARCH — a patient’s external care team.
    • Providers you create are not searched automatically. To offer them in the Refer, Imaging Order, fax, or care team searches, handle that surface’s search event and return them yourself — the guide walks through Offering your own providers alongside the directory.
    • The ServiceProvider data module gains five fields:
      • npi — the provider’s NPI.
      • direct_address — the provider’s Direct (secure messaging) address.
      • is_activeFalse once a provider is deactivated; the record is kept, not deleted.
      • is_customer_managedTrue for providers created through the new effects.
      • science_contact_id — the shared directory contact the provider came from, if any.
    • It also gains two helpers, as_search_result() and as_search_contact(), which shape a provider for the search surfaces so you do not have to build those payloads yourself.
  • The SDK Vitals command now supports the Supplemental Oxygen field added to the Vitals command in the previous release, so plugins can record whether a patient continuously depends on high-flow or low-flow oxygen, or uses oxygen intermittently.