Documentation
Documentation
https://app.drchrono.com/api-docs/tutorial/
Authentication
https://app.drchrono.com/o/authorize/
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