drchrono Clinical API

Create and manage clinical resources

OpenAPI Specification

drchrono-clinical-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  version: v4 - Hunt Valley
  description: RESTful API for the drchrono EHR platform providing access to patient records, clinical encounters, appointments, prescriptions, billing, lab orders, and practice administration with OAuth 2.0 authentication and HIPAA-compliant data exchange.
  x-logo:
    url: https://www.drchrono.com/site_media/images/logos/drchrono-black-wpadding.png
    altText: DrChrono Logo
  title: DrChrono EHR REST Administrative Clinical API
servers:
- url: https://app.drchrono.com
tags:
- description: Create and manage clinical resources
  name: Clinical
paths:
  /api/claim_billing_notes:
    post:
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClaimBillingNotes'
          description: Created
        '405':
          content: {}
          description: Method Not Allowed
        '404':
          content: {}
          description: Not Found
        '403':
          content: {}
          description: Permission Denied
        '401':
          content: {}
          description: Unauthorized
        '400':
          content: {}
          description: Bad Request
        '500':
          content: {}
          description: Internal Server Error
      parameters:
      - schema:
          type: integer
          description: ''
          title: appointment
        required: false
        description: ''
        name: appointment
        in: query
      - schema:
          type: integer
          description: ''
          title: doctor
        required: false
        description: ''
        name: doctor
        in: query
      tags:
      - Clinical
      x-permissions:
      - billing
      - show-billing-tab
      x-practice-access: '"share_patients" need to be set for data access among practice'
      security:
      - drchrono_oauth2:
        - billing:read
        - billing:write
      operationId: claim_billing_notes_create
      description: Create a new billing note
    get:
      responses:
        '200':
          content:
            application/json:
              schema:
                title: ''
                type: object
                description: Paginated Result
                properties:
                  previous:
                    type: string
                    description: Previous paginated page
                    title: previous
                  data:
                    items:
                      $ref: '#/components/schemas/ClaimBillingNotes'
                    type: array
                    description: result data
                    title: data
                  next:
                    type: string
                    description: Next Paginated page
                    title: next
          description: OK
        '405':
          content: {}
          description: Method Not Allowed
        '404':
          content: {}
          description: Not Found
        '403':
          content: {}
          description: Permission Denied
        '401':
          content: {}
          description: Unauthorized
        '400':
          content: {}
          description: Bad Request
        '500':
          content: {}
          description: Internal Server Error
      parameters:
      - schema:
          type: string
          description: The pagination cursor value.
          title: Cursor
        required: false
        name: cursor
        in: query
      - schema:
          type: integer
          description: Number of results to return per page.
          title: Page size
        required: false
        name: page_size
        in: query
      - schema:
          type: integer
          description: ''
          title: appointment
        required: false
        description: ''
        name: appointment
        in: query
      - schema:
          type: integer
          description: ''
          title: doctor
        required: false
        description: ''
        name: doctor
        in: query
      tags:
      - Clinical
      x-permissions:
      - billing
      - show-billing-tab
      x-practice-access: '"share_patients" need to be set for data access among practice'
      security:
      - drchrono_oauth2:
        - billing:read
        - billing:write
      operationId: claim_billing_notes_list
      description: Retrieve or search billing notes
  /api/signed_consent_forms:
    post:
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SignedConsentForm'
          description: Created
        '405':
          content: {}
          description: Method Not Allowed
        '404':
          content: {}
          description: Not Found
        '403':
          content: {}
          description: Permission Denied
        '401':
          content: {}
          description: Unauthorized
        '400':
          content: {}
          description: Bad Request
        '500':
          content: {}
          description: Internal Server Error
      parameters:
      - schema:
          type: integer
          title: patient
        required: true
        description: ID of the patient to associate with the consent form
        name: patient
        in: query
      - schema:
          type: integer
          title: appointment
        required: true
        description: ID of the appointment to associate with the consent form
        name: appointment
        in: query
      - schema:
          type: integer
          title: consent_form
        required: true
        description: ID of the consent form that was signed
        name: consent_form
        in: query
      - schema:
          type: file
          title: signature_file
        required: false
        description: File containing the patient's signature
        name: signature_file
        in: query
      tags:
      - Clinical
      description: Create a signed consent form record for a patient and consent form
      x-permissions:
      - manage-patients
      summary: signed_consent_forms Create
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/SignedConsentFormUpdate'
      x-practice-access: '"share_consent_forms" need to be set for data access among practice'
      security:
      - drchrono_oauth2:
        - patients:read
        - patients:write
      operationId: signed_consent_forms_create
    patch:
      responses:
        '204':
          content: {}
          description: No Content
        '405':
          content: {}
          description: Method Not Allowed
        '404':
          content: {}
          description: Not Found
        '403':
          content: {}
          description: Permission Denied
        '401':
          content: {}
          description: Unauthorized
        '400':
          content: {}
          description: Bad Request
        '500':
          content: {}
          description: Internal Server Error
      parameters:
      - schema:
          type: integer
          description: ID of the consent form signature to update
          title: id
        required: true
        name: id
        in: query
      - schema:
          type: integer
          title: patient
        required: false
        description: ID of the patient to filter by
        name: patient
        in: query
      tags:
      - Clinical
      description: Update an existing consent form signature
      x-permissions:
      - manage-patients
      summary: signed_consent_forms Update
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                archived:
                  type: boolean
                  description: Whether to archive the consent form signature
                appointment:
                  type: integer
                  description: ID of the appointment to assign the consent form signature to
                id:
                  type: integer
                  description: ID of the consent form signature to update
                signature_file:
                  type: string
                  description: Base64-encoded signature file to update
                  format: binary
              examples:
                ArchiveSignature:
                  value:
                    archived: true
                    id: 12345
                AssignToDifferentAppointment:
                  value:
                    appointment: 67890
                    id: 12345
                UpdateSignatureFile:
                  value:
                    id: 12345
                    signature_file: base64-encoded-signature-file
      x-practice-access: '"share_consent_forms" need to be set for data access among practice'
      security:
      - drchrono_oauth2:
        - patients:read
        - patients:write
      operationId: signed_consent_forms_partial_update
    get:
      responses:
        '200':
          content:
            application/json:
              schema:
                title: ''
                type: object
                description: Paginated Result
                properties:
                  previous:
                    type: string
                    description: Previous paginated page
                    title: previous
                  results:
                    items:
                      $ref: '#/components/schemas/SignedConsentForm'
                    type: array
                    description: List of consent form signatures
                    title: results
                  next:
                    type: string
                    description: Next Paginated page
                    title: next
          description: OK
        '405':
          content: {}
          description: Method Not Allowed
        '404':
          content: {}
          description: Not Found
        '403':
          content: {}
          description: Permission Denied
        '401':
          content: {}
          description: Unauthorized
        '400':
          content: {}
          description: Bad Request
        '500':
          content: {}
          description: Internal Server Error
      parameters:
      - schema:
          type: string
          description: The pagination cursor value.
          title: Cursor
        required: false
        name: cursor
        in: query
      - schema:
          type: integer
          description: Number of results to return per page.
          title: Page size
        required: false
        name: page_size
        in: query
      - schema:
          type: integer
          description: ID of the patient to filter by
          title: patient
        required: false
        description: ''
        name: patient
        in: query
      - schema:
          type: integer
          description: ID of the doctor to filter by
          title: doctor
        required: false
        description: ''
        name: doctor
        in: query
      tags:
      - Clinical
      description: Retrieve or search signed consent forms
      x-permissions:
      - manage-patients
      summary: signed_consent_forms Get
      requestBody:
        content:
          application/json:
            examples:
              example1:
                description: Example of filtering by patient
                value:
                  patient: 12345
            schema:
              $ref: '#/components/schemas/SignedConsentForm'
      x-practice-access: '"share_consent_forms" need to be set for data access among practice'
      security:
      - drchrono_oauth2:
        - patients:read
        - patients:write
      operationId: signed_consent_forms_list
  /api/custom_appointment_fields:
    post:
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomAppointmentFieldType'
          description: Created
        '405':
          content: {}
          description: Method Not Allowed
        '404':
          content: {}
          description: Not Found
        '403':
          content: {}
          description: Permission Denied
        '401':
          content: {}
          description: Unauthorized
        '400':
          content: {}
          description: Bad Request
        '500':
          content: {}
          description: Internal Server Error
      parameters:
      - schema:
          type: integer
          description: ''
          title: doctor
        required: false
        description: ''
        name: doctor
        in: query
      tags:
      - Clinical
      x-permissions:
      - clinical-notes
      - settings
      x-practice-access: '"share_patients" need to be set for data access among practice'
      security:
      - drchrono_oauth2:
        - clinical:read
        - clinical:write
        - settings:read
        - settings:write
      operationId: custom_appointment_fields_create
      description: Create custom appointment fields
    get:
      responses:
        '200':
          content:
            application/json:
              schema:
                title: ''
                type: object
                description: Paginated Result
                properties:
                  previous:
                    type: string
                    description: Previous paginated page
                    title: previous
                  data:
                    items:
                      $ref: '#/components/schemas/CustomAppointmentFieldType'
                    type: array
                    description: result data
                    title: data
                  next:
                    type: string
                    description: Next Paginated page
                    title: next
          description: OK
        '405':
          content: {}
          description: Method Not Allowed
        '404':
          content: {}
          description: Not Found
        '403':
          content: {}
          description: Permission Denied
        '401':
          content: {}
          description: Unauthorized
        '400':
          content: {}
          description: Bad Request
        '500':
          content: {}
          description: Internal Server Error
      parameters:
      - schema:
          type: string
          description: The pagination cursor value.
          title: Cursor
        required: false
        name: cursor
        in: query
      - schema:
          type: integer
          description: Number of results to return per page.
          title: Page size
        required: false
        name: page_size
        in: query
      - schema:
          type: integer
          description: ''
          title: doctor
        required: false
        description: ''
        name: doctor
        in: query
      tags:
      - Clinical
      x-permissions:
      - clinical-notes
      - settings
      x-practice-access: '"share_patients" need to be set for data access among practice'
      security:
      - drchrono_oauth2:
        - clinical:read
        - clinical:write
        - settings:read
        - settings:write
      operationId: custom_appointment_fields_list
      description: Retrieve or search custom appointment fields
  /api/lab_orders/{id}:
    put:
      responses:
        '204':
          content: {}
          description: No Content
        '405':
          content: {}
          description: Method Not Allowed
        '404':
          content: {}
          description: Not Found
        '403':
          content: {}
          description: Permission Denied
        '401':
          content: {}
          description: Unauthorized
        '400':
          content: {}
          description: Bad Request
        '500':
          content: {}
          description: Internal Server Error
      parameters:
      - schema:
          type: string
          description: ''
          title: ''
        required: true
        name: id
        in: path
      - schema:
          type: string
          description: ''
          title: since
        required: false
        description: ''
        name: since
        in: query
      - schema:
          type: integer
          description: ''
          title: doctor
        required: false
        description: ''
        name: doctor
        in: query
      tags:
      - Clinical
      x-permissions: []
      x-practice-access: '"share_patients" need to be set for data access among practice'
      security:
      - drchrono_oauth2:
        - labs:read
        - labs:write
      operationId: lab_orders_update
      description: Update an existing lab order
    patch:
      responses:
        '204':
          content: {}
          description: No Content
        '405':
          content: {}
          description: Method Not Allowed
        '404':
          content: {}
          description: Not Found
        '403':
          content: {}
          description: Permission Denied
        '401':
          content: {}
          description: Unauthorized
        '400':
          content: {}
          description: Bad Request
        '500':
          content: {}
          description: Internal Server Error
      parameters:
      - schema:
          type: string
          description: ''
          title: ''
        required: true
        name: id
        in: path
      - schema:
          type: string
          description: ''
          title: since
        required: false
        description: ''
        name: since
        in: query
      - schema:
          type: integer
          description: ''
          title: doctor
        required: false
        description: ''
        name: doctor
        in: query
      tags:
      - Clinical
      x-permissions: []
      x-practice-access: '"share_patients" need to be set for data access among practice'
      security:
      - drchrono_oauth2:
        - labs:read
        - labs:write
      operationId: lab_orders_partial_update
      description: Update an existing lab order
    get:
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LabOrder'
          description: OK
        '405':
          content: {}
          description: Method Not Allowed
        '404':
          content: {}
          description: Not Found
        '403':
          content: {}
          description: Permission Denied
        '401':
          content: {}
          description: Unauthorized
        '400':
          content: {}
          description: Bad Request
        '500':
          content: {}
          description: Internal Server Error
      parameters:
      - schema:
          type: string
          description: ''
          title: ''
        required: true
        name: id
        in: path
      - schema:
          type: string
          description: ''
          title: since
        required: false
        description: ''
        name: since
        in: query
      - schema:
          type: integer
          description: ''
          title: doctor
        required: false
        description: ''
        name: doctor
        in: query
      tags:
      - Clinical
      x-permissions: []
      x-practice-access: '"share_patients" need to be set for data access among practice'
      security:
      - drchrono_oauth2:
        - labs:read
        - labs:write
      operationId: lab_orders_read
      description: Retrieve an existing lab order
    delete:
      responses:
        '204':
          content: {}
          description: No Content
        '405':
          content: {}
          description: Method Not Allowed
        '404':
          content: {}
          description: Not Found
        '403':
          content: {}
          description: Permission Denied
        '401':
          content: {}
          description: Unauthorized
        '400':
          content: {}
          description: Bad Request
        '500':
          content: {}
          description: Internal Server Error
      parameters:
      - schema:
          type: string
          description: ''
          title: ''
        required: true
        name: id
        in: path
      - schema:
          type: string
          description: ''
          title: since
        required: false
        description: ''
        name: since
        in: query
      - schema:
          type: integer
          description: ''
          title: doctor
        required: false
        description: ''
        name: doctor
        in: query
      tags:
      - Clinical
      x-permissions: []
      x-practice-access: '"share_patients" need to be set for data access among practice'
      security:
      - drchrono_oauth2:
        - labs:read
        - labs:write
      operationId: lab_orders_delete
      description: Delete an existing lab order
  /api/clinical_notes_list:
    post:
      responses:
        '201':
          content:
            application/json:
              schema:
                properties:
                  status:
                    type: string
                    description: Status of the request. Upon creation this will be "In progress"
                    title: status
                  uuid:
                    type: string
                    description: UUID of the batch of patients.
                    title: uuid
                  description:
                    type: string
                    description: Contains link to load the batch by UUID
          description: Created
        '404':
          content: {}
          description: Not Found
        '403':
          content: {}
          description: Permission Denied
        '401':
          content: {}
          description: Unauthorized
        '400':
          content: {}
          description: Bad Request
        '500':
          content: {}
          description: Internal Server Error
      parameters:
      - schema:
          type: string
          title: order_by
        required: false
        description: 'Order results by a specific field. Valid options include [id, updated_at]. Default: id.'
        name: order_by
        in: query
      - schema:
          type: integer
          description: Number of results to return per page. Value between 1 and 1000.
          title: Page size
        required: false
        name: page_size
        in: query
      - schema:
          type: integer
          description: Number of page to return. Value between 1 and max number of pages in result set.
          title: Page
        required: false
        name: page
        in: query
      - schema:
          type: integer
          description: Patient ID filter
          title: patient
        required: false
        description: Patient ID filter
        name: patient
        in: query
      - schema:
          type: integer
          description: Office ID filter
          title: office
        required: false
        description: Office ID filter
        name: office
        in: query
      - schema:
          type: integer
          description: Doctor ID filter
          title: doctor
        required: false
        description: Doctor ID filter
        name: doctor
        in: query
      - schema:
          type: string
          description: Inclusive lower bound on clinical note updated/created time.
          title: since
        required: false
        description: Inclusive lower bound on clinical note updated/created time.
        name: since
        in: query
      - schema:
          type: string
          description: Inclusive bounded date range on appointment scheduled date
          title: date_range
        required: false
        description: Inclusive bounded date range on appointment scheduled date
        name: date_range
        in: query
      - schema:
          type: string
          description: Filter on specific appointment scheduled date
          title: date
        required: false
        description: Filter on specific appointment scheduled date
        name: date
        in: query
      - schema:
          type: boolean
          description: When `true` includes yellow notes
          title: verbose
        required: false
        description: When `true` includes yellow notes
        name: verbose
        in: query
      tags:
      - Clinical
      x-permissions:
      - clinical-notes
      x-practice-access: '"share_clinical_templates" need to be set for data access among practice'
      security:
      - drchrono_oauth2:
        - clinical:read
        - clinical:write
      operationId: clinical_notes_list_create
      description: 'Create clinical note list request.  Use the UUID returned in the response to retrieve the batch of records. Results returned in order of ID.

        '
    get:
      responses:
        '200':
          content:
            application/json:
              schema:
                title: ''
                type: object
                description: Paginated Result
                properties:
                  status:
                    type: string
                    description: 'Status of the request.  Possible values are "Complete" or "In progress".

                      '
                    title: status
                  pagination:
                    properties:
                      count:
                        type: int
                        description: the count of all records in the result set.
                        title: count
                      pages:
                        type: int
                        description: the total pages of all pages in the result set.
                        title: pages
                      page:
                        type: int
                        description: the current page (starting with 1) in the total pages.
                        title: page
                    type: object
                    description: information on the total pages, current page and total count.
                    title: pagination
                  results:
                    items:
                      $ref: '#/components/schemas/ClinicalNote'
                    type: array
                    description: result data. only presented when the status is "Complete"
                    title: data
                  uuid:
                    type: string
                    description: UUID of the batch of patients.
                    title: uuid
          description: OK
        '404':
          content: {}
          description: Not Found
        '403':
          content: {}
          description: Permission Denied
        '401':
          content: {}
          description: Unauthorized
        '400':
          content: {}
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncResourceError'
          description: Internal Server Error
      parameters:
      - schema:
          type: string
          description: ''
          title: uuid
        required: false
        description: 'The UUID token for the batch of clinical notes.  This is returned in the response of the `create` endpoint.

          '
        name: uuid
        in: query
      tags:
      - Clinical
      x-permissions:
      - clinical-notes
      x-practice-access: '"share_patients" need to be set for data access among practice'
      security:
      - drchrono_oauth2:
        - clinical:read
      operationId: clinical_notes_list_list
      description: Retrieve or search clinical notes in batches. Results returned in order of ID.
  /api/custom_vitals/{id}:
    get:
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomVitalType'
          description: OK
        '405':
          content: {}
          description: Method Not Allowed
        '404':
          content: {}
          description: Not Found
        '403':
          content: {}
          description: Permission Denied
        '401':
          content: {}
          description: Unauthorized
        '400':
          content: {}
          description: Bad Request
        '500':
          content: {}
          description: Internal Server Error
      parameters:
      - schema:
          type: string
          description: ''
          title: ''
        required: true
        name: id
        in: path
      - schema:
          type: integer
          description: ''
          title: doctor
        required: false
        description: ''
        name: doctor
        in: query
      tags:
      - Clinical
      x-permissions:
      - clinical-notes
      - settings
      x-practice-access: '"share_clinical_templates" need to be set for data access among practice'
      security:
      - drchrono_oauth2:
        - clinical:read
        - clinical:write
        - settings:read
        - settings:write
      operationId: custom_vitals_read
      description: Retrieve an existing custom vital type
  /api/sublabs/{id}:
    put:
      responses:
        '204':
          content: {}
          description: No Content
        '405':
          content: {}
          description: Method Not Allowed
        '404':
          content: {}
          description: Not Found
        '403':
          content: {}
          description: Permission Denied
        '401':
          content: {}
          description: Unauthorized
        '400':
          content: {}
          description: Bad Request
        '500':
          content: {}
          description: Internal Server Error
      parameters:
      - schema:
          type: integer
          description: A unique integer value identifying this lab vendor location.
          title: ID
        required: true
        name: id
        in: path
      tags:
      - Clinical
      x-permissions: []
      x-practice-access: Data access among practice is available
      security:
      - drchrono_oauth2:
        - labs:read
        - labs:write
      operationId: sublabs_update
      description: Update an existing sub vendor
    patch:
      responses:
        '204':
          content: {}
          description: No Content
        '405':
          content: {}
          description: Method Not Allowed
        '404':
          content: {}
          description: Not Found
        '403':
          content: {}
          description: Permission Denied
        '401':
          content: {}
          description: Unauthorized
        '400':
          content: {}
          description: Bad Request
        '500':
          content: {}
          description: Internal Server Error
      parameters:
      - schema:
          type: integer
          description: A unique integer value identifying this lab vendor location.
          title: ID
        required: true
        name: id
        in: path
      tags:
      - Clinical
      x-permissions: []
      x-practice-access: Data access among practice is available
      security:
      - drchrono_oauth2:
        - labs:read
        - labs:write
      operationId: sublabs_partial_update
      description: Update an existing sub vendor
    get:
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LabVendorLocation'
          description: OK
        '405':
          content: {}
          description: Method Not Allowed
        '404':
          content: {}
          description: Not Found
        '403':
          content: {}
          description: Permission Denied
        '401':
          content: {}
          description: Unauthorized
        '400':
          content: {}
          description: Bad Request
        '500':
          content: {}
          description: Internal Server Error
      parameters:
      - schema:
          type: integer
          description: A unique integer value identifying this lab vendor location.
          title: ID
        required: true
        name: id
        in: path
      tags:
      - Clinical
      x-permissions: []
      x-practice-access: Data access among practice is available
      security:
      - drchrono_oauth2:
        - labs:read
        - labs:write
      operationId: sublabs_read
      description: Retrieve an existing sub vendor
    delete:
      responses:
        '204':
          content: {}
          description: No Content
        '405':
          content: {}
          description: Method Not Allowed
        '404':
    

# --- truncated at 32 KB (623 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/drchrono/refs/heads/main/openapi/drchrono-clinical-api-openapi.yml