09.01.2026

Today’s release includes the following updates:

ui

  • Questionnaires now support a Date question type, alongside single select, multi select and free text.
    • When building a questionnaire, choose Date for a question in the Questionnaire Builder, or set the question’s responses_type to DATE in the Google Sheets import.
    • When filling one out in a note, the question renders as a date picker in the Questionnaire, Review of Systems, Structured Assessment and Physical Exam commands.
    • The captured date carries through charting and carry-forward.

bugfix

  • Fixed an issue in the Canvas Remote app where capturing insurance card images failed when adding a new coverage. The front and back capture steps now load for a coverage that has just been started.
  • Discharging an inpatient note now records one discharge and one lock in the note’s state history, plus a signature for note types that require one. Previously the lock was written three times, so the state history showed duplicates and plugins subscribed to NOTE_STATE_CHANGE_EVENT_CREATED were notified of the same lock three times.

api

  • The FHIR API now carries Date questions.

sdk

  • A questionnaire can declare a DATE question, and a plugin can answer one.
    • Set responses_type: DATE on the question in the questionnaire’s YAML template, the one your plugin’s CANVAS_MANIFEST.json points at. See Questionnaires.
    • Answer it from the Questionnaire command. An answers entry takes the date as an ISO 8601 YYYY-MM-DD string, while the question’s own add_response(date=...) also accepts a datetime.date.
  • Five more records are now readable through the SDK data module, each of them the record behind a command:
    • Plan: what the Plan command records, with its narrative.
    • FollowUp: what the Follow Up command records, including the requested appointment date and type, the reason for the visit, and the comments to the patient and to staff.
    • ReasonForVisit: what the Reason for Visit command records, with its narrative and codings, alongside the configured codings an instance offers.
    • RemoveAllergyEvent: what the Remove Allergy command records, with the allergy removed, the patient, the note and the rationale.
    • ResolveConditionEvent: what the Resolve Condition command records, with the condition resolved, the patient, the note and the rationale.
  • Fixed an issue where calling find() with a value set on FamilyHistory or ImmunizationStatement records raised an error instead of returning results. These value-set lookups now work.