DoseSpot Notifications API

Retrieve clinician notification counts and actionable items (transmission errors, refill requests, pharmacy responses), and subscribe to push notifications to avoid polling the API for new events.

OpenAPI Specification

dosespot-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: DoseSpot API
  description: >-
    DoseSpot is a Surescripts- and EPCS-certified electronic prescribing (eRx)
    platform. The REST API (v2) lets healthcare and EHR/EMR applications embed
    the full prescription lifecycle - patients, prescriptions, medications and
    drug search, pharmacies, clinicians/prescribers, eligibility, and
    notifications. Requests are authenticated with an OAuth2 Bearer access token
    obtained from the token endpoint and a per-application Subscription-Key
    header; access is scoped by clinic and clinician keys. Endpoint paths,
    request/response schemas, and field names below are modeled from DoseSpot's
    publicly described API v2 surface and integration guides; consult DoseSpot's
    partner documentation for the authoritative, complete contract.
  termsOfService: https://dosespot.com/
  contact:
    name: DoseSpot Support
    url: https://dosespot.com/full-integration/
  version: '2.0'
servers:
  - url: https://my.dosespot.com/webapi/v2
    description: Production
  - url: https://my.staging.dosespot.com/webapi/v2
    description: Staging
security:
  - bearerAuth: []
    subscriptionKey: []
tags:
  - name: Patients
    description: Patient demographics, allergies, and self-reported medications.
  - name: Prescriptions
    description: Prescription creation, transmission, status, and medication history.
  - name: Medications
    description: Medi-Span drug search and interaction checks.
  - name: Pharmacies
    description: Surescripts pharmacy search and patient pharmacy management.
  - name: Prescribers
    description: Clinician (prescriber) and clinic staff management.
  - name: Notifications
    description: Clinician notification counts and actionable items.
paths:
  /patients:
    get:
      operationId: searchPatients
      tags:
        - Patients
      summary: Search patients
      description: Search for patients within the clinic by name, date of birth, or other demographics.
      parameters:
        - name: firstName
          in: query
          schema:
            type: string
        - name: lastName
          in: query
          schema:
            type: string
        - name: dateOfBirth
          in: query
          schema:
            type: string
            format: date
        - name: pageNumber
          in: query
          schema:
            type: integer
      responses:
        '200':
          description: A paged list of patients.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PatientListResult'
    post:
      operationId: createPatient
      tags:
        - Patients
      summary: Create a patient
      description: Create a new patient record with demographics required for prescribing.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Patient'
      responses:
        '200':
          description: The created patient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PatientResult'
  /patients/{patientId}:
    get:
      operationId: getPatient
      tags:
        - Patients
      summary: Get a patient
      description: Retrieve a single patient record by ID.
      parameters:
        - name: patientId
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: The requested patient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PatientResult'
    post:
      operationId: updatePatient
      tags:
        - Patients
      summary: Update a patient
      description: Update demographics for an existing patient.
      parameters:
        - name: patientId
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Patient'
      responses:
        '200':
          description: The updated patient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PatientResult'
  /patients/{patientId}/prescriptions:
    get:
      operationId: getPatientPrescriptions
      tags:
        - Prescriptions
      summary: List a patient's prescriptions
      description: Retrieve prescriptions and their statuses for a patient.
      parameters:
        - name: patientId
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: A list of prescriptions for the patient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrescriptionListResult'
    post:
      operationId: createPatientPrescription
      tags:
        - Prescriptions
      summary: Create a prescription
      description: Create a new prescription for a patient, ready to be sent to a pharmacy.
      parameters:
        - name: patientId
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Prescription'
      responses:
        '200':
          description: The created prescription.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrescriptionResult'
  /patients/{patientId}/prescriptions/{prescriptionId}:
    get:
      operationId: getPatientPrescription
      tags:
        - Prescriptions
      summary: Get a prescription
      description: Retrieve a single prescription and its current status.
      parameters:
        - name: patientId
          in: path
          required: true
          schema:
            type: integer
        - name: prescriptionId
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: The requested prescription.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrescriptionResult'
  /patients/{patientId}/medicationHistory:
    get:
      operationId: getMedicationHistory
      tags:
        - Prescriptions
      summary: Get aggregated medication history
      description: Retrieve aggregated medication history data for a patient from pharmacy and payer sources.
      parameters:
        - name: patientId
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: The patient's medication history.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MedicationHistoryResult'
  /medications/search:
    get:
      operationId: searchMedications
      tags:
        - Medications
      summary: Search the drug database
      description: Search the Medi-Span drug database for medications and supplies by name.
      parameters:
        - name: name
          in: query
          required: true
          schema:
            type: string
        - name: pageNumber
          in: query
          schema:
            type: integer
      responses:
        '200':
          description: Matching medications.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MedicationSearchResult'
  /medications/interactions:
    post:
      operationId: checkMedicationInteractions
      tags:
        - Medications
      summary: Check drug interactions
      description: Run drug-drug and drug-allergy interaction checks for a set of medications.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InteractionCheckRequest'
      responses:
        '200':
          description: Detected interactions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InteractionCheckResult'
  /pharmacies/search:
    get:
      operationId: searchPharmacies
      tags:
        - Pharmacies
      summary: Search pharmacies
      description: Search the Surescripts pharmacy directory by name, city, state, ZIP, or specialty.
      parameters:
        - name: name
          in: query
          schema:
            type: string
        - name: city
          in: query
          schema:
            type: string
        - name: state
          in: query
          schema:
            type: string
        - name: zip
          in: query
          schema:
            type: string
        - name: specialty
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Matching pharmacies.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PharmacySearchResult'
  /patients/{patientId}/pharmacies:
    get:
      operationId: getPatientPharmacies
      tags:
        - Pharmacies
      summary: List a patient's pharmacies
      description: Retrieve the pharmacies saved to a patient for prescription routing.
      parameters:
        - name: patientId
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: The patient's pharmacies.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PharmacySearchResult'
    post:
      operationId: addPatientPharmacy
      tags:
        - Pharmacies
      summary: Add a pharmacy to a patient
      description: Save a pharmacy to a patient's preferred pharmacy list.
      parameters:
        - name: patientId
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddPharmacyRequest'
      responses:
        '200':
          description: The result of adding the pharmacy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResult'
  /clinicians:
    get:
      operationId: searchClinicians
      tags:
        - Prescribers
      summary: Search clinicians
      description: Retrieve clinicians (prescribers) and supporting staff in the clinic.
      parameters:
        - name: pageNumber
          in: query
          schema:
            type: integer
      responses:
        '200':
          description: A list of clinicians.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClinicianListResult'
    post:
      operationId: createClinician
      tags:
        - Prescribers
      summary: Create a clinician
      description: Create a new clinician (prescriber) within the clinic.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Clinician'
      responses:
        '200':
          description: The created clinician.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClinicianResult'
  /clinicians/{clinicianId}:
    get:
      operationId: getClinician
      tags:
        - Prescribers
      summary: Get a clinician
      description: Retrieve a single clinician (prescriber) record by ID.
      parameters:
        - name: clinicianId
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: The requested clinician.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClinicianResult'
  /notifications/counts:
    get:
      operationId: getNotificationCounts
      tags:
        - Notifications
      summary: Get notification counts
      description: >-
        Retrieve the count of pending notifications and actionable items
        (transmission errors, refill requests, pharmacy responses) for the
        authenticated clinician.
      responses:
        '200':
          description: Notification counts.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationCountResult'
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        OAuth2 access token obtained from the DoseSpot token endpoint
        (POST /webapi/v2/connect/token) using your clinic and clinician
        credentials, sent as an Authorization: Bearer header.
    subscriptionKey:
      type: apiKey
      in: header
      name: Subscription-Key
      description: Per-application subscription key issued by DoseSpot.
  schemas:
    ApiResult:
      type: object
      properties:
        Result:
          $ref: '#/components/schemas/ResultStatus'
    ResultStatus:
      type: object
      properties:
        ResultCode:
          type: string
          description: OK or ERROR.
        ResultDescription:
          type: string
    Patient:
      type: object
      properties:
        PatientId:
          type: integer
        Prefix:
          type: string
        FirstName:
          type: string
        MiddleName:
          type: string
        LastName:
          type: string
        Suffix:
          type: string
        DateOfBirth:
          type: string
          format: date
        Gender:
          type: string
          description: Male, Female, or Unknown.
        Email:
          type: string
        PrimaryPhone:
          type: string
        PrimaryPhoneType:
          type: string
        Address1:
          type: string
        Address2:
          type: string
        City:
          type: string
        State:
          type: string
        ZipCode:
          type: string
        Active:
          type: boolean
        NonDoseSpotMedicalRecordNumber:
          type: string
    PatientResult:
      allOf:
        - $ref: '#/components/schemas/ApiResult'
        - type: object
          properties:
            Item:
              $ref: '#/components/schemas/Patient'
    PatientListResult:
      allOf:
        - $ref: '#/components/schemas/ApiResult'
        - type: object
          properties:
            Items:
              type: array
              items:
                $ref: '#/components/schemas/Patient'
            PageResult:
              $ref: '#/components/schemas/PageResult'
    Prescription:
      type: object
      properties:
        PrescriptionId:
          type: integer
        Status:
          type: string
          description: e.g. Entered, Printed, Sending, eRxSent, FaxSent, Error, Deleted, Requested, Edited, EpcsSigned.
        WrittenDate:
          type: string
          format: date-time
        Directions:
          type: string
        Quantity:
          type: string
        DispenseUnitId:
          type: integer
        Refills:
          type: string
        DaysSupply:
          type: integer
        PharmacyId:
          type: integer
        PharmacyNotes:
          type: string
        NoSubstitutions:
          type: boolean
        Medication:
          $ref: '#/components/schemas/Medication'
    PrescriptionResult:
      allOf:
        - $ref: '#/components/schemas/ApiResult'
        - type: object
          properties:
            Item:
              $ref: '#/components/schemas/Prescription'
    PrescriptionListResult:
      allOf:
        - $ref: '#/components/schemas/ApiResult'
        - type: object
          properties:
            Items:
              type: array
              items:
                $ref: '#/components/schemas/Prescription'
            PageResult:
              $ref: '#/components/schemas/PageResult'
    Medication:
      type: object
      properties:
        NDC:
          type: string
        LexiGenProductId:
          type: integer
        LexiDrugSynId:
          type: integer
        LexiSynonymTypeId:
          type: integer
        Name:
          type: string
        Strength:
          type: string
        GenericProductName:
          type: string
        DrugClassification:
          type: string
        Schedule:
          type: string
          description: DEA schedule for controlled substances.
    MedicationSearchResult:
      allOf:
        - $ref: '#/components/schemas/ApiResult'
        - type: object
          properties:
            Items:
              type: array
              items:
                $ref: '#/components/schemas/Medication'
            PageResult:
              $ref: '#/components/schemas/PageResult'
    MedicationHistoryResult:
      allOf:
        - $ref: '#/components/schemas/ApiResult'
        - type: object
          properties:
            Items:
              type: array
              items:
                $ref: '#/components/schemas/Medication'
    InteractionCheckRequest:
      type: object
      properties:
        PatientId:
          type: integer
        MedicationIds:
          type: array
          items:
            type: integer
    InteractionCheckResult:
      allOf:
        - $ref: '#/components/schemas/ApiResult'
        - type: object
          properties:
            Interactions:
              type: array
              items:
                type: object
                properties:
                  Severity:
                    type: string
                  Description:
                    type: string
    Pharmacy:
      type: object
      properties:
        PharmacyId:
          type: integer
        StoreName:
          type: string
        Address1:
          type: string
        Address2:
          type: string
        City:
          type: string
        State:
          type: string
        ZipCode:
          type: string
        PrimaryPhone:
          type: string
        PrimaryFax:
          type: string
        PharmacySpecialties:
          type: array
          items:
            type: string
    PharmacySearchResult:
      allOf:
        - $ref: '#/components/schemas/ApiResult'
        - type: object
          properties:
            Items:
              type: array
              items:
                $ref: '#/components/schemas/Pharmacy'
            PageResult:
              $ref: '#/components/schemas/PageResult'
    AddPharmacyRequest:
      type: object
      properties:
        PharmacyId:
          type: integer
        SetAsPrimary:
          type: boolean
    Clinician:
      type: object
      properties:
        ClinicianId:
          type: integer
        Prefix:
          type: string
        FirstName:
          type: string
        MiddleName:
          type: string
        LastName:
          type: string
        Suffix:
          type: string
        DateOfBirth:
          type: string
          format: date
        Email:
          type: string
        NPINumber:
          type: string
        DEANumber:
          type: string
        Address1:
          type: string
        City:
          type: string
        State:
          type: string
        ZipCode:
          type: string
        PrimaryPhone:
          type: string
        PrimaryFax:
          type: string
        Roles:
          type: array
          items:
            type: string
    ClinicianResult:
      allOf:
        - $ref: '#/components/schemas/ApiResult'
        - type: object
          properties:
            Item:
              $ref: '#/components/schemas/Clinician'
    ClinicianListResult:
      allOf:
        - $ref: '#/components/schemas/ApiResult'
        - type: object
          properties:
            Items:
              type: array
              items:
                $ref: '#/components/schemas/Clinician'
            PageResult:
              $ref: '#/components/schemas/PageResult'
    NotificationCountResult:
      allOf:
        - $ref: '#/components/schemas/ApiResult'
        - type: object
          properties:
            PendingPrescriptionsCount:
              type: integer
            TransmissionErrorsCount:
              type: integer
            RefillRequestsCount:
              type: integer
            PharmacyResponsesCount:
              type: integer
            TotalNotificationCount:
              type: integer
    PageResult:
      type: object
      properties:
        CurrentPage:
          type: integer
        TotalPages:
          type: integer
        PageSize:
          type: integer
        HasPrevious:
          type: boolean
        HasNext:
          type: boolean