---
title: "List medications"
method: GET
path: "/api/2026-01-01/medical-record/medications"
tags: ["Medications"]
---

# List medications

`GET /api/2026-01-01/medical-record/medications`

## Request

- Base URL: `https://jdpdocsdemo.jane.qa`
- URL: `https://jdpdocsdemo.jane.qa/api/2026-01-01/medical-record/medications`
- Auth: OAuth 2
  - Authorization code: `https://login.id.janeapp.com/realms/jane_partner_sandbox/protocol/openid-connect/auth?response_type=code&resource=https://jdpdocsdemo.jane.qa&prompt=consent`
  - Token URL: `https://login.id.janeapp.com/realms/jane_partner_sandbox/protocol/openid-connect/token` scopes: `medications:read`

List medications for the current user's accessible patients

## Query parameters

- `page[limit]` integer
- `page[cursor]` string
- `sort` string
- `patient_id[eq]` string, uuid
- `status[eq]` 'active' | 'inactive' | 'pending'

## Response `200`

List of medications

- MedicationsResponse
  - `items` Medication[], required: Array of medication objects
    - `id` string, uuid, required: UUIDv7 identifier for the medication
    - `patient_id` string, uuid, required: Reference to the patient
    - `practitioner_id` string, uuid, nullable: Reference to the practitioner
    - `practitioner_name` string, nullable: Full name of the documenting practitioner; null when no staff is associated
    - `encounter_id` string, uuid, nullable: Reference to the encounter where medication was prescribed (optional)
    - `medication_code` MedicationCode, required
      - `coding` object[], nullable: Array of coded values for the medication (optional — manually added meds won't have formal codes)
        - `display` string, required: Human-readable display name
        - `code` string, required: The medication code
        - `system` string, required: The coding system (e.g., 'http://snomed.info/sct')
      - `text` string, required: Plain text representation of the medication name
    - `ingredients` Ingredient[], nullable: Array of ingredient objects (optional — not all medications have detailed ingredient info)
      - `name` string, nullable: Name of the ingredient
      - `strength` union: Strength or amount of the ingredient
        - string
        - number
      - `strength_unit` string, nullable: Unit of measurement for the strength (e.g., mg, mL, %)
    - `dose_form` string, nullable: Pharmaceutical form (tablet, capsule, suspension, etc.) (optional)
    - `route` string, nullable: Route of administration (oral, IV, topical, etc.) (optional)
    - `frequency` string, nullable: Textual frequency (daily, bid, etc.) (optional)
    - `quantity` integer, nullable: Number of units (e.g., tablets, capsules) dispensed
    - `period_start` string, date, nullable: When the medication course starts (optional)
    - `period_end` string, date, nullable: Planned end date (if any) (optional)
    - `instructions` string, nullable: Free-text administration instructions for the patient (optional)
    - `status` 'active' | 'inactive' | 'pending', required: Lifecycle state of the medication
    - `source` 'prescribed' | 'patient_reported' | 'external_provider' | 'clinic_practitioner', required: Origin of record – prescribed (from practitioner), patient_reported (self-reported), external_provider (prescribed by outside clinic/doctor), or clinic_practitioner (recommended by the clinician)
    - `external_provider_type` 'family_doctor_gp' | 'specialist' | 'pharmacist' | 'nd' | 'other' | 'null', nullable: Type of external provider; present when source is external_provider
    - `change_reason` string, nullable: Selected reason for status change (e.g., adverse_reaction, completed, patient_request)
    - `prescription_valid_until` string, date, nullable: Expiry date after which repeats aren't valid (optional)
    - `prescription_refills` integer, nullable: Allowed refill count (optional)
    - `prescription_days_supply` integer, nullable: Number of days that the dispensed medication is intended to last (optional)
    - `prescription_reason` string, nullable: Clinical indication or problem being treated (optional)
    - `created_at` string, date-time, required: When the medication record was created
    - `updated_at` string, date-time, required: When the medication record was last updated
    - `documents` object[], required: Array of document upload objects (each containing an id) currently attached to the medication.
      - `id` string, uuid, required
  - `limit` integer, required: Maximum number of medication records returned
  - `prescriptions_last_synced` string, date-time, nullable: ISO-8601 timestamp of the most recent successful DoseSpot prescription sync for the patient. Present only when e-prescribe (Flags::E_PRESCRIBE_US) is enabled; null when the patient has never synced.
  - `dosespot_onboarded` boolean: True when the patient has a DoseSpot patient integration record (onboarded). Present only when e-prescribe (Flags::E_PRESCRIBE_US) is enabled.

## Other responses

- `400`: Invalid request parameters
- `401`: Unauthorized
- `403`: Forbidden - insufficient permissions
- `404`: Patient not found
- `500`: Internal Server Error - the medications could not be retrieved

## Changes

- **2026-11-03** `01798f613a5e`: 4 breaking, 5 warning, 12 info
  - for the `query` request parameter `page[limit]`, default value was changed from `50` to `1000`
  - the response property `items/items/practitioner_id` became nullable for the status `200`
  - the response property `items/items/practitioner_id` became optional for the status `200`
  - removed the required property `pagination` from the response with the `200` status
  - …17 more

[Operation history](https://skmtc.dev/jane/apis/jdp-api/changes/api/2026-01-01/medical-record/medications/get.md)

---

[API](https://skmtc.dev/jane/apis/jdp-api.md) - [All operations](https://skmtc.dev/jane/apis/jdp-api/llms.txt) - [OpenAPI document](https://skmtc.dev/jane/apis/jdp-api/revisions/01798f613a5e?raw)
