drchrono Billing API

Create and manage billing resources

OpenAPI Specification

drchrono-billing-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 Billing API
servers:
- url: https://app.drchrono.com
tags:
- description: Create and manage billing resources
  name: Billing
paths:
  /api/day_sheet_charges:
    get:
      description: Retrieve daysheet charges report for a given date range
      parameters:
      - schema:
          type: string
          description: Start date of report (M/D/YYYY)
          title: start_date
        required: true
        name: start_date
        in: query
      - schema:
          type: string
          description: End date of report (M/D/YYYY)
          title: end_date
        required: true
        name: end_date
        in: query
      - schema:
          type: string
          description: Filters report by scheduled time or date of entry if not provided. Can be one of ('scheduled_time', ' ')
          title: charges_date_type
        required: false
        name: charges_date_type
        in: query
      - schema:
          type: string
          description: Filters report by given value. Can be one of ('reimbursement_analysis', ' ')
          title: report_type
        required: false
        name: report_type
        in: query
      - schema:
          type: string
          description: Filters report by professional or institutional claims. Can be one of ('institutional', 'professional', ' ')
          title: claim_type
        required: false
        name: claim_type
        in: query
      - schema:
          type: integer
          description: Filters report by a given patient ID
          title: patient_id
        required: false
        name: patient_id
        in: query
      - schema:
          type: string
          description: Filters report by a given office
          title: office
        required: false
        name: office_id
        in: query
      - schema:
          type: integer
          description: Filters report by a given examroom ID
          title: examroom_id
        required: false
        name: examroom_id
        in: query
      - schema:
          type: boolean
          description: Runs report for all providers in the practice group
          title: pg_mode
        required: false
        name: pg_mode
        in: query
      tags:
      - Billing
      x-permissions:
      - billing
      - access-patient-payments
      security:
      - drchrono_oauth2:
        - billing
      operationId: daysheet_charges_list
  /api/eligibility_checks:
    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/Coverage'
                    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: string
          description: ''
          title: appointment_date
        required: false
        description: ''
        name: appointment_date
        in: query
      - schema:
          type: integer
          description: ''
          title: doctor
        required: false
        description: ''
        name: doctor
        in: query
      - schema:
          type: string
          description: ''
          title: query_date_range
        required: false
        description: ''
        name: query_date_range
        in: query
      - schema:
          type: string
          description: ''
          title: appointment_date_range
        required: false
        description: ''
        name: appointment_date_range
        in: query
      - schema:
          type: string
          description: ''
          title: query_date
        required: false
        description: ''
        name: query_date
        in: query
      - schema:
          type: integer
          description: ''
          title: patient
        required: false
        description: ''
        name: patient
        in: query
      tags:
      - Billing
      x-permissions:
      - scheduling
      - manage-patients
      x-practice-access: '"share_patients" need to be set for data access among practice'
      security:
      - drchrono_oauth2:
        - calendar:read
        - calendar:write
        - patients:read
        - patients:write
      operationId: eligibility_checks_list
      description: Retrieve or search past eligibility checks for patient
  /api/patient_authorizations:
    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/PatientAuthorization'
                    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: patient
        required: false
        description: ''
        name: patient
        in: query
      - schema:
          type: integer
          description: ''
          title: doctor
        required: false
        description: ''
        name: doctor
        in: query
      - schema:
          type: string
          description: ''
          title: since
        required: false
        description: ''
        name: start_date
        in: query
      - schema:
          type: string
          description: ''
          title: date_range
        required: false
        description: ''
        name: date_range
        in: query
      - schema:
          type: string
          description: ''
          title: date
        required: false
        description: ''
        name: end_date
        in: query
      tags:
      - Billing
      x-permissions: null
      x-practice-access: '"share_patients" need to be set for data access among practice'
      security: null
      operationId: patient_authorizations_list
      description: Retrieve or search patient authorizations
  /api/custom_insurance_plan_names/{id}:
    get:
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomInsurancePlanName'
          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: user
        required: false
        description: ''
        name: user
        in: query
      - schema:
          type: string
          description: ''
          title: name
        required: false
        description: ''
        name: name
        in: query
      - schema:
          type: integer
          description: ''
          title: doctor
        required: false
        description: ''
        name: doctor
        in: query
      tags:
      - Billing
      x-permissions:
      - settings
      x-practice-access: Data access among practice is available
      security:
      - drchrono_oauth2:
        - settings:read
        - settings:write
      operationId: custom_insurance_plan_names_read
      description: Retrieve an existing custom insurance plan name
  /api/line_items_list:
    post:
      responses:
        '201':
          content:
            application/json:
              schema:
                properties:
                  status:
                    type: string
                    description: 'Status of the request.  Possible values are "In progress", "Complete", "Failed", "Canceled".

                      '
                    title: status
                  uuid:
                    type: string
                    description: UUID of the batch of billing line items.
                    title: uuid
                  description:
                    type: string
                    description: Contains link to load the batch by UUID
          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: 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.
          title: Page size
        required: false
        name: page_size
        in: query
      - schema:
          type: string
          description: Date of billing line item creation
          title: posted_date
        required: false
        description: ''
        name: posted_date
        in: query
      - schema:
          type: integer
          description: Patient associated with the billing line item
          title: patient
        required: false
        description: ''
        name: patient
        in: query
      - schema:
          type: integer
          description: Office associated with the billing line item
          title: office
        required: false
        description: ''
        name: office
        in: query
      - schema:
          type: integer
          description: ''
          title: doctor
        required: false
        description: ''
        name: doctor
        in: query
      - schema:
          type: string
          description: ''
          title: since
        required: false
        description: ''
        name: since
        in: query
      - schema:
          type: integer
          description: ''
          title: appointment
        required: false
        description: ''
        name: appointment
        in: query
      - schema:
          type: string
          description: Date on which the service was rendered
          title: service_date
        required: false
        description: ''
        name: service_date
        in: query
      - schema:
          type: string
          description: Bounded date range in which the service was rendered
          title: service_date_range
        required: false
        description: ''
        name: service_date_range
        in: query
      tags:
      - Billing
      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
      operationId: line_items_list_create
      description: Create a billing line items list request
    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 "In progress", "Complete", "Failed", "Canceled".

                      '
                    title: status
                  results:
                    items:
                      $ref: '#/components/schemas/BillingLineItem'
                    type: array
                    description: result data. only presented when the status is "completed"
                    title: data
                  uuid:
                    type: string
                    description: UUID of the batch of billing line items.
                    title: uuid
          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:
            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 patients.  This is returned in the response of the create endpoint.

          '
        name: uuid
        in: query
      tags:
      - Billing
      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
      operationId: line_items_list_list
      description: Retrieve the list of billing line items
  /api/day_sheet_patient_payments:
    get:
      description: Retrieve daysheet cash report for a given date range
      parameters:
      - schema:
          type: string
          description: Start date of report (M/D/YYYY)
          title: start_date
        required: true
        name: start_date
        in: query
      - schema:
          type: string
          description: End date of report (M/D/YYYY)
          title: end_date
        required: true
        name: end_date
        in: query
      - schema:
          type: string
          description: Filters report by scheduled time or date of entry if not provided. Can be one of ('scheduled_time', ' ')
          title: charges_date_type
        required: false
        name: charges_date_type
        in: query
      - schema:
          type: string
          description: Filters report by given value. Can be one of ('reimbursement_analysis', ' ')
          title: report_type
        required: false
        name: report_type
        in: query
      - schema:
          type: string
          description: Filters report by professional or institutional claims. Can be one of ('institutional', 'professional', ' ')
          title: claim_type
        required: false
        name: claim_type
        in: query
      - schema:
          type: integer
          description: Filters report by a given patient ID
          title: patient_id
        required: false
        name: patient_id
        in: query
      - schema:
          type: string
          description: Filters report by a given office
          title: office
        required: false
        name: office
        in: query
      - schema:
          type: integer
          description: Filters report by a given examroom ID
          title: examroom_id
        required: false
        name: examroom_id
        in: query
      - schema:
          type: bool
          description: Enables backward compatibility for legacy version
          title: legacy
        required: false
        name: legacy
        in: query
      tags:
      - Billing
      x-permissions:
      - billing
      - access-patient-payments
      security:
      - drchrono_oauth2:
        - billing
      operationId: day_sheet_patient_payments_list
  /api/eligibility_checks/{id}:
    get:
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Coverage'
          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: appointment
        required: false
        description: ''
        name: appointment
        in: query
      - schema:
          type: string
          description: ''
          title: appointment_date
        required: false
        description: ''
        name: appointment_date
        in: query
      - schema:
          type: integer
          description: ''
          title: doctor
        required: false
        description: ''
        name: doctor
        in: query
      - schema:
          type: string
          description: ''
          title: query_date_range
        required: false
        description: ''
        name: query_date_range
        in: query
      - schema:
          type: string
          description: ''
          title: appointment_date_range
        required: false
        description: ''
        name: appointment_date_range
        in: query
      - schema:
          type: string
          description: ''
          title: query_date
        required: false
        description: ''
        name: query_date
        in: query
      - schema:
          type: integer
          description: ''
          title: patient
        required: false
        description: ''
        name: patient
        in: query
      tags:
      - Billing
      x-permissions:
      - scheduling
      - manage-patients
      x-practice-access: '"share_patients" need to be set for data access among practice'
      security:
      - drchrono_oauth2:
        - calendar:read
        - calendar:write
        - patients:read
        - patients:write
      operationId: eligibility_checks_read
      description: Retrieve an existing past eligibility check
  /api/comm_logs:
    post:
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PhoneCallLog'
          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: string
          description: ''
          title: since
        required: false
        description: ''
        name: since
        in: query
      - schema:
          type: integer
          description: ''
          title: patient
        required: false
        description: ''
        name: patient
        in: query
      - schema:
          type: integer
          description: ''
          title: doctor
        required: false
        description: ''
        name: doctor
        in: query
      tags:
      - Billing
      x-permissions:
      - scheduling
      x-practice-access: '"share_patients" need to be set for data access among practice'
      security:
      - drchrono_oauth2:
        - calendar:read
        - calendar:write
      operationId: comm_logs_create
      description: Create communication (phone call) logs
    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/PhoneCallLog'
                    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: string
          description: ''
          title: since
        required: false
        description: ''
        name: since
        in: query
      - schema:
          type: integer
          description: ''
          title: patient
        required: false
        description: ''
        name: patient
        in: query
      - schema:
          type: integer
          description: ''
          title: doctor
        required: false
        description: ''
        name: doctor
        in: query
      tags:
      - Billing
      x-permissions:
      - scheduling
      x-practice-access: '"share_patients" need to be set for data access among practice'
      security:
      - drchrono_oauth2:
        - calendar:read
        - calendar:write
      operationId: comm_logs_list
      description: Retrieve or search communicatioin (phone call) logs
  /api/day_sheet_credits:
    get:
      description: Retrieve daysheet credits/adjustments report for a given date range
      parameters:
      - schema:
          type: string
          description: Start date of report (M/D/YYYY)
          title: start_date
        required: true
        name: start_date
        in: query
      - schema:
          type: string
          description: End date of report (M/D/YYYY)
          title: end_date
        required: true
        name: end_date
        in: query
      - schema:
          type: string
          description: Filters report by posted date or deposit date. Defaults to date of entry if not provided. Can be one of ('credit', 'debit', ' ')
          title: credits_date_type
        required: false
        name: credits_date_type
        in: query
      - schema:
          type: string
          description: Filters report by given value. Can be one of ('reimbursement_analysis', ' ')
          title: report_type
        required: false
        name: report_type
        in: query
      - schema:
          type: string
          description: Filters report by professional or institutional claims. Can be one of ('institutional', 'professional', ' ')
          title: claim_type
        required: false
        name: claim_type
        in: query
      - schema:
          type: integer
          description: Filters report by a given patient ID
          title: patient_id
        required: false
        name: patient_id
        in: query
      - schema:
          type: string
          description: Filters report by a given office
          title: office
        required: false
        name: office_id
        in: query
      - schema:
          type: integer
          description: Filters report by a given examroom ID
          title: examroom_id
        required: false
        name: examroom_id
        in: query
      - schema:
          type: boolean
          description: Runs report for all providers in the practice group
          title: pg_mode
        required: false
        name: pg_mode
        in: query
      tags:
      - Billing
      x-permissions:
      - billing
      - access-patient-payments
      security:
      - drchrono_oauth2:
        - billing
      operationId: daysheet_credits_list
  /api/transactions_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
          title: Page size
        description: Number of results to return per page. Value between 1 and 1000.
        required: false
        name: page_size
        in: query
      - schema:
          type: integer
          title: page
        description: Number of page to return. Value between 1 and max number of pages in result set.
        required: false
        name: page
        in: query
      - schema:
          type: integer
          title: line_item
        description: Line item ID
        required: false
        name: line_item
        in: query
      - schema:
          type: string
          title: posted_date
        description: Posted date
        required: false
        name: posted_date
        in: query
      - schema:
          type: integer
          title: appointment
        description: appointment
        required: false
        name: appointment
        in: query
      - schema:
          type: string
          title: since
        description: since
        required: false
        name: since
        in: query
      - schema:
          type: integer
          title: doctor
        description: doctor
        required: false
        name: doctor
        in: query
      - schema:
          type: boolean
          title: verbose
        description: When True includes full details
        required: false
        name: verbose
        in: query
      tags:
      - Billing
      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: transactions_list_create
      description: 'Create transactions list request.  Use the UUID returned in the response to retrieve the batch of records. Results returned in order of id or updated_at.

        '
    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 "In progress" or "Complete".

                      '
                    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/LineItemTransaction'
                    type: array
                    description: result data. only

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