<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://docs.canvasmedical.com/release-notes.xml" rel="self" type="application/atom+xml" /><link href="https://docs.canvasmedical.com/" rel="alternate" type="text/html" /><updated>2026-05-14T13:06:49-07:00</updated><id>https://docs.canvasmedical.com/release-notes.xml</id><title type="html">Canvas Medical EMR Customization - SDK, FHIR API &amp;amp; Guides | Release-notes</title><subtitle>Build powerful EMR customizations and integrations with Canvas Medical’s developer tools. Explore documentation on the Server Side SDK, FHIR API, and implementation guides. Stay updated on the latest product enhancements to streamline healthcare workflows and optimize clinical operations.</subtitle><entry><title type="html">05.14.2026</title><link href="https://docs.canvasmedical.com/release-notes/1-305-0/" rel="alternate" type="text/html" title="05.14.2026" /><published>2026-05-14T00:00:00-07:00</published><updated>2026-05-14T09:10:05-07:00</updated><id>https://docs.canvasmedical.com/release-notes/1-305-0</id><content type="html" xml:base="https://docs.canvasmedical.com/release-notes/1-305-0/"><![CDATA[<p>Today’s release includes the following updates:</p>

<p><span class="tag-bugfix">bugfix</span></p>

<ul>
  <li>Fixed several command-related issues:
    <ul>
      <li>Commands added to a note from a chart button could occasionally disappear from the note body.</li>
      <li>Deleting a command no longer leaves the note out of date until refresh.</li>
      <li>When post-processing events after a command was committed or marked enter-in-error failed, the command appeared committed/EIE in the UI but related records could end up out of sync. The status change is now rolled back if any post-processing records fails.</li>
      <li>Commands could move to “in review” even when required fields were missing or invalid; the move is now blocked until the validation errors are resolved.</li>
      <li>Prescribers who already had an SPI number on file were still being prompted to add one before reviewing an adjust-prescription command.</li>
      <li>Questionnaire comments can be opened on locked or signed notes for multiple-choice fields that accept comments.</li>
      <li>Goals could not be updated when the start date field had been cleared.</li>
    </ul>
  </li>
  <li>The schedule view was not honoring the configured order of providers; providers now appear in their assigned schedule-column order.</li>
  <li>Fixed crashes in the Day and Week views in the schedule that could occur when an appointment was created, edited, or canceled in real time — most commonly right after switching dates or location filters.</li>
  <li>The Letter author dropdown now searches the full staff directory as you type, so customers with more than 350 active staff members can find and select any provider (previously the dropdown showed only the first set of providers).</li>
  <li>CCDA exports for patients without an assigned team lead now return a clear error explaining the missing team lead, instead of a generic server error, so integrations know to correct the patient record rather than retry the export.</li>
  <li>Resolved a source of app-wide slowness during Health Gorilla lab report ingestion that was tying up the database while Canvas waits on it.</li>
  <li>Fixed a bug related to <code class="language-plaintext highlighter-rouge">Timed out after 60s waiting for namespace '&lt;namespace&gt;' to be created by the schema manager</code> errors during plugin install, which would leave the plugin disabled and require a manual re-enable to recover.</li>
</ul>

<p><span class="tag-ui">ui</span></p>

<ul>
  <li>Redesigned the diagnostic imaging requisition: provider name, license, and NPI now appear in a dedicated Ordering Provider block at the top; a medical-necessity certification, an electronically-signed attestation with a timezone-stamped date, and an order-validity statement now appear at the bottom.</li>
</ul>

<p><span class="tag-sdk">sdk</span></p>

<p><strong>Data</strong></p>

<ul>
  <li>Added a <code class="language-plaintext highlighter-rouge">LabTest</code> relationship to <code class="language-plaintext highlighter-rouge">LabValue</code> in the SDK data module, enabling plugins to associate lab values with their corresponding tests. See the <a href="/sdk/data-labs/#labtest">LabTest reference</a> and <a href="/sdk/data-labs/#ordered-vs-result-tests">Ordered vs. result tests</a>.</li>
  <li>Staff member signatures are now accessible via the SDK data module. <a href="/sdk/data-staff/#accessing-the-staff-signature">Read more</a>.</li>
</ul>

<p><strong>Events</strong></p>

<ul>
  <li>Plugins can now respond to a new SDK event, <code class="language-plaintext highlighter-rouge">PATIENT_PAYMENT_PROCESSED</code>, triggered when a patient payment is processed. <a href="/sdk/events/#patient-payments">Read more</a>.</li>
</ul>

<p><strong>Config</strong></p>

<ul>
  <li>Plugins can now read the instance’s configured time zone via <code class="language-plaintext highlighter-rouge">self.environment["INSTALLATION_TIME_ZONE"]</code> (an IANA name like <code class="language-plaintext highlighter-rouge">America/Los_Angeles</code>), enabling accurate local-time rendering in plugin output. <a href="/sdk/handlers/">Read more</a>.</li>
  <li>Added a <code class="language-plaintext highlighter-rouge">--disable</code> flag to <code class="language-plaintext highlighter-rouge">canvas install</code> so plugins can be installed in a disabled state via the CLI (defaults to enabled). <em>(requires Canvas CLI 0.143.0 or newer)</em> <a href="/sdk/canvas_cli/#canvas-install">Read more</a>.</li>
  <li>New <code class="language-plaintext highlighter-rouge">variables</code> schema for plugin configuration declared in <code class="language-plaintext highlighter-rouge">CANVAS_MANIFEST.json</code>. <em>(requires Canvas CLI 0.147.0 or newer)</em>
    <ul>
      <li><strong>Manifest schema:</strong> <code class="language-plaintext highlighter-rouge">CANVAS_MANIFEST.json</code> now accepts a <code class="language-plaintext highlighter-rouge">variables</code> array of <code class="language-plaintext highlighter-rouge">{name, sensitive}</code> objects in place of the flat <code class="language-plaintext highlighter-rouge">secrets</code> string array, distinguishing sensitive secrets (such as API tokens) from non-sensitive configuration values (such as log levels or feature flags). The legacy <code class="language-plaintext highlighter-rouge">secrets</code> field still works but emits a deprecation warning during <code class="language-plaintext highlighter-rouge">canvas validate-manifest</code>, and is internally mapped to <code class="language-plaintext highlighter-rouge">variables</code> entries with <code class="language-plaintext highlighter-rouge">sensitive: false</code>. <a href="/sdk/secrets/">Read more</a>.</li>
      <li><strong>CLI:</strong> A <code class="language-plaintext highlighter-rouge">canvas install --variable KEY=value</code> flag is available alongside <code class="language-plaintext highlighter-rouge">--secret</code> for non-sensitive values. <code class="language-plaintext highlighter-rouge">canvas config list</code> now renders each variable as <code class="language-plaintext highlighter-rouge">[set]</code> or <code class="language-plaintext highlighter-rouge">[not set]</code>, with a <code class="language-plaintext highlighter-rouge">(sensitive)</code> annotation for sensitive variables — values themselves are never displayed. <a href="/sdk/canvas_cli/#canvas-install">Read more</a>.</li>
      <li><strong>Settings UI:</strong> Sensitive variables display as <code class="language-plaintext highlighter-rouge">SENSITIVE</code> in Settings — leave the field blank to keep the existing value, or submit a new value to overwrite. Non-sensitive variables remain editable inline with their current value visible.</li>
      <li><strong>Plugin runtime:</strong> Handler code reading values via <code class="language-plaintext highlighter-rouge">self.secrets["KEY"]</code> is unchanged — sensitive and non-sensitive values land in the same dictionary. Migrating a plugin from <code class="language-plaintext highlighter-rouge">secrets:</code> to <code class="language-plaintext highlighter-rouge">variables:</code> requires no handler code changes.</li>
      <li>⚠️ <strong>Migration caveat:</strong> Existing plugin secrets and any values configured via the legacy <code class="language-plaintext highlighter-rouge">secrets:</code> array default to non-sensitive in this release — they will appear in plain text in the Admin UI until the owning plugin is migrated to the <code class="language-plaintext highlighter-rouge">variables</code> schema with <code class="language-plaintext highlighter-rouge">sensitive: true</code> and re-installed.</li>
    </ul>
  </li>
</ul>]]></content><author><name></name></author><category term="bugfix" /><category term="ui" /><category term="sdk" /><summary type="html"><![CDATA[Today’s release includes the following updates:]]></summary></entry><entry><title type="html">05.11.2026</title><link href="https://docs.canvasmedical.com/release-notes/1-304-0/" rel="alternate" type="text/html" title="05.11.2026" /><published>2026-05-11T00:00:00-07:00</published><updated>2026-05-11T09:13:36-07:00</updated><id>https://docs.canvasmedical.com/release-notes/1-304-0</id><content type="html" xml:base="https://docs.canvasmedical.com/release-notes/1-304-0/"><![CDATA[<p>Today’s release includes the following updates:</p>

<p><span class="tag-bugfix">bugfix</span></p>

<ul>
  <li>Fixed an issue where SDK commands (prescribe, refill, adjust prescription) could be moved to “in review” even when schema validation errors were present.</li>
  <li>Fixed a bug preventing CCDA documents from being ingested when a section uses an OID that differs from what Canvas considers standard for that section.</li>
  <li>Fixed printing of plugin-defined additional fields on command printouts so that all configured fields now appear correctly in the printed output.</li>
</ul>

<p><span class="tag-sdk">sdk</span></p>

<ul>
  <li>The <a href="/sdk/data-claim/#claimqueue">ClaimQueue</a> SDK data model now exposes the <code class="language-plaintext highlighter-rouge">id</code> field, enabling plugins to look up claim queues using the queue IDs provided in <a href="/sdk/events/#claims">CLAIM_QUEUE_MOVED</a> event context.</li>
  <li>Plugins can now make outbound HTTP requests using the new HTTPRequest effect, with support for both synchronous and asynchronous execution. <a href="/sdk/effect-http-request/">Read more</a>.</li>
  <li>The event <code class="language-plaintext highlighter-rouge">DOCUMENT_REVIEWED</code> now kicks off when the Referral and Uncategorized Document review commands are committed, enabling workflows that respond to these document types. <a href="/sdk/events/#clinical-documents">Read more</a>.</li>
</ul>]]></content><author><name></name></author><category term="bugfix" /><category term="sdk" /><summary type="html"><![CDATA[Today’s release includes the following updates:]]></summary></entry><entry><title type="html">04.30.2026</title><link href="https://docs.canvasmedical.com/release-notes/1-303-0/" rel="alternate" type="text/html" title="04.30.2026" /><published>2026-04-30T00:00:00-07:00</published><updated>2026-04-29T11:55:19-07:00</updated><id>https://docs.canvasmedical.com/release-notes/1-303-0</id><content type="html" xml:base="https://docs.canvasmedical.com/release-notes/1-303-0/"><![CDATA[<p>Today’s release includes the following updates:
<span class="tag-bugfix">bugfix</span></p>

<ul>
  <li>Questionnaire commands can now be originated with pre-filled responses — when creating a questionnaire command via a plugin, responses set before calling <code class="language-plaintext highlighter-rouge">.originate()</code> are applied immediately on creation, removing the need for a separate <code class="language-plaintext highlighter-rouge">.edit()</code> call. <a href="/sdk/commands/#questionnaire">Read more</a>.</li>
  <li>Fixed note headers not sticking to the top of the page when scrolling on the patient chart.</li>
</ul>

<p><span class="tag-sdk">sdk</span></p>

<ul>
  <li>Plugins can now use delay/async functionality with SDK effects, enabling deferred or asynchronous execution of effect handlers. <a href="/sdk/effects/#async-execution">Read more</a>.</li>
  <li>Plugins can now define and attach custom fields to commands/sdk/commands/, allowing practices to capture additional structured data beyond the built-in command fields. <a href="/sdk/command-metadata-create-form-effect/">Read more</a>.</li>
</ul>]]></content><author><name></name></author><category term="bugfix" /><category term="sdk" /><summary type="html"><![CDATA[Today’s release includes the following updates: bugfix]]></summary></entry><entry><title type="html">04.28.2026</title><link href="https://docs.canvasmedical.com/release-notes/1-302-0/" rel="alternate" type="text/html" title="04.28.2026" /><published>2026-04-28T00:00:00-07:00</published><updated>2026-04-27T09:59:07-07:00</updated><id>https://docs.canvasmedical.com/release-notes/1-302-0</id><content type="html" xml:base="https://docs.canvasmedical.com/release-notes/1-302-0/"><![CDATA[<p>Today’s release includes the following updates:
<span class="tag-bugfix">bugfix</span></p>

<ul>
  <li>Fixed a bug that showed irrelevant refill requests when a staff member is not on any team but the “Me or My Teams” filter is selected.</li>
  <li>Fixed the After Visit Summary not showing the Diagnosed section when it was the only content under Today’s Visit.</li>
</ul>

<p><span class="tag-api">api</span></p>

<ul>
  <li>Added user-level and system-level <a href="/api/customer-authentication/#scopes">scopes</a> for FHIR Questionnaire and QuestionnaireResponse as options when creating credentials.</li>
</ul>

<p><span class="tag-sdk">sdk</span></p>

<ul>
  <li>Added <code class="language-plaintext highlighter-rouge">LabPartnerTestQuestion</code> and <code class="language-plaintext highlighter-rouge">LabPartnerTestQuestionChoice</code> to the SDK data module for querying ask-at-order-entry (AOE) questions and choices on lab tests. <a href="/sdk/data-lab-partner-and-test">Read more</a>.</li>
  <li>A mobile-friendly Canvas interface is now available at <code class="language-plaintext highlighter-rouge">https://&lt;instance-name&gt;.canvasmedical.com/companion/</code>. This is a space for mobile-optimized plugins to be launched from. Companion applications can be scoped to a note, a patient, or global. See <a href="/sdk/companion/">Provider Companion</a> for more details.</li>
</ul>]]></content><author><name></name></author><category term="bugfix" /><category term="api" /><category term="sdk" /><summary type="html"><![CDATA[Today’s release includes the following updates: bugfix]]></summary></entry><entry><title type="html">04.24.2026</title><link href="https://docs.canvasmedical.com/release-notes/1-301-0/" rel="alternate" type="text/html" title="04.24.2026" /><published>2026-04-24T00:00:00-07:00</published><updated>2026-04-24T02:24:53-07:00</updated><id>https://docs.canvasmedical.com/release-notes/1-301-0</id><content type="html" xml:base="https://docs.canvasmedical.com/release-notes/1-301-0/"><![CDATA[<p>Today’s release includes the following updates:
<span class="tag-bugfix">bugfix</span></p>

<ul>
  <li>Fixed a race condition where concurrent updates to the same command could silently overwrite each other, potentially causing data loss during rapid edits.</li>
</ul>

<p><span class="tag-sdk">sdk</span></p>

<ul>
  <li>Plugins can now add custom sections to the <a href="/sdk/layout-effect/#patient-summary">patient chart summary</a>, enabling practices to surface domain-specific data alongside the built-in clinical sections. <a href="/sdk/patient-chart-summary-custom-section-handler/">Read more</a>.</li>
</ul>

<p><span class="tag-ui">ui</span></p>

<ul>
  <li>[Gradual roll out] Improved the patient chart timeline to enforce that only one note can be open at a time, preventing conflicting edits across multiple open notes.</li>
  <li>Improved page load performance for practices with large staff rosters. Pages that previously slowed down with hundreds of staff members now load significantly faster.</li>
</ul>]]></content><author><name></name></author><category term="bugfix" /><category term="sdk" /><category term="ui" /><summary type="html"><![CDATA[Today’s release includes the following updates: bugfix]]></summary></entry><entry><title type="html">04.21.2026</title><link href="https://docs.canvasmedical.com/release-notes/1-300-0/" rel="alternate" type="text/html" title="04.21.2026" /><published>2026-04-21T00:00:00-07:00</published><updated>2026-04-22T01:53:06-07:00</updated><id>https://docs.canvasmedical.com/release-notes/1-300-0</id><content type="html" xml:base="https://docs.canvasmedical.com/release-notes/1-300-0/"><![CDATA[<p>Today’s release includes the following updates:</p>

<p><span class="tag-bugfix">bugfix</span></p>

<ul>
  <li>Fixed a bug where FHIR Encounter resources did not have <a href="/api/provenance/">Provenance</a> records created for them.</li>
  <li>Fixed Structured Assessment commands using expired ICD-10 descriptions when creating billing line item diagnoses. The lookup now filters by the note’s date of service, ensuring the current ICD-10-CM text is used.</li>
</ul>

<p><span class="tag-sdk">sdk</span></p>

<ul>
  <li>Added a <code class="language-plaintext highlighter-rouge">commit</code> parameter to the <a href="/sdk/commands/#originate"><code class="language-plaintext highlighter-rouge">originate()</code></a> command method, allowing plugins to originate and commit a command in a single effect without manually managing UUIDs.</li>
  <li>Added a new <code class="language-plaintext highlighter-rouge">CLAIM_QUEUE_MOVED</code> SDK event, which emits when a claim moves to a queue. <a href="/sdk/events/#claims">Read more</a>.</li>
  <li>Added the rendering provider address fields (<code class="language-plaintext highlighter-rouge">addr1</code>, <code class="language-plaintext highlighter-rouge">addr2</code>, <code class="language-plaintext highlighter-rouge">city</code>, <code class="language-plaintext highlighter-rouge">state</code>, <code class="language-plaintext highlighter-rouge">zip</code>) to the <a href="/sdk/data-claim/#claimprovider">ClaimProvider</a> data model and the <a href="/sdk/effect-claims/#claimprovider">claim effect</a> payload.</li>
  <li>The patient chart header now has room to render more <a href="/sdk/handlers-action-buttons/">action buttons</a> at once, so plugins using the <code class="language-plaintext highlighter-rouge">CHART_PATIENT_HEADER</code> button location will display reliably even when many are registered.</li>
  <li>The <a href="/sdk/effect-command-metadata/"><code class="language-plaintext highlighter-rouge">upsert_metadata</code></a> method on commands can now be chained with <code class="language-plaintext highlighter-rouge">originate()</code> in the same handler response, allowing metadata to be attached to commands at creation time. <a href="/sdk/effect-command-metadata/#example-chaining-with-originate">Read more</a>.</li>
  <li>Granted the <code class="language-plaintext highlighter-rouge">reporting</code> database user read access to custom data tables, enabling reporting queries against custom data via read replicas.</li>
  <li>Expanded the <a href="/sdk/sandboxing-and-allowed-imports/">plugin sandbox allow list</a> with many additions across <code class="language-plaintext highlighter-rouge">django.db.models</code>, several standard library modules, and new modules including <code class="language-plaintext highlighter-rouge">html</code>, <code class="language-plaintext highlighter-rouge">traceback</code>, <code class="language-plaintext highlighter-rouge">django.db.transaction</code>, <code class="language-plaintext highlighter-rouge">django.db.models.functions</code>, and <code class="language-plaintext highlighter-rouge">django.contrib.postgres.indexes</code>. A new <code class="language-plaintext highlighter-rouge">extract_exc_frames()</code> builtin is also available for safely extracting frame info from exception tracebacks.</li>
  <li>We are deprecating the <code class="language-plaintext highlighter-rouge">requests</code> module in the plugin sandbox. Plugins should use the Canvas SDK’s <a href="/sdk/utils/#making-requests-with-http"><code class="language-plaintext highlighter-rouge">Http</code> helper</a> instead.</li>
</ul>

<p><span class="tag-api">api</span></p>

<ul>
  <li>FHIR <a href="/api/questionnaire/">Questionnaire</a> read and search endpoints now support nested <code class="language-plaintext highlighter-rouge">item</code> objects under the <code class="language-plaintext highlighter-rouge">item</code> attribute.</li>
  <li>FHIR <a href="/api/questionnaireresponse/">QuestionnaireResponse</a> read and search endpoints now support nested <code class="language-plaintext highlighter-rouge">item</code> objects under both the <code class="language-plaintext highlighter-rouge">item</code> and <code class="language-plaintext highlighter-rouge">answer</code> attributes, population of the <code class="language-plaintext highlighter-rouge">identifier</code> attribute and <code class="language-plaintext highlighter-rouge">questionnaireDisplay</code> extension, a <code class="language-plaintext highlighter-rouge">url</code> extension for responses to non-FHIR questionnaires, and <code class="language-plaintext highlighter-rouge">valueDecimal</code> answers.</li>
  <li>FHIR <a href="/api/questionnaireresponse/">QuestionnaireResponse</a> create and update endpoints now support creating resources that respond to non-FHIR questionnaires (i.e., a questionnaire at an external URL rather than a FHIR Questionnaire resource).</li>
</ul>]]></content><author><name></name></author><category term="bugfix" /><category term="api" /><category term="sdk" /><summary type="html"><![CDATA[Today’s release includes the following updates:]]></summary></entry><entry><title type="html">04.16.2026</title><link href="https://docs.canvasmedical.com/release-notes/1-299-0/" rel="alternate" type="text/html" title="04.16.2026" /><published>2026-04-16T00:00:00-07:00</published><updated>2026-04-15T10:01:37-07:00</updated><id>https://docs.canvasmedical.com/release-notes/1-299-0</id><content type="html" xml:base="https://docs.canvasmedical.com/release-notes/1-299-0/"><![CDATA[<p>Today’s release includes the following updates:</p>

<p><span class="tag-bugfix">bugfix</span></p>

<ul>
  <li>Improved the accuracy and resiliency of cron scheduling for plugins in the Canvas SDK. <a href="https://docs.canvasmedical.com/sdk/handlers-crontask/">Cron tasks</a> should now fire much closer to the minute boundary, and cases where tasks scheduled every minute could rarely fire twice or not at all have been addressed.</li>
  <li>Fixed an issue where original claims were incorrectly sent with a prior payer claim reference number, which could cause the clearinghouse to misinterpret them as resubmissions.</li>
  <li>Fixed an issue where the DEA schedule label for a medication would disappear from the UI once a pharmacy was selected if the DrFirst lookup was unavailable. The system now falls back to the FDB national schedule when the state-specific lookup cannot be completed.</li>
  <li>Fixed a race condition where saving data on a patient chart (e.g., committing a command or updating vitals) could briefly show stale values or fail to refresh until the page was manually reloaded.</li>
  <li>Fixed an issue where enabling or disabling plugins with multiple registered commands via the <a href="https://docs.canvasmedical.com/sdk/canvas-cli/">Canvas CLI</a> would fail. Re-enabling a plugin via CLI also now correctly restores its command availability.</li>
  <li>The patient search results dropdown was not scrollable, making it difficult to navigate when there were many results (for a common last name, for example). This has been addressed by making the results scrollable.</li>
</ul>]]></content><author><name></name></author><category term="bugfix" /><summary type="html"><![CDATA[Today’s release includes the following updates:]]></summary></entry><entry><title type="html">04.14.2026</title><link href="https://docs.canvasmedical.com/release-notes/1-298-0/" rel="alternate" type="text/html" title="04.14.2026" /><published>2026-04-14T00:00:00-07:00</published><updated>2026-04-13T10:07:53-07:00</updated><id>https://docs.canvasmedical.com/release-notes/1-298-0</id><content type="html" xml:base="https://docs.canvasmedical.com/release-notes/1-298-0/"><![CDATA[<p>Today’s release includes the following updates:</p>

<p><span class="tag-bugfix">bugfix</span></p>

<ul>
  <li>Fixed duplicate ServiceProvider records being created every time a Refer, Imaging Order, External Care Team Member, or Inbound Fax was saved. ServiceProviders are now deduplicated by science contact ID (when available) or by name, specialty, and address.</li>
  <li>Fixed ServiceProviders selected via Refer, Imaging Order, or inbound fax not appearing in FHIR <code class="language-plaintext highlighter-rouge">/Organization</code> search results. All ServiceProviders now have an associated OrganizationalEntity.</li>
  <li>Fixed issue where external care team members were not searchable by name in FHIR <a href="/api/organization/">Organization</a>.</li>
  <li>Expands the length of the QuestionnaireResult.code field to 100 characters.</li>
</ul>

<p><span class="tag-api">api</span></p>

<ul>
  <li>FHIR <a href="/api/organization/">Organization</a> search now supports the <code class="language-plaintext highlighter-rouge">type</code> parameter, mapping to the <code class="language-plaintext highlighter-rouge">http://hl7.org/fhir/organization-type</code> value set: <code class="language-plaintext highlighter-rouge">prov</code> (Healthcare Provider) for ServiceProviders and Business Entities, <code class="language-plaintext highlighter-rouge">pay</code> (Payer) for Transactors, and <code class="language-plaintext highlighter-rouge">other</code> (Other) for Vendors.</li>
</ul>

<p><span class="tag-sdk">sdk</span></p>

<ul>
  <li>Adds an optional description field to <a href="/sdk/commands/#clinicalquantity"><code class="language-plaintext highlighter-rouge">ClinicalQuantity</code></a> to allow narrowing the type to dispense when multiple clinical quantity options are available for the same NDC and qualifier code.</li>
</ul>]]></content><author><name></name></author><category term="bugfix" /><category term="api" /><category term="sdk" /><summary type="html"><![CDATA[Today’s release includes the following updates:]]></summary></entry><entry><title type="html">04.10.2026</title><link href="https://docs.canvasmedical.com/release-notes/1-297-0/" rel="alternate" type="text/html" title="04.10.2026" /><published>2026-04-10T00:00:00-07:00</published><updated>2026-04-09T16:36:06-07:00</updated><id>https://docs.canvasmedical.com/release-notes/1-297-0</id><content type="html" xml:base="https://docs.canvasmedical.com/release-notes/1-297-0/"><![CDATA[<p>Today’s release includes the following updates:</p>

<p><span class="tag-bugfix">bugfix</span></p>

<ul>
  <li>Added the <code class="language-plaintext highlighter-rouge">FAX_EVENT_HISTORY</code> item to the <a href="/sdk/layout-effect/#patient-note-header-dropdown-configuration"><code class="language-plaintext highlighter-rouge">PatientNoteHeaderDropdownConfiguration</code></a> effect, allowing plugins to include fax event history in the note header dropdown menu.</li>
</ul>

<p><span class="tag-sdk">sdk</span></p>

<ul>
  <li>The <a href="/sdk/commands/#imagingorder"><code class="language-plaintext highlighter-rouge">ImagingOrderCommand</code></a> and <a href="/sdk/commands/#refer"><code class="language-plaintext highlighter-rouge">ReferCommand</code></a> now support <a href="/sdk/commands/#delegate"><code class="language-plaintext highlighter-rouge">delegate()</code></a> and <a href="/sdk/commands/#sign"><code class="language-plaintext highlighter-rouge">sign()</code></a> methods, enabling plugins to programmatically delegate and sign these commands as part of automated workflows.</li>
</ul>]]></content><author><name></name></author><category term="bugfix" /><category term="sdk" /><summary type="html"><![CDATA[Today’s release includes the following updates:]]></summary></entry><entry><title type="html">04.09.2026</title><link href="https://docs.canvasmedical.com/release-notes/1-296-0/" rel="alternate" type="text/html" title="04.09.2026" /><published>2026-04-09T00:00:00-07:00</published><updated>2026-04-08T11:53:48-07:00</updated><id>https://docs.canvasmedical.com/release-notes/1-296-0</id><content type="html" xml:base="https://docs.canvasmedical.com/release-notes/1-296-0/"><![CDATA[<p>Today’s release includes the following updates:</p>

<p><span class="tag-bugfix">bugfix</span></p>

<ul>
  <li>The practice location “full name” field is now sent in the PracticeLocation.BusinessName field for electronic prescriptions.</li>
  <li>Fixed an issue where fax submission failed with an error when the cover sheet subject, comments, or recipient name contained special characters such as <code class="language-plaintext highlighter-rouge">#</code>, <code class="language-plaintext highlighter-rouge">&amp;</code>, <code class="language-plaintext highlighter-rouge">=</code>, or non-ASCII characters. These fields now properly handle all characters.</li>
  <li>The Axes “AccessLog” settings view could fail to load due to the volume of records it contained. This has been fixed.</li>
</ul>

<p><span class="tag-sdk">sdk</span></p>

<ul>
  <li>A new <a href="/sdk/layout-effect/#patient-note-header-dropdown-configuration"><code class="language-plaintext highlighter-rouge">PatientNoteHeaderDropdownConfiguration</code></a> effect allows plugins to configure which items appear in the note header dropdown menu.</li>
</ul>]]></content><author><name></name></author><category term="bugfix" /><category term="sdk" /><summary type="html"><![CDATA[Today’s release includes the following updates:]]></summary></entry><entry><title type="html">04.07.2026</title><link href="https://docs.canvasmedical.com/release-notes/1-295-0/" rel="alternate" type="text/html" title="04.07.2026" /><published>2026-04-07T00:00:00-07:00</published><updated>2026-04-06T18:30:47-07:00</updated><id>https://docs.canvasmedical.com/release-notes/1-295-0</id><content type="html" xml:base="https://docs.canvasmedical.com/release-notes/1-295-0/"><![CDATA[<p>Today’s release includes the following updates:</p>

<p><span class="tag-bugfix">bugfix</span></p>

<ul>
  <li>Ensures “Interaction checks cannot be performed for free text compound medications” now displays when initiating a Refill or Adjust Prescription for a compound medication from the chart medication list.</li>
</ul>

<p><span class="tag-sdk">sdk</span></p>

<ul>
  <li>Adds 6 new SDK <a href="/sdk/events/#clinical-documents">events</a> for the Data Integration document lifecycle: <code class="language-plaintext highlighter-rouge">DOCUMENT_RECEIVED</code>, <code class="language-plaintext highlighter-rouge">DOCUMENT_LINKED_TO_PATIENT</code>, <code class="language-plaintext highlighter-rouge">DOCUMENT_CATEGORIZED</code>, <code class="language-plaintext highlighter-rouge">DOCUMENT_REVIEWER_ASSIGNED</code>, <code class="language-plaintext highlighter-rouge">DOCUMENT_REVIEWED</code>, and <code class="language-plaintext highlighter-rouge">DOCUMENT_DELETED</code>. Plugins can now react to documents arriving, being linked to patients, categorized, assigned to reviewers, being reviewed, or deleted.</li>
  <li>Adds a new <a href="/sdk/clients-canvas-fhir/"><code class="language-plaintext highlighter-rouge">CanvasFhir</code></a> client for interacting with the Canvas FHIR API from within plugins. Supports <code class="language-plaintext highlighter-rouge">create</code>, <code class="language-plaintext highlighter-rouge">read</code>, <code class="language-plaintext highlighter-rouge">update</code>, and <code class="language-plaintext highlighter-rouge">search</code> operations with automatic credential management and caching. Requires <code class="language-plaintext highlighter-rouge">client_id</code> and <code class="language-plaintext highlighter-rouge">client_secret</code> to be configured in plugin secrets.</li>
</ul>]]></content><author><name></name></author><category term="bugfix" /><category term="sdk" /><summary type="html"><![CDATA[Today’s release includes the following updates:]]></summary></entry><entry><title type="html">04.02.2026</title><link href="https://docs.canvasmedical.com/release-notes/1-294-0/" rel="alternate" type="text/html" title="04.02.2026" /><published>2026-04-02T00:00:00-07:00</published><updated>2026-04-01T11:33:15-07:00</updated><id>https://docs.canvasmedical.com/release-notes/1-294-0</id><content type="html" xml:base="https://docs.canvasmedical.com/release-notes/1-294-0/"><![CDATA[<p>Today’s release includes the following updates:</p>

<p><span class="tag-sdk">sdk</span></p>

<ul>
  <li>Adds a new <code class="language-plaintext highlighter-rouge">NOTE_HEADER_DROPDOWN</code> <a href="/sdk/handlers-action-buttons/">action button</a> placement, allowing plugins to add custom entries to the note header triple-dot menu.</li>
  <li>Adds <a href="/sdk/data-claim/#claimlineitemmodifier">ClaimLineItemModifier</a> to the SDK data module, enabling read access to modifiers added to claim line items in revenue. Accessible via <code class="language-plaintext highlighter-rouge">claim_line_item.modifiers.all()</code> on a <a href="/sdk/data-claim/#claimlineitem">ClaimLineItem</a>.</li>
  <li>Adds <a href="/sdk/events/#event-actor"><code class="language-plaintext highlighter-rouge">actor</code></a> to <a href="/sdk/events/#notes"><code class="language-plaintext highlighter-rouge">NOTE_STATE_CHANGE_EVENT_PRE_CREATE</code></a> events, allowing plugins to identify which user initiated a note state change (e.g., lock, push charges) and conditionally block it based on role.</li>
  <li><a href="/sdk/handlers-action-buttons/">Action buttons</a> with the <code class="language-plaintext highlighter-rouge">CHART_PATIENT_HEADER</code> location now appear on both the chart and profile pages. The <code class="language-plaintext highlighter-rouge">PROFILE_PATIENT_HEADER</code> location has been removed — plugins using it should switch to <code class="language-plaintext highlighter-rouge">CHART_PATIENT_HEADER</code>.</li>
  <li>The <a href="/sdk/canvas_cli/#update-notifications">Canvas CLI</a> now notifies you when a newer version is available on PyPI. This can be disabled with <code class="language-plaintext highlighter-rouge">CANVAS_NO_UPDATE_CHECK=1</code>.</li>
</ul>

<p><span class="tag-ui">ui</span></p>

<ul>
  <li>The note header triple-dot menu now includes plugin-provided action buttons below the existing options.</li>
  <li>Fixed the note header triple-dot menu being cut off on small screens, making some options inaccessible.</li>
</ul>]]></content><author><name></name></author><category term="sdk" /><category term="ui" /><summary type="html"><![CDATA[Today’s release includes the following updates:]]></summary></entry><entry><title type="html">04.01.2026</title><link href="https://docs.canvasmedical.com/release-notes/1-293-0/" rel="alternate" type="text/html" title="04.01.2026" /><published>2026-04-01T00:00:00-07:00</published><updated>2026-04-01T00:55:16-07:00</updated><id>https://docs.canvasmedical.com/release-notes/1-293-0</id><content type="html" xml:base="https://docs.canvasmedical.com/release-notes/1-293-0/"><![CDATA[<p>Today’s release includes the following updates:</p>

<p><span class="tag-bugfix">bugfix</span></p>

<ul>
  <li>Fixed an error when attaching documents with long labels (over 500 characters) to a Letter. Document labels that include comments are now truncated to fit the database field limit.</li>
  <li>Fixed an error in real-time command update notifications that occurred when a task linked to a command was closed or completed. This prevented the UI from receiving the update and could require a page refresh to see the latest command state.</li>
  <li>Fixed a GraphQL resolver error (<code class="language-plaintext highlighter-rouge">'Command' object is not subscriptable</code>) that could cause UI errors during command operations.</li>
  <li>Fixed an error where note subscription updates could fail for certain note types, requiring a page refresh to see the latest state.</li>
  <li>Fixed an error where custom command lifecycle events (origination, commit) could fail with a <code class="language-plaintext highlighter-rouge">LookupError</code> for standalone command schema keys.</li>
</ul>

<p><span class="tag-sdk">sdk</span></p>

<ul>
  <li>Adds plugin integration to validate appointment scheduling. Plugins responding to the <a href="/sdk/events/#appointments">APPOINTMENT__FORM__UPDATED</a> event can return an <a href="/sdk/effect-event-validation-error/">EventValidationError</a> effect to disable the Book button and display validation errors as a tooltip.</li>
  <li>Standardizes key and value attributes for all metadata models (<a href="/sdk/effect-claims/">ClaimMetadata</a>, <a href="/sdk/effect-appointment-metadata/">AppointmentMetadata</a>, <a href="/sdk/effect-task-metadata/">TaskMetadata</a>, <a href="/sdk/effect-patient-metadata/">PatientMetadata</a>, <a href="/sdk/effect-notes/">NoteMetadata</a>, <a href="/sdk/effect-command-metadata/">CommandMetadata</a>), including an increase in allowed key length to 256 characters.</li>
  <li>Adds the ability for the Canvas SDK to convert from <a href="/sdk/data-coverage/">Coverage</a> to <a href="/sdk/data-snapshot/">Snapshot</a> and vice-versa.</li>
</ul>

<p><span class="tag-ui">ui</span></p>
<ul>
  <li>Adds the option to mark a document in review as Unassigned in both the document review panel and patient chart documents.</li>
  <li>Prevents sending Lab Order to Health Gorilla unless your patient has a phone number configured.</li>
  <li>Several setting pages (Patient, Role Group, Task, Transactor) could cause excessive memory consumption under heavy use. These pages now load related records on demand via search, resulting in more stable memory usage.</li>
</ul>]]></content><author><name></name></author><category term="bugfix" /><category term="sdk" /><category term="ui" /><summary type="html"><![CDATA[Today’s release includes the following updates:]]></summary></entry><entry><title type="html">03.26.2026</title><link href="https://docs.canvasmedical.com/release-notes/1-292-0/" rel="alternate" type="text/html" title="03.26.2026" /><published>2026-03-26T00:00:00-07:00</published><updated>2026-03-27T12:38:31-07:00</updated><id>https://docs.canvasmedical.com/release-notes/1-292-0</id><content type="html" xml:base="https://docs.canvasmedical.com/release-notes/1-292-0/"><![CDATA[<p>Today’s release includes the following updates:</p>

<p><span class="tag-sdk">sdk</span></p>

<ul>
  <li>
    <p>Today Canvas Medical is releasing the <a href="/sdk/custom-data/">Custom Data</a> SDK feature.
Plugins now have two techniques available to store information within the Canvas EMR durably and securely with minimal setup.</p>

    <ol>
      <li>Fully normalized relational database schemas via <a href="/sdk/custom-data-custom-models/">CustomModels</a>, with or without integration to core SDK models.</li>
      <li>Zero configuration key/value and document storage via <a href="/sdk/custom-data-attribute-hubs/">AttributeHubs</a></li>
    </ol>

    <p>To start experimenting, see the <a href="/sdk/custom-data-quick-start/">Quick Start</a> guide, and update the <code class="language-plaintext highlighter-rouge">canvas</code> CLI tool for latest functionality.</p>
  </li>
  <li>Various Note Application improvements: <a href="/sdk/handlers-applications#note-applications">Read more.</a>
    <ul>
      <li>Adds support for Note Applications to open automatically when a note is viewed, via the new <code class="language-plaintext highlighter-rouge">open_by_default()</code> method. <a href="/sdk/handlers-applications#opening-by-default">Read more.</a></li>
      <li>The <code class="language-plaintext highlighter-rouge">handle()</code> method is now deprecated in favor of <code class="language-plaintext highlighter-rouge">on_open()</code>, which can return a single <code class="language-plaintext highlighter-rouge">Effect</code> or a <code class="language-plaintext highlighter-rouge">list[Effect]</code>. Existing plugins using <code class="language-plaintext highlighter-rouge">handle()</code> will continue to work.</li>
      <li>Tabs now support a <code class="language-plaintext highlighter-rouge">PRIORITY</code> class attribute to control tab ordering — lower values appear first. <a href="/sdk/handlers-applications#tab-ordering">Read more.</a></li>
      <li>The context now includes a <code class="language-plaintext highlighter-rouge">note</code> key containing the note’s external UUID.</li>
      <li>The “Note” tab can now be relabeled via the <code class="language-plaintext highlighter-rouge">NOTE_BODY_TAB_LABEL</code> Constance Config setting in the UI to avoid duplication when a charting application is also named “Note”.</li>
      <li>Tabs have moved from the note body into the sticky note header, keeping them visible while scrolling through long notes.</li>
    </ul>
  </li>
  <li>Expanded the plugin sandbox allowed imports to include <code class="language-plaintext highlighter-rouge">re.findall</code>, <code class="language-plaintext highlighter-rouge">requests.Session</code>, <code class="language-plaintext highlighter-rouge">functools.wraps</code>, <code class="language-plaintext highlighter-rouge">typing.Callable</code>, <code class="language-plaintext highlighter-rouge">typing.ClassVar</code>, <code class="language-plaintext highlighter-rouge">typing.Pattern</code>, and <code class="language-plaintext highlighter-rouge">django.db.IntegrityError</code>. <a href="/sdk/sandboxing-and-allowed-imports">Read more.</a></li>
</ul>

<p><span class="tag-ui">ui</span></p>

<ul>
  <li>The assessed/diagnosed conditions summary that previously appeared in the note header has been removed.</li>
  <li>Fixed an issue where uploading fillable PDFs with invalid form field references caused a 500 error when previewing, printing, or faxing documents.</li>
</ul>]]></content><author><name></name></author><category term="sdk" /><category term="ui" /><summary type="html"><![CDATA[Today’s release includes the following updates:]]></summary></entry><entry><title type="html">03.24.2026</title><link href="https://docs.canvasmedical.com/release-notes/1-291-0/" rel="alternate" type="text/html" title="03.24.2026" /><published>2026-03-24T00:00:00-07:00</published><updated>2026-03-24T09:46:21-07:00</updated><id>https://docs.canvasmedical.com/release-notes/1-291-0</id><content type="html" xml:base="https://docs.canvasmedical.com/release-notes/1-291-0/"><![CDATA[<p>Today’s release includes the following updates:</p>

<p><span class="tag-bugfix">bugfix</span></p>

<ul>
  <li>Fixed an issue where the Refer command would fail to commit when attached documents had labels exceeding 500 characters.</li>
  <li>For customers using Candid without Claim.MD, the payer list will now update on a weekly basis as expected.</li>
  <li>Fixed intermittent “Save Failed” errors during charting caused by a race condition between command commit and note autosave. When committing or entering-in-error commands that update the note, a checksum mismatch could cause 409 conflicts resulting in “Save Failed” errors. This also resolves the note body flash and scroll position jump that occurred during these actions.</li>
  <li>Fixed an issue where protocol recommendations without associated commands could cause the Protocols tab to crash instead of rendering correctly.</li>
  <li>Fixed a bug where the DiagnosticReport and Observations created from a Lab Report were missing LOINC codes.</li>
  <li>C-CDA files sent via direct messaging (DataMotion integration) that contain non-ASCII characters are now handled correctly.</li>
  <li>Fixed an error that could prevent EPCS signing for refill prescriptions.</li>
  <li>Concurrent write requests to the CareTeam FHIR endpoint could result in a 500 error. This has been resolved.</li>
</ul>

<p><span class="tag-sdk">sdk</span></p>

<ul>
  <li>Adds <code class="language-plaintext highlighter-rouge">note</code> foreign key to the <a href="/sdk/data-labs/#labreview">LabReview</a>, <a href="/sdk/data-referral/#referralreview">ReferralReview</a>, and <a href="/sdk/data-imaging/#imagingreview">ImagingReview</a> SDK data models, allowing plugins to access the note associated with a review. This also allows plugins to navigate from a <a href="/sdk/data-note/#note">Note</a> to its associated review commands.</li>
  <li>Adds a new ButtonLocation option for plugin action buttons: CHART_PATIENT_HEADER, allowing plugins to display action buttons on the
patient header. <a href="/sdk/handlers-action-buttons/#button-locations">Read more.</a></li>
  <li>Action buttons now support custom styling via BUTTON_TEXT_COLOR and BUTTON_BACKGROUND_COLOR class constants. <a href="/sdk/handlers-action-buttons/#optional-constants">Read more.</a></li>
  <li>Adds SDK support for patient groups, enabling plugins to manage group membership programmatically:
    <ul>
      <li>New <code class="language-plaintext highlighter-rouge">PatientGroup</code> and <code class="language-plaintext highlighter-rouge">PatientGroupMember</code> data models for querying groups and their members. <a href="/sdk/data-patient-group/">Read more.</a></li>
      <li>New <a href="/sdk/effect-patient-group/">PatientGroupEffect</a> with <code class="language-plaintext highlighter-rouge">add_member()</code> and <code class="language-plaintext highlighter-rouge">deactivate_member()</code> methods for managing group membership.</li>
      <li>New <a href="/sdk/events/#patient-group">events</a>: <code class="language-plaintext highlighter-rouge">PATIENT_GROUP_CREATED</code>, <code class="language-plaintext highlighter-rouge">PATIENT_GROUP_UPDATED</code>, <code class="language-plaintext highlighter-rouge">PATIENT_GROUP_MEMBERSHIP_CREATED</code>, <code class="language-plaintext highlighter-rouge">PATIENT_GROUP_MEMBERSHIP_UPDATED</code>, and <code class="language-plaintext highlighter-rouge">PATIENT_GROUP_MEMBERSHIP_DELETED</code>.</li>
      <li>Patient groups are also accessible from a <a href="/sdk/data-patient/#patient">Patient</a> object via <code class="language-plaintext highlighter-rouge">patient.patient_groups</code>.</li>
    </ul>
  </li>
</ul>

<p><span class="tag-config">config</span></p>

<ul>
  <li>Instances no longer require Google Calendar to be configured in order to function without errors. Previously users would see an error <code class="language-plaintext highlighter-rouge">"Provider availability calendars have not yet been configured. When you’re ready to connect them, contact Support and we’ll help get you squared away."</code>, forcing them to connect to google calendar.</li>
</ul>

<p><span class="tag-ui">ui</span></p>

<ul>
  <li>Print templates now use a serif font instead of monospace for a more polished appearance.</li>
  <li>Failed prescriptions now show more detail regarding the reason for failure. Additionally, non-ASCII characters in patient addresses are now transliterated to the nearest ASCII equivalent, preventing a class of Surescripts transmission errors.</li>
</ul>]]></content><author><name></name></author><category term="bugfix" /><category term="sdk" /><category term="config" /><category term="ui" /><summary type="html"><![CDATA[Today’s release includes the following updates:]]></summary></entry><entry><title type="html">03.20.2026</title><link href="https://docs.canvasmedical.com/release-notes/1-290-0/" rel="alternate" type="text/html" title="03.20.2026" /><published>2026-03-20T00:00:00-07:00</published><updated>2026-03-20T07:13:26-07:00</updated><id>https://docs.canvasmedical.com/release-notes/1-290-0</id><content type="html" xml:base="https://docs.canvasmedical.com/release-notes/1-290-0/"><![CDATA[<p>Today’s release includes the following updates:</p>

<p><span class="tag-sdk">sdk</span></p>

<ul>
  <li>Adds new <code class="language-plaintext highlighter-rouge">CommandMetadata</code> model to the SDK Data models. <a href="/sdk/data-command/#commandmetadata">Read more</a></li>
  <li>Adds new <code class="language-plaintext highlighter-rouge">COMMAND_METADATA_CREATED</code> and <code class="language-plaintext highlighter-rouge">COMMAND_METADATA_UPDATED</code> events. <a href="/sdk/events/#command-metadata">Read more</a></li>
  <li>Adds new <code class="language-plaintext highlighter-rouge">UPSERT_COMMAND_METADATA</code> effect used to create or update metadata values in a command. <a href="/sdk/effect-command-metadata/">Read more</a></li>
  <li>Recently we added some new Document-related models to the Canvas SDK. The pre-signed keys generated for the files related to those objects were incorrect; this has now been addressed.</li>
  <li>Adds new pharmacy search parameters in search_pharmacies <a href="/sdk/utils/#searching-for-pharmacies">Read more</a> :
    <ul>
      <li><code class="language-plaintext highlighter-rouge">specialty</code> — Filter by pharmacy specialty type</li>
      <li><code class="language-plaintext highlighter-rouge">zip_code_prefix</code> — Filter by zip code</li>
      <li><code class="language-plaintext highlighter-rouge">state</code> — Filter by state code</li>
      <li><code class="language-plaintext highlighter-rouge">ncpdp_id</code> — Look up a specific pharmacy by its NCPDP identifier</li>
    </ul>
  </li>
</ul>]]></content><author><name></name></author><category term="sdk" /><summary type="html"><![CDATA[Today’s release includes the following updates:]]></summary></entry><entry><title type="html">03.19.2026</title><link href="https://docs.canvasmedical.com/release-notes/1-289-0/" rel="alternate" type="text/html" title="03.19.2026" /><published>2026-03-19T00:00:00-07:00</published><updated>2026-03-18T14:48:29-07:00</updated><id>https://docs.canvasmedical.com/release-notes/1-289-0</id><content type="html" xml:base="https://docs.canvasmedical.com/release-notes/1-289-0/"><![CDATA[<p>Today’s release includes the following updates:</p>

<p><span class="tag-ui">ui</span></p>

<ul>
  <li>Removed note header colored bar</li>
</ul>]]></content><author><name></name></author><category term="ui" /><summary type="html"><![CDATA[Today’s release includes the following updates:]]></summary></entry><entry><title type="html">03.13.2026</title><link href="https://docs.canvasmedical.com/release-notes/1-288-0/" rel="alternate" type="text/html" title="03.13.2026" /><published>2026-03-13T00:00:00-07:00</published><updated>2026-03-13T03:21:30-07:00</updated><id>https://docs.canvasmedical.com/release-notes/1-288-0</id><content type="html" xml:base="https://docs.canvasmedical.com/release-notes/1-288-0/"><![CDATA[<p>Today’s release includes the following updates:</p>

<p><span class="tag-api">api</span></p>

<ul>
  <li>Allow updating CareTeams with external members via FHIR. <a href="/api/careteam/#update">Read more</a></li>
</ul>

<p><span class="tag-sdk">sdk</span></p>

<ul>
  <li>File upload related models have been added to the Canvas SDK: <a href="/sdk/data-document-reference/">DocumentReference</a>, <a href="/sdk/data-snapshot/">Snapshot/SnapshotImage</a>, <a href="/sdk/data-patient/#patientidentificationcard">PatientIdentificationCard</a>, and <a href="/sdk/data-patient/#patientidentificationcard">MessageAttachment.file_url</a></li>
  <li>Fixed an issue where the note body could display stale content after another user committed changes.</li>
  <li>Fixed an issue where note application tabs where not returning to the note view on close.</li>
  <li>For plugins that handle events where an actor is set — such as action button clicks, application context changes, patient portal interactions, etc — command module methods (originate, commit, edit, delete, review, send, enter-in-error) are now attributed to that user instead of the system bot. Events without an actor continue to be attributed to the system bot.</li>
  <li>Adds the CREATE_CCDA_EXPORT effect that allows creation of CCDA documents for patients. <a href="/sdk/effect-create-ccda-export/">Read more</a></li>
</ul>

<p><span class="tag-config">config</span></p>

<ul>
  <li>Staff images, background images, and logos can now be uploaded directly in Settings.</li>
</ul>]]></content><author><name></name></author><category term="api" /><category term="plugins" /><category term="sdk" /><category term="ui" /><summary type="html"><![CDATA[Today’s release includes the following updates:]]></summary></entry><entry><title type="html">03.10.2026</title><link href="https://docs.canvasmedical.com/release-notes/1-287-0/" rel="alternate" type="text/html" title="03.10.2026" /><published>2026-03-10T00:00:00-07:00</published><updated>2026-03-09T08:51:39-07:00</updated><id>https://docs.canvasmedical.com/release-notes/1-287-0</id><content type="html" xml:base="https://docs.canvasmedical.com/release-notes/1-287-0/"><![CDATA[<p>Today’s release includes the following updates:</p>

<p><span class="tag-bugfix">bugfix</span></p>

<ul>
  <li>Fixes bug where it was not defaulting the practice location when scheduling an appointment from the patient’s chart to be the current logged-in user’s primary practice location.</li>
  <li>A rare condition could arise when an Adjust Medication command existed in an error state without an associated medication and resulted in our medication state synchronization inferring the incorrect state for a medication. This would manifest as a medication showing as inactive when it should have shown as active. Affected customers have been informed directly.</li>
  <li>Inbound faxes will try to find an existing service provider contact before creating a new contact to prevent duplicate entries.</li>
  <li>We’ve addressed several performance issues in the Canvas admin pages, specifically around the patient, lab order, condition, device, refill request, prescription change request, and prescription alert pages.</li>
  <li>Fixed bug that attempted to maintain references to specific coding gaps when coding gap related commands were used in automations.</li>
</ul>

<p><span class="tag-sdk">sdk</span></p>

<ul>
  <li>Adds a new PDF generator utility that enables plugins to generate PDFs either from a hosted HTML page or from raw HTML content. <a href="/sdk/utils/#generating-pdfs">Read more</a></li>
  <li>Adds Python 3.13 support to the SDK.</li>
  <li>Adds a new claim effect for updating provider information on a claim. <a href="/sdk/effect-claims/#update-provider">Read more</a></li>
</ul>]]></content><author><name></name></author><category term="bugfix" /><category term="sdk" /><summary type="html"><![CDATA[Today’s release includes the following updates:]]></summary></entry><entry><title type="html">03.06.2026</title><link href="https://docs.canvasmedical.com/release-notes/1-286-0/" rel="alternate" type="text/html" title="03.06.2026" /><published>2026-03-06T00:00:00-08:00</published><updated>2026-03-06T09:04:14-08:00</updated><id>https://docs.canvasmedical.com/release-notes/1-286-0</id><content type="html" xml:base="https://docs.canvasmedical.com/release-notes/1-286-0/"><![CDATA[<p>Today’s release includes the following updates:</p>

<p><span class="tag-bugfix">bugfix</span></p>

<ul>
  <li>Questionnaires with long question names could become corrupted if used within the Questionnaire Builder. This corruption will no longer happen.</li>
  <li>The unsupported browser warning was hidden on Safari; it is now visible. Safari is not a supported browser for Canvas, you must use Chrome.</li>
</ul>

<p><span class="tag-api">api</span></p>

<ul>
  <li>Fixes Facility addresses not including country on FHIR’s Patient read/search</li>
</ul>

<p><span class="tag-sdk">sdk</span></p>

<ul>
  <li>Adds Prescription to the SDK data module. <a href="/sdk/data-prescription">Read more</a></li>
  <li>Adds the following SDK events for Prescription status changes: PRESCRIPTION_OPENED, PRESCRIPTION_PENDING, PRESCRIPTION_ACCEPTED, PRESCRIPTION_ERRORED, PRESCRIPTION_CANCEL_REQUESTED, PRESCRIPTION_CANCELED, PRESCRIPTION_CANCEL_DENIED. PRESCRIPTION_RECEIVED, PRESCRIPTION_SIGNED, PRESCRIPTION_INQUEUE, PRESCRIPTION_TRANSMITTED, PRESCRIPTION_DELIVERED. <a href="/sdk/events/#prescription">Read more</a></li>
</ul>]]></content><author><name></name></author><category term="api" /><category term="bugfix" /><category term="sdk" /><summary type="html"><![CDATA[Today’s release includes the following updates:]]></summary></entry></feed>