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]