drchrono Practice Management API
Create and manage practice management resources
Documentation
Documentation
https://app.drchrono.com/api-docs/tutorial/
Authentication
https://app.drchrono.com/o/authorize/
Create and manage practice management resources
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 Practice Management API
servers:
- url: https://app.drchrono.com
tags:
- description: Create and manage practice management resources
name: Practice Management
paths:
/api/doctor_work_schedule/{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
tags:
- Practice Management
x-permissions: []
x-practice-access: Data access among practice is available
security:
- drchrono_oauth2:
- user:read
- user:write
operationId: doctor_work_schedule_update
description: Update an existing doctor's entire work schedule
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
tags:
- Practice Management
x-permissions: []
x-practice-access: Data access among practice is available
security:
- drchrono_oauth2:
- user:read
- user:write
operationId: doctor_work_schedule_partial_update
description: Update an existing doctor's work schedule
get:
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/WorkSchedule'
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
tags:
- Practice Management
x-permissions: []
x-practice-access: Data access among practice is available
security:
- drchrono_oauth2:
- user:read
- user:write
operationId: doctor_work_schedule_read
description: Retrieve a work schedule for the doctor (beta)
/api/messages:
post:
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/DoctorMessage'
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: patient
required: false
description: ''
name: patient
in: query
- schema:
type: integer
description: ''
title: doctor
required: false
description: ''
name: doctor
in: query
- schema:
type: integer
description: ''
title: responsible_user
required: false
description: ''
name: responsible_user
in: query
- schema:
type: string
description: ''
title: updated_since
required: false
description: ''
name: updated_since
in: query
- schema:
type: string
description: ''
title: received_since
required: false
description: ''
name: received_since
in: query
- schema:
type: integer
description: ''
title: owner
required: false
description: ''
name: owner
in: query
- schema:
type: string
description: ''
title: type
required: false
description: ''
name: type
in: query
tags:
- Practice Management
x-permissions:
- message-center
x-practice-access: '"share_communications" need to be set for data access among practice'
security:
- drchrono_oauth2:
- messages:read
- messages:write
operationId: messages_create
description: Create messages in doctor's message center
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/DoctorMessage'
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: integer
description: ''
title: responsible_user
required: false
description: ''
name: responsible_user
in: query
- schema:
type: string
description: ''
title: updated_since
required: false
description: ''
name: updated_since
in: query
- schema:
type: string
description: ''
title: received_since
required: false
description: ''
name: received_since
in: query
- schema:
type: integer
description: ''
title: owner
required: false
description: ''
name: owner
in: query
- schema:
type: string
description: ''
title: type
required: false
description: ''
name: type
in: query
tags:
- Practice Management
x-permissions:
- message-center
x-practice-access: '"share_communications" need to be set for data access among practice'
security:
- drchrono_oauth2:
- messages:read
- messages:write
operationId: messages_list
description: Retrieve or search messages in doctor's message center
/api/task_categories:
post:
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/TaskCategory'
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
tags:
- Practice Management
x-permissions: []
x-practice-access: Data access among practice is available
security:
- drchrono_oauth2:
- tasks:read
- tasks:write
operationId: task_categories_create
description: Create a task category
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/TaskCategory'
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
tags:
- Practice Management
x-permissions: []
x-practice-access: Data access among practice is available
security:
- drchrono_oauth2:
- tasks:read
- tasks:write
operationId: task_categories_list
description: Retrieve or search task categories
/api/offices/{id}/add_exam_room:
post:
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/Office'
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: ''
required: true
name: id
in: path
- schema:
type: integer
description: ''
title: doctor
required: false
description: ''
name: doctor
in: query
tags:
- Practice Management
x-permissions: []
x-practice-access: Data access among practice is available
security:
- drchrono_oauth2:
- user:read
- user:write
operationId: offices_add_exam_room
description: Add an exam room to the office
/api/inventory_vaccines/{id}:
get:
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/InventoryVaccine'
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: status
required: false
description: ''
name: status
in: query
- schema:
type: string
description: ''
title: cvx_code
required: false
description: ''
name: cvx_code
in: query
- 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:
- Practice Management
x-permissions:
- clinical-notes
x-practice-access: '"share_inventory" need to be set for data access among practice'
security:
- drchrono_oauth2:
- clinical:read
- clinical:write
operationId: inventory_vaccines_read
description: Retrieve an existing vaccine inventory
/api/offices:
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/Office'
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:
- Practice Management
x-permissions: []
x-practice-access: Data access among practice is available
security:
- drchrono_oauth2:
- user:read
- user:write
operationId: offices_list
description: Retrieve or search offices
/api/task_statuses/{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
tags:
- Practice Management
x-permissions: []
x-practice-access: Data access among practice is available
security:
- drchrono_oauth2:
- tasks:read
- tasks:write
operationId: task_statuses_update
description: Update an existing task status
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
tags:
- Practice Management
x-permissions: []
x-practice-access: Data access among practice is available
security:
- drchrono_oauth2:
- tasks:read
- tasks:write
operationId: task_statuses_partial_update
description: Update an existing task status
get:
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/TaskStatus'
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
tags:
- Practice Management
x-permissions: []
x-practice-access: Data access among practice is available
security:
- drchrono_oauth2:
- tasks:read
- tasks:write
operationId: task_statuses_read
description: Retrieve an existing task status
/api/office_work_schedule:
get:
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/WorkSchedule'
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
tags:
- Practice Management
x-permissions: []
x-practice-access: Data access among practice is available
security:
- drchrono_oauth2: []
operationId: office_work_schedule_list
description: Get the work schedule for the authed doctor's primary office (beta)
/api/task_templates:
post:
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/TaskTemplate'
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: assignee_user
required: false
description: ''
name: assignee_user
in: query
- schema:
type: integer
description: ''
title: status
required: false
description: ''
name: status
in: query
- schema:
type: integer
description: ''
title: assignee_group
required: false
description: ''
name: assignee_group
in: query
- schema:
type: string
description: ''
title: since
required: false
description: ''
name: since
in: query
- schema:
type: integer
description: ''
title: category
required: false
description: ''
name: category
in: query
tags:
- Practice Management
x-permissions: []
x-practice-access: Data access among practice is available
security:
- drchrono_oauth2:
- tasks:read
- tasks:write
operationId: task_templates_create
description: Create a task template
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/TaskTemplate'
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: assignee_user
required: false
description: ''
name: assignee_user
in: query
- schema:
type: integer
description: ''
title: status
required: false
description: ''
name: status
in: query
- schema:
type: integer
description: ''
title: assignee_group
required: false
description: ''
name: assignee_group
in: query
- schema:
type: string
description: ''
title: since
required: false
description: ''
name: since
in: query
- schema:
type: integer
description: ''
title: category
required: false
description: ''
name: category
in: query
tags:
- Practice Management
x-permissions: []
x-practice-access: Data access among practice is available
security:
- drchrono_oauth2:
- tasks:read
- tasks:write
operationId: task_templates_list
description: Retrieve or search task templates
/api/office_work_schedule/{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
tags:
- Practice Management
x-permissions: []
x-practice-access: Data access among practice is available
security:
- drchrono_oauth2:
- user:read
- user:write
operationId: office_work_schedule_update
description: Update an existing office's entire work schedule
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
tags:
- Practice Management
x-permissions: []
x-practice-access: Data access among practice is available
security:
- drchrono_oauth2:
- user:read
- user:write
operationId: office_work_schedule_partial_update
description: Update an existing office's work schedule
get:
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/WorkSchedule'
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
tags:
- Practice Management
x-permissions: []
x-practice-access: Data access among practice is available
security:
- drchrono_oauth2:
- user:read
- user:write
operationId: office_work_schedule_read
description: Retrieve a work schedule (beta)
/api/inventory_categories/{id}:
get:
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/InventoryCategory'
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:
- Practice Management
x-permissions:
- clinical-notes
x-practice-access: '"share_inventory" need to be set for data access among practice'
security:
- drchrono_oauth2:
- clinical:read
- clinical:write
operationId: inventory_categories_read
description: Retrieve an existing inventory category
/api/tasks/{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: {}
# --- truncated at 32 KB (116 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/drchrono/refs/heads/main/openapi/drchrono-practice-management-api-openapi.yml