Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: Elation Health Vitals API
version: '1.0'
description: 'Operations tagged Vitals across 3 of this provider''s published API definitions: elation-api-settings.json, elation-health-api-full-openapi.yaml, elation-patient-document-api.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://sandbox.elationemr.com/api/2.0
- description: Sandbox Server
url: https://sandbox.elationemr.com
- description: Production Server
url: https://api.app.elationemr.com
tags:
- name: Vitals
paths:
/vitals/{id}/:
get:
summary: Get Vital
description: ''
operationId: get-vital
parameters:
- name: id
in: path
required: true
schema:
type: integer
format: int64
- name: Authorization
in: header
required: true
schema:
type: string
responses:
'200':
description: '200'
content:
application/json:
examples:
Result:
value: "{\n \"id\": 65098023184,\n // See Object Definition\n}"
'400':
description: '400'
content:
application/json:
examples:
Result:
value: '{}'
schema:
type: object
properties: {}
deprecated: false
x-readme:
code-samples:
- language: python
code: "import requests\nimport json\n\naccess_token = \"TyEPKw8fVGRKpCBa81ygwjCLXDNIAm\"\nauth_header = \"Bearer %s\" % (access_token)\n\nresp = requests.get(\"https://sandbox.elationemr.com/api/2.0/vitals/64184451073/\",\n headers={'Authorization': auth_header})\n\nprint resp.status_code\nprint json.dumps(json.loads(resp.content), indent=2)"
samples-languages:
- python
tags:
- Vitals
security:
- sec0: []
servers:
- url: https://sandbox.elationemr.com/api/2.0
/vitals/:
get:
summary: Find Vitals
description: ''
operationId: find-vitals
parameters:
- name: Authorization
in: header
required: true
schema:
type: string
- name: patient
in: query
schema:
type: array
items:
type: integer
format: int64
- name: practice
in: query
schema:
type: array
items:
type: integer
format: int64
- name: visit_note
in: query
schema:
type: array
items:
type: integer
format: int64
- name: non_visit_note
in: query
schema:
type: array
items:
type: integer
format: int64
responses:
'200':
description: '200'
content:
application/json:
examples:
Result:
value: "{\n \"count\": 123,\n \"next\": \"https://sandbox.elationemr.com/api/2.0/vitals/?limit=10&offset=10\",\n \"previous\": \"https://sandbox.elationemr.com/api/2.0/vitals/?limit=10\",\n \"results\": [ // list of objects\n { // See Object Definition },\n // ...\n { // See Object Definition },\n ]\n}"
'400':
description: '400'
content:
application/json:
examples:
Result:
value: '{}'
schema:
type: object
properties: {}
deprecated: false
x-readme:
code-samples:
- language: python
code: "import requests\nimport json\n\naccess_token = \"VFroUHsmrErlVI6nJ08Alwhri5RGCW\"\nauth_header = \"Bearer %s\" % (access_token)\n\nresp = requests.get(\"https://sandbox.elationemr.com/api/2.0/vitals/\",\n headers={'Authorization': auth_header})\n\nprint resp.status_code\nprint json.dumps(json.loads(resp.content), indent=2)"
samples-languages:
- python
tags:
- Vitals
security:
- sec0: []
post:
summary: Create Vitals
description: ''
operationId: create-vital
parameters:
- name: Authorization
in: header
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
type: object
required:
- patient
- practice
properties:
patient:
type: integer
description: Patient ID
format: int32
practice:
type: integer
description: Practice ID
format: int32
visit_note:
type: integer
description: Will only allow unsigned visit notes
format: int32
non_visit_note:
type: integer
description: Will only allow unsigned non-visit notes
format: int32
bmi:
type: number
description: Optional. Will be automatically calculated from height and weight otherwise
format: double
height:
type: array
description: Will only allow array of one.
weight:
type: array
description: Will only allow array of one.
oxygen:
type: array
description: Will only allow array of one.
rr:
type: array
description: Will only allow array of one.
hr:
type: array
description: Will only allow array of one.
hc:
type: array
description: Will only allow array of one.
temperature:
type: array
description: Will only allow array of one.
bp:
type: array
description: Will allow multiple items in array
ketone:
type: array
description: Optional. See Vital Object Definition for supported observations.
bodyfat:
type: array
description: Optional. Will only allow array of one
dlm:
type: array
description: Optional. Will only allow array of one
bfm:
type: array
description: Optional. Will only allow array of one
wc:
type: array
description: Optional. Will only allow array of one
responses:
'201':
description: '201'
content:
application/json:
examples:
Result:
value: "{\n \"id\": 65098023184,\n // See Object Definition\n}"
'400':
description: '400'
content:
application/json:
examples:
Result:
value: '{}'
schema:
type: object
properties: {}
deprecated: false
x-readme:
code-samples:
- language: python
code: "import requests\nimport json\n\naccess_token = \"TyEPKw8fVGRKpCBa81ygwjCLXDNIAm\"\nauth_header = \"Bearer %s\" % (access_token)\n\n# sending a list of vitals in single call\ndata = {\n \"patient\": 64901939201,\n \"practice\": 65540,\n \"visit_note\": 79923773464,\n \"bmi\": 21.52,\n \"height\": [{\n \"value\": \"70\",\n \"note\": \"no shoes\"\n }],\n \"weight\": [{\n \"value\": \"150\",\n \"note\": \"in shorts\"\n }],\n \"oxygen\": [{\n \"value\": \"98\",\n \"note\": \"good\"\n }],\n \"rr\": [{\n \"value\": \"20\",\n \"note\": \"deep\"\n }],\n \"hr\": [{\n \"value\": \"60\",\n \"note\": \"calm\"\n }],\n \"hc\": [{\n \"value\": \"30\",\n \"note\": \"big\"\n }],\n \"temperature\": [{\n \"value\": \"98\",\n \"note\": \"t-shirt\"\n }],\n \"bp\": [{\n \"systolic\": \"120\",\n \"diastolic\": \"80\",\n \"note\": \"sitting down\"\n }],\n \"ketone\": [\n {\n \"note\": \"\",\n \"value\": \"1.3\"\n }\n ],\n \"bodyfat\": [\n {\n \"note\": \"\",\n \"value\": \"35.9\"\n }\n ],\n \"dlm\": [\n {\n \"note\": \"\",\n \"value\": \"26.9\"\n }\n ],\n \"bfm\": [\n {\n \"note\": \"\",\n \"value\": \"57.0\"\n }\n ],\n \"wc\": [\n {\n \"note\": \"\",\n \"value\": \"47\"\n }\n ]\n}\n\nresp = requests.post(\"https://sandbox.elationemr.com/api/2.0/vitals/\",\n data=json.dumps(data),\n headers={'Authorization': auth_header,\n 'Content-type': 'application/json'})\n\nprint resp.status_code\nprint json.dumps(json.loads(resp.content), indent=2)"
samples-languages:
- python
tags:
- Vitals
security:
- sec0: []
servers:
- url: https://sandbox.elationemr.com/api/2.0
/vitals/:id/:
patch:
summary: Update Vitals
description: ''
operationId: update-vitals-1
parameters:
- name: Authorization
in: header
required: true
schema:
type: string
responses:
'200':
description: '200'
content:
application/json:
examples:
Result:
value: "{\n \"id\": 64184451073,\n // See Object Definition\n}"
'400':
description: '400'
content:
application/json:
examples:
Result:
value: '{}'
schema:
type: object
properties: {}
deprecated: false
x-readme:
code-samples:
- language: python
code: "import requests\nimport json\n\naccess_token = \"TyEPKw8fVGRKpCBa81ygwjCLXDNIAm\"\nauth_header = \"Bearer %s\" % (access_token)\n\ndata = {\n \"oxygen\": [{\n \"value\": \"98\",\n \"note\": \"good\"\n }]\n}\n\nresp = requests.patch(\"https://sandbox.elationemr.com/api/2.0/vitals/64184451073/\",\n data=json.dumps(data),\n headers={'Authorization': auth_header,\n 'Content-type': 'application/json'})\n\nprint resp.status_code\nprint json.dumps(json.loads(resp.content), indent=2)"
samples-languages:
- python
tags:
- Vitals
security:
- sec0: []
put:
summary: Update Vitals
description: ''
operationId: update-vitals
parameters:
- name: Authorization
in: header
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
type: object
required:
- patient
- practice
- bp
- height
- weight
- oxygen
- rr
- hr
- hc
- temperature
properties:
patient:
type: integer
description: Patient ID
format: int32
practice:
type: integer
description: Practice ID
format: int32
bmi:
type: number
description: Optional. Will be automatically calculated from height and weight otherwise
format: double
bp:
type: array
description: Will allow multiple items in array.
height:
type: array
description: Will only allow array of one.
weight:
type: array
description: Will only allow array of one.
oxygen:
type: array
description: Will only allow array of one.
rr:
type: array
description: Will only allow array of one.
hr:
type: array
description: Will only allow array of one.
hc:
type: array
description: Will only allow array of one.
temperature:
type: array
description: Will only allow array of one.
ketone:
type: array
description: Optional. Will only allow array of one
bodyfat:
type: array
description: Optional. Will only allow array of one
dlm:
type: array
description: Optional. Will only allow array of one
bfm:
type: array
description: Optional. Will only allow array of one
wc:
type: array
description: Optional. Will only allow array of one
responses:
'200':
description: '200'
content:
application/json:
examples:
Result:
value: "{\n \"id\": 64184451073,\n // See Object Definition\n}"
'400':
description: '400'
content:
application/json:
examples:
Result:
value: '{}'
schema:
type: object
properties: {}
deprecated: false
x-readme:
code-samples:
- language: python
code: "import requests\nimport json\n\naccess_token = \"TyEPKw8fVGRKpCBa81ygwjCLXDNIAm\"\nauth_header = \"Bearer %s\" % (access_token)\n\n# sending a list of vitals in single call\ndata = {\n \"patient\": 64901939201,\n \"practice\": 65540,\n \"visit_note\": 79923773464,\n \"bmi\": 21.52,\n \"height\": [{\n \"value\": \"70\",\n \"note\": \"no shoes\"\n }],\n \"weight\": [{\n \"value\": \"150\",\n \"note\": \"in shorts\"\n }],\n \"oxygen\": [{\n \"value\": \"98\",\n \"note\": \"good\"\n }],\n \"rr\": [{\n \"value\": \"20\",\n \"note\": \"deep\"\n }],\n \"hr\": [{\n \"value\": \"60\",\n \"note\": \"calm\"\n }],\n \"hc\": [{\n \"value\": \"30\",\n \"note\": \"big\"\n }],\n \"temperature\": [{\n \"value\": \"98\",\n \"note\": \"t-shirt\"\n }],\n \"bp\": [{\n \"systolic\": \"120\",\n \"diastolic\": \"80\",\n \"note\": \"sitting down\"\n }],\n \"ketone\": [\n {\n \"note\": \"\",\n \"value\": \"1.3\"\n }\n ],\n \"bodyfat\": [\n {\n \"note\": \"\",\n \"value\": \"35.9\"\n }\n ],\n \"dlm\": [\n {\n \"note\": \"\",\n \"value\": \"26.9\"\n }\n ],\n \"bfm\": [\n {\n \"note\": \"\",\n \"value\": \"57.0\"\n }\n ],\n \"wc\": [\n {\n \"note\": \"\",\n \"value\": \"47\"\n }\n ]\n}\n\nresp = requests.put(\"https://sandbox.elationemr.com/api/2.0/vitals/64184451073\",\n data=json.dumps(data),\n headers={'Authorization': auth_header,\n 'Content-type': 'application/json'})\n\nprint resp.status_code\nprint json.dumps(json.loads(resp.content), indent=2)"
samples-languages:
- python
tags:
- Vitals
security:
- sec0: []
servers:
- url: https://sandbox.elationemr.com/api/2.0
/api/2.0/vitals/:
get:
operationId: vitals_list
parameters:
- description: Number of results to return per page.
in: query
name: limit
required: false
schema:
type: integer
- description: Multiple values may be separated by commas.
explode: false
in: query
name: non_visit_note
schema:
items:
format: int64
type: integer
type: array
style: form
- description: The initial index from which to return the results.
in: query
name: offset
required: false
schema:
type: integer
- description: Which field to use when ordering the results.
in: query
name: order_by
required: false
schema:
type: string
- description: Multiple values may be separated by commas.
explode: false
in: query
name: patient
schema:
items:
type: integer
type: array
style: form
- description: Multiple values may be separated by commas.
explode: false
in: query
name: practice
schema:
items:
format: int64
type: integer
type: array
style: form
- description: Multiple values may be separated by commas.
explode: false
in: query
name: visit_note
schema:
items:
format: int64
type: integer
type: array
style: form
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedVitalsCollectionList'
description: ''
security:
- oauth2: []
summary: List Vitals
tags:
- Vitals
x-el8-docs-category: Patient Document API
x-el8-docs-versions:
- '2.1'
- '2.0'
post:
description: Create a new vital.
operationId: vitals_create
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/VitalsCollection'
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/VitalsCollection'
description: ''
security:
- oauth2: []
summary: Create Vital
tags:
- Vitals
x-el8-docs-category: Patient Document API
x-el8-docs-versions:
- '2.1'
- '2.0'
servers:
- description: Sandbox Server
url: https://sandbox.elationemr.com
- description: Production Server
url: https://api.app.elationemr.com
/api/2.0/vitals/{id}/:
get:
operationId: vitals_retrieve
parameters:
- in: path
name: id
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/VitalsCollection'
description: ''
security:
- oauth2: []
summary: Retrieve Vital
tags:
- Vitals
x-el8-docs-category: Patient Document API
x-el8-docs-versions:
- '2.1'
- '2.0'
patch:
description: Update an existing vital.
operationId: vitals_partial_update
parameters:
- in: path
name: id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PatchedVitalsCollection'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/VitalsCollection'
description: ''
security:
- oauth2: []
summary: Partially Update Vital
tags:
- Vitals
x-el8-docs-category: Patient Document API
x-el8-docs-versions:
- '2.1'
- '2.0'
put:
description: Replace an existing vital.
operationId: vitals_update
parameters:
- in: path
name: id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/VitalsCollection'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/VitalsCollection'
description: ''
security:
- oauth2: []
summary: Update Vital
tags:
- Vitals
x-el8-docs-category: Patient Document API
x-el8-docs-versions:
- '2.1'
- '2.0'
servers:
- description: Sandbox Server
url: https://sandbox.elationemr.com
- description: Production Server
url: https://api.app.elationemr.com
components:
schemas:
VitalOxygenUnitsEnum:
enum:
- '%'
type: string
VitalHeightUnitsEnum:
enum:
- inches
type: string
VitalBP:
properties:
diastolic:
type:
- string
- 'null'
note:
type:
- string
- 'null'
systolic:
type:
- string
- 'null'
type: object
PatchedVitalsCollection:
properties:
bmi:
format: double
type:
- number
- 'null'
bmi_percentile:
description: The BMI percentile of the patient. Optional. Will be automatically calculated from height and weight otherwise.
readOnly: true
type:
- integer
- 'null'
bp:
description: The blood pressure of the patient. Will allow multiple items in array.
items:
$ref: '#/components/schemas/VitalBP'
type: array
chart_date:
format: date-time
type: string
created_date:
format: date-time
readOnly: true
type:
- string
- 'null'
custom_observations:
additionalProperties:
properties:
label:
type: string
note:
type:
- string
- 'null'
units:
type:
- string
- 'null'
value:
type: string
type: object
type: object
deleted_date:
format: date-time
readOnly: true
type:
- string
- 'null'
document_date:
format: date-time
type: string
hc:
description: The head circumference of the patient. Will only allow array of one.
items:
$ref: '#/components/schemas/VitalHC'
type: array
height:
description: The height of the patient. Will only allow array of one.
items:
$ref: '#/components/schemas/VitalHeight'
type: array
hr:
description: The heart rate of the patient. Will only allow array of one.
items:
$ref: '#/components/schemas/VitalHR'
type: array
id:
readOnly: true
type: integer
length_for_weight_percentile:
description: The length for weight percentile for the patient.
format: double
readOnly: true
type:
- number
- 'null'
non_visit_note:
description: The non-visit note that the vital belongs to. Will only allow unsigned non-visit notes.
format: int64
type:
- integer
- 'null'
oxygen:
description: The oxygen saturation of the patient. Will only allow array of one.
items:
$ref: '#/components/schemas/VitalOxygen'
type: array
pain:
description: The pain of the patient. Will only allow array of one.
items:
$ref: '#/components/schemas/VitalPain'
type: array
patient:
format: int64
type: integer
practice:
format: int64
type: integer
rr:
description: The respiratory rate of the patient. Will only allow array of one.
items:
$ref: '#/components/schemas/VitalRR'
type: array
signed_by:
format: int64
readOnly: true
type: integer
signed_date:
format: date-time
readOnly: true
type:
- string
- 'null'
temperature:
description: The temperature of the patient. Will only allow array of one.
items:
$ref: '#/components/schemas/VitalTemperature'
type: array
visit_note:
description: The visit note that the vital belongs to. Will only allow unsigned visit notes.
format: int64
type:
- integer
- 'null'
weight:
description: The weight of the patient. Will only allow array of one.
items:
$ref: '#/components/schemas/VitalWeight'
type: array
type: object
VitalHR:
properties:
note:
type:
- string
- 'null'
units:
allOf:
- $ref: '#/components/schemas/VitalHRUnits'
readOnly: true
value:
type:
- string
- 'null'
type: object
VitalHCUnitsEnum:
enum:
- cm
type: string
VitalTemperature:
properties:
note:
type:
- string
- 'null'
units:
allOf:
- $ref: '#/components/schemas/VitalTemperatureUnitsEnum'
readOnly: true
value:
type:
- string
- 'null'
type: object
VitalPain:
properties:
note:
type:
- string
- 'null'
value:
type:
- string
- 'null'
type: object
VitalHC:
properties:
note:
type:
- string
- 'null'
percentile:
readOnly: true
type:
- integer
- 'null'
units:
allOf:
- $ref: '#/components/schemas/VitalHCUnitsEnum'
readOnly: true
value:
type:
- string
- 'null'
type: object
VitalHRUnits:
enum:
- bpm
type: string
VitalWeightUnitsEnum:
enum:
- lbs
type: string
VitalTemperatureUnitsEnum:
enum:
- celsius
- fahrenheit
type: string
VitalRR:
properties:
note:
type:
- string
- 'null'
units:
allOf:
- $ref: '#/components/schemas/VitalHRUnits'
readOnly: true
value:
type:
- string
- 'null'
type: object
PaginatedVitalsCollectionList:
properties:
count:
example: 123
type: integer
next:
example: http://api.example.org/accounts/?offset=400&limit=100
format: uri
nullable: true
type: string
previous:
example: http://api.example.org/accounts/?offset=200&limit=100
format: uri
nullable: true
type: string
results:
items:
$ref: '#/components/schemas/VitalsCollection'
type: array
required:
- results
type: object
VitalOxygen:
properties:
note:
type:
- string
- 'null'
units:
allOf:
- $ref: '#/components/schemas/VitalOxygenUnitsEnum'
readOnly: true
value:
type:
- string
- 'null'
type: object
VitalsCollection:
properties:
bmi:
format: double
type:
- number
- 'null'
bmi_percentile:
description: The BMI percentile of the patient. Optional. Will be automatically calculated from height and weight otherwise.
readOnly: true
type:
- integer
- 'null'
bp:
description: The blood pressure of the patient. Will allow multiple items in array.
items:
$ref: '#/components/schemas/VitalBP'
type: array
chart_date:
format: date-time
type: string
created_date:
format: date-time
readOnly: true
type:
- string
- 'null'
custom_observations:
additionalProperties:
properties:
label:
type: string
note:
type:
- string
- 'null'
units:
type:
- string
- 'null'
value:
type: string
type: object
type: object
deleted_date:
format: date-time
readOnly: true
type:
- string
- 'null'
document_date:
format: date-time
type: string
hc:
description: The head circumference of the patient. Will only allow array of one.
items:
$ref: '#/components/schemas/VitalHC'
type: array
height:
description: The height of the patient. Will only allow array of one.
items:
$ref: '#/components/schemas/VitalHeight'
type: array
hr:
description: The heart rate of the patient. Will only allow array of one.
items:
$ref: '#/components/schemas/VitalHR'
type: array
id:
readOnly: true
type: integer
length_for_weight_percentile:
description: The length for weight percentile for the patient.
format: double
readOnly: true
type:
- number
- 'null'
non_visit_note:
description: The non-visit note that the vital belongs to. Will only allow unsigned non-visit notes.
format: int64
type:
- integer
- 'null'
oxygen:
description: The oxygen saturation of the patient. Will only allow array of one.
items:
$ref: '#/components/schemas/VitalOxygen'
type: array
pain:
description: The pain of the patient. Will only allow array of one.
items:
$ref: '#/components/schemas/VitalPain'
type: array
patient:
format: int64
type: integer
practice:
format: int64
type: integer
rr:
description: The respiratory rate of the patient. Will only allow array of one.
items:
$ref: '#/components/schemas/VitalRR'
type: array
signed_by:
format: int64
readOnly: true
type: integer
signed_date:
format: date-time
readOnly: true
type:
- string
- 'null'
temperature:
description: The temperature of the patient. Will only allow array of one.
items:
$ref: '#/components/schemas/VitalTemperature'
type: array
visit_note:
description: The visit note that the vital belongs to. Will only allow unsigned visit notes.
format: int64
type:
- integer
- 'null'
weight:
description: The weight of the patient. Will only allow array of one.
items:
$ref: '#/components/schemas/VitalWeight'
type: array
required:
- patient
- practice
type: object
VitalHeight:
properties:
note:
type:
- string
- 'null'
units:
allOf:
- $ref: '#/components/schemas/VitalHeightUnitsEnum'
readOnly: true
value:
type:
- string
- 'null'
type: object
VitalWeight:
properties:
note:
type:
- string
- 'null'
units:
allOf:
- $ref: '#/components/schemas/VitalWeightUnitsEnum'
readOnly: true
value:
type:
- string
- 'null'
type: obje
# --- truncated at 32 KB (32 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/elation-health/refs/heads/main/openapi/elation-health-vitals-api-openapi.yml