Datavant Healthjump EHR Integration API

Public REST API operated by Datavant (via the acquired Healthjump platform) for extracting clinical and financial data from 70+ on-premise and cloud-hosted ambulatory EHR/PM systems. Datavant standardizes 300+ data elements across the connected systems and delivers them via API, webhooks, flat file, or HL7. The API surface is published at apidocs.healthjump.com and serves customers building patient engagement, quality reporting, and population-health products on top of ambulatory EHR data.

Datavant Healthjump EHR Integration API is one of 4 APIs that Roivant Sciences publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko and 3 JSON Schema definitions.

Tagged areas include Electronic Health Records, Health Data, Integration, EHR, and Interoperability. The published artifact set on APIs.io includes API documentation, an API reference, a getting-started guide, a support channel, an OpenAPI specification, 1 Naftiko capability spec, and 3 JSON Schemas.

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

datavant-healthjump-ehr-openapi.yml Raw ↑
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]