Canvas Medical · Arazzo Workflow

Canvas Medical Medication Prescribing

Version 1.0.0

Read the patient, check existing allergies and active medications for safety, then write a new prescription and confirm it.

1 workflow 3 source APIs 1 provider
View Spec View on GitHub EHRFHIRHealthcareElectronic Health RecordsVirtual CareClinical WorkflowsPatient ManagementCare CoordinationArazzoWorkflows

Provider

canvas-medical

Workflows

medication-prescribing
Prescribe a medication after an allergy and active-medication safety check.
Reads the patient, retrieves allergies and active medications for a safety check, creates a MedicationRequest, and reads it back to confirm.
5 steps inputs: medicationRequest, patientId outputs: medicationRequest, medicationRequestId
1
readPatient
Read the patient the prescription will be written for.
2
checkAllergies
Retrieve the patient's allergies for an allergy / contraindication check.
3
checkActiveMedications
Retrieve the patient's active medication orders for an interaction check.
4
createPrescription
Create the new MedicationRequest for the patient.
5
confirmPrescription
Read the created MedicationRequest back to confirm it was written.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Canvas Medical Medication Prescribing
  summary: Read the patient, check existing allergies and active medications for safety, then write a new prescription and confirm it.
  description: >-
    A medication prescribing flow against the Canvas FHIR R4 API, following US Core
    Medication conventions. Before prescribing, the patient is read and their
    AllergyIntolerances and active MedicationRequests are pulled so an
    interaction / allergy check can be performed; a new MedicationRequest is then
    created and read back to confirm. Every step inlines its request so the flow is
    self-contained.
  version: 1.0.0
  x-realizes-capability-ids:
  - BC-2800.20
  - BC-2830.20
  x-capability-derivation:
    method: 'deterministic join: sourceDescriptions -> per-tag OpenAPI -> tag/capability edge. No classification at this step.'
    min_confidence: 0.7
    sources:
    - capability_id: BC-2800.20
      capability_name: Patient Registration Management
      spec: canvas-medical-patient-api-openapi.yml
      confidence: 0.75
    - capability_id: BC-2830.20
      capability_name: Computerised Provider Order Entry
      spec: canvas-medical-medicationrequest-api-openapi.yml
      confidence: 0.78
    model: Turbo EA Capabilities by Vincent Verdet — Turbo EA, https://github.com/vincentmakes/turbo-ea-capabilities, CC BY 4.0
sourceDescriptions:
- name: allergyintoleranceApi
  url: ../openapi/canvas-medical-allergyintolerance-api-openapi.yml
  type: openapi
- name: medicationrequestApi
  url: ../openapi/canvas-medical-medicationrequest-api-openapi.yml
  type: openapi
- name: patientApi
  url: ../openapi/canvas-medical-patient-api-openapi.yml
  type: openapi
workflows:
- workflowId: medication-prescribing
  summary: Prescribe a medication after an allergy and active-medication safety check.
  description: >-
    Reads the patient, retrieves allergies and active medications for a safety
    check, creates a MedicationRequest, and reads it back to confirm.
  inputs:
    type: object
    required:
    - patientId
    - medicationRequest
    properties:
      patientId:
        type: string
        description: The FHIR Patient id the prescription is for.
      medicationRequest:
        type: object
        description: The FHIR R4 MedicationRequest resource to create.
  steps:
  - stepId: readPatient
    description: Read the patient the prescription will be written for.
    operationId: readPatient
    parameters:
    - name: id
      in: path
      value: $inputs.patientId
    successCriteria:
    - condition: $statusCode == 200
  - stepId: checkAllergies
    description: Retrieve the patient's allergies for an allergy / contraindication check.
    operationId: searchAllergyIntolerance
    parameters:
    - name: patient
      in: query
      value: $inputs.patientId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      allergies: $response.body
  - stepId: checkActiveMedications
    description: Retrieve the patient's active medication orders for an interaction check.
    operationId: searchMedicationRequest
    parameters:
    - name: patient
      in: query
      value: $inputs.patientId
    - name: status
      in: query
      value: active
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      activeMedications: $response.body
  - stepId: createPrescription
    description: Create the new MedicationRequest for the patient.
    operationId: createMedicationRequest
    requestBody:
      contentType: application/fhir+json
      payload: $inputs.medicationRequest
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      medicationRequestId: $response.body#/id
  - stepId: confirmPrescription
    description: Read the created MedicationRequest back to confirm it was written.
    operationId: readMedicationRequest
    parameters:
    - name: id
      in: path
      value: $steps.createPrescription.outputs.medicationRequestId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      medicationRequest: $response.body
  outputs:
    medicationRequestId: $steps.createPrescription.outputs.medicationRequestId
    medicationRequest: $steps.confirmPrescription.outputs.medicationRequest

Work with this as data

Every workflow here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for arazzo workflows

4 MCP tools reach this
  • find_arazzoBrowse and filter every workflow in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This workflow
curl "https://apis.io/api/v1/arazzo/canvas-medical-medication-prescribing-workflow"
All arazzo workflows
curl "https://apis.io/api/v1/arazzo?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.