---
title: Canvas Medical API Integration on Truto
slug: canvasmedical
category: Healthcare
canonical: "https://truto.one/integrations/detail/canvasmedical/"
---

# Canvas Medical API Integration on Truto



**Category:** Healthcare  
**Status:** Beta

## MCP-ready AI tools

Truto exposes 160 tools for Canvas Medical that AI agents can call directly.

- **get_single_canvas_medical_allergen_by_id** — Get a single Allergen from Canvas by its id. Returns the FHIR R4 Allergen resource. Returns: resourceType, id, code. Required: id.
- **list_all_canvas_medical_allergens** — Search Allergen resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Allergen resources, one page at a time. Needs either code or _text. Returns: resourceType, id, code. Required: one of code or _text.
- **get_single_canvas_medical_allergy_intolerance_by_id** — Get a single AllergyIntolerance from Canvas by its id. Returns the FHIR R4 AllergyIntolerance resource. Returns: resourceType, id, clinicalStatus, verificationStatus, type. Required: id.
- **list_all_canvas_medical_allergy_intolerances** — Search AllergyIntolerance resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 AllergyIntolerance resources, one page at a time. Returns: resourceType, id, clinicalStatus, verificationStatus, type. No parameters are required.
- **canvas_medical_allergy_intolerances_search** — Search AllergyIntolerance resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 AllergyIntolerance resources, one page at a time. Returns: resourceType, id, clinicalStatus, verificationStatus, type. No parameters are required.
- **create_a_canvas_medical_allergy_intolerance** — Create a AllergyIntolerance in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: clinicalStatus, verificationStatus, type, code, patient.
- **update_a_canvas_medical_allergy_intolerance_by_id** — Replace a AllergyIntolerance in Canvas by sending the full FHIR AllergyIntolerance resource (PUT). Canvas answers 200 OK with an empty body. Required: id, clinicalStatus, verificationStatus, type, code, patient.
- **get_single_canvas_medical_appointment_by_id** — Get a single Appointment from Canvas by its id. Returns the FHIR R4 Appointment resource. Returns: resourceType, id, status, appointmentType, reasonCode. Required: id.
- **list_all_canvas_medical_appointments** — Search Appointment resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Appointment resources, one page at a time. The status filter takes one value per request. Returns: resourceType, id, status, appointmentType, reasonCode. No parameters are required.
- **canvas_medical_appointments_search** — Search Appointment resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Appointment resources, one page at a time. The status filter takes one value per request.
Returns: resourceType, id, status, appointmentType, reasonCode. No parameters are required.
- **create_a_canvas_medical_appointment** — Create a Appointment in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: status, supportingInformation, start, end, participant.
- **update_a_canvas_medical_appointment_by_id** — Replace a Appointment in Canvas by sending the full FHIR Appointment resource (PUT). Canvas answers 200 OK with an empty body. Required: id, status, supportingInformation, start, end, participant.
- **get_single_canvas_medical_care_plan_by_id** — Get a single CarePlan from Canvas by its id. Returns the FHIR R4 CarePlan resource. Returns: resourceType, id, status, intent, category. Required: id.
- **list_all_canvas_medical_care_plans** — Search CarePlan resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 CarePlan resources, one page at a time. Returns: resourceType, id, status, intent, category. No parameters are required.
- **canvas_medical_care_plans_search** — Search CarePlan resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 CarePlan resources, one page at a time. Returns: resourceType, id, status, intent, category. No parameters are required.
- **get_single_canvas_medical_care_team_by_id** — Get a single CareTeam from Canvas by its id. Returns the FHIR R4 CareTeam resource. Returns: resourceType, id, status, name, subject. Required: id.
- **list_all_canvas_medical_care_teams** — Search CareTeam resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 CareTeam resources, one page at a time. Returns: resourceType, id, status, name, subject. No parameters are required.
- **canvas_medical_care_teams_search** — Search CareTeam resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 CareTeam resources, one page at a time. Returns: resourceType, id, status, name, subject. No parameters are required.
- **update_a_canvas_medical_care_team_by_id** — Replace a CareTeam in Canvas by sending the full FHIR CareTeam resource (PUT). Canvas answers 200 OK with an empty body. Required: id.
- **get_single_canvas_medical_claim_by_id** — Get a single Claim from Canvas by its id. Returns the FHIR R4 Claim resource. Returns: resourceType, id, status, type, use. Required: id.
- **list_all_canvas_medical_claims** — Search Claim resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Claim resources, one page at a time. Returns: resourceType, id, status, type, use. No parameters are required.
- **canvas_medical_claims_search** — Search Claim resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Claim resources, one page at a time. Returns: resourceType, id, status, type, use. No parameters are required.
- **create_a_canvas_medical_claim** — Create a Claim in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: status, type, use, patient, created, provider, priority, diagnosis, insurance, item.
- **update_a_canvas_medical_claim_by_id** — Replace a Claim in Canvas by sending the full FHIR Claim resource (PUT). Canvas answers 200 OK with an empty body. Required: id, status, type, use, patient, created, provider, priority, insurance.
- **get_single_canvas_medical_communication_by_id** — Get a single Communication from Canvas by its id. Returns the FHIR R4 Communication resource. Returns: resourceType, id, status, subject, sent. Required: id.
- **list_all_canvas_medical_communications** — Search Communication resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Communication resources, one page at a time. Returns only messages between a practitioner and a patient. Returns: resourceType, id, status, subject, sent. No parameters are required.
- **canvas_medical_communications_search** — Search Communication resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Communication resources, one page at a time. Returns only messages between a practitioner and a patient.
Returns: resourceType, id, status, subject, sent. No parameters are required.
- **create_a_canvas_medical_communication** — Create a Communication in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: status, recipient, sender, payload.
- **get_single_canvas_medical_condition_by_id** — Get a single Condition from Canvas by its id. Returns the FHIR R4 Condition resource. Returns: resourceType, id, clinicalStatus, verificationStatus, category. Required: id.
- **list_all_canvas_medical_conditions** — Search Condition resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Condition resources, one page at a time. Returns: resourceType, id, clinicalStatus, verificationStatus, category. No parameters are required.
- **canvas_medical_conditions_search** — Search Condition resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Condition resources, one page at a time. Returns: resourceType, id, clinicalStatus, verificationStatus, category. No parameters are required.
- **create_a_canvas_medical_condition** — Create a Condition in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: clinicalStatus, category, code, subject.
- **update_a_canvas_medical_condition_by_id** — Replace a Condition in Canvas by sending the full FHIR Condition resource (PUT). Canvas answers 200 OK with an empty body. Required: id, clinicalStatus, category, code, subject.
- **get_single_canvas_medical_consent_by_id** — Get a single Consent from Canvas by its id. Returns the FHIR R4 Consent resource. Returns: resourceType, id, status, scope, category. Required: id.
- **list_all_canvas_medical_consents** — Search Consent resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Consent resources, one page at a time. Returns: resourceType, id, status, scope, category. No parameters are required.
- **canvas_medical_consents_search** — Search Consent resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Consent resources, one page at a time. Returns: resourceType, id, status, scope, category. No parameters are required.
- **create_a_canvas_medical_consent** — Create a Consent in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: status, scope, category, patient, sourceAttachment, provision.
- **get_single_canvas_medical_coverage_by_id** — Get a single Coverage from Canvas by its id. Returns the FHIR R4 Coverage resource. Returns: resourceType, id, status, type, subscriber. Required: id.
- **list_all_canvas_medical_coverages** — Search Coverage resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Coverage resources, one page at a time. Does not filter by date; each Coverage carries period.start and period.end. Returns: resourceType, id, status, type, subscriber. No parameters are required.
- **canvas_medical_coverages_search** — Search Coverage resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Coverage resources, one page at a time. Does not filter by date; each Coverage carries period.start and period.end.
Returns: resourceType, id, status, type, subscriber. No parameters are required.
- **create_a_canvas_medical_coverage** — Create a Coverage in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: identifier, status, subscriber, beneficiary, relationship, payor, order.
- **update_a_canvas_medical_coverage_by_id** — Replace a Coverage in Canvas by sending the full FHIR Coverage resource (PUT). Canvas answers 200 OK with an empty body. Required: id, identifier, status, subscriber, beneficiary, relationship, payor, order.
- **get_single_canvas_medical_coverage_eligibility_response_by_id** — Get a single CoverageEligibilityResponse from Canvas by its id. Returns the FHIR R4 CoverageEligibilityResponse resource. Returns: resourceType, id, status, purpose, patient. Required: id.
- **list_all_canvas_medical_coverage_eligibility_responses** — Search CoverageEligibilityResponse resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 CoverageEligibilityResponse resources, one page at a time. Returns: resourceType, id, status, purpose, patient. No parameters are required.
- **canvas_medical_coverage_eligibility_responses_search** — Search CoverageEligibilityResponse resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 CoverageEligibilityResponse resources, one page at a time.
Returns: resourceType, id, status, purpose, patient. No parameters are required.
- **get_single_canvas_medical_detected_issue_by_id** — Get a single DetectedIssue from Canvas by its id. Returns the FHIR R4 DetectedIssue resource. Returns: resourceType, id, status, code, severity. Required: id.
- **list_all_canvas_medical_detected_issues** — Search DetectedIssue resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 DetectedIssue resources, one page at a time. Returns: resourceType, id, status, code, severity. No parameters are required.
- **canvas_medical_detected_issues_search** — Search DetectedIssue resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 DetectedIssue resources, one page at a time. Returns: resourceType, id, status, code, severity. No parameters are required.
- **create_a_canvas_medical_detected_issue** — Create a DetectedIssue in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: status, code, patient, identifiedDateTime, author, evidence.
- **update_a_canvas_medical_detected_issue_by_id** — Replace a DetectedIssue in Canvas by sending the full FHIR DetectedIssue resource (PUT). Canvas answers 200 OK with an empty body. Required: id, status, code, patient, identifiedDateTime, author, evidence.
- **get_single_canvas_medical_device_by_id** — Get a single Device from Canvas by its id. Returns the FHIR R4 Device resource. Returns: resourceType, id, udiCarrier, status, distinctIdentifier. Required: id.
- **list_all_canvas_medical_devices** — Search Device resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Device resources, one page at a time. Returns: resourceType, id, udiCarrier, status, distinctIdentifier. No parameters are required.
- **canvas_medical_devices_search** — Search Device resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Device resources, one page at a time. Returns: resourceType, id, udiCarrier, status, distinctIdentifier. No parameters are required.
- **get_single_canvas_medical_diagnostic_report_by_id** — Get a single DiagnosticReport from Canvas by its id. Returns the FHIR R4 DiagnosticReport resource. Returns: resourceType, id, status, category, code. Required: id.
- **list_all_canvas_medical_diagnostic_reports** — Search DiagnosticReport resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 DiagnosticReport resources, one page at a time. Returns: resourceType, id, status, category, code. No parameters are required.
- **canvas_medical_diagnostic_reports_search** — Search DiagnosticReport resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 DiagnosticReport resources, one page at a time. Returns: resourceType, id, status, category, code. No parameters are required.
- **get_single_canvas_medical_document_reference_by_id** — Get a single DocumentReference from Canvas by its id. Returns the FHIR R4 DocumentReference resource. Returns: resourceType, id, status, type, category. Required: id.
- **list_all_canvas_medical_document_references** — Search DocumentReference resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 DocumentReference resources, one page at a time. Returns: resourceType, id, status, type, category. No parameters are required.
- **canvas_medical_document_references_search** — Search DocumentReference resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 DocumentReference resources, one page at a time. Returns: resourceType, id, status, type, category. No parameters are required.
- **create_a_canvas_medical_document_reference** — Create a DocumentReference in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: extension, status, type, category, subject, content.
- **get_single_canvas_medical_encounter_by_id** — Get a single Encounter from Canvas by its id. Returns the FHIR R4 Encounter resource. Returns: resourceType, id, status, class, type. Required: id.
- **list_all_canvas_medical_encounters** — Search Encounter resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Encounter resources, one page at a time. Returns: resourceType, id, status, class, type. No parameters are required.
- **canvas_medical_encounters_search** — Search Encounter resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Encounter resources, one page at a time. Returns: resourceType, id, status, class, type. No parameters are required.
- **get_single_canvas_medical_goal_by_id** — Get a single Goal from Canvas by its id. Returns the FHIR R4 Goal resource. Returns: resourceType, id, lifecycleStatus, achievementStatus, priority. Required: id.
- **list_all_canvas_medical_goals** — Search Goal resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Goal resources, one page at a time. Returns: resourceType, id, lifecycleStatus, achievementStatus, priority. No parameters are required.
- **canvas_medical_goals_search** — Search Goal resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Goal resources, one page at a time. Returns: resourceType, id, lifecycleStatus, achievementStatus, priority. No parameters are required.
- **get_single_canvas_medical_group_by_id** — Get a single Group from Canvas by its id. Returns the FHIR R4 Group resource. Returns: resourceType, id, type, actual, name. Required: id.
- **list_all_canvas_medical_groups** — Search Group resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Group resources, one page at a time. Returns: resourceType, id, type, actual, name. No parameters are required.
- **canvas_medical_groups_search** — Search Group resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Group resources, one page at a time. Returns: resourceType, id, type, actual, name. No parameters are required.
- **create_a_canvas_medical_group** — Create a Group in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: type, actual, name.
- **update_a_canvas_medical_group_by_id** — Replace a Group in Canvas by sending the full FHIR Group resource (PUT). Canvas answers 200 OK with an empty body. Required: id, type, actual, name.
- **get_single_canvas_medical_immunization_by_id** — Get a single Immunization from Canvas by its id. Returns the FHIR R4 Immunization resource. Returns: resourceType, id, status, statusReason, vaccineCode. Required: id.
- **list_all_canvas_medical_immunizations** — Search Immunization resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Immunization resources, one page at a time. Returns: resourceType, id, status, statusReason, vaccineCode. No parameters are required.
- **canvas_medical_immunizations_search** — Search Immunization resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Immunization resources, one page at a time. Returns: resourceType, id, status, statusReason, vaccineCode. No parameters are required.
- **create_a_canvas_medical_immunization** — Create a Immunization in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: status, vaccineCode, patient, occurrenceDateTime, primarySource.
- **update_a_canvas_medical_immunization_by_id** — Replace a Immunization in Canvas by sending the full FHIR Immunization resource (PUT). Canvas answers 200 OK with an empty body. Required: id, status, vaccineCode, patient, occurrenceDateTime, primarySource.
- **get_single_canvas_medical_location_by_id** — Get a single Location from Canvas by its id. Returns the FHIR R4 Location resource. Returns: resourceType, id, status, name, alias. Required: id.
- **list_all_canvas_medical_locations** — Search Location resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Location resources, one page at a time. Returns: resourceType, id, status, name, alias. No parameters are required.
- **canvas_medical_locations_search** — Search Location resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Location resources, one page at a time. Returns: resourceType, id, status, name, alias. No parameters are required.
- **get_single_canvas_medical_media_by_id** — Get a single Media from Canvas by its id. Returns the FHIR R4 Media resource. Returns: resourceType, id, status, subject, encounter. Required: id.
- **list_all_canvas_medical_media** — Search Media resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Media resources, one page at a time. Returns: resourceType, id, status, subject, encounter. No parameters are required.
- **canvas_medical_media_search** — Search Media resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Media resources, one page at a time. Returns: resourceType, id, status, subject, encounter. No parameters are required.
- **create_a_canvas_medical_media** — Create a Media in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: status, subject, content.
- **get_single_canvas_medical_medication_by_id** — Get a single Medication from Canvas by its id. Returns the FHIR R4 Medication resource. Returns: resourceType, id, code. Required: id.
- **list_all_canvas_medical_medications** — Search Medication resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Medication resources, one page at a time. Needs either code or _text. Returns: resourceType, id, code. Required: one of code or _text.
- **canvas_medical_medications_search** — Search Medication resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Medication resources, one page at a time. Needs either code or _text. Returns: resourceType, id, code. Required: one of code or _text.
- **get_single_canvas_medical_medication_dispense_by_id** — Get a single MedicationDispense from Canvas by its id. Returns the FHIR R4 MedicationDispense resource. Returns: resourceType, id, status, medicationCodeableConcept, subject. Required: id.
- **list_all_canvas_medical_medication_dispenses** — Search MedicationDispense resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 MedicationDispense resources, one page at a time. Returns: resourceType, id, status, medicationCodeableConcept, subject. No parameters are required.
- **canvas_medical_medication_dispenses_search** — Search MedicationDispense resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 MedicationDispense resources, one page at a time.
Returns: resourceType, id, status, medicationCodeableConcept, subject. No parameters are required.
- **get_single_canvas_medical_medication_request_by_id** — Get a single MedicationRequest from Canvas by its id. Returns the FHIR R4 MedicationRequest resource. Returns: resourceType, id, status, intent, category. Required: id.
- **list_all_canvas_medical_medication_requests** — Search MedicationRequest resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 MedicationRequest resources, one page at a time. Returns: resourceType, id, status, intent, category. No parameters are required.
- **canvas_medical_medication_requests_search** — Search MedicationRequest resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 MedicationRequest resources, one page at a time. Returns: resourceType, id, status, intent, category. No parameters are required.
- **get_single_canvas_medical_medication_statement_by_id** — Get a single MedicationStatement from Canvas by its id. Returns the FHIR R4 MedicationStatement resource. Returns: id, status, medicationCodeableConcept, subject, effectivePeriod. Required: id.
- **list_all_canvas_medical_medication_statements** — Search MedicationStatement resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 MedicationStatement resources, one page at a time. Returns: id, status, medicationCodeableConcept, subject, effectivePeriod. No parameters are required.
- **canvas_medical_medication_statements_search** — Search MedicationStatement resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 MedicationStatement resources, one page at a time.
Returns: id, status, medicationCodeableConcept, subject, effectivePeriod. No parameters are required.
- **create_a_canvas_medical_medication_statement** — Create a MedicationStatement in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: status, subject.
- **update_a_canvas_medical_medication_statement_by_id** — Replace a MedicationStatement in Canvas by sending the full FHIR MedicationStatement resource (PUT). Canvas answers 200 OK with an empty body. Required: id, status, subject.
- **get_single_canvas_medical_observation_by_id** — Get a single Observation from Canvas by its id. Returns the FHIR R4 Observation resource. Returns: resourceType, id, status, category, code. Required: id.
- **list_all_canvas_medical_observations** — Search Observation resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Observation resources, one page at a time. Returns: resourceType, id, status, category, code. No parameters are required.
- **canvas_medical_observations_search** — Search Observation resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Observation resources, one page at a time. Returns: resourceType, id, status, category, code. No parameters are required.
- **create_a_canvas_medical_observation** — Create a Observation in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Send a full vital panel as one request per observation set; see the Canvas vitals guide. Required: status, code, subject.
- **get_single_canvas_medical_organization_by_id** — Get a single Organization from Canvas by its id. Returns the FHIR R4 Organization resource. Returns: resourceType, id, type, active, name. Required: id.
- **list_all_canvas_medical_organizations** — Search Organization resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Organization resources, one page at a time. Returns: resourceType, id, type, active, name. No parameters are required.
- **canvas_medical_organizations_search** — Search Organization resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Organization resources, one page at a time. Returns: resourceType, id, type, active, name. No parameters are required.
- **get_single_canvas_medical_patient_by_id** — Get a single Patient from Canvas by its id. Returns the FHIR R4 Patient resource. The birthsex extension carries sex assigned at birth. Returns: resourceType, id, active, name, telecom. Required: id.
- **list_all_canvas_medical_patients** — Search Patient resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Patient resources, one page at a time. Inactive patients are included unless you pass active=true. Returns: resourceType, id, active, name, telecom. No parameters are required.
- **canvas_medical_patients_search** — Search Patient resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Patient resources, one page at a time. Inactive patients are included unless you pass active=true.
Returns: resourceType, id, active, name, telecom. No parameters are required.
- **create_a_canvas_medical_patient** — Create a Patient in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. The birthsex extension is required. Required: resourceType, extension, name, gender, birthDate.
- **update_a_canvas_medical_patient_by_id** — Replace a Patient in Canvas by sending the full FHIR Patient resource (PUT). Canvas answers 200 OK with an empty body. The birthsex extension is required. Required: id, resourceType, extension, name, gender, birthDate.
- **get_single_canvas_medical_payment_notice_by_id** — Get a single PaymentNotice from Canvas by its id. Returns the FHIR R4 PaymentNotice resource. Returns: id, status, request, created, payment. Required: id.
- **list_all_canvas_medical_payment_notices** — Search PaymentNotice resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 PaymentNotice resources, one page at a time. Returns: id, status, request, created, payment. No parameters are required.
- **canvas_medical_payment_notices_search** — Search PaymentNotice resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 PaymentNotice resources, one page at a time. Returns: id, status, request, created, payment. No parameters are required.
- **create_a_canvas_medical_payment_notice** — Create a PaymentNotice in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: status, request, created, payment, recipient, amount.
- **get_single_canvas_medical_practitioner_by_id** — Get a single Practitioner from Canvas by its id. Returns the FHIR R4 Practitioner resource. Returns: id, active, name, telecom, address. Required: id.
- **list_all_canvas_medical_practitioners** — Search Practitioner resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Practitioner resources, one page at a time. Only schedulable, active practitioners come back by default; set include-non-schedulable-practitioners=true or active=false to widen the search.
Returns: id, active, name, telecom, address. No parameters are required.
- **canvas_medical_practitioners_search** — Search Practitioner resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Practitioner resources, one page at a time. Only schedulable, active practitioners come back by default; set include-non-schedulable-practitioners=true or active=false to widen the search.
Returns: id, active, name, telecom, address. No parameters are required.
- **create_a_canvas_medical_practitioner** — Create a Practitioner in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: name, telecom, birthDate.
- **update_a_canvas_medical_practitioner_by_id** — Replace a Practitioner in Canvas by sending the full FHIR Practitioner resource (PUT). Canvas answers 200 OK with an empty body. Required: id, name, telecom, birthDate.
- **get_single_canvas_medical_procedure_by_id** — Get a single Procedure from Canvas by its id. Returns the FHIR R4 Procedure resource. Returns: resourceType, id, basedOn, status, code. Required: id.
- **list_all_canvas_medical_procedures** — Search Procedure resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Procedure resources, one page at a time. Returns: resourceType, id, basedOn, status, code. No parameters are required.
- **canvas_medical_procedures_search** — Search Procedure resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Procedure resources, one page at a time. Returns: resourceType, id, basedOn, status, code. No parameters are required.
- **get_single_canvas_medical_provenance_by_id** — Get a single Provenance from Canvas by its id. Returns the FHIR R4 Provenance resource. Returns: resourceType, id, target, recorded, location. Required: id.
- **list_all_canvas_medical_provenances** — Search Provenance resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Provenance resources, one page at a time. Returns: resourceType, id, target, recorded, location. No parameters are required.
- **canvas_medical_provenances_search** — Search Provenance resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Provenance resources, one page at a time. Returns: resourceType, id, target, recorded, location. No parameters are required.
- **get_single_canvas_medical_questionnaire_by_id** — Get a single Questionnaire from Canvas by its id. Returns the FHIR R4 Questionnaire resource. Returns: resourceType, id, name, status, description. Required: id.
- **list_all_canvas_medical_questionnaires** — Search Questionnaire resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Questionnaire resources, one page at a time. Returns: resourceType, id, name, status, description. No parameters are required.
- **canvas_medical_questionnaires_search** — Search Questionnaire resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Questionnaire resources, one page at a time. Returns: resourceType, id, name, status, description. No parameters are required.
- **get_single_canvas_medical_questionnaire_response_by_id** — Get a single QuestionnaireResponse from Canvas by its id. Returns the FHIR R4 QuestionnaireResponse resource. Returns: resourceType, id, questionnaire, _questionnaire, status. Required: id.
- **list_all_canvas_medical_questionnaire_responses** — Search QuestionnaireResponse resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 QuestionnaireResponse resources, one page at a time. Returns: resourceType, id, questionnaire, _questionnaire, status. No parameters are required.
- **canvas_medical_questionnaire_responses_search** — Search QuestionnaireResponse resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 QuestionnaireResponse resources, one page at a time.
Returns: resourceType, id, questionnaire, _questionnaire, status. No parameters are required.
- **create_a_canvas_medical_questionnaire_response** — Create a QuestionnaireResponse in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: status, subject.
- **update_a_canvas_medical_questionnaire_response_by_id** — Replace a QuestionnaireResponse in Canvas by sending the full FHIR QuestionnaireResponse resource (PUT). Canvas answers 200 OK with an empty body. Required: id, status, subject.
- **get_single_canvas_medical_related_person_by_id** — Get a single RelatedPerson from Canvas by its id. Returns the FHIR R4 RelatedPerson resource. Returns: resourceType, id, active, patient, relationship. Required: id.
- **list_all_canvas_medical_related_persons** — Search RelatedPerson resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 RelatedPerson resources, one page at a time. Returns: resourceType, id, active, patient, relationship. No parameters are required.
- **canvas_medical_related_persons_search** — Search RelatedPerson resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 RelatedPerson resources, one page at a time. Returns: resourceType, id, active, patient, relationship. No parameters are required.
- **get_single_canvas_medical_service_request_by_id** — Get a single ServiceRequest from Canvas by its id. Returns the FHIR R4 ServiceRequest resource. Returns: resourceType, id, status, intent, category. Required: id.
- **list_all_canvas_medical_service_requests** — Search ServiceRequest resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 ServiceRequest resources, one page at a time. Returns: resourceType, id, status, intent, category. No parameters are required.
- **canvas_medical_service_requests_search** — Search ServiceRequest resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 ServiceRequest resources, one page at a time. Returns: resourceType, id, status, intent, category. No parameters are required.
- **get_single_canvas_medical_specimen_by_id** — Get a single Specimen from Canvas by its id. Returns the FHIR R4 Specimen resource. Returns: resourceType, id, type, subject. Required: id.
- **list_all_canvas_medical_specimens** — Search Specimen resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Specimen resources, one page at a time. Returns: resourceType, id, type, subject. No parameters are required.
- **canvas_medical_specimens_search** — Search Specimen resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Specimen resources, one page at a time. Returns: resourceType, id, type, subject. No parameters are required.
- **get_single_canvas_medical_task_by_id** — Get a single Task from Canvas by its id. Returns the FHIR R4 Task resource. Returns: id, status, priority, description, for. Required: id.
- **list_all_canvas_medical_tasks** — Search Task resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Task resources, one page at a time. Returns: id, status, priority, description, for. No parameters are required.
- **canvas_medical_tasks_search** — Search Task resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Task resources, one page at a time. Returns: id, status, priority, description, for. No parameters are required.
- **create_a_canvas_medical_task** — Create a Task in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: status, description, requester, intent.
- **update_a_canvas_medical_task_by_id** — Replace a Task in Canvas by sending the full FHIR Task resource (PUT). Canvas answers 200 OK with an empty body. Required: id, status, description, requester, intent.
- **create_a_canvas_medical_coverage_eligibility_request** — Create a CoverageEligibilityRequest in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: status, purpose, patient, created, insurer, insurance.
- **list_all_canvas_medical_schedules** — Search Schedule resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Schedule resources, one page at a time. Use a returned id as the schedule parameter of the Slot search. Returns: resourceType, id, actor, comment. No parameters are required.
- **canvas_medical_schedules_search** — Search Schedule resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Schedule resources, one page at a time. Use a returned id as the schedule parameter of the Slot search.
Returns: resourceType, id, actor, comment. No parameters are required.
- **list_all_canvas_medical_slots** — Search Slot resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Slot resources, one page at a time. Defaults: duration 20 minutes, start today (UTC), end 7 days after start. Returns: resourceType, schedule, status, start, end. Required: schedule.
- **canvas_medical_slots_search** — Search Slot resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Slot resources, one page at a time. Defaults: duration 20 minutes, start today (UTC), end 7 days after start.
Returns: resourceType, schedule, status, start, end. Required: schedule.
- **list_all_canvas_medical_capability_statements** — Get the FHIR CapabilityStatement that Canvas publishes for its FHIR R4 server. Returns one CapabilityStatement object that lists the supported resource types and interactions. Returns: resourceType, status, fhirVersion, format, rest. No parameters are required.
- **create_a_canvas_medical_claim_activity_log_item** — Add an activity log item (a comment) to a Claim. Send a FHIR Parameters resource with exactly one parameter named comment, whose valueString is the text. The token needs the Claim.add-activity-log-item scope. Canvas does not document the response body.
Returns: resourceType, parameter. Required: claim_id, resourceType, parameter.
- **create_a_canvas_medical_practitioner_reset_password_email** — Send a reset password email to a Canvas Practitioner. Send a FHIR Parameters resource with no parameters. The token needs the Practitioner.send-reset-password-email scope. Canvas does not document the response body. Returns: resourceType, parameter. Required: practitioner_id, resourceType.
- **create_a_canvas_medical_diagnostic_report_lab_report** — Create a lab report, its lab tests and values, and a stored PDF in one request. Send a FHIR Parameters resource with one labReport parameter and one labTestCollection parameter per test. The token needs the DiagnosticReport.create-lab-report scope. Canvas answers 201 Created with a Parameters resource that points to the new DiagnosticReport. Lab tests are visible in Canvas but cannot be read back through the FHIR API; only lab values can (Observation).
Returns: resourceType, parameter. Required: resourceType, parameter.
- **create_a_canvas_medical_bulk_export** — Start a FHIR Bulk Data export of the electronic health information of all patients. The export runs as a background job and writes NDJSON files; poll the job with the bulk_export_jobs resource. The token needs a system or user read scope such as system/*.read. Returns: the empty kick-off response. No parameters are required.
- **create_a_canvas_medical_patient_export** — Start a FHIR Bulk Data export of the electronic health information of one patient. The export runs as a background job and writes NDJSON files; poll the job with the bulk_export_jobs resource. The token needs a system or user read scope such as system/*.read. Returns: the empty kick-off response. Required: patient_id.
- **create_a_canvas_medical_group_export** — Start a FHIR Bulk Data export of the electronic health information of the patients in one Group. The export runs as a background job and writes NDJSON files; poll the job with the bulk_export_jobs resource. The token needs a system or user read scope such as system/*.read.
Returns: the empty kick-off response. Required: group_id.
- **get_single_canvas_medical_bulk_export_job_by_id** — Get the status of a FHIR Bulk Data export job. While the job runs the answer is an in-progress status; when it finishes it lists the output file URLs. Returns: transactionTime, request, requiresAccessToken, output, error. Required: id.
- **delete_a_canvas_medical_bulk_export_job_by_id** — Cancel a FHIR Bulk Data export job. Canvas documents no response body. Returns: nothing on success. Required: id.

## How it works

1. **Link your customer's Canvas Medical account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Canvas Medical.** The Proxy API is a 1-to-1 mapping of the Canvas Medical API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Embed AI scribe output directly into Canvas charts** — Ambient dictation and AI documentation tools can push structured notes back into the correct patient encounter without clinicians copy-pasting between apps. Truto handles the Canvas FHIR auth and resource mapping so you ship the integration in days, not quarters.
- **Power RPM and connected-device data pipelines** — Remote patient monitoring platforms can stream vitals, glucose readings, and device telemetry into Canvas as Observations and trigger follow-up Tasks when thresholds are breached. This lets your SaaS become the system of record for device data while Canvas remains the clinical source of truth.
- **Run a digital front door on top of Canvas scheduling** — Patient booking, intake, and engagement platforms can read live Slots and Schedules, create Appointments and Patients, and sync insurance Coverage back to Canvas. Your users get a modern booking experience without their practice replacing its EHR.
- **Fuel value-based care and RCM analytics with bulk exports** — Analytics and risk-adjustment platforms can trigger Canvas Bulk Export jobs to ingest Conditions, Claims, and Encounters at scale, then write back DetectedIssues to flag HCC gaps and coding opportunities. Truto manages the long-running export jobs so your pipeline just consumes NDJSON.
- **Enable async messaging and specialty telehealth workflows** — Asynchronous care and specialty telehealth portals can log patient-clinician messages as Communications in Canvas and sync replies back to the patient-facing app. This keeps the clinical record complete without forcing providers out of their Canvas workflow.

## What you can build

- **Bi-directional patient and appointment sync** — Keep patient demographics and appointments aligned between your product and Canvas using create, update, and search operations on Patient and Appointment resources.
- **Clinical note write-back as DocumentReference** — Push AI-generated SOAP notes, PDFs, or narrative summaries into Canvas as DocumentReferences linked to the right patient and encounter.
- **Device and lab Observation ingestion** — Stream vitals, RPM readings, and lab values into Canvas as Observation resources so clinicians see them in the native chart view.
- **Task-based clinician inbox automation** — Create and update Canvas Tasks to route follow-ups, critical alerts, and review requests directly into the clinician's work queue.
- **Dynamic intake and assessment capture** — Map digital intake forms and clinical assessments (PHQ-9, GAD-7, custom screeners) into Canvas as QuestionnaireResponses tied to the patient record.
- **Bulk export pipelines for analytics and AI** — Kick off patient-, group-, or system-level Bulk Export jobs, monitor job status, and ingest NDJSON output for population health, RCM, or model training.

## FAQs

### How does authentication to Canvas Medical work through Truto?

Canvas uses OAuth 2.0 client credentials against each customer's Canvas instance (subdomain). Truto handles token exchange, refresh, and secure credential storage per end-user connection, so your product only needs to initiate the connect flow.

### Which Canvas FHIR resources are supported?

Truto exposes the Canvas FHIR R4 surface, including Patient, Practitioner, Appointment, Schedule, Slot, Encounter, Condition, Observation, MedicationRequest, MedicationStatement, DiagnosticReport, DocumentReference, Media, Task, Questionnaire, QuestionnaireResponse, Coverage, Claim, PaymentNotice, AllergyIntolerance, Immunization, CarePlan, CareTeam, Communication, Consent, Goal, DetectedIssue, and more — with list, search, get, and (where Canvas allows) create and update operations.

### Can I run bulk data exports for analytics or AI training?

Yes. Truto supports Canvas's Bulk Export operations at the system, Group, and Patient level. You can create an export job, poll its status, and delete it when complete — the output is NDJSON suitable for population health, RCM, or model training pipelines.

### How fresh is the data — does Truto cache or proxy requests?

Truto proxies calls to Canvas in real time, so reads reflect the current state of the Canvas instance. For high-volume ingestion, use the Bulk Export tools instead of looping over list endpoints.

### Can my integration write back to Canvas, or is it read-only?

Writes are fully supported for the resources Canvas permits, including creating Patients, Appointments, Conditions, Observations, DocumentReferences, Tasks, QuestionnaireResponses, Communications, Coverages, Claims, MedicationStatements, Immunizations, and more, plus updates on most of these resources.

### How are search and pagination handled across Canvas endpoints?

Each supported resource has a dedicated search tool that accepts FHIR search parameters, and Truto normalizes pagination across list endpoints so you can iterate large result sets without handling Canvas's cursor tokens directly.
