Echo IQ API Documentation (1.0.0)

Download OpenAPI specification:Download

This documentation describes the Echo IQ Platform & EchoSolv APIs.

EchoSolv usage information

Results interpretation

Disease analysis results generated by EchoSolv must be used in conjunction with clinical end user documentation.

Accepted measurements

When submitting a study to the Create Assessment endpoint, over 120 measurements can be provided as part of the assessment. You can provide as many or as few as are available. The more measurements provided increase the chance of a more accurate result.

If the measurement is out of range or of a wrong unit type it will be ignored, and an appropriate validation warning will be attached to the assessment. The assessment will still run. A handful of measurements are required to ensure a result is produced for certain disease types:

Measurements can be provided in multiple unit types allowed for that measurement type. The service will automatically convert the measurement to the listed standard unit type.

The full list of allowed measurements, unit types and ranges are described as part of the Create Assessment endpoint.

Calculated values

The age_recorded_at_echo will be calculated if not provided, based on the study_time and the patient_date_of_birth.

The following measurement types are calculated values. If they are provided as part of the create assessment call, the service will use these. If they are not provided, but can be calculated based on other provided values, the service will calculate these automatically.

  • body_mass_index_calculated
  • body_surface_area
  • ivs_to_pw_ratio
  • left_atrial_ao_ratio
  • left_atrial_ao_ratio_m_mode
  • left_ventricular_diastolic_volume_teichholz_method_m_mode
  • left_ventricular_ejection_fraction_teichholz_method_m_mode
  • left_ventricular_fractional_shortening_m_mode
  • left_ventricular_fractional_shortening_plax
  • left_ventricular_mass_m_mode
  • left_ventricular_mass_index_m_mode
  • left_ventricular_stroke_volume_method_of_discs_2_chamber_method
  • left_ventricular_stroke_volume_method_of_discs_4_chamber_method
  • left_ventricular_stroke_volume_teichholz_method_m_mode
  • pulmonary_vein_s_d_ratio
  • left_ventricular_diastolic_volume_teichholz_method
  • left_ventricular_systolic_volume_teichholz_method
  • left_ventricular_ejection_fraction_teichholz_method
  • left_ventricular_ejection_fraction_biplane_method_of_discs_method
  • left_ventricular_ejection_fraction_hierarchy
  • left_ventricular_mass_ase_method
  • left_ventricular_mass_ase_method_index
  • lateral_mitral_annular_tissue_doppler_e_to_e_prime_ratio
  • medial_mitral_annular_tissue_doppler_e_to_e_prime_ratio
  • left_ventricular_relative_wall_thickness
  • left_ventricular_stroke_volume_teichholz_method
  • left_ventricular_stroke_volume_method_of_discs_biplane_method
  • left_ventricular_outflow_tract_stroke_volume
  • mitral_e_to_a_ratio
  • mitral_valve_area_pressure_half_time
  • mitral_valve_peak_gradient
  • mitral_regurgitation_effective_regurgitant_orifice_area_pisa
  • mitral_valve_regurgitant_volume
  • pulmonary_valve_peak_gradient
  • right_atrial_volume_index
  • right_ventricular_systolic_pressure
  • right_ventricular_outflow_tract_peak_gradient / right_ventricular_outflow_tract_peak_velocity
  • tricuspid_regurgitation_peak_gradient
  • stroke_volume_index
  • left_ventricular_outflow_tract_peak_velocity

Severe Aortic Stenosis required measurements

Guidelines test

Guidelines checks for Severe Aortic Stenosis will be conducted when any of the following values are provided:

  • aortic_valve_mean_gradient

OR

  • aortic_valve_peak_velocity

OR

  • aortic_valve_area

OR

  • All of the following measurements:
    • left_ventricular_outflow_tract_diameter,
    • left_ventricular_outflow_tract_velocity_time_integral,
    • aortic_valve_velocity_time_integral

OR

  • All of the following measurements:
    • left_ventricular_outflow_tract_diameter,
    • left_ventricular_outflow_tract_peak_velocity
    • aortic_valve_peak_velocity

If any of the clinical guidelines for these measures are met the patient will be reported as having met guidelines for Severe AS.

Note: A conclusive result for guidelines cannot be guaranteed unless all of the above are provided, the guidelines result will therefore report as inconclusive. If all measures are provided and guidelines can be confirmed to having not been met, the guidelines test will report as false.

AI probability test

AI probability checks for Severe Aortic Stenosis will be conducted based on all provided measurements, however at a minimum for the test to run, the following measures must be provided:

  • age_recorded_at_echo
  • body_surface_area
  • aortic_valve_peak_velocity
  • At least one of:
    • left_ventricular_ejection_fraction_biplane_method_of_discs_method
    • left_ventricular_ejection_fraction_teichholz_method
    • left_ventricular_ejection_fraction_teichholz_method_m_mode

Note 1: body_height and body_weight will be accepted in place of body_surface_area if it is not available. In this scenario the service will calculate body_surface_area.

Note 2: AI probability results will only be returned when regulatory approval for the organisations region has been received or the Organisation is part of an approved clinical trial.

Chronic Mitral Regurgitation Guidelines Check required measurements

Guidelines checks for Chronic Mitral Regurgitation will be conducted when at least one of the following (group 1) values are provided, non-zero and within min/max range:

  • mitral_regurgitation_flow_convergence_radius
  • mitral_valve_regurgitant_volume
  • mitral_valve_regurgitant_fraction
  • mitral_regurgitation_effective_regurgitant_orifice_area_pisa

AND one of the following (group 2) values are provided, non-zero and within min/max range:

  • left_atrial_volume_index
  • left_ventricular_systolic_diameter_base_parasternal_long_axis
  • tricuspid_regurgitation_peak_velocity

Diastolic Dysfunction Guidelines Check required measurements

Guidelines checks for Diastolic Dysfunction will be conducted when at least one of the following values are provided, non-zero and within min/max range:

  • left_ventricular_ejection_fraction_biplane_method_of_discs_method
  • left_ventricular_ejection_fraction_teichholz_method
  • left_ventricular_ejection_fraction_teichholz_method_m_mode
  • left_ventricular_ejection_fraction_hierarchy

Heart Failure Guidelines Check required measurements

Guidelines checks for Heart Failure will be conducted when left_ventricular_ejection_fraction_hierarchy is present and valid.

Depending on the value of left_ventricular_ejection_fraction_hierarchy, further check will be conducted when at least of the following values are provided, non-zero and within min/max range:

  • medial_mitral_annular_tissue_doppler_e_to_e_prime_ratio
  • left_atrial_volume_index
  • left_ventricular_mass_ase_method_index or left_ventricular_mass_index_m_mode

Technical usage information

Authentication

To interact with the api you will need an access token. Access tokens relate to a specific user and organisation, or just an organisation.

Access tokens are issued from within the Echo IQ Application.

User level access tokens can be created by a user. Organisation level tokens (generally used for integrations) can be generated by organisation admins.

The access token must be passed in the Authorization header for each request.

Error handling

API errors will be presented in a JSON format with a single message element describing the error. HTTP Status codes are used to provide further context on the error. Errors are described in detail with each request in this documentation.

List filtering and sorting

The API provides the ability to filter lists using special query parameters.

Filter options

Example list filter options response

{
  "overall_status": [
    "complete",
    "pending"
  ],
  "overall_risk": [
    "0",
    "2",
    null
  ],
  "patient_name": [
    "Kathleen Leonard",
    "Jane Smith"
  ],
  "patient_id": [
    "DDS42547453",
    "DVM21511441"
  ],
  "sonographer": [
    "Priscilla Kohler",
    "Rafael Zemlak"
  ],
  "reader": [
    "Dr Feeney",
    "Dr Graham"
  ],
  "study_id": [
    "DDS98900134",
    "II42561419"
  ],
  "detections": [
    "as-guidelines-met",
    "mr-guidelines-progressive"
  ],
  "upload_id": [
    null
  ]
}

Certain columns in each list can be filtered. To retrieve an object detailing which columns can be filtered and the unique values for that column pass in the query parameter options=true.

This will return a list of unique possible filter values for each column like the example. This number of filter values displayed is capped at 20.

Getting more precise filter options

A more targetted list of filter options can be retrieved for each columns by passing in the query parameter optionSearch-fieldName=xxx, where fieldName is the field you wish to lookup, and xxx is the value you wish to search for.

e.g. ?options=true&optionSearch-reader=feen on the above example would return only Dr Feeney in the options list.

Applying filters

To apply filters to the actual results list you must pass in a comma separated list of whole values as a query parameter in the format filter-fieldName=yyyy. Where fieldName is the field you wish to apply the filter too, and yyyy is a comma separated list of values you wish to filter for.

Multiple fields can be filtered on at the same time.

e.g. ?filter-study_id=STUD1234,STUD456&filter-overall_risk=2,1.

List sorting

List can be sorted by setting the following parameters:

Parameter Description
orderBy The name of the field you wish to sort by
order One of asc or desc (ascending or descending). Default = asc.

Ascending
Dates are sorted oldest first with most recent last.
Numbers are sorted smallest first with highest last.
Same rules for the alphabet, so A first with Z last (irrespective of case).

Descending
Dates are sorted most recent first with oldest last.
Numbers are sorted highest first with lowest last.
Same rules for the alphabet, so Z first with A last (irrespective of case).

Request scaling

Special consideration should be given for the following performance intensive endpoints.

Endpoint Notes
Create Assessment We recommend parallelising create assessment calls to no more than 5 at a time to ensure successful synchronous response in under 5 seconds.

The service will scale to meet larger demand, however new requests can take up to 25 seconds to respond as the platform scales.

API Servers

We operate three endpoints for the API, each with static IP addresses.

Global API Server

Using the global URI will allow you to access platform endpoints that have their data synced globally. Your request will be routed to the nearest available region based on latency.

/echosolv endpoints cannot be accessed on the global server, owing to data jurisdiction controls .

API Server URI Platform data
/core endpoints
EchoSolv data
/echosolv endpoints
Static IP Addresses
api.echoiq.ai Synced globally Not available 15.197.134.148
3.33.156.31

Regional API Servers

Using a regional URI will guarantee which location you are accessing. Regional servers will still allow you to access platform services that have their data synced globally.

/echosolv endpoints can only be accessed on regional servers, however you must ensure you are calling the correct region for the organisation you are trying to access.

API Server URI Region Platform data
/core endpoints
EchoSolv data
/echosolv endpoints
Static IP Addresses
ohi.api.echoiq.ai United States Synced globally Locked to region 18.116.103.224
3.137.63.37
3.14.121.14
syd.api.echoiq.ai Australia Synced globally Locked to region 3.104.138.238
52.62.184.107
54.79.237.209

EchoSolv Assessment

Services related to Assessment creation and retrieval

Create assessment

Use this service to submit details for an echo study, and perform an EchoSolv assessment.

Please refer to important information about EchoSolv allowed, calculated and required measurements.

SecurityApiKeyAuth
Request
Responses
200

Assessment created

400

Request invalid

401

Unauthorized

403

Forbidden

500

Service error

post/echosolv/v1/assessments
Request samples
application/json
{
  • "schema_version": 1,
  • "patient_details": {
    },
  • "study_details": {
    },
  • "measurements": {
    }
}
Response samples
application/json
{
  • "schema_version": 1,
  • "assessment_id": "540688ba-79ff-4a80-8c3e-b347c2dc8615",
  • "assessment_time_utc": "2022-08-10T01:01:01.000Z",
  • "created_at": "2022-08-15T04:09:19.728Z",
  • "created_by": "2b009bf4-6427-41cb-9a03-eeff0e9c1991",
  • "created_by_token": "00125fc8-f992-463c-baa9-b550aad0210e",
  • "updated_at": "2022-08-15T04:09:19.728Z",
  • "overall_status": "complete",
  • "overall_risk": null,
  • "errors_encountered": true,
  • "validation_messages": [
    ],
  • "errors": [
    ],
  • "patient_details": {
    },
  • "study_details": {
    },
  • "assessment_results": [
    ],
  • "measurements": {
    }
}

Retrieve assessment

List all information about a specific assessment

Please refer to important information about EchoSolv results interpretation.

SecurityApiKeyAuth
Request
Responses
200

Assessment Object

401

Unauthorized

403

Forbidden

404

Not Found

500

Service error

get/echosolv/v1/assessments/{assessmentId}
Request samples
Response samples
application/json
{
  • "schema_version": 1,
  • "assessment_id": "540688ba-79ff-4a80-8c3e-b347c2dc8615",
  • "assessment_time_utc": "2022-08-10T01:01:01.000Z",
  • "created_at": "2022-08-15T04:09:19.728Z",
  • "created_by": "2b009bf4-6427-41cb-9a03-eeff0e9c1991",
  • "created_by_token": "00125fc8-f992-463c-baa9-b550aad0210e",
  • "updated_at": "2022-08-15T04:09:19.728Z",
  • "overall_status": "complete",
  • "overall_risk": null,
  • "errors_encountered": true,
  • "validation_messages": [
    ],
  • "errors": [
    ],
  • "patient_details": {
    },
  • "study_details": {
    },
  • "assessment_results": [
    ],
  • "measurements": {
    }
}

Export assessment as PDF

Generates and downloads a PDF report for a single assessment. The PDF endpoint provides base64-encoded data, with additional details available in the 200 response.

SecurityApiKeyAuth
Request
Responses
200

PDF File

400

Request invalid

401

Unauthorized

403

Forbidden

500

Service error

get/echosolv/v1/assessments/{assessmentId}/pdf
Request samples
Response samples
application/json
{
  • "message": "Missing required request parameters: [start, end]"
}

Export assessment as CSV

Generates and downloads a CSV extract with all details for a single assessment

SecurityApiKeyAuth
Request
Responses
200

CSV File

400

Request invalid

401

Unauthorized

403

Forbidden

500

Service error

get/echosolv/v1/assessments/{assessmentId}/csv
Request samples
Response samples
text/csv
"assessment_id","overall_status","validation_messages","error","overall_risk"....

List assessments

List assessments for a given time period

SecurityApiKeyAuth
Request
Responses
200

Paginated list of assessments

400

Request invalid

401

Unauthorized

403

Forbidden

500

Service error

get/echosolv/v1/assessments/list
Request samples
Response samples
application/json
{
  • "page": 0,
  • "pageSize": 25,
  • "count": 150,
  • "unfilteredCount": 257,
  • "results": [
    ]
}

List assessments for a patient

List all assessments for a given patient id

SecurityApiKeyAuth
Request
Responses
200

List of assessments for the patient

401

Unauthorized

403

Forbidden

500

Service error

get/echosolv/v1/assessments/listByPatient/{patientId}
Request samples
Response samples
application/json
[
  • {
    }
]

Export assessment list as CSV

Generates and downloads a CSV extract of multiple assessments in a given time period

SecurityApiKeyAuth
Request
Responses
200

CSV File

400

Request invalid

401

Unauthorized

403

Forbidden

500

Service error

get/echosolv/v1/assessments/list/csv
Request samples
Response samples
text/csv
"assessment_id","overall_status","validation_messages","error","overall_risk"....

Assessment summary statistics

Get summary statistics in a specified time period for the current organisation.

Note: Whilst individual assessments may not report AI probability while the capability is under regulatory review, this summary service still provides an aggregate view on AI detections.

SecurityApiKeyAuth
Request
Responses
200

Summary details

400

Request invalid

401

Unauthorized

403

Forbidden

500

Service error

get/echosolv/app/assessments/summary
Request samples
Response samples
application/json
{
  • "start_date": "2019-08-24T14:15:22Z",
  • "end_date": "2019-08-24T14:15:22Z",
  • "total_patients": 10,
  • "total_studies": 0,
  • "summaries": [
    ]
}

Platform Utilities

General Platform API Utility Services

Health Check

Checks if the Echo IQ Platform API endpoint is reachable. User does not need to be authenticated

Responses
200

Service is healthy

403

Service not available

500

Service error

get/core/v1/health
Request samples
Response samples
application/json

The service is available and reachable

{
  • "serviceHealth": "alive"
}

Authorisation health check

Checks if the authorisation service is reachable and if the authentication details are valid. This service can also provide details about the current users authorisation context.

SecurityApiKeyAuth
Request
Responses
200

Service is healthy

401

Unauthorized

403

Token invalid or service not available

500

Service error

get/core/v1/authorisation/health
Request samples
Response samples
application/json
{
  • "serviceHealth": "alive"
}

EchoSolv Utilities

General EchoSolv API Utility Services

API health check

Checks if the EchoSolv API Endpoint is reachable

SecurityApiKeyAuth
Responses
200

Service is healthy

401

Unauthorized

403

Token invalid or service not available

500

Service error

get/echosolv/v1/health
Request samples
Response samples
application/json
{
  • "serviceHealth": "alive"
}

Assessments health check

Checks if the assessment service is available

SecurityApiKeyAuth
Responses
200

Service is healthy

401

Unauthorized

403

Token invalid or service not available

500

Service error

get/echosolv/v1/assessments/health
Request samples
Response samples
application/json
{
  • "serviceHealth": "alive"
}

Organisation user management

Directory Apis related to Organisation's Users

List all users in an organisation

List all users in the organisation.

Role Restrictions:

  • user-management
SecurityApiKeyAuth
Responses
200

Paginated list of organisation's users

400

Request invalid

401

Unauthorized

403

Forbidden

500

Service error

get/core/v1/directory/organisation/users
Request samples
Response samples
application/json
{
  • "page": 0,
  • "pageSize": 25,
  • "count": 150,
  • "unfilteredCount": 257,
  • "results": [
    ]
}

Invite user

Invite a user to an organisation.

Role Restrictions:

  • user-management
SecurityApiKeyAuth
Request
Responses
200

Invited user details

400

Request invalid

401

Unauthorized

403

Forbidden

500

Service error

post/core/v1/directory/organisation/users
Request samples
application/json
{
  • "firstName": "Jane",
  • "secondName": "Smith",
  • "title": "Chief Medical Officer",
  • "email": "user@example.com",
  • "roles": [
    ]
}
Response samples
application/json
{
  • "roles": [
    ],
  • "title": "Chief Medical Officer",
  • "status": "INVITED",
  • "oid": "05b62bc6-7787-4e27-876b-2ac41c63b14b",
  • "uid": "07cc67f4-45d6-494b-adac-09b5cbc7e2b5",
  • "createdAt": "2019-08-24T14:15:22Z"
}

Get organisation user

Get a specific user in the organisation.

Role Restrictions:

  • user-management
SecurityApiKeyAuth
Request
Responses
200

Organisation user details

401

Unauthorized

403

Forbidden

404

Not Found

500

Service error

get/core/v1/directory/organisation/users/{userId}
Request samples
Response samples
application/json
{
  • "roles": [
    ],
  • "updatedAt": "2019-08-24T14:15:22Z",
  • "status": "INVITED",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "oid": "05b62bc6-7787-4e27-876b-2ac41c63b14b",
  • "uid": "07cc67f4-45d6-494b-adac-09b5cbc7e2b5",
  • "title": "Chief Medical Officer"
}

Update organisation user

Update an organisation users profile. e.g. to change roles.

Role Restrictions:

  • user-management
SecurityApiKeyAuth
Request
Responses
200

Updated organisation details

400

Request invalid

401

Unauthorized

403

Forbidden

404

Not Found

500

Service error

post/core/v1/directory/organisation/users/{userId}
Request samples
application/json
{
  • "roles": [
    ],
  • "title": "Chief Medical Officer"
}
Response samples
application/json
{
  • "roles": [
    ],
  • "updatedAt": "2019-08-24T14:15:22Z",
  • "status": "INVITED",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "oid": "05b62bc6-7787-4e27-876b-2ac41c63b14b",
  • "uid": "07cc67f4-45d6-494b-adac-09b5cbc7e2b5",
  • "title": "Chief Medical Officer"
}

Remove organisation user

Removes a user from an organisation. Sets org-user-profile status to REMOVED.

Role Restrictions:

  • user-management
SecurityApiKeyAuth
Request
Responses
200

Organisation user details

401

Unauthorized

403

Forbidden

404

Not Found

500

Service error

delete/core/v1/directory/organisation/users/{userId}
Request samples
Response samples
application/json
{
  • "roles": [
    ],
  • "updatedAt": "2019-08-24T14:15:22Z",
  • "status": "REMOVED",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "oid": "05b62bc6-7787-4e27-876b-2ac41c63b14b",
  • "uid": "07cc67f4-45d6-494b-adac-09b5cbc7e2b5",
  • "title": "Chief Medical Officer"
}

Reference

Role definitions

Retrieves all role definitions

Role Restrictions:

  • user-management
SecurityApiKeyAuth
Responses
200

Role definitions

401

Unauthorized

403

Forbidden

500

Service error

get/core/v1/directory/reference/roles
Request samples
Response samples
application/json
[
  • {
    }
]