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_SEARCHandFAX__RECIPIENT__POST_SEARCH— the fax recipient list.PATIENT_PROFILE__EXTERNAL_CARE_TEAM__PRE_SEARCHandPATIENT_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_active—Falseonce a provider is deactivated; the record is kept, not deleted.is_customer_managed—Truefor 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()andas_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.