openapi: 3.1.0
info:
title: Datavant Healthjump EHR Integration API
description: |
Reconstructed OpenAPI sketch of the Datavant Healthjump EHR Integration API
surface, modeled from the public Datavant product page
(https://www.datavant.com/products/ehr-integrations), the Healthjump landing
page (https://api.healthjump.com), and the public Healthjump Support knowledge
base (https://support.healthjump.com), which documents standardized data
elements across 70+ ambulatory EHR/PM systems including Allscripts,
Athenahealth, Aprima, Centricity, eClinicalWorks, Elation Health, Epic,
Greenway (Intergy / PrimeSUITE), MacPractice, MEDITECH, NextGen, Practice
Fusion, and others. The API exposes ~300 standardized clinical and financial
data elements per Datavant's claim. This is a profiling artifact for API
Evangelist research; consult apidocs.healthjump.com for the authoritative
contract.
version: '1.0.0'
contact:
name: Datavant Support
url: https://support.healthjump.com
license:
name: Proprietary
url: https://www.datavant.com/terms-of-use
servers:
- url: https://api.healthjump.com/v1
description: Healthjump API production endpoint (reconstructed)
tags:
- name: Patients
description: Patient demographics and identifiers.
- name: Encounters
description: Clinical encounters and visits.
- name: Vitals
description: Vital signs measurements.
- name: Allergies
description: Recorded patient allergies.
- name: Immunizations
description: Immunization history.
- name: Medications
description: Prescribed and administered medications.
- name: Diagnoses
description: Clinical diagnoses and problem list.
- name: Procedures
description: Procedures performed.
- name: Labs
description: Laboratory orders and results.
- name: Documents
description: Unstructured clinical notes and document extraction.
- name: Appointments
description: Appointment and scheduling data.
- name: Providers
description: Provider directory and identifiers.
- name: Practices
description: Connected EHR practice metadata.
paths:
/patients:
get:
tags: [Patients]
summary: List Patients
operationId: listPatients
parameters:
- $ref: '#/components/parameters/ClientId'
- $ref: '#/components/parameters/ModifiedSince'
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/Cursor'
responses:
'200': { $ref: '#/components/responses/PatientList' }
'401': { $ref: '#/components/responses/Unauthorized' }
'429': { $ref: '#/components/responses/RateLimited' }
/patients/{patient_id}:
get:
tags: [Patients]
summary: Get Patient
operationId: getPatient
parameters:
- $ref: '#/components/parameters/PatientId'
responses:
'200':
description: A patient record.
content:
application/json:
schema: { $ref: '#/components/schemas/Patient' }
'404': { $ref: '#/components/responses/NotFound' }
/encounters:
get:
tags: [Encounters]
summary: List Encounters
operationId: listEncounters
parameters:
- $ref: '#/components/parameters/ClientId'
- $ref: '#/components/parameters/PatientIdQuery'
- $ref: '#/components/parameters/ModifiedSince'
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/Cursor'
responses:
'200': { $ref: '#/components/responses/EncounterList' }
/encounters/{encounter_id}:
get:
tags: [Encounters]
summary: Get Encounter
operationId: getEncounter
parameters:
- name: encounter_id
in: path
required: true
schema: { type: string }
responses:
'200':
description: An encounter record.
content:
application/json:
schema: { $ref: '#/components/schemas/Encounter' }
/vitals:
get:
tags: [Vitals]
summary: List Vitals
operationId: listVitals
parameters:
- $ref: '#/components/parameters/ClientId'
- $ref: '#/components/parameters/PatientIdQuery'
- $ref: '#/components/parameters/ModifiedSince'
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/Cursor'
responses:
'200': { $ref: '#/components/responses/VitalsList' }
/allergies:
get:
tags: [Allergies]
summary: List Allergies
operationId: listAllergies
parameters:
- $ref: '#/components/parameters/ClientId'
- $ref: '#/components/parameters/PatientIdQuery'
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/Cursor'
responses:
'200':
description: Allergy records for the patient cohort.
content:
application/json:
schema:
type: array
items: { $ref: '#/components/schemas/Allergy' }
/immunizations:
get:
tags: [Immunizations]
summary: List Immunizations
operationId: listImmunizations
parameters:
- $ref: '#/components/parameters/ClientId'
- $ref: '#/components/parameters/PatientIdQuery'
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/Cursor'
responses:
'200':
description: Immunization records.
content:
application/json:
schema:
type: array
items: { $ref: '#/components/schemas/Immunization' }
/medications:
get:
tags: [Medications]
summary: List Medications
operationId: listMedications
parameters:
- $ref: '#/components/parameters/ClientId'
- $ref: '#/components/parameters/PatientIdQuery'
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/Cursor'
responses:
'200':
description: Medication records.
content:
application/json:
schema:
type: array
items: { $ref: '#/components/schemas/Medication' }
/diagnoses:
get:
tags: [Diagnoses]
summary: List Diagnoses
operationId: listDiagnoses
parameters:
- $ref: '#/components/parameters/ClientId'
- $ref: '#/components/parameters/PatientIdQuery'
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/Cursor'
responses:
'200':
description: Diagnosis records (ICD-10 coded).
content:
application/json:
schema:
type: array
items: { $ref: '#/components/schemas/Diagnosis' }
/procedures:
get:
tags: [Procedures]
summary: List Procedures
operationId: listProcedures
parameters:
- $ref: '#/components/parameters/ClientId'
- $ref: '#/components/parameters/PatientIdQuery'
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/Cursor'
responses:
'200':
description: Procedure records (CPT/HCPCS coded).
content:
application/json:
schema:
type: array
items: { $ref: '#/components/schemas/Procedure' }
/labs:
get:
tags: [Labs]
summary: List Lab Results
operationId: listLabs
parameters:
- $ref: '#/components/parameters/ClientId'
- $ref: '#/components/parameters/PatientIdQuery'
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/Cursor'
responses:
'200':
description: Laboratory result records (LOINC coded).
content:
application/json:
schema:
type: array
items: { $ref: '#/components/schemas/LabResult' }
/documents:
get:
tags: [Documents]
summary: List Documents
operationId: listDocuments
parameters:
- $ref: '#/components/parameters/ClientId'
- $ref: '#/components/parameters/PatientIdQuery'
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/Cursor'
responses:
'200':
description: Unstructured document references for optional extraction.
content:
application/json:
schema:
type: array
items: { $ref: '#/components/schemas/Document' }
/appointments:
get:
tags: [Appointments]
summary: List Appointments
operationId: listAppointments
parameters:
- $ref: '#/components/parameters/ClientId'
- $ref: '#/components/parameters/PatientIdQuery'
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/Cursor'
responses:
'200':
description: Appointment records.
content:
application/json:
schema:
type: array
items: { $ref: '#/components/schemas/Appointment' }
/providers:
get:
tags: [Providers]
summary: List Providers
operationId: listProviders
parameters:
- $ref: '#/components/parameters/ClientId'
responses:
'200':
description: Provider directory for the connected practice.
content:
application/json:
schema:
type: array
items: { $ref: '#/components/schemas/Provider' }
/practices:
get:
tags: [Practices]
summary: List Practices
operationId: listPractices
responses:
'200':
description: Connected practices and their EHR system metadata.
content:
application/json:
schema:
type: array
items: { $ref: '#/components/schemas/Practice' }
components:
securitySchemes:
OAuth2:
type: oauth2
flows:
clientCredentials:
tokenUrl: https://api.healthjump.com/oauth/token
scopes:
read:patients: Read patient demographic and clinical records.
read:clinical: Read all clinical resources (encounters, vitals, labs, etc.).
read:financial: Read financial and billing-related fields.
parameters:
ClientId:
name: client_id
in: query
description: Healthjump tenant identifier scoping the query to a connected practice.
schema: { type: integer }
PatientId:
name: patient_id
in: path
required: true
description: Healthjump patient identifier.
schema: { type: string }
PatientIdQuery:
name: patient_id
in: query
description: Filter by Healthjump patient identifier.
schema: { type: string }
ModifiedSince:
name: modified_since
in: query
description: ISO-8601 timestamp; return only records modified after this instant.
schema:
type: string
format: date-time
Limit:
name: limit
in: query
description: Maximum records per page (default 100, max 1000).
schema:
type: integer
default: 100
maximum: 1000
Cursor:
name: cursor
in: query
description: Opaque pagination cursor returned by the previous page.
schema: { type: string }
responses:
Unauthorized:
description: Missing or invalid bearer token.
NotFound:
description: Resource not found.
RateLimited:
description: Request rate limit exceeded.
PatientList:
description: A page of patient records.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items: { $ref: '#/components/schemas/Patient' }
next_cursor: { type: string }
EncounterList:
description: A page of encounter records.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items: { $ref: '#/components/schemas/Encounter' }
next_cursor: { type: string }
VitalsList:
description: A page of vitals records.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items: { $ref: '#/components/schemas/Vitals' }
next_cursor: { type: string }
schemas:
Patient:
type: object
properties:
hj_import_int: { type: integer, description: Healthjump record import identifier. }
client_id: { type: integer }
patient_id: { type: string }
external_patient_id: { type: string, description: EHR-native patient identifier. }
first_name: { type: string }
last_name: { type: string }
middle_name: { type: string }
date_of_birth: { type: string, format: date }
gender: { type: string, enum: [male, female, other, unknown] }
race: { type: string }
ethnicity: { type: string }
marital_status: { type: string }
address_line_1: { type: string }
address_line_2: { type: string }
city: { type: string }
state: { type: string }
zip: { type: string }
country: { type: string }
phone: { type: string }
email: { type: string, format: email }
preferred_language: { type: string }
date_created: { type: string, format: date-time }
date_modified: { type: string, format: date-time }
Encounter:
type: object
properties:
hj_import_int: { type: integer }
client_id: { type: integer }
encounter_id: { type: string }
patient_id: { type: string }
provider_id: { type: string }
encounter_type: { type: string }
encounter_date: { type: string, format: date-time }
reason_for_visit: { type: string }
location: { type: string }
status: { type: string }
date_created: { type: string, format: date-time }
date_modified: { type: string, format: date-time }
Vitals:
type: object
properties:
hj_import_int: { type: integer }
client_id: { type: integer }
patient_id: { type: string }
encounter_id: { type: string }
measurement_date: { type: string, format: date-time }
height_cm: { type: number }
weight_kg: { type: number }
bmi: { type: number }
systolic_bp: { type: integer }
diastolic_bp: { type: integer }
heart_rate: { type: integer }
respiratory_rate: { type: integer }
temperature_c: { type: number }
oxygen_saturation: { type: number }
date_created: { type: string, format: date-time }
date_modified: { type: string, format: date-time }
Allergy:
type: object
properties:
client_id: { type: integer }
patient_id: { type: string }
allergy_id: { type: string }
allergen: { type: string }
reaction: { type: string }
severity: { type: string }
onset_date: { type: string, format: date }
status: { type: string }
Immunization:
type: object
properties:
client_id: { type: integer }
patient_id: { type: string }
immunization_id: { type: string }
vaccine: { type: string }
cvx_code: { type: string }
administered_date: { type: string, format: date }
dose_number: { type: integer }
administered_by: { type: string }
Medication:
type: object
properties:
client_id: { type: integer }
patient_id: { type: string }
medication_id: { type: string }
ndc_code: { type: string }
rxnorm_code: { type: string }
medication_name: { type: string }
dosage: { type: string }
route: { type: string }
frequency: { type: string }
start_date: { type: string, format: date }
end_date: { type: string, format: date }
prescriber_id: { type: string }
status: { type: string }
Diagnosis:
type: object
properties:
client_id: { type: integer }
patient_id: { type: string }
encounter_id: { type: string }
diagnosis_id: { type: string }
icd10_code: { type: string }
description: { type: string }
diagnosis_date: { type: string, format: date }
status: { type: string }
Procedure:
type: object
properties:
client_id: { type: integer }
patient_id: { type: string }
encounter_id: { type: string }
procedure_id: { type: string }
cpt_code: { type: string }
hcpcs_code: { type: string }
description: { type: string }
procedure_date: { type: string, format: date }
provider_id: { type: string }
LabResult:
type: object
properties:
client_id: { type: integer }
patient_id: { type: string }
encounter_id: { type: string }
lab_id: { type: string }
loinc_code: { type: string }
test_name: { type: string }
result_value: { type: string }
result_units: { type: string }
reference_range: { type: string }
abnormal_flag: { type: string }
result_date: { type: string, format: date-time }
Document:
type: object
properties:
client_id: { type: integer }
patient_id: { type: string }
encounter_id: { type: string }
document_id: { type: string }
document_type: { type: string }
mime_type: { type: string }
content_url: { type: string, format: uri }
document_date: { type: string, format: date-time }
Appointment:
type: object
properties:
client_id: { type: integer }
patient_id: { type: string }
appointment_id: { type: string }
provider_id: { type: string }
appointment_date: { type: string, format: date-time }
appointment_type: { type: string }
status: { type: string }
location: { type: string }
Provider:
type: object
properties:
client_id: { type: integer }
provider_id: { type: string }
npi: { type: string }
first_name: { type: string }
last_name: { type: string }
specialty: { type: string }
practice_id: { type: string }
Practice:
type: object
properties:
client_id: { type: integer }
practice_id: { type: string }
practice_name: { type: string }
ehr_system: { type: string, description: 'Source EHR/PM brand: Allscripts, Athenahealth, eClinicalWorks, Epic, Greenway Intergy, MEDITECH, NextGen, Practice Fusion, etc.' }
last_sync: { type: string, format: date-time }
security:
- OAuth2: [read:patients, read:clinical]